Transformers documentation

BitNet

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.2).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

BitNet

BitNet menggantikan lapisan linear tradisional dalam Multi-Head Attention dan jaringan feed-forward dengan lapisan BitLinear khusus. Lapisan BitLinear melakukan kuantisasi bobot menggunakan presisi ternary (dengan nilai -1, 0, dan 1) dan mengkuantisasi aktivasi ke presisi 8-bit.

Alt Text
Arsitektur BitNet dengan lapisan BitLinear.

Model BitNet tidak dapat dikuantisasi secara langsung. Model ini harus dikuantisasi selama pra-pelatihan atau penyesuaian halus karena merupakan teknik Quantization-Aware Training (QAT). Selama pelatihan, bobot dikuantisasi ke nilai ternary dengan kuantisasi per tensor yang simetris.

  1. Hitung rata-rata dari nilai absolut matriks bobot dan gunakan sebagai skala.
  2. Bagi bobot dengan skala, bulatkan nilainya, batasi nilainya antara -1 dan 1, lalu skala ulang untuk melanjutkan dalam presisi penuh.
  3. Aktivasi dikuantisasi ke lebar bit yang ditentukan (8-bit) menggunakan kuantisasi absmax (kuantisasi simetris per kanal). Proses ini melibatkan penskalaan aktivasi ke dalam rentang [−128,127].

Lihat PR ini untuk melakukan pretraining atau fine-tuning model 1.58-bit dengan Nanotron. Untuk fine-tuning, konversikan model dari format Hugging Face ke format Nanotron. Temukan langkah konversi di PR ini.

Muat model BitNet terkuantisasi dengan from_pretrained().

from transformers import AutoModelForCausalLM
path = "/path/to/model"
model = AutoModelForCausalLM.from_pretrained(path, device_map="auto")

Kernels

@torch.compile digunakan untuk mengurai bobot dan melakukan forward pass. Implementasinya sangat sederhana dan memberikan peningkatan kecepatan yang signifikan. Kernel yang dioptimalkan lebih lanjut akan diintegrasikan dalam versi-versi mendatang.

Sumber daya

Baca Fine-tuning LLMs to 1.58bit: extreme quantization made easy untuk mempelajari lebih lanjut tentang cara model BitNet dilatih dan dihaluskan.

Update on GitHub