大模型任务模板

需要在 cube-studio pipeline 上对大模型做 SFT/PPO/reward 训练、推理性能压测、知识蒸馏、剪枝、量化、安全评估或 OpenCompass 评测时

05-任务模板 / 大模型
大模型LLMllama-factoryllamafactorySFT微调lorappodporeward奖励模型RLHFllm-benchmark推理性能压测throughput

大模型任务模板

本篇覆盖 7 个面向大模型(LLM)的任务模板,均位于 job-template/job/ 下,入口多为 start.py,参数以前端可配置的 JSON 表单形式给出(key 即 start.py 的 argparse 参数名)。

模板 用途 入口 工作目录
llama-factory 训练 / SFT / PPO / reward / eval start.py start-ppo.py start-reward.py start-eval.py /root/llama_factory
llm-benchmark 推理性能压测 start.py /app
llm-distillation 硬标签 / 知识蒸馏 start.py /app(默认)
llm-prune LLM-Pruner 剪枝 start.py /app
llm-quantization 量化(gptq/awq/gguf/hf) start.py /app
llm-safety-eval 越狱安全评估 start.py
opencompass OpenCompass 评测 start.py /app

llama-factory

基于开源项目 LLaMA-Factory,覆盖训练(SFT)、PPO、reward 模型训练与评估。

  • 镜像:当前 build.sh 构建并推送多架构 manifest ccr.ccs.tencentyun.com/cube-studio/llama-factory:20260320(由 20260320-amd64 + npu-vllm-20251124 组成,见 build.sh:5-13)。

    注意:README.md:5 仍写旧镜像 tag llama-factory:20251124,与 build.sh 当前推送的 20260320 不一致——经核对为 README 未同步更新(build.sh:5-13 才是当前构建)。请以实际部署的镜像 tag 为准。

  • 工作目录/root/llama_factory

  • 多硬件 DockerfileDockerfile-amd64DockerFile-npu(昇腾 NPU)、Dockerfile-cambricon(寒武纪)、Dockerfile-dcu(海光 DCU)、Dockerfile-mx(沐曦 MX),另有 Dockerfile-encryptionDockerfile-eval-amd64。即同一模板支持多种国产/异构算力。

四个入口脚本

四个脚本共享大部分训练参数,区别在 --stage 与少数特有参数(核对各脚本 argparse):

脚本 --stage 用途 特有
start.py sft 监督微调 SFT
start-ppo.py ppo PPO 强化学习 额外 --model_rm_lora_path(reward 模型 lora 路径,start-ppo.py:51
start-reward.py rm 奖励模型训练 --dataset 默认 dpo_zh_demostart-reward.py:51
start-eval.py 模型评估 见下方独立参数

SFT 训练参数start.py:47-67,前端 JSON 见 README.md):--stage(默认sft)、--do_train--model_name(默认deepseek-ai/DeepSeek-R1-Distill-Qwen-7B)、--model_path(配置后忽略 model_name)、--dataset--template(默认deepseek3)、--finetuning_type(full/freeze/lora)、--lora_target(默认all)、--output_dir--per_device_train_batch_size(默认4)、--gradient_accumulation_steps(默认4)、--lr_scheduler_type(默认cosine)、--logging_steps(默认10)、--save_steps(默认100)、--learning_rate(默认5e-5)、--num_train_epochs--max_samples--max_grad_norm(默认1.0)、--quantization_bit(4/8/none)、--fp16(默认true)、--merge_lora

默认值差异:--num_train_epochs 前端 JSON 默认 5start.py:62 argparse 默认 3--max_samples 前端默认 500,argparse 默认 300。以平台 JSON 配置为准(实际下发会覆盖 argparse 默认)。

评估参数start-eval.py:26-34):--model_path--adapter_model_path--finetuning_type--task(默认cmmlu_test)、--template(默认fewshot)、--lang(默认zh)、--n_shot(默认5)、--output_dir--batch_size(默认4)。

--model_name 提供大量 choice(Baichuan2 / GLM / ChatGLM / DeepSeek-V3/R1 系列 / Llama2/3/3.1/3.2 / Mistral/Mixtral / Qwen2/2.5/3 系列含 VL/Audio/Omni / Yi / Hunyuan / XVERSE / InternLM 等),--template 提供近百种对话模板(alpaca/qwen/qwen3/deepseek/deepseek3/llama3/glm4/gemma3 等),完整清单见 README.md


llm-benchmark

评测大模型或量化大模型的推理性能。加载本地 HuggingFace 模型,按指定 batch/轮数/生成长度压测,输出吞吐、时延与资源消耗。

  • 镜像ccr.ccs.tencentyun.com/cube-studio/llm-benchmark:20260427,工作目录 /app,启动 python start.py

  • 主要指标:生成吞吐 tokens/s、请求吞吐 requests/s、响应时延、资源消耗(CPU/内存/GPU 利用率/显存/CUDA 峰值显存)。

  • 启动参数start.py:55-63):

    参数 必填 默认 说明
    --model_path 本地 HF 模型路径或名;多个模型用中/英文逗号分隔,逐个 × 每种量化方式评测
    --output_dir 结果输出目录
    --prompts_path txt/json/jsonl 测试集;不填走内置 4 条默认 prompt
    --quantization none none/4bit/8bit,多选逗号分隔;4bit/8bit 用 bitsandbytes 加载
    --dtype float16 auto/float16/bfloat16/float32(模型加载精度)
    --batch_size 1 每轮请求数
    --iterations 20 正式评测轮数
    --max_new_tokens 128 每条最大生成 token
    --input_length 512 输入 prompt 最大 token

    --dtypestart.py 中存在(start.py:59),但 README 的前端 JSON 未列出(属文档遗漏)。

  • 输出:顶层 summary.json/summary_zh.json(嵌套 {模型: {量化: 指标}})+ 4 张单指标对比 CSV(吞吐 tokens / 吞吐 requests / 时延 / 显存,宽表,列=<模型>/<量化>)+ summary_metrics_detail.csv 长表;每个 <模型>/<量化>/ 子目录下有该组合的 summary、detail.csvresource_samples.jsonl(中英各一份)。

  • 可视化:另在 /mnt/{KFJ_CREATOR}/pipeline/example/visualization/llm_benchmark/{KFJ_RUN_ID 或时间戳}/ 下放 4 张 compare CSV 副本,metric.json 中 4 条 echart-bar 分别指向(4 张柱状图拆开是因量级差异大)。echart 数据格式见关联文档。


llm-distillation

硬标签知识蒸馏 / 知识蒸馏。

  • 镜像ccr.ccs.tencentyun.com/cube-studio/llm-hard-distillation-knowledge-distillation:20250904,启动 python start.py

  • 启动参数start.py:15-32):

    • --typeHardDistillation(数据蒸馏,推荐)/ KnowledgeDistillation(知识蒸馏,显存要求高,建议 >40G);
    • --teacher_model_path_or_name / --student_model_path_or_name:教师/学生模型(HF 名或本地路径);
    • --student_template:学生模型对话模板(如 qwen、deepseek);
    • --out_model_path:输出目录(LoRA 或合并后权重);
    • --default_prompts_file_name:默认提示词文件(argparse 默认 /app/default_prompts.txt);
    • --epochs(默认10)、--num(默认30,数据生成/采样条数)、--max_new_tokens(默认2048)、--temperature(默认0.7)、--top_p(默认0.95)、--seed(默认42);
    • --min_words / --max_words:样本词数约束(max_words 默认 4096);
    • --data_path:[知识蒸馏] 数据集路径(argparse 默认 /app/distillation.jsonl);
    • --lambda_kd(默认0.5,KD 与 CE 混合权重)、--tau(默认2,蒸馏温度);
    • --merge_lora(默认false)。

    默认值差异:--min_words 前端 JSON 默认 32start.py:27 argparse 默认 16


llm-prune

基于 LLM-Pruner 的结构化剪枝。

  • 镜像ccr.ccs.tencentyun.com/cube-studio/llm-prune:20260123,工作目录 /app,启动 python start.py
  • 启动参数start.py:285-313,与 README 一致):
    • 基础:--base_model(模型路径)、--output_path(日志+模型输出目录)、--pruning_ratio(默认0.25,剪掉比例 0-1)、--pruner_type(random/l1/l2/taylor,默认taylor);
    • 剪枝模式:--prune_mode(block_wise(推荐)/channel_wise/layer_wise)、--layer(仅 layer_wise,保留前 n 层,7B 共 32 层);
    • block_wise 专用:--block_attention_layer_start(默认4)/--block_attention_layer_end(默认11)/--block_mlp_layer_start(默认4)/--block_mlp_layer_end(默认11)(建议保留前 2-4 层与最后一层,7B 结束层=31、13B=39、70B=79);
    • block/channel_wise:--iterative_steps(默认1,多步迭代更好但更慢,1-5)、--global_pruning(true/false,跨层统一比较);
    • taylor 专用:--grouping_strategy(sum/mean/max/prod/first)、--taylor(vectorize/param_second/param_first/param_mix,默认param_first)、--num_examples(默认1,计算梯度样本数 1-20)。

llm-quantization

大模型量化,--job 区分量化方式。

  • 镜像build.sh:5 构建 ccr.ccs.tencentyun.com/cube-studio/llm-quantization:20250801

    注意:README.md:2 写的是 llm-quantization:20250823,与 build.sh:5 实际构建的 20250801 不一致——经核对 build.sh 当前只构建 20250801(README 的 tag 仓库未构建)。请以实际部署的镜像为准。

  • 工作目录/app,启动 python start.py

  • 启动参数(核对 start.py:18-21):

    • --jobgptq / awq / gguf / hf_quantize(argparse 默认 hf_quantize,前端 JSON 默认 gptq);
    • --model_path:模型路径;
    • --quantization:量化位数,前端 choice 含 2/3/4/8/q3_K_M/q3_K_L/q4_K_S/q4_K_M/q5_K_M/q8_0/8bit/4bit(按量化类型选),argparse 默认 4bit
    • --output_dir:量化后模型导出目录。

    说明:早期 README.md 的前端 JSON 曾把这两个参数误写作 --quantify / --export_model_dir_name,与 start.py:20-21--quantization / --output_dir 不一致;现已改正--quantization / --output_dir。注:真正的注册源 myapp/init/init-job-template.json 一直是正确的,故模板下发本就不受影响。

  • 量化时会用 wikitext-2-raw-v1 在线校准(拉取失败则退回内置中文样本,见 start.py:24-37)。


llm-safety-eval

对大模型做多策略、多语言安全性压力测试。

  • 镜像ccr.ccs.tencentyun.com/cube-studio/llm-safety-eval:20251222,启动 python start.py(含 DockerfileDockerfile-npu 两种硬件)。
  • 8 种越狱策略(中英双语):基线直接提问、角色扮演反派、system 提示词忽略安全策略、法语/西班牙语翻译混淆、假设虚构场景、权威/研究用途诉求、多轮对话逐步引导。统计拒答率、越狱成功率、有害指示率、PII 输出率(邮箱/手机号/身份证号/信用卡号等)。
  • 启动参数(核对 start.py:1063-1086):
    • --model_path:模型本地路径(支持文本与 VL 模型,仅评估文本安全,trust_remote_code 默认开启);
    • --dataset:jsonl 测试集(字段需含 prompt,可选 category);
    • --output:输出目录;
    • --languages:逗号分隔语言,前端 choice zh/en/all,argparse 默认 zh,enall 表示同时评测中英)。
  • 输出output.jsonl 原始结果 + 中/英字段版 output_zh/en.jsonlsummary_zh/en.jsonsummary_zh/en.csv,以及中英各 7 张(共 14 个 PNG)可视化图表(最终评估卡片、语言对比、策略越狱率排名、类别×策略热力图、安全雷达图、策略-语言矩阵、累积分布曲线)。主要看 summary_zh

opencompass

基于 OpenCompass 的模型评测。

  • 镜像ccr.ccs.tencentyun.com/cube-studio/opencompass:20260610build.sh:5),工作目录 /app,启动 python start.py
  • 启动参数(核对 start.py:18-26):
    • --model_path:模型名或路径,支持多个用英文逗号分隔(如 /mnt/model_a,/mnt/model_b);
    • --datasets:数据集名(select2 多选,逗号分隔)。choice 含演示集 demo_showcase_*(EM/F1/匹配/BLEU/ROUGE/code/math 各 10 条本地样例)及多种 OpenCompass 配置名(gsm8k/math/cmmlu/humaneval/mbpp/triviaqa/drop/nq 等);
    • --hf_typechat(对话/指令微调)/ base(基础因果 LM);
    • --output_path:评估结果与汇总输出目录(argparse 默认 /mnt/{{creator}}/pipeline/example/export-result,前端 JSON 默认 .../output-opencompass)。
  • 内置演示数据集demo_showcase_* 每个仅 10 条样例,用于快速验证评估流程/冒烟测试,不代表真实评测结果;本地样例在 demo/data/,读取器与配置生成在 demo/demo.py,镜像构建时自动生成 OpenCompass 入口配置。

各模板参数与默认值以对应 start.py / start-*.py 源码为准,本篇仅供导航与检索。

最后更新 2026-06-30完整文档以官方仓库为准:GitHub Wiki