استكشاف أخطاء تجارب التعلم الآلي التلقائي وإصلاحها في نظام Python

ينطبق على: Python SDK azureml v1

في هذا الإرشاد، تعرف على كيفية تحديد وحل المشكلات المعروفة في تجارب التعلم الآلي التلقائية باستخدام عدة SDK للتعلم الآلي من Microsoft Azure.

تبعيات الإصدارات

AutoML توافق قطع التبعيات إلى إصدارات الحزمة الأحدث. بعد الإصدار 1.13.0 من SDK، لم يتم تحميل النماذج في حزم SDK القديمة بسبب عدم التوافق بين الإصدارات القديمة المثبتة في حزم AutoML السابقة، والإصدارات الأحدث المثبتة اليوم.

توقع حدوث الأخطاء التالية:

  • أخطاء عدم العثور على الوحدة النمطية مثل،

    No module named 'sklearn.decomposition._truncated_svd'

  • أخطاء استيراد مثل،

    ImportError: cannot import name 'RollingOriginValidator',

  • أخطاء في السمة مثل،

    AttributeError: 'SimpleImputer' object has no attribute 'add_indicator'

تعتمد الحلول على AutoML إصدار تدريب SDK الخاص بك:

  • AutoML إذا كان إصدار تدريب SDK أكثر من 1.13.0، فأنت بحاجة إلى pandas == 0.25.1 وscikit-learn==0.22.1.

    • إذا وجد عدم تطابق في الإصدار، قم بترقية scikit-learn و/أو pandas لتصحيح الإصدار بما يلي،

          pip install --upgrade pandas==0.25.1
          pip install --upgrade scikit-learn==0.22.1
      
  • إذا كان إصدار تدريب SDK الخاص بك AutoML أقل من أو يساوي إلى 1.12.0، فأنت بحاجة إلى pandas == 0.23.4 وsckit-learn==0.20.3.

    • إذا وجد عدم تطابق في الإصدار، ارجع إلى إصدار أقدم من scikit-learn و/أو pandas لتصحيح الإصدار بما يلي،

        pip install --upgrade pandas==0.23.4
        pip install --upgrade scikit-learn==0.20.3
      

الإعداد

AutoML تتطلب تغييرات الحزمة منذ الإصدار 1.0.76 إلى إلغاء تثبيت الإصدار السابق قبل التحديث إلى الإصدار الجديد.

  • ImportError: cannot import name AutoMLConfig

    إذا واجهت هذا الخطأ بعد الترقية من إصدار SDK الذي يسبق من الإصدار 1.0.76 إلى v1.0.76 أو الأحدث، فقم بحل الخطأ عن طريق تشغيل: pip uninstall azureml-train automl ثم pip install azureml-train-automl. يجري البرنامج النصي automl_setup.cmd ذلك تلقائيًا.

  • فشل automl_setup

    • في نظام Windows، قم بتشغيل automl_setup من Anaconda Prompt. قم بتثبيت Miniconda.

    • تأكد من تثبيت الإصدار 4.4.10 من conda 64 بت أو الأحدث. يمكنك التحقق من البت عبر الأمر conda info. ينبغي platform أن يكون win-64 لنظام Windows أو osx-64 لنظام Mac. للتحقق من الإصدار، استخدم الأمر conda -V. إذا كان لديك إصدار سابق مثبت، قم بتحديثه باستخدام الأمر: conda update conda. للتحقق من 32 بت من خلال تشغيل

    • تأكد من أن conda مثبت.

    • نظام Linux - gcc: error trying to exec 'cc1plus'

      1. إذا تمت مصادفة الخطأ gcc: error trying to exec 'cc1plus': execvp: No such file or directory، فقم بتثبيت أدوات إنشاء سحابة القطاع الحكومي لتوزيع Linux الخاص بك. على سبيل المثال، في Ubuntu، استخدم الأمر sudo apt-get install build-essential.

      2. مرر اسمًا جديدًا كمعلمة أولى إلى automl_setup لإنشاء بيئة conda جديدة. عرض بيئات conda الموجودة باستخدام conda env list وإزالتها باستخدام conda env remove -n <environmentname>.

  • فشل automl_setup_linux.sh: إذا فشل automl_setup_linus.sh في Ubuntu Linux مع الخطأ: unable to execute 'gcc': No such file or directory

    1. تأكد من تمكين المنفذين الصادرين رقم 53 و80. على جهاز Azure الظاهري، يمكنك القيام بذلك من مدخل Microsoft Azure عن طريق تحديد الجهاز الظاهري والنقر على الشبكة.
    2. شغّل الأمر: sudo apt-get update
    3. شغّل الأمر: sudo apt-get install build-essential --fix-missing
    4. قم بتشغيل automl_setup_linux.sh مرة أخرى
  • فشل configuration.ipynb:

    • فيما يخص conda المحلي، تأكد أولاً من تشغيل automl_setup بنجاح.
    • التأكد من صحة subscription_id. ابحث عن subscription_id في مدخل Microsoft Azure عن طريق تحديد "كل الخدمات" ثم "الاشتراكات". ينبغي عدم تضمين الأحرف "<" و">" في القيمة subscription_id. على سبيل المثال، يحتوي subscription_id = "12345678-90ab-1234-5678-1234567890abcd" على التنسيق الصحيح.
    • تأكد من إمكانية وصول المساهم أو المالك إلى الاشتراك.
    • تحقق من أن المنطقة هي واحدة من المناطق المدعومة: eastus2، eastus، westcentralus، southeastasia، westeurope، australiaeast، westus2، southcentralus.
    • تأكد من إمكانية الوصول إلى المنطقة باستخدام مدخل Microsoft Azure.
  • فشل workspace.from_config:

    إذا فشل استدعاء ws = Workspace.from_config():

    1. تأكد من تشغيل مفكرة configuration.ipynb بنجاح.
    2. إذا كانت المفكرة قيد التشغيل من مجلد ليس ضمن المجلد الذي تم تشغيل configuration.ipynb فيه، فانسخ المجلد aml_config والملف config.json الذي يحتوي عليه إلى المجلد الجديد. يقرأ تكوين مساحة العمل Workspace.from_config الملف config.json لمجلد المفكرة أو المجلد الأصل الخاص به.
    3. إذا كان يتم استخدام اشتراك أو مجموعة موارد أو مساحة عمل أو منطقة جديدة، فتأكد من تشغيل دفتر مفكرة configuration.ipynb مرة أخرى. لن يعمل تغيير config.json بطريقة مباشرة إلا إذا كانت مساحة العمل موجودة بالفعل في مجموعة الموارد المحددة ضمن الاشتراك المحدد.
    4. إذا تريد تغيير المنطقة، فقم بتغيير مساحة العمل أو مجموعة الموارد أو الاشتراك. Workspace.create لن يقوم بإنشاء مساحة عمل أو تحديثها إذا كانت موجودة بالفعل، حتى إذا كانت المنطقة المحددة مختلفة.

TensorFlow

اعتبارًا من الإصدار 1.5.0 من SDK، لا يقوم التعلّم الآلي التلقائي بتثبيت نماذج TensorFlow بشكل افتراضي. لتثبيت TensorFlow واستخدامه مع تجارب التعلم الآلي من Microsoft Azure، قم بتثبيت tensorflow==1.12.0 عبر CondaDependencies.

  from azureml.core.runconfig import RunConfiguration
  from azureml.core.conda_dependencies import CondaDependencies
  run_config = RunConfiguration()
  run_config.environment.python.conda_dependencies = CondaDependencies.create(conda_packages=['tensorflow==1.12.0'])

عمليات فشل Numpy

  • import numpy يفشل في Windows: ترى بعض بيئات Windows خطأ في تحميل numpy مع أحدث إصدار من Python 3.6.8. إذا اختبرت هذه المشكلة، فجرب الإصدار 3.6.7 من Python.

  • import numpy فشل: تحقق من إصدار TensorFlow في بيئة التعلم الآلي من conda التلقائي. الإصدارات المدعومة هي < 1.13. قم بإلغاء تثبيت TensorFlow من البيئة إذا كان الإصدار > = 1.13.

يمكنك التحقق من إصدار TensorFlow وإلغاء التثبيت كالآتي:

  1. ابدأ تشغيل أمر shell، وقم بتنشيط بيئة conda حيث يتم تثبيت حزم التعلم الآلي التلقائي.
  2. أدخل pip freeze وابحث عن tensorflow، إذا تم العثور عليه، يجب أن يكون الإصدار المدرج < هو 1.13
  3. إذا لم يكن الإصدار المدرج إصدارًا مدعومًا، pip uninstall tensorflow في الأمر shell وأدخل y للتأكيد.

jwt.exceptions.DecodeError

رسالة خطأ دقيقة: jwt.exceptions.DecodeError: It is required that you pass in a value for the "algorithms" argument when calling decode().

بالنسبة لإصدارات SDK < = 1.17.0، قد ينتج عن التثبيت إصدار غير مدعوم من PyJWT. تحقق من أن إصدار PyJWT في بيئة التعلم الآلي من conda التلقائي هو إصدار مدعوم. هذا هو الإصدار 2.0.0 < من PyJWT.

يمكنك التحقق من إصدار PyJWT كالآتي:

  1. ابدأ تشغيل أمر shell، ثم قم بتنشيط بيئة conda حيث يتم تثبيت حزم التعلم الآلي التلقائي.

  2. أدخل pip freeze وابحث عن PyJWT، إذا تم العثور عليه، يجب أن يكون الإصدار المدرج < 2.0.0

إذا لم يكن الإصدار المدرج إصدارًا معتمدًا:

  1. ضع في الاعتبار الترقية إلى أحدث إصدار من AutoML SDK: pip install -U azureml-sdk[automl]

  2. إذا لم يكن ذلك قابلاً للتطبيق، فقم بإلغاء تثبيت PyJWT من البيئة ثم قم بتثبيت الإصدار الصحيح كما يلي:

    1. pip uninstall PyJWT في الأمر shell ثم أدخل y للتأكيد.
    2. قم بالتثبيت باستخدام pip install 'PyJWT<2.0.0'.

الوصول إلى البيانات

لعمليات وظائف التعلم الآلي المؤتمت، تحتاج إلى التأكد من أن مخزن بيانات الملف الذي يتصل بتخزين AzureFile خاصتك يحتوي على بيانات اعتماد المصادقة المناسبة. خلاف ذلك، تظهر الرسالة التالية. تعرف على طريقة تحديث بيانات اعتماد مصادقة الوصول إلى البيانات.

رسالة الخطأ: Could not create a connection to the AzureFileService due to missing credentials. Either an Account Key or SAS token needs to be linked the default workspace blob store.

مخطط البيانات

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

تجارب عدم رؤية رسائل الخطأ: Schema mismatch error: (an) additional column(s): "Column1: String, Column2: String, Column3: String", (a) missing column(s)

رسالة خطأ لمجموعات البيانات للرؤية: Schema mismatch error: (an) additional column(s): "dataType: String, dataSubtype: String, dateTime: Date, category: String, subcategory: String, status: String, address: String, latitude: Decimal, longitude: Decimal, source: String, extendedProperties: String", (a) missing column(s): "image_url: Stream, image_details: DataRow, label: List" Vision dataset error(s): Vision dataset should have a target column with name 'label'. Vision dataset should have labelingProjectType tag with value as 'Object Identification (Bounding Box)'.

Databricks

راجع كيفية تكوين تجربة التعلم الآلي التلقائي باستخدام Databricks (Azure التعلم الآلي SDK v1).

يكون التنبؤ بنقاط R2 دائمًا صفر

تنشأ هذه المشكلة إذا كانت بيانات التدريب المقدمة تحتوي على سلاسل زمنية تحتوي على نفس القيمة n_cv_splits + forecasting_horizon لنقاط البيانات الأخيرة.

إذا كان هذا النمط متوقعًا في السلسلة الزمنية الخاصة بك، يمكنك تبديل المقياس الأساسي الخاص بك إلى متوسط ​​جذر الخطأ التربيعي.

فشل التوزيع

بالنسبة للإصدارات <= 1.18.0 من SDK، قد تفشل الصورة الأساسية التي تم إنشاؤها للتوزيع مع الخطأ الآتي: ImportError: cannot import name cached_property from werkzeug.

يمكن أن تعمل الخطوات التالية مع المشكلة:

  1. التنزيل لحزمة النموذج
  2. فك ضغط الحزمة
  3. توزيع عبر أصول غير مضغوطة

تطبيقات وظائف Azure

لا يدعم التعلم الآلي التلقائي حاليًا تطبيقات وظائف Azure.

عينة من حالات فشل المفكرة

إذا فشل نموذج المفكرة مع وجود خطأ في أن الخاصية أو الأسلوب أو المكتبة غير موجودة:

  • عليك تأكد من تحديد النواة الصحيحة في Jupyter Notebook. تعرض النواة في أعلى يمين صفحة المفكرة. يكون الإعداد الافتراضي azure_automl. يتم حفظ النواة كجزء من المفكرة. إذا قمت بالتبديل إلى بيئة conda جديدة، فسيلزمك تحديد النواة الجديدة في المفكرة.

    • بالنسبة لمفكرات Azure، يجب أن يكون الإصدار 3.6 من Python.
    • بالنسبة لبيئات conda المحلية، يجب أن يكون اسم بيئة conda هو الذي حددته في automl_setup.
  • للتأكد من أن المفكرة خاصة بإصدار SDK الذي تستخدمه،

    • تحقق من إصدار SDK عن طريق تنفيذ azureml.core.VERSION في خلية Jupyter Notebook.
    • يمكنك تنزيل الإصدار السابق من نماذج دفاتر الملاحظات من GitHub باستخدام الخطوات التالية:
      1. تحديد الزر ⁧⁩⁧Branch⁩⁧⁩
      2. الانتقال إلى علامة التبويب Tags
      3. تحديد الإصدار

التحكم بنطاق التجربة الترددي

إذا كان لديك أكثر من 100 تجربة تعلم آلي تلقائي، فقد يتسبب ذلك في أن يكون لتجارب التعلم الآلي التلقائي الجديدة أوقات طويلة الأمد.

فشل تنزيل إعداد جدار حماية الشبكة الظاهرية

إذا كنت ضمن الشبكات الظاهرية (VNets)، فقد تواجه فشل تنزيل النموذج عند استخدام AutoML NLP. وذلك لأن حركة مرور الشبكة محظورة من تنزيل النماذج والرموز المميزة من Azure CDN. لإلغاء حظر هذا، يرجى السماح بإدراج عناوين URL أدناه في إعداد "قواعد التطبيق" لنهج جدار حماية الشبكة الظاهرية:

  • aka.ms
  • https://automlresources-prod.azureedge.net

يرجى اتباع الإرشادات هنا لتكوين إعدادات جدار الحماية.

تتوفر إرشادات لتكوين مساحة العمل ضمن vnet هنا.

الخطوات التالية