Contenedores de Docker para entrenamiento e implementación de modelos - Amazon SageMaker AI

Contenedores de Docker para entrenamiento e implementación de modelos

Amazon SageMaker AI hace un uso extensivo de contenedores de Docker para tareas de compilación y tiempo de ejecución. SageMaker AI proporciona imágenes de Docker prediseñadas para sus algoritmos integrados y los marcos de aprendizaje profundo compatibles que se utilizan para entrenamiento e inferencia. Mediante el uso de contenedores, puede entrenar algoritmos de machine learning e implementar modelos de forma rápida y fiable a cualquier escala. Los temas de esta sección muestran cómo implementar estos contenedores para sus propios casos de uso. Para obtener información sobre cómo traer sus propios contenedores para usarlos con Amazon SageMaker Studio Classic, consulte Personalización de imágenes de Amazon SageMaker Studio Classic.

Escenarios para ejecutar scripts, entrenar algoritmos o implementar modelos con SageMaker AI

Amazon SageMaker AI siempre utiliza contenedores de Docker al ejecutar scripts, entrenar algoritmos e implementar modelos. Su nivel de compromiso con los contenedores depende de su caso de uso.

En el siguiente árbol de decisiones se ilustran tres escenarios principales: Casos de uso para usar contenedores de Docker precompilados con SageMaker AI; Casos de uso para extender un contenedor de Docker precompilado; Caso de uso para compilar un contenedor propio.

Árbol de decisiones para casos de uso de contenedores.

Casos de uso para usar contenedores de Docker precompilados con SageMaker AI

Tenga en cuenta los siguientes casos de uso al utilizar contenedores con SageMaker AI:

  • Algoritmo precompilado de SageMaker AI: utilice la imagen que viene con el algoritmo integrado. Consulte Use Amazon SageMaker AI Built-in Algorithms or Pre-trained Models para obtener más información.

  • Modelo personalizado con contenedor de SageMaker AI precompilado: si entrena o implementa un modelo personalizado, pero utiliza un marco que tiene un contenedor de SageMaker AI precompilado que incluye TensorFlow y PyTorch, elija una de las siguientes opciones:

    • Si no necesita un paquete personalizado y el contenedor ya incluye todos los paquetes necesarios: utilice la imagen de Docker precompilada asociada a su marco. Para obtener más información, consulte Imágenes de Docker de SageMaker AI precompiladas.

    • Si necesita instalar un paquete personalizado en uno de los contenedores precompilados: confirme que la imagen de Docker precompilada admite un archivo requirements.txt o amplíe el contenedor precompìlado en función de los siguientes casos de uso.

Casos de uso para ampliar un contenedor de Docker precompilado

A continuación se incluyen casos de uso para ampliar un contenedor de Docker precompilado:

  • No puede importar las dependencias: amplíe la imagen de Docker precompilada asociada a su marco. Para obtener más información, consulte Ampliar una contenedor precompilado.

  • No puede importar las dependencias del contenedor precompilado y este es compatible con requirements.txt: añada todas las dependencias necesarias en requirements.txt. Los siguientes marcos admiten el uso de requirements.txt.

Caso de uso para compilar un contenedor propio

Si compila o entrena un modelo personalizado y necesita un marco personalizado que no tenga una imagen precompilada, cree un contenedor personalizado.

Como ejemplo de caso de uso de entrenamiento e implementación de un modelo de TensorFlow, en la siguiente guía se muestra cómo determinar la opción de las secciones anteriores de Casos de uso que se ajusta al caso.

Supongamos que tiene los siguientes requisitos para entrenar e implementar un modelo de TensorFlow.

Tras determinar el tipo de contenedor que necesita, en la siguiente lista se proporcionan detalles sobre las opciones enumeradas anteriormente.

  • Uso de un algoritmo o marco integrado de SageMaker AI. En la mayoría de los casos de uso, puede utilizar los algoritmos y marcos integrados sin preocuparse por los contenedores. Puede entrenar e implementar estos algoritmos desde la consola de SageMaker AI, la AWS Command Line Interface (AWS CLI), un cuaderno de Python o el Amazon SageMaker Python SDK. Puede hacerlo especificando el algoritmo o la versión del marco al crear su estimator. Los algoritmos integrados disponibles se desglosan y se describen en el tema Uso de algoritmos integrados y modelos previamente entrenados en Amazon SageMaker. Para obtener más información sobre los marcos disponibles, consulte Marcos y lenguajes de ML. Si desea ver un ejemplo de cómo entrenar e implementar un algoritmo integrado con un cuaderno de Jupyter ejecutándose en una instancia de cuaderno de SageMaker, consulte el tema Guía para prepararse para utilizar Amazon SageMaker AI.

  • Uso de imágenes de contenedores de SageMaker AI precompiladas. También puede utilizar los marcos y algoritmos integrados mediante contenedores de Docker. SageMaker AI proporciona contenedores para sus algoritmos integrados e imágenes de Docker precompiladas para algunos de los marcos de machine learning más comunes, como Apache MXNet, TensorFlow, PyTorch y Chainer. Para una lista completa de las Imágenes SageMaker disponibles, consulte Imágenes de contenedores de aprendizaje profundo disponibles. También admite bibliotecas de machine learning como scikit-learn y SparkML. Si utiliza el Amazon SageMaker Python SDK, puede implementar los contenedores pasando el URI completo del contenedor a la clase Estimator de SDK de SageMaker correspondiente. Para ver la lista completa de los marcos de aprendizaje profundo compatibles actualmente con SageMaker AI, consulte Imágenes de Docker de SageMaker AI precompiladas para aprendizaje profundo. Para obtener más información sobre las imágenes de contenedores precompiladas de scikit-learn y SparkML, consulte Acceso a imágenes de Docker para Scikit-learn y Spark ML. Para obtener más información sobre el uso de marcos con el Amazon SageMaker Python SDK, consulte sus respectivos temas en Marcos y lenguajes de machine learning.

  • Ampliación de una imagen de contenedor de SageMaker AI precompilada. Si desea ampliar un algoritmo de SageMaker AI precompilado o una imagen de Docker de modelo, puede modificar la imagen de SageMaker para adaptarla a sus necesidades. Para obtener un ejemplo, consulte Ampliación de nuestros contenedores PyTorch.

  • Adaptar una imagen de contenedor existente: si desea adaptar una imagen de contenedor preexistente para que funcione con SageMaker AI, debe modificar el contenedor de Docker para habilitar el kit de herramientas de entrenamiento o inferencia de SageMaker. Para ver un ejemplo que muestra cómo crear sus propios contenedores para entrenar y alojar un algoritmo, consulte Bring-Your-Own-R Algorithm.

Solución de problemas de implementaciones y contenedores de Docker

A continuación se indican errores comunes que podría encontrarse al utilizar contenedores de Docker con SageMaker AI. Cada error va seguido de una solución al error.

  • Error: SageMaker AI has lost the Docker daemon.

    Para corregir este error, reinicie Docker con el siguiente comando.

    sudo service docker restart
  • Error: The /tmp directory of your Docker container has run out of space.

    Los contenedores de Docker utilizan las particiones / y /tmp para almacenar código. Estas particiones se pueden llenar fácilmente cuando se utilizan módulos de código grandes en modo local. El SageMaker AI Python SDK permite especificar un directorio temporal personalizado para el directorio raíz del modo local para evitar este problema.

    Para especificar el directorio temporal personalizado en el almacenamiento de volúmenes de Amazon Elastic Block Store, cree un archivo en la siguiente ruta ~/.sagemaker/config.yaml y agregue la siguiente configuración. El directorio que especifique como container_root ya debe existir. El SageMaker AI Python SDK no intentará crearlo.

    local: container_root: /home/ec2-user/SageMaker/temp

    Con esta configuración, el modo local usa el directorio /temp y no el directorio /tmp predeterminado.

  • Errores de espacio reducido en las instancias de cuaderno de SageMaker

    Un contenedor de Docker que se ejecuta en las instancias de cuaderno de SageMaker utiliza el volumen raíz de Amazon EBS de la instancia de cuaderno de manera predeterminada. Para resolver los errores de espacio reducido, proporcione la ruta del volumen de Amazon EBS asociado a la instancia del cuaderno como parte del parámetro de volumen de los comandos de Docker.

    docker run -v EBS-volume-path:container-path