DEV Community

Cover image for Como ter um modelo de IA utilizando GPU na Magalu Cloud
Magalu Cloud for Magalu Cloud

Posted on

Como ter um modelo de IA utilizando GPU na Magalu Cloud

Autor: Cleverson Gallego - Sr. Technical Product Manager

Os modelos de linguagem (LLMs e SLMs) estão cada vez mais acessíveis, mas configurá-los em ambientes otimizados de GPU e armazenamento ainda pode ser um desafio.

Com a Magalu Cloud, é possível criar em poucos minutos uma instância com GPU, anexar volumes NVMe via Block Storage e executar inferência com alta performance e baixa latência, tudo isso com privacidade e previsibilidade de custos.

Neste guia, vamos demonstrar passo a passo como configurar um ambiente para inferência com modelos como Gemma 3 27B, Mistral 7B, dentre outros.

Pré-requisitos

Antes de iniciar, será necessário:

  • Um tenant ativo na Magalu Cloud;
  • CLI instalada e autenticada;
  • Conhecimento básico em Linux, Ansible e Ollama.

Escolhendo o modelo certo

Entender essa relação é essencial para dimensionar corretamente o ambiente, evitando custos desnecessários e garantindo o máximo desempenho por GPU.

Antes de selecionarmos a Virtual Machine e a GPU que iremos utilizar é importante termos em mente alguns pontos:

  • Qual será o caso de uso para o modelo?
  • Qual modelo irei utilizar?
  • Qual a quantidade ideal de parâmetros para meu caso de uso?

Os parâmetros de um modelo (por exemplo, 27 bilhões do Gemma 3, da Google) são os valores numéricos aprendidos durante o treinamento do modelo e definem o comportamento interno da rede neural do modelo.

Eles incluem:

  • Pesos (weights): coeficientes que determinam a força entre neurônios artificiais;
  • Biases: ajustes adicionais usados para deslocar as ativações das camadas.

Para simplificar: “Parâmetros são o ‘conhecimento condensado’ que o modelo aprendeu ao ser treinado sobre grandes volumes de dados.”

Um modelo com mais parâmetros é, em geral, mais expressivo e capaz de lidar com contextos complexos, mas isso não o torna automaticamente o melhor para todos os tipos de tarefas; portanto, é necessário escolher o modelo com sabedoria, de acordo com o hardware e o caso de uso.

Modelos de linguagem como o Gemma 3 27B, Mistral 7B ou Llama 3 70B são redes neurais massivas compostas por bilhões de parâmetros, e cada parâmetro ocupa espaço em memória da GPU durante a inferência.

Essa relação é direta!

Quanto maior o modelo, maior a memória VRAM necessária, maior a GPU (ou o número de GPUs) exigida(s).

Para estimar corretamente o consumo de memória vamos utilizar uma prática da comunidade:

memória VRAM necessária = [ N Parâmetros ] x [ 2 bytes ] x [ fator de otimização ]

O fator de otimização depende da quantização utilizada no modelo.

Quantização é o processo de reduzir a precisão numérica dos parâmetros, normalmente convertendo números em ponto flutuante (FP) de 16 ou 32 bits que ocupam mais memória em versões compactadas como 8, 4 ou até 2 bits.

Tipo de quantização Descrição Fator aproximado
FP16 2 bytes por parâmetro 2,0
INT8 1 byte por parâmetro 1,0
Q4_K_M 4 bits ( ~0,5 bytes por parâmetro ) 0,5

A quantização é o que permite rodar modelos grandes em GPUs menores — sem sacrificar qualidade de forma perceptível.

Por exemplo, um modelo de 27 bilhões de parâmetros ( Gemma 3 27B ) quantizado em Q4_K_M exigirá: 27 B x 0,5 = ~ 13.5 GB de VRAM

Em resumo, utilizando uma NVIDIA L40 ou L40S, que são as GPUs disponíveis nesta data na Magalu Cloud é seguro dizer que são confortáveis:

  • FP16: modelos de 14-19B;
  • INT8: modelos de 29-38B;
  • Q4: modelos de 58-76B (70B fica no limite com 1 GPU somente (batch=1 e contexto curto)). Para uso confortável prefira 2xL40/L40S.

Recomendações práticas:

  • Modelos de até 7B: uma GPU L40 ou L40S é suficiente mesmo em FP16;
  • Modelos de 20-30B: use quantização (Q4 ou INT8) em uma GPU L40 ou L40S;
  • Modelos acima de 40B: prefira usar 2 GPUs L40S.

Criando a Virtual Machine com GPU e Block Storage

A criação da VM com GPU é o ponto de partida do nosso ambiente de inferência.

Neste exemplo, vamos provisionar uma instância com GPU L40 (flavor L40x1-DP8-64-100) e anexar um volume de Block Storage NVMe 20K IOPS de 500 GB para armazenar os modelos.

Para maiores detalhes dos passos necessários para a criação da VM, consulte nossa documentação oficial.

Agora, para a criação do volume, é importante levar em consideração a quantidade de modelos e, conforme já comentamos, a quantidade de parâmetros. Quanto mais parâmetros, mais espaço o modelo irá ocupar no volume, então maior precisará ser o mesmo. Para o exemplo vamos criar um volume de 500GB com 20K IOPS:

mgc block-storage volumes create --type.name="cloud_nvme20k" --name="modelos" --size=500 --availability-zone br-se1-c
Enter fullscreen mode Exit fullscreen mode

O próximo passo é anexar o volume criado a VM:

mgc block-storage volumes attach --id b74d1968-dd43-4136-ab63-193fcc1111111 --virtual-machine-id 278e412d-af9a-4348-ab76-bfc111111111
Enter fullscreen mode Exit fullscreen mode

Comandos úteis

Para verificar o id da instância desejada:

mgc vm instances list 
Enter fullscreen mode Exit fullscreen mode

Para verificar o id do volume desejado:

mgc block-storage volumes list
Enter fullscreen mode Exit fullscreen mode

Pronto, agora você já tem sua VM criada com GPU e armazenamento. Agora é hora de instalarmos e configurarmos o modelo.


Configurando o ambiente com Ansible

Serão executados os seguintes passos na VM, com auxílio do Ansible:

  • Instalação e configuração de pacotes de sistema;
  • Instalação de CUDA e NVIDIA Drivers;
  • Instalação e configuração Ollama;
  • Deploy do modelo Gemma 3 7B;

Observação: deve-se realizar a instalação do Ansible em uma máquina com acesso à internet antes da execução dos passos.

Dica de segurança: para ambientes de produção, recomenda-se usar chaves SSH com acesso restrito e limitar as portas abertas.

Consulte a documentação oficial da Magalu Cloud para boas práticas de segurança.

Após a instalação do ansible alterar o arquivo inventory.ini:

[inference]
[ip da vm] ansible_user=ubuntu ansible_ssh_private_key_file=[~/.ssh/id_rsa.pem]
Enter fullscreen mode Exit fullscreen mode

Onde:

  • [ip da vm] deve ser substituído pelo ip público da sua VM;
  • [~/.ssh/id_rsa.pem] deve ser substituído pelo arquivo que contém a chave privada configurada para acessoa a sua VM.

Você pode conferir o Ansible necessário para a instalação clicando aqui.

Logo após, executar no terminal:

ansible-playbook -i [inventory.ini] [playbook_gemma_3_27b_ollama_GPU.yaml]
Enter fullscreen mode Exit fullscreen mode

Onde inventory.ini é o arquivo modificado com o ip e chave privada ssh e playbook_gemma_3_27b_ollama_GPU.yaml é o arquivo Ansible com o conteúdo acima.

Após a execução a saída do terminal deve ser algo parecido com o texto abaixo:

magalu@WNLEC-GSLR6Q3 ~/i/ansible> ansible-playbook -i inventory.ini playbook_gemma_3_27b_ollama_GPU.yaml

PLAY [Setup llama.cpp CPU inference environment with external access] ************************************************************************************************************************

TASK [Gathering Facts] ***********************************************************************************************************************************************************************
The authenticity of host 'ip (ip)' can't be established.
ED25519 key fingerprint is SHA256:.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
ok: [ip]

TASK [Install system packages] ***************************************************************************************************************************************************************
changed: [ip]

TASK [Clone llama.cpp repository] ************************************************************************************************************************************************************
changed: [ip]

...
Enter fullscreen mode Exit fullscreen mode

Testando a inferência

Após finalizado, testar com http://[ip]:8000. O resultado deve ser algo parecido com:

Ollama is running
Enter fullscreen mode Exit fullscreen mode

Para confirmar vamos invocar usando curl o modelo:

curl http://[IP_VM]:8000/v1/chat/completions     -H "Content-Type: application/json"     -d '{
                                    "model": "gemma3",
                                    "messages": [
                                        {
                                            "role": "system",
                                            "content": "You are a helpful assistant."
                                        },
                                        {
                                            "role": "user",
                                            "content": "Hello!"
                                        }
                                    ]
                                }'
Enter fullscreen mode Exit fullscreen mode

O resultado deve ser:

{"id":"chatcmpl-640","object":"chat.completion","created":1760036029,"model":"gemma3:27b","system_fingerprint":"fp_ollama","choices":[{"index":0,"message":{"role":"assistant","content":"Hello there! 👋 \n\nIt's nice to meet you! I'm here to help in any way I can. Just let me know what you need – whether it's answering a question, brainstorming ideas, writing something, or just having a conversation. \n\nWhat can I do for you today?\n\n\n\n"},"finish_reason":"stop"}],"usage":{"prompt_tokens":22,"completion_tokens":66,"total_tokens":88}}
Enter fullscreen mode Exit fullscreen mode

Conclusão

Agora você tem um ambiente completo de inferência com GPU, Block Storage NVMe e Ollama configurado automaticamente via Ansible.

Acesse o console da Magalu Cloud e teste seu primeiro modelo Gemma ou Mistral com aceleração total.

Queremos saber o que você vai criar com seu modelo! Compartilhe seu projeto conosco.

Top comments (0)