스크립트
00:00:00المراجع: دينيس آر كيو
00:00:12حسنًا.
00:00:14أعتقد أن بإمكانكم سماعي.
00:00:15يمكنني سماع نفسي بالتأكيد.
00:00:19من يقترب أكثر سيحصل على قميص.
00:00:21أنا جاد.
00:00:22هناك حقيبة مليئة بالقمصان هنا.
00:00:25وأيضاً لمن يطرح الأسئلة.
00:00:26ربما ستكون هناك بعض الأسئلة في النهاية.
00:00:28إذا طرحت سؤالاً، ستحصل على القميص أيضاً.
00:00:31وإذا تمكنت من تخمين ما يظهر في خلفية هذه الشريحة،
00:00:35ستحصل على القميص أيضاً.
00:00:39أي تخمنات؟
00:00:42ما الذي يمثله هذا الشكل؟
00:00:44هذه الصورة في الخلفية.
00:00:49ألا أحد؟
00:00:50هل رأى أحد نموذج محول (Transformer) من قبل؟
00:00:55نعم، التشفير المكاني (Positional encoding).
00:00:57جيد جداً.
00:00:58ستحصل على القميص يا سيدي.
00:00:59حسناً.
00:01:00إذن، سنناقش اليوم النماذج الصغيرة مفتوحة المصدر وكيف أصبحت جيدة جداً الآن، وكيف تخلق تحديات فريدة عندما تريد تشغيل عدد منها في سحابتك الخاصة.
00:01:15كل ما سنناقشه هو نوع من المصادر المفتوحة.
00:01:19يمكنك القيام بذلك بنفسك.
00:01:20هذا هو النوع من الأشياء التي يمكنك، كما تعلم، تشغيل أمر وأخذ زمام الأمور.
00:01:26لذا لا توجد أي قطع مغلقة أو احتكارية هنا.
00:01:31لنبدأ في ذلك.
00:01:33حسناً.
00:01:34حسناً.
00:01:35هذا يعمل.
00:01:36حسناً.
00:01:37إذن النماذج الصغيرة.
00:01:38ماذا نعني بالنماذج الصغيرة؟
00:01:40كما تعلمون، اعتماداً على من تسأل، فإن الطريقة التي أفكر بها هي أساساً النماذج التي يمكنك تشغيلها على أجهزة إنفيديا القديمة بجيلين أو ثلاثة.
00:01:49النموذج بأكمله يتناسب مع وحدة معالجة رسومات واحدة وبالتالي فهي سهلة التشغيل.
00:01:56تلك وحدات معالجة الرسومات متوفرة وهي ميسورة التكلفة أيضاً.
00:02:01ثم يعتقد معظم الناس، حسناً، النماذج الصغيرة، سيكون هناك نوع من المقايضة من حيث، كما تعلمون، جودة النتائج.
00:02:10وآمل أن أتمكن من القيام بعمل جيد في هذا الحديث لإقناعكم بأنه في الواقع للمهام المحددة، يمكنك أن تكون في مستوى أداء النماذج الرائدة أو ما يتجاوزها وتحصل على جميع الفوائد الواضحة الأخرى، أليس كذلك؟
00:02:22أوامر من الحجم من نوع توفير التكاليف ومن المحتمل تحسينات كبيرة جداً في زمن الاستجابة أو الإنتاجية، بالطبع.
00:02:35إذن هذه هي إحدى المخططات التي نحب عرضها.
00:02:38هذا هو مؤشر تحليل الذكاء الاصطناعي بمرور الوقت.
00:02:42وما لا يظهرونه لك عادة هو أن هناك تفصيلاً لنماذج مفتوحة المصدر يجب أن تفكر فيها، أليس كذلك؟
00:02:49هناك GLM 5.2 وما إلى ذلك، تلك الأنواع من النماذج الرائدة مفتوحة المصدر مع لنقل 750 مليار معامل.
00:02:57ولكن بعد ذلك توجد النماذج الصغيرة مفتوحة المصدر التي تتبع الكبيرة وتتبع الطليعة.
00:03:04يمكنك أن ترى أن الطليعة تحصل على عوائد تناقصية هذه الأيام والنماذج الصغيرة تلحق بالرككب، أليس كذلك؟
00:03:10لذا ترى هذا النوع من التقارب، التشبع في القمة ونوع من نمو النماذج الصغيرة.
00:03:16و، كما تعلمون، لنقل QN 36 27B في مكان ما حول أداء GPT 5.1.
00:03:23لذا إذا كان لديك تدفق عمل، إذا كان لديك خط أنابيب، كما تعلمون، يمكن تشغيله باستخدام GPT 5.1،
00:03:29يمكنك الآن نقله إلى نموذج صغير، و، كما تعلمون، الحصول على جميع الفوائد التي ناقشناها.
00:03:35إذن النماذج الصغيرة، لم تعد منتهية.
00:03:38الآن، يتعلق الأمر أيضاً بكيفية استخدام النماذج الصغيرة، أليس كذلك؟
00:03:44لذا لا يمكنك فقط التعامل مع نموذج QN 36 ذي الـ 27 مليار معامل كنموذج معمم تماماً، يمكنني توجيهك للقيام بأي شيء.
00:03:53لا، تحتاج إلى تبني النهج الذي تحدد من خلاله شريحة من المهام من عبء عمل النموذج المعمم.
00:04:00ثم لكل مهمة، تحدد أي نموذج في المصادر المفتوحة يناسب المهمة بشكلที่ดี.
00:04:05أنت تشغل بعض التقييمات، وربما بعض التكيف الذي سنناقشه.
00:04:08وبعد ذلك، كما تعلمون، هكذا تصل إلى الجودة المناسبة لدفع هذا إلى الإنتاج الفعلي.
00:04:15إذن إليكم بعض الأمثلة لوكيل مراجعة العقود الذي يستخدم تسعة نماذج مختلفة.
00:04:20هذا هو شكل العمل الذي ستراه في أعباء العمل والوكلاء الخاصة بك وأنت تنتقل إلى استخدام النماذج الصغيرة لإعدادك.
00:04:28ستبدأ في ملاحظة أنه، بدلاً من إرهاق واجهة برمجة تطبيقات واحدة بمجموعة من الطلبات المختلفة أو نموذج واحد،
00:04:36ستفضل استخدام أسطول من النماذج.
00:04:38وحينها ستكون مشكلتك: كيف يمكنني خدمة كل هذه الأشياء المختلفة بطريقة لا تجعل فريق البنية التحتية لدينا يصاب بالجنون؟
00:04:45وهذا مجرد وكيل واحد من بين الوكلاء الذين قد تشغلهم.
00:04:48وقد يكون هناك، كما تعلمون، 10 من هذه في شركتك.
00:04:51إذن كيف يمكننا نوعاً ما، هذا هو توسيع نطاق البنية التحتية، دعنا نقول.
00:04:57الآن، كل تلك المهام المختلفة التي ذكرتها، هناك نموذج مفتوح المصدر جالس هناك ينتظر الاستخدام.
00:05:05من التعرف الضوئي على الحروف إلى الإجابة على الأسئلة فوق المستندات إلى تصنيف الصور، وتوليد SQL، ومراجعة الكود.
00:05:14هناك نماذج مفتوحة المصدر مضبوطة بدقة ومدرّبة لتلك المهام.
00:05:19كما تعلم، إذا استخدمت نموذجاً مفتوح المصدر مدرباً للقيام بالتعرف الضوئي على الإيصالات باللغة الفيتنامية، فقد رأى هذا المشروع أكبر عدد من الإيصالات باللغة الفيتنامية، أليس كذلك؟
00:05:28هناك شخص ما، استغرق وقتاً لجمع أكبر قدر ممكن من البيانات.
00:05:32وفي تلك المهمة، سيتفوق هذا النموذج على أي شيء آخر تقريبا.
00:05:35وهناك، كما تعلمون، مئات الآلاف من النماذج على Hugging Face تشبه ذلك، أليس كذلك؟
00:05:41لذا، الأمر كله مستقر هناك وهو مجاني بشكل أساسي، ومعظمها بتراخيص متسامحة جداً.
00:05:46إذن النماذج موجودة، كما تعلمون، هذه ليست عنق الزجاجة.
00:05:50وكنا نتحدث عن الذكاء الاصطناعي مفتوح المصدر منذ عام 2024.
00:05:56وحتى الآن لم يحدث ذلك حقاً.
00:05:59وبالقدر الذي يحدث فيه ذلك في الشركات، فهو يكافئ أساساً الذكاء الاصطناعي مفتوح المصدر مع AWS Bedrock.
00:06:05باستثناء أنه عندما تنظر إلى كتالوج النماذج في Bedrock، فإنه مقيد للغاية في أنواع النماذج المتوفرة.
00:06:14هذه النماذج قديمة غالباً، كما تعلمون، متأخرة بعامين أو ثلاثة عن أحدث التقنيات.
00:06:19وعندما تقوم بأي نوع من الضبط الدقيق في Bedrock، فأنت لا تمتلك حقاً النتائج المضبوطة أو المدربة.
00:06:25لذا لا يمكنك استخدامها كميزة حقيقية في عملك.
00:06:29فهي تظل تقدم الخدمات من البنية التحتية لـ Bedrock.
00:06:32إذن هذا يتعلق بالنماذج الاحتكارية الآن، إذا قمت بخدمة النماذج الصغيرة على بنية تحتية مفتوحة المصدر، VLLM، SGLang، حلول مختلفة،
00:06:41فقط اعلم أن هذه الأشياء غير مضبوطة لأي نموذج محدد أو أي مجموعة نموذج أجهزة محددة.
00:06:48سيتعين عليك القيام بالضبط، أليس كذلك؟ هذا هو افعل ذلك بنفسك.
00:06:51تأتي كل هذه الأدوات مع أدلة حول كيفية إجراء الضبط الفعلي، ومسح المعلمات، والتخصيص لحركة المرور الخاصة بك، وما إلى ذلك.
00:07:00هذا نوع من مشاريع البحث المفتوحة في كل مرة تحاول فيها اعتماد إحدى هذه الأدوات.
00:07:05لذا فهذا ليس شيئاً تأخذه وهو مشروع هندسي،
00:07:10وبعد أسبوع لديك بنية تحتية لتقديم الخدمات عالية الأداء.
00:07:14الأمر لا يعمل بهذه الطريقة.
00:07:15وهذه هي المشكلة النموذجية مع أدوات المصدر المفتوح، أليس كذلك؟
00:07:19إنه نوع من، كما تعلم، الكثير من الاعتماد على النفس.
00:07:21وعلاوة على عدم ضبط هذه النماذج مسبقاً، فإن أعباء عمل النماذج الصغيرة وحركة المرور التي تستخدم مجموعة من النماذج المختلفة
00:07:32تقلب المعادلة لعناقيد الاستدلال، أليس كذلك؟
00:07:37عادةً، عندما تحاول خدمة نموذج كبير واحد، فإن مشاكل كبرى تتمثل في: كيف أشارك هذا النموذج عبر وحدات معالجة رسومات متعددة؟
00:07:44كيف أجعل موجهاً (Router) يجلس في الأعلى يفهم حالة كل هؤلاء العمال، مثل حالة ذاكرة التخزين المؤقت KVCache وما إلى ذلك،
00:07:51ثم يتخذ قرار توجيه من أعلى إلى أسفل يفيد: هذا الطلب يذهب إلى هذا العامل أو هذه المجموعة من العمال وما إلى ذلك، أليس كذلك؟
00:07:59إنه إعداد من أعلى إلى أسفل جداً.
00:08:01ولكن إذا كانت لديك طلبات صغيرة وسريعة، ولديك الكثير منها، فإن هذا النوع من التوجيه من أعلى إلى أسفل يصبح عنق الزجاجة، أليس كذلك؟
00:08:09لأن الموجه لديه نسخة قديمة بعض الشيء من حالة العامل، ومن الصعب حقاً تشبع العمال
00:08:16إذا كان لديك هذا النوع من القرار الاستباقي في الأعلى والذي يجب أن يكون صحيحاً تماماً من حيث موازنة طوابير الانتظار المحلية على كل من هؤلاء العمال.
00:08:26لأن هناك العديد من الطلبات الصغيرة، أليس كذلك؟
00:08:29و، كما تعلمون، لقد جربنا موجهات VLLM و SGLang للنماذج الصغيرة وهذا النوع من حركة المرور،
00:08:37ومن الصعب جداً زيادة استخدام وحدة معالجة الرسومات الخاصة بك إلى ما بعد 20%، 30% تحت الحمل المستمر.
00:08:44والمشكلة هي أن هذه الدفعات لا يتم تغيير حجمها بشكل صحيح أساساً، لأن لديك عنق الزجاجة في التوجيه.
00:08:51والمشكلة الثالثة هي أنه مع النماذج الصغيرة، تستفيد كثيراً من محولات LoRA وتكيف النماذج بشكل عام.
00:08:57ولذا فإن حركة المرور التي يتعين عليك خدمتها تحتوي على أشخاص يأتون إليك ويقولون،
00:09:03“مهلاً، عندي 10 محولات LoRA. كيف يمكنني استخدام هذا مع حزمة الخدمة الخاصة بنا؟”
00:09:08أو، “لدي هذا الضبط المخصص الذي صنعته الليلة الماضية. أريد خدمة هذا في الإنتاج.”
00:09:14وهذه المحادثة بين مهندس الذكاء الاصطناعي وشخص البنية التحتية في إيصال تلك المحولات LoRA إلى هناك،
00:09:21والنماذج المخصصة إلى هناك، هذا هو الشيء الذي يستغرق وقتاً.
00:09:24وأساساً، هذا هو القاتل الرئيسي للسرعة التنظيمية وهو كثرة الكلام، أليس كذلك؟
00:09:30من الناحية المثالية، كنت ستود من مهندسي البنية التحتية القيام بعملهم، وكنت ستود من مهندسي الذكاء الاصطناعي القيام بعملهم.
00:09:37وليس عليهم التحدث للعمل في وضع العمل اليومي.
00:09:41إذن، هم لا يعطلون بعضهم البعض، أساساً.
00:09:45وهذا النوع من رغبة تكيف النموذج حول النماذج الصغيرة يكسر ذلك ويخلق الكثير من الأخذ والرد.
00:09:51وهذه مشكلة، أليس كذلك؟
00:09:54إذن، هذه بعض التحديات المتعلقة بأن لدينا مجموعة من النماذج الصغيرة.
00:09:58كيف نصنع مجموعة حواسيب؟ وكيف نقدم هذه الخدمات بكفاءة؟
00:10:02لذا كنا نلعب مع هذه المشكلة لفترة من الوقت.
00:10:05أنا دانيال، في الواقع، من شركة Superlinked. لقد تخطيت المقدمة نوعاً ما.
00:10:09لذا نحن، كما تعلمون، شركة مدعومة من رأس المال المخاطر من سان فرانسيسكو.
00:10:13وكنا نبني أنظمة بحث ومعالجة مستندات مدعومة بالذكاء الاصطناعي ووكلاء على مدى السنوات القليلة الماضية.
00:10:20وكانت نقطة الألم الرئيسية لدينا دائماً هي الاستدلال، وتحديداً هذه المشكلات التي وصفتهَا.
00:10:26ولذلك قمنا بالتكرار مراراً وتكراراً واستكشاف طوبولوجيات مختلفة للمجموعات لتشغيل أساطيل واسعة وكبيرة من النماذج الصغيرة في بيئات مختلفة.
00:10:37لأنه في بعض الأحيان تحتاج إلى النشر جنباً إلى جنب مع بعض المنصات في بيئة ما حيث لا يدري أحد ما هو متاح هناك.
00:10:44كما تعلمون، النماذج الصغيرة تجعل الأمور أسهل لأنه في أي بيئة يمكنك الحصول على بعض وحدات L4 أو حصةgpu صغيرة نوعاً ما، وهو أمر أسهل بكثير.
00:10:52إذن هذا نوعاً ما -- سأصف قليلاً عن طوبولوجيا المجموعة التي تقاربنا نحوها.
00:10:58وبالمناسبة، هذا الشيء بأكمله يخضع لرخصة Apache 2.0 ومفتوح المصدر بالكامل.
00:11:03يمكنكم يا شباب أخذه وتغليفه لتصبحوا الآن شركة ناشئة في مجال الاستدلال.
00:11:08هذا مفتوح المصدر من مستوى التحكم وصولاً إلى الشيء الذي يعمل على وحدة معالجة الرسومات (GPU).
00:11:14لذا لم ندخر أي جهد.
00:11:18والطوبولوجيا هي أساساً وجود بوابة (Gateway).
00:11:21وبدلاً من وجود موجه (Router) يقرر مسبقاً أين يذهب ماذا، توجد بوابة تحلل بعض الطلبات وتُرفق بعض بيانات الوصف (Metadata) بالطلب.
00:11:30تُدرج هذا الطلب في طابور مشترك وفي بعض القنوات الجانبية.
00:11:36سأتعمق قليلاً في ذلك.
00:11:37ومن ثم تسحب العمال (Workers) من هذا الطابور المركزي بدلاً من دفع البيانات نزولاً إلى العمال.
00:11:44وبهذه الطريقة يمكنهم إشباع أنفسهم بشكل أفضل.
00:11:47ومن ثم إعداد العمال -- أظن أن لدي شريحة لذلك -- سيصف كيف نستوعب أساساً تعقيد بنيات النماذج المختلفة
00:11:57إلى مجموعة متماسكة من العمال الذين، كما تعلمون، ليس لديهم متطلبات بايثون متنافسة وما إلى ذلك.
00:12:03إذن هذه هي الطوبولوجيا العامة نوعاً ما.
00:12:06وهذه هي دورة حياة الطلب نوعاً ما.
00:12:11لذا ربما سأشير فقط إلى أمور قليلة من هنا.
00:12:15كما تعلمون، أحد الأمور التي لا تعجبنا في معيار واجهة برمجة تطبيقات OpenAI هو تنسيق JSON المُشفر بتنسيق base64.
00:12:25إنه ليس جيداً للنماذج الصغيرة، وليس جيداً للإنتاجية العالية.
00:12:28لذا نحن نستخدم MessagePack طوال الوقت، كتنسيق ثنائي.
00:12:31بهذه الطريقة يمكننا أيضاً دفع جميع البيانات متعددة الوسائط عبر بوابة واجهة برمجة التطبيقات الفعلية.
00:12:37لذا لا يوجد شيء مثل، مهلاً، بيانات ثنائية هنا ثم طلب هناك.
00:12:42ومن ثم تحتاج المجموعة إلى الوصول إلى تخزينك السحابي للبدء في تحميل بعض البيانات الثنائية، صور أو فيديوهات.
00:12:48نحن نقوم بتشفير كل ذلك ودفعه عبر البوابة.
00:12:53ومن ثم تفصل البوابة بعض هذه القطع الأثقل لكي لا تسد الطابور الداخلي وتؤجلها على التخزين السحابي أثناء الطيران بينما الطلب في الطابور.
00:13:02لذا فهي تقسم بعض هذه الطلبات التي تزيد، لنقل، عن ميغابايت واحد ثم تستخدم التخزين السحابي في الخلفية.
00:13:09ولكن كمستخدم، أنت تدفع بجميع بتاتك وبايتاتك إلى طبقة واجهة برمجة التطبيقات وهي واجهة نظيفة بسبب ذلك.
00:13:19إذن المكدس بأكمله عبارة عن REST، لذا بوابة REST، والعامل REST، ثم عبر مأخذ توصيل (Socket)، محلياً، يتصل برمجياً ببيئات تشغيل مختلفة.
00:13:30ولدينا أساساً PyTorch وCandle وSGLang كبيئات تشغيل.
00:13:35ومن ثم عندما نقوم بالتحسين، سأتعمق في ذلك حول كيف نضمن أن أياً كانت بيئة التشغيل التي نستخدمها
00:13:43وأياً كانت الشفرة التي تعمل في بيئة التشغيل تلك فهي الأكثر كفاءة.
00:13:47لدينا حلقة بحث ذاتي (Auto-research loop) من أجل ذلك، أساساً.
00:13:50ولكن نعم، إذن دورة حياة الطلب تبدو هكذا نوعاً ما.
00:13:54وكأحد الأمور البسيطة هو أنك تريد حقاً التأكد من أن البوابة التي تُعد أول شيء يتعرض للطلب لا تقوم بالكثير من العمل.
00:14:05لأنها ستصبح بعد ذلك عنق زجاجة، أليس كذلك؟
00:14:07لذا لا تريد حتى تحليل الطلب بأكمله.
00:14:09تريد أن تكون قادراً على النظر إلى الحزم ومعرفة الشكل العام لما سيأتي، والقيام بالتعليق التوضيحي،
00:14:16ومن ثم لديك العمال، بغض النظر عن عددهم، مئات وحدات معالجة الرسومات التي تنظر إلى حالة الطابور ثم تسحب من هناك.
00:14:25والطابور يستخدم NATS Jetstream، وهذا الشيء يمكنه القيام، كما تعلمون، بمليون طلب في الثانية.
00:14:32لذا، من الصعب جداً أن يصبح ذلك عنق زجاجة.
00:14:35إذن، نعم، مثالياً أنت لا تريد إجراء التسلسل وإلغاء التسلسل أثناء مرورك عبر كل هذه المكونات المختلفة.
00:14:42هذا هو الأمر البديهي أساساً.
00:14:45هذه رسوم متحركة صغيرة توضح الفكرة الكامنة وراء الطابور المركزي، أليس كذلك؟
00:14:51إذن بدلاً من أن يحاول الموجه من أعلى إلى أسفل، كما تعلمون، ملء الطوابير المحلية بالشكل الصحيح تماماً، وهو أمر مستحيل أساساً،
00:15:01الفكرة بأكملها هي: هل يمكننا بطريقة ما مركزة الطوابير وهل يمكن للعمال بدلاً من ذلك التقاط مهمة تكوين دفعاتهم الخاصة
00:15:09دفعات مع تنبؤهم الخاص بتكلفة الدفعة ومن ثم، كما تعلمون، تصبح أكثر كفاءة بكثير؟
00:15:15الآن، كمعلومة وملاحظة جانبية، بمجرد أن تبدأ في العمل على هذه الأشياء، تدرك أنه من الصعب حقاً التنبؤ بعدد الأشياء التي يجب التقاطها من الطابور المشترك لكي تكون الدفعة حقاً، مثل، بالحجم الأمثل حقاً.
00:15:30ولذلك ستود وجود آلية ما تسمح لك بإعادة بعض الأشياء إلى الطابور.
00:15:35إذا اكتشفت، أوه، لقد سحبت أكثر بقليل.
00:15:37وهذا مركز شبكة، أليس كذلك؟
00:15:39إذن هذه مشكلة.
00:15:40ولدينا تحسين خاص لذلك للأجهزة التي تحتوي على وحدات معالجة رسومات متعددة محلياً، أليس كذلك؟
00:15:46لذا يوجد عنصر طابور إضافي محلي للجهاز يستفيد من حقيقة أن العمليات المحلية التي تعمل على وحدات معالجة الرسومات المتعددة على جهاز واحد يمكنها التفاوض مع الطابور ذهاباً وإياباً قليلاً،
00:15:59والذي عبر الشبكة، كما تعلمون، توجد أجزاء من الألف من الثانية إضافية سيضيفها ذلك.
00:16:03ولذا نحن لا نقوم بذلك عبر الشبكة، إلا عندما نقوم بوضع العمال معاً على أجهزة ذات وحدات معالجة رسومات متعددة.
00:16:11وكما تعلمون، نحن لا نتحدث عن اختلافات بنسبة 5% هنا، أليس كذلك؟
00:16:16إذن، أنت تقوم بمركزة الطابور والآن تحصل على ضعف إنتاجية المجموعة.
00:16:19لذا فهذا أمر مهم.
00:16:22لقد ذكرت ثلاث بيئات تشغيل مختلفة.
00:16:25لذا، أساساً، إما أننا نكتب، لنقل للنماذج التي تكون للمشفر فقط، نكتب كود PyTorch.
00:16:33ونقوم بتحسينه ولدينا حلقة بحث ذاتي تقوم بتحسينه.
00:16:38الشيء نفسه بالنسبة لـ Candle.
00:16:39لقد بدأنا اللعب بـ Candle منذ وقت ليس ببعيد.
00:16:42ما زلنا لا نستطيع جعلها تؤدي بأي شكل يقارب أداء PyTorch.
00:16:45لذا فهو مشروع بحثي أكثر بقليل.
00:16:47الأمر يتعلق فقط بالاعتمادية، مثل، صورة Docker الخاصة بالعامل مع PyTorch تبلغ حوالي 12 غيغابايت.
00:16:54وصورة العامل الأساسية الثنائية، الثنائي المربوط بشكل ثابت مع Candle ربما تكون حوالي 10% من ذلك، أليس كذلك؟
00:17:01وإذا كنت تهتم بالاستيقاظ من حالة البرد وتحميل هذه الصور على مجموعة من الأجهزة المختلفة،
00:17:08فإن الانتقال من 12 غيغابايت إلى غيغابايت واحد أو ما شابه يترك فرقاً هائلاً.
00:17:13إذن هذا هو الدافع وراء استخدام Candle.
00:17:15إنه فقط أن الحصول على نفس أداء PyTorch أمر صعبة حقاً.
00:17:20ومن ثم لدينا SG-Lang كخيار أساسي نلجأ إليه.
00:17:25مثل أننا يجب أن نؤدي على الأقل بنفس جودة SG-Lang مع الضبط الأمثل لجميع تلك المعلمات التي ذكرتها والتي يجب عليك ضبطها.
00:17:34إليك بعض الأرقام.
00:17:37لذا على سبيل المثال، عندما نغلف SG-Lang بالمأخذ ومع جانبنا البرمجي بلغة Rust،
00:17:43في الواقع يمكننا التحسين على أداء SG-Lang الأساسي لمجرد أننا نقوم بشيء ما في جانب التجميع لا يفعله SG-Lang بطبيعته.
00:17:54وربما يمكنك جعله يفعل ذلك.
00:17:57إذا قمت بـ، إذا طورت إضافات مخصصة في SG-Lang وما إلى ذلك،
00:18:00مثل ربما يمكنك مطابقة أدائنا لأن، كما تعلمون،
00:18:04يمكنك فقط دفع نفس المنطق إلى خادم SG-Lang الأساسي.
00:18:07ولكنك الآن تطور كوداً مخصصاً لا يعمل إلا مع SG-Lang.
00:18:11والدرس المستفاد هنا من النماذج الصغيرة هو أن بيئات التشغيل متنوعة للغاية، أليس كذلك؟
00:18:16أنت لا تريد بالضرورة أن تظل عالقاً في أي بيئة تشغيل معين لأن هناك، كما تعلمون،
00:18:22لدينا، أعتقد في حدود 50 محولاً مختلفاً الآن نقوم بضبط معاملاتها للنماذج المختلفة.
00:18:28ولذا تحتاج بطريقة ما إلى التعامل مع هذا النوع من التعقيد الكامن.
00:18:32وربما لا يكون ذلك عن طريق بناء مجموعة من الإضافات لبيئة تشغيل واحدة محددة.
00:18:36إنه على الأرجح نوع من التجريد، والذي في حالتنا هو مفهوم الجانب البرمجي بلغة Rust ثم مأخذ التوصيل.
00:18:47الآن سأتحدث عن بضعة أرقام مختلفة، ولكن فيما يتعلق باللغة حول قياس الأداء، كما تعلمون،
00:18:53الركبة (Knee) هي مفهوم يشبه متى تقوم بزيادة حركة المرور على الخادم،
00:18:57عندما تطلب منه نوعاً ما المزيد والمزيد من الإنتاجية،
00:19:01وهو يمنحك المزيد والمزيد من الإنتاجية، فهذا هو الوقت الذي تصعد فيه بشكل خطي نوعاً ما.
00:19:05ومن ثم في مرحلة ما تصل إلى هذه النقطة حيث تطلب المزيد والمزيد ولا يأتي شيء.
00:19:09لذا فإنك تستوِي نوعاً ما وترتفع زمن الانتقال (Latency).
00:19:12لذا نحن نسمي ذلك الركبة وهو مفهوم مفيد في قياس الأداء،
00:19:17لأن هذه هي نقطة التشبع نوعاً ما، أليس كذلك؟
00:19:20هذا هو الأداء الأقصى نوعاً ما دون الإضرار بزمن الانتقال.
00:19:23إذن فقط لإعطائك بعض الأفكار عما هو ممكن على عتاد صغير نسبياً، أليس كذلك؟
00:19:32وأنواع مختلفة من النماذج الصغيرة.
00:19:34إذن هذا قياس تم إجراؤه على RTX Pro 6000.
00:19:37نحن نعمل نوعاً ما مع NVIDIA L4، وA100s، وRTX Pro 6000، وH100، في حدود هذا النطاق.
00:19:46مرة أخرى، وحدات معالجة الرسومات هذه أكثر توفراً بكثير، عند الطلب في أي سحابة، أساساً.
00:19:52معظم القارات لديها حصة مخصصة، كما تعلمون.
00:19:56وعلى هذا النوع من الأشياء يمكنك أساساً الحصول، لنماذج التضمين (Embedding)،
00:20:01حتى، لنقل، مئات الملايين من المعلمات،
00:20:05يمكنك الحصول على مئات الآلاف من الرموز (Tokens) في الثانية مشفرة في التضمين، أليس كذلك؟
00:20:12تخيل أنك جالس هناك الآن، وتستدعي نموذج التضمين الخاص بك على واجهة برمجة تطبيقات OpenAI.
00:20:17بدلاً من ذلك، يمكنك استخدام وحدة معالجة رسومية واحدة ودفع نصف مليون رمز في الثانية إلى النظام واستخراج المتجهات.
00:20:26أليس كذلك؟
00:20:28هل تبدو هذه الفكرة منطقية؟
00:20:31لديك نصف مليون رمز تدفع بها إلى وحدة معالجة رسومية واحدة ليست بالحجم الضخم في الثانية،
00:20:38بدلاً من إرسال كل ذلك إلى نقطة نهاية تضمين مدارة في مكان ما ودفع أموال أكثر بأضعاف مضاعفة.
00:20:49أليس كذلك؟
00:20:50ويمكنك الحصول على زمن انتقال يبلغ عشرات قليلة من الملي ثانية لهذه الاستدعاءات، أليس كذلك؟
00:20:55إذا كنت تستخدم واجهات برمجة تطبيقات Cohere أو OpenAI، وما إلى ذلك، فإن ذلك يستغرق مئات الملي ثانية، أليس كذلك؟
00:21:02وهذا ليس علماً صاروخياً.
00:21:03كما تعلم، يمكنك تحقيق توفير هائل في التكاليف، وتحسينات ضخمة في زمن الانتقال، وتشغيل سهل نسبياً باستخدام عدد قليل من وحدات معالجة الرسوميات وبعض البنية التحتية حولها، أليس كذلك؟
00:21:17إذن فهذه مكاسب سهلة للغاية، وإذا كنت ستنطلق في أي مكان باستخدام نماذج مفتوحة المصدر وصغيرة، فإن التضمينات تعد خياراً بديهياً تماماً، أليس كذلك؟
00:21:26ولكن الأمر لا يتوقف عند هذا الحد.
00:21:27فلنقل إنك تريد النظر في التعرف على الكيانات المسماة.
00:21:33وتريد البحث في, فلنقل, البحث متعدد المتجهات، وحتى توليد النصوص أو المخرجات المهيكلة وما إلى ذلك.
00:21:42يمكنك الحصول على آلاف الرمز في الثانية كمخرجات من النماذج التوليدية الخاصة بمهام معينة أيضاً، أو لنقل نحو خمسمائة في الثانية لوحدة معالجة رسومية واحدة في الأسفل.
00:21:58لذا، إذا كنت تولد بيانات اصطناعية، أو تنشئ تعليقات توضيحية لعملية الضبط الدقيق أو لعمليات التقييم الخاصة بك، فلا تفعل ذلك على نقطة نهاية مدارة.
00:22:11تلك مهمة مثالية لأنك تسيطر عليها بشكل ما.
00:22:14ويمكنك مراقبة الجودة.
00:22:16هذه مهمة مثالية لنموذج مفتوح المصدر على بنيتك التحتية الخاصة.
00:22:20حينها، كما تعلم، إذا كانت البنية التحتية المحيطة بوحدات معالجة الرسوميات معقولة، فستحصل على تحجيم خطي مع عدد وحدات معالجة الرسوميات تلك.
00:22:31والآن، فكرة أخرى إذا كنت مهتماً بخدمة النماذج الصغيرة، وهي أنك لا تملك عادةً مجموعة عمال لكل نموذج، أليس كذلك؟
00:22:44لديك مجموعة من العمال، ومجموعة من العقد، وتحتوي على وحدات معالجة رسومية، وتقوم بتشغيلها وتحميل النماذج مسبقاً.
00:22:51تستغرق النماذج عشرات الدقائق للتحميل لأنها تحتوي على مئات المليارات من المعلمات.
00:22:55ولذا تكون مسروراً وتقول: حسناً، لقد تم تحميلها أخيراً، وأصبح لدي الآن مجموعة عمال.
00:22:59هذه العقلية لا تجدي نفعاً حقاً مع النماذج الصغيرة.
00:23:02نعم، نعم، بسرعة.
00:23:04كم, كم الوقت المتبقي؟
00:23:06لقد تجاوزنا الوقت بست دقائق.
00:23:07أوه، تجاوزنا بست دقائق.
00:23:08حسناً.
00:23:09حسناً.
00:23:10إذن حزم النماذج على نفس وحدة معالجة الرسوميات يكون أسرع.
00:23:12هذه قصة كيف لا تزال ترغب في تثبيت بعض النماذج، ولكنك تريد أيضاً القيام بالتحميل الكسول والإخلاء كنوع من الوظائف المرتبطة بضغط الذاكرة.
00:23:26تريد معرفة كيفية الجمع بين الاثنين.
00:23:28هناك القليل حول نوع من الأبحاث التلقائية.
00:23:32لدينا حلقات بحث تلقائية لإضافة دعم لنماذج جديدة ولتحسين أائها.
00:23:39نحن نبني الكثير من الأدوات الداخلية لإجراء القياسات لتغذية حلقات البحث التلقائي تلك من أجل دفع الأرقام نحو الأمام أساساً.
00:23:47ولعل الأهم من ذلك كله، عندما نوفر الدعم لنموذج ما، فإنه يأتي بكل الضبط المنجز، أليس كذلك؟
00:23:53لذا لا يوجد، حسناً، دعنا نقوم بمسح للمعلمات.
00:23:55نحن ندمج بشكل أساسي تكوينًا شاملاً للمجموعة بأكملها.
00:24:00هذا هو الإعداد لحلقة البحث التلقائي.
00:24:03هناك حلقة فائقة تبني نظام الدعم الذي يشغل الحلقة بعد ذلك.
00:24:08وهناك لوحة معلومات في الأعلى تساعدك على فهم كيف يعمل.
00:24:12لدينا واجهات مستخدم مخصصة لذلك.
00:24:15وكان أحد مخرجات ذلك نموذج Lora الذي استغرق تدريبه 80 سنتاً وحسن جودة الاسترجاع في النصوص القانونية الألمانية كدليل على المفهوم بنسبة 18%.
00:24:27وهذا كل شيء.
00:24:29إذن النماذج الصغيرة جيدة.
00:24:30وهي سهلة التشغيل نسبياً.
00:24:32وهي في الواقع أرخص بكثير، وأسرع.
00:24:35وهي ذكية.
00:24:36ويؤدي رمز الاستجابة السريعة ذاك إلى مستودع GitHub الخاص بمجموعتنا الذي وصفته للتو.
00:24:43امنحنا نجمة.
00:24:44ونتمنى لكم استضافة ذاتية سعيدة.
00:24:45شكراً لكم.
00:24:46شكراً لك.
00:24:47شكراً.
커뮤니티 글
아직 글이 없습니다. 이 영상에 대한 첫 번째 글을 작성해 보세요!
이 영상에 대해 글쓰기