Jadual Kandungan
Objektif Pembelajaran
Soalan
jalur lebar memori yang dikurangkan dan pengiraan yang lebih mudah membawa kepada penjimatan tenaga
model yang lebih kecil boleh digunakan pada peranti yang terkawal sumber
kuantisasi absmax
Kuantisasi Zero-titik
Memuat dan menyediakan model
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
Soalan Lazim
Rumah Peranti teknologi AI Kuantisasi Berat Rangkaian Neural

Kuantisasi Berat Rangkaian Neural

Mar 08, 2025 am 10:40 AM

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.
Artikel ini diterbitkan sebagai sebahagian daripada Blogathon Sains Data

Jadual Kandungan Memahami Fundamental Kuantisasi Berat Pelaksanaan Praktikal

Proses kuantisasi: Berat dan Model

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
Penggunaan kuasa yang lebih rendah:

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 masuk
    Salin selepas log masuk

    Kaedah 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 masuk
    Salin selepas log masuk

    output:

    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 masuk

    Kaedah 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 masuk

    output:

    Kuantisasi Berat Rangkaian Neural

    Proses Kuantisasi: Berat dan Model

    menyelam ke dalam penggunaan teknik kuantisasi kepada kedua -dua berat individu dan keseluruhan model. Langkah ini memastikan mengurangkan penggunaan memori dan kecekapan pengiraan semasa mengekalkan prestasi.

    # 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 masuk
    Menggambarkan pengagihan berat kuantitatif

    memvisualisasikan dan membandingkan pengagihan berat model asal, absmax kuantitatif, dan sifar-titik kuantitatif. Histogram ini memberikan gambaran tentang bagaimana kuantisasi memberi kesan kepada nilai berat badan dan pengedaran keseluruhannya.

    # 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
    Kod ini termasuk fungsi visualisasi yang komprehensif:

      Grafik memaparkan berat asal vs berat absmax
    • Grafik memaparkan berat asal vs berat sifar-titik

    output:

    Kuantisasi Berat Rangkaian Neural

    Penilaian Prestasi Kuantisasi Berat Rangkaian Neural

    Menilai kesan kuantisasi pada prestasi model adalah penting untuk memastikan kecekapan dan ketepatan. Mari ukur seberapa baik model kuantitatif dilakukan berbanding dengan asal.

    Generasi Teks

    meneroka bagaimana model kuantitatif menghasilkan teks dan membandingkan kualiti output ke ramalan model 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 masuk
    Salin selepas log masuk

    Kod 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:

    Kuantisasi Berat Rangkaian Neural

    Kod mengira kebingungan (ukuran seberapa baik model meramalkan teks) untuk input yang diberikan menggunakan tiga model: model asal, "Absmax" dan "Zeropoint" yang asal. Kebingungan yang lebih rendah menunjukkan prestasi yang lebih baik. Ia mencetak skor kebingungan untuk perbandingan.
    # 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 masuk
    Salin selepas log masuk

    output:

    anda boleh mengakses pautan colab di sini. Kuantisasi Berat Rangkaian Neural

    kelebihan kuantisasi berat

    di bawah kita akan melihat kelebihan kuantisasi berat:

    Kecekapan memori:
      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
    Kuantisasi berat memainkan peranan penting dalam meningkatkan kecekapan model bahasa yang besar, terutamanya apabila ia menyebarkannya pada peranti yang terkawal sumber. Dengan menukar berat ketepatan tinggi ke perwakilan integer ketepatan yang lebih rendah, kita dapat mengurangkan penggunaan memori dengan ketara, meningkatkan kelajuan kesimpulan, dan penggunaan kuasa yang lebih rendah, semuanya tanpa menjejaskan prestasi model.

    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?

    a. Anda boleh melaksanakan kuantisasi dengan membuat fungsi untuk skala dan pusingan berat model, kemudian memohon mereka merentasi semua parameter. Perpustakaan seperti Pytorch menyediakan sokongan asli untuk beberapa teknik kuantisasi, walaupun pelaksanaan tersuai, seperti yang ditunjukkan dalam panduan, menawarkan fleksibiliti. Q5. Adakah kuantisasi berfungsi untuk semua jenis model?

    a. Kuantisasi berat adalah paling berkesan untuk model besar di mana mengurangkan jejak memori dan pengiraan adalah kritikal. Walau bagaimanapun, model yang sangat kecil mungkin tidak memberi manfaat daripada kuantisasi.

    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!

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

Video Face Swap

Video Face Swap

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

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)

Topik panas

Tutorial Java
1655
14
Tutorial PHP
1252
29
Tutorial C#
1226
24
Bermula dengan Meta Llama 3.2 - Analytics Vidhya Bermula dengan Meta Llama 3.2 - Analytics Vidhya Apr 11, 2025 pm 12:04 PM

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

10 Pelanjutan pengekodan AI generatif dalam kod vs yang mesti anda pelajari 10 Pelanjutan pengekodan AI generatif dalam kod vs yang mesti anda pelajari Apr 13, 2025 am 01:14 AM

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 &#8217

AV Bytes: Meta ' s llama 3.2, Google's Gemini 1.5, dan banyak lagi AV Bytes: Meta ' s llama 3.2, Google's Gemini 1.5, dan banyak lagi Apr 11, 2025 pm 12:01 PM

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

Menjual Strategi AI kepada Pekerja: Manifesto CEO Shopify Menjual Strategi AI kepada Pekerja: Manifesto CEO Shopify Apr 10, 2025 am 11:19 AM

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

Panduan Komprehensif untuk Model Bahasa Visi (VLMS) Panduan Komprehensif untuk Model Bahasa Visi (VLMS) Apr 12, 2025 am 11:58 AM

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?

GPT-4O vs OpenAI O1: Adakah model Openai baru bernilai gembar-gembur? GPT-4O vs OpenAI O1: Adakah model Openai baru bernilai gembar-gembur? Apr 13, 2025 am 10:18 AM

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

Bagaimana untuk menambah lajur dalam SQL? - Analytics Vidhya Bagaimana untuk menambah lajur dalam SQL? - Analytics Vidhya Apr 17, 2025 am 11:43 AM

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

Penyusunan Tahunan Terkini Teknik Kejuruteraan Terbaik Penyusunan Tahunan Terkini Teknik Kejuruteraan Terbaik Apr 10, 2025 am 11:22 AM

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,

See all articles