Tutorial Text Generation Inference (TGI): Serving LLM untuk Produksi

# Menyajikan LLM di Produksi dengan Text Generation Inference (TGI) Text Generation Inference (TGI) adalah toolkit buatan Hugging Face yang dirancang khusus untuk menyajikan large language model di b...

By Ruby Abdullah · · tutorial
TGILLM ServingHugging FaceInferenceMLOpsDocker

Menyajikan LLM di Produksi dengan Text Generation Inference (TGI)

Text Generation Inference (TGI) adalah toolkit buatan Hugging Face yang dirancang khusus untuk menyajikan large language model di balik API HTTP produksi. TGI memadukan lapisan web Rust dengan backend inferensi Python, didistribusikan sebagai image Docker siap pakai, dan menyediakan Messages API yang kompatibel dengan OpenAI sehingga klien yang sudah ada bisa dipakai dengan perubahan minimal. Tutorial ini membahas cara men-deploy TGI, menyetel launcher-nya, dan memanggilnya dari curl, klien OpenAI, serta klien Hugging Face Hub.

Apa Itu TGI

TGI adalah server inferensi yang dikelola Hugging Face dan menjadi penggerak layanan Inference Endpoints mereka. Secara arsitektur, tanggung jawabnya terbagi:

  • Sebuah router/webserver Rust menangani HTTP, validasi request, keputusan batching, dan streaming token. Rust menjaga jalur penanganan request tetap cepat dan aman memori di bawah konkurensi.
  • Sebuah model server Python (satu proses per shard) menjalankan forward pass model di GPU, memakai kernel attention dan batching yang teroptimasi.

Pemisahan ini membuat lapisan jaringan yang sibuk tetap ringan, sementara pekerjaan numerik berat berada di kode Python/CUDA yang sudah teruji. Karena TGI dibuat oleh tim yang sama di balik library Transformers dan Hub, pemuatan model, penanganan tokenizer, dan autentikasi model gated terhubung secara alami dengan ekosistem Hugging Face lainnya.

Fitur Utama

  • Continuous batching. Request yang masuk bergabung ke batch yang sedang berjalan begitu slot tersedia, bukan menunggu jendela batch tetap. Ini menjaga GPU tetap sibuk dan meningkatkan throughput pada beban campuran.
  • Tensor parallelism (sharding). Model dapat dibagi ke beberapa GPU dengan --num-shard, memungkinkan model yang tidak muat di satu kartu.
  • Attention teroptimasi. TGI memakai kernel Flash Attention dan Paged Attention untuk mengurangi pemakaian memori dan mempercepat prefill maupun decode.
  • Streaming token. Server-Sent Events (SSE) mengalirkan token saat diproduksi, sehingga menurunkan latensi yang dirasakan pada antarmuka chat.
  • Kuantisasi. Dukungan bawaan untuk bitsandbytes, GPTQ, AWQ, dan skema lain agar model besar muat di VRAM yang lebih kecil.
  • Messages API kompatibel OpenAI. Endpoint /v1/chat/completions yang meniru bentuk request/response OpenAI.

Jika Anda sudah membaca tutorial vLLM kami: kedua server melakukan continuous batching dan paged attention, serta sama-sama menyediakan API gaya OpenAI. Perbedaan praktisnya ada pada pengemasan dan ekosistem. TGI mengutamakan Docker, terintegrasi erat dengan Hub dan Inference Endpoints, serta digerakkan oleh satu binary launcher dengan flag yang eksplisit. Perbandingan lebih konkret ada di bagian akhir.

Prasyarat

  • Mesin dengan satu atau beberapa GPU NVIDIA dan driver terbaru.
  • Docker dengan NVIDIA Container Toolkit terpasang, agar --gpus all berfungsi.
  • Akun Hugging Face dan access token jika Anda berencana menyajikan model gated seperti keluarga Llama. Buat token di Settings → Access Tokens.

Pastikan akses GPU di dalam Docker sebelum melanjutkan:

docker run --rm --gpus all nvidia/cuda:12.4.0-base-ubuntu22.04 nvidia-smi

Jika tabel GPU tercetak, runtime container dapat melihat perangkat keras Anda.

Jalur Tercepat: Menjalankan TGI dengan Docker

TGI didistribusikan sebagai image container di ghcr.io/huggingface/text-generation-inference. Yang minimum Anda butuhkan adalah ID model dan akses GPU. Kita akan memakai model Mistral instruct, yang terbuka dan cukup kecil untuk berjalan di satu GPU kelas menengah.

# Gunakan kembali direktori host untuk cache model agar pengulangan tidak mengunduh ulang

mkdir -p $HOME/.cache/huggingface

docker run --gpus all --shm-size 1g -p 8080:80 \

-v $HOME/.cache/huggingface:/data \

ghcr.io/huggingface/text-generation-inference:latest \

--model-id mistralai/Mistral-7B-Instruct-v0.3

Beberapa detail penting di sini:

Artikel Terkait

Tutorial SGLang: Serving LLM Cepat dan Pemrograman Structured Generation

SGLang: Serving LLM yang Cepat dan Model Pemrograman untuk Generasi Terstruktur SGLang adalah dua hal dalam satu paket: ...

Tutorial KServe: Model Serving Serverless di Kubernetes

Serverless Model Serving di Kubernetes dengan KServe KServe adalah platform native Kubernetes untuk menyajikan model mac...

Tutorial Lengkap BentoML: Packaging dan Serving ML Models ke Production

Tutorial Lengkap BentoML: Packaging dan Serving ML Models ke Production BentoML adalah framework open-source untuk build...

Tutorial LitServe: Framework Serving Model AI yang Cepat dan Mudah

Tutorial LitServe: Framework Serving Model AI yang Cepat dan Mudah Pendahuluan LitServe adalah framework open-source dar...