تدريب النماذج على تعليقاتك التوضيحية
درّب نموذجاً على تصنيفات دراستك من صفحة التدريب في لوحة الإدارة، وقِس أداءه على عناصر محجوزة، واعرض تنبؤاته على المعلّقين بوصفها تصنيفات مسبقة.
جديد في v2.14.0
يدرّب تدريب النماذج نموذجاً على التصنيفات التي أعطاها المعلّقون بالفعل، ويقيس أداء النموذج على عناصر حُجزت خارج التدريب، ويستطيع عرض إجابات النموذج على المعلّقين بوصفها تصنيفات مسبقة يؤكدونها أو يصحّحونها. تشرح هذه الصفحة حلقة التدريب، وصفحة التدريب في لوحة الإدارة، والمُدرِّبات مجمّعة بحسب المهمة، والصفحة أو الدرس الذي يغطي كل جزء بالتفصيل. الصفحة موجّهة إلى أصحاب الدراسات والمسؤولين الذين يشغّلون خادم Potato مستضافاً ذاتياً. صفحة التدريب والمُدرِّب sklearn-text جزء من Potato منذ 2.11. ويضيف الإصدار 2.14.0 ما مجموعه 37 مُدرِّباً، والتدريب عن بُعد على خوادم GPU وعناقيد SLURM، ودرجات العناصر المحجوزة في جدول التشغيلات، والنشر على Hugging Face Hub.
حلقة التدريب
كل جولة من الحلقة تدرّب نموذجاً على التصنيفات البشرية المجموعة حتى الآن، وتعطي المعلّق التالي إجابات النموذج نقطةَ بداية. تعمل الحلقة في ست خطوات:
- التعليق. يصنّف المعلّقون العناصر كالمعتاد، ويحسم Potato تصنيفات عدة معلّقين على عنصر واحد في تصنيف واحد، بطريقة Dawid-Skene افتراضياً أو بتصويت الأغلبية.
- التدريب. تقسّم التشغيلة العناصر المصنّفة إلى مجموعات train وval وtest، وتدرّب النموذج في عملية منفصلة. يحتفظ كل عنصر بالقسم نفسه من تشغيلة إلى أخرى، لأن التقسيم دالة تجزئة بذرية لمعرّف العنصر.
- التقييم. تقيس التشغيلة أداء النموذج على عناصر val وtest المحجوزة.
- الكتابة الراجعة. تدخل تنبؤات التشغيلة في بيانات كل عنصر بوصفها تصنيفات مسبقة للمخططات التي تختارها. تُستبعد التنبؤات التي تقل عن حدّ أدنى للثقة، والتنبؤات على عناصر قسم train.
- التصحيح. يرى المعلّق التالي إجابة النموذج معبّأة مسبقاً، ويؤكدها أو يغيّرها. ويستطيع المراجع أيضاً أن يسجّل ما إذا كان النموذج مصيباً.
- إعادة التدريب. تتدرّب التشغيلة التالية على التصنيفات الجديدة، ويدخل كل عنصر صحّحه مراجع في قسم train.
تفعيل التدريب
تدريب النماذج معطّل افتراضياً، ويكفي مفتاح تهيئة واحد لتفعيله. أضف هذه الكتلة إلى تهيئة موجودة:
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.
تشغيلتان لـ 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:
model_training:
enabled: true
writeback:
schemas: [sentiment]
min_confidence: 0.6
include_unlabeled: trueمع هذه الكتلة يُخزَّن تنبؤ sentiment ذو ثقة أقل من 0.6 ولا يُعرض. يجعل include_unlabeled: true كل تشغيلة تتنبأ أيضاً بالعناصر التي لم يصنّفها أحد بعد. ومن دون هذا الإعداد تتنبأ التشغيلة بعناصر val وtest المحجوزة فقط. لا تحصل عناصر قسم train في التشغيلة على تصنيف مسبق أبداً، ولا تغيّر الكتابة الراجعة تصنيفاً بشرياً أبداً. ولا يصبح التصنيف المسبق إجابة المعلّق إلا حين يعدّله المعلّق أو ينتقل إلى العنصر التالي.
يرى المعلّق الجديد إجابة النموذج محددة مسبقاً، ويؤكدها أو يغيّرها
يقدّم assignment_strategy: model_review العناصر ذات التصنيفات المسبقة إلى المراجعين بادئاً بالأقل ثقة. يسجّل المراجع حكماً هو accept أو correct أو reject على كل عنصر. ويُزال التصنيف المسبق المرفوض عن العنصر ولا يُعرض ثانيةً. وتتدرّب كل تشغيلة لاحقة على عنصر حكمه correct ولا تقيس أداء النموذج عليه أبداً. تسحب التصنيفات المسبقة المعلّقين نحو إجابة النموذج. فعّل include_unlabeled حين تدعم درجة العناصر المحجوزة الاعتماد على النموذج، واستعن بدليل كيف تميّز المراجعة من الموافقة الآلية في البيانات ذات التصنيفات المسبقة لإيجاد المعلّقين الذين يقبلون التصنيفات المسبقة دون قراءتها. ويستعرض النموذج داخل الحلقة الكتابة الراجعة والمراجعة وإعادة التدريب في مشروع واحد.
إعادة التدريب مع وصول التعليقات التوضيحية
يبدأ auto_retrain تشغيلات تلقائياً مع وصول التعليقات التوضيحية، وتحلّ كل تشغيلة جديدة محل التصنيفات المسبقة للتشغيلة السابقة. أضف الكتلة تحت model_training:
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. استخدم التعلّم النشط لتقرّر أي العناصر يصنّفها الناس بعد ذلك. واستخدم تدريب النماذج حين تحتاج إلى نموذج مقيس على عناصر محجوزة، أو تصنيفات مسبقة للمعلّقين، أو نموذج للنشر.
الدروس
يشغّل كل درس إعداداً واحداً من التثبيت إلى تشغيلة مقيَّمة:
- درّب نموذجك الأول من تعليقاتك التوضيحية يدرّب
sklearn-textعلى دراسة مشاعر، بلا GPU. - التدريب على خادم GPU أو عنقود SLURM أو جهاز خلف NAT يُعدّ خادم GPU بـ ssh وعنقود SLURM ووكيلاً يستطلع الخادم.
- الوسم مع النموذج داخل الحلقة بالتصنيفات المسبقة وإعادة التدريب يغطي الكتابة الراجعة والمراجعة والاكتساب و
auto_retrainوإصدارات مجموعات البيانات. - الضبط الدقيق لنموذج لغوي كبير على تعليقاتك التوضيحية يدرّب نماذج SFT وDPO والمكافأة ومكافأة العملية، مع QLoRA والنشر على Hub.
- درّب نماذج الكشف والتجزئة على تعليقات الصور التوضيحية يدرّب كاشفات ومجزّئات على الصور والشرائح والمجهر والخرائط، إضافة إلى Cellpose وSAM وLayoutLMv3 ونماذج الرؤية واللغة.
- درّب نماذج الكلام والصوت على تعليقاتك التوضيحية يدرّب Whisper وفصل المتحدثين وكاشفات المخططات الطيفية ومُوسِّمات الصوت، مع ملفات RTTM.
- درّب نماذج على الأحجام والسحب النقطية والفيديو يدرّب
volume-unetوexternal-3dوvideo-track. - درّب نماذج على الجزيئات والأطياف والإشارات وحلقات الروبوت يدرّب
rdkit-propertyوpeak-cnnوsignal-cnnوepisode-model. - تصنيفات مسبقة ودرجات عناصر محجوزة من نموذج تشغّله بالفعل يصل بنموذج تخدمه بالفعل عبر جسر استدلال أو
label-studio-ml. - الضبط الدقيق الخاص تفاضلياً باستخدام Opacus يدرّب مصنِّفاً بالمعامل
dpوOpacus.
قراءات إضافية
- المُدرِّبات - كل المُدرِّبات الـ 38 مجمّعة بحسب المهمة
- التهيئة - كل مفتاح من مفاتيح
model_trainingوالخلفيات والمسارات ومسارات التخزين - التعلّم النشط - إعادة ترتيب الطابور بمصنِّف scikit-learn
- التعليق التوضيحي المسبق بالنماذج اللغوية الكبيرة ونماذج الرؤية - تصنيفات مسبقة من نموذج لغوي كبير أو نموذج رؤية بدلاً من نموذج مدرَّب
- محرّك الوسم - تصنيفات آلية تُختبر مقابل عيّنة عمياء من التصنيفات البشرية
- محاكي المستخدمين - معلّقون محاكَون لتجربة الحلقة قبل أن يبدأ المعلّقون الحقيقيون
للاطلاع على تفاصيل التنفيذ، راجع الوثائق المصدرية.