تخطّي إلى المحتوى

تدريب النماذج على تعليقاتك التوضيحية

درّب نموذجاً على تصنيفات دراستك من صفحة التدريب في لوحة الإدارة، وقِس أداءه على عناصر محجوزة، واعرض تنبؤاته على المعلّقين بوصفها تصنيفات مسبقة.

جديد في v2.14.0

يدرّب تدريب النماذج نموذجاً على التصنيفات التي أعطاها المعلّقون بالفعل، ويقيس أداء النموذج على عناصر حُجزت خارج التدريب، ويستطيع عرض إجابات النموذج على المعلّقين بوصفها تصنيفات مسبقة يؤكدونها أو يصحّحونها. تشرح هذه الصفحة حلقة التدريب، وصفحة التدريب في لوحة الإدارة، والمُدرِّبات مجمّعة بحسب المهمة، والصفحة أو الدرس الذي يغطي كل جزء بالتفصيل. الصفحة موجّهة إلى أصحاب الدراسات والمسؤولين الذين يشغّلون خادم Potato مستضافاً ذاتياً. صفحة التدريب والمُدرِّب sklearn-text جزء من Potato منذ 2.11. ويضيف الإصدار 2.14.0 ما مجموعه 37 مُدرِّباً، والتدريب عن بُعد على خوادم GPU وعناقيد SLURM، ودرجات العناصر المحجوزة في جدول التشغيلات، والنشر على Hugging Face Hub.

حلقة التدريب

كل جولة من الحلقة تدرّب نموذجاً على التصنيفات البشرية المجموعة حتى الآن، وتعطي المعلّق التالي إجابات النموذج نقطةَ بداية. تعمل الحلقة في ست خطوات:

  1. التعليق. يصنّف المعلّقون العناصر كالمعتاد، ويحسم Potato تصنيفات عدة معلّقين على عنصر واحد في تصنيف واحد، بطريقة Dawid-Skene افتراضياً أو بتصويت الأغلبية.
  2. التدريب. تقسّم التشغيلة العناصر المصنّفة إلى مجموعات train وval وtest، وتدرّب النموذج في عملية منفصلة. يحتفظ كل عنصر بالقسم نفسه من تشغيلة إلى أخرى، لأن التقسيم دالة تجزئة بذرية لمعرّف العنصر.
  3. التقييم. تقيس التشغيلة أداء النموذج على عناصر val وtest المحجوزة.
  4. الكتابة الراجعة. تدخل تنبؤات التشغيلة في بيانات كل عنصر بوصفها تصنيفات مسبقة للمخططات التي تختارها. تُستبعد التنبؤات التي تقل عن حدّ أدنى للثقة، والتنبؤات على عناصر قسم train.
  5. التصحيح. يرى المعلّق التالي إجابة النموذج معبّأة مسبقاً، ويؤكدها أو يغيّرها. ويستطيع المراجع أيضاً أن يسجّل ما إذا كان النموذج مصيباً.
  6. إعادة التدريب. تتدرّب التشغيلة التالية على التصنيفات الجديدة، ويدخل كل عنصر صحّحه مراجع في قسم train.

تفعيل التدريب

تدريب النماذج معطّل افتراضياً، ويكفي مفتاح تهيئة واحد لتفعيله. أضف هذه الكتلة إلى تهيئة موجودة:

yaml
model_training:
  enabled: true

أعد تشغيل الخادم وافتح /admin/training بجلسة مسؤول أو بمفتاح API الخاص بالمسؤول. ومن دون enabled: true لا توجد مسارات التدريب أصلاً. لا يغيّر تفعيل التدريب شيئاً مما يراه المعلّقون، لأن التصنيفات المسبقة لا تظهر إلا للمخططات المدرجة تحت writeback.schemas، والقائمة فارغة افتراضياً.

تضم لوحة Start a run في أعلى صفحة التدريب إعداد التشغيلة كله. يسرد Schema مخططات التعليق التوضيحي في الدراسة، ويسرد Trainer المُدرِّبات التي تناسب نوع المخطط المحدد وعناصره، ويسرد Runs on الأماكن التي يمكن أن تعمل فيها التشغيلة. يقبل الحقل Parameters صيغة JSON، ويبدأ من مدخل المُدرِّب المختار في model_training.trainer_params. وتذكر الملاحظة تحت الحقل كل معامل يقبله المُدرِّب. يبدأ Train now التشغيلة. والتشغيلة التي تبدأ أثناء تشغيلة أخرى جارية تنتظر في طابور، وتظهر في جدول التشغيلات بالصيغة waiting #N مع زر Cancel run.

صفحة التدريب في Potato وقد اختير فيها sklearn-text ومخطط sentiment والخلفية local، فوق جدول تشغيلات يضم تشغيلتين منتهيتين بدرجتين محجوزتين هما 0.847 و0.840تشغيلتان لـ sklearn-text على مخطط sentiment، لكل منهما درجة مقيسة على مراجعات لم يتدرّب عليها النموذج

يفتح كل معرّف تشغيلة في جدول التشغيلات صفحة التشغيلة في /admin/training/runs/<run_id>. تعرض صفحة التشغيلة حالتها والمُدرِّب والخلفية وأحجام الأقسام ودرجة العناصر المحجوزة والمعاملات، ثم كل مقياس سجّلته التشغيلة وسجلّها. وتضيف التشغيلة الفاشلة قسماً باسم What went wrong. ومن صفحة التشغيلة يمكنك أيضاً حفظ عناصر val أو test أو train للتشغيلة إصداراً من مجموعة بيانات، ونشر النموذج على Hugging Face Hub. وللاطلاع على تشغيلة أولى كاملة على مشروع نموذجي بلا GPU، اتبع درّب نموذجك الأول.

المُدرِّبات بحسب المهمة

يضم Potato 2.14.0 ما مجموعه 38 مُدرِّباً، يُذكر كل منها في قائمة Trainer باسمه في السجل. يجمع الجدول المُدرِّبات بحسب نوع التعليق التوضيحي الذي يتعلّم منه كل مُدرِّب:

المهمةالمُدرِّباتموضع التغطية
تصنيفات على النصsklearn-text, hf-text-classification, setfitدرّب نموذجك الأول
النطاقات والعلاقات وأشجار المحادثة والشروحhf-token-classification, hf-relation, hf-conversation-tree, byt5-glossالمُدرِّبات
النماذج اللغوية الكبيرة ونماذج المكافأةllm-sft, llm-dpo, reward-model, prm-rewardالضبط الدقيق للنماذج اللغوية الكبيرة
الصور والشرائح والمجهر والخرائط وتخطيطات الصفحاتhf-image-classification, torchvision-detect, ultralytics-detect, torchvision-segment, ultralytics-segment, cellpose, sam-finetune, layoutlmv3, vlm-sftنماذج الرؤية
الصوتhf-audio-tagger, whisper-asr, diarizationنماذج الصوت
الأحجام والسحب النقطية والفيديوvolume-unet, external-3d, video-trackالأحجام والسحب النقطية والفيديو
الجزيئات والأطياف والإشارات وحلقات الروبوتrdkit-property, peak-cnn, signal-cnn, episode-modelالنماذج العلمية
نماذج القرار (Laya وJev وOpenJev)decision-calibrate, laya-finetune, openjev-finetuneالمُدرِّبات
نماذج تشغّلها بالفعل في مكان آخرlabel-studio-ml, hf-inference, openai-vlm-boxes, roboflow, cvat-nuclioأحضر نموذجك الخاص

المُدرِّبات الخمسة في الصف الأخير لا تدرّب شيئاً. يرسل كل واحد منها العناصر المحجوزة إلى نموذج يعمل في مكان آخر، ويقيّم Potato الإجابات ويكتبها راجعةً ويراجعها كما يفعل مع إجابات نموذج مدرَّب. لا يحتاج sklearn-text إلى أي شيء يتجاوز تثبيت Potato العادي، ويثبّت الأمر pip install "potato-annotation[train]" ما تحتاجه مُدرِّبات النص والصور والصوت والنماذج اللغوية الكبيرة. ويظهر المُدرِّب غير المثبّت في صفحة التدريب بعبارة "not installed" مع الأمر الذي يثبّته. تعرض صفحة المُدرِّبات أنواع التعليق التوضيحي وأنواع العناصر وأمر التثبيت والمعاملات لكل مُدرِّب.

أين تعمل التشغيلات

تعمل التشغيلة على خلفية، تُختار لكل تشغيلة من قائمة Runs on أو افتراضياً بالمفتاح model_training.backend. لدى Potato أربعة أنواع من الخلفيات:

  • local تدرّب على خادم Potato نفسه، في عملية فرعية. يختار device: auto وحدة CUDA أولاً، ثم Metal من Apple، ثم المعالج.
  • ssh تدرّب على خادم GPU يصل إليه Potato بـ ssh بالمفاتيح. ينسخ Potato شيفرة Potato المصدرية إلى الخادم، ويبدأ التشغيلة هناك، وينسخ النموذج عائداً بعد تشغيلة ناجحة.
  • slurm تتصل بعقدة تسجيل الدخول في عنقود بالطريقة نفسها، وتُرسل مهمة التدريب إلى عقدة حوسبة بالأمر sbatch. لا تستدعي الخلفية إلا sbatch وsqueue وscancel وscontrol، ولذلك يعمل عنقود بلا srun أو sacct.
  • agent تخدم جهازاً لا يصل إليه Potato، مثل محطة عمل خلف NAT. يستطلع الأمر potato training agent على ذلك الجهاز الخادمَ بحثاً عن المهام، وتبقى ملفات النموذج على ذلك الجهاز.

يختبر الأمر potato training check <backend> config.yaml خلفيةً قبل التشغيلة الأولى، ويؤدي زر Check في صفحة التدريب الاختبار نفسه. تسرد صفحة التهيئة كل مفتاح من مفاتيح الخلفيات، ويُعدّ التدريب على خادم GPU أو عنقود الأنواع الثلاثة البعيدة خطوة بخطوة.

درجات العناصر المحجوزة

تقيس كل تشغيلة أداء النموذج على عناصر val وtest بمقياس يُختار بحسب نوع التعليق التوضيحي للمخطط. يحصل المصنِّف أحادي التصنيف على macro-F1، ويحصل واسم النطاقات على span F1، ويحصل كاشف الصناديق على mAP عند IoU 0.5، ويحصل نموذج النسخ على 1 ناقص معدل أخطاء الكلمات. يعرض جدول التشغيلات درجة رئيسية واحدة لكل تشغيلة، وتسرد صفحة التشغيلة كل مقياس مع القسم في اسمه، مثل val_macro_f1 أو test_f1. والعنصر الذي له تصنيف ولا تنبؤ له يُحتسب خاطئاً. ولذلك لا يستطيع المُدرِّب رفع الدرجة بتخطّي العناصر الصعبة. وحين يختار المُدرِّب أفضل نقطة حفظ على عناصر val تأتي الدرجة الرئيسية من عناصر test، لأن درجة val شكّلت النموذج بالفعل. أما المُدرِّب الذي لا يختار شيئاً على val، مثل sklearn-text، فتؤخذ درجته الرئيسية من عناصر val. تعرض صفحة التهيئة المقاييس لكل نوع من أنواع التعليق التوضيحي.

التصنيفات المسبقة وطابور مراجعة النموذج

التصنيف المسبق هو إجابة نموذج معبّأة في صفحة التعليق التوضيحي ليؤكدها المعلّق أو يغيّرها. تحوّل الكتابة الراجعة تنبؤات التشغيلة إلى تصنيفات مسبقة للمخططات المدرجة تحت writeback.schemas، من دون الحاجة إلى كتلة pre_annotation. أضف الكتلة writeback تحت model_training:

yaml
model_training:
  enabled: true
  writeback:
    schemas: [sentiment]
    min_confidence: 0.6
    include_unlabeled: true

مع هذه الكتلة يُخزَّن تنبؤ sentiment ذو ثقة أقل من 0.6 ولا يُعرض. يجعل include_unlabeled: true كل تشغيلة تتنبأ أيضاً بالعناصر التي لم يصنّفها أحد بعد. ومن دون هذا الإعداد تتنبأ التشغيلة بعناصر val وtest المحجوزة فقط. لا تحصل عناصر قسم train في التشغيلة على تصنيف مسبق أبداً، ولا تغيّر الكتابة الراجعة تصنيفاً بشرياً أبداً. ولا يصبح التصنيف المسبق إجابة المعلّق إلا حين يعدّله المعلّق أو ينتقل إلى العنصر التالي.

مراجعة منتج في صفحة التعليق التوضيحي في Potato وقد اختار النموذج فيها Positive مسبقاً، قبل أن يجيب المعلّقيرى المعلّق الجديد إجابة النموذج محددة مسبقاً، ويؤكدها أو يغيّرها

يقدّم assignment_strategy: model_review العناصر ذات التصنيفات المسبقة إلى المراجعين بادئاً بالأقل ثقة. يسجّل المراجع حكماً هو accept أو correct أو reject على كل عنصر. ويُزال التصنيف المسبق المرفوض عن العنصر ولا يُعرض ثانيةً. وتتدرّب كل تشغيلة لاحقة على عنصر حكمه correct ولا تقيس أداء النموذج عليه أبداً. تسحب التصنيفات المسبقة المعلّقين نحو إجابة النموذج. فعّل include_unlabeled حين تدعم درجة العناصر المحجوزة الاعتماد على النموذج، واستعن بدليل كيف تميّز المراجعة من الموافقة الآلية في البيانات ذات التصنيفات المسبقة لإيجاد المعلّقين الذين يقبلون التصنيفات المسبقة دون قراءتها. ويستعرض النموذج داخل الحلقة الكتابة الراجعة والمراجعة وإعادة التدريب في مشروع واحد.

إعادة التدريب مع وصول التعليقات التوضيحية

يبدأ auto_retrain تشغيلات تلقائياً مع وصول التعليقات التوضيحية، وتحلّ كل تشغيلة جديدة محل التصنيفات المسبقة للتشغيلة السابقة. أضف الكتلة تحت model_training:

yaml
model_training:
  enabled: true
  auto_retrain:
    enabled: true
    trainer: sklearn-text
    schemas: [sentiment]
    update_frequency: 25
    min_interval_s: 600

مع هذه القيم تبدأ التشغيلة حين يصل 25 تعليقاً توضيحياً منذ آخر تشغيلة تلقائية ويمضي 600 ثانية منذ انتهاء آخر تشغيلة. تسرد صفحة التهيئة كل مفتاح من مفاتيح auto_retrain وأسباب تخطّي الفحص لتشغيلة، ويبيّن النموذج داخل الحلقة متى تفعّل إعادة التدريب.

نشر نموذج على Hugging Face Hub

للتشغيلة الناجحة التي يوجد نموذجها على خادم Potato نموذجُ Publish to the Hugging Face Hub في صفحة التشغيلة. يرفع النشر أوزان النموذج وتهيئته وملفات المُرمِّز، إضافة إلى بطاقة نموذج README.md مكتوبة من التشغيلة. تذكر بطاقة النموذج المُدرِّب والنموذج الأساسي والمخططات والتصنيفات وأحجام الأقسام ودرجة العناصر المحجوزة. أما تنبؤات التشغيلة وأي نسخة من بيانات التدريب فتبقى على الخادم.

تكتب اسم المستودع مرتين، ولا يمضي النشر إلا إذا تطابق الاسمان. خيار Private محدد افتراضياً، ويأتي رمز Hugging Face من متغير بيئة على الخادم (HF_TOKEN افتراضياً) لا من الصفحة. ولا يمكن نشر نموذج تُرك على مضيف بعيد أو على جهاز وكيل من صفحة التشغيلة. تسرد صفحة التهيئة الملفات التي تُرفع ومسار API، ويشغّل الضبط الدقيق لنموذج لغوي كبير على تعليقاتك التوضيحية عملية نشر من البداية إلى النهاية.

تدريب النماذج ومحرّك الوسم

يستخدم محرّك الوسم المُدرِّبات نفسها. فحين يُفعَّل التقطير (features.distill) يدرّب المحرّك نموذجاً بمُدرِّب (sklearn-text افتراضياً) على التصنيفات البشرية للمحرّك وعلى التصنيفات الآلية التي صدّق عليها عقد، ثم يضع النموذج قبل التسلسل المهيأ بوصفه مصدراً من نوع trained. ولا تدخل عناصر قسمي cert وaudit في المحرّك أبداً في مجموعة تدريب التقطير. ويستطيع مصدر trained أيضاً تحميل نموذج من تشغيلة تدريب، بجعل مجلد نموذج التشغيلة هو artifact_dir. تسرد تهيئة محرّك الوسم مفاتيح التقطير.

تدريب النماذج والتعلّم النشط

تدرّب ميزة التعلّم النشط في Potato نموذجاً على تصنيفات الدراسة لغرض أضيق من تدريب النماذج. يدرّب التعلّم النشط مصنِّف scikit-learn داخل عملية الخادم كل update_frequency تعليقاً توضيحياً، ويستخدمه لإعادة ترتيب الطابور بادئاً بأكثر العناصر عدم يقين. ولا يحصل المعلّقون على الطابور المعاد ترتيبه إلا في ظل assignment_strategy: active_learning. ويُقيَّم مصنِّف التعلّم النشط على العناصر التي دُرّب عليها، ولا تُعرض تنبؤاته على المعلّقين أبداً.

يشغّل تدريب النماذج أيّاً من المُدرِّبات الـ 38 في عملية منفصلة أو على جهاز آخر، ويقيس أداء النموذج على عناصر محجوزة، ويعرض إجابات النموذج بوصفها تصنيفات مسبقة. ويستطيع تدريب النماذج أن يرتّب الطابور أيضاً. ففي ظل assignment_strategy: llm_confidence تأتي أولاً العناصر التي يكون تصنيفها المسبق المنشور أقل ثقة. ويستبدل المعامل acquisition في hf-text-classification وhf-image-classification بهذا الترتيب درجةً من الهامش أو الإنتروبيا أو BALD أو core-set. استخدم التعلّم النشط لتقرّر أي العناصر يصنّفها الناس بعد ذلك. واستخدم تدريب النماذج حين تحتاج إلى نموذج مقيس على عناصر محجوزة، أو تصنيفات مسبقة للمعلّقين، أو نموذج للنشر.

الدروس

يشغّل كل درس إعداداً واحداً من التثبيت إلى تشغيلة مقيَّمة:

قراءات إضافية

للاطلاع على تفاصيل التنفيذ، راجع الوثائق المصدرية.