用 Claude 微调开源大模型

教程Hugging Face2025年12月4日8 分钟阅读
用 Claude 微调开源大模型
Hugging Face 发布新工具 Hugging Face Skills,让 Claude 等智能体不仅能写训练脚本,还能直接提交任务到云端 GPU、监控进度,并将微调好的模型推送到 Hub。这篇教程展示了完整工作流,从安装配置到实际训练,支持 SFT、DPO、GRPO 等多种生产级方法。

我们让 Claude 获得了微调大语言模型的能力,用的是一个新工具:Hugging Face Skills。它不止能写训练脚本,还能实际提交任务到云端 GPU、监控进度,并把训练好的模型推送到 Hugging Face Hub。这篇教程会告诉你它是怎么工作的,以及你自己怎么用。

Claude Code 可以用“技能”(Skills)——打包好的指令、脚本和领域知识——来完成特定任务。hf-llm-trainer 这个技能教会了 Claude 关于训练的一切:根据模型大小选哪种 GPU、怎么配置 Hub 认证、什么时候用 LoRA 而不是全量微调,以及如何处理成功训练所需的几十个其他决策。

有了这个技能,你可以直接告诉 Claude:

code
Fine-tune Qwen3-0.6B on the dataset open-r1/codeforces-cots

然后 Claude 会:

  1. 验证你的数据集格式
  2. 选择合适的硬件(对于 0.6B 模型选 t4-small)
  3. 使用并更新一个带 Trackio 监控的训练脚本
  4. 把任务提交到 Hugging Face Jobs
  5. 报告任务 ID 和预估成本
  6. 在你询问时检查进度
  7. 如果出问题,帮你调试

模型在 Hugging Face 的 GPU 上训练,你可以去干别的。训练完成后,你微调好的模型就会出现在 Hub 上,随时可用。

这不是玩具演示。这个技能支持生产环境中使用的相同训练方法:监督微调(SFT)、直接偏好优化(DPO),以及带可验证奖励的强化学习。你可以训练从 0.5B 到 70B 参数的模型,把它们转换成 GGUF 格式用于本地部署,还能运行结合不同技术的多阶段流水线。

安装与配置

开始前,你需要:

Hugging Face skills 兼容 Claude Code、Codex 和 Gemini CLI。对 Cursor、Windsurf 和 Continue 的集成也在路上。

Claude Code

  1. 把仓库注册为 marketplace 插件:
code
/plugin marketplace add huggingface/skills
  1. 安装技能:
code
/plugin install <skill-folder>@huggingface-skills

例如:

code
/plugin install hf-llm-trainer@huggingface-skills

Codex

  1. Codex 会通过 AGENTS.md 文件识别技能。你可以用以下命令验证指令是否加载:
code
codex --ask-for-approval never "Summarize the current instructions."
  1. 更多细节,查看 Codex AGENTS 指南

Gemini CLI

  1. 这个仓库包含 gemini-extension.json 用于集成 Gemini CLI。
  2. 本地安装:
code
gemini extensions install . --consent

或者用 GitHub URL:

code
gemini extensions install https://github.com/huggingface/skills.git --consent
  1. 更多帮助,查看 Gemini CLI 扩展文档

连接 Hugging Face

你需要用写权限 token 认证你的 Hugging Face 账户,这样任务才能创建模型仓库。

设置你的 token:

code
hf auth login
# 或者
export HF_TOKEN=hf_your_write_access_token_here

配置 Hugging Face MCP Server 使用你的写 token,通过 HF_TOKENAuthorization: Bearer HTTP 头部发送。 对于 Claude Code:claude mcp add --transport http hf-skills https://huggingface.co/mcp?bouquet=skills --header "Authorization: Bearer $HF_TOKEN"

你的第一次训练

我们走一遍完整例子。先微调一个小模型看看整个工作流,再探索更高级的功能。

指示智能体进行微调

用一个简单清晰的指令来微调特定模型:

code
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"

提交前检查

在你的智能体提交任何东西之前,你会看到配置:

code
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 修改训练参数。一旦你批准,智能体就会提交任务。

例如,你可以让智能体先做个测试运行:

code
Do a quick test run on 100 examples.

跟踪进度

提交后,你会得到任务详情:

code
✅ 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

Example Trackio dashboard of a Sweep test

这个技能集成了 Trackio,所以你可以实时看训练损失下降。任务是异步运行的,你可以关掉终端,晚点再回来。当你想更新状态时:

code
How's my training job doing?

然后智能体会获取日志并总结进度。

使用你的模型

训练完成后,你的模型就在 Hub 上了:

code
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。客户支持对话、代码生成对、领域特定问答——任何你能向模型展示“好”是什么样子的场景。

code
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 直接优化被偏好的响应,不需要单独的奖励模型。

code
Run DPO on my-org/preference-data to align the SFT model I just trained.
The dataset has 'chosen' and 'rejected' columns.

DPO 对数据集格式敏感。它需要列名恰好是 chosenrejected,或者有一个 prompt 列包含输入。智能体会先验证这个,如果你的数据集用不同列名,它会告诉你如何映射。 你也可以用 Skills 在视觉语言模型上运行 DPO!试试 openbmb/RLAIF-V-Dataset。Claude 会应用小修改,但能成功训练。

组相对策略优化(GRPO)

GRPO 是一种强化学习任务,被证明在可验证任务上有效,比如解数学题、写代码,或者任何有程序化成功标准的任务。

code
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-mediuma10g-small。训练需要几小时,成本 $5-15。

对于中型模型(3-7B),你需要带 LoRA 的 a10g-largea100-large。全量微调试装不下,但 LoRA 让这些模型变得非常可训练。生产环境预算 $15-40。

对于大型模型(7B+),这个 HF skills 任务不合适。

演示 vs 生产

测试工作流时,从小开始:

code
Do a quick test run to SFT Qwen-0.6B with 100 examples of my-org/support-conversations.

智能体配置最小化训练——足够验证你的流水线工作,没有实际成本。

对于生产,要明确:

code
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 时间之前,智能体能帮你先验证数据集。

code
Check if my-org/conversation-data works for SFT training.

智能体在 CPU 上快速检查(只需几分钱成本),然后给出报告:

code
Dataset validation for my-org/conversation-data:

SFT: ✓ READY
  Found 'messages' column with conversation format

DPO: ✗ INCOMPATIBLE
  Missing 'chosen' and 'rejected' columns

如果你的数据集需要转换,智能体会告诉你怎么做:

code
My DPO dataset uses 'good_response' and 'bad_response' instead
of 'chosen' and 'rejected'. How do I fix this?

智能体提供映射代码,还能直接把它整合进你的训练脚本里。

训练监控

实时监控能帮你及早发现问题。这个技能默认配置了 Trackio——提交任务后,你可以在下面这个地址查看指标:

code
https://huggingface.co/spaces/username/trackio

这里会显示训练损失、学习率和验证指标。一次健康的运行会呈现稳步下降的损失曲线。

随时可以问智能体当前状态:

code
What's the status of my training job?
code
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 等衍生工具。

code
Convert my fine-tuned model to GGUF with Q4_K_M quantization.
Push to username/my-model-gguf.

智能体提交一个转换任务,它会合并 LoRA 适配器、转换为 GGUF、应用量化,然后推送到 Hub。

之后就可以在本地使用了:

code
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 运行

这个技能是开源的。你可以扩展它、为你的工作流定制,或者把它作为其他训练场景的起点。


资源

本文编译自 We Got Claude to Fine-Tune an Open Source LLM,版权归原作者所有。

觉得有用?分享给更多人

获取每周 AI 工具精选

工具推荐、实战教程和生态洞察,每周更新。

相关文章

本文分享了如何将 GitHub Copilot SDK 集成到 React Native 应用中,构建一个名为 IssueCrush 的 Issue 智能分类工具。核心方案是服务端集成模式,解决了 SDK 依赖 Node.js 环境的问题,并详细介绍了生命周期管理、提示工程、响应处理和优雅降级等关键实现模式。

教程GitHub·3月24日·8 分钟

Starlette 1.0 发布,最大的变化是引入了基于异步上下文管理器的 lifespan 机制。作者利用 Claude 的 Skill 功能,让 AI 克隆代码库并学习新版本特性,然后成功生成了一个包含项目、任务、评论和标签的完整任务管理应用。

教程Simon Willison·3月22日·5 分钟

评论