The AI / news

TorchNeuron : أول حلقة حول تحليل أداء النظام مع AWS Trainium

TorchNeuron : أول حلقة حول تحليل أداء النظام مع AWS Trainium
2 دقيقة للقراءة

في منشور نُشر على منصة Hugging Face، تفتتح Amazon سلسلة مخصصة لتحليل أداء الاستدلال، أي تنفيذ نموذج مدرب مسبقًا. تشرح هذه الحلقة الأولى كيفية تحديد أماكن استهلاك الوقت، باستخدام أدوات التحليل المطبقة على شريحة Trainium من AWS، المصممة لتدريب واستدلال نماذج التعلم العميق.

يوجه الدليل قراءً ليس لديهم خبرة سابقة في التحليل. يعتمد على TorchNeuron، وهو الواجهة الخلفية مفتوحة المصدر الأصلية لـ PyTorch لـ Trainium، والتي تدعم سير عمل PyTorch القياسية، بما في ذلك التنفيذ في الوضع المباشر وtorch.compile، مع تعديلات قليلة على الكود. يتكامل TorchNeuron أيضًا مع واجهة نواة Neuron (NKI)، التي تتيح إنشاء عوامل تشغيل مخصصة.

تكوين أداة التحليل

يعتمد التحليل على كائنين. NeuronConfig يحدد تدفقات البيانات المراد التقاطها، ووحدات NeuronCores المراد تتبعها، ومجلد الإخراج، ثم يتم تمريره إلى torch.profiler.profile. يوفر NeuronProfiler وظيفة تصدير تكتب أثر الإطار، بصيغة trace.json، بجانب آثار نظام Neuron. تتيح المعلمة correlate_device_time=True عرض الوقت المستغرق على الجهاز في جدول key_averages()، حيث يمكن مقارنته بالوقت المستغرق على وحدة المعالجة المركزية.

يمكن بعد ذلك فتح الآثار في Neuron Explorer، وهي أداة تصور تعمل في المتصفح. تتيح تتبع عملية من التوزيع في الإطار حتى تنفيذها على العتاد، مرورًا بالجدولة في وقت التشغيل. بالنسبة لـ NeuronCore، أي نواة الحساب في الشريحة، يحتوي ملف NEFF على الملف القابل للتنفيذ المترجم، بينما يحتوي ملف NTFF المقابل على أثر تعليمات العتاد.

ثلاث نسخ لنفس العملية

يدرس المنشور دالة RMSNorm، وهي عملية بسيطة تتكون من سلسلة من العمليات الحسابية والاختزالات. تتم مقارنة ثلاث تنفيذات: نسخة مكتوبة عمليةً عمليةً في PyTorch، واستدعاء الدالة المدمجة torch.rms_norm()، والنسخة المكتوبة عمليةً عمليةً ولكن المترجمة باستخدام torch.compile.

في النسخة الأولية، يظهر الجدول أن ثلاث استدعاءات لـ aten::mul تمثل الحصة الأكبر من الوقت المستغرق على الجهاز. بلغ إجمالي وقت Neuron 2 355 ميكروثانية لستة استدعاءات لعوامل التشغيل. وفقًا للمؤلف، فإن الدالة المدمجة torch.rms_norm()، التي تتحول إلى نواة حسابية موحدة واحدة، تحتل عملية واحدة فقط، aten::_fused_rms_norm، بوقت Neuron قدره 403.3 ميكروثانية. تظهر النسخة المترجمة باستخدام torch.compile كمنطقة مترجمة واحدة، مدتها 375.5 ميكروثانية.

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

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

S’abonner
Notification pour
guest

0 Commentaires
Le plus ancien
Le plus récent Le plus populaire
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x