当前位置:   article > 正文

三步完成在英特尔独立显卡上量化和部署ChatGLM3-6B模型_intel(r) lris(r) xe graphics 支持chatglm吗/

intel(r) lris(r) xe graphics 支持chatglm吗/

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

1.1  ChatGLM3-6B简介

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

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

请使用命令,将ChatGLM3-6B模型下载到本地(例如,保存到D盘):

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旨在通过优化和硬件加速技术来提高大语言模型的运行效率,减少推理延迟,并降低资源消耗。

GitHub:GitHub - intel-analytics/BigDL: Accelerate LLM with low-bit (FP4 / INT4 / FP8 / INT8) optimizations using bigdl-llm

本文将详细介绍基于BigDL-LLM在英特尔独立显卡上量化和部署ChatGLM3-6B模型。

1.3  部署平台简介:

算力魔方是一款可以DIY的迷你主机,采用了抽屉式设计,后续组装、升级、维护只需要拔插模块。

通过选择计算模块的版本,再搭配不同额 IO 模块可以组成丰富的配置,适应不同场景。性能不够时,可以升级计算模块提升算力, IO 接口不匹配时,可以更换 IO 模块调整功能,而无需重构整个系统。本文在带有A380独立显卡的算力魔方上完成验证。

1.4  在英特尔独立显卡上部署ChatGLM3-6B

1.4.1 搭建开发环境

第一步:请下载并安装Visual Studio 2022 Community Edition。安装时务必选择“使用C++的桌面开发”。注意:不要修改默认安装路径!

下载链接:https://visualstudio.microsoft.com/zh-hans/downloads/

第二步:请下载并安装英特尔独立显卡驱动程序。下载链接:https://www.intel.cn/content/www/cn/zh/download/785597/intel-arc-iris-xe-graphics-windows.html。

第三步:请下载并安装Intel® oneAPI Base Toolkit。下载链接:https://www.intel.com/content/www/us/en/developer/tools/oneapi/base-toolkit-download.html。

第四步:请下载并安装Anaconda,然后用下面的命令创建名为“bigdl”的虚拟环境。

  1. conda create -n bigdl python=3.9 libuv
  2. conda activate bigdl

1.4.2  第二步,安装BigDL-LLM[xpu]

第一步:用下载器(例如:迅雷)下载*.whl安装包到本地。下载链接:

  1. https://intel-extension-for-pytorch.s3.amazonaws.com/ipex_stable/xpu/torch-2.1.0a0%2Bcxx11.abi-cp39-cp39-win_amd64.whl
  2. https://intel-extension-for-pytorch.s3.amazonaws.com/ipex_stable/xpu/torchvision-0.16.0a0%2Bcxx11.abi-cp39-cp39-win_amd64.whl
  3. https://intel-extension-for-pytorch.s3.amazonaws.com/ipex_stable/xpu/intel_extension_for_pytorch-2.1.10%2Bxpu-cp39-cp39-win_amd64.whl

第二步:执行命令:

  1. # 从本地安装已下载的.whl安装包
  2. pip install torch-2.1.0a0+cxx11.abi-cp39-cp39-win_amd64.whl
  3. pip install torchvision-0.16.0a0+cxx11.abi-cp39-cp39-win_amd64.whl
  4. pip install intel_extension_for_pytorch-2.1.10+xpu-cp39-cp39-win_amd64.whl
  5. # 安装支持英特尔显卡的bigdl-llm
  6. pip install --pre --upgrade bigdl-llm[xpu] -i Simple Index

详情参考:https://bigdl.readthedocs.io/en/latest/doc/LLM/Overview/install_gpu.html

1.4.3  第三步:运行范例程序

首先:执行命令,配置环境变量:

  1. conda activate bigdl
  2. call "C:\Program Files (x86)\Intel\oneAPI\setvars.bat"
  3. set SYCL_CACHE_PERSISTENT=1
  4. set BIGDL_LLM_XMX_DISABLED=1

若系统中有集成显卡,请执行下面的命令,保证英特尔独立显卡是“xpu”指代的计算设备,详情参考:https://github.com/intel-analytics/BigDL/issues/9768

set ONEAPI_DEVICE_SELECTOR=level_zero:1

然后,请下载范例程序并运行:https://gitee.com/Pauntech/chat-glm3/blob/master/chatglm3_infer_gpu.py

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

运行结果,如下所示:

1.4.4  运行ChatGLM3-6B WebUI demo

首先,请先安装依赖软件包:

  1. ​pip install gradio mdtex2html streamlit -i Simple Index

然后,运行命令,配置环境变量:

  1. conda activate bigdl
  2. call "C:\Program Files (x86)\Intel\oneAPI\setvars.bat"
  3. set SYCL_CACHE_PERSISTENT=1
  4. set BIGDL_LLM_XMX_DISABLED=1

若系统中有集成显卡,请执行下面的命令,保证英特尔独立显卡是“xpu”指代的计算设备,详情参考:https://github.com/intel-analytics/BigDL/issues/9768

set ONEAPI_DEVICE_SELECTOR=level_zero:1

最后,请下载范例程序:https://gitee.com/Pauntech/chat-glm3/blob/master/chatglm3_web_demo_gpu.py

并运行:

streamlit run chatglm3_web_demo_gpu.py

运行结果如下:

观看视频

1.5  总结

BigDL-LLM工具包简单易用,仅需三步即可完成开发环境搭建、bigdl-llm[xpu]安装以及ChatGLM3-6B模型的INT4量化以及在英特尔独立显卡上的部署。

作者介绍:

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

联系方式

电话:13537819699

Email:leo.liu@pasuntech.com

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

闽ICP备14008679号