Nesta postagem, mostramos o ajuste fino de um modelo Llama 2 usando um método de ajuste fino com eficiência de parâmetro (PEFT) e implantamos o modelo ajustado em AWS Inferencia2. Nós usamos o Neurônio AWS kit de desenvolvimento de software (SDK) para acessar o dispositivo AWS Inferentia2 e se beneficiar de seu alto desempenho. Em seguida, usamos um grande contêiner de inferência de modelo alimentado por Biblioteca Java Profunda (DJLServing) como nossa solução de serviço de modelo.
Visão geral da solução
Llama2 de ajuste fino eficiente usando QLoRa
A família Llama 2 de grandes modelos de linguagem (LLMs) é uma coleção de modelos de texto generativos pré-treinados e ajustados que variam em escala de 7 bilhões a 70 bilhões de parâmetros. O Llama 2 foi pré-treinado em 2 trilhões de tokens de dados de fontes disponíveis publicamente. Às vezes, os clientes da AWS optam por ajustar os modelos do Llama 2 usando os próprios dados dos clientes para obter melhor desempenho em tarefas downstream. No entanto, devido ao grande número de parâmetros do modelo Llama 2, o ajuste fino completo pode ser proibitivamente caro e demorado. A abordagem de ajuste fino com eficiência de parâmetros (PEFT) pode resolver esse problema ajustando apenas um pequeno número de parâmetros extras do modelo enquanto congela a maioria dos parâmetros do modelo pré-treinado. Para mais informações sobre PEFT, pode-se ler isto postar. Nesta postagem, usamos QLoRa para ajustar um modelo Llama 2 7B.
Implante um modelo ajustado no Inf2 usando Amazon SageMaker
O AWS Inferentia2 é um acelerador de machine learning (ML) desenvolvido especificamente para cargas de trabalho de inferência e oferece alto desempenho com custo até 40% menor para cargas de trabalho generativas de IA e LLM em relação a outras instâncias otimizadas para inferência na AWS. Nesta postagem, usamos Amazon Elastic Compute Cloud (Amazon EC2) Instância Inf2, apresentando AWS Inferentia2, os aceleradores Inferentia2 de segunda geração, cada um contendo dois NeuronCores-v2. Cada NeuronCore-v2 é uma unidade de computação independente e heterogênea, com quatro motores principais: motores Tensor, Vetorial, Escalar e GPSIMD. Inclui uma memória SRAM gerenciada por software no chip para maximizar a localidade dos dados. Como vários blogs sobre Inf2 foram publicados, o leitor pode consultar este postar e nosso documentação para obter mais informações sobre Inf2.
Para implantar modelos no Inf2, precisamos do AWS Neuron SDK como a camada de software executada no hardware Inf2. AWS Neuron é o SDK usado para executar cargas de trabalho de aprendizagem profunda no AWS Inferentia e Treinamento AWS instâncias baseadas. Ele permite que o ciclo de vida de desenvolvimento de ML de ponta a ponta crie novos modelos, treine e otimize esses modelos e os implante para produção. O AWS Neuron inclui um aprendizado profundo compilador, tempo de execução e ferramentas que são nativamente integrados a estruturas populares como TensorFlow e PyTorch. Neste blog, vamos usar transformers-neuronx
, que faz parte do AWS Neuron SDK para fluxos de trabalho de inferência de decodificador de transformador. Isto suporta uma variedade de modelos populares, incluindo Llama 2.
Para implantar modelos em Amazon Sage Maker, geralmente usamos um contêiner que contém as bibliotecas necessárias, como Neuron SDK e transformers-neuronx
bem como o componente de serviço de modelo. Amazon SageMaker mantém contêineres de aprendizado profundo (DLCs) com bibliotecas populares de código aberto para hospedar modelos grandes. Nesta postagem, usamos o Contêiner de inferência de modelo grande para Neuron. Este contêiner tem tudo que você precisa para implantar seu modelo Llama 2 no Inf2. Para obter recursos para começar a usar o LMI no Amazon SageMaker, consulte muitas de nossas postagens existentes (Blog 1, Blog 2, Blog 3) neste tópico. Resumindo, você pode executar o contêiner sem escrever nenhum código adicional. Você pode usar o manipulador padrão para uma experiência de usuário perfeita e passe um dos nomes de modelo suportados e quaisquer parâmetros configuráveis de tempo de carregamento. Isso compila e veicula um LLM em uma instância Inf2. Por exemplo, para implantar OpenAssistant/llama2-13b-orca-8k-3319
, você pode fornecer a configuração a seguir (como serving.properties
arquivo). Em serving.properties
, especificamos o tipo de modelo como llama2-13b-orca-8k-3319
, o tamanho do lote como 4, o grau paralelo do tensor como 2 e pronto. Para obter a lista completa de parâmetros configuráveis, consulte Todas as opções de configuração DJL.
Alternativamente, você pode escrever seu próprio arquivo manipulador de modelo conforme mostrado neste exemplo, mas isso requer a implementação dos métodos de carregamento e inferência do modelo para servir como uma ponte entre as APIs DJLServing.
Pré-requisitos
A lista a seguir descreve os pré-requisitos para implantar o modelo descrito nesta postagem do blog. Você pode implementar a partir do Console de gerenciamento da AWS ou usando a versão mais recente do Interface de linha de comando da AWS (AWSCL).
Passo a passo
Na seção a seguir, percorreremos o código em duas partes:
- Ajustar um modelo Llama2-7b e fazer upload dos artefatos do modelo para um local especificado do bucket do Amazon S3.
- Implante o modelo em um Inferentia2 usando o contêiner de serviço DJL hospedado no Amazon SageMaker.
Os exemplos de código completos com instruções podem ser encontrados neste GitHub repositório.
Parte 1: Ajustar um modelo Llama2-7b usando PEFT
Usaremos o método recentemente introduzido no artigo QLoRA: ajuste de adaptador de baixo nível com reconhecimento de quantização para geração de linguagem por Tim Dettmers et al. QLoRA é uma nova técnica para reduzir o consumo de memória de grandes modelos de linguagem durante o ajuste fino, sem sacrificar o desempenho.
Observação: O ajuste fino do modelo llama2-7b mostrado a seguir foi testado em um Amazon Caderno de estúdio SageMaker com kernel otimizado para GPU Python 2.0 usando um ml.g5.2xgrande tipo de instância. Como prática recomendada, recomendamos o uso de um Estúdio Amazon SageMaker Ambiente de Desenvolvimento Integrado (IDE) lançado em seu próprio país Nuvem virtual privada da Amazon (Amazon VPC). Isso permite que você controle, monitore e inspecione o tráfego de rede dentro e fora do seu VPC usando rede AWS padrão e recursos de segurança. Para mais informações, veja Protegendo a conectividade do Amazon SageMaker Studio usando um VPC privado.
Quantizar o modelo base
Primeiro carregamos um modelo quantizado com quantização de 4 bits usando Transformadores Huggingface biblioteca da seguinte forma:
Carregar conjunto de dados de treinamento
A seguir, carregamos o conjunto de dados para alimentar o modelo para a etapa de ajuste fino mostrada a seguir:
Anexe uma camada adaptadora
Aqui anexamos uma pequena camada adaptadora treinável, configurada como LoraConfig definido no Rosto Abraçado peft biblioteca.
Treine uma modelo
Usando a configuração LoRA mostrada acima, ajustaremos o modelo Llama2 junto com os hiperparâmetros. Um trecho de código para treinar o modelo é mostrado a seguir:
Mesclar peso do modelo
O modelo ajustado executado acima criou um novo modelo contendo os pesos do adaptador LoRA treinado. No trecho de código a seguir, mesclaremos o adaptador com o modelo base para que possamos usar o modelo ajustado para inferência.
Carregar o peso do modelo para o Amazon S3
Na etapa final da parte 1, salvaremos os pesos do modelo mesclado em um local especificado do Amazon S3. O peso do modelo será usado por um contêiner de serviço de modelo no Amazon SageMaker para hospedar o modelo usando uma instância do Inferentia2.
Parte 2: Modelo Host QLoRA para inferência com AWS Inf2 usando SageMaker LMI Container
Nesta seção, percorreremos as etapas de implantação de um modelo QLoRA ajustado em um ambiente de hospedagem do Amazon SageMaker. Usaremos um Servindo DJL contêiner do SageMaker DLC, que se integra com o transformadores-neurônio biblioteca para hospedar este modelo. A configuração facilita o carregamento de modelos em aceleradores AWS Inferentia2, paraleliza o modelo em vários NeuronCores e permite o atendimento por meio de endpoints HTTP.
Preparar artefatos de modelo
DJL suporta muitas bibliotecas de otimização de aprendizagem profunda, incluindo Velocidade Profunda, Faster Transformer e mais. Para configurações específicas do modelo, fornecemos um serving.properties
com parâmetros-chave, como tensor_parallel_degree
e model_id
para definir as opções de carregamento do modelo. O model_id
pode ser um ID de modelo Hugging Face ou um caminho do Amazon S3 onde os pesos do modelo são armazenados. Em nosso exemplo, fornecemos a localização do Amazon S3 do nosso modelo ajustado. O snippet de código a seguir mostra as propriedades usadas para a veiculação do modelo:
Por favor, consulte isso documentação para obter mais informações sobre as opções configuráveis disponíveis via serving.properties
. Observe que usamos option.n_position=512
neste blog para uma compilação mais rápida do AWS Neuron. Se você quiser tentar um comprimento de token de entrada maior, recomendamos ao leitor pré-compilar o modelo com antecedência (consulte Modelo de pré-compilação AOT no EC2). Caso contrário, você poderá ocorrer um erro de tempo limite se o tempo de compilação for muito longo.
Após serving.properties
arquivo está definido, vamos empacotar o arquivo em um tar.gz
formato, como segue:
Em seguida, faremos upload do tar.gz para um local de bucket do Amazon S3:
Crie um endpoint de modelo do Amazon SageMaker
Para usar uma instância Inf2 para servir, usamos um Amazon Contêiner SageMaker LMI com suporte DJL neuronX. Por favor consulte isto postar para obter mais informações sobre como usar um contêiner DJL NeuronX para inferência. O código a seguir mostra como implantar um modelo usando o SDK Python do Amazon SageMaker:
Ponto de extremidade do modelo de teste
Depois que o modelo for implantado com sucesso, podemos validar o endpoint enviando uma solicitação de amostra ao preditor:
O exemplo de saída é mostrado a seguir:
No contexto da análise de dados, Machine Learning (ML) refere-se a uma técnica estatística capaz de extrair poder preditivo de um conjunto de dados com complexidade e precisão crescentes, estreitando iterativamente o escopo de uma estatística.
O Machine Learning não é uma nova técnica estatística, mas sim uma combinação de técnicas existentes. Além disso, não foi concebido para ser utilizado com um conjunto de dados específico ou para produzir um resultado específico. Em vez disso, foi concebido para ser suficientemente flexível para se adaptar a qualquer conjunto de dados e fazer previsões sobre qualquer resultado.
limpar
Se você decidir que não deseja mais manter o endpoint SageMaker em execução, poderá excluí-lo usando AWS SDK para Python (boto3), AWS CLI ou console Amazon SageMaker. Além disso, você também pode encerrar os recursos do Amazon SageMaker Studio que não são mais necessários.
Conclusão
Neste post, mostramos como ajustar um modelo Llama2-7b usando adaptador LoRA com quantização de 4 bits usando uma única instância de GPU. Em seguida, implantamos o modelo em uma instância Inf2 hospedada no Amazon SageMaker usando um contêiner de serviço DJL. Por fim, validamos o endpoint do modelo Amazon SageMaker com uma previsão de geração de texto usando o SageMaker Python SDK. Vá em frente e experimente, adoramos ouvir seus comentários. Fique atento às atualizações sobre mais recursos e inovações com o AWS Inferentia.
Para obter mais exemplos sobre o AWS Neuron, consulte amostras de neurônios aws.
Sobre os autores
Wei Teh é arquiteto de soluções especialista sênior em IA/ML na AWS. Ele adora ajudar os clientes a avançar em sua jornada na AWS, concentrando-se nos serviços Amazon Machine Learning e nas soluções baseadas em machine learning. Fora do trabalho, ele gosta de atividades ao ar livre, como acampar, pescar e fazer caminhadas com a família.
Qingweeu Li é especialista em aprendizado de máquina na Amazon Web Services. Ele recebeu seu Ph.D. em Pesquisa Operacional depois que ele quebrou a conta de bolsa de pesquisa de seu orientador e não entregou o Prêmio Nobel que prometeu. Atualmente, ele ajuda os clientes do setor de seguros e serviços financeiros a criar soluções de aprendizado de máquina na AWS. Nas horas vagas, gosta de ler e ensinar.
- Conteúdo com tecnologia de SEO e distribuição de relações públicas. Seja amplificado hoje.
- PlatoData.Network Gerativa Vertical Ai. Capacite-se. Acesse aqui.
- PlatoAiStream. Inteligência Web3. Conhecimento Amplificado. Acesse aqui.
- PlatãoESG. Carbono Tecnologia Limpa, Energia, Ambiente, Solar, Gestão de resíduos. Acesse aqui.
- PlatoHealth. Inteligência em Biotecnologia e Ensaios Clínicos. Acesse aqui.
- Fonte: https://aws.amazon.com/blogs/machine-learning/fine-tune-llama-2-using-qlora-and-deploy-it-on-amazon-sagemaker-with-aws-inferentia2/
- :tem
- :é
- :não
- :onde
- $UP
- 1
- 10
- 100
- 11
- 15%
- 16
- 19
- 24
- 300
- 7
- 70
- 8
- a
- Sobre
- acima
- acelerador
- aceleradores
- Acesso
- Conta
- precisão
- Alcançar
- em
- atividades
- adaptar
- Adicional
- Adicionalmente
- endereço
- avançar
- Depois de
- à frente
- AI
- AI / ML
- AL
- permite
- juntamente
- alfa
- tb
- Amazon
- Aprendizado de máquina da Amazon
- Amazon Sage Maker
- Estúdio Amazon SageMaker
- Amazon Web Services
- an
- análise
- e
- qualquer
- APIs
- Aplicar
- abordagem
- SOMOS
- AS
- At
- anexar
- auto
- disponível
- AWS
- Inferência da AWS
- bola
- base
- baseado
- lotes
- BE
- sido
- beneficiar
- MELHOR
- Melhor
- entre
- bilhão
- Blog
- Blogs
- PONTE
- Quebrou
- construir
- mas a
- by
- CAN
- capacidades
- capaz
- Escolha
- Na nuvem
- código
- coleção
- combinação
- completar
- complexidade
- componente
- Computar
- Configuração
- configurado
- Conectividade
- cônsul
- consumindo
- Recipiente
- contém
- contexto
- ao controle
- Custo
- poderia
- criado
- Atualmente
- Clientes
- dados,
- análise de dados
- decidir
- profundo
- deep learning
- Padrão
- definir
- definido
- Grau
- entregar
- entrega
- implantar
- implantado
- Implantação
- descrito
- projetado
- Desenvolvimento
- dispositivo
- Estivador
- down
- dois
- durante
- dinâmico
- E & T
- cada
- ou
- permite
- end-to-end
- Ponto final
- Motor
- Motores
- suficiente
- Meio Ambiente
- erro
- etc.
- tudo
- exemplo
- exemplos
- executado
- existente
- caro
- vasta experiência
- extra
- Rosto
- facilita
- fracassado
- falso
- família
- mais rápido
- Apresentando
- retornos
- Envie o
- final
- Finalmente
- financeiro
- Serviços financeiros
- Primeiro nome
- Pescaria
- flexível
- focando
- seguir
- seguido
- seguinte
- segue
- Pegada
- Escolha
- formato
- encontrado
- quatro
- enquadramentos
- congelamento
- da
- cheio
- Além disso
- geração
- generativo
- IA generativa
- ter
- OFERTE
- Go
- vai
- GPU
- conceder
- Hardware
- he
- ouvir
- ajuda
- ajuda
- SUA PARTICIPAÇÃO FAZ A DIFERENÇA
- Alta
- alta performance
- sua
- hospedeiro
- hospedado
- hospedagem
- House
- Como funciona o dobrador de carta de canal
- Como Negociar
- Contudo
- HTML
- http
- HTTPS
- ID
- if
- imagem
- executar
- implementação
- in
- incluir
- inclui
- Incluindo
- aumentando
- de treinadores em Entrevista Motivacional
- indústria
- INFORMAÇÕES
- e inovações
- entrada
- inputs
- instância
- instruções
- com seguro
- integrado
- Integra-se
- para dentro
- introduzido
- IT
- iteração
- ESTÁ
- Java
- viagem
- jpg
- json
- Guarda
- Chave
- Conjunto (SDK)
- língua
- grande
- Maior
- mais recente
- lançado
- camada
- camadas
- aprendizagem
- Comprimento
- Nível
- bibliotecas
- Biblioteca
- wifecycwe
- como
- gostos
- Line
- Lista
- lhama
- LLM
- carregar
- carregamento
- localização
- mais
- gosta,
- diminuir
- máquina
- aprendizado de máquina
- a Principal
- mantém
- fazer
- de grupos
- muitos
- maximizando
- Memória
- ir
- método
- métodos
- poder
- ML
- modelo
- modelos
- Módulos
- Monitore
- mais
- a maioria
- muito
- múltiplo
- nomes
- NAS
- você merece...
- rede
- tráfego de rede
- networking
- Novo
- não
- premio Nobel
- nenhum
- nota
- número
- of
- on
- ONE
- só
- para
- aberto
- open source
- Operações
- otimização
- Otimize
- otimizado
- Opção
- Opções
- or
- Outros
- de outra forma
- A Nossa
- Resultado
- contornos
- saída
- lado de fora
- Acima de
- próprio
- pacote
- Papel
- Paralelo
- parâmetro
- parâmetros
- parte
- peças
- passar
- apaixonado
- caminho
- atuação
- realizada
- plano
- platão
- Inteligência de Dados Platão
- PlatãoData
- por favor
- Popular
- Publique
- POSTAGENS
- poder
- alimentado
- prática
- Precisão
- predição
- Previsões
- Predictor
- pré-requisitos
- privado
- prêmio
- Problema
- processo
- produzir
- Produção
- prometido
- Propriedades
- fornecer
- publicamente
- publicado
- Python
- pytorch
- alcance
- variando
- em vez
- Leia
- Leitor
- Leitura
- recebido
- recentemente
- recomendar
- reduzir
- referir
- refere-se
- repositório
- solicitar
- pedidos
- requeridos
- exige
- pesquisa
- Recursos
- resposta
- respostas
- certo
- Execute
- corrida
- sacrificando
- sábio
- Salvar
- Escala
- dimensionamento
- escopo
- Sdk
- desatado
- Segundo
- Segunda geração
- Seção
- segurança
- Vejo
- envio
- senior
- Seqüência
- servir
- serviço
- Serviços
- de servir
- conjunto
- contexto
- instalação
- vários
- Baixo
- mostrar
- mostrou
- mostrando
- Shows
- desde
- solteiro
- Tamanho
- pequeno
- fragmento
- So
- Software
- desenvolvimento de software
- kit de desenvolvimento de software
- solução
- Soluções
- às vezes
- fonte
- Fontes
- especialista
- específico
- especificada
- padrão
- começado
- estatístico
- ficar
- Passo
- Passos
- armazenadas
- estudo
- entraram com sucesso
- tal
- ajuda
- Suportado
- suportes
- tarefas
- Ensino
- técnica
- técnicas
- fluxo tensor
- testado
- texto
- que
- A
- deles
- Eles
- então
- Este
- isto
- Através da
- Tim
- tempo
- para
- token
- Tokens
- também
- topo
- tópico
- tocha
- tráfego
- Trem
- treinado
- Training
- transformador
- Trilhão
- verdadeiro
- tentar
- afinado
- sintonização
- dois
- tipo
- Atualizações
- carregado
- URL
- usar
- usava
- Utilizador
- Experiência do Usuário
- utilização
- geralmente
- VALIDAR
- validado
- versão
- via
- Virtual
- andar
- Passo a passo
- queremos
- foi
- we
- web
- serviços web
- peso
- BEM
- O Quê
- O que é a
- qual
- enquanto
- precisarão
- de
- dentro
- sem
- Atividades:
- trabalhador
- fluxos de trabalho
- escrever
- escrita
- Vocês
- investimentos
- zefirnet