見出し画像

雑談:GPT-3.5 Turbo にファインチューニングができるようになりましたね! 

いやいや、待ってました!

GPT-3.5 Turbo fine-tuning and API updates


そもそも、ファインチューニングって

チューニングと言うと、私の世代では、バイクにヨシムラのマフラーに変えて… てきなバイクをいじって性能をアップ(自己満足的な)事をするイメージがあるのですが、AIの世界でも、「ファインチューニング」と言う言葉があるのが面白いですよね。

バイクのチューニングと言えば、マフラー替えて、キャブレーター変えて、サスペンション変えて、見た目も変えてなんて、いろいろな事が出来るのです。 

MidJourneyにバイクのチューニングを頼むとこんな絵が… 

さて、話を戻して、今までも、OpenAIはファインチューニングができるようになっていたのですが、今回は、[GPT-3.5 Turbo]のランゲージモデルがチューニングできるようになったというお話。 

APIコールではなくて、まだコマンドラインでするのかな?

詳しい話はオフィシャルのドキュメントを読んでもらうとして、以前はAPIコールでデーターを送ってやるのじゃなくて、コマンドライン CLIで実行するんですよね。 ファインチューニング用のファイル(JSON)とか用意をしてコマンドラインでパチパチと叩いて実行する。 例えばこんな感じで

$ openai api engines.list
{
  "object": "list",
  "data": [
    {
      "object": "engine",
      "id": "davinci",
      "ready": true,
      "owner": "openai",
      "permissions": null,
      "created": null
    },
    {
      "object": "engine",
      "id": "text-davinci-001",
      "ready": true,
      "owner": "openai",
      "permissions": null,
      "created": null
    },
.... 略

こんな風に、コマンドラインから実行できるので便利なんですが、Pythonのなかからコマンド呼びたいと思うので、GPTに聞いて書いてみるとこんな感じ。 subprocessを使えば、めちゃ楽ですね! API Key は .env ファイルに書いておくといういつものパターンです

import openai
import subprocess
from dotenv import load_dotenv
import os
import json

load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")

new_env = os.environ.copy()
new_env["OPENAI_API_KEY"] = openai.api_key
 #コマンドラインでopenai  の api を実行する とりあえず、エンジンのリストを取る
command_args = ["openai","api","engines.list" ]

proc = subprocess.Popen(
    command_args,           # 実行するコマンド 
    stdout=subprocess.PIPE, # 標準出力のリダイレクト先
    env=new_env             # 環境変数
    )
output = proc.communicate()[0]
data = json.loads(output)

for engine in data['data']:
    print(engine['id'])

実際には、curl コマンドを使って実行します、手順は4ステップ

  1. データーを準備する(JSON)

  2. $curl -https://api.openai.com/v1/files \ .. でデーターファイルをUp

  3. $curl https://api.openai.com/v1/fine_tuning/jobs \ .. ジョブを実行

  4. 出来上がったモデルを使う。"model": "ft:gpt-3.5-turbo:org_id",

詳しくはオフィシャルドキュメントをよく読んでくださいね。

学習用のデーターはOpenAIのサーバーのどこかにあり、学習結果を使う場合のモデルに ft: というフリフィックスを付けて、ポストフィックスにIDを付けるという感じみたいですね。

OpenAIのサーバーにデーター学習データーが有るわけですので、利用料もかかるわけです。

トレーニング: $0.008 / 1,000 トークン

  • 使用量入力: $0.012 / 1K トークン

  • 使用量の出力: $0.016 / 1K トークン

OpenAIのサーバーはどのように構成されていて、どこかで発電された電気で動いているわけですから、電気代のめちゃ高い日本では同じようなサービスをするとしても、国際競争力を持てないのかな~と思います。

国際競争力

雑談ですが、知り合いが輸入住宅と言うのをしていたのですが、カナダから日本に船で家の材料を送る料金(コンテナ代)よりも、横浜港から現場まで送るための送料の方が高かったという話が有りました。

データーセンターなり、AIセンターなりを作るとしても、国際競争力を高めるためには電気代を含めたランニングコストですよね~。
いっそのこと雪の多い日本海側にデーターセンサー作って冬の雪を貯めておいて冷やすなんていう事ををしたほうが良いような …. 

と言う事で、国際競争力とエネルギーコストを元に、GPT4に詩を書いてもらってMidJourneyに絵をかいてもらいました。

データーセンターがこんな感じだと楽しいね。
In the Forests of Competition

In lands where towering trees align,
A tale unfolds of trade design,
From Canada to Japan's shore,
A house transported, legend's lore.

Yet cost and sea did not compete,
With journey from the dock's retreat,
To where the home would stand with grace,
A forest path, a challenging chase.

A data center, AI's domain,
In global race, must not be plain,
The running cost, electric toll,
Will shape the growth, the thriving goal.

Why not then in the snowy side,
Near Japan's sea, where dreams reside?
Store winter's chill, embrace the freeze,
A forest's answer, nature's ease.

For in the woods, we find a way,
To battle cost, to smartly play,
A competition, world embraced,
With energy and wisdom laced.

プロンプトは自分の書いた分を英訳にして、詩のようにした感じ。 これで絵を描いてくれるんだから生成AIは面白いですね。

まとめ

いつも思うのは自分たちがどういった未来を次世代に渡せるかと言う事でが、今の中学生くらいの子供たちがワクワクする道筋を作れたらいいな~なんて思います。 

この記事が気に入ったらサポートをしてみませんか?