Chatbot Kesehatan Bahasa Indonesia (Fine-tuned LLM 1B)

Ini adalah model bahasa besar (LLM) 1 miliar parameter yang telah di-fine-tune menggunakan teknik QLoRA 4-bit Quantization dengan dataset berbahasa Indonesia yang berfokus pada informasi kesehatan. Model ini dirancang untuk berfungsi sebagai chatbot asisten AI di bidang kesehatan secara umum.

Tujuan

Model ini dioptimalkan untuk memberikan jawaban yang akurat dan helpful terkait pertanyaan-pertanyaan seputar kesehatan dalam Bahasa Indonesia. Fine-tuning ini bertujuan untuk membuat model lebih ahli dalam domain medis spesifik ini.

Dataset

Dataset yang digunakan adalah kumpulan data berbahasa Indonesia terkait berbagai topik kesehatan, yang berisi berbagai intent, pola pertanyaan, dan respons relevan.

Parameter Fine-tuning

  • Base Model: Llama 3.2 1B Instruct (digunakan sebagai model dasar untuk fine-tuning)
  • Teknik: QLoRA (4-bit quantization)
  • LoRA Config:
    • r=16
    • lora_alpha=32
    • lora_dropout=0.05
    • target_modules: q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj
  • Training Arguments:
    • num_train_epochs=3
    • learning_rate=2e-4
    • per_device_train_batch_size=2
    • gradient_accumulation_steps=8
    • fp16=True
    • gradient_checkpointing=True

Penggunaan (Inference)

Anda dapat memuat model ini menggunakan library transformers:

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

model_id = "teguhnandi/rijanandi"

tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    torch_dtype=torch.float16, # Pastikan menggunakan torch.float16 atau bfloat16
    device_map='auto',
)

def generate_response(prompt, model, tokenizer, max_length=256):
    system_prompt = """Anda adalah asisten AI yang ahli dalam kesehatan dan perawatan. Berikan jawaban yang akurat, helpful, dan berdasarkan pengetahuan medis yang terpercaya. Jika tidak yakin, sarankan untuk berkonsultasi dengan profesional kesehatan."""

    full_prompt = f"""<|begin_of_text|><|start_header_id|>system<|end_header_id|>

{system_prompt}<|eot_id|><|start_header_id|>user<|end_header_id|>

{prompt}<|eot_id|><|start_header_id|>assistant<|end_header_id|>

"""

    inputs = tokenizer(full_prompt, return_tensors='pt').to(model.device)

    with torch.no_grad():
        outputs = model.generate(
            **inputs,
            max_new_tokens=max_length,
            temperature=0.7,
            top_p=0.9,
            do_sample=True,
            pad_token_id=tokenizer.eos_token_id,
        )

    response = tokenizer.decode(outputs[0], skip_special_tokens=True)
    if "<|start_header_id|>assistant<|end_header_id|>" in response:
        response = response.split("<|start_header_id|>assistant<|end_header_id|>
")[-1]
    response = response.replace("<|eot_id|>", "").strip()
    return response

# Contoh penggunaan
question = "Apa saja tips menjaga kesehatan secara umum?"
answer = generate_response(question, model, tokenizer)
print(f"Pertanyaan: {question}")
print(f"Jawaban: {answer}")

Catatan

Model ini masih dalam tahap pengembangan dan dapat ditingkatkan lebih lanjut dengan dataset yang lebih luas dan fine-tuning lanjutan.

Downloads last month
279
Safetensors
Model size
1B params
Tensor type
F16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support