Server rack dengan GPU untuk self-hosting AI coding assistant

Jawaban Singkat / Key Takeaways

Self-hosting Hugging Face coding assistant dengan Docker dan GPU passthrough butuh minimal 16GB RAM, GPU NVIDIA 8GB VRAM, dan nvidia-container-toolkit. Setup ini memastikan kode tetap on-premises, latency tetap rendah (sub-200ms), dan compliance officer tidur nyenyak. Artikel ini kasih kamu docker-compose.yml lengkap, konfigurasi CUDA, dan alokasi resource yang presisi.

Momen Ketika “Autocomplete” Jadi Malapetaka

Kamu lagi ngerjain kode proprietary buat klien perbankan. Deadline besok pagi. Jari udah ngetik, lalu kamu pencet Tab buat nerima autocomplete di VS Code. Dua detik kemudian kamu baru sadar: snippets kode rahasia perusahaan barusan terbang ke server Hugging Face di AWS us-east-1. Compliance officer kamu udah nunggu di Slack.

Masalahnya klasik. Coding assistant AI kayak GitHub Copilot, Codeium, atau Hugging Face model emang bikin produktivitas ngebut 2x. Tapi buat tim DevOps dan security enterprise, mengirim source code ke cloud pihak ketiga itu pelanggaran compliance yang bisa bikin ISO 27001 dicabut. Solusinya? Self-hosting. Jalanin Hugging Face coding assistant di server kamu sendiri, pakai Docker, GPU passthrough, dan koneksi yang nggak pernah ninggalin network internal.

Kenapa Self-Hosting Itu Bukan Cuma Soal Compliance

Biasanya orang mikir self-hosting cuma buat compliance. Padahal ada tiga alasan lain yang lebih tajem dan jarang dibahas:

  • Latency deterministik. Inference di cloud publik punya cold start dan network jitter yang susah diprediksi. Server lokal kamu bisa deliver inference dalam 80-200ms konsisten. Developer nggak bakal nunggu loading spinner pas lagi flow.
  • Biaya inference jangka panjang. Hitung kasar: kalau tim 50 engineer ngoding 8 jam sehari, inference cloud bisa habis Rp 40-60 juta per bulan. GPU RTX 4090 cuma butuh 2 bulan buat balik modal. Sisanya profit.
  • Model kustomisasi. Model Hugging Face bisa kamu fine-tune pakai codebase internal sendiri. Hasilnya autocomplete yang ngerti pola kode spesifik perusahaan kamu. Ini impossible di SaaS.

Nggak cuma compliance. Ini soal kontrol penuh atas pipeline development kamu. Setup ini jadi benteng terakhir antara kode rahasia perusahaan dan server orang lain.

Spesifikasi Minimum yang Beneran Works (Jangan Percaya “Jalan Kok di 8GB”)

Docker container dan GPU cluster untuk inference model AI lokal

Banyak tutorial self-hosting AI cuma bilang “jalan kok di 8GB RAM.” Faktanya? Inference model LLM buat coding assistant itu monster resource. Ini spesifikasi yang beneran works berdasarkan deployment riil:

Buat tim kecil (1-5 developer):

  • CPU: 8 core (Intel Xeon E-2288G atau AMD Ryzen 7 5800X)
  • RAM: 32GB DDR4
  • GPU: NVIDIA RTX 3070 (8GB VRAM) atau A2000 (12GB VRAM)
  • Storage: 256GB NVMe
  • OS: Ubuntu 22.04 LTS

Buat tim menengah (10-30 developer):

  • CPU: 16-32 core (dual Xeon atau Threadripper)
  • RAM: 64-128GB DDR4
  • GPU: RTX 4090 (24GB VRAM) atau A6000 (48GB VRAM), 1-2 unit
  • Storage: 1TB NVMe
  • OS: Ubuntu 22.04 LTS

RAM itu kritis. Model coding assistant semacam StarCoder, CodeLlama, atau DeepSeek-Coder biasanya butuh 16-32GB VRAM buat inference optimal. Kalau VRAM nggak cukup, model bakal offload ke RAM biasa dan latency melonjak 10x. Developer bakal komplain.

Docker-Compose.yml Lengkap, Siap Deploy

Diagram arsitektur self-hosting AI dengan Docker Compose

Ini bagian yang kamu tunggu. Setup Docker dengan GPU passthrough yang beneran works:

version: "3.9"

services:
  hf-text-generation-inference:
    image: ghcr.io/huggingface/text-generation-inference:latest
    container_name: hf-tgi-coding
    runtime: nvidia
    environment:
      - NVIDIA_VISIBLE_DEVICES=all
      - MODEL_ID=bigcode/starcoder2-15b
      - PORT=8080
      - HOSTNAME=0.0.0.0
      - MAX_INPUT_LENGTH=2048
      - MAX_TOTAL_TOKENS=4096
      - CUDA_VISIBLE_DEVICES=0
      - DTYPE=bfloat16
    ports:
      - "8080:80"
    volumes:
      - /mnt/models/hf-cache:/data
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]
    shm_size: "8gb"
    mem_limit: "32g"
    cpus: "8"
    restart: unless-stopped
    logging:
      driver: json-file
      options:
        max-size: "50m"
        max-file: "3"

Yang perlu kamu sesuaikan:

  • MODEL_ID: bisa diganti ke codellama/CodeLlama-13b-Instruct-hf atau deepseek-ai/deepseek-coder-6.7b-instruct
  • MAX_INPUT_LENGTH dan MAX_TOTAL_TOKENS: naikin kalau kamu butuh context window lebih besar
  • volumes: arahkan ke persistent storage buat cache model, jangan pakai tmpfs
  • shm_size: "8gb": penting banget buat shared memory PyTorch, jangan diskip

Tiga Kesalahan Fatal Saat Setup GPU Passthrough

Tim DevOps sering bikin tiga kesalahan ini. Saya udah lihat semuanya di production:

Kesalahan 1: Masih Pakai nvidia-docker2 yang Udah Deprecated

Banyak tutorial lama nyuruh install nvidia-docker2. Tools ini udah nggak di-maintain sejak 2020. Pakai nvidia-container-toolkit:

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt update && sudo apt install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

Kesalahan 2: CUDA Versi Mismatch

Host kamu mungkin punya CUDA 12.5, tapi container image yang dipakai cuma support CUDA 12.1. Akibatnya error cryptic CUDA error: no kernel image available for execution. Cek dulu CUDA version di host:

nvidia-smi | head -3

Kalau mismatch, cari tag image yang match atau downgrade driver host. Jangan asal pull latest.

Kesalahan 3: Konflik cgroup v2

Ubuntu 22.04 ke atas pakai cgroup v2. NVIDIA Container Toolkit kadang fail di sini dan ngasih error yang misleading. Solusinya tambahkan --cgroupns=host di Docker run atau pastikan kernel host minimal 5.10.

Pilih Model yang Tepat, Akurasi Maksimal

AI coding assistant berjalan di server lokal on-premises

Nggak semua model Hugging Face cocok buat coding assistant. Rekomendasi berdasarkan benchmark dan pengalaman deployment langsung:

ModelVRAMAkurasiFitur
deepseek-coder-6.7b-instruct8-12GB⭐⭐⭐⭐Paling hemat, akurasi bagus buat Python/JS
CodeLlama-13b-Instruct16-20GB⭐⭐⭐⭐Paling seimbang, support 20+ bahasa
starcoder2-15b20-24GB⭐⭐⭐⭐⭐Akurasi tertinggi, context 16K tokens
CodeQwen1.5-7B8-12GB⭐⭐⭐⭐Paling ringan, bagus buat debugging

Tips: Jangan langsung deploy model paling besar. Mulai dari deepseek-coder-6.7b dulu. Ukur throughput dan feedback developer selama seminggu. Baru upgrade kalau perlu. Banyak tim puas dengan model mid-size.

Untuk detail lebih lanjut soal arsitektur microservice vs monolit yang sering jadi perdebatan di deployment AI, cek artikel arsitektur monolit vs microservice.

Integrasi ke VS Code dan IDE Lain

Self-hosted model tetap perlu diintegrasi ke IDE developer. Ada dua jalur yang paling reliable:

Jalur Continue.dev (direkomendasikan):

{
  "models": [{
    "title": "Local HuggingFace",
    "provider": "openai",
    "apiBase": "http://10.0.1.100:8080/v1",
    "apiKey": "local",
    "model": "starcoder2-15b"
  }]
}

Continue.dev support HuggingFace TGI API format native. Pasang config.json ini di extension, arahkan ke IP Docker host, dan developer tinggal pake autocomplete tanpa mikir infrastruktur. Simpel tapi powerful.

Jalur llama.cpp server alternatif: Buat tim yang nggak punya GPU, bisa pakai llama.cpp dengan GGUF quantized model. CPU inference tetap bisa, cuma latency 2-4x lebih tinggi. Worth it kalau kamu prioritasin compliance tapi budget GPU belum disetujui CFO.

Kalau kamu nanti deploy ini di Kubernetes, hati-hati dengan OOM kill yang suka muncul tiba-tiba. Saya udah bahas detailnya di artikel OOM Kill Python di Kubernetes.

FAQ: Self-Hosting Hugging Face Coding Assistant

Bisa jalan tanpa GPU?

Bisa, pakai model GGUF ter-quantized 4-bit di llama.cpp server. Tapi ekspektasi latency realistis: 800ms-2 detik per suggestion. GPU sangat direkomendasikan buat akselerasi inference. Developer nggak suka nunggu.

Berapa biaya listrik tambahan buat server GPU 24/7?

RTX 4090 idle sekitar 15W, peak 450W. Kalau 80% waktu di idle, per bulan kurang lebih Rp 450-650 ribu (asumsi listrik Rp 1.500/kWh). Jauh lebih murah dibanding cloud GPU sewaan yang bisa tembus Rp 15-25 juta per bulan.

Harus setup VPN buat developer remote?

Iya. Pakai WireGuard atau Tailscale biar developer yang WFH bisa akses server inference tanpa ekspos port ke internet publik. Jangan pernah expose TGI port langsung ke internet tanpa auth layer.

Model apa yang paling hemat buat GPU 8GB?

Deepseek-coder-6.7b-instruct atau CodeQwen1.5-7B. Keduanya muat di 8GB VRAM dengan bfloat16, latency di bawah 200ms per request. Cocok buat RTX 3070 atau A2000.

Kesimpulan

Self-hosting Hugging Face coding assistant dengan Docker GPU itu investasi yang balik modalnya cepet. Tim DevOps kamu pegang kendali penuh atas kode, latency, dan compliance. Mulai dari docker-compose di atas, pilih model yang sesuai resource, integrasi ke VS Code, dan jangan lupa VPN buat developer remote.

Udah siap bikin pipeline AI yang aman tanpa kirim sebaris kode pun ke cloud orang lain? Cek dokumentasi resmi HuggingFace TGI buat referensi tambahan, atau baca NVIDIA Tesla driver docs kalau kamu deploy di data center bare-metal. Buat kamu yang tertarik ngejar performa maksimal, baca juga perbandingan tools akselerasi Python buat inference.

About the Author

Dzul Qurnain

Suka nonton Anime, ngoding dan bagi-bagi tips kalau tahu.. Oh iya, suka baca ( tapi yang menarik menurutku aja)... Praktisi WordPress, web development, SEO, dan server administration yang membagikan tutorial teknis dan catatan implementasi nyata.

View All Articles