首页 / 资料库 / Hugging Face · 小模型课

资料库12 分钟读完Apache-2.0云端训练Hugging Face小模型课

用 Hugging Face Jobs 在云端训练

译自《Training with Hugging Face Jobs》 · 查看英文原文

原文出处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 --follow

需要时取消正在运行的任务

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)有没有模型上传权限

参考资料

这篇在讲什么,跟咱们的课怎么对?

资料库是大厂公开教材的中文译本,偏原理和工程做法。想看面向中小企业的白话版本,去入门课场景课