Sebagai model bahasa yang besar (LLMS) terus berkembang secara berskala, begitu juga keperluan untuk cara yang cekap untuk menyimpan, menyebarkan, dan menjalankannya pada peranti sumber rendah. Walaupun model -model ini menawarkan keupayaan yang kuat, saiz dan permintaan memori mereka dapat membuat penempatan sebagai cabaran, terutama pada perkakasan pengguna. Di sinilah kuantisasi model dan format penyimpanan khusus seperti GGUF (format bersatu GPT generik) dimainkan.
Dalam panduan ini, kami akan menyelidiki format GGUF, meneroka faedahnya, dan memberikan tutorial langkah demi langkah mengenai model menukar kepada GGUF. Di sepanjang jalan, kami akan menyentuh sejarah kuantisasi model dan bagaimana GGUF berkembang untuk menyokong LLM moden. Pada akhirnya, anda akan mempunyai pemahaman yang mendalam tentang mengapa masalah GGUF dan bagaimana untuk mula menggunakannya untuk model anda sendiri.
Artikel ini diterbitkan sebagai sebahagian daripada Blogathon Sains Data.
Perjalanan ke arah GGUF bermula dengan memahami evolusi kuantisasi model. Kuantisasi mengurangkan ketepatan parameter model, dengan berkesan memampatkannya untuk mengurangkan permintaan memori dan pengiraan. Inilah gambaran ringkas:
Pada masa -masa awal, model pembelajaran mendalam disimpan dalam format rangka kerja asli seperti Tensorflow dan Pytorch. Model Tensorflow yang digunakan .pb Fail, manakala Pytorch digunakan .pt atau .pth. Format ini bekerja untuk model yang lebih kecil tetapi membentangkan batasan:
Kebangkitan interoperabilitas merentasi kerangka menyebabkan pembangunan ONNX, yang membolehkan model bergerak antara persekitaran. Walau bagaimanapun, sementara ONNX menyediakan beberapa pengoptimuman, ia masih dibina terutamanya di sekitar berat ketepatan penuh dan menawarkan sokongan kuantisasi terhad.
Apabila model semakin besar, para penyelidik beralih kepada kuantisasi, yang memampatkan berat dari terapung 32-bit (FP32) hingga 16-bit (FP16) atau bahkan lebih rendah, seperti integer 8-bit (INT8). Pendekatan ini memotong keperluan memori dengan ketara, menjadikannya mungkin untuk menjalankan model pada lebih banyak jenis perkakasan. Contohnya:
# Import perpustakaan yang diperlukan obor import import obor.nn sebagai nn obor import # Langkah 1: Tentukan model rangkaian saraf yang mudah di pytorch Kelas Simplemodel (NN.Module): def __init __ (diri): super (simplemodel, diri) .__ init __ () self.fc1 = nn.linear (10, 50) # Lapisan yang disambungkan sepenuhnya self.fc2 = nn.linear (50, 20) # Lapisan yang disambungkan sepenuhnya kedua self.fc3 = nn.linear (20, 5) # lapisan output def forward (diri, x): x = obor.relu (self.fc1 (x)) # pengaktifan relu selepas lapisan pertama x = obor.relu (self.fc2 (x)) # pengaktifan relu selepas lapisan kedua x = self.fc3 (x) # lapisan output kembali x # Langkah 2: Mulakan model dan beralih ke mod penilaian Model = SimpleModel () model.eval () # Simpan model sebelum kuantisasi untuk rujukan obor.save (model, "simple_model.pth") # Langkah 3: Gunakan kuantisasi dinamik ke model # Di sini, kita hanya mengukur lapisan linear, menukar beratnya kepada int8 Quantized_model = quant.quantize_dynamic ( model, {nn.linear}, dtype = obor.qint8 ) # Simpan model kuantitatif obor.save (quantized_model, "quantized_simple_model.pth") # Contoh penggunaan model kuantitatif dengan data dummy dummy_input = obor.randn (1, 10) # Contoh Tensor input dengan 10 ciri output = kuantiti_model (dummy_input) Cetak ("Output Model Kuantiti:", Output)
Apabila bekerja dengan model bahasa yang besar, memahami perbezaan saiz antara versi asal dan kuantitatif adalah penting. Perbandingan ini bukan sahaja menyoroti manfaat pemampatan model tetapi juga memaklumkan strategi penempatan untuk penggunaan sumber yang cekap.
Import OS # Laluan ke model yang disimpan original_model_path = "simple_model.pth" Quantized_model_path = "Quantized_simple_model.pth" # Berfungsi untuk mendapatkan saiz fail dalam kb def get_file_size (jalan): size_bytes = os.path.getSize (Path) size_kb = size_bytes / 1024 # tukar ke kb Kembali size_kb # Periksa saiz model asal dan kuantitatif original_size = get_file_size (original_model_path) Quantized_size = get_file_size (quantized_model_path) cetak (f "saiz model asal: {original_size: .2f} kb") cetak (f "saiz model kuantitatif: {quantized_size: .2f} kb") cetak (f "pengurangan saiz: {((original_size - quantized_size) / original_size) * 100: .2f}%")
Walau bagaimanapun, ketepatan 8-bit tidak mencukupi untuk model bahasa yang sangat besar seperti GPT-3 atau LLAMA, yang mendorong perkembangan format baru seperti GGML dan, akhirnya, GGUF.
GGUF, atau format bersatu GPT generik, telah dibangunkan sebagai lanjutan kepada GGML untuk menyokong model yang lebih besar. Ia adalah format fail untuk menyimpan model untuk kesimpulan dengan GGML dan pelaksana berdasarkan GGML. GGUF adalah format binari yang direka untuk memuatkan dan menyimpan model cepat, dan untuk memudahkan bacaan. Model secara tradisinya dibangunkan menggunakan pytorch atau rangka kerja lain, dan kemudian ditukar kepada GGUF untuk digunakan dalam GGML.
GGUF adalah format fail pengganti untuk GGML, GGMF dan GGJT, dan direka untuk menjadi tidak jelas dengan mengandungi semua maklumat yang diperlukan untuk memuatkan model. Ia juga direka untuk diperluaskan, supaya maklumat baru dapat ditambah kepada model tanpa melanggar keserasian. Ia direka dengan tiga gol dalam fikiran:
Format GGUF bersinar untuk pemaju yang perlu menggunakan model besar dan sumber yang berat pada perkakasan terhad tanpa mengorbankan prestasi. Berikut adalah beberapa kelebihan teras:
Format GGUF menggunakan konvensyen penamaan khusus untuk memberikan maklumat model utama sekilas. Konvensyen ini membantu pengguna mengenal pasti ciri-ciri model penting seperti seni bina, saiz parameter, jenis penalaan halus, versi, jenis pengekodan, dan pengurusan model dan penggunaan data yang lebih mudah.
Konvensyen Penamaan GGUF mengikuti struktur ini:
Setiap komponen dalam nama memberikan wawasan tentang model:
Contoh penamaan
Sebelum menyelam ke dalam penukaran, pastikan anda mempunyai prasyarat berikut:
Teknik kuantisasi memainkan peranan penting dalam mengoptimumkan rangkaian saraf dengan mengurangkan saiz dan keperluan pengiraannya. Dengan menukarkan berat dan pengaktifan ketepatan tinggi untuk representasi bit yang lebih rendah, kaedah ini membolehkan penggunaan model yang cekap tanpa menjejaskan prestasi yang ketara.
Berikut adalah bagaimana anda boleh menukar model anda ke format GGUF.
Dalam kes ini, kami memilih model Flan-T5 Google untuk mengukur. Anda boleh mengikuti arahan untuk memuat turun model secara langsung dari Huggingface
! Pip Pasang Huggingface-Hub dari huggingface_hub import snapshot_download Model_ # Ganti dengan ID model yang ingin anda muat turun snapshot_download (repo_id = model_id, local_dir = "t5")
Kami menggunakan llama.cpp untuk mengukur model ke format gguf
! Git clone https://github.com/ggerganov/llama.cpp
Jika di Google Collaboratory, ikuti kod di bawah, jika tidak, anda boleh menavigasi ke direktori keperluan untuk memasang "Keperluan-CONVERT_HF_TO_GGUF.TXT"
! pip install -r /content/llama.cpp/requirements/requirements-convert_hf_to_gguf.txt
Tahap kuantisasi menentukan perdagangan antara saiz model dan ketepatan. Kuantisasi rendah (seperti 4-bit) menjimatkan memori tetapi boleh mengurangkan ketepatan. Sebagai contoh, jika anda menyasarkan penempatan CPU sahaja dan tidak memerlukan ketepatan maksimum, INT4 mungkin pilihan yang baik. Di sini kita memilih "Q8_0".
Jika di Google Collab, jalankan skrip di bawah, lain ikuti komen.
#! python {Path to conver_hf_to_gguf.py} {Path to hf_model} --outfile {name_of_outputfile.gguf} --outtype {kuantisasi jenis} ! python /content/llama.cpp/convert_hf_to_gguf.py/content/t5 --outfile t5.gguf --Outtype Q8_0
Apabila menggunakan model pembelajaran mesin, memahami perbezaan saiz antara versi asal dan kuantitatif adalah penting. Perbandingan ini menyoroti bagaimana kuantisasi dapat mengurangkan saiz model dengan ketara, yang membawa kepada kecekapan yang lebih baik dan masa kesimpulan yang lebih cepat tanpa kehilangan ketepatan yang besar.
# Periksa saiz model asal dan kuantitatif original_model_path = "/content/t5/model.safetensors" kuantiti_model_path = "t5.gguf" original_size = get_file_size (original_model_path) Quantized_size = get_file_size (quantized_model_path) cetak (f "saiz model asal: {original_size: .2f} kb") cetak (f "saiz model kuantitatif: {quantized_size: .2f} kb") cetak (f "pengurangan saiz: {((original_size - quantized_size) / original_size) * 100: .2f}%")
Kita dapat melihat pengurangan saiz 73.39% yang mengejutkan menggunakan teknik kuantisasi GGUF.
Untuk mendapatkan hasil yang terbaik, simpan petua ini:
Apabila model terus berkembang, format seperti GGUF akan memainkan peranan yang semakin kritikal dalam membuat AI berskala besar boleh diakses. Kami tidak lama lagi akan melihat teknik kuantisasi yang lebih maju yang mengekalkan ketepatan yang lebih tinggi sambil mengurangkan keperluan memori. Buat masa ini, GGUF kekal di barisan hadapan, membolehkan penggunaan model bahasa yang besar pada peranti CPU dan Edge.
Format GGUF adalah penukar permainan untuk menggunakan model bahasa yang besar dengan cekap pada peranti sumber terhad. Dari usaha awal dalam kuantisasi model kepada pembangunan GGUF, landskap penyimpanan model AI telah berkembang untuk membuat model yang kuat dapat diakses oleh penonton yang lebih luas. Dengan mengikuti panduan ini, kini anda boleh menukar model ke format GGUF, menjadikannya lebih mudah untuk menggunakannya untuk aplikasi dunia nyata.
Kuantisasi akan terus berkembang, tetapi keupayaan GGUF untuk menyokong tahap ketepatan yang berbeza -beza dan pengurusan metadata yang cekap memastikan ia tetap relevan. Cuba menukar model anda ke GGUF dan meneroka manfaat secara langsung!
A. GGUF (format bersatu GPT generik) adalah format penyimpanan model canggih yang direka untuk menyimpan dan menjalankan model bahasa besar yang dikira. Tidak seperti pendahulunya, GGML, yang mempunyai skalabilitas terhad untuk model melebihi 100GB, GGUF menyokong pilihan kuantisasi 4-bit dan 8-bit yang luas dan menyediakan keupayaan penyimpanan metadata yang kaya, meningkatkan pengurusan model dan penempatan.
S2. Bagaimanakah prestasi model kesan kuantisasi?A. Kuantisasi mengurangkan ketepatan parameter model, dengan ketara mengurangkan saiz dan penggunaan memori. Walaupun ia boleh menyebabkan sedikit ketepatan, teknik kuantisasi yang direka dengan baik (seperti yang ada di GGUF) dapat mengekalkan tahap prestasi yang boleh diterima, menjadikannya mungkin untuk menggunakan model besar pada peranti yang dikendalikan oleh sumber.
Q3. Apakah komponen utama konvensyen penamaan GGUF?A. Konvensyen Penamaan GGUF terdiri daripada beberapa komponen, termasuk nama bas (seni bina model), Sizelabel (kelas berat parameter), Finetune (matlamat penalaan), versi (nombor versi model), pengekodan (skema pengekodan berat), jenis (tujuan fail) Bersama -sama, komponen ini memberikan maklumat penting mengenai model ini.
Q4. Bagaimana saya boleh mengesahkan nama fail GGUF?A. Anda boleh mengesahkan nama fail GGUF menggunakan ekspresi biasa yang memeriksa kehadiran sekurang -kurangnya nama base, sizelabel, dan versi dalam urutan yang betul. Ini memastikan fail mematuhi konvensyen penamaan dan mengandungi maklumat yang diperlukan untuk pengenalan model.
Media yang ditunjukkan dalam artikel ini tidak dimiliki oleh Analytics Vidhya dan digunakan atas budi bicara penulis.
Atas ialah kandungan terperinci Bagaimana cara menukar model ke format GGUF?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!