- Untuk mengatasi keterbatasan LLM yang bisa menyelesaikan soal setingkat Olimpiade Matematika tetapi tetap tidak mampu melakukan penjumlahan sederhana/Sudoku secara akurat tanpa alat eksternal, pendekatan ini membangun komputer sungguhan di dalam transformer
- Kode C arbitrer diubah menjadi token, lalu model sendiri secara langsung menghasilkan jejak eksekusi hingga jutaan langkah, dan dapat di-streaming di CPU dengan kecepatan lebih dari 30 ribu token per detik
- Teknologi kuncinya adalah membatasi dimensi head attention ke 2D sehingga berubah menjadi pencarian geometris berbasis convex hull, menggantikan pemindaian linear-time dengan log-time
- Dengan mengimplementasikan interpreter WebAssembly ke dalam bobot transformer, eksekusi program berlangsung secara transparan di dalam loop decoding model tanpa pemanggilan alat eksternal
- Ke depannya, pendekatan ini membuka kemungkinan untuk mengompilasi program langsung ke bobot, serta mengintegrasikan representasi yang dipelajari dan algoritme yang dikompilasi ke dalam satu fondasi komputasi bagi sistem AI
Batas komputasi LLM
- LLM mutakhir dapat memecahkan soal setingkat medali emas Olimpiade Matematika Internasional atau menantang masalah matematika dan sains yang belum terpecahkan, tetapi masih gagal pada tugas komputasi murni
- Bahkan pada penjumlahan dasar pun kesalahan masih terjadi, dan pada benchmark seperti Sudoku-Bench, tingkat keberhasilan tanpa bantuan eksternal sangat rendah
- Saat ini ada dua jalan memutar untuk menjembatani kesenjangan ini
- Tool use: model menulis kode, lalu interpreter eksternal menjalankannya dan mengembalikan hasilnya
- Orkestrasi agen: loop eksternal menyimpan status antara dan memecah tugas, lalu memanggil model berulang kali
- Pendekatan-pendekatan ini memang berguna, tetapi sekaligus menegaskan keterbatasan mendasarnya: kemampuan komputasi sesungguhnya berada di luar model
- Ibarat manusia membuat pesawat bukan berarti manusia bisa terbang
- Model mungkin dapat bernalar tentang komputasi atau mengoordinasikan alat, tetapi jika tidak bisa mengeksekusinya sendiri, ia bukan komputer yang sesungguhnya
Bagaimana transformer diubah menjadi komputer
- Universalitas teoretis bahwa arsitektur transformer dapat mensimulasikan mesin Turing telah dibuktikan oleh berbagai riset, tetapi daya representasi teoretis tidak menjamin efisiensi eksekusi yang praktis
- Alih-alih memakai model komputasi teoretis murni, pendekatan ini mengimplementasikan komputer RAM modern di dalam transformer, dengan setiap instruksi dipetakan ke maksimal 5 token
- Namun persoalan yang lebih dalam justru ada pada proses decoding itu sendiri
- Decoding autoregresif standar berinteraksi dengan seluruh histori yang terus bertambah di setiap langkah
- KV caching memang menghindari perhitungan ulang key/value masa lalu, tetapi biaya attention yang sebanding dengan ukuran cache tetap muncul
- Untuk mengatasi batas ini, pendekatan ini membatasi dimensi head attention ke 2D, lalu memperkenalkan jalur decoding efisien untuk jejak bergaya eksekusi
- Operasi pencarian/pembaruan utama dapat dilakukan dalam waktu logaritmik terhadap panjang sekuens
- Dengan ini, program dengan jutaan langkah dapat dijalankan di dalam transformer
Makna komputasi — tool use vs eksekusi di dalam model
- Pendekatan tool use yang ada: model mengeluarkan kode seperti
python -c "print(3+5)" → interpreter eksternal menjalankan → hasil disuntikkan ke aliran token
- Pendekatan sistem ini: interpreter WebAssembly diimplementasikan ke dalam bobot transformer
- WebAssembly adalah set instruksi tingkat rendah untuk eksekusi cepat dan deterministik sekaligus target kompilasi umum bagi C/C++
- Saat menghitung 3 + 5, model mengeluarkan instruksi wasm (
i32.const, i32.add) lalu beralih ke mode decoding cepat untuk langsung menghasilkan jejak eksekusi langkah demi langkah
- Perbedaan utamanya
- Tool use bersifat opaque: model menyerahkan kontrol lalu menerima jawaban black-box
- Eksekusi di dalam model bersifat transparent: semua langkah antara muncul dalam jejak, dan model tidak pernah keluar dari loop decoding-nya sendiri
Demo Sudoku — stress test untuk komputasi panjang yang akurat
- Pendekatan jaringan saraf terlatih menunjukkan performa bagus pada Sudoku mudah, tetapi gagal total pada soal sulit
- Ada penjelasan umum bahwa model autoregresif pada dasarnya tidak cocok untuk masalah constraint satisfaction, tetapi sistem ini sepenuhnya autoregresif dan tetap mencapai akurasi 100%
- Bottleneck sesungguhnya bukan paradigma autoregresif itu sendiri, melainkan Sudoku sulit membutuhkan jejak eksekusi yang sangat panjang dan attention standar membuat pembuatan konteks panjang menjadi tidak praktis
- Sebuah solver Sudoku lengkap yang telah dikompilasi dijalankan di dalam transformer, sehingga yang dilakukan langkah demi langkah adalah algoritme nyata, bukan heuristik yang dipelajari
- Sudoku "tersulit di dunia" karya Arto Inkala diselesaikan dengan akurat dalam kurang dari 3 menit
- Jika solver yang dikompilasi akurat, maka eksekusi transformer juga akurat, memberi jaminan umum
Cara komputasi dikodekan — jejak append-only
- Transformer autoregresif diibaratkan sebagai mesin yang hidup di dalam histori miliknya sendiri
- Komputer tradisional memperbarui memori yang bisa diedit, tetapi transformer tidak memiliki konsep seperti itu
- Ia terdiri dari prompt tetap (input/program) dan jejak yang hanya terus membesar (token yang dihasilkan)
- Analogi buku catatan append-only
- Baris-baris awal adalah input (prompt), lalu setiap baris berikutnya mencatat langkah komputasi selanjutnya
- Baris sebelumnya tidak bisa diubah, dan pada tiap langkah hanya sedikit posisi sebelumnya yang bisa dirujuk
- Banyak algoritme dapat direpresentasikan sebagai "jejak append-only yang pada tiap langkah hanya merujuk ke sedikit posisi sebelumnya yang tetap"
- Dalam sistem ini, token yang dihasilkan model merepresentasikan status mesin virtual yang terus berkembang seperti instruction pointer, operasi memori/stack, aritmetika, alur kontrol, output, dan lain-lain
- Head attention bekerja seperti array 1D bersama, memberi primitif write-then-read di mana tiap token menulis nilai ke satu indeks dan membaca nilai dari indeks lain
- Attention juga dapat menghitung cumulative sums, sehingga instruction pointer, kedalaman stack, dan lain-lain dapat dilacak sebagai jumlah kumulatif dari kenaikan delta
Kunci pembuka: attention yang jauh lebih cepat secara eksponensial
- Komputer nyata memperbarui status kecil dengan jumlah kerja yang nyaris konstan per instruksi, tetapi transformer standar pada langkah decoding ke-t berinteraksi dengan prefiks sepanjang t, sehingga total biaya meningkat secara kuadratik
- HullKVCache diperkenalkan untuk mengatasi ledakan kuadratik ini
- Pada benchmark nyata, HullKVCache mencapai 31.037 token per detik (6.747 baris/detik), sedangkan KVCache standar 272 token per detik (59 baris/detik), selisih sekitar 114x
- Alih-alih waktu Θ(t) per langkah, pencarian attention dilakukan dalam waktu O(log t)
-
Jalur cepat untuk attention 2D
- Bukan mencoba mempercepat transformer secara umum atau memperkenalkan arsitektur baru, pendekatan ini fokus pada parameterisasi yang mudah ditangani dengan membatasi dimensi head menjadi 2D pada vanilla transformer
- Dengan
d_model = 36, n_heads = 18, tiap head tepat berukuran dua dimensi, memakai 7 layer, nn.MultiheadAttention standar, dan gated feedforward network
- Dibangun dengan vanilla PyTorch murni tanpa custom attention kernel atau sparse mask
- Jumlah layer, head, dan ukuran embedding secara arbitrer dapat dibuat jauh lebih besar, jadi model secara keseluruhan tidak harus kecil
- Gunakan lebih banyak head dengan n_heads = d_model / 2
-
Sudut pandang geometris pada attention 2D
- Mekanisme attention: token masa lalu memberi key vector 2D kⱼ dan value vⱼ, langkah saat ini membentuk query q lalu mengembalikan value dari key dengan inner product terbesar (hardmax attention)
- Ini persis sama dengan "supporting point query" klasik dalam geometri komputasi: ketika diberi arah q, carilah titik terjauh di convex hull pada arah tersebut
- Dengan memelihara struktur data convex hull saat token dihasilkan, pencarian log-time atas seluruh titik masa lalu menjadi mungkin
- Untuk operasi memori/stack, sistem perlu mencari "nilai yang terakhir disimpan di indeks i", dan inilah alasan dibutuhkannya key 2D
- Indeks j disimpan sebagai key 2D kⱼ = (2j, -j²), lalu dikueri dengan arah q = (i, 1), sehingga suku kuadratik -j² berperan sebagai penalti agar hanya pencocokan tepat yang menang
- Attention 2D sudah cukup untuk kelengkapan Turing, dan seperti ditunjukkan blog ini, mampu merepresentasikan seluruh komputer RAM
Rencana ke depan
-
Mekanisme attention yang lebih kaya
- Implementasi saat ini memakai hardmax attention, tetapi itu bukan batasan mendasar
- Dapat didekati dengan k-sparse softmax attention: cari top-k key pada convex hull bertumpuk lalu lakukan softmax hanya pada key-key tersebut, dengan biaya O(k + log n)
- Jalur cepat geometris ini tidak terbatas pada struktur executor saja, dan secara prinsip dapat mempercepat waktu decoding semua transformer dengan head 2D
- Head 3D juga dapat diperluas secara alami melalui convex hull 3D, meski pada dimensi lebih tinggi efisiensinya turun tajam
-
Melatih model skala besar dengan head 2D
- Parameterisasi head 2D secara inheren bukanlah sesuatu yang kecil — dengan lebih banyak head dan layer, jumlah parameter total dapat dipertahankan mirip transformer standar
- Ada beberapa mode pemanfaatan yang mungkin
- Sebagai jalur cepat khusus yang dipasangkan dengan model yang lebih lambat dan lebih umum
- Sebagai arsitektur hybrid cepat/lambat dalam satu sistem
- Sebagai speculative decoding, di mana model 2D cepat mengusulkan token dan model attention biasa memverifikasinya
- Karena jejak eksekusi adalah bagian dari forward pass, seluruh proses differentiable — berbeda secara mendasar dari alat eksternal, dan menjadi fondasi komputasi yang dapat dipelajari serta langsung diintegrasikan ke model yang lebih besar
-
Mengompilasi program ke bobot
- Saat ini model mempelajari interpreter yang dikodekan dalam bobot, tetapi jika mesin kompilasi pembuat bobot diperluas, maka program arbitrer bisa langsung dikompilasi ke bobot tanpa sekuens token
- Bobot itu sendiri menjadi deployment target bagi software, sehingga model tidak lagi sekadar mempelajari perilaku seperti software, melainkan memasukkan logika program yang telah dikompilasi sebagai bagian dari sirkuit internalnya
- Jika logika dapat dikompilasi ke bobot, gradient descent bukan lagi satu-satunya cara untuk memodifikasi model — ada jalur lain untuk menyisipkan struktur, algoritme, dan jaminan langsung ke jaringan
- Pada akhirnya, ini bisa berkembang menjadi sistem yang bukan hanya belajar dari pengalaman, tetapi juga memodifikasi atau memperluas bobotnya sendiri untuk menulis ulang mesin internalnya sendiri
-
Menumbuhkan sistem AI seperti software
- Seperti ekosistem software modern yang berevolusi dengan mengakumulasi modul, abstraksi, dan komponen yang dapat digunakan ulang, proses serupa juga dimungkinkan di dalam sistem AI, dengan kemampuan komputasi baru ditambahkan secara bertahap
- Fitur baru dihubungkan ke sirkuit yang sudah ada tanpa harus melatih ulang seluruh sistem
- Sistem AI masa depan tidak hanya menggunakan software, tetapi memasukkan software ke dalam dirinya, menyatukan representasi yang dipelajari dan algoritme yang dikompilasi di atas satu fondasi komputasi
1 komentar
Komentar Hacker News
Ini pendekatan yang jauh lebih menarik daripada sekadar melakukan komputasi
Model dapat melakukan peralihan attention dinamis yang sebanding dengan logaritma jumlah token
Dengan begitu, model bisa melacak register dan stack yang direpresentasikan sebagai teks sambil meniru eksekusi program
Jika LLM dapat beralih ke semacam ‘mode fokus’ dan menghasilkan token dengan sangat cepat, itu bisa mempercepat tahap penalaran untuk mengeksplorasi dan merapikan banyak hipotesis
Makalah ini mengusulkan bahwa hal ini bisa dimanfaatkan untuk arsitektur hibrida yang menggabungkan jalur cepat dan jalur lambat, atau sebagai model speculative execution
Awalnya saya berpikir, “kenapa ini perlu dilakukan?”, tetapi sekarang saya melihatnya dari sudut pandang bootstrap pelatihan
Misalnya, sistem pakar dengan akurasi 80% bisa ditanamkan ke dalam model, lalu hasilnya dipakai sebagai data pelatihan untuk meningkatkan akurasi
Semakin rendah biaya pelatihan untuk berbagai tugas, semakin rendah pula hambatan masuk dalam persaingan AI
Tidak seperti softmax attention, average-hard attention tidak dapat didiferensiasikan terhadap key dan query
Bahkan jika dikoreksi dengan straight-through estimator, kecepatan backpropagation tidak meningkat
Otak manusia tidak unggul dalam kemampuan berhitung
Perkalian 10 digit pun memakan waktu lama. Tugas seperti ini jauh lebih efisien ditangani oleh gerbang logika
Jadi saya bertanya-tanya apakah akan lebih baik bila LLM memanggil modul eksternal seperti ALU daripada menghitung sendiri secara langsung
Gaya tulisannya terasa seperti ditulis AI, tetapi pesan intinya tidak jelas
Tidak jelas kenapa mengeksekusi program di dalam model, alih-alih di sistem eksternal, itu lebih baik; apakah keuntungannya pada kecepatan, backpropagation, atau benchmark
Sebagian orang percaya symbolic logic itu esensial, tetapi upaya seperti ini juga bisa dilihat sebagai eksperimen yang menarik
Ini secara fundamental berbeda dari pemanggilan alat eksternal
Selain itu, biaya decoding memiliki kompleksitas O(k + log n), dan jika bisa menyelesaikan masalah seperti Sudoku dengan akurasi 100%, itu sudah cukup bermakna
Pendekatan seperti ini juga bisa digabungkan ala MoE, atau digunakan untuk bereksperimen dengan berbagai interpreter seperti VM tertanam berbasis WASM
Gagasan mengintegrasikan alat ke jalur komputasi internal model sangat menarik dari sisi interpretabilitas
Mengejutkan bahwa Transformer sederhana bisa menghasilkan efisiensi seperti ini
Potensinya ada, tetapi dalam kondisi sekarang kegunaan praktisnya masih rendah
Bobot maupun alat “compiler”-nya tidak dirilis, sehingga sulit untuk bereksperimen
Meski begitu, gagasan menanamkan primitif komputasi yang telah didefinisikan sebelumnya ke dalam LLM tetap bisa berguna
Kalimat ini adalah inti utamanya:
“Karena execution trace adalah bagian dari forward pass, gradien bisa dipropagasikan melalui komputasi itu sendiri”
Artinya, tidak seperti pemanggilan alat eksternal, ini menjadi fondasi komputasi yang dapat dilatih
Selain itu, data pelatihan maupun rancangan loss function juga tidak jelas
Meski begitu, karena pemanggilan alat memang merusak efisiensi batching, melewatkannya melalui subnet komputasi internal bisa menghasilkan peningkatan efisiensi besar pada skala besar
Hanya saja subnet itu tidak harus berupa Transformer; layer non-pembelajaran yang dioptimalkan untuk GPU pun tampaknya sudah cukup
Makalah ini menyembunyikan inti persoalannya
Jika dimensi attention head dibatasi menjadi 2, token bisa dicari dan diperbarui dengan kompleksitas waktu logaritmik
Namun tidak jelas kenapa strategi ini hanya diterapkan pada “token kode”
Menjadikan WASM sebagai target juga menimbulkan tanda tanya dari sisi efisiensi
Misalnya, menyebut self-attention sebagai “lookup table” itu tidak akurat
Pada contoh kode,
d_model = 36, n_heads = 18digunakan untuk membentuk 2D per head, tetapi tetap saja masih belum jelasTidak ada penjelasan konkret tentang bagaimana Sudoku solver dikompilasi menjadi bobot Transformer
Tidak jelas apakah benar dilakukan kompilasi langsung dari kode ke bobot, atau justru dipelajari lewat pelatihan
Menarik, tetapi pertanyaan “kenapa harus dilakukan dengan cara ini” tetap tersisa
Otak manusia juga bisa mensimulasikan mesin Turing, tetapi lambat. Karena itu manusia memakai alat eksternal
Untuk model pun, bukankah memakai alat eksternal akan lebih efisien?
Bahkan mungkin saja bahasa seperti Elixir ditanamkan agar bisa mengeksekusi kode yang lebih pendek
Gagasannya adalah model dapat memodifikasi kode atau memiliki kemampuan debugging saat berjalan