تبقى الأوامر والشفرة بالإنجليزية في جميع اللغات. استبدل العناصر النائبة المكتوبة بالأحرف الكبيرة بقيم من حسابك والمهمة المدفوعة؛ ولا تضع مفاتيح حقيقية في دفاتر ملاحظات أو سجلات مشتركة.
واجهة مشروع واحدة ومحرك أساسي واحد
-
from_fileحمّل دون تغيير الأوزان -
planافحص المدخلات المحسومة -
run/ الضوابط تولَّ ملكية العمال والاسترداد -
evaluate/exportافحص المخرجات المحلية المقبولة
from_file: حمّل دون تغيير الأوزان. plan: افحص المدخلات المحسومة. run / الضوابط: تولَّ ملكية العمال والاسترداد. evaluate / export: افحص المخرجات المحلية المقبولة
استخدم المحرك نفسه من Python
تكمل TrainingProject واجهة TrainingClient ولا تحل محلها. حمّل إعدادًا ومفتاح API محدود النطاق، وافحص الخطة، ثم ابدأ التشغيل. يتيح كائن المشروع فحص التشغيل الذي يملكه والتحكم فيه؛ ويرفض run استبدال تشغيل موجود، بينما يتطلب resume حالة استرداد صالحة.
- تقبل المسارات سلاسل نصية أو كائنات os.PathLike. وتُمرر خيارات الأساليب كوسائط مسماة فقط.
- يتحقق from_file من الإعداد المحلي؛ لكنه لا يحدّث الأوزان ولا يرسل طلبات إلى المعلّم.
- تستخدم مسارات Python وCLI الإعدادات والبصمات والميزانيات والمخرجات نفسها.
| الحقل أو الواجهة | النوع أو النتيجة | القيمة الافتراضية أو رمز الخروج | السلوك والتحقق |
|---|---|---|---|
TrainingProject.from_file(path, *, api_key) |
TrainingProject |
مطلوب / بلا قيمة افتراضية | حمّل مسار الإعداد وسلسلة سرية غير فارغة وتحقق منهما. يعيد كائن مشروع؛ من دون تحديث للأوزان أو طلبات إلى المعلّم. |
plan(*, dry_run=True) |
dict |
true |
القيمة True فقط. يعيد resolved_configuration وcompatibility وdata_sharing وbudgets وtopics وartifacts وfingerprints.
|
run() |
dict |
مطلوب / بلا قيمة افتراضية | انتظر حتى حالة نهائية أو إيقاف مؤقت؛ أعد نتيجة التشغيل المشتركة عند نجاح العملية فقط، وإلا فارفع الخطأ الموافق. |
status() |
dict |
مطلوب / بلا قيمة افتراضية | اقرأ run_id وstatus وstop_reason وreport_path وunmet_criteria دون بدء عامل.
|
pause() |
dict |
مطلوب / بلا قيمة افتراضية | انتظر إقرار العامل ونقطة تحقق صالحة؛ وأعد نتيجة التشغيل المشتركة. الحالة غير الصالحة خطأ في الإعداد. |
resume() |
dict |
مطلوب / بلا قيمة افتراضية | تحقق من جميع البصمات واستأنف العمال الذين تملكهم؛ وأعد نتيجة التشغيل المشتركة عند نجاح العملية. |
cancel() |
dict |
مطلوب / بلا قيمة افتراضية | انتظر توقف العمال الذين تملكهم وأعد الحالة cancelled؛ وارفع CancellationError إذا تعذر تأكيد الإيقاف الآمن.
|
evaluate(*, split="test") |
dict |
"test" |
اقبل validation أو test. أعد run_id وsplit وaccepted وcriteria وregressions وreport_path؛ وإذا فشل القبول فارفع EvaluationFailedError بعد حفظ التقرير.
|
export(*, format="safetensors") |
dict |
"safetensors" |
أعد run_id وformat وartifact_path وmanifest_path وsha256 لأصل مقبول ومتوافق.
|
register_evaluator(name, scorer, *, version) |
None |
مطلوب / بلا قيمة افتراضية | سجّل دالة تقييم موثوقة قبل إعداد الخطة أو التقييم، وحدّد اسمًا ثابتًا وإصدارًا واضحًا. تستقبل الدالة prediction وtarget وrow، ويجب أن تُرجع درجة عددية محدودة بين 0 و1. لا يمكن استبدال المقاييس المضمنة. |
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"])
افحص النتائج المنظّمة
يصف عقد الإرجاع أدناه بنية النتائج، لا قياسات نموذجية. افحص status وstop_reason وunmet_criteria قبل النشر. تحدد نتائج التقييم كل معيار وكل تراجع. يعيد التصدير مسارات محلية وبيانات سلامة؛ ولا يرفع النموذج تلقائيًا أو يستبدل الاستدلال في الإنتاج.
- يجب إمكان قراءة بيانات الحالة وmanifest من دون إنشاء طلب جديد للمعلّم.
- التقييم على مجموعة الاختبار النهائية منفصل عن التحقق المستخدم أثناء التحسين.
- يجب أن يطابق manifest الأصول الملفات الفعلية والمسارات النسبية الآمنة وأحجام البايتات وقيم SHA-256.
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.
تعامل مع الإخفاقات دون إخفائها
ترث فئات أخطاء المشروع من TrainingError وترتبط برموز خروج CLI. وتقع إخفاقات الإعداد والتوافق قبل التدريب. وتحتفظ إخفاقات الميزانية والتقييم بالتقارير والمعايير غير المستوفاة. ويظل خطأ إيقاف العامل أو نقطة التحقق إخفاقًا إلى أن يتأكد التنظيف الآمن.
- تعيد الأساليب الناجحة القواميس الموثقة. وإذا أخفق معيار، يُرفع EvaluationFailedError بعد حفظ تقرير التقييم.
- لا تسجل مطلقًا مفاتيح API أو ترويسات التفويض أو البيئة كاملة أو أمثلة التدريب الخاصة.
- لا تغلّف الاستثناءات لإعادة المحاولة تلقائيًا. افحص حالة التشغيل والخدمة أولًا.
| الحقل أو الواجهة | النوع أو النتيجة | القيمة الافتراضية أو رمز الخروج | السلوك والتحقق |
|---|---|---|---|
ConfigurationError |
TrainingError |
2 |
مخطط أو وسيطة أو مسار أو حالة غير صالحة، أو تجاوز غير مدعوم. صحح المدخلات قبل إعادة المحاولة. |
CompatibilityError |
TrainingError |
3 |
المحوّل أو النموذج أو العتاد أو الدقة أو التوزيع أو التنسيق غير مدعوم. |
AuthenticationError |
TrainingError |
4 |
المفتاح مفقود أو منتهي الصلاحية، أو الاستحقاق مرفوض، أو مشاركة المعلّم محظورة؛ لا تضع أسرارًا في الرسالة مطلقًا. |
BudgetExceededError |
TrainingError |
5 |
انتهت ميزانية محدودة قبل القبول. احتفظ بنقطة تحقق صالحة وبالمعايير غير المستوفاة. |
EvaluationFailedError |
TrainingError |
6 |
أخفقت معايير إلزامية أو تعثر التحسن أو استمر التراجع. احتفظ بتقرير التقييم. |
CheckpointError |
TrainingError |
7 |
حالة الاسترداد غير صالحة أو ناقصة أو غير متطابقة. لا تفرض الاستئناف مطلقًا. |
CancellationError |
TrainingError |
7 |
تعذر تأكيد الإيقاف الآمن للعمال الذين تملكهم؛ أبقِ التنظيف قيد المتابعة. |
ExportError |
TrainingError |
7 |
الأصل غير مدعوم أو غير صالح، أو المسار غير آمن، أو فشل التحقق من checksum؛ لا تسلّمه. |
TrainingError |
Exception |
7 |
إخفاق التدريب الأساسي. ترثه جميع أخطاء الهدف المذكورة؛ واحتفظ بتشخيصات منقّحة. |
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.