メインコンテンツまでスキップ

OpenAI ファインチューニング

Weights & Biases を使用して、OpenAI GPT-3.5 や GPT-4 モデルのファインチューニングのメトリクスや設定をログに記録し、パフォーマンスを分析・理解して、新しくファインチューニングされたモデルの結果を同僚と共有できます。ファインチューニング可能なモデルはこちらから確認できます。

備考

Weights and Biases ファインチューニング統合は openai >= 1.0 で動作します。最新バージョンの openai をインストールするには、pip install -U openai を実行してください。

OpenAI ファインチューニングの結果を2行で同期

OpenAIのAPIを使用してOpenAIモデルをファインチューニングする場合、W&Bのインテグレーションを使用して、Experiments、Models、Datasetsを中央のダッシュボードで追跡できます。

from wandb.integration.openai.fine_tuning import WandbLogger

# ファインチューニングのロジック

WandbLogger.sync(fine_tune_job_id=FINETUNE_JOB_ID)

インタラクティブな例をチェック

数行のコードでファインチューンを同期

openai と wandb の最新バージョンを使用していることを確認してください。

pip install --upgrade openai wandb

その後、スクリプトから結果を同期します

from wandb.integration.openai.fine_tuning import WandbLogger

# ワンラインコマンド
WandbLogger.sync()

# オプションのパラメータを渡す
WandbLogger.sync(
fine_tune_job_id=None,
num_fine_tunes=None,
project="OpenAI-Fine-Tune",
entity=None,
overwrite=False,
model_artifact_name="model-metadata",
model_artifact_type="model",
**kwargs_wandb_init
)

リファレンス

引数説明
fine_tune_job_idこれは、client.fine_tuning.jobs.create を使用してファインチューンジョブを作成すると取得できる OpenAI ファインチューン ID です。この引数が None(デフォルト)の場合、既に同期されていないすべての OpenAI ファインチューンジョブが W&B に同期されます。
openai_client初期化された OpenAI クライアントを sync に渡します。クライアントが提供されない場合、ロガー自体が初期化します。デフォルトは None です。
num_fine_tunesID が提供されていない場合、同期されていないすべてのファインチューンが W&B にログされます。この引数は、同期する最近のファインチューンの数を選択するためのものです。num_fine_tunes が 5 の場合、最新の 5 つのファインチューンが選択されます。
projectWeights and Biases プロジェクト名。ここにファインチューンのメトリクス、モデル、データなどがログされます。デフォルトでは、プロジェクト名は "OpenAI-Fine-Tune" です。
entityWeights & Biases ユーザー名またはチーム名。ここに実行が送信されます。デフォルトでは、デフォルトのエンティティが使用され、通常はユーザー名です。
overwrite同一のファインチューンジョブの既存の wandb run を上書きしてログを強制します。デフォルトでは False です。
wait_for_job_success一度 OpenAI ファインチューンジョブが開始されると、通常少し時間がかかります。この設定は、ファインチューンジョブのステータスが「成功」に変わるのを毎秒60秒チェックすることで、ファインチューンジョブが終了次第メトリクスがすぐに W&B にログされることを保証します。デフォルトで True 設定されています。
model_artifact_nameログされるモデルアーティファクトの名前。デフォルトは "model-metadata" です。
model_artifact_typeログされるモデルアーティファクトのタイプ。デフォルトは "model" です。
**kwargs_wandb_initwandb.init() に直接渡される追加の引数

Dataset のバージョン管理と可視化

バージョン管理

ファインチューンのために OpenAI にアップロードするトレーニングデータと検証データは、より簡単にバージョン管理できるように自動的に W&B Artifacts としてログされます。以下に、Artifacts にあるトレーニングファイルのビューを示します。ここでは、このファイルをログした W&B run、ログ日時、このデータセットのバージョン、メタデータ、およびトレーニングデータからトレーニング済みモデルまでのリネージを確認できます。

可視化

データセットは W&B Tables としても可視化され、データセットを探索、検索、および対話することができます。以下の W&B Tables を使用して可視化されたトレーニングサンプルをチェックしてください。

ファインチューニングモデルとモデルバージョン管理

OpenAI はファインチューニングされたモデルのIDを提供します。モデルの重みを取得することはできませんが、WandbLoggermodel_metadata.json ファイルを作成し、モデルの詳細(ハイパーパラメータ、データファイルIDなど)と fine_tuned_model ID を含め、W&B Artifact としてログします。

このモデル (メタデータ) アーティファクトは、W&B Model Registry のモデルにリンクされ、さらには W&B Launch とペアリングすることもできます。

よくある質問

ファインチューンの結果をチームと共有するにはどうすればいいですか?

ファインチューニングジョブをチームアカウントにログするには次のようにします:

WandbLogger.sync(entity="YOUR_TEAM_NAME")

Runs をどのように整理すればいいですか?

W&B runs は自動的に整理され、ジョブタイプ、ベースモデル、学習率、トレーニングファイル名、その他の任意のハイパーパラメータなどの設定パラメータに基づいてフィルター/ソートが可能です。

さらに、runs をリネームしたり、ノートを追加したりタグを作成してグループ化したりすることもできます。

納得がいったら、ワークスペースを保存し、runs と保存されたアーティファクト(トレーニング/検証ファイル)からデータをインポートしてレポートを作成できます。

ファインチューニングされたモデルにアクセスするにはどうすればいいですか?

ファインチューニングされたモデル ID は、アーティファクト (model_metadata.json) および設定として W&B にログされます。

import wandb

ft_artifact = wandb.run.use_artifact("ENTITY/PROJECT/model_metadata:VERSION")
artifact_dir = artifact.download()

ここで VERSION は次のいずれかです:

  • v2 のようなバージョン番号
  • ft-xxxxxxxxx のようなファインチューンID
  • 自動的に追加される latest や手動で追加されるエイリアス

ダウンロードした model_metadata.json ファイルを読み取ることで fine_tuned_model ID にアクセスできます。

ファインチューンが正常に同期されなかった場合はどうすればいいですか?

ファインチューンが正常に W&B にログされていない場合は、overwrite=True を使用してファインチューンジョブIDを渡すことができます:

WandbLogger.sync(
fine_tune_job_id="FINE_TUNE_JOB_ID",
overwrite=True,
)

W&B でデータセットとモデルを追跡できますか?

トレーニングデータと検証データは自動的に W&B にアーティファクトとしてログされます。ファインチューンされたモデルの ID を含むメタデータもアーティファクトとしてログされます。

wandb.Artifactwandb.log などの低レベルの wandb API を使用して、パイプラインを完全に制御することができます。これにより、データとモデルの完全な追跡性が確保されます。

リソース

Was this page helpful?👍👎