微調整
アプリケーションのモデルをカスタマイズする方法を学びます。
導入
微調整により、API を介して提供されるモデルをさらに活用できます。
- ヒント付きデザインよりも高品質の結果
- ヒントが保持できるよりも多くの例でトレーニングする機能
- プロンプト時間が短いため、トークンを節約できます
- 低レイテンシのリクエスト
GPT-3 は、オープン インターネットからの大量のテキストで事前トレーニングされています。ほんの少しの例でヒントを与えると、多くの場合、実行しようとしているタスクを直感的に理解し、合理的な完了を生成できます。これは、「数ショット学習」と呼ばれることがよくあります。
微調整は、ヒントが保持できるよりも多くの例でトレーニングすることにより、少数ショット学習を改善し、多数のタスクでより良い結果を達成できるようにします。モデルを微調整した後は、プロンプトで例を提供する必要はなくなりました。これにより、コストが節約され、リクエストの待ち時間が短縮されます。
簡単に言えば、微調整には次の手順が含まれます。
- トレーニング データの準備とアップロード
- 微調整された新しいモデルをトレーニングする
- 微調整されたモデルを使用する
微調整されたモデルのトレーニングと使用に対する課金の詳細については、料金ページをご覧ください。
微調整できるモデルは?
微調整は現在、次の基本モデルでのみ利用できます: davinci curie babbage ada text-davinci-003。
インストール
OpenAI コマンド ライン インターフェイス (CLI) を使用することをお勧めします。インストールするには、実行します
pip install --upgrade openai
(以下の手順はバージョン 0.9.4 以降用です。また、OpenAI CLI には python 3 が必要です。
次の行をシェル初期化スクリプト (.bashrc、zshrc など) に追加するか、微調整コマンドの前にコマンド ラインで実行して、環境変数を設定します。OPENAI_API_KEY
トレーニング データの準備
トレーニング データは、GPT-3 に話し方を教えることです。
データは、 各行がトレーニング例に対応するヒント補完のペアであるJSONLドキュメントである必要があります。CLI データ準備ツールを使用して、 データをこのファイル形式に簡単に変換できます。
{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
...
CLI データ準備ツール
データを検証、アドバイス、再フォーマットするためのツールを開発しました。
openai tools fine_tunes.prepare_data -f <LOCAL_FILE>
このツールは、さまざまな形式のファイルを受け入れます。唯一の要件は、ヒントと補完の列/キーが含まれていることです。CSV、TSV、XLSX、JSON 、または JSONL ファイルを渡すことができ 、提案された変更のプロセスをガイドした後、微調整のために出力を JSONL ファイルに保存します。
微調整されたモデルを作成する
以下は、上記のようにトレーニング データを準備したことを前提としています。
OpenAI CLI を使用して微調整ジョブを開始します。
openai api fine_tunes.create -t <TRAIN_FILE_ID_OR_PATH> -m <BASE_MODEL>
BASE_MODEL はベース モデルの名前です (ada、babbage、curie、davinci)。接尾辞パラメーターを使用して、微調整されたモデルの名前をカスタマイズできます。
上記のコマンドを実行すると、いくつかのことが行われます。
- File API を使用してファイルをアップロードします (または、既にアップロードされたファイルを使用します)。
- 微調整ジョブを作成する
- ジョブが完了するまでイベントをストリーミングします (通常、これには数分かかりますが、キューに多くのジョブがある場合やデータセットが大きい場合は数時間かかることがあります)
すべての微調整ジョブは基本モデル (デフォルトではキュリー) から始まります。モデルの選択は、モデルのパフォーマンスと微調整されたモデルの実行コストに影響します。
微調整ジョブを開始した後、完了するまでに時間がかかる場合があります。ジョブは、システム上の他のジョブの後ろにキューに入れられる場合があり、モデルとデータセットのサイズによっては、モデルのトレーニングに数分から数時間かかる場合があります。イベント ストリームが何らかの理由で中断された場合は、次のコマンドを実行して再開できます。
openai api fine_tunes.follow -i <YOUR_FINE_TUNE_JOB_ID>
ジョブが完了すると、微調整されたモデルの名前が表示されます。
微調整ジョブの作成に加えて、既存のジョブの一覧表示、ジョブ ステータスの取得、またはジョブのキャンセルを行うことができます。
# List all created fine-tunes
openai api fine_tunes.list
# Retrieve the state of a fine-tune. The resulting object includes
# job status (which can be one of pending, running, succeeded, or failed)
# and other information
openai api fine_tunes.get -i <YOUR_FINE_TUNE_JOB_ID>
# Cancel a job
openai api fine_tunes.cancel -i <YOUR_FINE_TUNE_JOB_ID>
微調整されたモデルを使用する
OpenAI CLI:
openai api completions.create -m <FINE_TUNED_MODEL> -p <YOUR_PROMPT>
カール
curl https://api.openai.com/v1/completions \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt": YOUR_PROMPT, "model": FINE_TUNED_MODEL}'
パイソン:
import openai
openai.Completion.create(
model=FINE_TUNED_MODEL,
prompt=YOUR_PROMPT)
Node.js
const response = await openai.createCompletion({
model: FINE_TUNED_MODEL
prompt: YOUR_PROMPT,
});