🇹🇭 Model Card for Qwen2.5-32B-Instruct-medical-tuned
ℹ️ This version is significantly better than OpenThaiGPT!!.
Qwen2.5-32B-Instruct for Thai Medical QA
This model is fine-tuned from Qwen2.5-32B-Instruct
using Supervised Fine-Tuning (SFT) on the Thaweewat/thai-med-pack
dataset. It is designed for medical question-answering tasks in Thai, providing accurate and contextual answers based on medical information.
Model Description
This model was fine-tuned using Supervised Fine-Tuning (SFT) to enhance its capabilities for medical question answering in Thai. The base model is Qwen2.5-32B-Instruct
, which has been optimized with domain-specific knowledge using the Thaweewat/thai-med-pack
dataset.
- Model type: Causal Language Model (AutoModelForCausalLM)
- Language(s): Thai
- Fine-tuned from model: Qwen2.5-32B-Instruct
- Dataset used for fine-tuning: Thaweewat/thai-med-pack
Model Sources
- Repository: https://huggingface.co/amornpan
- Citing Repository: https://huggingface.co/Aekanun
- Base Model: https://huggingface.co/Qwen/Qwen2.5-32B-Instruct
- Dataset: https://huggingface.co/datasets/Thaweewat/thai-med-pack
Uses
Direct Use
The model can be used directly for generating medical responses in Thai. It has been optimized for:
- Medical question-answering
- Providing clinical information
- Health-related dialogue generation
Downstream Use
This model serves as a foundational model for medical assistance systems, chatbots, and applications related to healthcare in the Thai language.
Out-of-Scope Use
- This model should not be used for real-time diagnosis or emergency medical scenarios.
- It should not be relied upon for critical clinical decisions without human oversight, as it is not intended to replace professional medical advice.
Bias, Risks, and Limitations
Bias
- The model may reflect biases present in the dataset, especially regarding underrepresented medical conditions or topics.
Risks
- Responses may contain inaccuracies due to the model's inherent limitations and the dataset used for fine-tuning.
- The model should not be used as the sole source of medical advice.
Limitations
- Primarily limited to the medical domain.
- Sensitive to prompts and may generate off-topic responses for non-medical queries.
Model Training Statistics
Training Summary
- Total Steps: 1050
- Total Epochs: 98.25
- Validation Checks: 42
- Epoch with Lowest Validation Loss: 93.57
Performance Improvement
- Training Loss Reduction: 45.32%
- Validation Loss Reduction: 35.97%
- Final Training Loss: 1.0060
- Lowest Validation Loss: 1.1385
Loss Values
Metric | Initial | Final | Minimum |
---|---|---|---|
Training Loss | 1.8398 | 1.0060 | 1.0060 |
Validation Loss | 1.7782 | 1.1386 | 1.1385 |
Model Training Results:
How to Get Started with the Model
This section provides a step-by-step guide to loading and using the model for generating medical responses in Thai.
1. Install the Required Packages
#Import necessary libraries for working with the model
from peft import PeftModel, PeftConfig
from transformers import AutoModelForCausalLM, AutoTokenizer
2. Load Model and Tokenizer
#Set the model to amornpan/V3_qwen2.5-32b-med-thai-optimized
base_model_name = "amornpan/V3_qwen2.5-32b-med-thai-optimized"
# Load the model and tokenizer
model = AutoModelForCausalLM.from_pretrained(
base_model_name,
device_map="auto",
trust_remote_code=True
)
tokenizer = AutoTokenizer.from_pretrained(base_model_name, trust_remote_code=True)
3. Define Test Function
# Function for testing the model
def test_model(prompt, max_new_tokens=256):
system_prompt = "You are a question answering assistant. Answer the question as truthful and helpful as possible. คุณคือผู้ช่วยตอบคำถาม จงตอบคำถามอย่างถูกต้องและมีประโยชน์ที่สุด"
full_prompt = f"<s><|im_start|>system\n{system_prompt}<|im_end|>\n<|im_start|>user\n{prompt}<|im_end|>\n<|im_start|>assistant\n"
inputs = tokenizer(full_prompt, return_tensors="pt").to(model.device)
# Generate
generated_ids = model.generate(
**inputs,
max_new_tokens=max_new_tokens,
do_sample=True,
temperature=0.7,
top_p=0.9,
)
response = tokenizer.decode(generated_ids[0], skip_special_tokens=False)
# Extract only the assistant's response
assistant_response = response.split("<|im_start|>assistant\n")[-1].split("<|im_end|>")[0]
return assistant_response
4. Test with an Example Question
Show an example question
# Show an example question
example_question = "อาการของโรคเบาหวานมีอะไรบ้าง"
print(f"\nคำถาม: {example_question}")
response = test_model(example_question)
print(f"คำตอบ: {response}")
5. Output
คำถาม: การรักษาโรคความดันโลหิตสูงทำอย่างไร
คำตอบ: สวัสดี ความดันโลหิตสูงสามารถรักษาได้โดยการใช้ยาหลายชนิด เช่น เบนโซเพอรีซิน, อะโมโลนิด, ลิโซโปรตาซอล, อีลาฟอร์เท็ต,
อัลฟูราลิท, อะเซติซิลดิโพราเมต, อาราคานา, อาเนอโรนิก, อาเซติซิลสัมพันธ์, อาเนอโรนิก, อะเซติซิลสัมพันธ์ เป็นต้น
คุณสามารถปรึกษาแพทย์ผู้เชี่ยวชาญในเรื่องนี้เพื่อทราบข้อมูลเพิ่มเติมเกี่ยวกับยาดังกล่าว หวังว่าคำตอบของฉันจะเป็นประโยชน์สำหรับคุณ
ขอให้คุณมีสุขภาพที่ดี ขอบคุณที่เลือกใช้บริการของเรา หากคุณมีคำถามใด ๆ
คำถาม: ยา Paracetamol มีผลข้างเคียงอะไรบ้าง
คำตอบ: Paracetamol เป็นยาแก้ปวดและลดไข้ที่ใช้กันอย่างแพร่หลาย ซึ่งมีผลข้างเคียงน้อยกว่ายาแก้ปวดชนิดอื่นๆ โดยทั่วไปจะไม่มีผลข้างเคียงใดๆ
หากใช้ในขนาดที่แนะนำ แต่อาจพบได้ เช่น ปวดท้อง อาเจียน และรู้สึกคลื่นไส้ นอกจากนี้ หากใช้ในปริมาณที่มากเกินไป อาจทำให้มีอาการปัสสาวะขุ่น
มีสีเหลืองเข้ม เบื่ออาหาร คลื่นไส้ อาเจียน ปวดท้อง ปวดหัว ตาเหลือง หรือปัสสาวะสีเข้มเป็นสีชาโคล่า
หากมีอาการดังกล่าวควรหยุดการใช้ยาและรีบไปพบแพทย์เพื่อตรวจหาความเสียหายของตับจากยา
โดยการตรวจการทำงานของตับ ซึ่งหากพบว่ามีอาการของโรคตับวายเฉียบพลัน
👤 Authors
- Amornpan Phornchaicharoen ([email protected])
- Aekanun Thongtae ([email protected])
- Montita Somsoo ([email protected])