فەرمان و کۆد لە هەموو زمانێکدا بە ئینگلیزی دەمێننەوە. جێگرەوە گەورەنووسەکان بە بەهای هەژمار و کاری پارەدراوی خۆت بگۆڕە؛ کلیلی ڕاستەقینە لە نۆتبووکی هاوبەش یان تۆمارەکاندا مەنووسە.
ڕووکارەکانی SDKی Python
- TrainingClient HTTPS و کلیلی APIی مەودادار
- شێوازەکانی Session کردنەوە، ئامادەکردن و پشکنین
- TrainingProject پلاندانان و ڕاهێنانی ناوخۆ
- ئەنجام بەرهەم و ڕاپۆرتی ناوخۆ
TrainingClient: HTTPS و کلیلی APIی مەودادار. شێوازەکانی Session: کردنەوە، ئامادەکردن و پشکنین. TrainingProject: پلاندانان و ڕاهێنانی ناوخۆ. ئەنجام: بەرهەم و ڕاپۆرتی ناوخۆ
کلایەنتێک بە شێوەی پارێزراو دروست بکە
TrainingClient کلیلی API، base_urlی HTTPS، timeoutی ئەرێنی و سنووردار و max_get_retries لە 0 تا 5 وەردەگرێت. timeoutی بنەڕەتی 60 چرکە و ژمارەی هەوڵی GETی بنەڕەتی 2ە. گواستنەوەی redirect ڕەت دەکرێتەوە. allow_loopback تەنها بۆ تاقیکردنەوەی ناوخۆییی ڕوونە، هەرگیز هۆکارێک نییە بۆ ناردنی کلیلی ڕاستەقینە لە پەیوەندیی دەرەکیی نەپارێزراو.
- کۆد و ناوی گۆڕاوەکانی ژینگە لە هەموو زمانەکان بە ئینگلیزی بهێڵەوە.
- TrainingClient بۆ یەکخستنی sessionی ئێستا بەردەست دەمێنێتەوە.
- بۆ ڕاکردنی پڕۆژەی ناوخۆییی schema-بنیاد TrainingProject و fpai-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.
شێوازە گشتییەکان بەکاربهێنە
open_session و create_session هەمان کردار ئەنجام دەدەن. prepare_session ئامادەکاریی سنووردار دەکات. get_session دۆخ دەپشکنێت. download_dataset DatasetManifest پشتڕاست دەکاتەوە. post_event پێشکەوتنی ڕاستەقینەی runtime ڕاپۆرت دەکات. train ئامێری ڕاهێنانی session ڕادەکات. complete بەرهەمی ناوخۆی بەرهەمهاتوو ڕادەگەیەنێت و cancel دۆخی sessionی خزمەتگوزاری هەڵدەوەشێنێتەوە. لیستی شێوازەکان لێرە واژۆی وردی TrainingClientی پارێزراو بۆ یەکخستنی ئێستا پیشان دەدات.
- reference_model_id تەنها وەک keyword وەردەگیرێت و دەبێت ژمارەیەکی تەواوی ئەرێنی بێت، نەک boolean.
- max_requests ژمارەی داواکاریی ئامادەکردن سنووردار دەکات؛ ژمارەی epochی ڕاهێنانی مۆدێل نییە.
- TrainingClient.train ناسنامەی session و بوخچەی دەرچوونی نوێ وەردەگرێت؛ TrainingProject ڕێڕەوی مۆدێلەکە لە ڕێکخستنی پڕۆژەوە بار دەکات.
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.
هەڵەکان و دەرچوونی چاوەڕوانکراو
TrainingClient لە کردارەکانی sessionدا APIError و IntegrityError هەڵدەدات. TrainingProject ConfigurationError، CompatibilityError، AuthenticationError، BudgetExceededError، EvaluationFailedError، CheckpointError، CancellationError و ExportError وەک ژێرپۆلی TrainingError پیشان دەدات. لە کاتی دیباگدا ژینگە یان authorization header چاپ مەکە. شێوازی کلایەنتی کۆن و APIی پڕۆژەی نوێ گرێبەستی جیاوازیان هەیە.
- وەشانەکانی پاکێج و پەیوەندی لەگەڵ هەر تۆماری ڕاکردن بپارێزە.
- هەڵەکانی TrainingProject لە شوێنی بەردەست diagnostics و ڕاپۆرتی بێنهێنی دەپارێزن.
- کرداری گۆڕانکار دووبارە مەکەوە تا دۆخی ئێستای نەخوێندووەتەوە.
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
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