From e11665323103f58b47d745641d3f73a1278e7484 Mon Sep 17 00:00:00 2001 From: fromhsc Date: Sat, 2 Nov 2024 15:07:15 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90fix=E3=80=91=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=97=A0=E7=BD=91=E7=BB=9C=E7=8E=AF=E5=A2=83=E4=B8=8B=E9=83=A8?= =?UTF-8?q?=E7=BD=B2=E6=8C=87=E5=8D=97=EF=BC=8C=E5=AE=89=E8=A3=85copilot?= =?UTF-8?q?=E9=83=A8=E5=88=86=E7=AB=A0=E8=8A=82=20Signed-off-by:=20He=20Sh?= =?UTF-8?q?oucheng=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...50\347\275\262\346\214\207\345\215\227.md" | 389 ++++++++++-------- 1 file changed, 223 insertions(+), 166 deletions(-) diff --git "a/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/\346\227\240\347\275\221\347\273\234\347\216\257\345\242\203\344\270\213\351\203\250\347\275\262\346\214\207\345\215\227.md" "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/\346\227\240\347\275\221\347\273\234\347\216\257\345\242\203\344\270\213\351\203\250\347\275\262\346\214\207\345\215\227.md" index f0b3ba34..af9e204d 100644 --- "a/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/\346\227\240\347\275\221\347\273\234\347\216\257\345\242\203\344\270\213\351\203\250\347\275\262\346\214\207\345\215\227.md" +++ "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/\346\227\240\347\275\221\347\273\234\347\216\257\345\242\203\344\270\213\351\203\250\347\275\262\346\214\207\345\215\227.md" @@ -1,4 +1,4 @@ -# 离线部署指南 +# 无网络环境下部署指南 ## 介绍 @@ -208,234 +208,262 @@ openEuler Copilot System 是一款智能问答工具,使用 openEuler Copilot 您的环境现已就绪,接下来即可启动 openEuler Copilot System 的安装流程。 -### 1. 编辑配置文件 +- 下载目录以home为例,进入 openEuler Copilot System 仓库的 Helm 配置文件目录 -```bash -# 下载目录以home为例,进入 openEuler Copilot System 仓库的Helm配置文件目录 -cd /home/euler-copilot-framework -``` + ```bash + cd /home/euler-copilot-framework && ll + ``` -```bash -ll -``` + ```bash + total 28 + drwxr-xr-x 3 root root 4096 Aug 28 17:45 docs/ + drwxr-xr-x 5 root root 4096 Aug 28 17:45 euler-copilot-helm/ + ``` -```bash -total 28 -drwxr-xr-x 3 root root 4096 Aug 28 17:45 docs/ -drwxr-xr-x 5 root root 4096 Aug 28 17:45 euler-copilot-helm/ -``` +- 查看euler-copilot-helm的目录 -```bash -# 进入Helm配置文件目录 -cd euler-copilot-helm/chart -``` + ```bash + tree euler-copilot-helm + ``` -```bash -ll -``` + ```bash + euler-copilot-helm/chart + ├── databases + │   ├── Chart.yaml + │   ├── configs + │   ├── templates + │   └── values.yaml + ├── authhub + │   ├── Chart.yaml + │   ├── configs + │   ├── templates + │   └── values.yaml + └── euler_copilot + ├── Chart.yaml + ├── configs + ├── templates + │   ├── NOTES.txt + │   ├── rag + │   ├── vectorize + │   └── web + └── values.yaml + ``` -```bash -total 28 --rw-r--r-- 1 root root 135 Aug 28 17:45 Chart.yaml -drwxr-xr-x 10 root root 4096 Aug 28 17:55 templates/ --rw-r--r-- 1 root root 6572 Aug 30 12:05 values.yaml -``` +### 1. 安装数据库 -编辑 values.yaml 配置文件,请结合 YAML 中的注释部分进行修改 +- 编辑 values.yaml -```bash -vim values.yaml -``` + ```bash + cd euler-copilot-helm/chart/databases + ``` -注意事项: + 仅需修改镜像tag为对应架构,其余可不进行修改 -- 修改 domain 为服务器的实际 IP 地址。 -- 更新 OpenAI 的 URL、Key、Model 和 Max Token 为部署所需的值。 -- 根据实际部署情况,更新 vectorize、rag、framework 中的 BGE 模型路径、文档向量化和分词工具路径。 + ```bash + vim values.yaml + ``` -如需在内网环境中修改 Traefik 配置以转发端口,请继续下一步。 +- 创建命名空间 -```bash -# 进入SSL配置目录,准备修改Traefik配置 -cd chart_ssl/ -``` + ```bash + kubectl create namespace euler-copilot + ``` -```bash -ll -``` + 设置环境变量 -```bash -total 20 --rw-r--r-- 1 root root 250 Aug 28 17:45 traefik-config.yml --rw-r--r-- 1 root root 212 Aug 28 17:45 traefik-secret.yaml --rw-r--r-- 1 root root 175 Aug 28 17:45 traefik-tlsstore.yaml -``` + ```bash + export KUBECONFIG=/etc/rancher/k3s/k3s.yaml + ``` -修改 traefik-config.yml 以转发HTTPS端口(如果需要) +- 安装数据库 -```bash -vim traefik-config.yml -``` + ```bash + helm install -n euler-copilot databases . + ``` -修改部分示例: +- 查看 pod 状态 -```yaml -websecure: - exposedPort: 8080 # 将此处的端口号修改为期望转发的HTTPS端口 -``` + ```bash + kubectl -n euler-copilot get pods + ``` -应用修改后的 Traefik 配置 + ```bash + pgsql-deploy-databases-86b4dc4899-ppltc 1/1 Running 0 17d + redis-deploy-databases-f8866b56-kj9jz 1/1 Running 0 17d + mysql-deploy-databases-57f5f94ccf-sbhzp 2/2 Running 0 17d + ``` -```bash -kubectl apply -f traefik-config.yml -``` +- 若服务器之前部署过 mysql,则可预先清除下 pvc,再部署 databases。 -### 2. 安装 openEuler Copilot System + ```bash + # 获取pvc + kubectl -n euler-copilot get pvc + ``` -创建 namespace + ```bash + # 删除pvc + kubectl -n euler-copilot delete pvc mysql-pvc + ``` -```bash -cd /home/euler-copilot-framework/euler-copilot-helm/chart -``` +### 2. 安装鉴权平台Authhub -```bash -kubectl create namespace euler-copilot -``` +- 编辑 values.yaml -设置环境变量 + ```bash + cd euler-copilot-helm/chart/authhub + ``` -```bash -export KUBECONFIG=/etc/rancher/k3s/k3s.yaml -``` + 请结合 YAML 中的注释中的[必填]项进行修改 -安装 openEuler Copilot System + ```bash + vim values.yaml + ``` -```bash -helm install -n euler-copilot service . -``` + 注意: -### 3. 查看 Pod 状态 + 1. authHub 需要域名,可预先申请域名或在 'C:\Windows\System32\drivers\etc\hosts' 下配置。 + authhub和euler-copilot必须是同一个根域名的两个子域名, 比如authhub.test.com和 + eulercopilot.test.com + 2. 数据库的密码与databases的values.yaml一致 -镜像拉取过程可能需要大约一分钟的时间,请耐心等待。 -部署成功后,所有 Pod 的状态应显示为 Running。 +- 安装 AuthHub -```bash -kubectl -n euler-copilot get pods -``` + ```bash + helm install -n euler-copilot authhub . + ``` -```bash -NAME READY STATUS RESTARTS AGE -framework-deploy-service-bb5b58678-jxzqr 2/2 Running 0 16d -mysql-deploy-service-c7857c7c9-wz9gn 1/1 Running 0 17d -pgsql-deploy-service-86b4dc4899-ppltc 1/1 Running 0 17d -rag-deploy-service-5b7887644c-sm58z 2/2 Running 0 110m -redis-deploy-service-f8866b56-kj9jz 1/1 Running 0 17d -vectorize-deploy-service-57f5f94ccf-sbhzp 2/2 Running 0 17d -web-deploy-service-74fbf7999f-r46rg 1/1 Running 0 2d -``` + AuthHub 默认账号 `administrator`, 密码 `changeme` -进入到 postgres 数据库,执行扩展命令 +- 查看 pod 状态 -```bash -kubectl -n euler-copilot exec -it pgsql-deploy-service-86b4dc4899-ppltc -- bash -``` + ```bash + kubectl -n euler-copilot get pods + ``` -```bash -psql -U postgres -d postgres -``` + ```bash + NAME READY STATUS RESTARTS AGE + authhub-backend-deploy-authhub-64896f5cdc-m497f 2/2 Running 0 16d + authhub-web-deploy-authhub-7c48695966-h8d2p 1/1 Running 0 17d + pgsql-deploy-databases-86b4dc4899-ppltc 1/1 Running 0 17d + redis-deploy-databases-f8866b56-kj9jz 1/1 Running 0 17d + mysql-deploy-databases-57f5f94ccf-sbhzp 2/2 Running 0 17d + ``` -```sql -psql (16.2 (Debian 16.2-1.pgdg120+2)) -输入 "help" 来获取帮助信息. -postgres=# CREATE EXTENSION zhparser; -postgres=# CREATE EXTENSION vector; -postgres=# CREATE TEXT SEARCH CONFIGURATION zhparser (PARSER = zhparser); -postgres=# ALTER TEXT SEARCH CONFIGURATION zhparser ADD MAPPING FOR n,v,a,i,e,l WITH simple; -postgres=# exit -``` +- 登录 AuthHub + + AuthHub 的域名以 为例,AuthHub 的登录界面如下图所示: -退出容器 + ![部署图](./pictures/authhub登录界面.png) -```bash -exit -``` +- 创建应用eulercopilot -注意:如果 Pod 状态出现失败,建议按照以下步骤进行排查 + ![部署图](./pictures/创建应用界面.png) + 点击创建应用,输入应用名称、应用主页和应用回调地址(登录后回调地址),参考如下: + - 应用名称:eulercopilot + - 应用主页: + - 应用回调地址: + - 应用创建好后会生成 Client ID 和 Client Secret,将生成的 Client ID 和 Client Secret 配置到应用里,以 eulercopilot 为例,创建应用后在配置文件中添加配置 `euler-copilot-helm/chart/euler_copilot/values.yaml` 中添加配置 + + ![部署图](./pictures/创建应用成功界面.png) -1. 查看 Kubernetes 集群的事件 (Events),以获取更多关于 Pod 失败的上下文信息 +### 2. 安装 openEuler Copilot System - ```bash - kubectl -n euler-copilot get events - ``` +- 编辑 values.yaml -2. 查看镜像拉取是否成功 + ```bash + cd euler-copilot-helm/chart/euler_copilot + ``` - ```bash - k3s crictl images - ``` + 请结合 YAML 中的注释中的[必填]项进行修改 -3. 检查 RAG 的 Pod 日志,以确定是否有错误信息或异常行为。 + ```bash + vim values.yaml + ``` - ```bash - kubectl logs rag-deploy-service-5b7887644c-sm58z -n euler-copilot - ``` +- 安装 openEuler Copilot System -4. 验证 Kubernetes 集群的资源状态,确保没有资源限制或配额问题导致 Pod 无法正常运行。 + ```bash + helm install -n euler-copilot service . + ``` - ```bash - df -h - ``` +- 查看 Pod 状态 -5. 如果未拉取成且镜像大小为0,请检查是否是 k3s 版本未满足要求,低于 v1.30.2 + ```bash + kubectl -n euler-copilot get pods + ``` - ```bash - k3s -v - ``` + 镜像拉取过程可能需要大约一分钟的时间,请耐心等待。部署成功后,所有 Pod 的状态应显示为 Running。 -## 验证安装 + ```bash + NAME READY STATUS RESTARTS AGE + authhub-backend-deploy-authhub-64896f5cdc-m497f 2/2 Running 0 16d + authhub-web-deploy-authhub-7c48695966-h8d2p 1/1 Running 0 17d + pgsql-deploy-databases-86b4dc4899-ppltc 1/1 Running 0 17d + redis-deploy-databases-f8866b56-kj9jz 1/1 Running 0 17d + mysql-deploy-databases-57f5f94ccf-sbhzp 2/2 Running 0 17d + framework-deploy-service-bb5b58678-jxzqr 2/2 Running 0 16d + rag-deploy-service-5b7887644c-sm58z 2/2 Running 0 110m + vectorize-deploy-service-57f5f94ccf-sbhzp 2/2 Running 0 17d + web-deploy-service-74fbf7999f-r46rg 1/1 Running 0 2d + ``` -访问 openEuler Copilot System 网页,请在浏览器中输入 https://$(host_ip):8080 (其中port默认值为8080,若更改则需相应调整)。 - -### 1. 创建登录账号密码 - -``` bash -# 首次登录触发mysql数据库生成user表 -# 1.生成加密后的账号密码 -root@openeuler:~# python3 -Python 3.10.12 (main, Mar 22 2024, 16:50:05) [GCC 11.4.0] on linux -Type "help", "copyright", "credits" or "license" for more information. ->>> import hashlib ->>> hashlib.sha256("[密码]".encode('utf-8')).hexdigest() -'f1db188c86b9f7cf154922a525891b807a6df8a44ad0fbace0cfe5840081a507' -# 保存生成加密后的密码 -# 2.插入账号密码到mysql数据库 -root@openeuler:~# kubectl -n euler-copilot exec -it mysql-deploy-service-c7857c7c9-wz9gn -- bash -bash-5.1# mysql -uroot -p8ZMTsY4@dgWZqoM6 -# 密码在euler-copilot-frameworkeuler-copilot-helm/chart/values.yaml的mysql章节查看 -mysql> use euler_copilot; -mysql> insert into user(user_sub, passwd) values ("[用户名]", "[加密后的密码]"); -mysql> exit; -``` + 注意:如果 Pod 状态出现失败,建议按照以下步骤进行排查 + + 1. 查看 Kubernetes 集群的事件 (Events),以获取更多关于 Pod 失败的上下文信息 + + ```bash + kubectl -n euler-copilot get events + ``` + + 2. 查看镜像拉取是否成功 + + ```bash + k3s crictl images + ``` + + 3. 检查 RAG 的 Pod 日志,以确定是否有错误信息或异常行为。 + + ```bash + kubectl logs rag-deploy-service-5b7887644c-sm58z -n euler-copilot + ``` -### 2. 问答验证 + 4. 验证 Kubernetes 集群的资源状态,确保没有资源限制或配额问题导致 Pod 无法正常运行。 + + ```bash + df -h + ``` + + 5. 如果未拉取成且镜像大小为0,请检查是否是 k3s 版本未满足要求,低于 v1.30.2 + + ```bash + k3s -v + ``` + +## 验证安装 恭喜您,openEuler Copilot System 的部署已完成!现在,您可以开启智能问答的非凡体验之旅了。 +请在浏览器中输入 https://$(host_ip):8080 或 (其中 port 默认值为8080,若更改则需相应调整)访问 openEuler Copilot System 网页,并尝试进行问答体验。 ![Web 界面](./pictures/WEB界面.png) +## 安装插件 + +详细信息请参考文档 [插件部署指南](./插件) + ## 构建专有领域智能问答 ### 1. 构建 openEuler 专业知识领域的智能问答 1. 修改 values.yaml 的 pg 的镜像仓为 `pg-data` 2. 修改 values.yaml 的 rag 部分的字段 `knowledgebaseID: openEuler_2bb3029f` - 3. 将 `vim euler-copilot-frameworkeuler-copilot-helm/chart/templates/pgsql/pgsql-deployment.yaml` 的 volume 相关字段注释 - 4. 进入 `cd euler-copilot-frameworkeuler-copilot-helm/chart`,执行更新服务 `helm upgrade -n euler-copilot service .` - 5. 进入网页端进行 openEuler 专业知识领域的问答 + 3. 将 `vim euler-copilot-helm/chart/databases/templates/pgsql/pgsql-deployment.yaml` 的 volumes 相关字段注释 + 4. 进入 `cd euler-copilot-helm/chart/databases`,执行更新服务 `helm upgrade -n euler-copilot databases .` + 5. 进入 `cd euler-copilot-helm/chart/euler_copilot`,执行更新服务 `helm upgrade -n euler-copilot service .` + 6. 进入网页端进行 openEuler 专业知识领域的问答 ### 2. 构建项目专属知识领域智能问答 -详细信息请参考文档 [本地资产库构建指南](https://gitee.com/openeuler/euler-copilot-framework/blob/master/docs/部署指南/本地资产库构建指南.md) +详细信息请参考文档 [本地资产库构建指南](本地资产库构建指南.md) ## 附录 @@ -488,7 +516,7 @@ mysql> exit; conda activate /root/py310 ``` -4. 创建新终端worker +4. 创建新终端 worker ```bash screen -S worker @@ -518,8 +546,8 @@ mysql> exit; 5. 按照如下方式配置文件,并更新服务。 - ```bash - vim euler-copilot-helm/chart/values.yaml + ```bash + vim euler-copilot-helm/chart/euler_copilot/values.yaml ``` 修改如下部分 @@ -599,3 +627,32 @@ http_proxy="http://172.21.60.51:3128" https_proxy="http://172.21.60.51:3128" no_proxy=172.21.31.10 # 代理中剔除本机IP ``` + +### 5. GPU环境部署大模型时出现无法流式回复? + +在服务执行 curl 大模型失败,但是将 `"stream": true` 改为 `"stream": false`就可以 curl 通? + +```bash +curl http://localhost:30000/v1/chat/completions -H "Content-Type: application/json" -H "Authorization: Bearer sk-123456" -d '{ +"model": "qwen1.5", +"messages": [ +{ +"role": "system", +"content": "你是情感分析专家,你的任务是xxxx" +}, +{ +"role": "user", +"content": "你好" +} +], +"stream": true, +"n": 1, +"max_tokens": 32768 +}' +``` + +- 解决办法: + +```bash +pip install Pydantic=1.10.13 +``` -- Gitee