利用text-generation-webui快速搭建chatGLM2/LLAMA2大模型运行环境
text-generation-webui 是一个基于Gradio的LLM Web UI开源项目,可以利用其快速搭建各种文本生成的大模型环境。
一、安装
text-generation-webui的readme其实已写得相当详细了,这里就不再重复,只说1个可能存在的坑:
安装 peft 安装卡住
requirements.txt 中有一些依赖项,需要访问github网站,国内经常会打不开,看看这个文件的内容:
aiofiles==23.1.0
fastapi==0.95.2
gradio_client==0.2.5
gradio==3.33.1 accelerate==0.21.0
colorama
datasets
einops
markdown
numpy
pandas
Pillow>=9.5.0
pyyaml
requests
safetensors==0.3.1
scipy
sentencepiece
tensorboard
tqdm
wandb git+https://github.com/huggingface/peft@4b371b489b9850fd583f204cdf8b5471e098d4e4
git+https://github.com/huggingface/transformers@baf1daa58eb2960248fd9f7c3af0ed245b8ce4af bitsandbytes==0.41.1; platform_system != "Windows"
https://github.com/jllllll/bitsandbytes-windows-webui/releases/download/wheels/bitsandbytes-0.41.1-py3-none-win_amd64.whl; platform_system == "Windows"
https://github.com/PanQiWei/AutoGPTQ/releases/download/v0.4.1/auto_gptq-0.4.1+cu117-cp310-cp310-win_amd64.whl; platform_system == "Windows"
https://github.com/PanQiWei/AutoGPTQ/releases/download/v0.4.1/auto_gptq-0.4.1+cu117-cp310-cp310-linux_x86_64.whl; platform_system == "Linux" and platform_machine == "x86_64"
https://github.com/jllllll/exllama/releases/download/0.0.10/exllama-0.0.10+cu117-cp310-cp310-win_amd64.whl; platform_system == "Windows"
https://github.com/jllllll/exllama/releases/download/0.0.10/exllama-0.0.10+cu117-cp310-cp310-linux_x86_64.whl; platform_system == "Linux" and platform_machine == "x86_64" # llama-cpp-python without GPU support
llama-cpp-python==0.1.78; platform_system != "Windows"
https://github.com/abetlen/llama-cpp-python/releases/download/v0.1.78/llama_cpp_python-0.1.78-cp310-cp310-win_amd64.whl; platform_system == "Windows"
# llama-cpp-python with CUDA support
https://github.com/jllllll/llama-cpp-python-cuBLAS-wheels/releases/download/textgen-webui/llama_cpp_python_cuda-0.1.78+cu117-cp310-cp310-win_amd64.whl; platform_system == "Windows"
https://github.com/jllllll/llama-cpp-python-cuBLAS-wheels/releases/download/textgen-webui/llama_cpp_python_cuda-0.1.78+cu117-cp310-cp310-linux_x86_64.whl; platform_system == "Linux" and platform_machine == "x86_64" # GPTQ-for-LLaMa
https://github.com/jllllll/GPTQ-for-LLaMa-CUDA/releases/download/0.1.0/gptq_for_llama-0.1.0+cu117-cp310-cp310-win_amd64.whl; platform_system == "Windows"
https://github.com/jllllll/GPTQ-for-LLaMa-CUDA/releases/download/0.1.0/gptq_for_llama-0.1.0+cu117-cp310-cp310-linux_x86_64.whl; platform_system == "Linux" and platform_machine == "x86_64" # ctransformers
https://github.com/jllllll/ctransformers-cuBLAS-wheels/releases/download/AVX2/ctransformers-0.2.22+cu117-py3-none-any.whl
如果安装peft时,项目无法下载,可以把 这行注释掉。然后再开1个终端,直接用
pip install peft -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install transformers -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install accelerate -i https://pypi.tuna.tsinghua.edu.cn/simple
走国内镜像安装,然后再回到原来的终端 pip install -r requirements.txt, 其它依赖项,也是这个思路。
二、启动及model下载
python server.py 即可启动,刚启动时没有任何模型,需要手动下载。

huggingface.co的模型,只要允许下载的,text-generation-webui都能下载, 不过这个速度比较慢,而且容易中断,我个人更建议手动下载(比如 git LFS工具,或者国内有一些镜像或网盘上,有热心网友上传了副本),如果是手动下载,只要把模型放到 text-generation-webui/models 目录下即可。
三、加载模型
3.1 Llam2 模型加载
这里选择 TheBloke/Llama-2-7B-Chat-GGML · Hugging Face 这个Llama2模型测试,选择后发现自动默认用了llama.cpp 这个c++版本的loader(注:c++版本的推理速度更快)

然后就可以 体验了,建议先设置成chat模式:

测试一下:

可以发现,Llama2对中文支持一般般,默认情况下,用中文提问,回答却是英文。除非手动加上指令"[用中文回答]",而且不会作诗(这一点比不上国产的chatGLM)
3.2 ChatGLM2-6B
text-generate-webui 对chatGLM的支持还不太完善,虽然能跑,但有些坑:
坑1:bitsandbytes 这个库在我机器上(windows 10 + WSL2 + ubuntu,LLM模型跑在WSL2上),必须把它给卸载(pip uninstall bitsandbytes) ,否则模型加载会失败
坑2:不能选量化(不管是4还是8均报错),还必须勾上trust-remote-code

另外:WSL2的内存设置,建议至少24G,不然加载模型时,可以因为内存不足会自动Killed(加载完成后过一会儿,内存好象又会略降一些),下图是我机器的实际内存占用

bitsandbytes与WSL2中的cuda不能很好兼容,就算跑在GPU上,感觉也有点卡,不如chatGLM.cpp顺畅 ,但不太影响小白学习

另外,如果有网友遇到model加载成功,但是测试过程中,AI总是不回答,可以尝试下,修改chatGLM2-6B目录中tokenization_chatglm.py,78行后,加一行代码:
self._eos_token='<eos>'

四、API模式
启用时,还可以增加参数--api,以同时启动api

api-examples目录下,有相应的api调用示例: (仍然以模型Llama-2-7B-Chat-GGML 为例)

api方式,似乎不识别[用中文回答]这类指令

这点跟web-UI上的差别有些大:

参考文章:
chatglm2 support · Issue #2906 · oobabooga/text-generation-webui (github.com)
利用text-generation-webui快速搭建chatGLM2/LLAMA2大模型运行环境的更多相关文章
- 利用 TFLearn 快速搭建经典深度学习模型
利用 TFLearn 快速搭建经典深度学习模型 使用 TensorFlow 一个最大的好处是可以用各种运算符(Ops)灵活构建计算图,同时可以支持自定义运算符(见本公众号早期文章<Tenso ...
- 利用CodeBlocks结合freeglut快速搭建OpenGL开发环境
利用CodeBlocks结合freeglut快速搭建OpenGL开发环境 2018-12-19 10:15:48 再次超越梦想 阅读数 180更多 分类专栏: 我的开发日记 版权声明:本文为博主原 ...
- Docker Data Center系列(一)- 快速搭建云原生架构的实践环境
本系列文章演示如何快速搭建一个简单的云原生架构的实践环境. 基于这个基础架构,可以持续部署微服务架构的应用栈,演练敏捷开发过程,提升DevOps实践能力. 1 整体规划 1.1 拓扑架构 1.2 基础 ...
- 模拟搭建Web项目的真实运行环境(一)
序言 最近尝试完整搭建一个Web项目的运行环境,总结一下这几个月学到的知识点. 后面的文章主要包括一下几个内容: A. 搭建一个Linux服务器,用来部署Redis.Mongo等数据存储环境: B. ...
- 如何快速正确的安装 Ruby, Rails 运行环境
如何快速正确的安装 Ruby, Rails 运行环境 https://ruby-china.org/wiki/install_ruby_guide 对于新入门的开发者,如何安装 Ruby, Ruby ...
- 利用GitHub Pages + jekyll快速搭建个人博客
前言 想搭建自己博客很久了(虽然搭了也不见得能产出多频繁). 最初萌生想写自己博客的想法,想象中,是自己一行一行码出来的成品,对众多快速构建+模板式搭建不屑一顾,也是那段时间给闲的,从前后端选型.数据 ...
- 如何快速搭建基于python+appium的自动化测试环境
首先申明本文是基本于Python与Android来快速搭建Appium自动化测试环境: 主要分为以下几个步骤: 前提条件: 1)安装与配置python环境,打开 Python官网,找到“Downloa ...
- 快速搭建一套k8s集群环境
参考官网 kubeadm是官方提供的快速搭建k8s集群的开源工具,对于非运维人员学习k8s,kubeadm方式安装相对更简单. kubeadm创建一个集群:https://kubernetes.io/ ...
- 如何快速正确的安装 Ruby, Rails 运行环境-b
对于新入门的开发者,如何安装 Ruby, Ruby Gems 和 Rails 的运行环境可能会是个问题,本页主要介绍如何用一条靠谱的路子快速安装 Ruby 开发环境.次安装方法同样适用于产品环境! 系 ...
- 通过Jetty搭建一个简单的Servlet运行环境
最近在做一些简单的Servlet开发的时候,感觉每次调试的时候都要发布到tomcat上很麻烦,把程序共享给同事也很麻烦,需要帮他设置本地的tomcat环境. 在网上找了找其他的Servlet运行环境, ...
随机推荐
- Spring连接线程的事务控制
Spring连接线程的事务控制 通过把线程ThreadLocal绑定数据库来连接Connection来控制事务 源码 实现的方式不够优雅 代码实现 pom.xml <?xml version=& ...
- IDEA问题之“调整IDEA字体大小”
调整IDEA字体大小 1.正常版 2. 远程版
- Java实现minio上传文件加解密操作
一.背景与需求 在云存储场景中,数据安全是核心需求之一.MinIO作为高性能对象存储服务,支持通过客户端加密(CSE)在数据上传前完成加密,确保即使存储服务器被攻破,攻击者也无法获取明文数据.本文将详 ...
- 智表ZCELL专业版授权说明
专业版: 1.智表专业版按照部署地址授权,价格1680元.(IP或域名均可,授权时localhost会同步授权) 2.授权版本为智表专业版最新版本,不提供历史版本授权.授权为插件使用权,不提供源码. ...
- arcgis创建sqlserver企业级空间数据库过程中出现的问题及解决方案
在arcgis中创建sqlserver版本的企业空间数据库过程中,出现了多种问题,现把问题的现象.原因和解决方案记录下来,以防遗忘(年纪大了). 1 用sa账号创建空间数据库提示创建失败15456 安 ...
- codeup之日期类
Description 编写一个日期类,要求按xxxx-xx-xx 的格式输出日期,实现加一天的操作. Input 输入第一行表示测试用例的个数m,接下来m行每行有3个用空格隔开的整数,分别表示年月日 ...
- SpringSecurity配置 1
spring security整合步骤 过滤器链 SpringSecurity的本质就是一个过滤器链,内部包含了提供各种功能的过滤器,基本案例中的过滤器链如下图所示: UsernamePassword ...
- 面试题:Spring BeanFactory和FactoryBean的区别
BeanFactory:以Factory结尾,表明它是一个工厂类(接口),它是Spring IOC容器的核心接口,负责实例化和管理bean的一个工厂,为具体的IoC容器的实现提供规范.BeanFa ...
- 图扑软件 | 带你体验 Low Poly 卡通三维世界
在三维场景搭建中,图扑软件提供了多样化的设计风格,以满足不同项目的视觉需求.无论是写实风格的细腻渲染.科幻未来的赛博质感,还是简约现代的几何美学,都能通过灵活的工具体系实现.而今天,我们将重点介绍一种 ...
- python的 range() 函数
python range() 函数可创建一个整数列表,一般用在 for 循环中. range(start, stop[step]) range(10) # 从 0 开始到 10 [0, 1, 2, 3 ...