نعم، لكن يجب تصميم التحويل الموثوق إلى وحدة المعالجة المركزية قبل امتلاء ذاكرة وحدة معالجة الرسومات؛ إذ إن معظم عمليات الاستدلال لا تتعافى تلقائيًا وبشفافية من نفاد الذاكرة غير المتوقع.
قد يجيب خادم ذكاء اصطناعي منزلي بسرعة على وحدة معالجة الرسومات، إلى أن يستهلك طلب أطول، أو دفعة أكبر، أو طلب صورة، أو نموذج ثانٍ ما تبقى من ذاكرة الفيديو. وقد يفشل التخصيص التالي رغم خمول ذاكرة النظام ووحدة المعالجة المركزية. ويعتمد بقاء الطلب على بيئة التشغيل: إذ يمكن لبعضها وضع الأوزان على وحدة المعالجة المركزية منذ البداية، بينما يحتاج بعضها الآخر إلى عامل منفصل على وحدة المعالجة المركزية وموجّه يعيد المحاولة بأمان.
يحل تفريغ الحمل إلى وحدة المعالجة المركزية والتحويل إليها عند التعطل مشكلتين مختلفتين
تفريغ الحمل إلى وحدة المعالجة المركزية هو استراتيجية لوضع النموذج. إذ تُخزّن طبقات أو موترات أو مكونات محددة من خط المعالجة في ذاكرة النظام، وتُنقل إلى المسرّع عند الحاجة، ما يقلل مقدار ذاكرة الفيديو المطلوبة للطلب العادي. أما التحويل إلى وحدة المعالجة المركزية عند التعطل فهو سلوك للخدمة: فعندما يصبح مسار وحدة معالجة الرسومات غير متاح أو يرفض طلبًا، يتولى عامل آخر الطلب ويشغّل نموذجًا متوافقًا مع وحدة المعالجة المركزية من دون فقدان المهمة.
توفّر Hugging Face Accelerate طرق تفريغ الحمل إلى وحدة المعالجة المركزية التي تنقل حالة النموذج عمدًا بين ذاكرة وحدة المعالجة المركزية وجهاز التنفيذ. هذا تنفيذ مخطط غير متجانس، وليس استجابة طارئة بعد فشل عشوائي في حالة CUDA. إذ يُجهّز النموذج، وخريطة الأجهزة، والخطافات، وميزانية الذاكرة قبل بدء الاستدلال.
قد يكون النموذج الذي فُرّغ جزء منه إلى وحدة المعالجة المركزية يستخدمها بالفعل، مع بقائه معتمدًا على وحدة معالجة الرسومات في كل رمز. وإذا تعطلت وحدة معالجة الرسومات، فقد لا تتمكن تلك العملية من المتابعة على وحدة المعالجة المركزية من الرمز الذي توقفت عنده. عادةً ما يعيد التحويل الحقيقي تشغيل الطلب على عامل جاهز للعمل على وحدة المعالجة المركزية. ويوضح هذا الفرق سبب إمكانية إعلان تطبيق ما دعمه لوحدة المعالجة المركزية، مع استمراره في إرجاع خطأ نفاد الذاكرة بدلًا من إكمال الطلب الحالي.
قد تمتلئ ذاكرة الفيديو بعد نجاح تحميل النموذج
أوزان النموذج ليست سوى جزء واحد من ميزانية الذاكرة. إذ تنمو ذاكرة التخزين المؤقت للمفاتيح والقيم مع طول التسلسل النشط والتزامن، وتحتاج النوى المؤقتة إلى مساحة عمل، وتضيف مشفّرات الصور أو الصوت موترات، وقد يحجز مخصّص الذاكرة كتلًا لإعادة استخدامها. لذلك قد يفشل نموذج ينجح تحميله عند بدء التشغيل بسبب سياق طويل أو عدة مستخدمين متزامنين.
تستخدم PyTorch مخصّص ذاكرة مؤقتًا، ولذلك لا تتطابق الذاكرة المبلّغ عنها كمحجوزة مع ذاكرة الموترات الحية. وقد يؤدي التجزؤ والتخصيصات التي تتم خارج إطار العمل إلى تقليل الهامش القابل للاستخدام أكثر. وينبغي أن يراقب محفّز التحويل التخصيصات المرفوضة وصحة العامل، لا أن يستنتج الأمان من رقم واحد في لوحة المعلومات أو من نجاح تحميل النموذج.
ولهذا أيضًا، فإن قاعدة «حجم النموذج أقل من ذاكرة الفيديو» غير مكتملة. إذ يمكن للخدمة تحديد حد أدنى لطول السياق، أو تقييد التسلسلات المتزامنة، أو ترك نسبة مئوية من ذاكرة الفيديو غير مستخدمة لحماية تخصيصات وقت التشغيل. وتمنع هذه الضوابط إخفاقات أكثر من التحويل التفاعلي إلى وحدة المعالجة المركزية، لأنها تُبقي عملية وحدة معالجة الرسومات في حالة معروفة وتحافظ على زمن استجابة متوقع للطلبات المقبولة.
تكون إعادة المحاولة التلقائية آمنة فقط عندما يكون الطلب قابلًا لإعادة التشغيل
بعد نفاد الذاكرة، يمكن للموجّه وضع عامل وحدة معالجة الرسومات في حالة غير سليمة، وتحريره أو إعادة تشغيله، ثم إعادة إرسال الطلب الأصلي إلى عامل على وحدة المعالجة المركزية. وينجح ذلك مع إنشاء النصوص العادي عندما لا يكون قد حدث أي أثر خارجي. لكنه يصبح أصعب مع الاستجابات المتدفقة، أو خطوط معالجة الصور ذات البذور العشوائية، أو الوكلاء الذين ربما استدعوا أداة بالفعل.
يمكن لأطر العمل أيضًا توزيع النماذج الكبيرة بين الأجهزة منذ البداية. ويدعم استدلال النماذج الكبيرة في Accelerate خرائط الأجهزة ووضع النموذج على وحدة المعالجة المركزية أو القرص عندما يتجاوز النموذج جهازًا واحدًا. وقد يحافظ هذا النهج على استمرار الطلب ضمن مخطط تنفيذ واحد مخطط له، لكنه يبادل السرعة بالسعة، ولا ينبغي الخلط بينه وبين توجيه طلب فاشل إلى خدمة منفصلة.
يتوقف انطباق ادعاء التحويل عند التعطل عندما لا تتوفر في وحدة المعالجة المركزية ذاكرة وصول عشوائي كافية، أو لا تحتوي بيئة التشغيل على نوى متوافقة مع وحدة المعالجة المركزية، أو يكون الطلب قد نفذ إجراءً لا يمكن التراجع عنه، أو يتجاوز زمن الاستجابة المتوقع على وحدة المعالجة المركزية مهلة العميل. وفي هذه الحالات، أعد خطأ سعة مضبوطًا أو ضع الطلب في قائمة انتظار. فقد تؤدي إعادة المحاولة الصامتة إلى تكرار الآثار الجانبية أو إبقاء المستخدمين منتظرين مدة أطول بكثير مما تعد به الواجهة.
أثبت التحويل عند التعطل باختبار ذاكرة متعمد
شغّل عاملًا واحدًا على وحدة معالجة الرسومات وعاملًا واحدًا على وحدة المعالجة المركزية خلف موجّه، ثم أرسل طلبًا يتجاوز ملف تعريف وحدة معالجة الرسومات من دون تجاوز ذاكرة النظام. سجّل أول فشل، وقرار إعادة المحاولة، ووقت بدء التنفيذ على وحدة المعالجة المركزية، والمخرجات النهائية، وما إذا كان اتصال العميل قد استمر. كرر الاختبار مع تعطيل البث أولًا، ثم اختبر الإلغاء، وحركة المرور المتزامنة، وطلب وكيل يستخدم أداة وهمية.
يُعد التنفيذ الجزئي على وحدة معالجة الرسومات خط أساس مفيدًا، إذ يمكن لبيئات تشغيل مثل استدلال llama.cpp وضع جزء قابل للتهيئة من عمل النموذج على المسرّعات مع الاحتفاظ بالتنفيذ على وحدة المعالجة المركزية. قارن بين ملفات تعريف النموذج المقيم على وحدة معالجة الرسومات، والتقسيم المخطط بين وحدة المعالجة المركزية ووحدة معالجة الرسومات، والاحتياطي المستقل على وحدة المعالجة المركزية. ويساعد نموذج أحمال الذكاء الاصطناعي الهجينة على فصل التحويل بسبب السعة عن التوجيه السحابي المعتاد.
لا تصف التصميم بأنه موثوق إلا إذا اكتملت إعادة المحاولة مرة واحدة، وحافظت على هوية الطلب، وتجنبت تكرار إجراءات الأدوات، وأعادت عامل وحدة معالجة الرسومات من دون إسقاط المهام غير المرتبطة. وإذا كان إكمال الطلب على وحدة المعالجة المركزية بطيئًا جدًا، فاستخدمه كمسار أمان يحافظ على قائمة الانتظار بدلًا من اعتباره بديلًا تفاعليًا مماثلًا. الهدف التشغيلي هو التدهور السلس، لا التظاهر بأن مستويات خدمة وحدة المعالجة المركزية ووحدة معالجة الرسومات متبادلة.
| السلوك | هل جرى التحضير له قبل نفاد الذاكرة؟ | هل يمكنه إنقاذ الطلب الحالي؟ |
|---|---|---|
| تفريغ الحمل بين وحدة المعالجة المركزية ووحدة معالجة الرسومات | نعم | عادةً، ضمن المخطط المحدد مسبقًا |
| خفض التزامن على وحدة معالجة الرسومات | نعم | يمنع قبول العمل غير الآمن |
| إعادة المحاولة على وحدة المعالجة المركزية عبر الموجّه | نعم | نعم، إذا كان الطلب قابلًا لإعادة التشغيل |
| التبديل غير المخطط له داخل العملية | لا | عادةً لا |
الأسئلة الشائعة
هل يؤدي مسح ذاكرة التخزين المؤقت لوحدة معالجة الرسومات إلى إنشاء تحويل عند التعطل؟
لا. قد يؤدي تحرير ذاكرة التخزين المؤقت إلى إتاحة الكتل المحجوزة غير المستخدمة، لكنه لا ينشئ تنفيذًا على وحدة المعالجة المركزية، ولا يصلح حالة طلب تالفة، ولا يضمن توفر ذاكرة متجاورة كافية للتخصيص التالي.
هل سينتج التحويل إلى وحدة المعالجة المركزية الإجابة نفسها؟
يمكن ذلك عند استخدام الأوزان والدقة والموجه والمجزّئ وحالة أخذ العينات نفسها. ومع ذلك، قد تغير النوى المختلفة، أو التكميم، أو البذور، أو حالة البث المعاد تشغيلها المخرجات الدقيقة.
هل النموذج الأصغر أفضل من التحويل إلى وحدة المعالجة المركزية عند التعطل؟
غالبًا ما يكون أفضل للخدمات التفاعلية. فقد يوفر نموذج أصغر على وحدة معالجة الرسومات زمن استجابة متوقعًا، بينما يحمي التحويل إلى وحدة المعالجة المركزية عند التعطل التوافر للطلبات الاستثنائية. ويحل الآليتان هدفين مختلفين للخدمة، ويمكن الجمع بينهما.
مركز التكنولوجيا والذكاء الاصطناعي
المزيد للقراءة

كيف يزوّد وسيط الأسرار وكيلًا للذكاء الاصطناعي ببيانات اعتماد دون كشفها في المطالبات؟
تتبّع هوية أعباء العمل، والسياسات، وإصدار الرموز المميّزة، وحقن الطلبات، والتنقيح، وانتهاء الصلاحية، والإلغاء من خلال بنية وكيل ذكاء اصطناعي منزلي لا يعتمد على...

كيف تعمل بيئة الأدوات المعزولة على احتواء الآثار الجانبية لوكلاء الذكاء الاصطناعي؟
تعرّف على كيفية الحد من الآثار الجانبية لوكلاء الذكاء الاصطناعي باستخدام العزل، وبوابات الصلاحيات، والحالة القابلة للتخلص منها، والتحكم في الاتصالات الصادرة، والحصص، وسجلات...

كيف يُنتج فك الترميز المقيّد JSON صالحًا وفقًا للمخطط؟
افهم تجميع المخطط، وحجب الرموز، وحالة المحلل، والمجموعات الفرعية المدعومة، وزمن الاستجابة، والاقتطاع، ولماذا لا تضمن الصحة البنيوية صحة القيم.

