17 पॉइंट द्वारा GN⁺ 2024-03-08 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • FSDP(Fully Sharded Data Parallel) और QLoRA(Quantization + Low-Rank Adaptation") को जोड़ने वाला open source
  • सामान्य desktop computer और दो standard gaming GPU के साथ 70b आकार के language model को कुशलतापूर्वक fine-tune किया जा सकता है

पृष्ठभूमि

  • data center-स्तर के hardware और desktop computer में लगे gaming GPU के बीच प्रदर्शन का अंतर बहुत बड़ा नहीं है, फिर भी कीमत में बहुत बड़ा फर्क है
  • gaming GPU में memory कम होती है, इसलिए बड़े language model को train करना मुश्किल होता है
  • Answer.AI इस समस्या को हल करने के लिए सस्ते gaming GPU का उपयोग करके बेहतरीन open source model को train करने का तरीका खोजना चाहता था

QLoRA: एक single GPU पर बड़े model को train करना

  • QLoRA, quantization और LoRA का संयोजन है, जो model के weights को 4-bit तक घटाकर GPU memory उपयोग कम करता है.
  • LoRA पूरे बड़े language model को train करने के बजाय छोटे adapter matrices जोड़कर train करता है, जिससे memory सीमाओं से बचा जा सकता है.
  • QLoRA 48GB कार्ड पर 65b model को train करने योग्य बनाता है, लेकिन 24GB gaming GPU पर 70b model को train करने के लिए यह अब भी पर्याप्त नहीं है.

FSDP: कई GPU के साथ training scale बढ़ाना

  • FSDP(Fully Sharded Data Parallel) model के parameters को कई GPU में बाँटता है ताकि उन्हें एक साथ उपयोग किया जा सके.
  • FSDP, DDP(Distributed Data Parallel) के प्रदर्शन लाभ को उन बड़े model पर भी लागू करने देता है जो एक single GPU में समा नहीं सकते.
  • उदाहरण के लिए, 70b (70 अरब parameters) non-quantized model 140GB RAM का उपयोग करता है (क्योंकि हर parameter 16-bit, यानी 2 bytes में store होता है), इसलिए NVIDIA का H100 कार्ड (प्रति कार्ड लगभग $40,000 की लागत!) भी पर्याप्त नहीं है. 80GB RAM चाहिए
    • लेकिन FSDP का उपयोग करने पर 4 H100 GPU को जोड़कर कुल 320GB RAM बनाई जा सकती है. और $150000 बचाए जा सकते हैं

FSDP और QLoRA को जोड़ना

  • Answer.AI ने QLoRA के जरिए model का आकार घटाया, और FSDP के जरिए इसे कई 24GB gaming cards में बाँटकर कुशल training संभव बनाई.
  • इसके जरिए 70b model को सामान्य gaming GPU के सिर्फ दो कार्डों पर train करना संभव हो गया.
  • 2023 के अंत में FSDP और QLoRA को जोड़ने के विचार पर चर्चा करने के बाद, ज़रूरी समस्याओं को हल किया गया.
  • इस प्रक्रिया में कई तकनीकों और libraries का संयोजन किया गया
    • quantized parameters को model के "Computation Type" के समान data type में store करना
    • पूरे gradients को store करने के बजाय model के कई 'checkpoints' पर activations को store करना, फिर ज़रूरत पड़ने पर forward computation step दोबारा चलाकर gradients को फिर से compute करना, यानी gradient checkpointing
    • CPU का उपयोग न होने पर weights को GPU के बजाय CPU RAM में store करके आवश्यक GPU memory को काफी कम करने वाला CPU offloading
    • Flash Attention 2: memory-optimized Cuda kernel का उपयोग करके Attention को कुशलता से compute करना
    • HQQ(Half-Quadratic Quantization) को खोजकर FSDP के साथ एकीकृत करना (GPTQ की तुलना में 50 गुना तेज़ और अधिक सटीक)

FSDP/QLoRA का उपयोग कैसे करें

  • FSDP का उपयोग करने के लिए दो या उससे अधिक GPU चाहिए. (Runpod पर $0.6 प्रति घंटा में dual 3090 box उपलब्ध है)
  • Transformers, PEFT, Bitsandbytes (और यदि उपयोग कर रहे हों तो HQQ) का नवीनतम version install करें, फिर Answer.AI का repository clone करें और README के अनुसार चलाएँ.
  • 2 24GB कार्डों पर Alpaca को train करने के लिए
    python train.py --train_type qlora --dataset alpaca --batch_size 8 --gradient_accumulation_steps 2 --output_dir qlora_output --log_to wandb
  • यह अभी शुरुआती चरण में है (alpha/preview)
  • benchmarking results भी कुछ हफ्तों में जारी किए जाने वाले हैं

GN⁺ की राय

  • यह लेख AI और machine learning क्षेत्र में काम करने वाले लोगों के लिए बहुत दिलचस्प होगा. खासकर इसलिए कि यह बड़े language model को कुशलता से train करने का एक नया तरीका प्रस्तुत करता है.
  • अगर यह तकनीक सफलतापूर्वक व्यापक रूप से इस्तेमाल होने लगे, तो AI research और development में लागत की बाधा को काफी कम किया जा सकता है. यह छोटे research labs या व्यक्तिगत developers के लिए भी बड़ा अवसर हो सकता है.
  • लेकिन इस तरह के approach को वास्तव में व्यापक रूप से अपनाने के लिए stability और ease of use महत्वपूर्ण कारक होंगे. अभी यह शुरुआती चरण में है, इसलिए community testing और feedback के माध्यम से system को बेहतर बनाना होगा.
  • नई तकनीक अपनाते समय हमेशा existing systems के साथ compatibility, performance, cost आदि पर विचार करना चाहिए. इस तकनीक को चुनने से मिलने वाला लाभ बड़े model training की accessibility बढ़ना है, लेकिन चूंकि यह अभी शुरुआती चरण में है, इसलिए stability और support के मामले में कमियाँ हो सकती हैं.

1 टिप्पणियां

 
GN⁺ 2024-03-08
Hacker News राय
  • यह लेख शानदार है, लेकिन अफ़सोस है कि इसमें 'nibble' शब्द इस्तेमाल करने के कई मौके थे और सभी छूट गए।

    • लेख रोचक है, लेकिन 'nibble' शब्द का उपयोग न करने पर हल्का अफ़सोस जताया गया है।
  • एक consumer के तौर पर मुझे दिलचस्पी होगी अगर कोई तालिका हो जो दिखाए कि 4-bit weights इस्तेमाल करने वाले सिस्टम पर 70b मॉडल को fine-tune करने में कितना समय लगेगा, जैसे model size, training size, training cost, और इस तकनीक से अपेक्षित quality loss।

    • fine-tuning की अंतिम लागत में रुचि जताते हुए, model size, training cost आदि सहित विस्तृत जानकारी मांगी गई है।
  • सोच रहा हूँ कि क्या (-1,0,1) encoding लागू की जा सकती है। जब ऐसा मॉडल आए, तो क्या answer.ai उसी तकनीक का उपयोग करके दो छोटे GPU के साथ बड़े मॉडल को fine-tune कर सकता है, और cost/benefit analysis भी देखना चाहूँगा।

    • नई encoding तकनीक की तकनीकी उपयोगिता और लागत-लाभ विश्लेषण के बारे में सवाल उठाया गया है।
  • इस तरह का research बहुत उपयोगी है क्योंकि यह individual users को LLM बाज़ार में प्रतिस्पर्धा करने में सक्षम बनाता है। यह 'Zero to One' किताब की सोच के अनुरूप बेहतरीन काम है।

    • research को individual users के लिए उपयोगी बताते हुए, किसी खास समस्या के समाधान में इसके योगदान की सकारात्मक सराहना की गई है।
  • यह नहीं बताया गया कि NeurIPS efficiency challenge में सभी top entries ने QLoRA का इस्तेमाल किया था, और यह QLoRA की अहमियत और उपयोगिता का एक अच्छा उदाहरण है।

    • QLoRA तकनीक के महत्व और उपयोगिता पर ज़ोर देते हुए, यह बताया गया है कि इस तकनीक को प्रतियोगिता में मान्यता मिली थी।
  • 'open source' LLM के लिए यह सबसे दिलचस्प और रचनात्मक approaches में से एक है जो मैंने देखा है। काश academia भी इसे standard के रूप में अपनाए।

    • open source LLM के इस approach की बहुत सराहना की गई है और इच्छा जताई गई है कि academia भी इसे standard के तौर पर अपनाए।
  • काश Metal पर तेज़ training पहले आ गई होती। अभी के लिए Mac Studio बड़े मॉडल inference के लिए कहीं सस्ता और पर्याप्त तेज़ है, लेकिन training solutions लगभग मौजूद ही नहीं हैं।

    • Metal platform पर तेज़ training की उम्मीद और मौजूदा समय में Mac Studio की उपयोगिता पर राय दी गई है।
  • तकनीकी लेखन की quality और clarity शानदार है।

    • तकनीकी दस्तावेज़ की गुणवत्ता और स्पष्टता की प्रशंसा की गई है।
  • सोच रहा हूँ कि क्या LLM(70B) weights को अपने डेटा के साथ फिर से train किया जा सकता है।

    • निजी डेटा के साथ LLM को दोबारा train करने की संभावना पर सवाल किया गया है।
  • सीमित hardware budget में LLM को fine-tune करने वालों के लिए यह एक game-changing breakthrough है।

    • सीमित hardware budget वाले उपयोगकर्ताओं के लिए इस तकनीक को बड़ी प्रगति बताया गया है।
  • जानना चाहूँगा कि FSDP की जगह DeepSpeed क्यों चुना गया।

    • FSDP और DeepSpeed में से DeepSpeed चुनने के कारण के बारे में जिज्ञासा जताई गई है।
  • यह भी जानना चाहूँगा कि जब मॉडल को fine-tune करना संभव हुआ, तब performance tuning के लिए कोई tool इस्तेमाल किया गया था या नहीं।

    • performance tuning के लिए इस्तेमाल किए गए tools के बारे में सवाल किया गया है।
  • क्या आपने sparsification आज़माया है? लगता है इससे कम RAM में fine-tuning संभव हो सकती है।

    • sparsification तकनीक के उपयोग और उससे RAM बचत की संभावना पर राय दी गई है।