Rumah Peranti teknologi AI Dengan kurang daripada 1,000 baris kod, pasukan PyTorch membuat Llama 7B 10 kali lebih pantas

Dengan kurang daripada 1,000 baris kod, pasukan PyTorch membuat Llama 7B 10 kali lebih pantas

Dec 05, 2023 pm 03:14 PM
bermula pytorch

Pasukan PyTorch secara peribadi mengajar anda cara mempercepatkan inferens model besar.

Pada tahun lalu, AI generatif telah berkembang pesat Antaranya, penjanaan teks sentiasa menjadi bidang yang sangat popular seperti llama.cpp, vLLM, MLC-LLM, dsb untuk mencapai hasil yang lebih baik, pengoptimuman berterusan sedang dijalankan.

Sebagai salah satu rangka kerja paling popular dalam komuniti pembelajaran mesin, PyTorch secara semula jadi telah merebut peluang baharu ini dan terus mengoptimumkannya. Untuk membolehkan semua orang memahami dengan lebih baik inovasi ini, pasukan PyTorch telah menyediakan satu siri blog khas untuk memfokuskan pada cara menggunakan PyTorch asli tulen untuk mempercepatkan model AI generatif.

不到1000行代码,PyTorch团队让Llama 7B提速10倍

Alamat kod: https://github.com/pytorch-labs/gpt-fast

Dalam blog pertama, pasukan PyTorch menunjukkan cara menulis semula Segmen Anything menggunakan hanya SAM Torchpure asli ) model, iaitu 8 kali lebih pantas daripada pelaksanaan asal . Dalam blog ini, mereka membawakan sesuatu yang baru kepada kita iaitu cara mempercepatkan inferens LLM.

Mari lihat keputusan dahulu Pasukan menulis semula LLM dan kelajuan inferens adalah 10 kali lebih pantas daripada garis dasar tanpa kehilangan ketepatan, menggunakan kurang daripada 1000 baris kod PyTorch asli!

不到1000行代码,PyTorch团队让Llama 7B提速10倍

Semua penanda aras dijalankan pada A100-80GB, kuasa terhad kepada 330W.

Pengoptimuman ini termasuk:

  • Torch.compile: Penyusun model PyTorch, PyTorch 2.0 menambah satu fungsi pengkompil baris baharu yang dipanggil () torch.compile yang mana can.compile yang sedia ada. model;
  • GPU kuantisasi: mempercepatkan model dengan mengurangkan ketepatan pengiraan
  • Penyahkodan Spekulatif: kaedah pecutan inferens model besar yang menggunakan model "draf" kecil untuk meramalkan "model" yang besar ;
  • Tensor Selari: Mempercepatkan inferens model dengan menjalankan model pada berbilang peranti.

Seterusnya, mari lihat bagaimana setiap langkah dilaksanakan.

6 langkah untuk mempercepatkan inferens model besar

Kajian menunjukkan bahawa sebelum pengoptimuman, prestasi inferens model besar ialah 25.5 tok/s, yang tidak begitu baik:

不到1000行代码,PyTorch团队让Llama 7B提速10倍Selepas beberapa penerokaan, akhirnya saya menemui sebabnya: overhed CPU yang berlebihan. Kemudian terdapat proses pengoptimuman 6 langkah berikut.

不到1000行代码,PyTorch团队让Llama 7B提速10倍

Langkah 1: Kurangkan overhed CPU dengan Torch.compile dan cache KV statik untuk mencapai 107.0 TOK/S

torch.compile membenarkan pengguna untuk menangkap satu kawasan yang lebih besar ke dalam satu rantau yang lebih besar. ="reduce-overhead" (rujuk kod di bawah), fungsi ini sangat berkesan dalam mengurangkan overhead CPU Selain itu, artikel ini juga menyatakan fullgraph=True untuk mengesahkan bahawa tiada "gangguan graf" dalam model ( Iaitu. , bahagian yang torch.compile tidak boleh compile).

不到1000行代码,PyTorch团队让Llama 7B提速10倍Namun, walaupun dengan restu obor.compile, masih terdapat beberapa halangan.


Halangan pertama ialah cache kv. Iaitu, apabila pengguna menjana lebih banyak token, "panjang logik" cache kv akan berkembang. Masalah ini berlaku kerana dua sebab: pertama, adalah sangat mahal untuk mengagihkan semula (dan menyalin) cache kv setiap kali cache berkembang kedua, peruntukan dinamik ini menjadikannya lebih sukar untuk mengurangkan overhed.

Untuk menyelesaikan masalah ini, artikel ini menggunakan cache KV statik, memperuntukkan saiz cache KV secara statik, dan kemudian menutup nilai yang tidak digunakan dalam mekanisme perhatian.

Halangan kedua ialah peringkat praisi. Penjanaan teks dengan Transformer boleh dilihat sebagai proses dua peringkat: 1. Peringkat praisi untuk memproses keseluruhan gesaan 2. Nyahkod token.

Walaupun cache kv ditetapkan menjadi statik, disebabkan kepanjangan pembolehubah gesaan, Peringkat praisi masih memerlukan lebih banyak dinamik. Oleh itu, strategi kompilasi yang berasingan perlu digunakan untuk menyusun kedua-dua peringkat ini.

不到1000行代码,PyTorch团队让Llama 7B提速10倍

Walaupun butiran ini agak rumit, ia tidak sukar untuk dilaksanakan dan peningkatan prestasi adalah besar. Selepas operasi ini, prestasi meningkat lebih daripada 4 kali ganda, daripada 25 tok/s kepada 107 tok/s.

不到1000行代码,PyTorch团队让Llama 7B提速10倍

Langkah 2: Kurangkan kesesakan lebar jalur memori melalui kuantiti berat int8 dan capai 157.4 tok/s

Melalui perkara di atas, kita telah melihat kesan yang dibawa oleh torch.com, cache, static. dll. Pecutan yang besar, tetapi pasukan PyTorch tidak berpuas hati dengan ini, dan mereka menemui sudut lain untuk pengoptimuman.

Mereka percaya bahawa kesesakan terbesar dalam mempercepatkan latihan AI generatif ialah kos memuatkan pemberat daripada memori global GPU ke dalam daftar. Dalam erti kata lain, setiap hantaran hadapan perlu "menyentuh" ​​setiap parameter pada GPU. Jadi, seberapa pantas kita secara teori boleh "mengakses" setiap parameter dalam model?

不到1000行代码,PyTorch团队让Llama 7B提速10倍

Untuk mengukur ini, artikel ini menggunakan Model Bandwidth Utilization (MBU), mengiranya adalah sangat mudah seperti berikut:

不到1000行代码,PyTorch团队让Llama 7B提速10倍

Sebagai contoh, untuk model parameter 7B, setiap parameter disimpan dalam In fp16 (2 bait setiap parameter), 107 token/s boleh dicapai. A100-80GB mempunyai lebar jalur memori teori 2 TB/s.

Seperti yang ditunjukkan dalam rajah di bawah, dengan meletakkan formula di atas ke dalam nilai tertentu, anda boleh mendapat MBU sebanyak 72%! Keputusan ini agak baik, kerana banyak kajian mengalami kesukaran menembusi 85%.

不到1000行代码,PyTorch团队让Llama 7B提速10倍

Tetapi pasukan PyTorch juga ingin meningkatkan nilai ini. Mereka mendapati bahawa mereka tidak boleh menukar bilangan parameter dalam model, mahupun lebar jalur memori GPU. Tetapi mereka mendapati bahawa mereka boleh menukar bilangan bait yang disimpan untuk setiap parameter!

不到1000行代码,PyTorch团队让Llama 7B提速10倍

Jadi, mereka akan menggunakan kuantiti int8.

不到1000行代码,PyTorch团队让Llama 7B提速10倍

Sila ambil perhatian bahawa ini hanyalah pemberat terkuantisasi, pengiraan itu sendiri masih dilakukan dalam bf16. Tambahan pula, dengan torch.compile, adalah mudah untuk menjana kod yang cekap untuk pengkuantitian int8.

不到1000行代码,PyTorch团队让Llama 7B提速10倍

不到1000行代码,PyTorch团队让Llama 7B提速10倍

Seperti yang ditunjukkan dalam rajah di atas, ia boleh dilihat dari garis biru tua (torch.compile + int8) bahawa apabila menggunakan kuantiti berat torch.compile + int8 sahaja, prestasinya meningkat dengan ketara.

Menggunakan pengkuantitian int8 pada model Llama-7B meningkatkan prestasi kira-kira 50% kepada 157.4 token/s. . dimuatkan Kadar kedua.

不到1000行代码,PyTorch团队让Llama 7B提速10倍

Walaupun beratnya dikuantisasi, memuatkan berat berulang kali tidak dapat dielakkan. Bagaimana untuk menyelesaikan masalah ini? Ternyata dengan memanfaatkan penyahkodan spekulatif boleh memecahkan pergantungan bersiri yang ketat ini dan meningkatkan kelajuan.
Kajian ini menggunakan model draf untuk menjana 8 token, dan kemudian menggunakan model pengesah untuk memprosesnya secara selari, membuang token yang tidak sepadan. Proses ini memecahkan kebergantungan bersiri. Keseluruhan pelaksanaan mengambil kira-kira 50 baris kod PyTorch asli. . untuk berkurangan.

不到1000行代码,PyTorch团队让Llama 7B提速10倍

Untuk menyelesaikan masalah ini, artikel ini menggunakan dua teknik untuk menyelesaikannya: yang pertama ialah mempunyai faktor penskalaan yang lebih halus; yang lain ialah menggunakan strategi pengkuantitian yang lebih maju. Menggabungkan operasi ini bersama-sama, kami mendapat yang berikut:

Langkah 5: Menggabungkan segala-galanya bersama-sama, kami mendapat 244.7 tok/s

不到1000行代码,PyTorch团队让Llama 7B提速10倍

Akhir sekali, menggabungkan semua teknik 2 bersama-sama.4.2. /s.

不到1000行代码,PyTorch团队让Llama 7B提速10倍

Langkah Enam: Tensor Parallelism

Setakat ini artikel ini adalah mengenai meminimumkan kependaman pada satu GPU. Malah, ia juga mungkin untuk menggunakan berbilang GPU, supaya kependaman akan dipertingkatkan lagi.

不到1000行代码,PyTorch团队让Llama 7B提速10倍

Syukurlah, pasukan PyTorch menyediakan alatan tahap rendah untuk selari tensor yang hanya memerlukan 150 baris kod dan tidak memerlukan sebarang perubahan model.

Semua pengoptimuman yang dinyatakan sebelum ini boleh terus digabungkan dengan keselarian tensor, yang bersama-sama menyediakan kuantisasi int8 untuk model Llama-70B pada 55 token/s.

Akhir sekali, rumuskan secara ringkas isi utama artikel. Pada Llama-7B, artikel ini menggunakan gabungan "kompilasi + kuantiti int4 + penyahkodan spekulatif" untuk mencapai 240+ tok/s. Pada Llama-70B, kertas kerja ini juga memperkenalkan keselarian tensor untuk mencapai kira-kira 80 tok/s, yang hampir dengan atau melebihi prestasi SOTA.

不到1000行代码,PyTorch团队让Llama 7B提速10倍

Pautan asal: https://pytorch.org/blog/accelerating-generative-ai-2/

不到1000行代码,PyTorch团队让Llama 7B提速10倍

Atas ialah kandungan terperinci Dengan kurang daripada 1,000 baris kod, pasukan PyTorch membuat Llama 7B 10 kali lebih pantas. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Tutorial Model Penyebaran Bernilai Masa Anda, dari Universiti Purdue Tutorial Model Penyebaran Bernilai Masa Anda, dari Universiti Purdue Apr 07, 2024 am 09:01 AM

Penyebaran bukan sahaja boleh meniru lebih baik, tetapi juga "mencipta". Model resapan (DiffusionModel) ialah model penjanaan imej. Berbanding dengan algoritma yang terkenal seperti GAN dan VAE dalam bidang AI, model resapan mengambil pendekatan yang berbeza. Idea utamanya ialah proses menambah hingar pada imej dan kemudian secara beransur-ansur menolaknya. Cara mengecilkan dan memulihkan imej asal adalah bahagian teras algoritma. Algoritma akhir mampu menghasilkan imej daripada imej bising rawak. Dalam beberapa tahun kebelakangan ini, pertumbuhan luar biasa AI generatif telah membolehkan banyak aplikasi menarik dalam penjanaan teks ke imej, penjanaan video dan banyak lagi. Prinsip asas di sebalik alat generatif ini ialah konsep resapan, mekanisme pensampelan khas yang mengatasi batasan kaedah sebelumnya.

Hasilkan PPT dengan satu klik! Kimi: Biarlah 'pekerja migran PPT' menjadi popular dahulu Hasilkan PPT dengan satu klik! Kimi: Biarlah 'pekerja migran PPT' menjadi popular dahulu Aug 01, 2024 pm 03:28 PM

Kimi: Hanya dalam satu ayat, dalam sepuluh saat sahaja, PPT akan siap. PPT sangat menjengkelkan! Untuk mengadakan mesyuarat, anda perlu mempunyai PPT; untuk menulis laporan mingguan, anda perlu mempunyai PPT untuk membuat pelaburan, anda perlu menunjukkan PPT walaupun anda menuduh seseorang menipu, anda perlu menghantar PPT. Kolej lebih seperti belajar jurusan PPT Anda menonton PPT di dalam kelas dan melakukan PPT selepas kelas. Mungkin, apabila Dennis Austin mencipta PPT 37 tahun lalu, dia tidak menyangka satu hari nanti PPT akan berleluasa. Bercakap tentang pengalaman sukar kami membuat PPT membuatkan kami menitiskan air mata. "Ia mengambil masa tiga bulan untuk membuat PPT lebih daripada 20 muka surat, dan saya menyemaknya berpuluh-puluh kali. Saya rasa ingin muntah apabila saya melihat PPT itu." ialah PPT." Jika anda mengadakan mesyuarat dadakan, anda harus melakukannya

Gabungan sempurna PyCharm dan PyTorch: langkah pemasangan dan konfigurasi terperinci Gabungan sempurna PyCharm dan PyTorch: langkah pemasangan dan konfigurasi terperinci Feb 21, 2024 pm 12:00 PM

PyCharm ialah persekitaran pembangunan bersepadu (IDE) yang berkuasa dan PyTorch ialah rangka kerja sumber terbuka yang popular dalam bidang pembelajaran mendalam. Dalam bidang pembelajaran mesin dan pembelajaran mendalam, menggunakan PyCharm dan PyTorch untuk pembangunan boleh meningkatkan kecekapan pembangunan dan kualiti kod. Artikel ini akan memperkenalkan secara terperinci cara memasang dan mengkonfigurasi PyTorch dalam PyCharm, dan melampirkan contoh kod khusus untuk membantu pembaca menggunakan fungsi berkuasa kedua-dua ini dengan lebih baik. Langkah 1: Pasang PyCharm dan Python

Pengenalan kepada lima kaedah pensampelan dalam tugas penjanaan bahasa semula jadi dan pelaksanaan kod Pytorch Pengenalan kepada lima kaedah pensampelan dalam tugas penjanaan bahasa semula jadi dan pelaksanaan kod Pytorch Feb 20, 2024 am 08:50 AM

Dalam tugas penjanaan bahasa semula jadi, kaedah pensampelan ialah teknik untuk mendapatkan output teks daripada model generatif. Artikel ini akan membincangkan 5 kaedah biasa dan melaksanakannya menggunakan PyTorch. 1. GreedyDecoding Dalam penyahkodan tamak, model generatif meramalkan perkataan urutan keluaran berdasarkan urutan input masa langkah demi masa. Pada setiap langkah masa, model mengira taburan kebarangkalian bersyarat bagi setiap perkataan, dan kemudian memilih perkataan dengan kebarangkalian bersyarat tertinggi sebagai output langkah masa semasa. Perkataan ini menjadi input kepada langkah masa seterusnya, dan proses penjanaan diteruskan sehingga beberapa syarat penamatan dipenuhi, seperti urutan panjang tertentu atau penanda akhir khas. Ciri GreedyDecoding ialah setiap kali kebarangkalian bersyarat semasa adalah yang terbaik

Tutorial memasang PyCharm dengan PyTorch Tutorial memasang PyCharm dengan PyTorch Feb 24, 2024 am 10:09 AM

Sebagai rangka kerja pembelajaran mendalam yang berkuasa, PyTorch digunakan secara meluas dalam pelbagai projek pembelajaran mesin. Sebagai persekitaran pembangunan bersepadu Python yang berkuasa, PyCharm juga boleh memberikan sokongan yang baik apabila melaksanakan tugas pembelajaran mendalam. Artikel ini akan memperkenalkan secara terperinci cara memasang PyTorch dalam PyCharm dan menyediakan contoh kod khusus untuk membantu pembaca mula menggunakan PyTorch dengan cepat untuk tugasan pembelajaran mendalam. Langkah 1: Pasang PyCharm Mula-mula, kita perlu pastikan kita ada

Semua anugerah CVPR 2024 diumumkan! Hampir 10,000 orang menghadiri persidangan itu di luar talian dan seorang penyelidik Cina dari Google memenangi anugerah kertas terbaik Semua anugerah CVPR 2024 diumumkan! Hampir 10,000 orang menghadiri persidangan itu di luar talian dan seorang penyelidik Cina dari Google memenangi anugerah kertas terbaik Jun 20, 2024 pm 05:43 PM

Pada awal pagi 20 Jun, waktu Beijing, CVPR2024, persidangan penglihatan komputer antarabangsa teratas yang diadakan di Seattle, secara rasmi mengumumkan kertas kerja terbaik dan anugerah lain. Pada tahun ini, sebanyak 10 kertas memenangi anugerah, termasuk 2 kertas terbaik dan 2 kertas pelajar terbaik Selain itu, terdapat 2 pencalonan kertas terbaik dan 4 pencalonan kertas pelajar terbaik. Persidangan teratas dalam bidang visi komputer (CV) ialah CVPR, yang menarik sejumlah besar institusi penyelidikan dan universiti setiap tahun. Mengikut statistik, sebanyak 11,532 kertas telah diserahkan tahun ini, 2,719 daripadanya diterima, dengan kadar penerimaan 23.6%. Menurut analisis statistik data CVPR2024 Institut Teknologi Georgia, dari perspektif topik penyelidikan, bilangan kertas terbesar ialah sintesis dan penjanaan imej dan video (Imageandvideosyn

Lima perisian pengaturcaraan untuk memulakan pembelajaran bahasa C Lima perisian pengaturcaraan untuk memulakan pembelajaran bahasa C Feb 19, 2024 pm 04:51 PM

Sebagai bahasa pengaturcaraan yang digunakan secara meluas, bahasa C merupakan salah satu bahasa asas yang mesti dipelajari bagi mereka yang ingin melibatkan diri dalam pengaturcaraan komputer. Walau bagaimanapun, bagi pemula, mempelajari bahasa pengaturcaraan baharu boleh menjadi sukar, terutamanya disebabkan kekurangan alat pembelajaran dan bahan pengajaran yang berkaitan. Dalam artikel ini, saya akan memperkenalkan lima perisian pengaturcaraan untuk membantu pemula memulakan bahasa C dan membantu anda bermula dengan cepat. Perisian pengaturcaraan pertama ialah Code::Blocks. Code::Blocks ialah persekitaran pembangunan bersepadu sumber terbuka (IDE) percuma untuk

Daripada logam kosong kepada model besar dengan 70 bilion parameter, berikut ialah tutorial dan skrip sedia untuk digunakan Daripada logam kosong kepada model besar dengan 70 bilion parameter, berikut ialah tutorial dan skrip sedia untuk digunakan Jul 24, 2024 pm 08:13 PM

Kami tahu bahawa LLM dilatih pada kelompok komputer berskala besar menggunakan data besar-besaran Tapak ini telah memperkenalkan banyak kaedah dan teknologi yang digunakan untuk membantu dan menambah baik proses latihan LLM. Hari ini, perkara yang ingin kami kongsikan ialah artikel yang mendalami teknologi asas dan memperkenalkan cara menukar sekumpulan "logam kosong" tanpa sistem pengendalian pun menjadi gugusan komputer untuk latihan LLM. Artikel ini datang daripada Imbue, sebuah permulaan AI yang berusaha untuk mencapai kecerdasan am dengan memahami cara mesin berfikir. Sudah tentu, mengubah sekumpulan "logam kosong" tanpa sistem pengendalian menjadi gugusan komputer untuk latihan LLM bukanlah proses yang mudah, penuh dengan penerokaan dan percubaan dan kesilapan, tetapi Imbue akhirnya berjaya melatih LLM dengan 70 bilion parameter proses terkumpul

See all articles