そして､ あなたは私たちがここに到着することはないと思っていた｡
ここではJupyter Labでフロンティアモデルの微調整を行っている｡
だから､ まずは輸入品の数々から始める｡
テストデータもインポートする｡
覚えているだろうか､ これは250のテスト例を実行し､ 美しいチャートを与えてくれる､ あの気の利いたコードの一部である｡
その最後に､ 環境をロードし､ ハグする顔のトークンをロードします｡ 今回は使いませんが､
以前のように､ いつもハグやハグする顔のようにしませんか？
そしてOpenAIを使うつもりだ｡
だから､ あそこでもここでもそのラインを走らせる必要がある｡
トレーニング・データとテスト・データをピックルファイルから開くことで､
すべてを一から作り直す必要がなくなる｡
分かった｡
では､ これからどうするかについて話そう｡
そこでOpenAIは､ トレーニングを行う際には､ トレーニングに使用するサンプルポイントを50から100の間で使用することを推奨しています｡
そして､ フロンティア・モデルのファイン・チューニングの主な目的は､ そのトーンやスタイルを適応させることであり､
状況によってはエラーを修正し､ 精度を向上させることである｡
GPTの4つのシリーズのようなモデルは､ 非常に多くのデータで訓練されているので､ 本当にやろうとしていることは､
何か特定のことをさせたいときに十分な例を与えて､ そこから学習させることです｡
でも､ 少なくともここでは､ 彼らが推奨している数より多い500を選ぶつもりだ｡
ええと､ テストしてみたんだけど､ 小さい数字よりはうまくいったよ｡
それで､ 例の中から500を選んでいるんだ｡
今の例はとても小さい｡
私たちのテキストはとても小さく､ 一般的にはもっと大きなトレーニング文書を考えていると思う｡
だから､ この件に関しては悪い気はしない｡
そして現在､ これは実際に微調整を行っている｡
ええと､ 9月23日だと思うけど､ 9月後半までの期間無料なんだ｡
しかし､ 無料でなくなったとしても､ あなたが支払うコストは､ 実際に500個の推論を実行するのにかかるコストと同じようなものである｡
だから､ 現時点では約0ドルというところだろう｡ 05を行うには､ えー､ あなたの通貨で､
または同等額で｡
ええと､ だからまだ小銭なんだ｡
少なくとも9月下旬までは無料だ｡
そのため､ 実際のトレーニングセットである400,000から500のトレーニングセットに分割している｡
ええと､ そして私は50を検証として受け取るつもりだ｡
先ほど､ 検証は必要ないと言いましたが､ トレーニングセットは1エポックしか行わないからです｡
うーん､ でも､ 将来のプロジェクトでこの方法を知ってもらうために､ お見せした方が役に立つと思ったんだ｡
なぜなら､ このすべてがあなたのプロジェクトでも再現できるからだ｡
だからこれを実行する｡
最初のステップは､ JsonlのJSONラインデータを準備することで､ トレーニングデータをこのフォーマットに変換することだとお話ししました｡
まず最初に､ 皆さんがよく知っている関数を使ったメソッドを書きました｡
ええと､ 商品の価格を見積もり､ 価格だけを返信してください｡
そして､ ユーザー・プロンプトには､ その項目からテスト・プロンプトを選ぶ｡
それで､ 1ドル単位まで切り取って､ それを "空 "に置き換えたんだ｡
フロンティア・ラボにはそのような近似値は必要ない｡
そして､ ユーザー・プロンプトに表示されるのも､ この部分だ｡
そして､ アシスタントに "price is "と答え､ 値段を伝える｡
では､ それを実行してみよう｡
念のため､ 例を挙げてみよう｡
モデルが最初に目にする列車ゼロのメッセージ｡
そして､ これがロールシステムだ｡
これがシステム・プロンプトだ｡
それで満足していることを確認してから､ ユーザーをロールバックする｡
そしてこれがユーザー・プロンプトだ｡
ええと......これはいくらかかるんだろう？
そして､ デルファイ､ デルファイ､ 燃料ポンプ・モジュールについての説明だ｡
ええと､ それからこれがアシスタントの返事です｡
価格は226ドル｡
まさかあんなことになるとは......｡
ええと､ どうぞ｡
毎日何かを学んでいる｡
いずれにせよ､ これがメッセージの形式であり､ 現段階ではとても､ とても馴染みのあるものであるはずだ｡
そして､ これがいかに完璧に作られたテスト､ 申し訳ないが､ モデルに提供するトレーニング・データ・ポイントであるかがおわかりいただけるだろう｡
では､ ここでJSON Lを作る関数を紹介しよう｡
これらの項目を繰り返し処理する｡
このテキスト､ このテキスト､ このオブジェクトをそれぞれ作成する｡
そしてJsonを使う｡ はダンプ文字列を単純な文字列に変換する｡
そして､ この文字列の最後にキャリッジ・リターンを追加するだけだ｡
そしてそれを戻して､ 最後のキャリッジ・リターンを取り除く｡
では､ 実際に見てみよう｡
では､ まずそれを実行してみよう｡
私のいつもの失態を犯さないように｡
これでよし｡
そして今､ JSONを作ると言う｡
そして､ トレーニング・データを入れてみましょう｡
全部が混雑しないように､ 最初の3つだけパスしよう｡
もちろん､ ここで糸が戻ってくる｡
そして､ この文字列は...｡
印刷した方が簡単かもしれない｡
空の線がはっきり見えるように印刷しよう｡
文字列の中に1行､ 2行､ 3行と並んでいる｡
うーん､ 巻きついている感じだね｡
各行には､ そのトレーニング・データ・ポイントでやり取りされた全メッセージが含まれているのがわかるだろう｡
オーケー｡
ここまでは順調だ｡
今､ 私たちはこの機能を使っている｡
そうだろう？
Jsonlは項目を取り､ ファイル名を取る｡
そしてこれは超シンプルなものだ｡
そのファイル名を開き､ 上の関数を呼び出して書き出す｡
だから､ そのデモをお見せする必要はないと思う｡
実行する必要はあるが､ 実際に実行することはできる｡
そこで､ トレーニング・データ・セット､ つまり500アイテムからなる微調整されたトレーニング・データ・セットを使います｡
確認しよう｡
トレーニングデータセット全体から500アイテム､ つまり400,000アイテムだ｡
すべてをファイルに書き込んでGPT4にアップロードするつもりはない｡
それをFine Tune train dot JSONというファイルに書き出す｡
では､ それを実行し､ 検証セットも同じように実行しよう｡
2つのファイルを書き込んだが､ 数秒前に書き込まれたばかりであることがわかるだろう｡
だから､ これを開けば開けるんだ｡
実際には､ JupyterLabには派手なJSON行エディタがあるのですが､ ここでは普通のエディタについて説明します｡
そして､ ここでは､ 期待通り､ 500行を想定していることがわかる｡
さあ､ 最後まで500列だ｡
そして､ そのどれもが期待通りの構造を持っている｡
各行が整形されたJSONドキュメントだからです｡
しかし､ 重要なのは､ これをJSONドキュメントとして読み込んでパースすることはできないということだ｡
別々のラインだ｡
それから､ エディターで開く検証ファイルは50だと思う｡
私たちは50行をほぼ同じように言った｡
ええと､ JSONの行でどのように見えるかをお見せしましょう｡
編集者
こんな感じの派手なエディターだ｡
それぞれを開くと､ JSONオブジェクトのようになっている｡
ええと｡
あれを見ろ｡
そうやって始めるべきだったんだ｡
おそらくね｡
何が起こっているのか､ とてもよくわかる｡
メッセージがパッケージされる理由を直感的に理解できるんだ｡
パッケージの仕方だ｡
よし､ これがそのファイルだ｡
これが最後のステップだ｡
この部分だ｡
そろそろ､ これらのファイルをOpenAIにアップロードしなければならない｡
そのために､ OpenAIのドット・ファイルをドット・クリエイトと呼んでいる｡
そしてファイルを渡し､ 目的は微調整だと伝える｡
それと､ ひとつだけ気をつけてほしいことがある｡
このファイルを渡すときは､ このファイルを渡さなければならない｡
バイナリファイルとして開く必要があります｡ なぜなら､ OpenAIにストリームアップされるのは､ そのファイルのバイナリバイトになるからです｡
つまり､ Rではなく､ RBにしたいわけだ｡
ええと､ だから気をつけるべきはほんのちょっとしたニュアンスなんだ｡
ファイルの中身を全部そのままOpenAIに送っているだけです｡
だから､ その行を実行するのに1秒かかる｡
戻ってきたものを検査すると､ ファイル・オブジェクトが返ってくる｡
バイト数は決まっている｡
オブジェクトはファイル､ 目的は微調整､ ステータスは処理｡
だから､ OpenAIはすでにそのファイルを受け取り､ 処理している｡
そして､ 私たちは同じことを検証のために行う｡
走らせればいいんだ｡
そしてもう一度､ 加工される｡
この時点で､ 2つのJSONファイルを作成したことになる｡
1つは微調整したトレーニングセット用､ もう1つは微調整した検証セット用だ｡
ファイルシステムに書き出した｡
そしてそれらをOpenAIにアップロードし､ OpenAIのファイルオブジェクトとして置いています｡
次のセッションでは､ 実際に微調整を行う｡
そこで会おう