From 4e320b02a6fb4960ed8088a4cd19401435690de1 Mon Sep 17 00:00:00 2001 From: BlueZeros Date: Sun, 19 May 2024 19:08:47 +0800 Subject: [PATCH] updatae readme --- README.md | 6 +- ming.egg-info/PKG-INFO | 212 +++++------------- ming/__pycache__/__init__.cpython-310.pyc | Bin 174 -> 149 bytes .../__pycache__/conversations.cpython-310.pyc | Bin 8368 -> 8352 bytes ming/__pycache__/utils.cpython-310.pyc | Bin 1166 -> 1141 bytes .../eval/__pycache__/__init__.cpython-310.pyc | Bin 179 -> 154 bytes ming/eval/__pycache__/eval_em.cpython-310.pyc | Bin 11727 -> 11641 bytes .../__pycache__/eval_gpt4.cpython-310.pyc | Bin 0 -> 6346 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 185 -> 160 bytes .../__pycache__/evaluate.cpython-310.pyc | Bin 8214 -> 8189 bytes .../__pycache__/evaluators.cpython-310.pyc | Bin 4903 -> 4878 bytes .../post_generate_process.cpython-310.pyc | Bin 6528 -> 6503 bytes .../text2dt_eval_func.cpython-310.pyc | Bin 5975 -> 5950 bytes ming/eval/eval_em.py | 13 +- ming/eval/eval_gpt4.py | 184 +++++++++++++++ .../__pycache__/__init__.cpython-310.pyc | Bin 270 -> 245 bytes .../model/__pycache__/builder.cpython-310.pyc | Bin 4542 -> 4507 bytes .../modeling_molora_qwen.cpython-310.pyc | Bin 9356 -> 9337 bytes ming/model/__pycache__/utils.cpython-310.pyc | Bin 15750 -> 15725 bytes scripts/eval/chat.sh | 13 +- scripts/eval/eval_gpt4.sh | 31 +++ 21 files changed, 298 insertions(+), 161 deletions(-) create mode 100644 ming/eval/__pycache__/eval_gpt4.cpython-310.pyc create mode 100644 ming/eval/eval_gpt4.py create mode 100644 scripts/eval/eval_gpt4.sh diff --git a/README.md b/README.md index 225a458..ddc706a 100644 --- a/README.md +++ b/README.md @@ -122,7 +122,7 @@ 2. 下载模型参数并运行(要求单卡显存 >= 15G) * MING-MOE ```bash - CUDA_VISIBLE_DEVICES=0 python -m fastchat.serve.cli \ + CUDA_VISIBLE_DEVICES=0 python -m ming/serve/cli.py \ --model_path {path_to_checkpoint} \ # 模型路径 --model_base {path_to_base_model} \ # 基座模型路径 --max-new-token 3072 # 输出最大长度 @@ -130,14 +130,14 @@ * MING-1.8B ```bash - CUDA_VISIBLE_DEVICES=0 python -m fastchat.serve.cli \ + CUDA_VISIBLE_DEVICES=0 python -m ming/serve/cli.py \ --model_path {path_to_checkpoint} \ # 模型路径 --max-new-token 2048 # 输出最大长度 ``` * MING-7B ```bash - CUDA_VISIBLE_DEVICES=0 python -m fastchat.serve.cli \ + CUDA_VISIBLE_DEVICES=0 python -m ming/serve/cli.py \ --model-path {path_to_checkpoint} \ # 模型路径 --conv_template bloom \ # prompt --max-new-token 512 \ # 输出最大长度 diff --git a/ming.egg-info/PKG-INFO b/ming.egg-info/PKG-INFO index ff3eff2..16e4f6c 100644 --- a/ming.egg-info/PKG-INFO +++ b/ming.egg-info/PKG-INFO @@ -63,10 +63,19 @@ Requires-Dist: wandb; extra == "train" +## 📄相关论文 +* MING-MOE技术报告 + [MING-MOE: Enhancing Medical Multi-Task Learning in Large Language Models with Sparse Mixture of Low-Rank Adapter Experts](https://arxiv.org/pdf/2404.09027.pdf) + +* 基于多智能体交互的大语言模型多轮问诊自动评估框架 + + [Automatic Interactive Evaluation for Large Language Models with State Aware Patient Simulator](https://arxiv.org/pdf/2403.08495.pdf) ## 💫更新 -🔥 [2024/03/14] 开源了基于Qwen1.5-1.8b指令微调的MING-1.8B +* 🔥 [2024/04/14] 开源了基于Qwen1.5指令微调的专家混合模型MING-MOE + +* [2024/03/14] 开源了基于Qwen1.5-1.8b指令微调的MING-1.8B * [2023/07/25] 开源了基于bloomz-7b指令微调的MING-7B @@ -74,14 +83,14 @@ Requires-Dist: wandb; extra == "train" -## 🔬模型参数 +## 🔬开源模型 - +
@@ -96,9 +105,33 @@ Requires-Dist: wandb; extra == "train" - + + + + + + + + + + + + + + + + + + + + + + + + +
模型
基座
MING-1.8B
Qwen1.5-1.8b
Qwen1.5-1.8B
🤗MING-1.8B
MING-MOE-1.8B
Qwen1.5-1.8B
🤗MING-MOE-1.8B
MING-MOE-4B
Qwen1.5-4B
🤗MING-MOE-4B
MING-MOE-7B
Qwen1.5-7B
🤗MING-MOE-7B
MING-MOE-14B
Qwen1.5-14B
🤗MING-MOE-14B
@@ -109,7 +142,8 @@ Requires-Dist: wandb; extra == "train" 1. 配置环境(测试环境如下,具体版本可以根据实际需求配置) * python==3.9.16 - * pytorch==1.13.0+cu116 + * pytorch==2.0.1+cu117 + * peft==0.9.0 2. 安装项目依赖 @@ -120,19 +154,28 @@ Requires-Dist: wandb; extra == "train" ``` 2. 下载模型参数并运行(要求单卡显存 >= 15G) + * MING-MOE + ```bash + CUDA_VISIBLE_DEVICES=0 python -m fastchat.serve.cli \ + --model_path {path_to_checkpoint} \ # 模型路径 + --model_base {path_to_base_model} \ # 基座模型路径 + --max-new-token 3072 # 输出最大长度 + ``` + * MING-1.8B ```bash - # MING-1.8B CUDA_VISIBLE_DEVICES=0 python -m fastchat.serve.cli \ - --model-path {path_to_checkpoint} # 模型路径 - --conv-template qwen + --model_path {path_to_checkpoint} \ # 模型路径 --max-new-token 2048 # 输出最大长度 + ``` - # MING-7B + * MING-7B + ```bash CUDA_VISIBLE_DEVICES=0 python -m fastchat.serve.cli \ - --model-path {path_to_checkpoint} # 模型路径 - --max-new-token 512 # 输出最大长度 - --beam-size 3 # beam search宽度 + --model-path {path_to_checkpoint} \ # 模型路径 + --conv_template bloom \ # prompt + --max-new-token 512 \ # 输出最大长度 + --beam-size 3 \ # beam search宽度 --temperature 1.2 # 采样温度 ``` @@ -144,152 +187,21 @@ Requires-Dist: wandb; extra == "train" * 对话中输入关键词 `new chat` 能够开启新一轮对话。 - - -## 🗃️数据集构建 - -数据集主要由四个部分构成: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
数据类型数据构成数量占比(%)
医疗知识问答基于临床指南和医疗共识的知识问答168k48.88
基于医师资格考试题的知识问答77k
真实医患问答140k
基于结构化医疗图谱的知识问答160k
多轮情景诊断与案例分析基于HealthCareMagic构造的多轮情景问答与诊断 200k21.52
基于USMLE案例分析题的格式化多轮问诊20k
多轮病人信息推理与诊断20k
任务指令医疗指令150k26.91
通用指令150k
安全性数据敏感性问题15k2.69
医疗反事实15k
总计-1.12M100.00
- - - ## 🧭测试样例 +

+ +

-
体检报告分析 - - - - - - - - - - - - - - - -
问题
身高cm=‘null’, 体重kg=‘null’, bmi=‘null’, 收缩压=‘130’, 舒张压=‘75’, 高血压史=‘null’, 心率=‘84’, 糖尿病史=‘null’, 肝功能十项=‘白球比例 = [1.96]、总蛋白 = [74]、白蛋白 = [49]、前白蛋白 = [264]、总胆红素 = [11.6]、直接胆红素 = [2.4]、胆汁酸 = [2.3]、丙氨酸氨基转移酶 = [64]、天门冬氨酸氨基转移酶 = [30]、γ-谷氨酰基转移酶 = [65] ↑、碱性磷酸酶 = [80]’, 血脂四项=‘总胆固醇 = [5.08]、甘油三酯 = [1.75] ↑、高密度脂蛋白胆固醇 = [1.07]、低密度脂蛋白胆固醇 = [3.34]’, 甲状腺(FT3 FT4 TSH)=‘促甲状腺素(TSH) = [0.6415]、游离甲状腺素(FT4) = [12.67]、游离三碘甲腺原氨酸(FT3) = [4.98]’,空腹血糖=‘葡萄糖 = [5.35]’, 癌胚抗原=‘癌胚抗原 = [1.16]’, 甲胎蛋白=‘甲胎蛋白 = [4.68]’, ca199=‘糖类抗原199 = [3.1]’, ca125=‘糖类抗原125 = [5.5]’, ca153=‘null’, 肾功能三项=‘尿素 = [5.2]、肌酐 = [82]、尿酸 = [390]’, 血常规=‘嗜碱性粒细胞计数 = [0.00]、嗜碱性粒细胞% = [0.6]、嗜酸性粒细胞计数 = [0.10]、嗜酸性粒细胞% = [0.8]、红细胞比容 = [0.491]、血红蛋白 = [160]、淋巴细胞计数 = [2.50]、淋巴细胞% = [33.4]、平均血红蛋白量 = [28.5]、平均血红蛋白浓度 = [325]、平均红细胞体积 = [87.5]、单核细胞计数 = [0.60]、单核细胞% = [7.3]、血小板平均体积 = [8.3]、中性粒细胞计数 = [4.40]、中性粒细胞% = [57.9]、血小板计数 = [276]、红细胞计数 = [5.61]、红细胞分布宽度 = [13.2]、白细胞计数 = [7.60]’, 血沉=‘红细胞沉降率 = [1]’, 糖化血红蛋白=‘糖化血红蛋白(HbA1C) = [5.3]’, 尿常规=‘结晶(镜检) = [阴性(-)]、白细胞 = [阴性(-)]、比重 = [1.023]、酸碱度 = [5.0]、亚硝酸盐 = [阴性(-)]、蛋白质 = [阴性(-)]、酮体 = [阴性(-)]、尿胆元 = [阴性(-)]、胆红素 = [阴性(-)]、葡萄糖 = [阴性(-)]、潜血 = [弱阳性]、红细胞(镜检) = [0]、白细胞(镜检) = [0]、上皮细胞(镜检) = [0]、管型(镜检) = [0]、颜色 = [黄色]、清晰度 = [清晰]’, 粪常规+隐血=‘颜色 = [黄色]、性状 = [软便]、虫卵 = [阴性(-)]、红细胞 = [阴性(-)]、白细胞 = [阴性(-)]、隐血试验 = [阴性(-)]’, 内科=‘腹壁厚、心率[84]次/分’, 外科=‘肛拒检、颈部无明显异常’,血压=‘血压[130/75]mmHg’, 胸片(正侧)=‘影像表现:所示胸廓骨骼及胸壁软组织未见异常。纵隔及气管居中未见移位。纵隔未见增宽。心脏形态大小未见异常。两膈光整,两肋膈角锐利。肺门形态大小位置未见异常。两肺野清晰未见异常密度。请根据上述提供的体检指标作出分析及建议。
ChatGPTMING-7B

根据您提供的体检指标,我将对其中涉及的各项指标进行分析和建议:

血压:您的收缩压为130 mmHg,舒张压为75 mmHg,属于正常范围。维持血压在正常范围有助于心血管健康,建议保持健康的生活方式,如合理饮食、适量运动等。

血脂四项:总胆固醇为5.08 mmol/L,甘油三酯为1.75 mmol/L,高密度脂蛋白胆固醇为1.07 mmol/L,低密度脂蛋白胆固醇为3.34 mmol/L。甘油三酯稍微升高,建议控制饮食,减少高脂肪和高糖食物的摄入,增加锻炼,有助于调节血脂水平。

空腹血糖:葡萄糖水平为5.35 mmol/L,在正常范围内,但也建议保持健康的饮食和生活习惯,预防糖尿病的发生。

血常规:血红蛋白为160 g/L,红细胞计数为5.61 × 10^12/L,白细胞计数为7.60 × 10^9/L,血常规结果总体上看起来在正常范围内。

肝功能十项:各项指标在正常范围内,说明您的肝功能正常。

甲状腺功能:促甲状腺素(TSH)、游离甲状腺素(FT4)、游离三碘甲腺原氨酸(FT3)的水平也都在正常范围内。

尿常规:尿常规中有微弱的潜血阳性,这可能提示潜在的泌尿系统问题。建议您定期复查尿常规,如果有持续的异常,可以咨询医生进行进一步检查。

粪常规+隐血:粪便常规和隐血试验结果都在正常范围内,没有异常发现。

总体来说,您的体检结果在大部分项目上都表现为正常范围内。然而,血脂中甘油三酯稍有升高和尿常规中微弱的潜血阳性可能值得关注。在健康方面,建议您保持良好的饮食习惯、适量的体育锻炼,定期体检,如有其他疑虑或症状,最好咨询医生进行详细评估和建议。

根据您提供的体检指标,我可以为您作出如下分析:

1. 身高、体重、BMI:没有提供相关的信息。

2. 血压:您的舒张压处于正常范围,而收缩压略高于正常值。建议您定期监测血压,如有需要请咨询医生。

3. 高血压史:您没有提及是否有高血压史,如果有请及时就医。

4. 心率:您的心率处于正常范围。

5. 糖尿病史:您没有提及是否有糖尿病史,如果有请及时就医。

6. 肝功能十项:您的肝功能十项指标中,白球比例、总蛋白、白蛋白、前白蛋白、总胆红素、直接胆红素、胆汁酸的值都在正常范围内,丙氨酸氨基转移酶和天门冬氨酸氨基转移酶的值稍高,但仍在正常范围内。

7. 血脂四项:您的总胆固醇和甘油三酯的值都高于正常范围,高密度脂蛋白胆固醇的值低于正常范围,低密度脂蛋白胆固醇的值接近正常范围。建议您控制饮食,适量运动,如有需要请咨询医生。

8. 甲状腺功能:您的促甲状腺素和游离三碘甲腺原氨酸的值都在正常范围内,游离甲状腺素的值稍高,但仍在正常范围内。

9. 血糖:您的空腹血糖处于正常范围,糖化血红蛋白的值也处于正常范围内。

10. 癌胚抗原、甲胎蛋白:您的癌胚抗原和甲胎蛋白的值都在正常范围内。

针对以上分析,建议您继续保持良好的生活习惯,注意饮食健康,适量运动,定期监测血压和血糖,如有需要请咨询医生。如果有其他问题,请随时向我咨询。

-
- -
影像报告分析 - - - - - - - - - - - - - - - -
问题
能否用简单的语言解释一下这份检查报告存在哪些问题?我的妇科B超所见:双侧卵巢内见10多枚小卵泡回声;子宫直肠窝见少许液性暗区
ChatGPTMING-7B

当您的妇科B超检查报告提到"双侧卵巢内见10多枚小卵泡回声"和"子宫直肠窝见少许液性暗区"时,可能存在以下问题:

1. 多枚小卵泡回声:这意味着您的卵巢内有许多小的卵泡。在某些情况下,这可能是正常的,特别是在女性的排卵周期中,卵巢会发育多个卵泡,并最终释放一个卵子。然而,如果卵泡数量异常增多,可能会与多囊卵巢综合征等问题相关。

2. 液性暗区:这意味着在子宫直肠窝(子宫后方与直肠之间的区域)中存在一些液体。这个液体的原因可能是炎症、囊肿、或其他病变引起的。

需要强调的是,我并不是医生,无法对具体的病例进行诊断。要正确理解这份检查报告,最好的做法是咨询您的医生或专业医疗团队。他们可以根据您的个人情况,解释报告的含义,并提供必要的诊断和治疗建议。

非常感谢您的咨询。根据您提供的检查报告,双侧卵巢内出现了多枚小卵泡回声,这可能是卵巢功能异常的表现。此外,子宫直肠窝也发现了少许液性暗区,这可能是子宫内膜异位症的表现。这些问题可能会影响您的生育能力,因此建议您及时就医,进行进一步的检查和治疗。

对于卵巢功能异常,我们通常会建议您进行促排卵治疗,以促进卵泡的发育和排卵。对于子宫内膜异位症,我们可以采用药物治疗或手术治疗,具体治疗方案需要根据您的具体情况而定。

此外,建议您定期进行妇科检查,保持良好的生活习惯,避免过度劳累和情绪波动,保持心情愉悦,有助于维护女性健康。

如果您还有其他问题或需要进一步的帮助,请随时与我们联系。祝您早日康复!

-
- -
建议咨询 - - - - - - - - - - - - - - - -
问题
我母亲,60岁,体检时骨质疏松报告显示T值-3.5,Z值-2.1。饮食习惯:和家里的男性比起来吃肉不多,但和女性相比,量也正常。就诊记录:之前去当地医院就诊,医生建议要正规化治疗,多方面都要涉及。还说要打种什么针,一年几针的,具体记不清了。想咨询下医生:1. 像这个报告说的情况严重吗,我和我妈都挺担心的2. 正规化治疗,有哪些方面?3. 要打针的,是什么药?要住院吗?贵不贵?4. 这个病对生活影响大吗?5. 生活习惯方面有没有建议?尤其是她平常还做瑜伽,要不要紧?
ChatGPTMING-7B

我可以理解您和您母亲对这个情况的担忧。骨质疏松是一种常见的骨骼疾病,主要是骨密度降低,骨组织变得脆弱容易骨折。让我逐个回答您的问题:

1. 报告显示T值-3.5,Z值-2.1,这表明您母亲的骨质疏松程度较为严重。T值和Z值是用来衡量骨密度的标准,T值越低,表示骨密度距离年轻健康的标准值差距越大,而Z值是与同龄人相比较的标准。

2. 正规化治疗通常涉及多个方面,包括药物治疗、饮食调整、锻炼以及生活方式改变。药物治疗常用的包括:激素替代治疗、双磷酸盐、选择性雌激素受体调节剂等。但具体使用何种药物需要医生根据患者的情况来判断。

3. 关于药物治疗,医生可能会建议打激素类或者其他类的针剂,这些针剂通常是用来增加骨密度的。大部分情况下,这些针剂是通过皮下注射,而不是住院治疗。关于价格,具体药物的费用会因地区和医院的不同而异,建议您在咨询医生时详细了解费用情况。

4. 骨质疏松如果不得到有效治疗,可能会导致骨折的风险增加,尤其是髋部、脊椎等骨骼易受影响。这些骨折会给生活带来很大的影响,限制活动能力,甚至可能导致长期疼痛和功能障碍。

5. 生活习惯方面的建议包括增加钙和维生素D的摄入,这对于骨骼健康很重要。同时,规律的有氧锻炼、体重训练和平衡性锻炼对于预防骨质疏松和骨折风险的降低也很有帮助。至于瑜伽,很多瑜伽动作可以帮助增强肌肉力量和平衡性,但是建议在治疗方面请医生的意见,因为有些动作可能需要避免或调整。

总的来说,对于骨质疏松,早期发现和积极治疗是很重要的。建议您尽快带您的母亲去正规医院专科进行详细的诊断和治疗方案制定,以便及早控制疾病进展,减少骨折风险,并改善生活质量。

您好,根据您提供的信息,您母亲的骨质疏松情况较为严重,T值-3.5和Z值-2.1表明她的骨密度明显低于正常人群。骨质疏松是一种常见的老年疾病,会导致骨质变薄、易碎,从而增加骨折的风险。

针对您的问题,我来逐一回答:

1. 这个报告的情况非常严重,您和您的母亲都应该非常担心。骨质疏松是一种慢性疾病,需要长期的治疗和管理。

2. 骨质疏松的正规化治疗包括药物治疗、营养补充和运动锻炼等多个方面。药物治疗主要是通过补充钙、维生素D和骨吸收抑制剂等药物来促进骨密度的增加。营养补充也很重要,建议增加摄入富含钙和维生素D的食物,如奶制品、豆制品、鱼类等。运动锻炼可以增强骨骼和肌肉的力量,减少骨折的风险。

3. 具体的药物治疗需要根据患者的具体情况来确定,一般包括钙剂、维生素D、双膦酸盐等药物。这些药物需要医生的指导和监督,一般不会住院,可以在门诊进行治疗。

4. 骨质疏松对生活有一定的影响,但通过合理的治疗和管理,可以减少骨折的风险,提高生活质量。

5. 生活习惯方面,建议您母亲避免长时间保持同一姿势,尤其是久坐或久站。可以适当增加户外活动时间,进行适量的有氧运动,如散步、慢跑等。此外,戒烟限酒,保持良好的心态和充足的睡眠也很重要。

最后,建议您母亲定期复查骨密度,根据医生的建议进行治疗和管理。如果有任何疑问或需要进一步的帮助,请及时咨询医生。祝您母亲早日康复!

-
- +

+ +

## 🪶贡献 -本项目由上海交通大学未来媒体网络协同创新中心和上海人工智能实验室智慧医疗中心合作研发。模型数据系统主要由廖育生,孟昱同,刘泓呈完成,指导教师为[王钰](https://mediabrain.sjtu.edu.cn/yuwang/)副教授。 +本项目由上海交通大学未来媒体网络协同创新中心和上海人工智能实验室智慧医疗中心合作研发。模型数据系统主要由廖育生,江书洋,刘泓呈,孟昱同完成,指导教师为[王钰](https://mediabrain.sjtu.edu.cn/yuwang/)副教授。 diff --git a/ming/__pycache__/__init__.cpython-310.pyc b/ming/__pycache__/__init__.cpython-310.pyc index 5de7cd4b19f85793418f8c404c477e07a9252f3c..ba678f7270b0e062c61a6b60f77abac4074d872a 100644 GIT binary patch delta 64 zcmZ3-IF*qnpO=@50SNXUS4f-4W36GKpPN^rUyxc-l$w)Pte=yam|t01oRONBu3u1; SpOuE}MNLk$3L>J>r& delta 89 zcmbQrxQ>x0pO=@50SG1?dX_qo$J#MaKO;XkRX@2{zcMi|y|OepBQ;OIva}dTrRQWO h=Ii^Wrer23=EVE>_`=z~{;vAIo__ASK*q#;H2@kV9ohf@ diff --git a/ming/__pycache__/conversations.cpython-310.pyc b/ming/__pycache__/conversations.cpython-310.pyc index 1e9cec9cbb41a7622ffeebbc9070391001f4b3f9..3c23ac6bc661c659bf6e8933b5db16abadee3e58 100644 GIT binary patch delta 266 zcmdnsxWJJ&pO=@50SNXTS4eA_$ScdZVWV~%qojDMLW=erjwr`hA5>}YS`-M=9TCdq?Qz==A;$t=VT`4SC$rMq~@jT7Zl}Zr6!jY>-&28xo=Kn zJ|V%#F$+iY+BSxg@`+$Q#I+>?3=aF>11aoGGL4 zWH-63f&L(6!XP35M1+C}J`fQGA_PH12#DYZ5#b<007L|Xh#(Ll1R^3pgb0WToa`f? Z#Kgcjd4v2n9wtV%9~?X!QUZ)D{{at>1X8Urs^jb>sKb`rB{|FXQbxoSC$q7sq~!8#C(0<)RfHR#GH5^A741z z*WXp&*VE5k7s%M`#e717k$tkTjNRl2nKKgJKnE0g0*NTLl>Fq9{Guqgn|e`5D^R__(4P%h!6k~K_DU!LwDPY!MlDFH^7{{U~KOTYjC diff --git a/ming/__pycache__/utils.cpython-310.pyc b/ming/__pycache__/utils.cpython-310.pyc index 9244fb9b9d08fcb9ced52763620d2ed65644631b..f1477cbc87fbde9a9b64f1adab9757aa91700282 100644 GIT binary patch delta 72 zcmeC<{K~D1ZpPN^rUyxc-l$w)Pte=yam|t01oRONBu3u1; apOuF2)r2O|p;W7Ooo%o71bcNnVx delta 97 zcmey$(Z|W1&&$ij00b~v Rm6}{qtncgT=RUDR8vtB?6z~85 delta 88 zcmbQmxS5eVpO=@50SI!A@J!^kaSYSX$j?pHPcGK4Ow3EKEKSZx&C{)alExN@w9ryr5bj{5SYUuAP0$Ss z-56`m&PN2>#MsscAujv_TzBEhE{qEkUAuFm&LGh^$^7!o`Mz^zGCK=DQm%r_3=J2sH9ZIut zW9bY@jk9ng%BGqCWQ~?CvkNQ|A}K+GEYUT}3;+8#WIm=RjcT3V?@7%w$fa1A%^M|S z<(>&hk{F;6h17*MAWlZb%<{u_(VPeWIsN8xMK7`nXZdVd&)-NFR;%SjwtQVL@TmVY#_I+NYByr_&TP04&ZIC9lxj_$28^NK>k#Y)&w*QKP9zSq9O52;;KXw zTh?Cue!LGpq1_jNjrM7ule$z&NLg&sNBAa2{JQ74Opi(2k=Q4oQQoPlIC|8BZ~am8 zrl=;+uBot%C$&R^uVl3UFFaCpGGa7;gBfiC7TPbgC|K5|wShlJcK5fWd@0d+^=teV Y@Zn%E4hiJJE8xTT!Ozs8;MNKCH0#0C&1^r87-kILZ8G&iTGMGjo312Q%J9uh&iF z7+61kJGSQSfXTf`lEMxa=>f#6qmCX3Gr}Na*%r6T;}rsg`^pnMSpj>JPo}3hNe`5- z@r&u{vW-u)cs8Beog?*9W=kdd z?1(+XAwA1S_zcUj<);oHQ}PWO(MU<|8Cc|uteM}e-f(6BCUB^;-xa?yHqskU3|D{Y z>2`=>$}nIa9~*bu3XURS4nJX<3z|sb55wPdUDk42B$veIKm@>jI zfu(R8b%76bpno*#q8jyp3)EB@kJOqQn%KfiMhC71zZ&9&JZ$RXoGNQ5R1{t+%qnc+ zMz;yyaKAeO+tr`l9_sC)gyiKU$B5WPPpI$IYvnwvu%gf+VNy}g2Ibp6hfZKVlyL6K zyoLLr;Q2So)~;+&a~B?Dd8)8jn9qoJ|MGQFoK#``l)O&tVV5}!bJaU$0`x5>3$R^>Z$T-;88NCVt%tycLF4+$^;6!imFE^H} AvH$=8 diff --git a/ming/eval/__pycache__/eval_gpt4.cpython-310.pyc b/ming/eval/__pycache__/eval_gpt4.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8b9b9563e77dec60845414207e6027850826c555 GIT binary patch literal 6346 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 Rm6}{qtncgT=RUE+5CC9r6$k(T delta 88 zcmZ3$xRa4PpO=@50SH=;@J!^kag5Q=$j?pHPcGK4Ow3EKEKSZx&C{_`=z~{;vAIo__ASK*r|xtb9@ciU=PD diff --git a/ming/eval/cblue/__pycache__/evaluators.cpython-310.pyc b/ming/eval/cblue/__pycache__/evaluators.cpython-310.pyc index c74c4643be5a0e8287ac64253bf3d1cf7b47aa80..11f474130d73121127843580d3fa9de8c8c4aa9f 100644 GIT binary patch delta 66 zcmZ3k)~Cju&&$ij00jGvD{SO$W!7-j&&?~*FGwvZO3g_t*3ZdI%&#mh&PdHm*Dol_ U&q_@$Dc1M(^mE^QkvWVX0Iw((J^%m! delta 91 zcmeBETdu~P&&$ij00cn~c{XylGCRiUXXNLm>L(ZLS0?7ASC%Gcq~_^YmKFo4^qkDZ je0|^4l+5JBoOmA}UpU*>-&Nn&)6ZQO$k@DtIgB3wCt@Aj diff --git a/ming/eval/cblue/__pycache__/post_generate_process.cpython-310.pyc b/ming/eval/cblue/__pycache__/post_generate_process.cpython-310.pyc index 02586ec6282aed9348867bd3e201685c71775568..7bec57765c533236a02cc9de6a36f37060128143 100644 GIT binary patch delta 66 zcmZoLes08_&&$ij00jGvD{SPx&!Z8bpPN^rUyxc-l$w)Pte=yam|t01oRONBu3u1; UpOuF2&#n>UmP0Mn8dR{#J2 delta 91 zcmaEE)L_h=&&$ij00aj<@NDG1&*PY>pOK%Ns-Ik}UzwPfURj!)k(#GpSy~LF(sMEs j^YwjGQ!pOK%Ns-Ik}UzwPfURj!)k(#GpSy~LF(sMEs j^YwjGQ! 1: + # if len(line['additional_info']['answer']) > 1: + if True: for o_answer in all_index: if f"{o_answer}对" in line['text']: return 0 return 1 + else: pred = pred[0] @@ -466,9 +468,10 @@ def multiplechoice_acc(line): all_index = all_index.replace(answer, "") if answer not in pred: return 0 - if len(answer_list) > 1: + # if len(answer_list) > 1: + if True: for o_answer in all_index: - if f"{o_answer}." in pred: + if f"{o_answer}" in pred: return 0 return 1 @@ -596,8 +599,8 @@ def multiplechoice_en_acc(line): type_acc["type"].append("AVERAGE") type_acc["acc"].append(avg_acc) - import pdb - pdb.set_trace() + # import pdb + # pdb.set_trace() df = pd.DataFrame(type_acc) df.to_csv(os.path.join(args.output_file.rsplit("/", 1)[0], "type_acc.csv"), index=False) print(f"Acc in {dataset_name}: {avg_acc}") diff --git a/ming/eval/eval_gpt4.py b/ming/eval/eval_gpt4.py new file mode 100644 index 0000000..28da768 --- /dev/null +++ b/ming/eval/eval_gpt4.py @@ -0,0 +1,184 @@ +import argparse +import torch +import os +import json +from tqdm import tqdm, trange +# import shortuuid + +from ming.conversations import conv_templates, SeparatorStyle +from ming.model.builder import load_pretrained_model, load_molora_pretrained_model +from ming.utils import disable_torch_init, get_model_name_from_path +# from llava.mm_utils import tokenizer_image_token, process_images, get_model_name_from_path +from torch.utils.data import Dataset, DataLoader +import pandas as pd +import openai +from openai import OpenAI + +# from PIL import Image +import math + +client = OpenAI( + api_key=os.environ["OPENAI_API_KEY"] + ) +# print(f"Use OPENAI_API_KEY={os.environ['OPENAI_API_KEY']}!") + +def split_list(lst, n): + """Split a list into n (roughly) equal-sized chunks""" + chunk_size = math.ceil(len(lst) / n) # integer division + return [lst[i:i+chunk_size] for i in range(0, len(lst), chunk_size)] + + +def get_chunk(lst, n, k): + chunks = split_list(lst, n) + return chunks[k] + + +# Custom dataset class +class CustomDataset: + def __init__(self, questions): + self.questions = questions + # self.tokenizer = tokenizer + # self.model_config = model_config + self.index = 0 + + def __getitem__(self, index): + line = self.questions[index] + + # return question, ansewr, additional info + # print(line) + question = line['conversations'][0]['value'] + answer = line['conversations'][1]['value'] if len(line['conversations']) > 1 else None + + additional_info = line['eval'] + + + # input_ids = tokenizer_image_token(prompt, self.tokenizer, IMAGE_TOKEN_INDEX, return_tensors='pt') + + return question, answer, additional_info + + def __len__(self): + return len(self.questions) + + def __iter__(self): + # 返回迭代器对象本身 + return self + + def __next__(self): + if self.index < len(self.questions): + # 返回下一个值并更新索引 + item = self.questions[self.index] + self.index += 1 + return item + else: + # 没有更多元素时抛出StopIteration异常 + raise StopIteration + +def convert_to_json(questions): + questions = questions.to_dict(orient='records') + return questions + +def eval_model(args): + if args.question_file.endswith(".csv"): + questions = pd.read_csv(args.question_file) + questions = convert_to_json(questions) + elif args.question_file.endswith(".jsonl"): + questions = [json.loads(q) for q in open(os.path.expanduser(args.question_file), "r")] + else: + # a json file + with open(args.question_file, 'r') as f: + questions = json.load(f) + + questions = get_chunk(questions, args.num_chunks, args.chunk_idx) + + answers_file = os.path.expanduser(args.answers_file) + os.makedirs(os.path.dirname(answers_file), exist_ok=True) + + if args.resume and os.path.exists(answers_file): + current_file_num = 0 + with open(answers_file, 'r') as f: + for line in f: + current_file_num += 1 + questions = questions[current_file_num:] + ans_file = open(answers_file, "a", encoding='utf-8') + else: + ans_file = open(answers_file, "w", encoding='utf-8') + + # test + # questions = questions[:5] + + def get_logit_bias(state_num=4): + return {(32+i):100 for i in range(state_num)} + + sequence_bias = {} + task_specific_prompt = "" + if args.question_file.split("/")[-1].split(".")[0] == 'apps': + task_specific_prompt = "\n\nPlease use python language to answer this problem. You should process stdin and stdout with input() and print():" + elif args.question_file.split("/")[-1].split(".")[0] == 'bbh': + task_specific_prompt = "\n\nPlease format the final answer at the end of the response as: The answer is {answer}. Let's think step by step." + elif args.question_file.split("/")[-1].split(".")[0] == 'gsm8k': + task_specific_prompt = "\n\nPlease format the final answer at the end of the response as: The answer is {answer}." + elif args.question_file.split("/")[-1].split(".")[0] == 'mmedbench_en_cot': + task_specific_prompt = "\n\nPlease format the final answer at the end of the response as: The answer is {answer}." + elif args.question_file.split("/")[-1].split(".")[0] in ['mmedbench_zh_cot', "PLE_Pharmacy_cot", "PLE_TCM_cot"]: + task_specific_prompt = "\n\n请在回答的最后用以下格式回答:答案为{answer}。" + elif args.question_file.split("/")[-1].split(".")[0] == 'math' or args.question_file.split("/")[-1].split(".")[0] == 'math_500': + # task_specific_prompt = "\n\nPlease wrap your final answer with \\box{}." + task_specific_prompt = "\n\nPlease format the final answer at the end of the response as: The answer is {answer}." + elif args.question_file.split("/")[-1].split(".")[0] in ["winogrande"]: + sequence_bias = get_logit_bias(2) + args.max_new_tokens = 1 + task_specific_prompt = "\n\nPlease answer with option letter directly, do not output other infomation." + elif args.question_file.split("/")[-1].split(".")[0] in ["race_high", "race_middle", "mmedbench_en", "mmlu", "arc"]: + sequence_bias = get_logit_bias(4) + args.max_new_tokens = 1 + task_specific_prompt = "\n\nPlease answer with option letter directly, do not output other infomation." + elif args.question_file.split("/")[-1].split(".")[0] in ["mmedbench_zh", "ceval", "cmmlu", "PLE_Pharmacy", "PLE_TCM"]: + sequence_bias = get_logit_bias(4) + args.max_new_tokens = 1 + task_specific_prompt = "\n\n请用选项的字母直接回答,不要输出其他信息:" + elif args.question_file.split("/")[-1].split(".")[0] == "humaneval": + task_specific_prompt = "\n\nPlease complete the code within the code block ```python```." + # task_specific_prompt = "\n\nPlease answer with option letter directly, do not output other infomation." + dataset = CustomDataset(questions) + + for idx in trange(len(dataset)): + line = dataset[idx] + question, answer, additional_info = line + question = question + task_specific_prompt + + message = [{"role": "user", "content": question}] + completion = client.chat.completions.create( + model=args.model, + messages=message, + temperature=args.temperature, + seed=0, + logit_bias=sequence_bias, + max_tokens=args.max_new_tokens, + ) + outputs = completion.choices[0].message.content + + # ans_id = shortuuid.uuid() + ans_file.write(json.dumps({"prompt": question, + "text": outputs, + "solution": answer, + "additional_info": additional_info, + "model_id": args.model, + "metadata": {}}, ensure_ascii=False) + "\n",) + ans_file.flush() + + ans_file.close() + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument("--model", type=str, default="gpt-4-turbo") + parser.add_argument("--question-file", type=str, default="tables/question.jsonl") + parser.add_argument("--answers-file", type=str, default="answer.jsonl") + parser.add_argument("--resume", action="store_true") + parser.add_argument("--num-chunks", type=int, default=1) + parser.add_argument("--chunk-idx", type=int, default=0) + parser.add_argument("--temperature", type=float, default=0.0) + parser.add_argument("--max_new_tokens", type=int, default=1024) + parser.add_argument("--top_p", type=float, default=1.0) + args = parser.parse_args() + + eval_model(args) \ No newline at end of file diff --git a/ming/model/__pycache__/__init__.cpython-310.pyc b/ming/model/__pycache__/__init__.cpython-310.pyc index 9d84c61d1fa672ea4382ee9b22a8c6b87cb5b91e..9e07a22b700d5454508385698c884400292d003e 100644 GIT binary patch delta 63 zcmeBU`pU?i&&$ij00jGvD@^2`reUX_n^&S=kXlldnv+(npOcxGUs+n5k(!sTUr>~v Rm6}{qtncgT=RWa~4gh)s72N;; delta 88 zcmey$*vG`3&&$ij00ibcL?&`ia}3wd$j?pHPcGK4Ow3EKEKSZx&C{~vm6}{qtncgT=RSD~iz1`yh#z}P%Fino)oW%Co>VkS0wpc{)POpX<(Vq~6tOW-l1DFDAYIuHN= delta 229 zcmbQOyib`gpO=@50SG?Iil*(-+Q{e1;uxl%k)NBYpIoe8nV6SeS(==Ynx|h`S`4Jp zb21b2^?g%QGLsW?;(dI4;cQ=jSAAbkKX+XqV{$c%B4fbhxh#_ygEt$n@-s2&PIh3| zW@Mk7!!FNgFu8|4g)wCFNA{_VjGmL*Ij6AIh%_@YGEA1_@|G{D;m^{`(ytZGV@lDj z6|G^Nz*sb)hB1Yqlo7~k-`vc_!o;{~atF@_#?6y0c{>@mY(C6e%*2)t^h5Ea$@1*- TlcNQqnHf2lCT|yb%$N!Qc3wo# diff --git a/ming/model/__pycache__/modeling_molora_qwen.cpython-310.pyc b/ming/model/__pycache__/modeling_molora_qwen.cpython-310.pyc index aa47c037144d4447f0b8627ca96b34984648ee86..8429eced3a1389be53ad06af5237515e358ed5ef 100644 GIT binary patch delta 2217 zcmaJ?-A`Oq5a+_OyKHyiE-a{RDHLd7Yhe+vC~ax6Ux1?4R!mM?50~A;?k)E#=bSCY z#9&BYv?fh@d@v@Om}s>2$q*lW(Zm>i>O&Jv%>6ffGA72EbJwzvR+9Z?n3*$YX3lTs zemM8nY^$Hiq#EGwhhKYF24DQP_2VXksIQu)CrO7_b*UvK^Q7&2w8E^Ch?J{ro!+pV zDyu0|6}wbo9<_>+sQt00he_7fh_Iz97%f`G3M0yj zjUXR+OT!F!$;OHPHOKc@#?H8jheeywwulG@dD-Jc{rfK$xJk})X#}FnFUO?E6sHI`ljo(e~GsabKJhwHP95bMU#TM5%r5?6)Zkz^(FoWef ze%Y2(R9$`nb+KjJ5_yv!#0Y%|FCm;kIE!!&;XFW?C_`JMWq$pT^dx(PXlbpHy4v%d<0JJD-o$)jkIrUCg~k zj>q`|!mgaKOV}EL1*eU6L%o*yW_EWqc<^&V*g6S`Ntq!B%kiJ-Wv1azzS~4ZsS!fIgajei;uX{HhG9Qq(mK zW+DLu0xMAu+WnqgBx=NCO|~Z^I!&o79YaIML8*^CnOOu}E~)z+$Du^z)88Erq3;iJ z?@!=+z^BI1K0Or3CSA&b5nOnF@b^g-qLUV zXj|nEMJ-rDdlez#7)V47boWDov)y?>-rWyddxiThby(RduGf}x7B&y93TxSc{RJyl zR`^W}Go^m&?rS4yT|SlmD)V4H|JnU)O4rEs1w#jhFOfFs?+6(-%WB{-J`OJVy%9kL zhTLw5E<~bEXS;-wPW}c;GwSOD2MFm3EKx^BQA>}Qdezp|pc5vhEofksN-!;yBct_R zCt1sJXzlX_i$XG}qPM39I&!+FZQjlUSm3@ zZzJfhO9iEN1Wo?yC}k1!X9xSkTM=-Oo;($+VEq(+0>2c=2H1&D9Xw;K{iJ8He}95m|3zF*=# z9-C6P`_DEngGkhG{gWqkAKpVtCxR{rzYcs60f&`iVjM%)-5I5&W(Q6tOmn_rBRB9b DT&nxa delta 2254 zcmaJ?O>9(E6rR_I z1RQ}zMcLgAap}fjFluT@Waq|(YfZ>q7&q=Uu80YG&V8kwHiS0soAb^&_q_9eA5Psm znevm#L=65e|DK!wW%T>h?M6+CuNuep$qujT5+e+$7uvo@D%7xe#9W|Dw#4tlCdh}<9WY+fV&^8?VGG&ArUYW`^=5pfs%q2A7a!Zv{Vj5fKq96$r1WkL|GPAHSX^oA zS;@ET&>-W}Tin_!pmQ!wF9no^gd1+)*j|~<09Ph4U5;P2K~QzsS>)++w!w=T)(0=F zfG~@22H{nN*AQL@kj-UCYZx+_d2F3J)WotXQ%pzA_*TSiVl;7}RplfKLtINd$lwRr zTL^C>oD+8I^-P@-GKu)N^}yuD3`Twt6ptaS=P1fL@}>d$;rS;H&=PCYavf|Ma?`7w z6koKRed#o?CyIJqoNoX}Iew>s;YoHLq0SxAm&|ExVsG;6sm-3F=6eVe0J4dPhPe=# zR$g8}QJp1xMZue5FtuyY#MdXqKtZ57!9ooxmQxS3^Wxp~g%Om?DMQWETA(zq2_MKSld}rHs?8b^c5!23V{*%AnR+nVY;0V7*>iB@ z2pU$~O4V6)Chn->)+hz4VQ!)lc8w~x6xrT>aBxp=5s>uu!xEoozDpchHq52fU7dwR zLaN-Db6_38z6~qv7Fw7P-}V;LvQ33gLVtmJu&w{-eKDb8{1|kk=zL+QCexw6(PUFt z4IHXAWwASI&QH+fdO}nnpCV6ryYBpF$iw`~#GDbD6~f`ZkqJ&eSanWnM0N!RU+d6Q zRmvaBGHR#RMW;fM8Jm;9uq>D%!m!WPo|jp}ameaD2TLQQ5MMH%hg=Qi3&S$0nue@4 zzDz(h!YF5(YNZfSs2=R05t2uQY%c2$2}0t zYVZlXP+DR+jolOTg>gvI-NMiD8+dF&TS^ Zp<@h9*L^c`OY9jq)SS;u$7;EO{{brKFW~?H diff --git a/ming/model/__pycache__/utils.cpython-310.pyc b/ming/model/__pycache__/utils.cpython-310.pyc index 902f8e2e421a6e420a1316fff2ae5dd04881b566..0e388ad11e051c8a5c0be52ba06e9943d184b48a 100644 GIT binary patch delta 3991 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 "$output_file" + for IDX in $(seq 0 $((CHUNKS-1))); do + cat ${LOGS_BASE_PATH}/${CKPT}/${DATASET}/infer_${CHUNKS}_${IDX}.jsonl >> "$output_file" + done + + echo "evaluating ${DATASET}" + srun -p medai --output=${LOGS_BASE_PATH}/${CKPT}/${DATASET}/eval.log python -m ming.eval.eval_em \ + --input_file ${LOGS_BASE_PATH}/${CKPT}/${DATASET}/infer.jsonl \ + --output_file ${LOGS_BASE_PATH}/${CKPT}/${DATASET}/infer-wrong.jsonl +done \ No newline at end of file