¿Cómo soluciono los problemas relacionados con la incorporación de mi contenedor personalizado a Amazon SageMaker para la formación o la inferencia?

Actualización más reciente: 21/10/2022

Quiero solucionar problemas relacionados con la incorporación de mi contenedor personalizado a Amazon SageMaker para la formación o la inferencia.

Descripción corta

Puede personalizar sus imágenes de contenedor en SageMaker utilizando uno de los siguientes métodos:

Ampliación de un contenedor de SageMaker creado previamente: utilice este método si necesita personalizar su entorno o marco añadiendo funcionalidades adicionales. Con este método, no es necesario crear la imagen del contenedor desde cero porque las bibliotecas de aprendizaje profundo ya están predefinidas.

Incorporación de su propio contenedor: utilice este método cuando tenga una imagen ya existente para el procesamiento de datos, la formación de modelos o la inferencia en tiempo real con características adicionales y requisitos de seguridad que no son compatibles actualmente con las imágenes creadas previamente de SageMaker.

Creación de una imagen de contenedor desde cero: utilizar este método es una práctica recomendada en caso de que tenga un algoritmo personalizado y aún no tenga una imagen de contenedor personalizada.

Con cualquiera de estos métodos, los errores que se obtienen pueden estar relacionados principalmente con la creación incorrecta de la imagen del contenedor. Por lo tanto, asegúrese de que el contenedor esté configurado correctamente.

Resolución

Ampliación de un contenedor de SageMaker creado previamente

  • Asegúrese de que las variables de entorno SAGEMAKER_SUBMIT_DIRECTORY y SAGEMAKER_PROGRAM estén configuradas en el Dockerfile.
  • Asegúrese de que ha instalado las bibliotecas adicionales necesarias en su Dockerfile. Para hacerlo, ejecute los siguientes comandos:
# SageMaker PyTorch image
FROM 763104351884.dkr.ecr.us-east-1.amazonaws.com/pytorch-training:1.5.1-cpu-py36-ubuntu16.04
ENV PATH="/opt/ml/code:${PATH}"

# this environment variable is used by the SageMaker PyTorch container to determine our user code directory.
ENV SAGEMAKER_SUBMIT_DIRECTORY /opt/ml/code

# install the libraries using pip
COPY requirements.txt./requirements.txt
RUN pip install requirements.txt

# /opt/ml and all subdirectories are utilized by SageMaker, use the /code subdirectory to store your user code.
COPY cifar10.py /opt/ml/code/cifar10.py
# Defines cifar10.py as script
entrypoint 
ENV SAGEMAKER_PROGRAM cifar10.py
  • Después de crear la imagen correctamente, ejecute el contenedor en modo local. Asegúrese de que la imagen funciona según lo previsto.

Para obtener más información, consulte Extend a prebuilt container (Ampliación de un contenedor creado previamente).

Incorporación de su propio contenedor

Asegúrese de haber instalado las bibliotecas respectivas del kit de herramientas de SageMaker para la formación o la inferencia. Estos conjuntos de herramientas definen la ubicación del código y otros recursos junto con el punto de entrada que contiene el código que se debe ejecutar al iniciar el contenedor. Al crear un trabajo de formación de SageMaker o un punto de conexión de inferencia, SageMaker crea los siguientes directorios:

/opt/ml
    ├── input
    │
    ├── model
    │
    ├── code
    │
    ├── output
    │
    └── failure

Al ejecutar un trabajo de formación, el directorio /opt/ml/input contiene información sobre el canal de datos que se utiliza para acceder a los datos almacenados en Amazon Simple Storage Service (Amazon S3). El script de formación (train.py) junto con sus dependencias se almacenan en opt/ml/code. Asegúrese de que el script escriba el modelo final en el directorio /opt/ml/model después de que el trabajo de formación haya finalizado.

Al alojar un modelo formado en SageMaker para realizar inferencias, el modelo se almacena en /opt/ml/model y el código de inferencia (inference.py) se almacena en /opt/ml/code.

Para obtener más información, consulte Adapting your own Docker container to work with SageMaker (Adaptación de su propio contenedor Docker para trabajar SageMaker).

Construir un contenedor desde cero

  • Para asegurarse de que el contenedor se ejecuta como un ejecutable, utilice el formato exec de la instrucción ENTRYPOINT en su Dockerfile:
ENTRYPOINT ["python", "cifar10.py"]
  • Para un trabajo de formación, el script de formación debe salir con 0 si la formación se realiza correctamente y con un código de salida distinto de cero si la formación no se realiza correctamente.
  • Asegúrese de que el modelo final esté escrito en opt/ml/model y de que todas las dependencias y artefactos estén almacenados en /opt/ml/output. Si un trabajo de formación produce un error, el script debe escribir la información sobre el error en /opt/ml/output/failure.
  • Al crear un punto de conexión de inferencia, asegúrese de que el modelo se guarda en el formato FILENAME.tar.gz. El contenedor debe implementar la solicitud HTTP POST en /invocations para la inferencia y la solicitud HTTP GET en /ping para la comprobación de estado del punto de conexión.

Para obtener más información, consulte Create a container with your own algorithms and models (Creación de un contenedor con sus propios algoritmos y modelos).


Use the Amazon SageMaker local mode to train on your notebook instance (Uso del modo local de Amazon SageMaker para la formación en su instancia de bloc de notas)

¿Le resultó útil este artículo?


¿Necesita asistencia técnica o con la facturación?