Transformers documentation

Llama3

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

and get access to the augmented documentation experience

to get started

Model ini dipublikasikan di HF papers pada 2024-07-31 dan disumbangkan ke Hugging Face Transformers pada 2024-04-24.

Llama3

Tensor parallelism
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 Llama3 dilatih menggunakan bfloat16, tetapi inferensi aslinya menggunakan float16. Checkpoint yang diunggah di Hub menggunakan dtype = 'float16', yang akan digunakan oleh API AutoModel untuk mengubah checkpoint dari torch.float32 ke torch.float16.

dtype dari bobot online pada dasarnya tidak relevan kecuali Anda menggunakan dtype="auto" saat menginisialisasi model dengan model = AutoModelForCausalLM.from_pretrained("path", dtype = "auto"). Alasannya adalah model akan pertama kali diunduh (menggunakan dtype dari checkpoint online), kemudian dikonversi ke dtype default dari torch (menjadi torch.float32, device_map=“auto”), dan akhirnya, jika ada dtype atau torch_dtype yang disediakan dalam config, nilai tersebut yang akan digunakan.

Melatih model dalam float16 tidak disarankan dan diketahui menghasilkan nan; oleh karena itu, model harus dilatih dalam bfloat16.

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 = -1 yang berarti tidak ada token padding. Kita tidak bisa menggunakan logika yang sama, pastikan untuk menambahkan token padding menggunakan tokenizer.add_special_tokens({"pad_token":"<pad>"}) dan sesuaikan ukuran token embedding secara sesuai. Anda juga harus mengatur model.config.pad_token_id. Lapisan embed_tokens dari model diinisialisasi dengan self.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 3
  • Setelah 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 meneruskan dtype ke metode kelas from_pretrained dan gunakan pelatihan Automatic Mixed-Precision. Saat menggunakan Trainer, cukup tentukan fp16 atau bf16 menjadi True. Jika tidak, pastikan Anda menggunakan torch.autocast. Hal ini diperlukan karena Flash Attention hanya mendukung tipe data fp16 dan bf16.

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