सामग्री पर जाएं

अपने एनोटेशन पर मॉडल प्रशिक्षण

एडमिन Training पेज से अपने अध्ययन के लेबल पर मॉडल प्रशिक्षित करें, उसे होल्ड-आउट आइटम पर स्कोर करें, और उसकी भविष्यवाणियाँ एनोटेटरों को प्री-लेबल के रूप में दिखाएँ।

v2.14.0 में नया

मॉडल प्रशिक्षण उन लेबलों पर एक मॉडल को फ़िट करता है जो आपके एनोटेटर पहले ही दे चुके हैं, मॉडल को प्रशिक्षण से बाहर रखे गए आइटम पर स्कोर करता है, और मॉडल के उत्तर एनोटेटरों को प्री-लेबल के रूप में दिखा सकता है, ताकि वे उन्हें स्वीकार करें या सुधारें। यह पेज प्रशिक्षण चक्र, एडमिन Training पेज, कार्य के अनुसार समूहित ट्रेनर, और हर हिस्से का ब्योरा देने वाले पेज या ट्यूटोरियल समझाता है। पेज उन अध्ययन स्वामियों और एडमिनों के लिए है जो अपना Potato सर्वर स्वयं चलाते हैं। Training पेज और sklearn-text ट्रेनर Potato 2.11 से उपलब्ध हैं। संस्करण 2.14.0 में 37 ट्रेनर, GPU सर्वर और SLURM क्लस्टर पर रिमोट प्रशिक्षण, Runs तालिका में होल्ड-आउट स्कोर, और Hugging Face Hub पर प्रकाशन जुड़ते हैं।

प्रशिक्षण चक्र

चक्र का हर दौर अब तक इकट्ठा किए गए मानव लेबलों पर एक मॉडल प्रशिक्षित करता है और अगले एनोटेटर को मॉडल के उत्तर शुरुआती बिंदु के रूप में देता है। चक्र छह चरणों में चलता है:

  1. एनोटेट करें। एनोटेटर सामान्य रूप से आइटम पर लेबल लगाते हैं, और Potato एक आइटम पर कई एनोटेटरों के लेबलों को एक लेबल में समाधानित करता है, डिफ़ॉल्ट रूप से Dawid-Skene से या बहुमत मत से।
  2. प्रशिक्षित करें। एक रन लेबल किए गए आइटम को train, val और test स्प्लिट में बाँटता है और मॉडल को एक अलग प्रोसेस में फ़िट करता है। हर आइटम रन-दर-रन उसी स्प्लिट में रहता है, क्योंकि स्प्लिट आइटम ID का सीड वाला हैश है।
  3. स्कोर करें। रन मॉडल को होल्ड-आउट val और test आइटम पर स्कोर करता है।
  4. राइट-बैक। रन की भविष्यवाणियाँ आपके चुने स्कीमों के लिए प्री-लेबल के रूप में हर आइटम के डेटा में चली जाती हैं। विश्वास सीमा से कम वाली भविष्यवाणियाँ और train स्प्लिट के आइटम की भविष्यवाणियाँ छोड़ दी जाती हैं।
  5. सुधारें। अगला एनोटेटर मॉडल का उत्तर पहले से भरा हुआ देखता है, और उसे स्वीकार करता है या बदल देता है। समीक्षक यह भी दर्ज कर सकता है कि मॉडल सही था या नहीं।
  6. दोबारा प्रशिक्षित करें। अगला रन नए लेबलों पर प्रशिक्षित होता है, और समीक्षक द्वारा सुधारा गया हर आइटम train स्प्लिट में चला जाता है।

प्रशिक्षण चालू करना

मॉडल प्रशिक्षण डिफ़ॉल्ट रूप से बंद रहता है, और एक config कुंजी उसे चालू करती है। किसी मौजूदा config में यह ब्लॉक जोड़ें:

yaml
model_training:
  enabled: true

सर्वर को पुनः आरंभ करें और एडमिन सत्र या एडमिन API कुंजी से /admin/training खोलें। enabled: true के बिना प्रशिक्षण के रूट मौजूद ही नहीं होते। प्रशिक्षण चालू करने से एनोटेटरों को दिखने वाली कोई चीज़ नहीं बदलती, क्योंकि प्री-लेबल केवल writeback.schemas में सूचीबद्ध स्कीमों के लिए दिखते हैं, और यह सूची डिफ़ॉल्ट रूप से खाली होती है।

Training पेज के ऊपर का Start a run पैनल रन का पूरा सेटअप रखता है। Schema अध्ययन के एनोटेशन स्कीम सूचीबद्ध करता है, Trainer चुने गए स्कीम के प्रकार और आइटम के अनुकूल ट्रेनर सूचीबद्ध करता है, और Runs on वे जगहें सूचीबद्ध करता है जहाँ रन चल सकता है। Parameters फ़ील्ड JSON लेता है और चुने गए ट्रेनर की model_training.trainer_params वाली प्रविष्टि से शुरू होता है। फ़ील्ड के नीचे का नोट ट्रेनर के लिए मान्य हर पैरामीटर का नाम बताता है। Train now रन शुरू करता है। किसी रन के चलते समय शुरू किया गया दूसरा रन कतार में रुकता है, और Runs तालिका में waiting #N के रूप में Cancel run बटन के साथ दिखता है।

Potato का Training पेज, जिसमें sklearn-text, sentiment स्कीम और local बैकएंड चुने हैं, और उसके नीचे Runs तालिका में दो पूरे हुए रन 0.847 और 0.840 के होल्ड-आउट स्कोर के साथ सूचीबद्ध हैंsentiment स्कीम पर दो sklearn-text रन, हर एक का स्कोर उन समीक्षाओं पर मापा गया जिन पर मॉडल ने कभी प्रशिक्षण नहीं लिया

Runs तालिका में हर रन ID रन के पेज /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 और रिवॉर्ड मॉडलllm-sft, llm-dpo, reward-model, prm-rewardLLM को फ़ाइन-ट्यून करना
चित्र, स्लाइड, माइक्रोस्कोपी, नक्शे और पेज लेआउट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]" वह सब इंस्टॉल करता है जो टेक्स्ट, चित्र, ऑडियो और LLM ट्रेनरों को चाहिए। जो ट्रेनर इंस्टॉल नहीं है वह Training पेज पर "not installed" के रूप में दिखता है, और साथ में वह कमांड भी जो उसे इंस्टॉल करती है। ट्रेनर हर ट्रेनर के एनोटेशन प्रकार, आइटम प्रकार, इंस्टॉल कमांड और पैरामीटर देता है।

रन कहाँ चलते हैं

रन एक बैकएंड पर चलता है, जो हर रन के लिए Runs on मेनू से चुना जाता है या डिफ़ॉल्ट रूप से model_training.backend से तय होता है। Potato में चार प्रकार के बैकएंड हैं:

  • local Potato सर्वर पर ही एक सबप्रोसेस में प्रशिक्षण देता है। device: auto पहले CUDA लेता है, फिर Apple का Metal, फिर CPU।
  • ssh उस GPU सर्वर पर प्रशिक्षण देता है जिस तक Potato कुंजी-आधारित ssh से पहुँचता है। Potato अपना सोर्स कोड सर्वर पर कॉपी करता है, वहाँ रन शुरू करता है, और सफल रन के बाद मॉडल को वापस कॉपी करता है।
  • slurm उसी तरह क्लस्टर के लॉगिन नोड से जुड़ता है और sbatch से प्रशिक्षण जॉब किसी कंप्यूट नोड पर भेजता है। यह बैकएंड केवल sbatch, squeue, scancel और scontrol को कॉल करता है। इसलिए srun या sacct के बिना क्लस्टर भी चलता है।
  • agent उस मशीन के लिए है जिस तक Potato नहीं पहुँच सकता, जैसे NAT के पीछे की वर्कस्टेशन। उस मशीन पर potato training agent जॉब के लिए सर्वर से पूछता रहता है, और मॉडल फ़ाइलें उसी मशीन पर रहती हैं।

potato training check <backend> config.yaml पहले रन से पहले बैकएंड की जाँच करता है, और Training पेज का Check बटन वही जाँच करता है। कॉन्फ़िगरेशन हर बैकएंड कुंजी सूचीबद्ध करता है, और GPU सर्वर या क्लस्टर पर प्रशिक्षण तीनों रिमोट प्रकारों को चरण-दर-चरण सेट करता है।

होल्ड-आउट स्कोर

हर रन मॉडल को val और test आइटम पर स्कोर करता है, ऐसी मीट्रिक से जो स्कीम के एनोटेशन प्रकार के अनुसार चुनी जाती है। एकल-लेबल क्लासिफ़ायर को macro-F1 मिलता है, स्पैन टैगर को span F1, बॉक्स डिटेक्टर को IoU 0.5 पर mAP, और ट्रांसक्रिप्शन मॉडल को 1 में से शब्द त्रुटि दर घटाने पर मिला मान। Runs तालिका हर रन के लिए एक मुख्य स्कोर दिखाती है, और रन का पेज हर मीट्रिक सूचीबद्ध करता है, जिसके नाम में स्प्लिट होता है, जैसे val_macro_f1 या test_f1। जिस आइटम पर लेबल है पर भविष्यवाणी नहीं, वह गलत गिना जाता है। इसलिए कोई ट्रेनर कठिन आइटम छोड़कर स्कोर नहीं बढ़ा सकता। जब कोई ट्रेनर val आइटम पर सबसे अच्छा चेकपॉइंट चुनता है, तो मुख्य स्कोर test आइटम से आता है, क्योंकि val स्कोर मॉडल को पहले ही आकार दे चुका होता है। जो ट्रेनर val पर कुछ नहीं चुनता, जैसे sklearn-text, उसका मुख्य स्कोर val आइटम से आता है। कॉन्फ़िगरेशन हर एनोटेशन प्रकार की मीट्रिक देता है।

प्री-लेबल और मॉडल समीक्षा कतार

प्री-लेबल मॉडल का वह उत्तर है जो एनोटेशन पेज पर पहले से भरा होता है, ताकि एनोटेटर उसे स्वीकार करे या बदले। राइट-बैक रन की भविष्यवाणियों को writeback.schemas में सूचीबद्ध स्कीमों के लिए प्री-लेबल में बदलता है, और किसी pre_annotation ब्लॉक की ज़रूरत नहीं होती। model_training के नीचे writeback ब्लॉक जोड़ें:

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

इस ब्लॉक के साथ, 0.6 से कम विश्वास वाली sentiment भविष्यवाणी संग्रहीत होती है पर दिखाई नहीं जाती। 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 फ़ॉर्म होता है। पुश मॉडल के वेट, config और टोकनाइज़र फ़ाइलें अपलोड करता है, साथ में रन से लिखा गया README.md मॉडल कार्ड। मॉडल कार्ड में ट्रेनर, बेस मॉडल, स्कीम, लेबल, स्प्लिट के आकार और होल्ड-आउट स्कोर का नाम होता है। रन की भविष्यवाणियाँ और प्रशिक्षण डेटा की कोई भी कॉपी सर्वर पर ही रहती है।

आप रिपॉज़िटरी का नाम दो बार लिखते हैं, और पुश तभी आगे बढ़ता है जब दोनों नाम मेल खाएँ। Private डिफ़ॉल्ट रूप से चुना हुआ है, और Hugging Face टोकन पेज से नहीं बल्कि सर्वर के एक एनवायरनमेंट वेरिएबल (डिफ़ॉल्ट रूप से HF_TOKEN) से आता है। जो मॉडल रिमोट होस्ट पर या एजेंट मशीन पर रह गया है, वह रन के पेज से पुश नहीं किया जा सकता। कॉन्फ़िगरेशन बताता है कि कौन-सी फ़ाइलें अपलोड होती हैं और API रूट क्या है, और अपने एनोटेशन पर LLM को फ़ाइन-ट्यून करना पुश को शुरू से अंत तक चलाता है।

मॉडल प्रशिक्षण और लेबलिंग इंजन

लेबलिंग इंजन वही ट्रेनर उपयोग करता है। डिस्टिलेशन चालू होने पर (features.distill), इंजन इंजन के मानव लेबलों और कॉन्ट्रैक्ट से प्रमाणित मशीन लेबलों पर एक ट्रेनर (डिफ़ॉल्ट रूप से sklearn-text) से मॉडल फ़िट करता है, फिर उस मॉडल को trained स्रोत के रूप में कॉन्फ़िगर किए गए कैस्केड से पहले रखता है। इंजन के cert और audit स्प्लिट के आइटम डिस्टिलेशन के प्रशिक्षण सेट में कभी नहीं जाते। trained स्रोत किसी प्रशिक्षण रन से भी मॉडल लोड कर सकता है, जिसमें रन की मॉडल डायरेक्टरी artifact_dir होती है। लेबलिंग इंजन कॉन्फ़िगरेशन डिस्टिलेशन की कुंजियाँ सूचीबद्ध करता है।

मॉडल प्रशिक्षण और सक्रिय अधिगम

Potato की सक्रिय अधिगम सुविधा अध्ययन के लेबलों पर मॉडल को मॉडल प्रशिक्षण से अधिक सीमित उद्देश्य के लिए फ़िट करती है। सक्रिय अधिगम हर update_frequency एनोटेशन पर सर्वर प्रोसेस के भीतर एक scikit-learn क्लासिफ़ायर फ़िट करता है और उससे कतार को पुनः क्रमबद्ध करता है, सबसे अनिश्चित आइटम सबसे पहले। एनोटेटरों को पुनः क्रमबद्ध कतार केवल assignment_strategy: active_learning में मिलती है। सक्रिय अधिगम का क्लासिफ़ायर उन्हीं आइटम पर स्कोर होता है जिन पर वह फ़िट किया गया था, और उसकी भविष्यवाणियाँ एनोटेटरों को कभी नहीं दिखाई जातीं।

मॉडल प्रशिक्षण 38 में से कोई भी ट्रेनर अलग प्रोसेस में या दूसरी मशीन पर चलाता है, मॉडल को होल्ड-आउट आइटम पर स्कोर करता है, और मॉडल के उत्तर प्री-लेबल के रूप में दिखाता है। मॉडल प्रशिक्षण कतार का क्रम भी तय कर सकता है। assignment_strategy: llm_confidence में वे आइटम पहले आते हैं जिनका प्रकाशित प्री-लेबल सबसे कम विश्वसनीय है। hf-text-classification और hf-image-classification का acquisition पैरामीटर उस क्रम को margin, entropy, BALD या core-set स्कोर से बदल देता है। यह तय करने के लिए कि लोग आगे किन आइटम पर लेबल लगाएँ, सक्रिय अधिगम का उपयोग करें। जब आपको होल्ड-आउट आइटम पर स्कोर किया गया मॉडल, एनोटेटरों के लिए प्री-लेबल, या प्रकाशित करने के लिए मॉडल चाहिए, तब मॉडल प्रशिक्षण का उपयोग करें।

ट्यूटोरियल

हर ट्यूटोरियल एक सेटअप को इंस्टॉल से लेकर स्कोर किए गए रन तक चलाता है:

आगे पढ़ें

कार्यान्वयन के ब्योरे के लिए स्रोत दस्तावेज़ीकरण देखें।