原文出处:Training with Hugging Face Jobs 原作者:Hugging Face · 许可证:Apache-2.0 License 中文译本由诸葛AI学院整理,仅供学习参考,版权归原作者与 Hugging Face 所有。
用 Hugging Face Jobs 在云端训练
Hugging Face Jobs 提供全托管的云端基础设施,让你不用在本地折腾 GPU、管理依赖、配置环境,就能训练模型。对有资源消耗大、耗时长特点的 SFT(Supervised Fine-Tuning,监督微调)训练来说,这一点特别有价值。
为什么用 Jobs 跑 SFT 训练
- 可扩展的基础设施:直接用高端 GPU(A100、L4 等),不用自己买硬件
- 零配置:不用管 CUDA 驱动、Docker 容器、环境配置
- 成本可控:按实际使用的计算时间付费,任务跑完自动关机
- 工作流打通:与 Hugging Face Hub 无缝集成,模型的存储和分享都在 Hub 上
- 有监控:Hub 界面自带日志和进度跟踪
前置要求
要用 Hugging Face Jobs,你需要:
- Pro、Team 或 Enterprise 档的 Hugging Face 订阅,套餐在这里办理
- 通过 hf auth login 完成身份认证
用 Jobs 跑 SFT:两种方式
在 HF Jobs 上跑 TRL 的最佳方式是使用内置脚本。这些脚本用 uv 管理依赖,用 hf jobs 提交训练任务。
本指南带你用 TRL 的内置脚本,在 Hugging Face Jobs 上训练模型。如果你想用自己的脚本,可以在脚本里声明 uv 依赖,然后用 hf jobs run 执行。
用内联依赖写一个自定义训练脚本
```python # sft_training.py # /// script # dependencies = [ # "trl[sft]>=0.7.0", # "transformers>=4.36.0", # "datasets>=2.14.0", # "accelerate>=0.24.0", # "peft>=0.7.0" # ] # /// from trl import SFTTrainer, SFTConfig from transformers import AutoModelForCausalLM, AutoTokenizer from datasets import load_dataset # 加载模型和分词器 model = AutoModelForCausalLM.from_pretrained("HuggingFaceTB/SmolLM3-3B-Base") tokenizer = AutoTokenizer.from_pretrained("HuggingFaceTB/SmolLM3-3B-Base") # 加载数据集 dataset = load_dataset("HuggingFaceTB/smoltalk2", "SFT") # 配置训练 config = SFTConfig( output_dir="./smollm3-jobs-sft", per_device_train_batch_size=4, learning_rate=5e-5, max_steps=1000, logging_steps=50, save_steps=200, push_to_hub=True, hub_model_id="your-username/smollm3-jobs-sft" ) # 训练 trainer = SFTTrainer( model=model, train_dataset=dataset["smoltalk_everyday_convs_reasoning_Qwen3_32B_think"], args=config, ) trainer.train() ``` 然后用 Jobs 命令行工具(CLI)运行: ```bash # 在 Jobs 上运行这个 UV 脚本 hf jobs uv run \ --flavor a10g-large \ --timeout 2h \ --secrets HF_TOKEN \ sft_training.py ```给 SFT 选硬件
按模型大小和训练需求挑合适的硬件档位(flavor):
SmolLM3-3B(推荐配置):
- a10g-large:24GB 显存,多数 SFT 任务下性价比高
- a100-large:40GB 显存,训练最快,能开更大的批量(batch size)
- l4x1:24GB 显存,多 GPU 配置,可做分布式训练
更大的模型(7B 以上):
- a100-large:7B 以上的模型必须用它
- l4x4:多 GPU 配置,用于分布式训练
预算优先:
- t4-small:16GB 显存,速度慢,但做实验省钱
- l4x1:24GB 显存,成本和性能比较均衡
[!TIP] 想详细对比各硬件档位,可以查看价格页面。
Jobs 进阶配置
```bash
直接用 TRL 官方维护的 SFT 脚本
hf jobs uv run \ --flavor a10g-large \ --timeout 2h \ --secrets HF_TOKEN \ "https://raw.githubusercontent.com/huggingface/trl/main/trl/scripts/sft.py" \ --model_name_or_path HuggingFaceTB/SmolLM3-3B-Base \ --dataset_name HuggingFaceTB/smoltalk2_everyday_convs_think \ --learning_rate 5e-5 \ --per_device_train_batch_size 4 \ --max_steps 1000 \ --output_dir smollm3-sft-jobs \ --push_to_hub \ --hub_model_id your-username/smollm3-sft \ --report_to trackio ```
环境变量与密钥(secrets):
用自己写的脚本时,可以用 --secrets 参数传入环境变量。
bash
hf jobs uv run \
--flavor a10g-large \
--timeout 3h \
--secrets HF_TOKEN=your_token \
--secrets WANDB_API_KEY=your_wandb_key \
--env WANDB_PROJECT=smollm3-sft \
--env CUDA_VISIBLE_DEVICES=0 \
my_sft_training.py
监控训练任务
查看训练任务有两种途径:用 hf jobs 命令,或者到 Hub 上的 Job Settings 页面。
查看任务状态:
```bash
列出所有任务
hf jobs ps -a
查看任务详细信息
hf jobs inspect
实时跟踪任务日志
hf jobs logs
需要时取消正在运行的任务
hf jobs cancel
在 Jobs 上用 LoRA/PEFT(可选)
用 TRL 官方维护的 SFT 脚本时,传入 PEFT 相关参数就能启用 LoRA。参数名和默认值以脚本为准:https://github.com/huggingface/trl/blob/main/trl/scripts/sft.py。
bash
hf jobs uv run \
--flavor a10g-large \
--timeout 2h \
--secrets HF_TOKEN \
"https://raw.githubusercontent.com/huggingface/trl/main/trl/scripts/sft.py" \
--model_name_or_path HuggingFaceTB/SmolLM3-3B-Base \
--dataset_name HuggingFaceTB/smoltalk2_everyday_convs_think \
--output_dir smollm3-lora-sft-jobs \
--per_device_train_batch_size 4 \
--learning_rate 5e-5 \
--max_steps 1000 \
--report_to trackio \
--push_to_hub \
--hub_model_id your-username/smollm3-lora-sft \
--use_peft \
--lora_r 8 \
--lora_alpha 16 \
--lora_dropout 0.05 \
--lora_target_modules all-linear
注意:
- 运行前先对照 TRL 的 SFT 脚本确认参数名:https://github.com/huggingface/trl/blob/main/trl/scripts/sft.py。
- LoRA 训练出来的是小适配器,可以单独保留,也可以之后合并进基座模型再部署。
用 Trackio 监控
你可以用 Trackio 监控训练任务。
(原文此处有一张 Trackio 监控界面的截图,本译文纯文字,从略。)
成本估算
SmolLM3-3B 做 SFT 训练(1000 步)的大致费用: - l4x1:约 $3-4/小时(24GB 显存) - a10g-large:约 $4-6/小时(24GB 显存) - a100-large:约 $8-12/小时(40GB 显存)
1000 步训练通常要 30-90 分钟,具体取决于硬件和配置。和租本地 GPU 或用其他云实例相比,Jobs 的费用更划算。
省钱建议:
- 用小批量加梯度累积(gradient accumulation),把任务塞进更便宜的 GPU
- 先跑短训练(500 步)验证配置没问题
- 初步实验用 l4x1,正式训练再换更快的 GPU
- 设好超时时间,避免意外产生费用
常见问题排查
显存不足(Out of Memory):
- 调小 per_device_train_batch_size
- 开启梯度检查点(gradient checkpointing)
- 用更小的 max_length
超时问题: - 加大 timeout 参数 - 减少训练步数,或换更强的硬件 - 优化数据加载和预处理
认证错误: - 确认 HF_TOKEN 已正确设置为 secret - 核对 Hugging Face 账号的订阅档次是否满足要求 - 检查令牌(token)有没有模型上传权限
参考资料
- Hugging Face Jobs 文档 - Jobs 完整指南
- TRL Jobs 训练指南 - TRL 在 Jobs 上的示例
- Jobs 价格 - 各硬件档位的最新报价
- Jobs CLI 参考 - 命令行工具说明