نظرة عميقة على استدلال النماذج اللغوية الكبيرة على نطاق واسع — هارشول جين (أوديبل) وتانماي سا (باحث ذكاء اصطناعي مستقل)

AAI Engineer
컴퓨터/소프트웨어경제 뉴스AI/미래기술

스크립트

00:00:00أهلاً بالجميع، طاب يومكم. اسمي هارشال جين وهنا زميلي تانميشار.
00:00:21نود الترحيب بكم جميعاً في هذه الورشة التي تستغرق ساعتين حول استدلال نماذج اللغة الكبيرة.
00:00:26إذن، الهدف من هذه الورشة هو فهم هذا المجال من المبادئ الأولى،
00:00:33والتعمق فيه، وفهم ما يدور في مختلف أنحاء الصناعة.
00:00:39نبذة بسيطة عن خلفيتنا. أنا مهندس برمجيات أول في شركة أودبل.
00:00:47لقد كنت أعمل على بناء منصات بيانات التعلم الآلي والذكاء الاصطناعي طوال السنوات الخمس الماضية،
00:00:53وفي وقت فراغي كنت أكتب هذا الدليل مفتوح المصدر حول استدلال نماذج اللغة الكبيرة.
00:00:59أما تانماي، فهو نموذج كمي أول في مؤسسة زيان المصرفية.
00:01:06لقد أتم دكتوراه مؤخراً وكان يشارك بنشاط في الأبحاث المتعلقة بمقومات الوكلاء
00:01:12ونماذج العالم. لذا، دعونا نرفع الأيدي سريعاً: من هنا جديد تماماً على استدلال نماذج اللغة الكبيرة؟
00:01:24حسناً، رائع. ومن منكم قام بنشر هذه النماذج في بيئة الإنتاج؟
00:01:33لقد قاموا بضبطها وخدمة حركة مرور الإنتاج. حسناً، رائع. إذن هذه الورشة
00:01:42مستهدفة للمستويين المبتدئ والمتوسط. وجميع الشرائح والتمارين
00:01:48موجودة في المستودع وسأقوم بمشاركته قريباً. وإليكم جدول الأعمال السريع للورشة.
00:01:56سنبدأ ببيان المشكلة. سنحاول فهم بعض
00:02:01نقاط الضعف المتعلقة باستدلال نماذج اللغة الكبيرة. ثم نفهم أسباب تلك النقاط
00:02:08ونبني أساسياتنا انطلاقاً من هناك. بعد ذلك، سننتقل إلى نوعين من التحسينات
00:02:14التي نقوم بها، مثل تحسينات النماذج وتحسينات الخادم.
00:02:19ثم نبدأ التعرف على محركات الخادم المختلفة المتاحة
00:02:25لنشر حلول استدلال نماذج اللغة الكبيرة الخاصة بنا في الإنتاج. وسنعرض بعض المعايير
00:02:32وجدولاً قرارياً يوضح المحرك الذي يجب استخدامه.
00:02:39رائع. إذن لفهم نقاط الضعف، نحتاج أولاً إلى معرفة ما هو استدلال نماذج اللغة الكبيرة.
00:02:47ربما الكثير منا يعرف هذا بالفعل، لكن أي شيء تطلب من ذكائك الاصطناعي فعله،
00:02:55سواء كان توليد فيديو، أو صوت، أو تحليل أي نصوص، أو تقارير طبية، أو حتى
00:03:02فواتير الضرائب، كل ذلك يُعد استدلالاً لنموذج لغوي كبير. وهيقدر هذا السوق بحوالي 23 مليار دولار اليوم.
00:03:12أشار تقرير Semi-analysis مؤخراً إلى أن محاكاة استعلامات بحث جوجل باستخدام نماذج اللغة الكبيرة تتطلب استنزافاً للأرباح يقدر بنحو 36 مليار دولار.
00:03:25ويجب أن تكون تكلفة الاستعلام أقل من 0.5 سنت للحفاظ على ربحية نشاط البحث.
00:03:33من ناحية أخرى، ذكرت بلومبرغ وBusiness Insider أن الذكاء الاصطناعي يجب وضعه في نصابه الصحيح، ويبدأ الجميع في تدقيق وموازنة استهلاكهم للرموز.
00:03:43وكل هذا يحدث. لماذا؟ لأن العتاد محدود، والحوسبة مكلفة، والاستدلال مكلف.
00:03:50ومع تزايد الحاجة إلى استخدام الذكاء الاصطناعي بشكل أكبر، فإن تكلفة الاستدلال هذه ترتفع أكثر فأكثر.
00:04:03إذن هذه الإحصائية هي إحصائية قديمة من أوبن أيه آي، لكنها لا تزال صحيحة.
00:04:11إذا نظرت إلى تكلفة تدريب GPT-3، فقد كانت حوالي 4.6 مليون دولار. وكانت تكلفة لمرة واحدة.
00:04:19ولكن إذا رأيت تكاليف الاستدلال، فهي تكلفة متكررة لأنها تشغيلية تتناسب طردياً مع كل مستخدم جديد، وكل رمز يتم استخدامه، وكل جلسة تبدأ على الذكاء الاصطناعي.
00:04:36وهناك طريقتان أساسيتان لمواجهة ذلك: إما أن تقلل من استخدامك للرموز،
00:04:47أو أن تحاول تحسين حلول الاستدلال الخاصة بك كمزود لخدمة الاستدلال لعملائك ولنفسك.
00:04:58ولذلك، ظللنا نرى المزيد والمزيد من الحلول الجديدة تظهر بين الحين والآخر.
00:05:06لذا ستكون الفكرة هي أننا سنحاول بناء تلك الأسس التي ستساعدنا على فهم وتقييم أي شيء يتم إصداره لاحقاً.
00:05:18إذن، للبدء، سنقوم بعرض توضيحي سريع؛ عرض قصير لما هي نقاط الضعف المختلفة حول الاستدلال.
00:05:28وهذا هو المستودع.
00:05:31أعني، يمكنك سحبه أو يمكنك أيضاً فتحه على جيت هب.
00:05:36وهو يحمل اسم استدلال نماذج اللغة الكبيرة على نطاق واسع.
00:05:39مع خلفية بسيطة هنا: قبل أربعة أشهر، عندما لم أكن أعرف شيئاً عن استدلال نماذج اللغة الكبيرة، بدأت أتعلمه.
00:05:46ورأيت أن الكثير من الموارد كانت متناثرة.
00:05:49لذا بدأنا بجمعها كلها في مكان واحد لكي يستفيد منها الناس.
00:05:55نعم، دعني في الواقع أخرج من وضع عرض الشرائح هذا وأنتقل ربما إلى هذا الوضع الموسع.
00:06:11نعم، في هذا المستودع، إذا رأيت ملف التمهيد (README)، فسجد رابطاً للشرائح.
00:06:27لذا سيكون هذا المجلد الذي يحتوي على ملف PPTX وتقرير مرجعي هناك.
00:06:34يمكنك دائماً تنزيله، ولأغراض العرض التوضيحي، لدينا زوج من دفاتر جوبيتر (Jupyter notebooks).
00:06:43لقد تعاونا مع Molab وهم بديل لـ Google Colab، وما يقدمونه لك بشكل أساسي هو وحدة معالجة رسومات RTX 6000 مجانية.
00:06:54إذن هي وحدة معالجة رسومات بذاكرة وصول عشوائي (RAM) تبلغ 100 جيجابايت، وقد قمنا بالفعل بإعداد دفاتر الملاحظات هذه لسهولة التجربة وضبط كافة الأصول من أجلك مسبقاً.
00:07:09لذا سنبدأ بعرض توضيحي بسيط أ.
00:07:16ربما، ربما، دعني أرى فقط.
00:07:31نعم، عندما يتعلق الأمر بالاستدلال، فأنت بحاجة إلى إجراء الاستدلال على نموذج معين، أليس كذلك؟
00:07:40لذا، لأغراض الورشة، نحن نستخدم نموذج Mistral 7B البسيط.
00:07:45إنه نموذج صغير يبلغ حجمه حوالي 15 جيجابايت.
00:07:49لذا سنقوم بتحميله في وحدة معالجة الرسومات.
00:07:53وسنلقي نظرة على بعض إحصاءات وحدة معالجة الرسومات أيضاً.
00:07:58لذا نرى، حسناً، نحن نعمل على إصدار 6000 Blackwell.
00:08:01وقد تعتقد أنني لا أقوم بتشغيل الخلايا لأنني لا أثق بشبكة الواي فاي في المؤتمرات.
00:08:08لذا، نعم، ربما سأستعرض النتائج التي قمنا بتشغيلها مسبقاً.
00:08:18نعم، لدينا وحدة معالجة رسومات بحجم 102 جيجابايت.
00:08:22الآن، أول ما يتبادر إلى ذهني هو شكل استهلاك الذاكرة الخاص بي عندما أقوم باستدلال نماذج اللغة الكبيرة.
00:08:31لذا أقوم بتحميل هذا النموذج وأرى، حسناً، لدي حوالي 15 جيجابايت هنا.
00:08:37إذن لدي تقريباً 87.5 جيجابايت.
00:08:40والآن عندما أقوم بالاستدلال هنا، ما ألاحظه هو أنه كلما زاد عدد المدخلات التي مررتها، زادت الذاكرة التي أحتاجها.
00:08:52وهي تزداد ببطء، لكنها لا تزال في ازدياد.
00:08:56فتخيل لو كان لديك طول سياق يبلغ حوالي 4,000 أو 16,000 أو 32,000 رمز.
00:09:03لذا يمكن لهذه الذاكرة أن تنمو بشكل كبير حقاً وقد تواجه بالفعل مشكلات نفاد الذاكرة.
00:09:12بالتأكيد هذه هي مشكلتك الأولى: ذاكرتك تزداد مع زيادة الرموز.
00:09:18وفي شكل تصور بسيط، تبدو هكذا.
00:09:24المشكلة الثانية التي ستراها هي أن الوقت المستغرق للوصول إلى رمزك الأول يكون بطيئاً للغاية.
00:09:32نحن نقيسه بمقياس يسمى TTFT.
00:09:35إنه اختصار له.
00:09:37وعندما تحاول قياس TTFT مع حجم الإدخال، ستلاحظ أنه كلما طال السياق، كان هذا المؤشر بطيئاً.
00:09:52إذن هناك مشكلتان.
00:09:54ذاكرتك تزداد مع حجم الرموز.
00:09:56وقت الرمز الأول (TTFT) يزداد مع حجم الرموز.
00:09:59عذراً، ليس حجم الرموز، بل حجم السياق.
00:10:07ثم الثالثة هي الإنتاجية.
00:10:09الإنتاجية هي عدد الرموز التي يمكنك خدمتها في الثانية الواحدة.
00:10:13ثم كم عدد المستخدمين الذين يمكنك خدمتهم في الثانية الواحدة؟
00:10:16لذا إذا أخذت تنفيذاً تقليدياً جداً على نظامك المحلي، فس يكون تسلسلياً للغاية.
00:10:24لذا إذا أرسلت خمسة طلبات، فسيتم تلبية كل تلك الطلبات الخمسة بشكل تسلسلي بدلاً من التوازي.
00:10:31وبالتالي يستغرق طلبك وقتاً أطول للاكتمال إذا كان لديك عدة مستخدمين.
00:10:40إذن هذه هي المشكلات الثلاث.
00:10:43وهناك مشكلة رابعة.
00:10:44لم أقم بوصفها هنا.
00:10:45ربما سنبني هذا الحدس بينما نمضي قدماً.
00:10:48ولكن لنتذكر أن هذه هي المشكلات الثلاث: الذاكرة، والرمز الأول (TTFT)، والإنتاجية.
00:10:55رائع.
00:10:56سأعود إلى الشرائح.
00:11:02حسناً.
00:11:03ممتاز.
00:11:04لذا يجب أن تكون هذه.
00:11:17هل هي مرئية؟
00:11:18نعم.
00:11:19إنها مرئية.
00:11:20إنها مرئية.
00:11:21نعم.
00:11:22إنها مرئية.
00:11:23إنها مرئية.
00:11:24إنها مرئية.
00:11:25نعم.
00:11:26إنها مرئية.
00:11:27إنها مرئية.
00:11:28نعم.
00:11:29إنها مرئية.
00:11:30نعم.
00:11:31إنها مرئية.
00:11:32نعم.
00:11:33إنها مرئية.
00:11:34نعم.
00:11:35إنها مرئية.
00:11:36إنها مرئية.
00:11:37نعم.
00:11:38إنها مرئية.
00:11:39نعم.
00:11:40إنها مرئية.
00:11:41نعم.
00:11:42إنها مرئية.
00:11:43نعم.
00:11:44إنها مرئية.
00:11:45نعم.
00:11:46نعم.
00:11:47لذا داخل هذا المستودع، إذا رأيت مجلد الورشة، سترى ملف التمهيد هذا ويحتوي ملف التمهيد
00:11:55على جميع الروابط والشرائح والعروض التوضيحية.
00:12:01هل هذا ينجح؟
00:12:06حسناً.
00:12:07ممتاز.
00:12:09حسناً.
00:12:10ممتاز.
00:12:16حسناً.
00:12:17فلنبدأ العمل عبر الأسس.
00:12:19فلنبدأ في فهم الأسباب الكامنة وراء نقاط الضعف تلك.
00:12:25ولهذا الغرض، يتعين علينا النظر في خط أنابيب الاستدلال هذا.
00:12:32إذن، نحصل على نوع من النص المدخل.
00:12:35يمكن أن يحتوي هذا النص على أي عدد من الكلمات.
00:12:38أنت تحول تلك الكلمات إلى رموز.
00:12:41لذا، للسهولة، يمكنك افتراض أن كل كلمة تساوي رمْزاً واحداً.
00:12:46ثم تقوم بتحويلها إلى ما يشبه التضمينات وبعد ذلك ترسلها إلى المحولات.
00:12:53مثل وجود 32 طبقة من المحولات، ولكن هذا خاص بنموذج ميسترال 7.
00:12:58النماذج المختلفة تحتوي على أنواع وأعداد مختلفة من الطبقات.
00:13:01وبعد ذلك تقوم بتوليد رمْز جديد.
00:13:04وهذا الرمْز يذهب أساساً مرة أخرى إلى المدخلات.
00:13:06ثم تولد رمْزاً آخر ويستمر الأمر على هذا النحو.
00:13:09الآن في هذه السلسلة بأكملها، ستلاحظ أن نحو 95% من قوة الحوسبة تُستهلك بواسطة طبقات المحولات هذه.
00:13:18لذا يجدر بنا إلقاء نظرة على ما يحدث داخل طبقة المحولات هذه.
00:13:24داخل طبقة المحولات هذه، سيكون لديك المزيد من الطبقات.
00:13:28لديك ما يشبه طبقة تطبيع.
00:13:30لديك طبقة انتباه.
00:13:32لديك طبقة تغذية أمامية وما إلى ذلك.
00:13:35وأعتقد أن طبقة الانتباه هي التي نالت شهرة واسعة جداً.
00:13:40أصحاب ورقة “الانتباه هو كل ما تحتاج إليه”.
00:13:42أعتقد أن ذلك معروف جيداً.
00:13:44لذا فإن طبقة الانتباه هي الأكثر استهلاكاً للموارد الحوسبية.
00:13:48وعلينا أن نفهم ما يدور داخل طبقة الانتباه تلك.
00:13:53إذن، ماذا تفعل طبقة الانتباه؟
00:13:56إذا كان لديك نص مدخل، فإنها تحتاج إلى إيجاد درجات الانتباه لكل رمْز بالنسبة لجميع الرموز السابقة.
00:14:05وللقيام بذلك، ما تحتاجه هو إسقاط كل رمْز في مساحة المفتاح، والاستعلام، والقيمة.
00:14:14لذا بعبارات أبسط، افهم هذا الأمر.
00:14:20إذا كان لديك 10 رموز، فهي تحتاج إلى 10 متجهات مختلفة للاستعلام، والمفتاح، والقيمة.
00:14:26إذا كان هناك 100 رمْز، فستحتاج إلى 100 متجهة للمفتاح والقيمة.
00:14:31إذا كان هناك 1000 رمْز، فستحتاج إلى 1000 متجهة للمفتاح والقيمة.
00:14:35وبالتالي يزداد عدد متجهات المفتاح والقيمة كلما زاد حجم الإدخال.
00:14:45وإذا حسبت حجم ذاكرة المفتاح والقيمة لكل رمْز في نموذج ميسترال 7B، فسيكون الناتج 131 كيلوبايت تقريباً.
00:14:54يرجع هذا إلى أن لديك متجهين، هما المفتاح K والقيمة V.
00:14:59يجب عليك ضرب الحجم.
00:15:02المتجه الواحد يمتلك حوالي 128 بعداً.
00:15:04وعليك ضرب ذلك في 32 طبقة تحويل.
00:15:08ومن ثم عليك ضربه في رؤوس المفتاح والقيمة.
00:15:11بالنسبة لنموذج ميسترال 7B، فهي رؤوس المفتاح والقيمة.
00:15:15الأمر ليس تماماً مثل 32 لأنه يستخدم نوعاً مختلفاً من آليات الانتباه، وهو ما سنتحدث عنه بالتأكيد.
00:15:23ولكن نعم، حجم ذاكرة المفتاح والقيمة لكل رمْز يبلغ حوالي 131 كيلوبايت.
00:15:30الآن تخيل لو كان لديك سياق بـ 4 آلاف رمْز، سيصبح هذا الحجم حوالي نصف جيجابايت.
00:15:37وإذا استخدمت سياقاً بـ 16 ألف رمْز، سيصبح الحجم 2.1 جيجابايت.
00:15:42الآن اضربه في عدد المستخدمين.
00:15:45افترض أنه يمكنك خدمة عدة مستخدمين معاً.
00:15:49في نفس الوقت داخل وحدة معالجة الرسوميات تلك، يمكنك الحصول على نحو 42 جيجابايت مع سياق من 4 آلاف رمْز و80 مستخدماً.
00:15:58وإذا كانت ذاكرة وحدة معالجة الرسوميات لديك 24 جيجابايت فقط، على سبيل المثال، فسف تنفد منك الذاكرة بالفعل.
00:16:04لذا لا يمكنك خدمة هذا العدد الكبير من المستخدمين بمثل هذا السياق الضخم.
00:16:11لتخيل هذا، انظر إلى ذاكرة وحدة معالجة الرسوميات.
00:16:14تحتوي ذاكرة وحدة معالجة الرسوميات على أوزان النموذج التي تكون ثابتة إلى حد كبير.
00:16:19هذه أوزان مدربة مسبقاً.
00:16:21وهناك أيضاً عبء إضافي ثابت.
00:16:24هذا أيضاً يتغير، لكنه لا يتغير كثيراً.
00:16:29بشكل عام، يمكنك افتراض أنه ثابت.
00:16:32وبعد ذلك توجد الذاكرة المتبقية.
00:16:35لذا فإن هذه الذاكرة المتبقية هي التي تستخدمها ذاكرة المفتاح والقيمة، أي متجهات المفتاح والقيمة.
00:16:41لنفترض إذن أن لديك مستخدماً واحداً.
00:16:46يمكنك فقط خدمة عدد من متجهات المفتاح والقيمة، أو عدد من الرموز، التي يمكن أن تتسع داخل مساحة الـ 80 جيجابايت بأكملها، أو الذاكرة المتبقية.
00:17:00لذا يمكننا توضيح ذلك من خلال عرض توضيحي بسيط أيضاً.
00:17:07حسناً، عظيم.
00:17:08حسناً، عظيم.
00:17:08دعني أرى ما إذا كان بإمكاني تشغيل هذا حقاً.
00:17:14حسناً، عظيم.
00:17:15دعني أرى ما إذا كان بإمكاني تشغيل هذا حقاً.
00:17:15أين الجحيم هذا؟
00:17:15حسناً، عظيم.
00:17:16دعني أرى ما إذا كان بإمكاني تشغيل هذا حقاً.
00:17:21أين الجحيم هذا؟
00:17:22حسناً، عظيم.
00:17:23حسناً، عظيم.
00:17:24نعم.
00:17:25نعم.
00:17:25إذن، سترى، دعني أرى ما إذا كان بإمكاني تشغيل هذا حقاً.
00:17:31دعني أرى ما إذا كان بإمكاني تشغيل هذا حقاً.
00:17:33دعني أرى ما إذا كان بإمكاني تشغيله.
00:17:34دعني أرى ما إذا كان بإمكاني تشغيله.
00:17:35دعني أرى ما إذا كان بإمكاني تشغيله.
00:17:36دعني أرى ما إذا كان بإمكاني تشغيله.
00:17:37حسناً، عظيم.
00:17:38نعم.
00:17:39إذن، سترى أن وحدة معالجة الرسوميات متصلة.
00:17:43حسناً، عظيم.
00:17:44نعم.
00:17:45إذن، سترى أن وحدة معالجة الرسوميات متصلة.
00:17:56إذن، نحن هنا نحاول فقط تأكيد حجم الذاكرة بناءً على العمليات الحسابية وبناءً على الحدس
00:18:13الذي قمنا ببنائه.
00:18:14لذا، ذاكرة النموذج هي، لنفترض أن لديك 7 مليارات معامل، وأنت تستخدم
00:18:19دقة 16 بت.
00:18:20إجمالي الذاكرة لديك يبلغ 14.6 جيجابايت.
00:18:23يمكنك أساساً التحقق من ذلك باستخدام الحسابات الرياضية.
00:18:27إذن، إذا قمت بكل تلك العمليات الحسابية، فسيكون الناتج 14.6 جيجابايت.
00:18:33الآن يأتي دور ذاكرة المفتاح والقيمة وحجمها.
00:18:37إذن، حجم ذاكرة المفتاح والقيمة هذا هو حوالي 131 كيلوبايت لكل رمْز.
00:18:42وإذا أجريت تلك الحسابات وحاولت تصور هذا الأمر.
00:18:47أوه، بالتأكيد.
00:18:52انتظر.
00:18:53حسناً.
00:18:54وبعد ذلك دعنا نتصور هذا.
00:19:07حسناً، عظيم.
00:19:10عظيم.
00:19:11نعم.
00:19:12إذن، هذا هو مخطط الذاكرة.
00:19:15لذا، إذا لاحظت، كلما زاد سياقك، استمرت الذاكرة في الازدياد.
00:19:21ثم الشيء الآخر الذي يجب إدراكه هو أنه كلما زاد عدد المستخدمين، زادت الذاكرة أيضاً.
00:19:28إذن، إذا كنت تريد خدمة نحو 160 مستخدماً على وحدة معالجة رسوميات واحدة، يمكنك دعم، لا يمكنك سوى دعم
00:19:37طول سياق أقصر.
00:19:40لذا توجد دائماً مفاضلة بين طول السياق الذي يمكنك خدمته مقابل التكلفة
00:19:47التي يمكنك توفيرها من خلال وضع عدة مستخدمين أو مستخدمين متزامنين على وحدة معالجة رسوميات واحدة.
00:19:54لذا عليك دائماً قبول تلك المفاضلة.
00:19:57وسنستعرض ذلك في الشراح القليلة القادمة.
00:20:06هل يمكنك الإعادة من فضلك؟
00:20:10أنا آسف.
00:20:11لا يمكنني سماعك.
00:20:12هل ترى مجمعاً مختلفاً بأطوال سياق مختلفة بحيث يمكنك خدمة ذاكرة
00:20:25المناسب؟
00:20:26نعم.
00:20:27رائع.
00:20:28رائع.
00:20:29حسناً.
00:20:30جيد.
00:20:31إذن، دعني أتراجع.
00:20:32إذن، كانت تلك هي الذاكرة.
00:20:33نحن بحاجة إلى فهم سبب حصولنا على وقت أبطأ للحصول على الرمز الأول عندما قمنا بزيادة طول
00:20:53السياق.
00:20:54لتحقيق ذلك، نحتاج إلى فهم مرحلتي الاستدلال.
00:20:58وهاتان المرحلتان هما مرحلة التعبئة المسبقة ومرحلة فك التشفير.
00:21:01أعتقد أنكم جميعاً، يبدو الأمر كالكثير من المقالات، لكننا أردنا فقط توضيحه.
00:21:06لذا، عندما ترسل الكثير من، عندما ترسل رموز الإدخال هذه، ما ترغب في القيام به هو بناء متجهات المفتاح والقيمة التي ذكرتها لجميع الرموز.
00:21:20ثم تريد حساب درجات الانتباه لكل رمْز بالنسبة للرموز السابقة.
00:21:27كل هذه العمليات التي تقوم بها تعتمد بشكل كبير جداً على المصفوفات.
00:21:31إنها عملية مكثفة الحوسبة بشكل كبير جداً.
00:21:34ونحن نعلم جميعاً أن وحدات معالجة الرسوميات ملائمة جداً لأعباء العمل الحوسبية الثقيلة.
00:21:41لذا فإننا نطلق على مرحلة التعبئة المسبقة أنها مقيدة بالحوسبة.
00:21:46وهي تستغرق بعض الوقت حتى تكتمل.
00:21:49لذا، الوقت الذي تستغرقه هذه المرحلة حتى تكتمل هو الوقت المستغرق للوصول إلى الرمز الأول.
00:21:55لذا إذا كان لديك المزيد من رموز الإدخال، فسيتعين عليك توليد المزيد من متجهات المفتاح والقيمة.
00:22:02وعليك القيام بالكثير من العمليات الحسابية للانتباه.
00:22:05وبسبب ذلك، يصبح وقت الوصول إلى الرمز الأول أبطأ فأبطأ.
00:22:12بينما بمجرد أن تولد رمزاً واحداً، تحتاج إلى الاستمرار في فعل ذلك لتوليد رموز أخرى، على التوالي واحداً تلو الآخر.
00:22:20ولكن في هذه العملية، عليك في كل مرة بناء متجهات المفتاح والقيمة لجميع الرموز السابقة، وهو ما يشبه مرحلة التعبئة المسبقة.
00:22:30مثلما كنت تبني متجهات المفتاح والقيمة هناك أيضاً، وهنا أيضاً.
00:22:34ولكن في مرحلة فك التشفير، أنت تحسب فقط حسابات الانتباه للرمز الجديد.
00:22:40ولهذا السبب فهي أقل بكثير من حيث اعتمادها على الحوسبة.
00:22:45وتسمى أيضاً مقيدة بالذاكرة.
00:22:48سنرى بعد قليل لماذا تُسمى مقيدة بالذاكرة.
00:22:54إذن، في خط زمني تقليدي، سترى مرحلة التعبئة المسبقة وفك التشفير هكذا.
00:22:59لذا، الوقت الذي تستغرقه التعبئة المسبقة، هو الوقت المستغرق للرمز الأول.
00:23:03ومن ثم الوقت الذي تستغرقه كل خطوة فك تشفير، هو أساساً وقت الانتظار بين الرموز.
00:23:12إذن، هذا هو القياس الرابع الذي تحتاج إلى القلق بشأنه.
00:23:18مثل ما هو الوقت المستغرق بواسطة خطوة فك التشفير الخاصة بك؟
00:23:21حسناً.
00:23:22حسناً.
00:23:23رائع.
00:23:24الآن، لماذا تستغرق خطوة فك التشفير أو لماذا يستغرق فك التشفير وقتاً؟
00:23:34ولماذا يُطلق عليها عملية مقيدة بالذاكرة؟
00:23:38دعنا نحاول فهم ذلك.
00:23:40لفهم ذلك، نحتاج إلى النظر في كيفية عمل خريطة المصفوفات بشكل أساسي على وحدة معالجة الرسومات على مستوى عالٍ.
00:23:47إذن، تحتوي وحدة معالجة الرسومات على نوعين من الذاكرة.
00:23:50لديك ذاكرة عالية النطاق الترددي.
00:23:52ولديكم ذاكرة مشتركة.
00:23:55إذن، الذاكرة ذات النطاق الترددي العالي تكون أكبر حجماً، ولكنها ذات نطاق ترددي أقول.
00:24:01وأعني بالنطاق الترددي الأقل أنه يمكنك نقل البيانات خارجها بمعدل أقل.
00:24:06مقارنة بالذاكرة المشتركة، فالذاكرة المشتركة أصغر حجماً، ولكن لها نطاق ترددي عالٍ جداً.
00:24:13هذا يعني أنه يمكنك نقل البيانات وإليها بسرعة كبيرة جداً.
00:24:19لذا، عندما يتعين عليك إجراء حسابات المصفوفات، عليك اختيار البيانات في أجزاء من الذاكرة ذات النطاق الترددي العالي.
00:24:27وعليك وضعها في الذاكرة المشتركة.
00:24:30إجراء تلك العمليات الحسابية.
00:24:32وكتابة النتيجة مرة أخرى في الذاكرة ذات النطاق الترددي العالي.
00:24:38بالنسبة لمرحلة التعبئة المسبقة، عندما يتعين عليك القيام بذلك، عليك إجراء حسابات المصفوفات هذه مرة واحدة فقط.
00:24:46ولكن بالنسبة لمرحلة فك التشفير، يجب عليك إجراء حسابات المصفوفات هذه مراراً وتكراراً لأنك تولد كل رمز على حدة بشكل تسلسلي.
00:24:59ولذلك، لا importa مدى سرعة فك التشفير الخاص بك لأنه يمكنك الآن نقل بياناتك خارج الذاكرة ذات النطاق الترددي العالي إلى الذاكرة المشتركة بسرعة معينة.
00:25:14لأنك محدود بسرعة النطاق الترددي للذاكرة عالية النطاق.
00:25:18ولذلك، هذا يتحكم في الحد الأقصى للرموز الخاصة بك، مثل المعدل الذي يمكنك من خلاله توليد الرموز فعلياً من خطوة فك التشفير.
00:25:32إذا نظرت إلى هذا في المخطط البياني للحد الأقصى، فهناك قسم أيسر يُسمى مقيد بالذاكرة.
00:25:42رياضياً، يتم التحكم في ذلك بواسطة الكثافة الحسابية.
00:25:47الكثافة الحسابية هي عدد العمليات التي تجريها لكل بايت من البيانات المنقولة.
00:25:55لذا، بالنسبة لخطوة فك التشفير، نظراً لأنك تنقل الكثير من البيانات، مثل متجهات المفتاح والقيمة لجميع الرموز السابقة، وأوزان النموذج،
00:26:08ولكنك تقوم بحسابات أقل لأنك تحسب حسابات الانتباه لرمز واحد فقط.
00:26:13لذا، فإن كثافتها الحسابية منخفضة جداً.
00:26:18ولكن بالنسبة لمرحلة التعبئة المسبقة، فإنك تنقل البيانات مرة واحدة، ولكن بعد ذلك تقوم بهذا الحساب الثقيل.
00:26:27ولذلك، فإن كثافتها الحسابية عالية جداً.
00:26:30لذا، أنت تعلم الآن من الناحية الرياضية، لماذا تكون الكثافة الحسابية للتعبئة المسبقة عالية جداً مقارنة بفك التشفير.
00:26:44حسناً.
00:26:46إذن، هذه عرض تجريبي صغير آخر.
00:26:51حسناً.
00:26:52في كل مرة يجب علي فيها.
00:26:53حسناً.
00:26:54حسناً.
00:26:55رائع.
00:26:56أتمنى أن يكون هذا جاهزاً بالفعل.
00:26:58إذن، نعم.
00:26:59مرة أخرى، نقوم بتحميل النموذج.
00:27:04الآن، هذه هي تكلفة التعبئة المسبقة.
00:27:09إذن، ما نقوم به أساساً هو الحصول على النص المدخل ثم نحاول توليد هذه الخطوة، خطوة التعبئة المسبقة، والوقت الذي تستغرقه.
00:27:22نرى أنه كلما زاد حجم الرموز المدخلة، زادت عملية التعبئة المسبقة هذه.
00:27:28لذا، كما تعلم، هذا هو السبب وراء زيادة وقت استجابة الرمز الأول.
00:27:33وبعد ذلك وقت فك التشفير الخاص بك.
00:27:36لذا، فإن وقت فك التشفير يظل في المتوسط كما هو تقريبا.
00:27:41ولذلك، إذا افترضنا أنك تتجاهل بدء التشغيل البارد، فإن وقت فك التشفير يكون تقريباً حول الخط المتوسط.
00:27:50إنه لا يزال متأثراً بحجم المدخلات.
00:27:57ليس الأمر وكأنه وقت ثابت.
00:28:00وذلك لأنه لا يزال بحاجة إلى سحب متجهات المفتاح والقيمة من الذاكرة لجميع الرموز السابقة.
00:28:07لذا، لا تزال هناك تلك الزيادة الصغيرة في الوقت التي ستراها مع خطوة فك التشفير.
00:28:15وبعد ذلك هذا هو المخطط البياني للحد الأقصى الكلاسيكي.
00:28:20حسناً.
00:28:22حسناً.
00:28:23عرض تقديمي.
00:28:24حسناً.
00:28:25حسناً.
00:28:26حسناً.
00:28:27لذا، دعونا الآن نحاول فهم بُعد الإنتاجية.
00:28:43تريد أن تفهم عدد المستخدمين الذين يمكنك خدمتهم فعلياً.
00:28:48وأعتقد أننا رأينا رسماً توضيحياً لذاكرة وحدة معالجة الرسومات حيث رأينا، حسناً، هناك بعض الذاكرة المتاحة لنمو متجهات المفتاح والقيمة.
00:28:56حسناً.
00:28:57لذا، افترض أن لديك مستخدماً واحداً فقط.
00:29:01ما هو إجمالي حجم متجهات المفتاح والقيمة الذي تملكه والذي يمكنك دعمه بشكل أساسي؟
00:29:09يتم تحديده بواسطة حد السياق الخاص بك.
00:29:11الحد الأقصى للمستخدمين الذين يمكنك دعمهم هو أي توفر لذاكرة وحدة معالجة الرسومات، أي الذاكرة المتاحة في وحدة المعالجة، وتقسمها على حجم المفتاح والقيمة لكل مستخدم.
00:29:25وعندما تفعل ذلك، يتبين أنه يمثل المستخدمين المتزامنين.
00:29:32الآن، افترض أن وحدة معالجة الرسومات الخاصة بك ثابتة، ونمودجك ثابت، إذن حجم متجهات المفتاح والقيمة لكل رمز ثابت.
00:29:46لا يوجد سوى بُعدين متبقيين هنا، وهما السياق والمستخدمون المتزامنون لديك.
00:29:53إذا كنت تريد خدمة عدد أكبر من المستخدمين المتزامنين، فيجب عليك تقليص طول السياق.
00:29:57إذا قمت بتقليل طول السياق، فقد يؤثر ذلك على الجودة.
00:30:02إذن، هذان هما البعدان اللذان نوازن بينهما الآن.
00:30:09ولكن بعد ذلك، هل يمكنك حقاً خدمة الحد الأقصى من المستخدمين المتزامنين؟
00:30:17في عالم مثالي، ربما لا، لأن لكل نشاط تجاري هدفاً خفياً لمستوى الخدمة يجب أن نلبيه.
00:30:27لذا، إذا تذكرت كما قلت في خطوة فك التشفير، فإن وقت فك التشفير لا يزال يزداد إذا كان لديك مدخلات أكثر.
00:30:37وهو يزداد أيضاً إذا كان لديك عدد أكبر من المستخدمين.
00:30:40لذا، في النهاية يتأثر وقت الانتظار بين الرموز أيضاً إذا كان لديك حجم دفعة أعلى.
00:30:51كما يتأثر وقت استجابة الرمز الأول أيضاً.
00:30:53لذا، يوجد الآن بُعد ثالث يجب أن تقلق بشأنه، وهو زمن الانتقال.
00:30:58إذن، الأبعاد الثلاثة التي تملكها هي الجودة، وزمن الانتقال، والإنتاجية.
00:31:04لذا، يتضح أنه مثلث المفاضلة هذا حيث يتعين عليك الاختيار بين الاثنين.
00:31:11لذا، بالنسبة لتطبيق دردشة متميز، سترغب بالتأكيد في إعطاء الأولوية للجودة وإعطاء الأولوية للكمون.
00:31:21لن ترغب في أن ينتظر مستخدموك لفترة طويلة، أعني، ليس إلى ما لا نهاية، ولكن ربما لكمون أكبر.
00:31:30يمكنك دائماً التضحية بعدد المستخدمين الذين يمكنك دعمهم على وحدة معالجة الرسومات وربما تحمل تلك التكلفة، لكونك أكثر هوساً بالعملاء.
00:31:39لذا، في شكل، ومثل إذا اعتبرت مثل وكيل، عذراً، عبء عمل الوكيل غير المتزامن، سترغب في إعطاء الأولوية بالتأكيد للجودة والإنتاجية.
00:31:53لأن هذه مهام طويلة الأمد.
00:31:56وسترغب في خدمة أكبرจำนวน ممكن من المهام المتزامنة، ولكن بجودة عالية جداً جداً.
00:32:06وغابتاً ما نعتقد، حسناً، إذا كانت وحدة معالجة الرسومات باهظة الثمن حقاً، فقد لا تكون مناسبة لنا.
00:32:19ولكن يتبين أن ذلك قد يوفر لك بالفعل أقل تكلفة لكل مليون رمز.
00:32:27ولكن عليك حقاً أن تثق بنوع حساباتك على الحد الأقصى للمستخدمين الذي تريده وعليك حقاً إجراء تلك التقديرات بشكل صحيح.
00:32:40لذا، لدينا مثل، دعني فقط، حسناً، عظيم.
00:32:55لذا، بالنسبة لحاسبة السعة، يوجد رابط لـ Colab لأنني كنت معتاداً عليه.
00:33:01كان علي الانتقال خارج مكتبة الأدوات بأكملها ولم يكن لدي وقت.
00:33:16لذا، لكوني كسولاً، اخترت Colab هناك.
00:33:20اعتذاري لمختبري.
00:33:23لذا، ذاكرة الوصول العشوائي للفيديو الخاصة بي متصلة.
00:33:34حسناً.
00:33:45لذا، شبكة Wi-Fi على الأرجح.
00:33:46حسناً، رائع.
00:34:02إذن، ما قمنا به هنا هو أننا قمنا بتوضيح بعض وحدات معالجة الرسومات مع ذاكراتها العشوائية وعرض النطاق الترددي، والقلابات وتكلفة الساعات.
00:34:11ثم قمنا بنوع من بناء حاسبة السعة البسيطة هذه.
00:34:19هذا مجرد عارض لمتجهات المفتاح والقيمة حيث يمكنك بطريقة ما، عندما تزيد عدد الرموز، ترى أن حجم متجهات المفتاح والقيمة يزداد.
00:34:29وعندما تزيد عدد المستخدمين، فإن حجم الذاكرة لديك يزداد بمعدل أسرع بكثير.
00:34:37وبعد ذلك، في حاسبة السعة هذه، دعنا نشغلها.
00:34:47إذن، لدينا نموذج وهو عبارة عن نموذج بـ 7 مليارات معامل قمنا بتحديده.
00:34:56لقد قمنا بتحديد الدقة لتكون FP16.
00:35:01الآن، نقرر، الطريقة التي نتبعها أساساً في اتخاذ قرار وحدة معالجة الرسومات هي أنه يجب عليك أن تقرر ما هو، مثل أنه يجب عليك تثبيت بُعد واحد أولاً، والذي تهتم به أكثر.
00:35:15إذن، بالنسبة للمحادثة المميزة، ذكرت أن زمن الاستجابة هو العامل الأهم بالتأكيد.
00:35:21وبعد ذلك بالنسبة لمهام العمل غير المتزامنة، الدفعة، والحد الأدنى لحجم الدفعة الذي تريد معالجته، من وحدة معالجة رسومات واحدة، هذا هو البعد الثاني.
00:35:31إذن، تريد تثبيت هذه الأمور أولاً.
00:35:34لذا، سأتناول الأمر كما لو كان في تطبيق محادثة مميز.
00:35:39لذا، يمكنني المضي قدمًا باستخدام زمن استجابة يبلغ حوالي 10 مللي ثانية.
00:35:44الحد الأدنى لحجم الدفعة، لا أهتم حقًا.
00:35:46لذا يمكنني، لذا أنا موافق على ربما اثنين.
00:35:53حسناً.
00:35:54لذا، ربما مع سبعة مستخدمين متزامنين على وحدة معالجة رسومات واحدة.
00:35:59ومثل أن حد سياق النص الخاص بي مهم جداً بالنسبة لي لأنني أريـد التركيز على الجودة أيضاً.
00:36:07ولذلك، يبدو لي أنني أرى بعض وحدات معالجة الرسوميات.
00:36:10لذا، فإن بطاقة H-100 سعة 8 جيجابايت، تبلغ تكلفتها حوالي 8 دولارات في الساعة.
00:36:15ولكن هل هي بطاقة 300x؟
00:36:19أحقاً كذلك؟
00:36:20نعم.
00:36:21لذا، فهو يكلف حوالي 10 دولارات في الساعة.
00:36:24إذن، إذا قمت بكل تلك الحسابات للإنتاجية التي شاركناها في الرياضيات سابقاً، يمكنك معرفة التكلفة لكل مليون رمز.
00:36:34قد يكون ذلك حقاً، حقاً، قد يكون أقل بكثير.
00:36:37لذا، تحتاج إلى إجراء مثل هذه الحسابات من خلال تثبيت تلك الأبعاد وتحتاج إلى تحديد وحدة معالجة الرسوميات الخاصة بك لتقليل نوع تكاليف الاستدلال.
00:36:49إذن، هذه على الأقل الخطوة الأولى التي يمكنك اتخاذها نحو تحسين الاستدلال.
00:36:56حسناً.
00:37:01إذن، الشريحة التالية.
00:37:04دعني...
00:37:08حسناً، عظيم.
00:37:10والآن، الشيء التالي يتعلق بتحسين النموذج.
00:37:15لذا، لقد بنينا أساساً حيث فهمنا بعض نقاط الألم، والأسباب الكامنة وراءها، ولماذا كانت تحدث.
00:37:23كيف يمكننا معالجة مشكلة سعة وحدة معالجة الرسوميات هذه.
00:37:29نحتاج إلى أن نفهم ما يمكننا فعله، وما الذي يمكننا فعله أيضاً حيال ذلك.
00:37:33لذا، الأمر يتعلق بتحسين النموذج وأعتقد أنني أود دعوة تانماي.
00:37:39يمكنه التحدث أكثر حول تحسينات النموذج هذه نظراً لأنه عمل على هذا خلال فترة أبحاثه.
00:37:47حسناً.
00:37:48حسناً.
00:37:49يمكنني التحكم.
00:37:50يمكنني التحكم.
00:37:54نعم.
00:37:55هنا.
00:37:56حسناً.
00:37:57مرحباً بالجميع.
00:37:58اختبار الميكروفون.
00:37:59هل صوتي مسموع أخيراً؟
00:38:00نعم.
00:38:01حسناً.
00:38:02إذن، مرحباً.
00:38:03أنا تانماي شاه.
00:38:04أعمل كنمذجي كمي أول وأنا أيضاً باحث في مجال الذكاء الاصطناعي.
00:38:08لذا، ينصب التركيز على التحقق من الوكلاء وأقوم حالياً ببناء نماذج العالم.
00:38:13إذن، بالنسبة لهذا الموضوع، تحسين النموذج.
00:38:16قبل أن نبدأ في تحسين النموذج، قمت بتصميم قالب بحثي لكي يكون من السهل علينا فهم كل هذه الأمور المعقدة.
00:38:25لذا، قالبنا بسيط.
00:38:28أولاً، سنقوم بتحديد المشكلة.
00:38:30الخطوة الثانية، سنحل المشكلة باستخدام خوارزميتين.
00:38:34هاتان مجرد خوارزميات وهمية.
00:38:35لذا، الخوارزمية الأولى تسمى خوارزمية النعامة.
00:38:39كلما نرى، مثل النعام تماماً، عندما ترى النعامة مشكلة، تدفن رأسها في الرمال.
00:38:46إذن، سنفعل الشيء نفسه.
00:38:47كلما واجهنا مشكلة، سنقوم بتجاهلها ببساطة.
00:38:51إذن، هذه خوارزمية مهمة يجب أن نتبعها.
00:38:55الثانية تم إنشاؤها، وتسمى خوارزمية كأس العالم.
00:38:59على سبيل المثال، نحن لا نعرف من سيفوز بكأس العالم فيفا هذه.
00:39:03إذن، ما فعله المنظمون هو أنهم قسموا الـ 48 فريقاً إلى 12 مجموعة.
00:39:11ثم دور الـ 32، لذا دور الـ 32 يجري حالياً.
00:39:16ثم دور الـ 16، ثم ربع النهائي، ثم نصف النهائي والنهائي.
00:39:21لذا، ما يفعلونه هو تقسيمها إلى مشكلات أصغر والنتائج المفيدة تتحرك إلى الأمام.
00:39:30إذن، نفس القياس أو نفس الخوارزمية سنستخدمها لفهم تحسين النموذج هذا، وكل هذه الأمور.
00:39:38لذا، نعم، لنبدأ.
00:39:41لذا، لدي وحدة معالجة رسوميات H100 واحدة.
00:39:46علي استخدام نموذج مفتوح المصدر هذا، والذي يسمى نموذج GPT OSS بـ 120 مليار معلمة.
00:39:54لذا، الآن أعتقد أنه، لقد قاموا بتدريبه على BF float 16 والوزن هو 240 جيجابايت.
00:40:02ماذا علي أن أفعل؟
00:40:04هذه هي المشكلة التي لدينا.
00:40:07الشيء الأول، ما يجب علينا فعله هو أن 240 جيجابايت و H100 بحجم 80 جيجابايت.
00:40:16لذا، وعلي أن أجعله يتناسب فقط في وحدة معالجة رسوميات واحدة، وليس في وحدات متعددة.
00:40:21إذن، ماذا يمكننا أن نفعل؟
00:40:22أعتقد أن الخطوة البسيطة هي ضغطه فقط.
00:40:27ولكن كيف يجب أن نضغطه؟
00:40:29هذا تحدٍ آخر.
00:40:30لذا، إذا ضغطنا BF float 16 إلى FP8، فسيكون حوالي 120 جيجابايت.
00:40:38ولكن وحدة معالجة الرسوميات H100 الخاصة بنا تظل بحجم 80 جيجابايت.
00:40:42لذا، ما أعتقد أنهم فعلوه هو أنهم ضغطوه بشكل أكبر إلى MXFP4.
00:40:49وأعتقد أن الحجم يبلغ حوالي 65 جيجابايت.
00:40:53إذن، هذا شيء يمكننا فعله، الضغط، ولكن السؤال.
00:40:59لذا، وسنستخدم فوق هذا خوارزمية النعامة.
00:41:03نحن نفترض أنه لا يوجد فقدان في ضغط نموذج أكبر إلى حجم أصغر.
00:41:10لذا، الشيء الثاني، في هذا، حسناً، نعم.
00:41:16لذا، في هذا، في هذه الشريحة، استخدمنا Mistral 7B.
00:41:20إذن، سبعة مليارات معلمة.
00:41:22لذا، إنه نموذج صغير، سبعة مليارات معلمة.
00:41:25لذا، إذا ضربته في بايتين، فإن وزنه يبلغ حوالي 14.
00:41:3114.5 جيجابايت، والتي يمكن أن تتناسب بسهولة في H100 أو حتى A40.
00:41:38لذا، التالي، ما يمكننا فعله هو أنه مثل Mistral 7B، بدلاً من ضغطه بنقطة عائمة 16، يمكننا تطبيق تقنيات مختلفة مثل int8 أو int4 أو nf4.
00:41:53لذا، بشكل أساسي، علينا فقط استخدام خوارزمية النعامة والاعتقاد بأن نوعية الأشياء لا تفقد جودتها.
00:42:01ولكن بطريقة ما، علينا أيضاً إثبات ذلك رياضياً من خلال إجراء نوع من الاختبارات على بعض المعايير الخارجية لمعرفة ما إذا كان يعمل أم لا.
00:42:10لذا، وهذا يقع تحت ما يُسمى التكميم بعد التدريب.
00:42:16يمكن للمرء أيضاً القيام بذلك أثناء الضبط الدقيق.
00:42:20يمكن للمرء أيضاً القيام بهذا النوع من التكميم.
00:42:22هذا يقع تحت ما يُسمى التدريب الواعي بالتكميم.
00:42:25لذا، لننتقل إلى مشكلتنا التالية.
00:42:31لذا، لدينا هذه المصفوفات الضخمة.
00:42:37لذا، تخيل فقط أبعاد 1000 في 1000، المصفوفة A، ومصفوفة أخرى 1000 في 1000.
00:42:51لذا، إذا ضربت هاتين المصفوفين، فسيكون عدد العمليات 1000 مرفوعة للقوة Q.
00:43:00وهذه نوع من المشاكل من حيث الحوسبة.
00:43:06لذا، تساءلنا عما إذا كان ضرب المصفوفات لدينا يجب أن يكون سريعاً وأن يوفر الذاكرة.
00:43:13إذن، ماذا يجب أن نفعل؟
00:43:15لدينا مصفوفة عملاقة.
00:43:17حسناً، لنأخذ هذه، السيد 4096 في 4096.
00:43:23ماذا يجب أن نفعل لحل مشكلتنا في تسريع الأمور وتوفير الذاكرة 4096 في 4096.
00:43:33لذا، الشيء الأول هو أننا سنستخدم خوارزمية كأس العالم الخاصة بنا.
00:43:37يمكننا تحديد رقم عشوائي، وتقسيم الكتلة عمودياً.
00:43:42لا يهم ما تقوم باختياره.
00:43:45لذا، لنقل أن لدينا 4096 عموداً.
00:43:51سنقوم بتقسيمها إلى مجموعة من 128 عموداً لكل منها.
00:43:57لذا، 128، 128، 128، 128، 128 عمودياً.
00:44:03لذا، سنحصل على هذه الكتل الـ 32 إذا قمنا بتقسيم 4096 هذه.
00:44:09ثم، ماذا سيحدث من خلال القيام بهذا الشيء؟
00:44:13لذا، إذا قمنا بتقسيم هذا الشيء عمودياً، فيمكننا استخدام وحدة معالجة رسوميات متعددة لتسريع العملية.
00:44:21لذا، هذا النوع من الأشياء يسمى الانتباه متعدد الرؤوس.
00:44:26إذن، ماذا يمكننا أن نفعل أيضاً؟
00:44:29لدينا مصفوفة كبيرة مثل، كما ذكرت خوارزمية النعامة.
00:44:36لذا، مشكلتنا الرئيسية هي الحجم.
00:44:39لذا، ما يمكننا فعله هو أنه بدلاً من وجود كل تلك الكتل العمودية الـ 32، سنقوم بالتخلص من 31 كتل.
00:44:49وسنفترض أن كتلة واحدة كافية بما يكفي لكي تتعامل جميع الاستعلامات مع تلك الكتل.
00:44:57سيكون فقداننا شبه مهمل.
00:45:00ونخرج بهذه الخوارزمية.
00:45:04وهذه الخوارزمية تسمى الانتباه متعدد الاستعلامات.
00:45:08لذا، كما يمكننا أن نرى، نحن الآن في طرفين متطرفين.
00:45:12أحدهما هو الانتباه متعدد الرؤوس، حيث نقسمه إلى 32 كتل ونستخدم وحدات معالجة رسوميات مختلفة أو نقوم ببعض المعالجة الموازية.
00:45:22وفي نفس الوقت، نحن نرمي فقط 31 كتل.
00:45:26ونحن نسمي هذا بالانتباه متعدد الاستعلامات.
00:45:31لذا، في كلا الطرفين المتطرفين، يجب أن نتوصل إلى أرضية مشتركة مثل شيء ما.
00:45:38يمكننا القول إنه بدلاً من التخلص من الـ 31 جميعها، ربما يمكننا تجميع بعض الكتل معاً.
00:45:49ويمكننا أن نفترض أن الكتل المماثلة ستنتبه إلى نوع مماثل من الاستعلامات.
00:45:58لذا، هذا النوع من التقنيات يقع تحت الانتباه الاستعلامي المجموع، وهو شائع جداً الآن.
00:46:04حتى في Mistral أو في نماذج أخرى، يعمل هذا الانتباه الاستعلامي المجموع.
00:46:11لذا، الآن، فهمنا أن لدينا مصفوفة كبيرة.
00:46:16يمكننا تقسيمها بالطريقة التي نريدها وإجراء بعض الحسابات الرياضية،
00:46:19وإثبات أن الفقد يكاد يكون مهملًا من نوع ما.
00:46:23إذن، ماذا يمكننا أن نفعل أيضاً؟
00:46:25لذا، بعد ذلك، بعد هذا الانتباه الاستعلامي المجموع،
00:46:34انظر، لدينا مصفوفة كبيرة.
00:46:38واحدة للمفتاح والأخرى للقيمة.
00:46:42دعنا نضغط هذه المصفوفة إلى متجه كامن.
00:46:47ثم نتوصل إلى بعض الخوارزميات لإعادة البناء من المتجه الكامن إلى مصفوفتنا الأصلية.
00:46:55لذا، هذا النوع من الاستراتيجيات يقع تحت هذا.
00:46:59الانتباه الكامن متعدد الرؤوس.
00:47:02ولكن مرة أخرى، لديه بعض المشاكل مع rope لأن rope يعتمد على الموضع وهو من النوع المستقل عن الموضع.
00:47:10لذا، يحتاج المرء أيضاً إلى تضمين بعض الفهرس للمفاتيح أيضاً، حتى يتمكن المرء من ربطها.
00:47:16ولكن مرة أخرى، المشكلة الرئيسية هي سبب قيامنا بضرب كل هذه المصفوفات الكبيرة.
00:47:25لأنه هكذا تعمل آلية الانتباه هذه، حيث سيدفع كل رمز الانتباه إلى كل رمز.
00:47:33إذن، ماذا عن، لا تدفع الانتباه إلى كل الرموز السابقة، فقط انتبه للرموز المهمة، والتي هي مهمة بالنسبة لنا.
00:47:42إذن، هذا النوع من المجالات في تطور مستمر.
00:47:46لذا، يندرج هذا تحت الانتباه المتفرق (Sparse Attention) لـ ديب سيك.
00:47:51إذن، نعم.
00:47:53ونعم، إذن، حسناً.
00:47:56التالي.
00:47:59نعم، إذن التالي هو الانتباه السريع (Flash Attention).
00:48:02إذن، في الانتباه السريع، المشكلة الرئيسية هي أنه،
00:48:09حاليًا، ليس حاليًا، حسنًا، ليس تمامًا الآن، تقريبًا الجميع يستخدم الانتباه السريع، ولكن طريقتها في 2022 أو 2023.
00:48:20إذن، هكذا تعمل.
00:48:23طريقة عملها هي أن مصفوفتي الاستعلام والمفتاح (Q, K)، كانتا في الذاكرة عالية النطاق الترددي (HBM).
00:48:34يتم تحميلهما، أولاً، يتم تحميلهما في نواة التنسور الخاصة بنا، وتقومان ببعض الحسابات، ثم تتم كتابتهما مرة أخرى إلى الذاكرة (HBM).
00:48:47وبعد ذلك، تستمر هذه العملية عدة مرات.
00:48:51إذن، في الانتباه السريع، ما فعلوه هو أنه بدلاً من ضرب المصفوفات بأكملها،
00:48:59قاموا ببساطة بتقسيمها، مثل خوارزمية كأس العالم، حيث قسّموا المصفوفات الكبيرة إلى مربعات صغيرة،
00:49:05ووضعوا تلك المربعات الصغيرة فقط في الذاكرة (SBM)، بحيث يمكن معالجة الضرب بسرعة،
00:49:13ومجرد تتبع بعض المتغيرات الثلاثة، حتى يتمكنوا من حساب هذه الدالة الأسية السوفتماكس عبر الإنترنت.
00:49:20إذن، نعم، هذه مجرد رياضيات، فإذا كان لدينا انتباه متعدد الرؤوس، وكان لـ 524 مفتاح وقيمة (kV)،
00:49:34فإن ذلك يعتمد على مقدار التجميع الذي نريده، لذا، إذا أردنا استخدام 8 رؤوس مفتاح/قيمة بدلاً من 32 رأسًا،
00:49:47إذن يمكننا الحصول على ضغط بمقدار 4 أضعاف، وهذا هو الانتباه الكامن متعدد الرؤوس.
00:49:54تعتمد هذه الصيغة من نموذج لآخر على عدد الطبقات التي يمتلكها نموذجك.
00:50:00إذن، في ورقة بحث DeepSeek الأصلية، أعتقد أن لديهم بُعدًا بقيمة 128، لا أتذكر البُعد الدقيق، ولكن بناءً على ذلك،
00:50:11لقد استخدموا هذا المتجه الكامن الواحد، والذي استخدموا فيه 512 كبُعد، وحوالي 64 لفهرس الحبل (RoPE)،
00:50:23ثم أظهروا أنه مضغوط بنسبة 56 مرة أكثر مقارنة بالانتباه متعدد الرؤوس.
00:50:32حسناً.
00:50:33نعم، إذن هذا هو مخطط المفاضلة، وهنا أعتقد أننا لم نتحدث عن الانتباه الخطي أو نموذج مامبا (Mamba).
00:50:50المشكلة الرئيسية هي كل عمليات ضرب المصفوفات هذه، وفي الوقت الحالي الجميع يستخدم الانتباه.
00:50:56فترض أنه في المستقبل، إذا لم نكن نريد استخدام الانتباه، وبدلاً من توليد الرموز بشكل تسلسلي، استخدمنا ربما نماذج الانتشار (Diffusion)،
00:51:07حيث يمكننا توليد كل شيء في وقت واحد، فإن كل هذه الخوارزميات ستتغير أيضًا.
00:51:14ولكن هنا، أعتقد أن لديهم اثنين آخرين، أحدهما هو الانتباه الخطي والآخر هو مامبا.
00:51:19لذا، وفقًا لهذه الشريحة، إذا لم نكن نضغط أي شيء، فإن الانتباه متعدد الرؤوس (MHA) يعني أننا نقوم بعمليات متوازية.
00:51:29لذا لا توجد خسارة في الجودة، وهو أمر جيد، ثم لدينا انتباه الاستعلام المجموع (GQA)، والذي أعتقد أن كل نموذج تقريبًا يستخدمه بجانب أشياء مثل GQA و DSA.
00:51:42نعم.
00:51:43أعتقد أننا نقدم نفس الشيء في بطاقة تقييم آلية الانتباه، لذا أعتقد أن جودة الانتباه متعدد الرؤوس هنا جيدة، ومعدل النقل (Throughput) مقبول.
00:51:56أما بالنسبة لانتباه الاستعلام المجموع، فهو يعتمد على حالة الاستخدام الخاصة بك أيضًا، ورغم أن الجودة تقريبًا مشابهة للانتباه متعدد الرؤوس، إلا أن حالة الاستخدام تهم كثيرًا أيضًا.
00:52:10نعم، الانتباه متعدد الاستعلامات (MQA) هو مجرد حالة متطرفة.
00:52:13نحن، لا أعرف لماذا، لكننا نفترض فقط أننا بحاجة إلى كتلة واحدة فقط، وأن جميع الاستعلامات ستنتبه إلى تلك الكتل الأصغر.
00:52:24لذا فإن الجودة ليست رائعة جدًا بالنسبة لـ MQA.
00:52:29وهذا الانتباه الكامن متعدد الرؤوس، نعم، إذا جربت بعض نماذج DeepSeek هذه، فأعتقد أنها تقوم بعمل رائع من حيث الجودة، إلى جانب نافذة الانزلاق (Sliding Window).
00:52:44إذن كل هذه تقنيات، مثل ضبط النوافذ وما شابه، وبدلاً من ضرب كل شيء، يقول الانتباه الخطي ببساطة: قم بتلخيص كل شيء أولاً، ثم ابحث بداخله، أما مامبا فهو ببساطة نموذج مساحة الحالة (State-Space Model)، نعم.
00:53:09لذا، بالنسبة للتحسينات الخاصة بالنموذج، لدينا أيضًا دفتر حمام (Notebook) هنا.
00:53:28لذلك سيكون، عليّ الانتقال إلى هذا.
00:53:35حسناً، بالنسبة للتقييس (Quantization) مثل العرض التوضيحي، هل تم تشغيل هذا بالفعل؟ لا.
00:53:51دعني أقوم بتشغيل هذا فقط.
00:53:54حسناً، نحن نقوم بتحميل النموذج، وهو مثل Mistral 7B.
00:54:10إذن هذا يأتي مع خط الأساس بدقة FP16.
00:54:20انتظر.
00:54:21هل تم تشغيله؟
00:54:21انتظر.
00:54:22هل تم تشغيله؟
00:54:23حسناً.
00:54:24إذن، لقد استغرق الأمر ميلي ثانية، لقد تم تشغيله.
00:54:27هل تم تشغيل هذا؟
00:54:28حسناً.
00:54:29إذن، نعم، هذه المرة يقوم بجلب هذا النموذج بدقة FP16.
00:54:35حسناً.
00:54:36إذن، لقد استغرق الأمر ميلي ثانية، لقد تم تشغيله.
00:54:40هل تم تشغيل هذا؟
00:54:41حسناً.
00:54:42إذن، نعم، هذه المرة يقوم بجلب هذا النموذج بدقة FP16.
00:54:47شبكة الواي فاي.
00:54:58سوف يستغرق بعض الوقت.
00:55:03حسناً.
00:55:08نعم، لأنه يقوم بتنزيل الأوزان من Hugging Face.
00:55:14ها؟
00:55:17نعم، إذن Colab يعمل عبر الإنترنت.
00:55:22نعم.
00:55:23لأنه يحتاج إلى إجراء مكالمة شبكة عبر Hugging Face والقيام بالجلب.
00:55:30لا أعرف، ولكن يبدو أن عملية التنزيل تستغرق بعض الوقت.
00:55:35حسناً.
00:55:36حسناً.
00:55:37حسناً.
00:55:38حسناً.
00:55:39حسناً.
00:55:40لذا نرى هنا أن حجم الذاكرة يبلغ حوالي 15 جيجابايت تقريبًا بدقة FP16.
00:56:00نحن نحاول القيام بضغط بمقدار الضعف (2x)، كما تحدث طالب، باستخدام INT8.
00:56:15حسناً.
00:56:16لذا نرى أن حجم الذاكرة أصبح الآن حوالي 0.7 أو 0.5 جيجابايت.
00:56:21هذا يعني أن لديك الآن مساحة أكبر لنمو ذاكرة التخزين المؤقت للمفاتيح والقيم (KV Cache).
00:56:27هذا يعني أنه يمكنك إما خدمة حدود سياق أعلى أو خدمة عدد أكبر من المستخدمين المتزامنين.
00:56:36إذن، إذا قمت بالاستخدام بـ INT4، فأنت تقوم أساسًا بضغط بمقدار 4 أضعاف.
00:56:41لذلك، مع الضغط بمقدار 4 أضعاف، ستكون أقل بكثير.
00:56:45ستكون، أعتقد، حوالي 3 إلى 4 جيجابايت.
00:56:50نعم، 4.5 جيجابايت.
00:56:51ونعم.
00:56:52إذن هذا، انتظر.
00:56:53هذا مجرد مخطط بياني أساسي، إذن هذه أرقام نظرية.
00:57:09نحن لا نقوم بأي اختبارات لمعدل النقل هنا.
00:57:12ولكن عادةً، ستلاحظ أن الذاكرة الخاصة بك تزداد.
00:57:15لذا سيكون لديك أيضًا معدل نقل أعلى قليلاً.
00:57:21من بعض المعايير التي درسناها، رأينا أن ضغط INT8.
00:57:26يؤدي بالفعل إلى انخفاض في معدل النقل.
00:57:32حسناً.
00:57:33وبعد ذلك، هناك عرض توضيحي حول آليات الانتباه.
00:57:42إذن، بالنسبة للانتباه، حسناً.
00:57:45عليّ تشغيل هذا.
00:57:58حسناً.
00:57:59إذن لقد تم تشغيله.
00:58:02أه.
00:58:03انتظر.
00:58:04لماذا يقول إنه لم يتم اكتشاف وحدة معالجة رسومية (GPU)؟
00:58:09يجب أن يقول إنه تم اكتشاف وحدة المعالجة الرسومية.
00:58:18أه.
00:58:19حسناً.
00:58:29انتظر.
00:58:30انتظر.
00:58:30انتظر.
00:58:50هذا أمر مدهش.
00:58:57أظن أنه غير قادر على اكتشاف وحدة المعالجة الرسومية لسبب ما.
00:59:05نحن نمتلك وحدة معالجة رسومية هنا.
00:59:11حسناً.
00:59:12لا تهتم.
00:59:14نعم.
00:59:14ولكن الفكرة الأساسية هنا كانت أكثر شبهاً بما يلي: عندما تحاول الانتقال نحو ضغط الحسابات، باستخدام آليات انتباه مختلفة
00:59:26مثل الانتقال من الانتباه متعدد الرؤوس إلى انتباه الاستعلام المجموع (GQA) ثم إلى MLA.
00:59:33ستبدأ في ملاحظة بعض التحسينات.
00:59:38أعتقد أننا كنا نقوم ببعض اختبارات الأداء الليلة الماضية.
00:59:43أردت تصحيح هذا الجزء.
00:59:45إذن لم يكن الأمر 56 ضعفاً.
00:59:48لقد كان 14 ضعفاً.
00:59:50في الأساس، احتوى العرض التوضيحي على خطأ في الحساب حيث لم يقم بضرب عدد الطبقات.
01:00:02نعم.
01:00:03لذا نعتذر عن ذلك.
01:00:04إذن، فإن تقنية MLA هذه توفر حوالي 14 ضعفاً مقارنة بالانتباه متعدد الرؤوس لديك.
01:00:15والآن بعد أن أصبح لدينا فهم لنقاط الألم، والأسس، والجانب الأول من التحسينات وهو تحسينات النموذج، نريد التحدث عما يمكنك فعله من جانب الخادم.
01:00:31لذا فإن أول شيء رأناه هو أنه عندما تجري خطوة فك تشفير بسيطة، فإنك تقوم بسحب أوزان النموذج ثم تعيد حساب متجهات المفتاح والقيمة لكل الرموز السابقة.
01:00:50على الرغم من أنك قمت بالفعل بحساب تلك المتجهات لجميع الرموز.
01:00:55لذا، هناك بالتأكيد الكثير من الهدر الحسابي.
01:01:02وإذا قمت بتحليل التعقيد الزمني لذلك، فسيكون O لـ N مربع.
01:01:07والطريقة لحل ذلك هي مقايضة تقليدية مقابل الذاكرة.
01:01:12يمكنك الاحتفاظ بذاكرة لتلك المتجهات مقابل الرموز ويمكنك الرجوع إلى تلك الذاكرة.
01:01:19إذن، تسمى تلك الذاكرة بذاكرة التخزين المؤقت للمفاتيح والقيم (KVCache).
01:01:24وتدفق العمل يبدو شيئاً كالتالي.
01:01:27وبناءً على ذاكرة التخزين المؤقت هذه، كان هناك أربعة تحسينات ممكنة حقًا.
01:01:35الأول يتعلق بالانتباه المُجزأ (PagedAttention).
01:01:42إذن ما هو الاختلاف، وما هي المشكلة اليوم؟
01:01:45إذن، عندما ترسل، مثلاً، طلبات متعددة كمدخلات إلى وحدة معالجة الرسومات، تكون هذه الطلبات في دفعة واحدة.
01:01:52يتم تخصيص مساحة تخزين ذاكرة مستمرة لكل طلب، على سبيل المثال.
01:01:58لنقل، على سبيل المثال فقط، لنقل 2 كيلوبايت من الذاكرة المفتاحية والقيمية (KV).
01:02:05ومع ذلك، فإن طلبك قد يحتاج فقط، على سبيل المثال، إلى 1 كيلوبايت.
01:02:11لذا، هناك ما يقرب من 50% من تجزئة الذاكرة هذه.
01:02:19وهذه التجزئة تؤدي أساساً إلى إهدار الذاكرة.
01:02:24وهذا يعني أنه كانت هناك مساحة في الذاكرة كان يمكنك من خلالها خدمة المزيد من الطلبات، ولكنك لم تستطع لأنك كنت تبحث عن تلك الكتلة المتصلة من الذاكرة.
01:02:36لذا، تم استيحاء الفكرة، على ما يبدو، من طريقة عمل نظم التشغيل.
01:02:41حيث تحافظ على ذاكرة منطقية ويكون لديك أساساً ذاكرة فيزيائية.
01:02:47لذا، في الذاكرة المنطقية، سيبدو الأمر وكأن ناقل الذاكرة لكل رمز هو ذاكرة متصلة.
01:02:59ولكنه سيتم تعيينه إلى عنوان فيزيائي مختلف.
01:03:06لذا، فقد ساعد ذلك حقاً في توفير مساحة كبيرة من الذاكرة.
01:03:11ولم يكن ذلك ممكناً إلا لأنهم اعتبروا الذاكرة بمثابة مجموعة من الكتل.
01:03:18وستقوم بتخصيص تلك الكتل ديناميكياً حسب احتياجات الطلبات.
01:03:22مع وصول الرموز الجديدة وحاجتها إلى هذا النوع من الذاكرة.
01:03:27عامل آخر هو أنه عندما تقوم بإرسال طلبات متعددة في الدفعة الواحدة،
01:03:39فإن وحدة معالجة الرسومات تقوم بأخذ تلك الطلبات.
01:03:42ولكنها لا تقبل دفعة جديدة إلا بعد اكتمال جميع الطلبات الموجودة في تلك الدفعة.
01:03:49لذا، يبدو الرسم التخطيطي أشبه باحتجاز الصفحات.
01:03:52ولكن الأمر هنا يتعلق أكثر بمتى تصبح وحدة معالجة الرسومات متاحة لأخذ الدفعة التالية.
01:03:59لذا، هناك فترة زمنية تجلس فيها وحدة معالجة الرسومات في حالة خمول تام.
01:04:04وأنت ترغب في إيجاد حل لهذه المشكلة.
01:04:08ولهذا السبب، كانت الفكرة هي: حسناً، دعنا نطبق الدفع المستمر.
01:04:17لذا، ساعد الدفع المستمر أيضاً بشكل كبير في تحسين الإنتاجية لأنه يمكنك الآن شحن المزيد من الطلبات بسرعة كبيرة.
01:04:24مع الحرص دائماً على أن تبقى وحدة معالجة الرسومات مشغولة وألا تكون في حالة خمول.
01:04:33وبالتالي فإنك توفر في القدرة الحسابية.
01:04:36الجانب الثالث هو التخزين المؤقت للبادئات.
01:04:39إذن تذكر، كيف ساعدتك ذاكرة التخزين المؤقت للـ KV في توفير عمليات الحساب لطلب واحد عبر الرموز.
01:04:46ولكن ماذا لو كانت لديك نفس الرموز عبر طلبات متعددة؟
01:04:53كيف توفر في ذلك أساساً؟
01:04:55لذا، فإن التخزين المؤقت للبادئات، والذي تم تقديمه بواسطة VLLM، يعالج ذلك تماماً.
01:05:04ثم النقطة الثالثة، أو الرابعة بالأحرى، التي تحدثنا عنها.
01:05:10لقد تحدثنا عن تقييس النموذج، ولكن يمكنك أيضاً تقييس أوزان الذاكرة المفتاحية والقيمية (KV).
01:05:21وهذا يعني أنك تحتاج الآن إلى مساحة أقل لناقلات المفاتيح والقيم.
01:05:28وهذا يعني أنه يمكنك خدمة المزيد من ناقلات المفاتيح والقيم في الذاكرة.
01:05:32وهذا يعني أنه يمكنك خدمة رموز أكثر.
01:05:34وهذا يعني أنه يمكنك دعم حدود سياق أكبر.
01:05:37وهذا يعني أنه يمكنك تقديم جودة نموذج أفضل.
01:05:41وكل هذا موجود بالفعل في VLLM.
01:05:51لست بحاجة حقاً لإعادة اختراع العجلة.
01:05:56ويمكنك نشر VLLM في بيئة الإنتاج وترות هذا النمو بنفسك.
01:06:03لذا، لدينا بعد ذلك اختبار أداء قمنا بإجرائه.
01:06:08إذن، اختبار الأداء هذا، دعني أرى ما إذا كان لدي.
01:06:14هنا.
01:06:17العروض التوضيحية.
01:06:22لذا، فإن إجراء اختبار الأداء هذا يستغرق حوالي ساعة لأن عليك إيقاف وإعادة تشغيل خوادم VLLM بشكل مستمر وعليك تحميل النماذج وما إلى ذلك.
01:06:35لذا، يستغرق الأمر وقتاً طويلاً في إجراء الاختبارات، ولكن يمكنني أن أخبركم هنا بما نفعله بالضبط.
01:06:41لقد حافظنا على ثبات النموذج، مثل MISTRAL 7B.
01:06:46ثم لدينا مجموعة الأسئلة المدخلة التي نقوم بإرسالها.
01:06:53اعتبرها بمثابة النصوص التوجيهية (Prompts).
01:06:56ثم لدينا عدد من الدوال المساعدة هنا، مثل التحقق مما إذا كان الخادم يعمل أم لا.
01:07:01هذا الخادم هو خادم VLLM.
01:07:04ثم توجد دوال مساعدة لجلب مقاييس VLLM.
01:07:09وسأتحدث عن ماهية تلك المقاييس.
01:07:14ثم هناك الكثير من اختبارات الأداء وما شابه.
01:07:17وعليك قياس استخدام ذاكرة KV وما إلى ذلك.
01:07:22إذن هذه هي الدوال المساعدة.
01:07:24لذا فإن خط الأساس بسيط للغاية.
01:07:26لدينا خط أساس لـ Hugging Face.
01:07:29هذا إرسال خام للنص إلى نموذج اللغة الكبير والحصول على الرد بالمثل.
01:07:36نرى بعض النتائج هنا.
01:07:38لقد رأينا أن معدل إنتاجية Hugging Face يبلغ حوالي 51 رمزاً في الثانية.
01:07:44الوقت المستغرق حتى الرمز الأول كان 54.
01:07:46ثم كان زمن الانتقال بين الرموز 19.
01:07:49تم تشغيل هذا بالكامل على معالج H100.
01:07:56وبعد ذلك، قمنا بتشغيل خادم VLLM بالإعدادات الافتراضية تماماً.
01:08:00بشكل افتراضي، يمنحك VLLM احتجاز الصفحات والدفع المستمر والتخزين المؤقت للـ KV.
01:08:08إذن، هناك ثلاثة أشياء موجودة بشكل افتراضي.
01:08:13وعندما تحاول مقارنة اختبارات الأداء هذه، ترى أن الإنتاجية تزيد بمقدار 15 ضعفاً تقريبا.
01:08:21أنت قادر على خدمة عدد أكبر من الرموز في الثانية.
01:08:24ثم، الوقت المستغرق حتى الرمز الأول، يتحسن أيضاً.
01:08:34ثم ينخفض زمن الانتقال بين الرموز نوعاً ما.
01:08:38ثم يزداد استخدام ذاكرة KV بالنسبة للمستخدمين والسياق، بالتأكيد.
01:08:43الآن، عندما تطبق التخزين المؤقت للبادئات عليه.
01:08:51مع التخزين المؤقت للبادئات، ستلاحظ أن معدل الإنتاجية يزداد بشكل أكبر.
01:08:57ينخفض وقت الانتظار حتى الرمز الأول (TTFT).
01:08:59زمن الانتقال بين الرموز يظل كما هو تقريبا.
01:09:02ثم يتراجع استخدام ذاكرة KV مؤقتاً مقارنة بالمستخدمين.
01:09:09أما مقارنة بالسياق، فهو لا يتراجع.
01:09:12إنه يظل كما هو تقريباً.
01:09:14أعتقد أن هذا متشابه تقريباً أيضاً.
01:09:16ليس بالأمر الجلل أو التغيير الكبير.
01:09:19وعندما تطبق تقييس الذاكرة المفتاحية والقيمية (KV Quantization) فوق ذلك.
01:09:25فسيصبح، تلاحظ أن معدل الإنتاجية متقارب ومتشابه إلى حد كبير.
01:09:33الوقت المستغرق حتى الرمز الأول يظل كما هو.
01:09:36زمن الانتقال للرموز يظل كما هو.
01:09:39ولكن استخدام ذاكرة KV ينخفض في الواقع.
01:09:42وذلك لأنك قمت بتقييس مساحة الذاكرة المفتاحية والقيمية الخاصة بك.
01:09:49ثم يوجد مفهوم فك التشفير التخميني (Speculative Decoding) الذي سيتحدث عنه تنماي.
01:09:54لذا، عندما تحاول قياس أداء تلك النماذج، ستلاحظ أيضاً أن هناك انخفاضاً طفيفاً في استخدام ذاكرة KV هناك.
01:10:06على الرغم من أن النتائج متطابقة تقريبا.
01:10:08إذن، نعم، أعني بشكل عام، هذه هي المقاييس عبر مختلف الحالات.
01:10:21ربما يجب علي تصغير العرض.
01:10:25حسناً.
01:10:26لا يعمل.
01:10:27تصغير.
01:10:28لا يستجيب.
01:10:29رائع.
01:10:30إذن، نعم، هذه هي اختبارات أداء VLLM.
01:10:35إنها الإعداد الافتراضي للإنتاج، بالمناسبة.
01:10:38سنقوم أيضاً بمشاركة شجرة القرارات هذه عندما نتحدث عن المحركات الأخرى.
01:10:48إذن، نعم، ينبغي لنا أن نتحدث عما يمكننا القيام به من تحسينات أخرى للاستدلال فوق ذلك.
01:10:58وما هي بعض الحلول الأخرى التي ظهرت.
01:11:02لذا أود مرة أخرى أن أدعو تنماي.
01:11:07سيتحدث عن بعض هذه التحسينات.
01:11:11أه، عذراً.
01:11:12أنا آسف جداً.
01:11:13لم أقم بتفعيل الشرائح.
01:11:26ماذا كانت؟
01:11:27حسناً.
01:11:28رائع.
01:11:29ممتاز.
01:11:30أيها؟
01:11:31فك التشفير التخميني.
01:11:32نعم.
01:11:33شكراً لك يا هارشال.
01:11:34نعم.
01:11:35إذن كل هذه هي تقنيات فك التشفير التخميني.
01:11:40كل هذه عبارة عن نكهات مختلفة لنفس النوع من المشروبات الغازية، إن صح التعبير.
01:11:46لذا فإن هذه التقنية تندرج تحت مسرعات فك التشفير.
01:11:51الأولى، نحن نتحدث فقط عن فك التشفير التخميني هذا، ولكن هناك متغيرات أخرى، مثل فك التشفير الذاتي، Eagle، و Medusa.
01:12:01أنا أحب فقط، على ما أعتقد، هذا الخوارزمية، خوارزمية Eagle.
01:12:05لذا فلنبدا بفك التشفير التخميني.
01:12:06حسناً.
01:12:07حسناً.
01:12:08إذن فلنبدأ بما هو فك التشفير التخميني.
01:12:09المشكلة الرئيسية هي أنه في بنية محولات المحولات (Transformer)، يتم توليد كل هذه الرموز بشكل تسلسلي، واحداً تلو الآخر.
01:12:26ماذا لو استخدمنا نموذجاً أصغر ودعنا النموذج الأصغر يولد ربما، لنقل، أربعة أو خمسة رموز.
01:12:37وهذا النموذج المعلم، أو يمكننا القول، وفقاً لخوارزمية كأس العالم الخاصة بنا، يمكننا أن نسميه الحكم.
01:12:43إذن سيقرر الحكم عدد الرموز التي يقبلها.
01:12:48وهذه الحلقة مستمرة في الدوران.
01:12:51وافتراضنا هو أن هناك مجالات معينة ستنجح فيها مثل هذه الأمور.
01:12:59مثل ربما في البرمجة، حيث لا يوجد أي إبداع تقريباً.
01:13:05كل تعليمة برمجية أو صيغة متشابهة تقريبا.
01:13:08لذا ربما يمكن أن يساعد ذلك.
01:13:10ولكن، بناءً على تجربتي الشخصية، لم أجد فكرة فك التشفير التخميني هذه مفيدة على الإطلاق.
01:13:18ولكن التقنيات الأخرى مثل فك التشفير التخميني الذاتي، حيث يحتوي نموذج المعلم أيضًا على رأس واحد، رأس مساعد، ويقوم بأشياء مشابهة لما يفعله هذا النموذج الأساسي أو النموذج الصغير.
01:13:35ولكن بعد ذلك جاء EGLE، الإصدار 1، 2، 3، لا أعرف عدد الإصدارات الموجودة، لكنه يقول ببساطة إنه بدلًا من إنشاء الرموز، دعنا نتدرب على نموذج صغير ونتخذ ميزاتنا من إحدى طبقات النموذج الرئيسي، بحيث بدلاً من توليد الرموز، سيقوم بتوليد هذه الميزة.
01:14:02لذا، فإن EGLE أفضل مقارنة بهذا النوع الآخر من التقنيات.
01:14:10وهناك تقنية أخرى تُسمى MEDUSA، والتي تقول ببساطة: قم بتوليد كل هذه الرموز بالتوازي.
01:14:17حسنًا، إذن هنا، إذن هنا في هذه الشريحة.
01:14:21نعم.
01:14:22الشريحة التالية.
01:14:24حسنًا.
01:14:25حسنًا.
01:14:26حسنًا، نعم.
01:14:27حسنًا.
01:14:28الآن ننتقل إلى، الآن سننتقل إلى موضوع التخزين المؤقت للبادئة (Prefix Caching).
01:14:34إذن، لست متأكدًا ما إذا كان الناس يستخدمون هذا التخزين المؤقت الثابت للبادئة أم لا.
01:14:39ولكن المشكلة الأساسية في التخزين المؤقت للبادئة هي أننا نكتب أحيانًا ونرتكب خطأً بسيطاً نوعاً ما.
01:14:47وهذا التخزين المؤقت الثابت القياسي للبادئة يأخذ أساساً موجهًا (prompt)، ويقوم ببعض عمليات التجزئة (hashing).
01:14:53وفي المرة القادمة التي يطرح فيها المستخدم سؤالاً مشابهاً، سيحاول مطابقة قيمة التجزئة.
01:14:58إذن، إذا كانت قيمة التجزئة متساوية، فعوضاً عن إعادة حساب كل تلك المفاتيح والقيم، سيأخذها مباشرة من وحدة التخزين.
01:15:09ولكنك تعلم أننا نرتكب أحيانًا خطأ أو ربما نغير كلمة أو حرفًا، شيئًا من هذا القبيل.
01:15:15وعندها يصبح لدينا معدل إخفاق أعلى بكثير في التخزين المؤقت.
01:15:21ولهذا السبب ظهرت هذه التقنية، شجرة راديكس (Reddix tree).
01:15:25إذن، تصبح شجرة راديكس شائعة جداً، وذلك بسبب الوكلاء (Agents) أيضاً.
01:15:30لذا أعتقد أن الجميع تقريبا يستخدمون الوكلاء، ومعظم عمليات الحساب تحدث أثناء وقت الاختبار، أي في مرحلة الاستدلال.
01:15:38حيث نواصل طرح نفس النوع من الأسئلة والموجهات.
01:15:42على سبيل المثال: أنت مهندس برمجيات خبير، مكررة 200 مرة.
01:15:48هذا النوع من الحلقات يستمر داخل هذه الأنظمة الشبيهة بالوكلاء.
01:15:55حيث يكون من الضروري الاحتفاظ بالأشياء المماثلة أو تخزينها في شجرة راديكس.
01:16:03إذن، شجرة راديكس هي ببساطة نسخة متقدمة من شجرة البادئة حيث نقوم بدمج العقدة إذا لم يكن لها أي فروع.
01:16:17ومثل هذا النوع من العمل حيث نواصل تكرار نفس الشيء.
01:16:24تساعد شجرة راديكس كثيراً في ذلك، ويستخدم إطار sglang هذا النوع من الخوارزميات للتخزين المؤقت للبادئة.
01:16:35حسنًا، نعم، وهناك شيء آخر.
01:16:38الأول هو Tensor RT LLM.
01:16:41هذا أمر محير للغاية.
01:16:42عندما بدأت لأول مرة، كنت في حيرة من أمري.
01:16:46ما هو Tensor RT LLM؟
01:16:49إذن، نعم، Tensor RT هو ببساطة مجموعة أدوات تطوير (SDK) قياسية.
01:16:55بينما Tensor RT LLM هو مجرد محرك استدلال.
01:16:59تماما مثل vLLM و sglang.
01:17:01ولكن المشكلة هي أنه تابع لشركة NVIDIA.
01:17:05لقد قاموا بتحسين كل طبقة وكل مشكلة على حدة.
01:17:10وكما ذكرت في خوارزمية كأس العالم الخاصة بنا، فقد قاموا بتفكيك كل شيء وتحسين كل شيء على مستوى الأجهزة أيضاً.
01:17:18إذن، نعم، حسنًا، التالي.
01:17:23نعم، إذن لهذه الورشة، قمنا أيضًا ببعض قياس الأداء لمعرفة الأفضل.
01:17:33لذا كان إعدادنا مشابهاً إلى حد ما.
01:17:36لقد أجرينا نوعين من الاختبارات.
01:17:39الأول بدون اختبار الوكلاء، حيث قمنا فقط...
01:17:44لذا، استخدمنا مجموعة بيانات ShareGPT، وطرحنا تلك الأسئلة باستخدام vLLM و sglang.
01:17:57حسنًا.
01:18:05نعم، حسنًا.
01:18:07ودعني أقوم بتكبير الشاشة.
01:18:12حسنًا، رائع.
01:18:13حسنًا، نعم، إذن لهذه الورشة، استخدمنا بطاقات H100، وكان اختبارنا الأول هو أننا طلبنا...
01:18:23أخذنا أسئلة من ShareGPT ووضعناها في vLLM و sglang، ووجدنا أنه لا يوجد في الواقع أي فرق إحصائي بين أيهما أفضل.
01:18:34إذن، كلاهما لهما أداء متشابه تقريبا...
01:18:37إذن، كلاهما يلبي نفس القدر تقريبًا من الطلبات في الثانية، ووقت الاستجابة للرمز الأول (TTFT) وزمن الوصول.
01:18:43ولكن الفرق الوحيد الذي لاحظناه كان أثناء التفريع الخاص بالوكلاء.
01:18:50لذا ما فعلناه هو أننا طرحنا سؤالاً مشابهاً: أنت أفضل مهندس برمجيات في العالم.
01:18:59لذا قم بحل مشكلة ازدحام المرور في المدينة، وما شابه ذلك.
01:19:04بعد ذلك، أدخلنا هذا في نموذج اللغات الكبير (LLM).
01:19:08ينتج النموذج بعض المخرجات.
01:19:10ثم أجرينا الجولة الثانية أيضاً.
01:19:13إذن، بمجرد أن ينتج هذا النموذج هذه المخرجات، ذكرنا تحديداً في الجولة الثانية...
01:19:22أن نقوم بمراجعة المقترح وإعطاء تقييمات من واحد إلى عشرة.
01:19:28إذن، هاتان هما الجولتان اللتان أجريناهما، وهذا التكرار يستمر في التكرار.
01:19:35ما وجدناه هو أنه لهذا النوع من سير العمل حيث كل شيء قياسي، تدخل جميع تلك الموجهات وهندسة السياق في الصورة.
01:19:47لذا، إذا قمنا بهذا التفريع الخاص بالوكلاء بشكل صحيح، فأعتقد أن SGLang يصبح أفضل بثلاثة إلى أربعة أضعاف.
01:19:54ولكن مرة أخرى، يعتمد هذا على الإعدادات المختلفة ربما.
01:19:58إذا قمت بذلك، فقد تحصل على نتائج مختلفة.
01:20:02حسنًا.
01:20:03نعم.
01:20:04لذا أعتقد...
01:20:06هل قمنا برفعه على GitHub؟
01:20:08نعم.
01:20:09حسنًا.
01:20:10نعم.
01:20:11لذا فإن ملف PDF موجود أيضًا في محرك الأقراص (Drive).
01:20:15إنه نفس الرابط الخاص بالشرائح.
01:20:18إذن، إليك ملخص سريع هنا.
01:20:22فيما يتعلق بإنتاجية أحمال عمل واجهة برمجة التطبيقات القياسية، ستجد أن vLLM و SGLang متطابقان.
01:20:31لذا، إذا لم يكن لديك...
01:20:33إذا كان لديك عبء عمل قياسي، فالجأ بالتأكيد إلى vLLM.
01:20:36إنه الخيار الافتراضي للإنتاج على أي حال.
01:20:38ولكن ما كان يطرحه تانماي أيضاً هو أنك عندما تحاول استخدام أحمال عمل الوكلاء، فهنا يبرز تفوق SGLang حقاً.
01:20:50وهو يوفر لك نوعاً ما كافة المزايا.
01:20:55إذن، نعم.
01:20:58اجعل vLLM هو الخيار الافتراضي.
01:21:00ولكن إذا كانت لديك أحمال عمل للوكلاء، فحاول الانتقال نحو SGLang.
01:21:05إذا لم تكن راضيًا عن أداء vLLM.
01:21:09حسنًا.
01:21:10دعني...
01:21:15مهلاً.
01:21:18حسنًا.
01:21:21ثم هناك أيضاً...
01:21:29مقارنة تم إجراؤها على نموذج 120 مليار.
01:21:33مثل نموذج GPT OSS بحجم 120 مليار.
01:21:36هذا معيار تم إعداده بواسطة PlayPy.
01:21:42لذا، يوجد رابط لمدونة هنا.
01:21:46أه، رائع.
01:21:48حسنًا.
01:21:49نعم.
01:21:50لذا فقد أجروا اختبار قياس مماثل وأدرجوا فيه محرك TensorRT LLM.
01:21:57بالتأكيد، يمكنك دائماً الاطلاع على هذه المقارنات المعيارية ومحاولة فهم ما يناسب حالة الاستخدام الخاصة بك.
01:22:05وكما ذكرنا بالنسبة لـ TensorRT، فإنهم يحاولون تحسين جانب الأجهزة أيضاً، لتحقيق أقصى أداء للأجهزة.
01:22:16ثم فيما يتعلق باختيار محركاتك، بمجرد أن تحسم أمرك بين vLLM و SGLang و TensorRT، تظهر بعض المحركات الجديدة.
01:22:29مثل محرك NVIDIA Dynamo بالتأكيد.
01:22:43إنه مخصص أيضاً لتوجيه الجلسات الخاصة بالوكلاء.
01:22:49أدوات Hugging Face موجودة دائماً.
01:22:51إنها مألوفة وسهلة.
01:22:53ثم هناك محرك MSTAR الذي اقترحته جامعة ستانفورد مؤخراً.
01:23:00ومحرك NVIDIA Dynamo للنماذج المتعددة.
01:23:05لذا يمكنك بالتأكيد استكشاف تلك الخيارات.
01:23:08وعندما تحاول أساساً، لتقديم ملخص سريع، فإننا نبدأ بخط أساس (Baseline).
01:23:15نحاول معرفة النموذج الذي يمكن أن يناسب حالات الاستخدام لدينا.
01:23:22لذا يمكنك اختيار نموذج مثل DeepSeek.
01:23:27يمكنك اختيار، لا تختار نموذجاً مثل Mistral 7B.
01:23:30أعني أنه ليس جيداً.
01:23:32ولكن، نعم.
01:23:35لذا أنت تختار نموذجك وتريد أن يكون لديك ذاكرة أصغر وتود محاولة ملاءمة هذا النموذج الأكبر في تلك الذاكرة الأصغر.
01:23:44حتى تتمكن من توفير تكاليف وحدات معالجة الرسومات (GPU).
01:23:47لذلك يمكنك إجراء جميع عمليات التقليل هذه (Quantization).
01:23:51ثم يمكنك تطبيق كل تحسينات الخدمة تلك باستخدام محرك الخدمة المناسب تحت الغطاء.
01:23:58وهذا يمكن أن يوفر لك حقاً الإنتاجية التي ترغب بها حقاً.
01:24:07والآن، شيء يمكنك القيام به بعد العودة إلى المنزل ربما، لأننا لا نستطيع استعراض كل المواد هنا بالفعل، وهو بالتأكيد القراءة عن بعض المعلومات المصدرية مثل آليات الانتباه المختلفة، وهذين المحركين.
01:24:27حاول فقط قراءة المقارنات المعيارية المختلفة المتاحة عبر الإنترنت أيضاً.
01:24:34ثم، هناك الكثير من الأدلة المتعمقة أو المراحل التالية منها مثل التعرف على بعض استراتيجيات إخلاء ذاكرة التخزين المؤقت للمفاتيح والقيم (KV Eviction Strategies).
01:24:45إذن، العالم يتجه نحو وجود مجال منفصل لهندسة ذاكرة التخزين المؤقت للمفاتيح والقيم (KV cache engineering).
01:24:50لذا فأنت تريد فهم ما يدور هناك.
01:24:52لذا، إخلاء ذاكرة التخزين المؤقت، ضغط الذاكرة المؤقتة، والذاكرات الهجينة.
01:24:57إذن، هناك الكثير من الحلول التي تحدث في هذا المجال.
01:25:01لذا حاول دائماً التمسك بتلك الأسس أو المبادئ الأساسية الأولى.
01:25:08وحاول معرفة أي حل يحل أي مشكلة أساساً، وما إذا كنت تحتاج حقاً إلى حل تلك المشكلة لحالة الاستخدام الخاصة بك.
01:25:17ثم، هناك استدلال نموذج اللغات الكبير الموزع (Distributed LLM inference) وهو نقطة تركيز مختلفة تماماً.
01:25:26ستحتاج على الأرجح إلى ورشة عمل مدتها ساعتان هناك أيضاً لاستعراض كافة التفاصيل الداخلية، والقيام بالتطبيق العملي.
01:25:40نعم، وهذا شيء نحاول اقتراحه لجلسة مهندسي الذكاء الاصطناعي في نيويورك وهو الغوص بشكل أعمق في الأقسام المتقدمة لاستدلال نماذج اللغات الكبيرة.
01:25:51لذا كانت ورشة العمل هذه مخصصة أكثر للمستوى المبتدئ والمتوسط.
01:25:55لذا، في هذا النموذج لدينا ملاحظات وأيضاً اهتمام.
01:26:02إذا كنتم ترون أننا بحاجة إلى تحسينات معينة في أقسام محددة، فلا تترددوا في تقديم تلك الملاحظات أيضاً.
01:26:09وإذا كنتم ترون هذه الورشة في نيويورك، أعني، لا تترددوا تماماً في تسجيل اهتمامكم.
01:26:22ها؟
01:26:24أه، كيف يكون ذلك ممكناً؟
01:26:27بوم.
01:26:32دعني أتحقق فقط.
01:26:37حسناً.
01:26:38ها؟
01:26:39نعم.
01:26:40الرابط يعمل، أليس كذلك؟
01:26:41نعم.
01:26:42ليس رمز الاستجابة السريعة؟
01:26:43حسناً.
01:26:44ربما نسيت ربط الاثنين معاً.
01:26:45حسناً.
01:26:46رائع.
01:26:46نعم.
01:26:47لذا، إذا كان بإمكانكم تقديم ذلك.
01:26:49حسناً.
01:26:50رائع.
01:26:51نعم.
01:26:52لذا، إذا كان بإمكانكم تقديم ذلك.
01:26:53حسناً.
01:26:54نعم.
01:26:55حسناً.
01:26:56رائع.
01:26:57نعم.
01:26:58لذا، إذا كان بإمكانكم تقديم ذلك.
01:26:59دعني فقط.
01:27:00حسناً.
01:27:00حسناً.
01:27:01رائع.
01:27:02نعم.
01:27:02لذا، إذا كان بإمكانكم تقديم ذلك.
01:27:03دعني فقط.
01:27:04حسناً.
01:27:05سيكون ذلك جیداً.
01:27:06أم، ونعم، أعتقد أننا نود إنهاء هذه الورشة إذن.
01:27:13وأنا متأكد من أن الكثير منكم سيكون لديه الكثير من الأسئلة.
01:27:14لذا، يمكننا تناول كل ذلك بشكل منفصل.
01:27:15يمكننا أن نلتقي، ويمكننا التحدث عن تلك الأسئلة.
01:27:16نعم.
01:27:17بالتأكيد.
01:27:18بالتأكيد.
01:27:19شكراً لكم جميعاً.
01:27:20شكراً لانضمامكم.
01:27:21أعتقد أنه كان حقاً.
01:27:22شكراً لكم جميعاً.
01:27:23شكراً لكم جميعاً.
01:27:24شكراً لانضمامكم.
01:27:25شكراً لكم جميعاً.
01:27:26شكراً لانضمامكم.
01:27:27أعتقد أنه كان حقاً.
01:27:28أه، حسناً.
01:27:29أه، حسناً.
01:27:30سيكون ذلك جيداً.
01:27:31ونعم، أعتقد أننا نود إنهاء هذه الورشة إذن.
01:27:33ونعم، أعتقد أننا نود إنهاء هذه الورشة إذن.
01:27:36وأنا متأكد من أن الكثير منكم سيكون لديه الكثير من الأسئلة.
01:27:39لذا، يمكننا التعامل مع كل ذلك بشكل منفصل.
01:27:41يمكننا أن نلتقي، ويمكننا التحدث عن تلك الأسئلة.
01:27:42نعم، بالتأكيد.
01:27:43شكراً لكم جميعاً.
01:27:44أعتقد أنه كان مفيداً حقاً وأنكم جميعا جئتم إلى هنا.
01:27:49شكراً جزيلاً.
01:27:50نعم، شكراً.

핵심 요약

تتطلب إدارة استدلال نماذج اللغة الكبيرة على نطاق واسع موازنة دقيقة بين الذاكرة وزمن الانتقال والإنتاجية من خلال تحسينات النماذج وتقنيات الخادم مثل ذاكرة التخزين المؤقت للمفاتيح والقيم.

하이라이트

  • يُقدَّر سوق استدلال نماذج اللغة الكبيرة بحوالي 23 مليار دولار اليوم.

  • تتطلب محاكاة استعلامات بحث جوجل باستخدام نماذج اللغة الكبيرة استنزافاً للأرباح يُقدر بنحو 36 مليار دولار.

  • تبلغ تكلفة تدريب نموذج GPT-3 حوالي 4.6 مليون دولار كعملية لمرة واحدة بينما تُعد تكاليف الاستدلال تشغيلية متكررة.

  • يبلغ حجم ذاكرة المفتاح والقيمة لكل رمز في نموذج Mistral 7B حوالي 131 كيلوبايت.

  • يوفر خيار الانتباه الكامن متعدد الرؤوس ضغطاً بمقدار 14 ضعفاً مقارنة بالانتباه متعدد الرؤوس.

  • يؤدي تطبيق إعدادات vLLM الافتراضية إلى زيادة معدل الإنتاجية بنحو 15 ضعفاً مقارنة بالطرق التقليدية.

타임라인

مقدمة الورشة وبيان مشكلة تكلفة الاستدلال

  • يُقدر سوق استدلال نماذج اللغة الكبيرة بـ 23 مليار دولار.
  • تتسبب استعلامات بحث جوجل القائمة على نماذج اللغة الكبيرة في استنزاف للأرباح بـ 36 مليار دولار.
  • ترتفع تكاليف الاستدلال بشكل مطرد مع زيادة عدد المستخدمين والرموز.

تستعرض الورشة أهداف تدريب المهندسين على أساسيات استدلال نماذج اللغة الكبيرة لمواجهة التكاليف التشغيلية المتكررة للذكاء الاصطناعي مقارنة بتكاليف التدريب لمرة واحدة. يتم تسليط الضوء على ضغط العتاد المحدود وارتفاع تكلفة الحوسبة مع تزايد الاعتماد على الاستدلال.

تحديات الذاكرة وزمن الرمز الأول والإنتاجية

  • تزداد ذاكرة النظام طردياً مع زيادة عدد الرموز وطول السياق.
  • يرتفع الوقت المستغرق للوصول إلى الرمز الأول مع زيادة حجم السياق.
  • يؤدي التنفيذ التسلسلي التقليدي إلى انخفاض معدل الإنتاجية ودعم عدد أقل من المستخدمين.

تظهر الاختبارات العملية باستخدام نموذج Mistral 7B أن الذاكرة تنمو بشكل كبير مع زيادة طول السياق مما يسبب مشكلات نفاد الذاكرة. كما يتم قياس مؤشر الوقت المستغرق للوصول إلى الرمز الأول ومدى تأثره بحجم الرموز المدخلة.

تحليل طبقة الانتباه واستهلاك ذاكرة المفتاح والقيمة

  • تستهلك طبقات المحولات نحو 95% من قوة الحوسبة.
  • يبلغ حجم ذاكرة المفتاح والقيمة لكل رمز في نموذج Mistral 7B حوالي 131 كيلوبايت.
  • توجد مفاضلة مستمرة بين جودة النموذج وزمن الانتقال والإنتاجية.

تشرح الجلسة الآليات الداخلية لطبقة الانتباه ومتجهات المفتاح والقيمة التي تتضاعف مع كل رمز جديد. يتم عرض كيفية حساب سعة وحدة معالجة الرسومات وتحديد عدد المستخدمين المتزامن بناءً على طول السياق.

تحسينات النموذج وتقنيات خفض الحوسبة

  • يؤدي التكميم من FP16 إلى INT8 و INT4 إلى توفير مساحة كبيرة في الذاكرة.
  • تساهم آليات الانتباه البديلة مثل GQA و MLA في تقليل حجم متجهات المفتاح والقيمة.
  • يوفر الانتباه الكامن متعدد الرؤوس ضغطاً بمقدار 14 ضعفاً مقارنة بالانتباه التقليدي.

يقدم الشرح تقنيات تحسين النماذج عبر تقليل دقة الأعداد وفهم تأثير تكميم الأوزان بعد التدريب. يتم استعراض تطور آليات الانتباه من الانتباه متعدد الرؤوس إلى الانتباه الاستعلامي المجموع والانتباه الكامن لتوفير الذاكرة والحوسبة.

تحسينات الخادم وذاكرة التخزين المؤقت للمفاتيح والقيم

  • يحل الانتباه المُجزأ مشكلة تجزئة الذاكرة وتخصيص مساحات مستمرة.
  • تزيد إعدادات vLLM الافتراضية من معدل الإنتاجية بنحو 15 ضعفاً.
  • تتفوق محركات مثل SGLang في أحمال عمل الوكلاء بفضل استخدام شجرة راديكس.

تتناول الجلسة دور محركات الاستدلال مثل vLLM و SGLang في تحسين أداء الإنتاج عبر الدفع المستمر والتخزين المؤقت للبادئات. يتم تقديم مقارنة بين أداء المحركات المختلفة في معالجة طلبات واجهة برمجة التطبيقات وسير عمل الوكلاء.

커뮤니티 글

아직 글이 없습니다. 이 영상에 대한 첫 번째 글을 작성해 보세요!

이 영상에 대해 글쓰기