I卡上部署Text-Generation-WebUI(基于ipexllm,文末附整合包)
  这次又来水一篇文章。前段时间根据群友的启发,发现了intel-analytics仓库下的ipexllm,ipexllm简单来说是一个用于提升英特尔设备(cpu、独显核显都能用)大语言模型运行效率的库,并且在intel-analytics仓库下也发现了基于ipexllm的 Text-Generation-WebUI。就像stable-diffusion-webui易用于SD绘图,Text-Generation-WebUI也致力于大语言模型方面的易用性,这次就分享下如何部署基于ipexllm的Text-Generation-WebUI,并且通过修改模型参数来加载GPTQ量化模型。
  首先说一下为什么要用ipexllm,Text-Generation-WebUI直接用ipex也是可以部署使用,后端采用transformers可以直接加载大语言模型,但是大语言模型之所以是大语言模型,特点就是大,大多数模型加载后,即便是A770的16G显存也是吃不消,比如最常用的chatglm3-6b模型,总容量将近13G,加载后显存基本就满了。目前通用的解决方案是量化模型,降低精度以减少显存占用,但是目前来说transformers后端并不直接支持I卡进行模型量化,而ipexllm是支持量化的,通过量化后(int4)显存将减少将近60%,大多数6b训练集的模型显存占用可以来到6-7G,这样的话8G显卡应该是可以尝试。
  一、部署思路
  1、克隆intel-analytics仓库下的基于ipexllm分支的 Text-Generation-WebUI;
  2、ipex,ipexllm库;
  3、Text-Generation-WebUI启动运行所需依赖,根据仓库页面,就用根目录的requirements_cpu_only.txt
  4、设置参数启动。
  二、命令行安装
  安装命令就很常规了,安装之前需要电脑已经安装了Visual Studio 2022 、git和python或者conda,并已经添加了对应的环境变量。
  在需要安装Text-Generation-WebUI的文件夹资源管理器地址栏中输入CMD或者powershell打开对应的命令行工具,然后依次输入以下命令(我以conda创建虚拟环境演示,直接用python可以参照https://pd.qq.com/s/ai0syqcc7,括号内的不用复制):
  git clone https://github.com/intel-analytics/text-generation-webui.git  (克隆仓库代码)
 
  cd text-generation-webui  (进入text-generation-webui文件夹)
 
  conda create -p ./venv python=3.10 libuv  (创建虚拟环境)
 
  conda activate ./venv (激活虚拟环境)
 
  pip install dpcpp-cpp-rt==2024.0.2 mkl-dpcpp==2024.0.0 onednn==2024.0.0  (安装Intel oneAPI Base Toolkit 2024.0)
 
 
  pip install --pre --upgrade ipex-llm[xpu] --extra-index-url https://pytorch-extension.intel.com/release-whl/stable/xpu/cn/   (安装ipexllm)
 
  pip install -r requirements_cpu_only.txt (安装依赖)
 
  python server.py --load-in-low-bit sym_int4asym_int4sym_int8fp4fp8fp16mixed_fp4mixed_fp8 --auto-launch(配置启动参数)
  到这一步就算安装好了,自己准备一些大模型放在根目录的models文件夹下(可以从huggingface下载),如果以后想用命令行启动就创建如下bat脚本(python创建的参照上面帖子,区别在于激活虚拟环境的命令,powershelll的类似)
  @echo off
  call conda activate .\venv
  if %errorlevel% neq 0 exit /b %errorlevel%
  python server.py --load-in-low-bit sym_int4asym_int4sym_int8fp4fp8fp16mixed_fp4mixed_fp8 --auto-launch
  if %errorlevel% neq 0 exit /b %errorlevel%
  call conda deactivate
  @echo
  call pause
三、量化模型使用
  1、原生模型加载
  text-generation-webui启动完成后,点击model选项卡配置加载模型;
  
  
  默认使用ipexllm后端进行加载,选择一种模型,然后在load-in-low-bit下拉框选择一种模型精度加载模型,最后就可以点击模型右侧的load进行加载。load-in-low-bit有多种模式可以选择,大家可以自行测试,其中sym_int4就是默认的int4加载模式。
2、GPTQ模型加载
  我相信为了省显存,大多数人应该都会选择量化模式加载模型,既然这样为何不直接使用量化后的模型呢?量化后的模型容量也会减少60%左右,比如千问1.5 7b模型原版容量是14.3G,而GPTQ-Int4模型容量是5.46G,拯救硬盘容量危机!ipex-llm页面显示可以直接加载 GGUF、 AWQ 、 GPTQ 模型,但是如果按照上述方法部署其实是无法加载 GPTQ模型的,上面的依赖并没有安装AWQ 、 GPTQ后端,所以这里需要继续安装相关软件包。我查了一些资料后,找到了解决方法,以GPTQ为例子:
  官方页面显示,还需安装红框中的软件包。
  
  下面是在激活虚拟环境中安装的步骤:
  conda activate .\venv
 
  set BUILD_CUDA_EXT=0  (设置不安装cuda相关的软件,powershell应该可以直接复制上面的代码)
 
  pip install git+https://github.com/PanQiWei/AutoGPTQ.git@1de9ab6  (安装指定的AutoGPTQ)
 
  pip install optimum  (这步应该不用,前面的依赖会把这个安装上,并且没有0.14.0这个版本,不知道官方这个到底安的哪个)
 
  这时候就安装好缺的依赖,准备好GPTQ-Int4的模型,打开模型目录里面的config.json,把其中的"use_exllama": true改为"use_exllama": false,如果没有use_exllama这一项就手动添加"use_exllama": false到代码quantization_config选项里面,然后1、打开text-generation-webui;2、选择GPTQ-Int4模型;3、load-in-low-bit选择asym_int4;4、load加载。
  三、模型下载
  常规的没有魔法如何下载模型环节:
  1、现在大多数大语言模型都可以在huggingface下载到,https://hf-mirror.com很好的解决了下载访问的问题,text-generation-webui中内置了下载脚本,在红框位置输入"模型用户名/模型名称"(就是模型主页.com后面的内容)就可以下载,默认是用的huggingface,想用镜像站的话,可以把根目录下的download-model.py打开,将里面的huggingface.co替换成hf-mirror.com。不过这个脚本断点续传好像有问题,我下载了几个模型不能用。
  
  2、国内的魔搭社区(https://modelscope.cn/),上面有一些大语言模型可以下载,详细的看模型库。
  
  四、补充
  1、本文中关于量化模型的加载是我自己找的资料试出来的,没有官方答案,所以有大佬感兴趣可以自己试试,有可能有其他方法。
  2、我只试了GPTQ量化模型,像GGUF、 AWQ 等还没试,感兴趣的可以自己尝试。
3、附整合包下载:
阿里盘:https://www.alipan.com/s/eehuqfeMdtv 提取码: m8h2
用最新版7-zip解压,打开根目录下的“启动.bat”,内附一个0.5b的千问模型供测试,可自行更换其他模型。
 
 
 
 
 
 
 
 
 
2024-04-19
浏览1294
大语言模型
登录后评论
17
9