| name | bailian-train-deploy |
| description | 用百炼 CLI (`bl`) 走完"数据→微调训练→导出→部署→调用"的完整闭环,或跳过训练直接部署基座模型。支持文本模型(SFT/DPO/CPT)、音频 TTS 模型(CosyVoice)、图像生成模型(Wan2.7)和视频生成模型(Wan i2v/kf2v)微调。涵盖数据集校验/上传、创建微调任务、等待训练、导出最佳 checkpoint、创建推理部署、等待就绪、给出调用示例。当用户提到在百炼 / DashScope / 阿里云模型工作室上"训练模型""微调""fine-tune""finetune""部署模型""模型上线""把微调模型跑起来/调用""训练一个推理模型""继续预训练""LoRA/SFT/DPO 训练""语音合成模型""TTS 微调""CosyVoice""声音克隆""图像生成微调""文生图""图生图""Wan2.7""图像模型训练""视频生成微调""图生视频""首帧生视频""首尾帧""kf2v""i2v""Wan视频""视频特效训练"等,都应激活本技能——即使用户没明说"用 bl",只要意图是百炼平台的训练或部署,就用本技能,不要自己拼凑命令。 |
百炼模型训练→部署闭环 (bl)
用百炼 CLI bl 把模型部署成可调用的专属推理服务——可以先微调再部署,也可以跳过训练直接部署基座。支持文本、音频 TTS、图像生成和视频生成四种模态,两处"等待"用 Monitor 异步轮询,不阻塞主流程。
链路 A(先训练后部署):
数据集 → finetune <模态> create → 等 SUCCEEDED → 导出模型(通常自动) → deploy <模态> create → 等 RUNNING → 调用
链路 B(直接部署基座,跳过训练):
选基座 → deploy <模态> create → 等 RUNNING → 调用
链路 B 适用于"只想把某个基座跑成自己的部署服务"——和直接调用 API 在推理上没本质区别,但能拿到独立部署实例、可调速率/计费方式、纳入自己的运维。仅当用户明确表示不训练 / 跳过训练 / 直接部署基座时才走这条;用户只是没提训练细节时,默认按链路 A 引导,不要擅自跳过训练。
模态分发:本技能的通用流程适用于所有模态,但数据格式、超参、推理命令因模态而异。确定用户意图后,按模态查阅对应参考文件:
本技能假设 bl(bailian-cli)已安装。命令/flag 细节以 bl <cmd> --help 为准;本技能聚焦流程编排与避坑。
写操作护栏(创建前必读)
bl finetune <模态> create 与 bl deploy <模态> create 都是真实写操作,会产生计费资源(微调训练 + 推理部署)。bl 没有 --dry-run,所以用预检命令代替预演、用计费确认把关预留资源。任何写操作前必须先过这三道闸:
- 预检代替 dry-run(创建前必跑,确认可行再写)。这些预检命令本身都需先通过下方前置检查的认证——未认证先
bl auth login 再预检:
- 训练前:
bl finetune capability --base-model <base> —— 确认基座支持你选的 training-type(不支持会快速失败且不耗配额;create 提交时也会再校验一次)。
- 部署前:
bl deploy models --source custom(链路 A 微调输出)或 --source base(链路 B 基座)—— 确认目标模型可部署、看清可用 plan,再决定 --plan。
- 复用检测:
bl deploy list --status RUNNING —— 若已有引用同一 finetuned_output 且 RUNNING 的部署,直接复用其 deployed_model,不要再建第二个计费实例。
- 计费确认硬闸门(mu/ptu):
lora(默认,按 token 计费,闲置一般不计费)—— 安全默认,可直接创建。
mu / ptu 是预留/独占资源,闲置也计费——创建前必须向用户显式说明计费方式并取得确认。在 agent / CI 等非交互环境不能自动开通预留资源。命中 mu/ptu 时,把“这会产生闲置计费”连同命令交还给真人在终端确认(bl 当前不提供 --yes 跳过确认 flag,确认行为完全由真人把控)。
- 账号就绪检查:
bl auth status —— authenticated: false 即停,给 bl auth login --api-key sk-...。百炼走 API key / access token 认证,没有独立的实名闸门,auth status 即账号就绪检查。
反触发表(不归本 skill 的意图,附完整命令)
| 用户意图 | 路由到 | 完整示范命令 |
|---|
| 只想试模型效果 / 一次性对话 | bailian-cli | bl text chat --model qwen3-8b --message "..." |
| 已确定模型,只要调用方式 | bailian-cli | bl text chat --model <model> --message "..." |
| 不知道选哪个基座 / 模型选型 | bailian-model-recommend | (让该 skill 按场景推荐) |
| 纯查模型参数 / 价格 / 上下文窗口 | bailian-docs-llm-wiki | (查模型数据目录) |
| 已有部署,只想生成调用示例 | bailian-cli | bl text chat --model <deployed_model> --message "..." 或 bl speech synthesize --model <deployed_model> --voice default --text "..." 或异步 API + 触发词(图像生成,见 image.md) |
| 对已有训练任务 / 部署做查删(生命周期) | bl 直接 | bl finetune list / bl deploy list / bl deploy delete --deployed-model <id> |
本 skill 只负责"新建训练任务 + 新建部署 + 调用交付"这一条闭环。训练任务与部署的全生命周期管理(list / stop / delete 历史任务、删除部署等)不在本 skill 流程内,用 bl finetune list / bl deploy list / bl deploy delete 直接操作。
反幻觉清单
--base-model / --model-name / --model 分属不同命令,切勿复用:
bl finetune <模态> create --base-model → 基座模型名(文本 qwen3-8b,音频 cosyvoice-v3-flash,图像 wan2.7-image-pro)。
bl deploy <模态> create --model-name → 导出模型名(链路 A:qwen3-8b-ft-... / cosyvoice-v3-flash-ft-... / wan2.7-image-pro-ft-...;链路 B:基座名)。
- 推理命令
--model → 必须用 deploy <模态> create 响应里的 deployed_model,不是你传给 deploy <模态> create 的名字。
--training-type 取值穷举:sft / sft-lora(默认)/ dpo / dpo-lora / cpt。映射在 CLI 边界完成(sft-lora→efficient_sft),永远传 CLI 值,不要传服务端字符串。cpt 无 -lora 变体。音频 TTS 和图像生成都只用 sft-lora——finetune audio create / finetune image create 不暴露此 flag,仅 finetune text create 接受。
--plan 取值穷举:lora(默认,token 计费)/ ptu(需 --input-tpm/--output-tpm)/ mu(需 --deploy-spec/--capacity)。链路 B 基座通常不支持 lora。音频 TTS 微调模型只支持 mu。图像生成微调模型只支持 lora。
--deploy-spec(非 template-id):mu plan 的部署规格 flag。CLI 从 catalog 读取 template_id,在请求体中发送为 deploy_spec。
--source 取值穷举(bl deploy models):custom(微调输出)/ base(基座)/ public。
--learning-rate 必须字符串:传 "3e-4",不要传数字 3e-4,避免 JSON 精度丢失(文本适用,音频/图像不需要传此参数)。
前置检查(动作流起点)
- 认证:
bl auth status,确认已配置 API key(DASHSCOPE_API_KEY 或 bl auth login --api-key sk-...)。
- 基座选型:查询训练能力用
bl finetune capability(查 listFoundationModels,走 API key、无需 console 登录):
bl finetune capability --base-model <base> —— 该模型支持哪些训练类型。
bl finetune capability --training-type sft-lora —— 反向查:哪些模型支持该训练类型(返回 models 列表,含中文名)。
- 选定基座后可直接进入第 2 步;
bl finetune <模态> create 提交前也会再用 listFoundationModels 校验,不支持会快速失败。
- 文本推理推荐 Qwen3 系列(
qwen3-8b / qwen3-14b / qwen3.6-flash);音频 TTS 用 cosyvoice-v3-flash;图像生成用 wan2.7-image-pro / wan2.7-image。
第 1 步:准备数据集
支持三种数据来源,由你(Agent)根据用户意图灵活选用,不必写死交互流程——你本身具备主动提问能力,知道有哪些选项后自然向用户确认即可:
- 本地数据集 —— 用户提供本地文件路径,直接使用。
- 已上传数据集 —— 从百炼上已有的数据集中选取(
bl dataset list)。
- 生成示例数据 —— 征得用户同意后,由你生成一份小规模示例数据,仅用于跑通流程(效果有限,需如实告知用户)。
数据格式因模态不同,详见对应参考文件:
提交训练前用 bl dataset validate --file <path> 校验通过再继续(CLI 自动探测 schema,也可 --schema tts / --schema image / --schema chatml 显式指定)。
第 2 步:创建微调任务
bl finetune <模态> create \
--base-model <base-model> \
--datasets <path-or-file-id> \
--output json
training-type 取值与映射详见 references/finetune.md。模态特异性超参见对应参考文件:
- 文本模型(
finetune text create):接受 --training-type / --n-epochs / --learning-rate 等,详见 references/text.md。
- 音频 TTS(
finetune audio create):不暴露 --training-type(内部固定 sft-lora),超参由 CLI 自动注入,详见 references/audio.md。
- 图像生成(
finetune image create):不暴露 --training-type(内部固定 sft-lora),超参由 CLI 自动注入,详见 references/image.md。
从响应记下:output.job_id、output.finetuned_output(输出模型名,形如 <base>-ft-<ts>-<id>)。
第 3 步:等待训练完成(异步)
用 Monitor 工具运行本技能自带的等待脚本——它会在状态变化时通知,到终态退出:
Monitor command: bash <本技能目录>/scripts/wait.sh finetune <JOB_ID>
<本技能目录> 即本技能的 base 目录(技能加载时会给出,含 scripts/wait.sh),用实际路径替换。脚本每 30s 轮询,终态为 SUCCEEDED/FAILED/CANCELED/PARTIALLY_SUCCEEDED。
⚠️ 避坑:不要在 zsh 里手写 status=... 轮询循环。 status 是 zsh 的只读内置变量,赋值会报 read-only variable 并让脚本 exit 1。用本技能的 bash 脚本(#!/usr/bin/env bash)规避,或自写时改用 st 等变量名。
第 4 步:导出最佳模型(通常可跳过)
任务 SUCCEEDED 后,平台会自动导出 best checkpoint 为可部署模型——直接进第 5 步即可,无需手动导出。
只有要部署非 best 的某个 checkpoint 时才显式导出:
bl finetune checkpoints --job-id <JOB_ID>
bl finetune export --job-id <JOB_ID> --checkpoint <name> --model-name <自定义名>
第 5 步:创建部署
创建前先过写操作护栏:bl deploy list --status RUNNING 查是否已有同模型部署可复用;bl deploy models --source custom|base 确认可用 plan;mu/ptu 必须先取得用户计费确认。
⚠️ 关键避坑:微调后的模型不能直接用微调输出名调用,会 404 Model not exist。必须先创建部署。(链路 B 部署基座同理——直接调用走的是公共推理,不经过你的部署实例。)
bl deploy <模态> create \
--model-name <finetuned-output> \
--display-name <display-name> \
--plan <lora|ptu|mu> \
--output json
- 模态段(
text / audio / image)须与部署模型模态匹配;三个模态子命令 flag 完全相同。
--model-name:链路 A 传第 2 步的 finetuned_output;链路 B 直接传基座模型名。
--plan:
- 文本微调模型默认
lora(token 计费),也可用 mu。
- 音频 TTS 微调模型只支持
mu(不支持 lora / ptu),需 --deploy-spec + --capacity。
- 图像生成微调模型只支持
lora(不支持 mu / ptu)。
- 链路 B 基座通常只支持
ptu/mu,不支持 lora。
- 各 plan 必填参数与计费细则见
references/deploy.md。
--deploy-spec:mu plan 的部署规格(如 dps-20260521172224-1vabse),省略时自动从 catalog 匹配。
- 不确定支持哪些 plan:链路 A 用
bl deploy models --source custom,链路 B 用 bl deploy models --source base,按返回的 plans 选。
⚠️ 避坑(最高频错误):--model-name 与推理命令的 --model 含义不同——deploy <模态> create --model-name 传导出模型名,响应返回的 output.deployed_model 才是部署实例 id,推理命令 --model 必须用 deployed_model,不要复用。详见 references/deploy.md。
从响应记下:output.deployed_model。
第 6 步:等待部署就绪(异步)
Monitor command: bash <本技能目录>/scripts/wait.sh deploy <DEPLOYED_MODEL>
<本技能目录> 同第 3 步。每 15s 轮询,RUNNING 即就绪(FAILED/STOPPED 终止)。
⚠️ 避坑:状态传播延迟。 部署刚到 RUNNING 时立即调用,可能短暂返回 404 Model not exist——这是服务端状态传播延迟,不是用错模型名。bl deploy get 也可能还显示 PENDING。约 1 分钟内会稳定,遇 404 等十几秒重试即可;若持续 404,先核对用的是 deployed_model 而非微调输出名。
第 7 步:调用与交付
推理命令因模态不同:
文本模型:
bl text chat --model <DEPLOYED_MODEL> --message "你的问题"
音频 TTS 模型:
bl speech synthesize --model <DEPLOYED_MODEL> --voice default --text "你要合成的文本" --out result.mp3
图像生成模型(异步 API,需触发词):
--model 必须用 deploy <模态> create 响应中的 deployed_model,不是微调输出名。音频 TTS 的 --voice 固定为 default。图像生成需异步调用且 prompt 包含触发词。详见对应模态参考文件。
向用户交付时给出:
- 部署实例 id(
deployed_model)——调用用它,不是微调输出名
- 一条可直接运行的推理示例命令
- 常用运维命令:
bl deploy get --deployed-model <id> 查状态;bl deploy delete --deployed-model <id> 删除部署;bl finetune list 查历史任务。
收尾提示
- 闲置计费与删除:
lora 闲置一般不计费;mu/ptu 闲置也计费,不用要清理;bl deploy delete 只能删 STOPPED/FAILED 的部署,RUNNING 的 mu/ptu 可先 bl deploy pause(停止计费)再删。细则见 references/deploy.md。
- 复用数据集:多次训练同一数据时,先
bl dataset upload 拿 file-id,再用 --datasets <file-id> 避免重复上传。
- 效果不好:优先加数据(量与质量),其次调
n-epochs/learning-rate,最后才考虑全参 sft。小数据集(<100 条)效果上限有限,要管理预期。