Views
No views yet
himalaya-ai/nepali-sft-dataset dataset.google/gemma-4-E2B-it. It is designed for Nepali instruction-following tasks, Nepali question answering, Nepali text generation, and simple Nepali chatbot-style interaction.peft library.himalaya-ai/nepali-sft-dataset| Setting | Value |
|---|---|
| Base model | google/gemma-4-E2B-it |
| Dataset | himalaya-ai/nepali-sft-dataset |
| Number of epochs | 1 |
| Max sequence length | 2048 |
| Per-device train batch size | 4 |
| Per-device eval batch size | 4 |
| Gradient accumulation steps | 4 |
| Effective batch size | 16 |
| Learning rate | 2e-4 |
| LR scheduler | Cosine |
| Warmup ratio | 0.03 |
| Weight decay | 0.0 |
| Max grad norm | 0.3 |
| LoRA rank | 32 |
| LoRA alpha | 64 |
| LoRA dropout | 0.05 |
| Evaluation fraction | 0.005 |
| Split seed | 42 |
pip install -U transformers peft accelerate bitsandbytes torch1import torch
2from peft import PeftModel
3from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
4
5base_model_id = "google/gemma-4-E2B-it"
6adapter_id = "himalaya-ai/gemma4-e2b-it-nepali"
7
8bnb_config = BitsAndBytesConfig(
9 load_in_4bit=True,
10 bnb_4bit_quant_type="nf4",
11 bnb_4bit_compute_dtype=torch.bfloat16,
12 bnb_4bit_use_double_quant=True,
13)
14
15base_model = AutoModelForCausalLM.from_pretrained(
16 base_model_id,
17 quantization_config=bnb_config,
18 device_map="auto",
19 dtype=torch.bfloat16,
20)
21
22model = PeftModel.from_pretrained(base_model, adapter_id)
23model.eval()
24
25tokenizer = AutoTokenizer.from_pretrained(adapter_id)1import torch
2
3@torch.inference_mode()
4def chat(model, tokenizer, user_text, system=None):
5 messages = []
6 if system:
7 messages.append({"role": "system", "content": system})
8 messages.append({"role": "user", "content": user_text})
9
10 inputs = tokenizer.apply_chat_template(
11 messages,
12 add_generation_prompt=True,
13 return_tensors="pt",
14 return_dict=True,
15 ).to(model.device)
16
17 outputs = model.generate(
18 **inputs,
19 max_new_tokens=512,
20 do_sample=True,
21 temperature=0.7,
22 top_p=0.9,
23 repetition_penalty=1.05,
24 pad_token_id=tokenizer.eos_token_id,
25 )
26
27 input_length = inputs["input_ids"].shape[-1]
28 new_tokens = outputs[0, input_length:]
29 return tokenizer.decode(new_tokens, skip_special_tokens=True).strip()
30
31system_prompt = "You are a helpful AI assistant that answers in Nepali."
32prompt = "नेपालको राजधानी कहाँ हो?"
33response = chat(model, tokenizer, prompt, system=system_prompt)
34print(response)