2 पॉइंट द्वारा GN⁺ 2023-09-18 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Petals किसी बड़े language model को पूरी तरह एक ही डिवाइस पर लोड किए बिना, घरेलू GPU या Google Colab पर उसका केवल एक हिस्सा चलाकर text generation और fine-tuning संभव बनाता है
  • Llama 3.1 में 405B तक, Mixtral 8x22B, Falcon 40B+, और BLOOM 176B तक सपोर्ट है, जिससे निजी हार्डवेयर पर भी बड़े models के साथ काम किया जा सकता है
  • उपयोगकर्ता अपने जिम्मे का model shard लोड करते हैं, फिर बाकी हिस्से उपलब्ध कराने वाले participants के network से जुड़ते हैं; यह BitTorrent जैसी संरचना में काम करता है
  • single-batch inference Llama 2 70B पर अधिकतम 6 tokens/sec और Falcon 180B पर अधिकतम 4 tokens/sec तक है, जो chatbot और interactive apps के लिए उपयोगी स्तर है
  • सामान्य LLM API की तुलना में fine-tuning और sampling तरीकों को अधिक स्वतंत्रता से चुना जा सकता है, और model के internal paths व hidden states तक संभाले जा सकते हैं

Distributed तरीके से बड़े models चलाना

  • Petals का लक्ष्य बड़े language models को घर पर चलाना है, और यह BitTorrent की तरह कई users द्वारा model के अलग-अलग हिस्से उपलब्ध कराने के तरीके से काम करता है
  • उपयोगकर्ता पूरा model लोड नहीं करते, बल्कि केवल model का एक हिस्सा लोड करके बाकी हिस्से उपलब्ध कराने वाले network में भाग लेते हैं
  • supported models:
    • Llama 3.1: 405B तक
    • Mixtral: 8x22B
    • Falcon: 40B+
    • BLOOM: 176B
  • घरेलू GPU या Google Colab से text generation और task-specific fine-tuning किया जा सकता है
  • single-batch inference performance:
    • Llama 2 70B: अधिकतम 6 tokens/sec
    • Falcon 180B: अधिकतम 4 tokens/sec
  • यह speed chatbot और interactive apps के लिए पर्याप्त स्तर की है

API से अधिक व्यापक नियंत्रण

  • Petals पारंपरिक LLM API से आगे जाकर fine-tuning और sampling methods को सीधे चुनने देता है
  • model से गुजरने वाले custom paths चला सकते हैं या hidden states देख सकते हैं
  • यह API की सुविधा और PyTorch, 🤗 Transformers की flexibility साथ में देता है
  • तुरंत आज़माने के लिए Colab notebook और GitHub documentation उपलब्ध हैं
  • GPU उपलब्ध कराकर Petals की capacity बढ़ाने का तरीका है, और development updates Discord पर follow किए जा सकते हैं
  • यह project BigScience research workshop का हिस्सा है

1 टिप्पणियां

 
GN⁺ 2023-09-18
Hacker News की राय
  • दिलचस्प है। लगता है कि यह संरचना model weights को layer के हिसाब से बाँटकर कई machines में distribute करती है, और हर machine तैयार होने पर खुद को एक बड़े hash table में register करती है, फिर अपने हिस्से की layer के लिए “team के रूप में” inference या fine-tuning करती है
    अभी शुरुआती चरण है, लेकिन मैं https://github.com/jmorganca/ollama के लिए model weights को Docker registry में host करने पर काम कर रहा था। मुख्य वजह content addressability है, जिससे Ollama हर बार verify कर सकता है कि सही weights डाउनलोड हुए हैं, और आखिरकार किसी नाम या बदल सकने वाले URL के बजाय content के आधार पर ही weights ला सकता है
    अगला कदम शायद model को layer-wise बाँटना और हर layer को स्वतंत्र रूप से store करना हो सकता है, ताकि इसे ऐसे use cases में इस्तेमाल किया जा सके, या कई “local” machines में बड़े model को download और run करने के लिए उपयोग किया जा सके

    • थोड़ा self-promotion कम नहीं कर सकते? LLM से जुड़ी लगभग हर पोस्ट में ollama वाला comment अक्सर दिखता है
      HN guidelines भी कहती हैं कि “HN का इस्तेमाल मुख्य रूप से promotion के लिए न करें; अपना काम कभी-कभी पोस्ट करना ठीक है, लेकिन site का मुख्य उपयोग curiosity होना चाहिए”
      इस मामले में भी OP के काम पर बात करते हुए project की तरफ free backlink हटाया जा सकता था
  • “काम के हिसाब से fine-tune कर सकते हैं” वाले हिस्से पर मेरी भौंहें चढ़ गईं
    70B fine-tuning सिर्फ मुश्किल नहीं है; चाहे आप कितना भी इंतज़ार कर सकें, बहुत महंगे cloud instances किराए पर लिए बिना या घर की कीमत के बराबर PC खरीदे बिना यह सचमुच असंभव है
    अगर कोई “llama training horde” हो, तो मैं खुशी से शामिल होऊँगा

    • पारंपरिक fine-tuning के लिए यह सही है, लेकिन पता नहीं यह parameter-efficient fine-tuning या qLORA पर भी लागू होता है या नहीं
      मेरी समझ के अनुसार, N अरब parameters वाले model को N से थोड़ा कम gigabytes VRAM वाले GPU पर fine-tune किया जा सकता है
      70B parameter model के लिए शायद A100 जैसा कुछ?
    • H100 घर नहीं, शायद कार की कीमत के ज्यादा करीब है
    • भरोसा करना मुश्किल नेटवर्क पर distributed तरीके से fine-tuning करने पर single node या अच्छी तरह connected cluster की तुलना में energy और cost efficiency काफी खराब हो सकती है
      साथ ही Lambda Cloud पर 70B model को प्रति दस लाख tokens $2 में, और Replicate पर $10 से कम में fine-tune किया जा सकता है
    • LLM training को parallelize करने से रोकता क्या है? आप पहले book 1 पढ़ें और फिर book 2, या उल्टा, knowledge update का परिणाम वही होना चाहिए
      अगर LLM भी हर book को स्वतंत्र रूप से सीखता है, तो लगता है LLM weights के दो deltas को बस जोड़ देना चाहिए
    • CentML की compiler optimization technology इस्तेमाल करके model बदले बिना 4×A10 पर 40B Falcon fine-tune किया जा सकता है
  • क्या trained LLM किसी भी तरह composable होते हैं? उदाहरण के लिए, अगर दोनों 99% समान data पर भरोसा करते हैं लेकिन सिर्फ 1% में अलग हैं, तो क्या पूरी तरह अलग दो models चाहिए होंगे, या 99% के लिए समान राय रखने वाले दूसरे लोगों के साथ computation share करके, हर व्यक्ति के trust model के फर्क को adjust करने वाला derived model बनाया जा सकता है?
    neural networks की मेरी समझ बुनियादी है, लेकिन model की usefulness बनाए रखते हुए weights को इस तरह manipulate करना बिल्कुल बेतुका नहीं लगता
    पूछने की वजह यह है कि अगर समान performance वाले दो LLM किन statements पर सहमत हैं और किन पर disagreement है, यह पता हो सके तो उपयोगी होगा। तब उस फर्क को reverse करके training data के अंतर से map किया जा सकता है। हालांकि यह शायद तभी संभव होगा जब फर्क छोटा हो
    उलटी स्थिति में, समान performance वाले दो LLM दरअसल एक ज्यादा मजबूत model बनाने का मौका चूकने जैसा है, और अगर disagreement analysis भी बहुत महंगा हो, तो दुनिया काफी अलग दिखेगी

    • कुछ हद तक संभव है। LoRA देखें: https://arxiv.org/abs/2106.09685
      इसका मतलब यह composability नहीं है कि आप ऐसे adaptation layers लेकर मनमाने ढंग से combine कर सकें, लेकिन common weights base share करते हुए अलग-अलग models train करना पहले से solved problem है
    • इसे ensemble कहा जाता है। https://blog.allenai.org/llm-blender-a-simple-ensemble-learn...
  • malicious participants को बड़े computation में अपने हिस्से का output बदलने से कैसे रोका जाएगा? भले ही attacker के पास अपनी चुनी हुई network output बनाने का कोई तरीका न हो, अगर बहुत सारे nodes जुड़कर बस garbage results लौटाएँ, तो वे system पर प्रभावी रूप से denial-of-service attack कर सकते हैं

    • मैं Petals developer हूँ। हम एक validator बना रहे हैं जो सभी servers को periodically scan करेगा और गलत results लौटाने वाले servers को block करेगा
      साथ ही clients network में एक-दूसरे से overlap न करने वाले कई paths से data भेज सकते हैं और check कर सकते हैं कि results match करते हैं या नहीं
      यह बार-बार हमला करने वालों को पकड़ लेगा, लेकिन 100% protection नहीं देगा, इसलिए अगर पूर्ण correctness guarantee चाहिए, तो मुझे लगता है लोग private swarm बनाएँगे। उदाहरण के लिए, अगर आपके पास अकेले LLM चलाने जितने GPUs नहीं हैं लेकिन भरोसेमंद hardware owners हैं, तो आप private Petals swarm बनाकर geographically distributed hardware पर मिलकर LLM चला सकते हैं और data process कर सकते हैं
  • मेरे मन में पहला सवाल आया था, “आर्थिक व्यवहार्यता कैसी है?” FAQ के अनुसार:
    क्या Petals के incentives cryptocurrency, blockchain वगैरह पर आधारित हैं? नहीं। Petals बाकी सभी पहलुओं में पूरी तरह decentralized system है, लेकिन incentives के लिए AI Horde kudos जैसा एक centralized system तैयार किया जा रहा है। इन points को पैसे में बदलने की कोई service देने की योजना नहीं है, इसलिए इन्हें system के अंदर इस्तेमाल होने वाले “game” points की तरह समझें
    Petals machine learning researchers और engineers के लिए machine learning-केंद्रित project है और finance से इसका संबंध नहीं है। incentive system को centralized रखने का कारण यह है कि development और maintenance कहीं आसान हो जाते हैं, जिससे machine learning researchers के लिए उपयोगी features बनाने पर ध्यान दिया जा सके
    https://github.com/bigscience-workshop/petals/wiki/FAQ:-Freq...

    • यहां बताए गए AI Horde kudos वाकई शानदार हैं, और निजी तौर पर मुझे लगता है कि उनका गंभीर रूप से कम इस्तेमाल हो रहा है:
      https://lite.koboldai.net/
      https://tinybots.net/artbot
      https://aihorde.net/
      दरअसल HN पर अगर कोई किसी खास 13B~70B fine-tuned model को test करना चाहता है, तो मैं दोपहर में host कर सकता हूं:
      https://huggingface.co/models?sort=modified&search=70B+gguf
    • graphic design में distributed renderfarm काफी पहले से मौजूद हैं। points ज्यादा होने पर job priority बढ़ने के अलावा कोई अलग incentive नहीं है
      https://www.sheepit-renderfarm.com/home
    • “public swarm में model layers host करने की प्रेरणा क्या है?” के जवाब को देखें तो, जो लोग खुद inference और fine-tuning चलाते हैं, उन्हें model का कुछ हिस्सा locally host करने पर कुछ हद तक speed-up मिलता है। साथ ही, जैसे BitTorrent user पहले से download किए गए data को share करके दूसरों की मदद करते हैं, वैसे ही उस community को वापस योगदान देने की प्रेरणा भी हो सकती है जिसने आपको model चलाने में मदद की
      यह सबके लिए पर्याप्त न हो सकता है, इसलिए public swarm में GPU time donate करने वालों के लिए एक स्पष्ट incentive, “bloom points”, भी लाया जा रहा है। system तैयार होने पर website पर top contributors दिखाए जाएंगे, और points कमाने वाले लोग उन्हें higher priority या मजबूत security guarantees के साथ inference·fine-tuning में इस्तेमाल कर सकेंगे, या शायद उन्हें अन्य rewards में exchange भी कर सकेंगे
      फिर भी ऐसा लगता है कि वे कुछ हद तक centralized token चाहते हैं
    • अब हर decentralized project की cryptocurrency से तुलना होनी ही चाहिए, यह अफसोस की बात है
    • तार्किक निष्कर्ष आखिरकार यही है कि models cryptocurrency payments से जुड़ेंगे। यहां Lightning महत्वपूर्ण हो जाता है
      साथ में, मेरा मतलब यह नहीं है कि Petals के “token” को payment system से जोड़ा जाए। मेरा मतलब यह है कि सामान्य तौर पर, decentralized हो या नहीं, machine learning model cluster calls में authentication और payment method दोनों देने के लिए cryptocurrency payments इस्तेमाल होने की संभावना ज्यादा है
      Petals model use के लिए decentralized compute का अच्छा implementation है और लंबी अवधि में मूल्यवान लगती है
  • मैं अपना 3080 Ti share करना चाहता था, लेकिन getting started guide के commands चलाकर देखने पर लगता है कि dependency version की समस्या है: https://github.com/bigscience-workshop/petals/wiki/Run-Petal...
    ImportError: cannot import name 'get_full_repo_name' from 'huggingface_hub' (~/.local/lib/python3.8/site-packages/huggingface_hub/__init__.py)

  • लगता है अपना server swarm host किया जा सकता है [0]
    यह जानना दिलचस्प होगा कि “private” Petals cluster की fine-tuning performance लगभग कैसी होती है
    [0] https://github.com/bigscience-workshop/petals/wiki/Launch-yo...

    • अगर भरोसेमंद environment में cluster चला रहे हैं, तो Ray या कुछ वैसा इस्तेमाल करना शायद ज्यादा efficient होगा
  • वाकई शानदार। उम्मीद है कि यह इस क्षेत्र को हजारों, लाखों और developers के लिए accessible बनाएगा

  • मैंने हमेशा सोचा है कि crowdsourcing ही future है। चाहे information हो या compute
    असल में “resources” पहले से मौजूद हैं, बात सिर्फ deployment की है

  • मैंने एक पुराने project में Petals इस्तेमाल किया था। GPU भी share किया था और project के लिए code भी लिखा था
    Petals वाला हिस्सा मेरे लिए abstracted था, और code लिखने का अनुभव सामान्य था
    मैंने वह project कहीं upload नहीं किया और बाद में उसका क्या हुआ, यह भी ठीक से नहीं जानता। कुल मिलाकर यह करीब पांच लोगों द्वारा आगे बढ़ाया जा रहा काम था