Um Guia Simples para Implantar IA Generativa com NVIDIA NIM

por Vishal Dhupar
Um Guia Simples para Implantar IA Generativa com NVIDIA NIM

Não importa se você está trabalhando no local ou na nuvem, os microsserviços de inferência NVIDIA NIM fornecem aos desenvolvedores corporativos modelos de IA otimizados fáceis de implantar da comunidade, parceiros e NVIDIA. Parte do NVIDIA AI Enterprise, o NIM oferece um caminho seguro e simplificado para iterar rapidamente e criar inovações para soluções de IA generativa de classe mundial.

Usando um único contêiner otimizado, você pode implantar facilmente um NIM em menos de 5 minutos em sistemas acelerados de GPU NVIDIA na nuvem ou data center, ou em workstations e PCs. Como alternativa, se você quiser evitar a implantação de um contêiner, poderá começar a criar protótipos de suas aplicações com APIs NIM a partir do Catálogo de APIs da NVIDIA.

  • Use contêineres pré-criados que são implantados com um único comando na infraestrutura acelerada da NVIDIA em qualquer lugar.
  • Mantenha a segurança e o controle de seus dados, seu recurso empresarial mais valioso.
  • Obtenha a melhor precisão com suporte para modelos que foram ajustados usando técnicas como LoRA.
  • Integre endpoints de inferência de IA acelerada aproveitando APIs consistentes e padrão do setor.
  • Trabalhe com os frameworks de aplicações de IA generativa mais populares, como LangChain, LlamaIndex e Haystack.

Este post apresenta uma implantação simples do Docker do NVIDIA NIM. Você poderá usar APIs de microsserviços NIM nos frameworks de aplicações de IA generativa mais populares, como Hugging Face, Haystack, LangChain e LlamaIndex. Para obter um guia completo para implantar o NIM, consulte a documentação do NVIDIA NIM.

Como Implantar o NIM em 5 Minutos

Você precisa de uma licença NVIDIA AI Enterprise ou de uma assinatura do Programa de Desenvolvedor da NVIDIA para implantar o NIM. A maneira mais rápida de obter qualquer uma delas é visitar o Catálogo de API da NVIDIA e escolher Obter chave de API em uma página de modelo, por exemplo, Llama 3.1 405B. Em seguida, insira seu endereço de e-mail profissional para acessar o NIM com uma licença NVIDIA AI Enterprise de 90 dias ou seu endereço de e-mail pessoal para acessar o NIM por meio da assinatura do Programa de Desenvolvedor da NVIDIA.

Login page on https://build.nvidia.com
Página de acesso do Catálogo de API da NVIDIA

Em seguida, certifique-se de configurar e seguir todas as instruções nos pré-requisitos. Se você copiou sua chave de API no fluxo de login, pode pular a etapa para gerar uma chave de API adicional conforme as instruções.

Quando você tiver tudo configurado, execute o seguinte script:

# Escolha um nome de contêiner para bookkeeping
export CONTAINER_NAME=llama3-8b-instruct
# Defina o nome do fornecedor para o LLM
export VENDOR_NAME=meta
# Escolha uma imagem LLM NIM do NGC
export IMG_NAME="nvcr.io/nim/{VENDOR_NAME}/${CONTAINER_NAME}:1.0.0"
# Escolha um caminho no seu sistema para armazenar em cache os modelos baixados
export LOCAL_NIM_CACHE="~/.cache/nim"
mkdir -p "$LOCAL_NIM_CACHE"
# Inicie o LLM NIM
docker run -it --rm --name=$CONTAINER_NAME \
  --runtime=nvidia \
  --gpus all \
  -e NGC_API_KEY \
  -v "$LOCAL_NIM_CACHE:/opt/nim/.cache" \
  -u $(id -u) \
  -p 8000:8000 \
  $IMG_NAME

Em seguida, teste uma solicitação de inferência:

curl -X 'POST' \
    -H 'accept: application/json' \
    -H 'Content-Type: application/json' \
    -d '{
      "model": "meta/llama3-8b-instruct",
      "prompt": "Once upon a time",
      "max_tokens": 64
    }'

Agora você tem uma implantação de produção controlada e otimizada para construir com segurança aplicações de IA generativa. Implantações de amostra hospedadas pela NVIDIA do NIM também estão disponíveis no Catálogo de API da NVIDIA.

Conforme uma nova versão do NIM é lançada, a documentação mais atualizada está sempre em NVIDIA NIM Large Language Models.

Como Integrar o NIM Com Suas Aplicações

Embora a configuração anterior deva ser concluída primeiro, se você estiver ansioso para testar o NIM sem implantar por conta própria, poderá fazê-lo usando pontos de extremidade de API hospedados pela NVIDIA no Catálogo de APIs da NVIDIA:

  • Integre endpoints NIM
  • Integre endpoints NIM no Hugging Face

Integre Endpoints NIM

Comece com uma solicitação curl de conclusão que siga a especificação OpenAI. Para transmitir saídas, você deve definir stream como True. Ao usar Python com a biblioteca OpenAI, você não precisa fornecer uma chave de API se estiver usando um microsserviço NIM.

Certifique-se de atualizar o valor base_url para onde quer que seu microsserviço NIM esteja em execução.

from openai import OpenAI
client = OpenAI(
  base_url = "http://0.0.0.0:8000/v1",
  api_key="no-key-required"
)
completion = client.chat.completions.create(
  model="meta/llama3-8b-instruct",
  messages=[{"role":"user","content":"What is a GPU?"}]
  temperature=0.5,
  top_p=1,
  max_tokens=1024,
  stream=True
)
for chunk in completion:
  if chunk.choices[0].delta.content is not None:
    print(chunk.choices[0].delta.content, end="")

O NIM também é integrado a frameworks de aplicações como Haystack, LangChain e LlamaIndex, trazendo inferência de modelo segura, confiável e acelerada para os desenvolvedores que já estão construindo aplicações incríveis de IA generativa com essas ferramentas populares.

Para usar microsserviços NIM em Python com LangChain, use o seguinte exemplo de código:

from langchain_nvidia_ai_endpoints import ChatNVIDIA
llm = ChatNVIDIA(base_url="http://0.0.0.0:8000/v1", model="meta/llama3-8b-instruct", temperature=0.5, max_tokens=1024, top_p=1)
result = llm.invoke("What is a GPU?")
print(result.content)

Para obter mais informações sobre como usar o NIM, consulte os seguintes notebooks de framework:

Integrar endpoints NIM Hugging Face

Você também pode integrar um endpoint NIM dedicado diretamente no Hugging Face. O Hugging Face inicia instâncias na sua nuvem preferida, implementa o modelo otimizado pela NVIDIA e permite que você inicie a inferência com apenas alguns cliques. Navegue até a página do modelo no Hugging Face e crie um endpoint dedicado diretamente usando seu CSP preferido. Para obter mais informações e um guia passo a passo, consulte NVIDIA Collaborates with Hugging Face to Simplify Generative AI Model Deployments.

A screenshot showing the dropdown option for the Llama 3 model page on Hugging Face with NIM endpoints.
A página do modelo Llama 3 no Hugging Face com a opção de implantação de endpoints NIM

Obtenha Mais do NIM

Com a implantação de modelo rápida, confiável e simples usando o NVIDIA NIM, você pode se concentrar na criação de workflows e aplicações de IA generativa inovadoras e de alto desempenho.

Personalize o NIM com LoRA

Para obter ainda mais do NIM, saiba como usar os microsserviços com LLMs personalizados com adaptadores LoRA. O NIM suporta adaptadores LoRA treinados usando HuggingFace ou NVIDIA NeMo. Armazene os adaptadores LoRA em /LOCAL_PEFT_DIRECTORY e sirva usando um script similar ao usado para o contêiner base.

# Escolha um nome de contêiner para bookkeeping
export CONTAINER_NAME=llama3-8b-instruct
# Defina o nome do fornecedor para o LLM
export VENDOR_NAME=meta
# Escolha uma imagem LLM NIM do NGC
export IMG_NAME="nvcr.io/nim/${VENDOR_NAME}/${CONTAINER_NAME}:1.0.0"
# Escolha uma imagem LLM NIM do NGC
export LOCAL_PEFT_DIRECTORY=~/loras
# Faça o download do lora em formato NeMo. Você também pode baixar o loras HuggingFace PEFT
ngc registry model download-version "nim/meta/llama3-70b-instruct-lora:nemo-math-v1"
# Inicie o microsserviço LLM NIM
docker run -it --rm --name=$CONTAINER_NAME \
  --runtime=nvidia \
  --gpus all \
  -e NGC_API_KEY \
  -e NIM_PEFT_SOURCE \
  -v "$LOCAL_NIM_CACHE:/opt/nim/.cache" \
  -v $LOCAL_PEFT_DIRECTORY:$NIM_PEFT_SOURCE \
  -u $(id -u) \
  -p 8000:8000 \
  $IMG_NAME

Você pode então implantar usando o nome de um dos adaptadores LoRA em /LOCAL_PEFT_DIRECTORY.

curl -X 'POST' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"model": "llama3-8b-instruct-lora_vhf-math-v1",
"prompt": "John buys 10 packs of magic cards. Each pack has 20 cards and 1/4 of those cards are uncommon. How many uncommon cards did he get?",
"max_tokens": 128
}'

Para obter mais informações sobre LoRA, consulte Seamlessly Deploying a Swarm of LoRA Adapters with NVIDIA NIM.

Os microsserviços NIM são lançados e aprimorados regularmente. Para ver os microsserviços NVIDIA NIM mais recentes para visão, recuperação, 3D, biologia digital e muito mais, consulte o Catálogo de API da NVIDIA.