Como implantar o Llama 3.1 405B com Novita AI

Como implantar o Llama 3.1 405B com Novita AI

Prefácio

O lançamento do Llama3.1 atraiu atenção global imediatamente, marcando a primeira vez que um modelo open-source se aproximou e até superou modelos proprietários em algumas métricas. Este artigo apresenta o método e as etapas para implantar o modelo Llama3.1-405B do zero usando uma Instância de GPU Novita AI. Vale notar especialmente que implantar um modelo grande do zero é uma tarefa demorada e que exige muito trabalho. Se você deseja evitar esse trabalho tedioso e usar diretamente o modelo Llama3.1-405B, pode procurar uma excelente plataforma de hospedagem de modelos no setor para chamar o serviço de inferência na forma de API OpenAI. Não é apenas fácil de usar, mas também muito amigável em termos de custo, com um custo total muito baixo e controlável. Atualmente, a Novita AI lançou um serviço de API para Llama3.1, e você pode experimentá-lo diretamente no Playground: https://novita.ai/model-api/llm-api/playground

Requisitos básicos para implantação do Llama3.1-405B

A série de modelos Llama3.1 open-source da Meta inclui três tamanhos: 8B, 70B e 405B. O modelo de 405B é o maior modelo de linguagem grande open-source até o momento, com uma escala de parâmetros de 40,5 bilhões. O desempenho do modelo em vários resultados de avaliação superou os modelos GPT-4 e GPT-4o, e é comparável ao Claude3.5-Sonnet. É desafiador carregar um modelo tão grande na GPU. A versão original FP16 do modelo 405B requer 810 GB de memória GPU, conforme mostrado na figura abaixo. No entanto, mesmo com a GPU H100 de especificação mais alta disponível no mercado, um servidor com a configuração máxima de 8 GPUs não consegue carregar diretamente esta versão do modelo. É necessário quantizar a versão FP16 do modelo para uma representação de precisão mais baixa, reduzindo assim os requisitos de memória e conseguindo carregá-la na GPU.

A arquitetura de modelo da série Llama3.1 herda do Llama3, e a estrutura é muito semelhante, o que é muito favorável para o framework de inferência. Soluções de inferência open-source como vLLM podem concluir rapidamente a adaptação e suportar a inferência de modelos grandes como Llama3.1-405B.

Em resumo, para concluir a implantação do serviço de inferência do Llama3.1-405B, precisamos nos preparar em três aspectos:

  • Hardware: Recomenda-se escolher uma instância de servidor GPU configurada com 8 GPUs H100 e reservar cerca de 1,5 TB de espaço de armazenamento. Você pode selecionar a Instância através do console Novita AI e fornecer capacidade de armazenamento montando um volume de rede.

  • Modelo: Prepare uma conta no Huggingface, baixe o modelo original Llama3.1-405B, ou também pode baixar a versão FP8 ou INT4 do modelo.
  • Framework de Inferência: Baixe a versão mais recente do vLLM v0.5.3.post1.

Preparação do Modelo

Após preparar o servidor GPU com 8 placas H100, faça login no servidor e comece a baixar o modelo. Aqui, apresentamos o método de baixar a versão FP16 do modelo e convertê-la manualmente para versões quantizadas FP8 e INT4 (claro, você também pode baixar diretamente o modelo quantizado na plataforma Huggingface).

Recomenda-se baixar a versão Instruct da plataforma Huggingface. Primeiro, registre-se e faça login na plataforma Huggingface, crie e salve o Access Token do usuário atual na página de configurações, que será usado ao baixar o modelo.

Abra a página inicial do modelo Llama3.1-405B: https://huggingface.co/meta-llama/Meta-Llama-3.1-405B-Instruct, envie a solicitação do modelo para a Meta e aguarde cerca de meia hora para autorização.

De volta ao servidor GPU, instale o cliente Huggingface e comece a baixar o modelo com os seguintes comandos:

pip install huggingface-hub
huggingface-cli login  ## Insira o Access Token
huggingface-cli download meta-llama/Meta-Llama-3.1-405B-Instruct  ## Iniciar o download do modelo grande 405B

Após uma longa espera (dependendo da velocidade atual da rede), o modelo grande 405B de 800 GB é baixado com sucesso para o local, e as informações específicas do modelo podem ser visualizadas chamando “huggingface-cli scan-cache”.

Em seguida, realize a quantização FP8 e INT4 no modelo original.

Primeiro, baixe a ferramenta de quantização FP8, que pode ser usada diretamente com o AutoFP8 open-source: https://github.com/neuralmagic/AutoFP8, e use o script contido para quantização manual, com o modo de quantização dinâmico, da seguinte forma:

git clone https://github.com/neuralmagic/AutoFP8.git
cd AutoFP8
pip install -e .  ## Compilar e instalar a ferramenta AutoFP8 localmente
python3 examples/quantize.py --model-id meta-llama/Meta-Llama-3.1-405B-Instruct --save-dir Meta-Llama-3-8B-Instruct-fp8 --activation-scheme dynamic --max-seq-len 2048 --num-samples 2048

O script de quantização especifica o caminho de saída para o modelo quantizado usando “–save-dir”. Como é apenas quantização de pesos, a velocidade geral é muito rápida.

Você também pode baixar diretamente a versão FP8 quantizada pela Meta: https://huggingface.co/meta-llama/Meta-Llama-3.1-405B-Instruct-FP8. O comando de download é o seguinte: huggingface-cli download meta-llama/Meta-Llama-3.1-405B-Instruct-FP8

De forma semelhante à quantização FP8, você pode usar o AutoAWQ open-source para a versão INT4. O endereço desta solução de quantização é: https://github.com/casper-hansen/AutoAWQ. O método de quantização é o seguinte:

git clone https://github.com/casper-hansen/AutoAWQ.git
cd AutoAWQ
pip install -e .   ## Compilar e instalar a ferramenta AutoAWQ localmente
## Modificar manualmente examples/quantize.py
    model_path = 'meta-llama/Meta-Llama-3.1-405B-Instruct'
    quant_path = 'meta-llama/Meta-Llama-3.1-405B-Instruct-awq'
    
# Iniciar a quantização
python examples/quantize.py

Construção do Framework de Inferência

Graças ao forte suporte da comunidade open-source, o vLLM é reconhecido como um framework de inferência de alto desempenho de nível industrial, com suporte muito rico para modelos grandes e atualizações muito oportunas. A partir do v0.5.3.post1, o vLLM suporta o serviço de inferência da série de modelos Llama3.1.

O método para baixar o código fonte do vLLM e compilar é o seguinte:

git clone https://github.com/vllm-project/vllm
cd vllm
git checkout -b v0.5.3.post1 v0.5.3.post1
pip install -e .

Após a compilação bem-sucedida, você pode iniciar o serviço de inferência.

Além de compilar o vLLM localmente, você também pode compilar o vLLM em uma imagem docker, da seguinte forma:

git clone https://github.com/vllm-project/vllm
cd vllm
git checkout -b v0.5.3.post1 v0.5.3.post1
docker build -t vllm_0.5.3.p1 .

Você também pode baixar diretamente a imagem oficial do vLLM:

docker pull vllm/vllm-openai:v0.5.3.post1

Executando o Serviço de Inferência

Após concluir a construção do framework de inferência vLLM, você pode iniciar o vLLM e carregar o modelo Llama3.1-405B para iniciar o serviço de inferência. Para o framework de inferência vLLM compilado localmente, você precisa mudar para o diretório raiz do código fonte do vLLM e, em seguida, executar o seguinte comando para iniciar o serviço de inferência:

cd vllm
python3 -m vllm.entrypoints.openai.api_server --port 18001 --model meta-llama/Meta-Llama-3.1-405B-Instruct-FP8 --tensor-parallel-size 8 --pipeline-parallel-size 1 --swap-space 16 --gpu-memory-utilization 0.99 --dtype auto --served-model-name llama31-405b-fp8 --max-num-seqs 32 --max-model-len 32768 --max-num-batched-tokens 32768 --max-seq-len-to-capture 32768

Se estiver executando o serviço de inferência em um contêiner docker, você pode consultar o seguinte comando para executá-lo:

docker run -d --gpus all --privileged --ipc=host --net=host vllm/vllm-openai:v0.5.3.post1 --port 18001 --model meta-llama/Meta-Llama-3.1-405B-Instruct-FP8 --tensor-parallel-size 8 --pipeline-parallel-size 1 --swap-space 16 --gpu-memory-utilization 0.99 --dtype auto --served-model-name llama31-405b-fp8 --max-num-seqs 32 --max-model-len 32768 --max-num-batched-tokens 32768 --max-seq-len-to-capture 32768

Assim que o framework de inferência vLLM for executado com sucesso, ele irá escutar em…

Novita AI é a plataforma All-in-one na nuvem que impulsiona suas ambições de IA. APIs integradas, serverless, Instância GPU - as ferramentas econômicas que você precisa. Elimine infraestrutura, comece gratuitamente e torne sua visão de IA realidade.

Leituras Recomendadas:

  1. Do Docker ao Kubernetes
  2. Desmistificando o Agendamento no Kubernetes: Um Mergulho Profundo em Predicados e Prioridades