Introducción al modo local - Amazon SageMaker AI

Introducción al modo local

En las siguientes secciones se describen los pasos necesarios para empezar a utilizar el modo local en Amazon SageMaker Studio, entre los que se incluyen:

  • Cumplimiento de los requisitos previos

  • Configuración de EnableDockerAccess

  • Instalación de Docker

Requisitos previos

Complete los siguientes requisitos previos para usar el modo local en las aplicaciones de Studio:

  • Para extraer imágenes de un repositorio de Amazon Elastic Container Registry, la cuenta en la que se aloja la imagen de Amazon ECR debe proporcionar permiso de acceso para el rol de ejecución del usuario. El rol de ejecución del dominio también debe permitir el acceso a Amazon ECR.

  • Compruebe que está utilizando la versión más reciente del Studio Python SDK mediante el siguiente comando: 

    pip install -U sagemaker
  • Para usar el modo local y las capacidades de Docker, establezca el siguiente parámetro de la DockerSettings del dominio mediante la AWS Command Line Interface (AWS CLI): 

    EnableDockerAccess : ENABLED
  • Con EnableDockerAccess, también puede controlar si los usuarios del dominio pueden usar el modo local. De forma predeterminada, el modo local y las capacidades de Docker no están permitidos en las aplicaciones de Studio. Para obtener más información, consulte Configuración de EnableDockerAccess.

  • Instale la Docker CLI en la aplicación de Studio siguiendo los pasos que se indican en Instalación de Docker.

  • Para Configuración de Docker sin raíz, asegúrese de que su VPC tenga configurados los puntos de conexión y el enrutamiento adecuados para los registros de Docker que desee.

Configuración de EnableDockerAccess

En las siguientes secciones se muestra cómo configurar EnableDockerAccess cuándo el dominio tiene acceso público a Internet o está en modo VPC-only.

nota

Los cambios de EnableDockerAccess se aplicarán únicamente a las aplicaciones creadas después de actualizar el dominio. Debe crear una nueva aplicación después de actualizar el dominio.

Acceso público a Internet

Los siguientes comandos de ejemplo muestran cómo configurar EnableDockerAccess al crear un nuevo dominio o actualizar un dominio existente con acceso público a Internet:

# create new domain aws --region region \ sagemaker create-domain --domain-name domain-name \ --vpc-id vpc-id \ --subnet-ids subnet-ids \ --auth-mode IAM \ --default-user-settings "ExecutionRole=execution-role" \ --domain-settings '{"DockerSettings": {"EnableDockerAccess": "ENABLED"}}' \ --query DomainArn \ --output text # update domain aws --region region \ sagemaker update-domain --domain-id domain-id \ --domain-settings-for-update '{"DockerSettings": {"EnableDockerAccess": "ENABLED"}}'

Modo VPC-only

Cuando se utiliza un dominio en modo VPC-only, las solicitudes de inserción y extracción de imágenes de Docker se enrutan a través de la VPC del servicio en lugar de a través de la VPC configurada por el cliente. Gracias a esta funcionalidad, los administradores pueden configurar una lista de Cuentas de AWS de confianza a las que los usuarios pueden enviar solicitudes de operaciones de Docker de inserción y extracción de Amazon ECR.

Si se envía una solicitud de inserción o extracción de imágenes de Docker a una Cuenta de AWS que no figura en la lista de Cuentas de AWS de confianza, se produce un error en la solicitud. Las operaciones de Docker de extracción y envío fuera del Amazon Elastic Container Registry (Amazon ECR) no se admiten en el modo VPC-only.

De forma predeterminada, las siguientes Cuentas de AWS son de confianza:

  • La cuenta que aloja el dominio de SageMaker AI.

  • Las cuentas de SageMaker AI que alojan las siguientes imágenes de SageMaker:

    • Imágenes de marco de trabajo de DLC

    • Imágenes de procesamiento de Sklearn, Spark y XGBoost

Para configurar una lista de Cuentas de AWS de confianza adicionales, especifique el valor de VpcOnlyTrustedAccounts de la siguiente manera:

aws --region region \ sagemaker update-domain --domain-id domain-id \ --domain-settings-for-update '{"DockerSettings": {"EnableDockerAccess": "ENABLED", "VpcOnlyTrustedAccounts": ["account-list"]}}'
nota

Cuando la Configuración de Docker sin raíz está habilitada, VpcOnlyTrustedAccounts se ignora y el tráfico de Docker se redirige a través de la configuración de la VPC, lo que permite el acceso a cualquier registro al que pueda acceder la VPC.

Configuración de Docker sin raíz

Cuando RootlessDocker está habilitado, Studio usa un daemon de Docker sin raíz que enruta el tráfico a través de la VPC. Esto mejora la seguridad y permite acceder a registros de Docker adicionales. Las principales diferencias con RootlessDocker son:

  • Se puede acceder a los puertos de los contenedores mediante la IP de la puerta de enlace de Docker (172.17.0.1) en lugar de mediante localhost.

  • La configuración de la VPC determina a qué registros pueden acceder las operaciones de Docker. VpcOnlyTrustedAccounts se ignora y el tráfico de Docker se enruta a través de la configuración de su VPC.

Para usar Docker sin raíz, tendrá que configurar EnableDockerAccess y RootlessDocker en ENABLED para la DockerSettings. Por ejemplo, en los ejemplos de Configuración de EnableDockerAccess anteriores, puede modificar la configuración del dominio para que incluya:

'{"DockerSettings": {"EnableDockerAccess": "ENABLED", "RootlessDocker": "ENABLED"}}'

Instalación de Docker

Para utilizar Docker, debe instalar manualmente Docker desde el terminal de su aplicación de Studio. Los pasos para instalar Docker son diferentes si el dominio tiene acceso a Internet o no.

Acceso a Internet

Si el dominio se crea con acceso público a Internet o en un modo VPC-only con acceso limitado a Internet, siga estos pasos para instalar Docker.

  1. (Opcional) Si el dominio se crea en modo VPC-only con acceso limitado a Internet, cree una puerta de enlace NAT pública con acceso al sitio web de Docker. Para obtener instrucciones, consulte Gateways NAT.

  2. Vaya al terminal de la aplicación de Studio en la que desee instalar Docker.

  3. Para devolver el sistema operativo de la aplicación, ejecute el siguiente comando desde el terminal:

    cat /etc/os-release
  4. Instale Docker siguiendo las instrucciones del sistema operativo de la aplicación en Amazon SageMaker AI Local Mode Examples repository.

    Por ejemplo, instale Docker en Ubuntu siguiendo el script de https://github.com/aws-samples/amazon-sagemaker-local-mode/blob/main/sagemaker_studio_docker_cli_install/sagemaker-ubuntu-focal-docker-cli-install.sh teniendo en cuenta las siguientes consideraciones:

    • Si se produce un error en los comandos encadenados, ejecute los comandos de uno en uno.

    • Studio solo admite Docker, versión 20.10.X. y la Docker Engine API, versión 1.41.

    • Los siguientes paquetes no son necesarios para usar la Docker CLI en Studio y su instalación se puede omitir:

      • containerd.io

      • docker-ce

      • docker-buildx-plugin

    nota

    No es necesario iniciar el servicio Docker en sus aplicaciones. La instancia en la que se aloja la aplicación de Studio ejecuta el servicio Docker de forma predeterminada. Todas las llamadas a la API de Docker se enrutan automáticamente a través del servicio Docker.

  5. Utilice el socket de Docker expuesto para las interacciones de Docker dentro de las aplicaciones de Studio. De forma predeterminada, se expone el siguiente socket:

    unix:///docker/proxy.sock

    La siguiente variable de entorno de la aplicación de Studio del USER predeterminado utiliza este socket expuesto:

    DOCKER_HOST

Sin acceso a Internet

Si el dominio se crea en modo VPC-only sin acceso a Internet, siga estos pasos para instalar Docker.

  1. Vaya al terminal de la aplicación de Studio en la que desee instalar Docker.

  2. Para devolver el sistema operativo de la aplicación, ejecute el siguiente comando desde el terminal:

    cat /etc/os-release
  3. Descargue los archivos .deb de Docker en el equipo local. Para obtener instrucciones sobre cómo descargar los archivos necesarios para el sistema operativo de la aplicación de Studio, consulte Install Docker Engine.

    Por ejemplo, instale Docker desde un paquete en Ubuntu siguiendo los pasos 1 a 4 de Install from a package teniendo en cuenta las siguientes consideraciones:

    • Instale Docker desde un paquete. Si se utilizan otros métodos para instalar Docker, se producirá un error.

    • Instale los paquetes más recientes correspondientes a la versión 20.10.X de Docker.

    • Los siguientes paquetes no son obligatorios para usar la Docker CLI en Studio. No es necesario instalar lo siguiente:

      • containerd.io

      • docker-ce

      • docker-buildx-plugin

    nota

    No es necesario iniciar el servicio Docker en sus aplicaciones. La instancia en la que se aloja la aplicación de Studio ejecuta el servicio Docker de forma predeterminada. Todas las llamadas a la API de Docker se enrutan automáticamente a través del servicio Docker.

  4. Cargue los archivos .deb en el sistema de archivos de Amazon EFS o en el sistema de archivos de Amazon EBS de la aplicación.

  5. Instale manualmente los paquetes .deb de docker-ce-cli y docker-compose-plugin desde el terminal de la aplicación de Studio. Para obtener más información e instrucciones, consulte el paso 5 de Install from a package en el sitio web de documentación de Docker.

  6. Utilice el socket de Docker expuesto para las interacciones de Docker dentro de las aplicaciones de Studio. De forma predeterminada, se expone el siguiente socket:

    unix:///docker/proxy.sock

    La siguiente variable de entorno de la aplicación de Studio del USER predeterminado utiliza este socket expuesto:

    DOCKER_HOST