どの言語版でもコマンドとコードは英語のままです。大文字のプレースホルダーは、ご自身のアカウントと有料ジョブの値に置き換えてください。共有ノートブックやログに実際のキーを貼り付けないでください。
1つのプロジェクト API、1つの共通エンジン
- from_file 重みを変更せず読み込み
- plan 解決済みの入力を確認
- run / controls worker と復旧を管理
- evaluate / export 受け入れ済みのローカル出力を確認
from_file: 重みを変更せず読み込み. plan: 解決済みの入力を確認. run / controls: worker と復旧を管理. evaluate / export: 受け入れ済みのローカル出力を確認
Python から同じエンジンを使う
TrainingProject は TrainingClient を補完するもので、置き換えるものではありません。設定とスコープを限定した API key を読み込み、計画を確認してから実行を開始します。プロジェクトオブジェクトから所有する実行を確認・制御できます。run は既存の実行を上書きせず、resume には有効な復旧状態が必要です。
- パスには文字列または
os.PathLikeオブジェクトを指定できます。メソッドのオプションはキーワード専用です。 from_fileはローカル設定を検証します。重みの更新や教師モデルへのリクエストは行いません。- Python と CLI のワークフローでは同じ設定、フィンガープリント、予算、出力を使います。
| フィールドまたはインターフェース | 型または結果 | 既定値または終了コード | 動作と検証 |
|---|---|---|---|
TrainingProject.from_file(path, *, api_key) |
TrainingProject |
必須 / 既定値なし | 設定ファイルのパスと空でない秘密文字列を読み込んで検証します。プロジェクトオブジェクトを返します。重みの更新も教師モデルへのリクエストも行いません。 |
plan(*, dry_run=True) |
dict |
true |
True のみ指定できます。resolved_configuration、compatibility、data_sharing、budgets、topics、artifacts、fingerprints を返します。
|
run() |
dict |
必須 / 既定値なし | 終了状態または一時停止状態まで待機します。操作成功時のみ共通の実行結果を返し、それ以外は対応するエラーを送出します。 |
status() |
dict |
必須 / 既定値なし | worker を起動せず、run_id、status、stop_reason、report_path、unmet_criteria を読み取ります。
|
pause() |
dict |
必須 / 既定値なし | worker の確認と有効なチェックポイントを待ち、共通の実行結果を返します。状態が無効な場合は設定エラーです。 |
resume() |
dict |
必須 / 既定値なし | すべてのフィンガープリントを検証して、実行が所有する worker を再開します。操作成功時に共通の実行結果を返します。 |
cancel() |
dict |
必須 / 既定値なし | 実行が所有する worker の停止を待ち、cancelled 状態を返します。安全な終了を確認できない場合は CancellationError を送出します。
|
evaluate(*, split="test") |
dict |
"test" |
validation または test を受け付けます。run_id、split、accepted、criteria、regressions、report_path を返します。受け入れに失敗した場合、レポートを保存してから EvaluationFailedError を送出します。
|
export(*, format="safetensors") |
dict |
"safetensors" |
受け入れ済みで互換性のある成果物について、run_id、format、artifact_path、manifest_path、sha256 を返します。
|
register_evaluator(name, scorer, *, version) |
None |
必須 / 既定値なし | 計画や評価の前に、信頼できる採点関数を登録します。固定の名前と明示的なバージョンを指定してください。関数は prediction、target、row を受け取り、0 から 1 の有限のスコアを返す必要があります。組み込み指標は置き換えられません。 |
import os
from fusionpointai_training import TrainingProject
project = TrainingProject.from_file(
"./german-project/training.json",
api_key=os.environ["FUSIONPOINTAI_API_KEY"],
)
plan = project.plan(dry_run=True)
print(plan["resolved_configuration"], plan["data_sharing"], plan["budgets"])
# Confirm the reviewed plan before starting real work.
result = project.run()
if result["status"] != "completed" or result["stop_reason"] != "accepted":
raise RuntimeError("Training was not accepted; inspect the retained report.")
evaluation = project.evaluate(split="test")
# A failed required criterion raises EvaluationFailedError after saving its report.
artifact = project.export(format="safetensors")
print(artifact["manifest_path"])
構造化された結果を確認する
以下の戻り値仕様はデータの形を示すものであり、測定値の例ではありません。デプロイ前に status、stop_reason、unmet_criteria を確認してください。評価結果には各基準と回帰が示されます。エクスポートはローカルパスと整合性メタデータを返しますが、モデルを自動アップロードしたり、本番推論を置き換えたりはしません。
- 新たな教師リクエストを発生させずに、状態とマニフェストを読み取れる必要があります。
- 最終テストセットの評価は、改善中に使用する検証データの評価とは別です。
- 成果物マニフェストは、実在するファイル、安全な相対パス、バイトサイズ、SHA-256 値と一致していなければなりません。
TrainingProject return contract (dictionary shapes)
from_file: validates configuration, attaches its owned run; no weight updates.
plan: {schema_version, resolved_configuration, compatibility, data_sharing,
budgets, topics, artifacts, fingerprints}; dry_run must be true.
run/resume: {run_id, status, stop_reason, report_path, unmet_criteria}.
status/pause/cancel: {run_id, status, stop_reason, report_path, unmet_criteria}.
stop_reason is null until terminal; run/resume block until terminal or paused.
pause blocks until owned workers acknowledge an atomic checkpoint.
cancel blocks until owned workers stop; a failed stop raises CancellationError.
evaluate: {run_id, split, accepted, criteria, regressions, report_path}.
export: {run_id, format, artifact_path, manifest_path, sha256}.
Returned paths are local, resolved paths; no model upload is implied.
Status output is redacted and may be read without opening an API connection.
from_file requires path: str | os.PathLike and a nonempty api_key: str.
plan accepts dry_run=True only; False is ConfigurationError, not execution.
evaluate accepts split="validation" or "test"; defaults to test.
export accepts safetensors or adapters when supported by the selected adapter.
All method keyword options are keyword-only. Unlisted arguments are rejected.
失敗を隠さずに処理する
プロジェクトのエラークラスは TrainingError を継承し、CLI の終了コードに対応します。設定や互換性のエラーは学習前に発生します。予算や評価の失敗時には、レポートと未達の評価基準が保持されます。worker の停止やチェックポイントのエラーは、安全な後処理を確認するまで失敗として扱います。
- メソッド成功時は仕様に記載された辞書を返します。評価基準を満たさない場合は、評価レポートを保存してから
EvaluationFailedErrorを送出します。 - API key、認証ヘッダー、環境変数全体、非公開の学習例をログに記録しないでください。
- 例外を自動再試行で処理しないでください。まず run とサービスの状態を確認します。
| フィールドまたはインターフェース | 型または結果 | 既定値または終了コード | 動作と検証 |
|---|---|---|---|
ConfigurationError |
TrainingError |
2 |
スキーマ、引数、パス、状態が無効、または未対応の上書きです。入力を修正してから再試行してください。 |
CompatibilityError |
TrainingError |
3 |
アダプター、モデル、ハードウェア、精度、分散方式、形式がサポートされていません。 |
AuthenticationError |
TrainingError |
4 |
API key がない、期限切れ、利用資格が拒否された、または教師データの共有が禁止されています。メッセージに秘密情報を含めないでください。 |
BudgetExceededError |
TrainingError |
5 |
受け入れ前に有限の予算を使い切りました。有効なチェックポイントと未達基準を保持してください。 |
EvaluationFailedError |
TrainingError |
6 |
必須基準に不合格、改善が停滞、または性能低下が続いています。評価レポートを保持してください。 |
CheckpointError |
TrainingError |
7 |
復旧状態が無効、不完全、または不一致です。無理に再開してはいけません。 |
CancellationError |
TrainingError |
7 |
実行が所有する worker の安全な終了を確認できません。後処理を継続してください。 |
ExportError |
TrainingError |
7 |
成果物が未対応または無効、パスが安全でない、あるいはチェックサムに失敗しました。成果物を渡さないでください。 |
TrainingError |
Exception |
7 |
学習処理の基底エラーです。ここに列挙した目標エラーはすべてこのクラスを継承します。秘匿情報を除いた診断内容を保持してください。 |
import os
from fusionpointai_training import TrainingProject
from fusionpointai_training.errors import (
AuthenticationError, BudgetExceededError, CompatibilityError,
ConfigurationError, EvaluationFailedError, TrainingError,
)
try:
project = TrainingProject.from_file(
"./german-project/training.json",
api_key=os.environ.get("FUSIONPOINTAI_API_KEY", ""),
)
project.plan(dry_run=True)
project.run()
result = project.evaluate(split="test")
except (ConfigurationError, CompatibilityError):
print("Correct the configuration before starting a new run.")
except AuthenticationError:
print("Check access without logging the key.")
except BudgetExceededError:
print("Preserve the checkpoint. A larger approved budget requires a new plan.")
except EvaluationFailedError:
print("Preserve failed criteria; do not publish this model as accepted.")
except TrainingError:
print("Inspect redacted diagnostics; do not blindly repeat a write.")
# CancellationError, CheckpointError and ExportError also inherit TrainingError.
from fusionpointai_training import register_evaluator
def category_match(prediction, target, row):
return float(prediction.strip().casefold() == target.strip().casefold())
register_evaluator("category_match", category_match, version="1")
# Register before project.plan() in the same Python process.
# In rubric.json: "metric": "category_match", "minimum_score": 0.85
# This scorer measures category equality, not open-ended semantic correctness.