update readme.md:1. 更改一键启动说明的顺序;2. 在一键启动中增加多卡启动的说明
This commit is contained in:
parent
e21ca447af
commit
b82ef5dcea
181
README.md
181
README.md
|
|
@ -14,8 +14,8 @@
|
||||||
* [2. 下载模型至本地](README.md#2.-下载模型至本地)
|
* [2. 下载模型至本地](README.md#2.-下载模型至本地)
|
||||||
* [3. 设置配置项](README.md#3.-设置配置项)
|
* [3. 设置配置项](README.md#3.-设置配置项)
|
||||||
* [4. 知识库初始化与迁移](README.md#4.-知识库初始化与迁移)
|
* [4. 知识库初始化与迁移](README.md#4.-知识库初始化与迁移)
|
||||||
* [5. 启动 API 服务或 Web UI](README.md#5.-启动-API-服务或-Web-UI)
|
* [5. 一键启动API服务或WebUI服务](README.md#6.-一键启动)
|
||||||
* [6. 一键启动](README.md#6.-一键启动)
|
* [6. 分步启动 API 服务或 Web UI](README.md#5.-启动-API-服务或-Web-UI)
|
||||||
* [常见问题](README.md#常见问题)
|
* [常见问题](README.md#常见问题)
|
||||||
* [路线图](README.md#路线图)
|
* [路线图](README.md#路线图)
|
||||||
* [项目交流群](README.md#项目交流群)
|
* [项目交流群](README.md#项目交流群)
|
||||||
|
|
@ -216,20 +216,97 @@ embedding_model_dict = {
|
||||||
当前项目的知识库信息存储在数据库中,在正式运行项目之前请先初始化数据库(我们强烈建议您在执行操作前备份您的知识文件)。
|
当前项目的知识库信息存储在数据库中,在正式运行项目之前请先初始化数据库(我们强烈建议您在执行操作前备份您的知识文件)。
|
||||||
|
|
||||||
- 如果您是从 `0.1.x` 版本升级过来的用户,针对已建立的知识库,请确认知识库的向量库类型、Embedding 模型与 `configs/model_config.py` 中默认设置一致,如无变化只需以下命令将现有知识库信息添加到数据库即可:
|
- 如果您是从 `0.1.x` 版本升级过来的用户,针对已建立的知识库,请确认知识库的向量库类型、Embedding 模型与 `configs/model_config.py` 中默认设置一致,如无变化只需以下命令将现有知识库信息添加到数据库即可:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
$ python init_database.py
|
$ python init_database.py
|
||||||
```
|
```
|
||||||
|
|
||||||
- 如果您是第一次运行本项目,知识库尚未建立,或者配置文件中的知识库类型、嵌入模型发生变化,或者之前的向量库没有开启 `normalize_L2`,需要以下命令初始化或重建知识库:
|
- 如果您是第一次运行本项目,知识库尚未建立,或者配置文件中的知识库类型、嵌入模型发生变化,或者之前的向量库没有开启 `normalize_L2`,需要以下命令初始化或重建知识库:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
$ python init_database.py --recreate-vs
|
$ python init_database.py --recreate-vs
|
||||||
```
|
```
|
||||||
|
|
||||||
### 5. 启动 API 服务或 Web UI
|
### 5. 一键启动API 服务或 Web UI
|
||||||
|
|
||||||
#### 5.1 启动 LLM 服务
|
#### 5.1 启动命令
|
||||||
|
|
||||||
|
一键启动脚本 startup.py,一键启动所有 Fastchat 服务、API 服务、WebUI 服务,示例代码:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ python startup.py -a
|
||||||
|
```
|
||||||
|
|
||||||
|
并可使用 `Ctrl + C` 直接关闭所有运行服务。如果一次结束不了,可以多按几次。
|
||||||
|
|
||||||
|
可选参数包括 `-a (或--all-webui)`, `--all-api`, `--llm-api`, `-c (或--controller)`, `--openai-api`,
|
||||||
|
`-m (或--model-worker)`, `--api`, `--webui`,其中:
|
||||||
|
|
||||||
|
- `--all-webui` 为一键启动 WebUI 所有依赖服务;
|
||||||
|
- `--all-api` 为一键启动 API 所有依赖服务;
|
||||||
|
- `--llm-api` 为一键启动 Fastchat 所有依赖的 LLM 服务;
|
||||||
|
- `--openai-api` 为仅启动 FastChat 的 controller 和 openai-api-server 服务;
|
||||||
|
- 其他为单独服务启动选项。
|
||||||
|
|
||||||
|
#### 5.2 启动非默认模型
|
||||||
|
|
||||||
|
若想指定非默认模型,需要用 `--model-name` 选项,示例:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ python startup.py --all-webui --model-name Qwen-7B-Chat
|
||||||
|
```
|
||||||
|
|
||||||
|
更多信息可通过 `python startup.py -h`查看。
|
||||||
|
|
||||||
|
#### 5.3 多卡加载
|
||||||
|
|
||||||
|
项目支持多卡加载,需在 startup.py 中的 create_model_worker_app 函数中,修改如下三个参数:
|
||||||
|
|
||||||
|
```python
|
||||||
|
gpus=None,
|
||||||
|
num_gpus=1,
|
||||||
|
max_gpu_memory="20GiB"
|
||||||
|
```
|
||||||
|
|
||||||
|
其中,`gpus` 控制使用的显卡的ID,例如 "0,1";
|
||||||
|
|
||||||
|
`num_gpus` 控制使用的卡数;
|
||||||
|
|
||||||
|
`max_gpu_memory` 控制每个卡使用的显存容量。
|
||||||
|
|
||||||
|
注:server_config.py的FSCHAT_MODEL_WORKERS字典中也
|
||||||
|
|
||||||
|
#### 5.4 PEFT 加载(包括lora,p-tuning,prefix tuning, prompt tuning,ia3等)
|
||||||
|
|
||||||
|
本项目基于 FastChat 加载 LLM 服务,故需以 FastChat 加载 PEFT 路径,即保证路径名称里必须有 peft 这个词,配置文件的名字为 adapter_config.json,peft 路径下包含.bin 格式的 PEFT 权重,peft路径在startup.py中create_model_worker_app函数的args.model_names中指定,并开启环境变量PEFT_SHARE_BASE_WEIGHTS=true参数。
|
||||||
|
|
||||||
|
注:如果上述方式启动失败,则需要以标准的fastchat服务启动方式分步启动,分步启动步骤参考第六节,PEFT加载详细步骤参考[加载lora微调后模型失效](https://github.com/chatchat-space/Langchain-Chatchat/issues/1130#issuecomment-1685291822),
|
||||||
|
|
||||||
|
#### **5.5 注意事项:**
|
||||||
|
|
||||||
|
**1. startup 脚本用多进程方式启动各模块的服务,可能会导致打印顺序问题,请等待全部服务发起后再调用,并根据默认或指定端口调用服务(默认 LLM API 服务端口:`127.0.0.1:8888`,默认 API 服务端口:`127.0.0.1:7861`,默认 WebUI 服务端口:`本机IP:8501`)**
|
||||||
|
|
||||||
|
**2.服务启动时间示设备不同而不同,约 3-10 分钟,如长时间没有启动请前往 `./logs`目录下监控日志,定位问题。**
|
||||||
|
|
||||||
|
**3. 在Linux上使用ctrl+C退出可能会由于linux的多进程机制导致multiprocessing遗留孤儿进程,可通过shutdown_all.sh进行退出**
|
||||||
|
|
||||||
|
#### 5.6 启动界面示例:
|
||||||
|
|
||||||
|
1. FastAPI docs 界面
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
2. webui启动界面示例:
|
||||||
|
|
||||||
|
- Web UI 对话界面:
|
||||||
|

|
||||||
|
- Web UI 知识库管理页面:
|
||||||
|

|
||||||
|
|
||||||
|
### 6 分步启动 API 服务或 Web UI
|
||||||
|
|
||||||
|
注意:如使用了一键启动方式,可忽略本节。
|
||||||
|
|
||||||
|
#### 6.1 启动 LLM 服务
|
||||||
|
|
||||||
如需使用开源模型进行本地部署,需首先启动 LLM 服务,启动方式分为三种:
|
如需使用开源模型进行本地部署,需首先启动 LLM 服务,启动方式分为三种:
|
||||||
|
|
||||||
|
|
@ -241,7 +318,7 @@ embedding_model_dict = {
|
||||||
|
|
||||||
如果启动在线的API服务(如 OPENAI 的 API 接口),则无需启动 LLM 服务,即 5.1 小节的任何命令均无需启动。
|
如果启动在线的API服务(如 OPENAI 的 API 接口),则无需启动 LLM 服务,即 5.1 小节的任何命令均无需启动。
|
||||||
|
|
||||||
##### 5.1.1 基于多进程脚本 llm_api.py 启动 LLM 服务
|
##### 6.1.1 基于多进程脚本 llm_api.py 启动 LLM 服务
|
||||||
|
|
||||||
在项目根目录下,执行 [server/llm_api.py](server/llm_api.py) 脚本启动 **LLM 模型**服务:
|
在项目根目录下,执行 [server/llm_api.py](server/llm_api.py) 脚本启动 **LLM 模型**服务:
|
||||||
|
|
||||||
|
|
@ -249,7 +326,7 @@ embedding_model_dict = {
|
||||||
$ python server/llm_api.py
|
$ python server/llm_api.py
|
||||||
```
|
```
|
||||||
|
|
||||||
项目支持多卡加载,需在 llm_api.py 中修改 create_model_worker_app 函数中,修改如下三个参数:
|
项目支持多卡加载,需在 llm_api.py 中的 create_model_worker_app 函数中,修改如下三个参数:
|
||||||
|
|
||||||
```python
|
```python
|
||||||
gpus=None,
|
gpus=None,
|
||||||
|
|
@ -263,7 +340,7 @@ max_gpu_memory="20GiB"
|
||||||
|
|
||||||
`max_gpu_memory` 控制每个卡使用的显存容量。
|
`max_gpu_memory` 控制每个卡使用的显存容量。
|
||||||
|
|
||||||
##### 5.1.2 基于命令行脚本 llm_api_stale.py 启动 LLM 服务
|
##### 6.1.2 基于命令行脚本 llm_api_stale.py 启动 LLM 服务
|
||||||
|
|
||||||
⚠️ **注意:**
|
⚠️ **注意:**
|
||||||
|
|
||||||
|
|
@ -303,14 +380,14 @@ $ python server/llm_api_shutdown.py --serve all
|
||||||
|
|
||||||
亦可单独停止一个 FastChat 服务模块,可选 [`all`, `controller`, `model_worker`, `openai_api_server`]
|
亦可单独停止一个 FastChat 服务模块,可选 [`all`, `controller`, `model_worker`, `openai_api_server`]
|
||||||
|
|
||||||
##### 5.1.3 PEFT 加载(包括lora,p-tuning,prefix tuning, prompt tuning,ia等)
|
##### 6.1.3 PEFT 加载(包括lora,p-tuning,prefix tuning, prompt tuning,ia3等)
|
||||||
|
|
||||||
本项目基于 FastChat 加载 LLM 服务,故需以 FastChat 加载 PEFT 路径,即保证路径名称里必须有 peft 这个词,配置文件的名字为 adapter_config.json,peft 路径下包含 model.bin 格式的 PEFT 权重。
|
本项目基于 FastChat 加载 LLM 服务,故需以 FastChat 加载 PEFT 路径,即保证路径名称里必须有 peft 这个词,配置文件的名字为 adapter_config.json,peft 路径下包含 model.bin 格式的 PEFT 权重。
|
||||||
详细步骤参考[加载lora微调后模型失效](https://github.com/chatchat-space/Langchain-Chatchat/issues/1130#issuecomment-1685291822)
|
详细步骤参考[加载lora微调后模型失效](https://github.com/chatchat-space/Langchain-Chatchat/issues/1130#issuecomment-1685291822)
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
#### 5.2 启动 API 服务
|
#### 6.2 启动 API 服务
|
||||||
|
|
||||||
本地部署情况下,按照 [5.1 节](README.md#5.1-启动-LLM-服务)**启动 LLM 服务后**,再执行 [server/api.py](server/api.py) 脚本启动 **API** 服务;
|
本地部署情况下,按照 [5.1 节](README.md#5.1-启动-LLM-服务)**启动 LLM 服务后**,再执行 [server/api.py](server/api.py) 脚本启动 **API** 服务;
|
||||||
|
|
||||||
|
|
@ -325,10 +402,10 @@ $ python server/api.py
|
||||||
启动 API 服务后,可访问 `localhost:7861` 或 `{API 所在服务器 IP}:7861` FastAPI 自动生成的 docs 进行接口查看与测试。
|
启动 API 服务后,可访问 `localhost:7861` 或 `{API 所在服务器 IP}:7861` FastAPI 自动生成的 docs 进行接口查看与测试。
|
||||||
|
|
||||||
- FastAPI docs 界面
|
- FastAPI docs 界面
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
#### 5.3 启动 Web UI 服务
|
#### 6.3 启动 Web UI 服务
|
||||||
|
|
||||||
按照 [5.2 节](README.md#5.2-启动-API-服务)**启动 API 服务后**,执行 [webui.py](webui.py) 启动 **Web UI** 服务(默认使用端口 `8501`)
|
按照 [5.2 节](README.md#5.2-启动-API-服务)**启动 API 服务后**,执行 [webui.py](webui.py) 启动 **Web UI** 服务(默认使用端口 `8501`)
|
||||||
|
|
||||||
|
|
@ -349,50 +426,14 @@ $ streamlit run webui.py --server.port 666
|
||||||
```
|
```
|
||||||
|
|
||||||
- Web UI 对话界面:
|
- Web UI 对话界面:
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
|

|
||||||
- Web UI 知识库管理页面:
|
- Web UI 知识库管理页面:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### 6. 一键启动
|
|
||||||
|
|
||||||
更新一键启动脚本 startup.py,一键启动所有 Fastchat 服务、API 服务、WebUI 服务,示例代码:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
$ python startup.py -a
|
|
||||||
```
|
|
||||||
|
|
||||||
并可使用 `Ctrl + C` 直接关闭所有运行服务。如果一次结束不了,可以多按几次。
|
|
||||||
|
|
||||||
可选参数包括 `-a (或--all-webui)`, `--all-api`, `--llm-api`, `-c (或--controller)`, `--openai-api`,
|
|
||||||
`-m (或--model-worker)`, `--api`, `--webui`,其中:
|
|
||||||
|
|
||||||
- `--all-webui` 为一键启动 WebUI 所有依赖服务;
|
|
||||||
- `--all-api` 为一键启动 API 所有依赖服务;
|
|
||||||
- `--llm-api` 为一键启动 Fastchat 所有依赖的 LLM 服务;
|
|
||||||
- `--openai-api` 为仅启动 FastChat 的 controller 和 openai-api-server 服务;
|
|
||||||
- 其他为单独服务启动选项。
|
|
||||||
|
|
||||||
若想指定非默认模型,需要用 `--model-name` 选项,示例:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
$ python startup.py --all-webui --model-name Qwen-7B-Chat
|
|
||||||
```
|
|
||||||
|
|
||||||
更多信息可通过 `python startup.py -h`查看。
|
|
||||||
|
|
||||||
**注意:**
|
|
||||||
|
|
||||||
**1. startup 脚本用多进程方式启动各模块的服务,可能会导致打印顺序问题,请等待全部服务发起后再调用,并根据默认或指定端口调用服务(默认 LLM API 服务端口:`127.0.0.1:8888`,默认 API 服务端口:`127.0.0.1:7861`,默认 WebUI 服务端口:`本机IP:8501`)**
|
|
||||||
|
|
||||||
**2.服务启动时间示设备不同而不同,约 3-10 分钟,如长时间没有启动请前往 `./logs`目录下监控日志,定位问题。**
|
|
||||||
|
|
||||||
**3. 在Linux上使用ctrl+C退出可能会由于linux的多进程机制导致multiprocessing遗留孤儿进程,可通过shutdown_all.sh进行退出**
|
|
||||||
|
|
||||||
## 常见问题
|
## 常见问题
|
||||||
|
|
||||||
参见 [常见问题](docs/FAQ.md)。
|
参见 [常见问题](docs/FAQ.md)。
|
||||||
|
|
@ -401,14 +442,14 @@ $ python startup.py --all-webui --model-name Qwen-7B-Chat
|
||||||
|
|
||||||
## 路线图
|
## 路线图
|
||||||
|
|
||||||
- [x] Langchain 应用
|
- [X] Langchain 应用
|
||||||
- [x] 本地数据接入
|
- [X] 本地数据接入
|
||||||
- [x] 接入非结构化文档
|
- [X] 接入非结构化文档
|
||||||
- [x] .md
|
- [X] .md
|
||||||
- [x] .txt
|
- [X] .txt
|
||||||
- [x] .docx
|
- [X] .docx
|
||||||
- [ ] 结构化数据接入
|
- [ ] 结构化数据接入
|
||||||
- [x] .csv
|
- [X] .csv
|
||||||
- [ ] .xlsx
|
- [ ] .xlsx
|
||||||
- [ ] 分词及召回
|
- [ ] 分词及召回
|
||||||
- [ ] 接入不同类型 TextSplitter
|
- [ ] 接入不同类型 TextSplitter
|
||||||
|
|
@ -417,24 +458,24 @@ $ python startup.py --all-webui --model-name Qwen-7B-Chat
|
||||||
- [ ] 本地网页接入
|
- [ ] 本地网页接入
|
||||||
- [ ] SQL 接入
|
- [ ] SQL 接入
|
||||||
- [ ] 知识图谱/图数据库接入
|
- [ ] 知识图谱/图数据库接入
|
||||||
- [x] 搜索引擎接入
|
- [X] 搜索引擎接入
|
||||||
- [x] Bing 搜索
|
- [X] Bing 搜索
|
||||||
- [x] DuckDuckGo 搜索
|
- [X] DuckDuckGo 搜索
|
||||||
- [ ] Agent 实现
|
- [ ] Agent 实现
|
||||||
- [x] LLM 模型接入
|
- [X] LLM 模型接入
|
||||||
- [x] 支持通过调用 [FastChat](https://github.com/lm-sys/fastchat) api 调用 llm
|
- [X] 支持通过调用 [FastChat](https://github.com/lm-sys/fastchat) api 调用 llm
|
||||||
- [ ] 支持 ChatGLM API 等 LLM API 的接入
|
- [ ] 支持 ChatGLM API 等 LLM API 的接入
|
||||||
- [x] Embedding 模型接入
|
- [X] Embedding 模型接入
|
||||||
- [x] 支持调用 HuggingFace 中各开源 Emebdding 模型
|
- [X] 支持调用 HuggingFace 中各开源 Emebdding 模型
|
||||||
- [ ] 支持 OpenAI Embedding API 等 Embedding API 的接入
|
- [ ] 支持 OpenAI Embedding API 等 Embedding API 的接入
|
||||||
- [x] 基于 FastAPI 的 API 方式调用
|
- [X] 基于 FastAPI 的 API 方式调用
|
||||||
- [x] Web UI
|
- [X] Web UI
|
||||||
- [x] 基于 Streamlit 的 Web UI
|
- [X] 基于 Streamlit 的 Web UI
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 项目交流群
|
## 项目交流群
|
||||||
|
|
||||||
<img src="img/qr_code_30.jpg" alt="二维码" width="300" height="300" />
|
<img src="img/qr_code_58.jpg" alt="二维码" width="300" height="300" />
|
||||||
|
|
||||||
🎉 langchain-ChatGLM 项目微信交流群,如果你也对本项目感兴趣,欢迎加入群聊参与讨论交流。
|
🎉 langchain-ChatGLM 项目微信交流群,如果你也对本项目感兴趣,欢迎加入群聊参与讨论交流。
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue