Bagaimana cara mengoptimalkan aplikasi inferensi?

Pengoptimalan inferensi adalah praktik untuk meningkatkan performa dan efisiensi model AI yang berjalan dalam produksi. Seiring dengan berkembangnya model bahasa besar (LLM) hingga puluhan atau ratusan miliar parameter, dan arsitektur inferensi menjadi lebih kompleks, kesulitan dalam merancang serta memelihara aplikasi juga meningkat. Pengoptimalan adalah tindakan mengelola, memantau, dan memperbarui workload yang membutuhkan komputasi intensif ini, sehingga memungkinkan waktu respons kurang dari satu detik dan throughput yang lebih tinggi dengan biaya yang lebih rendah.

Hal ini melibatkan serangkaian teknik—mulai dari kompresi model hingga manejemen memori lanjutan—yang mengalihkan fokus dari sekadar "menjalankan model" menjadi "menskalakan layanan kecerdasan". Hal ini memungkinkan developer membangun aplikasi yang lebih responsif sekaligus mempertahankan jejak infrastruktur yang berkelanjutan.

Dalam praktiknya, pengoptimalan inferensi umumnya diterapkan dalam dua cara utama:

Pengoptimalan tingkat infrastruktur: Hal ini berfokus pada cara model dieksekusi di hardware. Cara ini mencakup penggunaan runtime yang dioptimalkan (seperti NVIDIA NIM atau vLLM), pengelolaan memori GPU dengan teknik seperti PagedAttention, dan penggunaan batching yang sedang berlangsung untuk memproses beberapa permintaan secara bersamaan. Hal ini sering kali menjadi jalur paling praktis bagi developer yang menggunakan model open source atau eksklusif.

Pengoptimalan tingkat model: Cara ini melibatkan modifikasi model itu sendiri untuk mengurangi ukuran atau kompleksitasnya. Teknik seperti kuantisasi (mengurangi presisi dari 16 bit menjadi 4 bit), distilasi (melatih model "siswa" yang lebih kecil untuk meniru model "pengajar" yang lebih besar), dan ketersebaran (memangkas parameter yang tidak penting) dapat secara drastis mengurangi memori dan komputasi yang diperlukan untuk setiap token.

Memahami cara kerja proses inferensi

Alur kerja tingkat kode

Untuk mengoptimalkan secara efektif, Anda harus memahami dua fase inferensi LLM yang berbeda:

Fase

Deskripsi

Karakteristik utama

Pra-pengisian

Model memproses seluruh perintah input untuk menghitung status pemrosesan.

Sangat paralel; terikat komputasi (menyebabkan saturasi GPU).

Dekode

Model menghasilkan token output satu per satu, secara autoregresif.

Berurutan; terikat pada memori (dibatasi oleh kecepatan transfer data).

Fase

Deskripsi

Karakteristik utama

Pra-pengisian

Model memproses seluruh perintah input untuk menghitung status pemrosesan.

Sangat paralel; terikat komputasi (menyebabkan saturasi GPU).

Dekode

Model menghasilkan token output satu per satu, secara autoregresif.

Berurutan; terikat pada memori (dibatasi oleh kecepatan transfer data).

  1. Menjelaskan tujuannya: Anda memulai dengan deployment model yang belum dioptimalkan
  2. Menerapkan kuantisasi: Kurangi bobot model (misalnya, menjadi 4 bit) agar batch yang lebih besar dapat muat di memori
  3. Mengoptimalkan perhatian: Gunakan FlashAttention atau Grouped-Query Attention (GQA) untuk meminimalkan biaya pergerakan memori
  4. Mengelola memori: Terapkan PagedAttention untuk menyimpan cache KV dalam blok yang tidak berurutan, sehingga menghilangkan fragmentasi
  5. Menjalankan dan memantau: Deploy dengan batching yang sedang berlangsung untuk segera memulai permintaan baru saat permintaan lain selesai

Pengoptimalan inferensi versus deployment standar

Berikut perbandingan inferensi yang dioptimalkan dengan penyajian model "naive" tradisional:

Fitur

Deployment standar

Inferensi yang dioptimalkan

Throughput

Terbatas oleh ukuran tumpukan statis dan waktu tidak ada aktivitas.

Tinggi; memanfaatkan batching yang sedang berlangsung dan iterasi berkelanjutan.

Latensi

Pertumbuhan linear dengan panjang urutan; TTFT (Waktu hingga Token Pertama) yang tinggi.

Dioptimalkan; memanfaatkan akselerasi pra-pengisian dan decoding spekulatif.

Manajemen memori

Alokasi statis (penyediaan berlebih untuk panjang maksimum).

Dinamis (paging); pemborosan minimal melalui PagedAttention.

Efisiensi hardware

Sering kali kurang memanfaatkan kemampuan komputasi GPU/TPU.

Dimaksimalkan; menggunakan kernel yang dioptimalkan (TFE-IE, XLA).

Biaya per permintaan

Lebih tinggi; memerlukan lebih banyak hardware untuk beban yang sama.

Lebih rendah; memuat lebih banyak permintaan ke dalam infrastruktur yang sama.

Fitur

Deployment standar

Inferensi yang dioptimalkan

Throughput

Terbatas oleh ukuran tumpukan statis dan waktu tidak ada aktivitas.

Tinggi; memanfaatkan batching yang sedang berlangsung dan iterasi berkelanjutan.

Latensi

Pertumbuhan linear dengan panjang urutan; TTFT (Waktu hingga Token Pertama) yang tinggi.

Dioptimalkan; memanfaatkan akselerasi pra-pengisian dan decoding spekulatif.

Manajemen memori

Alokasi statis (penyediaan berlebih untuk panjang maksimum).

Dinamis (paging); pemborosan minimal melalui PagedAttention.

Efisiensi hardware

Sering kali kurang memanfaatkan kemampuan komputasi GPU/TPU.

Dimaksimalkan; menggunakan kernel yang dioptimalkan (TFE-IE, XLA).

Biaya per permintaan

Lebih tinggi; memerlukan lebih banyak hardware untuk beban yang sama.

Lebih rendah; memuat lebih banyak permintaan ke dalam infrastruktur yang sama.

Memulai: Memilih lingkungan orkestrasi Anda

Google Cloud menawarkan berbagai alat yang dirancang untuk berbagai tingkat keterampilan dan kebutuhan arsitektur.

Alat

Titik awal

Tingkat keterampilan

Pendekatan

Fitur utama

Cloud Run (dengan GPU)

Layanan AI berbasis peristiwa yang ringan

Pemula

Serverless

Inferensi penskalaan hingga nol untuk workload berlatensi rendah dan fluktuatif

Model OSS (seperti Llama 3)

Pemula hingga menengah

Terkelola/low-code

Deployment sekali klik dengan runtime vLLM atau NVIDIA NIM yang dioptimalkan


Workload produksi berperforma tinggi

Menengah hingga tingkat lanjut

Inferensi yang dipercepat

Microservice bawaan dengan pengoptimalan TensorRT-LLM canggih

Infrastruktur multi-model kustom

Lanjutan

Berbasis Cloud/kustom

Kontrol penuh atas sharding GPU, orkestrasi, dan server inferensi kustom

Pengembangan berskala besar yang mengutamakan TPU

Lanjutan

Dioptimalkan untuk TPU/XLA

Disesuaikan untuk XLA dengan batching berkelanjutan dan PagedAttention di Cloud TPU

Alat

Titik awal

Tingkat keterampilan

Pendekatan

Fitur utama

Cloud Run (dengan GPU)

Layanan AI berbasis peristiwa yang ringan

Pemula

Serverless

Inferensi penskalaan hingga nol untuk workload berlatensi rendah dan fluktuatif

Model OSS (seperti Llama 3)

Pemula hingga menengah

Terkelola/low-code

Deployment sekali klik dengan runtime vLLM atau NVIDIA NIM yang dioptimalkan


Workload produksi berperforma tinggi

Menengah hingga tingkat lanjut

Inferensi yang dipercepat

Microservice bawaan dengan pengoptimalan TensorRT-LLM canggih

Infrastruktur multi-model kustom

Lanjutan

Berbasis Cloud/kustom

Kontrol penuh atas sharding GPU, orkestrasi, dan server inferensi kustom

Pengembangan berskala besar yang mengutamakan TPU

Lanjutan

Dioptimalkan untuk TPU/XLA

Disesuaikan untuk XLA dengan batching berkelanjutan dan PagedAttention di Cloud TPU

Cara mengoptimalkan inferensi dengan Vertex AI Model Garden

Model Garden adalah jalur tercepat untuk men-deploy versi model open source terkemuka yang dioptimalkan seperti Llama, Gemma, dan Mistral.

Langkah 1: Memilih dan mengonfigurasi model Anda

Buka Model Garden dan temukan model OSS yang didukung. Klik Deploy. Dalam konfigurasi, pilih Runtime yang Dioptimalkan seperti vLLM atau NVIDIA NIM.

Langkah 2: Menerapkan kuantisasi

Pilih versi model yang dikuantisasi (misalnya, 4-bit atau 8-bit) untuk mengurangi jejak memori. Hal ini memungkinkan Anda melayani ukuran batch yang lebih besar pada GPU yang sama, sehingga secara langsung meningkatkan throughput.

Langkah 3: Mengaktifkan manajemen memori lanjutan

Pastikan container inferensi dikonfigurasi untuk menggunakan PagedAttention. Teknik ini memungkinkan model menyimpan "memori" (cache Nilai Kunci) dalam blok yang tidak berurutan, sehingga mencegah pemborosan memori dan memungkinkan jendela konteks yang lebih panjang.

Langkah 4: Men-deploy dan memantau

Setelah di-deploy, Vertex AI secara otomatis menangani batching yang sedang berlangsung, memproses permintaan baru segera setelah permintaan yang ada menyelesaikan token. Gunakan Vertex AI Model Monitoring untuk melacak latensi dan memastikan "nuansa" output tetap berkualitas tinggi.

Cara mengoptimalkan inferensi dengan GKE

Untuk tim yang memerlukan kontrol terperinci atas orkestrasi dan kernel inferensi kustom mereka, GKE adalah pilihan standar industri.

Langkah 1: Melakukan inisialisasi cluster Anda dengan GPU NVIDIA atau Cloud TPU

Menyediakan cluster GKE dengan node GPU khusus (seperti L4 atau H100). Menginstal Operator GPU NVIDIA untuk menangani pengelolaan driver dan penyesuaian performa secara otomatis.

Langkah 2: Men-deploy server inferensi yang dioptimalkan

Menggunakan mesin inferensi dalam container seperti vLLM atau Triton Inference Server. Server ini mendukung batching berkelanjutan dan paralelisme tensor, sehingga Anda dapat membagi model besar di beberapa GPU. vLLM juga memberi Anda kemampuan untuk beralih antara TPU dan GPU, dengan coding tambahan minimal.

Langkah 3: Menerapkan decoding spekulatif

Untuk kebutuhan latensi yang sangat penting, konfigurasikan decoding spekulatif. Hal ini melibatkan penggunaan model "draf" yang lebih kecil dan cepat untuk memprediksi token, yang kemudian diverifikasi secara paralel oleh model "target" Anda yang lebih besar, sehingga sering kali memberikan peningkatan kecepatan 2x-3x.

Langkah 4: Menyederhanakan deployment dengan Panduan Memulai Inferensi GKE

Panduan Memulai Inferensi GKE berfungsi sebagai database yang telah dikonfigurasi sebelumnya untuk konfigurasi stack inferensi yang telah diuji. Dengan menentukan model, persyaratan latensi, dan prioritas biaya, alat ini akan memberikan serangkaian rekomendasi berdasarkan praktik terbaik dan tolok ukur terbaru. Hal ini memungkinkan Anda memantau metrik performa khusus inferensi dan menyempurnakan deployment Anda secara dinamis untuk memastikan deployment selalu berjalan pada teknologi yang dioptimalkan.

Langkah 5: Melakukan penskalaan dengan GKE Inference Gateway

GKE Inference Gateway kini tersedia secara umum, yang memperkenalkan dua kemampuan canggih untuk mengelola aplikasi AI Generatif yang kompleks.

  • Perutean yang peka terhadap awalan: Untuk aplikasi seperti multi-turn chat atau analisis dokumen, fitur ini merutekan permintaan ke akselerator yang sama yang sudah memiliki konteks yang di-cache, sehingga meningkatkan waktu respons.
  • Inferensi terpisah: Teknik ini memisahkan fase "pengisian awal" (pemrosesan perintah) dari fase "dekode" (pembuatan token). Karena tahap-tahap ini memiliki kebutuhan resource yang berbeda, Anda dapat menjalankannya di pool mesin yang terpisah dan dioptimalkan untuk memaksimalkan efisiensi.

Langkah 6: Mempercepat akses data dengan Anywhere cache

Anywhere cache adalah cache baca baru yang sepenuhnya konsisten dan berfungsi dengan bucket Google Cloud Storage (GCS) yang ada untuk menyimpan data dalam cache di zona yang sama dengan akselerator Anda. Hal ini mengurangi latensi baca hingga 96% dan meminimalkan biaya jaringan yang terkait dengan workload yang banyak melakukan pembacaan.

Langkah 7: Menghubungkan workload global dengan Cloud WAN

Cloud WAN, jaringan global yang terkelola sepenuhnya dan dibangun di infrastruktur Google berskala besar, yang mengikat seluruh infrastruktur. Cloud WAN menghubungkan resource komputasi AI di berbagai region, cloud, dan lingkungan lokal, sehingga memberikan peningkatan sebesar 40% dalam pengalaman aplikasi inferensi dan TCO 40% lebih rendah dibandingkan solusi WAN tradisional.

Mengatasi tantangan bisnis Anda dengan Google Cloud

Pelanggan baru mendapatkan kredit gratis senilai $300 untuk dibelanjakan di Google Cloud.

Langkah selanjutnya

Mulailah membangun solusi di Google Cloud dengan kredit gratis senilai $300 dan lebih dari 20 produk yang selalu gratis.