Transformers documentation
Llama3
Model ini dipublikasikan di HF papers pada 2024-07-31 dan disumbangkan ke Hugging Face Transformers pada 2024-04-24.
Llama3
import torch
import transformers
model_id = "meta-llama/Meta-Llama-3-8B"
pipeline = transformers.pipeline("text-generation", model=model_id, model_kwargs={"dtype": torch.bfloat16}, device_map="auto")
pipeline("Hey how are you doing today?")Ikhtisar
Model Llama3 diusulkan dalam Introducing Meta Llama 3: The most capable openly available LLM to date oleh tim meta AI.
Abstrak dari blogpost tersebut adalah sebagai berikut:
Hari ini, kami dengan senang hati membagikan dua model pertama dari generasi berikutnya Llama, yaitu Meta Llama 3, yang kini tersedia untuk penggunaan luas. Rilis ini mencakup model bahasa pra-terlatih dan yang telah dihaluskan dengan instruksi, masing-masing dengan 8B dan 70B parameter, yang mampu mendukung berbagai kasus penggunaan. Generasi Llama berikutnya ini menunjukkan kinerja terkini (state-of-the-art) pada berbagai benchmark industri dan menawarkan kemampuan baru, termasuk penalaran yang lebih baik. Kami yakin ini adalah model open source terbaik di kelasnya, tanpa pengecualian. Mendukung pendekatan terbuka kami yang telah lama berjalan, kami menyerahkan Llama 3 ke tangan komunitas. Kami ingin memulai gelombang inovasi berikutnya di bidang AI di seluruh tumpukan—mulai dari aplikasi hingga alat pengembang, evaluasi, optimasi inferensi, dan lainnya. Kami tidak sabar melihat apa yang akan Anda bangun dan menantikan umpan balik Anda.
Semua checkpoint model Llama3 dapat dilihat di sini. Kode asli dari para penulis dapat ditemukan di sini.
Tips penggunaan
Model
Llama3dilatih menggunakanbfloat16, tetapi inferensi aslinya menggunakanfloat16. Checkpoint yang diunggah di Hub menggunakandtype = 'float16', yang akan digunakan oleh APIAutoModeluntuk mengubah checkpoint daritorch.float32ketorch.float16.
dtypedari bobot online pada dasarnya tidak relevan kecuali Anda menggunakandtype="auto"saat menginisialisasi model denganmodel = AutoModelForCausalLM.from_pretrained("path", dtype = "auto"). Alasannya adalah model akan pertama kali diunduh (menggunakandtypedari checkpoint online), kemudian dikonversi kedtypedefault daritorch(menjaditorch.float32, device_map=“auto”), dan akhirnya, jika adadtypeatautorch_dtypeyang disediakan dalam config, nilai tersebut yang akan digunakan.Melatih model dalam
float16tidak disarankan dan diketahui menghasilkannan; oleh karena itu, model harus dilatih dalambfloat16.
Tips:
Bobot untuk model Llama3 dapat diperoleh dengan mengisi formulir ini
Arsitekturnya sama persis dengan Llama2.
Tokenizer ini adalah model BPE yang berbasis tiktoken (berbeda dengan yang berbasis implementasi sentencepiece untuk Llama2). Perbedaan utamanya adalah bahwa model ini mengabaikan aturan penggabungan BPE ketika token input merupakan bagian dari kosakata. Artinya, jika tidak ada penggabungan yang menghasilkan
"hugging", alih-alih memiliki unit terkecil, seperti["hug","ging"]yang membentuk 2 token, jika"hugging"merupakan bagian dari kosakata, token tersebut akan dikembalikan secara otomatis.Model asli menggunakan
pad_id = -1yang berarti tidak ada token padding. Kita tidak bisa menggunakan logika yang sama, pastikan untuk menambahkan token padding menggunakantokenizer.add_special_tokens({"pad_token":"<pad>"})dan sesuaikan ukuran token embedding secara sesuai. Anda juga harus mengaturmodel.config.pad_token_id. Lapisanembed_tokensdari model diinisialisasi denganself.embed_tokens = nn.Embedding(config.vocab_size, config.hidden_size, self.config.padding_idx), yang memastikan bahwa pengkodean token padding akan menghasilkan nol, sehingga disarankan untuk meneruskannya saat inisialisasi.Checkpoint asli dapat dikonversi menggunakan skrip konversi. Skrip ini dapat dipanggil dengan perintah (contoh) berikut:
python src/transformers/models/llama/convert_llama_weights_to_hf.py \ --input_dir /path/to/downloaded/llama/weights --model_size 7B --output_dir /output/path --llama_version 3Setelah konversi, model dan tokenizer dapat dimuat melalui:
from transformers import AutoModelForCausalLM, AutoTokenizer tokenizer = AutoTokenizer.from_pretrained("/output/path") model = AutoModelForCausalLM.from_pretrained("/output/path", device_map="auto")Perlu dicatat bahwa menjalankan skrip ini membutuhkan RAM CPU yang cukup untuk menampung seluruh model dalam presisi float16 (bahkan jika versi terbesar hadir dalam beberapa checkpoint, masing-masing checkpoint berisi sebagian dari setiap bobot model, sehingga kita perlu memuat semuanya ke dalam RAM). Untuk model 75B, dibutuhkan 145GB RAM.
Saat menggunakan Flash Attention 2 melalui
attn_implementation="flash_attention_2", jangan meneruskandtypeke metode kelasfrom_pretraineddan gunakan pelatihan Automatic Mixed-Precision. Saat menggunakanTrainer, cukup tentukanfp16ataubf16menjadiTrue. Jika tidak, pastikan Anda menggunakantorch.autocast. Hal ini diperlukan karena Flash Attention hanya mendukung tipe datafp16danbf16.
Sumber daya
Banyak sumber menarik yang sudah tersedia di halaman dokumentasi Llama2, mengundang kontributor untuk menambahkan sumber baru yang dikurasi khusus untuk Llama3 di sini! 🤗
Update on GitHub