--- base_model: - Qwen/Qwen2.5-32B-Instruct datasets: - Thaweewat/thai-med-pack language: - th - en library_name: transformers pipeline_tag: text-generation tags: - text-generation-inference - sft - trl - 4-bit precision - bitsandbytes - LoRA - Fine-Tuning with LoRA - LLM - GenAI - medical - medtech - HealthGPT - NT Academy - minddatatech --- # 🇹🇭 **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: ![image/png](https://cdn-uploads.huggingface.co/production/uploads/663ce15f197afc063058dc3a/umzKEBp8lxBCp4nEieIIl.png) ![image/png](https://cdn-uploads.huggingface.co/production/uploads/663ce15f197afc063058dc3a/Z0pU0MVz4AhSq3B5dT_fn.png) ![image/png](https://cdn-uploads.huggingface.co/production/uploads/663ce15f197afc063058dc3a/c_lqB3jiJl_Os-l7j-7NB.png) ![image/png](https://cdn-uploads.huggingface.co/production/uploads/663ce15f197afc063058dc3a/IwyhjvmDO5WdQZvZEWT9J.png) ![image/png](https://cdn-uploads.huggingface.co/production/uploads/663ce15f197afc063058dc3a/gXjnNDSPw01VEWTBbr-2Z.png) ![image/png](https://cdn-uploads.huggingface.co/production/uploads/663ce15f197afc063058dc3a/V5WPYa27EOiEcxelgBJEd.png) ![image/png](https://cdn-uploads.huggingface.co/production/uploads/663ce15f197afc063058dc3a/KKM2qxjbnsu-ixImTWJgu.png) ![image/png](https://cdn-uploads.huggingface.co/production/uploads/663ce15f197afc063058dc3a/sTE-lYpLR9YLG3b8OdCdt.png) ![image/png](https://cdn-uploads.huggingface.co/production/uploads/663ce15f197afc063058dc3a/jYV5qz_ZPFvZW7P-Q1BGy.png) ## 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. # Qwen 2.5 32B Thai Medical Model ## Installation Requirements ```python # Install required libraries if not already installed pip install transformers torch peft ``` ## Import Required Libraries ```python from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig ``` In this cell, we import the necessary libraries from the Hugging Face Transformers package. ## Configure 4-bit Quantization ```python # Configure quantization settings bnb_config = BitsAndBytesConfig( load_in_4bit=True, bnb_4bit_compute_dtype="float16", bnb_4bit_use_double_quant=True, bnb_4bit_quant_type="nf4" ) ``` This cell configures 4-bit quantization to reduce the memory footprint of the model. ## Load Model and Tokenizer ```python # Load the model directly model_name = "amornpan/V3_qwen2.5-32b-med-thai-optimized" model = AutoModelForCausalLM.from_pretrained( model_name, quantization_config=bnb_config, device_map="auto", trust_remote_code=True ) tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True) ``` In this cell, we load the pre-trained Qwen 2.5 32B Thai medical model. ## Create Testing Function ```python # Function to test 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"system\n{system_prompt}\nuser\n{prompt}\nassistant\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("assistant\n")[-1].split("")[0] return assistant_response ``` This function handles the generation of responses. ## Test with Example Question ```python # Test with a single example example_question = "อาการของโรคเบาหวานมีอะไรบ้าง" print(f"\nคำถาม: {example_question}") response = test_model(example_question) print(f"คำตอบ: {response}") ``` ## Output ```python คำถาม: อาการของโรคเบาหวานมีอะไรบ้าง คำตอบ: สวัสดี โรคเบาหวานเป็นโรคทางระบบเมตาบอลิซึม โดยเกิดจากภาวะการผลิตฮอร์โมนอินซูลินไม่เพียงพอ หรือร่างกายไม่สามารถใช้อินซูลินได้อย่างมีประสิทธิภาพ ทำให้ระดับน้ำตาลในเลือดสูงขึ้น ซึ่งอาจนำไปสู่ความเสียหายของอวัยวะต่างๆ ในร่างกายได้ โดยเฉพาะหัวใจ เลือด เยื่อบุตา และไต เมื่อระดับน้ำตาลในเลือดสูงขึ้นมากขึ้นเรื่อยๆ จะมีอาการทางคลินิก เช่น 1. มีปัสสาวะบ่อย ปัสสาวะมาก เนื่องจากต้องขับน้ำตาลออกทางปัสสาวะ 2. กระหายน้ำมาก เนื่องจากมีปัสสาวะมาก 3. อ่อนแรง หมดแรง คำถาม: การรักษาโรคความดันโลหิตสูงทำอย่างไร คำตอบ: สวัสดี ความดันโลหิตสูงสามารถรักษาได้โดยการใช้ยาหลายชนิด เช่น เบนโซเพอรีซิน, อะโมโลนิด, ลิโซโปรตาซอล, อีลาฟอร์เท็ต, อัลฟูราลิท, อะเซติซิลดิโพราเมต, อาราคานา, อาเนอโรนิก, อาเซติซิลสัมพันธ์, อาเนอโรนิก, อะเซติซิลสัมพันธ์ เป็นต้น คุณสามารถปรึกษาแพทย์ผู้เชี่ยวชาญในเรื่องนี้เพื่อทราบข้อมูลเพิ่มเติมเกี่ยวกับยาดังกล่าว หวังว่าคำตอบของฉันจะเป็นประโยชน์สำหรับคุณ ขอให้คุณมีสุขภาพที่ดี ขอบคุณที่เลือกใช้บริการของเรา หากคุณมีคำถามใด ๆ คำถาม: ยา Paracetamol มีผลข้างเคียงอะไรบ้าง คำตอบ: Paracetamol เป็นยาแก้ปวดและลดไข้ที่ใช้กันอย่างแพร่หลาย ซึ่งมีผลข้างเคียงน้อยกว่ายาแก้ปวดชนิดอื่นๆ โดยทั่วไปจะไม่มีผลข้างเคียงใดๆ หากใช้ในขนาดที่แนะนำ แต่อาจพบได้ เช่น ปวดท้อง อาเจียน และรู้สึกคลื่นไส้ นอกจากนี้ หากใช้ในปริมาณที่มากเกินไป อาจทำให้มีอาการปัสสาวะขุ่น มีสีเหลืองเข้ม เบื่ออาหาร คลื่นไส้ อาเจียน ปวดท้อง ปวดหัว ตาเหลือง หรือปัสสาวะสีเข้มเป็นสีชาโคล่า หากมีอาการดังกล่าวควรหยุดการใช้ยาและรีบไปพบแพทย์เพื่อตรวจหาความเสียหายของตับจากยา โดยการตรวจการทำงานของตับ ซึ่งหากพบว่ามีอาการของโรคตับวายเฉียบพลัน ``` ### 👤 **Authors** * Amornpan Phornchaicharoen (amornpan@gmail.com) * Aekanun Thongtae (cto@bangkokfirsttech.com) * Montita Somsoo (montita.fonn@gmail.com)