Apidog

オールインワン協働API開発プラットフォーム

API設計

APIドキュメント

APIデバッグ

APIモック

API自動テスト

Llama 4をAWS、Azure、Hugging Faceにデプロイする方法

中村 拓也

中村 拓也

Updated on 4月 7, 2025

このガイドでは、MetaのLlama 4モデル(ScoutおよびMaverick)をAWS、Azure、Hugging Faceの3つの主要プラットフォーム上にデプロイするためのステップバイステップの手順を提供します。これらのモデルは、マルチモーダル処理、大規模なコンテキストウィンドウ、最先端のパフォーマンスなどの高度な機能を提供します。

💡
開発者のヒント:デプロイに入る前に、APIテストツールキットのアップグレードを検討してください! Apidogは、Postmanに比べて、AIモデルのエンドポイントのサポート、共同テスト、および自動化されたAPIドキュメントに優れた、より直感的で機能豊富な代替手段を提供します。LLMデプロイメントワークフローは、スイッチを行ったことで感謝されるでしょう。
ボタン

Llama 4デプロイメントの前提条件とハードウェア要件

  • Metaのライセンス契約を通じてLlama 4モデルへのアクセス
  • READアクセストークンを持つHugging Faceアカウント
  • デプロイメントターゲットに必要なAWS、Azure、またはHugging Face Proアカウント
  • コンテナ化とクラウドサービスの基本的な理解

AWS(TensorFuse経由)

  • Scout:1Mトークンコンテキスト用の8x H100 GPU
  • Maverick:430Kトークンコンテキスト用の8x H100 GPU
  • 代替:コンテキストウィンドウが縮小された8x A100 GPU

Azure

(これは大規模言語モデルの一般的なAzure MLガイダンスに沿っていますが、Llama 4専用のドキュメントは見つかりませんでした。)

  • 推奨:ND A100 v4シリーズ(8 NVIDIA A100 GPU)
  • 最小:Standard_ND40rs_v2またはそれ以上

Hugging Face

  • 推奨:A10G-Largeスペースハードウェア
  • 代替:A100-Large(プレミアムハードウェアオプション)
  • 無料プランのハードウェアはフルモデルには不十分です

1. AWSにTensorFuseを使用してLlama 4をデプロイする

1.1 AWSとTensorFuseのセットアップ

TensorFuse CLIをインストールします:

pip install tensorfuse

AWSの認証情報を設定します:

aws configure

AWSアカウントでTensorFuseを初期化します:

tensorkube init

1.2 必要なシークレットを作成する

Hugging Faceトークンを保存します:

tensorkube secret create hugging-face-secret YOUR_HF_TOKEN --env default HUGGING_FACE_HUB_TOKEN=

API認証トークンを作成します:

tensorkube secret create vllm-token vllm-key --env default VLLM_API_KEY=

1.3 Llama 4用のDockerfileを作成する

Scoutモデルの場合:

FROM vllm/vllm-openai:v0.8.3
ENV HF_HUB_ENABLE_HF_TRANSFER=1
EXPOSE 80
ENTRYPOINT ["python3", "-m", "vllm.entrypoints.openai.api_server", \\\\
            "--model", "meta-llama/Llama-4-Scout-17B-16E-Instruct", \\\\
            "--dtype", "bfloat16", \\\\
            "--trust-remote-code", \\\\
            "--tensor-parallel-size", "8", \\\\
            "--max-model-len", "1000000", \\\\
            "--port", "80", \\\\
            "--override-generation-config", "{\\\\"attn_temperature_tuning\\\\": true}", \\\\
            "--limit-mm-per-prompt", "image=10", \\\\
            "--kv-cache-dtype", "fp8", \\\\
            "--api-key", "${VLLM_API_KEY}"]

Maverickモデルの場合:

FROM vllm/vllm-openai:v0.8.3
ENV HF_HUB_ENABLE_HF_TRANSFER=1
EXPOSE 80
ENTRYPOINT ["python3", "-m", "vllm.entrypoints.openai.api_server", \\\\
            "--model", "meta-llama/Llama-4-Maverick-17B-128E-Instruct", \\\\
            "--dtype", "bfloat16", \\\\
            "--trust-remote-code", \\\\
            "--tensor-parallel-size", "8", \\\\
            "--max-model-len", "430000", \\\\
            "--port", "80", \\\\
            "--override-generation-config", "{\\\\"attn_temperature_tuning\\\\": true}", \\\\
            "--limit-mm-per-prompt", "image=10", \\\\
            "--kv-cache-dtype", "fp8", \\\\
            "--api-key", "${VLLM_API_KEY}"]

1.4 デプロイメント設定を作成する

deployment.yamlを作成します:

gpus: 8
gpu_type: h100
secret:
  - huggingfacesecret
  - vllmtoken
min-scale: 1
readiness:
  httpGet:
    path: /health
    port: 80

1.5 AWSにデプロイする

サービスをデプロイします:

tensorkube deploy --config-file ./deployment.yaml

1.6 デプロイしたサービスにアクセスする

デプロイメントをリストしてエンドポイントURLを取得します:

tensorkube deployment list

デプロイをテストします:

curl --request POST \\\\
  --url YOUR_APP_URL/v1/completions \\\\
  --header 'Content-Type: application/json' \\\\
  --header 'Authorization: Bearer vllm-key' \\\\
  --data '{
    "model": "meta-llama/Llama-4-Scout-17B-16E-Instruct",
    "prompt": "Earth to Llama 4. What can you do?",
    "max_tokens": 1000
  }'

2. AzureにLlama 4をデプロイする

2.1 Azure MLワークスペースを設定する

Azure CLIとML拡張をインストールします:

pip install azure-cli azure-ml
az login

Azure MLワークスペースを作成します:

az ml workspace create --name llama4-workspace --resource-group your-resource-group

2.2 コンピュートクラスターを作成する

az ml compute create --name llama4-cluster --type amlcompute --min-instances 0 \\\\
  --max-instances 1 --size Standard_ND40rs_v2 --vnet-name your-vnet-name \\\\
  --subnet your-subnet --resource-group your-resource-group --workspace-name llama4-workspace

2.3 Azure MLにLlama 4モデルを登録する

model.ymlを作成します:

$schema: <https://azuremlschemas.azureedge.net/latest/model.schema.json>
name: llama-4-scout
version: 1
path: .
properties:
  model_name: "meta-llama/Llama-4-Scout-17B-16E-Instruct"

モデルを登録します:

az ml model create --file model.yml --resource-group your-resource-group --workspace-name llama4-workspace

2.4 デプロイメント設定を作成する

deployment.ymlを作成します:

$schema: <https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json>
name: llama4-deployment
endpoint_name: llama4-endpoint
model: azureml:llama-4-scout@latest
instance_type: Standard_ND40rs_v2
instance_count: 1
environment_variables:
  HUGGING_FACE_HUB_TOKEN: ${{secrets.HF_TOKEN}}
  VLLM_API_KEY: ${{secrets.VLLM_KEY}}
environment:
  image: vllm/vllm-openai:v0.8.3
  conda_file: conda.yml

conda.ymlを作成します:

channels:
  - conda-forge
dependencies:
  - python=3.10
  - pip
  - pip:
    - vllm==0.8.3
    - transformers
    - accelerate

2.5 エンドポイントを作成してデプロイする

az ml online-endpoint create --name llama4-endpoint \\\\
  --resource-group your-resource-group --workspace-name llama4-workspace

az ml online-deployment create --file deployment.yml \\\\
  --resource-group your-resource-group --workspace-name llama4-workspace

2.6 デプロイメントをテストする

az ml online-endpoint invoke --name llama4-endpoint --request-file request.json \\\\
  --resource-group your-resource-group --workspace-name llama4-workspace

request.jsonには次が含まれます:

{
  "model": "meta-llama/Llama-4-Scout-17B-16E-Instruct",
  "prompt": "Earth to Llama 4. What can you do?",
  "max_tokens": 1000
}

3. Hugging FaceにLlama 4をデプロイする

3.1 Hugging Faceアカウントを設定する

  1. https://huggingface.co/でHugging Faceアカウントを作成する
  2. https://huggingface.co/meta-llamaでLlama 4モデルのライセンス契約を承諾する

3.2 Hugging Face Spacesを使用してデプロイする

https://huggingface.co/spacesに移動し、「新しいスペースを作成」をクリックします。

スペースを設定します:

  • 名前:llama4-deployment
  • ライセンス:適切なライセンスを選択
  • SDK:Gradioを選択
  • スペースハードウェア:A10G-Large(最良の性能のため)
  • 可視性:ニーズに応じてプライベートまたはパブリック

スペースリポジトリをクローンします:

git clone <https://huggingface.co/spaces/YOUR_USERNAME/llama4-deployment>
cd llama4-deployment

3.3 アプリケーションファイルを作成する

app.pyを作成します:

import gradio as gr
import torch
from transformers import pipeline, AutoModelForCausalLM, AutoTokenizer
import os

# 環境またはシークレットにHFトークンを追加
os.environ["HUGGING_FACE_HUB_TOKEN"] = "YOUR_HF_TOKEN"

# 適切な構成でモデルとトークナイザーをロード
model_id = "meta-llama/Llama-4-Scout-17B-16E-Instruct"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    torch_dtype=torch.bfloat16,
    device_map="auto",
    trust_remote_code=True
)

# パイプラインを作成
pipe = pipeline(
    "text-generation",
    model=model,
    tokenizer=tokenizer,
    max_length=2048
)

def generate_text(prompt, max_length=1000, temperature=0.7):
    # Llama 4形式に従ってプロンプトをフォーマット
    formatted_prompt = f"<|begin_of_text|><|user|>\\\\n{prompt}<|end_of_text|>\\\\n<|assistant|>"

    outputs = pipe(
        formatted_prompt,
        max_length=len(tokenizer.encode(formatted_prompt)) + max_length,
        temperature=temperature,
        do_sample=True,
    )

    return outputs[0]['generated_text'].replace(formatted_prompt, "")

# Gradioインターフェースを作成
demo = gr.Interface(
    fn=generate_text,
    inputs=[
        gr.Textbox(lines=4, placeholder="ここにプロンプトを入力...", label="プロンプト"),
        gr.Slider(minimum=100, maximum=2000, value=1000, step=100, label="最大長"),
        gr.Slider(minimum=0.1, maximum=1.0, value=0.7, step=0.1, label="温度")
    ],
    outputs="text",
    title="Llama 4デモ",
    description="MetaのLlama 4モデルを使用してテキストを生成します",
)

demo.launch()

requirements.txtを作成します:

accelerate>=0.20.3
bitsandbytes>=0.41.1
gradio>=3.50.0
torch>=2.0.1
transformers>=4.34.0

3.4 Hugging Faceにデプロイする

Hugging Faceスペースにプッシュします:

git add app.py requirements.txt
git commit -m "Llama 4デプロイメントを追加"
git push

3.5 デプロイメントを監視する

  1. スペースURLにアクセスします:https://huggingface.co/spaces/YOUR_USERNAME/llama4-deployment
  2. 最初のビルドには、モデルのダウンロードとセットアップが必要なため、時間がかかります。
  3. デプロイが完了すると、モデルとインタラクションできるGradioインターフェースが表示されます。

4. デプロイメントのテストとインタラクション

4.1 APIアクセスのためのPythonクライアントを使用する(AWS & Azure)

import openai

# AWS用
client = openai.OpenAI(
    base_url="YOUR_AWS_URL/v1",  # tensorkubeデプロイメントリストから取得
    api_key="vllm-key"  # 設定されたAPIキー
)

# Azure用
client = openai.AzureOpenAI(
    azure_endpoint="YOUR_AZURE_ENDPOINT",
    api_key="YOUR_API_KEY",
    api_version="2023-05-15"
)

# テキストコンプリーションリクエストを作成
response = client.completions.create(
    model="meta-llama/Llama-4-Scout-17B-16E-Instruct",
    prompt="人工知能についての短い詩を書いてください。",
    max_tokens=200
)

print(response.choices[0].text)

# マルチモーダル機能のために(サポートされている場合)
import base64

# 画像をbase64として読み込み
with open("image.jpg", "rb") as image_file:
    image_base64 = base64.b64encode(image_file.read()).decode('utf-8')

# 画像を含むチャットコンプリーションを作成
response = client.chat.completions.create(
    model="meta-llama/Llama-4-Scout-17B-16E-Instruct",
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "この画像を説明してください:"},
                {"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{image_base64}"}}
            ]
        }
    ],
    max_tokens=300
)

print(response.choices[0].message.content)

結論

これで、AWS、Azure、Hugging FaceにLlama 4モデルをデプロイするためのステップバイステップの手順が整いました。それぞれのプラットフォームは異なる利点を提供します:

  • AWSとTensorFuse:完全な制御、高いスケーラビリティ、最高のパフォーマンス
  • Azure:Microsoftエコシステムとの統合、管理されたMLサービス
  • Hugging Face:最も簡単なセットアップ、プロトタイピングやデモに最適

コスト、スケール、パフォーマンス、管理の容易さの要件に最も合ったプラットフォームを選択してください。