用 Claude 微调开源大模型
我们让 Claude 获得了微调大语言模型的能力,用的是一个新工具:Hugging Face Skills。它不止能写训练脚本,还能实际提交任务到云端 GPU、监控进度,并把训练好的模型推送到 Hugging Face Hub。这篇教程会告诉你它是怎么工作的,以及你自己怎么用。
Claude Code 可以用“技能”(Skills)——打包好的指令、脚本和领域知识——来完成特定任务。
hf-llm-trainer这个技能教会了 Claude 关于训练的一切:根据模型大小选哪种 GPU、怎么配置 Hub 认证、什么时候用 LoRA 而不是全量微调,以及如何处理成功训练所需的几十个其他决策。
有了这个技能,你可以直接告诉 Claude:
Fine-tune Qwen3-0.6B on the dataset open-r1/codeforces-cots
然后 Claude 会:
- 验证你的数据集格式
- 选择合适的硬件(对于 0.6B 模型选 t4-small)
- 使用并更新一个带 Trackio 监控的训练脚本
- 把任务提交到 Hugging Face Jobs
- 报告任务 ID 和预估成本
- 在你询问时检查进度
- 如果出问题,帮你调试
模型在 Hugging Face 的 GPU 上训练,你可以去干别的。训练完成后,你微调好的模型就会出现在 Hub 上,随时可用。
这不是玩具演示。这个技能支持生产环境中使用的相同训练方法:监督微调(SFT)、直接偏好优化(DPO),以及带可验证奖励的强化学习。你可以训练从 0.5B 到 70B 参数的模型,把它们转换成 GGUF 格式用于本地部署,还能运行结合不同技术的多阶段流水线。
安装与配置
开始前,你需要:
- 一个 Hugging Face 账户,并且是 Pro 或 Team / Enterprise 计划(Jobs 需要付费计划)
- 一个来自 huggingface.co/settings/tokens 的写权限 token
- 一个像 Claude Code、OpenAI Codex 或 Google 的 Gemini CLI 这样的智能体
Hugging Face skills 兼容 Claude Code、Codex 和 Gemini CLI。对 Cursor、Windsurf 和 Continue 的集成也在路上。
Claude Code
- 把仓库注册为 marketplace 插件:
/plugin marketplace add huggingface/skills
- 安装技能:
/plugin install <skill-folder>@huggingface-skills
例如:
/plugin install hf-llm-trainer@huggingface-skills
Codex
- Codex 会通过
AGENTS.md文件识别技能。你可以用以下命令验证指令是否加载:
codex --ask-for-approval never "Summarize the current instructions."
- 更多细节,查看 Codex AGENTS 指南。
Gemini CLI
- 这个仓库包含
gemini-extension.json用于集成 Gemini CLI。 - 本地安装:
gemini extensions install . --consent
或者用 GitHub URL:
gemini extensions install https://github.com/huggingface/skills.git --consent
- 更多帮助,查看 Gemini CLI 扩展文档。
连接 Hugging Face
你需要用写权限 token 认证你的 Hugging Face 账户,这样任务才能创建模型仓库。
设置你的 token:
hf auth login
# 或者
export HF_TOKEN=hf_your_write_access_token_here
配置 Hugging Face MCP Server 使用你的写 token,通过
HF_TOKEN或Authorization: BearerHTTP 头部发送。 对于 Claude Code:claude mcp add --transport http hf-skills https://huggingface.co/mcp?bouquet=skills --header "Authorization: Bearer $HF_TOKEN"
你的第一次训练
我们走一遍完整例子。先微调一个小模型看看整个工作流,再探索更高级的功能。
指示智能体进行微调
用一个简单清晰的指令来微调特定模型:
Fine-tune Qwen3-0.6B on the open-r1/codeforces-cots dataset for instruction following.
智能体会分析你的请求并准备训练配置。对于一个 0.6B 模型和演示数据集,它会选择 t4-small——足够这个模型大小,也是最便宜的选项。
open-r1/codeforces-cots数据集包含 Codeforces 问题和解决方案。它很适合用来指令微调一个模型解决硬编码问题。 这对视觉语言模型也有效!你可以直接运行 "Fine-tune Qwen/Qwen3-VL-2B-Instruct on llava-instruct-mix"
提交前检查
在你的智能体提交任何东西之前,你会看到配置:
I'll fine-tune Qwen/Qwen3-0.6B on open-r1/codeforces-cots using SFT.
Configuration:
- Hardware: t4-small (~$0.75/hour)
- Estimated time: ~20 minutes
- Estimated cost: ~$0.30
- Output: username/qwen-codeforces-cots-sft
The model will be pushed to Hub automatically. Should I submit?
这是你调整任何东西的机会。改输出仓库名、选不同硬件,或者让 Claude 修改训练参数。一旦你批准,智能体就会提交任务。
例如,你可以让智能体先做个测试运行:
Do a quick test run on 100 examples.
跟踪进度
提交后,你会得到任务详情:
✅ Job submitted successfully!
Job ID: abc123xyz
Monitor: https://huggingface.co/jobs/username/abc123xyz
Expected time: ~20 minutes
Estimated cost: ~$0.30
View real-time metrics at: https://huggingface.co/spaces/username/trackio
这个技能集成了 Trackio,所以你可以实时看训练损失下降。任务是异步运行的,你可以关掉终端,晚点再回来。当你想更新状态时:
How's my training job doing?
然后智能体会获取日志并总结进度。
使用你的模型
训练完成后,你的模型就在 Hub 上了:
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("username/qwen-codeforces-cots-sft")
tokenizer = AutoTokenizer.from_pretrained("username/qwen-codeforces-cots-sft")
这就是完整循环。你用简单英语描述你想要什么,智能体处理了 GPU 选择、脚本生成、任务提交、认证和持久化。整个过程花了大约三十美分。
训练方法
这个技能支持三种训练方法。了解每种方法何时使用,能帮你得到更好结果。
监督微调(SFT)
SFT 是大多数项目的起点。你提供演示数据——输入和期望输出的例子——训练调整模型以匹配这些模式。
当你有高质量的行为示例时用 SFT。客户支持对话、代码生成对、领域特定问答——任何你能向模型展示“好”是什么样子的场景。
Fine-tune Qwen3-0.6B on my-org/support-conversations for 3 epochs.
智能体验证数据集,选择硬件(对于 7B 模型用带 LoRA 的 a10g-large),并配置带检查点和监控的训练。
对于大于 3B 参数的模型,智能体会自动使用 LoRA(低秩适应)来减少内存需求。这让在单 GPU 上训练 7B 或 13B 模型变得可行,同时保留了全量微调的大部分质量。
直接偏好优化(DPO)
DPO 在偏好对上训练——一个响应被“选中”,另一个被“拒绝”。这使模型输出与人类偏好对齐,通常在初始 SFT 阶段之后。
当你有来自人类标注员或自动比较的偏好标注时用 DPO。DPO 直接优化被偏好的响应,不需要单独的奖励模型。
Run DPO on my-org/preference-data to align the SFT model I just trained.
The dataset has 'chosen' and 'rejected' columns.
DPO 对数据集格式敏感。它需要列名恰好是
chosen和rejected,或者有一个prompt列包含输入。智能体会先验证这个,如果你的数据集用不同列名,它会告诉你如何映射。 你也可以用 Skills 在视觉语言模型上运行 DPO!试试 openbmb/RLAIF-V-Dataset。Claude 会应用小修改,但能成功训练。
组相对策略优化(GRPO)
GRPO 是一种强化学习任务,被证明在可验证任务上有效,比如解数学题、写代码,或者任何有程序化成功标准的任务。
Train a math reasoning model using GRPO on the openai/gsm8k dataset based on Qwen3-0.6B.
模型生成响应,根据正确性接收奖励,并从结果中学习。这比 SFT 或 DPO 更复杂,但配置类似。
硬件与成本
智能体根据你的模型大小选择硬件,但了解权衡能帮你做出更好决策。
模型大小到 GPU 的映射
对于小于 1B 参数的微型模型,t4-small 效果很好。这些模型训练很快——一次完整运行预计 $1-2。这很适合教育或实验性运行。
对于小型模型(1-3B),升级到 t4-medium 或 a10g-small。训练需要几小时,成本 $5-15。
对于中型模型(3-7B),你需要带 LoRA 的 a10g-large 或 a100-large。全量微调试装不下,但 LoRA 让这些模型变得非常可训练。生产环境预算 $15-40。
对于大型模型(7B+),这个 HF skills 任务不合适。
演示 vs 生产
测试工作流时,从小开始:
Do a quick test run to SFT Qwen-0.6B with 100 examples of my-org/support-conversations.
智能体配置最小化训练——足够验证你的流水线工作,没有实际成本。
对于生产,要明确:
SFT Qwen-0.6B for production on the full my-org/support-conversations.
Checkpoints every 500 steps, 3 epochs, cosine learning rate.
在投入多小时的生产任务之前,总是先运行一个演示。一个 $0.50 的演示发现格式错误,能省下 $30 的失败运行。
数据集验证
数据集格式是训练失败最常见的原因。在消耗 GPU 时间之前,智能体能帮你先验证数据集。
Check if my-org/conversation-data works for SFT training.
智能体在 CPU 上快速检查(只需几分钱成本),然后给出报告:
Dataset validation for my-org/conversation-data:
SFT: ✓ READY
Found 'messages' column with conversation format
DPO: ✗ INCOMPATIBLE
Missing 'chosen' and 'rejected' columns
如果你的数据集需要转换,智能体会告诉你怎么做:
My DPO dataset uses 'good_response' and 'bad_response' instead
of 'chosen' and 'rejected'. How do I fix this?
智能体提供映射代码,还能直接把它整合进你的训练脚本里。
训练监控
实时监控能帮你及早发现问题。这个技能默认配置了 Trackio——提交任务后,你可以在下面这个地址查看指标:
https://huggingface.co/spaces/username/trackio
这里会显示训练损失、学习率和验证指标。一次健康的运行会呈现稳步下降的损失曲线。
随时可以问智能体当前状态:
What's the status of my training job?
Job abc123xyz is running (45 minutes elapsed)
Current step: 850/1200
Training loss: 1.23 (↓ from 2.41 at start)
Learning rate: 1.2e-5
Estimated completion: ~20 minutes
如果出了问题,智能体帮你诊断。内存不够?它会建议减小批次大小或升级硬件。数据集错误?它能识别出哪里不匹配。超时?它会推荐延长训练时间或改用更快的训练设置。
转换为 GGUF
训练完成后,你可能想在本地运行模型。GGUF 格式兼容 llama.cpp 以及 LM Studio、Ollama 等衍生工具。
Convert my fine-tuned model to GGUF with Q4_K_M quantization.
Push to username/my-model-gguf.
智能体提交一个转换任务,它会合并 LoRA 适配器、转换为 GGUF、应用量化,然后推送到 Hub。
之后就可以在本地使用了:
llama-server -hf <username>/<model-name>:<quantization>
# For example, to run the Qwen3-1.7B-GGUF model on your local machine:
llama-server -hf unsloth/Qwen3-1.7B-GGUF:Q4_K_M
下一步做什么
我们已经看到,像 Claude Code、Codex 或 Gemini CLI 这样的编程智能体,能够处理模型微调的全生命周期:验证数据、选择硬件、生成脚本、提交任务、监控进度、转换输出。这原本是一项专业技能,现在通过对话就能完成。
可以尝试这些方向:
- 用你自己的数据集微调一个模型
- 通过 SFT → DPO 构建一个偏好对齐的模型
- 用 GRPO 在数学或代码上训练一个推理模型
- 把模型转换为 GGUF 并用 Ollama 运行
这个技能是开源的。你可以扩展它、为你的工作流定制,或者把它作为其他训练场景的起点。
资源
- SKILL.md — 完整的技能文档
- Training Methods — SFT、DPO、GRPO 详解
- Hardware Guide — GPU 选择与成本
- TRL Documentation — 底层的训练库文档
- Hugging Face Jobs — 云端训练基础设施
- Trackio — 实时训练监控
觉得有用?分享给更多人
