Lewati ke isi

AI & Otomasi

Cara Pasang vLLM di Server GPU Ubuntu 24.04

Langkah memasang vLLM di server GPU NVIDIA Ubuntu 24.04, dari driver, uv, menjalankan API mirip OpenAI, systemd, sampai mengamankannya.

Terbit 6 menit baca

Jawaban singkat

Pasang driver NVIDIA dengan ubuntu-drivers, buat lingkungan Python dengan uv, lalu jalankan uv pip install vllm --torch-backend=auto. Setelah itu vllm serve membuka API yang kompatibel dengan OpenAI di port 8000. Ikat ke localhost, pasang API key, dan taruh di belakang reverse proxy sebelum dibuka.

Daftar isi
  1. Apa yang perlu disiapkan?
  2. Bagaimana langkah pemasangannya?
  3. Langkah 1: Pasang driver NVIDIA
  4. Langkah 2: Buat pengguna khusus dan pasang uv
  5. Langkah 3: Buat lingkungan Python dan pasang vLLM
  6. Langkah 4: Jalankan model pertama
  7. Langkah 5: Uji API-nya
  8. Langkah 6: Jadikan layanan systemd
  9. Langkah 7: Amankan sebelum dibuka ke jaringan
  10. Ringkasan opsi yang sering diatur
  11. Pertanyaan yang sering diajukan

Sudah punya server dengan GPU NVIDIA dan ingin melayani model AI sendiri untuk banyak pengguna sekaligus? vLLM adalah salah satu pilihan paling umum untuk itu. Ia dirancang untuk throughput tinggi: banyak permintaan diproses bersamaan secara efisien, dan hasilnya disajikan lewat API yang kompatibel dengan format OpenAI, sehingga aplikasi yang sudah memakai SDK OpenAI cukup diganti alamat servernya.

Panduan ini memakai Ubuntu Server 24.04 dan mengikuti langkah dari dokumentasi resmi vLLM per 7 November 2026. vLLM berkembang cepat, jadi cek ulang halaman instalasi resminya bila ada perintah yang berubah.

Apa yang perlu disiapkan?

Sebelum mulai, pastikan hal berikut:

  • GPU NVIDIA dengan compute capability 7.5 ke atas. Dokumentasi vLLM menyebut contoh seperti T4, seri RTX 20xx ke atas, A100, L4, dan H100.
  • VRAM cukup untuk modelnya. Model 7 sampai 8 miliar parameter dalam presisi 16 bit butuh sekitar 15 sampai 16 GB hanya untuk bobot, ditambah ruang untuk cache konteks. Hitungan lengkapnya ada di kebutuhan VRAM GPU untuk LLM.
  • Python 3.11 sampai 3.14 (uv bisa mengunduhkannya), akses root atau sudo, dan ruang disk cukup untuk menyimpan model, sering puluhan GB.

Kalau belum punya perangkatnya, pertimbangan sewa atau beli dibahas di sewa GPU cloud atau beli kartu grafis.

Bagaimana langkah pemasangannya?

Langkah 1: Pasang driver NVIDIA

Ubuntu menyediakan alat ubuntu-drivers untuk memilih driver yang cocok. Untuk server komputasi (bukan desktop), pakai opsi --gpgpu:

sudo apt update
sudo ubuntu-drivers list --gpgpu
sudo ubuntu-drivers install --gpgpu
sudo reboot

Dokumentasi Ubuntu juga menyarankan memasang paket utilitas yang sesuai cabang driver server, misalnya nvidia-utils-<versi>-server (ganti <versi> dengan nomor cabang yang muncul di ubuntu-drivers list --gpgpu), agar perintah nvidia-smi tersedia. Setelah reboot, cek dengan:

nvidia-smi

Perintah ini harus menampilkan nama GPU, versi driver, dan versi CUDA maksimum yang didukung driver. Kamu tidak perlu memasang CUDA Toolkit terpisah untuk vLLM versi wheel, karena pustaka CUDA yang dibutuhkan ikut terpasang lewat paket Python. Yang wajib adalah driver yang cukup baru.

Langkah 2: Buat pengguna khusus dan pasang uv

Jalankan layanan AI dengan pengguna terpisah, bukan root:

sudo useradd -r -m -d /opt/vllm -s /bin/bash vllm
sudo -iu vllm
curl -LsSf https://astral.sh/uv/install.sh | sh
source ~/.local/bin/env

uv adalah pengelola paket Python yang direkomendasikan dokumentasi vLLM karena cepat dan bisa memilih versi PyTorch yang sesuai driver secara otomatis.

Langkah 3: Buat lingkungan Python dan pasang vLLM

Masih sebagai pengguna vllm, di folder /opt/vllm:

uv venv --python 3.12 --seed --managed-python
source .venv/bin/activate
uv pip install vllm --torch-backend=auto
vllm download-kernels

Opsi --torch-backend=auto membuat uv memilih build PyTorch yang cocok dengan driver CUDA yang terpasang. Perintah vllm download-kernels mengunduh kernel yang sudah dikompilasi. Menurut dokumentasi, perintah ini perlu dijalankan ulang setiap kali memasang atau memperbarui vLLM. Tanpanya, kernel dikompilasi saat startup dan bisa memakan beberapa menit.

Langkah 4: Jalankan model pertama

Coba dengan model open-weight yang tidak butuh persetujuan khusus, misalnya Qwen2.5 7B Instruct:

vllm serve Qwen/Qwen2.5-7B-Instruct \
  --host 127.0.0.1 --port 8000 \
  --max-model-len 8192 \
  --gpu-memory-utilization 0.90 \
  --api-key GANTI_DENGAN_KUNCI_ACAK

Pada jalan pertama, model diunduh dari Hugging Face. Untuk model yang butuh persetujuan lisensi (gated), setujui dulu di halaman modelnya lalu set variabel HF_TOKEN berisi token akunmu.

--max-model-len membatasi panjang konteks. Nilai kecil menghemat VRAM, nilai besar butuh lebih banyak memori cache. --gpu-memory-utilization menentukan porsi VRAM yang boleh dipakai vLLM.

Langkah 5: Uji API-nya

Dari terminal lain di server yang sama:

curl http://127.0.0.1:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer GANTI_DENGAN_KUNCI_ACAK" \
  -d '{"model":"Qwen/Qwen2.5-7B-Instruct","messages":[{"role":"user","content":"Halo, jelaskan dirimu dalam satu kalimat."}]}'

Kalau keluar JSON berisi jawaban, server sudah bekerja. Aplikasi yang memakai SDK OpenAI cukup diarahkan ke base_url http://alamat-server:8000/v1 dengan API key tadi.

Langkah 6: Jadikan layanan systemd

Agar vLLM otomatis jalan setelah reboot, keluar dulu dari sesi pengguna vllm (ketik exit), lalu simpan kunci di file terpisah /etc/vllm.env:

VLLM_API_KEY=GANTI_DENGAN_KUNCI_ACAK

Batasi izinnya dengan sudo chmod 600 /etc/vllm.env. Lalu buat /etc/systemd/system/vllm.service:

[Unit]
Description=vLLM OpenAI-compatible server
After=network-online.target

[Service]
User=vllm
WorkingDirectory=/opt/vllm
EnvironmentFile=/etc/vllm.env
ExecStart=/opt/vllm/.venv/bin/vllm serve Qwen/Qwen2.5-7B-Instruct --host 127.0.0.1 --port 8000 --max-model-len 8192
Restart=on-failure

[Install]
WantedBy=multi-user.target

vLLM membaca VLLM_API_KEY dari lingkungan, jadi kunci tidak perlu ditulis di baris perintah. Aktifkan:

sudo systemctl daemon-reload
sudo systemctl enable --now vllm
journalctl -u vllm -f

Langkah 7: Amankan sebelum dibuka ke jaringan

Ini langkah yang paling sering dilewati. Dokumentasi keamanan vLLM menegaskan bahwa --api-key hanya melindungi endpoint di bawah awalan seperti /v1. Endpoint lain, termasuk /metrics, /tokenize, dan beberapa endpoint operasional, tidak ikut terlindungi. Karena itu:

  1. Biarkan vLLM terikat ke 127.0.0.1.
  2. Taruh reverse proxy (Nginx atau Caddy) di depannya yang hanya meneruskan path yang memang dipakai, misalnya /v1/chat/completions dan /v1/models, dengan HTTPS.
  3. Tutup semua port lain dengan firewall.
  4. Tambahkan rate limiting dan log di lapisan proxy.

Pola pengamanan yang sama untuk Ollama dibahas di mengamankan API Ollama. Kalau aplikasimu memakai beberapa model sekaligus, router seperti LiteLLM bisa ditaruh di depan vLLM untuk mengatur kunci per tim dan fallback.

Ringkasan opsi yang sering diatur

OpsiFungsiSaran awal
--hostAlamat yang didengarkan127.0.0.1, buka lewat proxy
--portPort API8000
--api-key atau VLLM_API_KEYKunci Bearer untuk endpoint /v1Wajib, simpan di file env
--max-model-lenPanjang konteks maksimumSesuaikan kebutuhan, mulai 8192
--gpu-memory-utilizationPorsi VRAM yang dipakaiBiarkan default dulu, turunkan bila GPU dipakai proses lain
--tensor-parallel-sizeMembagi model ke beberapa GPUJumlah GPU di satu server

Pertanyaan yang sering diajukan

Kenapa vLLM gagal start dengan pesan kehabisan memori?

Biasanya model terlalu besar untuk VRAM, atau konteks maksimum terlalu panjang. Turunkan --max-model-len, pakai model lebih kecil, atau pakai versi terkuantisasi yang didukung vLLM.

Apakah vLLM bisa dipakai tanpa GPU?

Ada dukungan untuk CPU dan perangkat lain, tetapi keunggulan utama vLLM ada di GPU. Untuk server tanpa GPU, llama.cpp atau Ollama biasanya lebih praktis.

Bagaimana memperbarui vLLM?

Aktifkan lingkungan Python, jalankan uv pip install -U vllm --torch-backend=auto, lalu vllm download-kernels, kemudian restart layanan. Uji di server staging dulu bila memungkinkan.

Apakah vLLM atau Ollama yang lebih cocok?

vLLM unggul untuk melayani banyak pengguna bersamaan di GPU. Ollama lebih mudah untuk satu pengguna, uji coba, atau server kecil.

Checklist sebelum dipakai tim:

  • nvidia-smi menampilkan GPU dan driver.
  • vLLM berjalan sebagai pengguna vllm, bukan root, lewat systemd.
  • Terikat ke 127.0.0.1 dengan API key dari file env.
  • Reverse proxy HTTPS hanya meneruskan endpoint yang dipakai.
  • Firewall menutup port lain, log dan rate limiting aktif.

Sumber & referensi

Baca juga