Passer au contenu principal
Chapitres du guide d’entraînement Toute la documentation

SDK Python : méthodes, résultats et erreurs

Signatures exactes de TrainingProject dans SDK 0.2.0, arguments, contrats de retour et erreurs récupérables, avec des exemples Python complets.

Les commandes et le code restent en anglais dans toutes les langues. Remplacez les espaces réservés en majuscules par les valeurs de votre compte et de votre tâche payante ; ne collez pas de vraies clés dans des carnets ou des journaux partagés.

Une API de projet, un seul moteur sous-jacent

La CLI et Python doivent s’accorder sur la configuration, l’état et les livrables.
  1. from_file Charger sans modifier les poids
  2. plan Examiner les entrées résolues
  3. run / controls Gérer les processus et la reprise
  4. evaluate / export Examiner les sorties locales acceptées

from_file: Charger sans modifier les poids. plan: Examiner les entrées résolues. run / controls: Gérer les processus et la reprise. evaluate / export: Examiner les sorties locales acceptées

Utiliser le même moteur depuis Python

TrainingProject complète TrainingClient sans le remplacer. Chargez une configuration et une clé API limitée au périmètre voulu, examinez le plan, puis démarrez l’exécution. L’objet projet expose son exécution pour inspection et contrôle ; run refuse d’écraser une exécution existante, tandis que resume exige un état de reprise valide.

  • Les chemins acceptent des chaînes ou des objets os.PathLike. Les options des méthodes sont nommées uniquement et les arguments inconnus sont rejetés.
  • from_file valide la configuration locale ; il ne met pas à jour les poids et ne lance pas de requêtes au modèle de référence.
  • Les interfaces Python et CLI résolvent les mêmes paramètres, empreintes, budgets et sorties.
Référence complète du projet Python
Champ ou interfaceType ou résultatValeur par défaut ou code de sortieComportement et validation
TrainingProject.from_file(path, *, api_key) TrainingProject Obligatoire / sans valeur par défaut Charge et valide le chemin de configuration et une chaîne secrète non vide. Renvoie un objet projet ; ne modifie pas les poids et ne contacte pas le modèle de référence.
plan(*, dry_run=True) dict true True uniquement. Renvoie resolved_configuration, compatibility, data_sharing, budgets, topics, artifacts et fingerprints.
run() dict Obligatoire / sans valeur par défaut Bloque jusqu’à l’état final ou la mise en pause ; ne renvoie le résultat commun de l’exécution qu’en cas de réussite, sinon déclenche l’erreur correspondante.
status() dict Obligatoire / sans valeur par défaut Lit run_id, status, stop_reason, report_path et unmet_criteria sans démarrer de processus.
pause() dict Obligatoire / sans valeur par défaut Attend l’accusé de réception du processus et un point de contrôle valide ; renvoie le résultat commun de l’exécution. Un état invalide est une erreur de configuration.
resume() dict Obligatoire / sans valeur par défaut Valide toutes les empreintes et reprend les processus de l’exécution ; renvoie le résultat commun lorsque l’opération réussit.
cancel() dict Obligatoire / sans valeur par défaut Attend l’arrêt des processus de l’exécution et renvoie l’état cancelled ; déclenche CancellationError si l’arrêt sûr ne peut pas être confirmé.
evaluate(*, split="test") dict "test" Accepte validation ou test. Renvoie run_id, split, accepted, criteria, regressions et report_path ; en cas d’échec de l’acceptation, déclenche EvaluationFailedError après l’enregistrement du rapport.
export(*, format="safetensors") dict "safetensors" Renvoie run_id, format, artifact_path, manifest_path et sha256 pour un artefact compatible accepté.
register_evaluator(name, scorer, *, version) None Obligatoire / sans valeur par défaut Enregistrez une fonction de notation fiable avant la planification ou l’évaluation. Donnez-lui un nom stable et une version explicite. Elle reçoit prediction, target et row et doit renvoyer un score fini de 0 à 1. Les métriques intégrées ne peuvent pas être remplacées.
Exemple · python
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"])

Examiner les résultats structurés

Le contrat de retour ci-dessous décrit les formes des résultats, pas des mesures d’exemple. Examinez status, stop_reason et unmet_criteria avant tout déploiement. Les résultats de l’évaluation identifient chaque critère et chaque régression. L’export renvoie des chemins locaux et des métadonnées d’intégrité ; il ne téléverse pas automatiquement le modèle et ne remplace pas l’inférence en production.

  • Les données d’état et de manifeste doivent être consultables sans générer de nouvelle requête à l’enseignant.
  • L’évaluation sur le jeu de test final est distincte de la validation utilisée pendant les améliorations.
  • Un manifeste d’artefact doit correspondre aux fichiers réels, aux chemins relatifs sûrs, aux tailles en octets et aux valeurs SHA-256.
Exemple · text
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.

Gérer les erreurs sans les dissimuler

Les erreurs de projet héritent de TrainingError et correspondent aux codes de sortie CLI documentés. Les erreurs de configuration et de compatibilité surviennent avant l’entraînement. Les échecs de budget ou d’acceptation conservent leurs rapports et critères non satisfaits. Un échec lors de l’arrêt d’un processus ou de l’enregistrement d’un point de contrôle reste une erreur tant que le nettoyage n’est pas confirmé.

  • Une méthode réussie renvoie le résultat documenté. Si l’objectif n’est pas atteint, l’erreur correspondante est levée après l’enregistrement du rapport.
  • Ne consignez jamais de secrets, d’en-têtes d’autorisation, l’environnement complet ou des exemples d’entraînement privés.
  • Ne transformez pas toutes les exceptions en nouvelles tentatives automatiques. Vérifiez d’abord l’état de l’exécution et du service.
Erreurs Python et correspondance des codes de sortie CLI
Champ ou interfaceType ou résultatValeur par défaut ou code de sortieComportement et validation
ConfigurationError TrainingError 2 Schéma, argument, chemin ou état invalide, ou surcharge non prise en charge. Corrigez les entrées avant de réessayer.
CompatibilityError TrainingError 3 Adaptateur, modèle, matériel, précision, distribution ou format non pris en charge.
AuthenticationError TrainingError 4 Clé manquante ou expirée, droit d’accès refusé ou partage avec l’enseignant interdit ; ne mettez jamais de secret dans le message.
BudgetExceededError TrainingError 5 Un budget limité a été épuisé avant l’acceptation. Conservez un point de contrôle valide et les critères non satisfaits.
EvaluationFailedError TrainingError 6 Critères obligatoires échoués, amélioration au point mort ou régression persistante. Conservez le rapport d’évaluation.
CheckpointError TrainingError 7 État de reprise invalide, incomplet ou incompatible. Ne forcez jamais la reprise.
CancellationError TrainingError 7 L’arrêt sûr des processus de l’exécution n’a pas pu être confirmé ; poursuivez le nettoyage.
ExportError TrainingError 7 Artefact non pris en charge ou invalide, chemin non sûr ou échec de somme de contrôle ; ne le livrez pas.
TrainingError Exception 7 Échec général de l’entraînement. Les erreurs du projet documentées héritent de cette classe ; conservez les diagnostics expurgés.
Exemple · python
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.
Exemple · python
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.