Dónde guardar y escribir los archivos para los experimentos de Azure Machine Learning

SE APLICA A:Azure ML del SDK de Python v1

En este artículo, obtendrá información sobre dónde guardar los archivos de entrada y dónde escribir los archivos de salida de los experimentos para evitar errores de limitación del almacenamiento y la latencia de los experimentos.

Al iniciar los trabajos de entrenamiento en un destino de proceso, están aisladas de los entornos exteriores. El propósito de este diseño es garantizar la reproducibilidad y la portabilidad del experimento. Si ejecuta dos veces el mismo script, en el mismo destino de proceso o en otro, recibirá los mismos resultados. Con este diseño, puede tratar los destinos de proceso como recursos de cálculo sin estado y ninguno de ellos tendrá afinidad con los trabajos que se ejecutan una vez finalizados.

Dónde guardar los archivos de entrada

Para poder iniciar un experimento en la máquina local o en un destino de proceso, debe asegurarse de que los archivos necesarios están disponibles para ese destino de proceso, por ejemplo, los archivos de dependencia y los de datos que su código necesita para ejecutarse.

Azure Machine Learning ejecuta scripts de entrenamiento mediante la copia de todo el directorio de origen. Si tiene información confidencial que no quiere cargar, use un archivo .ignore o no la incluya en el directorio de origen. En su lugar, acceda a los datos mediante un almacén de datos.

El límite de almacenamiento para las instantáneas del experimento es de 300 MB y 2000 archivos.

Por este motivo, se recomienda:

  • Almacenar los archivos en un conjunto de datos de Azure Machine Learning. Así se evitan los problemas de latencia del experimento y tiene las ventajas de acceder a los datos desde un destino de proceso remoto, lo que significa que la autenticación y el montaje son administrados por Azure Machine Learning. Más información sobre cómo especificar un conjunto de datos como origen de datos de entrada en el script de entrenamiento en Entrenamiento de modelos con conjuntos de datos de Azure Machine Learning.

  • Si solo necesita dos archivos de datos y scripts de dependencias, y no puede usar un almacén de datos, coloque los archivos en el mismo directorio de carpetas que el script de entrenamiento. Especifique esta carpeta como su source_directory directamente en el script de entrenamiento o en el código que lo llama.

Límites de almacenamiento de las instantáneas del experimento

Para los experimentos, Azure Machine Learning realiza automáticamente una instantánea del experimento de su código basada en el directorio que se sugiera al configurar el trabajo. El límite total es de 300 MB o de 2000 archivos. Si se supera, verá el siguiente error:

While attempting to take snapshot of .
Your total snapshot size exceeds the limit of 300.0 MB

Para resolver este error, almacene los archivos del experimento en un almacén de datos. Si no puede usar un almacén de datos, la tabla siguiente ofrece algunas soluciones alternativas posibles.

Descripción del experimento Solución de límite de almacenamiento
Menos de 2000 archivos & no se puede usar un almacén de datos Invalide el límite de tamaño de instantánea con
azureml._restclient.snapshots_client.SNAPSHOT_MAX_SIZE_BYTES = 'insert_desired_size'
Puede tardar varios minutos según el número y el tamaño de los archivos.
Debe usar el directorio de script específico Para evitar que se incluyan archivos innecesarios en la instantánea, cree un archivo ignore (.gitignore o .amlignore) en el directorio. Agregue los archivos y directorios que se van a excluir a este archivo. Para obtener más información sobre la sintaxis que se debe usar dentro de este archivo, vea sintaxis y patrones para .gitignore. El archivo .amlignore usa la misma sintaxis. Si ambos archivos existen, el archivo .amlignore se usa y el archivo .gitignore, no.
Canalización Use un subdirectorio diferente en cada paso
Jupyter Notebook Cree un archivo .amlignore o mueva el Bloc de notas a un subdirectorio nuevo y vacío, y vuelva a ejecutar el código.

Dónde escribir los archivos

Debido al aislamiento de los experimentos de entrenamiento, los cambios en los archivos que se producen durante los trabajos no necesariamente persisten fuera de su entorno. Si el script modifica los archivos de forma local al proceso, los cambios no se conservan para el siguiente trabajo del experimento ni se propagan a la máquina cliente automáticamente. Por tanto, los cambios realizados durante el primer trabajo del experimento no afectan a los realizados durante la segunda, ni deberían afectar.

Al escribir cambios, se recomienda escribir los archivos en el almacenamiento mediante un conjunto de datos de Azure Machine Learning con un objeto OutputFileDatasetConfig. Consulte Creación de un objeto OutputFileDatasetConfig.

De lo contrario, escriba los archivos en las carpetas ./outputs o ./logs.

Importante

Dos carpetas, outputs y logs, reciben un tratamiento especial por parte de Azure Machine Learning. Durante el entrenamiento, si escribe archivos en las carpetas llamadas ./outputs y ./logs, los archivos se cargarán automáticamente en su historial de trabajos, por lo que tendrá acceso a ellos una vez completado el trabajo.

  • Si la salida son los mensajes de estado o los resultados de puntuación, escriba los archivos en la carpeta ./outputs, de modo que se conserven como artefactos en el historial de trabajos. Esté atento al número y tamaño de los archivos escritos en esta carpeta, ya que puede producirse cierta latencia cuando el contenido se cargue en el historial de trabajo. Si la latencia es un problema, se recomienda escribir los archivos en un almacén de datos.

  • Para guardar el archivo escrito como registros en el historial de trabajos, escriba los archivos en la carpeta ./logs. Los registros se cargan en tiempo real, por lo que este método es adecuado para el streaming de las actualizaciones directas desde un trabajo remoto.

Pasos siguientes