Skip to content

Hugging Face Space पर Potato तैनात करना

potato deploy से Potato एनोटेशन टास्क को Hugging Face Docker Space में चलाएँ, और एनोटेशन का बैकअप हर पाँच मिनट में एक निजी डेटासेट में रखें।

potato deploy up --provider huggingface एक एनोटेशन टास्क को Hugging Face Docker Space में चलाता है, hf.space पते पर HTTPS के साथ, और किसी सर्वर पर कुछ कॉन्फ़िगर करने की ज़रूरत नहीं होती। यह किसी टास्क के सार्वजनिक डेमो के लिए ठीक है, और ऐसी लैब के लिए भी जिसका डेटा और मॉडल पहले से Hugging Face Hub पर हैं। Space की डिस्क हर रीस्टार्ट पर मिट जाती है, इसलिए Potato एनोटेशन को एक निजी Hugging Face डेटासेट में रखता है, जिसे वह Space के साथ ही बनाता है। यह हर पाँच मिनट में एनोटेशन का बैकअप डेटासेट में लेता है और Space शुरू होने पर उन्हें रीस्टोर करता है। इस पृष्ठ के लिए Potato 2.10 या उसके बाद का संस्करण और ऐसा कॉन्फ़िग चाहिए जिसे आप potato start से चला चुके हों।

Space की ज़रूरतें और सीमाएँ

Potato Spaces, Docker Spaces होते हैं, और Docker Space बनाने के लिए Hugging Face का सशुल्क प्लान चाहिए: निजी खाते के लिए PRO, या संगठन के लिए Team या Enterprise। Hugging Face के मुफ़्त टियर पर कोई खाता या संगठन एक साथ अधिकतम तीन Spaces भी चलाता है। चौथा PAUSED रहता है, और स्लीप में गए Space के विपरीत, पॉज़ किया गया Space किसी विज़िटर के खोलने पर कभी नहीं जागता।

नामित एनोटेटरों के साथ हफ़्तों चलने वाले अध्ययन के लिए, AWS Lightsail, Jetstream2 या Hetzner जैसी वर्चुअल मशीन रीस्टार्ट के पार अपनी डिस्क बनाए रखती है, इसलिए डेटा किसी बैकअप पर निर्भर नहीं रहता। Space तब सबसे ठीक बैठता है जब जिन लोगों तक आप पहुँचना चाहते हैं उनके पास पहले से Hugging Face खाते हों, या जब टास्क ऐसा डेमो हो जिसके एनोटेशन खो जाएँ तो भी चलेगा।

Hugging Face टोकन सेट करना

Potato आपके Hugging Face टोकन से Space और डेटासेट बनाता है। अपनी Hugging Face सेटिंग्स में write access वाला टोकन बनाएँ, फिर Hugging Face extra इंस्टॉल करें और टोकन को अपने एनवायरनमेंट में रखें:

bash
pip install 'potato-annotation[huggingface]'
export HF_TOKEN=hf_...
potato deploy providers --verify

providers --verify वह खाता प्रिंट करता है जिसका यह टोकन है। Potato टोकन को Space secret के रूप में Space को देता है ताकि बैकअप डेटासेट में लिख सके, और उसे Space की रिपॉज़िटरी में कभी commit नहीं करता।

तय करना कि कौन साइन इन कर सकता है

potato deploy आपकी साइन-इन सेटिंग्स नहीं बदलता, और सार्वजनिक Space को उसका पता जानने वाला कोई भी व्यक्ति खोल सकता है। अगर कॉन्फ़िग किसी को भी रजिस्टर करने देता है, तो नीचे का ड्राई रन चेतावनी D003 दिखाता है, "Anyone who finds the URL can register and annotate." (URL ढूँढने वाला कोई भी व्यक्ति रजिस्टर करके एनोटेट कर सकता है।) डेमो के लिए खुला पंजीकरण आम तौर पर ठीक रहता है। नामित एनोटेटरों के लिए, उन्हें allow_all_users: false के साथ user_config.users में सूचीबद्ध करें (पासवर्ड प्रबंधन), या उन्हें उनके Hugging Face खातों से साइन इन करवाएँ, जिसे Potato authentication.providers के तहत एक built-in प्रदाता के रूप में सपोर्ट करता है (SSO और OAuth प्रमाणीकरण)।

योजना जाँचना और तैनात करना

ड्राई रन कुछ नहीं बनाता और प्रिंट करता है कि तैनाती क्या बनाएगी:

bash
potato deploy up myproject/config.yaml --provider huggingface --dry-run

योजना निजी डेटासेट <account>/<name>-annotations बनाती है, फिर एक Docker Space <account>/<name> बनाती है, सत्र कुंजी, एडमिन कुंजी और टोकन को Space secrets के रूप में सेट करती है, और आपका प्रोजेक्ट एक Dockerfile और एक README के साथ अपलोड करती है। Dockerfile आपके इंस्टॉल किए गए संस्करण की प्रकाशित Potato इमेज पर बनता है, इसलिए Space में केवल आपकी प्रोजेक्ट फ़ाइलें रहती हैं। --owner किसी संगठन के तहत तैनात करता है, --private ख़ुद Space को निजी बनाता है, और --name टास्क से लिए गए नाम को बदल देता है।

कमांड को --dry-run के बिना चलाएँ और योजना की पुष्टि करें:

bash
potato deploy up myproject/config.yaml --provider huggingface

तैनाती Space के चालू होने तक इंतज़ार करती है और उसका पता, https://<account>-<name>.hf.space, और एडमिन कुंजी फ़ाइल का पाथ प्रिंट करती है, जो आपके कॉन्फ़िग के बगल में .potato/secrets.json है। एडमिन कुंजी /admin पर एडमिन डैशबोर्ड खोलती है। मुफ़्त हार्डवेयर पर चलने वाला Space 48 घंटे तक कोई विज़िटर न आने पर स्लीप में चला जाता है और किसी के खोलने पर जागता है, और हर बार एनोटेशन डेटासेट से वापस आ जाते हैं।

अध्ययन समाप्त करना

potato deploy pull ख़ुद Space को पढ़ने के बजाय बैकअप डेटासेट डाउनलोड करता है, जिसमें Space का सहेजा हुआ सब कुछ होता है:

bash
potato deploy pull myproject/config.yaml
potato deploy destroy myproject/config.yaml

destroy Space को मिटाता है और डेटासेट को रहने देता है, क्योंकि Space मिटाने को फिर से तैनात करके पलटा जा सकता है, पर एनोटेशन मिटाने को नहीं। जब आपको डेटासेट की ज़रूरत न रहे, तो उसे Hub पर उसके सेटिंग्स पृष्ठ से मिटा दें।

बैकअप के बिना तैनात करना

--demo ऐसे डेमो के लिए Space को बिना डेटासेट के तैनात करता है जिसके एनोटेशन मायने नहीं रखते। तब ड्राई रन चेतावनी देता है कि इकट्ठा किया गया सब कुछ अगले रीस्टार्ट पर खो जाएगा। डेटासेट के बिना pull चल रहे Space को एडमिन एक्सपोर्ट के ज़रिए पढ़ता है, जो केवल Space के चालू रहने तक काम करता है।

समस्या निवारण

बनाते समय भुगतान त्रुटि का मतलब है कि खाते या संगठन के पास सशुल्क प्लान नहीं है। Docker Spaces के लिए निजी खाते को PRO, या संगठन को Team या Enterprise चाहिए।

Space PAUSED रहता है जब मुफ़्त टियर का कोई खाता पहले से तीन Spaces चला रहा हो। किसी दूसरे को पॉज़ करें, फिर इस वाले को उसके सेटिंग्स पृष्ठ से रीस्टार्ट करें। किसी मौजूदा Space को रीस्टार्ट करने के लिए सशुल्क प्लान की ज़रूरत नहीं है।

rebuild के बाद एनोटेशन ग़ायब हैं जब Space डेटासेट से रीस्टोर नहीं कर पाया। सफल रीस्टोर पर Space लॉग में एक RESTORED पंक्ति दिखती है, और उसका न होना आम तौर पर यह बताता है कि HF_TOKEN Space secret मौजूद नहीं है या उसके पास write access नहीं है।

BUILD_ERROR की वजह https://huggingface.co/spaces/<account>/<name>?logs=build पर build लॉग में बताई जाती है।

आगे पढ़ें