どの言語版でもコマンドとコードは英語のままです。大文字のプレースホルダーは、ご自身のアカウントと有料ジョブの値に置き換えてください。共有ノートブックやログに実際のキーを貼り付けないでください。
プロジェクトを作成して実行する
- インストール Python 環境
- 設定 モデル、データ、評価基準
- 計画 互換性と予算
- 学習 ローカルで最適化
- 確認 評価結果と成果物
インストール: Python 環境. 設定: モデル、データ、評価基準. 計画: 互換性と予算. 学習: ローカルで最適化. 確認: 評価結果と成果物
実行環境を準備する
専用の仮想環境で Python 3.10 以降を使います。training extra と、実行環境に合った PyTorch ビルドをインストールしてください。TrainingProject は既存の Transformers 因果言語モデルアダプターを使い、SFT、LoRA、QLoRA の対応状況を確認します。教師モデル操作用の有料参照アクセス権、互換性のあるローカルモデル、承認済みデータ、十分なストレージが必要です。実行環境を選んでもハードウェアは用意されません。
- 基本パッケージには TrainingClient とプロジェクト API が含まれます。train extra はローカル学習用の依存関係を追加します。
- API key は実行環境のシークレット用環境変数に保存し、プロジェクトファイルやコマンド引数には入れないでください。
- QLoRA には互換性のある CUDA 実行環境と量子化の依存関係が必要です。
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
# Install the GPU-compatible PyTorch build for your runtime first.
python -m pip install 'fusionpointai-training[train] @ https://fusionpointai.com/downloads/fusionpointai-training.zip'
# API-only use without local training dependencies:
# python -m pip install 'fusionpointai-training @ https://fusionpointai.com/downloads/fusionpointai-training.zip'
プロジェクトを設定して確認する
プロジェクトディレクトリを作り、学習、検証、最終テスト用の JSONL ファイルを準備してから、training.json と rubric.json を編集します。ローカルの生徒モデルパス、provider、プランに含まれる reference_model_id を指定してください。計画の確認では設定、モデル互換性、データのフィンガープリント、共有ポリシー、予算、出力を検証しますが、重みを変更したり教師モデルを呼び出したりはしません。
- schema_version は 1.0 を指定します。これは設定スキーマであり、パッケージのバージョンではありません。
- プロジェクトルート内に解決される相対パスを使います。
- 実行には新しい出力ディレクトリが必要です。resume は別操作で、フィンガープリントを厳密に検証します。
# Enter the key using a secure runtime secret facility or this history-safe prompt.
read -rs -p 'FusionPointAI API key: ' FUSIONPOINTAI_API_KEY
export FUSIONPOINTAI_API_KEY
printf '\n'
python --version
fpai-training --version
# After the project run, clear the shell value: unset FUSIONPOINTAI_API_KEY
{
"schema_version": "1.0",
"mode": "automatic",
"objective": "Classify support messages as billing, account_access or technical_issue.",
"model": {"path": "./models/student", "adapter": "transformers-causal-lm", "revision": null},
"teacher": {"provider": "openai", "reference_model_id": 123},
"data": {
"sources": ["./data/train.jsonl"], "teacher_sharing": "none",
"validation_path": "./data/validation.jsonl", "test_path": "./data/test.jsonl",
"deduplicate": true, "seed": 42
},
"runtime": {"target": "customer_datacenter", "devices": "auto"},
"training": {"method": "auto"},
"curriculum": {"topics": ["intent", "ambiguous_requests", "class_balance"], "max_improvement_cycles": 3, "stop_on_regression": true},
"budgets": {"max_training_minutes": 120, "max_teacher_requests": 1000, "max_storage_gib": 20},
"checkpoints": {"keep_last": 3},
"evaluation": {"rubric": "./rubric.json", "baseline_required": true},
"output": {"directory": "./runs/german-001", "format": "safetensors"}
}
import os
from fusionpointai_training import TrainingProject
project = TrainingProject.from_file(
"./support-project/training.json",
api_key=os.environ["FUSIONPOINTAI_API_KEY"],
)
plan = project.plan(dry_run=True)
print("Topics:", plan["topics"], "Budgets:", plan["budgets"])
result = project.run()
print("Run:", result["run_id"], result["status"], result["stop_reason"])
evaluation = project.evaluate(split="test")
print("Accepted:", evaluation["accepted"], evaluation["report_path"])
artifact = project.export(format="safetensors")
print("Artifact:", artifact["artifact_path"], artifact["sha256"])
評価結果とローカル成果物を確認する
学習では、ローカルのホールドアウトデータを使って未変更モデルのベースライン評価と最終評価を行います。レポートには測定基準、回帰、フィンガープリント、予算、未達要件を記録します。エクスポートではローカルの safetensors モデルまたはアダプターパッケージを検証してマニフェストを作成します。アダプターには固定された正確なベースモデルとトークナイザーが必要です。実行に成功しても、ルーブリックで測定していないタスク品質は保証されません。
- ベースラインと最終テストのファイルは、学習データや教師モデルへの入力と分けて保管します。
- 出力を使う前に evaluation-report.json と artifact-manifest.json を確認します。
- エクスポートでモデルがアップロードされたり、本番推論がデプロイされたりすることはありません。
cat ./support-project/runs/support-001/training-report.json
cat ./support-project/runs/support-001/evaluation-report.json
cat ./support-project/runs/support-001/artifact-manifest.json
sha256sum ./support-project/runs/support-001/exports/safetensors/artifact-manifest.json
# Compare the digest with the value returned by project.export().
# Adapter exports also require the matching base model and tokenizer.