sdesk

Como Contratar e Configurar uma VPS para Aplicativos de IA

Introdução

Aplicativos de inteligência artificial (IA) costumam exigir recursos de CPU/GPU, memória e acesso à rede que vão além de um plano de hospedagem compartilhada. Uma VPS (Virtual Private Server) oferece um ambiente isolado, com controle total sobre o sistema operacional e a possibilidade de escalar recursos conforme a demanda.

Neste guia prático você vai encontrar:

Nota: Não há “solução mágica” – a escolha ideal depende do seu orçamento, da carga de trabalho e do nível de experiência.

---

1. Escolhendo a Plataforma e a Instância de GPU

| Provedora | Tipo de GPU (exemplo) | vCPU / RAM (mín.) | Preço médio (USD/mês) | Observações | |-----------|-----------------------|-------------------|-----------------------|-------------| | AWS | g4dn.xlarge – NVIDIA T4 (16 GB VRAM) | 4 vCPU / 16 GB | US$ 0,752 /h → ~US$ 560/mes | Boa integração com SageMaker; cobrança por hora. | | Azure | Standard_NC6 – NVIDIA Tesla K80 (12 GB VRAM) | 6 vCPU / 56 GB | US$ 0,90 /h → ~US$ 670/mes | Suporte nativo ao Azure ML. | | Google Cloud | n1-standard-4 + NVIDIA Tesla T4 | 4 vCPU / 15 GB | US$ 0,68 /h → ~US$ 500/mes | Crédito de $300 para novos usuários (90 dias). | | DigitalOcean | “Droplet” com GPU (NVIDIA RTX 6000, 24 GB VRAM) | 8 vCPU / 32 GB | US$ 1,20 /h → ~US$ 860/mes | Simplicidade de configuração; sem contratos de longo prazo. | | Linode | “GPU Instance” – NVIDIA RTX A6000 (48 GB VRAM) | 16 vCPU / 64 GB | US$ 2,00 /h → ~US$ 1 440/mes* | Preço transparente, boa taxa de transferência. |

\*Valores aproximados para a região us‑east‑1 (outubro 2024) e uso 24 h/dia. Custo pode ser reduzido com instâncias spot/preemptivas, reservas de 1‑3 anos ou créditos de teste.

Como escolher?

  1. Tipo de carga – Se seu modelo roda em inferência (ex.: BERT, YOLO) e não precisa de treinamento intensivo, a NVIDIA T4 costuma ser suficiente.
  2. Memória da GPU – Modelos grandes (ex.: GPT‑2 1.5B) podem precisar de > 12 GB VRAM; caso contrário, T4 ou K80 bastam.
  3. Custo‑benefício – Compare o preço‑hora com a necessidade de escala. Spot instances podem reduzir o custo em até 80 %, mas aceitam interrupções.
  4. Ecossistema – Se já usa serviços da AWS (S3, SageMaker) pode ser mais simples permanecer na mesma nuvem.

---

2. Preparando a VPS

2.1. Criação da Instância

| Provedora | Passos resumidos | |-----------|------------------| | AWS | 1. Acesse o console EC2 → Launch Instance.<br>2. Escolha Ubuntu 22.04 LTS.<br>3. Em Instance type, selecione g4dn.xlarge.<br>4. Defina Security Group permitindo SSH (22), HTTPS (443) e a porta da sua API (ex.: 8000). | | Azure | 1. Portal → Create a resourceVirtual machine.<br>2. Sistema: Ubuntu Server 22.04 LTS.<br>3. Tamanho: Standard_NC6.<br>4. Configurar Network security group (NSG) com portas 22, 443 e sua aplicação. | | Google Cloud | 1. Cloud Console → Compute EngineVM instancesCreate.<br>2. Escolha Ubuntu 22.04 LTS.<br>3. Em Machine type, clique em Customize → adicione GPU (NVIDIA T4).<br>4. Defina regras de firewall para as portas necessárias. | | DigitalOcean | 1. DropletsCreate Droplet.<br>2. Imagem: Ubuntu 22.04.<br>3. Selecione o plano GPU com RTX 6000.<br>4. Em Networking, adicione regras de firewall (Cloud Firewalls). | | Linode | 1. LinodesCreate Linode.<br>2. Imagem: Ubuntu 22.04 LTS.<br>3. Tipo: GPU Instance → RTX A6000.<br>4. Configure Firewall para portas 22, 443 e a da aplicação. |

Dica: Use chave SSH em vez de senha para autenticação.

2.2. Conectando à VPS

```bash

No seu terminal local (Linux/macOS) ou PowerShell (Windows)

ssh -i ~/.ssh/minha_chave.pem ubuntu@<IP_PUBLICO> ```

---

3. Instalando o Ambiente para IA

Requisito: A maioria dos frameworks (TensorFlow, PyTorch) necessita dos drivers NVIDIA, CUDA Toolkit e cuDNN compatíveis com a GPU selecionada.

3.1. Atualizando o Sistema

``bash sudo apt update && sudo apt upgrade -y sudo apt install -y build-essential dkms ``

3.2. Instalando Drivers NVIDIA

```bash

Detecta a GPU e instala o driver mais recente (recomendado para Ubuntu 22.04)

sudo apt install -y ubuntu-drivers-common sudo ubuntu-drivers autoinstall

Reinicie para aplicar

sudo reboot ```

Verificação: após o reboot, execute nvidia-smi – deve exibir o modelo da GPU e a versão do driver.

3.3. Instalando CUDA e cuDNN

Fonte: <https://developer.nvidia.com/cuda-downloads>

```bash

Exemplo: CUDA 12.2 (compatível com TensorFlow 2.16 e PyTorch 2.4)

wget https://developer.download.nvidia.com/compute/cuda/12.2.0/local_installers/cuda_12.2.0_535.86.10_linux.run sudo sh cuda_12.2.0_535.86.10_linux.run --silent --toolkit --samples

Adiciona ao PATH

echo 'export PATH=/usr/local/cuda-12.2/bin:$PATH' >> ~/.bashrc echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.2/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc source ~/.bashrc ```

```bash

Instala cuDNN (necessário criar conta NVIDIA)

Supondo que o arquivo .tgz já esteja no ~/downloads

tar -xzvf cudnn-linux-x86_64-8.*-cuda12.2.tgz -C /usr/local sudo chmod a+r /usr/local/cuda/include/cudnn.h sudo ldconfig ```

3.4. Configurando Python e Virtualenv

```bash

Instalação de Python 3.11 (versão padrão no Ubuntu 22.04)

sudo apt install -y python3-pip python3-venv

Cria ambiente isolado

python3 -m venv ~/venv_ia source ~/venv_ia/bin/activate

Atualiza pip e instala pacotes essenciais

pip install --upgrade pip setuptools wheel pip install numpy matplotlib pandas tqdm

Instala TensorFlow ou PyTorch (escolha conforme necessidade)

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu122

ou

pip install tensorflow==2.16.* ```

3.5. Opcional: Docker com GPU

Docker simplifica a implantação em produção.

```bash

Instala Docker Engine

sudo apt install -y ca-certificates curl gnupg sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \ https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io

Habilita suporte a GPU

distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \ sudo tee /etc/apt/sources.list.d/nvidia-docker.list sudo apt update sudo apt install -y nvidia-docker2 sudo systemctl restart docker

Teste rápido

docker run --gpus all nvidia/cuda:12.2.0-base-ubuntu22.04 nvidia-smi ```

---

4. Segurança Básica

| Item | Ação | Comando / Exemplo | |------|------|--------------------| | SSH | Desabilitar login por senha, usar chave pública | PasswordAuthentication no em /etc/ssh/sshd_config | | Firewall | Permit only required ports (22, 443, 8000) | sudo ufw allow 22 && sudo ufw allow 443 && sudo ufw allow 8000 && sudo ufw enable | | Atualizações automáticas | Instalar unattended-upgrades | sudo apt install -y unattended-upgrades && sudo dpkg-reconfigure --priority=low unattended-upgrades | | Limitar acesso root | Usar sudo e desativar login direto como root | sudo usermod -L root | | Proteção de GPU | Não montar dispositivos de GPU em containers não confiáveis | Sempre usar --gpus all somente em imagens confiáveis. | | Monitoramento de integridade | Instalar Fail2Ban para bloquear tentativas de brute‑force | sudo apt install -y fail2ban |

---

5. Monitoramento e Manutenção Contínua

5.1. Monitoramento de recursos (CPU, RAM, GPU)

```bash

Instala htop (visão interativa)

sudo apt install -y htop

Instala nvitop (monitoramento GPU)

pip install nvitop

Executar

htop # barra superior: %CPU, %MEM nvitop # mostra uso da GPU, memória VRAM, temperatura ```

5.2. Métricas avançadas com Prometheus + Grafana

```bash

Prometheus Node Exporter (CPU, disco, rede)

wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz tar xzf node_exporter-1.7.0.linux-amd64.tar.gz sudo cp node_exporter-1.7.0.linux-amd64/node_exporter /usr/local/bin/ sudo useradd --no-create-home --shell /bin/false node_exporter sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter

Serviço systemd

cat <<EOF | sudo tee /etc/systemd/system/node_exporter.service [Unit] Description=Prometheus Node Exporter After=network.target

[Service] User=node_exporter ExecStart=/usr/local/bin/node_exporter

[Install] WantedBy=default.target EOF sudo systemctl daemon-reload sudo systemctl enable --now node_exporter ```

Instale o NVIDIA Data Center GPU Manager (DCGM) Exporter para métricas da GPU:

``bash docker run -d --runtime=nvidia --gpus all \ -p 9400:9400 \ --name dcgm-exporter \ nvcr.io/nvidia/k8s/dcgm-exporter:3.3.1-2.13.0-ubuntu22.04 ``

Depois, conecte o Grafana (p. ex., via Docker) e adicione as fontes node_exporter e dcgm-exporter para dashboards de CPU, RAM e GPU.

5.3. Logs de aplicação

```bash sudo apt install -y logrotate

Exemplo de configuração em /etc/logrotate.d/ia_app

cat <<EOF | sudo tee /etc/logrotate.d/ia_app /var/log/ia_app/*.log { daily rotate 7 compress missingok notifempty create 0640 ubuntu ubuntu } EOF ```

5.4. Backup e snapshots

```bash

Exemplo rápido com AWS CLI

aws s3 cp models/ s3://meu-bucket-modelos/ --recursive ```

---

6. Otimizando Custos

| Estratégia | Como aplicar | |------------|--------------| | Instâncias Spot/Preemptivas | No console da nuvem, habilite a opção Spot (AWS) ou Preemptible (GCP). Ideal para treinamento que pode ser interrompido e retomado. | | Auto‑scaling | Defina regras de escala automática (ex.: CPU > 70 % → adiciona 1 vCPU; GPU < 20 % → mantém). | | Desligar quando inativo | Crie um cron que verifique uso e desligue a VM fora do horário de trabalho. Ex.: sudo shutdown -h now se nvidia-smi mostrar 0 % uso por 30 min. | | Compartilhar GPU | Use Docker Compose para rodar múltiplas containers leves na mesma GPU, alocando frações de memória com --gpus '"device=0,capabilities=compute,utilization=0.5"'. | | Reservas de 1‑3 anos | Se o projeto