- MLC-LLM ROCm के जरिए AMD GPU पर LLM को compile और deploy करना संभव बनाता है, जिससे Radeon RX 7900 XTX ने Llama 2 7B/13B inference में RTX 4090 की 80% और RTX 3090 Ti की 94% speed हासिल की
- तुलना किए गए तीनों GPU में 24GB memory और मिलती-जुलती bandwidth है, इसलिए latency-sensitive LLM inference में FP16 compute performance की तुलना में memory bottleneck ज्यादा असर डालता है
- AMD की खाई hardware से ज्यादा software support और optimization की कमी के कारण बड़ी थी, और ROCm में निवेश व machine learning compilation कई backends को support करने की लागत घटाने वाले आधार के रूप में काम करते हैं
- ROCm को Radeon 7900 XTX पर और Vulkan को SteamDeck AMD APU पर लागू किया गया, जिससे दिखा कि 4-bit quantized Llama-7B consumer AMD devices पर भी चलाया जा सकता है
- परिणाम single-batch benchmark पर आधारित हैं, और attention optimization AMD व NVIDIA दोनों के आंकड़े बदल सकता है, इसलिए इन्हें 10% error margin के साथ समझना चाहिए
ROCm-आधारित AMD GPU LLM inference
- MLC-LLM ROCm का उपयोग करके AMD GPU पर LLM को compile और deploy करना संभव बनाता है
- Radeon RX 7900 XTX की Llama 2 7B/13B performance इस स्तर की है
- NVIDIA GeForce RTX 4090 की speed का 80%
- NVIDIA GeForce RTX 3090 Ti की speed का 94%
- ROCm के अलावा Vulkan को भी support करता है, जिससे AMD APU वाले SteamDeck जैसे devices तक LLM deployment का दायरा बढ़ता है
Hardware तुलना और असली bottleneck
- AMD RX 7900 XTX specifications के हिसाब से RTX 4090 और RTX 3090 Ti से तुलना योग्य स्थिति में है
- तीनों GPU में 24GB memory है, इसलिए एक ही size के models लोड किए जा सकते हैं
- Memory bandwidth भी आपस में मिलती-जुलती है
- RTX 4090 की FP16 performance RX 7900 XTX से 2 गुना ज्यादा है, और RTX 3090 Ti की 1.3 गुना ज्यादा है
- Latency-sensitive LLM inference ज्यादातर memory bottleneck में फंसता है, इसलिए यहां FP16 performance का अंतर मुख्य bottleneck नहीं है
- RX 7900 XTX, RTX 4090 से 40% सस्ता है
- RTX 3090 Ti पिछली generation का product है, इसलिए price comparison कठिन है और इसे reference point के रूप में इस्तेमाल किया गया है
AMD gap के कारण और MLC का approach
- AMD के पीछे रहने की वजह hardware से ज्यादा संबंधित models के लिए software support और optimization की कमी के करीब थी
- दो बदलाव gap कम करने वाले factors के रूप में काम करते हैं
- AMD ROCm stack में निवेश करके बराबरी करने की कोशिश कर रहा है
- Machine learning compilation कई backends के लिए general software support की लागत घटाता है
- Machine learning compilation, ROCm या CUDA के लिए अलग-अलग kernels सीधे लिखने के बजाय, machine learning tasks को compile करता है और optimization को automate करता है
- MLC-LLM, Apache TVM Unity पर बना machine learning compilation-based LLM deployment solution है
- Python-centric development flow देता है
- Computation graph transformation, GPU kernel layout·schedule optimization, और native deployment API शामिल हैं
- CUDA, Metal, ROCm, Vulkan, OpenCL को support करता है
- Server-grade GPU से लेकर iPhone और Android जैसे mobile तक दायरा बढ़ाता है
AMD GPU और APU support का तरीका
- AMD GPU support paths में ROCm, OpenCL, Vulkan, WebGPU हैं
- ROCm वह stack है जिसे AMD हाल में आगे बढ़ा रहा है, और इसमें CUDA जैसे components हैं
- Vulkan आधुनिक graphics standard है और GPU devices में व्यापक रूप से support होता है
- WebGPU एक नया web standard है जो web browser में computation चलाने देता है
- CUDA के अलावा solutions बनाने वाला machine learning software कम है, और नए hardware या GPU programming model के लिए stack को replicate करने की engineering cost बड़ी होती है
- MLC हर backend के लिए GPU kernels दोबारा लिखे बिना automatic code generation से कई paths को support करता है
- वास्तविक performance low-level GPU runtime की quality और हर platform पर availability पर निर्भर करती है
ROCm optimization implementation
- Radeon 7900 XTX के लिए ROCm और SteamDeck APU के लिए Vulkan चुना गया
- ROCm stack तुरंत काम करने लगा, और TVM Unity की Python-based development pipeline की वजह से कुछ घंटों में optimized version जोड़ा जा सका
- ROCm support में मौजूदा components को reuse किया गया
- CUDA और Metal जैसे मौजूदा targets की पूरी MLC pipeline
- Memory planning
- Operator fusion
- TVM TensorIR में लिखी गई general-purpose GPU kernel optimization space
- LLVM के जरिए low-level ROCm kernels बनाने वाला TVM का ROCm code generation flow
- CUDA और Metal जैसे मौजूदा targets की पूरी MLC pipeline
- Generated code को shared library या static library के रूप में export किया जाता है, और CLI, Python, REST API से call किया जा सकता है
Llama 2 benchmark conditions और interpretation
- Benchmark में Llama 2 7B और 13B को 4-bit quantization के साथ मापा गया
- Decoding performance को single prompt token डालकर 512 tokens generate करने के तरीके से मापा गया
- सभी results single-batch inference पर आधारित हैं
- ROCm 5.6 release के आधार पर single-batch inference performance NVIDIA 4090 की speed के 80% तक पहुंची
- CUDA baseline को उस task में उस समय top-level माना गया
- बेहतर attention optimization जैसी सुधार की गुंजाइश है, और यदि यह optimization MLC में आता है तो AMD और NVIDIA दोनों के आंकड़े बेहतर हो सकते हैं
- अगर optimization केवल NVIDIA side पर implement होता है, तो gap 20% से बढ़कर 30% हो सकता है, इसलिए numbers की interpretation में 10% error margin रखना recommended है
सीधे चलाने की conditions और example
- Benchmark reproduce करने के लिए pre-built wheels और run instructions दिए गए हैं
- Run condition है: Linux पर ROCm 5.6 या उससे ऊपर चलाने वाला AMD GPU
- ROCm-enabled pre-built MLC package installation के लिए MLC-LLM try out docs देखें
- Python example में
mlc_chat.ChatModuleसेLlama-2-7b-chat-hf-q4f16_1model load किया जाता है औरbenchmark_generate("Hi", generate_length=512)से performance मापी जाती है - MLC-LLM interactive CLI भी देता है, लेकिन ROCm पर CLI को source से build करना होगा और CLI build docs का पालन करना होगा
SteamDeck पर Vulkan और unified memory का उपयोग
- SteamDeck को AMD APU वाले ज्यादा व्यापक AMD device group के example के रूप में इस्तेमाल किया गया
- ROCm में इस्तेमाल की जा सकने वाली GPU VRAM BIOS में 4GB तक सीमित है
- Mesa Vulkan driver unified memory के जरिए buffers को इस limit से आगे 16GB तक इस्तेमाल करने देता है
- यह memory capacity 4-bit quantized Llama-7B चलाने के लिए पर्याप्त है
- परिणामस्वरूप, अलग-अलग consumer AMD devices पर भी LLM support की संभावना पुष्टि हुई
आगे का काम और project links
- Generative AI के युग में hardware availability एक महत्वपूर्ण मुद्दा बन जाती है
- Machine learning compilation कई hardware backends पर high-performance general-purpose deployment संभव बनाकर इस समस्या को कम कर सकता है
- मौजूदा research consumer-grade GPU पर focused है
- पिछले अनुभव के अनुसार, consumer GPU के लिए MLC optimization कभी-कभी RTX 4090 से A100, A10g तक जाते हुए cloud GPU पर भी generalize हो जाता है
- आगे के work areas ये हैं
- Batching और multi-GPU support
- PyTorch ecosystem integration
- ज्यादा quantization methods और model architectures का support
- ज्यादा hardware backends पर automatic optimization का विस्तार
- NVIDIA लगातार innovation के कारण अभी भी leading position में है, और H100 जैसे नए hardware व software evolution के साथ landscape बदल सकता है
- MLC-LLM guide project page पर उपलब्ध है, और source code GitHub repository में है
अभी कोई टिप्पणी नहीं है.