Dalam landskap kecerdasan buatan yang berkembang pesat, mengoptimumkan model bahasa yang besar (LLMS) bukan hanya untuk menolak sempadan apa yang mungkin tetapi juga untuk memastikan kecekapan dan keberkesanan kos.
pemampatan prompt telah muncul sebagai teknik penting untuk meningkatkan prestasi model -model ini sambil meminimumkan perbelanjaan pengiraan. Dengan penyelidikan baru muncul hampir setiap minggu, menjaga adalah mencabar, tetapi memahami asas -asasnya adalah penting.
Artikel ini merangkumi asas-asas pemampatan segera, membincangkan apabila ia harus digunakan, kepentingannya dalam mengurangkan kos dalam saluran paip RAG, dan menyediakan contoh menggunakan model GPT-3.5-Turbo-0125 melalui API OpenAI.
Jika anda ingin mengetahui lebih lanjut, lihat kursus ini pada kejuruteraan segera.apakah pemampatan segera?
Token adalah unit asas penggunaan LLMS teks, mewakili perkataan atau subwords bergantung kepada tokenizer model bahasa. Mengurangkan bilangan token secara promptan adalah bermanfaat dan kadang -kadang diperlukan untuk beberapa sebab:
mari kita meneroka senario di mana kita boleh menggunakan mampatan segera.
pemampatan segera mengurangkan isu -isu ini dengan mengurangkan kiraan token sambil mengekalkan keberkesanan prompt.
pemampatan segera adalah penting dalam kes sedemikian untuk mengekalkan konteks penting sambil meminimumkan kos.
Penting untuk diperhatikan bahawa pemampatan segera bukan penyelesaian sejagat dan harus digunakan dengan bijak. Sebagai contoh, pembantu model seperti chatgpt, yang direka untuk konteks perbualan, mungkin tidak mendapat manfaat daripada pemampatan segera yang agresif.
Model -model ini sering tidak mengenakan bayaran setiap token dan mempunyai ringkasan sembang dan ciri memori untuk menguruskan sejarah perbualan dengan berkesan, menjadikan mampatan berlebihan.
Ia juga penting untuk diperhatikan bahawa walaupun bekerja dengan model yang mengenakan token, mampatan yang berlebihan boleh menyebabkan kehilangan nuansa atau butiran penting. Mengatasi keseimbangan yang betul antara mengurangkan saiz dan mengekalkan integriti makna prompt adalah kunci.
Teknik pemampatan segera boleh dikategorikan kepada tiga kaedah utama: penyulingan pengetahuan, pengekodan, dan penapisan. Setiap teknik memanfaatkan kekuatan yang berbeza untuk mengoptimumkan panjang dan kecekapan petikan untuk LLMS.
Walaupun kita akan bercakap tentang setiap teknik ini, anda dapat mencari pendekatan yang lebih komprehensif dalam makalah ini: kaedah yang berkesan untuk model bahasa yang besar: tinjauan. Sepanjang artikel ini, saya akan merujuk kepada kertas ini sebagai "kertas tinjauan."
Penyulingan pengetahuan adalah teknik dalam bidang pembelajaran mesin, yang pertama kali diperkenalkan oleh Hinton et al. (2015), di mana model yang lebih kecil dan lebih mudah (pelajar) dilatih untuk meniru tingkah laku model yang lebih besar dan lebih kompleks (guru).
Teknik ini pada mulanya dibangunkan untuk menangani cabaran pengiraan latihan model ensemble. Dalam konteks kejuruteraan segera, penyulingan pengetahuan boleh digunakan untuk memampatkan prompt bukan model.
Ini dicapai dengan mempelajari bagaimana untuk memampatkan arahan keras dalam LLMS melalui penalaan cepat lembut. Untuk pandangan terperinci, rujuk Bahagian 3.1 dan Lampiran A.1.1 kertas tinjauan.
Kaedah pengekodan mengubah teks input ke dalam vektor, mengurangkan panjang segera tanpa kehilangan maklumat kritikal. Vektor ini menangkap makna penting yang diperlukan, yang membolehkan LLMS memproses input yang lebih pendek dengan cekap.
Menariknya, LLM adalah mahir dalam bahasa lain seperti Base64, yang boleh digunakan dalam pengekodan untuk mengurangkan saiz token prompt. Sebagai contoh, prompt "menterjemahkan teks berikut kepada bahasa Perancis: Helo, apa khabar?" Dikodkan di Base64 adalah "VHJHBNNSRLIHROZSBMB2XSB3DPBMCGDGV4DCB0BYBGCMVUY2G6ICDIZWXSBYWGAG93IGFYZSB5B3UNPW ==". Anda boleh cuba mendorong LLM kegemaran anda untuk mengujinya!
Mengejutkan, beberapa teknik pengekodan juga digunakan untuk jailbreak model, yang melibatkan memanipulasi LLM untuk memintas mekanisme keselamatannya. Untuk maklumat lanjut mengenai kaedah pengekodan, lihat Bahagian 3.2 dan Lampiran A.1.2 Kertas Survei.
Walaupun dua kaedah terdahulu cuba memampatkan keseluruhan, teknik penapisan memberi tumpuan kepada menghapuskan bahagian yang tidak perlu untuk meningkatkan kecekapan LLMS.
Teknik Penapisan Menilai kandungan maklumat bahagian -bahagian yang berlainan dan mengeluarkan maklumat yang berlebihan kerana tidak semua maklumat dalam prompt adalah bermanfaat untuk LLMS. Ini boleh dilakukan di pelbagai peringkat, seperti ayat, frasa, atau token.
Matlamatnya adalah untuk mengekalkan hanya bahagian yang paling relevan dari prompt. Dalam konteks selektif kertas oleh Li et al. (2023), penyelidik menggunakan metrik maklumat diri untuk menapis maklumat yang berlebihan. Dalam kertas llmlingua: Memampatkan arahan untuk kesimpulan dipercepatkan model bahasa yang besar, penyelidik dari Microsoft Refine meminta komponen utama dan menyesuaikan nisbah mampatan secara dinamik untuk setiap bahagian. Untuk bacaan lanjut, rujuk Bahagian 3.3 dan Lampiran A.1.3 kertas tinjauan.
Dalam bahagian ini, saya akan melaksanakan dan menguji algoritma konteks selektif yang popular dan dianggap sebagai canggih. Jika anda hanya mahu menguji algoritma, anda tidak perlu memasang apa -apa -sudah menjadi tuan rumah di platform Huggingface.
Terdapat juga teknik mampatan arus perdana yang lain, seperti Keep It Simple (KIS), SCLR, dan algoritma dari keluarga Llmlingua, tetapi kami tidak akan dapat menutupnya dalam artikel pendek ini.
Dalam aplikasi web konteks terpilih, anda boleh memilih bahasa yang anda ingin memampatkan (Bahasa Inggeris atau Cina yang dipermudahkan). Anda juga boleh menetapkan nisbah mampatan dan pilih sama ada untuk menyaring ayat, token, atau fasa.
Melaksanakan dan menguji konteks selektif dengan Api Openai
Pertama, kita perlu memasang semua modul yang diperlukan. Kita perlu memasang perpustakaan konteks selektif menggunakan PIP:
pip install selective-context
pip install selective-context
Sekarang kita perlu memulakan objek SelectiveContext. Kita boleh memilih sama ada Curie atau GPT-2 untuk model dan EN atau ZH untuk bahasa. Saya akan menggunakan GPT-2 untuk contoh ini.
python -m spacy download en_core_web_sm
Seterusnya, kita boleh menghubungi objek SelectiveContext kami pada rentetan teks yang kita mahu memampatkan. Kita boleh menetapkan parameter pengurangan_ratio dan mengurangkan_level. Mengurangkan_level perlu menjadi salah satu daripada yang berikut: 'dihantar', 'frasa', atau 'token'. Panggilan objek mengembalikan tuple (konteks, dikurangkan_content), di mana konteks adalah prompt dan dikurangkan yang dikurangkan adalah senarai frasa, ayat, atau token yang dikeluarkan.
sc = SelectiveContext(model_type = ‘gpt-2’, lang = ‘en’)
perenggan asal dan ringkasan
context, reduced_content = sc(text, reduce_ratio = 0.5, reduce_level = ‘sent’)
from openai import OpenAI client = OpenAI(api_key = key) completion = client.chat.completions.create( model = “gpt-3.5-turbo-0125”, messages = [ {“role”: “user”, “content”: f”Summarize the following paragraph:\n {text}”} ] )
pengurangan tahap token
[Prompt compression is useful in scenarios such as advanced prompt engineering techniques and retrieval-augmented generation pipelines to reduce token counts and costs while preserving effectiveness and context. However, it is not a universal solution and should be used judiciously, as excessive compression can lead to a loss of important details. It is important to strike a balance between reducing size and maintaining the prompt's meaning.]
[When Should Prompt CompProm compression particularly following Advanced prompt engineering Techniques like chainofthought prompting while highly lengthy prompts reach thousands tokensThis increases processing costs and may exceed token limits of certain modelsProm compression mit these token count while prompt effectivenessRetri-au generationRAG pipelines R combine information retrieval text specialized chat contextual understandingThese pipelines frequently involve providing extensive conversation histories retrieved as prompts leading high token counts increased expensesProm compression essential such essential context while costsApplic prompt compression It prompt universal judFor instance assistant models like ChatGPT designed convers contexts benefit aggressive prompt compressionThese models often do charge per token integrated chat summar memory features conversation history effectively compression redundantIt even working models charge per token excessive compression could nuance importantSt reducing size maintaining prompt’s meaning is]
Pengurangan peringkat kalimat
[Prompt compression is recommended following advanced prompt engineering techniques like chain of thought prompting, especially when dealing with lengthy prompts that reach thousands of tokens. This helps reduce processing costs and ensure that the prompt remains effective for models like RAG pipelines, which involve extensive conversation histories. Prompt compression is essential for maintaining context while keeping costs low, particularly for models like ChatGPT that charge per token and benefit from aggressive compression. However, excessive compression could lead to loss of important nuances, so it is important to strike a balance between reducing size and maintaining the prompt's meaning.]
[When Should We Use Prompt Compression? This increases processing times and costs and may exceed token limits of certain models. These pipelines frequently involve providing extensive conversation histories or retrieved documents as prompts, leading to high token counts and increased expenses. Prompt compression is essential in such cases to maintain essential context while minimizing costs. For instance, assistant models like ChatGPT, designed for conversational contexts, may not benefit from aggressive prompt compression. These models often do not charge per token and have integrated chat summarization and memory features to manage conversation history effectively, making compression redundant. ]
Pengurangan peringkat frasa
[Prompt compression is necessary when processing times, costs, and token limits may be exceeded in pipelines involving extensive conversation histories or retrieved documents as prompts. However, for certain models like ChatGPT, designed for conversational contexts, aggressive prompt compression may not be beneficial as they already have features to manage conversation history effectively without the need for compression.]
[When Should Prompt Compression Prompt compression particularly beneficial Advanced prompt engineering techniques Techniques like chainofthought prompting while highly lengthy prompts reach thousands tokens This increases processing costs and may exceed token limits of certain models Prompt compression these issues token count while the prompt's effectiveness Retrieval-augmented generation (RAG) pipelines RAG pipelines combine information retrieval text generation specialized chatbots contextual understanding These pipelines frequently involve providing extensive conversation histories or retrieved as prompts leading high token counts increased expenses Prompt compression essential such cases to maintain essential context while costs Applicability prompt compression It's For instance assistant models like ChatGPT designed conversational contexts may benefit aggressive prompt compression These models often do charge per token have integrated chat summarization memory features manage conversation history effectively making compression redundant It even working models charge per token excessive compression could nuance important details reducing size maintaining the prompt’s meaning is ]
Menilai pemampatan segera
3
ketepatan |
|
Token-level |
162 |
kehilangan nuansa penting mengenai chatgpt tidak mendapat manfaat daripada mampatan yang agresif, dan membuat kesilapan.
|
Tahap Senten
| 129
tidak membuat sebarang kesilapan, tetapi terlepas beberapa konteks mengenai saluran paip rag. |
|
||
183 |
Begitu juga dengan tahap token, secara tidak betul menyatakan bahawa chatgpt mendapat manfaat daripada pemampatan yang agresif. |
|
Atas ialah kandungan terperinci Mampatan segera: Panduan dengan contoh python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!