Zum Hauptinhalt springen
Kapitel des Trainingsleitfadens Alle Dokumentationen

Python-SDK: Methoden, Ergebnisse und Fehler

Signaturen und Argumente von TrainingProject, Rückgabeverträge und Fehlerbehandlung mit vollständigen Python-Beispielen.

Befehle und Code bleiben in allen Sprachen auf Englisch. Ersetzen Sie GROSSGESCHRIEBENE Platzhalter durch Werte Ihres eigenen Kontos und bezahlten Auftrags. Fügen Sie echte Schlüssel nicht in gemeinsam genutzte Notebooks oder Protokolle ein.

Eine Projekt-API, eine zugrunde liegende Engine

CLI und Python müssen bei Konfiguration, Status und Lieferumfang übereinstimmen.
  1. from_file Laden, ohne Gewichte zu ändern
  2. plan Aufgelöste Eingaben prüfen
  3. run / Steuerung Worker und Wiederherstellung verwalten
  4. evaluate / export Abgenommene lokale Ausgaben prüfen

from_file: Laden, ohne Gewichte zu ändern. plan: Aufgelöste Eingaben prüfen. run / Steuerung: Worker und Wiederherstellung verwalten. evaluate / export: Abgenommene lokale Ausgaben prüfen

Dieselbe Engine aus Python verwenden

TrainingProject ergänzt TrainingClient, ersetzt den Client aber nicht. Laden Sie die Konfiguration und einen passend beschränkten API-Schlüssel, prüfen Sie den Plan und starten Sie den Lauf. Das Projektobjekt stellt den eigenen Lauf zur Prüfung und Steuerung bereit. run überschreibt keinen vorhandenen Lauf; resume setzt gültige Wiederherstellungsdaten voraus.

  • Pfade können Zeichenketten oder os.PathLike-Objekte sein. Methodenoptionen werden als Schlüsselwortargumente übergeben.
  • from_file validiert die lokale Konfiguration; dabei werden weder Gewichte geändert noch Teacher-Anfragen gesendet.
  • Python und CLI verwenden dieselben Einstellungen, Fingerprints, Budgets und Ausgaben.
Vollständige Python-Projektreferenz
Feld oder SchnittstelleTyp oder ErgebnisStandardwert oder ExitcodeVerhalten und Validierung
TrainingProject.from_file(path, *, api_key) TrainingProject Erforderlich / kein Standardwert Konfigurationspfad und nichtleere geheime Zeichenkette laden und validieren. Gibt ein Projektobjekt zurück, ohne Gewichte zu aktualisieren oder Teacher-Anfragen zu senden.
plan(*, dry_run=True) dict true Ausschließlich True. Gibt resolved_configuration, compatibility, data_sharing, budgets, topics, artifacts und fingerprints zurück.
run() dict Erforderlich / kein Standardwert Bis zu einem endgültigen oder pausierten Status blockieren. Das gemeinsame Laufergebnis nur bei erfolgreichem Vorgang zurückgeben, sonst den passenden Fehler auslösen.
status() dict Erforderlich / kein Standardwert run_id, status, stop_reason, report_path und unmet_criteria lesen, ohne einen Worker zu starten.
pause() dict Erforderlich / kein Standardwert Worker-Bestätigung und gültigen Checkpoint abwarten; gemeinsames Laufergebnis zurückgeben. Bei ungültigem Status einen Konfigurationsfehler auslösen.
resume() dict Erforderlich / kein Standardwert Alle Fingerprints validieren und eigene Worker fortsetzen; bei erfolgreichem Vorgang das gemeinsame Laufergebnis zurückgeben.
cancel() dict Erforderlich / kein Standardwert Anhalten der eigenen Worker abwarten und den Abbruchstatus zurückgeben; CancellationError auslösen, wenn die sichere Beendigung nicht bestätigt werden kann.
evaluate(*, split="test") dict "test" validation oder test akzeptieren. run_id, split, accepted, criteria, regressions und report_path zurückgeben. Bei nicht bestandener Abnahme nach Speichern des Berichts EvaluationFailedError auslösen.
export(*, format="safetensors") dict "safetensors" run_id, format, artifact_path, manifest_path und sha256 für ein kompatibles, abgenommenes Artefakt zurückgeben.
register_evaluator(name, scorer, *, version) None Erforderlich / kein Standardwert Registrieren Sie vor Planung oder Auswertung eine vertrauenswürdige Bewertungsfunktion mit festem Namen und expliziter Version. Sie erhält prediction, target und row und muss einen endlichen Wert zwischen 0 und 1 liefern. Integrierte Metriken können nicht ersetzt werden.
Beispiel · 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"])

Strukturierte Ergebnisse prüfen

Der folgende Rückgabevertrag beschreibt Datenstrukturen, keine Messwerte. Prüfe vor der Bereitstellung status, stop_reason und unmet_criteria. Evaluationsergebnisse weisen jedes Kriterium und jeden Rückschritt einzeln aus. Der Export gibt lokale Pfade und Integritätsmetadaten zurück; das Modell wird dadurch weder automatisch hochgeladen noch die Inferenz in Produktion ersetzt.

  • Status und Manifestdaten müssen abrufbar sein, ohne eine neue Anfrage an das Lehrmodell auszulösen.
  • Die Evaluation mit dem abschließenden Testsatz ist von der Validierung während der Modellverbesserung getrennt.
  • Ein Artefaktmanifest muss den tatsächlichen Dateien, sicheren relativen Pfaden, Byte-Größen und SHA-256-Werten entsprechen.
Beispiel · 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.

Fehler behandeln, ohne sie zu verschleiern

Die Projektfehlerklassen erben von TrainingError und entsprechen den CLI-Exitcodes. Konfigurations- und Kompatibilitätsfehler treten vor dem Training auf. Budget- und Evaluationsfehler bewahren Berichte und unerfüllte Kriterien. Ein Fehler beim Stoppen eines Workers oder bei einem Checkpoint bleibt ein Fehler, bis die sichere Bereinigung bestätigt wurde.

  • Erfolgreiche Methoden geben die dokumentierten Dictionaries zurück. Bei verfehlten Kriterien wird nach dem Speichern des Evaluationsberichts EvaluationFailedError ausgelöst.
  • API-Schlüssel, Authorization-Header, vollständige Umgebungen und private Trainingsbeispiele niemals protokollieren.
  • Ausnahmen nicht automatisch erneut auslösen. Zuerst den Lauf- und Dienststatus prüfen.
Python-Fehler und Zuordnung der CLI-Exitcodes
Feld oder SchnittstelleTyp oder ErgebnisStandardwert oder ExitcodeVerhalten und Validierung
ConfigurationError TrainingError 2 Ungültiges Schema, Argument, ungültiger Pfad oder Status oder nicht unterstützte Überschreibung. Eingaben vor dem nächsten Versuch korrigieren.
CompatibilityError TrainingError 3 Adapter, Modell, Hardware, Präzision, Verteilung oder Format nicht unterstützt.
AuthenticationError TrainingError 4 Schlüssel fehlt oder ist abgelaufen, Berechtigung verweigert oder Freigabe an das Lehrmodell unzulässig. Die Nachricht darf keine Geheimnisse enthalten.
BudgetExceededError TrainingError 5 Ein begrenztes Budget war vor Erreichen der Abnahme ausgeschöpft. Gültigen Checkpoint und unerfüllte Kriterien erhalten.
EvaluationFailedError TrainingError 6 Pflichtkriterien verfehlt, Verbesserung stagniert oder Rückschritt hält an. Evaluationsbericht erhalten.
CheckpointError TrainingError 7 Ungültiger, unvollständiger oder nicht passender Wiederherstellungsstatus. Fortsetzung niemals erzwingen.
CancellationError TrainingError 7 Sichere Beendigung eigener Worker konnte nicht bestätigt werden; Bereinigung offen halten.
ExportError TrainingError 7 Artefakt nicht unterstützt oder ungültig, unsicherer Pfad oder Prüfsummenfehler; nicht ausliefern.
TrainingError Exception 7 Grundlegender Trainingsfehler. Alle aufgeführten Zielfehler erben davon; bereinigte Diagnosedaten erhalten.
Beispiel · 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.
Beispiel · 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.