Creación de una imagen de SageMaker personalizada en Amazon SageMaker Studio Classic - Amazon SageMaker AI

Creación de una imagen de SageMaker personalizada en Amazon SageMaker Studio Classic

importante

Las políticas de IAM personalizadas que permiten a Amazon SageMaker Studio o Amazon SageMaker Studio Classic crear recursos de Amazon SageMaker también deben conceder permisos para añadir etiquetas a dichos recursos. El permiso para añadir etiquetas a los recursos es necesario porque Studio y Studio Classic etiquetan automáticamente todos los recursos que crean. Si una política de IAM permite a Studio y Studio Classic crear recursos, pero no permite el etiquetado, se pueden producir errores AccessDenied al intentar crear recursos. Para obtener más información, consulte Concesión de permisos para etiquetar recursos de SageMaker AI.

Las Políticas administradas por AWS para Amazon SageMaker AI que conceden permisos para crear recursos de SageMaker ya incluyen permisos para añadir etiquetas al crear esos recursos.

importante

A partir del 30 de noviembre de 2023, la experiencia anterior de Amazon SageMaker Studio pasa a denominarse Amazon SageMaker Studio Classic. La siguiente sección es específica del uso de la aplicación de Studio Classic. Para obtener información sobre el uso de la experiencia de Studio actualizada, consulte Amazon SageMaker Studio.

En este tema se describe cómo crear una imagen de SageMaker personalizada desde la consola de SageMaker AI o la AWS CLI.

Al crear una imagen desde la consola, SageMaker AI también crea una versión inicial de la imagen. La versión de la imagen representa una imagen de contenedor en Amazon Elastic Container Registry (ECR). La imagen del contenedor debe cumplir los requisitos que se deben utilizar en Amazon SageMaker Studio Classic. Para obtener más información, consulte Especificaciones de imágenes de SageMaker personalizadas para Amazon SageMaker Studio Classic. Para obtener información sobre cómo probar la imagen localmente y resolver problemas comunes, consulte el repositorio de muestras de imágenes personalizadas de SageMaker Studio Classic.

Una vez creada la imagen personalizada de SageMaker, debe asociarla a su dominio o espacio compartido para usarla con Studio Classic. Para obtener más información, consulte Asociación de una imagen de SageMaker personalizada en Amazon SageMaker Studio Classic.

Creación de una imagen de SageMaker desde la consola

En la siguiente sección se muestra cómo crear una imagen de SageMaker personalizada desde la consola de SageMaker AI.

Para crear una imagen
  1. Abra la consola de Amazon SageMaker AI en https://console.aws.amazon.com/sagemaker/.

  2. En el panel de navegación izquierdo, seleccione Configuraciones de administración.

  3. En Configuraciones de administrador, elija Imágenes.

  4. En la página Imágenes personalizadas, elija Crear imagen.

  5. Para Fuente de imagen, introduzca la ruta de registro de la imagen de contenedor en Amazon ECR. La ruta tiene el siguiente formato:

    acct-id.dkr.ecr.region.amazonaws.com/repo-name[:tag] or [@digest]

  6. Seleccione Siguiente.

  7. En Propiedades de imagen, introduzca lo siguiente:

    • Nombre de imagen: el nombre debe ser exclusivo de su cuenta en la Región de AWS actual.

    • (Opcional) Nombre para mostrar: nombre que se muestra en la interfaz de usuario de Studio Classic. Cuando no se proporciona, se muestra Image name.

    • (Opcional) Descripción: descripción de la imagen.

    • Rol de IAM: el rol debe tener asociada la política AmazonSageMakerFullAccess. Utilice el menú desplegable para elegir una de las opciones siguientes:

      • Crear un nuevo rol: especifique cualquier bucket adicional de Amazon Simple Storage Service (Amazon S3) al que desee que los usuarios de sus cuadernos tengan acceso. Si no desea permitir el acceso a buckets adicionales, elija Ninguno.

        SageMaker AI asocia la política AmazonSageMakerFullAccess al rol. El rol permite a los usuarios de sus cuadernos acceder a los buckets de S3 que aparecen junto a las marcas de verificación.

      • Introducir un ARN de rol de IAM personalizado: introduzca el nombre de recurso de Amazon (ARN) de su rol de IAM.

      • Usar rol existente: elija uno de los roles existentes de la lista.

    • (Opcional) Etiquetas de imagen: elija Añadir nueva etiqueta. Puede añadir hasta 50 etiquetas. Las etiquetas se pueden buscar desde la interfaz de usuario de Studio Classic, la consola de SageMaker AI o la API Search de SageMaker AI.

  8. Elija Enviar.

La nueva imagen se muestra en la lista Imágenes personalizadas y se resalta brevemente. Una vez creada correctamente la imagen, puede elegir el nombre de la imagen para ver sus propiedades o elegir Crear versión para crear otra versión.

Para crear otra versión de la imagen
  1. Elija Crear versión en la misma fila que la imagen.

  2. Para Fuente de imagen, introduzca la ruta de registro de la imagen de contenedor de Amazon ECR. La imagen del contenedor no debe ser la misma que se usaba en una versión anterior de la imagen de SageMaker.

Creación de una imagen de SageMaker desde la AWS CLI

Lleve a cabo los siguientes pasos para crear una imagen de SageMaker a partir de la imagen de contenedor utilizando la AWS CLI.

  • Crear una Image.

  • Cree una ImageVersion.

  • Cree un archivo de configuración.

  • Cree una AppImageConfig.

Para crear las entidades de imagen de SageMaker
  1. Cree una imagen de SageMaker.

    aws sagemaker create-image \ --image-name custom-image \ --role-arn arn:aws:iam::<acct-id>:role/service-role/<execution-role>

    El resultado debería ser similar al siguiente.

    { "ImageArn": "arn:aws:sagemaker:us-east-2:acct-id:image/custom-image" }
  2. Cree una versión de imagen de SageMaker a partir de la imagen de contenedor.

    aws sagemaker create-image-version \ --image-name custom-image \ --base-image <acct-id>.dkr.ecr.<region>.amazonaws.com/smstudio-custom:custom-image

    El resultado debería ser similar al siguiente.

    { "ImageVersionArn": "arn:aws:sagemaker:us-east-2:acct-id:image-version/custom-image/1" }
  3. Compruebe que la versión de la imagen se haya creado correctamente.

    aws sagemaker describe-image-version \ --image-name custom-image \ --version-number 1

    El resultado debería ser similar al siguiente.

    { "ImageVersionArn": "arn:aws:sagemaker:us-east-2:acct-id:image-version/custom-image/1", "ImageVersionStatus": "CREATED" }
    nota

    Si la respuesta es "ImageVersionStatus": "CREATED_FAILED", también incluye el motivo del error. Un problema de permisos es una causa común de error. También puede comprobar los registros de Amazon CloudWatch si se produce un error al iniciar o ejecutar la aplicación KernelGateway para obtener una imagen personalizada. El nombre del grupo de registro es /aws/sagemaker/studio. El nombre del flujo de registro es $domainID/$userProfileName/KernelGateway/$appName.

  4. Cree un archivo de configuración llamado app-image-config-input.json. El valor Name de KernelSpecs debe coincidir con el nombre de kernelSpec disponible en la imagen asociada a esta AppImageConfig. Este valor distingue entre mayúsculas y minúsculas. Puede encontrar las kernelSpecs disponibles en una imagen ejecutando jupyter-kernelspec list desde un intérprete de comandos dentro del contenedor. MountPath es la ruta dentro de la imagen para montar el directorio principal de Amazon Elastic File System (Amazon EFS). Debe ser diferente de la ruta que utiliza dentro del contenedor porque esa ruta se anulará cuando se monte el directorio principal de Amazon EFS.

    nota

    Las siguientes combinaciones de DefaultUID y DefaultGID son los únicos valores aceptables:

    • DefaultUID: 1000 y DefaultGID: 100

    • DefaultUID: 0 y DefaultGID: 0

    { "AppImageConfigName": "custom-image-config", "KernelGatewayImageConfig": { "KernelSpecs": [ { "Name": "python3", "DisplayName": "Python 3 (ipykernel)" } ], "FileSystemConfig": { "MountPath": "/home/sagemaker-user", "DefaultUid": 1000, "DefaultGid": 100 } } }
  5. Cree la AppImageConfig utilizando el archivo creado en el paso anterior.

    aws sagemaker create-app-image-config \ --cli-input-json file://app-image-config-input.json

    El resultado debería ser similar al siguiente.

    { "AppImageConfigArn": "arn:aws:sagemaker:us-east-2:acct-id:app-image-config/custom-image-config" }