Python ライブラリーを使用して、 IBM watsonx.ai のファウンデーション・モデルをプログラマチックにプロンプト・チューニングすることができます。
foundation modelをプロンプト調整するには、提供されたトレーニング データを使用する実験を実行します。 実験は、プロンプト入力に対してモデルが返すと予想される出力をfoundation modelに示す機械学習プロセスです。 チューニング・プロセスは複雑で、データ資産、トレーニング資産、およびデプロイメント資産が含まれます。
python ライブラリーには、ファウンデーション・モデルをチューニングするためのメソッドとヘルパー・クラスがあります。 ライブラリの詳細については、 「プロンプトのチューニング」を参照してください。
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'
foundation modelを変更する場合は、トレーニング データも置き換える必要があります。 ノートブックの 「データのロード」 セクションのファイル・パスを置き換えます。
url = "{path to your file}"
if not os.path.isfile(filename):
wget.download(url)
また、プロンプトを調整できる他のファウンデーション・モデルを調整するサンプル・ノートブックを使用することもできます。
-
flan-t5ノートブックには、foundation modelを調整するための手順がありますが、ハイパーパラメータの最適化のための手順は含まれていません。
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 リファレンスを参照してください。
サンプル・ノートブックを使用した調整済みモデルの評価
サンプル・ノートブックには、調整されたモデルをデプロイし、調整されたモデルを推論し、調整されたモデル出力の精度を計算するコードがあります。 また、基礎となるfoundation modelを推論し、ベースモデル出力の精度を計算するので、比較することができます。
サンプル・ノートブックを使用して他のモデルを調整および評価する場合は、以下のコードの 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 ライブラリー