首先说一下为什么要用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;
安装命令就很常规了,安装之前需要电脑已经安装了Visual Studio 2022 、git和python或者conda,并已经添加了对应的环境变量。
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)
到这一步就算安装好了,自己准备一些大模型放在根目录的models文件夹下(可以从huggingface下载),如果以后想用命令行启动就创建如下bat脚本(python创建的参照上面帖子,区别在于激活虚拟环境的命令,powershelll的类似)
call conda activate .\venv
if %errorlevel% neq 0 exit /b %errorlevel%
if %errorlevel% neq 0 exit /b %errorlevel%
text-generation-webui启动完成后,点击model选项卡配置加载模型;
默认使用ipexllm后端进行加载,选择一种模型,然后在load-in-low-bit下拉框选择一种模型精度加载模型,最后就可以点击模型右侧的load进行加载。load-in-low-bit有多种模式可以选择,大家可以自行测试,其中sym_int4就是默认的int4加载模式。
我相信为了省显存,大多数人应该都会选择量化模式加载模型,既然这样为何不直接使用量化后的模型呢?量化后的模型容量也会减少60%左右,比如千问1.5 7b模型原版容量是14.3G,而GPTQ-Int4模型容量是5.46G,拯救硬盘容量危机!ipex-llm页面显示可以直接加载 GGUF、 AWQ 、 GPTQ 模型,但是如果按照上述方法部署其实是无法加载 GPTQ模型的,上面的依赖并没有安装AWQ 、 GPTQ后端,所以这里需要继续安装相关软件包。我查了一些资料后,找到了解决方法,以GPTQ为例子:
set BUILD_CUDA_EXT=0 (设置不安装cuda相关的软件,powershell应该可以直接复制上面的代码)
pip install optimum (这步应该不用,前面的依赖会把这个安装上,并且没有0.14.0这个版本,不知道官方这个到底安的哪个)
1、本文中关于量化模型的加载是我自己找的资料试出来的,没有官方答案,所以有大佬感兴趣可以自己试试,有可能有其他方法。
2、我只试了GPTQ量化模型,像GGUF、 AWQ 等还没试,感兴趣的可以自己尝试。
用最新版7-zip解压,打开根目录下的“启动.bat”,内附一个0.5b的千问模型供测试,可自行更换其他模型。