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
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
Comandos úteis
Para verificar o id da instância desejada:
mgc vm instances list
Para verificar o id do volume desejado:
mgc block-storage volumes list
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]
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]
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]
...
Testando a inferência
Após finalizado, testar com http://[ip]:8000. O resultado deve ser algo parecido com:
Ollama is running
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!"
}
]
}'
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! 👋 nnIt'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. nnWhat can I do for you today?nnnn"},"finish_reason":"stop"}],"usage":{"prompt_tokens":22,"completion_tokens":66,"total_tokens":88}}
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.