Connect with us

Kecerdasan buatan

Optimasi Penerapan LLM: vLLM PagedAttention dan Masa Depan Penggunaan AI yang Efisien

mm
Deploy the vLLM Inference Engine to Run Large Language Models

Model Bahasa Besar (LLM) menerapkan aplikasi dunia nyata menimbulkan tantangan unik, terutama dalam hal sumber daya komputasi, latensi, dan efisiensi biaya. Dalam panduan komprehensif ini, kita akan menjelajahi lanskap penerapan LLM, dengan fokus khusus pada vLLM (model bahasa vektor), solusi yang mengubah cara kita menerapkan dan berinteraksi dengan model kuat ini.

Tantangan Menerapkan Model Bahasa Besar

Sebelum membahas solusi spesifik, mari kita lihat tantangan kunci yang membuat penerapan LLM menjadi tugas yang kompleks:

Sumber Daya Komputasi

LLM terkenal dengan jumlah parameter yang sangat besar, mulai dari miliaran hingga ratusan miliar. Misalnya, GPT-3 memiliki 175 miliar parameter, sedangkan model lebih baru seperti GPT-4 diperkirakan memiliki lebih banyak lagi. Ukuran yang sangat besar ini berarti persyaratan komputasi yang signifikan untuk inferensi.
Pertimbangkan LLM yang relatif modest dengan 13 miliar parameter, seperti LLaMA-13B. Bahkan model ini memerlukan:

– Sekitar 26 GB memori hanya untuk menyimpan parameter model (dengan asumsi presisi 16-bit)
– Memori tambahan untuk aktivasi, mekanisme perhatian, dan perhitungan antara
– Daya komputasi GPU yang substansial untuk inferensi waktu nyata

Latensi

Dalam banyak aplikasi, seperti chatbot atau generasi konten waktu nyata, latensi rendah sangat penting untuk pengalaman pengguna yang baik. Namun, kompleksitas LLM dapat menyebabkan waktu pemrosesan yang signifikan, terutama untuk urutan yang lebih panjang.
Bayangkan chatbot layanan pelanggan yang ditenagai oleh LLM. Jika setiap respons membutuhkan beberapa detik untuk dibuat, percakapan akan terasa tidak alami dan frustrasi bagi pengguna.

Biaya

Perangkat keras yang diperlukan untuk menjalankan LLM skala besar dapat sangat mahal. GPU atau TPU kelas atas sering diperlukan, dan konsumsi energi sistem ini sangat besar.
Menjalankan klaster NVIDIA A100 GPU (sering digunakan untuk inferensi LLM) dapat menghabiskan biaya ribuan dolar per hari dalam biaya komputasi awan.

Pendekatan Tradisional untuk Menerapkan LLM

Sebelum menjelajahi solusi lebih maju, mari kita tinjau beberapa pendekatan tradisional untuk menerapkan LLM:

Penerapan Sederhana dengan Hugging Face Transformers

Perpustakaan Hugging Face Transformers menyediakan cara sederhana untuk menerapkan LLM, tetapi tidak dioptimalkan untuk penerapan dengan throughput tinggi.

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

model_name = "meta-llama/Llama-2-13b-hf"
model = AutoModelForCausalLM.from_pretrained(model_name, device_map="auto")
tokenizer = AutoTokenizer.from_pretrained(model_name)

def generate_text(prompt, max_length=100):
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_length=max_length)
return tokenizer.decode(outputs[0], skip_special_tokens=True)

print(generate_text("Masa depan AI adalah"))

Meskipun pendekatan ini bekerja, tidak cocok untuk aplikasi dengan lalu lintas tinggi karena penggunaan sumber daya yang tidak efisien dan kurangnya optimasi untuk penerapan.

Menggunakan TorchServe atau Kerangka Kerja Serupa

Kerangka kerja seperti TorchServe menyediakan kemampuan penerapan yang lebih kuat, termasuk load balancing dan versi model. Namun, mereka masih tidak menangani tantangan spesifik penerapan LLM, seperti manajemen memori yang efisien untuk model besar.

Memahami Manajemen Memori dalam Penerapan LLM

Manajemen memori yang efisien sangat penting untuk menerapkan model bahasa besar (LLM) karena sumber daya komputasi yang luas diperlukan. Gambar-gambar berikut mengilustrasikan berbagai aspek manajemen memori, yang integral untuk mengoptimalkan kinerja LLM.

Memori Segmen vs. Memori Berhalaman

Gambar-gambar ini membandingkan teknik manajemen memori segmen dan memori berhalaman, yang umum digunakan dalam sistem operasi (OS).

  • Memori Segmen: Teknik ini membagi memori menjadi segmen yang berbeda, masing-masing sesuai dengan program atau proses yang berbeda. Misalnya, dalam konteks penerapan LLM, segmen yang berbeda mungkin dialokasikan untuk komponen model yang berbeda, seperti tokenisasi, embedding, dan mekanisme perhatian. Setiap segmen dapat tumbuh atau menyusut secara independen, menyediakan fleksibilitas tetapi berpotensi menyebabkan fragmentasi jika segmen tidak dikelola dengan baik.
  • Memori Berhalaman: Di sini, memori dibagi menjadi halaman dengan ukuran tetap, yang dipetakan ke memori fisik. Halaman dapat dipertukarkan sesuai kebutuhan, memungkinkan penggunaan memori yang efisien. Dalam penerapan LLM, ini dapat sangat penting untuk mengelola jumlah memori yang besar yang diperlukan untuk menyimpan bobot model dan perhitungan antara.

Manajemen Memori di OS vs. vLLM

Gambar ini membandingkan manajemen memori tradisional OS dengan pendekatan manajemen memori yang digunakan dalam vLLM.

  • Manajemen Memori OS: Dalam sistem operasi tradisional, proses (misalnya, Proses A dan Proses B) dialokasikan halaman memori (Halaman 0, Halaman 1, dll.) dalam memori fisik. Alokasi ini dapat menyebabkan fragmentasi seiring waktu karena proses meminta dan melepaskan memori.
  • Manajemen Memori vLLM: Kerangka kerja vLLM menggunakan cache Key-Value (KV) untuk mengelola memori lebih efisien. Permintaan (misalnya, Permintaan A dan Permintaan B) dialokasikan blok cache KV (Blok KV 0, Blok KV 1, dll.). Pendekatan ini membantu meminimalkan fragmentasi dan mengoptimalkan penggunaan memori, memungkinkan penerapan model yang lebih cepat dan lebih efisien.

Mekanisme Perhatian dalam LLM

Mekanisme Perhatian dalam LLM

Mekanisme Perhatian dalam LLM

Mekanisme perhatian adalah komponen fundamental dari model transformer, yang umum digunakan untuk LLM. Gambar ini mengilustrasikan rumus perhatian dan komponennya:

  • Query (Q): Token baru dalam langkah decoder atau token terakhir yang dilihat model.
  • Key (K): Konteks sebelumnya yang model harus perhatikan.
  • Value (V): Jumlah bobot atas konteks sebelumnya.

Rumus menghitung skor perhatian dengan mengambil produk dot antara query dengan kunci, menskala dengan akar kuadrat dimensi kunci, menerapkan fungsi softmax, dan akhirnya mengambil produk dot dengan nilai. Proses ini memungkinkan model untuk fokus pada bagian relevan dari urutan input saat menghasilkan setiap token.

Perbandingan Throughput Penerapan

vLLM: Mudah, Cepat, dan Murah Penerapan LLM dengan PagedAttention

vLLM: Mudah, Cepat, dan Murah Penerapan LLM dengan PagedAttention

Gambar ini mempresentasikan perbandingan throughput penerapan antara kerangka kerja yang berbeda (HF, TGI, dan vLLM) menggunakan model LLaMA pada konfigurasi perangkat keras yang berbeda.

  • LLaMA-13B, A100-40GB: vLLM mencapai throughput 14x – 24x lebih tinggi daripada HuggingFace Transformers (HF) dan 2,2x – 2,5x lebih tinggi daripada HuggingFace Text Generation Inference (TGI).
  • LLaMA-7B, A10G: Trend serupa diamati, dengan vLLM secara signifikan mengungguli baik HF dan TGI.

vLLM: Arsitektur Penerapan LLM Baru

vLLM, dikembangkan oleh peneliti di UC Berkeley, mewakili lompatan besar dalam teknologi penerapan LLM. Mari kita jelajahi fitur dan inovasi kuncinya:

PagedAttention

Di jantung vLLM terletak PagedAttention, algoritma perhatian baru yang terinspirasi oleh manajemen memori virtual dalam sistem operasi. Berikut cara kerjanya:

Partisi Cache Key-Value (KV): Alih-alih menyimpan cache KV secara kontinu dalam memori, PagedAttention membaginya menjadi blok dengan ukuran tetap.
Penyimpanan Non-Kontinu: Blok-blok ini dapat disimpan secara non-kontinu dalam memori, memungkinkan manajemen memori yang lebih fleksibel.
Alokasi On-Demand: Blok hanya dialokasikan saat diperlukan, mengurangi pemborosan memori.
Berbagi Efisien: Beberapa urutan dapat berbagi blok, memungkinkan optimasi untuk teknik seperti sampling paralel dan pencarian berkas.

Saya telah menghabiskan lima tahun terakhir dengan membenamkan diri dalam dunia Machine Learning dan Deep Learning yang menarik. Minat dan keahlian saya telah membawa saya untuk berkontribusi pada lebih dari 50 proyek rekayasa perangkat lunak yang beragam, dengan fokus khusus pada AI/ML. Rasa ingin tahu saya yang terus-menerus juga telah menarik saya ke arah Natural Language Processing, sebuah bidang yang saya ingin jelajahi lebih lanjut.