跳到主要内容
AI News HubLIVE
站内改写2 分钟阅读

将你的 GitHub CI 迁移到 Hugging Face Jobs

文章摘要

本文详细介绍了如何将 GitHub Actions CI 迁移到 Hugging Face Jobs,以解决 GitHub 托管的 runner 速度慢、无 GPU 等问题。通过创建调度器 Space、GitHub App 以及修改 runs-on 标签,即可让 CI 作业在 Hugging Face 基础设施上运行,支持 CPU 和 GPU 硬件,并实时流式传输日志。Trackio 的实践表明,CPU 任务时间可缩短约 30%。

将你的 GitHub CI 迁移到 Hugging Face Jobs
报告错误

纠错通道尚未开通,可先复制下方文章信息留存。

查看更正说明
直接读正文

许多开源项目默认使用 GitHub Actions 的托管 runner 进行持续集成(CI),这种方式简单但存在局限:运行速度受限于通用机器,且 GPU 资源难以获取。对于像 Trackio 这样需要同时进行常规 CPU 测试和 CUDA 硬件的 GPU 测试的项目,这些限制尤为突出。

Hugging Face Jobs 提供了一种灵活的替代方案:它允许用户在 Hugging Face 的无服务器基础设施上运行命令或脚本,并支持从 CPU 到 H200 GPU 等多种硬件配置。通过一个轻量级的桥接工具 huggingface/jobs-actions,可以将 GitHub Actions 作业无缝迁移到 HF Jobs 上执行。

架构与工作流程

迁移的核心架构包括一个调度器 Space(dispatcher Space)和一个 GitHub App。当 PR 触发 GitHub Actions 工作流时,如果作业的 runs-on 标签匹配 hf-jobs-* 模式(如 hf-jobs-cpu-upgrade 或 hf-jobs-t4-small),GitHub 会发送 workflow_job.queued webhook 到调度器 Space。调度器验证 webhook 后,生成一个临时的 GitHub runner 注册令牌,并启动一个对应硬件的 HF Job。HF Job 启动一个短暂的 GitHub Actions runner,注册到仓库,然后执行 CI 作业,最后退出。从 GitHub 的角度看,这只是一个自托管 runner。

迁移步骤

步骤 1:复制调度器 Space

首先,从 huggingface/jobs-actions-dispatcher 复制一个 Space 到自己的命名空间下。建议使用 cpu-upgrade 硬件以避免睡眠导致的 webhook 延迟。复制后,Space 的页面会提供一个 webhook URL,形如 https://YOUR-HF-NAMESPACE-jobs-actions-dispatcher.hf.space/webhook。

步骤 2:创建并安装 GitHub App

在调度器 Space 的页面中,输入你的 GitHub 仓库(如 YOUR-GITHUB-ORG/YOUR-REPO),点击创建 GitHub App。按照生成的说明,使用 hf CLI 上传 App 凭据,并设置 HF_TOKEN secret(用于启动 Job 的 HF 令牌)。最后,在 GitHub 上安装该 App 到你的仓库。

步骤 3:最终调度器设置

默认情况下,HF Job 会在与调度器 Space 相同的命名空间下计费。如需更改,可设置 HF_NAMESPACE Space 变量。

步骤 4:修改 runs-on 标签

只需在 GitHub Actions workflow 中将 runs-on: ubuntu-latest 替换为 runs-on: hf-jobs-cpu-upgrade 或 GPU 标签(如 hf-jobs-t4-small),即可将作业切换到 HF Jobs 上运行。

步骤 5:测试与日志

可以添加一个简单的测试 workflow 来验证。HF Jobs 支持在作业完成后保持容器运行最多 2 小时,便于下载日志和工件。日志会同时写入 HF Job 日志和 GitHub Actions 日志,方便调试。此外,HF Jobs 还支持挂载卷,可快速加载 Hugging Face 上的数据集或模型。

实际效果

通过迁移,Trackio 的 CPU 作业时间缩短了约 30%,并新增了 GPU 测试套件。整个设置仅需少量配置,就能充分利用 Hugging Face 的基础设施,为 CI 带来更快的速度和更灵活的硬件选择。

展开要点与分析

文章情报

工程师进阶

要点

  • GitHub Actions 默认运行在通用机器上,速度慢且不支持 GPU。
  • 使用 Hugging Face Jobs 作为 CI runner,可灵活选择硬件(如 CPU、T4、H200)。
  • 架构:通过 GitHub App webhook 触发调度器 Space,启动 HF Job 并注册为临时自托管 runner。
  • 迁移只需修改 workflow 中的 runs-on 标签为 hf-jobs-cpu-upgrade 或 hf-jobs-t4-small 等。

要点与分析由自动化流程生成,可能有误,请结合原始来源核实。