يوضّح هذا الدليل كيفية استخدام الأدوات المتاحة مع XProf لتتبُّع أداء نماذج TensorFlow على المضيف (وحدة المعالجة المركزية) أو الجهاز (وحدة معالجة الرسومات) أو على مزيج من المضيف والأجهزة.
تساعد عملية تحديد المشاكل في فهم استهلاك موارد الأجهزة (الوقت والذاكرة) لمختلف عمليات TensorFlow (ops) في نموذجك وحلّ المشاكل المتعلقة بأداء النموذج، وبالتالي تسريع تنفيذه.
سيرشدك هذا الدليل إلى كيفية استخدام الأدوات المختلفة المتاحة وطُرق جمع Profiler لبيانات الأداء.
إذا كنت تريد إنشاء ملف تعريف لأداء نموذجك على "وحدات معالجة الموتّرات" في Cloud، يُرجى الرجوع إلى دليل "وحدات معالجة الموتّرات" في Cloud.
جمع بيانات الأداء
يجمع XProf أنشطة المضيف وعمليات تتبُّع وحدة معالجة الرسومات الخاصة بنموذج TensorFlow. يمكنك ضبط XProf لجمع بيانات الأداء من خلال الوضع الآلي أو وضع أخذ العيّنات.
واجهات برمجة التطبيقات لإنشاء الملفات الشخصية
يمكنك استخدام واجهات برمجة التطبيقات التالية لتنفيذ عملية إنشاء الملفات الشخصية.
الوضع الآلي باستخدام TensorBoard Keras Callback (
tf.keras.callbacks.TensorBoard)# Profile from batches 10 to 15 tb_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir, profile_batch='10, 15') # Train the model and use the TensorBoard Keras callback to collect # performance profiling data model.fit(train_data, steps_per_epoch=20, epochs=5, callbacks=[tb_callback])الوضع الآلي باستخدام واجهة برمجة التطبيقات
tf.profilerFunction APItf.profiler.experimental.start('logdir') # Train the model here tf.profiler.experimental.stop()الوضع الآلي باستخدام "مدير السياق"
with tf.profiler.experimental.Profile('logdir'): # Train the model here pass
وضع أخذ العيّنات: يمكنك إجراء تحليل الأداء عند الطلب باستخدام
tf.profiler.experimental.server.startلبدء خادم gRPC مع تشغيل نموذج TensorFlow. بعد بدء تشغيل خادم gRPC وتشغيل النموذج، يمكنك تسجيل ملف تعريف من خلال الزر تسجيل ملف التعريف في XProf. استخدِم النص البرمجي في قسم "تثبيت أداة تحليل الأداء" أعلاه لتشغيل مثيل TensorBoard إذا لم يكن قيد التشغيل.على سبيل المثال،
# Start a profiler server before your model runs. tf.profiler.experimental.server.start(6009) # (Model code goes here). # Send a request to the profiler server to collect a trace of your model. tf.profiler.experimental.client.trace('grpc://localhost:6009', 'gs://your_tb_logdir', 2000)في ما يلي مثال على إنشاء ملفات شخصية لعدة موظفين:
# E.g., your worker IP addresses are 10.0.0.2, 10.0.0.3, 10.0.0.4, and you # would like to profile for a duration of 2 seconds. tf.profiler.experimental.client.trace( 'grpc://10.0.0.2:8466,grpc://10.0.0.3:8466,grpc://10.0.0.4:8466', 'gs://your_tb_logdir', 2000)

استخدِم مربّع الحوار التقاط الملف الشخصي لتحديد ما يلي:
- قائمة مفصولة بفواصل تتضمّن عناوين URL لخدمة الملفات الشخصية أو أسماء وحدات معالجة Tensor.
- تمثّل هذه السمة مدة إنشاء الملفات الشخصية.
- مستوى تتبُّع طلبات الدوال البرمجية على الجهاز والمضيف وPython
- عدد المرّات التي تريد أن يعيد فيها Profiler محاولة تسجيل الملفات الشخصية إذا لم ينجح في المرة الأولى
تسجيل بيانات حلقات التدريب المخصّصة
لإنشاء ملف تعريف لحلقات التدريب المخصّصة في رمز TensorFlow، يجب تزويد حلقة التدريب بواجهة برمجة التطبيقات tf.profiler.experimental.Trace لتحديد حدود الخطوات في XProf.
يتم استخدام الوسيطة name كبادئة لأسماء الخطوات، ويتم إلحاق الوسيطة step_num
ذات الكلمات الرئيسية بأسماء الخطوات، وتجعل الوسيطة _r ذات الكلمات الرئيسية
حدث التتبُّع هذا تتم معالجته كحدث خطوة بواسطة XProf.
على سبيل المثال،
for step in range(NUM_STEPS):
with tf.profiler.experimental.Trace('train', step_num=step, _r=1):
train_data = next(dataset)
train_step(train_data)
سيؤدي ذلك إلى تفعيل تحليل الأداء المستند إلى الخطوات في XProf، وسيؤدي أيضًا إلى ظهور أحداث الخطوات في عارض التتبُّع.
تأكَّد من تضمين أداة تكرار مجموعة البيانات ضمن سياق
tf.profiler.experimental.Trace لإجراء تحليل دقيق لخط أنابيب الإدخال.
مقتطف الرمز البرمجي أدناه هو نمط مضاد:
for step, train_data in enumerate(dataset):
with tf.profiler.experimental.Trace('train', step_num=step, _r=1):
train_step(train_data)
حالات استخدام إنشاء الملفات الشخصية
تغطّي أداة Profiler عددًا من حالات الاستخدام على أربعة محاور مختلفة. تتوفّر بعض المجموعات حاليًا، وسيتم إضافة مجموعات أخرى في المستقبل. في ما يلي بعض حالات الاستخدام:
- التوصيف المحلي مقابل التوصيف عن بُعد: هاتان طريقتان شائعتان لإعداد بيئة التوصيف. في عملية إنشاء الملفات الشخصية المحلية، يتم استدعاء واجهة برمجة التطبيقات الخاصة بإنشاء الملفات الشخصية على الجهاز نفسه الذي يتم تنفيذ النموذج عليه، مثل محطة عمل محلية مزوّدة بوحدات معالجة الرسومات (GPU). في عملية إنشاء الملفات الشخصية عن بُعد، يتم استدعاء واجهة برمجة التطبيقات الخاصة بإنشاء الملفات الشخصية على جهاز مختلف عن الجهاز الذي يتم تنفيذ النموذج عليه، مثلاً على Cloud TPU.
- إنشاء ملفات تعريف لعدة عمليات عاملة: يمكنك إنشاء ملفات تعريف لعدة أجهزة عند استخدام إمكانات التدريب الموزّع في TensorFlow.
- منصة الأجهزة: يمكنك إنشاء ملفات تعريف لوحدات المعالجة المركزية (CPU) ووحدات معالجة الرسومات (GPU) ووحدات معالجة الموتّرات (TPU).
يقدّم الجدول أدناه نظرة عامة سريعة على حالات الاستخدام المتوافقة مع TensorFlow المذكورة أعلاه:
| Profiling API | بالتوقيت المحلي | وحدة التحكّم عن بُعد | عاملون متعدّدون | الأنظمة الأساسية للأجهزة |
|---|---|---|---|---|
| TensorBoard Keras Callback | متاح | Not Supported | Not Supported | وحدة المعالجة المركزية، وحدة معالجة الرسومات |
tf.profiler.experimental
بدء/إيقاف واجهة برمجة التطبيقات |
متاح | Not Supported | Not Supported | وحدة المعالجة المركزية، وحدة معالجة الرسومات |
tf.profiler.experimental
client.trace API |
متاح | متاح | متاح | وحدة المعالجة المركزية، وحدة معالجة الرسومات، وحدة معالجة الموتر |
| واجهة برمجة التطبيقات الخاصة بأداة إدارة السياق | متاح | غير متوافق | Not Supported | وحدة المعالجة المركزية، وحدة معالجة الرسومات |
مراجع إضافية
- يمكنك الاطّلاع على البرنامج التعليمي TensorFlow Profiler: Profile model performance باستخدام Keras وTensorBoard حيث يمكنك تطبيق النصائح الواردة في هذا الدليل.
- جلسة "تحليل الأداء في TensorFlow 2" من مؤتمر TensorFlow Dev Summit لعام 2020
- العرض التوضيحي لأداة TensorFlow Profiler من "قمة مطوّري TensorFlow" لعام 2020