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
-
from_fileLaden, ohne Gewichte zu ändern -
planAufgelöste Eingaben prüfen -
run/ Steuerung Worker und Wiederherstellung verwalten -
evaluate/exportAbgenommene 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_filevalidiert die lokale Konfiguration; dabei werden weder Gewichte geändert noch Teacher-Anfragen gesendet.- Python und CLI verwenden dieselben Einstellungen, Fingerprints, Budgets und Ausgaben.
| Feld oder Schnittstelle | Typ oder Ergebnis | Standardwert oder Exitcode | Verhalten 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. |
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.
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
EvaluationFailedErrorausgelö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.
| Feld oder Schnittstelle | Typ oder Ergebnis | Standardwert oder Exitcode | Verhalten 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. |
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.