すべてのプロダクト
Search
ドキュメントセンター

Platform For AI:クイックスタート:Mixtral-8x7Bのデプロイとファインチューニング

最終更新日:Aug 26, 2026

Mixtral-8x7Bは、Mistral AIが開発したオープンソースのスパース混合エキスパート (SMoE) モデルで、多くのベンチマークで GPT-3.5 を上回る性能を発揮します。PAI Model Galleryでは、このモデルのすぐに利用できるデプロイとLoRAファインチューニング機能を提供しています。

モデル概要

Mixtral-8x7Bは、スパース混合エキスパート (SMoE) アーキテクチャに基づくデコーダーオンリーの大規模言語モデルで、Apache 2.0ライセンスのもとでリリースされています。ルーターネットワークがトークンごとに8つのエキスパートグループから2つを選択し、それらの出力を組み合わせます。モデルは合計470億のパラメーターを持ちますが、トークンごとにアクティブなのは130億のみであり、13B モデルに匹敵する推論速度を実現しています。

Mixtral-8x7Bは、英語、フランス語、ドイツ語、スペイン語、イタリア語をサポートし、32kトークンのコンテキスト長に対応しています。評価されたすべてのベンチマークで LLaMA2-70B および GPT-3.5 と同等またはそれを上回り、数学、コード生成、多言語タスクにおいて LLaMA2-70B を大幅に上回っています。

image.png

出典: arXiv:2401.04088

Mistral AIは、教師ありファインチューニングとDirect Preference Optimization (DPO) で最適化されたインストラクションチューニング版である Mixtral-8x7B-Instruct-v0.1 もリリースしています。このモデルは人間の指示に、より正確に従い、会話タスクにおいて他のインストラクションチューニング済みオープンソースモデルを上回ります。

image.png

出典: Chatbot Arena Leaderboard

前提条件

Lingjun AI 計算サービスのリソースがアクティブ化されている必要があります。詳細については、「リソースグループの作成とLingjun AI 計算サービスリソースの購入」をご参照ください。

環境要件

  • この例では、中国 (ウランチャブ) リージョンのPAI Lingjunクラスターが必要です。

  • GU108 GPU (80 GB VRAM) を推奨します。推論には少なくとも 2 つの GPU が必要で、LoRAファインチューニングには少なくとも 4 つが必要です。

PAIコンソールでのモデルの使用

モデルのデプロイと呼び出し

  1. Model Galleryページに移動します。

    1. PAI コンソールにログインします。

    2. 上部メニューで、[中国 (ウランチャブ)] リージョンを選択します。

    3. 左側メニューで [workspaces] をクリックします。Workspacesページで、使用するワークスペースの名前をクリックします。

    4. 左側のナビゲーションペインで、クイックスタート > [Model Gallery] を選択して Model Gallery ページに移動します。

  2. 右側のモデルリストで、[Mixtral-8x7B-Instruct-v0.1] モデルカードをクリックして [モデル詳細] ページを開きます。

  3. 右上隅で、デプロイメント をクリックします。 Lingjun コンピューティングリソースを設定し、デプロイメント をクリックしてモデルを PAI-EAS にデプロイします。

    このモデルにはLingjun AI 計算サービスリソースが必要です。リソースクォータには少なくとも 2 つの GU108 GPUが含まれている必要があります。

    デプロイ設定パネルで、[Resource group type] を [Lingjun Intelligent Computing Service] に設定し、[Number of instances] を 1、[CPU] を 40、[Memory (MB)] を 256000 に設定します。次に、[Deploy] をクリックします。

  4. 推論サービスを呼び出します。

    HTTP API

    推論サービスは OpenAI 互換 API をサポートしています。サービス詳細ページからサービスエンドポイントとアクセストークンを取得し、cURL を使用してサービスを呼び出します。

     and  with the actual endpoint and token of your service.
    export API_ENDPOINT="<ENDPOINT>"
    export API_TOKEN="<TOKEN>"
    # List available models
    curl $API_ENDPOINT/v1/models \
    	-H "Content-Type: application/json" \
    	-H "Authorization: Bearer $API_TOKEN"
    # Call the general text completion API
    curl $API_ENDPOINT/v1/completions \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer $API_TOKEN" \
        -d '{
    			"model": "Mixtral-8x7B-Instruct-v0.1",
    			"prompt": "San Francisco is a",
    			"max_tokens": 256,
    			"temperature": 0
    	}'
    # Call the chat completion API
    curl $API_ENDPOINT/v1/chat/completions \
        -H "Authorization: Bearer $API_TOKEN" \
        -H "Content-Type: application/json" \
        -d '{
    			"model": "Mixtral-8x7B-Instruct-v0.1",
          "messages": [
              {"role": "user", "content": "Tell me about the history of Shanghai."}
            ]
          }'
    # <ENDPOINT> と <TOKEN> を、お使いのサービスのエンドポイントとトークンに置き換えてください。
    export API_ENDPOINT="<ENDPOINT>"
    export API_TOKEN="<TOKEN>"
    # 利用可能なモデルをリスト
    curl $API_ENDPOINT/v1/models \
    	-H "Content-Type: application/json" \
    	-H "Authorization: Bearer $API_TOKEN"
    # 一般的なテキスト補完 API を呼び出し
    curl $API_ENDPOINT/v1/completions \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer $API_TOKEN" \
        -d '{
    			"model": "Mixtral-8x7B-Instruct-v0.1",
    			"prompt": "San Francisco is a",
    			"max_tokens": 256,
    			"temperature": 0
    	}'
    # チャット補完 API を呼び出し
    curl $API_ENDPOINT/v1/chat/completions \
        -H "Authorization: Bearer $API_TOKEN" \
        -H "Content-Type: application/json" \
        -d '{
    			"model": "Mixtral-8x7B-Instruct-v0.1",
          "messages": [
              {"role": "user", "content": "Tell me about the history of Shanghai."}
            ]
          }'
    

    SDK

    OpenAI SDK を使用してサービスを呼び出すには、まずSDKをインストールします。

    # サービスを呼び出すための SDK をインストール
    python -m pip install openai

    SDKを使用して推論サービスを呼び出します。

     and  with the token and endpoint from the service details page.
    openai.api_key = "<TOKEN>"
    openai.base_url = "<ENDPOINT>" + "/v1"
    # Call the chat completion API
    completion = openai.chat.completions.create(
        model="Mixtral-8x7B-Instruct-v0.1",
        temperature=0.0,
        top_p=0.8,
        frequency_penalty=0.0,
        messages=[{"role": "user", "content": "Tell me about yourself."}],
        # stream=True,
    )
    # Print the output content
    print(completion.choices[0].message.content)
    import openai
    # <TOKEN> と <ENDPOINT> を、サービス詳細ページのトークンとエンドポイントに置き換えてください。
    openai.api_key = "<TOKEN>"
    openai.base_url = "<ENDPOINT>" + "/v1"
    # チャット補完 API を呼び出し
    completion = openai.chat.completions.create(
        model="Mixtral-8x7B-Instruct-v0.1",
        temperature=0.0,
        top_p=0.8,
        frequency_penalty=0.0,
        messages=[{"role": "user", "content": "Tell me about yourself."}],
        # stream=True,
    )
    # 出力コンテンツを出力
    print(completion.choices[0].message.content)
    

モデルのファインチューニング

Model Galleryは、Mixtral-8x7B-Instruct-v0.1 のすぐに利用できるファインチューニングアルゴリズムを提供しています。

トレーニングデータは JSON 形式である必要があります。各エントリにはinstruction フィールド (質問) とoutput フィールド (回答) が必要です。

[
    {
        "instruction": "Write a poem on a topic 'On a Political Prisoner': \n",
        "output": "She that but little patience knew,\r\nFrom childhood on, had now so much\r\nA grey gull lost its fear and flew\r\nDown to her cell and there alit,\r\nAnd there endured her fingers' touch\r\nAnd from her fingers ate its bit.\r\nDid she in touching that lone wing."
    },
    {
        "instruction": "Write a poem on a topic 'To His Love': ",
        "output": "He's gone, and all our plans\r\n   Are useless indeed.\r\nWe'll walk no more on Cotswold\r\n   Where the sheep feed\r\n   Quietly and take no heed.\r\n His body that was so quick\r\n   Is not as you\r\nKnew it, on Severn river\r\n   Under the blue\r\n   Driving our small boat through."
    }
]
  1. モデルの詳細 ページで、右上隅にある トレーニング をクリックします。主な設定は次のとおりです。

    • [データセット設定]:OSS バケットにデータをアップロードするか、NAS または CPFS データセットを指定します。PAI はテスト用の公開データセットも提供しています。

    • [コンピューティングリソース設定]:4 つの GU108 GPU (80 GB VRAM) が必要です。十分なクォータがあることを確認してください。

    • [ハイパーパラメーター設定]:データとコンピューティングリソースに基づいて以下のハイパーパラメーターを調整するか、デフォルト値を使用します。

      パラメーター

      デフォルト

      必須

      説明

      learning_rate

      float

      5e-5

      はい

      トレーニング中の重み更新のステップサイズを制御します。

      num_train_epochs

      int

      1

      はい

      トレーニングデータセットを反復処理する回数です。

      per_device_train_batch_size

      int

      1

      はい

      GPUごとの反復処理あたりのサンプル数です。値を大きくするとスループットが向上しますが、VRAM 使用量が増加します。

      seq_length

      int

      128

      はい

      トレーニングステップごとの入力シーケンス長です。

      lora_dim

      int

      16

      いいえ

      LoRAの次元です。lora_dim > 0 の場合、LoRA または QLoRA による軽量ファインチューニングが有効になります。

      lora_alpha

      int

      32

      いいえ

      LoRAのアルファスケーリング係数です。lora_dim > 0 の場合に使用されます。

      load_in_4bit

      bool

      true

      いいえ

      モデルを4ビットでロードするかどうかを指定します。

      lora_dim > 0 で、load_in_4bit が true、かつ load_in_8bit が false の場合、軽量ファインチューニングは 4 ビット QLoRA を使用します。

      load_in_8bit

      bool

      false

      いいえ

      モデルを 8 ビットでロードするかどうかを指定します。

      lora_dim > 0 で、load_in_4bit が false、かつ load_in_8bit が true の場合、軽量ファインチューニングは 8 ビット LoRA を使用します。

      gradient_accumulation_steps

      int

      8

      いいえ

      勾配累積ステップ数です。

      apply_chat_template

      bool

      true

      いいえ

      アルゴリズムがモデルのデフォルトのチャットテンプレートをトレーニングデータに適用するかどうかを指定します。例:

      • 質問: <|begin_of_text|><|start_header_id|>user<|end_header_id|>\n\n + instruction + <|eot_id|>

      • 回答: <|start_header_id|>assistant<|end_header_id|>\n\n + output + <|eot_id|>

  2. トレーニング をクリックすると、トレーニングジョブページが開きます。ジョブは自動的に開始されます。

    右上隅で、Tensorboard をクリックして TensorBoard を開き、モデルの収束を監視します。image.png

    トレーニング済みモデルはAI Assets - Model Managementに自動的に登録されます。詳細については、「モデルの登録と管理」をご参照ください。

PAI SDKでのモデルの使用

PAI SDK for Python を使用してModel Galleryのモデルも使用できます。SDK をインストールして設定します:

# PAI SDK for Python をインストール
python -m pip install alipai --upgrade
# アクセス認証情報、PAI ワークスペースなどの情報を対話的に設定
python -m pai.toolkit.config

アクセス認証情報 (AccessKeyペア) とワークスペースの設定については、「インストールと設定」をご参照ください。

モデルのデプロイと呼び出し

Model Galleryの事前設定済みの推論設定を使用して、Mixtral モデルを PAI-EAS にデプロイします。サービス名とリソースの詳細を指定します。

from pai.session import get_default_session
from pai.model import RegisteredModel
from pai.common.utils import random_str
from pai.predictor import Predictor
session = get_default_session()
# PAI QuickStart が提供するモデルを取得
m = RegisteredModel(
    model_name="Mixtral-8x7B-Instruct-v0.1",
    model_provider="pai",
)
# モデルのデフォルトのデプロイ設定を表示
print(m.inference_spec)
# 推論サービスをデプロイ
# 少なくとも 2 つの GU108 (80 GB VRAM) GPU を含む Lingjun リソースクォータの ID (QuotaId) を指定する必要があります。
predictor = m.deploy(
    service_name="mixtral_8_7b_{}".format(random_str(6)),
    options={
        # リソースクォータID
        "metadata.quota_id": "<LingJunResourceQuotaId>",
        "metadata.quota_type": "Lingjun",
        "metadata.workspace_id": session.workspace_id,
    }
)
# 推論サービスのエンドポイントとトークンを取得
endpoint = predictor.internet_endpoint
token = predictor.access_token

上記の「推論サービスの呼び出し」方法で推論サービスを呼び出すか、PAI SDKを直接使用します。

from pai.predictor import Predictor
p = Predictor("<MixtralServiceName>")
res = p.raw_predict(
    path="/v1/chat/completions",
    method="POST",
    data={
        "model": "Mixtral-8x7B-Instruct-v0.1",
        "messages": [
            {"role": "user", "content": "Tell me about the history of Shanghai."}
        ]
    }
)
print(res.json())

テスト後、コンソールまたはSDKを使用してサービスを削除し、リソースを解放します。

# サービスを削除
predictor.delete_service()

モデルのファインチューニング

Model Galleryからモデルを取得して、そのファインチューニングアルゴリズム、サポートされているハイパーパラメーター、および入出力設定を表示します。

from pai.model import RegisteredModel
# PAI QuickStart が提供する Mixtral-8x7B-Instruct-v0.1 モデルを取得
m = RegisteredModel(
    model_name="Mixtral-8x7B-Instruct-v0.1",
    model_provider="pai",
)
# モデルに設定されたファインチューニングアルゴリズムを取得
est = m.get_estimator()
# サポートされているハイパーパラメーターとアルゴリズムの入出力情報を表示
print(est.hyperparameter_definitions)
print(est.input_channel_definitions)

Mixtral-8x7B-Instruct-v0.1 ファインチューニングアルゴリズムは、現在Lingjun AI 計算サービスリソースのみをサポートしています。PAIコンソールからリソースクォータIDを取得し、ジョブを送信する前にハイパーパラメーターを設定します:

# トレーニングジョブの Lingjun リソースクォータ ID を設定
est.resource_id = "<LingjunResourceQuotaId>"
# トレーニングジョブのハイパーパラメーターを設定
hps = {
    "learning_rate": 1e-5,
    "per_device_train_batch_size": 2,
}
est.set_hyperparameters(**hps)

ファインチューニングアルゴリズムは3つの入力をサポートしています。

  • model: 事前学習済み Mixtral-8x7B-Instruct-v0.1 モデル。

  • train: ファインチューニング用のトレーニングデータセット。

  • validation: ファインチューニング用の検証データセット。

必要なデータセット形式は、「モデルのファインチューニング」セクションで説明されています。ossutil、コンソール、または SDK を使用してデータを OSS バケットにアップロードします:

from pai.common.oss_utils import upload
# モデルのファインチューニングアルゴリズムで使用される入力を表示
# アルゴリズムの入力データ (モデルとテスト用の公開データセットを含む) を取得します。
training_inputs = m.get_estimator_inputs()
print(training_inputs)
# {
#     "model": "oss://pai-quickstart-cn-wulanchabu.oss-cn-wulanchabu-internal.aliyuncs.com/huggingface/models/Mixtral-8x7B-Instruct-v0.1/main/",
#     "train": "oss://pai-quickstart-cn-wulanchabu.oss-cn-wulanchabu-internal.aliyuncs.com/huggingface/datasets/llm_instruct/en_poetry_train_mixtral.json",
#     "validation": "oss://pai-quickstart-cn-wulanchabu.oss-cn-wulanchabu-internal.aliyuncs.com/huggingface/datasets/llm_instruct/en_poetry_test_mixtral.json",
# }
# ユーザーデータをアップロードします。次のローカルファイルパスとアップロード先のOSSバケットパスを置き換えてください。
train_data_uri = upload("/path/to/local/train.json", "path/of/train/data")
validation_data_uri = upload("/path/to/local/validation.json", "path/of/validation/data")
# トレーニングデータを独自のデータに置き換えます。
# training_inputs["train"] = train_data_uri
# training_inputs["validation"] = validation_data_uri

trainvalidationの入力を独自のデータセットに置き換えてから、ファインチューニングジョブを送信します。表示されるジョブリンクを使用してPAIコンソールでステータスとログを表示するか、TensorBoardを開いて収束を監視します。

from pai.common.oss_utils import download
# トレーニングジョブを送信し、ジョブへのリンクを出力
est.fit(
    inputs=training_inputs,
    wait=False,
)
# Open TensorBoard を開いてトレーニングの進行状況を表示
est.tensorboard()
# トレーニングジョブが完了するまで待機
est.wait()
# OSSバケット内のモデルパスを表示
print(est.model_data())
# ossutil または SDK が提供するユーティリティメソッドを使用して、モデルをローカルマシンにダウンロードできます。
download(est.model_data())

完全な SDK 統合ガイド: 詳細については、「事前学習済みモデルの使用 — PAI SDK for Python」をご参照ください。

参考資料