Nos últimos meses, grandes modelos de linguagem foram objeto de extensa pesquisa e desenvolvimento, com modelos de última geração como GPT-4, Meta LLaMa e Alpaca ultrapassando os limites do processamento de linguagem natural e do hardware necessário para executá-los . Executar a inferência nesses modelos pode ser um desafio computacional, exigindo hardware poderoso para fornecer resultados em tempo real.
Nos últimos meses, grandes modelos de linguagem foram objeto de extensa pesquisa e desenvolvimento, com modelos de última geração como GPT-4, Meta LLaMa e Alpaca ultrapassando os limites do processamento de linguagem natural e do hardware necessário para executá-los . Executar a inferência nesses modelos pode ser um desafio computacional, exigindo hardware poderoso para fornecer resultados em tempo real.
No laboratório de análise de armazenamento, colocamos duas GPUs NVIDIA RTX 8000 na tarefa de executar o modelo LLaMa da Meta para ver como elas se comportavam ao executar inferência em modelos de linguagem grandes. Nós usamos o Lenovo P920 como host para os cartões, minimizando gargalos. A RTX 8000 é uma placa gráfica de ponta capaz de ser usada em aplicativos de IA e aprendizado profundo, e nós as escolhemos especificamente graças aos 48 GB de memória GDDR6 e 4608 núcleos CUDA em cada placa, e também Kevin está acumulando todos os A6000'S.
Meta LLaMA é um modelo de linguagem em larga escala treinado em um conjunto diversificado de textos da Internet. Ele está disponível publicamente e fornece resultados de ponta em várias tarefas de processamento de linguagem natural. Neste artigo, forneceremos um guia passo a passo sobre como configuramos e executamos a inferência LLaMA em GPUs NVIDIA. Não é garantido que funcione para todos.
Requisitos Meta LLaMa
Antes de começar, precisamos ter certeza de que temos os seguintes requisitos instalados:
- GPU(s) NVIDIA com no mínimo 16 GB de VRAM
- Drivers NVIDIA instalados (pelo menos versão 440.33)
- CUDA Toolkit instalado (pelo menos versão 10.1)
- Anaconda instalado
- PyTorch instalado (pelo menos versão 1.7.1)
- Espaço em disco; todo o conjunto de pontos de verificação LLaMa está ultrapassando 200 TB.
Nota: É recomendável ter um ambiente Anaconda dedicado para LLaMA, temos alguns no banco de testes para que possamos mexer com pacotes e parâmetros e não mangueirar a instalação base.
Configure um ou dois ambientes dedicados no Anaconda
Etapas para executar a inferência Meta LLaMA em GPUs NVIDIA
- Baixe o repositório LLaMA: O primeiro passo é clonar o repositório LLaMA do GitHub.
git clone https://github.com/EleutherAI/LLaMA.git
- Obtenha o ponto de verificação LLaMA e o tokenizer: Visite a página do GitHub e preencha o formulário do Google vinculado para acessar o download. Outros LLMs estão disponíveis, como Alpaca. Para isso, assumiremos que o acesso aos arquivos LLaMa está disponível.
- Liste e instale os programas necessários para o LLaMa executando o seguinte comando no diretório do repositório clonado:
pip install -r requirements.txt
pip install -e .
- Configure o script de inferência: A
example.py
O script fornecido no repositório LLaMA pode ser usado para executar a inferência LLaMA. O script pode ser executado em um nó single ou multi-gpu comtorchrun
e produzirá conclusões para dois prompts predefinidos.
Abra example.py
e defina os seguintes parâmetros com base em sua preferência. As descrições de cada parâmetro e o que eles fazem estão listadas abaixo.
--max_seq_len
: comprimento máximo da sequência (o padrão é 2048)--max_batch_size
: tamanho máximo do lote (o padrão é 8)--gen_length
: duração da geração (o padrão é 512)--temperature
: temperatura de geração (o padrão é 1.0)--top_p
: amostragem top-p (o padrão é 0.9)
Por exemplo, para executar a inferência LLaMA em uma única GPU com arquivos de checkpoint e tokenizer no diretório /path/to/files
, use o seguinte comando:
torchrun --nproc_per_node 1 example.py --ckpt_dir /path/to/files --tokenizer_path /path/to/files/tokenizer.model
Nota: A nproc_per_node
O argumento depende do tamanho do modelo e do número de GPUs necessárias para os pontos de verificação LLaMa padrão. Consulte a tabela a seguir para definir o valor apropriado para seu sistema e modelo que você está executando:
Modelo | GPUs necessárias |
---|---|
7B | 1 |
13B | 2 |
33B | 4 |
65B | 8 |
No exemplo abaixo, usamos os prompts padrão no arquivo de exemplo, mas jogamos com o temperature
e top_p
variáveis, produzindo alguns resultados interessantes. Também aumentamos o comprimento da resposta.
Cuidado ao brincar com o termostato!
Detalhamento do arquivo example.py e das variáveis que você precisa saber
A maioria deles é pré-configurada no modelo e não precisa ser ajustada; no entanto, se você estiver usando LLMs e inferências, aqui estão algumas informações úteis que detalham o que os sinalizadores e as opções fazem.
local_rank
: a classificação da GPU (processo) atual no grupo de GPUs usadas para paralelismo de modelo. Isso é definido automaticamente.world_size
: o número total de GPUs sendo usadas para paralelismo de modelo. Isso é definido automaticamente.ckpt_dir
: O diretório que contém os pontos de verificação do modelo. Isso é definido em tempo de execução.tokenizer_path
: o caminho para o tokenizador usado para pré-processar o texto. Isso é definido em tempo de execução.temperature
: Um parâmetro que controla a aleatoriedade do texto gerado (valores mais altos tornam a saída mais aleatória e valores mais baixos a tornam mais focada).top_p
: Um parâmetro que controla a estratégia de amostragem de núcleo, que é um método para gerar texto que seleciona apenas os tokens mais prováveis com uma probabilidade cumulativa de no máximotop_p
.max_seq_len
: O comprimento máximo da sequência para a entrada e saída do modelo. Você pode ajustar isso para diminuir sua necessidade de VRAM.max_batch_size
: o número máximo de sequências de entrada que o modelo pode processar em paralelo. Você pode ajustar isso para diminuir sua necessidade de VRAM.prompts
: uma lista de prompts de entrada para o modelo gerar texto com base.results
: Uma lista de texto gerado correspondente a cada prompt de entrada.
Considerações Finais
Nossos testes mostraram que as GPUs RTX 8000 podem oferecer desempenho impressionante, com tempos de inferência variando de alguns segundos a cerca de um minuto, dependendo dos parâmetros do modelo e do tamanho da entrada. As GPUs podiam lidar com grandes tamanhos de lote e executar inferências em vários modelos simultaneamente sem nenhuma desaceleração perceptível.
Um dos benefícios de usar GPUs para inferência é que elas podem ser facilmente ampliadas adicionando mais GPUs ao sistema. Isso permite que modelos ainda maiores sejam executados em tempo real, permitindo novos aplicativos em áreas como chatbots, sistemas de resposta a perguntas e análise de sentimentos.
Alpaca é um modelo compacto de linguagem de IA criado por uma equipe de cientistas da computação da Universidade de Stanford. Ele é construído no modelo LLaMA 7B da Meta, que possui 7 bilhões de parâmetros e foi treinado usando uma grande quantidade de texto da web. Para ajustar o Alpaca, 52,000 demonstrações de instruções foram geradas com o modelo text-davinci-003 da OpenAI, um modelo versátil capaz de executar várias tarefas com base em instruções de linguagem natural. Alpaca é melhor em seguir instruções e produzir texto para uma variedade de propósitos, incluindo escrever resumos, histórias e piadas. Com um custo de treinamento inferior a US$ 600, o Alpaca foi projetado para ser econômico e facilmente replicável. De forma altamente impressionante, vale a pena mencionar que o Alpaca pode ser executado até mesmo em um laptop. Estamos treinando um modelo semelhante ao Alpaca usando os métodos que Stanford fez, mas com nosso próprio toque.
Esta é apenas uma maneira de trabalhar com os avanços tecnológicos mais recentes no laboratório e, graças a algumas poderosas GPUs NVIDIA, podemos fazer ainda mais do que apenas inferência; estamos treinando. Esteja atento ao próximo artigo em breve sobre modelos de ajuste fino como o Meta LLaMa.
Envolva-se com a StorageReview
Newsletter | YouTube | Podcast iTunes/Spotify | Instagram | Twitter | TikTok | RSS feed