这是一一个使用“通义千问-7b-chat“模型的案例,模型文件我已经上传了,现在我们使用 mdelscope 库来进行演示。
环境要求:
1.V100 Tensor Core GPU 选择这个 GPU 镜像,镜像内存 40G,32G显存,一个 GPU,才跑得起来,我在自己电脑一个 GPU 2G 显存,直接跑不起来。
2.需要安装 modelscope 库
3.transformers>=4.32.0
如果选择了最小的 GPU 镜像也可以跑起来,可能需要再加载模型使用以下代码:
from modelscope import AutoModelForCausalLM, AutoTokenizer
from modelscope import GenerationConfig
# 加载词表模型词表
tokenizer = AutoTokenizer.from_pretrained("/home/mw/input/qwen7bchat7438", trust_remote_code=True)
# 加载模型
model = AutoModelForCausalLM.from_pretrained("/home/mw/input/qwen7bchat7438", device_map="auto", trust_remote_code=True, fp16=True).eval()
# 第一轮对话
response, history = model.chat(tokenizer, "你好,你可以介绍一下自己吗?", history=None)
print(response)
# 第二轮对话
response, history = model.chat(tokenizer, "通义千问事你的兄弟吗?", history=history)
print(response)
# 第三轮对话
response, history = model.chat(tokenizer, "你那些兄弟跟你区别?", history=history)
print(response)
多轮对话封装
也就是封装成函数,用起来类似网页版那种,可以手动输入
from modelscope import AutoModelForCausalLM, AutoTokenizer
# 加载词表模型词表
tokenizer = AutoTokenizer.from_pretrained("/home/mw/input/qwen7bchat7438", trust_remote_code=True)
# 加载模型
model = AutoModelForCausalLM.from_pretrained("/home/mw/input/qwen7bchat7438", device_map="auto", trust_remote_code=True, fp16=True).eval()
def chat(text, history):
response, history = model.chat(tokenizer, text, history=history)
return response, history
while True:
text = input("请输入 prompt:")
response, history = chat(text, history=None)
print(response + '\n')