14 पॉइंट द्वारा GN⁺ 2024-04-02 | 2 टिप्पणियां | WhatsApp पर शेयर करें

CPU पर LLaMA की गति में सुधार

  • Mozilla के llamafile प्रोजेक्ट ने 84 नए matrix multiplication kernels लिखे
  • CPU पर F16 और Q8_0 weights इस्तेमाल करने पर llama.cpp की तुलना में prompt evaluation time 30% से 500% तक तेज़ हो गया
  • सबसे नाटकीय सुधार ARMv8.2+ (जैसे RPI 5), Intel (जैसे Alderlake), और AVX512 (जैसे Zen 4) कंप्यूटरों पर देखे गए
  • L2 cache में फिट होने वाले matrices पर MKL से 2 गुना तेज़ प्रदर्शन दिखाया
  • 1,000 से कम tokens वाले prompts पर यह speedup सबसे अच्छा काम करता है

पृष्ठभूमि

  • llamafile नवंबर 2023 में Mozilla के साथ शुरू किया गया एक local LLM प्रोजेक्ट है
  • यह Cosmopolitan Libc का उपयोग करके llama.cpp को single-file cross-platform binary के रूप में पैकेज करता है
  • यह AMD64 और ARM64 के लिए 6 OS पर चलता है, कुछ छोटे बदलावों के साथ
  • उनका मानना है कि core technology को बेहतर बनाकर उपयोगकर्ताओं को सर्वोत्तम llama.cpp अनुभव दिया जा सकता है और दोनों प्रोजेक्ट्स को अधिक व्यापक दर्शकों तक पहुंचने में मदद मिल सकती है
  • Mozilla इसके लिए resources उपलब्ध कराता रहा है

एंटरप्राइज़ हार्डवेयर पर प्रदर्शन में सुधार

  • जब उन्होंने पहली बार LLM में रुचि ली, उनका कार्य परिवेश एक साधारण Hewlett Packard मशीन था, जिसमें spinning disk, धीमी RAM, AVX2 processor और GPU के बिना Alpine चल रहा था
  • उन्हें llama.cpp में यह बात पसंद आई कि वह उनके जैसे लोगों की ज़रूरतों का सबसे पहले ध्यान रखता था
  • उन्होंने full-time volunteering शुरू की और Slaren जैसे लोगों के साथ मिलकर mmap() support जोड़ा, जिससे RAM usage आधा हो गया और weights तुरंत लोड हो सके
  • उस समय यह local LLMs के लिए बड़ी छलांग थी, लेकिन evaluation speed सुधारने में इसका लगभग कोई योगदान नहीं था
  • inference code का अधिकांश हिस्सा Georgi Gerganov ने खुद लिखा था, और वह इतना अच्छा था कि उसे बेहतर बनाने में आखिरकार एक और साल लग गया
  • अब जब सुधार हो गया है, तो देखते हैं कि पुरानी Hewlett Packard मशीन पर यह कितना तेज़ हुआ

हॉबी हार्डवेयर पर प्रदर्शन में सुधार

  • बड़े कंप्यूटर के बिना भी बड़े language models चलाए जा सकते हैं
  • आज दुकानों में मिलने वाले सबसे अच्छे personal computers में से एक Raspberry Pi है
  • यह कम कीमत पर अच्छा performance देता है और बहुत कम बिजली खर्च करता है
  • Raspberry Pi ने कुछ दिन पहले 5वीं generation लॉन्च की, जो पिछले मॉडल की तुलना में बहुत तेज़ है
  • इसमें ARMv8.2 dotprod और fp16 arithmetic ISA support भी जोड़ा गया, जो LLMs के लिए बहुत उपयोगी है
  • केवल इन दो features ने ही पिछले साल llama.cpp को f16 weights पर 10x performance improvement दिलाने में मदद की
  • इस हफ्ते, मूल रूप से AVX512 के लिए बनाए गए kernels का उपयोग करके इसके ऊपर 2x और speedup हासिल किया गया
  • यह उम्मीद नहीं थी कि data center equipment के लिए डिज़ाइन किए गए kernels छोटे और हल्के Raspberry Pi पर इतने अच्छे से फिट होंगे, लेकिन दोनों CPUs में 32 vector registers होने के कारण यह वास्तव में एकदम उपयुक्त साबित हुआ

गेमिंग हार्डवेयर पर प्रदर्शन में सुधार

  • gamers value-conscious consumers में सबसे ऊँची quality expectations रखते हैं, इसलिए उनके लिए बना hardware आमतौर पर काफ़ी अच्छा होता है
  • machine learning उद्योग कई सालों से gamers के लिए बने hardware का उपयोग करके फलता-फूलता रहा है
  • अगर gamers का बड़ा योगदान न होता, तो AI winter शायद 10 साल और लंबा चलता
  • कुछ महीने पहले उन्होंने एक gamer से पुरानी Hewlett Packard को replace करने वाला कंप्यूटर बनाने को कहा
  • उनका मानना है कि Alderlake एक शानदार CPU है, लेकिन उसे व्यापक रूप से गलत समझा गया है, क्योंकि float16 performance को आसानी से 5x तक बढ़ाया जा सका
  • ARMv8.2 के विपरीत, x86 kernels अंदरूनी तौर पर float32 operation types का उपयोग करते हैं, इसलिए यह rounding error पैदा किए बिना संभव हुआ
  • इसका मतलब है कि इससे एक ज्यादा स्मार्ट spam filter बनाया जा सकता है
  • spam.sh shell script चलाने में सिर्फ 420 milliseconds लगते हैं, जो Raspberry Pi 5 से 7 गुना तेज़ है
  • छोटे workloads पर यह chip CUDA के शुरू होने से पहले ही काम पूरा कर सकती है
  • Alderlake owners यह उम्मीद कर सकते हैं कि llamafile खास तौर पर इस बात का ध्यान रखता है कि वह efficiency cores पर न चले
  • यही उन वजहों में से एक है जिनसे llamafile, llama.cpp से तेज़ चलता है
  • इसका यह भी मतलब है कि 24/7 LLM चलाने पर भी कंप्यूटर के दूसरे programs के लिए पर्याप्त resources बचे रहते हैं
  • llama.cpp threads को lockstep में dispatch करता है, इसलिए अगर एक core को दूसरे cores की तुलना में ज़्यादा समय लगे, तो बाकी सभी n cores को उनके पूरा होने तक busy loop करना पड़ता
  • इस microprocessor की सबसे बड़ी खासियत यह है कि यह Cosmopolitan monorepo की 2.6 million lines of code को कितनी तेज़ी से build कर सकता है
  • Hewlett Packard को इसमें हमेशा 64 seconds लगते थे, लेकिन यह gaming computer इसे 20 seconds में कर देता है
  • शुरुआत में इसमें 35 seconds लगते थे, लेकिन liquid metal और AI overclocking लगाने के बाद यह और तेज़ हो गया
  • Alderlake पर system code बहुत तेज़ होने का एक और कारण यह है कि इस CPU के विकास के दौरान hackers और scientists के बीच एक तीखी लड़ाई हुई थी, और hackers जीत गए
  • आगे AVX512 के लिए और बेहतर समझौता बिंदु मिलने की उम्मीद है, लेकिन फिर भी उनका मानना है कि यह chip पिछले model की तुलना में काफ़ी प्रगति दिखाती है, इसलिए वे इससे कुल मिलाकर बहुत संतुष्ट हैं

Apple हार्डवेयर पर प्रदर्शन में सुधार

  • सबसे उच्च स्तर का personal computer अगर कोई है, तो वह निश्चित रूप से Mac Studio होगा
  • यहाँ performance lead हासिल करना उनके लिए ज़्यादा कठिन था, क्योंकि llama.cpp developers सबसे ज़्यादा इसी hardware platform की परवाह करते हैं, और Stallman के compiler का उपयोग करने के फैसले के कारण उन्हें Apple के proprietary tools की तुलना में handicap के साथ काम करना पड़ रहा है
  • यह आश्चर्य की बात नहीं होगी कि M2 microprocessor llamafile को synthetic content की firehose बना देता है
  • Apple ने इसके लिए vertical integration का फायदा उठाया
  • अगर आप Mac Studio खरीदकर उसके अंदर देखें, तो पाएँगे कि RAM DIMM को CPU के अंदर ही रखा गया है
  • क्योंकि CPU को अब इस तरह की long-distance calls नहीं करनी पड़तीं, token generation जैसी latency-sensitive tasks काफ़ी तेज़ हो जाती हैं
  • लेकिन pure flop के हिसाब से (prompt tok/sec से मापा गया), M2 Ultra ARM ISA मेरे कहीं सस्ते Intel कंप्यूटर की तुलना में सिर्फ 30% ज्यादा compute ही दिखाता है
  • इससे आगे की पहुँच सिर्फ Metal या Accelerate जैसे proprietary frameworks के ज़रिए ही मिलती है
  • अगर xcode इंस्टॉल है, तो llamafile डिफ़ॉल्ट रूप से एक छोटा stub module compile करेगा, जो आपके और silicon के बीच मौजूद सभी closed-source libraries के सामने खड़े होने में मदद करता है
  • अगर आप Mac Studio खरीदने पर विचार कर रहे हैं, तो एक महत्वपूर्ण बात यह है कि Windows Executive की तरह XNU desktop को स्थिर रखने में बहुत अच्छा काम करता है, और इसका मतलब है कि सिस्टम आपको खुद से बचाता है
  • इन सभी safety features की वजह से Mac Studio पर Cosmo monorepo compile करने में 45 seconds लगते हैं, लेकिन fork bomb फोड़ने पर भी शायद Netflix का एक भी frame skip नहीं होगा
  • spam.sh script भी 430ms में चलती है, जो Intel से धीमी है
  • लेकिन यह बात उन्हें परेशान नहीं करती, क्योंकि उन्होंने देखा है कि Asahi Linux, M2 की क्षमता को पूरी तरह सामने ला सकता है

प्रोफ़ेशनल हार्डवेयर पर प्रदर्शन में सुधार

  • llamafile GPU की कमी वाले लोगों की मदद पर बहुत ध्यान देता है, लेकिन यह top 1% users को भी सर्वोत्तम स्तर का अनुभव देता है
  • AMD Ryzen Threadripper PRO 7995WX कुछ महीने पहले लॉन्च हुआ था और फिलहाल यह वह सबसे महँगा CPU है जिसे पैसों से खरीदा जा सकता है
  • इसकी कीमत 10,000 डॉलर है, लेकिन इसके बदले Zen4 architecture पर आधारित 96-core AVX512 मिलता है
  • कीमत दोगुनी होने के बावजूद, 7995WX का x86 ISA, M2 Ultra ARM ISA की तुलना में 7 गुना अधिक raw compute performance देता है, जबकि token generation speed लगभग समान रहती है
  • इसकी बड़ी वजह 384MB L3 cache हो सकती है
  • AVX512 का एक फ़ायदा यह है कि Google का Gemma model AVX512 पर math puzzles हल कर सकता है, लेकिन AVX2 पर नहीं, क्योंकि बड़े vectors आम तौर पर rounding errors कम करने में मदद करते हैं
  • VDPBF16PS instruction, VNNI और ARM dotprod की तरह, bf16 को updot करने में मदद करती है
  • Mistral और TinyLLaMA जैसे models अपने canonical format में bfloat16 weights distribute करते हैं, इसलिए bf16 का native support अच्छा है
  • bf16 को fp16 में बदलने पर संभव संख्याओं में से केवल 13% को ही सटीक रूप से दर्शाया जा सकता है
  • व्यवहार में यह शायद ही महत्वपूर्ण है, क्योंकि Mistral 7b जिन संख्याओं का उपयोग करता है, उनमें से 99.71% उसी 13% के भीतर आती हैं
  • फिर भी llamafile दावा किए गए bit counts को यथासंभव सही तरीके से बनाए रखने की कोशिश करता है

2 टिप्पणियां

 
savvykang 2024-04-02

Intel 14600 या Ryzen 5600 जैसे mid-range सिस्टम के बारे में डेटा नहीं दिख रहा। लगता है कि मकसद बस यह दिखाना था कि यह Raspberry Pi पर भी चल सकता है, लेकिन असल इस्तेमाल के लिए यह थोड़ा मुश्किल लगता है। फिर भी, इस बात से थोड़ी तसल्ली मिलती है कि local LLM चलाने के लिए ज़रूरी hardware specs लगातार कम होते जा रहे हैं।

 
GN⁺ 2024-04-02
Hacker News राय
  • Fortran SGEMM implementation पर राय:

    • आधुनिक Fortran compiler बिना किसी अतिरिक्त बदलाव के भी AVX और FMA optimization लागू कर सकते हैं।
    • loop unrolling optimization compiler flag (-funroll-all-loops) के जरिए संभव है।
    • Intel compiler उपयोगकर्ता के स्पष्ट अनुरोध के बिना भी loop unrolling करता है।
    • Fortran 77 source में parallelization जोड़ना कठिन हो सकता है, लेकिन OpenMP syntax जोड़ा जा सकता है या आधुनिक Fortran की parallelization संरचनाओं का उपयोग किया जा सकता है।
    • Fortran 77 functions को कमतर नहीं आंकना चाहिए। Fortran का उद्देश्य developers को platform-specific details से मुक्त करना और काम compiler को सौंपना है।
  • cuBLAS के विकल्प पर राय:

    • यह CUDA के भीतर cuBLAS को फिर से लिखने की कोशिश जैसा लगता है।
    • अगला कदम CUDA dependency हटाकर सीधे Vulkan या Metal compute shaders का उपयोग करना हो सकता है।
  • LLM(Local Language Model) चलाने पर राय:

    • हर व्यक्ति को न्यूनतम requirements के साथ भी local में LLM download करके चलाने में सक्षम होना चाहिए।
    • यह मानव ज्ञान के बड़े हिस्से का backup बन सकता है।
  • performance measurement पर राय:

    • subroutine को define करने के लिए C++ का उपयोग करना पसंद है। C++ Python से तीन orders of magnitude से भी अधिक तेज है।
    • performance difference को "Moore's Law के वर्षों" में मापने का विचार पसंद आया।
  • संबंधित लिंक:

  • शीर्षक पर राय:

    • शीर्षक भ्रमित करने वाला है। शुरुआत में इसे ऐसे समझा जा सकता है कि मॉडल CPU पर GPU से तेज है।
    • "CPU पर LLaMa performance improvement" जैसा अधिक स्पष्ट शीर्षक बेहतर होगा।
  • MKL-DNN की तुलना में performance improvement पर राय:

    • सीमित matrix sizes के लिए MKL-DNN से आगे निकलने की कोशिश की थी, लेकिन असफल रहे।
    • CPU पर इस तरह की energy efficiency भौतिक रूप से संभव नहीं है।
  • LLM चलाने पर राय:

    • बड़े कंप्यूटर के बिना भी बड़े language models चलाए जा सकते हैं।
    • छोटे parameter models चलाना तकनीकी रूप से language model चलाना कहलाता है, लेकिन यह शायद उस मानक को पूरा नहीं करता जिसे अधिकांश लोग उपयोगी मानते हैं।
  • Pixar के CPU उपयोग पर राय:

    • Pixar जैसे बड़े studio लागत/performance और अधिक RAM accessibility की वजह से फिल्म rendering के लिए CPU का उपयोग करते हैं।
    • संबंधित समाचार लिंक दिया गया है।
  • AMD Zen4 और AVX512 पर राय:

    • 7995WX x86 ISA की कीमत M2 Ultra ARM ISA से दोगुनी है, लेकिन यह 7 गुना अधिक raw computing power देता है, जबकि token generation speed लगभग समान है।
    • इसका कारण 384MB L3 cache हो सकता है।
    • Zen4 पर LLaMA को पहले की तुलना में 2.8 गुना तेज चलाने वाला काम किया गया है।