En esta publicación, mostramos el ajuste de un modelo Llama 2 utilizando un método de ajuste fino con eficiencia de parámetros (PEFT) e implementamos el modelo ajustado en Inferencia de AWS2. Utilizamos el AWS neurona kit de desarrollo de software (SDK) para acceder al dispositivo AWS Inferentia2 y beneficiarse de su alto rendimiento. Luego utilizamos un contenedor de inferencia de modelos grande impulsado por Biblioteca profunda de Java (DJLServing) como nuestra solución de servicio de modelos.
Resumen de la solución
Ajuste eficiente de Llama2 usando QLoRa
La familia Llama 2 de modelos de lenguaje grandes (LLM) es una colección de modelos de texto generativo previamente entrenados y ajustados que varían en escala de 7 mil millones a 70 mil millones de parámetros. Llama 2 fue preentrenada con 2 billones de tokens de datos de fuentes disponibles públicamente. Los clientes de AWS a veces optan por ajustar los modelos de Llama 2 utilizando los propios datos de los clientes para lograr un mejor rendimiento en las tareas posteriores. Sin embargo, debido a la gran cantidad de parámetros del modelo Llama 2, un ajuste completo podría resultar prohibitivamente costoso y consumir mucho tiempo. El enfoque de ajuste fino eficiente de parámetros (PEFT) puede abordar este problema ajustando solo una pequeña cantidad de parámetros adicionales del modelo mientras congela la mayoría de los parámetros del modelo previamente entrenado. Para obtener más información sobre PEFT, puede leer esto post. En esta publicación, usamos QLoRa para poner a punto un modelo Llama 2 7B.
Implemente un modelo ajustado en Inf2 utilizando Amazon SageMaker
AWS Inferentia2 es un acelerador de aprendizaje automático (ML) especialmente diseñado para cargas de trabajo de inferencia y ofrece un alto rendimiento con un costo hasta un 40 % menor para cargas de trabajo de IA generativa y LLM en comparación con otras instancias optimizadas de inferencia en AWS. En esta publicación, utilizamos Amazon Elastic Compute Cloud (Amazon EC2) Instancia de Inf2, que presenta AWS Inferentia2, los aceleradores Inferentia2 de segunda generación, cada uno de los cuales contiene dos NeuronCores-v2. Cada NeuronCore-v2 es una unidad informática heterogénea e independiente, con cuatro motores principales: motores tensoriales, vectoriales, escalares y GPSIMD. Incluye una memoria SRAM administrada por software en chip para maximizar la localidad de los datos. Dado que se han publicado varios blogs sobre Inf2, el lector puede consultar este post y nuestro documentación para obtener más información sobre Inf2.
Para implementar modelos en Inf2, necesitamos AWS Neuron SDK como capa de software que se ejecuta sobre el hardware de Inf2. AWS Neuron es el SDK que se utiliza para ejecutar cargas de trabajo de aprendizaje profundo en AWS Inferentia y tren de AWS instancias basadas Permite el ciclo de vida de desarrollo de ML de extremo a extremo para crear nuevos modelos, entrenar y optimizar estos modelos e implementarlos para la producción. AWS Neuron incluye un aprendizaje profundo compilador, tiempo de ejecucióny que se integran de forma nativa con marcos populares como TensorFlow y PyTorch. En este blog vamos a utilizar transformers-neuronx
, que forma parte del SDK de AWS Neuron para flujos de trabajo de inferencia de decodificadores de transformadores. Él apoya una gama de modelos populares, incluido Llama 2.
Para implementar modelos en Amazon SageMaker, normalmente utilizamos un contenedor que contiene las bibliotecas necesarias, como Neuron SDK y transformers-neuronx
así como el componente de servicio de modelos. Amazon SageMaker mantiene contenedores de aprendizaje profundo (DLC) con bibliotecas populares de código abierto para alojar modelos grandes. En esta publicación utilizamos el Contenedor de inferencia de modelo grande para Neuron. Este contenedor tiene todo lo que necesitas para implementar tu modelo Llama 2 en Inf2. Para obtener recursos para comenzar con LMI en Amazon SageMaker, consulte muchas de nuestras publicaciones existentes (Blog 1, Blog 2, Blog 3) sobre este tema. En resumen, puede ejecutar el contenedor sin escribir ningún código adicional. Puedes usar el controlador predeterminado para una experiencia de usuario perfecta y pase uno de los nombres de modelo admitidos y cualquier parámetro configurable de tiempo de carga. Esto compila y ofrece un LLM en una instancia de Inf2. Por ejemplo, para implementar OpenAssistant/llama2-13b-orca-8k-3319
, puede proporcionar la siguiente configuración (como serving.properties
archivo). En serving.properties
, especificamos el tipo de modelo como llama2-13b-orca-8k-3319
, el tamaño del lote es 4, el grado paralelo del tensor es 2, y eso es todo. Para obtener la lista completa de parámetros configurables, consulte Todas las opciones de configuración de DJL.
Alternativamente, puede escribir su propio archivo de controlador de modelo como se muestra en este ejemplo, pero eso requiere implementar los métodos de carga e inferencia del modelo para que sirvan como puente entre las API de DJLServing.
Requisitos previos
La siguiente lista describe los requisitos previos para implementar el modelo descrito en esta publicación de blog. Puede implementar desde el Consola de administración de AWS o utilizando la última versión del Interfaz de línea de comandos de AWS (CLI de AWS).
Tutorial
En la siguiente sección, analizaremos el código en dos partes:
- Ajuste un modelo Llama2-7b y cargue los artefactos del modelo en una ubicación de depósito de Amazon S3 especificada.
- Implemente el modelo en Inferentia2 utilizando el contenedor de servicio DJL alojado en Amazon SageMaker.
Los ejemplos de código completos con instrucciones se pueden encontrar en este GitHub repositorio.
Parte 1: ajustar un modelo Llama2-7b usando PEFT
Vamos a utilizar el método recientemente introducido en el artículo. QLoRA: Ajuste del adaptador de bajo rango con reconocimiento de cuantificación para la generación de lenguaje por Tim Dettmers et al. QLoRA es una nueva técnica para reducir la huella de memoria de modelos de lenguaje grandes durante el ajuste fino, sin sacrificar el rendimiento.
Nota: El ajuste del modelo llama2-7b que se muestra a continuación se probó en Amazon Cuaderno de estudio SageMaker con el kernel optimizado para GPU Python 2.0 utilizando un ml.g5.2xgrande tipo de instancia. Como práctica recomendada, recomendamos utilizar un Estudio Amazon SageMaker Entorno de desarrollo integrado (IDE) lanzado por su cuenta Nube privada virtual de Amazon (Amazon VPC). Esto le permite controlar, monitorear e inspeccionar el tráfico de red dentro y fuera de su VPC utilizando las capacidades de seguridad y redes de AWS estándar. Para más información, ver Asegurar la conectividad de Amazon SageMaker Studio mediante una VPC privada.
Cuantizar el modelo base
Primero cargamos un modelo cuantificado con cuantificación de 4 bits usando Transformadores de cara abrazada biblioteca de la siguiente manera:
Cargar conjunto de datos de entrenamiento
A continuación, cargamos el conjunto de datos para alimentar el modelo y realizar el paso de ajuste que se muestra a continuación:
Adjuntar una capa adaptadora
Aquí adjuntamos una pequeña capa adaptadora entrenable, configurada como LoraConfig definido en la cara de abrazo peft biblioteca.
Entrena un modelo
Usando la configuración LoRA que se muestra arriba, ajustaremos el modelo Llama2 junto con los hiperparámetros. A continuación se muestra un fragmento de código para entrenar el modelo:
Fusionar peso del modelo
El modelo ajustado ejecutado anteriormente creó un nuevo modelo que contiene los pesos del adaptador LoRA entrenados. En el siguiente fragmento de código, fusionaremos el adaptador con el modelo base para poder usar el modelo ajustado para la inferencia.
Cargar el peso del modelo en Amazon S3
En el paso final de la parte 1, guardaremos los pesos del modelo combinado en una ubicación especificada de Amazon S3. El peso del modelo lo utilizará un contenedor de servicio de modelos en Amazon SageMaker para alojar el modelo mediante una instancia de Inferentia2.
Parte 2: Alojar el modelo QLoRA para inferencia con AWS Inf2 utilizando SageMaker LMI Container
En esta sección, recorreremos los pasos para implementar un modelo ajustado de QLoRA en un entorno de alojamiento de Amazon SageMaker. Usaremos un sirviendo DJL contenedor de SageMaker DLC, que se integra con el transformadores-neuronx biblioteca para alojar este modelo. La configuración facilita la carga de modelos en aceleradores AWS Inferentia2, paraleliza el modelo en múltiples NeuronCores y permite el servicio a través de puntos finales HTTP.
Preparar artefactos modelo
DJL admite muchas bibliotecas de optimización de aprendizaje profundo, incluidas velocidadprofunda, Transformador más rápido y más. Para configuraciones específicas del modelo, proporcionamos un serving.properties
con parámetros clave, como tensor_parallel_degree
y model_id
para definir las opciones de carga del modelo. El model_id
podría ser un ID de modelo de Hugging Face o una ruta de Amazon S3 donde se almacenan los pesos del modelo. En nuestro ejemplo, proporcionamos la ubicación de Amazon S3 de nuestro modelo ajustado. El siguiente fragmento de código muestra las propiedades utilizadas para la publicación del modelo:
Por favor refiérase a esto documentación para obtener más información sobre las opciones configurables disponibles a través de serving.properties
. Tenga en cuenta que utilizamos option.n_position=512
en este blog para una compilación más rápida de AWS Neuron. Si desea probar una longitud de token de entrada mayor, recomendamos al lector precompilar el modelo con anticipación (consulte Modelo de precompilación de AOT en EC2). De lo contrario, podría encontrarse con un error de tiempo de espera si el tiempo de compilación es demasiado.
Una vez que el serving.properties
archivo está definido, empaquetaremos el archivo en un tar.gz
formato, como sigue:
Luego, cargaremos el archivo tar.gz en una ubicación de depósito de Amazon S3:
Crear un punto final de modelo de Amazon SageMaker
Para usar una instancia de Inf2 para servir, usamos un Amazon Contenedor LMI de SageMaker con soporte DJL neuronX. Por favor consulte esto post para obtener más información sobre el uso de un contenedor DJL NeuronX para inferencia. El siguiente código muestra cómo implementar un modelo utilizando el SDK de Python de Amazon SageMaker:
Punto final del modelo de prueba
Una vez que el modelo se haya implementado correctamente, podemos validar el punto final enviando una solicitud de muestra al predictor:
El resultado de muestra se muestra a continuación:
En el contexto del análisis de datos, el aprendizaje automático (ML) se refiere a una técnica estadística capaz de extraer poder predictivo de un conjunto de datos con una complejidad y precisión cada vez mayores al reducir iterativamente el alcance de una estadística.
El aprendizaje automático no es una técnica estadística nueva, sino más bien una combinación de técnicas existentes. Además, no ha sido diseñado para usarse con un conjunto de datos específico o para producir un resultado específico. Más bien, fue diseñado para ser lo suficientemente flexible como para adaptarse a cualquier conjunto de datos y hacer predicciones sobre cualquier resultado.
Limpiar
Si decide que ya no desea mantener el punto final de SageMaker en ejecución, puede eliminarlo usando AWS SDK para Python (boto3), AWS CLI o consola de Amazon SageMaker. Además, también puede cerrar los recursos de Amazon SageMaker Studio que ya no son necesarios.
Conclusión
En esta publicación, le mostramos cómo ajustar un modelo Llama2-7b usando un adaptador LoRA con cuantificación de 4 bits usando una sola instancia de GPU. Luego implementamos el modelo en una instancia de Inf2 alojada en Amazon SageMaker utilizando un contenedor de servicio DJL. Finalmente, validamos el punto final del modelo de Amazon SageMaker con una predicción de generación de texto utilizando el SDK de Python de SageMaker. Continúe y pruébelo, nos encantaría escuchar sus comentarios. Esté atento a las actualizaciones sobre más capacidades y nuevas innovaciones con AWS Inferentia.
Para obtener más ejemplos sobre AWS Neuron, consulte aws-neuron-muestras.
Acerca de los autores
wei teh es arquitecto senior de soluciones especializado en IA/ML en AWS. Le apasiona ayudar a los clientes a avanzar en su recorrido por AWS, centrándose en los servicios de Amazon Machine Learning y las soluciones basadas en aprendizaje automático. Fuera del trabajo, disfruta de actividades al aire libre como acampar, pescar y hacer caminatas con su familia.
Qingweyo li es un especialista en aprendizaje automático en Amazon Web Services. Recibió su Ph.D. en Investigación de Operaciones después de que rompió la cuenta de subvenciones de investigación de su asesor y no pudo entregar el Premio Nobel que prometió. Actualmente, ayuda a los clientes de la industria de seguros y servicios financieros a crear soluciones de aprendizaje automático en AWS. En su tiempo libre le gusta leer y enseñar.
- Distribución de relaciones públicas y contenido potenciado por SEO. Consiga amplificado hoy.
- PlatoData.Network Vertical Generativo Ai. Empodérate. Accede Aquí.
- PlatoAiStream. Inteligencia Web3. Conocimiento amplificado. Accede Aquí.
- PlatoESG. Carbón, tecnología limpia, Energía, Ambiente, Solar, Gestión de residuos. Accede Aquí.
- PlatoSalud. Inteligencia en Biotecnología y Ensayos Clínicos. Accede Aquí.
- Fuente: https://aws.amazon.com/blogs/machine-learning/fine-tune-llama-2-using-qlora-and-deploy-it-on-amazon-sagemaker-with-aws-inferentia2/
- :posee
- :es
- :no
- :dónde
- $ UP
- 1
- 10
- 100
- 11
- 15%
- 16
- 19
- 24
- 300
- 7
- 70
- 8
- a
- Nuestra Empresa
- arriba
- acelerador
- aceleradores
- de la máquina
- Mi Cuenta
- la exactitud
- Lograr
- a través de
- actividades
- adaptar
- Adicionales
- Adicionalmente
- dirección
- avanzar
- Después
- adelante
- AI
- AI / ML
- AL
- permite
- a lo largo de
- Alpha
- también
- Amazon
- Aprendizaje automático de Amazon
- Amazon SageMaker
- Estudio Amazon SageMaker
- Amazon Web Services
- an
- análisis
- y
- cualquier
- API
- Aplicá
- enfoque
- somos
- AS
- At
- adjuntar
- auto
- Hoy Disponibles
- AWS
- Inferencia de AWS
- pelota
- bases
- basado
- procesamiento por lotes
- BE
- esto
- es el beneficio
- MEJOR
- mejores
- entre
- mil millones
- Blog
- Blogs
- PUENTE
- Rompió
- build
- pero
- by
- PUEDEN
- capacidades
- capaz
- Elige
- Soluciones
- código
- --
- combinación
- completar
- complejidad
- componente
- Calcular
- Configuración
- configurado
- Conectividad
- Consola
- consumidor
- Envase
- contiene
- contexto
- control
- Cost
- podría
- creado
- En la actualidad
- Clientes
- datos
- análisis de los datos
- decidir
- profundo
- deep learning
- Predeterminado
- definir
- se define
- Grado
- entregamos
- entrega
- desplegar
- desplegado
- Desplegando
- descrito
- diseñado
- Desarrollo
- dispositivo
- Docker
- DE INSCRIPCIÓN
- dos
- durante
- lugar de trabajo dinámico
- E & T
- cada una
- ya sea
- permite
- de extremo a extremo
- Punto final
- Motor
- motores
- suficientes
- Entorno
- error
- etc.
- todo
- ejemplo
- ejemplos
- ejecutado
- existente
- costoso
- experience
- extra
- Cara
- facilita
- Fallidos
- false
- familia
- más rápida
- Con la participación de:
- realimentación
- Archive
- final
- Finalmente
- financiero
- servicios financieros
- Nombre
- Pesca deportiva
- flexible
- enfoque
- seguir
- seguido
- siguiendo
- siguiente
- Footprint
- formato
- encontrado
- Digital XNUMXk
- marcos
- congelación
- Desde
- ser completados
- Además
- generación de AHSS
- generativo
- IA generativa
- obtener
- Donar
- Go
- va
- GPU
- conceder
- Materiales
- he
- oír
- ayudando
- ayuda
- esta página
- Alta
- Alto rendimiento
- su
- fortaleza
- organizado
- hosting
- Hogar
- Cómo
- Como Hacer
- Sin embargo
- HTML
- http
- HTTPS
- ID
- if
- imagen
- implementar
- implementación
- in
- incluir
- incluye
- Incluye
- creciente
- independientes
- energético
- información
- innovaciones
- Las opciones de entrada
- entradas
- ejemplo
- Instrucciones
- aseguradora
- COMPLETAMENTE
- Integra
- dentro
- Introducido
- IT
- iteración
- SUS
- Java
- jpg
- json
- Guardar
- Clave
- Kit (SDK)
- idioma
- large
- mayores
- más reciente
- lanzado
- .
- ponedoras
- aprendizaje
- Longitud Mínima
- Nivel
- bibliotecas
- Biblioteca
- ciclo de vida
- como
- Me gusta
- línea
- Lista
- Llama
- LLM
- carga
- carga
- Ubicación
- por más tiempo
- amar
- inferior
- máquina
- máquina de aprendizaje
- Inicio
- mantiene
- para lograr
- Management
- muchos
- maximizando
- Salud Cerebral
- ir
- Método
- métodos
- podría
- ML
- modelo
- modelos
- Módulos
- Monitorear
- más,
- MEJOR DE TU
- mucho más
- múltiples
- nombres
- nariz
- ¿ Necesita ayuda
- del sistema,
- tráfico de red
- red
- Nuevo
- no
- premio Nobel
- Ninguna
- nota
- número
- of
- on
- ONE
- , solamente
- sobre
- habiertos
- de código abierto
- Operaciones
- optimización
- Optimización
- optimizado
- Optión
- Opciones
- or
- Otro
- de otra manera
- nuestros
- Resultado
- contornos
- salida
- afuera
- Más de
- EL DESARROLLADOR
- paquete
- Papel
- Paralelo
- parámetro
- parámetros
- parte
- partes
- pass
- apasionado
- camino
- actuación
- realizado
- plan
- Platón
- Inteligencia de datos de Platón
- PlatónDatos
- Por favor
- Popular
- Publicación
- Artículos
- industria
- alimentado
- Precisión
- predicción
- Predicciones
- Predictor
- requisitos previos
- privada
- premio
- Problema
- producir
- Producción
- prometido
- propiedades
- proporcionar
- en público
- publicado
- Python
- piñón
- distancia
- que van
- más bien
- Leer
- Testimoniales
- Reading
- recibido
- recientemente
- recomiendan
- reducir
- remitir
- se refiere
- repositorio
- solicita
- solicitudes
- Requisitos
- requiere
- la investigación
- Recursos
- respuesta
- respuestas
- Derecho
- Ejecutar
- correr
- sacrificando
- sabio
- Guardar
- Escala
- la ampliación
- alcance
- Sdk
- sin costura
- Segundo
- Segunda generación
- Sección
- EN LINEA
- ver
- enviando
- mayor
- Secuencia
- ayudar
- de coches
- Servicios
- servicio
- set
- pólipo
- Configure
- Varios
- En Corto
- mostrar
- mostró
- mostrado
- Shows
- desde
- soltero
- Tamaño
- chica
- retazo
- So
- Software
- Desarrollo de software ad-hoc
- Kit de desarrollo de software
- a medida
- Soluciones
- a veces
- Fuente
- Fuentes
- especialista
- soluciones y
- especificado
- estándar
- fundó
- estadístico
- quedarse
- paso
- pasos
- almacenados
- estudio
- Con éxito
- tal
- SOPORTE
- Soportado
- soportes
- tareas
- Educación
- la técnica
- técnicas
- tensorflow
- probado
- texto
- esa
- La
- su
- Les
- luego
- Estas
- así
- A través de esta formación, el personal docente y administrativo de escuelas y universidades estará preparado para manejar los recursos disponibles que derivan de la diversidad cultural de sus estudiantes. Además, un mejor y mayor entendimiento sobre estas diferencias y similitudes culturales permitirá alcanzar los objetivos de inclusión previstos.
- Tim
- equipo
- a
- ficha
- Tokens
- demasiado
- parte superior
- tema
- antorcha
- tráfico
- Entrenar
- entrenado
- Formación
- transformador
- Trillones
- verdadero
- try
- sintonizado
- sintonización
- dos
- tipo
- Actualizaciones
- subido
- Enlance
- utilizan el
- usado
- Usuario
- experiencia como usuario
- usando
- generalmente
- VALIDAR
- validado
- versión
- vía
- Virtual
- caminar
- tutorial
- quieres
- fue
- we
- web
- servicios web
- peso
- WELL
- ¿
- Que es
- que
- mientras
- seguirá
- dentro de
- sin
- Actividades:
- obrero
- flujos de trabajo
- escribir
- la escritura
- Usted
- tú
- zephyrnet