Model besar seperti Kimi K3 dengan 2.78 triliun parameter biasanya dianggap mustahil dijalankan di laptop consumer. Namun, tim di balik SQLite AI membuktikan sebaliknya dengan merilis WASTE (Weight-Aware Streaming Tensor Engine): sebuah inference engine yang men-streaming weight dari disk NVMe secara on-demand. Artikel ini membahas panduan praktis menjalankan Kimi K3 secara lokal menggunakan WASTE engine, mulai dari cloning source code hingga inference pertama.
WASTE adalah inference engine tertulis dalam bahasa C dengan zero third-party runtime dependencies. Engine ini mempertahankan trunk model di memori, sementara expert-expert MoE di-streaming dari disk sesuai kebutuhan setiap token. RAM yang tersisa digunakan sebagai bounded expert cache. Pendekatan ini memungkinkan model berukuran 982 GiB berjalan di laptop dengan 64 GB RAM.
Kimi K3 sendiri adalah model Mixture of Experts (MoE) di mana hanya sekitar 4% weight yang aktif per token. Artinya, sebagian besar parameter bersifat idle pada setiap waktu dan tidak perlu berada di memori asalkan bisa diakses dari disk dengan cepat. WASTE memanfaatkan karakteristik ini dengan layout data di mana setiap expert bisa dibaca dalam satu operasi pread saja.
Menurut dokumentasi resmi di GitHub sqliteai/waste, engine ini tervalidasi melawan referensi PyTorch dengan akurasi logits hingga 3.6e-06. Kecepatan decode di MacBook Pro M5 Pro dengan 64 GB RAM mencapai 0.49-0.54 token per second, cukup untuk eksperimen lokal tanpa ketergantungan API cloud.
Sebelum memulai, pastikan sistem memenuhi requirement minimum. WASTE memerlukan 29.05 GB RAM minimum untuk membuka Kimi K3 pada context 4K, namun throughput yang nyaman baru tercapai di sekitar 64 GB RAM. Selain itu, diperlukan 982 GB ruang disk untuk container model yang sudah dikonversi, ditambah 1.42 TB ruang staging selama proses konversi.
Storage speed adalah faktor kritis. Container harus diletakkan di internal NVMe SSD, bukan USB enclosure. Perbedaannya drastis: internal SSD bisa mencapai 12.78 GB/s, sementara USB enclosure hanya sekitar 0.94 GB/s. Pada kecepatan USB, satu token bisa memakan waktu tiga belas detik karena harus membaca 17 GB expert data per token.
Clone repository WASTE dan build library serta CLI menggunakan make. Proses ini memerlukan C11 compiler standar dan tidak membutuhkan BLAS, CUDA, maupun Python di runtime.
git clone https://github.com/sqliteai/waste && cd waste
make
make check
Perintah make akan menghasilkan libwaste.a, binary waste, dan libwastevq. Perintah make check menjalankan 23 test suite untuk memvalidasi kebenaran engine. Jika semua test pass, engine siap digunakan.
Model Kimi K3 dalam format publik berukuran 1.42 TB. Gunakan script konverter Python di direktori tools/ untuk mengubahnya ke format .waste container. Proses konversi memerlukan ruang staging sekitar 1.42 TB, yang akan dibebaskan setelah konversi selesai.
python3 tools/convert.py \
--input /path/to/k3-pytorch-shards \
--output /path/to/k3.waste \
--quantization expert_3bit
Converter akan menghasilkan JSON manifest, resident trunk, dan expert bank untuk setiap layer. Setiap expert record di-align ke 4 KiB dengan gate-nya, dan up/down matrix ditempatkan berdampingan sehingga routing ke satu expert hanya membutuhkan satu read. Layout ini adalah kunci utama performa WASTE.
Jika storage terbatas, WASTE juga menyediakan model Kimi-Linear 48B yang hanya memerlukan container 19 GB dan RAM minimum 1.87 GB. Model ini berjalan di 10.7 tok/s dan cocok untuk mencoba engine sebelum berkomitmen pada konversi Kimi K3.
WASTE menggunakan konfigurasi ram_budget_bytes sebagai hard ceiling, bukan hint. Engine secara otomatis menyesuaikan alokasi cache berdasarkan working set per token, yaitu 17 GB untuk Kimi K3. Cache di bawah angka ini tidak efektif karena expert yang di-cache untuk satu token akan dievict sebelum token berikutnya membutuhkannya.
waste_cfg cfg;
waste_cfg_init(&cfg);
cfg.ram_budget_bytes = 46ULL << 30; // 46 GB budget
waste_ctx *ctx;
waste_open("/path/to/k3.waste", &cfg, &ctx);
Pada mesin 64 GB, default engine memberikan budget 46 GB dengan expert cache 17.56 GB. Ini adalah titik optimal: di atas 52 GB, OS mulai paging dan performa justru menurun drastis. Engine secara cerdas mengalokasikan memori dalam kelipatan working set, bukan mengisi seluruh RAM yang tersedia.
Setelah model terbuka, jalankan inference pertama menggunakan binary CLI untuk memastikan setup berjalan dengan baik.
./waste run /path/to/k3.waste "Jelaskan konsep mixture of experts dalam AI."
Output akan menampilkan RAM budget yang digunakan, kecepatan decode, dan cache hit rate. Pada pertama kali inference, cache masih cold sehingga hit rate rendah. Meski demikian, engine akan tetap berfungsi karena read-ahead pada dua thread sudah overlap dengan operasi matmul.
Untuk melihat breakdown waktu per komponen, aktifkan profiling environment variable:
WASTE_PROFILE=1 ./waste run /path/to/k3.waste "Hello world"
Hasil profiling menunjukkan bahwa MoE layers menyumbang 82.5% waktu decode, di mana 53.5% di antaranya adalah expert I/O dan 20% adalah expert matmul. Ini membuktikan bahwa optimasi selanjutnya harus difokuskan pada caching dan disk speed, bukan kernel aritmatika.
WASTE telah mengimplementasikan read-ahead pada dua thread untuk overlap expert read dengan komputasi. Feature ini memberikan speedup sekitar 1.6x dan sudah aktif secara default. Di sisi cache, optimasi terbaik adalah memastikan container berada di NVMe internal tercepat yang tersedia.
Ada dua optimasi yang diuji namun tidak diadopsi: membaca lebih sedikit byte per token, dan menambah ukuran cache secara agresif. Keduanya gagal karena router MoE pada arsitektur K3 tidak memiliki tail untuk demote, dan cache yang terlalu besar justru memicu OS paging. Detail lengkap ada di docs/EFFICIENCY.md.
Opsi --verify bisa diaktifkan untuk memeriksa CRC32 setiap expert record pada cache miss. Opsi ini menambah overhead sekitar 1-5% namun berguna untuk container yang baru diunduh atau dicopy dari sumber eksternal.
WASTE engine membuka kemungkinan menjalankan frontier-scale LLM secara lokal tanpa ketergantungan API cloud. Kimi K3 yang berjalan pada 0.5 tok/s mungkin belum cukup untuk produksi, tetapi sudah sangat berharga untuk riset, audit privasi, dan eksperimen arsitektur. Format container serta engine dirancang agnostik terhadap model, artinya engine yang bisa men-streaming K3 juga bisa menangani model 48B dengan sangat nyaman.
Dokumentasi teknis lengkap tersedia di repository GitHub sqliteai/waste, termasuk format biner, daftar lessons learned, dan detail validasi numerik.
Dapatkan feedback, users, dan eksposur dari komunitas kreator, developer, dan entrepreneur digital Indonesia.
Submit Produk → Pelajari Dulu