हर भाषा में कमांड और कोड अंग्रेज़ी में ही रहेंगे। बड़े अक्षरों वाले प्लेसहोल्डर को अपने खाते और भुगतान किए गए कार्य के मानों से बदलें; साझा नोटबुक या लॉग में असली कुंजियाँ न डालें।
Python SDK इंटरफ़ेस
- TrainingClient HTTPS और सीमित अधिकारों वाली API key
- Session methods खोलें, तैयार करें और देखें
- TrainingProject स्थानीय योजना और प्रशिक्षण
- नतीजा स्थानीय मॉडल फ़ाइल और रिपोर्ट
TrainingClient: HTTPS और सीमित अधिकारों वाली API key. Session methods: खोलें, तैयार करें और देखें. TrainingProject: स्थानीय योजना और प्रशिक्षण. नतीजा: स्थानीय मॉडल फ़ाइल और रिपोर्ट
क्लाइंट सुरक्षित रूप से बनाएँ
TrainingClient API key, HTTPS base_url, धनात्मक सीमित timeout और 0 से 5 तक max_get_retries लेता है। Default timeout 60 सेकंड और GET retry count 2 है। Redirect अस्वीकार होते हैं। allow_loopback केवल स्पष्ट स्थानीय परीक्षण के लिए है; असुरक्षित दूरस्थ कनेक्शन पर असली key भेजने की वजह नहीं।
- कोड और environment variable के नाम हर भाषा में अंग्रेज़ी में रखें।
- TrainingClient पुराने session integrations के लिए उपलब्ध है।
- Schema वाले स्थानीय project run के लिए 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 रनटाइम की असली प्रगति भेजता है। train सत्र की ट्रेनिंग चलाता है। complete स्थानीय आउटपुट की रिपोर्ट भेजता है और cancel सेवा में सत्र रद्द करता है। नीचे मौजूदा TrainingClient के सटीक method signatures हैं।
reference_model_idनाम वाले तर्क के रूप में दें; यह शून्य से बड़ा पूर्णांक हो, true/false मान नहीं।max_requestsतैयारी अनुरोधों की सीमा है, मॉडल ट्रेनिंग के epochs की संख्या नहीं।TrainingClient.trainसत्र ID और नई आउटपुट डायरेक्टरी लेता है; 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.
अपवाद और अपेक्षित नतीजे
Session operations में TrainingClient, APIError और IntegrityError उठाता है। TrainingProject में ConfigurationError, CompatibilityError, AuthenticationError, BudgetExceededError, EvaluationFailedError, CheckpointError, CancellationError और ExportError, TrainingError के उपवर्ग हैं। Debugging के समय पूरा environment या authorization headers न छापें। पुराने client methods और नए project API के अनुबंध अलग हैं।
- हर run के साथ package और dependency versions रखें।
- TrainingProject की त्रुटियों में उपलब्ध होने पर गोपनीय विवरण हटाई गई जाँच-सूचना और रिपोर्ट रहती है।
- स्थिति बदलने वाली कार्रवाई दोहराने से पहले उसकी मौजूदा स्थिति पढ़ें।
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