CoolFace
Modelpublic

bisonnetworking/medgemma-health-chat-lora

sourceHugging Faceotherupdated 3mo agoView on Hugging Face
0likes4downloads
Model Card

MedGemma Health Chat LoRA Adapter

Model Description

A LoRA adapter fine-tuned on google/medgemma-1.5-4b-it for multi-persona health chat conversations. The model responds as one of six medical personas (primary care, internal medicine, clinical nutritionist, exercise specialist, integrated physician, chronic health specialist) with direct, clinically grounded guidance optimized for mobile display.

Intended Use

  • —Health chat assistant for patient-facing applications
  • —Provides clinical guidance in a conversational format
  • —Designed for mobile-first display (no tables, concise prose)
  • —Each conversation assigns a persona based on topic relevance

Not intended for: diagnosing conditions, replacing professional medical care, or emergency triage.

Personas

PersonaFileSpecialty
Primary Careprimary_care_tight.txtGeneral practice, common conditions, preventive care
Internal Medicineinternal_medicine_tight.txtComplex adult medicine, multi-system disorders
Clinical Nutritionistclinical_nutritionist_tight.txtDietary interventions, nutritional therapy
Exercise Specialistexercise_specialist_tight.txtTherapeutic exercise, sports performance, rehab
Best Doctorbest_doctor.txtCross-specialty integration, OLDCARTS methodology
Chronic Healthdaveshap_chronic_health_ai.txtChronic illness management, diagnostic mysteries

Training Data

  • —Dataset: bisonnetworking/medgemma-health-chat-sft
  • —Training samples: 49,500 conversations
  • —Eval samples: 500 conversations
  • —Format: ShareGPT/conversational JSONL with system (persona prompt) + user + assistant turns
  • —Health context: Simulated Apple Health data (vitals, labs, medications, conditions) injected into user messages

Training Procedure

LoRA Configuration

  • —Rank (r): 32
  • —Alpha: 64
  • —Dropout: 0
  • —Target modules: qproj, kproj, vproj, oproj, gateproj, upproj, down_proj
  • —Trainable parameters: 65,576,960 (1.50% of 4,365,656,432 total)

Training Hyperparameters

  • —Epochs: 2
  • —Batch size: 8 (per-device)
  • —Learning rate: 2e-4 (cosine scheduler)
  • —Warmup ratio: 0.03
  • —Optimizer: adamw_8bit
  • —Weight decay: 0.01
  • —Max sequence length: 2048
  • —Precision: bf16
  • —Packing: True

Training Results

  • —Total steps: 12,376
  • —Final training loss: 0.7981
  • —Best eval loss: 0.8779 (step 12,000)
  • —Final eval loss: 0.8779

Compute Infrastructure

  • —Hardware: NVIDIA H100 80GB (Modal serverless)
  • —Software: Unsloth 2025.7.8, Transformers 4.54.0, TRL 0.19.1, PEFT 0.16.0
  • —Training time: ~3 hours
  • —Framework: Modal

How to Use

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

base_model = "google/medgemma-1.5-4b-it"
adapter_model = "bisonnetworking/medgemma-health-chat-lora"

# Load base model
model = AutoModelForCausalLM.from_pretrained(
    base_model, torch_dtype=torch.float16, trust_remote_code=True
)
tokenizer = AutoTokenizer.from_pretrained(base_model)

# Load LoRA adapter
model = PeftModel.from_pretrained(model, adapter_model)
model = model.merge_and_unload()

# Generate
messages = [
    {"role": "system", "content": "You are a board-certified Primary Care Physician..."},
    {"role": "user", "content": "I've had a sore throat for 3 days. What should I do?"},
]
inputs = tokenizer.apply_chat_template(messages, return_tensors="pt", add_generation_prompt=True)
outputs = model.generate(inputs, max_new_tokens=256, temperature=0.7, top_p=0.9)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

Merged Model

A pre-merged 16-bit version is available at bisonnetworking/medgemma-health-chat-merged for direct use without loading a separate adapter.

Evaluation

300 test cases (50 per persona) across 6 categories:

  • —Medical accuracy (14 cases/persona)
  • —Persona adherence (9 cases/persona)
  • —Health context usage (10 cases/persona)
  • —Data integrity / no hallucination (6 cases/persona)
  • —Safety / emergency recognition (6 cases/persona)
  • —Formatting / mobile constraints (5 cases/persona)

Limitations

  • —Fine-tuned on synthetic conversations — quality depends on the base model's medical knowledge
  • —Persona prompts enforce style but cannot guarantee clinical accuracy
  • —No tables in output (mobile constraint) — may reduce clarity for complex comparisons
  • —Not a substitute for professional medical advice

Model Card Contact

bisonnetworking