项目介绍
本教程主要针对最新的ChatGLM3-6b模型进行部署和测试,该模型相较于2代模型有了全方位的提升,值得一提的是支持自定义工具的能力。后续会持续更新ChatGLM3-6b微调的教程、ChatGLM3-6b与工具的联动教程。
环境介绍
计算资源:V100 Tensor Core GPU
镜像:Pytorch 2.0.1 Cuda11.7 Python3.10
官方注:ModelWhale GPU机型需要从云厂商拉取算力资源,耗时5~10min,且会预扣半小时资源价格的鲸币。如果资源未启动成功,预扣费用会在关闭编程页面后五分钟内退回,无需紧张,如遇问题欢迎提报工单,客服会及时处理。
一、环境准备
# 确认GPU型号与显存大小
!nvidia-smi
Fri Nov 3 09:51:06 2023
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.129.06 Driver Version: 470.129.06 CUDA Version: 11.7 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 Tesla V100-SXM2... Off | 00000000:00:09.0 Off | 0 |
| N/A 46C P0 26W / 300W | 0MiB / 32510MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
# 检查模型文件正确挂载
!ls -lh /home/mw/input/chatglm3_6b6338
total 12G
-rw-r--r-- 1 mw root 1.3K Nov 3 09:09 config.json
-rw-r--r-- 1 mw root 2.3K Nov 3 09:09 configuration_chatglm.py
-rw-r--r-- 1 mw root 1.5K Nov 3 09:09 gitattributes.txt
-rw-r--r-- 1 mw root 55K Nov 3 09:09 modeling_chatglm.py
-rw-r--r-- 1 mw root 4.1K Nov 3 09:09 MODEL_LICENSE.txt
-rw-r--r-- 1 mw root 1.8G Nov 3 09:09 pytorch_model-00001-of-00007.bin
-rw-r--r-- 1 mw root 1.9G Nov 3 09:09 pytorch_model-00002-of-00007.bin
-rw-r--r-- 1 mw root 1.8G Nov 3 09:09 pytorch_model-00003-of-00007.bin
-rw-r--r-- 1 mw root 1.7G Nov 3 09:09 pytorch_model-00004-of-00007.bin
-rw-r--r-- 1 mw root 1.9G Nov 3 09:09 pytorch_model-00005-of-00007.bin
-rw-r--r-- 1 mw root 1.8G Nov 3 09:09 pytorch_model-00006-of-00007.bin
-rw-r--r-- 1 mw root 1005M Nov 3 09:09 pytorch_model-00007-of-00007.bin
-rw-r--r-- 1 mw root 20K Nov 3 09:09 pytorch_model.bin.index.json
-rw-r--r-- 1 mw root 15K Nov 3 09:09 quantization.py
-rw-r--r-- 1 mw root 7.3K Nov 3 09:09 README.md
-rw-r--r-- 1 mw root 12K Nov 3 09:09 tokenization_chatglm.py
-rw-r--r-- 1 mw root 244 Nov 3 09:09 tokenizer_config.json
-rw-r--r-- 1 mw root 995K Nov 3 09:09 tokenizer.model
# 安装环境依赖
!pip install protobuf transformers==4.30.2 cpm_kernels torch>=2.0 gradio mdtex2html sentencepiece accelerate -i https://mirrors.cloud.tencent.com/pypi/simple
二、模型部署和推理
测试任务:测试ChatGLM3-6b对长文本的理解能力
任务场景:智能问诊
Prompt1:
疾病描述:一个月前在浙江大学第一附属医院测得血压150/110,做了彩超等检查排除肾上腺疾病,但生长因子和结合蛋白偏高,高血压未用药后恢复正常。之后复查,结合蛋白临界,生长因子略高,但是人生长激素明显升高11.7,曾做过垂体核磁 无异常。
身高体重:162cm,49.4kg
疾病:发现血压高、类胰岛素样生长因子偏高1个月,发现人生长激素偏高1天
患病时长: 一个月已就诊医院科室:浙江大学第一附属医院
用药情况:无
过敏史:无
既往病史:
手术:无
重大疾病:
放化疗:无
慢性疾病:浅表胃炎,今年2月查出回肠末端溃疡
希望获得的帮助:曾做过垂体核磁,结果无异常。请问生长激素为何一个月会波动这么大?有没有其他可能原因?
根据以上病例信息给出初步诊断和用药建议
from transformers import AutoTokenizer, AutoModel
# 从加载的模型路径中导入模型
tokenizer = AutoTokenizer.from_pretrained("/home/mw/input/chatglm3_6b6338", trust_remote_code=True)
model = AutoModel.from_pretrained("/home/mw/input/chatglm3_6b6338", trust_remote_code=True).half().cuda()
# 进入评估模式
model = model.eval()
# 传入prompt
prompt = '疾病描述:一个月前在浙江大学第一附属医院测得血压150/110,做了彩超等检查排除肾上腺疾病,但生长因子和结合蛋白偏高,高血压未用药后恢复正常。之后复查,结合蛋白临界,生长因子略高,但是人生长激素明显升高11.7,曾做过垂体核磁 无异常。身高体重:162cm,49.4kg疾病:发现血压高、类胰岛素样生长因子偏高1个月,发现人生长激素偏高1天患病时长: 一个月已就诊医院科室:浙江大学第一附属医院用药情况:无过敏史:无既往病史:手术:无重大疾病:放化疗:无慢性疾病:浅表胃炎 今年2月查出回肠末端溃疡 (2023-08-22填写)希望获得的帮助:曾做过垂体核磁,结果无异常。请问生长激素为何一个月会波动这么大?有没有其他可能原因?根据以上病例信息给出初步诊断和用药建议'
response, history = model.chat(tokenizer, prompt, history=[])
print(response)
Loading checkpoint shards: 0%| | 0/7 [00:00<?, ?it/s]
根据您提供的病例信息,患者在一个月前首次发现血压升高,并经过检查排除肾上腺疾病。之后复查时,结合蛋白处于临界水平,生长因子略高,但人生长激素明显升高11.7。结合病史和检查结果,我们可以做出以下初步诊断:
1. 高血压:患者发现血压高,且血压未用药后恢复正常,可能存在持续性高血压的情况。
2. 生长激素升高:患者人生长激素偏高,可能存在生长激素分泌过多或分泌异常的情况。
3. 回肠末端溃疡:患者今年2月查出回肠末端溃疡。
根据以上病史和检查结果,可能的病因包括:
1. 生长激素分泌过多:可能由于垂体肿瘤、甲状腺功能亢进等原因引起。
2. 分泌异常:可能由于生长激素分泌的调节因子异常,如生长激素受体异常、生长激素受体的基因变异等。
3. 回肠末端溃疡:可能与胃酸分泌过多、胃黏膜的保护作用减弱等因素有关。
针对您的病情,建议您到专业医院进行进一步检查,明确诊断,并根据检查结果制定相应的治疗方案。在治疗期间,应注意观察血压、生长激素水平等指标的变化,及时调整治疗方案。同时,应保持良好的生活习惯,低盐、低脂饮食,保持良好的心理状态,以促进病情恢复。
Prompt2:
疾病描述:性生活之后有的炎症,会不会是什么病原体引起的
身高体重:168cm,57.1kg
疾病:小腹不舒服尿完尿还是有尿意
怀孕情况: 未怀孕
过敏史:无
希望获得的帮助:可不可以开一点口服药
根据以上病例信息给出初步诊断和用药建议
# 传入prompt
prompt = '疾病描述:性生活之后有的炎症,会不会是什么病原体引起的\n身高体重:168cm,57.1kg\n疾病:小腹不舒服尿完尿还是有尿意\n怀孕情况:未怀孕\n过敏史:无\n希望获得的帮助:可不可以开一点口服药\n根据以上病例信息给出初步诊断和用药建议'
response, history = model.chat(tokenizer, prompt, history=[])
print(response)
初步诊断:根据病史,症状主要表现为性生活后的小腹不适和尿频,可能是由生殖器官感染(如性传播疾病)引起的。
用药建议:建议您先去医院进行相关检查,如分泌物检查、尿常规等,以明确病原体。如果检查结果显示病原体感染,根据感染的具体类型和严重程度,医生会为您开具相应的口服药物治疗。常见的治疗药物包括抗生素、抗病毒药物等。
如果检查结果显示无病原体感染,可能是因为生殖器官炎症引起的,此时需要针对炎症进行治疗。一般会开具口服药物,如止痛药、抗生素等。
请您根据医生的建议进行治疗,并在治疗期间注意保持生殖器官的清洁,避免再次感染。同时,也建议您在性生活中注意使用安全套,以预防性传播疾病的发生。
Prompt3:
疾病描述:
昨天下午放学回家后低烧,直至目前体温一直在37.4-38之间。今天下午去的社区医院,化验了血,做了胸片,显示白细胞高,c反应蛋白高,支原体感染弱阳性,目前在药店自己购买了希舒美阿奇霉素混悬剂,还没有吃
身高体重:123cm,23kg
疾病:支原体感染
患病时长: 一周内
已就诊医院科室:北京市朝阳区和平街社区卫生服务中心 全科
过敏史:无
既往病史:无
希望获得的帮助:为什么白细胞和c反应蛋白同时高?只吃阿奇霉素可以么?具体怎么吃?
根据以上病例信息给出初步诊断和用药建议
# 传入prompt
prompt = '疾病描述:\n昨天下午放学回家后低烧,直至目前体温一直在37.4-38之间。今天下午去的社区医院,化验了血,做了胸片,显示白细胞高,c反应蛋白高,支原体感染弱阳性,目前在药店自己购买了希舒美阿奇霉素混悬剂,还没有吃\n身高体重:123cm,23kg \n疾病:支原体感染 \n患病时长: 一周内 \n已就诊医院科室:北京市朝阳区和平街社区卫生服务中心 全科 \n过敏史:无\n既往病史:无 \n希望获得的帮助:为什么白细胞和c反应蛋白同时高?只吃阿奇霉素可以么?具体怎么吃?\n根据以上病例信息给出初步诊断和用药建议'
response, history = model.chat(tokenizer, prompt, history=[])
print(response)
初步诊断:根据您的病史、体征和化验结果,可能存在一种细菌感染,如肺炎球菌或金黄色葡萄球菌,这些细菌可能会导致白细胞和C反应蛋白升高。此外,支原体感染也是可能的。需要进一步的检查来确定具体的病原体。
用药建议:阿奇霉素是一种常用的抗生素,对于支原体感染有较好的治疗效果。但是,您在使用阿奇霉素之前,需要咨询医生,因为对于某些人,如肝肾功能不全的患者,阿奇霉素可能会有不良反应。同时,您也应该按照医生的建议,完成整个疗程的治疗。
此外,您也可以通过一些非药物的方法来缓解症状,如保持充足的休息,多喝水,保持良好的空气流通等。
建议您尽快就医,以便进行更详细的检查和治疗。