【AWS re:Invent 2025】BedRockを使ってファインチューニングモデルの作り方を体験してきた

【AWS re:Invent 2025】BedRockを使ってファインチューニングモデルの作り方を体験してきた

2025.12.13

目次

  1. はじめに
  2. モデルのトレーニング
  3. モデルのデプロイとテスト
  4. 良いモデルを作るための改善方法
  5. まとめ

はじめに

AWS re:Invent 2025で開催されたAWS AI League: Model customization made easy - PART 1に参加してきました。

このワークショップでは、Amazon SageMaker AIAmazon Bedrockを使って、実際にLLMモデルのファインチューニングからデプロイまでの一連の流れを体験し、どのようにすれば良いモデルを作れるのかを学ぶことができました。

本記事では、モデル作成の技術的な手順と、データ品質やハイパーパラメータの調整によってモデルを改善する方法について紹介します。

使用する主要技術

  • Amazon SageMaker Studio エンドツーエンドのAIモデル開発環境
  • Amazon Nova Micro 軽量で高性能なLLM
  • Amazon Bedrock Custom Model Import カスタムモデルのサーバーレスデプロイ
  • LoRA (Low-Rank Adaptation) 効率的なファインチューニング手法

⚠️ 注意
本記事で使用している「Amazon Nova Micro AI League」モデルは、
AWS re:Invent 2025ワークショップ専用に提供されたものです。
一般のAWS環境では利用できません。

モデルのトレーニング

Amazon SageMaker Studioを使って、Amazon Nova Microモデルをファインチューニングする方法を体験しました。

Amazon SageMaker Studioへのアクセス

# AWSコンソールから
1. Amazon SageMaker AIを検索して選択
2. 左メニューから「SageMaker Studio」を選択
3. ユーザープロファイルを設定
4. 「Open Studio」をクリック

スクリーンショット 2025-12-13 155149

モデルのカスタマイズ設定

左メニューから「Models」を選択し、Amazon Nova Micro AI Leagueモデルにアクセスします。

カスタマイズの開始

  1. 右上の「Customize」ドロップダウンをクリック
  2. 「Customize with UI」を選択

スクリーンショット 2025-12-13 155514

トレーニングデータの準備

ワークショップでは、あらかじめ5種類のサンプルデータセットが用意されていました。

サンプルデータセットの概要

  • ファイル名:riv_sample_1.jsonlriv_sample_5.jsonl
  • 内容:ラスベガス旅行に関するQ&Aデータ
  • 違い:回答の詳しさが異なる(短い回答〜詳細なガイド)

データセット形式(Bedrock Conversation Schema)

{
  "schemaVersion": "bedrock-conversation-2024",
  "system": [
    {
      "text": "You are a Las Vegas travel expert providing accurate and helpful information to visitors."
    }
  ],
  "messages": [
    {
      "role": "user",
      "content": [{"text": "What are the best pizza places in the strip?"}]
    },
    {
      "role": "assistant",
      "content": [{"text": "For authentic Italian pizza on the Strip, try..."}]
    }
  ]
}

トレーニング設定

基本設定

  • Custom model name
  • Dataset name

ハイパーパラメータ設定

  • Batch size 64(1ステップあたりのサンプル数)
  • Number of epochs 1(トレーニングエポック数、1-5の範囲)
  • Learning rate 0.00001(モデルの更新速度、0-1の範囲)

Output artifact location

  • S3 URI: s3://sagemaker-<region>-<account-id>/model-customization/outputartifacts/
  • 自動的にSageMakerバケットパスが設定される

「Advanced Configuration(詳細設定)」をクリックして展開すると、
以下の追加設定を確認・変更できます。

  • Alpha値
  • 学習率比率(Learning rate ratio)
  • MLflow実験追跡オプション

スクリーンショット 2025-12-13 215515

トレーニングジョブの実行

設定を確認したら「Submit」ボタンをクリックしてトレーニングジョブを開始します。

トレーニング時間

  • サンプルデータセットで約15-20分
  • データセットのサイズとパラメータによって変動する可能性がある

トレーニングが完了すると、ステータスが「Completed」に変わります。

スクリーンショット 2025-12-13 155825

モデルのデプロイとテスト

トレーニングが完了したら、ファインチューニングしたモデルをAmazon Bedrockにデプロイして、実際に動作を確認します。

モデルのインポート

トレーニング完了後、「Go to custom model」ボタンをクリックします。

インポート手順

  1. 「Deploy」ドロップダウンをクリック
  2. 「Bedrock」を選択
  3. Import name: 任意の名前を入力
  4. 「Continue」をクリックしてインポート開始

インポート時間

  • 通常8-10分程度
  • ステータスが「Creating」から「Active」に変わるまで待つ

スクリーンショット 2025-12-13 155944

スクリーンショット 2025-12-13 160253

※Amazon Bedrock Custom Model Importとは

Bedrock Custom Model Importを使用すると、以下のメリットがあります。

主な利点

  • サーバーレス推論 インフラ管理やスケーリングが不要
  • 従量課金 実行した推論リクエスト分のみ課金
  • エンタープライズセキュリティ 組み込みの暗号化とアクセス制御
  • 簡単な統合 すべてのモデルで同じBedrock APIを使用可能

On-Demand推論エンドポイントの作成

インポートが完了したら、推論用のエンドポイントを作成します。

デプロイ手順

  1. モデルを選択(左側のラジオボタンをクリック)
  2. 「Deploy」ボタンをクリック
  3. 「On-demand inference」を選択(デフォルト)
  4. Deployment name: deployment-01deployment-02のような形式で入力
  5. 「Deploy」をクリック

デプロイ時間

  • 通常2-3分程度
  • ステータスが「In service」になれば完了

スクリーンショット 2025-12-13 160429

スクリーンショット 2025-12-13 160513

デプロイ情報の確認

デプロイ名(例: deployment-01)をクリックして詳細ページを開きます。

確認できる情報

  • Deployment ARN デプロイされたモデルの識別子
  • 形式: arn:aws:bedrock:<region>:<account-id>:custom-model-deployment/<deployment-id>
  • Model ARN ベースとなるモデルの識別子
  • ステータス In serviceであることを確認

モデルのテスト(オプション)

デプロイ詳細ページの「Playground」セクションでモデルをテストできます。

テスト可能な設定

  • Length 最大出力トークン数
  • Temperature ランダム性と多様性
  • Top P / Top K 出力の選択範囲

スクリーンショット 2025-12-13 160623

これにて、ファインチューニングしたモデルを実際に動かせる状態になりました。

SageMaker StudioからBedrockへのデプロイがシームレスに行えるため、
インフラの設定に時間をかけずにモデルの検証に集中できる点が印象的でした。

続いて、モデルの品質を向上させるための改善方法を紹介します。

良いモデルを作るための改善方法

モデルのデプロイとテストが完了したら、次はモデルのパフォーマンスを向上させる方法を学びます。ワークショップでは、2つの主要なアプローチが紹介されました。

アプローチ1: トレーニングデータの改善

データの品質と多様性がモデルのパフォーマンスに最も大きな影響を与えることが多いです。

高品質データの5つの柱

  1. 明確性(Clarity) - 曖昧さのない明確な指示

    • 良い例: "What are the best pizza places in the strip?"
    • 悪い例: "Tell me about food"
  2. 関連性(Relevance) - ユースケースに沿った内容

    • ユースケースに関する実用的な情報に集中
    • 一般的すぎる内容は避ける
  3. 一貫性(Consistency) - 全体を通じた統一されたフォーマット

    • JSON構造の統一
    • トーンとスタイルの一貫性
  4. 正確性(Accuracy) - すべての事実情報を検証

    • 場所、営業時間、価格、推奨事項を確認
    • 古い情報や間違った情報は避ける
  5. 完全性(Completeness) - 簡潔でありながら徹底的

    • ほとんどの回答は2-4文を目指す
    • 圧倒することなく役立つ詳細を提供

データセットの多様性

トレーニングデータには、以下のような多様性が必要です。

  • 質問タイプ 事実確認、推奨、比較、計画、実用的な質問
  • 複雑さレベル シンプル(単一事実)、中程度(コンテキスト必要)、複雑(複数パート)
  • レスポンス長 短文(1-2文)、中文(2-3文)、詳細(3-4文)
  • トピックカバレッジ アトラクション、食事、交通、文化、歴史など
  • ユーザーペルソナ 初訪問者、家族連れ、出張者、予算重視、高級志向など

推奨データセットサイズ

  • 最小 50例(競技要件を満たすが、スコアは低い可能性)
  • 良好 100-200例(適度なカバレッジ、初期実験に適している)
  • 最適 300-500例(高い多様性、ほとんどのタスクに最適)
  • 上級 500-1,000+例(品質と多様性を維持できる場合のみ有益)

アプローチ2: ハイパーパラメータの調整

ハイパーパラメータは、モデルがデータからどのように学習するかを制御します。

主要なハイパーパラメータ

1. Epochs(エポック数)

エポックは、トレーニングデータセット全体を1回通過する回数です。

  • 少なすぎる(1-2) モデルがパターンを学習するのに十分ではない(アンダーフィッティング)
  • 最適範囲(3-10) パターンを学習しながら汎化を維持、3-5が良い開始点
  • 多すぎる(15+) トレーニング例を記憶し始める(オーバーフィッティング)

推奨 3-5エポックから開始し、トレーニングロスが安定して減少している場合は増やす

2. Learning Rate(学習率)

学習率は、各トレーニングステップでモデルの重みがどれだけ変化するかを制御します。

  • 高すぎる(1e-3以上) 不安定なトレーニング、ロスが跳ね回る
  • 最適範囲(1e-5〜1e-4) 着実で信頼性の高い学習、1e-4が一般的な開始点
  • 低すぎる(1e-6以下) 非常に遅い学習、時間とリソースの無駄

推奨 1e-4(0.0001)から開始し、トレーニングが遅い場合は5e-4に増やす

3. Batch Size(バッチサイズ)

バッチサイズは、重みを更新する前にモデルが処理するトレーニング例の数です。

  • 小さい(4-8) より頻繁な更新、メモリ使用量が少ない、トレーニングが不安定になる可能性
  • 中程度(8-16) 安定性と効率のバランス、推奨される開始点
  • 大きい(32-64) より安定した勾配、より多くのGPUメモリが必要

推奨 8-16から開始、メモリエラーが発生した場合は削減

4. LoRA Parameters(LoRAパラメータ)

LoRA(Low-Rank Adaptation)は、効率的なファインチューニング手法です。

LoRA Rank(ランク)

  • 低ランク(8-16) より少ないパラメータ、高速なトレーニング、複雑なタスクにはアンダーフィットの可能性
  • 中ランク(16-32) バランスの取れた容量、ほとんどのタスクに推奨
  • 高ランク(64-128) より表現力豊か、メモリ集約的、小さいデータセットではオーバーフィットのリスク

LoRA Alpha(アルファ)

  • 通常、LoRA Rankの2倍に設定(Rank=16ならAlpha=32)
  • この比率が良好な安定性を提供

LoRA Dropout(ドロップアウト)

  • 0.0(ドロップアウトなし) 正則化なし、オーバーフィットの可能性
  • 0.05-0.1 軽い正則化、ほとんどのケースに適している
  • 0.1-0.2 より強い正則化、オーバーフィットが発生する場合

体系的なチューニングアプローチ

フェーズ1: ベースライン確立

  • デフォルト設定を使用
  • 最初のモデルをトレーニングして記録
  • ベースラインの評価結果を確立

フェーズ2: データの最適化

  • ハイパーパラメータを一定に保つ
  • データセットの品質と多様性の向上に集中
  • ベースラインと比較

フェーズ3: 一度に1つのパラメータを調整

  • 最良のデータセットを使用
  • 学習率から開始(5e-5、1e-4、2e-4を試す)
  • 次にエポック数(3、5、7を試す)
  • 最後にLoRAランク(必要に応じて8、16、32を試す)

フェーズ4: 組み合わせの微調整

  • 各パラメータの最適値を特定
  • 最適設定周辺の小さな変更をテスト
  • 相乗効果を探す

フェーズ5: 最終最適化

  • 最良のデータセット+最良のハイパーパラメータを組み合わせる
  • 学習したことに基づいて小さな改善を行う
  • 最終的な最良のモデルを完成させる

まとめ

AWS re:Invent 2025の「AWS AI League: Model customization made easy」ワークショップを通じて、LLMのファインチューニングからデプロイまでの完全なワークフローを体験し、良いモデルを作るための重要な知識を得ることができました。

今後の応用

このワークショップで学んだ技術は、以下のようなユースケースに応用できる可能性があります。

  • カスタマーサポートの自動化
  • ドメイン特化型のQ&Aシステム
  • 社内ドキュメント検索アシスタント

実際に手を動かしてモデルを作成・改善する体験を通じて、単に理論を学ぶだけでなく、どのような要素が良いモデルにつながるのかを実感できました。Amazon SageMakerとBedrockの統合により、インフラの複雑さを気にせずにモデルカスタマイズに集中できる環境は、ファインチューニングの学習に非常に適していると感じました。

この記事をシェアする

FacebookHatena blogX

関連記事