تخطّي إلى المحتوى
إعلاناتمدة القراءة 8 دقيقة

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

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

Potato Team

يدرّب Potato 2.14 نماذج على التعليقات التوضيحية الخاصة بالدراسة. تدرّب التشغيلة واحداً من 38 مُدرِّباً على التصنيفات التي أعطاها المعلّقون، وتقيس أداء النموذج على عناصر حُجزت خارج التدريب، وتكتب تنبؤات النموذج راجعةً إلى العناصر بوصفها تصنيفات مسبقة يؤكدها المعلّقون أو يصحّحونها. كان في الإصدار 2.13.1 مُدرِّب واحد هو sklearn-text. ويستورد هذا الإصدار أيضاً ملفات RTTM لفصل المتحدثين، ويصدّر أدوار المتحدثين المصحَّحة، ويشغّل WhisperX للنسخ المحلي، ويصلح عدة أخطاء غيّرت أرقام الاتفاق والتصديرات، فاقرأ ملاحظات الترقية قبل أن تثبّت.

bash
pip install --upgrade potato-annotation

ملاحظات الترقية

شغّل potato validate config.yaml --strict على كل تهيئة أولاً. قد تغيّر التغييرات التالية ما تفعله دراسة تعمل على 2.13:

  • assignment_strategy: llm_confidence يرتّب الطابور الآن. تقدّم الاستراتيجية التصنيف المسبق الأقل ثقة أولاً، ثم العناصر التي لا تصنيف مسبقاً لها. وكانت الإصدارات السابقة تقبل القيمة وتسند العناصر عشوائياً.
  • model_training يُفحص عند التحقق وعند البدء. المفتاح المجهول تحت writeback أو auto_retrain، وقسم باسم غير train أو val أو test، ومدخل في writeback.schemas ليس مخططاً، كلها أخطاء توقف الخادم.
  • تبلغ صفحة التدريب عن درجة عناصر محجوزة. كان عمود الدرجة يعرض دقة التدريب. ولا تُقارَن درجة من تشغيلة 2.13 بدرجة عناصر محجوزة في 2.14.
  • الروابط والسلاسل والأحداث تظهر في التصديرات. كانت إجابات span_link وcoreference وevent_annotation غائبة عن كل تصدير، وصار CSV وTSV يضيفان العمودين <scheme>._links و<scheme>._events.
  • لم يعد Potato يدرج ujson في install_requires. وسكربت خاص بك يستورد ujson من بيئة Potato يحتاج إلى pip install ujson.

تدريب النماذج

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

لتفعيل الحلقة في دراسة فيها مخطط sentiment أضف هذه الكتلة إلى تهيئة الدراسة:

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

لا يرى المعلّقون شيئاً من تشغيلة إلى أن يُسمّى مخطط تحت writeback.schemas. يتنبأ include_unlabeled: true بالعناصر التي لم يصنّفها أحد، ويُبقي min_confidence التنبؤات التي تقل عن 0.6 خارج الصفحة. أعد تشغيل الخادم، وافتح /admin/training بمفتاح المسؤول، واختر مُدرِّباً ومخططاً، وانقر Train now.

صفحة التدريب بعد تشغيلة واحدة لـ sklearn-text، تعرض نموذج التشغيلة وجدول التشغيلات بدرجة عناصر محجوزة وقائمة المُدرِّبات

يضم مشروع Potato النموذجي في examples/ai-assisted/model-training/ ما مجموعه 160 مراجعة منتج ويشغّل sklearn-text، الذي لا يحتاج إلى GPU ولا إلى شيء يتجاوز التثبيت العادي. وتبلغ وثائق تدريب النماذج عن تشغيلة واحدة هناك، على 120 مراجعة مصنّفة، سجّلت 0.84 macro-F1 على مراجعات التحقق وكتبت 80 تصنيفاً مسبقاً. ثم يرى معلّق جديد كل مراجعة من هذه المراجعات وإجابة النموذج محددة مسبقاً:

مراجعة في صفحة التعليق التوضيحي وإجابة النموذج محددة فيها بوصفها تصنيفاً مسبقاً

يستعرض درّب نموذجك الأول المثال خطوة بخطوة.

مُدرِّبات لكل نوع من التعليقات التوضيحية

تعرض صفحة التدريب لكل مخطط المُدرِّبات التي تناسبه فقط. يسرد فهرس المُدرِّبات كل المُدرِّبات الـ 38 مع أوامر التثبيت، وتسمّي القائمة أدناه المجموعات الرئيسية:

  • النص. يصنّف hf-text-classification وsetfit وsklearn-text العناصر. ويوسم hf-token-classification النطاقات، ويربط hf-relation النطاقات في علاقات وأحداث وسلاسل إحالة مشتركة، ويقسّم byt5-gloss الكلمات ويشرحها للشرح بين السطري.
  • الصور. يدرّب torchvision-detect وultralytics-detect كاشفات، ويدرّب torchvision-segment وultralytics-segment وcellpose مجزّئات. وتقطّع تشغيلات الكشف والتجزئة الشرائح الكاملة والصور الكبيرة، وتتدرّب على مستويات المجهر وخرائط GeoTIFF. ويجزّئ volume-unet الأحجام ثلاثية الأبعاد، ويصنّف layoutlmv3 تخطيطات الصفحات، ويضبط vlm-sft نموذج رؤية ولغة ضبطاً دقيقاً على التعليقات والتأريض وخطوات واجهة المستخدم.
  • الصوت والفيديو. يضبط whisper-asr نموذج Whisper ضبطاً دقيقاً على أدوار النص المنسوخ المصحَّحة، ويدرّب diarization نموذج متحدثين على أدوار المتحدثين، ويوسم hf-audio-tagger مقاطع الصوت، ويتتبع video-track الأجسام عبر الإطارات.
  • النماذج اللغوية الكبيرة والوكلاء. يضبط llm-sft ضبطاً دقيقاً على الإجابات النصية الحرة، وllm-dpo على التفضيلات الثنائية، وreward-model على إجابات المقارنة الثنائية والترتيب وأفضل-أسوأ، وprm-reward على تقييمات خطوات مسارات الوكلاء.
  • العلوم. يتنبأ rdkit-property بإجابات عن الجزيئات، ويتنبأ peak-cnn بمواضع القمم على الأطياف، ويصنّف signal-cnn فترات الإشارات الزمنية، ويصنّف episode-model حلقات الروبوت.

مُدرِّبا ultralytics بترخيص AGPL-3.0، وأوزان LayoutLMv3 بترخيص CC BY-NC-SA 4.0. وتطلب تشغيلة أي منها قبول الترخيص أولاً. ويثبّت pip install "potato-annotation[train]" ما تحتاجه مُدرِّبات النص والصور والصوت والنماذج اللغوية الكبيرة، ويسمّي الفهرس عمليات التثبيت المنفصلة.

درجات العناصر المحجوزة والتصنيفات المسبقة

تقيس كل تشغيلة أداء تنبؤاتها على عناصر val وtest بمقياس يلائم المخطط، مثل macro-F1 للتصنيفات وmAP50 للصناديق ومعدل أخطاء الكلمات للنصوص المنسوخة وDice للأحجام. والعنصر الذي له تصنيف ولا تنبؤ له يُحتسب خاطئاً، ويبلغ رقم تغطية عن نصيب العناصر التي حصلت على تنبؤ. ولا تحصل عناصر قسم train على تصنيف مسبق أبداً، والعنصر الذي صحّحه مراجع يذهب دائماً إلى قسم train في التشغيلات اللاحقة.

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

التدريب على خادم GPU أو عنقود

تعمل التشغيلة على خلفية. تدرّب الخلفية local على خادم Potato وتختار CUDA أو Metal من Apple أو المعالج. وتبدأ خلفية ssh التشغيلة على خادم GPU يصل إليه Potato وتبثّ التقدم والنموذج عائداً. وترسل خلفية slurm التشغيلة إلى عقدة حوسبة بـ sbatch من عقدة تسجيل الدخول، ولا تحتاج إلا إلى sbatch وsqueue وscancel. وتخدم خلفية agent جهازاً لا يصل إليه Potato، يشغّل potato training agent ويستطلع الخادم بحثاً عن المهام. وقبل تشغيلة على خلفية ssh يبلغ potato training check <backend> config.yaml عن Python البعيد والـ GPU البعيدة وحِزم التدريب الناقصة. ويُعدّ التدريب على خادم GPU أو عنقود SLURM أو جهاز خلف NAT كل خلفية.

اختيار ما يُسأل عنه بعد ذلك

يقبل hf-text-classification وhf-image-classification المعامل acquisition الذي يكتب درجة على كل تنبؤ، بحسب الهامش أو الإنتروبيا أو BALD أو مسافة core-set. ثم يقدّم assignment_strategy: llm_confidence أعلى الدرجات أولاً. ويبدأ auto_retrain تشغيلة جديدة بعد كل 25 تعليقاً توضيحياً جديداً افتراضياً، وتعيد كل تشغيلة تقييم العناصر غير المصنّفة. ويقارن التعلّم النشط هذه الحلقة بكتلة active_learning في Potato.

نماذج لديك بالفعل

خمسة مُدرِّبات لا تدرّب شيئاً وتقيّم نموذجاً يعمل في مكان آخر: label-studio-ml لخلفية Label Studio ML، وopenai-vlm-boxes لنموذج رؤية ولغة خلف API متوافق مع OpenAI، وhf-inference لنقطة نهاية Hugging Face Inference، وroboflow، وcvat-nuclio لدالة CVAT serverless. وتحصل تنبؤات تلك النماذج على درجة العناصر المحجوزة والكتابة الراجعة والمراجعة نفسها التي تحصل عليها تنبؤات نموذج مدرَّب. ويغطي تصنيفات مسبقة ودرجات عناصر محجوزة من نموذج تشغّله بالفعل كل جسر.

نشر نموذج

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

التفريغات النصية والاستيراد والتصدير

  • WhisperX. يستخدم potato transcripts --transcribe الأداة WhisperX حين تكون مثبّتة، مع أزمنة الكلمات من المحاذاة القسرية تحت --asr-word-timestamps، ويعود إلى faster-whisper في غير ذلك. وتكتب تشغيلة whisper-asr نسخة CTranslate2 من النموذج المضبوط ضبطاً دقيقاً يحمّلها --asr-model.
  • استيراد RTTM. يحوّل potato import -f rttm ملف فصل متحدثين، أو مجلداً منها، إلى عنصر واحد لكل تسجيل مع أدوار المتحدثين لتصحيحها. ويعيد --speaker-map تسمية المتحدثين.
  • تصدير segments. تكتب الصيغة صف JSONL واحداً لكل مقطع صوتي أو مرئي وملف RTTM لكل معلّق.
  • تبعيات CoNLL-U. يأتي HEAD وDEPREL من مخطط span_link موجَّه على النطاقات المصدَّرة. وكان العموديان كلاهما _ دائماً من قبل.

إصلاحات تؤثر في النتائج

يسرد سجل التغييرات كل إصلاح. والإصلاحات أدناه كان يمكن أن تغيّر أرقاماً أبلغت عنها:

  • كان تعادل ترتيب مكتوب بصيغة B,D=A,C يُقرأ عنصراً واحداً اسمه D=A، فاستبعد Kendall's tau ومسافة Spearman footrule العنصرين المتعادلين كليهما.
  • كانت التصنيفات المسبقة للمنزلق والتصنيف الناعم ومقياس المقارنة الثنائية تُحفظ إجابةً للمعلّق عند تحميل الصفحة، فيُحتسب العنصر منجزاً قبل أن يجيب أحد. وكان فتح عنصر grounding_eval يحفظ العنصر بالطريقة نفسها.
  • كان /admin/iaa يسرد الإحالة المشتركة وروابط النطاقات والأحداث نطاقاتٍ بلا درجة. ويقيّم التقرير الآن هذه الأنواع الثلاثة بمتوسط F1 الزوجي.
  • لم يكن دمج رمز في دليل الترميز أو تقسيمه يعيد توجيه أي ترميز، لأن شيئاً لم يكن يربط التعليقات التوضيحية المحفوظة بمعرّفات الرموز.
  • كانت بيانات لقطات الحالة تجمّد أرقام اتفاق فارغة، وصارت تسجّل kappa ونسبة الاتفاق.
  • كانت مراجعة النموذج تحتسب حكم reject إخفاقاً بدلاً من احتسابه ضد التصنيف المسبق الذي أزاله الحكم، فخرجت دقة تقرير المراجعة خاطئة. وكان زوج (معلّق، عنصر) محجوز يحتفظ بحقل الكتابة الراجعة في بيانات العنصر حين يختلف writeback.field عن pre_annotation.field، وصارت بيانات العنصر لمثل هذا الزوج تستبعد الحقلين كليهما.

تثبيت 2.14

رقِّ الإصدار، وتحقق من كل تهيئة، وثبّت المُدرِّبات التي تحتاجها:

bash
pip install --upgrade potato-annotation
potato validate config.yaml --strict
pip install "potato-annotation[train]"

تدريب النماذج هو مكان البداية، ويسرد ما الجديد بقية الإصدار.