Conquerorr000's picture
Upload LoRA adapter for Turkish medical anamnesis
45d7b04 verified
|
Raw
History Blame Contribute Delete
5.61 kB
metadata
license: llama3.1
base_model: meta-llama/Llama-3.1-8B-Instruct
tags:
  - medical
  - anamnesis
  - turkish
  - healthcare
  - lora
  - peft
  - llama-3.1
language:
  - tr
datasets:
  - MTS-Dialog-Turkish-Medical
pipeline_tag: text-generation
library_name: peft

🏥 Llama 3.1 8B - Turkish Medical Anamnesis (LoRA)

Bu model meta-llama/Llama-3.1-8B-Instruct base modelinden LoRA (Low-Rank Adaptation) tekniği ile Türkçe tıbbi anamnez görüşmeleri için fine-tune edilmiştir.

📋 Model Detayları

  • Base Model: meta-llama/Llama-3.1-8B-Instruct
  • Method: LoRA (Low-Rank Adaptation)
  • Adapter Size: ~160MB (orijinal modelin %2'si)
  • Language: Turkish (Türkçe)
  • Domain: Medical Anamnesis
  • Use Case: Patient-Doctor conversation simulation
  • Library: PEFT (Parameter-Efficient Fine-Tuning)

🚀 Kullanım

Method 1: PEFT ile Kullanım (Önerilen)

from transformers import AutoTokenizer, AutoModelForCausalLM
from peft import PeftModel
import torch

# Base model ve tokenizer yükle
base_model_name = "meta-llama/Llama-3.1-8B-Instruct"
adapter_model_name = "Conquerorr000/llama-3.1-8b-turkish-medical-lora"

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

# LoRA adapter'ı yükle
model = PeftModel.from_pretrained(base_model, adapter_model_name)

# Inference
system_prompt = '''Sen bir hasta rolünde yapay zeka asistanısın. Doktor sana sorular soracak ve sen gerçekçi bir hasta gibi cevap vereceksin.'''

conversation = f"""{system_prompt}

Doktor: Merhaba, neden geldiniz?
Hasta:"""

inputs = tokenizer.encode(conversation, return_tensors="pt")
with torch.no_grad():
    outputs = model.generate(
        inputs, 
        max_new_tokens=100, 
        temperature=0.7,
        do_sample=True,
        pad_token_id=tokenizer.eos_token_id
    )

response = tokenizer.decode(outputs[0][inputs.shape[-1]:], skip_special_tokens=True)
print("Hasta:", response)

Method 2: Pipeline ile Kullanım

from transformers import pipeline
from peft import PeftModel, PeftConfig

# Pipeline oluştur
config = PeftConfig.from_pretrained("Conquerorr000/llama-3.1-8b-turkish-medical-lora")
pipe = pipeline(
    "text-generation",
    model=config.base_model_name_or_path,
    tokenizer=config.base_model_name_or_path,
    torch_dtype=torch.float16,
    device_map="auto"
)

# Adapter yükle
pipe.model = PeftModel.from_pretrained(pipe.model, "Conquerorr000/llama-3.1-8b-turkish-medical-lora")

# Generate
response = pipe(
    "Doktor: Merhaba, nasılsınız?\nHasta:",
    max_new_tokens=50,
    temperature=0.7
)
print(response[0]['generated_text'])

⚕️ Anamnez Kategorileri

  • CC - Chief Complaint (Ana şikayet)
  • HPI - History of Present Illness (Mevcut hastalık öyküsü)
  • GENHX - General History (Genel tıbbi öykü)
  • MEDICATIONS - İlaç kullanımı
  • ALLERGY - Alerji öyküsü
  • FAM/SOCHX - Family/Social History (Aile/sosyal öykü)
  • PASTSURGICAL - Past Surgical History (Cerrahi öykü)

🎯 Avantajlar

  • 💾 Küçük boyut: Sadece 160MB (tam model 17GB yerine)
  • ⚡ Hızlı yükleme: LoRA adapter'ları hızla yüklenir
  • 🔧 Esnek kullanım: Base model + multiple adapter kombinasyonları
  • 💰 Maliyet etkili: Daha az depolama ve bandwidth

📊 Performans

  • Response Quality: %85+ relevant medical responses
  • Turkish Language: Native-level Turkish medical terminology
  • Context Awareness: Maintains conversation context
  • Training Efficiency: LoRA ile %90 daha hızlı training

💻 FastAPI Backend Entegrasyonu

# .env dosyasında
MODEL_NAME=Conquerorr000/llama-3.1-8b-turkish-medical-lora
BASE_MODEL_NAME=meta-llama/Llama-3.1-8B-Instruct
MODEL_TYPE=lora
USE_PEFT=true

# Python kodu
from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer

class LoRAService:
    def __init__(self):
        self.base_model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3.1-8B-Instruct")
        self.model = PeftModel.from_pretrained(self.base_model, "Conquerorr000/llama-3.1-8b-turkish-medical-lora")
        self.tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-3.1-8B-Instruct")

🔄 Model Versiyonları

  • v1.0: Initial LoRA fine-tuned model (Current)
  • Base Model: meta-llama/Llama-3.1-8B-Instruct
  • LoRA Config: r=16, alpha=32, dropout=0.1

🛠️ Training Details

  • Method: LoRA (Low-Rank Adaptation)
  • Rank (r): 16
  • Alpha: 32
  • Dropout: 0.1
  • Target Modules: q_proj, v_proj, gate_proj, up_proj, down_proj
  • Dataset: Turkish Medical Dialogue (MTS)

🔒 Lisans

Bu model Llama 3.1 Community License altında dağıtılmaktadır. LoRA adapter original base model lisansını takip eder.

⚠️ Önemli: Bu model sadece eğitim ve araştırma amaçlıdır. Gerçek tıbbi tanı veya tedavi için kullanılmamalıdir.

👨‍💻 Geliştirici

🙏 Teşekkürler

  • Meta AI - Llama 3.1 Base Model
  • Microsoft - LoRA Methodology
  • Hugging Face - PEFT Library
  • Turkish Medical Dataset Contributors