HuggingFace模型训练器Skill hugging-face-model-trainer

此技能用于在Hugging Face Jobs云基础设施上,利用TRL(Transformer Reinforcement Learning)技术训练或微调大型语言模型。支持SFT、DPO、GRPO和奖励建模等多种方法,包含GGUF格式转换用于本地部署。涵盖数据集准备、硬件选择、成本估算、实时监控等全流程指导,适用于云端GPU训练、大模型微调、AI应用开发、深度学习、NLP和AIGC场景。

大模型微调 0 次安装 0 次浏览 更新于 3/24/2026

name: Hugging Face模型训练器 description: 当用户想要在Hugging Face Jobs基础设施上使用TRL(Transformer Reinforcement Learning)训练或微调语言模型时,应使用此技能。覆盖SFT、DPO、GRPO和奖励建模训练方法,以及用于本地部署的GGUF转换。包括TRL Jobs包、使用PEP 723格式的UV脚本、数据集准备和验证、硬件选择、成本估算、Trackio监控、Hub身份验证和模型持久化的指导。应用于涉及云GPU训练、GGUF转换的任务,或当用户提到在Hugging Face Jobs上训练而不需要本地GPU设置时。 license: 完整条款在LICENSE.txt中

在Hugging Face Jobs上进行TRL训练

概述

使用TRL(Transformer Reinforcement Learning)在完全托管的Hugging Face基础设施上训练语言模型。无需本地GPU设置——模型在云GPU上训练,结果自动保存到Hugging Face Hub。

TRL提供多种训练方法:

  • SFT(监督微调)- 标准指令调优
  • DPO(直接偏好优化)- 从偏好数据中进行对齐
  • GRPO(组相对策略优化)- 在线强化学习训练
  • 奖励建模- 训练用于RLHF的奖励模型

详细TRL方法文档:

hf_doc_search("your query", product="trl")
hf_doc_fetch("https://huggingface.co/docs/trl/sft_trainer")  # SFT
hf_doc_fetch("https://huggingface.co/docs/trl/dpo_trainer")  # DPO
# 等等。

另见: references/training_methods.md 用于方法概述和选择指导

何时使用此技能

当用户想要时使用此技能:

  • 在云GPU上微调语言模型,无需本地基础设施
  • 使用TRL方法(SFT、DPO、GRPO等)进行训练
  • 在Hugging Face Jobs基础设施上运行训练任务
  • 将训练后的模型转换为GGUF用于本地部署(Ollama、LM Studio、llama.cpp)
  • 确保训练后的模型永久保存到Hub
  • 使用具有优化默认值的现代工作流

何时使用Unsloth

当以下情况时,使用Unslothreferences/unsloth.md)而不是标准TRL:

  • GPU内存有限- Unsloth使用约60%更少的VRAM
  • 速度重要- Unsloth快约2倍
  • 训练大模型(>13B)- 内存效率关键
  • 训练视觉语言模型(VLM)- Unsloth支持FastVisionModel

参见references/unsloth.md获取完整的Unsloth文档和scripts/unsloth_sft_example.py获取生产就绪的训练脚本。

关键指示

当协助训练任务时:

  1. 始终使用hf_jobs() MCP工具- 使用hf_jobs("uv", {...})提交任务,而不是bash trl-jobs命令。script参数直接接受Python代码。除非用户明确请求,否则不要保存到本地文件。将脚本内容作为字符串传递给hf_jobs()。如果用户要求“训练模型”、“微调”或类似请求,您必须创建训练脚本并立即使用hf_jobs()提交任务。

  2. 始终包含Trackio- 每个训练脚本都应包含Trackio用于实时监控。使用scripts/中的示例脚本作为模板。

  3. 提交后提供任务详情- 提交后,提供任务ID、监控URL、预计时间,并注明用户可以稍后请求状态检查。

  4. 使用示例脚本作为模板- 参考scripts/train_sft_example.pyscripts/train_dpo_example.py等作为起点。

本地脚本依赖

要在本地运行脚本(如estimate_cost.py),安装依赖:

pip install -r requirements.txt

先决条件清单

在开始任何训练任务之前,验证:

账户和身份验证

  • 具有ProTeamEnterprise计划的Hugging Face账户(任务需要付费计划)
  • 已认证登录:使用hf_whoami()检查
  • 用于Hub推送的HF_TOKEN ⚠️ 关键- 训练环境是临时的,必须推送到Hub,否则所有训练结果丢失
  • Token必须具有写权限
  • 必须在任务配置中传递secrets={"HF_TOKEN": "$HF_TOKEN"} 以使token可用($HF_TOKEN语法引用您的实际token值)

数据集要求

  • 数据集必须在Hub上存在或可通过datasets.load_dataset()加载
  • 格式必须匹配训练方法(SFT:“消息”/文本/提示-完成;DPO:选择/拒绝;GRPO:仅提示)
  • 在GPU训练之前,始终验证未知数据集 以防止格式失败(见下文数据集验证部分)
  • 大小适合硬件(演示:在t4-small上50-100个示例;生产:在a10g-large/a100-large上1K-10K+)

⚠️ 关键设置

  • 超时必须超过预计训练时间- 默认30分钟对于大多数训练来说太短。最小推荐:1-2小时。如果超时,任务失败,所有进度丢失。
  • 必须启用Hub推送- 配置:push_to_hub=Truehub_model_id="用户名/模型名称";任务:secrets={"HF_TOKEN": "$HF_TOKEN"}

异步任务指南

⚠️ 重要:训练任务异步运行,可能需要数小时

必需操作

当用户请求训练时:

  1. 创建训练脚本并包含Trackio(使用scripts/train_sft_example.py作为模板)
  2. 立即提交使用hf_jobs() MCP工具,脚本内容内联——除非用户请求,否则不要保存到文件
  3. 报告提交提供任务ID、监控URL和预计时间
  4. 等待用户请求状态检查——不要自动轮询

基本原则

  • 任务在后台运行- 提交后立即返回;训练独立继续
  • 初始日志延迟- 可能需要30-60秒日志出现
  • 用户检查状态- 等待用户请求状态更新
  • 避免轮询- 仅在用户请求时检查日志;提供监控链接代替

提交后

提供给用户:

  • ✅ 任务ID和监控URL
  • ✅ 预计完成时间
  • ✅ Trackio仪表板URL
  • ✅ 注明用户可以稍后请求状态检查

示例响应:

✅ 任务提交成功!

任务ID:abc123xyz
监控:https://huggingface.co/jobs/username/abc123xyz

预计时间:~2小时
预计成本:~$10

任务正在后台运行。准备好时请让我检查状态/日志!

快速开始:三种方法

💡 演示提示: 对于较小GPU(t4-small)的快速演示,省略eval_dataseteval_strategy以节省约40%内存。您仍将看到训练损失和学习进度。

序列长度配置

TRL配置类使用max_length(而不是max_seq_length 来控制标记化序列长度:

# ✅ 正确- 如果需要设置序列长度
SFTConfig(max_length=512)   # 将序列截断为512个标记
DPOConfig(max_length=2048)  # 更长上下文(2048个标记)

# ❌ 错误- 此参数不存在
SFTConfig(max_seq_length=512)  # TypeError!

默认行为: max_length=1024(从右侧截断)。这对于大多数训练都很好。

何时覆盖:

  • 更长上下文:设置更高(例如,max_length=2048
  • 内存限制:设置更低(例如,max_length=512
  • 视觉模型:设置max_length=None(防止切割图像标记)

通常您根本不需要设置此参数- 以下示例使用合理的默认值。

方法1:UV脚本(推荐—默认选择)

UV脚本使用PEP 723内联依赖,实现干净、自包含的训练。这是Claude Code的主要方法。

hf_jobs("uv", {
    "script": """
# /// script
# dependencies = ["trl>=0.12.0", "peft>=0.7.0", "trackio"]
# ///

from datasets import load_dataset
from peft import LoraConfig
from trl import SFTTrainer, SFTConfig
import trackio

dataset = load_dataset("trl-lib/Capybara", split="train")

# 为监控创建训练/评估分割
dataset_split = dataset.train_test_split(test_size=0.1, seed=42)

trainer = SFTTrainer(
    model="Qwen/Qwen2.5-0.5B",
    train_dataset=dataset_split["train"],
    eval_dataset=dataset_split["test"],
    peft_config=LoraConfig(r=16, lora_alpha=32),
    args=SFTConfig(
        output_dir="my-model",
        push_to_hub=True,
        hub_model_id="username/my-model",
        num_train_epochs=3,
        eval_strategy="steps",
        eval_steps=50,
        report_to="trackio",
        project="meaningful_prject_name", # 训练名称的项目名(trackio)
        run_name="meaningful_run_name",   # 特定训练运行的描述性名称(trackio)
    )
)

trainer.train()
trainer.push_to_hub()
""",
    "flavor": "a10g-large",
    "timeout": "2h",
    "secrets": {"HF_TOKEN": "$HF_TOKEN"}
})

好处: 直接MCP工具使用、代码干净、依赖内联声明(PEP 723)、无需文件保存、完全控制 何时使用: Claude Code中所有训练任务的默认选择、自定义训练逻辑、任何需要hf_jobs()的场景

处理脚本

⚠️ 重要: script参数接受内联代码(如上所示)或URL。本地文件路径不起作用。

为什么本地路径不起作用: 任务在隔离的Docker容器中运行,无法访问您的本地文件系统。脚本必须是:

  • 内联代码(推荐用于自定义训练)
  • 公开可访问的URL
  • 私有仓库URL(带HF_TOKEN)

常见错误:

# ❌ 这些都会失败
hf_jobs("uv", {"script": "train.py"})
hf_jobs("uv", {"script": "./scripts/train.py"})
hf_jobs("uv", {"script": "/path/to/train.py"})

正确方法:

# ✅ 内联代码(推荐)
hf_jobs("uv", {"script": "# /// script
# dependencies = [...]
# ///

<您的代码>"})

# ✅ 从Hugging Face Hub
hf_jobs("uv", {"script": "https://huggingface.co/user/repo/resolve/main/train.py"})

# ✅ 从GitHub
hf_jobs("uv", {"script": "https://raw.githubusercontent.com/user/repo/main/train.py"})

# ✅ 从Gist
hf_jobs("uv", {"script": "https://gist.githubusercontent.com/user/id/raw/train.py"})

要使用本地脚本: 首先上传到HF Hub:

huggingface-cli repo create my-training-scripts --type model
huggingface-cli upload my-training-scripts ./train.py train.py
# 使用:https://huggingface.co/USERNAME/my-training-scripts/resolve/main/train.py

方法2:TRL维护的脚本(官方示例)

TRL为所有方法提供经过实战测试的脚本。可以从URL运行:

hf_jobs("uv", {
    "script": "https://github.com/huggingface/trl/blob/main/trl/scripts/sft.py",
    "script_args": [
        "--model_name_or_path", "Qwen/Qwen2.5-0.5B",
        "--dataset_name", "trl-lib/Capybara",
        "--output_dir", "my-model",
        "--push_to_hub",
        "--hub_model_id", "username/my-model"
    ],
    "flavor": "a10g-large",
    "timeout": "2h",
    "secrets": {"HF_TOKEN": "$HF_TOKEN"}
})

好处: 无需编写代码、由TRL团队维护、经过生产测试 何时使用: 标准TRL训练、快速实验、不需要自定义代码 可用: 脚本可从 https://github.com/huggingface/trl/tree/main/examples/scripts 获取

在Hub上查找更多UV脚本

uv-scripts组织在Hugging Face Hub上提供现成的UV脚本,存储为数据集:

# 发现可用的UV脚本集合
dataset_search({"author": "uv-scripts", "sort": "downloads", "limit": 20})

# 探索特定集合
hub_repo_details(["uv-scripts/classification"], repo_type="dataset", include_readme=True)

流行集合: ocr, classification, synthetic-data, vllm, dataset-creation

方法3:HF Jobs CLI(直接终端命令)

hf_jobs() MCP工具不可用时,直接使用hf jobs CLI。

⚠️ 关键:CLI语法规则

# ✅ 正确语法 - 标志在脚本URL之前
hf jobs uv run --flavor a10g-large --timeout 2h --secrets HF_TOKEN "https://example.com/train.py"

# ❌ 错误 - "run uv" 而不是 "uv run"
hf jobs run uv "https://example.com/train.py" --flavor a10g-large

# ❌ 错误 - 标志在脚本URL之后(将被忽略!)
hf jobs uv run "https://example.com/train.py" --flavor a10g-large

# ❌ 错误 - "--secret" 而不是 "--secrets"(复数)
hf jobs uv run --secret HF_TOKEN "https://example.com/train.py"

关键语法规则:

  1. 命令顺序是 hf jobs uv run(不是 hf jobs run uv
  2. 所有标志(--flavor--timeout--secrets)必须在脚本URL之前
  3. 使用 --secrets(复数),不是 --secret
  4. 脚本URL必须是最后一个位置参数

完整CLI示例:

hf jobs uv run \
  --flavor a10g-large \
  --timeout 2h \
  --secrets HF_TOKEN \
  "https://huggingface.co/user/repo/resolve/main/train.py"

通过CLI检查任务状态:

hf jobs ps                        # 列出所有任务
hf jobs logs <job-id>             # 查看日志
hf jobs inspect <job-id>          # 任务详情
hf jobs cancel <job-id>           # 取消任务

方法4:TRL Jobs包(简化训练)

trl-jobs包提供优化默认值和一行训练。

# 安装
pip install trl-jobs

# 使用SFT训练(最简单可能)
trl-jobs sft \
  --model_name Qwen/Qwen2.5-0.5B \
  --dataset_name trl-lib/Capybara

好处: 预配置设置、自动Trackio集成、自动Hub推送、一行命令 何时使用: 用户直接在终端工作(不是Claude Code上下文)、快速本地实验 仓库: https://github.com/huggingface/trl-jobs

⚠️ 在Claude Code上下文中,当可用时,优先使用hf_jobs() MCP工具(方法1)。

硬件选择

模型大小 推荐硬件 成本(约/小时) 用例
<1B 参数 t4-small ~$0.75 演示、快速测试,无评估步骤
1-3B 参数 t4-medium, l4x1 ~$1.50-2.50 开发
3-7B 参数 a10g-small, a10g-large ~$3.50-5.00 生产训练
7-13B 参数 a10g-large, a100-large ~$5-10 大模型(使用LoRA)
13B+ 参数 a100-large, a10g-largex2 ~$10-20 非常大(使用LoRA)

GPU类型: cpu-basic/upgrade/performance/xl, t4-small/medium, l4x1/x4, a10g-small/large/largex2/largex4, a100-large, h100/h100x8

指南:

  • 对于模型>7B,使用LoRA/PEFT以减少内存
  • 多GPU由TRL/Accelerate自动处理
  • 测试时从较小硬件开始

参见: references/hardware_guide.md 获取详细规格

关键:将结果保存到Hub

⚠️ 临时环境—必须推送到Hub

Jobs环境是临时的。所有文件在任务结束时被删除。如果模型未推送到Hub,所有训练丢失

必需配置

在训练脚本/配置中:

SFTConfig(
    push_to_hub=True,
    hub_model_id="用户名/模型名称",  # 必须指定
    hub_strategy="every_save",  # 可选:推送检查点
)

在任务提交中:

{
    "secrets": {"HF_TOKEN": "$HF_TOKEN"}  # 启用身份验证
}

验证清单

提交前:

  • [ ] push_to_hub=True 在配置中设置
  • [ ] hub_model_id 包含用户名/仓库名称
  • [ ] secrets 参数包括 HF_TOKEN
  • [ ] 用户对目标仓库有写访问权限

参见: references/hub_saving.md 获取详细故障排除

超时管理

⚠️ 默认:30 分钟—对于训练来说太短

设置超时

{
    "timeout": "2h"   # 2 小时(格式:"90m", "2h", "1.5h", 或秒作为整数)
}

超时指南

场景 推荐 备注
快速演示(50-100个示例) 10-30 分钟 验证设置
开发训练 1-2 小时 小数据集
生产(3-7B模型) 4-6 小时 完整数据集
大模型带LoRA 3-6 小时 取决于数据集

始终添加20-30%缓冲区 用于模型/数据集加载、检查点保存、Hub推送操作和网络延迟。

超时时: 任务立即终止,所有未保存进度丢失,必须从头开始重启

成本估算

在规划已知参数的任务时,提供成本估算。 使用 scripts/estimate_cost.py

uv run scripts/estimate_cost.py \
  --model meta-llama/Llama-2-7b-hf \
  --dataset trl-lib/Capybara \
  --hardware a10g-large \
  --dataset-size 16000 \
  --epochs 3

输出包括预计时间、成本、推荐超时(带缓冲区)和优化建议。

何时提供: 用户规划任务、询问成本/时间、选择硬件、任务将运行>1小时或成本>$5

示例训练脚本

生产就绪模板,包含所有最佳实践:

正确加载这些脚本:

  • scripts/train_sft_example.py - 完整的SFT训练,带Trackio、LoRA、检查点
  • scripts/train_dpo_example.py - DPO训练用于偏好学习
  • scripts/train_grpo_example.py - GRPO训练用于在线强化学习

这些脚本演示了正确的Hub保存、Trackio集成、检查点管理和优化参数。将它们的內容内联传递给hf_jobs()或用作自定义脚本的模板。

监控和跟踪

Trackio 提供实时指标可视化。参见 references/trackio_guide.md 获取完整设置指南。

关键点:

  • trackio 添加到依赖中
  • 配置训练器为 report_to="trackio" 和 run_name="meaningful_name"

Trackio配置默认值

除非用户指定,否则使用合理默认值。 生成带Trackio的训练脚本时:

默认配置:

  • 空间ID{用户名}/trackio(使用“trackio”作为默认空间名)
  • 运行命名: 除非另有指定,否则以用户能识别的方式命名运行(例如,描述任务、模型或目的)
  • 配置: 保持最小 - 仅包括超参数和模型/数据集信息
  • 项目名称: 使用项目名称将运行与特定项目关联

用户覆盖: 如果用户请求特定trackio配置(自定义空间、运行命名、分组或附加配置),应用他们的偏好而不是默认值。

这对于管理具有相同配置的多个任务或保持训练脚本可移植性很有用。

参见 references/trackio_guide.md 获取完整文档,包括为实验分组运行。

检查任务状态

# 列出所有任务
hf_jobs("ps")

# 检查特定任务
hf_jobs("inspect", {"job_id": "your-job-id"})

# 查看日志
hf_jobs("logs", {"job_id": "your-job-id"})

记住: 等待用户请求状态检查。避免重复轮询。

数据集验证

在启动GPU训练之前验证数据集格式,以防止训练失败的首要原因:格式不匹配。

为什么验证

  • 50%+ 的训练失败是由于数据集格式问题
  • DPO尤其严格:需要确切的列名(promptchosenrejected
  • 失败的GPU任务浪费$1-10和30-60分钟
  • 在CPU上验证成本约$0.01,时间<1分钟

何时验证

始终验证:

  • 未知或自定义数据集
  • DPO训练(关键- 90%的数据集需要映射)
  • 任何未明确TRL兼容的数据集

跳过已知TRL数据集的验证:

  • trl-lib/ultrachat_200k, trl-lib/Capybara, HuggingFaceH4/ultrachat_200k, 等。

使用

hf_jobs("uv", {
    "script": "https://huggingface.co/datasets/mcp-tools/skills/raw/main/dataset_inspector.py",
    "script_args": ["--dataset", "username/dataset-name", "--split", "train"]
})

脚本快速,通常会同步完成。

读取结果

输出显示每种训练方法的兼容性:

  • ✓ 就绪 - 数据集兼容,直接使用
  • ✗ 需要映射 - 兼容但需要预处理(提供映射代码)
  • ✗ 不兼容 - 不能用于此方法

当需要映射时,输出包括**“映射代码”**部分,提供可复制的Python代码。

示例工作流

# 1. 检查数据集(成本约$0.01,<1分钟在CPU上)
hf_jobs("uv", {
    "script": "https://huggingface.co/datasets/mcp-tools/skills/raw/main/dataset_inspector.py",
    "script_args": ["--dataset", "argilla/distilabel-math-preference-dpo", "--split", "train"]
})

# 2. 检查输出标记:
#    ✓ 就绪 → 继续训练
#    ✗ 需要映射 → 应用下方映射代码
#    ✗ 不兼容 → 选择不同方法/数据集

# 3. 如果需要映射,在训练前应用:
def format_for_dpo(example):
    return {
        'prompt': example['instruction'],
        'chosen': example['chosen_response'],
        'rejected': example['rejected_response'],
    }
dataset = dataset.map(format_for_dpo, remove_columns=dataset.column_names)

# 4. 有信心地启动训练任务

常见场景:DPO格式不匹配

大多数DPO数据集使用非标准列名。示例:

数据集有:instruction, chosen_response, rejected_response
DPO期望:prompt, chosen, rejected

验证器检测到这一点并提供确切的映射代码来修复它。

将模型转换为GGUF

训练后,将模型转换为GGUF格式用于llama.cpp、Ollama、LM Studio和其他本地推理工具。

什么是GGUF:

  • 针对CPU/GPU推理优化,用于llama.cpp
  • 支持量化(4位、5位、8位)以减少模型大小
  • 兼容Ollama、LM Studio、Jan、GPT4All、llama.cpp
  • 通常对于7B模型为2-8GB(vs 14GB未量化)

何时转换:

  • 使用Ollama或LM Studio在本地运行模型
  • 通过量化减少模型大小
  • 部署到边缘设备
  • 共享模型用于本地优先使用

参见: references/gguf_conversion.md 获取完整转换指南,包括生产就绪转换脚本、量化选项、硬件要求、使用示例和故障排除。

快速转换:

hf_jobs("uv", {
    "script": "<参见 references/gguf_conversion.md 获取完整脚本>",
    "flavor": "a10g-large",
    "timeout": "45m",
    "secrets": {"HF_TOKEN": "$HF_TOKEN"},
    "env": {
        "ADAPTER_MODEL": "username/my-finetuned-model",
        "BASE_MODEL": "Qwen/Qwen2.5-0.5B",
        "OUTPUT_REPO": "username/my-model-gguf"
    }
})

常见训练模式

参见 references/training_patterns.md 获取详细示例,包括:

  • 快速演示(5-10分钟)
  • 带检查点的生产
  • 多GPU训练
  • DPO训练(偏好学习)
  • GRPO训练(在线强化学习)

常见失败模式

内存不足(OOM)

修复(按顺序尝试):

  1. 减少批量大小: per_device_train_batch_size=1, 增加 gradient_accumulation_steps=8。有效批量大小是 per_device_train_batch_size x gradient_accumulation_steps。为了最佳性能,保持有效批量大小接近128。
  2. 启用: gradient_checkpointing=True
  3. 升级硬件: t4-small → l4x1, a10g-small → a10g-large 等。

数据集格式错误

修复:

  1. 首先用数据集检查器验证:
    uv run https://huggingface.co/datasets/mcp-tools/skills/raw/main/dataset_inspector.py \
      --dataset name --split train
    
  2. 检查输出兼容性标记(✓ 就绪, ✗ 需要映射, ✗ 不兼容)
  3. 如果需要,应用检查器输出中的映射代码

任务超时

修复:

  1. 检查日志获取实际运行时间: hf_jobs("logs", {"job_id": "..."})
  2. 增加带缓冲区的超时: "timeout": "3h"(将预计时间增加30%)
  3. 或减少训练: 降低 num_train_epochs, 使用较小数据集, 启用 max_steps
  4. 保存检查点: save_strategy="steps", save_steps=500, hub_strategy="every_save"

备注: 默认30分钟对于真实训练不足。最小1-2小时。

Hub推送失败

修复:

  1. 添加到任务: secrets={"HF_TOKEN": "$HF_TOKEN"}
  2. 添加到配置: push_to_hub=True, hub_model_id="用户名/模型名称"
  3. 验证身份验证: mcp__huggingface__hf_whoami()
  4. 检查token具有写权限和仓库存在(或设置 hub_private_repo=True

缺少依赖

修复: 添加到PEP 723头:

# /// script
# dependencies = ["trl>=0.12.0", "peft>=0.7.0", "trackio", "missing-package"]
# ///

故障排除

常见问题:

  • 任务超时 → 增加超时,减少轮次/数据集,使用较小模型/LoRA
  • 模型未保存到Hub → 检查 push_to_hub=True, hub_model_id, secrets=HF_TOKEN
  • 内存不足(OOM) → 减少批量大小,增加梯度累积,启用LoRA,使用更大GPU
  • 数据集格式错误 → 用数据集检查器验证(见数据集验证部分)
  • 导入/模块错误 → 添加PEP 723头带依赖,验证格式
  • 身份验证错误 → 检查 mcp__huggingface__hf_whoami(), token权限, secrets参数

参见: references/troubleshooting.md 获取完整故障排除指南

资源

参考资料(在此技能中)

  • references/training_methods.md - SFT、DPO、GRPO、KTO、PPO、奖励建模概述
  • references/training_patterns.md - 常见训练模式和示例
  • references/unsloth.md - 用于快速VLM训练的Unsloth(约2倍速度,60%更少VRAM)
  • references/gguf_conversion.md - 完整GGUF转换指南
  • references/trackio_guide.md - Trackio监控设置
  • references/hardware_guide.md - 硬件规格和选择
  • references/hub_saving.md - Hub身份验证故障排除
  • references/troubleshooting.md - 常见问题和解决方案

脚本(在此技能中)

  • scripts/train_sft_example.py - 生产SFT模板
  • scripts/train_dpo_example.py - 生产DPO模板
  • scripts/train_grpo_example.py - 生产GRPO模板
  • scripts/unsloth_sft_example.py - Unsloth文本LLM训练模板(更快,更少VRAM)
  • scripts/estimate_cost.py - 估算时间和成本(在适当时提供)
  • scripts/convert_to_gguf.py - 完整GGUF转换脚本

外部脚本

  • 数据集检查器 - 在训练前验证数据集格式(通过 uv runhf_jobs 使用)

外部链接

关键要点

  1. 内联提交脚本 - script 参数直接接受Python代码;除非用户请求,否则无需文件保存
  2. 任务是异步的 - 不要等待/轮询;让用户准备好时检查
  3. 始终设置超时 - 默认30分钟不足;最小1-2小时推荐
  4. 始终启用Hub推送 - 环境是临时的;没有推送,所有结果丢失
  5. 包含Trackio - 使用示例脚本作为实时监控模板
  6. 提供成本估算 - 当参数已知时,使用 scripts/estimate_cost.py
  7. 使用UV脚本(方法1) - 默认使用 hf_jobs("uv", {...}) 带内联脚本;用于标准训练的TRL维护脚本;在Claude Code中避免bash trl-jobs 命令
  8. 使用 hf_doc_fetch/hf_doc_search 获取最新TRL文档
  9. 在训练前验证数据集格式 使用数据集检查器(见数据集验证部分)
  10. 为模型大小选择适当硬件;对于模型>7B使用LoRA