# FLAN-UL2

## Ikhtisar

[Flan-UL2](https://www.yitay.net/blog/flan-ul2-20b) adalah model encoder decoder yang didasarkan pada arsitektur T5. Model ini menggunakan konfigurasi yang sama dengan model [UL2](ul2) yang dirilis pada awal tahun lalu. Model ini telah dihaluskan (fine tuned) menggunakan pengumpulan data dan penyetelan prompt "Flan". Mirip dengan `Flan-T5`, bobot FLAN-UL2 dapat digunakan secara langsung tanpa perlu melakukan penyetelan ulang (finetuning) model:

Menurut blog aslinya, berikut adalah peningkatan yang signifikan:

- Model UL2 asli hanya dilatih dengan receptive field 512, yang membuatnya kurang ideal untuk N-shot prompting di mana N bernilai besar.
- Checkpoint Flan-UL2 menggunakan receptive field sebesar 2048 yang membuatnya lebih dapat digunakan untuk few-shot in-context learning.
- Model UL2 asli juga memiliki token saklar mode yang cukup wajib untuk mendapatkan kinerja yang baik. Namun, token tersebut sedikit merepotkan karena hal ini sering memerlukan beberapa perubahan selama inferensi atau penyesuaian halus. Dalam pembaruan/perubahan ini, kami melanjutkan pelatihan UL2 20B selama 100k langkah tambahan (dengan batch kecil) untuk melupakan “token mode” sebelum menerapkan penyesuaian instruksi Flan. Checkpoint Flan-UL2 ini tidak lagi memerlukan token mode.
Google telah merilis varian berikut:

Checkpoint asli dapat ditemukan [di sini](https://github.com/google-research/google-research/tree/master/ul2).

## Menjalankan pada perangkat dengan sumber daya rendah

Model ini cukup berat (~40GB dalam presisi setengah) jadi jika Anda hanya ingin menjalankan model, pastikan Anda memuat model dalam 8bit, dan gunakan `device_map="auto"` untuk memastikan Anda tidak mengalami masalah OOM!

```python
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer, BitsAndBytesConfig

model = AutoModelForSeq2SeqLM.from_pretrained("google/flan-ul2", quantization_config=BitsAndBytesConfig(load_in_8bit=True), device_map="auto")
tokenizer = AutoTokenizer.from_pretrained("google/flan-ul2")

inputs = tokenizer("A step by step recipe to make bolognese pasta:", return_tensors="pt").to(model.device)
outputs = model.generate(**inputs)
print(tokenizer.batch_decode(outputs, skip_special_tokens=True))
['In a large skillet, brown the ground beef and onion over medium heat. Add the garlic']
```

Lihat [halaman dokumentasi T5](t5) untuk referensi API, tips, contoh kode, dan notebook.

