GitHub ActionsのCIをHugging Face Jobsへ移行して開発を加速!GPU活用も

GitHub Actions CIの課題をHugging Face Jobsで解決する
GitHubリポジトリでGitHub Actionsを利用している開発者の多くは、CIにGitHubが提供するホスト型ランナーを使っていることでしょう。これはワークフローを追加し、runs-on: ubuntu-latestと記述するだけでマシンが提供されるため、非常に手軽です。
しかし、この手軽さには限界もあります。GitHub Actionsは時に実行が遅くなったり、メンテナンスで利用できなかったりすることがあります。また、提供されるマシンは汎用的なものであり、特にGPUへのアクセスは多くのオープンソースプロジェクトでは簡単に利用できるものではありません。
Trackioというプロジェクトでは、これらの限界が顕在化しました。基本的なユニットテストやフロントエンドのチェックには信頼性の高いCPU CIが必要でしたが、実際のCUDAハードウェア上で実行する必要があるテストのためにはGPU CIも求めていました。そこで彼らが構築したのが、GitHub ActionsにCIの管理は任せつつ、ジョブの実行はHugging Face Jobsで行うという代替手段です。
この結果、TrackioのCIはHugging Face Jobs上で実行されるようになり、リアルタイムでログがストリーミングされるようになりました。CPUジョブのCI時間は約30%短縮され、GPUマシン上で実行される全く新しいテストスイートが実現可能になりました。
Hugging Face Jobsとは何か?
Hugging Face Jobsは、Hugging Faceのサーバーレスインフラ上で、ほぼあらゆるハードウェアフレーバーでコマンドやスクリプトを実行できるサービスです。ジョブは基本的に以下の要素で構成されます。
- 実行するコマンド
- Docker HubまたはHugging Face SpaceからのDockerイメージ
- CPUや
t4-small、h200 GPUといったハードウェアフレーバー - オプションの環境変数とシークレット
例えば、以下のようなコマンドを実行できます。
hf jobs run python:3.12 python -c "print('Hello world')"hf jobs uv run --flavor a10g-small "https://raw.githubusercontent.com/huggingface/trl/main/trl/scripts/sft.py"
このような特性から、Hugging Face JobsはCIに非常に適しています。CIジョブは元々コマンド駆動型であり、クリーンな環境で実行され、多くの場合、最適なハードウェアを選択できることでメリットを享受できます。特にMLライブラリにとっては、GPUケースが非常に魅力的です。常に稼働させるランナーを自分で維持することなく、実際のGPUハードウェアでテストスイートを実行できるのです。
GitHub ActionsとHugging Face Jobsの連携方法
このセットアップの鍵は、GitHub ActionsをHugging Face Jobsに接続することです。そのために、huggingface/jobs-actionsという小さなブリッジが作成されました。これは、GitHub ActionsジョブをHugging Face Job内で実行される一時的なセルフホスト型ランナーに変えるものです。
完全なフローは以下のようになります。
- プルリクエストがGitHub Actionsワークフローをトリガーします。
- GitHubは、
hf-jobs-cpu-upgradeやhf-jobs-t4-smallのように、利用可能なruns-onラベルを持たないジョブをキューに入れ、署名されたworkflow_job.queuedウェブフックをGitHub Appを通じてディスパッチャに送信します。 - ディスパッチャSpaceはウェブフックを検証し、
hf-jobs-*ラベルをチェックし、短命なGitHubランナー登録トークンを発行し、Hugging Face Jobを開始します。
このように、GitHub ActionsがCIのオーケストレーションを担い、実際の計算リソースはHugging Face Jobsが提供するという役割分担により、柔軟性と効率性を両立させています。
この連携を試すならどこから始めるか
GitHub ActionsとHugging Face Jobsの連携は、既存のCIパイプラインに強力なハードウェアと柔軟性をもたらします。特にGPUを必要とする機械学習プロジェクトや、CIの実行時間を短縮したいプロジェクトにとって、非常に魅力的な選択肢となるでしょう。
この連携を試すには、まずHugging Face Jobsの基本的な使い方を理解し、その上でhuggingface/jobs-actionsを利用してGitHub Actionsワークフローを構築していくことになります。元記事では、GitHubリポジトリで同じセットアップを再現するためのステップバイステップの手順が説明されており、CLIとブラウザベースの両方の指示が提供されています。まずはHugging Face Jobsの公式ドキュメントや、提供されている詳細なガイドを参照して、この新しいCI環境を体験してみてはいかがでしょうか。


