初始化项目,由ModelHub XC社区提供模型
Model: Mix80/ClinicaQwen-MedQA Source: Original Platform
This commit is contained in:
96
README.md
Normal file
96
README.md
Normal file
@@ -0,0 +1,96 @@
|
||||
---
|
||||
license: apache-2.0
|
||||
base_model: Qwen/Qwen2.5-1.5B
|
||||
tags:
|
||||
- medical
|
||||
- text-generation
|
||||
- fine-tuned
|
||||
- qa
|
||||
metrics:
|
||||
- perplexity
|
||||
pipeline_tag: text-generation
|
||||
---
|
||||
|
||||
# ClinicaQwen-MedQA (1.5B)
|
||||
|
||||
**ClinicaQwen-MedQA** is a lightweight, hyper-specialized medical question-answering assistant. It is built upon the robust `Qwen/Qwen2.5-1.5B` architecture and has undergone a rigorous dual-stage training pipeline to eliminate hallucinations and maximize clinical accuracy while remaining deployable on low-VRAM edge hardware.
|
||||
|
||||
## 🌟 Key Features
|
||||
- **Dual-Stage Optimized:** Trained sequentially for deep medical terminology comprehension and strict conversational QA alignment.
|
||||
- **Completion-Loss Masked:** Fine-tuned using masked training targets to eliminate prompt mirroring ("echo bugs").
|
||||
- **Ultra-Efficient:** Runs seamlessly in native `bfloat16` precision on consumer or serverless GPU instances (e.g., RunPod, vLLM).
|
||||
|
||||
## 📊 Training & Evaluation Performance
|
||||
|
||||
### Stage 1: Medical Knowledge Injection
|
||||
- **Dataset:** `gamino/wiki_medical_terms`
|
||||
- **Final Evaluation Loss:** 2.0314
|
||||
- **Perplexity:** 7.63
|
||||
|
||||
### Stage 2: Conversational QA Alignment
|
||||
- **Dataset:** `medalpaca/medical_meadow_medical_flashcards`
|
||||
- **Final Evaluation Loss:** 0.9755
|
||||
- **Perplexity:** 2.65
|
||||
|
||||
---
|
||||
|
||||
## 🚀 How to Use (Python Example)
|
||||
|
||||
You can load and query **ClinicaQwen-MedQA** directly using the Hugging Face `transformers` library. Ensure your inference script uses low temperatures for maximum medical accuracy.
|
||||
|
||||
### Installation
|
||||
```bash
|
||||
pip install torch transformers acceleration safetensors
|
||||
```
|
||||
|
||||
### Inference Code
|
||||
```python
|
||||
import torch
|
||||
from transformers import AutoModelForCausalLM, AutoTokenizer
|
||||
|
||||
model_id = "Mix80/ClinicaQwen-MedQA"
|
||||
|
||||
print("Loading ClinicaQwen-MedQA...")
|
||||
tokenizer = AutoTokenizer.from_pretrained(model_id)
|
||||
model = AutoModelForCausalLM.from_pretrained(
|
||||
model_id,
|
||||
torch_dtype=torch.bfloat16,
|
||||
device_map="auto"
|
||||
)
|
||||
|
||||
def ask_clinica_qwen(question, max_new_tokens=150):
|
||||
# Construct the strict conversational template
|
||||
prompt = f"User: {question}\nBot:"
|
||||
|
||||
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
|
||||
|
||||
outputs = model.generate(
|
||||
**inputs,
|
||||
max_new_tokens=max_new_tokens,
|
||||
temperature=0.1, # Crucial: Low temp ensures strict factual adherence
|
||||
top_p=0.85,
|
||||
do_sample=True,
|
||||
repetition_penalty=1.3, # Prevents linguistic loops
|
||||
no_repeat_ngram_size=3,
|
||||
pad_token_id=tokenizer.eos_token_id
|
||||
)
|
||||
|
||||
# Extract only the generated answer tokens, skipping the prompt prefix
|
||||
prompt_length = inputs.input_ids.shape[1]
|
||||
generated_tokens = outputs[0][prompt_length:]
|
||||
|
||||
answer = tokenizer.decode(generated_tokens, skip_special_tokens=True).strip()
|
||||
return answer
|
||||
|
||||
# Test the model
|
||||
sample_query = "What are the key differences between a tension headache and a migraine?"
|
||||
response = ask_clinica_qwen(sample_query)
|
||||
|
||||
print(f"\nQuestion: {sample_query}")
|
||||
print(f"ClinicaQwen: {response}")
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ Disclaimer
|
||||
*ClinicaQwen-MedQA is an AI research model developed for educational and experimental data extraction purposes. It is not a licensed medical tool and should not be used as a substitute for professional clinical diagnosis, advice, or treatment workflows.*
|
||||
Reference in New Issue
Block a user