☰
train-sentence-transformers - hf_jobs_execution
2026/10/1 9:39:48 网站建设 项目流程

Hugging Face Jobs 执行

在 Hugging Face 托管的 GPU 上运行训练,无需配置任何本地基础设施。同一个训练脚本可以在本地和 Jobs 上运行——本参考只涵盖 Jobs 特有的问题。

前提条件

  • 具有Pro、Team 或 Enterprise计划的 Hugging Face 账户。Jobs 是付费的。
  • 具有写入权限的HF_TOKEN。本地用hf auth login登录一次(来自hfCLI 的现代命令;较旧的huggingface-cli login仍然可用但已弃用)。
  • 可访问hf_jobs()MCP 工具,或hfCLI。如果从托管脚本安装 CLI,请将其下载到临时文件、检查后本地运行。

三种提交方式

1. 通过 MCP 内联脚本(在 Claude Code 中推荐)

将完整训练脚本作为script传入。依赖来自 PEP 723 头部。

hf_jobs("uv",{"script":""" # /// script # requires-python = ">=3.10" # dependencies = ["sentence-transformers[train]>=5.0", "trackio"] # /// # <full training script content> ""","flavor":"a10g-large","timeout":"3h","secrets":{"HF_TOKEN":"$HF_TOKEN"},})

2. 通过 MCP 从 URL 获取脚本

将脚本上传到 Hub(作为模型或数据集仓库文件)或 Gist,然后通过 URL 引用:

hf_jobs("uv",{"script":"https://huggingface.co/USERNAME/scripts/resolve/main/train_bi_encoder.py","flavor":"a10g-large","timeout":"3h","secrets":{"HF_TOKEN":"$HF_TOKEN"},})

本地文件路径(./train.py、/path/to/train.py)不工作——Jobs 在隔离容器中运行,无法访问你的文件系统。

3. CLI

hfjobsuv run\--flavora10g-large\--timeout3h\--secretsHF_TOKEN\"https://huggingface.co/USERNAME/scripts/resolve/main/train.py"

语法陷阱:

  • 命令顺序是hf jobs uv run,不是hf jobs run uv。
  • 标志(--flavor、--timeout、--secrets)在脚本 URL之前。
  • 是--secrets(复数),不是--secret。

Jobs 需要的脚本修改

将这些添加到你的TrainingArguments:

args=SentenceTransformerTrainingArguments(...,push_to_hub=True,hub_model_id="your-username/my-model",hub_strategy="every_save",# 推送每个检查点;超时安全save_strategy="steps",save_steps=0.1,# 每个 epoch 10 次保存/推送;随数据集大小扩展)

每一项为何重要:

参数原因
push_to_hub=True作业完成后 Jobs 容器会被销毁。没有 Hub 推送,所有权重都会丢失。
hub_model_id识别目标仓库所必需。
hub_strategy="every_save"默认值,但在 Jobs 上值得明确设置:每个检查点在写入时即被推送,因此超时会把所有已完成的检查点留在 Hub 上。"end"只在trainer.train()返回后推送一次,所以超时会丢失一切。
save_strategy="steps"+save_steps=0.1检查点必须实际保存,hub_strategy="every_save"才能推送它们。小数0.1= 每训练 10% 保存一次,随数据集大小自动扩展。

机密

机密是注入 Jobs 容器的环境变量。它们永远不会出现在日志中,也不是脚本的一部分。

机密何时需要
HF_TOKEN总是需要,用于 Hub 推送。也覆盖 Trackio 认证。
WANDB_API_KEY使用report_to="wandb"时。
MLFLOW_TRACKING_URI、MLFLOW_TRACKING_TOKEN将 MLflow 与远程服务器一起使用时。

作业配置中的$HF_TOKEN语法在提交时引用本地环境中的值——字面字符串$HF_TOKEN会被替换为你的令牌值。绝不要在脚本本身中硬编码令牌。

Trackio(本技能中的默认 tracker)使用HF_TOKEN进行认证,所以不需要额外的机密。只有在你使用这些 tracker 时,才切换到上面的 W&B / MLflow 行。

超时

默认是30 分钟,对几乎任何真实训练来说都太短了。显式设置:

"timeout":"2h"# 2 小时"timeout":"90m"# 90 分钟"timeout":"1.5h"# 90 分钟"timeout":7200# 秒,作为整数

规则:估计训练时间 × 1.3。额外的缓冲覆盖模型加载、数据集缓存、检查点保存和 Hub 推送。

超时时,容器会立即被杀掉。只有 Hub 上的数据(hub_strategy="every_save"在这里救你)或持久卷中的数据能存活。

数据集缓存

Hugging Face 数据集默认缓存在~/.cache/huggingface/datasets——在容器内部,而容器在作业结束后会被销毁。每次 Jobs 运行都会重新下载数据集。

对于大数据集(>5 GB),这很重要。选项:

  • 持久/data卷(Jobs 功能,查看当前文档):设置HF_DATASETS_CACHE=/data/datasets,使缓存跨作业持久化。
  • 本地预缓存,推送到 Hub:如果数据集已在 Hub 上,无需操作。如果仅本地,dataset.push_to_hub(...)一次,这样后续作业从 Hub 加载。

监控正在运行的作业

hfjobsps[--all]# 运行中(或所有)作业hfjobsinspect<job-id># 完整配置 + 状态hfjobslogs<job-id>[--follow|--tail N]# 尾随或流式查看日志hfjobscancel<job-id>hfjobshardware# 列出类型 + 小时费率

在Bash run_in_background下的hf jobs logs <id> --follow与监控你训练脚本 verdict 块发出的VERDICT:行的Monitor配合得很好。

MCP 等价物(签名可能因服务器版本而异——检查实际的工具列表):hf_jobs("ps")、hf_jobs("logs", {"job_id": ...})、hf_jobs("cancel", {"job_id": ...})。

对于定期运行,hf jobs scheduled uv run "<cron>" <script> ...进行调度;hf jobs scheduled ps/suspend/delete进行管理。

常见失败

看起来成功的运行后"Hub 上找不到模型"

运行成功了,但没有启用push_to_hub。容器已经没了;权重也没了。

修复:始终设置push_to_hub=True+hub_model_id=...+secrets={"HF_TOKEN": "$HF_TOKEN"}。

tracker 无法连接

  • Trackio:HF_TOKEN缺失或缺少写入权限。添加"secrets": {"HF_TOKEN": "$HF_TOKEN"}并确保令牌有写入权限。
  • W&B:WANDB_API_KEY缺失。添加"secrets": {"HF_TOKEN": "$HF_TOKEN", "WANDB_API_KEY": "$WANDB_API_KEY"}。

第一步就 OOM

类型太小。提升一档(参见hardware_guide.md)。

训练开始但评估永远挂起

eval_strategy="steps"但没有eval_dataset。始终提供评估数据集,或设置eval_strategy="no"。

数据集下载超时

大数据集或冷缓存缓慢。增加timeout或预缓存到持久卷。

CachedMultipleNegativesRankingLoss+gradient_checkpointing=True崩溃

缓存损失与梯度检查点不兼容。禁用gradient_checkpointing。

提交后,MCP 返回一个作业 ID。需要更新时用hf_jobs("logs", {"job_id": ...})监控——不要在紧凑循环中轮询。端到端提交模板位于scripts/train_sentence_transformer_example.py/scripts/train_cross_encoder_example.py/scripts/train_sparse_encoder_example.py;将脚本内容包装在 §1 中的内联模式中。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询