当前位置:首页|资讯|GitHub|Stable Diffusion WebUI|Stable Diffusion|大语言模型

I卡上Text-Generation-WebUI部署方法(基于ipexllm)

作者:Joerden发布时间:2024-04-19

  这次又来水一篇文章。前段时间根据群友的启发,发现了intel-analytics(https://github.com/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、设置参数启动。

二、命令行安装

  安装命令就很常规了,安装之前需要电脑已经安装了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 https://github.com/Nuullll/intel-extension-for-pytorch/releases/download/v2.1.10%2Bxpu/intel_extension_for_pytorch-2.1.10+xpu-cp310-cp310-win_amd64.whl https://github.com/Nuullll/intel-extension-for-pytorch/releases/download/v2.1.10%2Bxpu/torch-2.1.0a0+cxx11.abi-cp310-cp310-win_amd64.whl https://github.com/Nuullll/intel-extension-for-pytorch/releases/download/v2.1.10%2Bxpu/torchaudio-2.1.0a0+cxx11.abi-cp310-cp310-win_amd64.whl https://github.com/Nuullll/intel-extension-for-pytorch/releases/download/v2.1.10%2Bxpu/torchvision-0.16.0a0+cxx11.abi-cp310-cp310-win_amd64.whl  (安装ipex)

 

  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 等还没试,感兴趣的可以自己尝试。

  

参考:

       1、https://github.com/Nuullll/intel-extension-for-pytorch/

  2、https://github.com/intel-analytics/ipex-llm/tree/main/python/llm/example/GPU/HF-Transformers-AutoModels/Advanced-Quantizations/GPTQ

  3、https://github.com/QwenLM/Qwen/issues/385



Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1