Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Ejecuta tu código local como un trabajo SageMaker de formación
Puede ejecutar su código Python de aprendizaje automático (ML) local como un gran trabajo de SageMaker formación de Amazon de un solo nodo o como varios trabajos paralelos. Para ello, puede anotar el código con un decorador @remote, como se muestra en el siguiente ejemplo de código. Las funciones remotas no admiten el entrenamiento distribuido (en varias instancias).
@remote(**settings) def divide(x, y): return x / y
El SDK de SageMaker Python traducirá automáticamente tu entorno de espacio de trabajo existente y cualquier código de procesamiento de datos y conjuntos de datos asociados a un trabajo de SageMaker formación que se ejecuta en la plataforma de SageMaker formación. También puede activar una característica de caché persistente, que reducirá aún más la latencia de inicio de tareas al almacenar en caché los paquetes de dependencias descargados anteriormente. Esta reducción de la latencia de las tareas es mayor que la reducción de la latencia derivada del uso exclusivo de piscinas de agua caliente SageMaker gestionadas. Para obtener más información, consulte Uso de caché persistente.
nota
Las funciones remotas no admiten trabajos de entrenamiento distribuidos.
En las siguientes secciones, se muestra cómo anotar el código de ML local con un decorador @remote y cómo adaptar la experiencia a cada caso de uso. Esto incluye la personalización del entorno y la integración con SageMaker los experimentos.
Temas
- Configurar el entorno
- Invocación de una función
- Archivo de configuración
- Personalizar el entorno de tiempo de ejecución
- Compatibilidad de imágenes de contenedor
- Registrar parámetros y métricas con Amazon SageMaker Experiments
- Uso de código modular con el decorador @remote
- Repositorio privado para las dependencias de tiempo de ejecución
- Cuadernos de ejemplo
Configurar el entorno
Elija una de las siguientes tres opciones para configurar el entorno.
Puede anotar y ejecutar su código ML local desde SageMaker Studio Classic creando un SageMaker bloc de notas y adjuntando cualquier imagen disponible en SageMaker Studio Classic. Las siguientes instrucciones le ayudarán a crear un SageMaker bloc de notas, instalar el SDK de SageMaker Python y anotar el código con el decorador.
-
Cree un SageMaker bloc de notas y adjunte una imagen en SageMaker Studio Classic de la siguiente manera:
-
Siga las instrucciones de Launch Amazon SageMaker Studio Classic en la Guía para SageMaker desarrolladores de Amazon.
-
Seleccione Studio en el panel de navegación izquierdo. Se abre una nueva ventana.
-
En el cuadro de diálogo Get Started (Comenzar), seleccione un perfil de usuario en la flecha hacia abajo. Se abre una nueva ventana.
-
Selecciona Open Studio Classic.
-
Seleccione Open Launcher (Abrir lanzador) en el área de trabajo principal. Se abre una nueva página.
-
Seleccione Create notebook (Crear cuaderno) en el área de trabajo principal.
-
Seleccione Base Python 3.0 en la flecha hacia abajo situada junto a Image (Imagen) en el cuadro de diálogo Change environment (Cambiar entorno).
El decorador @remote detecta automáticamente la imagen adjunta al cuaderno SageMaker Studio Classic y la utiliza para ejecutar el trabajo de SageMaker formación. Si se especifica
image_uri
como argumento en el decorador o en el archivo de configuración, se utilizará el valor especificado enimage_uri
en lugar de la imagen detectada.Para obtener más información sobre cómo crear una libreta en SageMaker Studio Classic, consulte la sección Crear una libreta desde el menú Archivo en Crear o abrir una libreta de Amazon SageMaker Studio Classic.
Para obtener una lista de las imágenes disponibles, consulte Imágenes de Docker compatibles.
-
-
Instala el SDK de SageMaker Python.
Para anotar el código con la función @remote en un cuaderno clásico de SageMaker Studio, debe tener instalado el SDK de SageMaker Python. Instale el SDK de SageMaker Python, como se muestra en el siguiente ejemplo de código.
!pip install sagemaker
-
Utilice el decorador @remote para ejecutar funciones en un trabajo de SageMaker formación.
Para ejecutar tu código ML local, primero crea un archivo de dependencias para indicar SageMaker dónde ubicar tu código local. Para ello, siga estos pasos:
-
En el área de trabajo principal de SageMaker Studio Classic Launcher, en Utilidades y archivos, elija Archivo de texto. Se abrirá una nueva pestaña con un archivo de texto llamado
untitled.txt.
Para obtener más información sobre la interfaz de usuario (UI) de SageMaker Studio Classic, consulte Descripción general de la interfaz de usuario de Amazon SageMaker Studio Classic.
-
Cambie el nombre de
untitled.txt
arequirements.txt
. -
Añada todas las dependencias necesarias para el código junto con la SageMaker biblioteca a
requirements.txt
.En la siguiente sección, se proporciona un ejemplo de
requirements.txt
para la funcióndivide
, de la siguiente manera.sagemaker
-
Ejecute el código con el decorador remoto pasando el archivo de dependencias, de la siguiente manera.
from sagemaker.remote_function import remote @remote(instance_type="ml.m5.xlarge", dependencies='./requirements.txt') def divide(x, y): return x / y divide(2, 3.0)
Para ver ejemplos de código adicionales, consulte el cuaderno de ejemplo quick_start.ipynb
. Si ya utilizas un bloc de notas SageMaker Studio Classic e instalas el SDK de Python tal y como se indica en el punto 2. Instale el SDK de SageMaker Python, debe reiniciar el núcleo. Para obtener más información, consulte Uso de la barra de herramientas SageMaker Studio Classic Notebook en la Guía para SageMaker desarrolladores de Amazon.
-
Puedes anotar tu código ML local desde una instancia de SageMaker bloc de notas. Las siguientes instrucciones muestran cómo crear una instancia de notebook con un núcleo personalizado, instalar el SDK de SageMaker Python y anotar el código con el decorador.
-
Cree una instancia de cuaderno con un kernel
conda
personalizado.Puedes anotar tu código ML local con un decorador @remote para usarlo en un trabajo de formación. SageMaker En primer lugar, debe crear y personalizar una instancia de SageMaker bloc de notas para usar un núcleo con Python versión 3.7 o superior, hasta la 3.10.x. Para ello, siga estos pasos:
-
Abre la SageMaker consola en https://console.aws.amazon.com/sagemaker/.
-
En el panel de navegación izquierdo, elija Notebook (Cuaderno) para ampliar sus opciones.
-
Seleccione Notebook Instances (Instancias de cuaderno) entre las opciones ampliadas.
-
Elija el botón Create Notebook Instance (Crear instancia de cuaderno). Se abre una nueva página.
-
Para Notebook instance name (Nombre de la instancia de cuaderno), introduzva un nombre con un máximo de 63 caracteres y sin espacios. Caracteres válidos: A-Z, a-z, 0-9 y .:+=@ _%- (guion).
-
En el cuadro de diálogo de Notebook instance settings (Configuración de instancias de cuaderno), expanda la flecha derecha situada junto a Additional Configuration (Configuración adicional).
-
En Lifecycle configuration - optional (Configuración del ciclo de vida (opcional)), expanda la flecha hacia abajo y seleccione Create a new lifecycle configuration (Crear una nueva configuración del ciclo de vida). Se abrirá un nuevo cuadro de diálogo.
-
En Name (Nombre), escriba un nombre para la configuración.
-
En el cuadro de diálogo Scripts, en la pestaña Start notebook (Iniciar cuaderno), sustituya el contenido existente del cuadro de texto por el siguiente script.
#!/bin/bash set -e sudo -u ec2-user -i <<'EOF' unset SUDO_UID WORKING_DIR=/home/ec2-user/SageMaker/custom-miniconda/ source "$WORKING_DIR/miniconda/bin/activate" for env in $WORKING_DIR/miniconda/envs/*; do BASENAME=$(basename "$env") source activate "$BASENAME" python -m ipykernel install --user --name "$BASENAME" --display-name "Custom ($BASENAME)" done EOF echo "Restarting the Jupyter server.." # restart command is dependent on current running Amazon Linux and JupyterLab CURR_VERSION_AL=$(cat /etc/system-release) CURR_VERSION_JS=$(jupyter --version) if [[ $CURR_VERSION_JS == *$"jupyter_core : 4.9.1"* ]] && [[ $CURR_VERSION_AL == *$" release 2018"* ]]; then sudo initctl restart jupyter-server --no-wait else sudo systemctl --no-block restart jupyter-server.service fi
-
En el cuadro de diálogo Scripts, en la pestaña Create notebook (Crear cuaderno), sustituya el contenido existente del cuadro de texto por el siguiente script.
#!/bin/bash set -e sudo -u ec2-user -i <<'EOF' unset SUDO_UID # Install a separate conda installation via Miniconda WORKING_DIR=/home/ec2-user/SageMaker/custom-miniconda mkdir -p "$WORKING_DIR" wget https://repo.anaconda.com/miniconda/Miniconda3-4.6.14-Linux-x86_64.sh -O "$WORKING_DIR/miniconda.sh" bash "$WORKING_DIR/miniconda.sh" -b -u -p "$WORKING_DIR/miniconda" rm -rf "$WORKING_DIR/miniconda.sh" # Create a custom conda environment source "$WORKING_DIR/miniconda/bin/activate" KERNEL_NAME="custom_python310" PYTHON="3.10" conda create --yes --name "$KERNEL_NAME" python="$PYTHON" pip conda activate "$KERNEL_NAME" pip install --quiet ipykernel # Customize these lines as necessary to install the required packages EOF
-
Pulse el botón Create configuration (Crear configuración) en la parte inferior derecha de la ventana.
-
Pulse el botón Create notebook instance (Crear instancia de cuaderno) en la parte inferior derecha de la ventana.
-
Espere a que el estado de la instancia del bloc de notas cambie de Pendiente a InService.
-
-
Cree un cuaderno de Jupyter en la instancia del cuaderno.
Las siguientes instrucciones muestran cómo crear un cuaderno de Jupyter con Python 3.10 en la instancia recién creada. SageMaker
-
Una vez obtenido el estado de la instancia del bloc de notas del paso anterior InService, haga lo siguiente:
-
Seleccione Open Jupyter (Abrir Jupyter) en Actions (Acciones) en la fila que contiene el nombre de la instancia de cuaderno recién creada. Esto abre un nuevo servidor de Jupyter.
-
-
En el servidor Jupyter, seleccione New (Nuevo) en el menú superior derecho.
-
En la flecha hacia abajo, seleccione conda_custom_python310. Esto crea un nuevo cuaderno de Jupyter que usa un kernel de Python 3.10. Este nuevo cuaderno de Jupyter ahora se puede utilizar de forma similar a un cuaderno de Jupyter local.
-
-
Instala el SDK de SageMaker Python.
Una vez que se ejecute el entorno virtual, instale el SDK de SageMaker Python mediante el siguiente ejemplo de código.
!pip install sagemaker
-
Utilice un decorador @remote para ejecutar funciones en un trabajo de SageMaker formación.
Si anotas tu código ML local con un decorador @remote dentro del SageMaker cuaderno, el equipo de SageMaker formación interpretará automáticamente la función del código y lo ejecutará como un SageMaker trabajo de formación. Para configurar el cuaderno, haga lo siguiente:
-
Seleccione el nombre del núcleo en el menú del bloc de notas de la instancia de SageMaker bloc de notas que creó en el paso 1, Crear una instancia de SageMaker Notebook con un núcleo personalizado.
Para obtener más información, consulte Cambiar una imagen o un kernel.
-
En la flecha hacia abajo, elija un kernel
conda
personalizado que utilice una versión de Python 3.7 o superior.Por ejemplo, al seleccionar
conda_custom_python310
se elige el kernel de Python 3.10. -
Elija Seleccionar.
-
Espere a que el estado del kernel se muestre como inactivo, lo que indica que el kernel se ha iniciado.
-
En el servidor Jupyter, seleccione New (Nuevo) en el menú superior derecho.
-
Junto a la flecha hacia abajo, selecciona Text file (Archivo de texto). Esto crea un nuevo archivo de texto llamado
untitled.txt.
-
Cambie el nombre de
untitled.txt
arequirements.txt
y añada todas las dependencias necesarias para el código junto consagemaker
. -
Ejecute el código con el decorador remoto pasando el archivo de dependencias, como se indica a continuación.
from sagemaker.remote_function import remote @remote(instance_type="
ml.m5.xlarge
", dependencies='./requirements.txt') def divide(x, y): return x / y divide(2, 3.0)Para ver ejemplos de código adicionales, consulte el cuaderno de ejemplo quick_start.ipynb
.
-
Puede anotar su código de ML local con un decorador @remote dentro del IDE local que prefiera. Los siguientes pasos muestran los requisitos previos necesarios, cómo instalar el SDK de Python y cómo anotar el código con el decorador @remote.
-
Instale los requisitos previos configurando el AWS Command Line Interface (AWS CLI) y creando un rol, de la siguiente manera:
-
Inscríbase en un SageMaker dominio siguiendo las instrucciones de la sección AWS CLI Requisitos previos de Configurar los SageMaker requisitos previos de Amazon.
-
Cree un rol de IAM siguiendo la sección Crear rol de ejecución de Roles. SageMaker
-
-
Cree un entorno virtual utilizando PyCharm o
conda
utilizando Python versión 3.7 o superior, hasta la 3.10.x.-
Configure un entorno virtual de la PyCharm siguiente manera:
-
Seleccione File (Archivo) en el menú principal.
-
Elija New Project (Nuevo proyecto).
-
Elija Conda en la flecha hacia abajo en New environment using (Nuevo entorno utilizando).
-
En el campo correspondiente de Python version (Versión de Python), utilice la flecha hacia abajo para seleccionar una versión de Python que sea 3.7 o superior. Puede ir a la versión 3.10.x de la lista.
-
-
Si tiene Anaconda instalado, puede configurar un entorno virtual utilizando
conda
de la siguiente manera:-
Abra una interfaz de terminal rápida de Anaconda.
-
Cree y active un nuevo entorno
conda
con una versión de Python 3.7 o superior, hasta 3.10x. En el ejemplo de código siguiente se muestra cómo crear un entornoconda
utilizando Python versión 3.10.conda create -n
sagemaker_jobs_quick_start
python=3.10 pip conda activatesagemaker_jobs_quick_start
-
-
-
Instala el SDK de SageMaker Python.
Para empaquetar el código desde su IDE preferido, debe tener un entorno virtual configurado con Python 3.7 o superior, hasta 3.10x. También necesita una imagen de contenedor compatible. Instala el SDK de SageMaker Python mediante el siguiente ejemplo de código.
pip install sagemaker
-
Encapsule el código dentro del decorador @remote. El SDK de SageMaker Python interpretará automáticamente la función de tu código y lo ejecutará como un trabajo de SageMaker entrenamiento. Los siguientes ejemplos de código muestran cómo importar las bibliotecas necesarias, configurar una SageMaker sesión y anotar una función con el decorador @remote.
Puede ejecutar el código proporcionando directamente las dependencias necesarias o utilizando las dependencias del entorno
conda
activo.-
Para proporcionar las dependencias directamente, haga lo siguiente:
-
Cree un archivo
requirements.txt
en el directorio de trabajo en el que reside el código. -
Agrega todas las dependencias necesarias para el código junto con la biblioteca. SageMaker En la siguiente sección se proporciona un ejemplo de código mínimo para
requirements.txt
para la funcióndivide
de ejemplo.sagemaker
-
Ejecute el código con el decorador @remote pasando el archivo de dependencias. En el siguiente ejemplo de código,
The IAM role name
sustitúyalo por un ARN de rol AWS Identity and Access Management (IAM) que te SageMaker gustaría usar para ejecutar tu trabajo.import boto3 import sagemaker from sagemaker.remote_function import remote sm_session = sagemaker.Session(boto_session=boto3.session.Session(region_name="
us-west-2
")) settings = dict( sagemaker_session=sm_session, role=<The IAM role name>
, instance_type="ml.m5.xlarge
", dependencies='./requirements.txt' ) @remote(**settings) def divide(x, y): return x / y if __name__ == "__main__": print(divide(2, 3.0))
-
-
Para usar las dependencias del entorno
conda
activo, utilice el valorauto_capture
del parámetrodependencies
, tal y como se muestra a continuación.import boto3 import sagemaker from sagemaker.remote_function import remote sm_session = sagemaker.Session(boto_session=boto3.session.Session(region_name="
us-west-2
")) settings = dict( sagemaker_session=sm_session, role=<The IAM role name>
, instance_type="ml.m5.xlarge
", dependencies="auto_capture" ) @remote(**settings) def divide(x, y): return x / y if __name__ == "__main__": print(divide(2, 3.0))nota
También puedes implementar el código anterior en un bloc de notas de Jupyter. PyCharm Professional Edition es compatible con Jupyter de forma nativa. Para obtener más información, consulte el soporte para Jupyter Notebook
en la documentación. PyCharm
-