ファウンデーション・モデルのチューニング用パラメーター
チューニングパラメータは、 基盤モデルチューニングに使用するチューニング実験を設定します。
迅速なチューニングパラメータ
プロンプト・チューニングは非推奨であり、将来的に削除される予定です。
以下の表は、カスタマイズ可能なチューニングパラメーターについて説明しています。
パラメーター名 | 説明 | 値のオプション | 詳細情報 |
---|---|---|---|
初期化方式 | プロンプトベクトルの初期化方法を指定する。 | ランダム、テキスト | プロンプト・チューニングの初期化 |
初期化テキスト | 実験の最初の実行でプロンプトとして使用するテキスト。 | – | プロンプト・チューニングの初期化 |
バッチ・サイズ | 一度に処理するラベル付き例の数。 | 1-16 | トレーニング・データのセグメント化 |
ステップの累積 | 調整を行う前に処理するバッチ数。 | 1-128 | トレーニング・データのセグメント化 |
学習レート | モデルの調整時に行う変更の範囲を決定する。 | 0.00001–0.5 | 学習率の管理 |
エポック数(学習サイクル数) | トレーニングデータを循環させる回数。 | 1-50 | 完了するトレーニングサイクルの回数を決める |
迅速なチューニングのためのパラメータ値の設定
プロンプトチューニング実験に使用する最適なハイパーパラメータ値は、データと使用ケースによって異なります。
以下の表は、サードパーティ製基盤モデルチューニングを迅速に行うための出発点として使用するパラメータ値をまとめたものです。
パラメーター名 | flan-t5-xl-3b のデフォルト値 |
---|---|
初期化方式 | ランダム |
初期化テキスト | なし |
バッチ・サイズ | 16 |
ステップの累積 | 16 |
学習レート | 0.3 |
エポック数(学習サイクル数) | 20 |
granite-13b-instruct-v2 基盤モデルプロンプト・チューニングに使用されるデフォルト・パラメータは、チューニング・モデルに行わせたいタスクのタイプに基づいて調整される。
次の表は、 granite-13b-instruct-v2 基盤モデル迅速にチューニングするために、サポートされているタスクタイプごとに開始点として使用するパラメータ値をキャプチャしたものである。
パラメーター名 | 分類のデフォルト値 | 生成のデフォルト値 | 要約のデフォルト値 |
---|---|---|---|
バッチ・サイズ | 8 | 16 | 8 |
ステップの累積 | 32 | 16 | 1 |
学習レート | 0.0006 | 0.0002 | 0.0002 |
エポック数(学習サイクル数) | 20 | 20 | 40 |
低ランク適応微調整パラメータ
一般的なチューニングパラメータに加えて、以下の表では、特に低ランクアダプテーション( LoRA )の微調整に関連するチューニングパラメータについて説明する。
パラメーター名 | ノート |
---|---|
アルファ | ベースモデルのウェイトに追加される前に、アダプターのウェイト変更に適用される乗数。 この設定は、アダプターのウェイトの影響度をコントロールする。 アルファ値をランク値で割って、適用するウエイト変更の割合を算出する。 |
ドロップアウト | 学習データへのオーバーフィッティングを防ぐために、アダプターの重みをランダムにゼロにリセットする割合。 |
ランク | 調整するモデルパラメータ重みのサブセットを選択する計算で使用する数値。 |
対象モジュール | 適応の対象とするベース・ 基盤モデル モデルのレイヤーを指定する。 |
これらのパラメーターの詳細については、 低ランク適応の設定( LoRA ファインチューニングのみ )を参照。
LoRA ファイン・チューニング用パラメータ値の設定
LoRA ファイン・チューニング実験に使用する最適なハイパーパラメータ値は、データ、使用する基盤モデル、モデルに実行させたいタスクのタイプによって異なります。
次の表は、有用な開始パラメータ値を示しています。 実験を通じて何が最も効果的かを学びながら、パラメータ値を調整することができます。
パラメーター名 | granite-3-1-8b-base | llama-3-1-8b |
---|---|---|
アルファ | 32 | 64百万 |
ステップの累積 | 1 | 1 |
バッチ・サイズ | 8 | 8 |
ドロップアウト | 0.05 | 0.05 |
学習レート | 0.00001 | 0.00001 |
エポック数(学習サイクル数) | 10 | 5 |
ランク | 8 | 32 |
対象モジュール | ["all-linear"] |
["q_proj", "v_proj"] |
これらのパラメーターの詳細については、 低ランク適応の設定( LoRA ファインチューニングのみ )を参照。
パラメーターの説明
トレーニング・データのセグメント化
エクスペリメントが実行されると、まずトレーニング・データがより小さいバッチに分割され、一度に 1 つのバッチでトレーニングされます。 各バッチは、処理される GPU メモリーに収まる必要があります。 必要な GPU メモリーの量を削減するために、チューニング・エクスペリメントを構成して、複数のバッチが処理されるまで調整を延期することができます。 チューニングはバッチで実行され、そのパフォーマンスメトリクスが計算されるが、調整はすぐには行われない。 代わりに、累積パフォーマンス・メトリックが評価される前に、いくつかのバッチにわたってパフォーマンス情報が収集されます。
以下のパラメーターを使用して、トレーニング・データのセグメント化方法を制御します。
バッチ・サイズ 一度に処理するラベル付きの例 ( サンプルとも呼ばれる) の数。
例えば、1,000 個の例と 10 個のバッチ・サイズを持つデータ・セットの場合、データ・セットはそれぞれ 10 個の例からなる 100 個のバッチに分割されます。
トレーニング・データ・セットが小さい場合は、小さいバッチ・サイズを指定して、各バッチに十分な例が含まれるようにします。
累積ステップ: 調整を行う前に処理するバッチ数。
例えば、データセットが100バッチに分割され、累積ステップ値を10に設定した場合、調整は100回ではなく10回行われる。
完了するトレーニングサイクルの回数を決める
epochsパラメータは、トレーニングデータセット全体を何回繰り返すかを指定します。
例えば、バッチサイズが10で、データセットが1,000例の場合、1回のエポックで100バッチを処理し、100回の調整を行わなければならない。 エポックの数を 20 に設定すると、モデルはデータ・セットを 20 回通過します。つまり、チューニング・プロセス中に合計 2,000 個のバッチが処理されます。
エポックの数が多くなり、トレーニング・データが大きくなるほど、モデルのチューニングにかかる時間が長くなります。 エポック数を低く設定しすぎると、モデルが十分に学習できない可能性があります。 エポック数を多く設定しすぎると、データセットにモデルを過剰適合させてしまう可能性があります。 過剰適合とは、モデルが訓練データにあまりにも密接に調整されているため、新しいデータが導入された際に、学習した内容を一般化して適用することができない現象を指す用語です。
学習率の管理
学習率パラメータは、モデルが調整されるときに行う変更の範囲を決定します。 数字が大きいほど、変化も大きい。 学習率を低く設定しすぎると、提示された新しいデータからモデルが十分に学習できなくなる可能性があります。 学習率を高く設定しすぎると、モデルが新しい未確認データに学習した内容を適用できるようになるまで、徐々に学習することができなくなる可能性があります。
このパラメータは、控えめな値を設定し、カスタマイズするデータセットと基盤モデルに最適なハイパーパラメータを見つけるために実験しながら徐々に変更していくのが望ましいでしょう。
トークン制限の設定
チューニング実験中に、モデルの入力と出力で許可されるトークンの数を変更するには、max_seq_lengthパラメータを設定します。 最大シーケンス長は、最大入力トークン数と各プロンプトで許可される出力トークン数の合計です。
許容される入力および出力トークンの数が多ければ多いほど、モデルのチューニングに時間がかかります。 このパラメータは、使用可能な最小の数値に設定しますが、それでもなお、お客様の使用事例を適切に表現できる数値にしてください。
チューニングで使用する予定の制限値に適合する入力および出力の例をトレーニングデータに作成します。 指定された最大シーケンス長を超える例は、実験中に切り捨てられます。 例えば、このパラメータを200に設定し、トレーニングデータに1,000トークンを持つ入力例がある場合、入力例の最初の200トークンだけが使用されます。
シーケンスの長さには、各プロンプトに対する出力トークンも含まれます。つまり、この設定は、チューニング実験中にモデルが出力として生成できるトークンの数を制御します。
ローランクアダプテーションの設定 ( LoRA ファインチューニングのみ)
LoRA ファイン・チューニング実験に限り、以下のチューニング実験パラメーターを調整できる:
alpha
:アダプターのウェイトがベースモデルのウェイトに追加されるときに、その変更に適用される乗数を決定します。 アルファ値をランク値で割って、適用するウエイト変更の割合を算出する。 例えば、アルファが2でランクが8の場合、アダプターの重みはモデルの重みに加えられる前に1/4または25%減らされる。 その結果得られる値は、追加されるウェイトのインパクトの大きさをコントロールする。 この設定は学習率と似たような機能を持つので、実験中はどちらか一方の設定だけを調整するとよいだろう。dropout
: LoRA アダプタのパラメータの重みをランダムにゼロにリセットする。 リセットするウェイトのパーセンテージを示す小数値を指定する。例えば10%なら 0.1。 ドロップアウトは、モデルが特定の訓練データセットに反応するように学習するが、新しい入力に期待通りに反応するように学習を汎化できない場合に発生するオーバーフィッティングを防ぐのに役立つ。rank
:基本モデルの行列に対して行列分解計算を行う際に使用するランク。 数値が低いほど、アダプターで調整するトレーニング可能なパラメーターが少なくなるため、 ジョブ速くなる。 数値が低いと、元のモデルのパラメータ重みへの忠実度が低くなる可能性もある。 基盤モデル学習させたいタスクが、ベースとなる基盤モデルすでにこなせるタスクとは相反するものであったり、まったく新しいものであったりする場合は、より大きな数値を使用します。 最大値は64。target_modules
:チューニング中にローランクアダプターを追加したいベース・ 基盤モデル モデルのレイヤー。 オプションには次のものが含まれます。["all-linear"]
:出力層を除くすべての線形および1次元畳み込みニューラルネットワーク層を選択する。 このオプションは、すべてのデコーダのみのモデルで動作します。[]
(空の配列):モデルアーキテクチャに指定されたデフォルトにアダプタを追加します。["$layer-name", "$layer-name"]
:レイヤーのサブセットを一覧表示します。 レイヤー名はモデル・アーキテクチャによって異なる。 基盤モデル アーキテクチャのモデル層 。
type
:以下のいずれかのオプションを指定する:lora
:低ランク適応のファイン・チューニング実験を行う。 このタイプは、量子化されていない基盤モデルモデルにのみ適用でき、インストラクション・チューニングされていない基盤モデルモデルに最適です。qlora
:量子化低ランク適応のファイン・チューニング実験を行う。 このタイプは、量子化された基盤モデルモデルにのみ適用できる。none
:完全なファイン・チューニング実験を行う。 NONE はデフォルト値です。
基盤モデル アーキテクチャ | 層 | デフォルトで対象となるレイヤー |
---|---|---|
リャマ | [down_proj, up_proj, gate_proj, q_proj, k_proj, v_proj, o_proj] |
["q_proj", "v_proj"] |
Granite | [down_proj, up_proj, gate_proj, q_proj, k_proj, v_proj, o_proj] |
["q_proj", "v_proj"] |
プロンプトの初期化(プロンプトチューニングのみ)
プロンプトチューニング実験を作成する際、最初のプロンプトベクターとして使用するテキストを自分で指定するか、実験に生成させるかを選択することができる。 これらの新規トークンは、ランダムな位置で、またはテキストで指定した語彙または命令の組み込みに基づいて、トレーニング・プロセスを開始します。 基礎となるモデルのサイズが 100 億パラメーターを超えると、使用される初期化方法の重要性が低くなることが研究で示されています。
チューニング・テストの作成時に選択した内容によって、プロンプトの初期化方法がカスタマイズされます。
初期化メソッド: 以下のオプションからメソッドを選択します。
- テキスト: プロンプト・チューニング方式は、プロンプトの初期化テキストを自分で指定する場合に使用します。
- ランダム: プロンプトに含めるためにランダムに選択された値をエクスペリメントで追加できるようにするプロンプト・チューニング方式が使用されます。
初期化テキスト (Initialization text): 追加するテキスト。 ゼロ・ショット・プロンプトに使用するものと同様のタスクの説明または指示を指定します。
詳細情報
親トピック: モデルのチューニング