大模型任务模板
本篇覆盖 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构建并推送多架构 manifestccr.ccs.tencentyun.com/cube-studio/llama-factory:20260320(由20260320-amd64+npu-vllm-20251124组成,见build.sh:5-13)。注意:
README.md:5仍写旧镜像 tagllama-factory:20251124,与build.sh当前推送的20260320不一致——经核对为 README 未同步更新(build.sh:5-13才是当前构建)。请以实际部署的镜像 tag 为准。工作目录:
/root/llama_factory。多硬件 Dockerfile:
Dockerfile-amd64、DockerFile-npu(昇腾 NPU)、Dockerfile-cambricon(寒武纪)、Dockerfile-dcu(海光 DCU)、Dockerfile-mx(沐曦 MX),另有Dockerfile-encryption、Dockerfile-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_demo(start-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 默认5,start.py:62argparse 默认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否 nonenone/4bit/8bit,多选逗号分隔;4bit/8bit 用 bitsandbytes 加载--dtype否 float16auto/float16/bfloat16/float32(模型加载精度)--batch_size是 1每轮请求数 --iterations是 20正式评测轮数 --max_new_tokens是 128每条最大生成 token --input_length否 512输入 prompt 最大 token --dtype在start.py中存在(start.py:59),但 README 的前端 JSON 未列出(属文档遗漏)。输出:顶层
summary.json/summary_zh.json(嵌套{模型: {量化: 指标}})+ 4 张单指标对比 CSV(吞吐 tokens / 吞吐 requests / 时延 / 显存,宽表,列=<模型>/<量化>)+summary_metrics_detail.csv长表;每个<模型>/<量化>/子目录下有该组合的 summary、detail.csv、resource_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):--type:HardDistillation(数据蒸馏,推荐)/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 默认32,start.py:27argparse 默认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):--job:gptq/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(含Dockerfile与Dockerfile-npu两种硬件)。 - 8 种越狱策略(中英双语):基线直接提问、角色扮演反派、system 提示词忽略安全策略、法语/西班牙语翻译混淆、假设虚构场景、权威/研究用途诉求、多轮对话逐步引导。统计拒答率、越狱成功率、有害指示率、PII 输出率(邮箱/手机号/身份证号/信用卡号等)。
- 启动参数(核对
start.py:1063-1086):--model_path:模型本地路径(支持文本与 VL 模型,仅评估文本安全,trust_remote_code默认开启);--dataset:jsonl 测试集(字段需含prompt,可选category);--output:输出目录;--languages:逗号分隔语言,前端 choicezh/en/all,argparse 默认zh,en(all表示同时评测中英)。
- 输出:
output.jsonl原始结果 + 中/英字段版output_zh/en.jsonl、summary_zh/en.json、summary_zh/en.csv,以及中英各 7 张(共 14 个 PNG)可视化图表(最终评估卡片、语言对比、策略越狱率排名、类别×策略热力图、安全雷达图、策略-语言矩阵、累积分布曲线)。主要看summary_zh。
opencompass
基于 OpenCompass 的模型评测。
- 镜像:
ccr.ccs.tencentyun.com/cube-studio/opencompass:20260610(build.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_type:chat(对话/指令微调)/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 源码为准,本篇仅供导航与检索。