在git上下载ChatGLM-6B的大模型之后,运行时报错KeyError: KeyError(‘chatglm6b is already registered in models[chat]‘),然后将代码做出修改之后,又提示AttributeError: type object 'Model' has no attribute 'is_registered',应该如何解决?
from modelscope.utils.constant import Tasks
from modelscope.pipelines import pipeline
from modelscope.models import Model
import time
import json
import os
# 指定本地模型文件路径,替换成你自己的
# 只能是这个不然没有某个json文件
# 但是出现了模型已经注册古过的问题
local_model_path = 'C:\\Users\\11925\\ChatGLM-6B-Int4'
# C:\Users\11925\ChatGLM-6B-Int4
# local_model_path = 'C:\\Users\\11925\\.cache\\modelscope\\modelscope_modules'
if Model.is_registered('chatglm6b'):
model = Model.get_model('chatglm6b')
else:
# 从本地路径下载模型
model = Model.from_pretrained(local_model_path)
# # 加载本地模型
# model = Model.from_pretrained(local_model_path)
# model = Model.from_pretrained(local_model_path, model_name='my_custom_chatglm6b')
pipe = pipeline(task=Tasks.chat, model=model)
# 定义一个函数来处理用户输入和模型回复,并计时
def chat_with_model():
while True:
# 获取用户输入
query = input("\n用户:")
if query.strip() == "退出":
break
# 开始计时
start_time = time.time()
# 发送输入到模型
inputs = {'text': query, 'history': []}
result = pipe(inputs)
# 停止计时
end_time = time.time()
# 计算用时
elapsed_time = end_time - start_time
# 打印用时
print(f"\n用时:{elapsed_time:.2f}秒")
# 逐字打印模型回复内容
if 'response' in result and result['response']:
for char in result['response']:
print(char, end='', flush=True)
print() # 打印换行符,以便于下一次输入
else:
print("\nChatGLM:这道题我不会,请尝试其他问题。")
# 启动聊天
chat_with_model()