Raksasa autoregresif seperti GPT-4 dan Claude mengeluarkan kode token demi token, bergerak dari kiri ke kanan di dalam sebuah berkas. Mereka menangani cuplikan pendek dengan baik, tetapi tersandung ketika seorang pengembang ingin mengedit baris yang terkubur jauh di dalam basis kode yang besar. Model tersebut harus mengevaluasi ulang setiap token hilir, dan menjaga konsistensi seluruh berkas menjadi sebuah mimpi buruk.

Model difusi dimulai dari sekumpulan token acak dan melakukan denoising secara iteratif hingga program yang koheren muncul. Karena penyempurnaan menyentuh seluruh urutan sekaligus, model dapat menyisipkan, menghapus, atau menulis ulang bagian kode mana pun tanpa menghitung ulang bagian akhirnya.

Mengapa paradigma saat ini kesulitan dengan rekayasa perangkat lunak

Autoregresi memaksa model untuk memperlakukan kode sebagai aliran linier, yang berarti ia:

  • Hanya melihat ke belakang. Ia tidak pernah melihat token di masa depan, sehingga tidak dapat mengantisipasi bagaimana sebuah perubahan akan memengaruhi baris-baris berikutnya.
  • Menghitung ulang teks hilir. Satu pengeditan memicu kaskade prediksi baru, yang meningkatkan latensi untuk refaktorisasi atau perbaikan bug.
  • Mengakumulasi kesalahan jangka panjang. Ketidakcocokan di awal akan menumpuk, membuat berkas akhir rusak secara sintaksis atau tidak konsisten secara logis.

Saat Anda perlu melakukan infill—menyisipkan badan fungsi di tengah berkas atau memperbarui tanda tangan API—sifat sekuensial dari model autoregresif terasa kaku dan rentan terhadap kesalahan.

Alternatif difusi: penyempurnaan iteratif, bukan prediksi langkah demi langkah

Kami memperlakukan berkas kode sebagai sinyal yang berisik (noisy). Generasi berlanjut dalam beberapa putaran:

  1. Inisialisasi dengan noise murni. Kami memberi model urutan token acak, yang sering kali direpresentasikan oleh placeholder khusus.
  2. Denoising bertahap. Pada setiap langkah, model memprediksi versi yang sedikit lebih bersih, mengarahkan token menuju kode yang masuk akal.
  3. Konvergen ke program yang sudah jadi. Setelah sejumlah langkah yang tetap, noise menghilang, menyisakan cuplikan kode yang terbentuk sepenuhnya.

Karena setiap langkah meninjau kembali seluruh urutan, model dapat mengubah token apa pun pada tahap apa pun. Pandangan global ini memungkinkannya untuk menambahkan import yang hilang, mengubah nama variabel, atau mengatur ulang indentasi sebuah blok tanpa menghasilkan ulang semua hal yang mengikutinya.

Merekayasa model difusi yang berfokus pada kode

Memindahkan difusi dari gambar ke teks bukanlah tugas yang bersifat plug-and-play. Ada tiga pergeseran teknis yang penting.

1. Difusi diskrit

Piksel gambar menerima noise fraksional, tetapi token kode bersifat kategoris—ia bisa berupa kata kunci, pengenal (identifier), atau simbol tertentu. Oleh karena itu, kami menggunakan rantai Markov yang berulang kali mengganti token dengan placeholder netral (sering kali [MASK]) hingga urutannya menjadi benar-benar acak. Proses sebaliknya mempelajari cara memulihkan token asli langkah demi langkah.

2. Kesadaran struktural

Bahasa pemrograman menerapkan aturan sintaksis yang ketat: indentasi menentukan cakupan (scope) dalam Python, kurung kurawal membatasi blok dalam bahasa bergaya C, dan variabel harus dideklarasikan sebelum digunakan. Model difusi yang memperlakukan kode sebagai teks biasa akan menghasilkan output yang tidak valid secara sintaksis. Untuk mencegah hal ini, para peneliti menambahkan masker atensi yang sadar sintaksis (syntax-aware attention masks) yang membatasi bagaimana token memperhatikan satu sama lain, memaksa model untuk menghormati hierarki, sarang (nesting), dan batasan spesifik bahasa.

3. Penyempurnaan hierarkis

Langkah-langkah difusi awal membuat sketsa struktur kasar—tanda tangan fungsi, definisi kelas, organisasi modul. Langkah-langkah berikutnya memoles detail halus seperti tanda baca, spasi putih, dan konvensi penamaan. Strategi coarse-to-fine ini mencerminkan bagaimana manusia membuat kerangka program sebelum memoles bagian internalnya, dan ini mengarahkan komputasi ke tempat yang paling penting pada setiap tahap.

Autoregresif vs. difusi: perbandingan berdampingan

Aspek Autoregresif Difusi
Alur generasi Sekuensial, kiri ke kanan Paralel, denoising iteratif
Konsistensi global Rentan terhadap penyimpangan (drift) pada rentang panjang Pandangan holistik di seluruh token
Kasus penggunaan umum Chat, penjelasan, cuplikan cepat Refaktorisasi, perbaikan bug, sintesis kode skala besar

Tabel tersebut menunjukkan mengapa setiap paradigma unggul dalam konteks yang berbeda. Model autoregresif menang ketika kecepatan dan interaksi percakapan menjadi penting. Model difusi menang ketika produk akhir harus benar secara sintaksis dan koheren secara struktural, meskipun mereka mengonsumsi siklus komputasi tambahan.

Apa yang perlu diperhatikan selanjutnya

  • Pipeline hibrida. Sistem di masa depan mungkin memungkinkan model autoregresif untuk menyusun draf versi pertama dengan cepat, lalu menyerahkannya ke model difusi untuk dipoles.
  • Perangkat untuk masker struktural. Para peneliti terus menyempurnakan masker atensi yang memahami sintaksis untuk membantu model difusi mematuhi batasan spesifik bahasa.

Kesimpulan

Model difusi mengubah paradigma dalam generasi kode: alih-alih melangkah token demi token, mereka membentuk seluruh program melalui denoising iteratif. Pendekatan ini mengatasi kelemahan utama sistem autoregresif—yaitu menjaga konsistensi global dalam basis kode yang besar dan dapat diubah. Meskipun lebih lambat dan membutuhkan komputasi tinggi, difusi menawarkan alat yang mumpuni untuk refaktorisasi, perbaikan bug, dan skenario apa pun di mana output yang bersih dan benar secara sintaksis lebih diutamakan daripada kecepatan murni. Jalur masa depan yang paling menjanjikan tampaknya adalah alur kerja hibrida yang memadukan kekuatan penyusunan draf cepat dari autoregresi dengan kemampuan pemolesan holistik dari difusi.