# Mô Hình Ngôn Ngữ Lớn Minh Khỏe Tuệ Y (MKTY-3B-Chat) [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.17444889.svg)](https://doi.org/10.5281/zenodo.17444889) ### 🌍 Ngôn Ngữ Tài Liệu [**Tiếng Trung Giản Thể (简体中文)**](./README.zh-CN.md) | [**Tiếng Anh (English)**](./README.md) | [**Tiếng Việt**](./README.vi.md) > Lưu ý: Các phiên bản tiếng Anh và tiếng Việt của tài liệu này đều được dịch từ phiên bản tiếng Trung bằng LLM, đã được kiểm tra thủ công nhưng không tránh khỏi sai sót. Nếu có sự khác biệt giữa phiên bản tiếng Anh hoặc tiếng Việt so với phiên bản tiếng Trung, vui lòng lấy phiên bản tiếng Trung làm chuẩn. Tên đầy đủ dự án: Minh Khỏe Tuệ Y (Tiếng Trung Giản Thể: _明康慧医_; Chữ Nôm: _明劸慧醫_; Tiếng Anh: _Minh Khoe Tue Y_) – Thiết kế và triển khai hệ thống quản lý sức khỏe và hỗ trợ chẩn đoán y tế dựa trên LLM và trí tuệ nhân tạo đa mô thức ( Tên viết tắt: Minh Khỏe Tuệ Y – Hệ Thống Y Liệu Trí Tuệ ) ### 📖 Giới Thiệu Mô Hình Mô hình này là một phần của dự án "Minh Khỏe Tuệ Y - Thiết kế và triển khai hệ thống quản lý sức khỏe và hỗ trợ chẩn đoán dựa trên LLM và trí tuệ nhân tạo đa phương tiện" (gọi tắt là Hệ thống Y liệu Trí tuệ Minh Khỏe Tuệ Y), được phát triển cho luận văn tốt nghiệp cử nhân năm 2025 của tôi tại Học bộ Khoa học và Kỹ thuật Máy tính, Đại học Công nghiệp Tề Lỗ (Qilu) (Viện Khoa học tỉnh Sơn Đông). Dự án đã được mã nguồn mở, địa chỉ tại: [https://github.com/duyu09/MKTY-System](https://github.com/duyu09/MKTY-System). Mô hình này đã được tinh chỉnh và tối ưu hóa trong các lĩnh vực y học, y tế và sinh học, thể hiện tốt hơn so với mô hình cơ sở `Qwen2.5-3B-Instruct`. Quá trình tinh chỉnh sử dụng thuật toán LoRA, được thực hiện qua hai bước và chỉ tập trung vào ngôn ngữ tiếng Trung. Đầu tiên, trong giai đoạn huấn luyện tăng cường (Pretrain), mô hình được huấn luyện sơ bộ bằng các dữ liệu như sách y học, hồ sơ bệnh án và các bài viết liên quan đến y tế. Sau đó, mô hình được tinh chỉnh bằng cách giám sát chỉ thị (SFT), sử dụng các dữ liệu bao gồm triệu chứng và hồ sơ bệnh án tương ứng, hội thoại bác sĩ-bệnh nhân (mô tả triệu chứng và chẩn đoán), câu hỏi đáp kiến thức y học, và các dữ liệu hội thoại dựa trên "cơ chế thảo luận mô hình lớn". Tổng lượng dữ liệu khoảng `2.88GB`. Đặc biệt, mô hình đã được tối ưu hóa cho "cơ chế thảo luận mô hình lớn". Cơ chế này hoạt động như sau: Mô hình sẽ tạo ra nhiều kết quả dựa trên các ngữ cảnh khác nhau cho mỗi câu hỏi, mô phỏng cảnh "nhiều người đưa ra quan điểm". Hệ thống cũng có vai trò "người điều phối", chịu trách nhiệm tổng hợp các quan điểm từ mỗi vòng thảo luận. Sau đó, tất cả các thành viên tham gia sẽ dựa trên câu hỏi ban đầu, tổng hợp của người điều phối và ngữ cảnh riêng của họ để tiến hành vòng thảo luận tiếp theo. Quá trình này lặp lại cho đến khi kết quả thảo luận hội tụ (ngữ nghĩa trở nên đồng nhất) hoặc đạt đến số vòng thảo luận tối đa được thiết lập. ### 🔧 Điều Kiện Phần Cứng Nếu sử dụng GPU để suy luận, cần ít nhất `7GB` bộ nhớ đồ họa. Nếu bộ nhớ đồ họa không đủ 7GB hoặc không có card đồ họa rời, có thể chạy mô hình lớn MKTY-3B-Chat bằng `CPU` + `7GB RAM`. ### 🚀 Ví Dụ Sử Dụng Dựa trên `Qwen2.5-3B-Instruct` của **_Thông Nghĩa Nghìn Vấn_** (Tiếng Trung: _通义千问_, Tiếng Anh: _Tongyi Qianwen_), có thể nhanh chóng tải và khởi động thông qua thư viện `transformers`. **Tải Mô Hình** ```python from transformers import AutoModelForCausalLM, AutoTokenizer def load_model_and_tokenizer(model_name): model = AutoModelForCausalLM.from_pretrained( model_name, torch_dtype="auto", device_map="auto" ) tokenizer = AutoTokenizer.from_pretrained(model_name) return model, tokenizer def generate_response(prompt, messages, model, tokenizer, max_new_tokens=2000): messages.append({"role": "user", "content": prompt}) text = tokenizer.apply_chat_template( messages, tokenize=False, add_generation_prompt=True ) model_inputs = tokenizer([text], return_tensors="pt").to(model.device) generated_ids = model.generate( **model_inputs, max_new_tokens=max_new_tokens ) generated_ids = [ output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids) ] response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0] messages.append({"role": "assistant", "content": response}) return response ``` **Chế Độ Hỏi Đáp Thông Thường** ```python if __name__ == "__main__": model_name = r"MKTY-3B-Chat" messages = [] model, tokenizer = load_model_and_tokenizer(model_name) while True: prompt = input("User> ") if prompt == "exit": break response = generate_response(prompt, messages, model, tokenizer) print("MKTY>", response) ``` **Chế Độ Thảo Luận Mô Hình Ngôn Ngữ Lớn** (Ngôn ngữ ví dụ: Tiếng Trung) ```python if __name__ == "__main__": model_name = "MKTY-3B-Chat" discuss_rounds = 3 agent_number = 3 model, tokenizer = load_model_and_tokenizer(model_name) messages_arr = [[] for _ in range(agent_number)] while True: prompt = input("User> ") if prompt == "exit": break moderator_opinion = "暂无" for i in range(discuss_rounds): responses_arr = [] prompt_per_round = "- 问题:\n" + prompt + "\n - 上轮讨论主持人意见:\n" + moderator_opinion + "\n - 请你结合主持人意见,对上述医疗或医学专业的问题发表详细观点,可以质疑并说明理由。\n" for j in range(agent_number): messages = messages_arr[j] response = generate_response(prompt_per_round, messages, model, tokenizer) responses_arr.append(response) print(f"第{i + 1}轮讨论,LLM {j + 1}观点>\n", response) print("-------------------") moderator_prompt = "- 问题:\n" + prompt + "\n\n" for res_index in range(len(responses_arr)): moderator_prompt = moderator_prompt + f"- LLM {res_index + 1}观点:\n" + responses_arr[res_index] + "\n\n" moderator_prompt = moderator_prompt + "对于给定的医疗相关问题,请综合各LLM观点,结合自身知识,得出你自己的判断,尽可能详尽,全部都分析到位,还要充分说明理由。\n" moderator_opinion = generate_response(moderator_prompt, [], model, tokenizer) print(f"第{i + 1}轮讨论,主持人的意见>\n", moderator_opinion) print("-------------------") clear_history(messages_arr) ``` ## 🎓 Tác Giả Dự Án ``` ██\ ██\ ██\ ██\ ████████\ ██\ ██\ ███\ ███ | ██ | ██ | \__██ __| \██\ ██ | ████\ ████ | ██ |██ / ██ | \██\ ██ / ██\██\██ ██ | █████ / ██ | \████ / ██ \███ ██ | ██ ██< ██ | \██ / ██ |\█ /██ | ██ |\██\ ██ | ██ | ██ | \_/ ██ |██\ ██ | \██\ ██\ ██ |██\ ██ |██\ \__| \__|\__|\__| \__|\__| \__|\__| \__|\__| ``` Mô hình này được sử dụng cho luận văn tốt nghiệp năm 2025 của Học bộ Khoa học và Kỹ thuật Máy tính, Đại học Công nghiệp Tề Lỗ (Qilu) (Viện Khoa học tỉnh Sơn Đông), chỉ dành cho mục đích trao đổi học thuật. Bản thân tôi và người hướng dẫn đều không chịu trách nhiệm cho bất kỳ hậu quả nào phát sinh từ việc sử dụng mô hình. - 🧑‍💻 **Tác Giả Dự Án** - **Đỗ Vũ** (Tiếng Trung: _杜宇_; Tiếng Anh: _DU Yu_; email: <202103180009@stu.qlu.edu.cn>), sinh viên tốt nghiệp năm 2025, Học bộ Khoa học và Kỹ thuật Máy tính, Đại học Công nghiệp Tề Lỗ (_Qilu_) (Viện Khoa học tỉnh Sơn Đông) - 🏫 **Giáo Viên Hướng Dẫn Đồ Án** - Giáo viên trường: **Khương Văn Phong** (Tiếng Trung: _姜文峰_; Tiếng Anh: _JIANG Wenfeng_), phó giáo sư Học bộ Khoa học và Kỹ thuật Máy tính, Đại học Công nghiệp Tề Lỗ (_Qilu_) (Viện Khoa học tỉnh Sơn Đông). - Giáo viên công ty: **Lý Quân** (Tiếng Trung: _李君_; Tiếng Anh: _LI Jun_), Học viện Đào tạo Phần mềm Strong (_Sư Sáng_) Sơn Đông, Tập đoàn Khoa kỹ Giáo dục Ambow (_An Bác_, [NYSE: AMBO](https://www.nyse.com/quote/XASE:AMBO)). Địa chỉ mã nguồn mở đầy đủ của dự án: [https://github.com/duyu09/MKTY-System](https://github.com/duyu09/MKTY-System), chào mừng tải về và trao đổi. ## 🔗 Liên Kết Đối Tác - Đại học Công nghiệp Tề Lỗ (_Qilu_) (Viện Khoa học tỉnh Sơn Đông): [https://www.qlu.edu.cn/](https://www.qlu.edu.cn/) - Trung tâm Tính toán tỉnh Sơn Đông (Trung tâm Tính toán Siêu máy tính Quốc gia Tế Nam, _NSCCJN_): [https://www.nsccjn.cn/](https://www.nsccjn.cn/) - Học bộ Khoa học và Kỹ thuật Máy tính, Đại học Công nghiệp Tề Lỗ (_Qilu_) (Viện Khoa học tỉnh Sơn Đông): [http://jsxb.scsc.cn/](http://jsxb.scsc.cn/) - Trang GitHub của Đỗ Vũ: [https://github.com/duyu09/](https://github.com/duyu09/) ## 📄 Trích Dẫn ``` @software{du_2025_17444889, author = {Du, Yu}, title = {Minh Khoe Tue Y Smart Healthcare System}, month = oct, year = 2025, publisher = {Zenodo}, version = {v1.1.2}, doi = {10.5281/zenodo.17444889}, url = {https://doi.org/10.5281/zenodo.17444889}, swhid = {swh:1:dir:a633243bf04e6ba18e2d5ffcf92ea57f73566f43 ;origin=https://doi.org/10.5281/zenodo.17444888;vi sit=swh:1:snp:37dc91d2c166a07c7dc8ebac0b4be97961b0 267b;anchor=swh:1:rel:a88f82a5ca10d278bcc10734f5cf a560286a8b47;path=duyu09-MKTY-System-8edd0c9 }, } ```