医疗垂直领域微调
项目简介
本项目为个人学习与实践项目,开源中文医疗通用大模型:ChatGLM-Medical,通过对中文医疗对话数据集CMeKG进行清洗构建了中文医学指令集,并在此基础上对 ChatGLM-6B 进行指令微调,并融入知识库以解决prompt实时性、大模型回答纠正、短期微调模型等问题。
- 开源 LLM 部署代码:./run_XXX.py
- Finetune代码:./finetune、./dk/train_XXX.sh
- 模型量化代码:./finetune/save_bit.py
- 数据处理代码:./load_data.py、./pro_med_data.py
- 知识库融合:./knowledge
- 相关模型权重:./weights
- 因资源不足,没有得到充分训练和调参,所以还是会存在语言漂移和灾难性遗忘问题。
- 后续计划请见Todo。
免责声明
本项目为个人学习与实践项目,开源自己微调的医疗垂直领域大语言模型:ChatGLM-Medical。本项目仅用于技术研究和学术目的,并不能代替医生或其他医疗专业人士的诊断和治疗建议。
本项目训练方案简要说明如下(详细说明请参见本项目README):
- 本项目训练数据集为开源中文医学指令集 CMeKG,经清洗处理后总计160W个医疗文本对话语料。
- 本项目微调技术采用 Lora,微调 Baseline 为开源 Prefix Decoder-only 架构的 ChatGLM-6B。
- 本项目采用 DeepSpeed、Bitsandbytes、Mixed Precision、Gradient Accumulation 等大模型训练 Trick,在三台 30G V100 训练3个epoch 耗时27天,并选择1个epoch进行公开。
本项目的代码依照 Apache-2.0 协议开源,由于基础模型采用了 ChatGLM,因此 ChatGLM-Medical 模型权重的使用需要遵循 Model License,具体来说:
- 您不得将本项目:ChatGLM-Medical 用于商业、军事或任何非法目的,也不得复制、修改、合并、发布、分发、复制或创建本项目的全部或部分衍生作品。
- 您不得利用本项目从事任何危害国家安全和国家统一、危害社会公共利益、侵犯人身权益的行为。
- 本项目“按原样”提供,不提供任何明示或暗示的保证,包括但不限于对适销性、特定用途的适用性和非侵权性的保证。在任何情况下,作者(开发者)均不对任何索赔、损害或其他责任负责,无论是在合同诉讼、侵权行为还是其他方面。
- 本项目不承担任何法律责任,亦不对因使用相关资源和输出结果而可能产生的任何损失承担责任。
- 所有问题的回答均由模型生成,模型生成受多种不确定性因素影响,不代表作者(开发者)的意见。作者强烈建议用户在获取模型生成的回答后,自己进行思考和判断,并咨询医生或其他医疗专业人士的意见,以获得准确的诊断和医疗建议。
数据样例
基于中文医疗对话数据集,清洗后总计792099条医疗对话语料:
- 内科问答:220606个问答对;
- 妇产科问答:183751个问答对;
- 男科问答:94596个问答对;
- 儿科问答:101602个问答对;
- 外科问答: 792099个问答对;
- 肿瘤科问答:75553个问答对;
instruction(+ input) | answer |
---|---|
高血压降下来就不用吃药了吗? 我叔叔是患高血压三年了,他一直是在喝药的,但是他这段时间说他的血压已经是降下来了,就不想喝药了。他也不去看医生,就想自己停了不吃了。高血压降下来就用不着喝药了吗? | 高血压患者如果血压已经上升下来,考虑主要是运用药物致使再次出现的血压下降,如果停用药物后,这种血压就会逐渐的下降。所以还是不能停用这种降压药物的,建议还是需要有实施稳固治疗,需要有保持这个剂量实施长期的口服,同时也要确保良好的休息和深度睡眠,确保良好的情绪,才有助于血压的正常。此问题属于【内科-心血管科】。 |
高血压降下来就不用吃药了吗? | 高血压患者如果血压已经上升下来,考虑主要是运用药物致使再次出现的血压下降,如果停用药物后,这种血压就会逐渐的下降。所以还是不能停用这种降压药物的,建议还是需要有实施稳固治疗,需要有保持这个剂量实施长期的口服,同时也要确保良好的休息和深度睡眠,确保良好的情绪,才有助于血压的正常。此问题属于【内科-心血管科】。 |
心肌梗塞突然昏倒怎么办? | 在心肌梗塞的情况下,药物治疗和对保健的观注都很重要。除了按照医生的建议使用一些促进血液循环、祛瘀和稳定血液循环的药物外,建议每天服用一次阿司匹林以以防血栓形成。如果有高血压或血脂,应当进行治疗。饮食应当清淡,防止疲劳。绝对卧床休息,吃易补充的食物。始终保持大便通畅。 |
数据处理
数据处理程序见:
- ./load_data.py
- ./pro_med_data.py
垂直领域微调:
- 医疗(当前):1582622
数据集:
- hinese medical dialogue data 中文医疗对话数据集;
结果测试
./weights/2_ChatGLM-Medical/model_best
global step 527500 ( 33.33% ) , epoch: 1, loss: 2.22505, speed: 1.25 step/s,...
Evaluation Loss: 2.75221
测试输入 | GPT 3.5 回答 | GPT 4 回答 | ChatGLM-Medical回答 |
---|---|---|---|
高血压出现头晕,脸红的症状怎么办? | 高血压引起的头晕和脸红可能是由于血管收缩引起的,需要及时采取措施进行调节。以下是一些可能有用的建议:1. 休息:如果您感到头晕或眩晕,请坐下来或躺下来,尽量避免站立或行走。2. 放松身体:深呼吸或冥想可以有助于放松身体,减轻血管紧张和疼痛。3. 控制情绪:情绪激动也可能导致血压攀升,所以要尽量保持冷静和放松。4. 检查药物:如果您正在服用治疗高血压的药物,可能需要调整剂量或更换药物。5. 饮食控制:合理控制饮食,尤其是盐分的摄入,对降低血压也有帮助。6. 注意生活习惯:不要过度劳累、戒烟限酒,注意锻炼身体等等,都有助于改善高血压的症状。7. 如果这些方法不能缓解您的症状,或者您的症状变得更加严重,请及时就医,接受专业的诊治。 | 如果您有高血压并出现头晕和脸红的症状,可能是由于血压过高引起的。以下是一些建议:1.测量血压:如果您的血压高于正常值,您应该立即采取行动。正常血压的范围是120/80毫米汞柱(mmHg)或更低。如果您的血压高于140/90 mmHg,则您可能已被诊断为高血压。2.服药:如果您已经被诊断为高血压,您的医生可能会给您开一些药物来降低血压。请确保按照医生的建议服药,并遵守药物的使用说明。3.减轻压力:情绪压力会使血压升高。尝试减轻压力的方法,如冥想、深呼吸、瑜伽等。4.饮食和运动:健康的饮食和适度的运动可以帮助您降低血压。请咨询您的医生,了解哪些食物和运动适合您。5.遵守医生的建议:如果您的症状持续存在或变得更加严重,请及时向您的医生咨询和寻求帮助。他们可能需要调整您的药物治疗或进行其他检查。 | 您好,根据您的描述来看,您这种情况是高血压引起的症状。这种情况建议您可以口服降压药治疗,建议您在饮食方面,多吃水果蔬菜,多喝水,不要吃油腻辛辣的食物,多运动,祝您身体健康。以上是对“高血压,头晕,脸红”这个问题的建议,期望对您有帮助,祝您健康! |
经常感冒咳嗽反反复复要如何治疗? | 经常感冒咳嗽反反复复可能是由多种原因引起的,如免疫力下降、环境污染、气候变化等。针对感冒咳嗽反复发作的治疗措施包括以下几个方面:1.适当休息:在感冒咳嗽反复期间要注意适当休息,避免过度劳累和精神压力过大。2.增强免疫力:可以通过合理饮食、锻炼身体、保持良好的睡眠等方式增强免疫力,减少感染的机会。3.饮食调理:在日常饮食中加入富含维生素C、E等抗氧化剂的食物,如蔬菜、水果、坚果等,有助于提高免疫力。4.消炎镇痛:在医生指导下使用适量的消炎药和镇痛药,以减轻症状。5.预防疾病:定期接种流感疫苗、肺炎球菌疫苗等,可以预防某些疾病的发生。 | 经常感冒咳嗽反反复复可能是由于身体免疫力较弱或存在其他潜在疾病引起的。以下是一些可能有助于缓解症状和提高身体免疫力的建议:1.饮食和休息:保持充足的休息和健康的饮食有助于提高身体免疫力。多吃蔬菜、水果、全谷类食品和蛋白质食品,避免过度饮酒和吸烟。2.补充维生素:适当补充维生素C、维生素D和锌等营养素可以增强免疫力,但一定要在医生的建议下进行。3.注意个人卫生:保持良好的个人卫生,勤洗手、避免接触有病毒的物品和场所,减少传染的风险。4.做适当的运动:适当的运动可以帮助身体保持健康,增强免疫力。5.如果症状严重,可以考虑药物治疗:如果症状严重,可以考虑口服非处方药物,如退烧药、止咳药等。但一定要在医生的指导下使用药物。如果您的症状反复出现或持续较长时间,建议及时就医,以便医生进行进一步的检查和治疗。 | 感冒咳嗽反反复复,有可能是抵抗力低下,感冒病毒反复传染,引来的。建议平时留意防寒,不要着凉,多饮水,不要吃辛辣刺激性食物,增强抵抗力,不定期实施健康检查,诊断后,及时实施治疗,防止病情反复。以上是对“经常感冒咳嗽反反复复要如何治疗”这个问题的建议,期望对您有帮助,祝您健康! |
如何治疗三叉神经痛比较好? | 三叉神经痛是由于面部三叉神经发生异常刺激而引起的疾病,常表现为剧烈的颜面疼痛。以下是一些治疗三叉神经痛的方法:1.药物治疗:可使用抗抑郁药、抗惊厥药、镇痛药等药物治疗,以减轻疼痛症状。2.神经射频治疗:通过放置电极直接作用于面部三叉神经,产生高温或低温环境,从而切断有害的神经信号和疼痛感知。3.微波治疗:利用微波将局部组织加温,使神经暂时失活,达到止痛效果。4.外科手术治疗:可选用口腔内突入法或开颅手术治疗,切断某些神经支配区域,以缓解疼痛症状。需要注意的是,三叉神经痛有时会反复发作,且难以根治。因此,在治疗过程中要积极配合医生进行检查和治疗,并遵循医生的建议,如规律用药、定期复查等。同时,加强自我管理,保持心情愉悦、适当锻炼等措施也有助于改善疾病预后和提高生活质量。 | 三叉神经痛是一种非常痛苦的神经疾病,常见于中老年人,患者会出现剧烈的面部疼痛。以下是一些可能有效的治疗方法:1.药物治疗:口服抗病毒药物、抗抑郁药、抗惊厥药、镇痛药等,可以缓解三叉神经痛引起的疼痛。2.手术治疗:对于难以控制的三叉神经痛,可以考虑手术治疗,如微血管减压术、射频消融术等。3.放射治疗:放射治疗可以缓解三叉神经痛引起的疼痛,但需要在专业医生的指导下进行。4.中药治疗:中药治疗可以缓解三叉神经痛的症状,如枸杞子、白芍、川芎等。5.物理治疗:物理治疗可以缓解面部肌肉的紧张和疼痛,如按摩、热敷、理疗等。6.心理治疗:放松训练、认知行为疗法等心理治疗方法可以缓解三叉神经痛引起的情绪问题。请注意,三叉神经痛的治疗需要在专业医生的指导下进行,因为每个患者的情况都不同,治疗方法也会有所不同。如果您怀疑自己患有三叉神经痛,请及时就医。 | 三叉神经痛多见于的是神经营养不良或者传染引来。多与日常生活饮食方面不协调,维生素缺乏引来。建议:留意日常饮食调养。多吃些新鲜蔬菜,水果。辛辣,油炸等食物尽量避免。适当给面部进行推拿,针灸,去神经内科复诊及早治疗。最后,患者日常要养成良好的生活习惯,规律作息,禁烟酒,多增加日常锻炼以此来提高患者免疫力,避免病情复发。 |
小儿肥胖超重该如何治疗? | 小儿肥胖超重是指儿童体重过重,身体脂肪比例较高的一种健康问题。治疗方法通常包括以下几个方面:1.饮食控制:通过合理的饮食安排,限制摄入含糖、高脂肪和高热量的食物,增加膳食纤维的摄入,以达到减轻体重的目的。2.运动锻炼:适当开展运动锻炼,可以消耗多余的热量,促进新陈代谢,有助于减轻体重。3.行为治疗:采用行为管理技巧,如奖惩机制、自我监督等方法,帮助儿童建立良好的饮食和生活习惯。4.心理干预:借助家庭和学校等资源,对儿童进行心理疏导和支持,以提高其自尊心和自信心。5.药物治疗:在严重肥胖超重的情况下,医生可能会考虑采用药物治疗,如口服药物或注射药物,但需要密切监测患者的反应和副作用。需要注意的是,儿童肥胖超重问题需要引起家长和整个社会的高度重视。在治疗过程中,家长应该与医生密切合作,共同制定具体的治疗方案,并且积极引导孩子养成良好的饮食和生活习惯,以保持健康的体重和身体状态。 | 小儿肥胖超重需要综合治疗,包括饮食控制、运动锻炼、行为干预等方面。以下是一些可能有效的治疗方法:1.饮食控制:控制热量摄入是治疗小儿肥胖的关键。建议减少高热量、高脂肪、高糖分的食品和饮料,增加蔬菜、水果、全麦面包和蛋白质食品的摄入。2.运动锻炼:适当的运动可以帮助消耗多余的热量,增强肌肉和骨骼的健康。建议每天进行至少60分钟的中等强度的有氧运动,如快走、游泳、骑车等。3.行为干预:改变小儿的不良饮食和运动习惯,如减少电视、电脑和手机等电子产品的使用时间,增加户外活动时间等。4.家庭支持:家长应该鼓励和支持孩子进行健康的饮食和运动习惯,并与孩子一起参与到健康生活的计划中来。5.医学干预:在必要的情况下,医生可能会使用药物治疗来控制小儿肥胖的症状,但是这需要在专业医生的指导下进行。请注意,小儿肥胖超重的治疗需要时间、耐心和坚持,不能一蹴而就,需要家长和孩子共同努力,逐步改变不良的生活习惯和行为模式。如果您的孩子患有肥胖超重问题,请及时咨询医生,制定合适的治疗计划。 | 孩子出现肥胖症的情况。家长要通过孩子运功和健康的饮食来缓解他的症状,可以先让他做一些有氧运动,比如慢跑,爬坡,游泳等,并且饮食上孩子多吃黄瓜,胡萝卜,菠菜等,禁止孩子吃一些油炸食品和干果类食物,这些都是干热量高脂肪的食物,而且不要让孩子总是吃完就躺在床上不动,家长在治疗小儿肥胖期间如果孩子情况严重就要及时去医院在医生的指导下给孩子治疗 |
儿童中耳炎耳鸣应当如何治效果好? | 儿童中耳炎引起的耳鸣,治疗方法主要包括针对中耳炎及其症状进行治疗和针对耳鸣本身进行治疗。以下是一些可能有帮助的治疗方法:1.抗生素:如果儿童中耳炎是由细菌感染引起的,医生可能会开具适当的抗生素来消灭病菌。2.热敷:将热毛巾或热水袋放在患耳上可以缓解炎症和减轻疼痛。3.鼓膜穿刺术:如果儿童中耳炎不断复发或者造成听力障碍,医生可能会建议进行鼓膜穿刺术,通过手术将积聚在中耳内的液体排出。4.噪音治疗:使用白噪音或其他舒缓的声音掩盖耳鸣声,有助于减轻儿童的焦虑和不安。5.药物治疗:如镇静剂、抗抑郁药等,可以缓解儿童的焦虑和睡眠问题,从而减轻耳鸣的不适感。请注意,以上治疗方法仅为参考,具体治疗方案应当根据儿童的具体情况和医生的指导来确定。 | 儿童中耳炎是一种常见的儿科疾病,耳鸣是其常见症状之一。以下是一些可能有效的治疗方法:1.药物治疗:根据病情和病因,医生可能会开具抗生素、消炎药、退烧药、止痛药等药物来缓解中耳炎引起的疼痛和炎症。2.热敷:可以使用热敷来缓解中耳炎引起的疼痛和不适。将热毛巾或热水袋放在患耳旁边,每次10-15分钟。3.就寝姿势调整:可以让孩子睡在患耳的对侧,有助于减轻耳鸣和疼痛。4.耳蜡软化剂:如果中耳炎是由于耳蜡造成的,可以使用耳蜡软化剂来软化耳蜡,帮助蜡垢排出。5.手术治疗:对于复杂或难以治疗的中耳炎,可能需要进行手术治疗,如鼓膜切开术、鼓室置管术等。请注意,中耳炎耳鸣的治疗需要在专业医生的指导下进行,因为每个患者的情况都不同,治疗方法也会有所不同。如果您的孩子患有中耳炎并伴有耳鸣,请及时就医,以便进行准确的诊断和治疗。 | 一般来说如果是小儿中耳炎的话可以对症给孩子吃一些抗生素,还是比较有效的,另外还可进行局部治疗,比如给孩子使用消炎类型的滴耳剂治疗,孩子如果耳朵比较疼的话也适量情给一些镇痛的药物,另外如果伴有发烧的情况的话,那么也可服用一些退烧药,高烧的话还是建议要尽早就医的,如果患者出现了严重的症状,如耳膜穿孔,是需要及时的去医院进行手术治疗,平时注意饮食清淡,治疗期间以流食为主。 |
存在问题
因资源不足,没有充足时间和显存去训练调参,还是存在一定的语言漂移和灾难性遗忘问题。
通用语义扩充,防止过拟合、灾难性遗忘等问题解决:
- (丢弃)firefly-train-1.1M数据集,该数据集是一份高质量的包含1.1M中文多任务指令微调数据集,包含23种常见的中文NLP任务的指令数据。对于每个任务,由人工书写若干指令模板,保证数据的高质量与丰富度。利用该数据集,研究者微调训练了一个中文对话式大语言模型(Firefly(流萤))。
- 中文Stanford-Alpaca数据集,52K的中文数据,通过机器翻译翻译将Stanford-Alpaca翻译筛选成中文获得。
- 微软GPT-4数据集,包括中文和英文数据,采用Stanford-Alpaca方式,但是数据获取用的是GPT-4。
使用方式
from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained("wgs/ChatGLM-Medical", trust_remote_code=True)
model = AutoModel.from_pretrained("wgs/ChatGLM-Medical", trust_remote_code=True).half().cuda()
response, history = model.chat(tokenizer, "你好", history=[])
print(response)
response, history = model.chat(tokenizer, "小孩笑流口水眼斜怎么回事?", history=history)
print(response)
加入知识库结果测试
详见:./langchain-ChatGLM
测试输入 | ChatGLM-6B 回答 | ChatGLM-Medical 融入知识库 回答 |
---|---|---|
请介绍一下多牛传媒 | 多牛传媒(Duolingo)是一家在线教育公司,成立于2011年,总部位于中国北京。公司的使命是为学生提供高品质的在线学习体验,帮助他们实现自我提升和成长。多牛传媒的主要业务包括在线学习平台、在线教育课程和在线辅导服务。其在线学习平台包括Duolingo在线学习平台和Duolingo Plus,前者为学生提供语言、数学、音乐等学科的在线课程,后者则为学生提供英语听说、语法、词汇等在线辅导服务。多牛传媒的在线教育课程覆盖了多个学科领域,包括语言、数学、音乐、美术、编程、职场技能等。其课程内容涵盖了从基础到高级的各个方面,学生可以根据自己的兴趣和需求选择课程。除了在线教育课程,多牛传媒还为学生提供了在线辅导服务,包括一对一的辅导、小组讨论和在线问答等。多牛传媒的辅导服务旨在帮助学生更好地理解和掌握课程内容,提高学习效率和成绩。多牛传媒的愿景是成为全球领先的在线教育平台,为学生提供高品质、个性化的在线学习体验。 | 北京多牛互动传媒股份有限公司(Beijing Infinitas Interactive Media Co.Ltd)成立于2012年,是中国媒体集团。多牛传媒的核心业务是将大数据、云计算、人工智能技术运用于内容产业,包括新媒体生态链、新媒体营销服务、大数据研发及服务等,总部位于北京。规模现状:多牛传媒是一家媒体集团,总部设在北京。员工500余人,主要由媒体人和数据技术人员构成。北京多牛互动传媒股份有限公司主要经营广播电视节目制作,技术开发等。 |
致谢
https://github.com/THUDM/ChatGLM-6B
https://github.com/THUDM/ChatGLM2-6B
https://huggingface.co/THUDM/chatglm-6b
https://github.com/imClumsyPanda/langchain-ChatGLM
https://github.com/SCIR-HI/Huatuo-Llama-Med-Chinese
Todo
- 加入知识库;
- 尝试 QLora;
- 尝试组合 PEFT 范式,并进行消融实验;
- 尝试 Baseline 为 LLaMA-7B、ChatGLM2-6B;
- 加入多模态模型,训练胸片识别demo;
- 垂直医疗领域V2,融入更多通用数据。
Tools
欢迎关注我的公众号:
后续会开放本项目训练代码及数据处理代码:
- Downloads last month
- 11