ملاحظة: نتوجه بالشكر بوجه خاص إلى ليس رايت، مهندس شريك في Meta AI، لمجهوده في مراجعة المنشور وإضافة لمزيد من الرؤى به.
هذا المنشور حول إنشاء تجرب ذكاء اصطناعي (AI) فعالة هو الثاني ضمن سلسلة "Summer of open source". تهدف هذه السلسلة إلى توفير بعض الموارد المفيدة والمحتوى التعليمي فيما يتعلق بالمجالات التي تؤدي فيها المشاريع مفتوحة المصدر إلى إحداث تأثير على مستوى Meta وأكثر. تابعنا بينما نستكشف المجالات الأخرى حيث تعمل Meta Open Source على دعم مجال التطوير بشكل أكبر عن طريق مشاركة أدوات مبتكرة وقابلة للتطوير.
منذ إصدارها الأولي في عام 2016، تم استخدام PyTorch على نطاق واسع في مجتمع التعلُّم العميق، وتتوسع الآن جذورها في البحث باستمرار ليشمل نطاق استخدامها سيناريوهات الإنتاج. وفي ذروة ازدهار تقنيات تعلُّم الآلة (ML) والذكاء الاصطناعي (AI)، حيث تستمر الأساليب الجديدة وحالات الاستخدام المبتكرة لنماذج الذكاء الاصطناعي في التوسع، حققت PyTorch إنجازًا جديدًا في تاريخها حيث انتقلت لتصبح مؤسسة PyTorch Foundation المستقلة المنشأة حديثًا تحت دعم Linux Foundation. تتكون المؤسسة من مجلس إدارة متنوع يضم ممثلين من AMD وAmazon Web Services وGoogle Cloud وMicrosoft Azure وNvidia، ويهدف المجلس إلى التوسع بمرور الوقت. تتضمن المهمة تشجيع استخدام أدوات الذكاء الاصطناعي من خلال المشاريع التي لا يتحكم بها موّردو البرامج وجعل الأدوات مفتوحة المصدر والمكتبات والمكونات الأخرى في متناول الجميع. سيساعد انتقال PyTorch لتصبح مؤسسة في تمكينها، وكذلك تمكين مجتمعها مفتوح المصدر من متابعة تسريع العمليات والتحول من استخدام النماذج الأولية إلى إنتاج تجارب الذكاء الاصطناعي وتعلُّم الآلة.
تُعد PyTorch مثالاً رائعًا حول ما يمكن أن تقدمه التقنيات مفتوحة المصدر. باعتبارها واحدة من أوائل إطارات التعلُّم العميق مفتوحة المصدر، سمحت PyTorch للأشخاص من مختلف التخصصات بتجربة التعلُّم العميق وتطبيق أعمالهم ضمن العديد من المجالات. تدعم PyTorch كل شيء بدءًا من التجارب في تطبيقات البحث مرورًا بتطوير المركبات ذاتية القيادة ووصولاً إلى رادار استكشاف باطن الأرض، وهذا ليس سوى جزءًا بسيطًا من تطبيقاتها الحديثة. ويساعد إقران مكتبة متنوعة من أدوات الذكاء الاصطناعي مع مجتمع التقنيات مفتوحة المصدر إلى توفير القدرة على تكرار التجارب بسرعة والاستفادة من التقنية على نطاق واسع ضمن العديد من الاستخدامات المختلفة.
نظرًا للتوسع الهائل في استخدام تقنيات الذكاء الاصطناعي، فإن حجم النماذج أصبح يتخذ منظورًا أبعد لمعالجة المشاكل الأكثر تعقيدًا، ولكن يعني ذلك في المقابل أيضًا أن الموارد المطلوبة لتدريب هذه النماذج قد زادت بشكل كبير. لحسن الحظ، أدرك العديد من الأشخاص في مجتمع المطوّرين الحاجة إلى الاستفادة من النماذج لاستخدام موارد أقل، وذلك من الناحية البيئية والعملية. سيستعرض هذا المنشور كيف يمكن لتقنيات التكمية إلى جانب تقنيات ضغط النماذج الأخرى أن تساعد في إنشاء تجارب ذكاء اصطناعي عالية الكفاءة.
تتناول معظم الأجزاء في هذا المنشور بعض ميزات PyTorch في المستوى المتوسط والمتقدم. وإذا كنت لا تزال مبتدئًا تتطلع إلى البدء أو خبيرًا يستخدم مكتبة أخرى حاليًا، فسيكون الأمر سهلاً إذا بدأت باستكشاف بعض الأساسيات. اطّلع على دليل المبتدئين لاستخدام PyTorch، والذي يتضمن مقدمة حول الخطوات الكاملة لإنشاء تجارب تعلُّم الآلة ML باستخدام مجموعة بيانات Fashion MNIST.
فيما يلي بعض المصادر الأخرى التي يجب الاطّلاع عليها إذا كنت تستخدم PyTorch للمرة الأولى:
تتوفر العديد من السبل لجعل تجارب الذكاء الاصطناعي أكثر كفاءة. يمكن أن تكون أجهزة وبرامج توقيع الرموز البرمجية لتحسين تجارب الذكاء الاصطناعي فعالة للغاية، لكن حلول برامج الأجهزة المخصصة تستغرق وقتًا طويلاً والكثير من الموارد لتطويرها. يعد إنشاء بنيات أسرع وأصغر مسارًا آخر لتحقيق الكفاءة، ولكن العديد من هذه البنيات تعاني من الافتقار إلى الدقة عند مقارنتها بالنماذج الأكبر، على الأقل في الوقت الحالي. تتثمل أبسط طريقة في إيجاد طرق فعالة لتقليل الموارد المطلوبة لتدريب النماذج الحالية وعرضها. ويمكن القيام بذلك في PyTorch عن طريق ضغط النماذج باستخدام تقنيات التكمية.
تُعد التكمية تقنية حسابية يتم استخدامها لإنشاء ملفات موسيقية رقمية في حالات الضغط مع فقدان بعض البيانات، وكذلك لتحويل الإشارات التمثيلية إلى أخرى رقمية. من خلال تنفيذ العمليات الحسابية دون الحاجة إلى إتقانها، توفر تقنية التكمية أداءً عاليًا للغاية على العديد من منصات الأجهزة. فلماذا يتم استخدام التكمية لجعل تجارب الذكاء الاصطناعي أكثر كفاءة؟ تُظهر النتائج أنه في حالات معينة، يمكن أن يؤدي استخدام هذه التقنية البسيطة نسبيًا إلى تسريع عمليات استنتاج النموذج بشكل هائل (2-4 مرات).
عادةً ما تكون المعلمات التي تشكل نموذج التعلُّم العميق عبارة عن أرقام عشرية بتنسيق الفاصلة العائمة (FP)؛ حيث تتطلب كل معلمة 16 بت أو 32 بت من الذاكرة. عند استخدام التكمية، غالبًا ما يتم تحويل الأرقام إلى INT4 أو INT8 والتي تشغل 4 أو 8 بت فقط. الأمر الذي يقلل من مساحة الذاكرة التي تتطلبها النماذج. بالإضافة إلى ذلك، تعمل الشركات المصنعة للرقائق على تضمين عمليات حسابية خاصة تجعل عمليات التشغيل التي تستخدم الأعداد الصحيحة أسرع من تلك التي تستخدم الأعداد العشرية.
توجد 3 طرق للتكمية يمكن استخدامها في نماذج التدريب: التدريب الديناميكي والساكن والتدريب المستند إلى نتائج التكمية (QAT). تتوفر نظرة عامة موجزة حول المزايا ونقاط الضعف في الجدول أدناه. للتعرف على كيفية تنفيذ كل من هذه الطرق خلال إنشاء تجارب الذكاء الاصطناعي، تفضل بقراءة منشور المدونةالتكمية العملية في PyTorch.
طريقة التكمية | المزايا | نقاط الضعف |
---|---|---|
| حمل إضافي في كل إدخال لعملية إعادة التوجيه | |
| قد يحتاج إلى إجراء إعادة المعايرة باستمرار لتوزيع الانحراف | |
| تكلفة حسابية عالية |
لا تُعد التكمية هي الطريقة الوحيدة لجعل تجارب الذكاء الاصطناعي المدعومة من PyTorch أكثر كفاءة. حيث يتم تحديث الميزات باستمرار، وفيما يلي بعض الطرق الأخرى التي توفرها PyTorch لتحسين تجارب الذكاء الاصطناعي:
وضع الاستنتاج: يمكن استخدام هذا الوضع لكتابة رمز PyTorch إذا كنت تستخدم الرمز لتشغيل ميزات الاستنتاج فقط. يؤدي استخدام وضع الاستنتاج إلى تغيير بعض الافتراضات عند العمل مع تصميمات الموتر لتسريع نتائج الاستنتاج. عندما تدرك PyTorch أنك لن تستخدم تصميمات الموتر في تطبيقات معينة لاحقًا (في هذه الحالة، autograd)، يتم تعديل الرمز بحيث يعمل بشكل أسرع في هذه السيناريوهات المحددة.
الدقة المنخفضة: لا تعمل التكمية إلا في وقت استنتاج النتائج، أي بعد تدريب النموذج. بالنسبة لعملية التدريب ذاتها، تستخدم PyTorch تدريب AMP، أو التدريب التلقائي بالتنسيق المختلط، للعثور على أفضل تنسيق استنادًا إلى تصميمات الموتر التي يتم استخدامها (FP16 أو FP32 أو BF16). يتضمن التعلُّم العميق منخفض الدقة في PyTorch العديد من المزايا. يمكن أن يساعد في تقليل حجم النموذج وتقليل مساحة الذاكرة المطلوبة لتدريب النماذج وخفض مقدار الطاقة اللازمة لتشغيل النماذج. للتعرف على المزيد، تحقق من هذا العرض التوضيحي لاستخدام AMP مع وحدات معالجة الرسومات التي تدعم CUDA.
القنوات الأخيرة: عندما يتعلق الأمر بنماذج الرؤية، فإن NHWC والمعروف أيضًا باسم القنوات الأخيرة، هو تنسيق ذاكرة موتر أسرع متوفر في PyTorch. يساعد تخزين البيانات بتنسيق القنوات الأخيرة في تسريع العمليات في PyTorch. يؤدي تنسيق تصميمات موتر الإدخال كقنوات أخيرة إلى تقليل الحمل المطلوب للتحويل بين أنواع التنسيقات المختلفة، مما يؤدي إلى استنتاج أسرع.
تحسين الاستنتاج: ينفذ نموذج TorchScript الأولي هذا بعض التحسينات العامة التي من شأنها أن تسرع النماذج في جميع البيئات، ويمكنه أيضًا إعداد نماذج للاستنتاج من خلال إعدادات خاصة بالتطوير. تتضمن حالات الاستخدام الأساسية نماذج الرؤية على وحدات المعالجة المركزية (ووحدات معالجة الرسومات) في هذه المرحلة. نظرًا لأن هذا يُعد نموذجًا أوليًا، فمن المحتمل أن تواجه بعض المشكلات. يمكن طرح أي مشكلة تواجهها في مستودع PyTorch لدى GitHub.
يتم استكشاف طرق جديدة لتسريع إنشاء تجارب الذكاء الاصطناعي بشكل مستمر على مدونة PyTorch. وتُعد مكانًا رائعًا لمتابعة مستجدات التقنيات مثل تقنية BetterTransformer الأخيرة، والتي تزيد السرعة ومعدل الإنتاجية في نماذج المحول بمقدار الضعف في سيناريوهات التنفيذ الشائعة. إذا كنت مهتمًا بمعرفة كيفية تنفيذ ميزات معينة في PyTorch، فإن صفحة الوصفات تتيح لك البحث حسب الفئات مثل تحسين النموذج والتدريب الموزع وقابلية التفسير. هذا المنشور ليس سوى عينة توضح كيف تساهم أدوات مثل PyTorch في تعزيز عمليات تطوير تجارب الذكاء الاصطناعي والتجارب مفتوحة المصدر.
للبقاء على اطلاع بأحدث المستجدات في Meta Open Source حول الذكاء الاصطناعي وتعلُّم الآلة، تفضل بزيارة موقع التجارب مفتوحة المصدر أو اشترك في قناتنا على يوتيوب أو تابعنا على فيسبوك وتويتر ولينكدإن.