LA Butterfly

9_ChatGPTのファインチューニング

以下は、ChatGPTのファインチューニングのためのデータ準備からモデルの使用までの手順を日本語で説明したものです。

### 1. データ準備

#### 1.0 データを準備する

1. **例を準備する**:

ファインチューニング用のデータセットを最低10個、理想的には50〜100個準備する。このデータセット1つと言うのはある質問に対しても班解答が1つです。なのである。10個のデータセットとは1個に対する模範解答が1つでそれを10個要は10個の質問に対して、10個の模範解答を入れると言うことになります。

最小単位のデータセットを用意します 3つのデータインプットが必要です。1つ目がシステム2つ目がユーザ、3つ目がアシスタントとなります。

1つ目のシステムとは
これからデータを入れてファインチューンする背景となります。例えばあなたはこれから大ヒットサスペンス小説を書く小説家ですなどの背景となります。これはシステムロールプロンプトともいいます。

表現が同じことを言っているのに、複数ありとても紛らわしいです。

2つ目のユーザとは
これからあなたがAIに対してしようとする依頼や質問となります。あなたはユーザとなり、ユーザとしてのインプットをAIに対して行います。このインプットのことをプロンプトとも呼びます。

3つ目はアシスタントです。
これは今述べた背景で、あなたが依頼した内容の模範解答を記載します。この模範解答によりAIがそれになって自分自身をファインチームしていきます。
システムレスポンスともいいます。

事前のデータ準備
これら2つ目のユーザプロンプトと3つ目のアシスタント模範解答を最低でも10個Excelなどに用意してください。

プレイグラウンド上で言うと
これらのシステム、ユーザ、アシスタント後はChatGPTサイトのプレイグラウンドで言うと、それぞれ
システムがシステムロールPlumpとともに画面左上のシステムとなります。

ユーザが画面真ん中のUserとなります。

アシスタントが

 

 

こちらのインプットデータははJSON形式で表現する必要があります。ただ、この3つの定義にしてあれば、ChatGPTでJSON形式に変換をすることができます。


例:
“`json
{
“messages”: [
{“role”: “system”, “content”: “背景の説明”},
{“role”: “user”, “content”: “依頼を書く”},
{“role”: “assistant”, “content”: “例のフォーマットを示す”}
]
}
“`

2. **今作成したジェイソンケースにChatGPTにより変換してもらった内容をChatGPTからコピペでテキストファイルにコピーする

ファイル名は例えば`training_data.jsonl`とする。

1.5 データセットをアップロード用に準備する

今までは1つの模範解答例を作成しましたが、最低でも10個の模範解答を1つのデータのまとまりとします。それがここからの作業です。
Pythonのプログラムでできるだけ自動化することも可能ですが、基本的には今までの作業を10回繰り返して10個の模範解答例を1つのテキストファイルにまとめます

1. **JSONL形式に変換する**:

ファインチューニングするには、今まで作成したジェイソン形式のファイルを他の形式に変換する必要があります。その変換自体はChatGPTでできます。ChatGPTにファイルをアップロードして以下の依頼をすれば変換してくれます。

– 例を追加してJSONL形式に変換する。

例:
“`jsonl
{“messages”:[{“role”:”system”,”content”:”背景の説明”},{“role”:”user”,”content”:”依頼を書く”},{“role”:”assistant”,”content”:”例のフォーマットを示す”}]}

これが最終的にフォーマット変換されたデータの例です。それぞれの模範解答に対して123等の番号が振られております。全部で10個程度の模範解答があることがわかると思います。

“`

2. **変換したデータを保存する**:
– `training_data.jsonl`として保存する。

### 2. ファイルをアップロードする

#### 2.0 ファイルをアップロード

今回作戦したジェイソンエル形式のファイルをアップロードする必要があります。そのためには、以下のPythonスクリプトを使用してデータをアップロードしてください。

API鍵とファイルを保存したフォルダパスを指定する必要があります

iPhoneスクリプト上にファイルIDをプリントアウトして表記する必要があります。これが次への鍵となります。

Python上でこのPythonのスクリプトを実施し、ファイルIDを取得してください。


1. **GitHubリンクをコピーする**:
– 必要に応じてGitHubのリンクを取得する。

2. **OpenAIのキーを入力する**:
– OpenAIのAPIキーを入力する(例:`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`)。

3. **JSONLファイルのパスを入力する**:
– JSONLファイルのパスを指定する。

4. **スクリプトを実行してファイルIDを取得する**:
– スクリプトを実行してファイルIDを取得する。

 

### 3. ファインチューニングジョブを作成する

9:43
会員チューニングを実施するためのパイソンスクリプトを走らせる必要があります。その中で先程のファイルIDを指定する必要があります。以下がパイソンスクリプトです。


#### 3.0 ファインチューニングジョブを作成

1. **スクリプトを使用する**:
– ファインチューニングのためのスクリプトを使用する。

2. **GPTモデルを選択する**:
第4パラグラフ目で使用するモデルを指定します。

3. **ファイルIDを入力する**:
第4パラグラフ目で取得した取得したファイルIDを入力する。

4. **ジョブIDを保存する**:
– 最後の最後の公文でジョブIDを出力します。ジョブIDはこの後必要になります。実行後にジョブIDを保存する。

その後、このパイソンスクリプトを実施してジョブIDを取得します。


### 4. ファインチューニングされたモデルを使用する

#### 4.0 Playgroundで使用する

1. **Playgroundにアクセスする**:
– [OpenAI Playground](https://platform.openai.com/playground)にアクセスする。

右側のファインチューンのChatGPT 3.5を選び、チャットを指定しますファインチューンと記載されたすぐ下が今まさにトレーニングをしたモデルとなります。

実施の仕方は2つあり、1つはこのままプレイグラウンド上でファンチュンされたアウトプットを見ることもできます。その場合は今ファインチューンしたモデルをモデル上でプレイグラウンドモデル上で選びます。

プレイグラウンド上ではシステムは入れる必要はなく、ユーザであるユーザ プロンプトを入れます。下のサブミットをして今回訓練したモデルを使用したアウトプットもしくはアシスタントが出力されます。

13:00
Pythonスクリプトで出力することも可能です。以下のパイソンスクリプトを利用してください。ChatGPT PlayグラウンドのAPIを指定します。


2. **ファインチューニングされたモデルを選択する**:
– ファインチューニングされたモデルを選択する。

3. **Playgroundでテストする**:
– Playgroundで入力を行い、モデルの応答を確認する。

#### 4.5 Python APIを使用する

1. **Python APIを使用する**:
– Python APIを使用してファインチューニングされたモデルを使用する。