對於許多開發者來說,GitHub Actions 是 CI(持續整合)的首選,因為只要設定 runs-on: ubuntu-latest 就能快速啟動。但對於機器學習(ML)或需要特定硬體環境的專案,GitHub 預設的託管執行器(Hosted Runners)有三大痛點:首先是通用型機器效能有限且有時不穩定;其次是缺乏 GPU 資源(開源專案幾乎無法直接使用);最後是環境配置僵硬,每次都要花時間安裝依賴。
為了克服這些限制,Hugging Face 推出了 HF Jobs,讓開發者能將 GitHub Actions 的執行端遷移到 Hugging Face 的伺服器端基礎設施上。
什麼是 Hugging Face Jobs
HF Jobs 是一種 Serverless 的運算服務,允許你指定一個 Docker 映像檔、選擇硬體規格(例如 CPU、T4 或 H200 GPU),並執行特定的指令。
對工程師來說,這就像是一個可以隨開隨用、用完即毀的容器執行環境。將其與 CI 結合的意義在於:你可以為不同的測試階段選擇最合適的硬體,例如單元測試用 CPU,模型驗證則直接調用 GPU,而不需要自己維護一台 24 小時開機的 Self-hosted Runner 伺服器。
技術架構:如何讓 GitHub Actions 驅動 HF Jobs
要實現這個流程,核心在於建立一個中繼橋接器(Dispatcher),將 GitHub 的事件轉化為 HF Jobs 的啟動指令。
完整流程如下: 當 Pull Request 觸發工作流時,GitHub 發現 runs-on 標籤(例如 hf-jobs-t4-small)目前沒有可用的執行器,會將工作進入排隊狀態。 GitHub 透過 Webhook 通知 Dispatcher(一個部署在 HF Space 上的小型服務)。 Dispatcher 驗證身分後,向 Hugging Face 請求啟動一個對應硬體規格的 HF Job。 該 HF Job 啟動後,會在容器內執行一個臨時的 GitHub Action Runner,並使用一次性 Token 向 GitHub 註冊。 GitHub 將排隊中的工作指派給這個臨時 Runner,執行完畢後,Runner 自動退出,容器隨之銷毀。
實作步驟指南
第一步:部署 Dispatcher Space 你需要先複製(Duplicate)huggingface/jobs-actions-dispatcher 這個 Space 到你的帳號下。建議硬體選擇 cpu-upgrade,以確保 Dispatcher 能快速回應 GitHub 的 Webhook 而不會因為進入睡眠模式而導致 CI 逾時。部署完成後,你會得到一個 Webhook URL。
第二步:設定 GitHub App 在 Dispatcher Space 的介面中,輸入你的 GitHub 儲存庫路徑並建立 GitHub App。這個 App 擁有監聽工作流排隊事件以及產生臨時 Runner 註冊 Token 的權限。接著,將產生的憑證與 HF Token(具有啟動 Job 權限的 Token)設定為 Space 的 Secrets。
第三步:修改工作流配置 這是最簡單的一步。你只需要將 .github/workflows 檔案中的 runs-on 標籤從 ubuntu-latest 修改為 Dispatcher 支援的標籤,例如: CPU 環境:runs-on: hf-jobs-cpu-upgrade GPU 環境:runs-on: hf-jobs-t4-small
優化建議:選擇正確的 Docker 映像檔
很多工程師習慣使用基礎的 ubuntu:22.04 映像檔,然後在 CI 步驟中執行 apt-get install。這會導致每次執行都要花數分鐘安裝工具,極大降低效率。
建議直接使用預裝好工具的映像檔。例如,如果你的專案需要 Playwright 進行 UI 測試,可以直接指定 mcr.microsoft.com/playwright;如果需要 CUDA 環境,則使用 nvidia/cuda 官方映像檔。這樣可以大幅縮短 Runner 的啟動與準備時間。
實測成效與影響
以 Trackio 專案的遷移結果來看,效益非常顯著:
執行時間縮減:透過使用預裝環境的 Docker 映像檔,CPU 任務的執行時間縮短了約 30%(從 1 分 40 秒降至 1 分 10 秒)。 解鎖 GPU 測試:原本無法在 GitHub Hosted Runner 執行的 GPU 測試,現在能在 T4 GPU 上於 45 秒內完成,且成本極低(每次運行不到 1 美分)。 日誌管理:除了 GitHub 介面,還可以使用 HF CLI 直接抓取日誌(hf jobs logs),方便工程師在本地端或使用 AI Agent 快速分析錯誤。
總結
將 GitHub CI 遷移至 HF Jobs,本質上是將 GitHub 當作控制平面(Control Plane),而將 Hugging Face 當作計算平面(Compute Plane)。這對於需要自定義 Docker 環境、追求啟動速度,以及必須依賴 GPU 進行驗證的 ML 專案來說,是一個低成本且高彈性的解決方案。
來源:huggingface.co
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。