Está a ter dificuldades com a IA ou com o desenvolvimento full-stack? Os nossos especialistas estão aqui para o orientar: aconselhamento personalizado, integração técnica e muito mais. Entre em contacto com [email protected].

Implantar o modelo generativo Mistral 7b em uma GPU A10 no AWS

Summary

Este curso de NLP em nuvem mostra como implantar e usar o modelo de IA generativo Mistral 7b em uma GPU NVIDIA A10 no AWS.

O modelo Mistral 7b bate o LLaMA 3 7b em todos os benchmarks e o LLaMA 3 13b em muitos benchmarks. Na verdade, está mesmo a par com o modelo LLaMA 1 34b.

A sua implementação e utilização requerem pelo menos 15 GB de VRAM, razão pela qual necessitamos de uma GPU A10 com 24 GB de VRAM, no mínimo.

Eis a estrutura do curso:

Transcript

Olá, fala Julien Sainas da NLP Cloud.

Hoje, veremos como implantar o modelo generativo Mistral 7b em uma GPU A10 da AWS.

O Mistral 7b é um modelo generativo topo de gama lançado por uma empresa francesa chamada Mistral AI.

Este modelo foi lançado em setembro de 2023 e bate o Lama 2 7b em todos os testes de referência oficiais.

Mais interessante ainda é o facto de também superar a Lama 2 13b em muitos parâmetros de referência e estar ao mesmo nível da Lama 1 34b.

A Mistral AI lançou este modelo com uma licença Apache, o que lhe permite utilizar este modelo como quiser.

A equipa lançou um modelo de base e uma versão de conversação aperfeiçoada.

Neste vídeo, vamos implementar a versão de conversação.

O Mistral 7b requer pelo menos 14 gigas de memória virtual e mais no caso de um tamanho de contexto grande.

Por isso, vamos implementá-lo numa GPU NVIDIA A10 no AWS, uma vez que esta GPU tem 24 gigas de memória virtual e é bastante económica.

A maneira mais fácil de implantar o Mistral 7b é usar a estrutura Hugging Face e seguir as diretrizes oficiais do Mistral AI.

Como primeiro passo, teremos de selecionar a máquina AWS correcta.

Existem imensas máquinas no AWS, por isso o melhor conselho que lhe posso dar é começar por esta página de tipos de instância e depois ir para Accelerated Computing à esquerda.

Aqui, tem uma lista de todas as instâncias de hardware acelerado que o AWS fornece, e a que pretendemos hoje é a G5.

Como se pode ver aqui, o G5 incorpora um GPU A10, que é o que queremos.

Existem vários tipos de instâncias G5.

Alguns têm apenas uma GPU, outros têm quatro ou oito GPUs.

Uma GPU é suficiente para nós, porque há memória virtual suficiente numa GPU, mas temos de ter muito cuidado com a quantidade de memória que a instância tem, porque quando iniciarmos o modelo Mistral 7b, precisaremos temporariamente de alguma memória para carregar o modelo.

É por isso que seleccionaremos hoje uma instância G5 4X grande, porque 64 gigas devem ser suficientes.

Agora, vou para a minha consola AWS e clico em Launch Instance.

Chamemos-lhe Teste A10 Mistral.

Vamos selecionar o sistema operativo Ubuntu, mas há um truque.

Não queremos selecionar o sistema operativo Ubuntu padrão porque teremos de instalar manualmente os controladores NVIDIA, o que é muito doloroso.

O que vamos fazer é selecionar o servidor Deep Learning AMI GPU PyTorch aqui, o que é muito melhor porque este AMI vem com o Ubuntu mais os drivers NVIDIA mais o kit de ferramentas CUDA mais o PyTorch e outras coisas, que são todas as coisas que vamos precisar hoje para os nossos testes.

Aqui, seleccionamos a instância grande G5 4X.

Se não tiver um par de chaves, tem de criar um.

Se esta é a primeira vez que faz isto e não sabe exatamente como ligar o VS Code à sua instância AWS, recomendo que veja o nosso vídeo dedicado sobre o ambiente de desenvolvimento remoto com o VS Code no AWS.

Não é necessário abrir outras portas, e recomendo que adicione talvez 100 gigas de disco.

Em teoria, o modelo deve ocupar apenas 20 gigas de disco rígido, mas é sempre melhor ter mais, porque talvez seja necessário instalar bibliotecas, por isso aqui estaremos seguros.

Vamos clicar em Iniciar instância.

Ótimo, está criado.

Se tiver um problema de quota porque talvez seja a primeira vez que lança um GPU 8N, recomendo que contacte o suporte do AWS.

Estou agora a utilizar o IP público aqui, e agora estou a mudar para o VS Code.

No canto inferior esquerdo, é necessário ligar uma janela atual ao anfitrião e, em primeiro lugar, é necessário configurar os anfitriões.

Aqui, este é o endereço IP que acabei de obter do AWS e esta é a minha chave SSH.

Estou a guardar o ficheiro e volto a fazer o mesmo, mas desta vez clico em Mistral 7B.

Quero aceitar a nova impressão digital.

Perfeito.

Agora estamos na nossa máquina GPU 8N.

Vamos verificar primeiro se a GPU está disponível com os controladores correctos.

Com o NVIDIA SMI, perfeito.

Posso ver que tenho uma GPU 8N aqui e que está vazia, por isso tenho quase 24 gigas de VRAM para o meu modelo atual.

Estou a criar um diretório de teste que abrirei com o VS Code e agora estou a criar um ficheiro de teste.

Talvez lhe possamos chamar infer.py.

Então o que devemos colocar neste ficheiro infer.py? É fácil.

Vamos ao nosso modelo de IA Mistral sobre a Cara de Abraço.

Se é a primeira vez que está a descarregar um modelo no Hugging Face, basicamente pode ir aqui a modelos, e tem toneladas de modelos disponíveis.

Pode clicar aqui e digitar Mistral 7B.

Como pode ver, o Mistral já estava no topo da lista porque está muito na moda atualmente.

Vou selecionar o modelo Instruct porque é mais divertido para brincar hoje em dia, e aqui estou apenas a seguir as orientações da equipa Mistral AI.

Por isso, basta copiar e colar o código no VS Code.

Não vai funcionar como está porque, antes disso, precisamos de instalar a biblioteca Transformers.

Assim, como este modelo Mistral 7B acabou de ser adicionado aos Transformers, ainda não está disponível no pacote PyPy, mas isso não é um problema.

Vamos instalar o Transformers diretamente a partir do repositório GitHub.

Ótimo.

Agora, o Transformers está corretamente instalado.

A última coisa que precisamos de fazer é utilizar a versão de vírgula flutuante 16 do modelo, porque se utilizarmos a versão predefinida do modelo, que é de vírgula flutuante 32, será demasiado grande para a nossa GPU A10 e, na maioria das vezes, a diferença entre FP16 e FP32 para este tipo de modelo não é de todo percetível.

Portanto, o que precisamos de fazer hoje é importar o Torch e adicionar este parâmetro, Torch dtype, ao carregar o modelo.

Ótimo.

Agora, vamos tentar executar o script de inferência.

Ótimo.

Assim, temos uma receita correcta de maionese.

Talvez possamos tentar outra coisa.

Vamos perguntar ao modelo como instalar o Transformers num servidor Linux.

Podemos eliminar isto.

Ótimo.

Portanto, CSS, não sei bem porquê.

Parece correto, exceto a marcação CSS aqui.

Não sei bem por que razão há este pormenor, mas penso que é suficiente para lhe mostrar que é um bom modelo 7B, e agora que já sabe como utilizá-lo, é a sua vez.

Agora já sabe como implementar o modelo Mistral 7B no seu próprio servidor.

Como pode ver, não é necessariamente complexo, especialmente porque atualmente só estamos a utilizar uma única GPU.

Se não tiver uma GPU A10 com memória virtual suficiente, poderá precisar de várias GPUs mais pequenas.

Nesse caso, terá de dividir o seu modelo em várias GPUs mais pequenas.

Será um pouco mais complexo e precisaremos de outro vídeo dedicado a este assunto.

Tenha um bom dia.