Adaptasi Model Bahasa dengan Prefix Tuning
Full fine-tuning mengubah bobot model untuk setiap tugas. Cara ini bisa efektif, tetapi menyimpan dan melakukan serving checkpoint penuh yang terpisah untuk setiap tugas menjadi mahal ketika ukuran model dan jumlah tugas bertambah. Prefix tuning menawarkan susunan berbeda: pertahankan model pretrained dalam keadaan beku dan latih sekumpulan kecil state spesifik tugas yang ikut berpartisipasi dalam attention.
Artikel ini membangun model mental praktis untuk prefix tuning, menunjukkan perbedaannya dari text prompt dan adapter bobot low-rank, serta menjelaskan trade-off yang penting ketika melatih atau melakukan serving beberapa varian tugas.
Mulai dari attention, bukan teks prompt
Sebuah layer attention transformer bekerja dengan query, key, dan value. Untuk satu attention head, operasi intinya adalah:
Attention(Q, K, V) = softmax(QK^T / sqrt(d)) VQuery pada suatu posisi token menentukan posisi key mana yang menerima attention. Value yang bersesuaian kemudian berkontribusi pada output.
Prefix tuning menambahkan state key dan value yang dapat dilatih dan dapat diperhatikan oleh model. Gambaran sederhananya:
ordinary keys: K = [k1, k2, ..., kn]
ordinary values: V = [v1, v2, ..., vn]
with a prefix:
K' = [pk1, pk2, ..., pkm, k1, k2, ..., kn]
V' = [pv1, pv2, ..., pvm, v1, v2, ..., vn]Entri pk dan pv adalah state spesifik tugas yang dapat dilatih. Parameter asli model tetap beku.
Dengan demikian, model mendapat target attention tambahan yang dapat memengaruhi pemrosesan di setiap posisi token biasa. Prefix tidak harus berkorespondensi dengan teks yang dapat dibaca atau token vocabulary. Ia berada di ruang representasi internal model.
Perbedaan ini penting: prefix tuning mengadaptasi konteks attention alih-alih menulis ulang bobot base model.
Ikuti satu contoh kecil
Misalkan sebuah model bahasa beku harus menghasilkan ringkasan produk yang singkat. Text prompt dapat berbunyi:
Write a concise product summary:Kata-kata tersebut memakai token input biasa. Representasinya melewati embedding dan transformer stack yang sama seperti teks lainnya.
Dengan prefix tuning, tugas tersebut dapat menggunakan prefix internal yang telah dilatih:
[prefix states for concise summaries] + [product description tokens]Selama training, hanya parameter yang menghasilkan atau menyimpan state prefix yang menerima update. Model beku tetap menghitung attention, transformasi feed-forward, normalization, dan probabilitas output seperti biasa.
Jika training berhasil, query token biasa dapat memperhatikan key dan value prefix yang mengarahkan hidden state menuju perilaku yang berguna untuk tugas peringkasan.
Prefix tidak berisi kalimat literal seperti “be concise.” Ia adalah representasi numerik yang dioptimalkan melalui task loss.
Prefix tuning mengubah konteks attention
Prefix mudah dibayangkan sebagai string tersembunyi yang ditempatkan sebelum input. Gambaran itu hanya berguna sampai batas tertentu.
Text prompt bermula sebagai token ID dan masuk ke model melalui jalur token embedding. Prefix tuning dapat menyuntikkan continuous state langsung ke attention pada beberapa layer transformer. Dalam formulasi yang umum, setiap layer terpilih menerima state key dan value prefix yang spesifik untuk tugas.
Secara konseptual, untuk layer l:
K_l' = concat(PK_l, K_l)
V_l' = concat(PV_l, V_l)di mana PK_l dan PV_l adalah state prefix untuk layer tersebut.
Mekanisme attention sendiri tidak memerlukan aturan baru. Ia tetap memberi skor query terhadap key dan mencampur value. Posisi prefix tambahan hanya memperbesar kumpulan state key-value yang tersedia bagi attention.
Hal ini berguna karena sinyal adaptasi dapat memengaruhi pemrosesan di seluruh network tanpa mengubah weight matrix asli transformer yang dibekukan.
Latih sekumpulan kecil parameter spesifik tugas
Implementasi langsung dapat mengoptimalkan setiap tensor key dan value prefix secara independen. Dalam praktiknya, parameterisasi dapat dimulai dari representasi trainable yang lebih kecil lalu mentransformasikannya menjadi state prefix spesifik layer. Desain tepatnya bergantung pada implementasi.
Training loop memiliki objective tingkat tinggi yang sama seperti metode supervised adaptation lainnya:
input -> frozen model + trainable prefix -> prediction -> task lossBackpropagation menghitung gradient melalui model beku karena efek prefix harus ditelusuri melalui network. Parameter yang dibekukan tidak menerima update dari optimizer.
Ini menciptakan perbedaan penting antara memori parameter trainable dan training compute. Prefix trainable yang kecil dapat sangat mengurangi jumlah parameter yang disimpan dalam optimizer state, tetapi base model tetap berpartisipasi dalam forward dan backward computation. Karena itu, prefix tuning tidak membuat biaya training menjadi proporsional hanya terhadap ukuran prefix.
Untuk model besar, perbedaan ini penting saat memperkirakan kebutuhan hardware.
Panjang prefix mengendalikan kapasitas dan biaya
Jumlah posisi prefix adalah hyperparameter praktis. Prefix yang lebih panjang memberi adaptasi tugas lebih banyak state trainable, tetapi juga menambah kerja attention dan penyimpanan cache.
Jika sebuah layer attention memproses n posisi biasa dan m posisi prefix, query biasa dapat memperhatikan kira-kira n + m posisi key-value. Dampak runtime yang tepat bergantung pada arsitektur model, attention kernel, strategi batching, dan apakah state prefix dapat digunakan kembali.
Karena itu, lebih panjang tidak otomatis lebih baik. Proses tuning yang baik dimulai dengan prefix yang moderat dan menambah kapasitas hanya ketika evaluasi menunjukkan adapter mengalami underfitting.
Prinsip yang sama berlaku untuk layer mana yang menerima state prefix. Menambahkan adaptasi pada lebih banyak layer meningkatkan kapasitas dan penyimpanan spesifik tugas. Membatasinya dapat mengurangi overhead, tetapi juga dapat membatasi adaptasi.
Perhitungkan memori inference
Prefix tuning hemat parameter, tetapi jumlah parameter hanyalah salah satu metrik serving.
Selama autoregressive generation, transformer umumnya menyimpan cache state key dan value agar posisi sebelumnya tidak perlu dihitung ulang untuk setiap token baru. State key-value prefix juga memakai ruang cache ketika ikut dalam attention.
Untuk satu tugas, overhead ini mungkin kecil dibandingkan sequence hasil generation yang panjang. Namun, pada concurrency tinggi, bahkan tambahan kecil per request dapat berarti karena memori cache sering menjadi resource pembatas.
Rencana serving setidaknya perlu mengukur:
- penyimpanan parameter spesifik tugas;
- byte key-value cache prefix per sequence aktif;
- prefill latency;
- decode latency;
- jumlah maksimum sequence concurrent pada target context length.
Metode yang menghemat penyimpanan checkpoint tetap dapat mengurangi concurrency jika runtime state-nya memakai memori accelerator yang langka.
Bandingkan prefix tuning dengan pendekatan yang berdekatan
Beberapa metode adaptasi membekukan sebagian besar atau seluruh parameter base model, tetapi mengubah bagian computation yang berbeda.
Text prompting memasok token biasa. Ia tidak membutuhkan adaptasi berbasis gradient, bekerja melalui interface model publik, dan mudah diubah. Perilakunya dibatasi oleh apa yang dapat disimpulkan model beku dari prompt, dan token prompt memakai context.
Prompt tuning biasanya mengoptimalkan continuous input embedding. Vektor soft prompt ini lebih menyerupai posisi input trainable daripada token yang dapat dibaca. Pengaruhnya kemudian merambat melalui transformer.
Prefix tuning memasok state trainable ke attention, sering kali di beberapa layer. Karena itu, ia dapat memberikan sinyal adaptasi lebih dalam di network tanpa mengubah weight matrix yang dibekukan.
LoRA menambahkan update low-rank trainable ke weight matrix terpilih. Adaptasinya direpresentasikan sebagai perubahan bobot, bukan posisi attention tambahan. Bergantung pada implementasi, update LoRA kadang dapat di-merge ke base weight untuk adapter tetap sehingga operasi khusus adapter hilang saat inference. State prefix tidak dapat di-merge dengan cara yang sama karena ia bertindak sebagai konteks attention tambahan.
Metode-metode ini menyelesaikan masalah penyimpanan yang terkait, tetapi perilaku runtime-nya berbeda. Pemilihan metode harus mempertimbangkan arsitektur serving, bukan hanya jumlah parameter trainable.
Buat batas tugas tetap eksplisit
Prefix tuning sangat menarik ketika satu base model mendukung banyak tugas stabil. Setiap tugas dapat memiliki artefak adapter kecil sementara checkpoint besar tetap digunakan bersama.
Contohnya:
shared frozen model
├── prefix: concise summaries
├── prefix: support-ticket routing
└── prefix: formal rewritingAplikasi memilih prefix yang sesuai sebelum inference.
Susunan ini juga menimbulkan tanggung jawab operasional. Prefix harus diberi versi bersama base model dan konfigurasi persis yang digunakan saat training. Mengganti base checkpoint dapat mengubah hidden representation sedemikian rupa sehingga prefix lama tidak lagi berperilaku seperti yang diharapkan.
Perlakukan pasangan berikut sebagai satu unit kompatibilitas:
(base model version, prefix version)Evaluasi pasangan tersebut sebelum deployment, alih-alih menganggap prefix dapat dipindahkan dengan aman antar-checkpoint.
Kesalahan umum
Hanya menghitung parameter trainable
Adapter kecil tidak berarti training job menjadi kecil secara proporsional. Transformer yang dibekukan tetap melakukan computation yang besar, dan activation yang diperlukan untuk memperoleh gradient prefix dapat memakai banyak memori.
Perkirakan keseluruhan jalur training, bukan mengalikan biaya base model dengan persentase parameter trainable.
Menganggap prefix sebagai instruksi yang dapat dibaca
Prefix terlatih adalah artefak numerik internal. Menafsirkan posisi prefix satu per satu seolah-olah merupakan kata tersembunyi dapat menghasilkan kesimpulan yang menyesatkan.
Sebaliknya, evaluasi perilaku melalui task metric, contoh terkontrol, dan analisis kegagalan.
Mengabaikan overhead cache
Posisi prefix memperpanjang konteks key-value yang digunakan attention. Untuk generation dengan concurrency tinggi, ukur footprint cache yang dihasilkan daripada menganggap adaptasi hemat parameter otomatis hemat memori saat inference.
Menggunakan ulang prefix pada checkpoint yang tidak kompatibel
Prefix dilatih terhadap ruang representasi tertentu. Bahkan model dengan arsitektur serupa dapat berbeda setelah pretraining, continued training, quantization, atau modifikasi lain.
Kompatibilitas harus diuji, bukan disimpulkan dari shape tensor yang sama.
Menggunakan adaptasi ketika prompting sudah cukup
Jika text prompt yang jelas sudah menghasilkan perilaku andal, melatih dan mengoperasikan prefix dapat menambah kompleksitas tanpa manfaat berarti. Mulailah dengan metode paling sederhana yang memenuhi kebutuhan kualitas, latency, dan maintenance.
Kapan prefix tuning cocok digunakan
Prefix tuning layak dipertimbangkan ketika base model harus tetap beku, banyak varian spesifik tugas membutuhkan penyimpanan ringkas, dan serving stack dapat secara eksplisit memasang state attention spesifik tugas.
Metode ini juga berguna ketika adaptasi membutuhkan kapasitas lebih besar daripada plain text prompt, tetapi mengubah atau menduplikasi model penuh tidak diinginkan.
Prefix tuning kurang menarik ketika model hanya dapat diakses melalui text-generation API yang tidak mengekspos state attention internal. Ia juga mungkin kurang cocok ketika memori key-value cache sudah menjadi bottleneck utama serving, atau ketika satu tugas tetap dapat menggunakan bentuk adapter yang lebih mudah di-merge atau di-deploy.
Perbandingan yang tepat bukan sekadar “prefix tuning versus full fine-tuning”. Bandingkan keseluruhan sistem: training memory, training compute, penyimpanan adapter, inference cache, latency, kualitas, jumlah tugas, dan kompleksitas deployment.
Validasi adapter sebagai bagian dari sistem
Evaluasi yang berguna harus mempertahankan base model beku yang sama dan membandingkan pilihan adaptasi pada held-out task set yang sama. Ukur kualitas tugas bersama metrik operasional.
Untuk tugas generation, periksa kasus ketika adapter mengubah konten yang seharusnya tetap sama. Prefix spesifik tugas dapat mengarahkan perilaku cukup kuat hingga menimbulkan efek samping yang tidak diinginkan, sehingga evaluasi perlu mencakup perilaku yang diinginkan sekaligus preservation test.
Untuk deployment multi-task, uji juga pemilihan adapter. Prefix sempurna yang dipasang pada request yang salah tetap merupakan kegagalan sistem.
Penutup
Prefix tuning memisahkan model besar yang digunakan bersama dari konteks attention spesifik tugas yang kecil. Nilai utamanya bersifat arsitektural: banyak perilaku dapat berbagi satu checkpoint beku sementara masing-masing menyimpan artefak trainable yang ringkas.
Model mentalnya sederhana. Token biasa mengajukan query attention; prefix tuning menambahkan key dan value spesifik tugas yang dapat digunakan query tersebut. Dari sini, trade-off praktis mengikuti secara alami: kapasitas prefix yang lebih besar berarti lebih banyak state spesifik tugas, bobot beku mengurangi penyimpanan optimizer tetapi tidak seluruh training compute, dan posisi attention tambahan memakai runtime cache.
Sebelum mengadopsinya, benchmark keseluruhan jalur deployment terhadap text prompting, soft prompt, LoRA, dan full fine-tuning. Adapter paling kecil di disk belum tentu adapter yang paling sederhana atau murah untuk dioperasikan.