1 पॉइंट द्वारा GN⁺ 2024-05-16 | 1 टिप्पणियां | WhatsApp पर शेयर करें

GGML: CPU के लिए SiLU और Softmax का पुनर्लेखन

प्रमुख बदलाव

  • vectorized expf() function जोड़ा गया:

    • पहले GGML में इस्तेमाल होने वाली short[65536] lookup table की तुलना में अब Softmax और SiLU को अधिक सटीक रूप से गणना किया जा सकता है.
    • यह aarch64 और sse2+ को सपोर्ट करता है, और worst case में rounding error 2 ULP है.
    • avx2 और avx512 implementations भी लिखे गए थे, लेकिन sse2+fma की तुलना में code complexity के मुकाबले बड़ा लाभ न होने के कारण उनका उपयोग नहीं किया गया.
  • मुख्य प्रतिक्रियाएँ:

    • कई contributors ने इस बदलाव पर सकारात्मक प्रतिक्रिया दी.
    • AMD Ryzen 9 5950X और M2 Ultra पर SOFT_MAX लगभग 1.5 गुना तेज़ है.

कोड बदलाव

  • मुख्य बदलावों का सार:
    • comment किए गए #define हटाए गए.
    • duplicate 5 lines को ggml_vec_soft_max_f32() में निकाला गया.
    • GGML_SILU_FP16 से संबंधित functions हटाए गए.
    • ggml_v_expf() जोड़ा गया.
    • ggml_v_silu() जोड़ा गया.
    • ggml_vec_silu_f32() को SSE2 या __ARM_NEON flags के अनुसार preprocessor statements से समायोजित किया गया.

प्रदर्शन सुधार

  • benchmark परिणाम:
    • AMD Ryzen 9 5950X और M2 Ultra पर SOFT_MAX लगभग 1.5 गुना तेज़ है.
    • AVX2 शामिल करने पर लाभ 1.5 गुना से बढ़कर 1.9 गुना हो जाता है.
    • znver4 पर avx512 शामिल करने से यह 2.1 गुना तक बढ़ जाता है.

अतिरिक्त राय

  • contributors की राय:
    • AVX512 का उपयोग करते समय vscalefps इस्तेमाल करने से overflow और underflow को उचित रूप से संभाला जा सकता है, और checks तथा blends को हटाया जा सकता है.
    • Skylake-AVX512/Cascadelake पर प्रदर्शन सुधार की पुष्टि हुई.

GN⁺ की राय

  • प्रदर्शन सुधार: यह बदलाव CPU पर प्रदर्शन को काफ़ी बेहतर कर सकता है, खासकर AVX2 और AVX512 इस्तेमाल करने वाले आधुनिक hardware पर इसका लाभ अधिक है.
  • कोड जटिलता: चूंकि AVX2 और AVX512 implementations, SSE2+fma की तुलना में बहुत बड़ा लाभ नहीं देतीं, इसलिए code complexity को कम रखना महत्वपूर्ण है.
  • हार्डवेयर संगतता: अलग-अलग hardware पर प्रदर्शन को optimize करने के लिए विभिन्न SIMD instruction sets का समर्थन महत्वपूर्ण है.
  • benchmark: प्रदर्शन सुधार की पुष्टि के लिए विभिन्न hardware पर benchmark testing आवश्यक है.
  • नवीनतम तकनीक का उपयोग: नवीनतम SIMD instruction sets का उपयोग करके प्रदर्शन को अधिकतम करना महत्वपूर्ण है.

1 टिप्पणियां

 
GN⁺ 2024-05-16
Hacker News प्रतिक्रिया

Hacker News टिप्पणियों का संक्षिप्त सार

  • 20 साल पहले के Hughes radar signal processor की कहानी

    • Hughes radar signal processor में e^x कैलकुलेशन को optimize करने का अनुभव साझा किया गया।
    • 32-bit word के हर 8-bit मान के लिए 256 e^x tables का उपयोग किया गया और अंतिम मान को multiplication से निकाला गया।
    • यह पहले की तुलना में 5 गुना तेज चला।
    • यह मशीन अब पुरानी हो चुकी है, लेकिन उस समय इसकी processing speed बहुत तेज मानी जाती थी।
  • LLM inference speed पर silu और softmax सुधारों का प्रभाव

    • राय थी कि LLM inference speed पर इसका प्रभाव बहुत बड़ा नहीं होगा।
    • अधिकांश समय matrix multiplication में खर्च होता है।
  • Code optimization पर प्रशंसा

    • जटिल optimization work को देखकर आश्चर्य और प्रशंसा व्यक्त की गई।
    • contributor का नाम jart जानने के बाद बात समझ में आई।
  • LUT size को लेकर सवाल

    • राय थी कि 65536 आकार का LUT, L1 cache के पूरे आकार के बराबर होने की वजह से inefficient हो सकता है।
    • लेकिन probabilistic tuning की वजह से यह अच्छी तरह काम भी कर सकता है।
  • CPU पर llama.cpp और ggml की तुलना

    • सवाल उठाया गया कि ggml, tensorflow lite, onnxruntime आदि की तुलना में कैसा है।
  • CUDA device पर performance comparison

    • प्रश्न था कि non-batched inference में gguf/llama.cpp बेहतर है या exllamav2+flashattention अब भी आगे है।
  • LUT vectorization की संभावना

    • राय दी गई कि LUT को vectorize किया जा सकता है।
    • संबंधित सामग्री का लिंक भी साझा किया गया।
  • तेज़ tanh calculation

    • fast tanh calculation पर एक लिंक साझा किया गया।
  • CPU पर llama performance

    • राय थी कि optimization के बावजूद CPU पर बहुत अधिक parameters वाला llama बहुत धीमा हो सकता है।