


Tingkatkan prestasi inferens model besar sebanyak 40x menggunakan toolkit
Intel® Apakah Sambungan untuk Transformer?
Intel® Extension for Transformers[1] ialah kit alat inovatif yang dilancarkan oleh Intel yang boleh berdasarkan Intel® platform seni bina, terutamanya generasi keempat Intel® Xeon® pemproses Sapphi yang boleh diskalakan semula. ], SPR) mempercepatkan dengan ketara Model Bahasa Besar (LLM) berasaskan Transformer. Ciri-ciri utamanya termasuk:
- Memberikan pengalaman pemampatan model yang lancar dengan memanjangkan API transformer Wajah Memeluk[3] dan memanfaatkan Intel® Pemampat Neural[4]
- Menyediakan penggunaan kernel pengkuantitian bit rendah ( NeurIPS 2023: Masa jalan inferens LLM yang melaksanakan inferens LLM yang cekap [5] pada CPU menyokong Falcon, LLaMA, MPT, Llama2, BLOOM, OPT, ChatGLM2, GPT-J-6B, Baichuan-13B-Base, Baichuan2-13B-Base , LLM biasa seperti Qwen-7B, Qwen-14B dan Dolly-v2-3B [6]; MiniLM; NeurIPS 2021: Pangkas sekali, lupakan: jarang/pangkas model bahasa pra-latihan).
- Artikel ini akan menumpukan pada masa jalan inferens LLM
, dan cara menggunakan API berasaskan Transformer untuk melaksanakan LLM yang lebih cekap pada Intel® Xeon® pemproses boleh skala Penaakulan dan cara untuk menangani masalah aplikasi LLM dalam senario sembang. LLM Runtime (LLM Runtime)
LLM Runtime[8] yang disediakan oleh Intel®Extension for Transformers ialah masa jalan inferens LLM yang ringan tetapi cekap, yang diilhamkan oleh GGML[9] dan serasi dengan llama.cpp[ 10] adalah serasi dan mempunyai ciri-ciri berikut:
Inti telah dioptimumkan untuk pelbagai teknologi pecutan AI terbina dalam- Intel® Xeon®
- CPU (seperti AMX, VNNI) dan set arahan AVX512F dan AVX2 Menyediakan lebih banyak pilihan kuantifikasi, seperti: butiran yang berbeza (mengikut saluran atau kumpulan), saiz kumpulan yang berbeza (seperti: 32/128); inferens dalam sistem berbilang saluran. Rajah seni bina ringkas LLM Runtime adalah seperti berikut:
- Kandungan yang perlu ditulis semula ialah: △Rajah 1. Gambar rajah seni bina ringkas LLM Runtime of Intel® Extension for Transformer-Using API, dilaksanakan pada Inferens Cekap LLM CPU
Dengan kurang daripada 9 baris kod, anda boleh mencapai prestasi inferens LLM yang lebih baik pada CPU. Pengguna boleh mendayakan API seperti Transformer dengan mudah untuk pengiraan dan inferens. Hanya tetapkan 'load_in_4bit' kepada benar dan import model daripada URL HuggingFace atau laluan setempat. Contoh kod untuk mendayakan kuantiti INT4 berat sahaja disediakan di bawah:
from transformers import AutoTokenizer, TextStreamerfrom intel_extension_for_transformers.transformers import AutoModelForCausalLMmodel_name = "Intel/neural-chat-7b-v3-1” prompt = "Once upon a time, there existed a little girl,"tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)inputs = tokenizer(prompt, return_tensors="pt").input_idsstreamer = TextStreamer(tokenizer)model = AutoModelForCausalLM.from_pretrained(model_name, load_in_4bit=True)outputs = model.generate(inputs, streamer=streamer, max_new_tokens=300)
Tetapan lalai ialah: simpan pemberat sebagai 4 bit, lakukan pengiraan sebagai 8 bit. Tetapi ia juga menyokong gabungan jenis data pengiraan (dtype) dan jenis data berat yang berbeza, dan pengguna boleh mengubah suai tetapan mengikut keperluan. Contoh kod untuk cara menggunakan ciri ini disediakan di bawah:
from transformers import AutoTokenizer, TextStreamerfrom intel_extension_for_transformers.transformers import AutoModelForCausalLM, WeightOnlyQuantConfigmodel_name = "Intel/neural-chat-7b-v3-1” prompt = "Once upon a time, there existed a little girl,"woq_config = WeightOnlyQuantConfig(compute_dtype="int8", weight_dtype="int4")tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)inputs = tokenizer(prompt, return_tensors="pt").input_idsstreamer = TextStreamer(tokenizer)model = AutoModelForCausalLM.from_pretrained(model_name,quantization_cnotallow=woq_config)outputs = model.generate(inputs, streamer=streamer, max_new_tokens=300)
Intel® GB (16 x 16 GB DDR5 4800 MT/s [4800 MT/s]), BIOS 3A14.TEL2P1, mikrokod 0x2b0001b0, CentOS Stream 8.
Keputusan ujian prestasi inferens ditunjukkan dalam jadual di bawah, di mana saiz input ialah 32, saiz output ialah 32, dan rasuk ialah 1
△Jadual 1. Perbandingan prestasi inferens antara LLM Runtime dan llama.cpp (saiz input=32, Saiz output = 32, rasuk = 1)
Hasil ujian prestasi inferens apabila saiz input ialah 1024, saiz output ialah 32, dan rasuk ialah 1, lihat jadual berikut untuk butiran:
Mengikut Jadual 2 di atas: Berbanding dengan llama.cpp yang juga berjalan pada pemproses Intel® Xeon® Scalable generasi keempat, sama ada token pertama atau token seterusnya, LLM Runtime boleh mengurangkan kelewatan dengan ketara dan kelajuan inferens yang pertama. token dan token seterusnya dinaikkan masing-masing sehingga 40 kali [a] (Baichuan-13B, input ialah 1024) dan 2.68 kali [b] (MPT-7B, input ialah 1024 ). Ujian llama.cpp menggunakan asas kod lalai [10]. Berdasarkan keputusan ujian dalam Jadual 1 dan Jadual 2, dapat disimpulkan bahawa berbanding dengan llama.cpp juga berjalan pada generasi keempat
Intel® Xeon®Pemproses boleh skala, LLM Runtime boleh meningkatkan dengan ketara banyak prestasi biasa keseluruhan LLM: apabila saiz input ialah 1024, peningkatan sebanyak 3.58 hingga 21.5 kali dicapai; apabila saiz input ialah 32, peningkatan sebanyak 1.76 hingga 3.43 kali dicapai[c]. Ujian Ketepatan
Intel®Pelanjutan untuk Transformers boleh memanfaatkan kaedah pengkuantitian seperti SignRound[11], RTN dan GPTQ[12] dalam Intel® Neural Compressor dan menggunakan lambadaferllaswagigrande, set data piqaference dan INT yang disahkan. ketepatan. Jadual di bawah membandingkan purata keputusan ujian dengan ketepatan FP32.
△Jadual 3. Perbandingan ketepatan antara INT4 dan FP32
Seperti yang dapat dilihat daripada Jadual 3 di atas, kehilangan ketepatan inferens INT4 yang dilakukan oleh berbilang model berdasarkan LLM Runtime adalah sangat kecil dan hampir boleh diabaikan. Kami mengesahkan banyak model, tetapi hanya beberapa yang disenaraikan di sini kerana had ruang. Jika anda ingin maklumat lanjut atau butiran, sila lawati pautan ini:
https://medium.com/@NeuralCompressor/llm-performance-of-intel-extension-for-transformers-f7d061556176. Fungsi yang lebih maju: Memenuhi keperluan aplikasi LLM dalam lebih banyak senario
Pada masa yang sama, LLM Runtime[8] juga mempunyai fungsi selari tensor CPU dwi-saluran, yang merupakan salah satu produk terawal dengan fungsi sedemikian. Pada masa hadapan, dwi nod akan disokong lagi.
Walau bagaimanapun, kelebihan LLM Runtime bukan sahaja prestasi dan ketepatannya yang lebih baik, kami juga telah melaburkan banyak usaha untuk meningkatkan fungsinya dalam senario aplikasi sembang dan menyelesaikan aplikasi berikut yang mungkin dihadapi oleh LLM dalam senario sembang Dilema:
Dialog bukan sahaja tentang penaakulan LLM, sejarah dialog juga berguna.
- Panjang keluaran terhad: Pra-latihan model LLM terutamanya berdasarkan panjang jujukan terhad. Oleh itu, ketepatannya berkurangan apabila panjang jujukan melebihi saiz tetingkap perhatian yang digunakan semasa pra-latihan.
- Ketidakcekapan: Semasa peringkat penyahkodan, LLM berasaskan Transformer akan menyimpan status nilai kunci (KV) semua token yang dijana sebelum ini, mengakibatkan penggunaan memori yang berlebihan dan peningkatan kependaman penyahkodan.
- Berkenaan isu pertama, ciri dialog LLM Runtime diselesaikan dengan menggabungkan lebih banyak data sejarah dialog dan menjana lebih banyak output, yang llama.cpp belum lagi dilengkapi dengan baik untuk dikendalikan.
Mengenai soalan kedua dan ketiga, kami menyepadukan penstriman LLM (Steaming LLM) ke dalam
Intel®Extension for Transformers, yang boleh mengoptimumkan penggunaan memori dengan ketara dan mengurangkan kependaman inferens. Streaming LLM
Berbeza daripada algoritma cache KV tradisional, kaedah kami menggabungkan
Attention Sink (4 token awal)untuk meningkatkan kestabilan pengiraan perhatian dan mengekalkan yang terkini dengan bantuan rolling token cache KV, iaitu penting untuk pemodelan bahasa. Reka bentuk ini sangat fleksibel dan boleh disepadukan dengan lancar ke dalam model bahasa autoregresif yang mampu menggunakan pengekodan kedudukan putaran RoPE dan pengekodan kedudukan relatif ALiBi.
Kandungan yang perlu ditulis semula ialah: △ Rajah 2. KV cache Steam LLM menggunakan attention sinking untuk melaksanakan model bahasa penstriman yang cekap (sumber imej: [13])
Selain itu, ia berbeza daripada llama. cpp , pelan pengoptimuman ini turut menambah parameter baharu seperti "n_keep" dan "n_discard" untuk meningkatkan strategi LLM Penstriman. Pengguna boleh menggunakan parameter "n_keep" untuk menentukan bilangan token untuk disimpan dalam cache KV, dan parameter "n_discard" untuk menentukan nombor untuk dibuang antara token yang dijana. Untuk mengimbangi prestasi dan ketepatan yang lebih baik, sistem membuang separuh daripada nombor token terkini dalam cache KV secara lalai
Pada masa yang sama, untuk meningkatkan lagi prestasi, kami juga telah menambahkan LLM Penstriman kepada mod gabungan MHA. Jika model menggunakan pengekodan kedudukan putaran (RoPE) untuk melaksanakan pembenaman kedudukan, maka anda hanya perlu menggunakan "operasi anjakan" pada K-Cache sedia ada untuk mengelak daripada menjalankan operasi pada token yang dijana sebelum ini yang belum dibuang. Kaedah ini bukan sahaja memanfaatkan sepenuhnya saiz konteks penuh apabila menjana teks panjang, tetapi juga tidak menanggung overhed tambahan sehingga konteks cache KV diisi sepenuhnya.
“shift operation”依赖于旋转的交换性和关联性,或复数乘法。例如:如果某个token的K-张量初始放置位置为m并且旋转了m×θi for i ∈ [0,d/2),那么当它需要移动到m-1这个位置时,则可以旋转回到(-1)×θi for i ∈ [0,d/2)。这正是每次舍弃n_discard个token的缓存时发生的事情,而此时剩余的每个token都需要“移动”n_discard个位置。下图以“n_keep=4、n_ctx=16、n_discard=1”为例,展示了这一过程。
△图3.Ring-Buffer KV-Cache和Shift-RoPE工作原理
需要注意的是:融合注意力层无需了解上述过程。如果对K-cache和V-cache进行相同的洗牌,注意力层会输出几乎相同的结果(可能存在因浮点误差导致的微小差异)。
您可以使用下面的代码来启动Streaming LLM:
from transformers import AutoTokenizer, TextStreamer from intel_extension_for_transformers.transformers import AutoModelForCausalLM, WeightOnlyQuantConfig model_name = "Intel/neural-chat-7b-v1-1" # Hugging Face model_id or local model woq_config = WeightOnlyQuantConfig(compute_dtype="int8", weight_dtype="int4") prompt = "Once upon a time, a little girl"tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True) inputs = tokenizer(prompt, return_tensors="pt").input_ids streamer = TextStreamer(tokenizer)model = AutoModelForCausalLM.from_pretrained(model_name, quantization_cnotallow=woq_config, trust_remote_code=True) # Recommend n_keep=4 to do attention sinks (four initial tokens) and n_discard=-1 to drop half rencetly tokens when meet length threshold outputs = model.generate(inputs, streamer=streamer, max_new_tokens=300, ctx_size=100, n_keep=4, n_discard=-1)
结论与展望
本文基于上述实践经验,提供了一个在英特尔® 至强® 可扩展处理器上实现高效的低位(INT4)LLM推理的解决方案,并且在一系列常见LLM上验证了其通用性以及展现了其相对于其他基于CPU的开源解决方案的性能优势。未来,我们还将进一步提升CPU张量库和跨节点并行性能。
欢迎您试用英特尔® Extension for Transformers[1],并在英特尔® 平台上更高效地运行LLM推理!也欢迎您向代码仓库(repository)提交修改请求 (pull request)、问题或疑问。期待您的反馈!
特别致谢
在此致谢为此篇文章做出贡献的英特尔公司人工智能资深经理张瀚文及工程师许震中、余振滔、刘振卫、丁艺、王哲、刘宇澄。
[a]根据表2 Baichuan-13B的首个token测试结果计算而得。
[b]根据表2 MPT-7B的下一个token测试结果计算而得。
[c]当输入大小为1024时,整体性能=首个token性能+1023下一个token性能;当输入大小为32时,整体性能=首个token性能+31下一个token性能。
Atas ialah kandungan terperinci Tingkatkan prestasi inferens model besar sebanyak 40x menggunakan toolkit. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas





DDREASE ialah alat untuk memulihkan data daripada fail atau peranti sekat seperti cakera keras, SSD, cakera RAM, CD, DVD dan peranti storan USB. Ia menyalin data dari satu peranti blok ke peranti lain, meninggalkan blok data yang rosak dan hanya memindahkan blok data yang baik. ddreasue ialah alat pemulihan yang berkuasa yang automatik sepenuhnya kerana ia tidak memerlukan sebarang gangguan semasa operasi pemulihan. Selain itu, terima kasih kepada fail peta ddasue, ia boleh dihentikan dan disambung semula pada bila-bila masa. Ciri-ciri utama lain DDREASE adalah seperti berikut: Ia tidak menimpa data yang dipulihkan tetapi mengisi jurang sekiranya pemulihan berulang. Walau bagaimanapun, ia boleh dipotong jika alat itu diarahkan untuk melakukannya secara eksplisit. Pulihkan data daripada berbilang fail atau blok kepada satu

0. Apakah fungsi artikel ini? Kami mencadangkan DepthFM: model anggaran kedalaman monokular generatif yang serba boleh dan pantas. Sebagai tambahan kepada tugas anggaran kedalaman tradisional, DepthFM juga menunjukkan keupayaan terkini dalam tugas hiliran seperti mengecat kedalaman. DepthFM cekap dan boleh mensintesis peta kedalaman dalam beberapa langkah inferens. Mari kita baca karya ini bersama-sama ~ 1. Tajuk maklumat kertas: DepthFM: FastMonocularDepthEstimationwithFlowMatching Pengarang: MingGui, JohannesS.Fischer, UlrichPrestel, PingchuanMa, Dmytr

Prestasi JAX, yang dipromosikan oleh Google, telah mengatasi Pytorch dan TensorFlow dalam ujian penanda aras baru-baru ini, menduduki tempat pertama dalam 7 penunjuk. Dan ujian tidak dilakukan pada TPU dengan prestasi JAX terbaik. Walaupun dalam kalangan pembangun, Pytorch masih lebih popular daripada Tensorflow. Tetapi pada masa hadapan, mungkin lebih banyak model besar akan dilatih dan dijalankan berdasarkan platform JAX. Model Baru-baru ini, pasukan Keras menanda aras tiga hujung belakang (TensorFlow, JAX, PyTorch) dengan pelaksanaan PyTorch asli dan Keras2 dengan TensorFlow. Pertama, mereka memilih satu set arus perdana

Boston Dynamics Atlas secara rasmi memasuki era robot elektrik! Semalam, Atlas hidraulik hanya "menangis" menarik diri daripada peringkat sejarah Hari ini, Boston Dynamics mengumumkan bahawa Atlas elektrik sedang berfungsi. Nampaknya dalam bidang robot humanoid komersial, Boston Dynamics berazam untuk bersaing dengan Tesla. Selepas video baharu itu dikeluarkan, ia telah pun ditonton oleh lebih sejuta orang dalam masa sepuluh jam sahaja. Orang lama pergi dan peranan baru muncul. Ini adalah keperluan sejarah. Tidak dinafikan bahawa tahun ini adalah tahun letupan robot humanoid. Netizen mengulas: Kemajuan robot telah menjadikan majlis pembukaan tahun ini kelihatan seperti manusia, dan tahap kebebasan adalah jauh lebih besar daripada manusia Tetapi adakah ini benar-benar bukan filem seram? Pada permulaan video, Atlas berbaring dengan tenang di atas tanah, seolah-olah terlentang. Apa yang berikut adalah rahang-jatuh

Menghadapi ketinggalan, sambungan data mudah alih perlahan pada iPhone? Biasanya, kekuatan internet selular pada telefon anda bergantung pada beberapa faktor seperti rantau, jenis rangkaian selular, jenis perayauan, dsb. Terdapat beberapa perkara yang boleh anda lakukan untuk mendapatkan sambungan Internet selular yang lebih pantas dan boleh dipercayai. Betulkan 1 – Paksa Mulakan Semula iPhone Kadangkala, paksa memulakan semula peranti anda hanya menetapkan semula banyak perkara, termasuk sambungan selular. Langkah 1 – Hanya tekan kekunci naikkan kelantangan sekali dan lepaskan. Seterusnya, tekan kekunci Turun Kelantangan dan lepaskannya semula. Langkah 2 - Bahagian seterusnya proses adalah untuk menahan butang di sebelah kanan. Biarkan iPhone selesai dimulakan semula. Dayakan data selular dan semak kelajuan rangkaian. Semak semula Betulkan 2 – Tukar mod data Walaupun 5G menawarkan kelajuan rangkaian yang lebih baik, ia berfungsi lebih baik apabila isyarat lemah

Saya menangis hingga mati. Dunia sedang membina model besar. Data di Internet tidak mencukupi. Model latihan kelihatan seperti "The Hunger Games", dan penyelidik AI di seluruh dunia bimbang tentang cara memberi makan data ini kepada pemakan yang rakus. Masalah ini amat ketara dalam tugas berbilang modal. Pada masa mereka mengalami kerugian, pasukan pemula dari Jabatan Universiti Renmin China menggunakan model baharu mereka sendiri untuk menjadi yang pertama di China untuk menjadikan "suapan data yang dijana model itu sendiri" menjadi kenyataan. Selain itu, ia merupakan pendekatan serampang dua mata dari segi pemahaman dan sisi penjanaan Kedua-dua pihak boleh menjana data baharu berbilang modal yang berkualiti tinggi dan memberikan maklum balas data kepada model itu sendiri. Apakah model? Awaker 1.0, model berbilang modal besar yang baru sahaja muncul di Forum Zhongguancun. Siapa pasukan itu? Enjin Sophon. Diasaskan oleh Gao Yizhao, pelajar kedoktoran di Sekolah Kecerdasan Buatan Hillhouse Universiti Renmin.

Apa? Adakah Zootopia dibawa menjadi realiti oleh AI domestik? Didedahkan bersama-sama dengan video itu ialah model penjanaan video domestik berskala besar baharu yang dipanggil "Keling". Sora menggunakan laluan teknikal yang serupa dan menggabungkan beberapa inovasi teknologi yang dibangunkan sendiri untuk menghasilkan video yang bukan sahaja mempunyai pergerakan yang besar dan munasabah, tetapi juga mensimulasikan ciri-ciri dunia fizikal dan mempunyai keupayaan gabungan konsep dan imaginasi yang kuat. Mengikut data, Keling menyokong penjanaan video ultra panjang sehingga 2 minit pada 30fps, dengan resolusi sehingga 1080p dan menyokong berbilang nisbah aspek. Satu lagi perkara penting ialah Keling bukanlah demo atau demonstrasi hasil video yang dikeluarkan oleh makmal, tetapi aplikasi peringkat produk yang dilancarkan oleh Kuaishou, pemain terkemuka dalam bidang video pendek. Selain itu, tumpuan utama adalah untuk menjadi pragmatik, bukan untuk menulis cek kosong, dan pergi ke dalam talian sebaik sahaja ia dikeluarkan Model besar Ke Ling telah pun dikeluarkan di Kuaiying.

Video terbaru robot Tesla Optimus dikeluarkan, dan ia sudah boleh berfungsi di kilang. Pada kelajuan biasa, ia mengisih bateri (bateri 4680 Tesla) seperti ini: Pegawai itu juga mengeluarkan rupanya pada kelajuan 20x - pada "stesen kerja" kecil, memilih dan memilih dan memilih: Kali ini ia dikeluarkan Salah satu sorotan video itu ialah Optimus menyelesaikan kerja ini di kilang, sepenuhnya secara autonomi, tanpa campur tangan manusia sepanjang proses. Dan dari perspektif Optimus, ia juga boleh mengambil dan meletakkan bateri yang bengkok, memfokuskan pada pembetulan ralat automatik: Berkenaan tangan Optimus, saintis NVIDIA Jim Fan memberikan penilaian yang tinggi: Tangan Optimus adalah robot lima jari di dunia paling cerdik. Tangannya bukan sahaja boleh disentuh
