Apakah Anda sedang membangun aplikasi Large Language Model (LLM) dan menghadapi masalah kecepatan inferensi yang lambat atau keterbatasan memori? vLLM adalah solusi yang diadopsi oleh insinyur API dan backend terkemuka untuk mempercepat penyajian LLM, menangani konkurensi tinggi, dan mengurangi biaya infrastruktur. Panduan praktis ini menjelaskan apa itu vLLM, bagaimana cara kerjanya, cara menginstalnya, dan cara menggunakannya untuk inferensi API batch maupun real-time, sehingga tim Anda dapat menghadirkan fitur AI yang cepat dan andal dalam skala besar.
Apa itu vLLM? Mengapa Ini Penting untuk API LLM?
vLLM adalah mesin inferensi sumber terbuka (open-source) dengan throughput tinggi dan efisien memori yang dirancang untuk menyajikan model bahasa besar. Dikembangkan oleh peneliti dan insinyur terkemuka, ini mengatasi dua tantangan terbesar yang dihadapi dalam penerapan LLM:
- Kecepatan inferensi yang lambat: Terutama dengan banyak pengguna bersamaan atau pekerjaan batch besar.
- Penggunaan memori yang tinggi: Mekanisme perhatian tradisional menyia-nyiakan memori GPU, membatasi ukuran dan jumlah model yang dapat Anda sajikan.
Inovasi inti vLLM:
- PagedAttention: Mengoptimalkan cache key-value (KV), secara drastis mengurangi pemborosan memori dengan menggunakan sistem paging seperti memori virtual.
- Continuous batching: Mengelompokkan permintaan secara dinamis saat tiba, memaksimalkan pemanfaatan GPU dan meminimalkan waktu tunggu pengguna.
Anggap vLLM sebagai mesin backend turbocharger untuk API LLM, terutama bagi pengembang yang membutuhkan inferensi yang skalabel dan siap produksi.
Mengapa Pengembang API dan Insinyur Backend Memilih vLLM
vLLM dengan cepat menjadi mesin inferensi LLM pilihan bagi tim teknis karena menghadirkan:
- Throughput mutakhir: Menyajikan lebih banyak permintaan pengguna per detik, memproses kumpulan data yang lebih besar dengan lebih cepat.
- Penggunaan GPU yang efisien: Muat model yang lebih besar di GPU Anda, atau kurangi biaya perangkat keras untuk beban kerja yang ada.
- Batching dinamis: Tidak ada lagi waktu tunggu statis; vLLM beradaptasi dengan lalu lintas nyata, menjaga GPU Anda tetap sibuk.
- API yang kompatibel dengan OpenAI: Ganti atau lengkapi titik akhir OpenAI dengan model self-hosted Anda sendiri secara mulus.
- API yang sederhana dan fleksibel: Baik untuk pekerjaan batch offline maupun penyajian langsung.
- Dukungan model yang luas: Llama, Mistral, Qwen, OPT, Falcon, dan banyak lagi dari Hugging Face dan ModelScope.
- Pengembangan sumber terbuka yang aktif: Pembaruan yang sering, komunitas yang berkembang, dan fitur-fitur mutakhir.
Lihat daftar lengkap model yang didukung dalam dokumentasi vLLM.
Tips: Jika Anda sedang membangun atau menguji API berbasis LLM, pertimbangkan untuk berintegrasi dengan Apidog. Apidog memudahkan perancangan, pengujian, dan pendokumentasian titik akhir LLM Anda—baik Anda menggunakan vLLM, OpenAI, atau backend kustom—membantu tim menyederhanakan kolaborasi API dan QA.
LLM yang Didukung: Model Apa Saja yang Berfungsi dengan vLLM?
vLLM secara native mendukung berbagai model berbasis transformer, termasuk:
- Seri Llama: Llama, Llama 2, Llama 3
- Mistral dan Mixtral
- Qwen dan Qwen2
- GPT-2, GPT-J, GPT-NeoX
- OPT
- Bloom
- Falcon
- MPT
- Dan lainnya, termasuk model multi-modal
Daftarnya terus bertambah. Untuk kompatibilitas terkini, periksa Daftar Model yang Didukung vLLM resmi.
Catatan: Jika model Anda tidak terdaftar tetapi berbagi arsitektur dengan yang didukung, mungkin masih berfungsi—uji dengan hati-hati. Arsitektur kustom mungkin memerlukan kontribusi kode upstream.
Konsep Utama: PagedAttention dan Continuous Batching
Memahami kedua konsep ini akan membantu Anda mengoptimalkan penerapan LLM Anda:
PagedAttention
- Masalah: Perhatian tradisional menggunakan memori yang berdekatan untuk cache KV, menyebabkan fragmentasi dan pemborosan VRAM GPU.
- Solusi: PagedAttention memecah cache KV menjadi "halaman" yang fleksibel, seperti memori virtual dalam sistem operasi. Ini dapat mengurangi overhead memori hingga 90% dan memungkinkan berbagi memori untuk prefiks urutan umum.
Continuous Batching
- Masalah: Batching statis (menunggu batch penuh sebelum memulai) menyebabkan waktu GPU menganggur dan latensi tinggi.
- Solusi: Continuous batching segera memproses permintaan baru begitu sumber daya GPU kosong, memaksimalkan throughput dan meminimalkan waktu tunggu pengguna.
Optimasi inilah mengapa vLLM mengungguli banyak kerangka kerja penyajian LLM lainnya.
Prasyarat: Apa yang Anda Butuhkan Sebelum Menginstal vLLM
Sebelum Anda memulai, pastikan lingkungan Anda memenuhi persyaratan berikut:
- Sistem Operasi: Linux direkomendasikan (WSL2 dan macOS dimungkinkan, tetapi Linux paling didukung).
- Python: 3.9, 3.10, 3.11, atau 3.12. Gunakan lingkungan virtual.
- GPU NVIDIA dengan CUDA: Untuk kinerja terbaik. (vLLM bergantung pada CUDA; dukungan CPU-only dan akselerator lain terbatas atau bersifat eksperimental.)
- PyTorch: vLLM menginstal versi yang kompatibel secara otomatis, tetapi Anda dapat menginstalnya terlebih dahulu untuk versi CUDA kustom.
Cara Menginstal vLLM: Langkah demi Langkah
1. Menggunakan pip (Direkomendasikan)
python -m venv vllm-env
source vllm-env/bin/activate
# Di Windows: vllm-env\\Scripts\\activate
pip install vllm
Ini menginstal vLLM dan dependensinya (termasuk PyTorch).
2. Menggunakan Conda
conda create -n vllm-env python=3.11 -y
conda activate vllm-env
pip install vllm
Tips: Untuk versi CUDA kustom, instal PyTorch dengan conda terlebih dahulu, lalu vLLM.
3. Menggunakan uv (untuk instalasi super cepat)
uv venv vllm-env --python 3.12 --seed
source vllm-env/bin/activate
uv pip install vllm
4. Verifikasi Instalasi
python -c "import vllm; print(vllm.__version__)"
vllm --help
Anda akan melihat versi yang terinstal dan bantuan baris perintah.
Inferensi Batch Offline dengan vLLM
Inferensi batch sangat ideal untuk menjalankan prediksi pada daftar prompt—bagus untuk evaluasi, pembuatan kumpulan data, atau pemrosesan massal.
Contoh: Skrip Inferensi Batch
from vllm import LLM, SamplingParams
# 1. Tentukan prompt
prompts = [
"Ibu kota Perancis adalah",
"Jelaskan teori relativitas secara sederhana:",
"Tulis puisi pendek tentang hari hujan:",
"Terjemahkan 'Hello, world!' ke Bahasa Jerman:",
]
# 2. Atur parameter sampling
sampling_params = SamplingParams(
temperature=0.7,
top_p=0.95,
max_tokens=150,
stop=["\n", " Human:", " Assistant:"]
)
# 3. Inisialisasi mesin vLLM (pilih model yang dapat ditangani GPU Anda)
llm = LLM(model="mistralai/Mistral-7B-Instruct-v0.1")
# 4. Hasilkan output
outputs = llm.generate(prompts, sampling_params)
# 5. Tampilkan hasil
for output in outputs:
print("-" * 20)
print(f"Prompt: {output.prompt!r}")
print(f"Teks yang Dihasilkan: {output.outputs[0].text!r}")
print("-" * 20)
Tips:
- vLLM secara default menggunakan model Hugging Face Hub. Untuk ModelScope, atur
VLLM_USE_MODELSCOPE=1. - Untuk menimpa konfigurasi generasi model, gunakan
generation_config="vllm"dalam konstruktorLLM. - Untuk model terkuantisasi (AWQ, GPTQ, dll.), periksa dokumentasi vLLM dan kartu model Hugging Face.
Menjalankan vLLM sebagai Server API yang Kompatibel dengan OpenAI
Ingin menyajikan LLM melalui API yang mirip OpenAI? vLLM memudahkan untuk menukar titik akhir, menguji model baru, dan berintegrasi dengan alat API seperti Apidog untuk alur kerja desain, mock, dan QA yang mulus.
Mulai Server vLLM
source vllm-env/bin/activate
vllm serve mistralai/Mistral-7B-Instruct-v0.1
# Atau, untuk model lain:
# vllm serve Qwen/Qwen2-1.5B-Instruct
Opsi utama:
-model <model_name_or_path>: Model yang akan disajikan (wajib)-host 0.0.0.0: Mengikat ke semua antarmuka (untuk akses jarak jauh)-port 8000: Tentukan port-tensor-parallel-size <N>: Mendistribusikan model di N GPU-api-key <key>: Membutuhkan kunci API untuk permintaan (berguna untuk produksi)-generation-config vllm: Menggunakan parameter generasi default vLLM-chat-template <path>: Templat obrolan kustom (untuk penggunaan tingkat lanjut)
Server berjalan di http://localhost:8000 secara default.
Menggunakan Titik Akhir API Completions
Contoh cURL:
curl http://localhost:8000/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "mistralai/Mistral-7B-Instruct-v0.1",
"prompt": "San Francisco adalah kota di",
"max_tokens": 50,
"temperature": 0.7
}'
Contoh Python (Klien OpenAI):
from openai import OpenAI
client = OpenAI(
api_key="EMPTY", # Atau kunci API Anda jika diatur
base_url="http://localhost:8000/v1"
)
completion = client.completions.create(
model="mistralai/Mistral-7B-Instruct-v0.1",
prompt="Jelaskan manfaat menggunakan vLLM:",
max_tokens=150,
temperature=0.5
)
print(completion.choices[0].text)
Menggunakan Titik Akhir API Chat Completions
Contoh cURL:
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "mistralai/Mistral-7B-Instruct-v0.1",
"messages": [
{"role": "system", "content": "Anda adalah asisten yang membantu."},
{"role": "user", "content": "Apa keuntungan utama PagedAttention di vLLM?"}
],
"max_tokens": 100,
"temperature": 0.7
}'
Contoh Python:
chat_response = client.chat.completions.create(
model="mistralai/Mistral-7B-Instruct-v0.1",
messages=[
{"role": "system", "content": "Anda adalah asisten pemrograman yang membantu."},
{"role": "user", "content": "Tulis fungsi Python sederhana untuk menghitung faktorial."}
],
max_tokens=200,
temperature=0.5
)
print(chat_response.choices[0].message.content)
Dengan Apidog, Anda dapat dengan cepat merancang, mem-mock, dan menguji titik akhir API ini, memastikan integrasi yang mulus dan QA otomatis untuk produk bertenaga LLM Anda.
Backend Perhatian vLLM: FlashAttention, xFormers, dan FlashInfer
vLLM mendukung beberapa backend komputasi perhatian untuk kecepatan optimal dan efisiensi memori:
- FlashAttention (1 & 2): Tercepat untuk sebagian besar GPU NVIDIA modern, meminimalkan penggunaan memori.
- xFormers: Kompatibilitas luas; cadangan yang baik untuk perangkat keras yang lebih lama atau kurang umum.
- FlashInfer: Tingkat lanjut, baru ditambahkan; memerlukan instalasi manual.
Pemilihan otomatis: vLLM memilih backend terbaik untuk perangkat keras dan model Anda secara default.
Penimpaan manual: Atur variabel lingkungan VLLM_ATTENTION_BACKEND ke FLASH_ATTN, XFORMERS, atau FLASHINFER sebelum menjalankan vLLM jika Anda ingin memaksakan penggunaan backend tertentu.
Penyelesaian Masalah Umum vLLM
1. Error CUDA Kehabisan Memori
- Coba model yang lebih kecil (misalnya, OPT-1.3B)
- Kurangi permintaan bersamaan atau ukuran batch
- Gunakan model terkuantisasi (AWQ, GPTQ, dll.)
- Distribusikan ke beberapa GPU (
-tensor-parallel-size) - Periksa proses GPU lainnya dengan
nvidia-smi
2. Masalah Instalasi & Kompatibilitas
- Pastikan driver CUDA, PyTorch, dan NVIDIA kompatibel (lihat matriks kompatibilitas PyTorch)
- Pra-instal PyTorch jika diperlukan
- Gunakan citra Docker vLLM resmi untuk pengaturan yang mudah
3. Kegagalan Memuat Model
- Periksa kembali nama model (misalnya,
mistralai/Mistral-7B-Instruct-v0.1) - Gunakan
trust_remote_code=Truejika model memerlukannya - Gunakan jalur lokal untuk model yang sudah diunduh
- Periksa ruang disk dan konektivitas internet
4. Inferensi Lambat
- Pantau pemanfaatan GPU (
nvidia-smi) - Perbarui vLLM, dependensi, dan driver
- Eksperimen dengan backend perhatian yang berbeda
- Sesuaikan parameter sampling (
max_tokens, dll.)
5. Output Tak Terduga atau Tidak Masuk Akal
- Pastikan format prompt yang benar (lihat kartu model)
- Sesuaikan parameter sampling (
temperature,top_p) - Coba model yang berbeda untuk mengisolasi masalah
- Periksa penggunaan templat obrolan di server
Langkah Selanjutnya: Tingkatkan Alur Kerja API LLM Anda
Dengan vLLM, Anda dapat menerapkan dan menskalakan API bertenaga LLM lebih cepat—dan dengan Apidog, Anda mendapatkan toolkit lengkap untuk desain, pengujian, dan dokumentasi API. Kombinasi ini memberdayakan tim untuk:
- Mengembangkan, mem-mock, dan menguji titik akhir LLM dengan pola lalu lintas dunia nyata
- Mengotomatiskan QA untuk API yang kompatibel dengan vLLM dan OpenAI
- Berkolaborasi antar tim dengan dokumen API yang jelas dan terkini
Jelajahi fitur-fitur canggih vLLM (kuantisasi, multi-LoRA, penyajian terdistribusi, speculative decoding) dalam dokumentasi resmi, dan tingkatkan siklus hidup pengembangan LLM Anda dengan Apidog untuk manajemen API yang mulus.
