Model Bahasa Besar (LLM) digunakan secara meluas dalam tugas kompleks yang memerlukan berbilang panggilan generasi berantai, teknik pembayang lanjutan, aliran kawalan dan interaksi dengan persekitaran luaran. Walaupun begitu, sistem semasa yang cekap untuk pengaturcaraan dan pelaksanaan aplikasi ini mempunyai kelemahan yang ketara.
Para penyelidik baru-baru ini mencadangkan Bahasa Generasi Berstruktur baharu yang dipanggil SGLang, yang bertujuan untuk meningkatkan interaktiviti dengan LLM. Dengan menyepadukan reka bentuk sistem masa jalan bahagian belakang dan bahasa bahagian hadapan, SGLang menjadikan LLM lebih berprestasi dan lebih mudah dikawal. Penyelidikan ini juga dikemukakan oleh Chen Tianqi, seorang sarjana terkenal dalam bidang pembelajaran mesin dan penolong profesor CMU.
Secara amnya, sumbangan SGLang terutamanya termasuk:
Di bahagian belakang, pasukan penyelidik mencadangkan RadixAttention, teknologi penggunaan semula cache KV (KV cache) merentas berbilang panggilan generasi LLM, automatik dan cekap.
Dalam pembangunan bahagian hadapan, pasukan membangunkan bahasa khusus domain yang fleksibel yang boleh dibenamkan dalam Python untuk mengawal proses penjanaan. Bahasa ini boleh dilaksanakan dalam mod penterjemah atau mod pengkompil.
Komponen bahagian belakang dan bahagian hadapan bekerjasama untuk meningkatkan kecekapan pelaksanaan dan pengaturcaraan program LLM yang kompleks.
Kajian ini menggunakan SGLang untuk melaksanakan beban kerja LLM biasa, termasuk ejen, inferens, pengekstrakan, dialog dan tugas pembelajaran beberapa pukulan, dan menggunakan model Llama-7B dan Mixtral-8x7B pada GPU NVIDIA A10G. Seperti yang ditunjukkan dalam Rajah 1 dan Rajah 2 di bawah, daya pengeluaran SGLang meningkat sebanyak 5 kali ganda berbanding sistem sedia ada (iaitu, Bimbingan dan vLLM).
Figure 1: melalui sistem yang berbeza pada tugas LLM (A10G, Llama-7B pada FP16, Tensor Parallelism = 1)
Figure 2: Sistem yang berbeza melalui tugas LLM ( Mixtral-8x7B pada A10G, FP16, selari tensor = 8)
Bahagian Belakang: Penggunaan semula cache KV automatik menggunakan RadixAttention
Semasa pembangunan SGLang runtime , kajian ini menemui kunci kompleks LVLM untuk mengoptimumkan cache. , yang tidak dikendalikan dengan baik oleh sistem semasa. Penggunaan semula cache KV bermakna gesaan berbeza dengan awalan yang sama boleh berkongsi cache KV perantaraan, mengelakkan memori dan pengiraan berlebihan. Dalam program kompleks yang melibatkan berbilang panggilan LLM, pelbagai mod penggunaan semula cache KV mungkin wujud. Rajah 3 di bawah menggambarkan empat corak sedemikian yang biasa ditemui dalam beban kerja LLM. Walaupun sesetengah sistem dapat mengendalikan penggunaan semula cache KV dalam senario tertentu, konfigurasi manual dan pelarasan ad hoc selalunya diperlukan. Tambahan pula, disebabkan kepelbagaian corak penggunaan semula yang mungkin, sistem sedia ada tidak boleh menyesuaikan diri secara automatik kepada semua senario walaupun melalui konfigurasi manual.
Rajah 3: Contoh perkongsian cache KV. Kotak biru ialah bahagian segera boleh kongsi, kotak hijau ialah bahagian tidak boleh kongsi, dan kotak kuning ialah keluaran model tidak boleh kongsi. Bahagian yang boleh dikongsi termasuk contoh pembelajaran kecil, soalan ketekalan diri, sejarah perbualan merentas berbilang pusingan dialog dan sejarah carian dalam pokok pemikiran.
Untuk mengeksploitasi peluang penggunaan semula ini secara sistematik, penyelidikan ini mencadangkan kaedah baharu untuk penggunaan semula cache KV automatik semasa masa jalan - RadixAttention. Daripada membuang cache KV selepas melengkapkan permintaan binaan, kaedah ini mengekalkan cache gesaan dan KV hasil binaan dalam pokok radix. Struktur data ini membolehkan carian awalan, sisipan dan pengusiran yang cekap. Kajian ini melaksanakan dasar pengusiran yang paling kurang digunakan baru-baru ini (LRU), ditambah dengan dasar penjadualan sedar cache untuk meningkatkan kadar hit cache.
Pokok radix boleh digunakan sebagai alternatif penjimatan ruang untuk mencuba (pokok awalan). Tidak seperti pokok biasa, tepi pokok radix boleh ditanda bukan sahaja dengan satu elemen, tetapi juga dengan jujukan unsur dengan panjang yang berbeza, yang meningkatkan kecekapan pokok radix.
Penyelidikan ini menggunakan pepohon radix untuk mengurus pemetaan antara jujukan token yang bertindak sebagai kunci dan tensor cache KV yang sepadan bertindak sebagai nilai. Tensor cache KV ini disimpan pada GPU dalam susun atur halaman, di mana setiap halaman adalah saiz token.
Memandangkan kapasiti memori GPU adalah terhad dan tensor cache KV tanpa had tidak boleh dilatih semula, strategi pengusiran diperlukan. Kajian ini menggunakan strategi pengusiran LRU untuk mengusir nod daun secara rekursif. Selain itu, RadixAttention serasi dengan teknologi sedia ada seperti pengumpulan berterusan dan perhatian halaman. Untuk model berbilang modal, RadixAttention boleh diperluaskan dengan mudah untuk mengendalikan token imej.
Rajah di bawah menggambarkan cara pokok radix dikekalkan apabila mengendalikan berbilang permintaan masuk. Bahagian hadapan sentiasa menghantar gesaan lengkap kepada masa jalan dan masa jalan secara automatik melakukan pemadanan awalan, guna semula dan caching. Struktur pokok disimpan pada CPU dan mempunyai overhed penyelenggaraan yang rendah.
Rajah 4. Contoh operasi RadixAttention menggunakan dasar pengusiran LRU, dijelaskan dalam sembilan langkah.
Rajah 4 menunjukkan evolusi dinamik pokok radix sebagai tindak balas kepada pelbagai permintaan. Permintaan ini termasuk dua sesi sembang, sekumpulan pertanyaan pembelajaran beberapa pukulan dan pensampelan konsisten sendiri. Setiap tepi pokok dilabelkan dengan label yang mewakili subrentetan atau jujukan token. Nod dikodkan warna untuk menggambarkan keadaan yang berbeza: hijau menunjukkan nod yang baru ditambah, biru menunjukkan nod cache yang telah diakses pada masa itu dan merah menunjukkan nod yang telah diusir.
Halaman hadapan: Pengaturcaraan LLM dipermudahkan dengan SGLang
Di bahagian hadapan, penyelidikan mencadangkan SGLang, bahasa khusus domain yang tertanam dalam Python yang membenarkan ungkapan teknik segera lanjutan, aliran kawalan, pelbagai moditi , kekangan penyahkodan dan interaksi luaran. Fungsi SGLang boleh dijalankan melalui pelbagai bahagian belakang seperti OpenAI, Anthropic, Gemini dan model asli.
Rajah 5. Menggunakan SGLang untuk melaksanakan pemarkahan artikel pelbagai dimensi.
Rajah 5 menunjukkan contoh khusus. Ia menggunakan teknologi segera penyelesaian-cawangan-gabungan untuk mencapai pemarkahan artikel berbilang dimensi. Fungsi ini menggunakan LLM untuk menilai kualiti artikel sepanjang pelbagai dimensi, menggabungkan pertimbangan, menjana ringkasan dan menetapkan gred akhir. Kawasan yang diserlahkan menggambarkan penggunaan API SGLang. (1) garpu mencipta berbilang salinan selari gesaan. (2) gen memanggil penjanaan LLM dan menyimpan keputusan dalam pembolehubah. Panggilan ini tidak menyekat, jadi ia membenarkan berbilang panggilan binaan dijalankan serentak di latar belakang. (3) [variable_name] mendapatkan semula hasil yang dijana. (4) Pilih untuk mengenakan kekangan kepada generasi. (5) run melaksanakan fungsi SGLang menggunakan parameternya.
Memandangkan program SGLang sebegini, kami boleh melaksanakannya sama ada melalui penterjemah atau mengesannya sebagai graf aliran data dan menjalankannya menggunakan pelaksana graf. Situasi terakhir membuka ruang untuk beberapa pengoptimuman pengkompil yang berpotensi, seperti pergerakan kod, pemilihan arahan dan penalaan automatik.
Sintaks SGLang sangat diilhamkan oleh Bimbingan dan memperkenalkan primitif baharu, juga mengendalikan selari dalam prosedur dan pemprosesan kelompok. Semua ciri baharu ini menyumbang kepada prestasi cemerlang SGLang.
Tanda aras
Pasukan penyelidik menguji sistemnya pada beban kerja LLM biasa dan melaporkan hasil yang dicapai.
Secara khusus, kajian itu menguji Llama-7B pada 1 NVIDIA A10G GPU (24GB), Mixtral-8x7B pada 8 NVIDIA A10G GPU dengan selari tensor menggunakan ketepatan FP16, dan menggunakan vllm v0 .2.5, Bimbingan v0.1.8 Muka dan Memeluk Muka. .3.0 sebagai sistem asas.
Seperti yang ditunjukkan dalam Rajah 1 dan Rajah 2, SGLang mengatasi sistem garis dasar dalam semua penanda aras, dengan peningkatan 5x dalam daya pemprosesan. Ia juga berprestasi baik dari segi kependaman, terutamanya untuk kependaman token pertama, di mana hits cache awalan boleh membawa faedah yang ketara. Penambahbaikan ini dikaitkan dengan penggunaan semula cache KV automatik RadixAttention, keselarian dalam program yang didayakan oleh jurubahasa, dan reka bentuk bersama sistem hadapan dan belakang. Selain itu, kajian ablasi menunjukkan bahawa tiada overhed yang ketara yang menyebabkan RadixAttention sentiasa didayakan pada masa jalanan, walaupun apabila tiada hits cache.
Pautan rujukan: https://lmsys.org/blog/2024-01-17-sglang/
Atas ialah kandungan terperinci Daya pengeluaran meningkat sebanyak 5 kali ganda Antara muka LLM untuk mereka bentuk bersama sistem bahagian belakang dan bahasa bahagian hadapan ada di sini.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!