この記事では、言語モデルのファインチューニングについていくつかの一般的な方法を示して説明し、調整結果を適用することでどのように Azure Kubernetes Service (AKS) 上の AI や機械学習ワークフローのパフォーマンスを向上できるかを説明します。
事前学習済み言語モデル
事前学習済み言語モデル (PLM) は、AI 推論を手軽に開始するための手段であり、自然言語処理 (NLP) で広く使用されています。 PLM は、インターネットからの大規模なテキスト コーパスでディープ ニューラル ネットワークを使用してトレーニングされており、特定のタスク向けの小規模なデータセット用にファインチューニングできます。 これらのモデルは通常、トレーニング前のプロセスで学習した数十億におよぶパラメーター (重み) で構成されます。
PLM は、自然言語の統計的特性 (特定のコンテキストで発生する単語の確率やシーケンスなど) をキャプチャするユニバーサル言語表現を学習できます。 これらの表現は、タスク固有のデータセットに対してモデルをファインチューニングすることで、テキスト分類、名前付きエンティティ認識、質問への回答などのダウンストリーム タスクに転送できます。
長所と短所
次の表に、AI と機械学習のワークフローで PLM を使用することの長所と短所を示します。
長所 | 短所 |
---|---|
• 機械学習ライフサイクルでデプロイをすぐに開始できます。 • モデルのトレーニングに伴う高いコンピューティング コストを回避できます。 • ラベル付けした大規模なデータセットを保存する必要性が低減します。 |
• 事前学習済みのデータ ソースに基づいた、一般化された応答または古い応答が返される場合があります。 • すべてのタスクまたはドメインに適しているわけではありません。 • パフォーマンスは推論コンテキストによって異なる場合があります。 |
ファインチューニングの方法
Parameter efficient fine-tuning (PEFT)
Parameter efficient fine-tuning (PEFT) は、計算リソースが限られている比較的小さなデータセットで PLM をファインチューニングする方法です。 PEFT は、追加や選択のメソッドなどの手法を組み合わせて重みを更新し、特定のタスクに対するモデルのパフォーマンスを向上します。 PEFT は、最小限のコンピューティング リソースと適切な量のデータを必要とし、リソースの少ない設定に適しています。 この方法は、元の事前学習済みモデルの重みの大部分を保持し、コンテキスト固有のラベル付きデータに合わせて残りの重みを更新します。
Low rank adaptation (LoRA)
Low rank adaptation (LoRA) は PEFT の一種で、一般的には大規模言語モデルを新しいタスク用にカスタマイズするために使用されます。 この方法は、モデルの重みの変更を追跡し、モデルのトレーニング可能なパラメーターのみを表す小さな重みマトリックスを効率的に格納することで、メモリ使用量とファインチューニングに必要なコンピューティング能力を削減します。 LoRA はアダプター レイヤーと呼ばれるファインチューニング結果を作成します。これを一時的に格納し、新しい推論ジョブ用にモデルのアーキテクチャに取り込むことができます。
Quantized low rank adaptation (QLoRA) は LoRA を拡張したもので、アダプター レイヤーに量子化を導入することでメモリ使用量をさらに削減します。 詳細については、「Making LLMs even more accessible with bitsandbytes, 4-bit quantization and QLoRA (bitsandbytes、4 ビット量子化、QLoRA で LLM をさらに使いやすくする)」を参照してください。
AKS で言語モデルのファインチューニングを試す
Kubernetes AI ツールチェーン オペレーター (KAITO) は、Kubernetes クラスターでの小規模および大規模言語モデルのデプロイを自動化するオープンソース オペレーターです。 AI ツールチェーン オペレーター アドオンは、KAITO を活用してオンボーディングを簡素化し、インフラストラクチャ コストを節約し、AKS クラスター上のオープンソース モデルの推論までの時間を短縮します。 このアドオンは、適切なサイズの GPU ノードを自動的にプロビジョニングし、関連付けられている推論サーバーを任意のモデルへのエンドポイント サーバーとして設定します。
KAITO バージョン 0.3.0 以降では、次の機能を使用して、サポートされている MIT と Apache 2.0 のライセンス モデルを効率的にファインチューニングできます。
- 再トレーニング データをコンテナー イメージとしてプライベート コンテナー レジストリに格納する。
- プライベート コンテナー レジストリで新しいアダプター レイヤー イメージをホストする。
- 新しいシナリオで、アダプター レイヤーを使用して、推論のためのイメージを効率的に引き出す。
KAITO のファインチューニングの概要については、Kaito Tuning Workspace API のドキュメントを参照してください。 AKS クラスターで KAITO を使用して言語モデルをデプロイする方法の詳細については、KAITO モデル GitHub リポジトリを参照してください。
重要
オープンソース ソフトウェアは、AKS のドキュメントとサンプル全体で説明されています。 デプロイするソフトウェアは、AKS サービス レベル アグリーメント、限定保証、Azure サポートから除外されます。 AKS と共にオープンソース テクノロジを使用する場合は、それぞれのコミュニティとプロジェクト保守担当者から受けられるサポート オプションを調べ、計画を策定してください。
たとえば、Ray の GitHub リポジトリでは、応答時間、目的、サポート レベルが異なる複数のプラットフォームについて説明しています。
Microsoft は、AKS 上に展開するオープンソース パッケージを構築する責任を負います。 その責任には、ビルド、スキャン、署名、検証、修正プログラム プロセスの完全な所有権と、コンテナー イメージ内のバイナリの制御権が伴います。 詳細については、AKS の脆弱性の管理に関するページと「AKS のサポート範囲」を参照してください。
次のステップ
AKS でのコンテナー化された AI と機械学習のワークロードの詳細については、次の記事を参照してください。
Azure Kubernetes Service