独自のプライベート チャットを開発するGPT (5) トレーニングの微調整 openai モデル

微調整

アプリケーションのモデルをカスタマイズする方法を学びます。

導入

微調整により、API を介して提供されるモデルをさらに活用できます。

  1. ヒント付きデザインよりも高品質の結果
  2. ヒントが保持できるよりも多くの例でトレーニングする機能
  3. プロンプト時間が短いため、トークンを節約できます
  4. 低レイテンシのリクエスト

GPT-3 は、オープン インターネットからの大量のテキストで事前トレーニングされています。ほんの少しの例でヒントを与えると、多くの場合、実行しようとしているタスクを直感的に理解し、合理的な完了を生成できます。これは、「数ショット学習」と呼ばれることがよくあります。

微調整は、ヒントが保持できるよりも多くの例でトレーニングすることにより、少数ショット学習を改善し、多数のタスクでより良い結果を達成できるようにします。モデルを微調整した後は、プロンプトで例を提供する必要はなくなりました。これにより、コストが節約され、リクエストの待ち時間が短縮されます。

簡単に言えば、微調整には次の手順が含まれます。

  1. トレーニング データの準備とアップロード
  2. 微調整された新しいモデルをトレーニングする
  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)。接尾辞パラメーターを使用して、微調整されたモデルの名前をカスタマイズできます

上記のコマンドを実行すると、いくつかのことが行われます。

  1. File API を使用してファイルをアップロードします (または、既にアップロードされたファイルを使用します)。
  2. 微調整ジョブを作成する
  3. ジョブが完了するまでイベントをストリーミングします (通常、これには数分かかりますが、キューに多くのジョブがある場合やデータセットが大きい場合は数時間かかることがあります)

すべての微調整ジョブは基本モデル (デフォルトではキュリー) から始まります。モデルの選択は、モデルのパフォーマンスと微調整されたモデルの実行コストに影響します。

微調整ジョブを開始した後、完了するまでに時間がかかる場合があります。ジョブは、システム上の他のジョブの後ろにキューに入れられる場合があり、モデルとデータセットのサイズによっては、モデルのトレーニングに数分から数時間かかる場合があります。イベント ストリームが何らかの理由で中断された場合は、次のコマンドを実行して再開できます。

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,
});

おすすめ

転載: blog.csdn.net/taoshihan/article/details/129036452