独自の ChatGPT-OpenAI 微調整モデルをトレーニングする

OpenAI はついに決意を固めました - ChatGPT API を正式にオープンします!

ChatGPT API アドレス: https://platform.openai.com/docs/guides/chat

gpt-3.5-turbo の新しいモデルである OpenAI は、
公式 ChatGPT API を正式にオープンし、開発者に新たな扉を開きました。

調整_

公式ドキュメントのアドレス: OpenAI API

ChatGPT のパフォーマンスについては、すでに誰もが彼の素晴らしさを感じていますが、試用後、それをどのように個人向けに、または企業向けにカスタマイズするかについては、その微調整機能について言及する必要があります。

微調整とは、より優れた適応性を達成するために、すでにトレーニングされたモデルに新しいデータを使用して微調整することを指します。自然言語処理の分野では、微調整は主に言語モデルに適用され、通常は事前トレーニングされたモデルに基づいて、特定のタスクの要件を満たすようにモデルを微調整するために一定規模の新しいデータセットを使用します。

例として、プレフィックスが与えられた一貫したテキストを生成できる、事前トレーニングされたテキスト生成モデルがあるとします。ただし、このモデルは、医療質問応答などの特定のビジネス シナリオには適していない可能性があります。現時点では、一定規模の医療質問回答データセットを使用してこのモデルを微調整できるため、医療質問回答シナリオによりよく適応し、実際のニーズにより一致したテキストを生成できます。

微調整の利点は、事前トレーニングされたモデルにはすでに優れた言語モデリング機能があり、すでに多くの言語知識が含まれているため、モデルを最初からトレーニングする必要がないことです。ビジネス データ セットをインポートしてトレーニングするだけです。

微調整ステップ

  1. トレーニングデータを準備してアップロードする
  2. 新しい微調整されたモデルをトレーニングする
  3. 微調整されたモデルを使用する

どのモデルが微調整可能ですか?

現在、微調整は次のベース モデルでのみ利用可能です: davinci curie babbage ada text-davinci-003。

ChatGPT の最新モデルである gpt-3.5-turbo の新モデルが微調整に対応しているかどうかは試していません。

練習を始める

1. python3環境の準備

OpenAI モデルを微調整するには、Python3 環境が必要です。(Mac コンピュータの新規インストールを例に挙げます)

1.1 最初に brew を更新する

brew update

最初の実行では、github ウェアハウスにアクセスできないというメッセージが表示されて実行に失敗したため、再度実行したことに注意してください。

1.2 Python3 のインストール -インストールプロセスは比較的長いことに注意してください。私はインストールに 10 分以上かかりました

brew install python3

 -インストールプロセスは比較的長く、インストールに 10 分以上かかったことに注意してください。我慢して

1.3 pip のインストールを続ける

この時点で公式コマンドを実行すると、次のようなエラーが報告されます。

zsh: コマンドが見つかりません: pip

まずダウンロードしてください:

curl https://bootstrap.pypa.io/pip/get-pip.py -o get-pip.py

Python3を使用してインストールします

sudo python3 get-pip.py

 インストール後に確認する

pip -V

1.4 パンダをインストールする

この手順も必要です。そうしないと、パンダが見つからないことを示すエラーが後で報告されます。

インストールコマンド:

pip install pandas

 このようにして準備作業が完了し、OpenAIの公式ドキュメントをインストールして動作させることができます。

2. OpenAI環境の準備

2.1 インストールツール

pip install --upgrade openai

 2.2 独自のコーパスを準備する

ハードディスク上に新しい 1.json ファイルを作成しました。内容は次のとおりです。

{"prompt": "你是谁", "completion": "我是唯一客服小助手"}
{"prompt": "你会做什么", "completion": "我能帮你解答使用唯一客服时的问题"}

2.3 環境変数の設定 - OpenAI の API のキーを設定する必要があります

export OPENAI_API_KEY="自己的key"

2.4 このファイルは OpenAI のツールによってフォーマットされています

openai tools fine_tunes.prepare_data -f 本地的json文件路径

私の例: 

openai tools fine_tunes.prepare_data -f /Users/szz/app/1.json

翻訳:

分析中。
 
- ファイル拡張子に従って、テキスト ファイルを提供します。
- ファイルには 3 つのプロンプト補完ペアが含まれています。一般に、少なくとも数百の例を推奨します。例の数が 2 倍になるたびにパフォーマンスが直線的に向上することがわかりました。
「補完」列/キーには空の文字列を含めるべきではありません。[2]
- すべての補完はプレフィックス "{"prompt":"you` で始まります。ほとんどの場合、プレフィックスなしで出力データを補完に追加するだけです。補完は空白文字で始まる必要があります
。 (「」)。これは、使用するトークン化により、より良い結果が得られる傾向があります。詳細については、https://beta.openai.com/docs/guides/fine-tuning/preparing-your-dataset を参照してください
 
。 分析に基づいて、次のアクションが実行されます。
- [必須] 形式「TXT」が変換されます。 to " JSONL"`
- [必須] 1 行の空白コンプリーターを削除します
- [推奨] すべての補完からプレフィックス "{"prompt":"you` を削除します [Y/n]:
- [推奨] 補完の先頭に空白文字を追加します [ Y/n]:
 
データは新しい JSONL ファイルに書き込まれます。続行 [Y/n]:
 
変更したファイルを `/tmp/json_prepared.jsonl` に書き込みます
。見てください。
微調整するときにこのファイルを使用します。
> openai apifine_tunes.create -t​​ "/tmp/jsonprepared.jsonl"
生成されたテキストが予期した場所で終わるように、`stop=[""}"]` を必ず含めてください。
モデルがトレーニングされると、「curie」モデルのトレーニングには約 2.47 分かかりますが、「ada」と「babbage」の場合はさらに短い時間かかります。あなたの前では、各ジョブは約 30 分間キューに並んでいました。 

このツールは、指定した json ファイルをフォーマットします。フォーマットされたファイルのサフィックスは jsonl で、ファイルは指定した json ファイルと同じディレクトリに配置されます。

 内容は次のとおりです。

{"prompt":"你是谁 ->","completion":" 我是唯一客服小助手\n"}
{"prompt":"你会做什么 ->","completion":" 我能帮你解答使用唯一客服时的问题\n"}

提供した元のファイルとは若干異なることがわかります。

3. OpenAI がトレーニングを開始

3.1 微調整されたモデルの作成

ダ ヴィンチ モデルに基づいて独自のモデルを作成します。トレーニングできるのは少数のモデルのみです。

ada、、、、  babbagecurie_davinci

openai api fine_tunes.create -t 数据文件路径 -m 基础模型

私の例: 

openai api fine_tunes.create -t /Users/szz/app/1_prepared.jsonl -m davinci

このとき、OpenAI キーが見つからないというエラーが報告される場合がありますが、その場合はエクスポート コマンドを再度実行できます。

エラー:

成功:

現時点では、テキストのサイズに応じて数分または数時間辛抱強く待ってください。公式によると、最大ファイルサイズは 1GB です。

3.2 すべての微調整タスクのリストを作成する

openai api fine_tunes.list

 ステータスが pending~training であることがわかります。

 3.3 微調整タスクのステータスを表示する

ID は上記のリストの ID で、実行されていることがわかります。

openai api fine_tunes.get -i 任务ID
openai api fine_tunes.get -i ft-K2iPDoch4D3Aj2fkGATUKXeM

 3.4 トレーニングの完了

タスクが完了すると、fine_tuned_model という単語にモデル名が表示され、ステータスが緑色で成功と表示されます。

 このモデルは後で使用することができ、モデル名が表示されます。

3.5 使用モデル

openai api completions.create -m  模型名称  -p 提示

注: トレーニング セットが小さすぎるため、Da Vinci モデルが使用されており、トレーニング済みデータ セットはあまり役に立ちません。ChatGPTに質問したところ、次のような答えが返ってきました。

ChatGPT:
データセットが非常に小さいことが、使いにくい理由の 1 つである可能性があります。微調整のプロセスでは、モデルは元の言語データを特定のタスクの言語表現にマッピングする方法を学習する必要があるため、適切なサイズのデータ​​セットは微調整にとって非常に重要です。データセットが小さい場合、モデルはデータ内で無関係なパターンを検出し、不適切な出力につながる可能性があります。

さらに、OpenAI の da Vinci モデルは、一部の不適切なコンテンツを含むあらゆる種類のコンテンツを生成する可能性があります。不適切なコンテンツの生成を減らすには、生成プロセスをより詳細に制御する必要があります。より具体的なコンテキストをジェネレーターに提供したり、生成された結果を制御するためのいくつかの生成戦略を採用したりするなど、いくつかのトリックを使用できます。

最後に、モデルが複雑なタスクや言語データをより適切に処理できるように、より大きなモデルを使用して微調整を試みることができ、それによって生成される結果の品質が向上します。

 Q: より具体的なコンテキストをジェネレーターに提供するか、生成結果を制御するために何らかの生成戦略を採用するにはどうすればよいですか?

より具体的なコンテキストを提供するには、生成されるコンテンツに関連する情報である可能性があるより多くの入力テキストをジェネレーターに提供することで実現できます。たとえば、料理に関する段落を生成したい場合、材料、調理器具、方法などに関する情報を提供すると、ジェネレーターが何を生成するかをよりよく理解できるようになります。

ビルド ポリシーを使用してビルドの結果を制御するには、いくつかの方法があります。たとえば、次のような方法があります。

  1. プリセットテンプレート: 事前にいくつかの生成テンプレートを用意し、生成されたコンテンツをこれらのテンプレートに埋め込むことで生成結果を制御します。

  2. ジェネレーターのパラメーターを調整する: 温度、サンプリング方法などのジェネレーターのパラメーターを調整して、生成される結果の多様性と精度を制御します。

  3. 生成された結果をフィルタリングする: キーワード抽出、固有表現認識などの自然言語処理技術を使用して、生成された結果をフィルタリングし、要件を満たすコンテンツを保持します。

4. サプリメント

4.1 PlayGroud で独自に作成したモデルを表示してテストする

OpenAI API

自分でトレーニングしたモデルがこの場所に表示されます。

4.2 トレーニング費用

モデルのトレーニングには料金がかかり、与えられた 18 米ドルの割り当てから差し引かれますが、データセットがそれほど大きくない限り、差し引かれる金額は非常に少額です。昨日は 0.12 米ドル差し引きました。ただし、金額を差し引くか 3 か月が経過すると、割り当ては空になり、支払いアカウントを設定できるようになり、120 米ドルの割り当てが与えられることに注意してください。


—————————————————
参考リンク:

独自のプライベート チャットを開発するGPT (5) トレーニングと openai モデルの微調整_赤ずきんちゃん 2.0 ブログ - CSDN ブログの微調整アプリケーション用にモデルをカスタマイズする方法を学びます。はじめに 微調整により、以下を提供することで、API を通じて提供されるモデルからさらに多くのことを得ることができます。 ヒント設計よりも高品質の結果 ヒントが保持できるよりも多くのサンプルでトレーニングできる機能 ヒント時間が短いため、トークンを節約できる 待ち時間が短い GPT-3 リクエストオープンなインターネットからの大量のテキストで事前トレーニングされています。ほんの数例を示したヒントを与えると、多くの場合、どのようなタスクを実行しようとしているのかを直感的に理解し、妥当な完了を生成することができます。... https://blog.csdn.net/taoshihan/article/details/129036452

独自のプライベート chatGPT を開発する (6) 独自の chatGPT openai モデルをトレーニングし、モデルを微調整し、微調整タスクをリストし、カスタム モデル チュートリアルを使用する..._赤ずきんちゃん 2.0 ブログ - CSDN ブログ プライベート chatGPT を開発するとき、公式の基本モデルを使用すると、答えられる質問が私たち独自の事前設定された答えと一致しない可能性があります。現在、私たちは独自のプライベート モデルをトレーニングするために、公式のトレーニング メソッドを通じてデータの一部を提供しています。ツール pip install --upgrade openai に従って、環境変数export OPENAI_API_KEY="自分のキー" ローカルデータの準備{"prompt": "Who are you", "complet... https://blog.csdn.net/taoshihan/article/details/129053834

おすすめ

転載: blog.csdn.net/m0_37609579/article/details/129292304