モデルをデプロイ
どの Hugging Face モデル(テキスト、画像、動画、音声)でも、vLLM、SGLang、vLLM-Omni、llama.cpp と自分のエンジンオプションで動かせます。専用の API キーつきの OpenAI 互換エンドポイントと、root 権限での SSH が使えます。
コンソールで確認
- コンソールで Models を開きます。
Qwen/Qwen3-8Bのように Hugging Face での名前でモデルを指定するか、そのページのリンクを貼り付けます。- エンジンを選びます。テキストモデルには vLLM か SGLang、画像と動画のモデルには vLLM-Omni か SGLang、音声とサウンドには vLLM-Omni、GGUF ファイルには llama.cpp です。llama.cpp では、
unsloth/Qwen3-8B-GGUF:Q4_K_Mのようにコロンのあとに量子化を加えます。 - 自分のエンジンオプションがあれば貼り付けます(下記参照)。
- アクセス制限つき(gated)のモデルや非公開のモデルでは、読み取り権限のある Hugging Face トークンを追加します。
- Find GPUs は Hugging Face からモデルのサイズを読み取り、マシンが実行する起動コマンドを表示し、そのモデルが今収まる GPU をすべて価格とともに一覧表示します。いずれかを選んでレンタルします。
エンジンはマシンの起動時にモデルをダウンロードするため、エンドポイントが応答するのは数分後です。Models には、準備ができたかどうか、アドレス、API キー、呼び出し用のコード、チャットと画像モデルの試用、エンジンのログが表示されます。
自分のエンジンオプション
チューニングしたオプションを、手元にある形のまま貼り付けてください。
VLLM_USE_DEEP_GEMM=1 vllm serve Qwen/Qwen3-8B \
--max-model-len 32768 --enable-prefix-caching \
--speculative-config '{"method": "eagle3", "num_speculative_tokens": 3}'フラグだけでも、コマンド全体でも、docker run の行でも使えます。先頭の環境変数や、引用符で囲んだ JSON の値もそのままです。オプションを選び、エンジンのリリースに合わせて最新に保つのはあなたです。Arrakis はシェルを通さずに読み取り、一語ずつそのままエンジンに渡します。そのため:
- シェルの構文(
;、|、&&、$(...)、$VARIABLES)は受け付けません。実行するものが何もないからです。 - エンジンの待ち受け先(
--host、--port)、キー(--api-key)、モデルは Arrakis が受け持つため、エンドポイントのアドレスとキーは変わりません。--served-model-name(llama.cpp では--alias)で、リクエストで使うモデル名を変えられます。 - 並列化はあなたの指定が優先です。オプションに
-tp、--tp、-dpがあれば、Arrakis は自分の指定を加えません。 - GPU を選ぶ設定(
NVIDIA_*)とローダーの設定(LD_*)は受け付けません。マシンが使うのは借りた GPU だけです。 - Hugging Face トークンはオプションではなく専用の欄に入れてください。オプションと一緒に保存されることはありません。
API から
curl -X POST $ARRAKIS_URL/v1/deploy \
-H "Authorization: Bearer ark_..." \
-H "Content-Type: application/json" \
-d '{"model": "black-forest-labs/FLUX.1-schnell", "engine": "omni", "termination_hours": 4,
"extra_args": "--enforce-eager"}'node_id がなければ、Arrakis はモデルが収まる中でいちばん評価の高いマシンを、できるだけ少ない GPU 数でレンタルします。POST /v1/deploy/plan は、収まる GPU を先に無料で一覧表示し、extra_args があればオプションを検査して起動コマンドを返します。応答にはエンドポイントとその api_key が含まれます。GET /v1/instances/{id}/endpoint はそれらをもう一度返し、モデルが応答すると ready になります。GET /v1/instances/{id}/endpoint/log はエンジンのログの末尾を返します。エージェントは MCP 経由で deploy_model ツールを使います。
呼び出す
エンドポイントは OpenAI の API を話すので、OpenAI のクライアントならどれでも使えます。リクエストで指定するモデル名は、名前を変えていなければ、量子化を除いた Hugging Face の ID です。
from openai import OpenAI
client = OpenAI(base_url="http://<address>/v1", api_key="sk-...")
reply = client.chat.completions.create(
model="Qwen/Qwen3-8B",
messages=[{"role": "user", "content": "Hello"}],
)
print(reply.choices[0].message.content)| モデルが生成するもの | 呼び出し先 |
|---|---|
| テキスト | POST /v1/chat/completions, /v1/completions, /v1/embeddings |
| イメージ | POST /v1/images/generations, /v1/images/edits |
| 動画 | POST /v1/videos、完了するまで GET /v1/videos/{id}、そして GET /v1/videos/{id}/content |
| 音声 | POST /v1/audio/speech |
| サウンドと音楽 | POST /v1/audio/generate |
| 音声からのテキスト | POST /v1/audio/transcriptions |
マシンはあなたのもの
- 通常のレンタルと同じです。時間単位で課金され、削除時刻に削除され、Instances に表示されます。
- エンジンの公式リリースをもとにした Arrakis イメージで起動し、root 権限で SSH できます。マシン上で
arrakis-serve status、arrakis-serve logs、arrakis-serve restartを実行できます。 - 新しいマシンなしでほかのオプションを試すには、
/etc/arrakis/serve/command(一行に一語)か/etc/arrakis/serve/envを編集して、arrakis-serve restartを実行します。エンジンが止まってもマシンは動き続けるので、その場で直せます。 - エンドポイントは、プレーンな HTTP でのマシンのアドレスです。ポート 8000 のアクセスゲートが、リクエストがエンジンに届く前に API キー(
Authorization: Bearer <key>)を確認します。エンジンはマシンの内側でしか待ち受けません。/healthはキーなしで応答し、エンジンが動いているかどうかだけを返します。非公開の通信には SSH トンネル(ssh root@<host> -p <port> -N -L 8000:localhost:8000)を開き、http://localhost:8000/v1を使ってください。 - Hugging Face トークンは
HF_TOKENとしてマシンに渡され、Arrakis はそれを保存しません。マシンのホストはマシン上で動作するものを読み取れるため、権限を絞った(fine-grained)読み取り専用トークンを使ってください。
エージェントとして読んでいますか?このページの Markdown 版をどうぞ。