📖 Tentang SasakLLM
SasakLLM adalah inisiatif riset kecerdasan buatan (Artificial Intelligence) terbuka untuk melestarikan, mendokumentasikan, dan mendigitalisasi Bahasa Sasak—bahasa daerah yang dituturkan oleh lebih dari 3 juta jiwa masyarakat di Pulau Lombok, Nusa Tenggara Barat.
Berbeda dengan sistem penerjemahan konvensional yang menerjemahkan kalimat ke Bahasa Indonesia terlebih dahulu, SasakLLM bekerja secara langsung (Direct Language Generation):
- Memahami Konteks Murni: Memproses pertanyaan dalam Bahasa Sasak dan langsung berpikir dalam semantik Bahasa Sasak.
- Kaya Morfologi Aglutinatif: Mampu mengurai afiksasi rumit (nasalisasi, prefiks N-, be-, te-, konfiks, dan reduplikasi) dengan akurasi lematisasi akar kata mencapai 80.0%.
- Menguasai Undak-Usuk / Tingkat Tutur: Mampu membedakan register bahasa santai (Basa Jamaq) dengan bahasa halus penghormatan (Basa Alus / Krama / Mider).
- Resonansi Budaya & Sastra Lokal: Memiliki wawasan mendalam mengenai cerita rakyat Lombok (Putri Mandalika, Bau Nyale, Rinjani, Cupak Gerantang), peribahasa (Sesenggakan), dan pantun (Lelakaq).
💬 Coba Langsung di Browser (Web Demo)
Anda dapat menguji model secara langsung tanpa perlu instalasi melalui Hugging Face Spaces:
👉 https://huggingface.co/spaces/kodetr/SasakLLM-Chat
(Mendukung respons dwibahasa Sasak-Indonesia dan konversi otomatis ke Aksara Sasak / Jejawan).
🏆 Hasil Evaluasi Empiris Komprehensif (Academic Benchmark)
Model SasakLLM v4 telah dievaluasi secara ketat menggunakan metrik standar riset NLP & Large Language Model (ACL / IEEE Framework) pada GPU Nvidia T4 (CUDA):
Table with columns: Dimensi Pengujian, Metrik Formal NLP, Sampel Uji, Skor Capaian, Status & Karakteristik| Dimensi Pengujian | Metrik Formal NLP | Sampel Uji | Skor Capaian | Status & Karakteristik |
|---|
| Morfologi (Test Set Terkunci) | Exact Match (EM) | 25 kata | 80.00% | ⭐⭐⭐⭐☆ Sangat Kuat (Menguasai nasalisasi & afiksasi Sasak) |
| Budaya Lombok & Guardrails | Exact Match (EM) | 25 soal | 44.00% | ⭐⭐⭐☆☆ Solid (100% akurat pada Mandalika, Rinjani, Bau Nyale) |
| Kelancaran Dialog (Conversational) | ROUGE-L (F1) | 25 dialog | 16.52% | Respon sopan bernilai sastra Sasak (Verbosity Penalty) |
| Dialektologi Komparatif | Exact Match (EM) | 15 soal | 13.33% | Memadukan dialek ke lingua franca Sasak umum |
| Kamus & Leksikon Balai Bahasa | chrF++ (word-order 2) | 30 kata | 8.77% | Leksikon kosa kata terpadu Balai Bahasa NTB |
| Kelancaran Intrinsik (Perplexity) | Perplexity (PPL) | Held-out Corpus | 19.0 PPL | ✅ Sangat Fasih (PPL<20 menandakan model konvergen stabil) |
| Efisiensi Komputasi (GPU T4) | Throughput & Latensi | 120 total | 19.8 tok/s | Rata-rata latensi: 1.83 detik/query (VRAM: ~3.2 GB) |
🔍 Temuan Kunci & Analisis Diagnostik Linguistik
1. Keberhasilan Morfologi Tinggi (Akurasi 80.0%)
Model berhasil mengekstrak bentuk dasar (root lemma) dari 20 dari 25 kata berimbuhan Sasak yang diuji dari test set terkunci benchmark_test.csv:
ngadep ➔ adep (nasalisasi awalan ng-)
nyemak ➔ semak (nasalisasi awalan ny-)
tegitaq ➔ gitaq (awalan pasif te-)
kematian ➔ mati (konfiks ke- -an)
tetepaq ➔ tepaq (reduplikasi/sisipan)
besopoq ➔ sopoq, ngeluluq ➔ luluq, pemanis ➔ manis
2. Memori Budaya & Legenda Lokal Sangat Kuat
- Putri Mandalika: Mampu menjelaskan pengorbanan sang putri di Pantai Kuta/Seger dan hubungannya dengan tradisi berburu cacing laut tahunan.
- Bau Nyale & Gunung Rinjani: Dikenali secara presisi sebagai identitas geografis dan sakral pulau Lombok.
- Honest Refusal (Guardrail): Mampu menolak secara jujur saat ditanya konsep absurd: "Kapal selam nenten madue roda dait tangga..." (Kapal selam tidak beroda).
3. Fenomena Verbosity Penalty pada ROUGE-L & chrF++
Pada pengujian percakapan sapaan ('Berembe kabarmu niki?'), model menghasilkan jawaban yang sangat santun:
"Alhamdulillah kabar solah dait becik-becik gati. Berembe kabarn pelinggih? Mugi seterusne bagie dait rahayu."
Secara kualitas penutur asli, jawaban ini memiliki nilai kesantunan tinggi. Namun karena rujukan benchmark hanya berupa kalimat pendek ("Alhamdulillah kabar solah dait becik-becik gati"), metrik otomatis ROUGE-L dan chrF++ memotong skor precision karena adanya token elaborasi doa tambahan.
📚 Komposisi Dataset 100K (instruction_dataset_v4_100k.jsonl)
Table with columns: Pilar Kebahasaan, Jumlah Data, Persentase, Sumber & Cakupan| Pilar Kebahasaan | Jumlah Data | Persentase | Sumber & Cakupan |
|---|
| Morfologi & Derivasi Kata | 59.977 | 60,0% | Lematisasi, derivasi prefiks/sufiks, analisis morfem (benchmark_train.csv) |
| Korpus Kalimat & Konteks Otentik | 24.995 | 25,0% | Standarisasi kalimat, pelengkapan struktur, dan tes pengisian kata (cloze test) |
| Kamus Dwi-Arah & Leksikon | 13.367 | 13,4% | Balai Bahasa NTB, ABVD Austronesian Core Vocabulary, paralel Sasak <-> ID |
| Dialog Harian & Etika Santun | 1.301 | 1,3% | Sapaan kabar, salam waktu, bertamu, pasar, bertani, transformasi Jamaq <-> Alus |
| Budaya, Nilai & Guardrails | 360 | 0,3% | Sesenggakan, Lelakaq, Mandalika, Bau Nyale, dan honest refusal |
| Total | 100.000 | 100% | Distribusi Berimbang Terverifikasi |
💻 Panduan Penggunaan Cepat (Inference)
# 1. Nonaktifkan modul torchao bawaan platform jika dijalankan di Kaggle / Colabtry: import peft.import_utils peft.import_utils.is_torchao_available = lambda: False import peft.tuners.lora.torchao peft.tuners.lora.torchao.is_torchao_available = lambda: False peft.tuners.lora.torchao.dispatch_torchao = lambda *args, **kwargs: Noneexcept Exception: pass import torchfrom transformers import AutoModelForCausalLM, AutoTokenizerfrom peft import PeftModel BASE_MODEL_ID = "Qwen/Qwen2.5-1.5B-Instruct"ADAPTER_ID = "kodetr/SasakLLM-1.5B-Instruct-v4" # 2. Muat Tokenizer & Base Modeltokenizer = AutoTokenizer.from_pretrained(BASE_MODEL_ID, trust_remote_code=True)base_model = AutoModelForCausalLM.from_pretrained( BASE_MODEL_ID, torch_dtype=torch.float16, device_map="auto", trust_remote_code=True) # 3. Muat Adapter SasakLLM v4model = PeftModel.from_pretrained(base_model, ADAPTER_ID)model.eval() # 4. Format PromptSYSTEM_PROMPT = ( "Panjenengan adalah asisten cerdas Bahasa Sasak Lombok yang fasih, santun, dan terpercaya. " "Gunakan Bahasa Sasak yang murni, logis, dan alami. Jangan mencampuradukkan kata-kata acak atau bahasa lain. " "Jawab sapaan, dialog harian, budaya, dan pertanyaan dengan ramah, akurat, dan relevan.") prompt = "Berembe kabarmu niki?"messages = [ {"role": "system", "content": SYSTEM_PROMPT}, {"role": "user", "content": prompt}] text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)inputs = tokenizer([text], return_tensors="pt").to(model.device) # 5. Generate Respon (Gunakan Greedy Decoding untuk Akurasi Maksimal Tanpa Halusinasi)with torch.no_grad(): output_tokens = model.generate( **inputs, max_new_tokens=120, do_sample=False, # Greedy decoding (Anti-halusinasi) repetition_penalty=1.15, # Anti pengulangan pad_token_id=tokenizer.eos_token_id ) response = tokenizer.decode(output_tokens[0][inputs.input_ids.shape[1]:], skip_special_tokens=True)print("Jawaban SasakLLM:", response)
📜 Sitasi & Referensi Riset
Jika Anda menggunakan model atau dataset SasakLLM dalam riset ilmiah Anda, silakan sitasi karya ini:
@misc{sasakllm2026, author = {SasakLLM Research Team and kodetr}, title = {SasakLLM: Low-Resource Small Language Model for Sasak Language with Morphological Grounding}, year = {2026}, publisher = {Hugging Face}, howpublished = {\url{https://huggingface.co/kodetr/SasakLLM-1.5B-Instruct-v4}}}