|
|
--- |
|
|
base_model: |
|
|
- nxvay/Frasa-1B-v0.1 |
|
|
tags: |
|
|
- text-generation-inference |
|
|
- transformers |
|
|
- unsloth |
|
|
- llama |
|
|
- trl |
|
|
- frasa |
|
|
license: apache-2.0 |
|
|
language: |
|
|
- en |
|
|
- id |
|
|
datasets: |
|
|
- wikimedia/wikipedia |
|
|
- FreedomIntelligence/alpaca-gpt4-indonesian |
|
|
--- |
|
|
|
|
|
# Frasa-1B-v0.2 (Not for Use) |
|
|
|
|
|
----- |
|
|
|
|
|
 |
|
|
|
|
|
## Model Overview |
|
|
`Frasa-1B-v0.2` adalah model bahasa besar (LLM) yang merupakan hasil Continual Pretraining (CPT) & Fine-tune Conversational dari model dasar [Frasa-1B-v0.1](https://huggingface.co/nxvay/Frasa-1B-v0.1) dengan fokus pada peningkatan pemahaman bahasa Indonesia. Model ini dilatih menggunakan **subset 10% dari dataset Wikipedia berbahasa Indonesia** & dataset Alpaca GPT4 Indonesian (dengan hanya 120 steps), menjadikannya fondasi yang cukup kuat untuk tugas-tugas generatif dalam Bahasa Indonesia. |
|
|
|
|
|
Model ini dibangun dengan framework Unsloth.ai untuk efisiensi pelatihan yang maksimal. |
|
|
|
|
|
## Bagaimana Model Ini Dibuat |
|
|
Model `Frasa-1B-v0.2` dihasilkan melalui proses Continual Pretraining (CPT) & Fine-tune Conversational dengan langkah-langkah berikut: |
|
|
|
|
|
* **Base Model:** `nxvay/Frasa-1B-v0.1` |
|
|
* **Framework:** [Unsloth.ai](https://github.com/unslothai/unsloth) |
|
|
* **Kuantisasi:** 4-bit (via `load_in_4bit=True`) untuk efisiensi memori. |
|
|
* **Teknik Fine-tuning:** LoRA (Low-Rank Adaptation) |
|
|
* `r = 128` |
|
|
* `lora_alpha = 32` |
|
|
* `target_modules`: `["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj", "embed_tokens", "lm_head"]` (Modul `embed_tokens` dan `lm_head` disertakan untuk adaptasi pengetahuan yang lebih dalam selama CPT). |
|
|
* `use_gradient_checkpointing = "unsloth"` |
|
|
* `use_rslora = True` |
|
|
* **Dataset Pelatihan:** |
|
|
* `wikimedia/wikipedia` (versi `20231101.id`, diambil **10% dari set `train`**) |
|
|
* `FreedomIntelligence/alpaca-gpt4-indonesian` |
|
|
* **Pemformatan Data:** Setiap entri Wikipedia diformat menggunakan template spesifik untuk CPT: |
|
|
``` |
|
|
Artikel Wikipedia |
|
|
### Judul: [Judul Artikel] |
|
|
|
|
|
### Artikel: |
|
|
[Isi Artikel]</s> |
|
|
``` |
|
|
* **Hyperparameter Pelatihan:** |
|
|
* `per_device_train_batch_size = 2` |
|
|
* `gradient_accumulation_steps = 8` (Effective batch size: 16) |
|
|
* `max_steps = 120` |
|
|
* `warmup_steps = 10` |
|
|
* `learning_rate = 5e-5` |
|
|
* `embedding_learning_rate = 1e-5` |
|
|
* `optim = "adamw_8bit"` |
|
|
* `lr_scheduler_type = "linear"` |
|
|
|
|
|
## Cara Menggunakan Model Ini |
|
|
Model ini paling cocok sebagai **base model yang lebih baik untuk *fine-tuning* lanjutan** (terutama *instruction-tuning* atau *domain-specific fine-tuning*) di Bahasa Indonesia. Karena ini adalah hasil CPT, model ini belum dioptimalkan untuk mengikuti instruksi atau berdialog secara langsung. |
|
|
|
|
|
### Memuat Model dengan Unsloth |
|
|
Anda bisa memuat model ini dengan mudah menggunakan Unsloth: |
|
|
|
|
|
```python |
|
|
from unsloth import FastLanguageModel |
|
|
import torch |
|
|
|
|
|
model_name = "nxvay/Frasa-1B-v0.2" |
|
|
max_seq_length = 2048 |
|
|
dtype = torch.bfloat16 |
|
|
load_in_4bit = True |
|
|
|
|
|
model, tokenizer = FastLanguageModel.from_pretrained( |
|
|
model_name = model_name, |
|
|
max_seq_length = max_seq_length, |
|
|
dtype = dtype, |
|
|
load_in_4bit = load_in_4bit, |
|
|
) |
|
|
|
|
|
FastLanguageModel.for_inference(model) |
|
|
``` |
|
|
|
|
|
### Contoh Inferensi (Generasi Teks Dasar) |
|
|
Untuk contoh penggunaan, model ini akan melanjutkan teks berdasarkan pola yang dipelajari dari Wikipedia. Karena ini adalah model CPT, Anda mungkin tidak mendapatkan respons dialogik secara langsung. |
|
|
|
|
|
```python |
|
|
from transformers import TextStreamer |
|
|
|
|
|
alpaca_prompt = """Berikut adalah perintah yang menjelaskan tugas tersebut. Tulis respons yang melengkapi permintaan dengan benar. |
|
|
### Instruksi: |
|
|
{} |
|
|
|
|
|
### Respons: |
|
|
{}""" |
|
|
|
|
|
inputs = tokenizer( |
|
|
[ |
|
|
alpaca_prompt.format( |
|
|
"Bagaimana dengan musik Indonesia?", |
|
|
"", |
|
|
) |
|
|
], return_tensors = "pt").to("cuda") |
|
|
|
|
|
from transformers import TextStreamer |
|
|
text_streamer = TextStreamer(tokenizer) |
|
|
print("Model sedang menghasilkan respons:") |
|
|
_ = model.generate( |
|
|
**inputs, |
|
|
streamer = text_streamer, |
|
|
max_new_tokens = 512, |
|
|
do_sample = True, |
|
|
temperature = 0.7, |
|
|
top_p = 0.9, |
|
|
pad_token_id = tokenizer.eos_token_id, |
|
|
) |
|
|
``` |
|
|
|
|
|
## Potensi Penggunaan |
|
|
* **Dasar untuk *Instruction Tuning*:** Model ini dapat digunakan sebagai *base model* untuk *fine-tuning* lebih lanjut dengan dataset instruksi Bahasa Indonesia (seperti ShareGPT-Indonesian yang diformat ChatML) untuk menciptakan asisten AI yang mampu berdialog. |
|
|
* **Penelitian dan Pengembangan:** Dapat berfungsi sebagai *checkpoint* untuk eksplorasi lebih lanjut dalam *continual pretraining* bahasa Indonesia atau adaptasi domain. |
|
|
|
|
|
## Lisensi |
|
|
|
|
|
Model ini dilisensikan di bawah [Apache 2.0 License](https://www.apache.org/licenses/LICENSE-2.0). |
|
|
|
|
|
----- |