تسجيل الملفات الشخصية

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

الالتقاط الآلي

باستخدام ميزة "التقاط البيانات آليًا"، عليك إضافة تعليقات توضيحية إلى رمز النموذج لتحديد المكان الذي تريد التقاط الملفات الشخصية فيه. يجمع المستخدمون عادةً ملفات شخصية لبضع خطوات خلال حلقة التدريب، أو يحدّدون ملفًا شخصيًا لكتلة معيّنة ضمن النموذج. هناك طرق مختلفة لتسجيل عمليات التتبُّع في الأُطر المختلفة JAX وPytorch XLA وTensorflow، إما من خلال واجهة برمجة التطبيقات لبدء/إيقاف التتبُّع أو من خلال مدير السياق.

التقاط الصور عند الطلب (المعروف أيضًا باسم التقاط الصور يدويًا)

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

لتفعيل ميزة تسجيل الأداء عند الطلب، يجب بدء تشغيل خادم xprof ضمن الرمز. في JAX مثلاً، سيؤدي تفعيل jax.profiler.start_server إلى بدء تشغيل خادم xprof على عبء عمل تعلُّم الآلة الذي يستمع إلى مشغّل الالتقاط عند الطلب لبدء التقاط الملفات الشخصية.

جلسات متعدّدة لكل عملية تشغيل

عند تسجيل الملفات الشخصية، يمكنك تسجيلها لتشغيل واحد على شكل جلسات متعددة. لنفترض أنّك تسجّل ملفات شخصية في عملية تدريبية من الخطوة 1 إلى 3، ثم تسجّل ملفات شخصية لاحقًا من الخطوة 8 إلى 10. إذًا، هذه الملفات الشخصية هي لعملية تنفيذ واحدة، ولكن سيتم تسجيل اللقطة الأولى من الخطوات 1 إلى 3 على أنّها session1، وسيتم تسجيل اللقطة الثانية من الخطوات 8 إلى 10 على أنّها session2. سيتم تمييز الجلسات المختلفة بطوابع تاريخ مختلفة ضمن كل عملية تشغيل. يمكنك تسجيل بيانات الأداء في جلسات مختلفة بشكل آلي أو عند الطلب أو مزيج من كليهما.

‫XProf وTensorboard على Google Cloud

على Google Cloud، ننصح باستخدام مكتبة cloud-diagnostics-xprof لتسهيل استضافة Tensorboard وXProf. في ما يلي بعض المزايا الرئيسية لاستخدام هذه المكتبة على Google Cloud Platform:

  • سهولة إعداد وتعبئة تبعيات XProf وTensorBoard
  • تخزين ملفاتك الشخصية في GCS، ما قد يكون مفيدًا للاحتفاظ بها على المدى الطويل ولإجراء التحليل بعد انتهاء الدراسة (سيتم حذف الملفات الشخصية المحلية التي تم جمعها بعد انتهاء الباحث من الدراسة)
  • تحميل سريع للملفات الشخصية الكبيرة والمتعددة من خلال توفير Tensorboard على جهاز افتراضي على Google Compute Engine أو حاوية GKE، مع إمكانية تغيير نوع الجهاز استنادًا إلى احتياجات المستخدمين من حيث سرعة التحميل والتكلفة
  • إنشاء رابط لتسهيل مشاركة الملفات الشخصية والتعاون مع أعضاء الفريق ومهندسي Google
  • تسهيل إنشاء ملفات تعريف عند الطلب لأحمال العمل على GKE وGCE لاختيار أي مضيف يشغّل حمل العمل لإنشاء ملفات التعريف

تعليمات خاصة بإطار العمل

اطّلِع على كيفية تفعيل إنشاء الملفات الشخصية آليًا وإنشاء الملفات الشخصية عند الطلب في أُطر مختلفة:

تحديد المشاكل وحلّها

تحليل أداء وحدة معالجة الرسومات

يجب أن تُنشئ البرامج التي تعمل على وحدة معالجة الرسومات عمليات تتبُّع لتدفّقات وحدة معالجة الرسومات بالقرب من أعلى "أداة عرض عمليات التتبُّع". إذا كنت ترى آثار المضيف فقط، راجِع سجلّات و/أو ناتج برنامجك بحثًا عن رسائل الخطأ التالية.

إذا ظهر لك خطأ مثل: Could not load dynamic library 'libcupti.so.10.1'
رسالة الخطأ الكاملة:

W external/org_tensorflow/tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'libcupti.so.10.1'; dlerror: libcupti.so.10.1: cannot open shared object file: No such file or directory
2020-06-12 13:19:59.822799: E external/org_tensorflow/tensorflow/core/profiler/internal/gpu/cupti_tracer.cc:1422] function cupti_interface_->Subscribe( &subscriber_, (CUpti_CallbackFunc)ApiCallback, this)failed with error CUPTI could not be loaded or symbol could not be found.

أضِف المسار إلى libcupti.so إلى متغيّر البيئة LD_LIBRARY_PATH. (جرِّب locate libcupti.so للعثور على المسار). على سبيل المثال:

export LD_LIBRARY_PATH=/usr/local/cuda-10.1/extras/CUPTI/lib64/:$LD_LIBRARY_PATH

إذا استمر ظهور الرسالة Could not load dynamic library بعد إجراء ذلك، تحقَّق مما إذا كان تتبُّع وحدة معالجة الرسومات يظهر في عارض التتبُّع على أي حال. تظهر هذه الرسالة أحيانًا حتى عندما يكون كل شيء يعمل بشكل سليم، لأنّها تبحث عن مكتبة libcupti في أماكن متعددة.

إذا ظهر لك خطأ مثل: failed with error CUPTI_ERROR_INSUFFICIENT_PRIVILEGES
رسالة الخطأ الكاملة:

E external/org_tensorflow/tensorflow/core/profiler/internal/gpu/cupti_tracer.cc:1445] function cupti_interface_->EnableCallback( 0 , subscriber_, CUPTI_CB_DOMAIN_DRIVER_API, cbid)failed with error CUPTI_ERROR_INSUFFICIENT_PRIVILEGES
2020-06-12 14:31:54.097791: E external/org_tensorflow/tensorflow/core/profiler/internal/gpu/cupti_tracer.cc:1487] function cupti_interface_->ActivityDisable(activity)failed with error CUPTI_ERROR_NOT_INITIALIZED

نفِّذ الأوامر التالية (يُرجى العِلم أنّ ذلك يتطلّب إعادة التشغيل):

echo 'options nvidia "NVreg_RestrictProfilingToAdminUsers=0"' | sudo tee -a /etc/modprobe.d/nvidia-kernel-common.conf
sudo update-initramfs -u
sudo reboot now

يمكنك الاطّلاع على مستندات NVIDIA حول هذا الخطأ للحصول على مزيد من المعلومات.

تحديد المواصفات الشخصية على جهاز بعيد

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

ssh -L 8791:localhost:8791 <remote server address>

أو إذا كنت تستخدم Google Cloud:

$ gcloud compute ssh <machine-name> -- -L 8791:localhost:8791

عمليات تثبيت متعددة لـ "لوحة TensorBoard"

في حال تعذّر بدء "لوحة TensorBoard" وظهر خطأ مثل: ValueError: Duplicate plugins for name projector

ويرجع ذلك غالبًا إلى توفّر إصدارَين من TensorBoard و/أو TensorFlow مثبّتَين (على سبيل المثال، تتضمّن حِزم pip tensorflow وtf-nightly وtensorboard وtb-nightly كلها TensorBoard). يمكن أن تؤدي إزالة حزمة pip واحدة إلى إزالة الملف التنفيذي tensorboard الذي يصعب استبداله بعد ذلك، لذا قد يكون من الضروري إزالة كل شيء وإعادة تثبيت إصدار واحد:

pip uninstall tensorflow tf-nightly tensorboard tb-nightly xprof xprof-nightly tensorboard-plugin-profile tbp-nightly
pip install tensorboard xprof

حلّ المشاكل المتعلّقة بالأذونات

عند تنفيذ عملية إنشاء الملفات الشخصية باستخدام CUDA® Toolkit في بيئة Docker أو على نظام التشغيل Linux، قد تواجه مشاكل متعلقة بعدم توفّر امتيازات CUPTI كافية (CUPTI_ERROR_INSUFFICIENT_PRIVILEGES). انتقِل إلى مستندات المطوّرين من NVIDIA لمعرفة المزيد حول كيفية حلّ هذه المشاكل على نظام التشغيل Linux.

لحلّ مشاكل أذونات CUPTI في بيئة Docker، نفِّذ

docker run option '--privileged=true'