berita

Apple membiarkan model besar belajar menjadi malas: Apple mengeluarkan token pertama lebih cepat dan menjaga akurasi

2024-08-02

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina



Laporan Jantung Mesin

Departemen Editorial Jantung Mesin

Menjadi malas membuat Anda bekerja lebih baik.

Llama 3.1 baru rilis, sudah coba belum? Meskipun PC Anda memiliki spesifikasi teratas terbaru, Anda mungkin masih mengalami kelambatan yang signifikan saat menjalankan versi 8B terkecil sekalipun. Untuk meningkatkan efisiensi penalaran model, peneliti telah menemukan berbagai metode, namun banyak di antaranya yang menyebabkan model mengorbankan keakuratannya.

Baru-baru ini, tim peneliti dari Apple dan Meta AI mengusulkan metode baru yang dapat meningkatkan kecepatan inferensi tahap pra-pengisian Llama 2 hingga lebih dari 2 kali lipat sekaligus memastikan bahwa akurasi tidak turun secara signifikan. Kecepatan 3.1 memberikan beberapa inspirasi. Mereka menyebut pendekatan ini LazyLLM, yang merupakan singkatan dari Lazy Large Language Model.



Judul makalah: LazyLLM: Pemangkasan Token Dinamis untuk Inferensi LLM Konteks Panjang yang Efisien

Alamat makalah: https://arxiv.org/abs/2407.14057

Lalu bagaimana caranya agar LLM menjadi malas? Untuk memahami metode mereka, pertama-tama kita perlu mengetahui apa itu proses inferensi LLM berbasis prompt standar. Sederhananya, prosesnya dibagi menjadi dua tahap: pra-pengisian dan decoding, seperti yang ditunjukkan pada Gambar 1.



Pada tahap pra-populasi, model menghitung dan menyimpan cache KV setiap token di prompt dan memprediksi token pertama. Kami menyebut waktu yang dihabiskan dalam fase pra-populasi sebagai "waktu untuk token pertama (TTFT)".

Tahap pra-pengisian dilanjutkan dengan tahap decoding. Pada tahap ini, model kembali menggunakan KV yang di-cache untuk mendekode token berikutnya secara berulang hingga kriteria penghentian terpenuhi.

Selama fase pra-populasi, semua lapisan Transformer menggunakan semua token yang ada di prompt. TTFT bisa menjadi lambat ketika permintaannya panjang karena LLM berbasis Transformer terbaik saat ini mendalam dan luas, dan biaya perhatian komputasi tumbuh secara kuadratik dengan jumlah token dalam permintaan. Misalnya, Llama 2 (versi 7B) menumpuk 32 lapisan Transformers, dan dimensi modelnya adalah 4096. Dalam hal ini, TTFT memerlukan 21 kali waktu tunggu dari setiap langkah decoding berikutnya, yang menyumbang sekitar 23% dari total waktu pembuatan pada benchmark LongBench.

Oleh karena itu, untuk membuat inferensi LLM efisien, mengoptimalkan TTFT merupakan langkah yang sangat penting.

Meskipun optimasi inferensi LLM adalah bidang penelitian aktif, banyak metode berfokus pada peningkatan kecepatan inferensi pada tahap decoding. Para peneliti kurang memperhatikan peningkatan TTFT. Beberapa hasil penelitian berbasis kompresi secara implisit dapat meningkatkan TTFT dengan mengurangi ukuran LLM.

Arah penelitian lainnya adalah meningkatkan TTFT di bawah arsitektur Transformer statis. Untuk arah penelitian ini, pertanyaan yang muncul secara alami: Apakah semua token cepat penting saat membuat token pertama?

Gambar 2 menunjukkan hasil analisis LLM pada benchmark LongBench.



Terlihat bahwa untuk token yang pertama kali dihasilkan, skor perhatian dari token masukan sangat jarang, yang menunjukkan bahwa banyak token pada perintah masukan yang mubazir, dan meskipun dihapus, tidak akan mempengaruhi prediksi berikutnya. token. Pengamatan inilah yang menjadi dasar usulan tim LazyLLM.

Keunggulan LazyLLM antara lain jangkauan aplikasi yang luas, tidak perlu pelatihan, dan hasil yang baik. Gambar 3 membandingkan LLM standar dan LazyLLM.



LLM Malas

Gambar 4 menunjukkan kerangka keseluruhan LazyLLM.



Mulai dari konteks lengkapnya, LazyLLM akan memangkas token secara bertahap, sehingga secara bertahap mengurangi jumlah penghitungan yang digunakan untuk mendapatkan model akhir. Perhatikan bahwa LazyLLM memungkinkan model untuk memilih subkumpulan token yang berbeda pada langkah pembuatan yang berbeda, meskipun beberapa di antaranya mungkin telah dipangkas pada langkah sebelumnya. Dibandingkan dengan pemangkasan statis (semua token dipangkas sekaligus), pemangkasan dinamis mengoptimalkan prediksi token berikutnya pada setiap langkah pembuatan, yang membantu menjaga performa model.

Pemangkasan token progresif

Beberapa penelitian sebelumnya telah berhasil menggunakan pemangkasan token untuk mengoptimalkan inferensi LLM. Namun, metode ini perlu mengumpulkan peta perhatian lengkap dari beberapa token pertama yang diprediksi untuk menganalisis pentingnya token yang cepat sebelum pemangkasan dimulai. Oleh karena itu, mereka tidak cocok untuk mengurangi TTFT karena mereka masih perlu menghitung semua cache KV selama fase pra-pengisian.

Sebagai perbandingan, LazyLLM "sangat malas" dan hanya akan menghitung token yang penting untuk memprediksi token berikutnya mulai dari iterasi inferensi pertama (langkah pra-pengisian).

Pada iterasi pertama, tantangan utamanya adalah menentukan pentingnya setiap token. Terinspirasi oleh penelitian sebelumnya yang menunjukkan bahwa status token tersembunyi berkembang saat melewati lapisan Transformer, solusi tim adalah menggunakan pemangkasan token lapis demi lapis pada setiap langkah generasi. Secara khusus, mereka menggunakan peta perhatian setiap lapisan untuk menentukan pentingnya token masukan terhadap token yang akan diprediksi.

Setelah menghitung skor kepercayaan token, masalah sulit lainnya adalah menentukan ambang batas pemangkasan token.

Khususnya, untuk lapisan berbeda dan tugas berbeda, ambang batas ini dapat berubah seiring perubahan skor perhatian. Solusi tim adalah dengan menggunakan strategi pemilihan persentil top-k. Secara khusus, jika skor kepercayaan suatu token kurang dari persentil ke-k dalam token masukan, maka skor tersebut akan dipangkas. Setelah token dipangkas, token tidak lagi berpartisipasi dalam penghitungan semua lapisan berikutnya.

Artinya, token yang digunakan oleh lapisan berikutnya adalah subset dari token yang digunakan oleh lapisan sebelumnya.

Eksperimen selanjutnya menunjukkan bahwa ketika posisi lapisan pemangkasan dan jumlah token yang dipangkas berbeda, performa juga akan berubah. Khususnya, untuk lapisan Transformer yang sama, karena semakin banyak token yang dihapus melalui pemangkasan, performa model akan menurun secara bertahap.

Mereka juga menemukan bahwa dibandingkan dengan pemangkasan pada lapisan awal, kinerja yang lebih baik dicapai ketika pemangkasan dilakukan pada lapisan selanjutnya, yang menunjukkan bahwa lapisan selanjutnya kurang sensitif terhadap pemangkasan token. Untuk menyeimbangkan kecepatan dan akurasi dengan lebih baik, tim menggunakan pemangkasan progresif seperti yang ditunjukkan pada Gambar 4, mempertahankan lebih banyak token di lapisan awal dan kemudian secara bertahap mengurangi jumlah token saat mengalir ke lapisan selanjutnya.

Aux Cache (cache tambahan)

Tidak ada cache KV pada tahap pra-populasi, dan setiap token direpresentasikan dalam keadaan tersembunyi. Oleh karena itu, pemangkasan token progresif dapat dicapai dengan menghilangkan keadaan tersembunyi dari token yang dipangkas. Namun, memperluas pemangkasan token progresif ke langkah decoding berikutnya tidaklah mudah. Alasannya adalah setiap langkah decoding menggunakan buffer KV yang dihitung pada tahap pra-pengisian untuk menghitung perhatian. Karena LazyLLM melakukan pemangkasan token progresif pada tahap pra-populasi, KV token yang dipangkas pada lapisan tertentu tidak akan muncul di cache KV lapisan berikutnya.

Sebagai pengingat, kerangka kerja LazyLLM memungkinkan setiap langkah generasi untuk memilih subset token yang berbeda dari rangkaian token input lengkap di setiap langkah, terlepas dari apakah token tersebut telah dipangkas pada langkah sebelumnya. Misalnya, pada langkah decoding berikutnya, token yang dipangkas yang tidak ada di cache KV dapat dipilih ulang untuk perhitungan perhatian. Dalam kasus ini, model tidak dapat mengambil cache KV untuk token ini.

Solusi intuitif untuk hal ini adalah dengan meneruskan token melalui asal Transformer. Namun, hal ini mengakibatkan penghitungan ganda pada token yang sama dan pada akhirnya memperlambat kecepatan pembuatan secara keseluruhan.

Untuk mengatasi masalah ini, tim memperkenalkan cache lain selain cache KV asli: Aux Cache (cache tambahan).

Jika KV yang telah dipangkas tokennya (seperti T4 dan T7 pada Gambar 4) tidak muncul di cache KV lapisan berikutnya, status tersembunyinya akan disimpan oleh Aux Cache untuk diambil pada iterasi berikutnya.

Seperti yang ditunjukkan pada Gambar 4, pada setiap langkah decoding, setiap lapisan Transformer terlebih dahulu mengambil cache KV dari token sebelumnya (jika ada). Untuk token yang tidak ada dalam cache KV, status tersembunyinya diambil langsung dari Aux Cache lapisan sebelumnya tanpa harus melalui lapisan sebelumnya lagi. Aux Cache memastikan bahwa setiap token dihitung paling banyak satu kali di setiap lapisan Transformer, dan juga memastikan bahwa LazyLLM lebih cepat daripada LLM standar pada kecepatan paling lambatnya.

percobaan

Tim menguji pendekatan "malas" baru ini pada dua model bahasa besar: Llama 2 7B dan XGen 7B. LLM standar sebagai perbandingan adalah model pos pemeriksaan terlatih yang dirilis secara publik tanpa pelatihan tambahan apa pun.

Tolok ukur eksperimentalnya adalah LongBench, tolok ukur multitugas untuk pemahaman konten jangka panjang. Tolok ukur LongBench berisi 16 kumpulan data dan melibatkan 6 tugas, termasuk Tanya Jawab satu dokumen, Tanya Jawab multi-dokumen, ringkasan, pembelajaran beberapa langkah, tugas sintesis, dan penyelesaian kode.

Metrik evaluasinya adalah efektivitas dan efisiensi masing-masing metode dalam hal akselerasi TTFT versus trade-off akurasi.

hasil

Tabel 1 memberikan hasil kecepatan dan akurasi TTFT untuk LazyLLM, LLM standar, dan metode dasar lainnya.



Dalam tabel ini, baseline mengacu pada inferensi LLM standar. Penurunan token acak mengacu pada melakukan pemangkasan acak pada token. Pemangkasan token statis mengacu pada melakukan pemangkasan satu kali pada token masukan berdasarkan metode perhatian lapisan Transformer sebelumnya selama tahap pra-pengisian. Kompresi Prompt adalah metode kompresi cepat, yang menggunakan LLM untuk menghilangkan redundansi dalam konteks input.

Seperti dapat dilihat dari Tabel 1, LazyLLM secara komprehensif unggul dalam akselerasi TTFT, sedangkan penurunan akurasi pada dasarnya dapat diabaikan. Perlu diperhatikan bahwa menggunakan LLM untuk mengompresi prompt memerlukan banyak perhitungan. Oleh karena itu, meskipun Kompresi Prompt membuat inferensi lebih cepat, TTFT sebenarnya lebih panjang dibandingkan LLM standar.

Dampak pada kecepatan build secara keseluruhan

Untuk mengevaluasi dampak metode baru terhadap kecepatan pembangkitan secara keseluruhan, tim menganalisis persentase token cepat yang digunakan dalam penghitungan dan percepatan pembangkitan, lihat Tabel 2.



Terlihat bahwa proporsi token yang digunakan dalam penghitungan LazyLLM selalu kurang dari 100%, yang menunjukkan bahwa LazyLLM belum menggunakan semua token yang diminta di akhir pembuatan, namun secara teoritis model dapat menggunakan semua token. Hal ini dapat memberikan percepatan tambahan pada keseluruhan proses pembuatan untuk berbagai tugas.

Tingkat penurunan pada lapisan yang berbeda

Tim juga menganalisis dampak lokasi lapisan pemangkasan dan jumlah token yang dipangkas. Hasilnya ditunjukkan pada Gambar 6.



Terlihat bahwa ketika pemangkasan dilakukan pada lapisan Transformer yang sama, semakin sedikit token yang tersisa, semakin buruk performa model. Hal ini juga konsisten dengan pemahaman intuitif kita. Selain itu, dibandingkan dengan melakukan pemangkasan pada lapisan Transformer sebelumnya, pemangkasan pada lapisan selanjutnya akan menghasilkan kinerja yang lebih baik, yang menunjukkan bahwa lapisan selanjutnya kurang sensitif terhadap pemangkasan token.

Berdasarkan pengamatan tersebut, dapat dikatakan bahwa efektivitas pemangkasan token progresif terbukti.

Pertumbuhan KV yang progresif

Terakhir, tim juga mencoba memahami internal model menggunakan logika pemangkasan token. Secara khusus, mereka ingin mengetahui proporsi penggunaan kumulatif token cepat dan proporsi terkait yang tidak terpakai. "Penggunaan token kumulatif" ini dapat didefinisikan secara setara sebagai ukuran cache KV di setiap langkah. Gambar 7 menunjukkan penggunaan kumulatif token cepat ini di setiap tahap LazyLLM.



Hasil ini mendukung hipotesis bahwa banyak token tidak akan pernah dipilih oleh model (walaupun model tersebut secara teoritis dapat menggunakan semua token dalam prompt.

Mengingat model masih dapat menjaga keakuratan pelaksanaan tugas, dapat disimpulkan bahwa model dapat secara efektif membuang token yang tidak mempengaruhi kualitas keluaran.