IBMニュースレター
The DX Leaders
AI活用のグローバル・トレンドや日本の市場動向を踏まえたDX、生成AIの最新情報を毎月お届けします。登録の際はIBMプライバシー・ステートメントをご覧ください。
ニュースレターは日本語で配信されます。すべてのニュースレターに登録解除リンクがあります。サブスクリプションの管理や解除はこちらから。詳しくはIBMプライバシー・ステートメントをご覧ください。
低ランク適応(LoRA)は、機械学習モデルを新しいコンテキストに適応させるために使用される手法です。モデル全体を変更するのではなく、元のモデルに軽量の部分を追加することで、大規模なモデルを特定の用途に適応させることができます。データサイエンティストは、まったく新しいモデルを構築する必要がなく、モデルの使用方法を迅速に拡張できます。
IBMニュースレター
AI活用のグローバル・トレンドや日本の市場動向を踏まえたDX、生成AIの最新情報を毎月お届けします。登録の際はIBMプライバシー・ステートメントをご覧ください。
ニュースレターは日本語で配信されます。すべてのニュースレターに登録解除リンクがあります。サブスクリプションの管理や解除はこちらから。詳しくはIBMプライバシー・ステートメントをご覧ください。
ChatGPTのような大規模言語モデル(LLM)に使用されるような大規模で複雑な機械学習モデルのセットアップには、長い時間と多数のリソースが必要です。特定の値に設定されたパラメータが何兆個もある場合もあります。このプロセスが完了すると、モデルは全般的には強力かつ正確になりますが、必ずしも特定のタスクを実行するためにファイン・チューニングされるわけではありません。
モデルを特定のコンテキストで機能させるには、すべてのパラメーターを変更し、大量の再トレーニングが必要になる場合があります。このようなモデルにはパラメーターの数があるため、この再トレーニングには費用と時間がかかります。LoRAは、モデルを再トレーニングせずに、モデルを迅速に適応させる方法を提供します。
一例として、GPT-3モデルの全面的なファイン・チューニングには、トレーニング・データ・セットの規模が大きいため、1,750億個のパラメーターをトレーニングする必要があります。LoRAを使用すると、GPT-3のトレーニング可能なパラメータを約1,800万個に削減でき、GPUメモリ要件が約3分の2削減されます。
効率的なファイン・チューニングの方法はLoRAだけではありません。LoRAのバリエーションとして、高精度の計算技術と低精度のストレージ方法を組み合わせたファイン・チューニング技術である量子化LoRA(QLoRA)があります。これにより、モデルの高いパフォーマンスと精度を維持しながら、モデルのサイズを小さく保つことができます。
LoRAはモデル全体を再トレーニングするのではなく、モデルの元の重みとパラメーターをそのままフリーズします。次に、この元のモデルの上に、低ランク行列と呼ばれる軽量なオプションを追加します。これを新しいインプットに適用することで、コンテキストに固有の成果を取得します。低ランク行列は、出力が目的のユースケースに一致するように、元のモデルの重みに合わせて調整されます。
LoRAは低ランク行列の概念を活用し、モデルのトレーニング・プロセスを非常に効率的かつ高速にします。従来のLLMのファイン・チューニングでは、モデル全体を調整する必要があります。LoRAは、計算とメモリーのオーバーヘッドを削減するために、パラメーターのより小さなサブセット(低ランク行列)を変更することに重点を置いています。
図は、LoRAがランクrの小さな行列を使用して行列AとBを更新し、事前トレーニングされた重みの変化を追跡する方法を示しています。LoRAトレーニングが完了すると、事前トレーニング済みモデルの元の重みを変更する必要なく、小さな重みが新しい重みマトリクスにマージされます。
LoRAは、大規模モデルが本質的に低次元構造を持っているという理解に基づいて構築されています。低ランク行列と呼ばれる小さな行列を活用することで、LoRAはこれらのモデルを効果的に適応させます。この方法は、重要なモデル変更をより少ないパラメーターで表現できるという中心的な概念に焦点を当てており、適応プロセスがより効率的になります。
行列は、機械学習とニューラル・ネットワークの仕組みにおいて重要な部分です。低ランク行列は、大きく、または高ランクの行列よりも小さく、値がはるかに少ないものです。メモリーをあまり必要とせず、足し合わせや掛け算に必要な手順が少ないため、コンピューターの処理速度が速くなります。
高ランクの行列は2つの低ランクの行列に分解でき、4x4行列は4x1と1x4 行列に分解できます。
LoRAは、凍結された元の機械学習モデルに低ランク行列を追加します。低ランクの行列は、基本モデルの重みを変更することなく、ファイン・チューニング中に勾配降下法によって更新されます。これらの行列には、結果を生成する際にモデルに適用する新しい重みが含まれています。乗算された変更行列がベース・モデルの重みに追加され、ファイン・チューニングされた最終モデルが得られます。このプロセスにより、モデルが生成する出力が最小限の計算能力とトレーニング時間で変更されます。
基本的に、LoRAは元のモデルを変更せず、モデルの各層に変更可能な小さな部分を追加します。これにより、モデルのトレーニング可能なパラメーターと、トレーニング・プロセスに必要なGPUメモリー要件が大幅に削減されますが、これは大規模なモデルのファイン・チューニングやトレーニングに関するもう1つの重要な課題です。
PythonとPyTorchを使用してHuggingFaceでLoRAの微調整を実装するには、開発者はパラメーター効率の高い微調整(PEFT)ライブラリーを使用してLoRAアダプターをモデルに挿入し、更新マトリクスとして使用できます。このライブラリーは、 HuggingFaceまたはGitHubから無料で入手できます。このライブラリーは、モデルのLoRAパラメーターを構成する方法を提供します。特に一般的に使用されるパラメーターには次のようなものがあります。
r:更新行列のランクで、intで表される。低ランクの分解では、トレーニング可能なパラメーターが少なく、更新行列が小さくなり、結果は小さくなります。
target_modules:LoRA更新行列を適用するモジュール(たとえば、アテンション・ブロック)。
lora_alpha:LoRAのスケーリング係数.
LoRAの主な利点の1つは、基本モデルを共有および使用して、新しいタスク用の多数の小さなLoRAモジュールを構築できることです。共有モデルはフリーズされているため、ユーザーはLoRAの重み行列を置き換えることでタスクを切り替えることができます。2つの異なるモデルを必要とする代わりに、ファイン・チューニングによる性能の向上を維持しながら、単一のモデルをさまざまなタスクで使用できます。
LoRAを使用すると、ユーザーは勾配を計算したり、ほとんどのパラメーターのオプティマイザー状態を維持したりする必要がないため、トレーニングをより効率的にし、参入においてハードウェア面での障壁が低くなります。代わりに、プロセスでは、はるかに小さい低ランクの行列のみを最適化する必要があります。
LoRAの線形設計により、データサイエンティストは、デプロイ時にトレーニング可能な行列を固定された事前トレーニング済みモデルの重みとマージすることができるため、構築別に全面的にファイン・チューニングされたモデルと比較して推論のレイテンシーが生じません。
LoRAを他の手法と組み合わせることで、プレフィックス・チューニングなどのモデルの性能を向上させ、柔軟性を高めることができます。
LoRAによりトレーニング可能なパラメーターの数が大幅に減少しますが、トレードオフもあります。このプロセスにより、行列分解中に情報が失われます。LoRAはフルウェイト行列をより小さなコンポーネントに縮小するため、プロセスの一部の詳細が失われる可能性があります。これはモデルの過剰適合に相当します。一方、LLMでは、ディープラーニング・モデルが高度にパラメーター化されているため、タスクに必要以上のパラメーターが含まれており、多くの場合損失は最小限に抑えられます。「過剰パラメーター化」とは、こうしたモデルが、トレーニング・データに必要な性能よりも大きいことが多いことを意味します。すべてのパラメータが厳密には重要ではありません。パラメーター内に冗長性、堅牢性、レジリエンスがあります。このレジリエンスを取り除くとモデルの精度が低下する可能性があるため、LoRAプロセスの一部として更新行列のランクを調整できます。
watsonxプラットフォームにある基盤モデルのIBMライブラリーを探索し、ビジネスに合わせて自信を持って生成AIを拡張します。
業界をリードするIBMのAI専門知識とソリューション製品群を使用すれば、ビジネスにAIを活用できます。
AIの導入で重要なワークフローと業務を再構築し、エクスペリエンス、リアルタイムの意思決定とビジネス価値を最大化します。
1. Hu, Edward, et al, LoRA: Low-Rank Adaptation of Large Language Models, 2021