Hugging Face 教程:让 OpenAI Codex 端到端训练开源模型
Codex is Open Sourcing AI models
Hugging Face 发布教程,展示如何用 HF Skills 让 OpenAI Codex 完成端到端机器学习实验:验证数据集、选择硬件、生成并提交训练任务、监控进度、评估模型并生成报告。
完整演示了把端到端微调实验交给编码智能体的整套流程,可据此迁移到自己的训练任务。
基于我们让 Claude Code 训练开源模型的工作,我们现在让 Codex 更进一步。我们让 Codex 访问了 HF Mirror Skills 仓库,其中包含用于机器学习和 AI 任务的技能,例如训练或评估模型。借助 HF 技能,编码代理可以:
- 微调语言模型并应用 RL 对齐
- 审查、解释 Trackio 中的实时训练指标并据此采取行动
- 评估检查点并依据评估结果采取行动
- 根据实验创建报告
- 导出为 GGUF 并量化模型以进行本地部署
- 将模型发布到 Hub
本教程将更深入地讲解,向你展示其工作原理以及如何自行使用。那么让我们开始吧。
Codex 使用
AGENTS.md文件来完成专门任务,而 Claude Code 使用“Skills”。幸运的是,“HF-skills”兼容这两种方式,并可与 Claude Code、Codex 或 Gemini CLI 等主流编码代理配合使用。
借助 HF-skills,你可以这样告诉 Codex:
Fine-tune Qwen3-0.6B on the dataset open-r1/codeforces-cots
然后 Codex 将会:
- 验证你的数据集格式
- 选择合适的硬件(0.6B 模型使用 t4-small)
- 使用并更新带有 Trackio 监控的训练脚本
- 将作业提交到 HF Mirror Jobs
- 报告作业 ID 和预估成本
- 在你询问时检查进度
- 在出问题时帮你调试
模型在 HF Mirror GPU 上训练,而你可以去做其他事情。完成后,你微调后的模型会出现在 Hub 上,随时可用。
这不是玩具演示。该扩展支持生产环境中使用的相同训练方法:监督微调、直接偏好优化,以及带可验证奖励的强化学习。你可以训练 0.5B 到 7B 参数的模型,将其转换为 GGUF 以进行本地部署,并运行结合不同技术的多阶段流水线。
目标:端到端机器学习实验
我们在 Claude Code 教程中探索了这种单一提示词方法。然而,我们现在可以更进一步,让 OpenAI Codex 进行端到端机器学习实验。例如,Codex 应该能够监控进度、评估模型,并维护一份最新的训练报告。这将使工程师能够将实验委托给 Codex,并以更省心的方式审查报告。它还将使 Codex 能够根据训练报告和评估结果自行做出更多决策。
那么让我们开始吧!
设置与安装
开始之前,你需要:
- 一个拥有 Pro 或 Team / Enterprise 套餐的 HF Mirror 账户(Jobs 需要付费套餐)
- 来自 hf-mirror.com/settings/tokens 的写入权限令牌
- 已安装并配置好的 Codex
安装 Codex
Codex 是 OpenAI 的 AI 编码代理,包含在 ChatGPT Plus、Pro、Business、Edu 和 Enterprise 套餐中。Codex 将 AI 辅助直接带入你的开发工作流程。
有关安装和设置说明,请参阅 Codex 文档。
安装 HF Mirror Skills
HF Mirror Skills 仓库包含一个 Codex 会自动检测并使用的 AGENTS.md 文件。
克隆仓库:
git clone https://github.com/huggingface/skills.git
cd skills
Codex 会自动检测仓库中的 AGENTS.md 文件并加载这些技能。你可以通过以下方式验证说明是否已加载:
codex --ask-for-approval never "Summarize the current instructions."
更多详情请参阅 Codex AGENTS 指南。
连接到 HF Mirror
使用 hf auth login 命令和来自 hf.co/settings/tokens 的写入权限令牌向 HF Mirror 进行身份验证:
hf auth login
Codex 支持 MCP(模型上下文协议)服务器。你可以配置 HF Mirror MCP 服务器以获得额外的 Hub 集成能力。你可以通过在你的 ~/.codex/config.toml 文件中添加以下内容,将 HF Mirror MCP 服务器添加到你的 Codex 配置中:
[mcp_servers.huggingface]
command = "npx"
args = ["-y", "mcp-remote", "https://hf-mirror.com/mcp?login"]
在设置页面中配置 HF Mirror MCP 服务器以使用相关的 MCP 服务器,如 Jobs。
然后启动 Codex,你将被引导到 HF Mirror MCP 认证页面。
你的第一个 AI 实验
让我们走完一个完整的示例。我们将使用 open-r1/codeforces-cots 数据集和 openai_humaneval 基准,微调一个小模型以提升代码求解能力。
open-r1/codeforces-cots数据集是一个 codeforces 问题和解答的数据集。它是一个很好的数据集,可用于指令微调模型以解决困难的编码问题。
指示 Codex 进行端到端微调实验
在你的项目目录中启动 Codex。然后给它一个简单而清晰的指示:
Start a new fine-tuning experiment to improve code solving abilities on using SFT.
- Maintain a report for the experiment.
- Evaluate models with the openai_humaneval benchmark
- Use the open-r1/codeforces-cots dataset
你会注意到,我们比 Claude Code 教程中的单一提示方法走得更远了一些。我们在指示中添加了更多细节,但也在实验中添加了更多步骤。
何不自己尝试在这个实验上迭代,提出更开放的问题,比如“什么模型最适合代码求解能力?”或“什么数据集最适合代码求解能力?”
Codex 分析你的请求并准备训练配置。对于演示数据集上的 0.6B 模型,它选择了 t4-small——对于这个模型规模来说 GPU 足够,并且是可用选项中最便宜的。Codex 将在 training_reports/<model>-<dataset>-<method>.md 处开始一份新报告,它看起来像下面的示例。随着实验的推进,Codex 将用最新信息和每次运行报告更新该报告。
示例训练报告
# Base Model & Dataset
[Base Model](https://hf-mirror.com/Qwen/Qwen3-0.6B)
[Dataset](https://hf-mirror.com/datasets/open-r1/codeforces-cots)
---
# `sft-a10g` - `TBD` - `In Progress`
## Training Parameters
| Parameter | Value |
|-----------|-------|
| Method | SFT (TRL) |
| Model | `Qwen/Qwen3-0.6B` |
| Dataset | `open-r1/codeforces-cots` (train, 5% eval split) |
| Max Length | 2048 |
| Epochs | 1 (extend to 3 after first check) |
| Per-Device Batch Size | 1 |
| Grad Accum Steps | 8 |
| Effective Batch | 8 |
| Learning Rate | 5e-5 |
| Weight Decay | 0.01 |
| Warmup Ratio | 0.03 |
| Eval Strategy | steps (500) |
| Save Strategy | steps (500), `hub_strategy=every_save`, limit=2 |
| Precision | bf16 |
| Gradient Checkpointing | true |
| Packing | false |
| Hub Model | `burtenshaw/qwen3-codeforces-cots-sft` |
| Hardware | a10g-small |
| Timeout | 2h |
| Trackio | project `qwen3-codeforces-cots`, run `sft-a10g` |
## Run Status
In Progress (queued to submit)
## Run Logs
Pending submission (job link will be added)
## Trackio Logs
Pending (will link after job starts)
## Run Evaluations
Pending (lighteval `openai_humaneval` for base + checkpoints)
---
# Experiment Evaluations
| Run Title | Benchmark | Score | Evaluation Job Link | Model Link |
|-----------|-----------|-------|---------------------|------------|
| `sft-a10g` - `TBD` - `In Progress` | HumanEval pass@1 | TBD | TBD | [burtenshaw/qwen3-codeforces-cots-sft](https://hf-mirror.com/burtenshaw/qwen3-codeforces-cots-sft)
更新训练报告
随着实验的推进,Codex 将用最新信息和每次运行报告更新该报告。你可以在 training_reports/<model>-<dataset>-<method>.md 文件中查看该报告。
例如,当实验进行中时,Codex 会将报告的标题更新为 sft-a10g - TBD - In Progress。
# `base-humaneval-a10g` - `2025-12-09 13:47:47 UTC` - `In Progress`
它可以链接到运行日志和 trackio 日志。
## Run Logs
[Run Logs](https://hf-mirror.com/jobs/burtenshaw/6938272ec67c9f186cfe1ae3)
## Trackio Logs
[Trackio Logs](https://burtenshaw-trackio.hf.space/?project=qwen3-codeforces-sft&metrics=train/loss&runs=sft-qwen3-codeforces-20251209-175806&sidebar=hidden&navbar=hidden)
并且它会在一个合并表格中更新评估结果。
# Experiment Evaluations
| Run Title | Benchmark | Score | Evaluation Job Link | Model Link |
|-----------|-----------|-------|---------------------|------------|
| `base-humaneval-a10g` - `2025-12-09 13:47:47 UTC` - `Completed` | HumanEval pass@1 | 0.304 | [Logs](https://hf-mirror.com/jobs/burtenshaw/69382863c67c9f186cfe1ae7) | [Qwen/Qwen3-0.6B](https://hf-mirror.com/Qwen/Qwen3-0.6B) |
| `qwen3-0.6b-lora-v1` - `2025-12-09 13:47:47 UTC` - `In Progress` | HumanEval pass@1 | TBD | TBD | [burtenshaw/qwen3-codeforces-cots-sft](https://hf-mirror.com/burtenshaw/qwen3-codeforces-cots-sft)
数据集验证
数据集格式和处理是训练失败最常见的来源,通常会在训练脚本中完成大量工作。Codex 可以在任务开始前验证数据集,要么为 TRL 定义配置,要么单独处理数据集。
在大多数情况下,Codex 会在训练前验证数据集,但你始终可以在提交任务前检查数据集验证。
Check if open-r1/codeforces-cots works for SFT training.
Codex 会在 CPU 上运行快速检查(花费不到一美分)并报告:
Dataset validation for my-org/conversation-data:
SFT: ✓ READY
Found 'messages' column with conversation format
DPO: ✗ INCOMPATIBLE
Missing 'chosen' and 'rejected' columns
如果你的数据集需要转换,Codex 可以在训练前对数据集进行预处理。
Preprocess the dataset open-r1/codeforces-cots to use 'good_response' and 'bad_response' instead of 'chosen' and 'rejected'.
Codex 将预处理数据集并使用新配置更新训练脚本。
提交前检查
在 Codex 提交任何内容之前,你会看到配置:
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?
这是你调整任何内容的机会。更改输出仓库名称、选择不同的硬件,或让 Codex 修改训练参数。一旦你批准,任务就被提交了。
例如,你可以让 Codex 尝试一次测试运行:
Do a quick test run on 100 examples.
使用训练报告跟踪进度
提交后,你可以使用训练报告跟踪进度,并获取运行日志和 trackio 日志的链接。你还可以让 Codex 获取日志、总结进度并更新训练报告。当 Codex 运行任务时,它会用最新信息更新训练报告。
Codex 响应示例
─ Worked for 10m 38s ─────────────────────────────────────────────────────────────────────────────────────────────────────────
• Training and eval jobs are live. Key details:
- SFT launched on open-r1/codeforces-cots (solutions_py_decontaminated, 98/2 split) with LoRA on Qwen/Qwen3-0.6B, a10g-
large, bf16, max_steps=1000, batch=1, grad_accum=8, lr=2e-5, save/eval every 200 steps, hub push burtenshaw/qwen3-
codeforces-cots-sft. Job: https://hf-mirror.com/jobs/burtenshaw/6938272ec67c9f186cfe1ae3 (Trackio project codeforces-
cots-sft, run qwen3-0.6b-lora-v1).
- Baseline lighteval (HumanEval) on the base model queued on a10g-large. Job: https://hf-mirror.com/jobs/
- Experiment report updated with current runs and links: training_reports/qwen3-codeforces-cots-sft.md.
To evaluate the fine-tuned checkpoints once the SFT job pushes to the hub, reuse the same lighteval script:
hf jobs uv run --flavor a10g-large --timeout 1h --secrets HF_TOKEN -e MODEL_ID=burtenshaw/qwen3-codeforces-cots-sft -e
RESULTS_ORG=burtenshaw -d /tmp/lighteval_humaneval.py
(or swap MODEL_ID for a specific checkpoint path). This will log to the same results directory on the hub.
1. Monitor the two running jobs; I can fetch logs or metrics on request.
2. After a checkpoint lands, trigger the lighteval run above to compare against the baseline; then we can fill in pass@1 in the report.
Trackio 会通过运行评估任务并选择最佳检查点,为你监控训练和评估分数。如果你想了解训练任务的状态,可以要求 Codex 获取日志并将进度总结成表格。
Are models outperforming the base model?
| Model | Benchmark | Score | Evaluation Job Link | Model Link |
|-----------|-----------|-------|---------------------|------------|
| `qwen3-0.6b-lora-v1` - `2025-12-09 13:47:47 UTC` - `Completed` | HumanEval pass@1 | 0.342 | [Logs](<link to training job>) | [burtenshaw/qwen3-codeforces-cots-sft](https://hf-mirror.com/burtenshaw/qwen3-codeforces-cots-sft)
| `base-humaneval-a10g` - `2025-12-09 13:47:47 UTC` - `Completed` | HumanEval pass@1 | 0.306 | [Logs](<link to evaluation job>) | [Qwen/Qwen3-0.6B](https://hf-mirror.com/Qwen/Qwen3-0.6B)
你还可以实时监控训练损失。
Codex 获取日志并总结进度。
点击此处查看包含一些已完成运行的 Trackio 仪表板示例。
使用你的模型
训练完成后,你的模型就在 Hub 上:
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("burtenshaw/qwen3-codeforces-cots-sft")
tokenizer = AutoTokenizer.from_pretrained("burtenshaw/qwen3-codeforces-cots-sft")
Transformers 作为标准非常出色,我们可以轻松地将训练好的模型转换为 GGUF 以进行本地部署。这是因为训练技能包含将模型转换为 GGUF 的说明和支持脚本。
Convert my fine-tuned model to GGUF with Q4_K_M quantization.
Push to username/my-model-gguf.
随后 Codex 会转换为 GGUF、应用量化并推送到 Hub。如果我们训练的是 LoRA 适配器,它会将 LoRA 适配器合并到基础模型中。
然后在本地使用它:
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
硬件和成本
Codex 会根据你的模型大小选择硬件,但了解权衡取舍有助于你做出更好的决策。你可以使用硬件指南查看硬件选项和成本,但 Codex 会为你完成并选择最佳选项。
对于参数量低于 1B 的微型模型,t4-small 就很合适。这些模型训练速度很快——预计一次完整运行花费 $1-2。这非常适合教育或实验性运行。
对于小型模型(1-3B),升级到 t4-medium 或 a10g-small。训练需要几个小时,花费 $5-15。
对于中型模型(3-7B),你需要 a10g-large 或 a100-large 配合 LoRA。全量微调放不下,但 LoRA 使这些模型非常易于训练。生产环境预算为 $15-40。
对于大型模型(7B+),此 HF 技能任务目前还不适合这个规模。但请继续关注,因为我们正在努力!
下一步
我们已经展示了 Codex 可以处理模型微调的完整生命周期:验证数据、选择硬件、生成脚本、提交任务、监控进度并转换输出。
可以尝试的一些事情:
- 在你自己的数据集上微调模型
- 尝试更多模型和数据集的大型实验,让 agent 为你创建报告。
- 在数学或代码上使用 GRPO 训练推理模型,让 agent 为你创建报告。
该扩展是开源的。你可以扩展它、针对你的工作流进行自定义,或将其用作其他训练场景的起点。
资源
Codex
- Codex 文档 — OpenAI 的 AI 编码 agent
- Codex 快速入门 — 开始使用 Codex
- Codex AGENTS 指南 — 使用 AGENTS.md 文件
HF 镜像技能
来源:Hugging Face Blog · hf-mirror.com
