weida_doc/维达部署手册.md

126 lines
3.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 维达后台服务迁移文档
## 1. 概述
问答服务由三部分组成:
- 运行环境
- 服务代码
- AI模型
本项目根目录组织如下:
|文件/文件夹|内容|
|--|--|
|维达迁移文档.md|迁移文档|
|weida_konwledge_image.tar|维达运行环境镜像|
|gpts|服务代码目录|
|GLM-4|AI模型目录|
部署的时候需要将本文件夹所有内容拷贝到维达服务器,然后按下面步骤逐一运行。
## 2. 运行环境
运行环境以docker容器的形式运行。主要包含
- 主系统: ubuntu 20.04
- python环境mini-conda
- 数据库: mysql(docker 内部3306端口root/zaq12wsx@weida)
- 各种其他环境(详见下表)
|环境|状态|说明|
|--|--|--|
|mysql|已部署|关系型数据库服务,存储问答对|
|faiss-cpu|已部署|向量库,存储文本向量|
|supervisord|已部署|管理和监控进程 |
|conda|已部署|支持多种编程语言的包管理和环境管理系统|
**启动镜像**
```bash
docker load -i ./weida_knowledge_image.tar
docker run -it -p 5103:5103 --name weida_knowledge -v ./gpts:/workspace/gpts ubuntu /bin/bash
```
- 这里要注意端口映射。5103是一个例子实际上要根据维达服务器的具体端口情况设置。
- 路径映射也是同样的要将本项目的根目录下的gpts全部映射过去。
## 2. 服务代码
服务代码包含了文件上传、问答对拆分、知识库入库等操作,要用到几个自然语言处理模块(在拷贝到维达内部服务器时千万不能漏掉)。目录结构如下:
|文件\/文件夹|内容|
|--|--|
|gpt_server|主项目目录|
|qa_content|向量库内容目录|
|qa_store|向量库向量目录|
其中gpt_server为项目主目录其主要内容和结构如下
|文件文件夹|内容|
|--|--|
|mainserver.py|主服务入口文件|
|supervisord.conf|托管后台配置文件|
|GanymedNil|词向量化模型文件夹|
|Helsinki-NLP|翻译模型文件夹|
|nltk_data|自然语言处理包|
## 3. 开启服务
### 3.1 进入容器内部
**以下操作均在容器内部进行**
```bash
docker attach 容器ID
# 检查mysql是否运行
mysql -u root
# 如果没有启动
service mysql start
# 检查代码路径是否正确映射进来
cd /workspace/gpts/gpt_server
ls
```
如果检查通过,继续:
```bash
#激活主服务环境
conda activate weida_qa
#运行主服务
nohup python mainserver.py >server.log &
```
最后在容器中按ctrl + p + q退出当前容器。**注意**不能使用exit退出容器。
## 4. 启动AI模型
```bash
cd /workspace/GLM-4
conda activate glm4
nohup python api.py > server.log &
```
## 5. 注意事项
由于代码是放在宿主机而不是直接放在容器里的,而通过路径映射的宿主机代码路径和容器内部容器路径是实时同步的,因此查看日志不必登录容器。只需要在代码文件夹内查看即可。
- server.log 主服务日志,用于记录与主服务相关的日志
- 如果要重启整个服务,步骤如下
1. 停止mainserver.py进程 ```ps aux | grep mainserver.py```, ```kill -0 进程号```
2. 停止api.py进程 ```ps aux | grep api.py```, ```kill -0 进程号```
3. 启动mainserver.py进程 ```nohup python mainserver.py >server.log &```
4. 启动api.py进程 ```nohup python api.py > server.log &```