La AMI de aprendizaje profundo y los contenedores de aprendizaje profundo de AWS ahora están habilitados con soporte para índices y instantáneas SOCI. Seekable OCI (SOCI) es una tecnología que permite la gestión eficiente de imágenes de contenedores mediante la descarga selectiva de archivos. Utiliza un sistema de indexación basado en capas para asignar ubicaciones de archivos dentro de las imágenes del contenedor, lo que permite que los contenedores comiencen solo con los archivos necesarios cargados (carga diferida). Este enfoque reduce el uso del ancho de banda de la red y mejora los tiempos de inicio de los contenedores, lo que lo hace particularmente valioso para las organizaciones que administran imágenes de contenedores grandes en entornos de nube.
En esta publicación, analizamos cómo usar SOCI en contenedores y AMI de aprendizaje profundo disponibles públicamente, cuándo usar los distintos modos SOCI proporcionados por la herramienta y cómo usar esta herramienta de manera rápida y eficiente en sus cargas de trabajo actuales.
Fondo
A medida que las organizaciones implementan cargas de trabajo de inteligencia artificial (IA) y aprendizaje automático (ML) a escala, el tiempo de inicio de los contenedores se ha convertido en un cuello de botella en los entornos de producción. Ya sea que se trate de acelerar trabajos de capacitación, atender puntos finales de inferencia o escalar clústeres de GPU automáticamente, el tiempo dedicado a descargar imágenes de contenedores de varios gigabytes afecta directamente el costo, la experiencia del usuario y la eficiencia operativa. Los enfoques tradicionales de implementación de contenedores obligan a los equipos a descargar imágenes completas antes de que puedan comenzar las cargas de trabajo. Este proceso puede tardar varios minutos para iniciar las imágenes que se utilizan habitualmente en producción. Durante el desarrollo, apenas se notan unos minutos de espera. En producción, esos mismos minutos se acumulan rápidamente.
Las organizaciones que implementan infraestructura de aprendizaje profundo a escala generalmente enfrentan varios desafíos críticos:
Tiempos de arranque en frío prolongados. La extracción de imágenes estándar de Docker de 15 a 20 GB puede tardar entre 4 y 6 minutos por instancia, lo que retrasa los trabajos de entrenamiento y los puntos finales de inferencia durante los eventos de escalado. Recursos informáticos desperdiciados. Las instancias de GPU permanecen inactivas durante la extracción de imágenes, consumiendo costosas horas de procesamiento mientras esperan que finalice la inicialización del contenedor. Escalar los cuellos de botella. Cuando los picos de demanda desencadenan el escalado automático, los tiempos de inicio lentos de los contenedores impiden una respuesta rápida, lo que provoca una degradación del rendimiento o la caída de solicitudes. Restricciones de ancho de banda. Las implementaciones a gran escala que extraen imágenes masivas simultáneamente pueden saturar el ancho de banda de la red, creando retrasos en cascada en toda la infraestructura. Productividad del desarrollador. Los científicos de datos y los ingenieros de ML pierden un tiempo valioso esperando a que se inicien los contenedores durante los ciclos iterativos de desarrollo y experimentación.
Mecanismos de arrastre de contenedores
Al extraer un contenedor para sus cargas de trabajo, las AMI de aprendizaje profundo (DLAMI) de AWS y los contenedores de aprendizaje profundo ofrecen tres opciones: extracción estándar de Docker, extracción paralela de SOCI y carga diferida de SOCI a través del índice SOCI. Piense en esto como una escala móvil de compensaciones. Las extracciones de Docker son secuenciales y lentas. La extracción paralela de SOCI proporciona tiempos de inicio más rápidos al fragmentar las descargas a costa de los recursos informáticos. La carga diferida SOCI proporciona una carga de contenedores casi instantánea, pero requiere que los archivos se obtengan a pedido. Puede utilizar la siguiente guía para elegir el mecanismo adecuado para sus cargas de trabajo:
La elección entre los modos de carga diferida y extracción paralela depende de la imagen, las especificaciones de la instancia y la configuración de almacenamiento. La carga diferida requiere que las imágenes tengan un índice SOCI. Sin uno, el sistema vuelve a la tracción estándar. Las instancias con especificaciones más bajas deben utilizar carga diferida para conservar recursos, mientras que las instancias con especificaciones altas con múltiples vCPU y un gran ancho de banda de red se benefician del modo de extracción paralela. El rendimiento del almacenamiento varía: los volúmenes de EBS están limitados por sus IOPS aprovisionadas y el tipo de volumen, lo que potencialmente crea cuellos de botella durante el descomprimido, mientras que el almacén de instancias NVMe ofrece el máximo rendimiento de E/S a costa de la persistencia de los datos en los ciclos de inicio/detención de la instancia.
El siguiente ejemplo muestra los diversos mecanismos basados en vLLM Deep Learning Container:
Mecanismos de extracción de contenedores de aprendizaje profundo
Arquitectura de la solución
El siguiente diagrama muestra la arquitectura para usar SOCI con DLAMI y contenedores de aprendizaje profundo.
Comparación del tiempo de inicio del contenedor con la instantánea SOCI
Los siguientes puntos de referencia comparan las extracciones estándar de Docker con la instantánea SOCI en los modos de carga diferida y extracción paralela.
Modo de carga diferida
El modo de carga diferida inicia los contenedores inmediatamente al obtener solo los datos necesarios a pedido, y las capas restantes se cargan en segundo plano según sea necesario.
Requisitos previos
Índice SOCI requerido
Importante: el modo de carga diferida requiere que la imagen del contenedor tenga un índice SOCI almacenado en el registro. Sin un índice SOCI, el tomador de instantáneas volverá al comportamiento de extracción estándar y no verá ninguna mejora en el rendimiento. Los contenedores de aprendizaje profundo (DLC) de AWS con el sufijo de etiqueta -soci vienen con índices SOCI creados previamente y enviados al registro, lo que permite una carga diferida desde el primer momento. Para imágenes personalizadas, debe crear y enviar índices SOCI
Ambiente
Tipo de instancia: g5.2xlarge EBS: Tamaño 500 GiB, IOPS 3000, rendimiento 125 AMI: Base de aprendizaje profundo OSS Controlador Nvidia GPU AMI (Ubuntu 24.04) 20260413 (ami-06abbbf2049359343) Imagen de Docker: public.ecr.aws/deep-learning-containers/vllm:0.19.0-gpu-py312-ec2-soci Tamaño de imagen: 9,72 GB (comprimido), 32,7 GB (uso de disco) Red: Corp
Iniciar contenedor con Docker (no SOCI)
Usamos Docker para iniciar el servidor de inferencia directamente. Como no existe ninguna imagen localmente, Docker extrae la imagen completa antes de iniciar el contenedor.
Tiempo total: 6m59.099s.
Iniciar contenedor con instantánea SOCI (carga diferida)
Usamos nerdctl con instantánea SOCI para iniciar el contenedor de inferencia. Aunque no existe ninguna imagen localmente, la imagen indexada por SOCI permite a nerdctl extraer solo el índice y las capas necesarias para iniciar el contenedor, lo que permite la carga diferida de las capas restantes. Tiempo total: 21.125s.
Resumen de carga diferida
Al utilizar una instantánea SOCI con carga diferida, el contenedor se inició en 21,125 segundos, en comparación con los 6 minutos y 59,099 segundos del Docker estándar. Esta mejora se logra porque SOCI extrae solo las capas necesarias para iniciar el contenedor, y las capas restantes se cargan según sea necesario.
Modo de extracción paralela
Mientras que el modo de carga diferida inicia los contenedores inmediatamente al obtener solo los datos requeridos bajo demanda, el modo de extracción paralela descarga la imagen completa antes del inicio, pero lo hace con mayor simultaneidad que las extracciones estándar de Docker. Este modo es ideal cuando necesita la imagen completa disponible al inicio o cuando ejecuta cargas de trabajo con uso intensivo de E/S.
Ambiente
Tipo de instancia: g5.4xlarge EBS: 500 GiB gp3, 16000 IOPS, rendimiento de 1000 MB/s AMI: Base de aprendizaje profundo OSS Controlador Nvidia GPU AMI (Ubuntu 24.04) 20260413 (ami-06abbbf2049359343) Imagen de Docker: 763104351884.dkr.ecr.us-east-1.amazonaws.com/sglang:0.5.10-gpu-py312-cu129-ubuntu24.04-sagemaker Tamaño de imagen: 19,32 GB (comprimido), 60,4 GB (uso de disco) Red: Corp
Nota: Usamos una imagen de ECR privada para este punto de referencia porque Amazon CloudFront lidera la ECR pública, lo que limita el ancho de banda de la red y afecta el rendimiento del modo paralelo. La ECR privada se sirve directamente desde Amazon Simple Storage Service (Amazon S3), lo que proporciona un mayor rendimiento.
Habilitar el modo de extracción paralela
La instantánea SOCI en la AMI de aprendizaje profundo tiene por defecto el modo de carga diferida. Para habilitar el modo de extracción paralela, modifique el archivo de configuración en /etc/soci-snapshotter-grpc/config.toml:
Aplique la configuración reiniciando el servicio:
Consejo: Puede ajustar max_concurrent_downloads_per_image y max_concurrent_unpacks_per_image según su tipo de instancia y ancho de banda de red. Para obtener una guía de ajuste detallada, consulte Presentación del modo de extracción paralela OCI buscable para Amazon EKS.
Verificar que el modo paralelo esté activo
Supervise los registros de la instantánea SOCI durante la extracción de imágenes para confirmar que el modo paralelo esté habilitado:
Busque entradas de registro que indiquen extracción/descompresión paralela:
Extraer imagen con Docker (no SOCI)
Docker estándar descarga y extrae capas con simultaneidad limitada.
Tiempo total: 4m 44.163s
Extraer imagen con modo paralelo SOCI
El uso de nerdctl con el modo de extracción paralela SOCI utiliza una mayor concurrencia tanto para las descargas como para las operaciones de descompresión.
Tiempo total: 2m 12.846s
Resumen de extracción paralela
El uso del modo de extracción paralela SOCI redujo el tiempo de extracción de imágenes de 4 minutos y 44 segundos a 2 minutos y 12 segundos, lo que representa una mejora de 2,2 veces en el rendimiento de extracción.
Conclusión
La instantánea SOCI proporciona mejoras tanto para el inicio del contenedor como para las operaciones de extracción de imágenes:
Modo de carga diferida: logró una mejora de 20 veces en el tiempo de inicio del contenedor (de más de 6 minutos a ~21 segundos) Modo de extracción paralela: logró una mejora de 2,2 veces en el tiempo de extracción de imágenes (de 4 minutos y 44 segundos a 2 minutos y 12 segundos)
Elija el modo de carga diferida cuando necesite el inicio del contenedor más rápido posible, o el modo de extracción paralela cuando necesite que la imagen completa esté disponible antes de que comience su carga de trabajo.
Limpiar
Si lanzó instancias EC2 para probar la instantánea SOCI, finalícelas para evitar incurrir en cargos continuos. Elimine las imágenes de contenedor que envió a Amazon Elastic Container Registry (Amazon ECR) durante las pruebas y elimine los índices SOCI que ya no necesite.
Empezando con SOCI
DLAMI y los contenedores de aprendizaje profundo están disponibles públicamente hoy con una instantánea SOCI y un índice SOCI. Para obtener más información sobre DLAMI y contenedores de aprendizaje profundo disponibles públicamente, puede consultar el índice SOCI DLAMI para seleccionar las imágenes que admiten SOCI y consultar el repositorio de contenedores de aprendizaje profundo para obtener más información sobre las imágenes compatibles con índice SOCI.
Para obtener orientación de configuración detallada y mejores prácticas, consulte la documentación SOCI y la documentación SOCI del contenedor de aprendizaje profundo.