DeepSeek merilis DeepInfer sebagai open source, framework inference yang mereka pakai untuk melayani model secara produksi dalam skala besar. Rilis ini mendukung satu model, DeepSeek-V4.1-Flash, dan berjalan di GPU NVIDIA SM100 atau NPU Huawei Ascend 950. Prasyaratnya Linux, GCC 13.0 atau lebih baru, Python 3.12, CUDA 13 untuk jalur NVIDIA, dan CANN 9.2 untuk jalur Ascend. Yang dirilis adalah jalur offline inference, bukan layanan lengkap siap produksi.
TL;DR
- DeepInfer adalah framework inference yang dipakai DeepSeek di layanan produksi mereka, kini dirilis open source untuk inferensi offline.
- Model yang didukung baru satu: DeepSeek-V4.1-Flash, dengan checkpoint default DeepSeek-V4.1-Flash-1017.
- Hardware yang didukung GPU NVIDIA SM100 dan NPU Huawei Ascend 950, dengan prasyarat Python 3.12 serta CUDA 13 atau CANN 9.2.
- Fitur menonjol mencakup batch-invariant inference, deterministic sampling, structured outputs, dan penjadwalan asinkron.
- Rilis ini belum menyertakan sistem KV cache, disagregasi prefill-decode, dan load balancing antar replika.
Apa Itu DeepInfer dan Kenapa Dirilis?
DeepInfer adalah framework inference berperforma tinggi yang dipakai DeepSeek untuk melayani model mereka sendiri. Dalam README-nya, DeepSeek menyebut rilis open source ini menyediakan inferensi offline dengan fitur inti yang dibutuhkan untuk serving skala besar. Artinya yang dibuka bukan seluruh stack produksi mereka, melainkan mesin inference-nya.
Keputusan merilis komponen seperti ini punya efek ganda. Di satu sisi, tim lain bisa memakai kernel dan runtime yang sudah teruji pada beban kerja nyata. Di sisi lain, DeepSeek mendapat umpan balik dan kontribusi pada bagian yang paling mahal untuk dioptimalkan sendiri, yaitu kernel GPU dan penjadwalan batch. Pola ini mirip dengan bagaimana vendor lain membuka komponen inference mereka.
Yang perlu dipahami sejak awal: DeepInfer bukan pengganti server inference lengkap. README-nya sendiri mencantumkan tiga komponen yang tidak disertakan, sehingga tim yang ingin menjalankan layanan produksi harus menyiapkan bagian itu sendiri. Repositori dan instruksi lengkap ada di github.com/deepseek-ai/DeepInfer.
Hardware Apa Saja yang Didukung?
Dua jalur akselerator yang didukung adalah GPU NVIDIA SM100 dan NPU Huawei Ascend 950. Pilihan itu menarik karena mencerminkan realitas pasar: tim yang memakai hardware NVIDIA punya jalur paling umum, sementara tim di lingkungan yang mendorong akselerator domestik mendapat jalur kedua yang resmi, bukan hasil port komunitas.
| Komponen | Jalur NVIDIA | Jalur Ascend |
|---|---|---|
| Akselerator | GPU SM100 | NPU Ascend 950 |
| Toolkit | CUDA 13 | CANN 9.2 |
| Variabel build | DEEPINFER_ACCELERATOR=nvidia | DEEPINFER_ACCELERATOR=ascend |
| Fitur khusus | Batch-invariant dan deterministic sampling | Belum disebut di README |
Perhatikan baris terakhir. Batch-invariant inference dan deterministic sampling disebut berlaku khusus NVIDIA di README, jadi tim yang memakai jalur Ascend tidak otomatis mendapat jaminan hasil identik antar komposisi batch. Itu bukan kekurangan fatal, tapi penting kalau aplikasi lo bergantung pada reproduksibilitas keluaran.
Fitur Apa yang Paling Relevan untuk Serving?
Ada beberapa fitur yang layak disorot. Pertama, paralelisme: Attention DP dengan balanced CP, serta MoE EP dengan EPLB. Kombinasi itu menunjukkan DeepInfer memang dirancang untuk model Mixture-of-Experts, di mana distribusi pakar antar perangkat harus seimbang agar tidak ada satu GPU yang jadi bottleneck.
Kedua, DSpark dengan confidence-scheduled verification. Mekanisme ini mempercepat decoding memakai draft token, lalu memakai estimasi keyakinan untuk mengatur jadwal verifikasi. Di README disebut dua variabel yang mengaturnya: DEEPINFER_ENABLE_MTP_VARLEN untuk mengaktifkan, dan DEEPINFER_USE_NEXTN_DECODE untuk menentukan panjang draft maksimum, dengan nilai default 5.
Ketiga, SWA bounded replay untuk memangkas pekerjaan prefill pada decoder. Mode compact diaktifkan lewat DEEPINFER_YOCO_PREFILL_TRUNCATION_MODE, dengan DEEPINFER_YOCO_PREFILL_KEEP_TOKENS bernilai default 140 untuk pengaturan V4.1. README menekankan bahwa sufiks yang dipertahankan harus menutupi jendela SWA plus panjang backtracking maksimum, jadi angka 140 bukan nilai yang bisa diganti sembarangan tanpa pengujian.
Keempat, penjadwalan asinkron yang aktif secara default. Tujuannya menumpuk pekerjaan penjadwalan batch di CPU dengan eksekusi di perangkat, sehingga CPU tidak jadi penghambat saat GPU sedang sibuk. Kelima, structured outputs yang bisa membatasi generasi ke regex, JSON schema, atau grammar EBNF lewat parameter so_args.
Apa Arti Batch-Invariant dan Deterministic Sampling?
Batch-invariant berarti hasil model tetap sama walaupun komposisi batch berubah. Pada sistem inference biasa, keluaran bisa sedikit berbeda tergantung berapa banyak permintaan yang digabung dalam satu batch, karena urutan operasi floating point ikut berubah. Untuk aplikasi yang butuh konsistensi, misalnya evaluasi otomatis atau pengujian regresi model, perbedaan kecil itu menyulitkan perbandingan.
Deterministic sampling lebih ketat lagi: keluaran identik untuk token masukan dan parameter sampling yang identik. Di README, resepnya adalah mengaktifkan DEEPINFER_BATCH_INVARIANT, mematikan DEEPINFER_ENABLE_MTP_VARLEN, lalu mengirim seq_seed tetap di SamplingParams. Keduanya disebut berlaku untuk NVIDIA saja.
Kombinasi ini berguna untuk tim yang menjalankan evaluasi berulang dan ingin memisahkan perubahan model dari perubahan infrastruktur. Tanpa determinisme, setiap kali hasil evaluasi bergeser, muncul pertanyaan apakah penyebabnya prompt baru, versi model baru, atau sekadar batch yang berbeda.
Apa yang Belum Ada di Rilis Ini?
README menyebut tiga komponen yang dibutuhkan untuk layanan inference lengkap tapi tidak disertakan: sistem KV cache, disagregasi VE/Prefill/Decode, dan load balancing antar replika data-parallel untuk prefill maupun decode. Ketiganya bukan detail kecil; justru di situ sebagian besar kompleksitas operasional sebuah layanan inference berada.
Ketiadaan sistem KV cache berarti tim harus menyediakan mekanisme sendiri untuk menyimpan dan mengambil cache antar permintaan. Untuk model besar dengan konteks panjang, KV cache adalah penentu utama biaya memori, jadi keputusan desain di sini berpengaruh langsung ke jumlah GPU yang dibutuhkan.
Ketiadaan disagregasi prefill dan decode berarti prefill dan decode berjalan di jalur yang sama. Pada beban kerja campuran, prefill yang panjang bisa menahan decode dan menaikkan latensi token pertama. Sebagian tim mengatasinya dengan memisahkan pool, dan itu pekerjaan rekayasa yang harus dilakukan sendiri di atas DeepInfer.
Ketiadaan load balancing antar replika berarti routing permintaan ke replika yang tepat menjadi tanggung jawab lapisan di atasnya. README mencatat bahwa sebagian besar fungsi engine untuk disagregasi sudah diimplementasikan, jadi ini lebih soal komponen yang belum disertakan daripada kemampuan yang belum ada.
Bagaimana Cara Mulai Menjalankan?
Untuk jalur NVIDIA, panduan instalasi CUDA resmi ada di dokumentasi CUDA NVIDIA. Panduan itu berguna karena versi driver yang terlalu lama sering jadi penyebab kegagalan build yang pesan errornya tidak jelas.
Langkah pertama, siapkan lingkungan Python 3.12 yang bersih, lalu ekspor variabel akselerator sesuai platform. Untuk NVIDIA, nilainya nvidia; untuk Ascend, ascend. Setelah itu jalankan skrip build yang disediakan repositori.
export DEEPINFER_ACCELERATOR=nvidia
./build.sh
Langkah kedua, jalankan contoh inferensi offline. Secara default, checkpoint DeepSeek-V4.1-Flash-1017 akan diunduh ke cache Hugging Face pada eksekusi pertama. Kalau ingin memakai salinan lokal, arahkan DEEPINFER_HF_MODEL_DIR ke direktori model. Model tersedia di halaman Hugging Face DeepSeek-V4.1-Flash-1017.
python examples/offline_inference.py
Langkah ketiga, verifikasi hasil sebelum mengubah konfigurasi apa pun. Jalankan sekali dengan pengaturan default, catat keluaran dan waktu eksekusinya, lalu ubah satu variabel per percobaan. Karena banyak fitur di sini berupa flag environment, mengubah beberapa sekaligus membuat penyebab perubahan performa sulit dilacak.
Apakah Cocok untuk Tim Kecil?
Untuk eksperimen dan riset, DeepInfer masuk akal karena kernel dan runtime-nya sudah dioptimalkan untuk model DeepSeek. Untuk layanan produksi dengan trafik nyata, biayanya bukan di lisensi melainkan di tiga komponen yang tidak disertakan tadi. Tim kecil biasanya lebih hemat memakai server inference yang sudah lengkap, lalu memakai DeepInfer sebagai pembanding performa.
Ada juga pertimbangan hardware. SM100 dan Ascend 950 bukan akselerator yang umum di server lama, sehingga tim yang punya armada GPU generasi sebelumnya perlu memeriksa kompatibilitas sebelum menjadwalkan migrasi. README tidak menyebut dukungan untuk generasi lain, jadi jangan berasumsi bisa jalan di perangkat yang tidak tercantum.
Yang paling berguna dari rilis ini untuk tim kecil adalah pembelajarannya: kombinasi batch-invariant, deterministic sampling, dan penjadwalan asinkron menunjukkan prioritas desain yang jelas. Pola itu bisa dipakai sebagai daftar periksa saat mengevaluasi framework lain, bahkan kalau akhirnya tidak memakai DeepInfer.
Bagaimana Memilih Konfigurasi Awal?
Mulai dari default, lalu ukur tiga metrik: waktu ke token pertama, throughput token per detik, dan memori puncak per perangkat. Ketiganya cukup untuk memberi gambaran apakah konfigurasi awal sudah mendekati kebutuhan. Tanpa angka pembanding, perubahan konfigurasi hanya terasa lebih cepat atau lebih lambat, dan itu bukan dasar yang bisa dipertanggungjawabkan.
Kalau latensi token pertama jadi masalah, periksa pengaturan SWA bounded replay lebih dulu sebelum menambah perangkat. Mode compact dengan nilai keep tokens default dirancang untuk memangkas pekerjaan prefill, dan itu biasanya memberi perbaikan paling terasa pada konteks panjang. Catat bahwa nilai tersebut harus menutupi jendela SWA ditambah panjang backtracking, jadi jangan menurunkannya tanpa menguji kualitas keluaran.
Kalau throughput yang jadi masalah, lihat penjadwalan asinkron dan konfigurasi paralelisme. Penjadwalan asinkron aktif secara default, jadi kalau throughput masih rendah, kandidat berikutnya adalah keseimbangan distribusi pakar pada model MoE. EPLB ada untuk itu, tapi pengaturannya bergantung pada pola trafik, bukan pada angka yang bisa disalin dari dokumentasi.
Kalau konsistensi yang jadi masalah, aktifkan batch-invariant dan deterministic sampling hanya di lingkungan evaluasi. Keduanya menambah batasan pada runtime, dan menjalankannya di produksi tanpa kebutuhan yang jelas biasanya mengurangi fleksibilitas penjadwalan batch tanpa manfaat yang sepadan.
Satu kebiasaan yang menghemat banyak waktu: simpan konfigurasi yang dipakai bersama hasil pengukuran, bukan hanya nilai akhirnya. Di framework dengan banyak flag environment, perubahan kecil seperti panjang draft atau keep tokens bisa mengubah karakter beban kerja secara signifikan. Catatan yang rapi membuat perbandingan antar percobaan tetap bisa direproduksi berbulan-bulan kemudian, termasuk oleh orang yang tidak ikut menjalankan pengujian pertama.
FAQ
Model apa yang bisa dijalankan dengan DeepInfer?
Rilis ini hanya mendukung DeepSeek-V4.1-Flash, dengan checkpoint default DeepSeek-V4.1-Flash-1017 yang diunduh otomatis dari Hugging Face pada eksekusi pertama. Model lain belum tercantum sebagai didukung.
Apakah DeepInfer bisa dipakai untuk layanan produksi?
Bisa, tapi harus dilengkapi sendiri. README menyebut sistem KV cache, disagregasi prefill-decode, dan load balancing antar replika belum disertakan, padahal ketiganya dibutuhkan untuk layanan inference lengkap.
Apakah jalan di GPU selain SM100?
README hanya mencantumkan NVIDIA SM100 dan Huawei Ascend 950 sebagai hardware yang didukung. Tidak ada pernyataan dukungan untuk generasi GPU lain, jadi kompatibilitas di luar dua platform itu belum bisa diasumsikan.
Apakah hasil generasinya bisa dibuat deterministik?
Bisa pada jalur NVIDIA. Aktifkan batch-invariant, matikan DEEPINFER_ENABLE_MTP_VARLEN, lalu kirim seq_seed tetap di SamplingParams. Kombinasi itu menghasilkan keluaran identik untuk masukan dan parameter sampling yang sama.
💬 Komentar (0)
Belum ada komentar. Jadilah yang pertama! 💬