Kuantisasi Berat Rangkaian Neural
Pada usia model bahasa yang semakin besar dan rangkaian saraf kompleks, mengoptimumkan kecekapan model telah menjadi yang paling utama. Kuantisasi berat menonjol sebagai teknik penting untuk mengurangkan saiz model dan meningkatkan kelajuan kesimpulan tanpa kemerosotan prestasi yang signifikan. Panduan ini menyediakan pendekatan tangan untuk melaksanakan dan memahami kuantisasi berat badan, menggunakan GPT-2 sebagai contoh praktikal kami.
Objektif Pembelajaran
- memahami asas kuantisasi berat badan dan kepentingannya dalam pengoptimuman model.
- Ketahui perbezaan antara teknik kuantisasi absmax dan sifar.
- Melaksanakan kaedah kuantisasi berat pada GPT-2 menggunakan pytorch.
- menganalisis kesan kuantisasi pada kecekapan memori, kelajuan kesimpulan, dan ketepatan.
- menggambarkan pengagihan berat kuantitatif menggunakan histogram untuk wawasan.
- Menilai prestasi model pasca kuantitatif melalui penjanaan teks dan metrik kebingungan.
- meneroka kelebihan kuantisasi untuk menggunakan model pada peranti yang terkawal sumber.
Jadual Kandungan Memahami Fundamental Kuantisasi Berat Pelaksanaan Praktikal
Soalan
- Memahami asas kuantisasi berat
- Kuantisasi berat menukarkan berat terapung-ketepatan tinggi (biasanya 32-bit) kepada perwakilan ketepatan yang lebih rendah (bilangan integer 8-bit). Proses ini dengan ketara mengurangkan saiz model dan penggunaan memori semasa cuba mengekalkan prestasi model. Cabaran utama terletak pada mengekalkan ketepatan model semasa mengurangkan ketepatan berangka.
- Kenapa kuantisasi?
- Kecekapan memori: Mengurangkan ketepatan dari 32-bit ke 8-bit secara teorinya dapat mengurangkan saiz model sebanyak 75%
- kesimpulan yang lebih cepat: operasi integer biasanya lebih cepat daripada operasi terapung
jalur lebar memori yang dikurangkan dan pengiraan yang lebih mudah membawa kepada penjimatan tenaga
fleksibiliti penyebaran:
model yang lebih kecil boleh digunakan pada peranti yang terkawal sumber
- Pelaksanaan Praktikal mari kita menyelam untuk melaksanakan dua kaedah kuantisasi popular: kuantisasi absmax dan kuantisasi sifar.
- menyediakan persekitaran Pertama, kami akan menubuhkan persekitaran pembangunan kami dengan kebergantungan yang diperlukan:
-
Di bawah kita akan melihat kaedah kuantisasi:
kuantisasi absmax
Kaedah kuantisasi Absmax skala berat berdasarkan nilai mutlak maksimum dalam tensor:
import seaborn as sns import torch import numpy as np from transformers import AutoModelForCausalLM, AutoTokenizer from copy import deepcopy import matplotlib.pyplot as plt import matplotlib.ticker as ticker import seaborn as sns
Salin selepas log masukSalin selepas log masukKaedah ini berfungsi dengan:
- Mencari nilai mutlak maksimum dalam tensor berat
- mengira faktor skala agar sesuai dengan nilai dalam julat int8
- penskalaan dan bulat nilai
- Menyediakan kedua -dua versi kuantitatif dan dequanized
Kelebihan Utama:
- Pelaksanaan mudah
- pemeliharaan nilai besar yang baik
- kuantisasi simetri sekitar sifar
Kuantisasi Zero-titik
kuantisasi sifar-titik menambah offset untuk mengendalikan pengagihan asimetrik yang lebih baik:
# Define quantization functions def absmax_quantize(X): scale = 100 / torch.max(torch.abs(X)) # Adjusted scale X_quant = (scale * X).round() X_dequant = X_quant / scale return X_quant.to(torch.int8), X_dequant
Salin selepas log masukSalin selepas log masukoutput:
def zeropoint_quantize(X): x_range = torch.max(X) - torch.min(X) x_range = 1 if x_range == 0 else x_range scale = 200 / x_range zeropoint = (-scale * torch.min(X) - 128).round() X_quant = torch.clip((X * scale + zeropoint).round(), -128, 127) X_dequant = (X_quant - zeropoint) / scale return X_quant.to(torch.int8), X_dequant
Salin selepas log masukKaedah ini:
- mengira pelbagai nilai
- Menentukan parameter skala dan sifar titik
- menggunakan skala dan beralih
- nilai klip untuk memastikan batas int8
Manfaat:
- pengendalian pengedaran asimetrik yang lebih baik
- Perwakilan yang lebih baik daripada nilai-nilai berhampiran-sifar
- sering menghasilkan ketepatan keseluruhan yang lebih baik
Memuat dan menyediakan model
mari kita gunakan kaedah kuantisasi ini kepada model sebenar. Kami akan menggunakan GPT-2 sebagai contoh kami:
Using device: cuda
Salin selepas log masukoutput:
Menggambarkan pengagihan berat kuantitatif# Load model and tokenizer model_id = 'gpt2' model = AutoModelForCausalLM.from_pretrained(model_id).to(device) tokenizer = AutoTokenizer.from_pretrained(model_id) # Print model size print(f"Model size: {model.get_memory_footprint():,} bytes")
Salin selepas log masukKod ini termasuk fungsi visualisasi yang komprehensif:# Quantize and visualize weights weights_abs_quant, _ = absmax_quantize(weights) weights_zp_quant, _ = zeropoint_quantize(weights) # Quantize the entire model model_abs = deepcopy(model) model_zp = deepcopy(model) for param in model_abs.parameters(): _, dequantized = absmax_quantize(param.data) param.data = dequantized for param in model_zp.parameters(): _, dequantized = zeropoint_quantize(param.data) param.data = dequantized
Salin selepas log masuk- Grafik memaparkan berat asal vs berat absmax
- Grafik memaparkan berat asal vs berat sifar-titik
output:
Penilaian Prestasi
Menilai kesan kuantisasi pada prestasi model adalah penting untuk memastikan kecekapan dan ketepatan. Mari ukur seberapa baik model kuantitatif dilakukan berbanding dengan asal.import seaborn as sns import torch import numpy as np from transformers import AutoModelForCausalLM, AutoTokenizer from copy import deepcopy import matplotlib.pyplot as plt import matplotlib.ticker as ticker import seaborn as sns
Salin selepas log masukSalin selepas log masukKod ini membandingkan output generasi teks dari tiga model: model kuantitatif asal, "absmax", dan model kuantitatif "zeropoint". Ia menggunakan fungsi Generate_Text untuk menghasilkan teks berdasarkan prompt input, memohon pensampelan dengan nilai top-K sebanyak 30. Akhirnya, ia mencetak hasil dari ketiga-tiga model.
output:
# Define quantization functions def absmax_quantize(X): scale = 100 / torch.max(torch.abs(X)) # Adjusted scale X_quant = (scale * X).round() X_dequant = X_quant / scale return X_quant.to(torch.int8), X_dequant
Salin selepas log masukSalin selepas log masukanda boleh mengakses pautan colab di sini.
kelebihan kuantisasi berat- Kuantisasi mengurangkan saiz model sehingga 75%, membolehkan pemuatan dan kesimpulan yang lebih cepat.
- Kesimpulan yang lebih cepat: Operasi integer lebih cepat daripada operasi terapung, yang membawa kepada pelaksanaan model yang lebih cepat.
- Penggunaan kuasa yang lebih rendah: jalur lebar memori yang dikurangkan dan pengiraan mudah membawa kepada penjimatan tenaga, penting untuk peranti kelebihan dan penggunaan mudah alih.
- fleksibiliti penyebaran: model yang lebih kecil lebih mudah digunakan pada perkakasan dengan sumber yang terhad (mis., Telefon bimbit, peranti tertanam).
- degradasi prestasi minimum: Dengan strategi kuantisasi yang betul, model dapat mengekalkan kebanyakan ketepatannya walaupun ketepatan yang dikurangkan.
- Kesimpulan
Dalam panduan ini, kami meneroka dua teknik kuantisasi yang popular-mengaplikasikan kuantisasi dan kuantisasi sifar-menggunakan GPT-2 sebagai contoh praktikal. Kedua -dua teknik ini menunjukkan keupayaan untuk mengurangkan jejak memori model dan keperluan pengiraan sambil mengekalkan tahap ketepatan yang tinggi dalam tugas penjanaan teks. Walau bagaimanapun, kaedah kuantisasi sifar, dengan pendekatan asimetriknya, secara amnya menghasilkan pemeliharaan ketepatan model yang lebih baik, terutamanya untuk pengagihan berat badan bukan simetri.
Takeaways Key
- Kuantisasi Absmax lebih mudah dan berfungsi dengan baik untuk pengagihan berat simetrik, walaupun ia mungkin tidak menangkap pengagihan asimetrik sebagai berkesan sebagai kuantisasi sifar.
- Kuantisasi Zero-Point menawarkan pendekatan yang lebih fleksibel dengan memperkenalkan offset untuk mengendalikan pengagihan asimetrik, sering membawa kepada ketepatan yang lebih baik dan perwakilan berat yang lebih efisien.
- kuantisasi adalah penting untuk menggunakan model besar dalam aplikasi masa nyata di mana sumber pengiraan terhad.
- Walaupun proses kuantisasi mengurangkan ketepatan, ada kemungkinan untuk mengekalkan prestasi model dekat dengan asal dengan strategi penalaan dan kuantisasi yang betul.
- Teknik visualisasi seperti histogram dapat memberikan gambaran tentang bagaimana kuantisasi mempengaruhi berat model dan pengagihan nilai dalam tensor.
Soalan Lazim
Q1. Apakah kuantisasi berat?a. Kuantisasi berat mengurangkan ketepatan berat model, biasanya dari nilai-nilai terapung 32-bit kepada integer ketepatan yang lebih rendah (mis., Integer 8-bit), untuk menjimatkan ingatan dan pengiraan sambil mengekalkan prestasi. Bagaimanakah kuantisasi berat mempengaruhi prestasi model?
a. Walaupun kuantisasi mengurangkan jejak memori model dan masa kesimpulan, ia boleh menyebabkan sedikit kemerosotan dalam ketepatan. Walau bagaimanapun, jika dilakukan dengan betul, kerugian ketepatan adalah minimum.Q3. Bolehkah kuantisasi digunakan untuk mana -mana model?
a. Ya, kuantisasi boleh digunakan untuk mana -mana model rangkaian saraf, termasuk model bahasa, model penglihatan, dan arkitek pembelajaran mendalam yang lain. Q4. Bagaimanakah saya melaksanakan kuantisasi berat dalam model saya?Media yang ditunjukkan dalam artikel ini tidak dimiliki oleh Analytics Vidhya dan digunakan pada budi bicara penulis.
Atas ialah kandungan terperinci Kuantisasi Berat Rangkaian Neural. 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











Meta's Llama 3.2: Lompat ke hadapan dalam Multimodal dan Mobile AI META baru -baru ini melancarkan Llama 3.2, kemajuan yang ketara dalam AI yang memaparkan keupayaan penglihatan yang kuat dan model teks ringan yang dioptimumkan untuk peranti mudah alih. Membina kejayaan o

Hei ada, pengekodan ninja! Apa tugas yang berkaitan dengan pengekodan yang anda telah merancang untuk hari itu? Sebelum anda menyelam lebih jauh ke dalam blog ini, saya ingin anda memikirkan semua kesengsaraan yang berkaitan dengan pengekodan anda-lebih jauh menyenaraikan mereka. Selesai? - Let ’

Landskap AI minggu ini: Badai kemajuan, pertimbangan etika, dan perdebatan pengawalseliaan. Pemain utama seperti Openai, Google, Meta, dan Microsoft telah melepaskan kemas kini, dari model baru yang terobosan ke peralihan penting di LE

Memo CEO Shopify Tobi Lütke baru -baru ini dengan berani mengisytiharkan penguasaan AI sebagai harapan asas bagi setiap pekerja, menandakan peralihan budaya yang signifikan dalam syarikat. Ini bukan trend seketika; Ini adalah paradigma operasi baru yang disatukan ke p

Pengenalan Bayangkan berjalan melalui galeri seni, dikelilingi oleh lukisan dan patung yang terang. Sekarang, bagaimana jika anda boleh bertanya setiap soalan dan mendapatkan jawapan yang bermakna? Anda mungkin bertanya, "Kisah apa yang anda ceritakan?

Pengenalan OpenAI telah mengeluarkan model barunya berdasarkan seni bina "strawberi" yang sangat dijangka. Model inovatif ini, yang dikenali sebagai O1, meningkatkan keupayaan penalaran, yang membolehkannya berfikir melalui masalah MOR

Pernyataan Jadual Alter SQL: Menambah lajur secara dinamik ke pangkalan data anda Dalam pengurusan data, kebolehsuaian SQL adalah penting. Perlu menyesuaikan struktur pangkalan data anda dengan cepat? Pernyataan Jadual ALTER adalah penyelesaian anda. Butiran panduan ini menambah colu

Bagi anda yang mungkin baru dalam lajur saya, saya secara meluas meneroka kemajuan terkini di AI di seluruh papan, termasuk topik seperti yang terkandung AI, penaakulan AI, terobosan berteknologi tinggi di AI, kejuruteraan segera, latihan AI, Fielding of AI, AI Re Re,
