Os comandos e o código permanecem em inglês em todos os idiomas. Substitua os marcadores em maiúsculas pelos valores da sua conta e da sua tarefa paga; não cole chaves reais em cadernos partilhados nem em registos.
Fluxo de projeto TrainingProject
- Projeto Modelo, objetivo e política de dados
- Plano Compatibilidade, currículo e orçamentos
- Executar Dados, treino e pontos de controlo
- Melhorar Avaliação limitada de temas e regressões
- Exportar Artefacto validado e relatório reproduzível
Projeto: Modelo, objetivo e política de dados. Plano: Compatibilidade, currículo e orçamentos. Executar: Dados, treino e pontos de controlo. Melhorar: Avaliação limitada de temas e regressões. Exportar: Artefacto validado e relatório reproduzível
Um projeto e um plano reproduzíveis
O SDK 0.2.0 inclui TrainingProject e fpai-training para configurar e executar treino local. O projeto reúne o modelo aluno, o acesso ao modelo de referência, o objetivo, os dados, o ambiente de execução, o currículo, os orçamentos e os critérios de aceitação. Reveja o plano resolvido antes de pedir conteúdo ao modelo de referência ou atualizar pesos. TrainingClient continua disponível para integrações existentes baseadas em tarefas pagas e sessões.
- O plano valida a configuração, a compatibilidade, as impressões digitais dos dados, a partilha, os orçamentos e os resultados sem treinar o modelo nem chamar o modelo de referência.
- As interfaces Python e CLI utilizam as mesmas definições, impressões digitais, orçamentos e resultados.
- Fixe as revisões do modelo, dos dados e do avaliador para poder reproduzir a execução.
{
"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().
Treino local, compatibilidade e limites
TrainingProject valida as entradas locais, mede uma referência sem alterar o modelo, executa otimização real, avalia critérios com dados reservados e regista relatórios e manifestos. O adaptador Transformers para modelos de linguagem causal verifica o modelo, o método, a precisão, o hardware, a distribuição e o formato de exportação. Não suporta todas as arquiteturas nem todas as configurações de GPU. Estas verificações não são um benchmark nem garantem a qualidade.
- Os métodos suportados são SFT, LoRA e QLoRA, desde que sejam compatíveis.
- A execução é limitada por orçamentos finitos e termina quando é aceite, o orçamento se esgota, deixa de haver progresso, é cancelada ou ocorre uma regressão.
- Não invente métricas: os relatórios apresentam medições reais e critérios por cumprir.
{
"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.
Avaliar e exportar os resultados
A avaliação utiliza linhas locais de validação ou de teste final e mede cada critério da grelha com uma métrica determinística registada e um limiar mínimo. Os relatórios guardam as medições, regressões, impressões digitais, orçamentos e requisitos por cumprir. A exportação valida um modelo safetensors local ou um pacote de adaptador e cria um manifesto. Um adaptador continua a exigir o modelo-base e o tokenizador exatos e fixados. Um resultado aceite não comprova qualidade para além dos critérios medidos.
- Mantenha os dados do teste final separados do treino e dos pedidos ao modelo de referência.
- Consulte o relatório de avaliação e o manifesto antes de utilizar os ficheiros.
- A exportação não carrega o modelo nem implementa inferência em produção.
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.