Blog de Amazon Web Services (AWS)

Alojando code-server en Amazon SageMaker

Por Sofian Hamiti,
Eric Peña, y
Giuseppe Angelo Porcelli 
 

Los equipos de aprendizaje automático (ML) necesitan flexibilidad para elegir su entorno de desarrollo integrado (IDE) cuando trabajan en un proyecto. Lo que permite tener una experiencia de desarrollador mas productiva e innovar a gran velocidad. Incluso se puede usar varios IDE dentro de un proyecto. Amazon SageMaker permite que los equipos de aprendizaje automático elijan trabajar desde entornos basados en la nube totalmente administrados dentro de Amazon SageMaker Studio , SageMaker Notebook Instances o desde su máquina local usando el modo local .

SageMaker proporciona una experiencia de uso de un solo clic a Jupyter y RStudio para crear, entrenar, depurar, implementar y monitorear modelos de ML. En esta publicación, también compartiremos una solución para alojar un code-server en SageMaker.

Con Code-Server, los usuarios pueden ejecutar VS Code en máquinas remotas y acceder a él en un navegador web. Para los equipos de aprendizaje automático, alojar el servidor de código en SageMaker proporciona cambios mínimos a una experiencia de desarrollo local y le permite codificar desde cualquier lugar, usando computación en la nube que permite escalar. Con VS Code, también puede usar entornos Conda integrados con TensorFlow y PyTorch optimizados para AWS, repositorios Git administrados, modo local y otras funciones proporcionadas por SageMaker para acelerar su entrega. Para los administradores de TI, les permite estandarizar y acelerar el aprovisionamiento de IDE seguros y administrados en la nube, para incorporar rápidamente y habilitar equipos de ML en sus proyectos.

 

Descripción general de la solución

En esta publicación, cubrimos la instalación tanto para entornos de Sagemaker Studio (Opción A) como para instancias de Sagemaker Notebook (Opción B). Para cada opción, recorremos un proceso de instalación manual que los equipos de ML pueden ejecutar en su entorno y una instalación automatizada que los administradores de TI pueden configurar para ellos a través de la interfaz de línea de comandos de AWS (AWS CLI).

El siguiente diagrama ilustra la descripción general de la arquitectura para alojar un code-server en SageMaker.

ml-10244-architecture-overview

Nuestra solución acelera la instalación y configuración del code-server en su entorno. Funciona tanto para JupyterLab 3 (recomendado) como para JupyterLab 1 que se ejecutan en instancias de notebook de Studio y SageMaker. Está hecho de scripts de shell que hacen lo siguiente según la opción.

Para Studio (Opción A), el script de shell hace lo siguiente:

Para instancias de notebooks de SageMaker (Opción B), el script de shell hace lo siguiente:

  • Instala el servidor de códigos.
  • Agrega un acceso directo al code-server en el menú del archivo del Notebook de Jupyter y el iniciador de JupyterLab para un acceso rápido al IDE.
  • Crea un entorno Conda dedicado para administrar dependencias.
  • Instale las extensiones de Python y Docker en el IDE.

En las siguientes secciones, explicamos el proceso de instalación de la solución para la Opción A y la Opción B. Asegúrese de tener acceso a Studio o una instancia de notebook.

 

Opción A: Servidor de código alojado en Studio

Para alojar Code-Server en Studio, complete los siguientes pasos:

Elija el “Terminal del sistema” en su launcher de Studio.
ml-10244-studio-terminal-click

2. Para instalar la solución del servidor de códigos, ejecute los siguientes comandos en la terminal de su sistema:

curl -LO https://github.com/aws-samples/amazon-sagemaker-codeserver/releases/download/v0.1.5/amazon-sagemaker-codeserver-0.1.5.tar.gz
tar -xvzf amazon-sagemaker-codeserver-0.1.5.tar.gz

cd amazon-sagemaker-codeserver/install-scripts/studio
 
chmod +x install-codeserver.sh
./install-codeserver.sh

# Nota: al instalar en JL1, anteponga el comando nohup al comando de instalación anterior y ejecútelo de la siguiente manera:
	# nohup ./install-codeserver.sh
 
         
Los comandos deberían tardar unos segundos en completarse. 3. Vuelva a cargar la página del navegador, donde puede ver un botón de “Code Server” en su iniciador de Studio. ml-10244-code-server-button 4. Elija “Code Server” para abrir una nueva pestaña del navegador, lo que le permitirá acceder al code-server desde su navegador. La extensión de Python ya está instalada y puede comenzar a trabajar en su proyecto de ML ml-10244-vscode Puede abrir la carpeta de su proyecto en VS Code y seleccionar el entorno Conda preconstruido para ejecutar sus scripts de Python. ml-10244-vscode-conda

Automate the code-server install for users in a StudiAutomatice la instalación del code-server para usuarios en un dominio de Studio

Como administrador de TI, puede automatizar la instalación para los usuarios de Studio mediante una configuración de ciclo de vida . Se puede hacer para todos los perfiles de usuarios bajo un dominio de Studio o para perfiles específicos. Consulte Personalizar Amazon SageMaker Studio mediante configuraciones de ciclo de vida para obtener más detalles. Para esta publicación, creamos una configuración de ciclo de vida a partir de la secuencia de comandos install-codeserver y la adjuntamos a un dominio de Studio existente. La instalación se realiza para todos los perfiles de usuario del dominio. Desde un terminal configurado con la CLI de AWS y los permisos apropiados, ejecute los siguientes comandos:
curl -LO https://github.com/aws-samples/amazon-sagemaker-codeserver/releases/download/v0.1.5/amazon-sagemaker-codeserver-0.1.5.tar.gz
tar -xvzf amazon-sagemaker-codeserver-0.1.5.tar.gz

cd amazon-sagemaker-codeserver/install-scripts/studio

LCC_CONTENT=`openssl base64 -A -in install-codeserver.sh`

aws sagemaker create-studio-lifecycle-config \
--studio-lifecycle-config-name install-codeserver-on-jupyterserver \
--studio-lifecycle-config-content $LCC_CONTENT \
--studio-lifecycle-config-app-tipo JupyterServer \
--query 'StudioLifecycleConfigArn'

dominio de actualización de aws sagemaker \
--region < su_región > \
--domain-id < su_dominio_id > \
--configuración de usuario predeterminada \
    '{
"JupyterServerAppSettings": {
"Especificación de recurso predeterminada": {
"LifecycleConfigArn": "arn:aws:sagemaker: <su_región> : <su_id_de_cuenta> :studio-lifecycle-config/install-codeserver-on-jupyterserver",
"Tipo de instancia": "sistema"
},
"LifecycleConfigArns": [
"arn:aws:sagemaker: <su_región> : <su_id_de_cuenta> :studio-lifecycle-config/install-codeserver-on-jupyterserver"
]
}}'

# Asegúrese de reemplazar <your_domain_id> , <your_region> y <your_account_id> en los comandos anteriores con
# el ID de dominio de Studio, la región de AWS y el ID de la cuenta de AWS que está utilizando, respectivamente.
 
         
Después de que Jupyter Server se reinicia, el botón “Code Server” aparece en su iniciador de Studio.

Opción B: Hospede el code-server en una instancia de notebook de SageMaker

Para alojar el code-server en una instancia de notebook de SageMaker, complete los siguientes pasos: 1. Inicie una terminal a través de Jupyter o JupyterLab para su instancia de notebook. Si usa Jupyter, elija “Terminal” en el menú 2. Para instalar la solución del servidor de códigos, ejecute los siguientes comandos en su terminal:
curl -LO https://github.com/aws-samples/amazon-sagemaker-codeserver/releases/download/v0.1.5/amazon-sagemaker-codeserver-0.1.5.tar.gz
tar -xvzf amazon-sagemaker-codeserver-0.1.5.tar.gz

cd amazon-sagemaker-codeserver/install-scripts/notebook-instances
 
chmod +x install-codeserver.sh
chmod +x setup-codeserver.sh
sudo ./install-codeserver.sh
sudo ./setup-codeserver.sh

Las instalaciones del code-server y las extensiones son persistentes en la instancia del Notebook. Sin embargo, si detiene o reinicia la instancia, debe ejecutar el siguiente comando para reconfigurar el servidor de códigos:

sudo ./setup-codeserver.sh

Los comandos deberían tardar unos segundos en ejecutarse. Puede cerrar la pestaña del terminal cuando vea lo siguiente.

ml-10244-terminal-output

  1. Ahora vuelva a cargar la página de Jupyter y vuelva a comprobar el menú Nuevo.
    • La opción “Code Server” ahora debería estar disponible.

También puede iniciar el “code-server” desde JupyterLab mediante un botón de inicio dedicado, como se muestra en la siguiente captura de pantalla.

ml-10244-jupyterlab-code-server-button

Elige “Code-server” , se abrirá una nueva pestaña del navegador, lo que le permitirá acceder al code-server desde su navegador. Las extensiones de Python y Docker ya están instaladas y puede comenzar a trabajar en su proyecto de ML.

ml-10244-notebook-vscode

Automatice la instalación del code-server en una instancia de notebook

Como administrador de TI, puede automatizar la instalación del code-server con una configuración de ciclo de vida que se ejecuta en la creación de la instancia y automatiza la configuración con una que se ejecuta en el inicio de la instancia.

Aquí, creamos una instancia de notebook de ejemplo y una configuración de ciclo de vida utilizando la CLI de AWS . La configuración de creación ejecuta install-codeserver y la configuración de inicio ejecuta setup-codeserver .

Desde un terminal configurado con la CLI de AWS y los permisos apropiados, ejecute los siguientes comandos:

curl -LO https://github.com/aws-samples/amazon-sagemaker-codeserver/releases/download/v0.1.5/amazon-sagemaker-codeserver-0.1.5.tar.gz
tar -xvzf amazon-sagemaker-codeserver-0.1.5.tar.gz

cd amazon-sagemaker-codeserver/install-scripts/notebook-instances

aws sagemaker create-notebook-instance-lifecycle-config \
--notebook-instance-lifecycle-config-name install-codeserver \
--on-start Content=$( ( cat setup-codeserver.sh || echo "" ) | base64) \
--on-create Content=$( ( cat install-codeserver.sh || echo "" ) | base64)

aws sagemaker create-notebook-instancia \
--notebook-instance-name < your_notebook_instance_name > \
--tipo-de-instancia < su_tipo_de_instancia > \
--role-arn < su_rol_arn > \
--lifecycle-config-name install-codeserver

# Asegúrese de reemplazar <your_notebook_instance_name> , <your_instance_type> ,
# y <your_role_arn> en los comandos anteriores con los valores apropiados.
 

La instalación del code-server ahora está automatizada para la instancia del Notebook.

Conclusión

Con el code-server alojado en SageMaker, los equipos de ML pueden ejecutar VS Code en computación en la nube escalable, codificar desde cualquier lugar y acelerar la entrega de sus proyectos de ML. Para los administradores de TI, les permite estandarizar y acelerar el aprovisionamiento de IDE seguros y administrados en la nube, para incorporar rápidamente y habilitar equipos de ML en sus proyectos.

En esta publicación, compartimos una solución que puede usar para instalar rápidamente Code-Server en las instancias de Studio y Notebook. Compartimos un proceso de instalación manual que los equipos de ML pueden ejecutar por su cuenta y una instalación automatizada que los administradores de TI pueden configurar para ellos.

Para profundizar en su aprendizaje, visite AWSome SageMaker en GitHub para encontrar todos los recursos relevantes y actualizados necesarios para trabajar con SageMaker.

 

Este artículo fue traducido del Blog de AWS en Inglés


Acerca de los autores

Giuseppe Angelo Porcelli es Principal Machine Learning Specialist Solutions Architect en Amazon Web Services.

 

 

 

 

Sofian Hamiti es AI/ML specialist Solutions Architect en AWS.

 

 

 

 

Eric Pena es Senior Technical Product Manager en AWS Artificial Intelligence

 

 

 

 

 

 

 

Traductor

Sergio Beltrán es arquitecto de soluciones especialista en AI/ML en AWS. En su rol apoya a los clientes a encontrar la mejor solución y arquitectura para sus necesidades al igual que aprovechar los servicios de AI/ML para generar innovación y mejorar la productividad. Antes de AWS, trabajó como data scientist y gerente de business development en la industria de Telco.

 

 

 

Revisores

Luisa Vesga es arquitecta de soluciones especialista en Machine Learning en Amazon Web Services. En su puesto, ayuda a las compañías a superar los desafíos empresariales aprovechando la plataforma de AWS. Tiene más de 10 años de experiencia en el campo de la tecnología.

 

 

 

 

Diego Ortiz es Arquitecto de soluciones especialista en analítica en AWS.