Hoy, nos complace presentar una nueva función para SageMaker Studio: la indexación SOCI (Seekable Open Container Initiative). SOCI admite la carga diferida de imágenes de contenedores, donde inicialmente solo se descargan las partes necesarias de una imagen en lugar de todo el contenedor.
SageMaker Studio sirve como un entorno de desarrollo integrado (IDE) web para el desarrollo de aprendizaje automático (ML) de extremo a extremo, de modo que los usuarios puedan crear, entrenar, implementar y administrar tanto modelos de ML tradicionales como modelos básicos (FM) para el flujo de trabajo de ML completo.
Cada aplicación de SageMaker Studio se ejecuta dentro de un contenedor que empaqueta las bibliotecas, marcos y dependencias necesarios para una ejecución consistente en cargas de trabajo y sesiones de usuario. Esta arquitectura en contenedores permite que SageMaker Studio admita una amplia gama de marcos de aprendizaje automático, como TensorFlow, PyTorch, scikit-learn y más, manteniendo un fuerte aislamiento del entorno. Aunque SageMaker Studio proporciona contenedores para los entornos de aprendizaje automático más comunes, es posible que los científicos de datos necesiten adaptar estos entornos para casos de uso específicos agregando o eliminando paquetes, configurando variables de entorno personalizadas o instalando dependencias especializadas. SageMaker Studio admite esta personalización a través de Configuraciones de ciclo de vida (LCC), que permiten a los usuarios ejecutar scripts bash al iniciar un espacio IDE de Studio. Sin embargo, personalizar repetidamente los entornos utilizando LCC puede llevar mucho tiempo y ser difícil de mantener a escala. Para solucionar este problema, SageMaker Studio admite la creación y el registro de imágenes de contenedores personalizadas con bibliotecas y marcos preconfigurados. Estas imágenes personalizadas reutilizables reducen la fricción de configuración y mejoran la reproducibilidad para lograr coherencia entre proyectos, de modo que los científicos de datos puedan centrarse en el desarrollo de modelos en lugar de en la gestión del entorno.
A medida que las cargas de trabajo de aprendizaje automático se vuelven cada vez más complejas, las imágenes de contenedores que impulsan estos entornos han aumentado de tamaño, lo que genera tiempos de inicio más prolongados que pueden retrasar la productividad e interrumpir los flujos de trabajo de desarrollo. Los científicos de datos, los ingenieros de aprendizaje automático y los desarrolladores pueden tener tiempos de espera más prolongados para que se inicialicen sus entornos, especialmente cuando cambian entre diferentes marcos o cuando usan imágenes con extensas bibliotecas y dependencias preinstaladas. Esta latencia inicial se convierte en un cuello de botella importante en el desarrollo iterativo del aprendizaje automático, donde la experimentación rápida y la creación rápida de prototipos son esenciales. En lugar de descargar la imagen completa del contenedor por adelantado, SOCI crea un índice que permite al sistema recuperar solo los archivos y capas específicos necesarios para iniciar la aplicación, con componentes adicionales cargados según sea necesario. Esto reduce significativamente los tiempos de inicio de los contenedores de minutos a segundos, lo que permite que sus entornos de SageMaker Studio se inicien más rápido y le permitan trabajar en sus proyectos de ML antes, lo que en última instancia mejora la productividad de los desarrolladores y reduce el tiempo de obtención de información para los experimentos de ML.
Requisitos previos
Para utilizar la indexación SOCI con SageMaker Studio, necesita:
Indexación SOCI de SageMaker Studio: descripción general de las funciones
La SOCI (Seekable Open Container Initiative ) , originalmente de código abierto por AWS, aborda los retrasos en el inicio de contenedores en SageMaker Studio mediante la carga selectiva de imágenes. Esta tecnología crea un índice especializado que mapea la estructura interna de las imágenes del contenedor para un acceso granular a archivos individuales sin descargar primero todo el archivo del contenedor. Las imágenes de contenedores tradicionales se almacenan como listas ordenadas de capas en archivos tar comprimidos con gzip, que normalmente requieren una descarga completa antes de acceder a cualquier contenido. SOCI supera esta limitación generando un índice separado almacenado como un artefacto OCI que se vincula a la imagen del contenedor original a través de tipos de referencia OCI. Este diseño conserva todas las imágenes originales del contenedor, mantiene resúmenes de imágenes consistentes y garantiza la validez de la firma, factores críticos para entornos de IA/ML con estrictos requisitos de seguridad.
Para los usuarios de SageMaker Studio, pueden implementar la indexación SOCI a través de la integración con el tiempo de ejecución del contenedor Finch, lo que se traduce en una reducción del 35 al 70 % en los tiempos de inicio del contenedor en todos los tipos de instancias utilizando Bring Your Own Image (BYOI). Esta implementación se extiende más allá de las estrategias de optimización actuales que se limitan a combinaciones específicas de imágenes propias y tipos de instancias, proporcionando tiempos de inicio de aplicaciones más rápidos en los entornos SageMaker AI Studio y SageMaker Unified Studio.
Crear un índice SOCI
Para crear y administrar índices SOCI, puede utilizar varias herramientas de administración de contenedores, cada una de las cuales ofrece diferentes ventajas según su entorno de desarrollo y sus preferencias:
Finch CLI es una herramienta de línea de comandos compatible con Docker desarrollada por AWS que brinda soporte nativo para crear e impulsar índices SOCI. Ofrece una interfaz familiar similar a Docker e incluye funcionalidad SOCI incorporada, lo que facilita la creación de imágenes indexadas sin herramientas adicionales. nerdctl sirve como una CLI de contenedor alternativa para containerd, el tiempo de ejecución de contenedores estándar de la industria. Proporciona comandos compatibles con Docker y al mismo tiempo ofrece integración directa con funciones en contenedores, incluida la compatibilidad con SOCI para capacidades de carga diferida. Docker + SOCI CLI combina la cadena de herramientas Docker ampliamente utilizada con la interfaz de línea de comandos SOCI dedicada. Este enfoque le permite aprovechar los flujos de trabajo de Docker existentes y al mismo tiempo agregar capacidades de indexación SOCI a través de una herramienta CLI independiente, lo que brinda flexibilidad a los equipos que ya han invertido en procesos de desarrollo basados en Docker.
En el flujo de trabajo estándar de SageMaker Studio, iniciar un entorno de aprendizaje automático requiere descargar la imagen completa del contenedor antes de que se pueda iniciar cualquier aplicación. Cuando el usuario inicia una nueva sesión de SageMaker Studio, el sistema debe extraer la imagen completa que contiene marcos como TensorFlow, PyTorch, scikit-learn, Jupyter y las dependencias asociadas del registro del contenedor. Este proceso es secuencial y requiere mucho tiempo: el tiempo de ejecución del contenedor descarga cada capa comprimida, extrae el sistema de archivos completo al almacenamiento local y solo entonces la aplicación puede comenzar la inicialización. Para imágenes de aprendizaje automático típicas que oscilan entre 2 y 5 GB, esto da como resultado tiempos de inicio de 3 a 5 minutos, lo que crea una fricción significativa en los flujos de trabajo de desarrollo iterativos donde los científicos de datos cambian con frecuencia entre diferentes entornos o reinician sesiones. El flujo de trabajo mejorado por SOCI transforma el inicio del contenedor al permitir la recuperación inteligente de archivos bajo demanda. En lugar de descargar imágenes completas, SOCI crea un índice de búsqueda que mapea la ubicación precisa de cada archivo dentro de las capas del contenedor comprimido. Al iniciar una aplicación SageMaker Studio, el sistema descarga solo el índice SOCI (normalmente entre 10 y 20 MB) y el conjunto mínimo de archivos necesarios para el inicio de la aplicación, normalmente entre el 5 y el 10 % del tamaño total de la imagen. El contenedor comienza a ejecutarse inmediatamente mientras un proceso en segundo plano continúa descargando los archivos restantes a medida que la aplicación los solicita. Este enfoque de carga diferida reduce los tiempos de inicio inicial de unos pocos minutos a segundos, lo que permite a los usuarios comenzar el trabajo productivo casi de inmediato mientras el entorno completa la inicialización de forma transparente en segundo plano.
Convirtiendo la imagen a SOCI
Puede convertir su imagen existente en una imagen SOCI y enviarla a su ECR privada usando los siguientes comandos:
Este proceso crea dos artefactos para la imagen del contenedor original en su repositorio ECR:
Índice SOCI: metadatos que permiten la carga diferida. Manifiesto de índice de imágenes: manifiesto compatible con OCI que los vincula.
Para utilizar imágenes indexadas por SOCI en SageMaker Studio, debe hacer referencia al URI del índice de la imagen en lugar del URI de la imagen del contenedor original al crear recursos de SageMaker Image y SageMaker Image Version. El URI del índice de la imagen corresponde a la etiqueta que especificó durante el proceso de conversión SOCI (por ejemplo, soci-image en el ejemplo anterior).
El URI del índice de imagen contiene referencias tanto a la imagen del contenedor como a su índice SOCI asociado a través del manifiesto del índice de imágenes OCI. Cuando SageMaker Studio inicia aplicaciones usando este URI, detecta automáticamente el índice SOCI y habilita capacidades de carga diferida.
La indexación SOCI es compatible con todos los entornos de aprendizaje automático (JupyterLab, CodeEditor, etc.) tanto para SageMaker Unified Studio como para SageMaker AI. Para obtener información adicional sobre cómo configurar su imagen de cliente, consulte la documentación Traiga su propia imagen de SageMaker.
Evaluación comparativa del impacto de SOCI en el inicio de SageMaker Studio JupyterLab
El objetivo principal de esta nueva función en SageMaker Studio es optimizar la experiencia del usuario final al reducir la duración de inicio de las aplicaciones de SageMaker Studio iniciadas con imágenes personalizadas. Para medir la efectividad de la carga diferida de imágenes de contenedores personalizados en SageMaker Studio usando SOCI, cuantificaremos y contrastaremos empíricamente las duraciones de inicio para una imagen personalizada determinada, tanto con como sin SOCI. Además, realizaremos esta prueba para una variedad de imágenes personalizadas que representan diversos conjuntos de dependencias, archivos y datos, para evaluar cómo la efectividad puede variar para los usuarios finales con diferentes necesidades de imágenes personalizadas.
Para cuantificar empíricamente las duraciones de inicio para los lanzamientos de aplicaciones de imágenes personalizadas, iniciaremos mediante programación las aplicaciones JupyterLab y CodeEditor con la API CreateApp de SageMaker, especificando el tiempo del evento candidato sageMakerImageArn y sageMakerImageVersionAlias con un tipo de instancia apropiado, y registrando el tiempo del evento para el análisis. Luego, sondearemos la API ListApps de SageMaker cada segundo para monitorear el inicio de la aplicación, registrando el tiempo del evento de la primera respuesta en la que el Estado se informa como En servicio. El delta entre estos dos tiempos para una aplicación en particular es la duración del inicio.
Para este análisis, hemos creado dos conjuntos de repositorios ECR privados, cada uno con las mismas imágenes de contenedor personalizadas de SageMaker pero con un solo conjunto que implementa índices SOCI. Al comparar las imágenes equivalentes en ECR, podemos ver los artefactos SOCI presentes en un solo repositorio. Implementaremos las aplicaciones en un único dominio de IA de SageMaker. Todas las imágenes personalizadas se adjuntan a ese dominio para que los usuarios de SageMaker Studio puedan elegir esas imágenes personalizadas al invocar el inicio de un espacio de JupyterLab.
Para ejecutar las pruebas, para cada imagen personalizada, invocamos una serie de diez llamadas a la API CreateApp:
La siguiente tabla captura la aceleración del inicio con el índice SOCI habilitado para imágenes de distribución de Amazon SageMaker:
Tipo de aplicación Tipo de instancia Imagen Duración de inicio de la aplicación (s) % Reducción en la duración de inicio de la aplicación Imagen normal Imagen SOCI SMAI JupyterLab t3.medium SMD 3.4.2 231 150 35.06% t3.medium SMD 3.4.2 350 191 45.43% c7i.large SMD 3.4.2 331 141 57.40% SMAI CodeEditor t3.medio SMD 3.4.2 202 110 45,54 % t3.medio SMD 3.4.2 213 78 63,38 % c7i.grande SMD 3.4.2 279 91 67,38 %
Nota: La latencia de inicio de cada aplicación y su mejora pueden variar según la disponibilidad de las instancias de SageMaker ML.
Según estos hallazgos, vemos que ejecutar imágenes personalizadas de SageMaker Studio con índices SOCI permite a los usuarios de SageMaker Studio iniciar sus aplicaciones más rápido en comparación con sin índices SOCI. Específicamente, vemos un tiempo de inicio de contenedores entre un 35% y un 70% más rápido.
Conclusión
En esta publicación, le mostramos cómo la introducción de la indexación SOCI en SageMaker Studio mejora la experiencia del desarrollador para los profesionales del aprendizaje automático. Al optimizar los tiempos de inicio de los contenedores mediante carga diferida (reduciendo los tiempos de espera de varios minutos a menos de un minuto), AWS ayuda a los científicos de datos, ingenieros de aprendizaje automático y desarrolladores a dedicar menos tiempo a esperar y más tiempo a innovar. Esta mejora aborda uno de los puntos de fricción más comunes en el desarrollo de ML iterativo, donde los cambios y reinicios frecuentes del entorno afectan la productividad. Con SOCI, los equipos pueden mantener su velocidad de desarrollo, experimentar con diferentes marcos y configuraciones y acelerar su camino desde la experimentación hasta la implementación de producción.
Sobre los autores
Pranav Murthy es científico senior de datos de IA generativa en AWS y se especializa en ayudar a las organizaciones a innovar con IA generativa, aprendizaje profundo y aprendizaje automático en Amazon SageMaker AI. Durante los últimos 10 años, ha desarrollado y ampliado modelos avanzados de visión por computadora (CV) y procesamiento de lenguaje natural (NLP) para abordar problemas de alto impacto, desde la optimización de las cadenas de suministro globales hasta permitir el análisis de video en tiempo real y la búsqueda multilingüe. Cuando no está creando soluciones de IA, Pranav disfruta jugando juegos estratégicos como el ajedrez, viajando para descubrir nuevas culturas y asesorando a aspirantes a profesionales de la IA. Puedes encontrar Pranav en LinkedIn.
Raj Bagwe es arquitecto senior de soluciones en Amazon Web Services, con sede en San Francisco, California. Con más de 6 años en AWS, ayuda a los clientes a afrontar desafíos tecnológicos complejos y se especializa en arquitectura, seguridad y migraciones de la nube. En su tiempo libre entrena un equipo de robótica y juega voleibol. Puedes encontrar a Raj en LinkedIn.
Nikita Arbuzov es ingeniero de desarrollo de software en Amazon Web Services, trabaja y mantiene la plataforma SageMaker Studio y sus aplicaciones, con sede en Nueva York, NY. Con más de 3 años de experiencia en optimización de latencia de plataformas backend, trabaja para mejorar la experiencia del cliente y la usabilidad de SageMaker AI y SageMaker Unified Studio. En su tiempo libre, Nikita realiza diferentes actividades al aire libre, como ciclismo de montaña, kayak y snowboard, le encanta viajar por Estados Unidos y le gusta hacer nuevos amigos. Puedes encontrar a Nikita en LinkedIn.