Azure AI Studio で Meta Llama モデルを微調整する
重要
この記事で "(プレビュー)" と付記されている項目は、現在、パブリック プレビュー段階です。 このプレビューはサービス レベル アグリーメントなしで提供されており、運用環境ではお勧めしません。 特定の機能はサポート対象ではなく、機能が制限されることがあります。 詳しくは、Microsoft Azure プレビューの追加使用条件に関するページをご覧ください。
Azure AI Studio では、微調整と呼ばれるプロセスを使用して、大規模な言語モデルを個人用データセットに合わせて調整できます。
微調整では、特定のタスクとアプリケーションのカスタマイズと最適化を可能にすることで、大きな価値が得られます。 これにより、パフォーマンスの向上、コスト効率、待機時間の短縮、および調整された出力が実現されます。
この記事では、Azure AI Studio で Meta Llama モデルを微調整する方法について説明します。
Meta Llama ファミリの大規模言語モデル (LLM) は、70 億から 700 億個のパラメーターに及ぶ、事前トレーニングおよび微調整された生成テキスト モデルのコレクションです。 モデル ファミリには、人間のフィードバックによる強化学習 (RLHF) を使用した対話のユース ケース用に最適化された、Llama-Instruct と呼ばれる微調整バージョンも含まれています。
重要
プレビュー段階のモデルは、モデルカタログ内のモデル カードで "プレビュー" のマークが付けられます。
モデル
従量課金制のサービスとして微調整するときは、Llama 3.1 の次のモデルを Azure Marketplace で入手できます。
Meta-Llama-3.1-70B-Instruct
(プレビュー)Meta-LLama-3.1-8b-Instruct
(プレビュー)
現在 Llama 3.1 モデルのファインチューニングがサポートされているのは、米国西部 3 内にあるプロジェクトにおいてです。
重要
現時点では、シーケンス長が 128K の Llama 3.1 の微調整は行うことができません。
前提条件
有効な支払い方法を持つ Azure サブスクリプション。 無料または試用版の Azure サブスクリプションは機能しません。 Azure サブスクリプションを持っていない場合は、始めるために有料の Azure アカウントを作成してください。
-
重要
Meta Llama 3.1 モデルでは、従量課金制モデルの微調整オファリングは、米国西部 3 リージョンで作成されたハブでのみ利用できます。
Azure AI Studio の Azure AI Studio プロジェクト。
Azure AI Studio での操作に対するアクセスを許可するには、Azure ロールベースのアクセス制御 (Azure RBAC) を使います。 この記事の手順を実行するには、ユーザー アカウントに、Azure サブスクリプションの所有者か共同作成者ロールを割り当てる必要があります。 別の方法として、アカウントに、次のアクセス許可を持つカスタム ロールを割り当てることができます。
Azure サブスクリプションで - 各プロジェクトについて 1 回、オファリングごとに、AI Studio プロジェクトを Azure Marketplace オファリングにサブスクライブするため:
Microsoft.MarketplaceOrdering/agreements/offers/plans/read
Microsoft.MarketplaceOrdering/agreements/offers/plans/sign/action
Microsoft.MarketplaceOrdering/offerTypes/publishers/offers/plans/agreements/read
Microsoft.Marketplace/offerTypes/publishers/offers/plans/agreements/read
Microsoft.SaaS/register/action
リソース グループで - SaaS リソースを作成して使用するため:
Microsoft.SaaS/resources/read
Microsoft.SaaS/resources/write
AI Studio プロジェクトで - エンドポイントをデプロイするため (Azure AI 開発者ロールには、次のアクセス許可が既に含まれています):
Microsoft.MachineLearningServices/workspaces/marketplaceModelSubscriptions/*
Microsoft.MachineLearningServices/workspaces/serverlessEndpoints/*
アクセス許可について詳しくは、「Azure AI Studio でのロールベースのアクセス制御」をご覧ください。
サブスクリプション プロバイダーの登録
Azure サブスクリプションが Microsoft.Network
リソース プロバイダーに登録されていることを確認してください。
Azure portal にサインインします。
左側のメニューで、[サブスクリプション] を選択します。
使用するサブスクリプションを選択します。
左側のメニューから [設定]>[リソース プロバイダー] を選択します。
Microsoft.Network がリソース プロバイダーの一覧にあることを確認します。 ない場合は追加してください。
データ準備
トレーニングデータと検証データを準備して、モデルを微調整します。 トレーニング データと検証データのセットは、モデルの実行方法に関する入力と出力の例で構成されます。
すべてのトレーニング例が、推論に必要な形式に従っていることを確認します。 モデルを効果的に微調整するには、バランスのとれた多様なデータセットを確保してください。
つまり、データバランスを維持し、さまざまなシナリオを含み、社会の実情に合わせてトレーニング データを定期的に調整することで、最終的にはより正確でバランスの取れたモデル応答が得られます。
モデルの種類が異なると、異なる形式のトレーニング データが必要になります。
使用するトレーニングおよび検証データは、JSON Lines (JSONL) ドキュメントの形式である必要があります。 Meta-Llama-3.1-70B-Instruct
の場合、微調整データセットの形式は、チャット入力候補 API で使用される会話形式でである必要があります。
ファイル形式の例
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Is Xbox better than PlayStation?"}, {"role": "assistant", "content": "I apologize, but I cannot provide personal opinions. My primary job is to assist you with any issues related to your Xbox device. Do you have any Xbox-related issues that need addressing?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Can I play PC games on my Xbox?"}, {"role": "assistant", "content": "While Xbox consoles don't natively support PC games, they can play an array of Xbox games, many of which are also available on PC. Can I assist you with finding games compatible with your Xbox device?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "I'm having trouble connecting my Xbox to the Wi-Fi."}, {"role": "assistant", "content": "No worries, let's go through the network settings on your Xbox. Can you please tell me what happens when you try to connect it to the Wi-Fi?"}]}
サポートされているファイルの種類は、JSON Lines です。 ファイルは既定のデータストアにアップロードされ、プロジェクトで使用できるようになります。
Meta Llama モデルを微調整する
LLama 3.1 モデルを微調整するには、次のようにします。
Azure AI Studio にサインインします。
Azure AI Studio のモデル カタログから、微調整するモデルを選びます。
モデルの [詳細] ページで、fine-tune を選びます。
モデルを微調整するプロジェクトを選びます。 従量課金制のモデル微調整オファリングを使用するには、ワークスペースが米国西部 3 リージョンに属している必要があります。
微調整ウィザードで、リンク [Azure Marketplace の使用条件] を選択して、使用条件の詳細を確認します。 [Marketplace オファーの詳細] タブを選択して、選択したモデルの価格について確認することもできます。
プロジェクトでモデルを初めて微調整する場合は、Azure Marketplace から特定のオファリング (Meta-Llama-3.1-70B-Instruct など) 用のプロジェクトをサブスクライブする必要があります。 この手順は、前提条件に記載されている Azure サブスクリプションのアクセス許可とリソース グループのアクセス許可がアカウントに付与されていることを必要とします。 プロジェクトごとに、特定の Azure Marketplace オファリングへの固有のサブスクリプションがあり、それを使って支出を管理および監視できます。 [サブスクライブして微調整] を選択します。
Note
プロジェクトを特定の Azure Marketplace オファリング (この場合、Meta-Llama-3.1-70B-Instruct) にサブスクライブするには、プロジェクトが作成されるサブスクリプション レベルの共同作成者または所有者アクセス権をアカウントが持っている必要があります。 別の方法として、「前提条件」に記載されている Azure サブスクリプションのアクセス許可とリソース グループのアクセス許可を持つカスタム ロールをユーザー アカウントに割り当てることもできます。
特定の Azure Marketplace オファリングのプロジェクトにサインアップすると、同じプロジェクト内の同じオファリングの以降の微調整で再度サブスクライブする必要はありません。 そのため、以降の微調整ジョブに対するサブスクリプション レベルのアクセス許可を持つ必要はありません。 このシナリオが該当する場合は、[微調整を続行] を選びます。
微調整されたモデルの名前と、省略可能なタグと説明を入力します。
トレーニング データを選択して、モデルを微調整します。 詳細については、「データ準備」を参照してください。
Note
資格情報の少ないデータストアにトレーニングまたは検証ファイルがある場合は、資格情報の少ないストレージで MaaS の微調整を続行するために、ワークスペースのマネージド ID がデータストアにアクセスできるようにする必要があります。 [データストア] ページで、[認証の更新] をクリック > 以下のオプションを選択します。
すべてのトレーニング例が、推論に必要な形式に従っていることを確認します。 モデルを効果的に微調整するには、バランスのとれた多様なデータセットを確保してください。 つまり、データバランスを維持し、さまざまなシナリオを含み、社会の実情に合わせてトレーニング データを定期的に調整することで、最終的にはより正確でバランスの取れたモデル応答が得られます。
- トレーニングに使用するバッチ サイズ。 -1 に設定すると、batch_size はトレーニング セットの例の 0.2% として計算されます。最大値は 256 です。
- 微調整の学習率は、事前トレーニングに使用された元の学習率にこの乗数を掛けた値です。 0.5 ~ 2 の値を使用して実験することをお勧めします。 経験的に、多くの場合、より大きなバッチ サイズでは、学習率が高いほどパフォーマンスが向上することがわかっています。 0.0 から 5.0 の間である必要があります。
- トレーニング エポックの数。 エポックとは、データ セットを 1 回完全に循環することを指します。
タスク パラメーターは省略可能な手順であり、高度なオプションです。ハイパーパラメーターの調整は、実際のアプリケーションにおいて大規模な言語モデル (LLM) を最適化するために不可欠です。 これにより、パフォーマンスが向上し、リソースの効率的な使用が可能になります。 既定の設定を使用することも、上級ユーザーがエポックや学習率などのパラメーターをカスタマイズすることもできます。
選択内容を確認し、モデルのトレーニングに進みます。
モデルを微調整したら、モデルをデプロイし、独自のアプリケーション、プレイグラウンド、またはプロンプト フローで使用できます。 詳細については、「Azure AI Studio を使用して Llama 3.1 ファミリの大規模言語モデルをデプロイする方法」を参照してください。
微調整されたモデルのクリーンアップ
微調整されたモデルは、Azure AI Studio の微調整モデルの一覧、またはモデルの詳細ページから削除できます。 [微調整] ページから削除する微調整されたモデルを選択し、[削除] ボタンを選択して微調整されたモデルを削除します。
Note
既存のデプロイがある場合は、カスタム モデルを削除できません。 カスタム モデルを削除する前に、まずモデル デプロイを削除する必要があります。
コストとクォータ
サービスとして微調整される Meta Llama モデルのコストとクォータに関する考慮事項
サービスとして微調整された Meta Llama モデルは、Azure Marketplace を通じて Meta によって提供され、使用するために Azure AI Studio と統合されます。 モデルをデプロイまたはモデルを微調整するときに、Azure Marketplace の価格を確認できます。
プロジェクトが Azure Marketplace から特定のオファーにサブスクライブするたびに、その消費に関連するコストを追跡するための新しいリソースが作成されます。 推論と微調整に関連するコストを追跡するために同じリソースが使用されますが、各シナリオを個別に追跡するために複数の測定値を使用できます。
コストの追跡方法について詳しくは、「Azure Marketplace を通じて提供されるモデルのコストを監視する」をご覧ください。
コンテンツのフィルター処理
従量課金制でサービスとしてデプロイされるモデルは、Azure AI Content Safety によって保護されます。 リアルタイム エンドポイントにデプロイするときは、この機能をオプトアウトできます。 Azure AI Content Safety を有効にすると、プロンプトと入力候補の両方が、有害なコンテンツ出力の検出と防止を目的とした一連の分類モデルを通過します。 コンテンツ フィルタリング (プレビュー) システムは、入力プロンプトと出力される入力候補の両方で、有害な可能性があるコンテンツ特有のカテゴリを検出し、アクションを実行します。 Azure AI Content Safety の詳細を確認します。