参考:https://gitee.com/mindspore/mindformers/blob/dev/docs/model_cards/glm2.md#chatglm2-6b
1、安装环境:
昇腾NPU卡对应英伟达GPU卡,CANN对应CUDA底层; mindspore对应pytorch;mindformers对应transformers
本次环境:
CANN-6.3.RC2.b20231016
mindspore 2.0.0
mindformers (离线安装:https://gitee.com/mindspore/mindformers)
查看npu使用信息:
npu-smi info
2、ChatGLM2模型使用
参考:https://gitee.com/mindspore/mindformers/blob/dev/docs/model_cards/glm2.md
问题参考:
https://gitee.com/mindspore/mindformers/issues/I897LA#note_22105999
代码:
1)pipline方式运行:
import os
import mindspore as ms
os.environ['DEVICE_ID']='0'
ms.set_context(mode=ms.GRAPH_MODE, device_target="Ascend", device_id=0) ##需要使用才能npu加速
from mindformers import pipeline, TextGenerationPipeline
task_pipeline = pipeline(task='text_generation', model='glm2_6b', max_length=2048) ##模型自动会下载到checkpoint_download文件夹下
task_pipeline('你好') ## 第一次很慢,加载编译阶段
task_pipeline('写一首关于一带一路的诗') ##第二次开始速度才有提升
由于mindspore不支持一张卡上运行多个任务,所以启动任务都是直接默认申请31G显存占用的,挺耗资源
2)接口运行
import os
import mindspore as ms
os.environ['DEVICE_ID']='0'
ms.set_context(mode=ms.GRAPH_MODE, device_target="Ascend",device_id=0)
from mindformers import AutoConfig, AutoModel, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("glm2_6b")
config = AutoConfig.from_pretrained("glm2_6b")
config.use_past = True
model = AutoModel.from_config(config)
##第一轮问问题
inputs = tokenizer("你好")["input_ids"]
# print(inputs)
outputs = model.generate(inputs, max_new_tokens=20, do_sample=True, top_k=3)
response = tokenizer.decode(outputs)
print(response)
第一轮加载编译还是很慢,后续速度才提升
##第二轮问问题
inputs = tokenizer("写一首一带一路的诗")["input_ids"]
# print(inputs)
outputs = model.generate(inputs, max_new_tokens=500, do_sample=True, top_k=3)
response = tokenizer.decode(outputs)
print(response)