Consistency LLM: Mengubah LLM menjadi decoder paralel untuk meningkatkan kecepatan inferensi hingga 3,5x
(hao-ai-lab.github.io)- Saat membuat respons panjang, decoding autoregresif (AR) yang menghasilkan token satu per satu menjadi bottleneck utama latensi, dan CLLM adalah pendekatan untuk menguranginya dengan decoding paralel per n token
- Consistency Large Language Models (CLLMs) melatih fine-tuning LLM pralatih agar cepat memetakan status n-token arbitrer ke fixed point yang sama dengan hasil AR greedy
- Jacobi decoding secara teoretis konvergen ke hasil yang sama dengan generasi AR greedy, tetapi pada LLM yang ada peningkatan kecepatannya terbatas, rata-rata hanya sekitar 1,05x, sehingga kurang praktis
- Dalam eksperimen Spider, Human-Eval, GSM8k, dan MT-bench, CLLM menunjukkan peningkatan kecepatan generasi 2,4x–3,4x, dan dinilai setara atau lebih baik dibanding teknik inferensi cepat seperti Medusa2 dan Eagle
- Saat inferensi, tidak diperlukan komponen model tambahan atau perubahan arsitektur model target, sehingga dapat mengejar peningkatan kecepatan sekaligus efisiensi memori
Bottleneck decoding yang ditargetkan CLLM
- LLM digunakan di berbagai bidang seperti pemrograman, hukum, dan saran kesehatan, tetapi pada tahap inferensi biasanya menghasilkan token satu per satu dengan decoding autoregresif (AR)
- Semakin panjang respons, latensi meningkat karena cara generasi per token, sehingga waktu tunggu yang dirasakan pengguna bertambah
- Metode inferensi cepat yang ada sering kali membutuhkan modifikasi arsitektur, komponen tambahan, atau model draf untuk membuat beberapa token sekaligus
Cara kerja dan keterbatasan Jacobi decoding
- Jacobi decoding adalah metode yang berangkat dari iterasi fixed point Jacobi dan Gauss-Seidel, dan dalam greedy decoding terbukti identik dengan generasi AR
- Generasi sekuensial diubah menjadi sistem dengan n variabel dan n persamaan nonlinear, sehingga dapat dihitung secara paralel dengan iterasi Jacobi
- Alur konkretnya sebagai berikut
- Dari prompt input, tebak n token berikutnya secara acak
- Masukkan prompt dan sekuens n-token ke LLM lalu perbarui secara iteratif
- Ketika sekuens tidak lagi berubah, fixed point tercapai
- Sekuens n-token akhir konvergen ke output yang akan dihasilkan AR decoding dalam strategi greedy
- Jalur dari tebakan acak awal hingga hasil generasi AR akhir disebut trajektori Jacobi (Jacobi trajectory)
- Jacobi decoding dasar pada LLM nyata hanya menunjukkan peningkatan kecepatan terbatas, rata-rata sekitar 1,05x dibanding AR decoding
- LLM yang dilatih secara AR sulit memprediksi token berikutnya dengan benar jika token sebelumnya memiliki kesalahan
- Sebagian besar iterasi Jacobi hanya mengoreksi satu token dalam sekuens n-token, sehingga trajektorinya menjadi panjang
- Lookahead decoding dan speculative decoding berupaya mengurangi inefisiensi Jacobi decoding dan decoding AR yang ada, tetapi menimbulkan biaya memori tambahan saat inferensi
Tujuan pelatihan Consistency LLM
- CLLM adalah cara mengadaptasi LLM pralatih agar dari titik arbitrer pada trajektori Jacobi, ia bergerak secara konsisten menuju fixed point
- Tujuan ini mirip dengan tujuan consistency models, teknik akselerasi model difusi
- Dengan menggunakan trajektori Jacobi yang dikumpulkan dari model target, model dilatih dengan loss yang mendorong konvergensi satu langkah selama iterasi Jacobi
- Pelatihan untuk mengubah setiap model target menjadi CLLM terdiri dari dua bagian
- Persiapan trajektori Jacobi
- Untuk setiap prompt, Jacobi decoding dijalankan secara sekuensial pada setiap potongan n-token
- Seluruh sekuens respons menjadi bentuk gabungan dari fixed point yang berurutan
- Setiap sekuens yang dihasilkan dalam trajektori dihitung sebagai satu item data pelatihan
- Pemotongan n-token digunakan untuk menghindari perlambatan akibat mengevaluasi seluruh input panjang pada respons panjang
- Optimisasi bersama consistency loss dan AR loss
- Consistency loss mendorong prediksi beberapa token sekaligus
- AR loss membantu mempertahankan kualitas generasi dengan mencegah CLLM menyimpang dari distribusi LLM target
- Persiapan trajektori Jacobi
Komposisi fungsi loss
- LLM target dinotasikan sebagai
p, dan CLLM sebagaiqθ;qθdiinisialisasi dengan parameterp - Global consistency (GC) loss mendorong CLLM untuk mengeluarkan fixed point
y*ketika status arbitrerydari trajektori Jacobi diberikan sebagai input - Local consistency (LC) loss menyelaraskan agar status bertetangga
y(j)dany(j+1)pada trajektori Jacobi menghasilkan output yang sama - Jarak antar-distribusi
D(·||·)mengikuti pilihan yang dibahas dalam metode GKD, dan pada eksperimen ini terutama menggunakan forward KL - AR loss menerapkan loss autoregresif tradisional berdasarkan hasil generasi
ldari LLM targetp, untuk mencegah penyimpangan dari distribusi LLM target - Total loss pelatihan terdiri dari consistency loss dan AR loss berbobot
w
Pengaturan dan hasil eksperimen
- Eksperimen mencakup tiga tugas domain khusus dan satu benchmark dialog domain terbuka
- Spider: text-to-SQL
- Human-Eval: penyelesaian kode Python
- GSM8k: matematika
- MT-bench: dialog domain terbuka
- Bergantung pada tugas, model target yang digunakan mencakup fine-tuned coder LLM, Deepseek-coder-7B-instruct, LLaMA-2-7B, dan ABEL-7B-001
- Pelatihan dan evaluasi semuanya dilakukan di server NVIDIA A100 40GB
- Pada domain khusus, CLLM menunjukkan peningkatan kecepatan terbesar dibanding baseline seperti model target asli, Medusa2, dan speculative decoding
- Pada MT-bench, CLLM yang dilatih dari LLaMA2-7B dengan dataset ShareGPT mencapai peningkatan kecepatan yang mirip dengan Medusa2 ketika digabungkan dengan lookahead decoding
- Skor MT-bench juga berada pada tingkat yang dapat dibandingkan
- CLLM tidak memerlukan modifikasi arsitektur asli model target
- Karena tidak ada komponen tambahan, efisiensi memorinya tinggi
Biaya pelatihan
- Biaya fine-tuning CLLM disajikan pada tingkat menengah
- LLaMA-7B mencapai peningkatan kecepatan 3,4x pada dataset Spider hanya dengan memproses sekitar 1 juta token
- Untuk dataset besar seperti CodeSearchNet-Python, hanya 10% dataset digunakan untuk pembuatan trajektori Jacobi dan menghasilkan peningkatan kecepatan sekitar 2,5x
- Jumlah token total diestimasi dengan rumus berikut
- Jumlah trajektori rata-rata per prompt × panjang trajektori rata-rata × jumlah prompt
- Estimasi biaya pelatihan per dataset adalah sebagai berikut
- Spider: 2 juta token,
< 0,01%dari biaya pralatih - CodeSearchNet-Python: 100 juta token,
~0,1%dari biaya pralatih - GSM8K: 10 juta token,
~0,01%dari biaya pralatih - ShareGPT: 200 juta token,
~0,2%dari biaya pralatih
- Spider: 2 juta token,
Fast forwarding dan token stasioner
- LLM target umumnya hanya menghasilkan satu token yang benar dalam satu iterasi Jacobi
- Pada CLLM, muncul fenomena fast forwarding, yaitu beberapa token berurutan diprediksi dengan benar dalam satu iterasi Jacobi
- Pada LLM target, token yang sebelumnya sudah dihasilkan dengan benar kadang berubah menjadi token yang salah pada iterasi berikutnya
- CLLM menunjukkan kemampuan memprediksi token yang benar lebih awal meski token sebelumnya salah, dan mempertahankan token tersebut pada iterasi berikutnya
- Token seperti ini disebut token stasioner (stationary tokens)
- Fast forwarding dan token stasioner membuat Jacobi decoding pada CLLM konvergen lebih cepat, sehingga berkontribusi pada peningkatan kecepatan generasi
Pembelajaran pola linguistik
- CLLM teramati memperoleh konsep linguistik yang disebut kolokasi (collocations) melalui pelatihan
- Kolokasi berarti rangkaian kata atau istilah yang muncul bersama lebih sering daripada kebetulan acak
- Contoh kolokasi ada baik dalam bahasa alami maupun kode
- Bahasa alami:
talk to,remind … of … - Struktur verba+nomina:
make a decision,catch a cold - Struktur tata bahasa per domain:
SELECT … FROM …,if … else
- Bahasa alami:
- Tujuan consistency generation mendorong CLLM untuk menyimpulkan struktur seperti ini dari titik mana pun pada trajektori Jacobi, sehingga memprediksi beberapa kata secara bersamaan untuk mengurangi langkah iterasi
Materi dan kode
- Detailnya dapat dilihat di makalah
- Implementasinya tersedia sebagai codebase
- CLLM checkpoints juga telah dirilis
1 komentar
Pendapat di Hacker News
Ini mirip dengan pengalaman saya saat mengikuti kelas “menggambar bebas” (tanpa kuliah)
Sejak kecil saya sering dibilang pandai menggambar, tetapi sebenarnya yang saya ingat adalah saya mengulang gambar-gambar detail serupa yang pernah saya buat, atau menghabiskan banyak waktu untuk menggambarnya. Menurut saya, dengan waktu dan kesabaran, siapa pun bisa menggambar sebuah adegan dengan cukup meyakinkan
Di kelas itu tidak ada aturan atau kuliah, dan masing-masing membawa bahan yang diinginkan. Ada yang membawa tinta, ada yang membawa pensil, saya membawa arang, dan satu-satunya yang ditentukan hanyalah waktu antar-pose model. Beberapa pose pertama sangat singkat, sekitar 1 menit, lalu makin lama hingga pose 5 menit, dan kapan saja kami boleh merobek gambar lalu menggambar ulang pose yang sama
Pemanasan singkat itu ternyata memaksa kami mendapatkan proporsi dan kontur dengan benar pada percobaan pertama, dan bertentangan dengan anggapan umum bahwa terburu-buru akan merusak hasil, saat mempelajari atau mengasah keterampilan, rasa tergesa-gesa tampaknya bekerja sebagai faktor stres yang mendorong perhatian dan pembelajaran
Sebelum kelas itu pun saya mungkin bisa menggambar dengan kualitas serupa, tetapi saya yakin akan butuh waktu 5–10 kali lebih lama. Cara yang memaksa kami tidak berputar-putar dan membuat kami merasakan harga dari kesalahan yang tergesa-gesa itu efektif
Namun saya agak menyayangkan teknik ini disebut Consistency. Nama itu cocok untuk peningkatan performa, tetapi rasanya kurang pas untuk peningkatan kecepatan inferensi, dan saya paham maksudnya sebagai “konsistensi dengan hasil yang pada akhirnya akan keluar jika dibuat satu token demi satu token”. Saya lebih ingin menyebutnya Proficiency LLM, yaitu mengharapkan keluaran yang sama, tetapi tanpa hambatan yang membuatnya meraba-raba untuk sampai pada kesimpulan yang sama
Dalam menggambar, kita bisa menetapkan waktu yang diizinkan untuk setiap percobaan dan membuatnya makin singkat. Dalam CLLM, sepertinya kita bisa membuat proses pelatihan lebih sulit dengan memetakan keadaan yang makin jauh di lintasan Jacobi ke keadaan akhir
Istilah “consistency” diambil dari kemiripan antara consistency model dalam generasi gambar berbasis difusi dan consistency LLM, karena proses pelatihannya memang mirip
Para mahasiswa masuk ke laboratorium, menerima spesimen, dan instruksinya hanya “gambar ini dalam 30 menit. Mulai”
Tidak ada ucapan seperti “beginilah cara menggambar” atau “lakukan ini, jangan lakukan itu”; pada dasarnya rasanya seperti “tidak peduli kamu cemas atau merasa tidak bisa menggambar. Jangan beralasan, gambar saja. Sekarang”
Kami semua menggambar, dan sepanjang musim panas, makin banyak hewan datang dan latihan yang sama diulang, sehingga kemampuan kami semua meningkat luar biasa
Yang diajarkan kelas itu adalah bahwa siapa pun, benar-benar siapa pun, bisa menggambar. Sikap kolektif berubah dari “entah apakah ini mungkin” menjadi “tentu saja bisa. Mudah, biasa, dan bukan hal besar”
Ini pendekatan yang sangat layak direkomendasikan, dan merupakan salah satu kelas paling membebaskan dan mengejutkan yang pernah saya ambil di universitas
Para penulis mengatakan Jacobi decoding sama dengan greedy autoregressive decoding, tetapi dalam praktiknya bukankah kita sering ingin membuat temperatur sampling lebih besar dari 0 untuk menghindari pengulangan dan jawaban yang terlalu umum?
Saya sama sekali tidak mengenal strategi decoding ini, jadi mungkin saja saya melewatkan cara sederhana untuk mencerminkan hal itu
Dalam konteks pelatihan CLLM, alih-alih memetakan titik tetap statis yang diperoleh dengan Jacobi decoding sebagai target pelatihan, kami menyebutnya titik tetap dinamis. Pantau repositori GitHub untuk perkembangan terbaru
Tahap fine-tuning yang melatih lintasan agar mendekati penyelesaian n-token dengan statistik yang diinginkan mungkin masih memungkinkan, tetapi saya tidak terlalu tahu bagaimana mengganti tahap pemeriksaan titik tetap. Mungkin caranya seperti “memeriksa apakah berada di atas ambang tetap ini untuk likelihood”
Ini terasa seperti optimisasi yang cukup berisiko untuk dilakukan sebelum benar-benar memahami apa yang terjadi di dalam LLM. Misalnya, pihak yang percaya pada interpretasi geometris mungkin punya sesuatu untuk dikatakan, dan jika memakai token “pengisi”, ini juga bisa tampak merugikan
Selain itu, asumsi bahwa “kita membuat kalimat lengkap di dalam pikiran lalu mengucapkannya kata demi kata” hanyalah asumsi, bukan fakta universal, dan tampaknya terlalu menyederhanakan aktivitas yang terjadi dalam pikiran kita. Apakah kita benar-benar punya rencana lengkap sebelum berbicara atau mengetik? Sebagai penganut Buddha, saya melihat itu lebih dekat ke ilusi. Lebih jauh lagi, bagaimana dengan pikiran yang simultan? Apakah kita berpikir secara linear pada tingkat kalimat?
Bagaimanapun, matematikanya cukup keren
Jangan perlakukan LLM sebagai sesuatu yang magis dan mirip dengan pikiran kita. Ini hanyalah program lain yang menghasilkan kalimat yang masuk akal
Jika diminta menjelaskan peristiwa masa lalu yang kompleks dari beberapa sisi, orang-orang dengan cepat menyisipkan potongan, tambahan, dan cabang samping di tengah kalimat untuk mencakup keseluruhan peristiwa. Saya rasa saya belum pernah melihat hipotesis granularitas tingkat kalimat dalam konteks ilmiah yang serius
Kadang-kadang di tengah kalimat saya terjebak dalam jalan buntu gramatikal dan harus menutup pikiran dengan kata atau frasa yang canggung, atau berhenti saja lalu mengucapkannya ulang dari awal
Tidak tampak ada alasan jelas mengapa fenomena ini tiba-tiba runtuh pada tingkat kalimat
Mengejutkan bahwa ini tidak mendapat perhatian lebih besar. Ini terlihat memberi manfaat yang jelas untuk performa inferensi
Biaya fine-tuning ini masuk akal, sekitar 0,01% dari biaya pretraining awal. Peningkatan performanya juga terlihat cukup konsisten
Saya tidak begitu tahu makalah lain yang mengusulkan peningkatan performa inferensi LLM sebesar ini. Pernah ada sebelumnya?
Apalagi dengan syarat setidaknya kualitas output tetap terjaga, bukan hanya latensi kueri tetapi juga throughput keseluruhan meningkat, tidak membutuhkan komputasi tambahan, implementasinya relatif praktis, dan tidak menambahkan kompleksitas besar
Karena ini dibangun di atas pekerjaan yang sudah dilakukan pada decoding paralel/Jacobi, insight-nya sendiri mungkin bisa dianggap inkremental. Hasil-hasil sebelumnya juga diperlukan dan penting, tetapi hasil ini mungkin yang berhasil mengekstrak nilai dunia nyata dari kemungkinan decoding paralel
Jadi pekerjaan ini benar-benar menarik, dan setahu saya sebelumnya juga pernah dicoba dengan keberhasilan yang lebih rendah, tetapi seberapa besar dampak nyatanya masih belum jelas
Jika dilatih dengan lebih banyak data, kecepatannya meningkat lagi. Itu karena model dapat belajar dari kolokasi dan frasa yang lebih sering muncul
Untuk detailnya, lihat makalahnya; di sana juga bisa dilihat bahwa peningkatan kecepatan mulai jenuh ketika ukuran data pelatihan makin besar
Awalnya saya mengira ini makalah sejenis Medusa yang memakai unembed head tambahan untuk menebak token berikutnya, tetapi ternyata sama sekali bukan
Benar-benar hebat. Tidak memakai parameter tambahan, hanya menambahkan loss pelatihan bantu
Teknik pelatihan dan teknik decoding-nya benar-benar berbeda, dan seperti yang disebutkan, CLLM tidak memerlukan parameter tambahan atau pengaturan attention mask untuk verifikasi berbasis pohon
Sepertinya kita akan segera menyadari bahwa model tidak selalu perlu dilatih
Yang dibutuhkan adalah pengindeksan dan sampling yang baik
Pada dasarnya, di level tertentu semua LLM bisa dilihat seperti database dari dataset, dengan antarmuka bahasa alami yang bagus di atasnya
Keduanya hanyalah cara berbeda untuk menjelajahi data yang tersimpan
LLM tidak menjelajahi data yang tersimpan. LLM bukan database dari data pelatihan
https://news.ycombinator.com/item?id=40266791
Apakah ada tempat bagi orang yang tidak terlalu paham seperti saya untuk “bertanya kepada pakar AI”?
Misalnya, saya ingin bertanya mengapa LLM tidak merespons dengan cara deterministik yang sama meskipun menerima prompt yang sama
Saya ingin mempelajari ini, dan mungkin saya harus mengikuti video seperti “membuat LLM dalam 1 jam” di YouTube
Proses pemilihan bisa memiliki beberapa kenop untuk memanipulasi respons. Jika ingin membuatnya deterministik dan Anda punya akses langsung ke perangkat lunaknya, tergantung perangkat lunak yang digunakan, mengatur
top-k = 1atautemperature = 0.0akan membuatnya deterministikBiasanya pengaturan default tidak deterministik, karena jika dibuat sepenuhnya deterministik, kualitas hasilnya cenderung kurang bagus
Model LLM mengeluarkan vektor probabilitas untuk token, dan pengguna LLM memilih token dari daftar yang berpeluang tinggi menggunakan angka acak
Ketika Anda memasukkan prompt, ia menghitung probabilitas kata berikutnya, lalu mengulangi proses itu hingga akhirnya membentuk kalimat. Probabilitas yang dipelajari didasarkan pada data pelatihan
Karena model probabilitas dasar semacam ini, ia tidak 100% deterministik. Selain itu, model seperti ChatGPT sengaja memiliki parameter
temperatureuntuk menambahkan keacakan ke seluruh prosesJika ingin membaca lebih lanjut, jawaban ini didasarkan pada makalah berikut: The Matrix: A Bayesian learning model for LLMs, https://arxiv.org/abs/2402.03175
Namun jika temperature diatur serendah mungkin, kualitas jawaban cenderung menjadi sangat rendah. Sistem tidak bisa keluar dari suatu optimum lokal dan terus mengulang. Jawaban seperti itu bisa saja “deterministik”, tetapi tidak bagus
https://writings.stephenwolfram.com/2023/02/what-is-chatgpt-...
Tidak ada makan siang gratis, jadi menurut saya di sini juga ada semacam kehilangan jalur
Misalnya, sebagian trajektori Jacobi secara definisi mengecualikan jalur dengan temperature yang lebih tinggi. Dari sudut pandang pencarian data, ini mungkin justru positif, tetapi jika ingin memaksimalkan kreativitas, bisa jadi negatif
Saya tidak yakin “tidak ada makan siang gratis” selalu berlaku secara sangat bermakna. Sebagian hal tidak berada di atas Pareto frontier
Saya ingin tahu penjelasan lebih rinci tentang bagian “metode speculative decoding menimbulkan biaya memori tambahan saat inferensi”
Dalam speculative decoding, model yang lebih kecil menghasilkan “cabang” yang cepat tetapi bisa tidak akurat, lalu cabang-cabang ini diverifikasi oleh model besar. Namun speculative decoding hanya membutuhkan memori yang setara dengan satu token, dan token dari cabang lain cukup di-mask selama inferensi. Jika ukuran konteks 1000 dan ada sekitar 30 cabang masing-masing 5 token, overhead memorinya 3%, bisa diabaikan. Jika ukuran konteks jauh lebih kecil dibanding jumlah cabang, saya ragu pengguna LLM generatif dengan jendela konteks hanya 50 token akan peduli pada kecepatan generasi
Selain itu, teknik speculative decoding tidak terbatas pada greedy sampling. Ia harus berperilaku persis sama seperti model asli dan melakukan sampling dengan probabilitas ekspektasi. Sebagian besar literatur tentang speculative decoding sudah melaporkan peningkatan kecepatan 2,6~3,5x. Artikel blog ini melaporkan kecepatan generasi 2,4~3,4x, jadi saya tidak yakin apakah ini upgrade yang begitu besar
Di atas saya menyebut speculative decoding, dan teknik yang dibandingkan penulis tampaknya Medusa2 dan Eagle, tetapi masalah intinya tetap sama. Apa pun metode yang dipakai untuk memprediksi token lebih dulu, ada titik tertentu ketika token sebelumnya mutlak diperlukan sebelum memprediksi token berikutnya. Ini bukan masalah model atau teknik, melainkan soal apa yang mungkin secara matematis. Jika distribusi probabilitas token kelima berikutnya sangat bergantung pada empat token sebelumnya, bagaimana mungkin memprediksi 5 token sekaligus? Sama saja, baik speculative decoding, Jacobi decoding, maupun multi-token parallel decoding
Jika metode ini hanya mendukung greedy sampling, saya mempertanyakan apa keunggulannya. Terlebih jika mempertimbangkan bahwa teknik-teknik lain sudah mencapai peningkatan kecepatan yang diharapkan. Membandingkan peningkatan kecepatan greedy sampling dengan peningkatan kecepatan random sampling itu seperti membandingkan apel dan jeruk, dan saya ragu peningkatan kecepatan yang sama akan tetap ada setelah metode ini diubah agar sesuai untuk random sampling, karena masalah inti yang disebutkan di atas
Melalui consistency training, mereka mungkin menunjukkan bahwa LLM dapat memprediksi n token berikutnya meskipun ada tebakan yang salah pada token sebelumnya
Di sisi lain, secara matematis memang benar bahwa p(x_t|x_1,...,x_t-1) bergantung pada semuanya dari x_1 sampai x_t-1, tetapi dalam praktiknya prediksi x_t mungkin hanya membutuhkan x_1 sampai x_t-2, sementara attention terhadap x_t-1 bisa saja kecil. Karena itu x_t dapat diprediksi dengan x_1 sampai x_t-2 dan x_t-1 yang tidak akurat
Ini menarik. Idenya mungkin sudah terpikir oleh banyak orang, tetapi tulisan dan presentasinya tersusun dengan baik