أفضل الممارسات: ضبط Hyperparameter مع Hyperopt

أفضل الممارسات

  • يمكن أن تكون النهج البايزية أكثر كفاءة بكثير من البحث في الشبكة والبحث العشوائي. ومن ثم، باستخدام خوارزمية Hyperopt Tree of Parzen Estimators (TPE)، يمكنك استكشاف المزيد من المعلمات الفائقة والنطاقات الأكبر. يمكن أن يؤدي استخدام معرفة المجال لتقييد مجال البحث إلى تحسين الضبط وتقديم نتائج أفضل.
  • عند استخدام hp.choice()، يقوم Hyperopt بإرجاع فهرس قائمة الاختيارات. لذلك المعلمة التي تم تسجيلها في MLflow هي أيضا الفهرس. استخدم hyperopt.space_eval() لاسترداد قيم المعلمات.
  • بالنسبة للنماذج ذات أوقات التدريب الطويلة، ابدأ في تجربة مجموعات البيانات الصغيرة والعديد من المعلمات الفائقة. استخدم MLflow لتحديد أفضل النماذج أداء وتحديد المعلمات الفائقة التي يمكن إصلاحها. بهذه الطريقة، يمكنك تقليل مساحة المعلمة أثناء الاستعداد لضبط على نطاق واسع.
  • استفد من دعم Hyperopt للأبعاد الشرطية والمقاييس الفائقة. على سبيل المثال، عند تقييم نكهات متعددة من الانخفاض المتدرج، بدلا من قصر مساحة المعلمة الفائقة على المعلمات الفائقة الشائعة فقط، يمكنك تضمين Hyperopt hyperparameters الشرطية - تلك المناسبة فقط لمجموعة فرعية من النكهات. لمزيد من المعلومات حول استخدام المعلمات الشرطية، راجع تحديد مساحة بحث.
  • عند استخدام SparkTrials، قم بتكوين التوازي بشكل مناسب للمجموعات الممكنة لوحدة المعالجة المركزية فقط مقابل المجموعات الممكنة لوحدة معالجة الرسومات. في Azure Databricks، تستخدم مجموعات وحدة المعالجة المركزية وGPU أعدادا مختلفة من مؤشرات ترابط المنفذ لكل عقدة عاملة. تستخدم مجموعات وحدة المعالجة المركزية مؤشرات ترابط منفذ متعددة لكل عقدة. تستخدم مجموعات GPU مؤشر ترابط منفذ واحد فقط لكل عقدة لتجنب التعارضات بين مهام Spark المتعددة التي تحاول استخدام نفس وحدة معالجة الرسومات. في حين أن هذا هو الأمثل عموما للمكتبات المكتوبة لوحدات معالجة الرسومات، فهذا يعني أن الحد الأقصى من التوازي يتم تقليله على مجموعات GPU، لذا كن على دراية بعدد وحدات معالجة الرسومات التي يمكن لكل إصدار تجريبي استخدامها عند تحديد أنواع مثيلات GPU. راجع المجموعات الممكنة لوحدة معالجة الرسومات للحصول على التفاصيل.
  • لا تستخدم SparkTrials على مجموعات التحجيم التلقائي. يحدد Hyperopt قيمة التوازي عند بدء التنفيذ. إذا تم تحجيم نظام المجموعة تلقائيا لاحقا، فلن يتمكن Hyperopt من الاستفادة من حجم نظام المجموعة الجديد.

استكشاف الاخطاء

  • عادة ما يعني فقدان NaN (وليس رقما) الذي تم الإبلاغ عنه الدالة الموضوعية التي تم تمريرها إلى fmin() NaN الذي تم إرجاعه. لا يؤثر هذا على عمليات التشغيل الأخرى ويمكنك تجاهلها بأمان. لمنع هذه النتيجة، حاول ضبط مساحة المعلمة الفائقة أو تعديل الدالة الموضوعية.
  • نظرا لأن Hyperopt يستخدم خوارزميات البحث العشوائي، فإن الخسارة عادة لا تقل رتابة مع كل تشغيل. ومع ذلك، غالبا ما تجد هذه الأساليب أفضل المعلمات الفائقة بسرعة أكبر من الأساليب الأخرى.
  • يتحمل كل من Hyperopt وSpark نفقات عامة يمكن أن تهيمن على المدة التجريبية للتشغيل التجريبي القصير (عشرات الثوان المنخفضة). قد تكون السرعة التي تلاحظها صغيرة أو حتى صفرية.

مثال على دفتر الملاحظات: أفضل الممارسات لمجموعات البيانات من أحجام مختلفة

SparkTrials تشغيل الإصدارات التجريبية على عقد عامل Spark. يوفر دفتر الملاحظات هذا إرشادات حول كيفية نقل مجموعات البيانات بأوامر مختلفة من الحجم إلى العقد العاملة عند استخدام SparkTrials.

معالجة مجموعات البيانات الخاصة بأوامر مختلفة من دفتر ملاحظات المقدار

الحصول على دفتر الملاحظات