Acelere la implementación personalizada de LLM: ajuste con Oumi e implemente en Amazon Bedrock

Esta publicación está coescrita por David Stewart y Matthew Persons de Oumi.

El ajuste de los modelos de lenguajes grandes (LLM) de código abierto a menudo se estanca entre la experimentación y la producción. Las configuraciones de capacitación, la gestión de artefactos y la implementación escalable requieren herramientas diferentes, lo que crea fricciones al pasar de una experimentación rápida a entornos seguros de nivel empresarial.

En esta publicación, mostramos cómo ajustar un modelo Llama usando Oumi en Amazon EC2 (con la opción de crear datos sintéticos usando Oumi), almacenar artefactos en Amazon S3 e implementar en Amazon Bedrock usando la importación de modelo personalizado para inferencia administrada. Si bien utilizamos EC2 en este tutorial, se pueden realizar ajustes en otros servicios informáticos como Amazon SageMaker o Amazon Elastic Kubernetes Service, según sus necesidades.

Beneficios de Oumi y Amazon Bedrock

Oumi es un sistema de código abierto que agiliza el ciclo de vida del modelo básico, desde la preparación de datos y la capacitación hasta la evaluación. En lugar de ensamblar herramientas separadas para cada etapa, usted define una configuración única y la reutiliza en todas las ejecuciones.

Beneficios clave para este flujo de trabajo:

Capacitación basada en recetas: defina su configuración una vez y reutilícela en todos los experimentos, reduciendo el texto repetitivo y mejorando la reproducibilidad. Ajuste fino flexible: elija métodos completos de ajuste fino o eficientes en parámetros como LoRA, según sus limitaciones. Evaluación integrada: puntúe puntos de control utilizando puntos de referencia o LLM como juez sin herramientas adicionales. Síntesis de datos: genere conjuntos de datos de tareas específicas cuando los datos de producción sean limitados.

Amazon Bedrock complementa esto proporcionando inferencia administrada y sin servidor. Después de realizar ajustes con Oumi, importa su modelo a través de la Importación de modelo personalizado en tres pasos: cargarlo en S3, crear el trabajo de importación e invocarlo. No hay infraestructura de inferencia que gestionar. El siguiente diagrama de arquitectura muestra cómo estos componentes funcionan juntos.

Figura 1: Oumi gestiona datos, capacitación y evaluación en EC2. Amazon Bedrock proporciona inferencia administrada mediante la importación de modelos personalizados.

Descripción general de la solución

Este flujo de trabajo consta de tres etapas:

Ajuste con Oumi en EC2: inicie una instancia optimizada para GPU (por ejemplo, g5.12xlarge o p4d.24xlarge), instale Oumi y ejecute el entrenamiento con su configuración. Para modelos más grandes, Oumi admite el entrenamiento distribuido con estrategias de datos paralelos totalmente fragmentados (FSDP), DeepSpeed ​​y datos distribuidos paralelos (DDP) en configuraciones de múltiples GPU o múltiples nodos. Almacene artefactos en S3: cargue pesos, puntos de control y registros de modelos para un almacenamiento duradero. Implementación en Amazon Bedrock: cree un trabajo de importación de modelo personalizado que apunte a sus artefactos de S3. Amazon Bedrock proporciona infraestructura de inferencia automáticamente. Las aplicaciones cliente llaman al modelo importado mediante las API de Amazon Bedrock Runtime.

Esta arquitectura aborda desafíos comunes al pasar modelos ajustados a producción:

Implementación técnica

Repasemos un flujo de trabajo práctico utilizando el modelo meta-llama/Llama-3.2-1B-Instruct como ejemplo. Si bien seleccionamos este modelo porque combina bien con el ajuste fino en una instancia EC2 AWS g6.12xlarge, el mismo flujo de trabajo se puede replicar en muchos otros modelos de código abierto (tenga en cuenta que los modelos más grandes pueden requerir instancias más grandes o capacitación distribuida entre instancias). Para obtener más información, consulte las recetas de ajuste fino del modelo Oumi y las arquitecturas de modelos personalizados de Amazon Bedrock.

Requisitos previos

Para completar este tutorial, necesita:

Configurar recursos de AWS

Clona este repositorio en tu máquina local: git clone https://github.com/aws-samples/sample-oumi-fine-tuning-bedrock-cmi.git cd sample-oumi-fine-tuning-bedrock-cmi Ejecute el script de configuración para crear roles de IAM, un depósito S3 y ejecute una instancia EC2 optimizada para GPU: ./scripts/setup-aws-env.sh [–dry-run]

El script solicita su región de AWS, el nombre del depósito S3, el nombre del par de claves EC2 y el ID del grupo de seguridad y luego crea todos los recursos necesarios. Valores predeterminados: instancia g6.12xlarge, AMI base de aprendizaje profundo con CUDA única (Amazon Linux 2023) y 100 GB de almacenamiento gp3. Nota: Si no tiene permisos para crear roles de IAM o iniciar instancias EC2, comparta este repositorio con su administrador de TI y pídale que complete esta sección para configurar su entorno de AWS.

Una vez que la instancia se está ejecutando, el script genera el comando SSH y el ARN del rol de importación de Amazon Bedrock (necesario en el paso 5). SSH en la instancia y continúe con el Paso 1 a continuación.

Consulte iam/README.md para obtener detalles de la política de IAM, orientación sobre el alcance y pasos de validación.

Paso 1: configurar el entorno EC2

Complete los siguientes pasos para configurar el entorno EC2.

En la instancia EC2 (Amazon Linux 2023), actualice el sistema e instale las dependencias básicas: sudo yum update -y sudo yum install python3 python3-pip git -y Clonar el repositorio complementario: git clone https://github.com/aws-samples/sample-oumi-fine-tuning-bedrock-cmi.git cd sample-oumi-fine-tuning-bedrock-cmi Configurar el entorno variables (reemplace los valores con su región real y el nombre del depósito del script de configuración): export AWS_REGION=us-west-2 export S3_BUCKET=your-bucket-name export S3_PREFIX=your-s3-prefix aws configure set default.region “$AWS_REGION” Ejecute el script de configuración para crear un entorno virtual Python, instale Oumi, valide la disponibilidad de la GPU y configure la autenticación Hugging Face. Consulte setup-environment.sh para conocer las opciones. ./scripts/setup-environment.sh fuente .venv/bin/activate Autenticarse con Hugging Face para acceder a los pesos del modelo cerrado. Genere un token de acceso en huggingface.co/settings/tokens, luego ejecute: hf auth login

Paso 2: configurar el entrenamiento

El conjunto de datos predeterminado es tatsu-lab/alpaca, configurado en configs/oumi-config.yaml. Oumi lo descarga automáticamente durante el entrenamiento, no es necesaria ninguna descarga manual. Para utilizar un conjunto de datos diferente, actualice el parámetro dataset_name en configs/oumi-config.yaml. Consulte los documentos del conjunto de datos de Oumi para conocer los formatos admitidos.

[Optional] Genera datos de entrenamiento sintéticos con Oumi:

Para generar datos sintéticos utilizando Amazon Bedrock como backend de inferencia, actualice el marcador de posición model_name en configs/synchronous-config.yaml con un ID de modelo de Amazon Bedrock al que tenga acceso (por ejemplo, anthropic.claude-sonnet-4-6). Consulte los documentos de síntesis de datos de Oumi para obtener más detalles. Luego ejecuta:

sintetizador oumi -c configs/síntesis-config.yaml

Paso 3: afina el modelo

Afina el modelo usando la receta de entrenamiento incorporada de Oumi para Llama-3.2-1B-Instruct:

./scripts/fine-tune.sh –config configs/oumi-config.yaml –output-dir models/final [–dry-run]

Para personalizar los hiperparámetros, edite oumi-config.yaml.

Nota: Si generó datos sintéticos en el Paso 2, actualice la ruta del conjunto de datos en la configuración antes del entrenamiento.

Supervise la utilización de GPU con nvidia-smi o Amazon CloudWatch Agent. Para trabajos de larga duración, configure la recuperación automática de instancias de Amazon EC2 para manejar las interrupciones de las instancias.

Paso 4: Evaluar el modelo (opcional)

Puede evaluar el modelo ajustado utilizando puntos de referencia estándar:

oumi evaluar -c configs/evaluación-config.yaml

La configuración de evaluación especifica la ruta del modelo y las tareas de referencia (por ejemplo, MMLU). Para personalizar, edite evaluación-config.yaml. Para conocer enfoques de LLM como juez y puntos de referencia adicionales, consulte la guía de evaluación de Oumi.

Paso 5: Implementación en Amazon Bedrock

Complete los siguientes pasos para implementar el modelo en Amazon Bedrock:

Cargue los artefactos del modelo a S3 e importe el modelo a Amazon Bedrock. ./scripts/upload-to-s3.sh –bucket $S3_BUCKET –source models/final –prefix $S3_PREFIX ./scripts/import-to-bedrock.sh –model-name my-fine-tuned-llama –s3-uri s3://$S3_BUCKET/$S3_PREFIX –role-arn $BEDROCK_ROLE_ARN –wait El script de importación genera el modelo ARN al finalizar. Establezca MODEL_ARN en este valor (formato: arn:aws:bedrock:::imported-model/). Invoca el modelo en Amazon Bedrock ./scripts/invoke-model.sh –model-id $MODEL_ARN –prompt “Traduce este texto al francés: ¿Cuál es la capital de Francia?” Amazon Bedrock crea automáticamente un entorno de inferencia administrado. Para configurar la función de IAM, consulte bedrock-import-role.json. Habilite el control de versiones de S3 en el depósito para admitir la reversión de las revisiones del modelo. Para el cifrado SSE-KMS y el refuerzo de políticas de depósito, consulte los scripts de seguridad en el repositorio complementario.

Paso 6: limpiar

Para evitar costos continuos, elimine los recursos creados durante este tutorial:

aws ec2 terminar-instancias –instance-ids $INSTANCE_ID aws s3 rm s3://$S3_BUCKET/$S3_PREFIX/ –recursivo aws bedrock eliminar-modelo-importado –identificador-modelo $MODEL_ARN

Conclusión

En esta publicación, aprendió cómo ajustar un modelo base Llama-3.2-1B-Instruct usando Oumi en EC2 e implementarlo usando Amazon Bedrock Custom Model Import. Este enfoque le brinda control total sobre el ajuste de sus propios datos mientras utiliza la inferencia administrada en Amazon Bedrock.

El repositorio complementario sample-oumi-fine-tuning-bedrock-cmi proporciona scripts, configuraciones y políticas de IAM para comenzar. Clónelo, intercambie su conjunto de datos e implemente un modelo personalizado en Amazon Bedrock.

Para comenzar, explore los recursos a continuación y comience a crear su propio proceso de ajuste hasta la implementación en Oumi y AWS. ¡Feliz edificio!

Más información

Reconocimiento

Un agradecimiento especial a Pronoy Chopra y Jon Turdiev por su contribución.

Sobre los autores

Mohamed Bashir

Bashir es arquitecto líder sénior de soluciones GenAI en el equipo de Frontier AI en AWS, donde se asocia con nuevas empresas y empresas para diseñar e implementar aplicaciones GenAI a escala de producción. Con un doctorado en Ciencias de la Computación, su experiencia abarca sistemas agentes, evaluación y evaluación comparativa de LLM, ajuste fino, optimización posterior a la capacitación, aprendizaje reforzado a partir de comentarios humanos e infraestructura de aprendizaje automático escalable. Fuera del trabajo, asesora a ingenieros que inician su carrera y apoya programas técnicos comunitarios.

Bala Krishna Moorthy

Bala es científico senior de datos GenAI en el equipo de Amazon Bedrock GTM, donde ayuda a las nuevas empresas a aprovechar Bedrock para impulsar sus productos. En su tiempo libre, le gusta pasar tiempo con familiares y amigos, mantenerse activo, probar nuevos restaurantes, viajar y comenzar el día con una taza de café humeante.

Greg Fina

Greg es arquitecto principal de soluciones de startups para IA generativa en Amazon Web Services, donde capacita a las startups para acelerar la innovación mediante la adopción de la nube. Se especializa en modernización de aplicaciones, con un fuerte enfoque en arquitecturas sin servidor, contenedores y soluciones de almacenamiento de datos escalables. Le apasiona utilizar herramientas de IA generativa para orquestar y optimizar implementaciones de Kubernetes a gran escala, así como promover las prácticas de GitOps y DevOps para equipos de alta velocidad. Fuera de su función de atención al cliente, Greg contribuye activamente a proyectos de código abierto, especialmente aquellos relacionados con Backstage.

David Stewart

David dirige Ingeniería de campo en Oumi, donde trabaja con clientes para mejorar sus aplicaciones de IA generativa mediante la creación de modelos de lenguaje personalizados para su caso de uso. Aporta una amplia experiencia trabajando con LLM, incluidas arquitecturas de capacitación, RAG y agentes modernos. David está profundamente interesado en el lado práctico de la IA generativa y en cómo las personas y las organizaciones pueden crear productos y soluciones impactantes que funcionen a escala.

Mateo personas

Matthew es cofundador y líder de ingeniería en Oumi, donde se enfoca en construir y escalar sistemas de IA generativos abiertos y prácticos para casos de uso del mundo real. Trabaja en estrecha colaboración con ingenieros, investigadores y clientes para diseñar arquitecturas sólidas en todo el proceso de desarrollo de IA. A Matthew le apasiona la IA de código abierto, el aprendizaje automático aplicado y permitir que los equipos pasen rápidamente de pruebas de concepto de investigación a productos impactantes.