Solución de problemas de experimentos de aprendizaje automático automatizado en Python
SE APLICA A: Azure ML del SDK de Python v1
En esta guía, aprenderá a identificar y resolver problemas conocidos de los experimentos de aprendizaje automático automatizado con el SDK de Azure Machine Learning.
Dependencias de versiones
Las dependencias de AutoML
con respecto a versiones más recientes del paquete rompen la compatibilidad. Después de la versión 1.13.0 del SDK, los modelos no se cargan en los SDK anteriores debido a la incompatibilidad entre las versiones anteriores ancladas en los paquetes de AutoML
anteriores, y las versiones más recientes ancladas hoy en día.
Se esperan errores como:
Errores de módulo no encontrado como,
No module named 'sklearn.decomposition._truncated_svd'
Errores de importación como,
ImportError: cannot import name 'RollingOriginValidator'
,Errores de atributos como,
AttributeError: 'SimpleImputer' object has no attribute 'add_indicator'
Las resoluciones dependen de la versión de entrenamiento del SDK de AutoML
:
Si la versión de entrenamiento del SDK de
AutoML
es posterior a la 1.13.0, se necesitanpandas == 0.25.1
yscikit-learn==0.22.1
.Si hay una discrepancia de versiones, actualice scikit-learn o Pandas a la versión correcta con lo siguiente:
pip install --upgrade pandas==0.25.1 pip install --upgrade scikit-learn==0.22.1
Si la versión de entrenamiento del SDK de
AutoML
es la 1.12.0, o anterior, se necesitanpandas == 0.23.4
ysckit-learn==0.20.3
.Si hay una discrepancia de versiones, cambie scikit-learn o Pandas a una versión anterior correcta con lo siguiente:
pip install --upgrade pandas==0.23.4 pip install --upgrade scikit-learn==0.20.3
Configurar
El paquete de AutoML
cambia, ya que la versión 1.0.76 requiere desinstalar la versión anterior antes de actualizar a la nueva.
ImportError: cannot import name AutoMLConfig
Si se detecta este error después de actualizar a la versión v1.0.76, o posterior, del SDK desde una versión anterior, resuelva el error ejecutando
pip uninstall azureml-train automl
y luegopip install azureml-train-automl
. El script automl_setup.cmd lo hace automáticamente.Error de automl_setup
En Windows, ejecute automl_setup desde un símbolo del sistema de Anaconda. Instalación de Miniconda.
Asegúrese de está instalado la versión de 64 bits de Conda 4.4.10, o una versión posterior. Puede comprobar los bits con el comando
conda info
.platform
debe serwin-64
para Windows oosx-64
para Mac. Para comprobar la versión, use el comandoconda -V
. Si tiene instalada una versión anterior, puede actualizarla mediante el comandoconda update conda
. Para comprobar la versión de 32 bits, ejecuteAsegúrese de que Conda esté instalado.
Linux:
gcc: error trying to exec 'cc1plus'
Si se produce el error
gcc: error trying to exec 'cc1plus': execvp: No such file or directory
, instale las herramientas de creación de GCC para su distribución de Linux. Por ejemplo, en Ubuntu, use el comandosudo apt-get install build-essential
.Pase un nuevo nombre como primer parámetro a automl_setup para crear un nuevo entorno de Conda. Vea los entornos de Conda existentes mediante
conda env list
y quítelos conconda env remove -n <environmentname>
.
Error de automl_setup_linux.sh: si automl_setup_linus.sh produce el error
unable to execute 'gcc': No such file or directory
en Ubuntu Linux:- Asegúrese de que los puertos de salida 53 y 80 estén habilitados. En una máquina virtual de Azure, puede hacerlo desde Azure Portal. Para ello, seleccione la máquina virtual y haga clic en Redes.
- Ejecute el comando:
sudo apt-get update
- Ejecute el comando:
sudo apt-get install build-essential --fix-missing
- Vuelva a ejecutar
automl_setup_linux.sh
.
Error de configuration.ipynb:
- En el caso de Conda local, asegúrese primero de que
automl_setup
se haya ejecutado correctamente. - Asegúrese de que subscription_id es correcto. Busque subscription_id en Azure Portal. Para ello, seleccione Todos los servicios y, después, Suscripciones. Los caracteres "<" y ">" no deben incluirse en el valor de subscription_id. Por ejemplo,
subscription_id = "12345678-90ab-1234-5678-1234567890abcd"
tiene el formato válido. - Garantice el acceso de tipo Colaborador o Propietario a la suscripción.
- Compruebe que la región sea una de las regiones admitidas:
eastus2
,eastus
,westcentralus
,southeastasia
,westeurope
,australiaeast
,westus2
osouthcentralus
. - Asegúrese de acceder a la región mediante Azure Portal.
- En el caso de Conda local, asegúrese primero de que
Error de workspace.from_config:
Si se produce un error en la llamada a
ws = Workspace.from_config()
:- Asegúrese de que el cuaderno configuration.ipynb se ha ejecutado correctamente.
- Si el cuaderno se ejecuta desde una carpeta que no está en la carpeta donde se ejecutó
configuration.ipynb
, copie la carpeta aml_config y el archivo config.json que contiene en la nueva carpeta. Workspace.from_config lee el archivo config.json de la carpeta del cuaderno o su carpeta principal. - Si se usa una suscripción, un grupo de recursos, un área de trabajo o una región nuevos, asegúrese de volver a ejecutar el cuaderno
configuration.ipynb
. Cambiar el archivo config.json directamente solo funcionará si el área de trabajo ya existe en el grupo de recursos especificado en la suscripción indicada. - Si quiere cambiar la región, cambie el área de trabajo, el grupo de recursos o la suscripción.
Workspace.create
no creará ni actualizará un área de trabajo si ya existe, aunque la región especificada sea diferente.
TensorFlow
A partir de la versión 1.5.0 del SDK, el aprendizaje automático automatizado no instala los modelos de TensorFlow de forma predeterminada. Para instalar TensorFlow y usarlo con los experimentos de aprendizaje automático automatizado, instale tensorflow==1.12.0
mediante 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'])
Errores de Numpy
Error de
import numpy
en Windows: algunos entornos Windows ven un error al cargar Numpy con la versión más reciente de Python: 3.6.8. Si ve este problema, pruebe con la versión 3.6.7 de Python.Error de
import numpy
: compruebe la versión de TensorFlow en el entorno de Conda de aprendizaje automático automatizado. Las versiones compatibles son anteriores a la 1.13. Desinstale TensorFlow del entorno si la versión es la 1.13, o posterior.
Puede comprobar la versión de TensorFlow y desinstalar como se indica a continuación:
- Inicie un shell de comandos y active el entorno de Conda donde están instalados los paquetes de aprendizaje automático automatizado.
- Escriba
pip freeze
y busquetensorflow
; si se encuentra, la versión indicada debe ser anterior a la 1.13 - Si la versión indicada no es una versión compatible, escriba
pip uninstall tensorflow
en el shell de comandos y escriba "y" (sí) para confirmar la operación.
jwt.exceptions.DecodeError
mensaje de error exacto: jwt.exceptions.DecodeError: It is required that you pass in a value for the "algorithms" argument when calling decode()
.
En el caso de las versiones del SDK anteriores o iguales a la versión 1.17.0, la instalación podría dar como resultado una versión no compatible de PyJWT. Compruebe que la versión de PyJWT en el entorno de Conda de aprendizaje automático automatizado es una versión admitida. Es decir, PyJWT versión 2.0.0 o anterior.
Puede comprobar la versión de PyJWT como se indica a continuación:
Inicie un shell de comandos y active el entorno de Conda donde están instalados los paquetes de aprendizaje automático automatizado.
Escriba
pip freeze
y busquePyJWT
; si se encuentra, la versión indicada debe ser anterior a la 2.0.0.
Si la versión indicada no es una versión compatible:
Considere la posibilidad de actualizar a la versión más reciente del SDK de AutoML:
pip install -U azureml-sdk[automl]
.Si eso no es viable, desinstale PyJWT del entorno e instale la versión correcta como se indica a continuación:
- Ejecute
pip uninstall PyJWT
en el shell de comandos y escribay
para confirmar. - Realice la instalación mediante
pip install 'PyJWT<2.0.0'
.
- Ejecute
Acceso a datos
Para los trabajos de aprendizaje automático automatizado, debe asegurarse de que el almacén de datos de archivos que se conecta al almacenamiento de archivos de Azure tiene las credenciales de autenticación adecuadas. Si no las tiene, aparece el siguiente mensaje. Aprenda a actualizar las credenciales de autenticación de acceso a datos.
Mensaje de error: 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.
Esquema de datos
Al intentar crear un experimento ML automatizado mediante el botón Editar y enviar del Estudio de Azure Machine Learning, el esquema de datos del nuevo experimento debe coincidir con el esquema de los datos que se usaron en el experimento original. De lo contrario, se muestra un mensaje de error similar al siguiente. Obtenga más información sobre cómo editar y enviar experimentos desde la interfaz de usuario de Studio.
Experimentos que no son de visión del mensaje de error: Schema mismatch error: (an) additional column(s): "Column1: String, Column2: String, Column3: String", (a) missing column(s)
Mensaje de error para conjuntos de datos de visión: 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
La puntuación R2 de la previsión siempre es cero
este problema surge si los datos de entrenamiento proporcionados tienen una serie temporal que contiene el mismo valor para los últimos puntos de datos n_cv_splits
+ forecasting_horizon
.
Si se espera este patrón en la serie temporal, puede cambiar la métrica principal a la raíz del error cuadrático medio normalizado.
Implementación con errores
En el caso de las versiones 1.18.0, o anteriores, del SDK, puede producirse el siguiente error en la imagen base creada para la implementación: ImportError: cannot import name cached_property from werkzeug
.
Para solucionar el problema, haga lo siguiente:
- Descargue los archivos del modelo.
- Descompresión del paquete
- Implementación mediante los recursos sin comprimir
Aplicación de Azure Functions
En la actualidad, el aprendizaje automático automatizado no admite aplicaciones de Azure Functions.
Errores del cuaderno de ejemplo
si se produce un error en un cuaderno de ejemplo que indica que la propiedad, el método o la biblioteca no existen:
Asegúrese de que se ha seleccionado el kernel correcto en el cuaderno de Jupyter Notebook. El kernel se muestra en la parte superior derecha de la página del cuaderno. El valor predeterminado es azure_automl. El kernel se guarda como parte del cuaderno. Si cambia a un nuevo entorno de Conda, tendrá que seleccionar el nuevo kernel en el cuaderno.
- Para Azure Notebooks, debe ser Python 3.6.
- En el caso de entornos de Conda locales, debe ser el nombre del entorno de Conda que especificó en automl_setup.
Para asegurarse de que el cuaderno sea para la versión del SDK que está usando:
- Para comprobar la versión del SDK, ejecute
azureml.core.VERSION
en una celda de Jupyter Notebook. - Puede descargar la versión anterior de los cuadernos de ejemplo de GitHub con estos pasos:
- Seleccione el botón
Branch
. - Vaya a la pestaña
Tags
. - Selección de la versión
- Seleccione el botón
- Para comprobar la versión del SDK, ejecute
Limitación de experimentos
Si tiene más de 100 experimentos de aprendizaje automático automatizado, es posible que los nuevos experimentos tengan tiempos de ejecución largos.
Error de descarga de la configuración del firewall de red virtual
Si está en redes virtuales, puede encontrarse con errores de descarga del modelo al usar NLP de AutoML. Esto se debe a que el tráfico de red está bloqueado para descargar los modelos y tokenizadores de Azure CDN. Para desbloquearlo, permita enumerar las siguientes direcciones URL en la configuración "Reglas de aplicación" de la directiva de firewall de red virtual:
aka.ms
https://automlresources-prod.azureedge.net
Siga las instrucciones que se indican aquí para configurar las opciones del firewall.
Las instrucciones para configurar el área de trabajo en la red virtual están disponibles aquí.
Pasos siguientes
Obtenga más información sobre cómo entrenar un modelo de regresión con aprendizaje automático automatizado o cómo entrenar con aprendizaje automático automatizado en un recurso remoto.
Obtenga más información sobre cómo y dónde implementar un modelo.