基盤モデルプログラムで調整する ( Python )
Python ライブラリを使えば、 IBM watsonx.ai の基盤モデルプログラムで調整することができる。
基盤モデルプロンプトチューニングするには、あなたが提供したトレーニングデータを使って実験を行う。 実験は機械学習プロセスであり、入力されたプロンプトに対してモデルが返すと期待される出力を基盤モデルモデルに示す。 チューニング・プロセスは複雑で、データ資産、トレーニング資産、およびデプロイメント資産が含まれます。
python ライブラリーには、ファウンデーション・モデルをチューニングするためのメソッドとヘルパー・クラスがあります。 ライブラリの詳細については 、Tuning を参照してください。
watsonx.ai のノートブックから watsonx.ai Python ライブラリーで使用可能な関数を使用して、ファウンデーション・モデルをプロンプト調整します。
迅速な調整のためのサンプルノートブック
プロンプト・チューニングは非推奨であり、将来的に削除される予定です。
watsonxを使用して、レンタカー会社の顧客満足度ドキュメントIBM granite-13b-instruct-v2モデルを調整するサンプルでPythonノートブックには、 watsonx.aiで基礎モデルをプロンプト調整するためのコードが含まれています。
サンプル・ノートブックは、チューニングの 2 つの主なフェーズを支援します。
サンプル・ノートブックは、 granite-13b-instruct-v2 モデルをプロンプト調整するように設計されています。 ただし、他のファウンデーション・モデルのチューニングにも使用できます。 これを行うには、 base_model
参照を以下のように置き換えます。
base_model='google/flan-t5-xl'
基盤モデル変更する場合は、トレーニングデータも置き換える必要があります。 ノートブックの 「データのロード」 セクションのファイル・パスを置き換えます。
url = "{path to your file}"
if not os.path.isfile(filename):
wget.download(url)
また、プロンプトを調整できる他のファウンデーション・モデルを調整するサンプル・ノートブックを使用することもできます。
-
flan-t5 ノートブックには基盤モデル調整するステップがありますが、ハイパーパラメータ最適化のステップは含まれていません。
watsonx.aiを使用して、消費者金融保護局の文書を使用して Meta llama-2-13b-chatモデルを調整します。
サンプル・ノートブックを使用したチューニング・パラメーター値の最適化
サンプル・ノートブックには、 learning_rate
パラメーター値を最適化するコードがあります。 サンプル・ノートブックは、学習率の値を体系的に変更し、テストを 10 回再実行するため、10 回の実行で損失を比較することができます。 サンプル・ノートブックは、最適な学習率の値を計算します。
サンプル・ノートブックは、10 個の個別の実験を生成しますが、同じ実験を 10 回実行するわけではありません。
最適化するパラメーターは、ノートブックの 「検索スペースおよび最適化 (Search space and optimization)」 セクションで定義されます。
サンプル・ノートブックを編集または追加して自動化コードを実行し、学習率に加えて以下のパラメーターを最適化することができます。
accumulate_steps
batch_size
num_epochs
多数のパラメーターの最適値を一度に確認するには、以下のようなコードを使用するようにサンプル・ノートブックを変更します。以下に例を示します。
SPACE = [
skopt.space.Real(0.001, 0.09, name='learning_rate', prior='log-uniform'),
skopt.space.Integer(1, 50, name='num_epochs', prior='uniform'),
skopt.space.Integer(1, 16, name='batch_size', prior='uniform')
]
多数のパラメーターを一度に最適化すると、それらのパラメーターが一緒に機能するため、時間を節約できます。 それらの値は相互に影響を及ぼし、それらの間の値の正しいバランスが最良の結果をもたらします。
サンプル・ノートブックは、scikit-optimize ライブラリーのメソッドを使用します。 詳細については、 scikit-optimize API リファレンスを参照してください。
サンプル・ノートブックを使用した調整済みモデルの評価
サンプル・ノートブックには、調整されたモデルをデプロイし、調整されたモデルを推論し、調整されたモデル出力の精度を計算するコードがあります。 また、基礎となる基盤モデル推論し、比較できるように基礎モデル出力の精度を計算する。
サンプル・ノートブックを使用して他のモデルを調整および評価する場合は、以下のコードの model_id
パラメーターの値を置き換えることができます。
base_model = ModelInference(
model_id='ibm/granite-13b-instruct-v2',
params=generate_params,
api_client=client
)
例えば、google/flan-t5-xl
と指定します。
また、プロンプト・テキストを、独自のトレーニング・データ・セットからのプロンプトに置き換える必要もあります。
response = tuned_model.generate_text(prompt="{your text here}")
チューニングされたモデルの正確度スコアが低い場合は、 チューニングされたモデル出力でのデータ品質の問題の対処で、トレーニング・データを改善する方法についていくつかのアイデアを検討してください。
チューニング・パラメーターの最適化は、使用しているモデルおよびトレーニング・データに固有のものであることに注意してください。 モデルまたはトレーニング・データのいずれかを変更する場合は、チューニング・エクスペリメントを再評価する必要があります。 調整パラメーターを再度調整して、拡張データ・セット用に最適化します。
親トピック: Python ライブラリー