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.
Python-Schnittstellen für Training
TrainingClient bleibt verfügbar; TrainingProject verwaltet lokale Projektläufe.
- TrainingClient HTTPS und API-Schlüssel mit eingeschränktem Geltungsbereich
- Sitzungsmethoden Öffnen, vorbereiten und prüfen
- TrainingProject Planen und lokal trainieren
- Ergebnis Lokales Artefakt und Berichte
TrainingClient: HTTPS und API-Schlüssel mit eingeschränktem Geltungsbereich. Sitzungsmethoden: Öffnen, vorbereiten und prüfen. TrainingProject: Planen und lokal trainieren. Ergebnis: Lokales Artefakt und Berichte
Client sicher erstellen
TrainingClient akzeptiert einen API-Schlüssel, eine HTTPS-base_url, einen endlichen positiven Timeout und max_get_retries von 0 bis 5. Der Standard-Timeout beträgt 60 Sekunden, die standardmäßige Anzahl der GET-Wiederholungen ist 2. Weiterleitungen werden abgelehnt. allow_loopback ist ausschließlich für ausdrücklich angegebene lokale Tests gedacht und rechtfertigt niemals, einen echten Schlüssel über eine unsichere Remote-Verbindung zu senden.
- Code und Namen von Umgebungsvariablen bleiben in allen Sprachversionen auf Englisch.
TrainingClientbleibt für bestehende Sitzungsintegrationen verfügbar.- Für lokale Projektläufe mit Schema verwenden Sie
TrainingProjectundfpai-training.
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
# Install the GPU-compatible PyTorch build for your runtime first.
python -m pip install 'fusionpointai-training[train] @ https://fusionpointai.com/downloads/fusionpointai-training.zip'
# API-only use without local training dependencies:
# python -m pip install 'fusionpointai-training @ https://fusionpointai.com/downloads/fusionpointai-training.zip'
import os
from fusionpointai_training import TrainingClient
client = TrainingClient(
api_key=os.environ["FUSIONPOINTAI_API_KEY"],
base_url="https://fusionpointai.com/api/v1/training",
timeout=60.0,
max_get_retries=2,
)
# transport optionally accepts an httpx transport for controlled integrations.
# Never enable insecure remote HTTP to work around a TLS error.
from importlib.metadata import PackageNotFoundError, version
from importlib.util import find_spec
for package in ("fusionpointai-training", "httpx", "torch", "transformers", "peft"):
try:
print(f"{package}=={version(package)}")
except PackageNotFoundError:
print(f"{package}: not installed")
for module in ("torch", "transformers", "peft", "safetensors"):
print(f"{module} importable:", find_spec(module) is not None)
# The train extra includes optional model-training dependencies; inspect before use.
Öffentliche Methoden verwenden
TrainingClient bietet Sitzungsmethoden wie open_session, prepare_session, get_session, download_dataset, post_event, train, complete und cancel. TrainingProject lädt Modell- und Laufparameter aus der Projektkonfiguration und verwaltet Plan, Training, Evaluation, Export und Wiederherstellung. Die unten aufgeführten Signaturen entsprechen dem jeweiligen Vertrag.
reference_model_idist ein Nur-Schlüsselwort-Argument und muss eine positive Ganzzahl, kein boolescher Wert sein.max_requestsbegrenzt Vorbereitungsanfragen, nicht die Anzahl der Trainingsepochen.TrainingClient.trainerwartet eine Sitzungs-ID;TrainingProjectbezieht den Modellpfad aus der Projektkonfiguration.
from fusionpointai_training.client import DatasetManifest
# Continue with an authenticated client and an owned session.
ready = client.prepare_session(session["id"])
for item in ready["datasets"]:
manifest = DatasetManifest(
split=item["split"], sha256=item["sha256"],
bytes=item["bytes"], rows=item["rows"],
)
rows = client.download_dataset(ready["id"], manifest)
print(manifest.split, len(rows), manifest.sha256)
# Each row has a text field. Do not log private training content.
# For a genuine external trainer integration, not simulated progress.
def report_progress(client, session_id, *, step, total_steps, loss):
return client.post_event(session_id, {
"state": "running",
"step": step,
"total_steps": total_steps,
"metrics": {"loss": loss},
})
# Supply values observed from your real trainer.
# The built-in train() already reports its progress; do not duplicate it.
import json
from pathlib import Path
# Continue with client/session. Inspect state before retrying reporting.
report = json.loads(Path("customer-model-run-001/training-report.json").read_text())
state = client.get_session(session["id"])
if state["status"] == "evaluating":
state = client.complete(session["id"], report["completion_report"])
print(state["status"])
# Do not restart weight training just to reconcile reporting.
import os
from fusionpointai_training import TrainingClient
client = TrainingClient(api_key=os.environ["FUSIONPOINTAI_API_KEY"])
session = client.get_session(os.environ["FUSIONPOINTAI_SESSION_ID"])
report = session.get("report")
last_event = report.get("last_event", {}) if isinstance(report, dict) else {}
print("State:", session["status"], "Step:", session["step"])
print("Last reported error code:", last_event.get("error_code"))
# A missing error_code does not prove success. Read state and your local report.
# Do not dump full provider responses, private data or authorization headers.
Ausnahmen und erwartete Ergebnisse
TrainingClient löst bei Sitzungsoperationen APIError und IntegrityError aus. TrainingProject stellt ConfigurationError, CompatibilityError, AuthenticationError, BudgetExceededError, EvaluationFailedError, CheckpointError, CancellationError und ExportError als Unterklassen von TrainingError bereit. Geben Sie bei der Fehlersuche weder Umgebung noch Authorization-Header aus. Beide Schnittstellen haben getrennte Verträge.
- Paket- und Abhängigkeitsversionen mit jedem Lauf protokollieren.
TrainingProject-Fehler bewahren, soweit vorhanden, bereinigte Diagnosedaten und Berichte.- Ändernde Vorgänge nicht wiederholen, bevor ihr Status geprüft wurde.
import os
from fusionpointai_training import TrainingClient
from fusionpointai_training.errors import APIError, IntegrityError, TrainingError
client = TrainingClient(api_key=os.environ["FUSIONPOINTAI_API_KEY"])
try:
state = client.get_session(os.environ["FUSIONPOINTAI_SESSION_ID"])
print("Current state:", state["status"])
except IntegrityError:
print("Integrity check failed; preserve the report and investigate.")
except TrainingError:
print("Training failed; inspect the local report before retrying.")
except APIError:
print("Request failed; inspect access and session state before another write.")
except ValueError:
print("Invalid local configuration; correct the input before retrying.")
# Never print the key or authorization headers.
import os
from fusionpointai_training import TrainingClient
from fusionpointai_training.errors import APIError
client = TrainingClient(
api_key=os.environ["FUSIONPOINTAI_API_KEY"],
timeout=30.0,
max_get_retries=2,
)
try:
session = client.get_session(os.environ["FUSIONPOINTAI_SESSION_ID"])
except APIError:
# GET retries are bounded. Do not blindly retry a write after an error.
print("Session inspection failed; check access and current server state.")
else:
print("Status:", session["status"])
# Never print the API key, authorization headers, or response secrets.
Python-Schnittstelle
TrainingClient(api_key: str, *, base_url: str = "https://fusionpointai.com/api/v1/training", allow_loopback: bool = False, timeout: float = 60.0, max_get_retries: int = 2, transport: httpx.BaseTransport | None = None)create_session(job: str, runtime: str, *, reference_model_id: int | None = None) -> dictopen_session(job: str, runtime: str, *, reference_model_id: int | None = None) -> dictget_session(session_id: str) -> dictprepare_session(session_id: str, *, max_requests: int | None = None) -> dictDatasetManifest(split: str, sha256: str, bytes: int, rows: int)download_dataset(session_id: str, manifest: DatasetManifest) -> list[dict[str, str]]post_event(session_id: str, event: dict) -> dicttrain(session_id: str, output_dir: str | os.PathLike[str]) -> dictcomplete(session_id: str, report: dict) -> dictcancel(session_id: str) -> dictTrainingProject.from_file(path: str | os.PathLike[str], *, api_key: str) -> TrainingProjectTrainingProject.plan(*, dry_run: bool = True) -> dictTrainingProject.run() -> dictTrainingProject.status() -> dictTrainingProject.pause() -> dictTrainingProject.resume() -> dictTrainingProject.cancel() -> dictTrainingProject.evaluate(*, split: str = "test") -> dictTrainingProject.export(*, format: str = "safetensors") -> dictregister_evaluator(name: str, scorer: Callable, *, version: str) -> None