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

Platform For AI:Llama3-8B モデルのファインチューニング

最終更新日:Mar 01, 2026

Platform for AI (PAI) の Data Science Workshop (DSW) は、カスタムモデルのファインチューニングやモデルパフォーマンスの最適化を実行できるインタラクティブなモデリングプラットフォームです。このトピックでは、DSW で Llama 3 モデルのパラメーターをファインチューニングし、特定のシナリオにモデルを適応させ、特定のタスクにおけるモデルのパフォーマンスを向上させる方法について説明します。このトピックでは、Meta-Llama-3-8B-Instruct モデルを例として使用します。

背景情報

Llama 3 は、2024 年 4 月に Meta が提供した Llama シリーズの最新モデルファミリーです。Llama 3 は 15 兆を超えるトークンでトレーニングされており、これは Llama 2 データセットの約 7 倍のサイズです。Llama 3 は 8K トークンをサポートし、語彙サイズが 128K トークンの改良されたトークナイザーを備えています。これにより、複雑なコンテキストや専門用語をより正確かつ効率的に処理できます。

Llama3 は、さまざまなシナリオに適した 8B と 70B サイズの事前学習済みバージョンと命令チューニング済みバージョンのモデルを提供します。

  • 8B

    Llama 3 8B は、コンシューマーグレードの GPU に基づく効率的なデプロイメントと開発に適しています。高い応答速度とコスト効率が求められるシナリオで Llama 3 8B を使用できます。

    • Meta-Llama-3-8B:事前学習済みバージョン

    • Meta-Llama-3-8B-Instruct:命令チューニング済みバージョン

  • 70B

    Llama 3 70B は、大規模なパラメーターサイズを活用し、大規模な AI アプリケーション、高度で複雑なタスク、およびパフォーマンス最適化タスクに適しています。

    • Meta-Llama-3-70B:事前学習済みバージョン

    • Meta-Llama-3-70B-Instruct:命令チューニング済みバージョン

前提条件

  • ワークスペースが作成されていること。詳細については、「ワークスペースの作成と管理」をご参照ください。

  • DSW インスタンスが作成されていること。次の主要なパラメーターに注意してください。詳細については、「DSW インスタンスの作成」をご参照ください。

    • インスタンスタイプ:V100 GPU など、GPU メモリが 16 GB 以上のインスタンスを使用することを推奨します。

    • Python:Python 3.9 以降。

    • イメージ:この例では、次の [イメージ URL] を使用します:dsw-registry-vpc.REGION.cr.aliyuncs.com/pai-training-algorithm/llm_deepspeed_peft:v0.0.3REGION を DSW インスタンスが存在するリージョンの ID に置き換えます。例:cn-hangzhou または cn-shanghai。次の表にリージョン ID を示します。

      リージョン

      リージョン ID

      中国 (杭州)

      cn-hangzhou

      中国 (上海)

      cn-shanghai

      中国 (北京)

      cn-beijing

      中国 (深セン)

      cn-shenzhen

  • Llama 3 モデルを使用する前に、Meta の公式ライセンスをお読みください。

    説明

    Web ページにアクセスできない場合は、プロキシを設定して再試行してください。

手順 1:モデルのダウンロード

方法 1:DSW でのモデルのダウンロード

  1. DSW の開発環境に移動します。

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

    2. 上部のナビゲーションバーで、DSW インスタンスが存在するリージョンを選択します。

    3. 左側のナビゲーションウィンドウで、[ワークスペース] をクリックします。[ワークスペース] ページで、デフォルトのワークスペースの名前をクリックします。

    4. 左側のナビゲーションウィンドウで、[モデル開発とトレーニング] > [インタラクティブモデリング (DSW)] を選択します。

    5. 管理したい DSW インスタンスの [操作] 列にある [開く] をクリックして、DSW インスタンスの開発環境に移動します。

  2. [Launcher] タブの [クイックスタート] セクションの [Notebook] ペインで、[Python 3] をクリックします。

  3. Notebook で次のコードを実行して、モデルファイルをダウンロードします。システムは自動的に適切なダウンロードアドレスを選択し、モデルファイルを現在のディレクトリにダウンロードします。

    ! pip install modelscope==1.32.0 transformers==4.37.0
    from modelscope.hub.snapshot_download import snapshot_download
    snapshot_download('LLM-Research/Meta-Llama-3-8B-Instruct', cache_dir='.', revision='master')

方法 2:Meta でのモデルのダウンロード

Meta の Web サイトにアクセスして、モデルを申請します。

説明

Web ページにアクセスできない場合は、プロキシを設定して再試行してください。

手順 2:データセットの準備

この例では、英語の詩のデータセットを使用して Llama 3 モデルをファインチューニングし、生成される詩の詩的な表現力を向上させます。DSW の Notebook で次のコマンドを実行して、モデルに必要なトレーニングデータセットをダウンロードします。

!wget https://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/tutorial/llm_instruct/en_poetry_train.json

サンプルのトレーニングデータセットのフォーマットに基づいて、ビジネスシナリオに適したデータセットを使用できます。LLM をファインチューニングすることで、特定のタスクに対する大規模言語モデル (LLM) の応答精度を向上させることができます。

手順 3:モデルのファインチューニング

軽量な LoRA トレーニング

この例では、/ml/code/sft.py トレーニングスクリプトを使用して、モデルに対して軽量な Low-Rank Adaptation (LoRA) トレーニングを実行します。トレーニング後、システムはモデルのパラメーターを量子化して、推論に必要な GPU メモリを削減します。

accelerate launch コマンドを実行すると、システムはパラメーターを使用して特定の Python スクリプトを起動し、multi_gpu.yaml 設定ファイルで指定されたコンピューティングリソースに基づいてトレーニングを実行します。

! accelerate launch --num_processes 1 --config_file /ml/code/multi_gpu.yaml /ml/code/sft.py \
    --model_name  ./LLM-Research/Meta-Llama-3-8B-Instruct/ \
    --model_type llama \
    --train_dataset_name en_poetry_train..json \
    --num_train_epochs 3 \
    --batch_size 8 \
    --seq_length 128 \
    --learning_rate 5e-4 \
    --lr_scheduler_type linear \
    --target_modules k_proj o_proj q_proj v_proj \
    --output_dir lora_model/ \
    --apply_chat_template \
    --use_peft \
    --load_in_4bit \
    --peft_lora_r 32 \
    --peft_lora_alpha 32 

以下に、この例で使用されるパラメーターについて説明します。ビジネス要件に基づいてパラメーターを変更してください。

  • accelerate launch コマンドは、複数の GPU でディープラーニングのトレーニングスクリプトを起動および管理するために使用されます。

    • num_processes: 並列プロセスの数。この例では、このパラメーターを 1 に設定して、マルチプロセス並列処理を無効にします。

    • config_file/ml/code/multi_gpu.yaml: 設定ファイルのパス。

    • /ml/code/sft.py: 実行したい Python スクリプトのパス。

  • /ml/code/sft.py スクリプトを実行するには、次のパラメーターを設定します。

    • --model_name./LLM-Research/Meta-Llama-3-8B-Instruct/: 事前学習済みモデルのパス。

    • --model_type: モデルのタイプ。この例では、Llama を使用します。

    • --train_dataset_namechinese_medical_train_sampled.json: トレーニングデータセットのパス。

    • --num_train_epochs: トレーニングエポック数。この例では、パラメーターを 3 に設定します。

    • --batch_size: バッチサイズ。この例では、パラメーターを 8 に設定します。

    • --seq_length: シーケンス長。この例では、パラメーターを 128 に設定します。

    • --learning_rate: 学習率。この例では、パラメーターを 5e-4 (0.0005 に相当) に設定します。

    • --lr_scheduler_type: 学習率スケジューラのタイプ。この例では、パラメーターを linear に設定します。

    • --target_modules: ファインチューニング中に焦点を当てるモデルのセクション。この例では、パラメーターを k_proj o_proj q_proj v_proj に設定します。

    • --output_dir: ファインチューニングされたモデルが保存される出力ディレクトリ。この例では、パラメーターを lora_model/ に設定します。

    • --apply_chat_template: トレーニング中に使用するチャットテンプレート。

    • --use_peft: トレーニング中に Parameter-Efficient Fine-Tuning (PEFT) を使用します。

    • --load_in_4bit: メモリ消費量を削減するために、4 ビット精度でモデルの重みをロードします。

    • --peft_lora_r 32:パラメーター効率の良いチューニング手法の一部として LoRA を使用する場合、LoRA の値を 32 に指定します。

    • --peft_lora_alpha:LoRA のアルファ値。この例では、パラメーターを 32 に設定します。

LoRA の重みとモデルの融合

次のコマンドを実行して、LoRA の重みを Llama 3 モデルと融合します。

! RANK=0 python /ml/code/convert.py \
    --model_name ./LLM-Research/Meta-Llama-3-8B-Instruct/ \
    --model_type llama \
    --output_dir trained_model/ \
    --adapter_dir lora_model/

以下に、この例で使用されるパラメーターと値について説明します。

  • RANK=0: RANK 環境変数は、分散トレーニングにおける全プロセスの中での現在のプロセスのシーケンス番号を指定するために使用されます。値 0 は、現在のプロセスが独立したプロセスであるか、分散トレーニングのメインプロセスとして機能することを指定します。

  • python /ml/code/convert.py: 重み変換やその他の変換タスクのために convert.py スクリプトを実行します。

  • --model_name ./LLM-Research/Meta-Llama-3-8B-Instruct/: モデルへのパス。

  • --model_type llama: モデルのタイプ。この例では、Llama を使用します。

  • --output_dir trained_model/: 変換されたモデルと重みが保存される出力ディレクトリ。

  • --adapter_dir lora_model/: LoRA アダプターの重みが存在するディレクトリ。

手順 4:モデル推論の実行

次のコマンドを実行してモデル推論を行い、ファインチューニング効果を検証します。この例では、モデルに春に関する詩を生成するように要求します。

import torch, transformers

# model_id = "./LLM-Research/Meta-Llama-3-8B-Instruct/"
model_id = "./trained_model/"
pipeline = transformers.pipeline(
    "text-generation",
    model=model_id,
    model_kwargs={"torch_dtype": torch.bfloat16},
    device="cuda",
)

messages = [
    {"role": "user", "content": "Write a poem on a topic 'spring' "},
]

prompt = pipeline.tokenizer.apply_chat_template(
        messages, 
        tokenize=False, 
        add_generation_prompt=True
)

terminators = [
    pipeline.tokenizer.eos_token_id,
    pipeline.tokenizer.convert_tokens_to_ids("<|eot_id|>")
]

outputs = pipeline(
    prompt,
    max_new_tokens=1024,
    eos_token_id=terminators,
    do_sample=True,
    temperature=0.6,
    top_p=0.9,
)
print(outputs[0]["generated_text"][len(prompt):])

以下にモデルの応答のサンプルを示します。これは、ファインチューニング後にモデルが高品質の詩を生成できることを示しています。

Here's a poem on the topic of "Spring":

As winter's chill begins to fade,
The earth awakens from its shade,
And spring's sweet breath begins to blow,
Bringing life to all that's cold and slow.

The trees regain their vibrant hue,
And flowers bloom, both old and new,
Their petals dancing in the breeze,
As sunshine warms the world with ease.

The air is filled with sweet perfume,
As blossoms burst forth in their room,
And robins sing their morning song,
As spring's awakening is strong.

The world is fresh, and new, and bright,
As spring's warm light begins to take flight,
And all around, new life unfolds,
As winter's grip begins to grow old.

So let us bask in spring's warm rays,
And let our spirits soar and sway,
For in this season, we're reborn,
And all around, new life is sworn.

I hope you enjoy it!

手順 5:モデルのデプロイ

ファインチューニングされたモデルの重みを Object Storage Service (OSS) にアップロードし、PAI の Elastic Algorithm Service (EAS) にファインチューニングされた Llama 3 モデルをデプロイできます。詳細については、「EAS での LLM アプリケーションのデプロイ」をご参照ください。

付録:DSW ギャラリーでの Llama 3 の使用

DSW ギャラリーは、Llama 3 に関する Notebook のユースケースを提供します。ビジネス要件に基づいて、DSW インスタンスでユースケースを使用できます。詳細については、「Notebook ギャラリー」をご参照ください。

よくある質問

Q:モデルのダウンロード中にエラーが発生します:FileDownloadError: File config.json download imcomlete, content_length: None but the ......

ターミナルで pip install -U modelscope を実行して、modelscope パッケージをアップグレードします。Notebook ページの上部にある image アイコンをクリックして、Python カーネルを再読み込みします。その後、モデルのダウンロードコードを再度実行します。

関連ドキュメント

ChatLLM-WebUI のバージョンに関する詳細については、「ChatLLM WebUI のリリースノート」をご参照ください。