低ランク適応 ( LoRA ) の微調整
低ランクアダプテーション( LoRA )ファインチューニングは、チューニング中に基本モデルの重みの代わりに、 低ランクアダプターと呼ばれるモデルパラメーターの代表的なサブセットの重みを変更することで、タスクに基盤モデル適応させる。 推論時には、チューニングされたアダプターからの重みが、タスク用にチューニングされた出力を生成するために、ベースとなる基盤モデル重みに加えられる。
低ランク順応( LoRA )チューニングの仕組み
低ランク適応 ( LoRA ) は、パラメータ効率の高いファイン・チューニング (PEFT) 手法であり、固定された基本基盤モデルにパラメータのサブセットを追加し、基本モデルのパラメータを変更せずに、調整実験中にサブセットを更新します。 調整された基盤モデル推論されるとき、サブセットからの新しいパラメータ重みは、タスク用にカスタマイズされた出力を生成するために、基礎モデルからのパラメータ重みに加えられる。
パラメーターのサブセットがどのように作られるかは、いくつかの数学が関係している。 基盤モデルモデルのニューラルネットワークは、それぞれが複雑なパラメータ行列を持つ層で構成されていることを覚えておいてほしい。 これらのパラメータには重み値があり、 基盤モデル初期学習時に設定される。 LoRA チューニングに使用されるパラメータのサブセットは、ベースとなる基盤モデルモデルの重みにランク分解を適用することで導き出される。 行列のランクは、行列内で互いに線形独立なベクトルの数を示す。 順位分解は、 行列分解としても知られる数学的手法で、この順位情報を使って元の行列を2つの小さな行列で表し、その行列を掛け合わせると元の行列と同じ大きさの行列になる。 この方法では、2つの小さな行列が一緒になって、より大きな行列の主要なパターンと関係をとらえるが、パラメータはより少ない。 生成される小さい行列は、 低ランク行列または低ランク・アダプタと呼ばれる。
LoRA チューニング実験では、サブセット( 低ランクのアダプター )のパラメーターの重み値が調整される。 アダプタのパラメータが少ないので、チューニング実験が速くなり、変更を保存して計算するためのリソースが少なくて済む。 アダプターマトリックスにはベースモデルマトリックスからの情報の一部が欠けているが、 LoRA、大規模な基盤モデル通常、タスクに必要なパラメータよりも多くのパラメータを使用するという事実を利用しているため、 LoRA チューニング方法は効果的である。
LoRA ファイン・チューニング実験の出力は、新しい重みを含むアダプターのセットである。 これらのチューニングされたアダプターを掛け合わせると、ベースモデルのマトリックスと同じサイズのマトリックスを形成する。 推論時には、アダプターの積から得られる新しい重みがベースモデルの重みに直接追加され、 ファイン・チューニング出力が生成される。
LoRA チューニング実験のパラメータを設定することができます。例えば、ターゲットとする基盤モデル層や、基礎モデル行列を分解する際に使用するランクなどです。 詳細は 基盤モデルチューニングするためのパラメータ を参照。
アダプタ資産配置するときは、ベース モデルも配置されているデプロイメントスペース 資産配置する必要があります。 watsonx.ai の LoRA ファインチューニングメソッドを使用すると、量子化されていない基盤モデル微調整できます。
LoRA、 ファイン・チューニング :
- LoRA テクニックで使用される、より小型で訓練可能なアダプターは、チューニング時に必要なストレージや計算リソースが少なくて済む。
- アダプタからの調整は、コンテキストウィンドウの長さやモデルの応答速度に影響を与えることなく、推論時に適用される。
- 1つの基盤モデルデプロイし、そのモデルをさまざまなアダプタと組み合わせて使用することで、タスクごとに出力をカスタマイズすることができます。
低ランク適応 ( LoRA ) のファイン・チューニングワークフロー
LoRA ファイン・チューニング実験では、 低ランク・アダプターと呼ばれるモデル・パラメーターの代表的なサブセットのパラメーター重みが繰り返し調整され、チューニングされた基盤モデルモデルの予測値が時間の経過とともに良くなるようにする。
次の図は、 LoRA ファイン・チューニング実験の実行中に発生するステップを示したものである。
設定できる実験フローの部分は、ユーザーアイコン で強調表示されます。 これらの決定点は、あなたがコントロールする実験調整パラメータに対応している。 基盤モデルチューニングするためのパラメータ を参照。
図は、実験の以下のステップを示している:
この実験では、トレーニングデータを読み込み、トークン化し、バッチに変換する。
バッチのサイズは、 バッチサイズパラメーターによって決定される。
ベースモデルパラメーターの代表的なサブセットである低ランクアダプターが考案される。 低ランクアダプターの初期重みは、 target_modules パラメータで指定したモデルレイヤーに適用され、 rank パラメータで指定した値に基づいて計算されます。
バッチ内の例からの入力を、 LoRA アダプターに送り、そして基盤モデルモデルに送って処理し、出力を生成する。
モデルの出力と、提出されたトレーニングデータ入力に対応するトレーニングデータからの出力を比較する。 次に、学習データから予測出力と実際の出力の差である損失勾配を計算する。
この実験では、計算されたモデルの損失に基づいて、 LoRA アダプター・パラメーターの重みを調整する。 この調整がいつ行われるかは、 Accumulation steps パラメータがどのように設定されているかによる。
LoRA アダプターのパラメーターの重みに調整が適用される。 重みを変更する度合いは、 学習率、 アルファ値、 ドロップアウトのパラメータ値の組み合わせによって制御される。
学習データの次の例からの入力が、入力として LoRA アダプターに送られる。 アダプターは、最新のウェイト変更を適用し、ベースとなる基盤モデルウェイトに追加して、タスク用に調整します。
このプロセスは、すべてのバッチのすべての例が処理されるまで繰り返される。
バッチの全セットは、 Number of epochs パラメータで指定された回数だけ再度処理される。
詳細はこちら LoRA
親トピック 基盤モデルチューニング方法