كيفية تحسين نماذج الذكاء الاصطناعي

كيفية تحسين نماذج الذكاء الاصطناعي

باختصار: لتحسين نماذج الذكاء الاصطناعي، اختر قيدًا أساسيًا واحدًا (زمن الاستجابة، التكلفة، الذاكرة، الجودة، الاستقرار، أو الإنتاجية)، ثم حدد خطًا أساسيًا موثوقًا قبل إجراء أي تغييرات. أزل اختناقات خط المعالجة أولًا، ثم طبّق تحسينات منخفضة المخاطر مثل الدقة المختلطة والتجميع الدفعي؛ إذا حافظت الجودة على مستواها، انتقل إلى أدوات المُصرّف/وقت التشغيل، وعندها فقط قلّل حجم النموذج عبر التكميم أو التقطير عند الحاجة.

أهم النقاط المستفادة:

القيد : اختر مقياسًا واحدًا أو اثنين من المقاييس المستهدفة؛ فالتحسين عبارة عن مجموعة من المقايضات، وليس مكاسب مجانية.

القياس : تحليل أحمال العمل الحقيقية باستخدام p50/p95/p99، والإنتاجية، والاستخدام، وذروات الذاكرة.

خط الأنابيب : قم بإصلاح عملية تجزئة البيانات، ومحملات البيانات، والمعالجة المسبقة، والتجميع قبل التعامل مع النموذج.

التقديم : استخدم التخزين المؤقت، والتجميع المتعمد، وضبط التزامن، وراقب زمن الاستجابة عن كثب.

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

كيفية تحسين نماذج الذكاء الاصطناعي (إنفوغرافيك)

🔗 كيفية تقييم نماذج الذكاء الاصطناعي بفعالية:
المعايير والخطوات الرئيسية للحكم على النماذج بشكل عادل وموثوق.

🔗 كيفية قياس أداء الذكاء الاصطناعي باستخدام مقاييس حقيقية
: استخدم المعايير، وزمن الاستجابة، والتكلفة، وإشارات الجودة للمقارنة.

🔗 كيفية اختبار نماذج الذكاء الاصطناعي قبل الإنتاج
: سير عمل الاختبار العملي: تقسيم البيانات، حالات الضغط، والمراقبة.

🔗 كيفية استخدام الذكاء الاصطناعي لإنشاء المحتوى:
حوّل الأفكار إلى مسودات بشكل أسرع باستخدام المطالبات المنظمة والتكرار.


1) ما معنى "التحسين" عمليًا (لأن كل شخص يستخدمه بشكل مختلف) 🧠

عندما يقول الناس "تحسين نموذج الذكاء الاصطناعي"، فقد يقصدون ما يلي:

  • اجعله أسرع (تقليل زمن الاستجابة)

  • اجعلها أرخص (ساعات أقل لوحدة معالجة الرسومات، ونفقات أقل على الحوسبة السحابية)

  • اجعله أصغر حجماً (من حيث استهلاك الذاكرة، والنشر على الحافة)

  • اجعلها أكثر دقة (تحسينات في الجودة، تقليل الهلوسة)

  • اجعله أكثر استقراراً (تقليل التباين، وتقليل حالات الفشل في الإنتاج)

  • تسهيل عملية التقديم (الإنتاجية، والتجميع، والأداء المتوقع)

إليك الحقيقة المزعجة بعض الشيء: لا يمكنك تحقيق أقصى استفادة من كل هذه الجوانب دفعة واحدة. التحسين أشبه بعصر بالون - اضغط على أحد جانبيه فينفجر الجانب الآخر. ليس دائمًا، ولكن في كثير من الأحيان، لذا عليك التخطيط للمفاضلات.

لذا قبل أن تلمس أي شيء، اختر قيدك الأساسي :

  • إذا كنت تقدم خدماتك للمستخدمين بشكل مباشر، فأنت تهتم بزمن الاستجابة عند النسبة المئوية 95 ( النسب المئوية في AWS CloudWatch ) وأداء الطرف الأقصى ( أفضل ممارسات "زمن الاستجابة الطرفي" ) 📉

  • إذا كنت تتدرب، فأنت تهتم بسرعة الوصول إلى الجودة واستخدام وحدة معالجة الرسومات 🔥

  • إذا كنت تقوم بالنشر على الأجهزة، فأنت تهتم بذاكرة الوصول العشوائي والطاقة 🔋


2) كيف يبدو الإصدار الجيد من تحسين نموذج الذكاء الاصطناعي؟ ✅

إنّ النسخة الجيدة من التحسين ليست مجرد "تطبيق التكميم والدعاء"، بل هي نظام متكامل. وأفضل الأنظمة عادةً ما تتضمن ما يلي:

  • معيار أساسي تثق به.
    إذا لم تتمكن من تكرار نتائجك الحالية، فلن تعرف أنك قد حققت أي تحسن. الأمر بسيط... لكن الناس يتجاهلونه. ثم يتدهور وضعهم.

  • إن تحديد معيار هدف واضح
    "أسرع" أمر غامض. أما "تقليل زمن استجابة p95 من 900 مللي ثانية إلى 300 مللي ثانية مع الحفاظ على نفس مستوى الجودة" فهو هدف حقيقي.

  • ضوابط الجودة:
    كل تحسين في الأداء ينطوي على خطر تراجع الجودة دون أن يلاحظه أحد. أنت بحاجة إلى اختبارات وتقييمات، أو على الأقل مجموعة أدوات للتحقق من سلامة النظام.

  • الوعي بالأجهزة:
    قد يكون أداء نموذج "سريع" على وحدة معالجة رسومية واحدة بطيئًا جدًا على وحدة أخرى. أما وحدات المعالجة المركزية فهي نوع خاص من الفوضى.

  • تغييرات تدريجية، لا إعادة كتابة شاملة.
    عندما تُغيّر خمسة أشياء دفعة واحدة ويتحسّن الأداء، لا تعرف السبب. وهذا... أمرٌ مُقلق.

يجب أن يكون التحسين أشبه بضبط أوتار الغيتار - تعديلات طفيفة، استماع دقيق، تكرار 🎸. إذا كان الأمر أشبه باللعب بالسكاكين، فهناك خلل ما.


3) جدول مقارنة: الخيارات الشائعة لتحسين نماذج الذكاء الاصطناعي 📊

فيما يلي جدول مقارنة سريع وغير منظم قليلاً لأدوات/أساليب التحسين الشائعة. كلا، إنه ليس "عادلاً" تماماً - فالحياة الواقعية ليست كذلك أيضاً.

أداة / خيار جمهور سعر لماذا ينجح؟
PyTorch torch.compile ( PyTorch docs ) يا جماعة PyTorch حر يمكن لتقنية التقاط الرسوم البيانية وحيل المُترجم أن تقلل من الحمل الزائد... أحيانًا يكون الأمر أشبه بالسحر ✨
ONNX Runtime ( وثائق ONNX Runtime ) فرق النشر شبه مجاني تحسينات استدلال قوية، ودعم واسع، ومناسب للخدمة الموحدة
TensorRT ( وثائق NVIDIA TensorRT ) نشر NVIDIA أجواء مدفوعة (غالباً ما تكون مجمعة) دمج النواة المتقدم + معالجة دقيقة، سريع للغاية عند التشغيل
ديب سبيد ( بدون وثائق ) فرق التدريب حر تحسينات في الذاكرة والإنتاجية (مثل Zero). قد تشعر وكأنك تقود محركًا نفاثًا
FSDP (PyTorch) (وثائق PyTorch FSDP ) فرق التدريب حر تقسيم المعلمات/التدرجات يجعل النماذج الكبيرة أقل صعوبة
تكميم البتات والبايتات ( bitsandbytes ) هواة القانون حر أوزان بت منخفضة، وتوفير هائل في الذاكرة - الجودة تعتمد، ولكن يا له من ارتياح 😬
التقطير ( هينتون وآخرون، 2015 ) فرق المنتج "تكلفة الوقت" يرث نموذج الطالب الأصغر حجماً السلوك، وعادةً ما يكون ذلك أفضل عائد على الاستثمار على المدى الطويل
تقليم ( درس تعليمي حول تقليم PyTorch ) البحث + الإنتاج حر يزيل العبء الزائد. يكون أكثر فعالية عند دمجه مع إعادة التدريب
تنبيه سريع / نوى مدمجة ( ورق تنبيه سريع ) مهووسو الأداء حر انتباه أسرع، وذاكرة أفضل. مكسب حقيقي للمتحولين
خادم استدلال تريتون ( التجميع الديناميكي ) العمليات/البنية التحتية حر خدمة الإنتاج، والتجميع، وخطوط الإنتاج متعددة النماذج - يبدو الأمر أشبه ببيئة المؤسسات الكبرى

اعتراف بخصوص تنسيق الكلمات: كلمة "السعر" غير مرتبة لأن البرامج مفتوحة المصدر قد تكلفك عطلة نهاية أسبوع كاملة من تصحيح الأخطاء، وهذا... ثمن. 😵💫


٤) ابدأ بالقياس: حدد ملامح وجهك بدقة 🔍

إذا كنت ستفعل شيئًا واحدًا فقط من هذا الدليل بأكمله، فافعل هذا: قم بالقياس بشكل صحيح.

في اختباراتي الخاصة، جاءت أكبر "الاختراقات في مجال التحسين" من اكتشاف شيء بسيط للغاية مثل:

  • مُحمِّل البيانات يُحرم وحدة معالجة الرسومات من البيانات

  • عنق الزجاجة في المعالجة المسبقة لوحدة المعالجة المركزية

  • أحجام الدفعات الصغيرة تتسبب في زيادة الحمل على تشغيل النواة

  • عملية تجزئة الكلمات البطيئة (قد يكون مُجزئو الكلمات أشرارًا صامتين)

  • تجزئة الذاكرة ( ملاحظات حول مُخصِّص الذاكرة في PyTorch CUDA )

  • طبقة واحدة تهيمن على الحوسبة

ما الذي يجب قياسه (الحد الأدنى للمجموعة)

  • زمن الاستجابة (p50، p95، p99) ( SRE على النسب المئوية لزمن الاستجابة )

  • معدل النقل (الرموز المميزة/ثانية، الطلبات/ثانية)

  • استخدام وحدة معالجة الرسومات (الحوسبة + الذاكرة)

  • ذروة استخدام ذاكرة الوصول العشوائي للفيديو / ذاكرة الوصول العشوائي

  • التكلفة لكل 1000 رمز (أو لكل استدلال)

عقلية التنميط العملي

  • حدد سيناريو واحد يهمك (ليس سيناريو لعبة).

  • دوّن كل شيء في "مفكرة أداء" صغيرة.
    نعم، الأمر ممل... لكنه يجنبك التلاعب بنفسك لاحقاً.

(إذا كنت تريد أداة ملموسة للبدء بها: فإن PyTorch Profiler ( torch.profiler docs ) و Nsight Systems ( NVIDIA Nsight Systems ) هما الخياران المعتادان.)


5) تحسين البيانات والتدريب: القوة الخفية 📦🚀

ينشغل الناس ببنية النموذج وينسون خط المعالجة. وفي الوقت نفسه، يستهلك خط المعالجة نصف موارد وحدة معالجة الرسومات (GPU) دون أن يشعروا بذلك.

مكاسب سهلة تظهر بسرعة

  • استخدم الدقة المختلطة (FP16/BF16 حيثما كان ذلك مستقرًا) ( PyTorch AMP / torch.amp )
    عادةً ما يكون أسرع، وغالبًا ما يكون جيدًا - ولكن انتبه للغرائب ​​العددية.

  • تراكم التدرج عندما يكون حجم الدفعة محدودًا ( 🤗 دليل التسريع )
    يحافظ على استقرار التحسين دون استهلاك الذاكرة بشكل كبير.

  • التحقق من التدرج ( torch.utils.checkpoint )
    يستبدل الحوسبة بالذاكرة - مما يجعل السياقات الأكبر ممكنة.

  • الترميز الفعال ( 🤗 مُرمِّزو البيانات )
    قد يُصبح الترميز عائقًا عند التوسع. إنه ليس بالأمر البراق، ولكنه مهم.

  • تحسين أداء مُحمِّل البيانات:
    زيادة عدد العمال، وتثبيت الذاكرة، والجلب المسبق - غير مُلفت للنظر ولكنه فعال 😴➡️💪 ( دليل تحسين أداء PyTorch )

ضبط دقيق فعال للمعلمات

إذا كنت تُجري تحسينات دقيقة على نماذج كبيرة، فإنّ أساليب PEFT (مثل مُهايئات LoRA) تُقلّل تكلفة التدريب بشكل كبير مع الحفاظ على قوتها المذهلة ( انظر دليل Transformers PEFT ، وورقة LoRA ). هذه إحدى تلك اللحظات التي تجعلك تتساءل: "لماذا لم نفعل ذلك من قبل؟".


6) تحسين مستوى البنية: تحديد الحجم الأمثل للنموذج 🧩

أحيانًا تكون أفضل طريقة للتحسين هي... التوقف عن استخدام نموذج كبير جدًا بالنسبة للمهمة. أعلم، هذا أمرٌ غير مقبول 😄.

اتخذ قرارًا بناءً على بعض الأساسيات:

  • قرر ما إذا كنت بحاجة إلى معلومات استخباراتية عامة شاملة، أو إلى متخصص.

  • حافظ على حجم نافذة السياق بالقدر اللازم فقط، وليس أكبر.

  • استخدم نموذجًا مدربًا للمهمة المطروحة (نماذج التصنيف لأعمال التصنيف، وما إلى ذلك).

استراتيجيات عملية لترشيد حجم العمل

  • قم بالتبديل إلى بنية أساسية أصغر لمعظم الطلبات،
    ثم قم بتوجيه "الاستعلامات الصعبة" إلى نموذج أكبر.

  • استخدم أسلوبًا من مرحلتين:
    مسودات سريعة للنماذج، ونماذج أكثر دقة للتحقق منها أو تعديلها.
    يشبه الأمر الكتابة مع صديق دقيق الملاحظة - مزعج، لكنه فعال.

  • قلل طول المخرجات.
    تتطلب رموز المخرجات وقتًا ومالًا. إذا كان نموذجك مطولًا ومتشعبًا، فستدفع ثمن هذا التطويل.

لقد رأيت فرقًا تخفض التكاليف بشكل كبير من خلال فرض إنتاجية أقل. قد يبدو الأمر تافهًا، لكنه فعال.


7) تحسينات المُصرّف + الرسم البياني: من أين تأتي السرعة 🏎️

هذه هي طبقة "جعل الكمبيوتر يقوم بأشياء حاسوبية أكثر ذكاءً".

التقنيات الشائعة:

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

ملاحظات عملية (أو ما يُعرف بالندوب)

  • قد تتأثر هذه التحسينات بتغيرات شكل النموذج.

  • بعض الطرازات تزداد سرعتها بشكل كبير، وبعضها بالكاد تتحرك.

  • أحيانًا يحدث تسارع مفاجئ وظهور خلل محير - كأنّ عفريتًا قد سكن المكان 🧌

ومع ذلك، عندما تنجح، فإنها تُعتبر واحدة من أنقى الانتصارات.


٨) التحديد الكمي، والتقليم، والتقطير: أصغر حجماً دون بكاء (كثيراً) 🪓📉

هذا هو القسم الذي يرغب فيه الناس... لأنه يبدو وكأنه أداء مجاني. قد يكون كذلك، لكن عليك التعامل معه كما لو كان عملية جراحية.

التكميم (أوزان/تنشيطات ذات دقة أقل)

  • ممتاز لسرعة الاستدلال والذاكرة

  • المخاطر: انخفاض الجودة، خاصة في الحالات النادرة

  • أفضل الممارسات: التقييم على مجموعة اختبار حقيقية، وليس على تجارب افتراضية

النكهات الشائعة التي ستسمع عنها:

التقليم (إزالة المعلمات)

  • يزيل الأوزان أو الهياكل "غير المهمة" ( درس تعليمي حول تقليم PyTorch )

  • عادة ما يحتاج الأمر إلى إعادة تدريب لاستعادة الجودة

  • يعمل بشكل أفضل مما يعتقد الناس... عند القيام به بعناية

التقطير (يتعلم الطالب من المعلم)

هذا هو أسلوبي المفضل على المدى الطويل. يمكن للتقطير أن ينتج نموذجًا أصغر يتصرف بشكل مشابه، وغالبًا ما يكون أكثر استقرارًا من التكميم المفرط ( تقطير المعرفة في الشبكة العصبية ).

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


9) التقديم والاستدلال: ساحة المعركة الحقيقية 🧯

يمكنك "تحسين" نموذج ما، ومع ذلك ستظل كفاءته سيئة. في مرحلة تقديم الخدمة، يصبح التأخير والتكلفة أمراً بالغ الأهمية.

إرسال انتصارات مهمة

  • المعالجة
    الدفعية الإنتاجية، ولكنها تزيد من زمن الاستجابة إذا تم الإفراط فيها. لذا، يجب تحقيق التوازن. ( المعالجة الدفعية الديناميكية في ترايتون )

  • المؤقت
    وإعادة استخدام ذاكرة التخزين المؤقت للمفتاح والقيمة ذا أهمية بالغة في السياقات المتكررة. ( شرح ذاكرة التخزين المؤقت للمفتاح والقيمة )

  • البث المباشر
    أسرع حتى لو كان إجمالي الوقت متقاربًا. الانطباع مهم 🙂.

  • تقليل النفقات الإضافية لكل رمز على حدة:
    تقوم بعض المجموعات بعمل إضافي لكل رمز. قلل هذه النفقات الإضافية وستحقق مكاسب كبيرة.

انتبه لزمن الاستجابة المتأخر

قد يبدو متوسطك ممتازًا بينما يكون أداء جهازك عند 99% كارثيًا. للأسف، يعيش المستخدمون في ذيل القائمة. ( زمن الاستجابة في الذيل ولماذا تضلل المتوسطات )


10) تحسين الأداء مع مراعاة خصائص الجهاز: مطابقة النموذج مع الجهاز 🧰🖥️

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

اعتبارات وحدة معالجة الرسومات

اعتبارات وحدة المعالجة المركزية

  • تُعدّ تقنيات الترابط والتحويل إلى متجهات وموضع الذاكرة أمورًا بالغة الأهمية

  • قد تهيمن تكلفة التجزئة ( 🤗 "المجزئات السريعة" )

  • قد تحتاج إلى استراتيجيات تكميم مختلفة عن تلك المستخدمة على وحدة معالجة الرسومات (GPU)

اعتبارات الحافة / الأجهزة المحمولة

  • تُصبح مساحة الذاكرة أولوية قصوى

  • يُعدّ تباين زمن الاستجابة أمراً بالغ الأهمية لأن الأجهزة... متقلبة المزاج

  • غالباً ما تتفوق الطرازات الأصغر حجماً والمتخصصة على الطرازات العامة الكبيرة


11) ضوابط الجودة: لا تُحسّن نفسك حتى تُصبح عيبًا 🧪

يجب أن يصاحب كل فوز في سباقات السرعة فحص جودة. وإلا ستحتفل، ثم تُصدر المنتج، ثم تتلقى رسالة مثل "لماذا يتحدث المساعد فجأة كقرصان؟" 🏴☠️

ضوابط عملية:

  • المطالبات الذهبية (مجموعة ثابتة من المطالبات التي تختبرها دائمًا)

  • مقاييس المهمة (الدقة، F1، BLEU، أي شيء مناسب)

  • عمليات تفتيش بشرية مفاجئة (نعم، بجدية)

  • عتبات الانحدار ("لا يُسمح بانخفاض يزيد عن X%")

تتبع أيضًا أنماط الأعطال:

  • انحراف التنسيق

  • تغييرات في سلوك الرفض

  • تواتر الهلوسة

  • تضخم طول الاستجابة

يمكن للتحسين أن يغير السلوك بطرق مفاجئة. غريبة. مزعجة. متوقعة، عند النظر إليها بأثر رجعي.


١٢) قائمة التحقق: كيفية تحسين نماذج الذكاء الاصطناعي خطوة بخطوة ✅🤖

إذا كنت ترغب في معرفة ترتيب العمليات الواضح لكيفية تحسين نماذج الذكاء الاصطناعي ، فإليك سير العمل الذي يساعد الناس على الحفاظ على سلامتهم العقلية:

  1. حدد النجاح.
    اختر مقياسًا أو مقياسين أساسيين (زمن الاستجابة، التكلفة، الإنتاجية، الجودة).

  2. قياس
    الأداء الأساسي، وتحليل أحمال العمل الحقيقية، وتسجيل النسب المئوية 50/95، والذاكرة، والتكلفة. ( محلل أداء PyTorch )

  3. إصلاح اختناقات خط الأنابيب:
    تحميل البيانات، والتجزئة، والمعالجة المسبقة، والتجميع.

  4. تطبيق مكاسب الحوسبة منخفضة المخاطر:
    الدقة المختلطة، وتحسينات النواة، وتجميع أفضل للبيانات.

  5. جرّب تحسينات المُصرّف/وقت التشغيل
    ، مثل التقاط الرسوم البيانية، وأوقات تشغيل الاستدلال، ودمج المُعاملات. ( torch.compile التعليمي ، ووثائق ONNX Runtime ).

  6. قلل تكلفة النموذج.
    قم بالقياس الكمي بعناية، وقم بالتقطير إن أمكن، وقم بالتقليص إذا كان ذلك مناسبًا.

  7. تحسين التخزين المؤقت للخدمة
    ، والتزامن، واختبار التحميل، وإصلاحات زمن الاستجابة المتأخر.

  8. تحقق من الجودة.
    قم بتشغيل اختبارات الانحدار وقارن النتائج جنبًا إلى جنب.

  9. كرر
    التغييرات الصغيرة، واكتب ملاحظات واضحة، ثم كرر العملية. البساطة هي سر الفعالية.

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


13) الأخطاء الشائعة (حتى لا تكررها مثلنا جميعًا) 🙃

  • التحسين قبل القياس
    سيؤدي إلى إضاعة الوقت. وحينها ستُحسّن الشيء الخطأ بثقة تامة...

  • السعي وراء معيار واحد:
    المعايير تضلل بالحذف. عبء العمل هو الحقيقة.

  • تجاهل الذاكرة:
    تتسبب مشاكل الذاكرة في تباطؤ الأداء، وتعطل النظام، واضطرابه. ( فهم استخدام ذاكرة CUDA في PyTorch )

  • الإفراط في التكميم المبكر:
    قد يكون التكميم منخفض البتات مذهلاً، ولكن ابدأ بخطوات أكثر أمانًا أولاً.

  • عدم وجود خطة للتراجع:
    إذا لم تتمكن من التراجع بسرعة، فستصبح كل عملية نشر مرهقة. والضغط النفسي يُسبب الأخطاء.


ملاحظات ختامية: الطريقة البشرية للتحسين 😌⚡

كيفية تحسين نماذج الذكاء الاصطناعي ليست عملية سريعة وبسيطة. إنها عملية متعددة المراحل: قياس الأداء، إصلاح مسار المعالجة، استخدام المترجمات وبيئات التشغيل، ضبط عملية التقديم، ثم تقليص حجم النموذج باستخدام التكميم أو التقطير إذا لزم الأمر. اتبع هذه الخطوات خطوة بخطوة، مع الالتزام بمعايير الجودة، ولا تعتمد على "الشعور بالسرعة" كمقياس (مشاعرك جميلة، لكنها ليست أداة تحليل الأداء).

إذا كنت تريد أسرع طريقة للتوصيل:

  • قم بالقياس أولاً 🔍

  • قم بتحسين خط الأنابيب التالي 🧵

  • ثم قم بتحسين النموذج 🧠

  • ثم قم بتحسين التقديم 🏗️

  • احرص على إجراء فحوصات الجودة دائمًا ✅

وإذا كان هذا يساعدك، فذكّر نفسك: الهدف ليس "نموذجًا مثاليًا". الهدف هو نموذج سريع، وبأسعار معقولة، وموثوق به بما يكفي لتتمكن من النوم ليلًا... في معظم الليالي 😴.

التعليمات

ما معنى تحسين نموذج الذكاء الاصطناعي عملياً

عادةً ما تعني "التحسين" تحسين أحد القيود الرئيسية: زمن الاستجابة، أو التكلفة، أو استهلاك الذاكرة، أو الدقة، أو الاستقرار، أو معدل نقل البيانات. تكمن الصعوبة في المفاضلة بين هذه القيود، إذ قد يؤدي تحسين جانبٍ ما إلى الإضرار بآخر. يتمثل النهج العملي في اختيار هدف واضح (مثل زمن استجابة p95 أو وقت الوصول إلى الجودة) والتحسين لتحقيقه. بدون هدف محدد، من السهل "التحسين" مع خسارة محتملة.

كيفية تحسين نماذج الذكاء الاصطناعي دون الإضرار بالجودة بشكل غير مباشر

تعامل مع كل تغيير في السرعة أو التكلفة على أنه تراجع محتمل غير مُعلن. استخدم ضوابط مثل المؤشرات المرجعية، ومقاييس الأداء، والفحوصات البشرية السريعة. حدد عتبة واضحة للانحراف المقبول في الجودة، وقارن المخرجات جنبًا إلى جنب. هذا يمنع تحول عبارة "أسرع" إلى "لماذا أصبح غريبًا فجأة في بيئة الإنتاج؟" بعد إطلاق المنتج.

ما الذي يجب قياسه قبل البدء في التحسين؟

ابدأ بنسب زمن الاستجابة المئوية (النسبة المئوية 50، 95، 99)، ومعدل نقل البيانات (عدد الرموز المميزة/ثانية أو عدد الطلبات/ثانية)، واستخدام وحدة معالجة الرسومات، وذروة استخدام ذاكرة الوصول العشوائي للفيديو/ذاكرة الوصول العشوائي. راقب تكلفة الاستدلال لكل عملية أو لكل 1000 رمز مميز إذا كانت التكلفة عاملاً مهماً. حلل أداء سيناريو حقيقي تستخدمه، وليس سيناريو تجريبياً. يساعدك الاحتفاظ بسجل أداء مختصر على تجنب التخمين وتكرار الأخطاء.

مكاسب سريعة ومنخفضة المخاطر لتحسين الأداء التدريبي

غالبًا ما تكون الدقة المختلطة (FP16/BF16) هي الخيار الأسرع في البداية، ولكن انتبه للخصائص العددية غير المتوقعة. إذا كان حجم الدفعة محدودًا، يمكن لتجميع التدرجات أن يُحسّن استقرار عملية التحسين دون استهلاك مفرط للذاكرة. يُتيح حفظ نقاط التحقق من التدرجات استخدام موارد حسابية إضافية مقابل تقليل استهلاك الذاكرة، مما يسمح باستخدام سياقات أكبر. لا تتجاهل تجزئة الرموز وضبط مُحمّل البيانات، فقد تُؤدي هذه العمليات إلى استنزاف موارد وحدة معالجة الرسومات (GPU) دون أن تشعر.

متى يتم استخدام torch.compile أو ONNX Runtime أو TensorRT

تستهدف هذه الأدوات تقليل النفقات التشغيلية: التقاط الرسوم البيانية، ودمج النواة، وتحسينات الرسوم البيانية أثناء التشغيل. يمكنها تحقيق تسريع ملحوظ في الاستدلال، لكن النتائج تختلف باختلاف شكل النموذج والأجهزة. بعض الإعدادات تبدو وكأنها سحرية، بينما البعض الآخر بالكاد يُحدث فرقًا. توقع حساسية للتغييرات في الشكل وظهور بعض الأخطاء البرمجية العرضية - قِس النتائج قبل وبعد على عبء العمل الفعلي لديك.

هل التكميم مجدي، وكيفية تجنب المبالغة فيه؟

يمكن للتكميم أن يقلل من استهلاك الذاكرة ويسرع عملية الاستدلال، خاصةً مع نوع البيانات INT8، لكن الجودة قد تتأثر في بعض الحالات. توفر الخيارات ذات عدد البتات الأقل (مثل INT4/k-bit) وفورات أكبر مع مخاطر أعلى. أفضل طريقة هي التقييم على مجموعة اختبار حقيقية ومقارنة النتائج، وليس الاعتماد على الحدس. ابدأ بالخطوات الأكثر أمانًا أولًا، ثم انتقل إلى دقة أقل فقط عند الحاجة.

الفرق بين التقليم والتقطير لتقليل حجم النموذج

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

كيفية تقليل تكلفة الاستدلال وزمن الاستجابة من خلال تحسينات الخدمة

في مرحلة التقديم، يصبح التحسين ملموسًا: فالمعالجة الدفعية تزيد الإنتاجية، لكنها قد تؤثر سلبًا على زمن الاستجابة إذا تم الإفراط فيها، لذا اضبطها بعناية. قد يكون التخزين المؤقت (التخزين المؤقت الفوري وإعادة استخدام ذاكرة التخزين المؤقت للقيم المفتاحية) ضخمًا عند تكرار السياقات. يُحسّن إخراج البث السرعة المُدركة حتى لو كان إجمالي الوقت متقاربًا. ابحث أيضًا عن أي عبء إضافي على كل رمز مميز في بنيتك التحتية - فالعمليات الصغيرة لكل رمز تتراكم بسرعة.

لماذا يُعدّ زمن الاستجابة المتأخر مهمًا للغاية عند تحسين نماذج الذكاء الاصطناعي

قد تبدو المتوسطات رائعة بينما يمثل معدل الاستجابة عند 99% كارثة، ويميل المستخدمون إلى تجربة أسوأ النتائج. غالبًا ما ينجم تأخير الاستجابة عن التذبذب: تجزئة الذاكرة، وارتفاعات مفاجئة في معالجة وحدة المعالجة المركزية، وتباطؤ في عملية التجزئة، أو سوء أداء معالجة الدفعات. لهذا السبب، يركز الدليل على النسب المئوية وأحمال العمل الفعلية. إذا قمت بتحسين معدل الاستجابة عند 50% فقط، فقد لا تزال تقدم تجربة "تبدو بطيئة بشكل عشوائي"

مراجع

  1. خدمات أمازون السحابية (AWS) - النسب المئوية لخدمة AWS CloudWatch (تعريفات الإحصائيات) - docs.aws.amazon.com

  2. جوجل - الذيل على نطاق واسع (أفضل ممارسات زمن الاستجابة المتأخر) - sre.google

  3. جوجل - أهداف مستوى الخدمة (كتاب هندسة موثوقية الموقع) - النسب المئوية لزمن الاستجابة - sre.google

  4. PyTorch - torch.compile - docs.pytorch.org

  5. PyTorch - FullyShardedDataParallel (FSDP) - docs.pytorch.org

  6. PyTorch - ملف تعريف PyTorch - docs.pytorch.org

  7. PyTorch - دلالات CUDA: إدارة الذاكرة (ملاحظات حول مُخصِّص ذاكرة CUDA) - docs.pytorch.org

  8. PyTorch - الدقة المختلطة التلقائية (torch.amp / AMP) - docs.pytorch.org

  9. PyTorch - torch.utils.checkpoint - docs.pytorch.org

  10. دليل تحسين أداء PyTorch - docs.pytorch.org

  11. PyTorch - دليل تقليم الملفات - docs.pytorch.org

  12. PyTorch - فهم استخدام ذاكرة CUDA في PyTorch - docs.pytorch.org

  13. PyTorch - برنامج تعليمي / نظرة عامة على torch.compile - docs.pytorch.org

  14. بيئة تشغيل ONNX - وثائق بيئة تشغيل ONNX - onnxruntime.ai

  15. NVIDIA - TensorRT - docs.nvidia.com

  16. إنفيديا - أنواع TensorRT الكمية - docs.nvidia.com

  17. إنفيديا - أنظمة إنسايت - developer.nvidia.com

  18. إنفيديا - خادم استدلال ترايتون - التجميع الديناميكي - docs.nvidia.com

  19. وثائق DeepSpeed ​​- - deepspeed.readthedocs.io

  20. bitsandbytes (مؤسسة bitsandbytes) - bitsandbytes - github.com

  21. Hugging Face - Accelerate: دليل تراكم التدرج اللوني - huggingface.co

  22. Hugging Face - Tokenizers - huggingface.co

  23. وجه العناق - المتحولون: دليل PEFT - huggingface.co

  24. وجه محتضن - شرح مخبأ المتحولون: KV - huggingface.co

  25. Hugging Face - Transformers: مُجزئات "سريعة" (فئات التجزئة) - huggingface.co

  26. arXiv - استخلاص المعرفة في الشبكة العصبية (هينتون وآخرون، 2015) - arxiv.org

  27. arXiv - LoRA: تكييف النماذج اللغوية الكبيرة ذات الرتبة المنخفضة - arxiv.org

  28. arXiv - FlashAttention: انتباه دقيق وسريع وفعال من حيث الذاكرة مع مراعاة عمليات الإدخال والإخراج - arxiv.org

اكتشف أحدث تقنيات الذكاء الاصطناعي في متجر مساعدي الذكاء الاصطناعي الرسمي

معلومات عنا

العودة إلى المدونة