Proje Dosyaları: https://huggingface.co/muserrefselcukozdemir/ilac-asistani

Farmasötik Bilgi Retrieval Modeli (Türkçe)

Model Tanımı:
Türk ilaç prospektüsleri üzerinde denetimli fine-tuning (SFT) uygulanmış, eczacılık bilgi sorgularını yanıtlayabilen LLaMA-3.2-3B tabanlı bir dil modeli adaptörüdür. Model, ilaçların etken maddeleri, endikasyonları, kontrendikasyonları ve kullanım şekilleri hakkında sorulara cevap vermek üzere optimize edilmiştir.


Model Mimarisi ve Eğitim Parametreleri

Taban Model Özellikleri

  • Mimari: LLaMA (Large Language Model Meta AI) Decoder-only Transformer
  • Versiyon: 3.2-3B-Instruct (3.2 milyar parametre)
  • Bağlama Penceresi: 131,072 token (128K)
  • Tokenizer: Byte Pair Encoding (BPE) - 128,256 vocab size
  • Orjinal Eğitim Dili: Çokdilli (İngilizce ağırlıklı, İngilizce dışı veri azınlıkta)

Fine-Tuning Konfigürasyonu

Parametre Değer Açıklama
Yöntem LoRA (Low-Rank Adaptation) Parametre verimli fine-tuning
Rank (r) 8 Adaptasyon matrislerinin rankı
Alpha 16 LoRA scaling parametresi (genellikle 2*r)
Dropout 0.0 Adaptasyon katmanlarında düzenlileştirme
Hedef Modüller q_proj, v_proj Attention katmanlarındaki projeksiyon matrisleri
Eğitim Tipi SFT (Supervised Fine-Tuning) Denetimli öğrenme
Loss Fonksiyonu Cross-Entropy Standart dil modelleme kaybı
Optimizer AdamW Ağırlık decay'li Adam
Learning Rate 3e-5 Başlangıç öğrenme oranı
LR Scheduler Cosine with Warmup Kosinüssel azalma, 10% warmup
Epoch Sayısı 5 Tam veri seti üzerinden geçiş sayısı
Batch Size 1 (eff: 8) Cihaz başına 1, gradyan biriktirme ile efektif 8
Weight Decay 0.01 L2 düzenlileştirme
Precision FP16 (Mixed) 16-bit kayan nokta hassasiyeti
Gradient Checkpointing Aktif Bellek optimizasyonu için

Veri Seti Özellikleri

Kaynak ve Format

  • Veri Tipi: İlaç prospektüslerinden türetilmiş Soru-Cevap (Q&A) çiftleri
  • Format: Alpaca JSON formatı (instruction-context-response yapısı)
  • Dil: Türkçe (Özel medikal terminoloji içerir)
  • Örnek Sayısı: 697 eğitim örneği (800'e yakın ham veri, sonrasında filtreleme)
  • Ortalama Token Uzunluğu: Girdi ~120 token, Çıktı ~80 token

Kapsanan İlaçlar ve Kategoriler

İlaç Adı ATC Kodu Kategori Temel Endikasyonlar
Arveles M01AE NSAİİ Ağrı, iltihap, ateş
Augmentin J01CR Antibiyotik Bakteriyel enfeksiyonlar
Cipralex N06AB Antidepresan Depresyon, anksiyete
Coraspin B01AC Antikoagülan Tromboz önleme
Enfluvir J05AH Antiviral İnfluenza A/B
Janumet A10BD Antidiyabetik Tip 2 diabetes
Parol N02BE Analjezik Ağrı, ateş

Veri Ön İşleme

  1. Tokenizasyon: LLaMA-3.2 chat template uygulandı (<|begin_of_text|>, <|start_header_id|>, vb.)
  2. Maskeleme: Sadece asistan cevapları üzerinde gradyan hesaplandı (instruction/context maskelendi)
  3. Truncation: 2048 token cutoff (veri seti bu sınırın altında kaldı)
  4. Encoding: UTF-8, Türkçe karakterler korundu

Çıkarım (Inference) Rehberi

Gereksinimler

pip install torch transformers accelerate peft huggingface_hub
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel

# Model ve tokenizer yükleme
base_model_id = "unsloth/Llama-3.2-3B-Instruct"
adapter_id = "Defkhan5960/ilac-asistani"  # Repo adı

tokenizer = AutoTokenizer.from_pretrained(base_model_id)
base_model = AutoModelForCausalLM.from_pretrained(
    base_model_id,
    torch_dtype=torch.float16,
    device_map="auto"
)

# LoRA adaptörünü birleştirme
model = PeftModel.from_pretrained(base_model, adapter_id)
model.eval()

# Örnek sorgu
messages = [
    {
        "role": "system", 
        "content": "Sen yardımcı bir eczacı asistanısın. Türkçe olarak ilaçlar hakkında doğru ve güvenilir bilgi verirsin."
    },
    {
        "role": "user", 
        "content": "ARVELES enjeksiyonun etkin maddesi nedir?"
    }
]

# Chat template uygulama
input_text = tokenizer.apply_chat_template(
    messages, 
    tokenize=False, 
    add_generation_prompt=True
)
inputs = tokenizer(input_text, return_tensors="pt").to("cuda")

# Üretim parametreleri
outputs = model.generate(
    input_ids=inputs.input_ids,
    attention_mask=inputs.attention_mask,
    max_new_tokens=200,
    temperature=0.3,        # Düşük sıcaklık: deterministik çıktı
    top_p=0.9,             # Nucleus sampling
    repetition_penalty=1.2, # Tekrarları önleme
    do_sample=True
)

# Sadece yeni üretilen tokenları decode etme
response = tokenizer.decode(
    outputs[0][inputs.input_ids.shape[1]:], 
    skip_special_tokens=True
)
print(response)
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for muserrefselcukozdemir/ilac-asistani

Adapter
(393)
this model

Evaluation results