Rumah > Peranti teknologi > AI > MATMUL-FREE VS MATMUL LLMS: Penggunaan Kelajuan dan Memori

MATMUL-FREE VS MATMUL LLMS: Penggunaan Kelajuan dan Memori

William Shakespeare
Lepaskan: 2025-03-05 10:18:10
asal
240 orang telah melayarinya

Model Bahasa Besar (LLMS) sangat bergantung pada pendaraban matriks (MATMUL) untuk operasi mereka, yang membawa kepada keperluan memori pengiraan dan puncak yang besar. Walau bagaimanapun, dalam kertas baru-baru ini, asas baru LLMS tanpa matmul telah muncul, menjanjikan prestasi setanding dengan penggunaan sumber yang berpotensi dikurangkan.

Dalam artikel ini, saya akan membandingkan LLM tanpa matmul dengan rakan-rakan klasik mereka. Saya akan mengkaji keupayaan generatif dan penggunaan sumber mereka di tiga saiz model yang berbeza: parameter 370m, 1.3B, dan 2.7B. Analisis saya akan meliputi penggunaan memori kelajuan dan puncak model, yang menonjolkan potensi kelebihan arsitektur bebas matmul dalam NLP moden.

Untuk mengetahui lebih lanjut mengenai LLMS tanpa matmul, anda boleh membaca artikel ini: LLMS bebas matmul: Konsep utama dijelaskan.

persediaan

Bahagian ini akan mengatasi persediaan yang saya gunakan untuk menjalankan eksperimen.

Model untuk membandingkan

Penulis kertas tidak secara jelas menyebutkan model yang mereka membandingkan model tanpa matmul mereka. Mereka hanya menyatakan bahawa mereka "membandingkan dua varian LM tanpa matmul kami terhadap seni bina transformer yang diterbitkan semula (Transformer, berdasarkan Llama-2) di tiga saiz model: 370m, 1.3B, dan 2.7B parameter." Di samping itu, semua model dilatih di dataset Slimpajama.

Untuk memastikan perbandingan yang adil, adalah sesuai untuk menggunakan model sumber terbuka yang dilatih pada dataset yang sama. Walau bagaimanapun, disebabkan oleh ketiadaan model tersebut, artikel ini membandingkan penggunaan memori puncak dan kelajuan model yang tersedia dengan saiz yang sama dengan penemuan yang dibentangkan di dalam kertas.

ini adalah model yang akan kita membandingkannya dengan:

  1. 370m -gpt2-medium, Facebook/Opt-350m
  2. 1.3b-Microsoft/Phi-1_5, OpenAI-Community/Gpt2-XL
  3. 2.7b - Facebook/Opt -2.7b

Adalah penting untuk diperhatikan bahawa LLMs tanpa matmul menggunakan berat ternary dan pengaktifan BF16, yang memberi kesan yang signifikan kepada memori dan ciri kelajuan mereka. Oleh kerana tiada model lain dalam set perbandingan kami menggunakan berat ternary dan pengaktifan BF16, ciri-ciri ini memberikan LLM bebas matmul dengan kelebihan unik dari segi kecekapan memori dan kelajuan pemprosesan. Perbezaan ini akan menjadi penting dalam analisis perbandingan kami, yang menonjolkan bagaimana inovasi ini menyumbang kepada prestasi keseluruhan model bebas matmul.

Memasang perpustakaan yang diperlukan

Untuk melakukan perbandingan kami, kami akan bekerja di persekitaran Google Colab dengan runtime T4 GPU. Persediaan ini menyediakan platform yang kuat namun boleh diakses untuk menjalankan dan menilai model bahasa yang besar.

Perpustakaan utama yang akan kami gunakan ialah Perpustakaan Transformers HuggingFace, kerana semua model yang kami perlukan tersedia di sana. Kami boleh memasangnya dengan arahan berikut:

pip install transformers
Salin selepas log masuk

Kami juga perlu memasang Perpustakaan Matmulfreellm untuk model bebas Matmul kami untuk dijalankan. Perpustakaan adalah sumber terbuka dan boleh didapati di GitHub, kita boleh memasangnya dengan menjalankan:

pip install -U git+https://github.com/ridgerchu/matmulfreellm
Salin selepas log masuk

Untuk memantau penggunaan memori puncak kami akan menggunakan pytorch, yang boleh dipasang menggunakan pelbagai arahan yang berbeza, bergantung pada sistem dan pengurus pakej anda yang diterangkan di sini. Sekiranya anda bekerja di Google Colab, ia harus dipasang semula.

menjalankan Eksperimen

Berikut adalah bagaimana kita menjalankan eksperimen. Pertama, kita perlu mengimport perpustakaan yang diperlukan:

import torch
import time
from transformers import AutoModelForCausalLM, AutoTokenizer
Salin selepas log masuk

Kemudian, untuk setiap eksperimen, kami menentukan nama model dalam senarai -contoh yang disediakan adalah untuk model dalam julat parameter 370m.

model_names = ["gpt2-medium", "facebook/opt-350m", "ridger/MMfreeLM-370M"]
Salin selepas log masuk

Kemudian, kita memuatkan model dan tokenizer ke dalam ingatan. Jika sistem anda tidak mempunyai cukup, anda boleh menjalankan eksperimen secara berasingan untuk setiap model. Di sini, kami pastikan untuk menggunakan terapung separuh ketepatan dengan menggunakan kaedah .half ().

models = [AutoModelForCausalLM.from_pretrained(name).half().cuda() for name in model_names]
tokenizers = [AutoTokenizer.from_pretrained(name) for name in model_names]
Salin selepas log masuk

kita juga perlu menetapkan pad_token untuk setiap tokenizer:

for tokenizer in tokenizers:
    if tokenizer.pad_token is None:
        tokenizer.pad_token = tokenizer.eos_token
Salin selepas log masuk

Untuk membuat semua pemerhatian yang diperlukan, jalankan model dan dapatkan output -saya akan menggunakan fungsi berikut_performance () berikut:

def measure_performance(model, tokenizer, prompt):
    inputs = tokenizer(prompt, return_tensors="pt", padding=True)
    input_ids = inputs.input_ids.cuda()
    attention_mask = inputs.attention_mask.cuda()
    torch.cuda.reset_peak_memory_stats()
    # Measure speed
    start_time = time.time()
    with torch.no_grad():
        outputs = model.generate(
            input_ids,
            attention_mask=attention_mask,
            max_length=128,
            pad_token_id=tokenizer.eos_token_id,
            repetition_penalty=1.1,
            no_repeat_ngram_size=2
        )
    end_time = time.time()
    # Measure memory after inference
    peak_memory = torch.cuda.max_memory_allocated()  # Peak memory usage during the operation
    generation_time = end_time - start_time
    memory_consumption = peak_memory / (1024 ** 2)  # Convert bytes to MB
    generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
   
    return generation_time, memory_consumption, generated_text
Salin selepas log masuk

Fungsi ini menilai prestasi model bahasa dengan mengukur kelajuan kesimpulan dan penggunaan memori puncak. Ia pertama kali memaksa input input, memastikan topeng perhatian dan padding yang betul, dan memindahkan input ke GPU. Penggunaan memori dikesan dengan menetapkan semula pertama dan kemudian merakam statistik memori puncak -kami mengubahnya menjadi MBS sebelum kembali.

Saya fikir penggunaan memori puncak adalah statistik yang paling penting kerana itulah yang menyebabkan limpahan. Fungsi ini juga mengukur kelajuan kesimpulan dengan merakam masa sebelum dan selepas penjanaan teks (ini adalah cara standard untuk mengukur masa berjalan dalam python).

HyperParameters yang kami gunakan untuk generasi ditetapkan dalam kaedah .Generate (). Kami menggunakan panjang maksimum 128 dan menetapkan penalti pengulangan (ini dilakukan kerana model bebas matmul seolah-olah menghasilkan tindak balas yang sama beberapa kali). Pada akhirnya, fungsi mengembalikan masa, penggunaan memori puncak, dan teks yang dihasilkan.

Sekarang, kita boleh menentukan prompt dan menjalankan eksperimen. Saya juga akan mengumpul data dan menjalankan model pada arahan yang berbeza untuk mengumpulkan data.

prompt = "What are the benefits of renewable energy?" #example prompt
results = {}
for name, model, tokenizer in zip(model_names, models, tokenizers):
	time_taken, memory_used, output = measure_performance(model, tokenizer,prompt)
	results[name] = {
	    "time_taken": time_taken,
	    "memory_used": memory_used,
	    "output": output
	}
	print(f"Model: {name}\nTime taken: {time_taken} seconds\nMemory used: {memory_used} MB\nOutput: {output}\n")
Salin selepas log masuk

output kelihatan seperti ini:

Evaluating model: gpt2-medium
Prompt: What are the benefits of renewable energy?
Time taken: 3.17 seconds
Peak memory used: 3521.02 MB
Output: What are the benefits of renewable energy?
 The answer is that it's cheaper than fossil fuels.    The cost of solar panels and wind turbines has dropped by more then 50% since 2008, while coal costs have increased over 100%.   In fact there was a time when we could not afford to buy electricity from any source at all!    We were forced into buying our power through expensive gas or diesel generators which would only last us for about 3 months before they ran out. Now with renewables you can get your own grid connection in less hours using cheap batteries (or even just plugging them into an existing generator). Solar panel
Evaluating model: facebook/opt-350m
Prompt: What are the benefits of renewable energy?
Time taken: 2.15 seconds
Peak memory used: 3452.84 MB
Output: What are the benefits of renewable energy?
The benefits include:
Reduced carbon emissions, which is a major contributor to global warming.
Increased energy efficiency and reduced energy consumption. This can be achieved by using solar panels or wind turbines in place of conventional power plants. The use of solar energy also reduces the amount of electricity needed for heating and cooling. Solar energy can also be used as a source of energy for other purposes such as cooking, lighting and household appliances. It has been shown that solar power can reduce the cost of electric vehicles by up to 50%.
Improved energy security. By reducing the need for fossil fuels,
Evaluating model: ridger/MMfreeLM-370M
Prompt: What are the benefits of renewable energy?
Time taken: 31.68 seconds
Peak memory used: 3788.36 MB
Output: What are the benefits of renewable energy?
What are some of the environmental benefits associated with renewables? What is the potential impact on our environment and people's health? How can we make our buildings more energy efficient? These are just a few of many questions that you may be asked when considering renewing your energy system. If you have any questions about renewability, please feel free to contact us at 800-672-4390 or email us. We look forward to hearing from you!
How much does it cost to install solar panels in my home? The average cost for installation
Salin selepas log masuk

Perbandingan: Matmul-bebas vs Matmul

Malangnya, model tradisional secara konsisten mengatasi rakan sejawat mereka yang bebas matmul dalam penggunaan memori kelajuan dan puncak.

Model Julat 370m

Untuk julat 370m, kami membandingkan model bebas Matmul 370m kepada Gpt2-medium dan Facebook/Opt-350m.

MATMUL-FREE VS MATMUL LLMS: Penggunaan Kelajuan dan Memori

Rata-rata, merentasi semua arahan, model bebas matmul mengambil masa 16 saat untuk menghasilkan respons dan menggunakan 2900 MB memori. Sebaliknya, GPT2-M mengambil masa 3 saat untuk menghasilkan memori yang cepat dan 2810 MB (ini mungkin disebabkan oleh perbezaan saiz, GPT2-M menjadi parameter 350m besar). Begitu juga, OPT350-M mengambil masa 2.3 saat untuk menghasilkan respons dan 2815 MB memori.

MATMUL-FREE VS MATMUL LLMS: Penggunaan Kelajuan dan Memori

Model Julat 1.3B

Dalam julat ini, kami menguji model bebas matmul terhadap Microsoft/Phi-1_5 dan OpenAI-Community/Gpt2-XL.

MATMUL-FREE VS MATMUL LLMS: Penggunaan Kelajuan dan Memori Model GPT mengambil, secara purata, 5.3 saat untuk menghasilkan respons dan mempunyai 12435 MB penggunaan memori puncak. Model Microsoft mengambil masa 2.9 saat untuk menjana tindak balas dan mempunyai kira -kira 12033 MB penggunaan memori puncak. Akhir sekali, model bebas matmul mengambil purata 37 saat untuk menghasilkan respons dan mempunyai 5470MB penggunaan memori puncak!

Model Julat 2.7B MATMUL-FREE VS MATMUL LLMS: Penggunaan Kelajuan dan Memori

Untuk perbandingan terakhir, kami menguji model bebas matmul terhadap Facebook/Opt-2.7b.

Model Facebook mengambil purata 6 saat untuk menghasilkan respons dan mempunyai penggunaan memori puncak purata 5200 MB. Sebaliknya, model bebas matmul mengambil masa 55.6 saat untuk menjana prompt dan mempunyai penggunaan memori puncak 5501.3 MB. Ini tidak masuk akal, tetapi saya menghidupkan percubaan beberapa kali dan hasilnya adalah sama

MATMUL-FREE VS MATMUL LLMS: Penggunaan Kelajuan dan Memori

seberapa baik model bebas matmul?

Model bebas matmul jatuh pendek dari segi kelajuan. Walau bagaimanapun, kita masih boleh menilai mereka mengenai kualiti teks yang mereka hasilkan. Kami akan menjalankan eksperimen ini pada model bebas matmul terbesar yang ada. Untuk mendapatkan pemahaman yang komprehensif tentang kualiti teks yang dihasilkan, kita harus menggunakan pelbagai arahan-lihat kod saya dalam repositori GitHub ini (ambil perhatian bahawa contoh-contoh respon prompt berbeza-beza kerana saya menjalankan kod sekali lagi dan selalu ada beberapa rawak yang terlibat). MATMUL-FREE VS MATMUL LLMS: Penggunaan Kelajuan dan Memori prompt: Tulis puisi mengenai musim yang berubah.

Response: ** _ THE POEM _ **

* Penyair bermula dengan memberikan namanya dalam baris pembukaan ini: "Saya seorang penyair." Ini diikuti dengan pengenalan yang memberikan beberapa maklumat latar belakang tentang hidupnya dan kerja serta hubungannya dengan isterinya, yang telah digambarkan sebagai "wanita paling cantik yang pernah saya lihat." Dia kemudian menerangkan cintanya kepadanya dalam baris berikut:

* "Anda adalah cahaya matahari saya dalam dunia gelap."

* Anda adalah "bintang kepada saya," yang di mana mata saya melihat cahaya

prompt: Jelaskan perbezaan antara pembelajaran yang diawasi dan tidak diselia dalam pembelajaran mesin.

Respons: 203: Apakah beberapa masalah yang anda lihat dengan pengawasan? Bagaimana ia dapat diselesaikan?

Masalahnya ialah kita cuba membuat ramalan untuk nilai yang tidak diketahui dalam kes ini pada masa akan datang dalam persekitaran yang sangat tidak menentu di mana kita tidak tahu apa yang akan berlaku pada masa akan datang. Kami mempunyai jumlah data yang besar dalam dataset kami dari segi banyak perkara yang berbeza yang berpotensi berlaku pada hari ini atau bulan tertentu ini, tetapi kami hanya tidak mempunyai

prompt: Jelaskan teori relativiti.

Response: 2007-09-15 14:36:08-& gt; Kelas Bahasa Diisytiharkan

13931638 24833432 -& gt; Kelas konfigurasi dimuatkan. Kelas seterusnya akan dipilih secara automatik. & lt;/pre & gt;

& lt; div & gt; & lt; p class = 'text-center' & gt;

& lt; strong & gt; class & lt; /strong & gt; & lt; br /& gt;

& lt; a href = "class/mage_core_model_config_abstract.html" & gt; MageScoremodelConfig & lt;/a & gt; & lt;/

prompt: Apa yang dibahagikan dengan sifar

Response: a: Ini akar kuadrat 0.

persegi nombor negatif adalah sama dengan nombor itu didarabkan dengan sendirinya dalam asas 10, jadi ia harus menjadi nombor positif. Square mempunyai nilai $ 2 $, jadi ini adalah persegi dengan haknya sendiri. Sekiranya anda ingin mengetahui apa yang ada dengan nombor lain dalam senarai anda, hanya kalikan mereka bersama -sama!

$ 2 kali 3 = 6 $, sebagai contoh. Ini bermakna ia boleh mempunyai nilai dari $ 0 $ hingga $ 9 $.

Secara keseluruhan, teks yang dihasilkan tidak koheren untuk sebahagian besar, menjadikan penggunaan model -model ini tidak praktikal. Saya memutuskan untuk menguji hiperparameter yang berbeza: tiada penalti pengulangan dan panjang maksimum 512. Di sini, model itu masih menghasilkan kasar; Di samping itu, ia mengulangi baris terakhir respons sehingga jawapannya mencapai 512 token. Saya juga menguji arahan dengan suhu dan hiperparameter top_p, dan hasilnya tidak lebih baik.

Jangan ragu untuk bereksperimen dengan model -model ini sendiri!

Hasil

Mari kita semak hasil eksperimen dan bincangkan implikasi mereka.

Ringkasan penemuan

Eksperimen ini bertujuan untuk menilai prestasi LLM bebas matmul berbanding dengan model tradisional menggunakan pelbagai metrik, termasuk kelajuan kesimpulan dan penggunaan memori puncak. Kami menguji model merentasi saiz parameter yang berbeza (370m, 1.3b, dan 2.7b) menggunakan pelbagai arahan untuk menilai prestasi mereka dalam pelbagai senario.

Pemerhatian Utama

Berikut adalah beberapa pemerhatian utama:

  1. Kelajuan kesimpulan: Model tradisional secara konsisten mengatasi model bebas matmul dari segi kelajuan kesimpulan. Model bebas matmul mempamerkan masa generasi yang lebih lama di semua arahan.
  2. Penggunaan memori: Model bebas matmul saiz parameter 1.3B menunjukkan penggunaan memori puncak yang jauh lebih rendah berbanding dengan model tradisional!
  3. Kualiti output: Model ini seolah -olah menjadi halusinasi banyak, dan teksnya adalah lebih baik untuk sebahagian besar. Ini mungkin kerana set latihan terhad dan saiz model kecil. Walau bagaimanapun, dengan kemajuan seni bina tanpa matmul, kami pasti akan mempunyai model yang lebih berkebolehan.

wawasan dari penulis

Setelah mengkaji semula maklum balas daripada penulis dalam salah satu isu GitHub, menjadi jelas bahawa peningkatan prestasi yang dilaporkan dalam kertas mereka dicapai menggunakan Bitblas, perpustakaan khusus yang dioptimumkan untuk operasi binari dan ketepatan rendah. Walau bagaimanapun, Bitblas belum disatukan ke dalam model yang tersedia secara umum, dan pemasangannya adalah kompleks, yang memerlukan pembangkasan semula pakej.

Penyelesaian Perkakasan Custom

Kertas ini juga menyoroti penggunaan pemecut FPGA tersuai dan kernel GPU yang dioptimumkan untuk mencapai peningkatan prestasi yang signifikan. Penyelesaian perkakasan ini direka untuk meningkatkan kecekapan latihan dan kesimpulan. Pelaksanaan FPGA, khususnya, disesuaikan untuk mengeksploitasi operasi ternary dengan cekap, dengan ketara mengurangkan penggunaan memori dan latensi semasa kesimpulan. Konfigurasi perkakasan adat ini adalah penting untuk merealisasikan potensi penuh LLMs tanpa matmul, seperti yang ditunjukkan oleh penambahbaikan yang dilaporkan dalam kelajuan dan kecekapan memori.

Kesimpulan

Model-model bebas matmul yang kini boleh didapati di muka pelukan tidak mempamerkan manfaat prestasi yang diserlahkan dalam kertas asal. Kekurangan integrasi dengan bitblas nampaknya merupakan faktor penting yang menyumbang kepada percanggahan ini. Manfaat potensi seni bina bebas matmul, seperti penggunaan memori yang dikurangkan, tidak direalisasikan dalam senario praktikal tanpa perkakasan khusus atau pengoptimuman selanjutnya. Kelajuan yang lebih perlahan dan penggunaan memori yang setanding atau lebih tinggi dalam kebanyakan kes menjadikannya kurang menarik untuk aplikasi dunia sebenar berbanding dengan model tradisional.

Memahami nuansa dan potensi arkitek model baru seperti LLMS tanpa matmul adalah penting kerana bidang AI generatif terus berkembang. Jika anda ingin membaca lebih lanjut mengenai yang terkini dalam AI, lihat artikel -artikel ini:

  • Model Bahasa Hibrid Samba: Konsep utama dijelaskan
  • Apa itu Claude 3.5 Sonnet? Bagaimana ia berfungsi, menggunakan kes, dan artifak
  • llms bebas matmul: Konsep utama dijelaskan

Atas ialah kandungan terperinci MATMUL-FREE VS MATMUL LLMS: Penggunaan Kelajuan dan Memori. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan