Hugging Face JobsでvLLMサーバーを爆速構築!1コマンドでOpenAI互換LLMエンドポイントを立ち上げる方法

Hugging Face JobsでvLLMサーバーを爆速構築!
Hugging Faceのインフラ上で、OpenAI互換のLLMエンドポイントをたった1つのコマンドで立ち上げられることをご存知でしょうか?サーバーのプロビジョニングやKubernetesの知識は不要、秒単位の従量課金で利用可能です。今回は、この「Hugging Face Jobs」を活用してvLLMサーバーを構築し、手軽にLLMをテスト、評価、バッチ生成に利用する方法をご紹介します。
この方法は、テストや評価、バッチ生成のために一時的にモデルを立ち上げたい場合に最適です。もし、マネージドでプロダクションレディなサービスをお探しであれば、Inference Endpointsの利用を検討してください。それぞれの使い分けについては、後述します。
何ができるのか?
Hugging Face Jobsを利用することで、以下のことが可能になります。
- プライベートなOpenAI互換LLMエンドポイントの構築: Hugging Faceのインフラ上で、独自のLLMをOpenAI APIと互換性のある形式で利用できます。
- サーバー管理不要: サーバーのセットアップやメンテナンスは一切不要です。
- 従量課金: ハードウェア使用量に応じて分単位で課金されるため、必要な時に必要なだけ利用できます。
- どこからでもクエリ可能: 構築したエンドポイントは、ローカルPC、Jupyter Notebook、その他どこからでもアクセスしてクエリを実行できます。
どう使えるのか?(具体例)
この機能は、特に以下のような場面で威力を発揮します。
- モデルのテスト: 新しいLLMモデルを開発した際に、本番環境にデプロイする前に手軽に動作確認を行いたい場合。
- 評価(Evals): 複数のモデルの性能を比較評価する際に、それぞれのエンドポイントを迅速に立ち上げてテストデータに対する応答を検証したい場合。
- バッチ生成: 大量のテキストデータに対してLLMによる応答をバッチで生成したい場合。例えば、記事の要約や翻訳、データ拡張などに利用できます。
- プロトタイピング: LLMを活用した新しいアプリケーションのアイデアを検証する際に、迅速にバックエンドを用意したい場合。
これらの用途において、インフラ構築の手間を省き、開発者はモデルそのものの開発や評価に集中できます。
試すならどこから始めるか
実際にvLLMサーバーを立ち上げてみましょう。以下の手順で進めます。
1. 事前準備
- 支払い方法またはプリペイドクレジット残高: Jobsはハードウェア使用量に応じて分単位で課金されるため、支払い方法の設定が必要です。
- huggingface_hubのインストール: バージョン1.20.0以上が必要です。
pip install -U "huggingface_hub>=1.20.0"でインストールまたはアップデートしてください。 - Hugging Faceにログイン: ローカルで
hf auth loginコマンドを実行してログインしておきます。
2. vLLMサーバーの起動
hf jobs runコマンドを使用してサーバーを起動します。これはHugging Faceインフラにおけるdocker runのようなものです。公式のvllm/vllm-openaiイメージを使用し、GPU(ここではa10g-largeフレーバー)を要求し、vLLMのポート8000を公開します。タイムアウトは2時間に設定しています。
hf jobs run --flavor a10g-large --expose 8000 --timeout 2h \
vllm/vllm-openai:latest \
vllm serve Qwen/Qwen3-4B --host 0.0.0.0 --port 8000
このコマンドを実行すると、サーバーがアクセス可能なURLが出力されます。例: https://<job_id>--8000.hf.jobs。<job_id>はあなたのジョブIDなので、メモしておきましょう。
数分待ってログに「Application startup complete」と表示されれば、サーバーは稼働しています。
3. どこからでもクエリを実行
vLLMはOpenAI APIと互換性があり、リクエストにはHugging FaceトークンをBearerトークンとして含める必要があります。
cURLでのクエリ
最も手軽な方法はcURLです。<job_id>をあなたのジョブIDに置き換えて実行してください。
curl https://<job_id>--8000.hf.jobs/v1/chat/completions \
-H "Authorization: Bearer $(hf auth token)" \
-H "Content-Type: application/json" \
-d '{ "model": "Qwen/Qwen3-4B

