見出し画像

text-generation-webui の LoRAファインチューニングのパラメータ調整ガイド

以下の記事で紹介されている、LoRAファインチューニングのパラメータ調整ガイドがわかりやすかったので、簡単にまとめました。

Training Your Own LoRAs

前回

1. VRAM

はじめに、「VRAM」を考える必要があります。

・一般に、デフォルトパラメータを使用した学習でのVRAM使用量は、デフォルト設定で (1000以上のコンテキストトークンを含む) テキストを生成する時とほぼ同じになります。つまり、テキストを生成できれば、LoRAを学習できます。

・VRAMに余裕がある場合は、より高い「batch size」を設定すると、より多くのVRAMが使用され、その代わりに学習の質が向上します。

・データが大きい場合は、「cutoff length」を高く設定すると効果的ですが、VRAMが大幅に消費されます。余裕がある場合は、「batch size」を「1」に設定し、「cutoff length」をどれだけ高く設定できるかを確認してください。

・VRAMが不足している場合は、「batch size」または「cutoff length」を減らすと、もちろん改善されます。

・恐れずに試してみて、何が起こるか見てみましょう。メモリ消費が多すぎる場合はエラーが発生するだけなので、設定を下げて再試行できます。

2. Rank

次に、「学習量」を考える必要があります。

・対話形式 (Alpacaなど) を学習する場合は、Rankを低く (32以下) を設定すると効果的です。

・Botに理解させたい、質問を理解できるようにしたい文書を学習する場合は、Rankが高いほど優れています。

・一般に、Rankが高い = より正確な学習 = より多くの総学習コンテンツ = 学習中の VRAM 使用量が増加 になります。

3. Learning Rate と Epoch

第3に、モデルが学習に無関係な理解を失うことを、どの程度許容するかを考慮します。これは、「Learning Rate (LR)」「Scheduler」「Epoch」で調整します。

・「LR」は認識される各トークンによって、モデルにどの程度の変更が加えられるかを調整します。値が大きいほど学習は高速になりますが、モデル内の先行データを破損しやすくなります。

・基本的には、「LR」と「Epoch」という2つの値でバランスを取ります。高い「LR」+ 低い「Epoch」 = 高速だが低品質の学習 、低い「LR」 + 高い「Epoch」 = 遅いが高品質の学習 になります

・「Scheduler」は学習率の時間経過に伴う変化を調整します。最初は高く、その後低くなります。 これにより、データの取得と適切な品質のバランスを同時に保つことができます。以下のドキュメントで、さまざまな「Scheduler」オプションのグラフを確認できます。

4. Loss

学習時には、「Web UI」のコンソールウィンドウに、「Loss」の値が出力されます。これは高い数値から始まり、徐々に低くなっていきます。

AIの学習における「Loss」とは、理論的には「モデルがどれだけ完璧に近いか」を意味し、0は「完全に完璧」を意味すします。これは、出力するように学習したテキストを正確に出力するモデルと、実際に出力されたテキストとの差を測定することによって計算されます。

実際には、優れたLLMは、その人工的な頭の中で非常に複雑なアイデアの可変範囲を実行しているはずなので、「Loss」が「0」の場合は、モデルが壊れて、学習したこと以外忘れてしまったことを示します。

つまり、実質的に「Loss」はバランスゲームなのです。データが理解できる程度に「Loss」を低くしたいが、それ以外のことを忘れない程度に「Loss」を高くしたいのです。一般的には、「1.0」を下回ると以前の記憶を忘れ始めるので、学習を中止する必要があります。場合によっては、「0.5」まで下げたほうがいいこともあります(非常に予測しやすくしたい場合)。



この記事が気に入ったらサポートをしてみませんか?