5.5 KiB
5.5 KiB
name, name_zh, description, when_to_use, aliases, examples, allowed_tools
| name | name_zh | description | when_to_use | aliases | examples | allowed_tools | ||||
|---|---|---|---|---|---|---|---|---|---|---|
| model-training-lite | 轻量模型训练 | 从 Codex、Claude Code 或其他 Agent 通过用户提供的 Jupyter 环境和数据版本发起一次模型训练,聚焦“准备远端工作区、同步数据、提交 CML SFT、返回 JobID”,不包含完整自主迭代闭环。 | 当用户已经准备好训练数据,想让 Agent 使用 Jupyter/CloudML 发起一次模型训练、复用当前仓库的训练脚本和模板、或询问如何把模型训练流程沉淀成轻量 skill 时使用。 | jupyter-model-training, sft-submit, 轻量训练, 模型训练提交 |
|
read_file, write_file, grep_search, glob_search, ask_user_question, python_exec, bash |
轻量模型训练
本 skill 只负责一次训练提交:
Jupyter 授权环境
-> 创建/复用远端 kernel
-> 准备隔离训练工作区
-> 同步训练脚本与数据版本
-> 检查 CML / 数据 / zk_trainer
-> 提交 SFT
-> 返回 JobID、产物路径、下一步评测入口
不要把它扩展成 model-iteration 那种完整“baseline -> 分析 -> 增强 -> 训练 -> 评测 -> 再分析”的自主循环。
必要输入
开始前必须拿到:
- Jupyter 地址和授权方式:URL;密码、token、cookie/session,或说明当前环境已有可用登录态。
- 数据版本:git repo + branch + commit,或远端工作区中已存在的数据路径。
- 训练配方:如果是当前 ZK 中控 SFT,默认复用
skills/model-iteration/scripts/;如果不是,必须让用户提供训练脚本、模板或命令。
通常用户只需要显式给 Jupyter 地址 和 数据版本。当前项目的默认训练配方可从本仓库继承,不必每次追问。
可选但推荐确认:
owner:远端输出目录使用的用户前缀,例如wuyang6。run_name:本次训练工作区名,例如manual_YYYYMMDD_zk_intent_xxx。- 是否训练后立刻发起评测。默认只提交训练,不自动串接评测。
默认 ZK SFT 配方
当前 ZK 中控 SFT 复用这些文件:
skills/model-iteration/scripts/
prepare_and_train_sft.py
resolve_run_ids.sh
submit_sft.sh
submit_cml_eval.sh
sft_train_job.yaml.tpl
skills/model-iteration/assets/config.yaml
默认基模和训练模板见 references/zk_sft_defaults.md。只有用户明确要求或训练任务不是 ZK 中控 SFT 时,才修改这些默认值。
推荐流程
1. 先生成提交计划
优先执行 portable script:
python skills/model-training-lite/scripts/render_sft_submission_plan.py --input input.json
输入示例:
{
"jupyter_url": "https://.../lab?",
"data_repo": "git@git.n.xiaomi.com:ai-service/ai-planning.git",
"data_branch": "autoresearch-v1",
"data_commit": "b92be709",
"owner": "wuyang6",
"run_name": "manual_20260528_zk_intent_clean_train",
"recipe": "zk_sft"
}
脚本只生成计划和命令草案,不连接 Jupyter,不提交训练。
2. 连接 Jupyter
如果已经有 session/cookie,可直接调用 Jupyter REST API:
GET /api/kernels检查登录态。POST /api/kernels创建 kernel;POST 需要X-XSRFToken。- websocket 连接
/api/kernels/<kernel_id>/channels执行 Python/Bash。
如果没有登录态,用用户提供的密码/token 登录;不要把密码写入仓库、日志或最终报告。
3. 准备远端工作区
远端路径默认:
/mnt/wangsenhao/autoresearch-zk-users/<owner>/<run_name>
工作区内必须有:
scripts/
assets/
results/
output/
ai-planning/
zk_trainer/
把默认 ZK SFT 配方里的 scripts/ 和 config.yaml 同步到远端工作区。再 clone 或更新数据仓库,并 checkout 到用户指定 commit。
4. 提交前检查
提交训练前必须输出:
ai-planning当前 commit。- 训练 JSONL 文件数量和总行数。
- 关键增量文件行数。
- 目标评测集行数,如果用户指定了评测集。
source ~/.cloudml-cli/.profile后cml config show可用。zk_trainer已存在或 clone 成功。
如果 cml 不在 PATH,先检查 ~/.cloudml-cli/.profile。不要因为 which cml 为空就直接判定不可用。
5. 提交 SFT
ZK SFT 提交命令:
source ~/.cloudml-cli/.profile
export AUTORESEARCH_CHAT_ROOT=<remote_workspace>
export AUTORESEARCH_ROOT="$AUTORESEARCH_CHAT_ROOT"
cd "$AUTORESEARCH_CHAT_ROOT"
eval "$(./scripts/resolve_run_ids.sh)"
./scripts/submit_sft.sh "$SFT_RUNDIC"
注意:resolve_run_ids.sh 只输出 SFT_RUNDIC 和 EVAL_RUNDIC,不要读取不存在的 RUNDIC。
6. 成功判定
提交成功后必须回报:
- CloudML JobID。
- CloudML 链接。
SFT_RUNDIC和EVAL_RUNDIC。- 远端训练工作区。
- 成功标记路径:
<remote_workspace>/sft_output/_SUCCESS。 - 查看状态命令:
cml custom_train describe <JOB_ID>。
再查一次 cml custom_train describe <JOB_ID>,确认状态不是提交后立即失败。
边界
- 不自动修改训练数据。
- 不自动做错误归因。
- 不自动生成增强样本。
- 不默认串接评测;训练成功后是否评测由用户或后续明确指令决定。
- 不把 Jupyter 密码、CloudML key、cookie 写进产物或最终回复。