Implantação do Serviço de Inferência Llama 3.1 405B: Guia para Iniciantes

Implantação do Serviço de Inferência Llama 3.1 405B: Guia para Iniciantes

Introdução

Este artigo utiliza a instância de GPU 8 x H100 para mostrar como implantar o Llama3.1–405B. Implantar modelos grandes por conta própria é uma tarefa demorada e custosa. Para evitar esse trabalho tedioso e caro, você pode considerar usar o Llama3.1–405B diretamente. Procure plataformas de provedores de modelos excelentes na indústria de IA e utilize-as através do padrão da API OpenAI para serviços de inferência. Elas são fáceis de usar e seu modelo de preço por uso é econômico e gerenciável. Recomendamos o serviço de API de inferência Llama3.1–405B fornecido pela Novita AI.

Requisitos de Implantação do Llama3.1–405B

Todos os modelos Llama3.1 lançados pela Meta incluem 8B, 70B e 405B. O modelo Llama3.1–405B é o maior modelo de linguagem de código aberto até hoje, com parâmetros que chegam a 405 bilhões. Os resultados da avaliação de desempenho do modelo superam o GPT-4 e GPT-4o e estão no mesmo nível do Claude3.5-Sonnet.

É difícil carregar um modelo tão grande em uma GPU. A versão FP16 original do modelo 405B requer 810 GB de memória GPU, conforme mostrado na imagem abaixo. No entanto, tomando a GPU H100 mais poderosa disponível atualmente como exemplo, o servidor de 8 soquetes não pode carregar diretamente esta versão do modelo. É necessário quantizar a versão FP16 do modelo e convertê-la para uma representação de baixa precisão, reduzindo assim os requisitos de memória e carregando-a com sucesso na GPU.

Os modelos Llama3.1 têm uma arquitetura semelhante aos modelos Llama3, o que facilita o uso do framework de inferência. Soluções de inferência de código aberto como o vLLM podem ser rapidamente adaptadas para suportar o grande Llama3.1–405B.

Para implantar um serviço de inferência para o Llama3.1–405B, os três preparativos principais são:

  • Hardware: Recomendamos alugar a instância de servidor GPU 8 x H100 e reservar cerca de 1,5 TB de espaço de armazenamento.
  • Modelo: Prepare uma conta no Hugging Face e baixe o Llama3.1–405B original ou as versões 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 um servidor GPU de 8 soquetes H100, faça login no servidor e baixe o modelo. Apresentamos como baixar a versão FP16 do modelo e convertê-la para as versões quantizadas FP8 e INT4 (claro, você também pode baixar os modelos pré-quantizados do Hugging Face).

Recomendamos baixar a versão Instruct da plataforma Hugging Face. Primeiro, registre-se e faça login no Hugging Face. 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 do modelo Llama3.1–405B: https://huggingface.co/meta-llama/Meta-Llama-3.1-405B-Instruct, envie uma solicitação de modelo para a Meta e aguarde cerca de meia hora pela autorização.

De volta ao servidor GPU, instale o aplicativo cliente Hugging Face e comece a baixar o modelo. O comando é o seguinte:

pip install huggingface-hub
huggingface-cli login ## Input Access Token
huggingface-cli download meta-llama/Meta-Llama-3.1-405B-Instruct ## Start Downloading 405B

Após uma longa espera (dependendo da internet), o modelo 405B de 800 GB será baixado para a máquina local. Execute “huggingface-cli scan-cache” para visualizar as informações detalhadas do modelo.

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

Primeiro, baixe a ferramenta de quantização FP8. Você pode usar o AutoFP8 de código aberto: https://github.com/neuralmagic/AutoFP8. Chame os scripts nele para quantizar com o modo dinâmico. Faça o seguinte:

git clone https://github.com/neuralmagic/AutoFP8.git
cd AutoFP8
pip install -e . ## Compile and install the AutoFP8 tool locally
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 a versão quantizada do modelo usando “ — save-dir”. Como esta é uma quantização apenas de pesos, a velocidade geral é rápida.

Você também pode baixar a versão quantizada FP8 fornecida 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

Assim como na quantização FP8, você pode usar a ferramenta de código aberto AutoAWQ para realizar a quantização INT4. O endereço para este método de quantização é https://github.com/casper-hansen/AutoAWQ. As etapas de quantização são as seguintes:

Construção do Framework de Inferência

Aproveitando a poderosa comunidade de código aberto, o vLLM é um framework de inferência eficiente que fornece suporte para vários LLMs com atualizações oportunas. A partir do v0.5.3.post1, o vLLM suporta o serviço de inferência para os modelos Llama 3.1.

As etapas para baixar o código fonte do vLLM e compilá-lo são as seguintes:

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, você pode iniciar o serviço de inferência.

Além de compilar o vLLM na máquina local, você pode construir o vLLM como uma imagem docker. O método é o seguinte:

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 a imagem vLLM:

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

Execução do Serviço de Inferência

Após construir o framework de inferência vLLM, você pode iniciar o vLLM e carregar o modelo Llama 3.1–405B para executar o serviço de inferência. Para a compilação local do framework de inferência vLLM, você precisa mudar para o diretório raiz do código fonte do vLLM e então 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 você deseja executar o serviço de inferência através de um contêiner Docker, pode usar o seguinte comando:

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 estiver em execução, ele ouvirá na porta 18001 enquanto recebe e processa solicitações dos usuários. Você pode verificar rapidamente o serviço de inferência enviando uma solicitação POST para o endpoint completions a partir do seu terminal local. O comando é o seguinte:

curl -X POST -H “Content-Type: application/json”
http://localhost:18001/v1/completions
-d ‘{“model”: “llama31-405b-fp8”, “prompt”: “San Francisco is a”}’

Com isso, a implantação do modelo Llama 3.1 está concluída.

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