当前位置:   article > 正文

三步完成ChatGLM3-6B在英特尔CPU上的INT4量化和部署_chatglm3-6b-int4

chatglm3-6b-int4

作者: 英特尔边缘计算创新大使  刘力

1.1  ChatGLM3-6B简介

ChatGLM3 是智谱AI和清华大学 KEG 实验室联合发布的新一代对话预训练模型。ChatGLM3-6B 是 ChatGLM3 系列中的开源模型,在填写问卷进行登记后亦允许免费商业使用

引用自:https://github.com/THUDM/ChatGLM3

请使用命令,将ChatGLM3-6B模型下载到本地:

git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b.git

1.2  BigDL-LLM简介

BigDL-LLM是开源,遵循Apache 2.0许可证,专门用于在英特尔的硬件平台上加速大语言模型(Large Language Model, LLM)推理计算的软件工具包。它是在原有的BigDL框架基础上,为了应对大语言模型在推理过程中对性能和资源的高要求而设计的。BigDL-LLM旨在通过优化和硬件加速技术来提高大语言模型的运行效率,减少推理延迟,并降低资源消耗。

BigDL-LLM的主要特点包括:

1.低精度优化:通过支持INT4/INT5/INT8等低精度格式,减少模型的大小和推理时的计算量,同时保持较高的推理精度。

2.硬件加速:利用英特尔CPU集成的硬件加速技术,如AVX(Advanced Vector Extensions)、VNNI(Vector Neural Network Instructions)和AMX(Advanced Matrix Extensions)等,来加速模型的推理计算。

3.使用方便:对于基于Hugging Face Transformers API的模型,只需修改少量代码即可实现加速,使得开发者可以轻松地在其现有模型上应用BigDL-LLM。

4.性能提升:BigDL-LLM可以显著提高大语言模型在英特尔平台上的运行速度,减少推理时间,特别是在处理大规模模型和复杂任务时。

5.资源友好:通过优化模型运行时的资源使用,BigDL-LLM使得大语言模型可以在资源受限的环境中也能高效运行,如普通的笔记本电脑或服务器。

1.3  使用BigDL-LLM量化并部署ChatGLM3-6B

1.3.1 第一步,创建虚拟环境

请安装Anaconda,然后用下面的命令创建名为llm的虚拟环境

  1. conda create -n llm python=3.9
  2. conda activate llm

1.3.2  第二步,安装BigDL-LLM

执行命令:

  1. ​pip install --pre --upgrade bigdl-llm[all] -i Simple Index

1.3.3  第三步:运行范例程序

范例程序下载地址:https://gitee.com/Pauntech/chat-glm3/blob/master/chatglm3_infer.py

  1. import time
  2. from bigdl.llm.transformers import AutoModel
  3. from transformers import AutoTokenizer
  4. CHATGLM_V3_PROMPT_FORMAT = "<|user|>\n{prompt}\n<|assistant|>"
  5. # 请指定chatglm3-6b的本地路径
  6. model_path = "d:/chatglm3-6b"
  7. # 载入ChatGLM3-6B模型并实现INT4量化
  8. model = AutoModel.from_pretrained(model_path,
  9.                                   load_in_4bit=True,
  10.                                   trust_remote_code=True)
  11. # 载入tokenizer
  12. tokenizer = AutoTokenizer.from_pretrained(model_path,
  13.                                           trust_remote_code=True)
  14. # 制作ChatGLM3格式提示词    
  15. prompt = CHATGLM_V3_PROMPT_FORMAT.format(prompt="What is Intel?")
  16. # 对提示词编码
  17. input_ids = tokenizer.encode(prompt, return_tensors="pt")
  18. st = time.time()
  19. # 执行推理计算,生成Tokens
  20. output = model.generate(input_ids,max_new_tokens=32)
  21. end = time.time()
  22. # 对生成Tokens解码并显示
  23. output_str = tokenizer.decode(output[0], skip_special_tokens=True)
  24. print(f'Inference time: {end-st} s')
  25. print('-'*20, 'Prompt', '-'*20)
  26. print(prompt)
  27. print('-'*20, 'Output', '-'*20)
  28. print(output_str)

运行结果,如下所示:

1.3.4  ChatGLM3-6B WebUI demo

请先安装依赖软件包:

  1. ​pip install gradio mdtex2html streamlit -i https://mirrors.aliyun.com/pypi/simple/

下载范例程序:https://gitee.com/Pauntech/chat-glm3/blob/master/chatglm3_web_demo.py

然后运行:

streamlit run chatglm3_web_demo.py

运行结果如下:

三步完成ChatGLM3-6B在CPU上的INT4量化和部署视频

1.4  总结

BigDL-LLM工具包简单易用,仅需三步即可完成虚拟环境创建、BigDLL-LLM安装以及ChatGLM3-6B模型的INT4量化以及在英特尔CPU上的部署。

作者简介:

刘力,深圳市铂盛科技有限公司的创始人,英特尔边缘计算创新大使。带领团队成功设计了多种计算机系统,并申请了多项专利和软件著作,铂盛科技为国家高新技术企业,深圳市专精特新企业。铂盛通过整合算力和算法,打造软硬件一体化的AIPC解决方案,目前产品已在工业控制、智能机器人、教育、医疗、金融等多个边缘计算领域得到广泛应用。

联系方式

电话:13537819699

Email:leo.liu@pasuntech.com

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/137285
推荐阅读
相关标签
  

闽ICP备14008679号