الضبط التلقائي المستمر (وحدة معالجة الرسومات فقط)

نستخدم OpenAI Triton لإنشاء بعض نواة وحدة معالجة الرسومات. يسمح Triton بتوليد نواة سريعة لوحدة معالجة الرسومات لإجراء عمليات اندماج معينة، لكن علينا ضبط بعض المعلَمات لكل دمج من هذا النوع.

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

ويمكن حذف/تحميل نتائج الضبط التلقائي باستخدام المعلمات التالية:

--xla_gpu_dump_autotune_results_to=
--xla_gpu_load_autotune_results_from=

إذا حددنا ملف .txt أو .textproto، فسيتم تفريغ ذاكرة التخزين المؤقت بتنسيق textproto، أو بتنسيق Protobuf ثنائي.

في مرحلة الاختبارات

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

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

إجراء اختبار الاستخدام الضبط التلقائي المستمر

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

  1. علينا تصدير نتائج التوليف التلقائي من الاختبار، على سبيل المثال، من خلال تحديد هذه المعلَمات إلى أمر test:

    --test_env=XLA_FLAGS=--xla_gpu_dump_autotune_results_to=TEST_UNDECLARED_OUTPUTS_DIR/autotune_cache.textproto
    --test_sharding_strategy=disabled
    

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

  2. ثم يتعين علينا تحميل ذاكرة التخزين المؤقت هذه إلى مستودع الرموز لدينا.

  3. ثم علينا إضافة ذاكرة التخزين المؤقت إلى تبعيات البيانات لهدف الاختبار لدينا، وتحميلها باستخدام متغير بيئة.

    data = ["test_autotune_cache.textproto"],
    env = {"XLA_FLAGS": "--xla_gpu_load_autotune_results_from=" +
                        "$(execpath test_autotune_cache.textproto)"},
    

    (يمكنك استخدام عملية التقسيم إلى أجزاء في الاختبارات التي تؤدي إلى تحميل نتائج الضبط التلقائي).

يُرجى أيضًا الاطّلاع على نماذج الاختبارات في xla/service/gpu/tests/BUILD:

  • load_autotune_results_using_execpath_test
  • load_autotune_results_from_test_workspace_test
  • dump_autotune_results_to_test_outputs_test

تقادم ذاكرة التخزين المؤقت

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

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

قد تصبح ذاكرة التخزين المؤقت قديمة أيضًا في حال تطور محول XLA ويقوم بإنشاء اندماجات مختلفة.