1. 准备工作
首先把准备工作做做好, 这里也是最容易走弯路的地方, 官方的教程虽然没有错误, 但是有点混乱, 而且一些细节隐藏在了更深的文档中, 导致部署过程中遇到不少问题.
1.1 硬性条件
这里说的很明白了, 注意的是linux部署下也需要nvidia, 我一开始就是在云服务器linux下部署, 最终发现没有nvidia显卡, 所以又转到了window下部署.
所以尽量选择一台带有nvidia的机器, 查看显卡的命令为: nvidia-smi, 如果执行完没有结果, 那就不是nvidia
dibole@DIBOLE-AI:~/QAnything$ nvidia-smi
Fri Apr 12 17:14:42 2024
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.98.01 Driver Version: 536.99 CUDA Version: 12.2 |
|-----------------------------------------+----------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+======================+======================|
| 0 NVIDIA GeForce RTX 4060 Ti On | 00000000:01:00.0 Off | N/A |
| 0% 39C P8 7W / 165W | 7781MiB / 16380MiB | 0% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+
+---------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=======================================================================================|
| 0 N/A N/A 26 G /Xwayland N/A |
| 0 N/A N/A 32 G /Xwayland N/A |
| 0 N/A N/A 35 G /Xwayland N/A |
| 0 N/A N/A 45 C /deviceQueryDrv N/A |
+---------------------------------------------------------------------------------------+
1.2 准备好windows11的wsl功能
打开了wsl功能以后, 接下来安装wsl2下的ubuntu系统
这里可以直接通过wsl的命令行直接安装, 或者选择下载appx文件以后离线安装, 由于文件很大, 所以命令行的进度会卡住, 我之前一直以为是报错了, 最终选择了下载文件后安装
方式一: 通过wsl命令行安装
进入powershell
输入 wsl -l -o 可以看到所有的支持的有效分发的列表
接用命令 wsl --install -d ubuntu-22.04
方式二: 下载后安装
下载地址: https://learn.microsoft.com/zh-cn/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package
这里下载的ubuntu-22.04下载完以后解压, 根据你的系统双击安装, 我的是64位
安装完成以后, 设置一个用户和密码, 就成功安装好wsl了
进入wsl的方式跟使用其他软件一样, 在windows的开始程序中找到
1.3 安装docker-desktop
Docker Desktop release notes | Docker Docs
这里记得千万不要下载最新版本, 推荐使用2.24版本
下载完以后安装, 再加上如下配置就可以了
1.4 安装git 和 git-lfs
这个比较简单就不说了
到底基本上准备工作就完成了,接下来进入安装
2. 部署过程
- step1 进入wsl的ubuntu系统
- step2 下载项目
git clone https://github.com/netease-youdao/QAnything.git
- step3 进入项目根目录
cd QAnythingbash run.sh # 默认在0号GPU上启动
接下来就是漫长的等待, 会自动拉取一堆镜像, 并自启动. 如果一切顺利你会看到
这时候已经可以在前端页面上体验了, 打开页面, 录入一些文件
3. 做一些延展
通过简单的bash run.sh已经运行成功的基础下, 接下来尝试增加一些命令, 通过微调启动命令使用自定义的大模型
Usage: bash run.sh [-c <llm_api>] [-i <device_id>] [-b <runtime_backend>] [-m <model_name>] [-t <conv_template>] [-p <tensor_parallel>] [-r <gpu_memory_utilization>]
-c <llm_api>: "Options {local, cloud} to specify the llm API mode, default is 'local'. If set to '-c cloud', please mannually set the environments {OPENAI_API_KEY, OPENAI_API_BASE, OPENAI_API_MODEL_NAME, OPENAI_API_CONTEXT_LENGTH} into .env fisrt."
-i <device_id>: "Specify argument GPU device_id."
-b <runtime_backend>: "Specify argument LLM inference runtime backend, options={default, hf, vllm}"
-m <model_name>: "Specify argument the model name to load public LLM model using FastChat serve API, options={Qwen-7B-Chat, deepseek-llm-7b-chat, ...}"
-t <conv_template>: "Specify argument the conversation template according to the public LLM model when using FastChat serve API, options={qwen-7b-chat, deepseek-chat, ...}"
-p <tensor_parallel>: "Use options {1, 2} to set tensor parallel parameters for vllm backend when using FastChat serve API, default tensor_parallel=1"
-r <gpu_memory_utilization>: "Specify argument gpu_memory_utilization (0,1] for vllm backend when using FastChat serve API, default gpu_memory_utilization=0.81"
-h: "Display help usage message"
这是一段run.sh的参数解释, 建议逐行观看, 可以看到支持了很多大模型, 这里我想将qanything和openai打通, 结合参数列表, 最终的命令是
bash ./run.sh -c cloud -i 0 -b default
使用了云端大模型openai的时候, 需要增加以下变量到.env文件中
OPENAI_API_KEY= #你的密钥
OPENAI_API_BASE= #你的中转网站, 众所周知不能直接访问
OPENAI_API_MODEL_NAME= #你的通道名称
OPENAI_API_CONTEXT_LENGTH= #你的token令牌长度限制
修改完这些参数以后, 重启容器
不出意外的话就要出意外了, 目前在使用云大模型的时候源码会查找
/model_repos/QAEnsemble_embed_rerank/scripts/get_cuda_capability.py
而这个文件确实不存在, 这里的问题截至2024.4.12号还没有解决.
如果你也不幸遇到了你可以...
直接修改源码绕开这个错误!!
记得修改完以后重启容器, 就可以成功的使用openai的大模型运行qanything, 接下来愉快的玩耍吧