Commands and code stay in English in every language. Replace uppercase placeholders with values from your own account and paid job; do not paste real keys into shared notebooks or logs.
TrainingProject workflow
- Project Model, objective and data policy
- Plan Compatibility, curriculum and budgets
- Execute Data, training and checkpoints
- Improve Bounded topic and regression evaluation
- Export Validated artifact and reproducible report
Project: Model, objective and data policy. Plan: Compatibility, curriculum and budgets. Execute: Data, training and checkpoints. Improve: Bounded topic and regression evaluation. Export: Validated artifact and reproducible report
One project, one reproducible configuration
The project configuration binds a local student model, paid teacher reference, objective, data policy, runtime, curriculum and rubric. Automatic mode resolves compatible defaults; Advanced mode exposes supported controls. A dry-run plan describes model compatibility, topics, data flows, budgets, fingerprints and expected artifacts before training starts.
- The Python project API and fpai-training CLI use the same engine.
- All model, dataset, evaluator and configuration paths are validated within the project root.
- Pin custom evaluator versions and preserve run manifests.
{
"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"}
}
{
"schema_version": "1.0",
"mode": "advanced",
"model": {"path": "./models/student", "adapter": "transformers-causal-lm", "revision": null},
"teacher": {"provider": "openai", "reference_model_id": 123},
"objective": "Classify support messages as billing, account_access or technical_issue.",
"data": {"sources": ["./data/train.jsonl"], "teacher_sharing": "none", "validation_path": "./data/validation.jsonl", "test_path": "./data/test.jsonl"},
"runtime": {"target": "customer_datacenter", "devices": [0, 1], "distributed": {"backend": "ddp", "nodes": 1}},
"training": {
"method": "LoRA",
"epochs": 3,
"learning_rate": 0.0002,
"batch_size": 1,
"gradient_accumulation_steps": 16,
"max_sequence_length": 2048,
"precision": "bf16",
"lora": {"rank": 16, "alpha": 32, "dropout": 0.05}
},
"curriculum": {
"topics": ["intent", "ambiguous_requests", "class_balance"],
"max_improvement_cycles": 3,
"stop_on_regression": true
},
"checkpoints": {"every_steps": 100, "keep_last": 3, "resume_validation": "strict"},
"budgets": {"max_training_minutes": 120, "max_teacher_requests": 1000, "max_storage_gib": 20},
"evaluation": {"rubric": "./rubric.json", "baseline_required": true},
"output": {"directory": "./runs/german-advanced-001", "format": "safetensors"}
}
fpai-training init --directory ./german-project
fpai-training doctor --config ./german-project/training.json
fpai-training plan --config ./german-project/training.json --dry-run
fpai-training run --config ./german-project/training.json
fpai-training status --run ./german-project/runs/german-001
fpai-training pause --run ./german-project/runs/german-001
fpai-training resume --run ./german-project/runs/german-001
fpai-training cancel --run ./german-project/runs/german-001
fpai-training evaluate --run ./german-project/runs/german-001 --split test
fpai-training export --run ./german-project/runs/german-001 --format safetensors
# init creates a project; doctor checks local compatibility; plan makes no teacher call.
# run requires current paid reference access, enforces budgets and trains locally.
# pause saves a checkpoint; resume verifies project fingerprints; cancel is terminal.
# evaluate reads local held-out rows; export validates the accepted local artifact.
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)
result = project.run()
evaluation = project.evaluate(split="test")
artifact = project.export(format="safetensors")
# Related controls: project.status(), project.pause(), project.resume(), project.cancel().
Training and evaluation behavior
The Transformers causal-language-model adapter performs actual SFT, LoRA or QLoRA optimization for compatible models and runtimes. The project coordinates paid teacher access, local datasets, topic-level evaluation, regression checks and bounded improvement. Unsupported architecture, hardware or export combinations fail compatibility checks.
- Stop reasons include accepted, budget_exhausted, no_progress, regression, cancelled or failed.
- Native checkpoints and run state are retained within private owned run storage.
- Teacher sharing follows project policy; validation and final-test data stay local.
{
"schema_version": "1.0",
"name": "support-category-evaluation",
"scale": {"minimum": 0.0, "maximum": 1.0},
"criteria": [
{"id": "support_category", "description": "Match the expected support category.", "metric": "macro_f1", "minimum_score": 0.85}
],
"regression": {"maximum_score_drop": 0.02},
"final_test": {"path": "./data/test.jsonl", "allow_training_use": false}
}
SDK 0.2.0 CLI AND PROJECT CONTRACT
Configuration/rubric values above are examples, not achieved scores or guarantees.
doctor must reject incompatible architecture, precision, hardware and export settings.
plan --dry-run validates and estimates; it must not update weights or start paid work.
run uses the declared data-sharing policy and enforces all configured budgets.
pause saves a valid atomic checkpoint before stopping owned training workers.
resume validates the checkpoint's model/config/data/evaluator fingerprints.
cancel requests termination of this run's workers; preserve useful logs and artifacts.
evaluate --split test must never feed test examples into training.
export validates files and manifests; never include credentials or unrelated cache files.
Project API:
TrainingProject.from_file(path, *, api_key) -> TrainingProject
plan(*, dry_run=True) -> dict
run() -> dict
status() -> dict
pause() -> dict
resume() -> dict
cancel() -> dict
evaluate(*, split="test") -> dict
export(*, format="safetensors") -> dict
Exit codes:
0 accepted/success; 2 invalid configuration; 3 incompatible runtime/model;
4 authentication/access; 5 budget exhausted; 6 acceptance not met;
7 execution failed; 130 interrupted.
Reports must record stop_reason and unmet criteria, not just an exit code.
Review reports and artifacts
A project run records the untouched baseline, measured criteria, regressions, budgets and unmet requirements. Export validates local model or adapter files and writes manifests. SDK behavior depends on compatible software and hardware; no hardware benchmark or inference result is implied by these examples.
- No teacher-equivalence claim follows from training alone.
- Documentation examples do not trigger paid calls or training automatically.
- Review the actual local reports and files before using an artifact.
TrainingProject delivery files
model/ validated model or adapter weights and tokenizer assets
exports/<format>/ accepted delivery files with a SHA-256 manifest
run-manifest.json pinned model/data/config/runtime versions
baseline-report.json untouched student model's measured criteria
evaluation-report.json final criteria, measured scores and regressions
artifact-manifest.json safe relative paths, bytes and SHA-256 per file
training-report.json real steps, timings, budgets and stop reason
Never export credentials, environment files or private cache directories.