Codex 正在推动开源 AI 模型的训练与发布
<p></p><p>继我们使用 Claude Code 训练开源模型的项目之后,现在我们更进一步,将 Codex 引入这一流程。这里的重点不是“Codex 自己开源模型”,而是让 Codex 作为编码代理,参与并自动化开源模型的训练、评估与发布全流程。为此,我们为 Codex 接入了 Hugging Face Skills 仓库,该仓库包含了许多与机器学习和 AI 相关的“技能”,比如模型训练与评估等任务。通过 HF Skills,Codex 这样的编码代理可以实现:</p>
<ul>
<li>对语言模型进行微调和强化学习(RL)对齐训练</li>
<li>查看、解释并基于 Trackio 的实时训练指标做出操作</li>
<li>评估模型检查点并根据评估结果作出决策</li>
<li>生成实验报告</li>
<li>将模型导出为 GGUF 格式,方便本地部署</li>
<li>将模型发布到 Hugging Face Hub</li>
</ul>
<p>本教程将更深入地介绍它的工作原理,并手把手教你如何使用。我们开始吧!</p>
<blockquote>
<p>Codex 使用 <code>AGENTS.md</code> 文件来完成特定任务,而 Claude Code 使用的是 “Skills”。幸运的是,“HF Skills” 兼容这两种方式,并可与 Claude Code、Codex 或 Gemini CLI 等主要编码代理配合使用。</p>
</blockquote>
<p>例如,使用 <code>HF Skills</code>,你可以对 Codex 下达如下指令:</p>
Fine-tune Qwen3-0.6B on the dataset open-r1/codeforces-cots
<p>Codex 将自动执行以下步骤:</p>
<ol>
<li>验证数据集格式</li>
<li>选择合适的硬件(比如 0.6B 模型使用 t4-small)</li>
<li>使用并更新带有 Trackio 监控的训练脚本</li>
<li>将任务提交到 Hugging Face Jobs</li>
<li>返回任务 ID 和预估费用</li>
<li>根据请求查看训练进度</li>
<li>如遇问题,协助你进行调试</li>
</ol>
<p>模型会在 Hugging Face 提供的 GPU 上训练,你可以同时做其他事情。训练完成后,你的微调模型将自动发布到 Hub,可立即使用。</p>
<p>这不仅仅是一个演示工具。这套扩展系统支持生产级的训练方法,有监督微调(SFT)、直接偏好优化(DPO)和带有可验证奖励的强化学习(RL)。你可以训练 0.5B 到 7B 参数规模的模型,将它们转换为 GGUF 格式便于本地运行,还可以通过多阶段流程结合不同方法。</p>
<h2 id="目标端到端的机器学习实验">目标:端到端的机器学习实验</h2>
<p>我们在 Claude Code 教程中探索过单条指令的方式。而现在,我们可以让 OpenAI Codex 实现完整的端到端机器学习实验。Codex 能够:</p>
<ul>
<li>实时监控进度</li>
<li>评估模型效果</li>
<li>维护最新训练报告</li>
</ul>
<p>工程师可以将实验任务交由 Codex 自动执行,而自己只需查看最终报告即可。同时,Codex 还能根据训练与评估结果自动做出更多决策。</p>
<p>我们开始动手吧!</p>
<h2 id="环境准备与安装">环境准备与安装</h2>
<p>在开始之前,你需要:</p>
<ul>
<li>一个 Hugging Face 账户,并开通 Pro 或 Team / Enterprise 付费计划(Jobs 需付费)</li>
<li>一个拥有写权限的 token(在 huggingface.co/settings/tokens 生成)</li>
<li>安装并配置好 Codex</li>
</ul>
<h3 id="安装-codex">安装 Codex</h3>
<p>Codex 是 OpenAI 推出的 AI 编码代理,包含在 ChatGPT Plus、Pro、Business、Edu 和 Enterprise 等计划中。它可以将 AI 能力直接融入你的开发流程。</p>
<p>参见 Codex 官方文档 获取安装与配置说明。</p>
<h3 id="安装-hugging-face-skills">安装 Hugging Face Skills</h3>
<p>Hugging Face Skills 仓库中包含 <code>AGENTS.md</code> 文件,Codex 会自动识别并使用它。</p>
<p>克隆仓库:</p>
git clone https://github.com/huggingface/skills.git
cd skills
<p>Codex 会自动检测到 <code>AGENTS.md</code> 文件,并加载相应的技能。你可以通过以下指令确认技能已加载:</p>
codex --ask-for-approval never "Summarize the current instructions."
<p>详细信息请参考 Codex AGENTS 指南。</p>
<h3 id="连接-hugging-face">连接 Hugging Face</h3>
<p>使用以下命令并输入写权限 token 来进行认证:</p>
hf auth login
<p>Codex 支持 MCP(模型上下文协议),你可以在配置文件中添加 Hugging Face 的 MCP 服务,提升与 Hub 的集成体验。将以下内容添加到 <code>~/.codex/config.toml</code>:</p>
command = "npx"
args = ["-y", "mcp-remote", "https://huggingface.co/mcp?login"]
<p>你也可以在 Settings 页面 中配置 MCP 服务。</p>
<p>之后启动 Codex,会跳转到 Hugging Face MCP 的认证页面。</p>
<h2 id="你的第一个-ai-实验">你的第一个 AI 实验</h2>
<p>我们来看一个完整示例。使用 open-r1/codeforces-cots 数据集,配合 openai_humaneval 基准测试,微调一个小模型来提升其代码解题能力。</p>
<blockquote>
<p><code>open-r1/codeforces-cots</code> 是一个包含 Codeforces 编程题及其解答的数据集,非常适合用于模型的指令微调,帮助模型解决复杂编程问题。</p>
</blockquote>
<h3 id="向-codex-发起完整的微调实验请求">向 Codex 发起完整的微调实验请求</h3>
<p>在你的项目目录下启动 Codex,并输入如下指令:</p>
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
<blockquote>
<p>相比 Claude Code 教程中的单条指令方式,这里我们加了更多细节和步骤。</p>
<p>你也可以尝试自己不断迭代这个实验,提出一些更开放性的问题,比如:“哪个模型最擅长代码解题?”或“哪个数据集最适合训练代码解题能力?”</p>
</blockquote>
<p>Codex 会分析你的请求,并生成对应的训练配置。例如,对于一个 0.6B 参数规模的模型和一个演示数据集,它会选择 <code>t4-small</code>,这是适合该模型大小的最低成本 GPU 选项。Codex 会在 <code>training_reports/<model>-<dataset>-<method>.md</code> 路径下创建一份新的实验报告,并在实验过程中持续更新每次运行的相关信息。</p>
<h3 id="训练报告示例">训练报告示例</h3>
# 基础模型与数据集
(https://huggingface.co/Qwen/Qwen3-0.6B)
(https://huggingface.co/datasets/open-r1/codeforces-cots)
---
# `sft-a10g` - `TBD` - `进行中`
## 训练参数
| 参数 | 值 |
|-----------|-------|
| 方法 | SFT(TRL)|
| 模型 | `Qwen/Qwen3-0.6B` |
| 数据集 | `open-r1/codeforces-cots`(训练集,5% 验证划分)|
| 最大长度 | 2048 |
| 训练轮数 | 1(首次检查后延长到3)|
| 每个设备的 batch 大小 | 1 |
| 梯度累积步数 | 8 |
| 有效 batch | 8 |
| 学习率 | 5e-5 |
| 权重衰减 | 0.01 |
| 预热比例 | 0.03 |
| 评估策略 | 每 500 步 |
| 保存策略 | 每 500 步,`hub_strategy=every_save`,最多保存2个 |
| 精度 | bf16 |
| 启用梯度检查点 | true |
| 是否打包样本 | false |
| Hub 模型仓库 | `burtenshaw/qwen3-codeforces-cots-sft` |
| 使用硬件 | a10g-small |
| 超时时间 | 2 小时 |
| Trackio 项目 | `qwen3-codeforces-cots`,运行名称:`sft-a10g` |
## 运行状态
进行中(等待提交)
## 运行日志
尚未提交(提交后会补充链接)
## Trackio 日志
等待中(任务开始后补充链接)
## 模型评估
等待中(将使用 lighteval 对基础模型和各检查点进行 `openai_humaneval` 评估)
---
# 实验评估结果
| 运行标题 | 基准测试 | 得分 | 评估任务链接 | 模型链接 |
|-----------|-----------|-------|---------------------|------------|
| `sft-a10g` - `TBD` - `进行中` | HumanEval pass@1 | 待定 | 待定 | (https://huggingface.co/burtenshaw/qwen3-codeforces-cots-sft)
<h3 id="训练报告实时更新">训练报告实时更新</h3>
<p>随着实验的推进,Codex 会不断将最新的信息和每次运行的结果写入报告中。你可以在 <code>training_reports/<model>-<dataset>-<method>.md</code> 文件中查看这些更新。</p>
<p>例如,当实验进行中时,Codex 会将报告标题更新为如下格式:</p>
# `sft-a10g` - `TBD` - `进行中`
<p>它还会添加运行日志和 Trackio 实时监控的链接:</p>
## Run Logs
(https://huggingface.co/jobs/burtenshaw/6938272ec67c9f186cfe1ae3)
## Trackio Logs
(https://burtenshaw-trackio.hf.space/?project=qwen3-codeforces-sft&metrics=train/loss&runs=sft-qwen3-codeforces-20251209-175806&sidebar=hidden&navbar=hidden)
<p>评估结果也会更新到实验评估表中:</p>
# 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 | (https://huggingface.co/jobs/burtenshaw/69382863c67c9f186cfe1ae7) | (https://huggingface.co/Qwen/Qwen3-0.6B) |
| `qwen3-0.6b-lora-v1` - `2025-12-09 13:47:47 UTC` - `In Progress` | HumanEval pass@1 | TBD | TBD | (https://huggingface.co/burtenshaw/qwen3-codeforces-cots-sft)
<h3 id="数据集验证">数据集验证</h3>
<p>数据集格式错误是训练失败最常见的原因之一,也常是训练脚本中工作量最大的部分之一。Codex 会在任务开始前验证数据集格式,并根据需要配置 TRL 训练参数或预处理数据。</p>
<p>通常,Codex 会在训练前验证数据集,你也可以手动让它提前检查:</p>
Check if open-r1/codeforces-cots works for SFT training.
<p>Codex 会在 CPU 上快速检查(成本非常低),并返回如下结果:</p>
Dataset validation for my-org/conversation-data:
SFT: ✓ READY
Found 'messages' column with conversation format
DPO: ✗ INCOMPATIBLE
Missing 'chosen' and 'rejected' columns
<p>如果你的数据集需要转换格式,Codex 可以在训练开始前对数据集进行预处理:</p>
Preprocess the dataset open-r1/codeforces-cots to use 'good_response' and 'bad_response' instead of 'chosen' and 'rejected'.
<p>Codex 会自动预处理数据并更新训练脚本中的配置。</p>
<h3 id="提交前确认">提交前确认</h3>
<p>在 Codex 提交训练任务前,它会向你确认配置信息:</p>
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?
<p>此时你可以修改任何内容,比如更改输出仓库名称、选择其他硬件、调整训练参数等。一旦确认无误,Codex 就会提交任务。</p>
<p>你也可以先进行小规模测试:</p>
Do a quick test run on 100 examples.
<h3 id="使用训练报告追踪进度">使用训练报告追踪进度</h3>
<p>提交任务后,你可以通过训练报告追踪进度,并获取运行日志和 Trackio 日志的链接。你也可以让 Codex 获取日志、汇总训练进展,并更新训练报告。随着 Codex 执行任务,它会持续将最新信息写入训练报告中。</p>
<details>
<summary>Codex 示例响应</summary>
─ 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://huggingface.co/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://huggingface.co/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.
</details>
<p>Trackio 会通过自动运行评估任务,帮助你监控训练和评估的得分,并选择表现最好的模型检查点(checkpoint)。如果你想了解训练任务的状态,可以让 Codex 获取日志,并以表格形式总结训练进展。</p>
<p>例如,你可以直接询问:</p>
Are models outperforming the base model?
<p>Codex 会返回类似的表格总结:</p>
| 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 | (<link>) | (https://huggingface.co/burtenshaw/qwen3-codeforces-cots-sft)
| `base-humaneval-a10g` - `2025-12-09 13:47:47 UTC` - `Completed` | HumanEval pass@1 | 0.306 | (<link>) | (https://huggingface.co/Qwen/Qwen3-0.6B)
<p>通过这种方式,你可以清楚地看到微调后的模型是否优于基础模型。</p>
<p>你也可以实时查看训练损失变化:</p>
<p></p>
<p>Codex 会自动获取日志并更新进度。</p>
<p>点击此处查看 Trackio 仪表盘示例</p>
<h3 id="使用你的模型">使用你的模型</h3>
<p>训练完成后,模型会被上传到 Hugging Face Hub:</p>
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("burtenshaw/qwen3-codeforces-cots-sft")
tokenizer = AutoTokenizer.from_pretrained("burtenshaw/qwen3-codeforces-cots-sft")
<p>Transformers 是一个非常优秀的标准工具,我们也可以轻松地将训练好的模型转换为 GGUF 格式,用于本地部署。这是因为训练技能中已经包含了将模型转换为 GGUF 的说明和支持脚本。</p>
Convert my fine-tuned model to GGUF with Q4_K_M quantization.
Push to username/my-model-gguf.
<p>Codex 会自动将模型转换为 GGUF 格式,应用指定的量化策略,并将其推送到 Hugging Face Hub。如果你使用了 LoRA 适配器进行训练,它还会将这些适配器合并回基础模型中。</p>
<p>在本地运行模型:</p>
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
<h3 id="硬件与成本">硬件与成本</h3>
<p>Codex 会根据你的模型规模自动选择合适的硬件,但了解背后的取舍逻辑,有助于你做出更明智的决策。你可以参考这个 硬件指南 来了解各种硬件的选择和成本,不过 Codex 会自动帮你选择最优配置。</p>
<ul>
<li>
<p>对于 <strong>小于 10 亿参数的微型模型</strong>,<code>t4-small</code> 是一个很好的选择。这类模型训练速度快,成本大约在 <strong>$1-2</strong>,非常适合教学或实验用途。</p>
</li>
<li>
<p>对于 <strong>小模型(1-3B 参数)</strong>,推荐使用 <code>t4-medium</code> 或 <code>a10g-small</code>。训练耗时几个小时,成本在 <strong>$5-15</strong> 左右。</p>
</li>
<li>
<p>对于 <strong>中等模型(3-7B 参数)</strong>,需要使用 <code>a10g-large</code> 或 <code>a100-large</code>,同时配合 LoRA 微调。完整微调不太可行,但借助 LoRA 技术仍然可以高效训练。生产级别训练预算约为 <strong>$15-40</strong>。</p>
</li>
<li>
<p>对于 <strong>大型模型(超过 7B)</strong>,目前 HF Skills Jobs 暂不支持。但请保持关注,我们正在开发支持大模型的能力!</p>
</li>
</ul>
<h2 id="接下来可以做什么">接下来可以做什么?</h2>
<p>我们已经展示了 Codex 如何处理模型微调的完整生命周期,验证数据、选择硬件、生成训练脚本、提交任务、监控进度,以及转换输出。</p>
<p>你可以尝试以下操作:</p>
<ul>
<li>使用你自己的数据集微调一个模型</li>
<li>进行更大规模的实验,使用多个模型和数据集,并让代理自动生成训练报告</li>
<li>使用 GRPO 方法在数学或代码任务上训练一个推理能力模型,并生成完整的实验报告</li>
</ul>
<p>这个 Codex 扩展是开源的,你可以根据自己的流程进行扩展和定制,或者将其作为其他训练场景的起点。</p>
<h2 id="资源链接">资源链接</h2>
<h3 id="codex">Codex</h3>
<ul>
<li>Codex 官方文档 ,OpenAI 的 AI 编码代理</li>
<li>Codex 快速上手</li>
<li>Codex AGENTS 指南 ,使用 AGENTS.md 文件说明</li>
</ul>
<h3 id="hugging-face-skills">Hugging Face Skills</h3>
<ul>
<li>SKILL.md ,技能文档</li>
<li>训练方法指南 ,介绍 SFT、DPO、GRPO 等方法</li>
<li>硬件指南</li>
<li>TRL 文档 ,Hugging Face 的训练库</li>
<li>HF Jobs 文档 ,云端训练任务指南</li>
<li>Trackio 文档 ,实时训练监控工具</li>
</ul>
<blockquote>
<p>英文原文: https://huggingface.co/blog/hf-skills-training-codex</p>
<p>原文作者: ben burtenshaw, shaun smith</p>
<p>译者: Luke,Hugging Face Fellow</p>
</blockquote><br>来源:程序园用户自行投稿发布,如果侵权,请联系站长删除<br>免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! 谢谢楼主提供! 前排留名,哈哈哈 过来提前占个楼 收藏一下 不知道什么时候能用到 收藏一下 不知道什么时候能用到 懂技术并乐意极积无私分享的人越来越少。珍惜 分享、互助 让互联网精神温暖你我 谢谢分享,辛苦了 感谢,下载保存了 不错,里面软件多更新就更好了 谢谢分享,试用一下 感谢分享,学习下。 谢谢楼主提供! 感谢分享 新版吗?好像是停更了吧。 不错,里面软件多更新就更好了 用心讨论,共获提升! 这个好,看起来很实用 分享、互助 让互联网精神温暖你我
页:
[1]
2