モデルをファインチューニング

指定したトレーニングデータセットでモデルをファインチューニングします。

オプション 

  • [アカウント名:] では使用する AI アカウントの名前のテキスト式を指定します。現在のファイルで、[AI アカウント設定] スクリプトステップを使用してアカウントを設定し、このスクリプトステップが実行される前にこの名前を割り当てることができます。

  • [ベースモデル:] ではファインチューニングするテキスト生成モデルのテキスト式を指定します。サポートされているモデルについては、FileMaker 動作環境を参照してください。

  • [トレーニングデータ:] ではファインチューニングのためのトレーニングデータのソースを指定します:

    • テーブル: 現在の対象レコードに基づいて指定されたテーブルオカレンスのデータを使用します。トレーニングでは、[出力例フィールド:] のデータがアシスタントの応答として使用され、他のすべてのフィールドのデータが対応するユーザプロンプトとして使用されます。

    • ファイル: トレーニングデータを含む JSONL ファイルを使用します。各行はユーザプロンプトと対応するアシスタントの応答を含む有効な JSON オブジェクトである必要があります。

  • [応答のターゲット:] ではこのスクリプトステップによって開始されたファインチューニングジョブに関する情報を含む JSON オブジェクトをモデルプロバイダが返すフィールドまたは変数を指定します。

  • [ファインチューニングパラメータ:] ではモデルプロバイダがサポートするファインチューニングオプションのキーと値のペアで構成される JSON オブジェクトのテキスト式を指定します。

[トレーニングデータ:] が [テーブル] の場合にのみ使用できるオプション:

  • [テーブル] の値にはトレーニングデータに使用するテーブルオカレンスを指定します。

  • [出力例フィールド:] ではトレーニングでの適切なアシスタントの応答または回答を含むテーブルのフィールドを指定します。

[トレーニングデータ:] が [ファイル] の場合にのみ使用できるオプション:

  • [ファイル] の値にはトレーニングデータを含む JSONL ファイルの 1 つまたは複数のパスの一覧を指定します。パスには file パス接頭語のいずれかを使用する必要があります。スクリプトステップは一覧を検索して最初に見つかった JSONL ファイルを追加します。ファイルパスの作成を参照してください。

互換性 

製品 サポート
FileMaker Pro はい
FileMaker Go はい
FileMaker WebDirect はい
FileMaker Server はい
FileMaker Cloud はい
FileMaker Data API はい
カスタム Web 公開 はい

起点バージョン 

22.0

説明 

このスクリプトステップはサポートされているモデルプロバイダにトレーニングデータを送信し、低ランク適応 (LoRA) 技術を使用してベース AI モデルのファインチューニングされたバージョンを作成します。ファインチューニングによってベースモデルの一般的な機能を維持しながら独自のデータでモデルをトレーニングすることで、特定のタスク、分野、または応答スタイルに合わせてモデルの動作をカスタマイズできます。たとえば、より適切に応答できるように会社の特定の用語、文体、または分野の専門知識を使用してモデルをファインチューニングできます。LoRA は元の重さを変更せずにモデルにトレーニング可能な小さなパラメータを追加する効率的な方法です。このアプローチは完全なモデルのファインチューニングと比較して計算リソースとメモリを大幅に抑えることができ、同程度のパフォーマンス向上も達成できます。

[アカウント名:] で指定した AI アカウントは次のモデルプロバイダのいずれかに設定する必要があります:

  • OpenAI

  • Apple シリコン Mac 上の FileMaker Server に付属する AI モデルサーバー

他のモデルプロバイダおよびオペレーティングシステムではファインチューニングがサポートされていません。FileMaker 技術仕様を参照してください。

トレーニングデータ

[トレーニングデータ:] は FileMaker テーブルまたは JSON Lines (JSONL) ファイルのいずれかから指定できます。各トレーニング例はユーザプロンプトおよび正しいアシスタントの応答で構成されています。類似するプロンプトが与えられた場合、モデルはトレーニング例と同様の応答を生成することができます。

トレーニングデータの供給元 機能

テーブル

テーブルオカレンスを指定した場合、[出力例フィールド:] のデータをアシスタントの応答として、他のすべてのフィールドのデータを対応するユーザプロンプトとして送信します。現在の対象レコードの各レコード (または関連テーブルを指定する場合は各関連レコード) では、スクリプトステップは次の形式で JSON オブジェクトを作成してから、それらをすべて JSONL ファイルとしてモデルプロバイダに送信します。

コピー
{
  "messages"
  [
    {
      "content" : "<フィールド名 1>=<データ 1>, <フィールド名 2>=<データ 2>, ... ",
      "role" : "user"
    },
    {
      "content" : "<出力例フィールドのデータ>",
      "role" : "assistant"
    }
  ]
}

メモ  このオプションではユーザプロンプトで送信するフィールドを指定することはできません。ユーザプロンプトに含めるフィールドを指定するには、[レコードを JSONL として保存] スクリプトステップを使用して JSONL ファイルを作成してから、このスクリプトステップの [ファイル:] オプションを使用してそのファイルをトレーニングデータとして送信します。

ファイル

[ファイル:] で指定したパスの一覧で最初に見つかった JSONL ファイルを送信します。JSONL ファイルの各行には少なくともユーザプロンプトと対応するアシスタントの応答を含む JSON オブジェクトを次の形式で作成する必要があります。

コピー
{
  "messages"
  [
    {
      "content" : "<ユーザプロンプト>",
      "role" : "user"
    },
    {
      "content" : "<アシスタントプロンプト>",
      "role" : "assistant"
    }
  ]
}

メモ  わかりやすくするために複数の行で示されていますが、各 JSON オブジェクトは JSONL ファイルで 1 行になっている必要があります。

[レコードを JSONL として保存] スクリプトステップを使用して [ファインチューニングの形式] オプションをオンにするとレコードデータからこのファイルを作成できます。

応答のターゲット

このスクリプトステップによって開始されるファインチューニングジョブに関する情報を取得するには、[応答のターゲット] オプションの変数またはフィールドを指定します。ファインチューニングにはかなりの時間がかかるため、プロセスが完了してファインチューニングされたモデルがいつ使用できるかを判断するにはモデルプロバイダで確認する必要があります。

たとえば、次の場合 AI モデルサーバーが返す応答:

  • [ファイル:] で指定した JSONL ファイルが「my-training-data.jsonl」の場合。

  • [ベースモデル:] が google/codegemma-7b-it の場合。

  • [ファインチューニングパラメータ:] で指定した fine_tuned_model_name キーの値が my-fine-tuned-model-name の場合。[応答のターゲット:] の fine_tuned_model キーの値が AI モデルサーバーによって割り当てられたフルネームの場合。

コピー
{
  "result": {
    "object": "fine_tuning.job",
    "id": "fm-ftjob-1753297022103",
    "file_id": "fm-ft-train-1753297022070",
    "model": "google/codegemma-7b-it",
    "created_at": 1753297022103,
    "fine_tuned_model": "fm-mlx-my-fine-tuned-model-name",
    "status": "queued",
    "training_file": "my-training-data.jsonl",
    "tags": [
      "fine-tune"
    ]
  }
}

AI モデルサーバーのファインチューニングが完了した時間を確認するには、FileMaker Server Admin Console にサインインします。メモを参照してください。

ファインチューニングパラメータ

[ファインチューニングパラメータ:] オプションを使用してモデルプロバイダにサポートされているファインチューニングパラメータを指定できます。サポートされているパラメータのキー名とその有効な範囲については、モデルプロバイダのマニュアルを参照してください。

FileMaker Server に付属の AI モデルサーバーの場合、必要に応じて、次のキーと値を使用してファインチューニングを調整できます。キーが指定されていない場合や [ファインチューニングパラメータ:] オプションが使用されていない場合、スクリプトステップにはデフォルト値が使用されます。

パラメータ 説明 デフォルト値

max_steps

トレーニングステップ (または繰り返し) の合計回数。繰り返す回数が増えるほどより多くのマシンメモリと時間が必要になりますが、過学習のリスクもあります。

1000

learning_rate

各トレーニングステップでモデルが調整する量を制御する数字。値が高いほどトレーニングが高速になりますが、過剰にパフォーマンスが最適化され性能が低下する場合があります。値が低いほどトレーニングが安定しますが、結果の収束は遅くなります。

2e-4 (0.0002)

lora_layers

ファインチューニング中に LoRA アダプタが適用されるモデルのレイヤーの数。値が低いほどメモリ使用量が少なくトレーニングが高速になり、単純なモデル変更に適しています。値が高いほどメモリ使用量が多くトレーニングが遅くなり、より複雑なモデル変更に適しています。

4

batch_size

ファインチューニング中のモデルの重さを更新する前に一括で処理されるトレーニング例の数。値が低いほどメモリ使用量が少なくトレーニングが遅くなります。値が高いほどメモリ使用量が多くトレーニングが高速になります。

1

fine_tuned_model_name

トレーニング後にファインチューニング済みモデルのカスタム名を制御します。このパラメータで指定したルート名に対して、AI モデルサーバーはスペースをハイフンに変換して fm-mlx- 接頭語を追加し、このファインチューニング済みモデルを使用する場合に他のスクリプトステップや関数で使用するフルネームを生成します。たとえば、my support model を指定すると、フルネームは fm-mlx-my-support-model になります。値が指定されていない場合、AI モデルサーバーは接頭語の後にタイムスタンプを追加します (例: fm-mlx-1753215585244)。

完全なファインチューニング済みのモデル名は [応答のターゲット] に返されます。

警告  フルネームが既存のファインチューニング済みモデルのフルネームと一致する場合、新しいファインチューニング済みモデルのトレーニングが始まる前に既存のファインチューニング済みモデルが削除されます。

タイムスタンプ

たとえば、この JSON オブジェクトは [ファインチューニングパラメータ:] オプションのキーを設定します:

コピー
{
  "max_steps": 2000,
  "learning_rate": 1e-4,
  "batch_size": 2,
  "lora_layers": 6,
  "fine_tuned_model_name": "customer-support-v1"
}

メモ 

  • ファインチューニングには大量の計算リソースが必要です。AI モデルサーバーで一度に複数のファインチューニングジョブを実行するとシステムパフォーマンスに悪影響を及ぼすおそれがあります。

  • AI モデルサーバーでファインチューニング済みモデルの状態を監視するには (例: トレーニングがいつ完了するかを通知するため)、FileMaker Server Admin Console を開きます。JSONL ファイルをアップロードしてファインチューニング済みモデルを直接作成することもできます。FileMaker Server ヘルプの AI ファインチューニング済みモデルの作成を参照してください。

例 1- テーブルデータを使用した基本的なファインチューニング

テーブルのデータを使用して OpenAI モデルをファインチューニングします。スクリプトで OpenAI の AI アカウントを設定して「サポート QA」レイアウトに移動します。「サポート QA」のテーブルには「質問」および「回答」フィールドがあります。スクリプトで検索を実行して目的の対象レコードを取得してから、それらのレコードのデータを送信して GPT-4.1 モデルをファインチューニングし、[出力例フィールド:] に「回答」フィールドを指定します (他のすべてのフィールドのデータがユーザプロンプトとして送信されます)。

コピー
AI アカウント設定 [アカウント名: "my-account" ; モデルプロバイダ: OpenAI ; API キー: グローバル::OpenAI API キー]

レイアウト切り替え [「サポート QA」(サポート QA)]

検索実行 [記憶する]

モデルをファインチューニング [アカウント名: "my-account" ; ベースモデル: "gpt-4.1-2025-04-14" ; トレーニングデータ: テーブル ; 「サポート QA」 ; 出力例フィールド: サポート QA::回答 ; 応答のターゲット: $$responseTarget]

OpenAI からトレーニングの完了が通知されてファインチューニング済みモデル名が返されると、[モデルから応答を生成] などのスクリプトステップでモデルを使用できます:

コピー
モデルから応答を生成 [アカウント名: "my-account" ; モデル: "ft:gpt-4o-mini-2024-07-18:my-org::LBNO71Qq" ; ユーザプロンプト: $question ; 自律モード ; 応答: $$response]

例 2- JSONL ファイルを使用したファインチューニング

[レコードを JSONL として保存] スクリプトステップ例 2 で作成された JSONL ファイルを送信して AI モデルサーバー上のモデルをファインチューニングします。スクリプトで AI アカウントを設定して $trainingFile 変数を「Documents」フォルダにある JSONL ファイルのパスに設定します。

次にスクリプトは $parameters 変数をファインチューニングパラメータに使用するキーと値のペアを含む JSON オブジェクトに設定します。ファインチューニング済みモデルにつけるルート名の設定も含まれます。

最後に、スクリプトによって $trainingFile で指定した JSONL ファイルを AI モデルサーバーに送信し、ファインチューニングするベースモデル、使用するパラメータ、および応答を保存する $response 変数を指示します。後で使用するために、スクリプトは $response からファインチューニング済みモデルの完全な名前を取得してグローバルフィールドに保存します。

コピー
AI アカウント設定 [アカウント名: "AI_Model_Server" ; モデルプロバイダ: カスタム ; エンドポイント: "https://myserver.example.com/llm/v1/" ; API キー: グローバル::ファインチューニング API キー ; SSL 証明書の検証]

変数を設定 [$trainingFile ; 値: Get (ドキュメントパス) & "training_data.jsonl"]

変数を設定 [$parameters ; 値: 
  Let ([
    json = "{}" ;
    json = JSONSetElement (json; "max_steps"; 1500; JSONString) ;
    json = JSONSetElement (json; "learning_rate"; 1e-4; JSONString) ;
    json = JSONSetElement (json; "batch_size"; 2; JSONString) ;
    json = JSONSetElement (json; "fine_tuned_model_name"; "product-expert-v2" ; JSONString)
  ] ;
    json
  )
]

モデルをファインチューニング [アカウント名: "AI_Model_Server" ; ベースモデル: "google/codegemma-7b-it" ; トレーニングデータ: ファイル ; "$trainingFile" ; 応答のターゲット: $responseTarget ; ファインチューニングパラメータ: $parameters]

フィールド設定 [グローバル::ファインチューニング済みモデル ; JSONGetElement ($responseTarget ; "result.fine_tuned_model")]