في اليوم الثالث من الأسبوع المفتوح، DeepSeek كشف عن "الطاقة" وراء تدريب الاستدلال V3/R1.
DeepGEMM: مكتبة FP8 GEMM (ضرب مصفوفات عام) تدعم عمليات ضرب المصفوفات الكثيفة والخليطة للخبراء (MoE).
!
دعونا نتعرف أولاً على GEMM بشكل بسيط.
GEMM ، أو ضرب المصفوفة العامة ، هي عملية أساسية في الجبر الخطي ، و "ضيف متكرر" في الحوسبة العلمية ، والتعلم الآلي ، والتعلم العميق ، وغيرها من المجالات ، وجوهر العديد من مهام الحوسبة عالية الأداء.
ومع ذلك ، نظرا لأنه يميل إلى أن يكون مكثفا من الناحية الحسابية ، فإن تحسين أداء GEMM يعد نقطة حاسمة.
لا يزال DeepGEMM مفتوح المصدر من DeepSeek يحافظ على خصائص "الأداء العالي + التكلفة المنخفضة" ، مع النقاط البارزة التالية:
أداء عالي : على GPU بنية Hopper، يمكن لـ DeepGEMM تحقيق أداء يصل إلى 1350+ FP8 TFLOPS.
البساطة : الشفرة الأساسية تحتوي فقط على حوالي 300 سطر من الشفرة، لكن الأداء أفضل من النواة المحسّنة من قبل الخبراء.
جاهزة (JIT): يعتمد على الترجمة الديناميكية بالكامل، مما يعني أنه يمكنه إنشاء رمز محسن ديناميكيًا أثناء التشغيل، مما يتيح التكيف مع مختلف أحجام الأجهزة والمصفوفات.
بدون تبعيات:تم تصميم هذه المكتبة بشكل خفيف للغاية، دون وجود علاقات تبعية معقدة، مما يجعل عملية النشر والاستخدام سهلة.
دعم تخطيطات مصفوفة متعددة : يدعم تخطيط مصفوفة مكثف ونوعين من تخطيط MoE، مما يتيح له التكيف مع سيناريوهات تطبيق مختلفة، بما في ذلك على سبيل المثال لا الحصر نماذج الخبراء المختلطة في التعلم العميق.
ببساطة، يستخدم DeepGEMM بشكل رئيسي لتسريع عمليات الرياضيات الخطية في التعلم العميق، وخاصةً في تدريب واستنتاج النماذج بمقياس كبير، حيث ينطبق بشكل خاص في السيناريوهات التي تتطلب موارد حسابية فعالة، مما يمكن أن يعزز بشكل كبير كفاءة الحساب.
كثير من الأصدقاء على الإنترنت قد اشتروا هذا المشروع بشكل جيد. بعض الناس قارنوا DeepGEMM ببطل خارق في عالم الرياضيات واعتبروا أنه أسرع من الآلة الحاسبة السريعة وأقوى من المعادلة متعددة الحدود.
!
وأشاد البعض بإطلاق DeepGEMM بأنه مثل استقرار الحالة الكمومية في واقع جديد، مشيدًا بترجمته الفورية ونظافتها.
!
طبعًا...... بدأ بعض الناس أيضا في القلق بشأن سهم Nvidia في أيديهم......
!
فهم عميق لـ DeepGEMM
DeepGEMM هو مكتبة مصممة خصيصًا لتنفيذ ضرب البلاطات المصفوفة العامة (GEMMs) بشكل موجز وفعال بتنسيق FP8، كما أنها تحتوي أيضًا على وظيفة تكبير الحبيبات، ويعود هذا التصميم إلى DeepSeek V3.
يمكنها معالجة ضرب البنيات العامة العادية ودعم ضرب البنيات العامة لمجموعات MoE.
المكتبة مكتوبة بلغة CUDA ولا تحتاج إلى تجميع في وقت التثبيت ، حيث تقوم بتجميع جميع برامج kernel في وقت التشغيل عبر وحدة تجميع خفيفة الوزن في الوقت المناسب (JIT).
حاليا، يدعم DeepGEMM فقط نواة تنسور هوبر من إنفيديا.
من أجل حل مشكلة أن نواة موتر FP8 ليست دقيقة بما يكفي لحساب التراكم ، فإنها تعتمد طريقة التراكم (التعزيز) على مرحلتين لنواة CUDA.
على الرغم من أن DeepGEMM اقتبس بعض الأفكار من CUTLASS و CuTe ، إلا أنه لم يعتمد بشكل مفرط على قوالبهما أو العمليات الجبرية.
بدلا من ذلك ، تم تصميم المكتبة بإيجاز ، مع وظيفة نواة أساسية واحدة فقط وحوالي 300 سطر من التعليمات البرمجية.
هذا يجعله موردا موجزا وسهل الفهم لتعلم تقنيات ضرب وتحسين مصفوفة FP8 في إطار بنية Hopper.
على الرغم من تصميمه الخفيف، إلا أن أداء DeepGEMM يمكن أن يتفوق على مكتبة الخبراء المُحسنة لمختلف أشكال المصفوفات أو يُطابقها.
فماذا عن الأداء؟
استخدم الفريق NVCC 12.8 على H800 لاختبار جميع الأشكال التي يمكن استخدامها في استدلال DeepSeek-V3 / R1 (بما في ذلك الحشو المسبق وفك التشفير ، ولكن بدون توازي الموتر).
الصورة التالية توضح أداء DeepGEMM العادي المستخدم للنماذج الكثيفة:
!
من نتائج الاختبار ، يمكن أن تصل أداء الحساب العميق DeepGEMM إلى 1358 TFLOPS ، وأعلى عرض للذاكرة يمكن أن يصل إلى 2668 GB/s.
من حيث نسبة التسارع ، يمكن أن تصل إلى 2.7x مقارنة بالتنفيذ الأمثل القائم على CUTLASS 3.6.
دعونا نلقي نظرة على أداء DeepGEMM في دعم نموذج MoE بتخطيط متواصل: (
وأداء دعم نموذج MoE تخطيط مقنع (تخطيط مقنع) هو على النحو التالي:
! [])https://img.gateio.im/social/moments-5a9f16753d563198ede166011a7b67ed# Submodule must be clonedgit clone --recursive git@github.com:deepseek-ai/DeepGEMM.git#
كيفية الاستخدام؟
من أجل استخدام DeepGEMM ، هناك بعض التبعيات التي يجب أن تكون على دراية بها ، بما في ذلك:
يجب أن تدعم هندسة هوبر GPU ، sm \ _90a.
Python 3.8 وما فوق.
CUDA 12.3 وما فوق (يُوصى بالإصدار 12.8).
PyTorch 2.1 وما فوق.
السيف 3.6 وما فوق
رمز التطوير هو كما يلي:
( إنشاء روابط رمزية لدليلي CUTLASS و CuTe من الطرف الثالث يتضمن python setup.py develop ) اختبار جميع تنفيذات GEMM العادية والمجاورة المجمعة والمجمعة المقنعة # Test JIT compilationpython tests/test_jit.py# python tests/test_core.py
تركيب الكود كما يلي:
تثبيت setup.py بيثون
بعد الخطوات المذكورة أعلاه ، يمكنك استيراد deep_gemm إلى مشروع Python الخاص بك.
من حيث الواجهات ، بالنسبة ل DeepGEMM العادي ، يمكن استدعاء وظيفة deep_gemm.gemm_fp8_fp8_bf16_nt ، ويتم دعم تنسيق NT (LHS غير المنقول و RHS المنقول).
بالنسبة لـ DeepGEMM المجمعة، في حالة التخطيط المتواصل هو m_grouped_gemm_fp8_fp8_bf16_nt_contiguous؛ في حالة تخطيط القناع هو m_grouped_gemm_fp8_fp8_bf16_nt_masked.
يوفر DeepGEMM أيضا وظائف فائدة مثل تعيين الحد الأقصى لعدد الرسائل القصيرة والحصول على حجم محاذاة التحليل الحراري الميكانيكي (TMA). يتم دعم متغيرات البيئة ، مثل DG \ _NVCC \ _COMPILER و DG \ _JIT \ _DEBUG وما إلى ذلك.
بالإضافة إلى ذلك، قدم فريق DeepSeek عدة طرق محسنة، بما في ذلك:
تصميم JIT : تتم جميع ترجمات النواة أثناء التشغيل، دون الحاجة إلى ترجمتها أثناء التثبيت؛ وتدعم اختيارًا ديناميكيًا لأفضل حجم للكتلة ومراحل خط الإنتاج.
** التحجيم الدقيق **: حل مشكلة دقة FP8 من خلال تراكم طبقتين من قلب CUDA ؛ يدعم عدم الطاقة من أحجام كتلة 2 لتحسين استخدام SM.
FFMA SASS تتداخل : عن طريق تعديل بتوجيهات SASS yield و reuse ، يتم تحسين الأداء.
!
يمكن للأصدقاء الصغار المهتمين النقر فوق رابط GitHub في نهاية النص للحصول على التفاصيل~
شيء آخر
...... سهم Nvidia هذه الأيام حسنا...... استمر في السقوط مرة أخرى:
!
ومع ذلك ، في الصباح الباكر من يوم 27 ، بتوقيت بكين ، فإن تقرير أداء الربع الرابع من Nvidia للسنة المالية 2025 على وشك الإصدار ، ويمكننا أن نتطلع إلى أدائه ~
المحتوى هو للمرجعية فقط، وليس دعوة أو عرضًا. لا يتم تقديم أي مشورة استثمارية أو ضريبية أو قانونية. للمزيد من الإفصاحات حول المخاطر، يُرجى الاطلاع على إخلاء المسؤولية.
DeepSeekالتعاليمة العميقة الثالثةالصورة:V3/R1تدريب الحاجة الرؤية الرئيسية
مصدر: 量子 位
في اليوم الثالث من الأسبوع المفتوح، DeepSeek كشف عن "الطاقة" وراء تدريب الاستدلال V3/R1.
DeepGEMM: مكتبة FP8 GEMM (ضرب مصفوفات عام) تدعم عمليات ضرب المصفوفات الكثيفة والخليطة للخبراء (MoE).
!
دعونا نتعرف أولاً على GEMM بشكل بسيط.
GEMM ، أو ضرب المصفوفة العامة ، هي عملية أساسية في الجبر الخطي ، و "ضيف متكرر" في الحوسبة العلمية ، والتعلم الآلي ، والتعلم العميق ، وغيرها من المجالات ، وجوهر العديد من مهام الحوسبة عالية الأداء.
ومع ذلك ، نظرا لأنه يميل إلى أن يكون مكثفا من الناحية الحسابية ، فإن تحسين أداء GEMM يعد نقطة حاسمة.
لا يزال DeepGEMM مفتوح المصدر من DeepSeek يحافظ على خصائص "الأداء العالي + التكلفة المنخفضة" ، مع النقاط البارزة التالية:
ببساطة، يستخدم DeepGEMM بشكل رئيسي لتسريع عمليات الرياضيات الخطية في التعلم العميق، وخاصةً في تدريب واستنتاج النماذج بمقياس كبير، حيث ينطبق بشكل خاص في السيناريوهات التي تتطلب موارد حسابية فعالة، مما يمكن أن يعزز بشكل كبير كفاءة الحساب.
كثير من الأصدقاء على الإنترنت قد اشتروا هذا المشروع بشكل جيد. بعض الناس قارنوا DeepGEMM ببطل خارق في عالم الرياضيات واعتبروا أنه أسرع من الآلة الحاسبة السريعة وأقوى من المعادلة متعددة الحدود.
!
وأشاد البعض بإطلاق DeepGEMM بأنه مثل استقرار الحالة الكمومية في واقع جديد، مشيدًا بترجمته الفورية ونظافتها.
!
طبعًا...... بدأ بعض الناس أيضا في القلق بشأن سهم Nvidia في أيديهم......
!
فهم عميق لـ DeepGEMM
DeepGEMM هو مكتبة مصممة خصيصًا لتنفيذ ضرب البلاطات المصفوفة العامة (GEMMs) بشكل موجز وفعال بتنسيق FP8، كما أنها تحتوي أيضًا على وظيفة تكبير الحبيبات، ويعود هذا التصميم إلى DeepSeek V3.
يمكنها معالجة ضرب البنيات العامة العادية ودعم ضرب البنيات العامة لمجموعات MoE.
المكتبة مكتوبة بلغة CUDA ولا تحتاج إلى تجميع في وقت التثبيت ، حيث تقوم بتجميع جميع برامج kernel في وقت التشغيل عبر وحدة تجميع خفيفة الوزن في الوقت المناسب (JIT).
حاليا، يدعم DeepGEMM فقط نواة تنسور هوبر من إنفيديا.
من أجل حل مشكلة أن نواة موتر FP8 ليست دقيقة بما يكفي لحساب التراكم ، فإنها تعتمد طريقة التراكم (التعزيز) على مرحلتين لنواة CUDA.
على الرغم من أن DeepGEMM اقتبس بعض الأفكار من CUTLASS و CuTe ، إلا أنه لم يعتمد بشكل مفرط على قوالبهما أو العمليات الجبرية.
بدلا من ذلك ، تم تصميم المكتبة بإيجاز ، مع وظيفة نواة أساسية واحدة فقط وحوالي 300 سطر من التعليمات البرمجية.
هذا يجعله موردا موجزا وسهل الفهم لتعلم تقنيات ضرب وتحسين مصفوفة FP8 في إطار بنية Hopper.
على الرغم من تصميمه الخفيف، إلا أن أداء DeepGEMM يمكن أن يتفوق على مكتبة الخبراء المُحسنة لمختلف أشكال المصفوفات أو يُطابقها.
فماذا عن الأداء؟
استخدم الفريق NVCC 12.8 على H800 لاختبار جميع الأشكال التي يمكن استخدامها في استدلال DeepSeek-V3 / R1 (بما في ذلك الحشو المسبق وفك التشفير ، ولكن بدون توازي الموتر).
الصورة التالية توضح أداء DeepGEMM العادي المستخدم للنماذج الكثيفة:
!
من نتائج الاختبار ، يمكن أن تصل أداء الحساب العميق DeepGEMM إلى 1358 TFLOPS ، وأعلى عرض للذاكرة يمكن أن يصل إلى 2668 GB/s.
من حيث نسبة التسارع ، يمكن أن تصل إلى 2.7x مقارنة بالتنفيذ الأمثل القائم على CUTLASS 3.6.
دعونا نلقي نظرة على أداء DeepGEMM في دعم نموذج MoE بتخطيط متواصل: (
! [])https://img.gateio.im/social/moments-3f0ab18a3c935431741502c820965287(
وأداء دعم نموذج MoE تخطيط مقنع (تخطيط مقنع) هو على النحو التالي:
! [])https://img.gateio.im/social/moments-5a9f16753d563198ede166011a7b67ed# Submodule must be clonedgit clone --recursive git@github.com:deepseek-ai/DeepGEMM.git#
كيفية الاستخدام؟
من أجل استخدام DeepGEMM ، هناك بعض التبعيات التي يجب أن تكون على دراية بها ، بما في ذلك:
رمز التطوير هو كما يلي:
تركيب الكود كما يلي:
بعد الخطوات المذكورة أعلاه ، يمكنك استيراد deep_gemm إلى مشروع Python الخاص بك.
من حيث الواجهات ، بالنسبة ل DeepGEMM العادي ، يمكن استدعاء وظيفة deep_gemm.gemm_fp8_fp8_bf16_nt ، ويتم دعم تنسيق NT (LHS غير المنقول و RHS المنقول).
بالنسبة لـ DeepGEMM المجمعة، في حالة التخطيط المتواصل هو m_grouped_gemm_fp8_fp8_bf16_nt_contiguous؛ في حالة تخطيط القناع هو m_grouped_gemm_fp8_fp8_bf16_nt_masked.
يوفر DeepGEMM أيضا وظائف فائدة مثل تعيين الحد الأقصى لعدد الرسائل القصيرة والحصول على حجم محاذاة التحليل الحراري الميكانيكي (TMA). يتم دعم متغيرات البيئة ، مثل DG \ _NVCC \ _COMPILER و DG \ _JIT \ _DEBUG وما إلى ذلك.
بالإضافة إلى ذلك، قدم فريق DeepSeek عدة طرق محسنة، بما في ذلك:
!
يمكن للأصدقاء الصغار المهتمين النقر فوق رابط GitHub في نهاية النص للحصول على التفاصيل~
شيء آخر
...... سهم Nvidia هذه الأيام حسنا...... استمر في السقوط مرة أخرى:
!
ومع ذلك ، في الصباح الباكر من يوم 27 ، بتوقيت بكين ، فإن تقرير أداء الربع الرابع من Nvidia للسنة المالية 2025 على وشك الإصدار ، ويمكننا أن نتطلع إلى أدائه ~