摘要
本文主要是关于如何本地部署该项目的。接下来我会指出该项目在部署中遇到的主要问题。 项目地址:binary-husky/gpt_academic: 为GPT/GLM等LLM大语言模型提供实用化交互接口,特别优化论文阅读/润色/写作体验,模块化设计,支持自定义快捷按钮&函数插件,支持Python和C++等项目剖析&自译解功能,PDF/LaTex论文翻译&总结功能,支持并行问询多种LLM模型,支持chatglm3等本地模型。接入通义千问, deepseekcoder, 讯飞星火, 文心一言, llama2, rwkv, claude2, moss等。 (github.com)
引言
GPT_Academic为GPT/GLM等LLM大语言模型提供实用化交互接口,特别优化论文阅读/润色/写作体验,模块化设计,支持自定义快捷按钮&函数插件,支持Python和C++等项目剖析&自译解功能,PDF/LaTex论文翻译&总结功能,支持并行问询多种LLM模型,支持chatglm3等本地模型。接入通义千问, deepseekcoder, 讯飞星火, 文心一言, llama2, rwkv, claude2, moss等。
这个部署包相较于Ollama和LM Studio的主要优点就是能自动的、正确的渲染数学公式,因为它调用了Latex软件TeXLive: TeX Live - TeX Users Group (tug.org)
关于如何部署,请参阅下文
安装
==千万别用docker安装!==如果你不知道自己每一步到底在干什么,不要用docker!我有血泪的教训,装了WSL2,去Ubuntu里搞了一通,发现python环境的兼容性问题比我想象的更复杂,最后只能逐个卸载环境,老老实实用pip安装。这就是开源社区不好的、甚至是黑暗的一面了。
同时,也==不建议使用一键安装脚本==,因为它会跳过本地LLM的部署环节。除非你很有钱,或者完全不在乎数据安全,那就当我没说咯~
作者给出的正常安装方法原文如下:
安装方法I:直接运行 (Windows, Linux or MacOS)
下载项目
shellgit clone --depth=1 https://github.com/binary-husky/gpt_academic.git cd gpt_academic配置API_KEY等变量
在
config.py中,配置API KEY等变量。特殊网络环境设置方法、Wiki-项目配置说明。「 程序会优先检查是否存在名为
config_private.py的私密配置文件,并用其中的配置覆盖config.py的同名配置。如您能理解以上读取逻辑,我们强烈建议您在config.py同路径下创建一个名为config_private.py的新配置文件,并使用config_private.py配置项目,从而确保自动更新时不会丢失配置 」。「 支持通过
环境变量配置项目,环境变量的书写格式参考docker-compose.yml文件或者我们的Wiki页面。配置读取优先级:环境变量>config_private.py>config.py」。安装依赖
shell# (选择I: 如熟悉python, python推荐版本 3.9 ~ 3.11)备注:使用官方pip源或者阿里pip源, 临时换源方法:python -m pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ python -m pip install -r requirements.txt # (选择II: 使用Anaconda)步骤也是类似的 (https://www.bilibili.com/video/BV1rc411W7Dr): conda create -n gptac_venv python=3.11 # 创建anaconda环境 conda activate gptac_venv # 激活anaconda环境 python -m pip install -r requirements.txt # 这个步骤和pip安装一样的步骤
- 如果需要支持清华ChatGLM2/复旦MOSS/RWKV作为后端,请点击展开此处 【可选步骤】如果需要支持清华ChatGLM3/复旦MOSS作为后端,需要额外安装更多依赖(前提条件:熟悉Python + 用过Pytorch + 电脑配置够强):
# 【可选步骤I】支持清华ChatGLM3。清华ChatGLM备注:如果遇到"Call ChatGLM fail 不能正常加载ChatGLM的参数" 错误,参考如下: 1:以上默认安装的为torch+cpu版,使用cuda需要卸载torch重新安装torch+cuda; 2:如因本机配置不够无法加载模型,可以修改request_llm/bridge_chatglm.py中的模型精度, 将 AutoTokenizer.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True) 都修改为 AutoTokenizer.from_pretrained("THUDM/chatglm-6b-int4", trust_remote_code=True)
python -m pip install -r request_llms/requirements_chatglm.txt
# 【可选步骤II】支持复旦MOSS
python -m pip install -r request_llms/requirements_moss.txt
git clone --depth=1 https://github.com/OpenLMLab/MOSS.git request_llms/moss # 注意执行此行代码时,必须处于项目根路径
# 【可选步骤III】支持RWKV Runner
参考wiki:https://github.com/binary-husky/gpt_academic/wiki/%E9%80%82%E9%85%8DRWKV-Runner
# 【可选步骤IV】确保config.py配置文件的AVAIL_LLM_MODELS包含了期望的模型,目前支持的全部模型如下(jittorllms系列目前仅支持docker方案):
AVAIL_LLM_MODELS = ["gpt-3.5-turbo", "api2d-gpt-3.5-turbo", "gpt-4", "api2d-gpt-4", "chatglm", "moss"] # + ["jittorllms_rwkv", "jittorllms_pangualpha", "jittorllms_llama"]
# 【可选步骤V】支持本地模型INT8,INT4量化(这里所指的模型本身不是量化版本,目前deepseek-coder支持,后面测试后会加入更多模型量化选择)
pip install bitsandbyte
# windows用户安装bitsandbytes需要使用下面bitsandbytes-windows-webui
python -m pip install bitsandbytes --prefer-binary --extra-index-url=https://jllllll.github.io/bitsandbytes-windows-webui
pip install -U git+https://github.com/huggingface/transformers.git
pip install -U git+https://github.com/huggingface/accelerate.git
pip install peft运行
shellpython main.py
纠错目录
请密切注意如下信息的时效性:2024年3月3日23:31:22
安装
下载项目 没有问题。记得先安装git哦: Git - Downloads (git-scm.com)
配置API_KEY等变量 三令五申,不要尝试用docker安装,它会从
docker-compose.yml覆写config_private.py中的所有配置文件。而官方给出的docker-compose.yml环境变量又有bug,几乎一步一个坑。认真读
config.py中的所有注释,它们是完全正确的且利于理解的中文。如果你是个老外无法理解中文,我相信你也不会读到这里。什么?你说什么是注释?……安装依赖 建议用python安装,因为Anaconda是个虚拟环境,除非你整个包都从Anaconda部署。 这里安装完一定会报错,因为作者调用的库永远是最新版本,存在严重兼容性问题。请在这一步忽略。
清华ChatGLM3等本地ChatGPT支持:我只安装了ChatGLM3,其他高校的产品没试。存在一个严重问题:原文的注释是错的!!!
2:如因本机配置不够无法加载模型,可以修改request_llm/bridge_chatglm.py中的模型精度, 将 AutoTokenizer.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True) 都修改为 AutoTokenizer.from_pretrained("THUDM/chatglm-6b-int4", trust_remote_code=True)原因是,==清华的同学们并没有单独放出INT4, INT8量化版本的模型==,而是通过神经网络框架的量化加载来完成的(具体是啥框架忘了)正确做法是,在config_private.py中仍然选择FP16加载模式,去".\gpt_academic\request_llms\bridge_chatglm3.py"中找到with ProxyNetworkActivate('Download_LLM'):函数,更改else语句末尾处为如下内容:python
else: chatglm_model = AutoModel.from_pretrained(model_name, trust_remote_code=True).quantize(4).cuda() ``` 代码出处:https://github.com/THUDM/ChatGLM3#模型量化
运行 这个也没什么问题。在文件夹空白处右键 - 在终端中打开,复制粘贴运行一气呵成。但我的建议是,写一个脚本存在这里,发送它的快捷方式到桌面,以后可以直接()(),启动!这样看起来像个正经的Windows程序。
怎么做?新建一个txt文本文档,输入
python main.py,保存关闭。将该文本文档重命名为gpt_academic.ps1,==注意,要改后缀名哦。== Windows会告诉你,更改文件扩展名可能会让该文件变得不可用,默念一遍:So, fuck you Microsoft。 爷的系统爷主宰,点击确认。右键 - 更多选项 - 发送到 - 桌面快捷方式。以后每次启动就在桌面上的快捷方式上右键 - 使用PowerShell运行就好了。别傻了,只有扩展名为
exe的程序包才能双击左键运行。封装很麻烦,我不会~环境修复 非常好标题,使我的环保少女旋转,爱来自美国。
说正事,运行之后一定会报错的。会提示哪些库的版本不兼容。我记得是:xformers, transformers, pytorch, numpy。你可以从Shell中运行
pip list来列举系统中所有已经安装的库和它们的版本。缺哪个,或者版本不兼容时,系统一定会给出提示。以transformers举例,你可以:shellpip uninstall transformers然后根据系统提示,安装兼容的版本。以我==目前的时间==线举例:
Shellpip install transformers==4.38.2
其中最麻烦的是pytorch,你要卸载三个东西:torch, torchvision, torchaudio。然后运行:
```Shell
# CUDA 12.1
conda install pytorch==2.2.0 torchvision==0.17.0 torchaudio==2.2.0 pytorch-cuda=12.1 -c pytorch -c nvidia啊?啥是CUDA?[CUDA Toolkit Archive | NVIDIA Developer](https://developer.nvidia.com/cuda-toolkit-archive)装了Nvidia显卡驱动的不一定有,自己先装好。好像这些库无所谓安装顺序。
==别忘了安装前文提到的TeX Live哟==,这才是这个GPT的精髓。
- 重启程序 关掉,关掉,一定要全部关掉:浏览器、PowerShell的所有正在运行的实例、进程。重新()()启动!之后,你应该可以获得一个堪堪能用的学术GPT助手。第一次慢一点很正常,要有耐心,循序渐进才能深入。尤其是清华的ChatGLM3,需要现场下载,等着呗。不过说实话,效果一般般,不如Qwen1.5和Baichuan2大模型。商业公司出手做的东西,确实要比同学们做的成熟的多,即使是GLM4商用之后也是问题频频。可惜的是,这个部署包好像并不支持Qwen1.5和Baichuan2,只能支持Qwen初代目。或许我过两天试试让它支持一下?
配置config_private.py
# GROBID服务器地址(填写多个可以均衡负载),用于高质量地读取PDF文档
# 获取方法:复制以下空间https://huggingface.co/spaces/qingxu98/grobid,设为public,然后GROBID_URL = "https://(你的hf用户名如qingxu98)-(你的填写的空间名如grobid).hf.space"
GROBID_URL = [
"https://jungle0128-grobid-0.hf.space", "https://jungle0128-grobid_1.hf.space", "https://jungle0128-grobid_2.hf.space", "https://jungle0128-grobid_3.hf.space", "https://jungle0128-grobid_4.hf.space", "https://jungle0128-grobid_5.hf.space", "https://jungle0128-grobid_6.hf.space", "https://jungle0128-grobid_7.hf.space",
]作者给出的GROBID_URL字段多了个S复数,删了才能正常用