2 पॉइंट द्वारा GN⁺ 2023-12-14 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Apple Silicon के लिए बने MLX framework पर Whisper large मॉडल चलाकर, 10 मिनट के ऑडियो transcription में laptop और high-performance GPU के अंतर की तुलना की गई
  • default conditions में M1 Pro MacBook ने 216 सेकंड, और RTX 4090 ने 186 सेकंड लिए; यानी RTX 4090 करीब 30 सेकंड, लगभग 16% तेज था
  • RTX 4090 पर insanely-fast-whisper इस्तेमाल करने पर whisper-large-v3 transcription 8 सेकंड तक घट गया, जिससे पता चलता है कि model और implementation optimization hardware comparison को काफी बदल सकते हैं
  • macOS MPS execution में 4 मिनट 23 सेकंड लगे, और M2 Ultra 76 GPU cores व M3 Max 40 GPU cores M1 से काफी तेज रहे और आपस में मिलती-जुलती speed दिखी
  • power increase में RTX 4090 PC idle की तुलना में +242W, जबकि M1 Pro MacBook +38W था; कुल results कोई precise benchmark नहीं, बल्कि MLX performance का अंदाजा देने वाली तुलना हैं

MLX से Whisper benchmark चलाना

  • Apple ने Apple Silicon के लिए machine learning framework MLX जारी किया, और इसके साथ दिए गए examples में से Whisper का उपयोग benchmark में किया गया
  • मौजूदा Whisper benchmark repository में एक नई file जोड़कर, पहले से download किए गए whisper large model से वही audio file transcribe की गई
  • execution code ने transcribe(audio=audio_file, model='large') call किया और start व end time के अंतर से total time मापा
  • returned result segments की list है, और हर segment में avg_logprob, compression_ratio, start, end, text, tokens जैसे fields शामिल हैं
  • यह result structure RTX 4090 पर Python Whisper चलाने पर मिलने वाले result जैसा ही है

basic results: M1 Pro और RTX 4090

  • 10 मिनट की audio file के आधार पर M1 Pro + MLX execution time 0:03:36.296329, यानी करीब 216 सेकंड रहा
  • उसी file पर Nvidia RTX 4090 execution time 0:03:06.707770, यानी करीब 186 सेकंड मापा गया
  • RTX 4090, M1 Pro से करीब 30 सेकंड तेज है, और ratio में लगभग 16% तेज स्तर पर है
  • measurement के दौरान M1 Pro के सभी graphics cores पूरी तरह इस्तेमाल हुए, और दूसरे programs बंद करके desktop background जैसी चीजें भी disable की गईं
  • हालांकि, Nvidia-optimized model इस्तेमाल करने पर RTX 4090 का transcription time 8 सेकंड तक घट जाता है

test hardware

  • MacBook

    • 14-inch MacBook M1 Pro, 2021 model
    • 8 CPU cores: 6 performance cores, 2 efficiency cores
    • RAM 32GB
    • 16 GPU cores
  • PC

    • Intel Core i7-12700KF 8×3.60GHz
    • RAM 2×32GB 3200MHz DDR4 Kingston FURY Beast
    • Kingston KC3000 PCIe 4.0 NVMe 1000GB SSD
    • read 7000MB/s, write 6000MB/s
    • GeForce RTX 4090 24GB GDDR6X, Palit RTX 4090 GameRock OmniBlack

insanely-fast-whisper ने comparison कैसे बदला

  • Hacker News comments में उसी 10 मिनट की file को insanely-fast-whisper और RTX 4090 के साथ चलाने का result सामने आया
  • whisper-large-v3 के आधार पर transcription 8 सेकंड से कम में पूरा हुआ, और transcription शुरू होने से पहले model loading time शामिल करने पर 15 सेकंड लगे
  • बाद में सीधे चलाए गए insanely-fast-whisper --file-name audio.mp3 --flash True command में भी 8 सेकंड का transcription confirm हुआ
  • output log में Flash Attention 2 से जुड़ी warning और GPU move से जुड़ी warning थीं, लेकिन transcription पूरा हुआ और output.json generate हुआ
  • macOS पर इसे --device mps --batch-size 4 से चलाया जा सकता था, और उसी file के transcription में 0:04:23 लगे

M2 Ultra और M3 Max update

  • Ivan ने वही audio file M2 Ultra 76 GPU cores और M3 Max 40 GPU cores पर चलाई
  • दोनों systems ने M1 Pro से काफी तेज results दिए, और आपस में उनकी speed मिलती-जुलती रही
  • comparison numbers को 100% accurate benchmark मानना मुश्किल है, और दूसरे processes, loading time, cold start और warm start results को प्रभावित कर सकते हैं

power consumption और measurement limits

  • idle state और GPU execution state के power difference को Shelly plug से मापा गया
  • PC में RTX 4090 चलाने पर idle की तुलना में +242W की बढ़ोतरी हुई
  • MacBook में M1 GPU 16 cores चलाने पर idle की तुलना में +38W की बढ़ोतरी हुई
  • power measurement भी 100% accurate आंकड़े की बजाय trend दिखाने वाले reference value के करीब है
  • पूरा test scientific measurement से ज्यादा यह मोटे तौर पर दिखाने वाली comparison है कि MLX framework किस level की performance दे सकता है

real-world usage background

  • test का उद्देश्य podcast search engine podpodgogo.com के operation से जुड़ा है
  • हजारों podcast episodes को transcribe करना, full-text search संभव बनाना, और कुछ data mining भी करना शामिल है
  • update history
    • 11 दिसंबर: hardware specs और model loading के बिना additional test जोड़े
    • 12 दिसंबर: RTX 4090 को सबसे तेज consumer graphics card के रूप में summarize किया और M2/M3 numbers update किए
    • 13 दिसंबर: Hacker News पर Nvidia-optimized Whisper से जुड़े comments confirm किए

1 टिप्पणियां

 
GN⁺ 2023-12-14
Hacker News की रायें
  • अगर Whisper को 4090 पर बेहद inefficient तरीके से नहीं चलाया गया है, तो ये नतीजे संदिग्ध लगते हैं
    मेरे पास 3090 और M1 Max 32GB है; Whisper तो नहीं आज़माया, लेकिन Llama और Stable Diffusion inference performance में फर्क बहुत बड़ा था। खासकर Stable Diffusion में SDXL को 3090 पर करीब 9 सेकंड लगे, जबकि M1 Max पर लगभग 1 मिनट 10 सेकंड

    • आप SDXL जैसे latent diffusion model के inference आंकड़े लेकर उन्हें Whisper जैसे encoder-decoder transformer inference पर generalize कर रहे हैं
      दोनों model architecture में बहुत कम समानता है, और Stable Diffusion भले ही CLIP का pre-trained text encoder इस्तेमाल करता हो, वह भी encoder-decoder transformer से काफी अलग है
    • Apple Silicon पर Whisper optimization पहले ही काफी हो चुकी है, और whisper.cpp इसका फायदा अच्छी तरह उठाने का उदाहरण है
      ऊपर से यह लेख नए Apple MLX framework के बारे में है, इसलिए Llama या Stable Diffusion tests में शायद इसका इस्तेमाल नहीं हुआ होगा
    • MLX docs अभी शुरुआती ही हैं, लेकिन उन्हें देखने पर लगता है कि GAN और खासकर Stable Diffusion में खूब इस्तेमाल होने वाले convolutions को MLX में कोई meaningful improvement लगभग नहीं मिल रहा, और कुछ मामलों में यह CPU से भी धीमा दिखता है
      यह hardware limitation है या MLX library optimization की कमी, पता नहीं, लेकिन ऐसा prominent use case यूं ही ignore किया गया होगा, यह unlikely लगता है
      ज्यादा plausible यह है कि convolutions high precision और कहीं बड़े tile sets इस्तेमाल करते हैं, इसलिए जब पूरा transform GPU में fit नहीं होता तो महंगे context switches की जरूरत पड़ती है
    • मेरे पास 4090 और M1 Max 64GB है, और Llama 2 में 4090 कहीं ज्यादा बेहतर है
    • Whisper को काफी इस्तेमाल करने पर देखा कि समान quality पर memory कम इस्तेमाल करते हुए performance एक-दो orders of magnitude बेहतर देने वाले versions मौजूद थे, और वजह मुझे पूरी तरह समझ नहीं आई
      इसलिए अगर same software और same model नहीं हैं, तो Whisper performance को लेकर intuition बहुत सावधानी से रखनी चाहिए
      और अगर वही हों भी, तब भी platform-specific optimization चाहिए होने की बात देखें तो comparison का मतलब फिर भी सीमित है
  • यह शायद OpenAI Whisper repository इस्तेमाल कर रहा है
    सही comparison के लिए 4090 पर faster-whisper या insanely-fast-whisper की MLX से तुलना करनी चाहिए
    faster-whisper sequential execution करता है, और insanely-fast-whisper audio को 30-second chunks में batch करके process करता है
    हम production में Whisper इस्तेमाल कर रहे हैं, और हमारा मानना है कि previous segment का text शामिल करने से quality बेहतर होती है, इसलिए faster-whisper इस्तेमाल करते हैं
    मोटे तौर पर faster-whisper आम तौर पर OpenAI/whisper से 4–5 गुना तेज है, और insanely-fast-whisper फिर faster-whisper से 3–4 गुना और तेज हो सकता है

    • जिज्ञासा है कि insanely-fast-whisper CPU पर भी real-time transcription करने लायक तेज है या नहीं
      यहां models quantized models नहीं, अब भी fp16 लगते हैं, इसलिए और तेज होने की गुंजाइश दिखती है
      एडिट: देखा कि अभी CPU inference support नहीं करता, और अगर जुड़ गया तो दिलचस्प होगा
    • जिज्ञासा है कि insanely-fast-whisper beam size 5 इस्तेमाल करता है या 1
      5 पर set करने पर speed comparison भी जानना चाहूंगा, और ideal रूप से वह parameter user के लिए expose होना चाहिए
      मैं बहुत खराब audio quality के साथ काम कर रहा हूं, इसलिए transcription quality महत्वपूर्ण है; quality sacrifice करके की गई speed comparison मेरे लिए बहुत मायने नहीं रखती
  • इस लेख का मुख्य point यह है कि यह नए release हुए Apple MLX का उपयोग कर रहा है, और code Apple-specific optimizations इस्तेमाल करता है
    https://news.ycombinator.com/item?id=38539153

    • यह किसी optimized Nvidia implementation से तुलना भी नहीं है
      Whisper की तेज implementations उपलब्ध हैं
      एडिट: bait में आकर मैंने लेख में इस्तेमाल की गई 10-minute file download की और 4090 पर insanely-fast-whisper से चलाई; install करने के लिए बस दो commands लगीं
      whisper-large-v3 के साथ file transcription 8 सेकंड से कम में खत्म हो गया, और transcription शुरू होने से पहले model loading time मिलाकर 15 सेकंड लगे
      यह extra time जाहिर है audio length पर निर्भर नहीं करता
      तो 4090, Apple की top performance से 6–12 गुना तेज है
      अगर आपके पास पहले से लगाने के लिए gaming PC है तो यह M2 Ultra से बहुत सस्ता है, और 4090 वाला prebuilt PC नया खरीदें तब भी सस्ता ही पड़ेगा
      इसमें हैरानी की बात नहीं है, लेकिन high-end Mac रखने वाले लोगों में अपनी machine को हर चीज में अच्छा मानने वाली wishful thinking काफी दिखती है
      Apple M-series chips बहुत impressive हैं और बड़ी RAM भी शानदार है, लेकिन high-performance machine learning में Nvidia से मुकाबला करना मुश्किल है
    • सच कहूं तो समझ नहीं आता कि इस पर ध्यान क्यों देना चाहिए
      अगर आपके पास Mac है तो आप उसी Mac की performance इस्तेमाल करेंगे, और अगर gaming PC है तो उसी PC की performance
      दोनों हों तब भी आखिरकार आप रोजमर्रा में जिस device पर काम करते हैं, उसी पर चलने वाला AI इस्तेमाल करने की संभावना ज्यादा है
  • insanely-fast-whisper से तुलना करने पर कैसा रहेगा, यह जानने की उत्सुकता है: https://github.com/Vaibhavs10/insanely-fast-whisper
    यह समझता हूँ कि optimization इस्तेमाल न करने पर 1:1 तुलना संभव है, लेकिन अगर वह optimization MLX पर port नहीं हुई है, तो फिर भी 4090 इस्तेमाल करना बेहतर लगेगा
    हाल ही में MLX देखा था; Mac पर यह निश्चित रूप से लोकप्रिय होगा, और Swift bindings आ जाएँ तो iOS पर भी ऐसा ही लगता है: https://github.com/ml-explore/mlx/issues/15
    हालांकि अभी C++20 compile से जुड़ी समस्याएँ बाधा बन रही हो सकती हैं

    • Nvidia की ताकत ठीक यही है
      benchmark में कोई भी hardware जीत जाए, अगर model लोकप्रिय है तो आम तौर पर उसका बेहद हाथ से optimized CUDA implementation आ जाता है, जो बाकी सबको पीछे छोड़ देता है
      कुछ दुर्लभ exceptions भी हैं; जैसे PyTorch ने torch.compile पर मेहनत की, इसलिए AMD पर GPT-Fast कुछ बहुत सीमित use cases में अच्छा चलता है
      Apple Silicon पर ऐसा कोई exception याद नहीं आता
    • सही तुलना करनी हो तो 4090 पर insanely-fast-whisper code चलाना चाहिए
      लगता है यह मूल benchmark दोनों को आसानी से हरा देगा, लेकिन batch size 24 से काफी छोटा रखना पड़ेगा
      आज के हिसाब से Whisper का real-time से 3–4 गुना होना बहुत धीमा है, इसलिए यह benchmark CPU से भी जीता जा सकता है
    • लेख insanely-fast results के साथ update हो गया है
  • यह दूसरे models पर भी लागू होता है या Whisper की serial प्रकृति और integer operations की वजह से खास तौर पर चुना गया है, यह जानने की उत्सुकता है
    https://github.com/ml-explore/mlx-examples/tree/main/stable_... देखने पर ऐसा संकेत मिलता है

    At the time of writing this comparison convolutions are still some of the least optimized operations in MLX.
    मुख्य बात शायद यह है कि CPU/GPU से सीधे जुड़ी 64GB से अधिक बहुत तेज RAM इस्तेमाल की जा सकती है, और latency तथा shared access के लिहाज से फायदा मिलता है
    इन systems के power package को देखें तो आंकड़े वाकई प्रभावशाली हैं
    हालांकि यह भी ध्यान रखना चाहिए कि minimum RAM configuration वाला M3 Max system, 4090 से लगभग 2 गुना महंगा है

    • Apple Silicon की memory तेज है, यह बात लंबे समय तक 2-channel memory पर रुके consumer CPUs की तुलना में है
      4-core युग में यह ठीक था, लेकिन आधुनिक core counts के लिए यह समझ में नहीं आता
      GPU की memory scalability consumer segment में भी कहीं बेहतर है
  • Mac M1 पर Whisper चलाना आसान है, लेकिन default रूप से यह MLX इस्तेमाल नहीं करता
    MLX इस्तेमाल कराने के लिए क्या install और configure करना है, यह पता लगाने में एक-दो घंटे लगाए, और अनजान Python errors और Torch errors आए
    आखिरकार हार मानकर GPU वाली VM rent की, तो कुछ ही मिनटों में Whisper चला पाया

    • macOS के लिए Whisper GUI https://goodsnooze.gumroad.com/l/macwhisper काफी अच्छी तरह इस्तेमाल कर रहा हूँ
      MLX इस्तेमाल नहीं करता, लेकिन Metal इस्तेमाल करता है
    • M2 Max machine पर example follow करके कुछ ही मिनटों में MLX पर चला पाया: https://github.com/ml-explore/mlx-examples/tree/main/whisper
    • Whisper के लिए यह product इस्तेमाल कर रहा हूँ: https://betterdictation.com/
    • यह पिछले हफ्ते ही आया है, इसलिए एक-दो महीने देने चाहिए
  • X task के लिए absolutely कौन सा विकल्प best है, इस पर काफी बहस हो सकती है, लेकिन इतनी कम power consumption में इतना performance मिलना अच्छा लगता है

  • इसके बजाय इस Whisper-derived repository का इस्तेमाल करें तो, ज्यादातर GPUs पर 1 घंटे की audio भी 1 मिनट से कम में transcribe हो जाती है: https://github.com/Vaibhavs10/insanely-fast-whisper

    • अनुभव में ctranslate2 कभी-कभी insanely-fast-whisper से भी तेज लगा
      L4 पर ctranslate2 को batch size 4 जितना कम रखने पर भी, flash attention 2 वाले A100 को छोड़कर यह उनके सारे benchmarks जीतता है
      अफसोस है कि faster-whisper में batch mode आखिरकार शामिल नहीं हुआ, शायद इसी वजह से लोग ctranslate2 आसानी से try नहीं कर पाते
    • यह कैसे संभव है, और original की तुलना में quality difference है या नहीं, इस बारे में विस्तार से जानना चाहता हूँ
      https://github.com/SYSTRAN/faster-whisper जैसी repositories के लिए तुरंत समझ आता है कि वे original implementation से तेज क्यों हैं, और दूसरे भी quantization precision घटाकर तेज होते हैं लेकिन result खराब हो जाता है
      लेकिन यह क्यों तेज है, यह खास तौर पर स्पष्ट नहीं है
      यह काफी ज्यादा तेज है, इसलिए और भी जिज्ञासा होती है
  • Apple के Vision Pro को सोचें तो यह खास तौर पर दिलचस्प है
    models को power-efficient तरीके से चला पाना laptop में हर किसी के लिए जरूरी न हो, लेकिन पहले से ही बहुत power खाने वाले headset के लिए यह बड़ा फायदा है

  • मदद चाहिए
    कोई अच्छा open-source transcription और speaker diarization app या workflow है क्या?
    https://github.com/thomasmol/cog-whisper-diarization और https://about.transcribee.net/ देखे, लेकिन दोनों crash होने जैसी समस्याओं के कारण ठीक से काम नहीं कर पाए

    • अपना solution बनाया है, और यह काफी simple है
      MP3 को ऐसे chunks में बाँटता हूँ जिन्हें Whisper process कर सके, फिर API को एक-एक करके भेजकर transcription करवाता हूँ
      अभी तक यह उम्मीद के मुताबिक काम कर रहा है, और Python code की कुछ lines ही लगती हैं