From bc76c4344ab0baf268eb58863db6bb04efa7aa8c Mon Sep 17 00:00:00 2001 From: ylzhangah <1194926515@qq.com> Date: Thu, 16 Jan 2025 16:38:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B00.9.1=E9=83=A8=E7=BD=B2?= =?UTF-8?q?=E6=8C=87=E5=8D=97?= 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" | 229 +++++++++--------- ...50\347\275\262\346\214\207\345\215\227.md" | 133 +++++----- 2 files changed, 183 insertions(+), 179 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 89f11b2b5..a2f803c4e 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" @@ -4,7 +4,7 @@ openEuler Copilot System 是一款智能问答工具,使用 openEuler Copilot System 可以解决操作系统知识获取的便捷性,并且为OS领域模型赋能开发者及运维人员。作为获取操作系统知识,使能操作系统生产力工具 (如 A-Ops / A-Tune / x2openEuler / EulerMaker / EulerDevOps / StratoVirt / iSulad 等),颠覆传统命令交付方式,由传统命令交付方式向自然语义进化,并结合智能体任务规划能力,降低开发、使用操作系统特性的门槛。 -### 组件介绍 +### 主要组件介绍 | 组件 | 端口 | 说明 | | ----------------------------- | --------------- | -------------------- | @@ -16,7 +16,6 @@ openEuler Copilot System 是一款智能问答工具,使用 openEuler Copilot | redis | 6379 (内部端口) | Redis数据库 | | postgres | 5432 (内部端口) | 向量数据库 | | secret_inject | 无 | 配置文件安全复制工具 | - ## 环境要求 ### 软件要求 @@ -37,11 +36,11 @@ openEuler Copilot System 是一款智能问答工具,使用 openEuler Copilot | RAM | >= 64GB | | 存储 | >= 500 GB | | GPU | Tesla V100 16GB,4张 | -| NPU | 910ProB、910B | +| NPU | 支持大模型推理的NPU卡或服务器 | 注意: -1. 若无 GPU 或 NPU 资源,建议通过调用 OpenAI 接口的方式来实现功能。(接口样例:) +1. 若无 GPU 或 NPU 资源,建议通过调用 OpenAI 接口的方式来实现功能。 2. 调用第三方 OpenAI 接口的方式不需要安装高版本的 python (>=3.9.9) 3. 英伟达 GPU 对 Docker 的支持必需要新版本 Docker (>= v25.4.0) @@ -95,8 +94,7 @@ openEuler Copilot System 是一款智能问答工具,使用 openEuler Copilot - SELinux设置 ```bash - # 需要关闭selinux,可以临时关闭或永久关闭 - # 永久关闭SELinux + # 永久关闭 SELinux sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config # 临时关闭 setenforce 0 @@ -114,62 +112,72 @@ openEuler Copilot System 是一款智能问答工具,使用 openEuler Copilot wget https://repo.oepkgs.net/openEuler/rpm/openEuler-22.03-LTS/contrib/EulerCopilot/bge-reranker-large.tar.gz ``` -- 下载分词工具 text2vec-base-chinese-paraphrase [分词工具下载链接](https://repo.oepkgs.net/openEuler/rpm/openEuler-22.03-LTS/contrib/EulerCopilot/) - - ```bash - mkdir -p /home/EulerCopilot/text2vec - cd /home/EulerCopilot/text2vec - wget https://repo.oepkgs.net/openEuler/rpm/openEuler-22.03-LTS/contrib/EulerCopilot/text2vec-base-chinese-paraphrase.tar.gz - ``` - - 镜像包下载 - - x86或arm架构的EulerCopilot服务的各组件镜像单独提供 + - + 镜像地址: 在联网的宿主机通过docker pull 拉取下面镜像到本地(即执行 docker pull remote_image_address ) + ```bash + # X86架构镜像地址如下所示,ARM架构修改tag为arm + hub.oepkgs.net/neocopilot/euler-copilot-framework:0.9.1-x86 + hub.oepkgs.net/neocopilot/euler-copilot-vectorize-agent:0.9.1-x86 + hub.oepkgs.net/neocopilot/euler-copilot-web:0.9.1-x86 + hub.oepkgs.net/neocopilot/euler-copilot-rag:0.9.1-x86 + hub.oepkgs.net/neocopilot/pgsql-empty:pg16-x86 + hub.oepkgs.net/neocopilot/redis:7.4-alpine-x86 + hub.oepkgs.net/neocopilot/mysql:8-x86 + hub.oepkgs.net/neocopilot/authhub-backend:0.9.1-x86 + hub.oepkgs.net/neocopilot/authhub-web:0.9.1-x86 + hub.oepkgs.net/neocopilot/secret_inject:x86 + ``` ### 3. 安装部署工具 -#### 3.1 安装 Docker - -如需要基于 GPU/NPU 部署大模型,需要检查 Docker 版本是否满足>= v25.4.0 ,如不满足,请升级 Docker 版本 - -#### 3.2 安装 K3s 并导入镜像 +#### 3.1 安装 K3s 并导入镜像 - 安装 SELinux 配置文件 ```bash yum install -y container-selinux selinux-policy-base - # packages里有k3s-selinux-0.1.1-rc1.el7.noarch.rpm的离线包 - rpm -i https://rpm.rancher.io/k3s-selinux-0.1.1-rc1.el7.noarch.rpm ``` -- x86 架构安装 k3s + ```bash + rpm -i https://rpm.rancher.io/k3s-selinux-0.1.1-rc1.el7.noarch.rpm + ``` +- 安装 k3s + + 可以在有网络的环境上获取 k3s 相关包并上传至服务器, 并执行安装操作,以 'v1.30.3+k3s1' 示例 + ```bash - # 在有网络的环境上获取k3s相关包,以v1.30.3+k3s1示例 + # x86 架构 wget https://github.com/k3s-io/k3s/releases/download/v1.30.3%2Bk3s1/k3s wget https://github.com/k3s-io/k3s/releases/download/v1.30.3%2Bk3s1/k3s-airgap-images-amd64.tar.zst - cp k3s /usr/local/bin/ - cd /var/lib/rancher/k3s/agent - mkdir images - cp k3s-airgap-images-arm64.tar.zst /var/lib/rancher/k3s/agent/images - # packages里有k3s-install.sh的离线包 - curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh - INSTALL_K3S_SKIP_DOWNLOAD=true ./k3s-install.sh - export KUBECONFIG=/etc/rancher/k3s/k3s.yaml + # Arm 架构 + wget https://github.com/k3s-io/k3s/releases/download/v1.30.3%2Bk3s1/k3s-arm64 + wget https://github.com/k3s-io/k3s/releases/download/v1.30.3%2Bk3s1/k3s-airgap-images-arm64.tar.zst ``` -- arm 架构安装 k3s - ```bash - # 在有网络的环境上获取k3s相关包,以v1.30.3+k3s1示例 - wget https://github.com/k3s-io/k3s/releases/download/v1.30.3%2Bk3s1/k3s-arm64 - wget https://github.com/k3s-io/k3s/releases/download/v1.30.3%2Bk3s1/k3s-airgap-images-arm64.tar.zst - cp k3s-arm64 /usr/local/bin/k3s - cd /var/lib/rancher/k3s/agent - mkdir images + # x86 架构 + cp k3s /usr/local/bin/ + # Arm 架构 + cp k3s-arm64 /usr/local/bin/ + ``` + ```bash + mkdir -p /var/lib/rancher/k3s/agent + ``` + ```bash + # x86 架构 + cp k3s-airgap-images-amd64.tar.zst /var/lib/rancher/k3s/agent/images + # Arm 架构 cp k3s-airgap-images-arm64.tar.zst /var/lib/rancher/k3s/agent/images - # packages里有k3s-install.sh的离线包 - curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh + ``` + ```bash + curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh + ``` + ```bash INSTALL_K3S_SKIP_DOWNLOAD=true ./k3s-install.sh + ``` + ```bash export KUBECONFIG=/etc/rancher/k3s/k3s.yaml ``` @@ -180,7 +188,7 @@ openEuler Copilot System 是一款智能问答工具,使用 openEuler Copilot k3s ctr image import $(镜像文件) ``` -#### 3.3 安装 Helm 工具 +#### 3.2 安装 Helm 工具 - x86_64 架构 @@ -200,11 +208,11 @@ openEuler Copilot System 是一款智能问答工具,使用 openEuler Copilot rm -rf linux-arm64 ``` -#### 3.4 大模型准备 +#### 3.3 大模型准备 提供第三方openai接口或基于硬件本都部署大模型,本地部署大模型可参考附录部分。 -## 安装 +# 安装 您的环境现已就绪,接下来即可启动 openEuler Copilot System 的安装流程。 @@ -257,7 +265,7 @@ openEuler Copilot System 是一款智能问答工具,使用 openEuler Copilot cd deploy/chart/databases ``` - 仅需修改镜像tag为对应架构,其余可不进行修改 + 请根据对应的架构修改镜像标签,并设置数据库密码。 ```bash vim values.yaml @@ -281,7 +289,7 @@ openEuler Copilot System 是一款智能问答工具,使用 openEuler Copilot helm install -n euler-copilot databases . ``` -- 查看 pod 状态 +- 检查 Pod 的状态 ```bash kubectl -n euler-copilot get pods @@ -296,12 +304,10 @@ openEuler Copilot System 是一款智能问答工具,使用 openEuler Copilot - 若服务器之前部署过 mysql,则可预先清除下 pvc,再部署 databases。 ```bash - # 获取pvc kubectl -n euler-copilot get pvc ``` ```bash - # 删除pvc kubectl -n euler-copilot delete pvc mysql-pvc ``` @@ -321,9 +327,8 @@ openEuler Copilot System 是一款智能问答工具,使用 openEuler Copilot - 注意: 1. authHub 需要域名,可预先申请域名或在 'C:\Windows\System32\drivers\etc\hosts' 下配置。 - authhub和euler-copilot必须是同一个根域名的两个子域名, 例如authhub.test.com和 - eulercopilot.test.com - 2. 修改tag为对应架构的tag; + authhub 服务和 euler-copilot 服务必须是同一个根域名的两个子域名, 例如 `authhub.test.com` 和 `eulercopilot.test.com` + 2. 根据对应的架构修改镜像标签,并填写数据库密码。 - 安装 AuthHub @@ -350,7 +355,7 @@ openEuler Copilot System 是一款智能问答工具,使用 openEuler Copilot - 登录 AuthHub - AuthHub 的域名以 为例,浏览器输入`https://authhub.test.com`, 登录界面如下图所示: + AuthHub 的域名以 为例,浏览器输入 `https://authhub.test.com`, 登录界面如下图所示: ![部署图](./pictures/authhub登录界面.png) @@ -380,11 +385,11 @@ openEuler Copilot System 是一款智能问答工具,使用 openEuler Copilot ``` - 注意: - 1. 查看系统架构,并修改values.yaml中的tag; - 2. 修改values.yaml中的globals的domain为EulerCopilot域名,并配置大模型的相关信息 - 3. 手动创建`docs_dir`、`plugin_dir`、`models`三个文件挂载目录 - 4. 修改values.yaml中framework章节的web_url和oidc设置 - 5. 如果部署插件,则需要配置用于Function Call的模型,此时必须有GPU环境用于部署sglang,可参考附件 + 1. 根据对应的架构修改镜像标签,并填写数据库密码; + 2. 修改 values.yaml 中的 globals 的 domain 为 EulerCopilot 域名,并配置大模型llm的相关信息,如果有需要部署插件; + 3. 手动创建 `docs_dir`、`plugin_dir`、`models` 三个文件挂载目录; + 4. 修改 values.yaml 中 framework 章节的 web_url 和 oidc 设置; + 5. 如果部署插件,则需要配置用于 Function Call 的模型,此时必须有GPU环境用于部署 sglang,可参考附件。 - 安装 openEuler Copilot System @@ -414,8 +419,6 @@ openEuler Copilot System 是一款智能问答工具,使用 openEuler Copilot ``` 注意:如果 Pod 状态出现失败,建议按照以下步骤进行排查 -注意:如果 Pod 状态出现失败,建议按照以下步骤进行排查 - 1. 查看 Kubernetes 集群的事件 (Events),以获取更多关于 Pod 失败的上下文信息 ```bash @@ -459,7 +462,6 @@ openEuler Copilot System 是一款智能问答工具,使用 openEuler Copilot 首先请点击下方页面的“立即注册”按钮,完成账号的注册与登录。 ![Web登录界面](./pictures/WEB登录界面.png) - ![Web 界面](./pictures/WEB界面.png) ## 安装插件 @@ -468,18 +470,7 @@ openEuler Copilot System 是一款智能问答工具,使用 openEuler Copilot ## 构建专有领域智能问答 -### 1. 构建 openEuler 专业知识领域的智能问答 - - 1. 修改 values.yaml 的 pg 的镜像仓为 `pg-data` - 2. 修改 values.yaml 的 rag 部分的字段 `knowledgebaseID: openEuler_2bb3029f` - 3. 将 `vim deploy/chart/databases/templates/pgsql/pgsql-deployment.yaml` 的 volumes 相关字段注释 - 4. 进入 `cd deploy/chart/databases`,执行更新服务 `helm upgrade -n euler-copilot databases .` - 5. 进入 `cd deploy/chart/euler_copilot`,执行更新服务 `helm upgrade -n euler-copilot service .` - 6. 进入网页端进行 openEuler 专业知识领域的问答 - -### 2. 构建项目专属知识领域智能问答 - -详细信息请参考文档 [本地资产库构建指南](本地资产库构建指南.md) +详细信息请参考文档 [本地资产库构建指南](./本地资产库构建指南.md) ## 附录 @@ -588,8 +579,7 @@ NPU 环境部署可参考链接 [MindIE安装指南](https://www.hiascend.com/do ```text File "/usr/lib/python3.9/site-packages/urllib3/connection.py", line 186, in _new_conn -raise NewConnectionError( -urllib3.exceptions.eanconectionError: : Failed to establish a new conmection: [Errno 101] Network is unreachable +raise NewConnectionError(urllib3.exceptions.eanconectionError: : Failed to establish a new conmection: [Errno 101] Network is unreachable ``` - 解决办法 @@ -605,12 +595,17 @@ export HF_ENDPOINT=https://hf-mirror.com ### 2. 如何在 RAG 容器中调用获取问答结果的接口? - 请先进入到 RAG 对应 Pod - ```bash -curl -k -X POST "http://localhost:8005/kb/get_answer" -H "Content-Type: application/json" -d '{ \ - "question": "", \ - "kb_sn": "default_test", \ - "fetch_source": true }' +kubectl exec -it ${rag_pod_name} -n euler-copilot -- bash +``` +```bash +curl -k -X POST "http://localhost:8005/kb/get_answer" \ + -H "Content-Type: application/json" \ + -d '{ + "question": "", + "kb_sn": "default_test", + "fetch_source": true + }' ``` ### 3. 执行 `helm upgrade` 报错? @@ -645,9 +640,10 @@ cat /etc/systemd/system/k3s.service.env ``` ```text -http_proxy="http://172.21.60.51:3128" -https_proxy="http://172.21.60.51:3128" -no_proxy=172.21.31.10 # 代理中剔除本机IP +http_proxy="http://XXX:XXX" +https_proxy="http://XXX:XXX" +# 代理中剔除本机IP +no_proxy=XXX.XXX.XXX.XXX ``` ### 5. GPU环境部署大模型时出现无法流式回复? @@ -655,22 +651,25 @@ no_proxy=172.21.31.10 # 代理中剔除本机IP 在服务执行 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 -}' +curl -X POST 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": 8192 + }' ``` - 解决办法: @@ -679,18 +678,27 @@ curl http://localhost:30000/v1/chat/completions -H "Content-Type: application/ pip install Pydantic=1.10.13 ``` -### 6. 如何部署 sglang? +### 6. sglang如何部署模型? ```bash -# 1. 激活 Conda 环境, 并激活 Python 3.10 的 Conda 环境。假设你的环境名为 `myenv`: +# 1. 激活名为 `myenv` 的 Conda 环境,该环境基于 Python 3.10 创建: conda activate myenv -# 2. 在激活的环境中,安装 sglang[all] 和 flashinfer -pip install sglang[all]==0.3.0 +# 2. 安装 sglang 及其所有依赖项,指定版本为 0.3.0 +pip install "sglang[all]==0.3.0" + +# 3. 从特定索引安装 flashinfer,确保与您的 CUDA 和 PyTorch 版本兼容 pip install flashinfer -i https://flashinfer.ai/whl/cu121/torch2.4/ -# 3. 启动服务器 -python -m sglang.launch_server --served-model-name Qwen2.5-32B --model-path Qwen2.5-32B-Instruct-AWQ --host 0.0.0.0 --port 8001 --api-key sk-12345 --mem-fraction-static 0.5 --tp 8 +# 4. 使用 sglang 启动服务器,配置如下: +python -m sglang.launch_server \ + --served-model-name Qwen2.5-32B \ + --model-path Qwen2.5-32B-Instruct-AWQ \ + --host 0.0.0.0 \ + --port 8001 \ + --api-key "sk-12345" \ + --mem-fraction-static 0.5 \ + --tp 8 ``` - 验证安装 @@ -701,7 +709,6 @@ python -m sglang.launch_server --served-model-name Qwen2.5-32B --model-path Qwen ``` - 注意: - 1. API Key:请确保 `--api-key` 参数中的 API 密钥是正确的 2. 模型路径: 确保 `--model-path` 参数中的路径是正确的,并且模型文件存在于该路径下。 3. CUDA 版本:确保你的系统上安装了 CUDA 12.1 和 PyTorch 2.4,因为 `flashinfer` 包依赖于这些特定版本。 @@ -725,17 +732,15 @@ curl -k -X POST http://$IP:8001/embedding \ wget https://github.com/FiloSottile/mkcert/releases/download/v1.4.4/mkcert-v1.4.4-linux-amd64 # arm64 wget https://github.com/FiloSottile/mkcert/releases/download/v1.4.4/mkcert-v1.4.4-linux-arm64 - # 2. 执行下面的命令生成秘钥 mkcert -install # mkcert 可直接接域名或 IP, 生成证书和秘钥 mkcert example.com - -# 3. 将证书和秘钥拷贝到 /home/euler-copilot-framework_openeuler/deploy/chart_ssl/traefik-secret.yaml 中, 并执行下面命令使其生效。 +# 3. 将证书和秘钥拷贝到 `/home/euler-copilot-framework_openeuler/deploy/chart_ssl/traefik-secret.yaml` 中, 并执行下面命令使其生效。 kubectl apply -f traefik-secret.yaml ``` -### 8. Pod状态由runnning变为pending? +### 9. Pod 状态由 runnning 变为 pending? -在Pod正常运行一段时间后,其状态从“Running”全部转变为 “Pending” 或 “Completed”, -可执行命令`df -h`,查看Pod所在宿主机的存储空间,确保可用空间不低于30%,以保证pod的正常运行。 +在Pod正常运行一段时间后,其状态从 “Running” 全部转变为 “Pending” 或 “Completed”, +可执行命令 `df -h`,查看Pod所在宿主机的存储空间,确保可用空间不低于30%,以保证pod的正常运行。 \ No newline at end of file diff --git "a/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/\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/\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 83186358b..0892fd0c0 100644 --- "a/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/\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/\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" @@ -4,7 +4,7 @@ openEuler Copilot System 是一款智能问答工具,使用 openEuler Copilot System 可以解决操作系统知识获取的便捷性,并且为OS领域模型赋能开发者及运维人员。作为获取操作系统知识,使能操作系统生产力工具 (如 A-Ops / A-Tune / x2openEuler / EulerMaker / EulerDevOps / StratoVirt / iSulad 等),颠覆传统命令交付方式,由传统命令交付方式向自然语义进化,并结合智能体任务规划能力,降低开发、使用操作系统特性的门槛。 -### 组件介绍 +### 主要组件介绍 | 组件 | 端口 | 说明 | | ----------------------------- | --------------- | -------------------- | @@ -37,11 +37,11 @@ openEuler Copilot System 是一款智能问答工具,使用 openEuler Copilot | RAM | >= 64GB | | 存储 | >= 500 GB | | GPU | Tesla V100 16GB,4张 | -| NPU | 910ProB、910B | +| NPU | 支持大模型推理的NPU卡或服务器 | 注意: -1. 若无 GPU 或 NPU 资源,建议通过调用 OpenAI 接口的方式来实现功能。(接口样例: 参考链接:[API-KEY的获取与配置](https://help.aliyun.com/zh/dashscope/developer-reference/acquisition-and-configuration-of-api-key?spm=a2c4g.11186623.0.0.30e7694eaaxxGa)) +1. 若无 GPU 或 NPU 资源,建议通过调用 OpenAI 接口的方式来实现功能。 2. 调用第三方 OpenAI 接口的方式不需要安装高版本的 python (>=3.9.9) 3. 英伟达 GPU 对 Docker 的支持必需要新版本 Docker (>= v25.4.0) 4. 如果k8s集群环境,则不需要单独安装k3s,要求version >= 1.28 @@ -143,7 +143,7 @@ cd /home/euler-copilot-framework/deploy/scripts && tree cd deploy/chart/databases ``` - 仅需修改镜像tag为对应架构,其余可不进行修改 + 请根据对应的架构修改镜像标签,并设置数据库密码。 ```bash vim values.yaml @@ -167,7 +167,7 @@ cd /home/euler-copilot-framework/deploy/scripts && tree helm install -n euler-copilot databases . ``` -- 查看 pod 状态 +- 检查 Pod 的状态 ```bash kubectl -n euler-copilot get pods @@ -182,12 +182,10 @@ cd /home/euler-copilot-framework/deploy/scripts && tree - 若服务器之前部署过 mysql,则可预先清除下 pvc,再部署 databases。 ```bash - # 获取pvc kubectl -n euler-copilot get pvc ``` ```bash - # 删除pvc kubectl -n euler-copilot delete pvc mysql-pvc ``` @@ -207,9 +205,8 @@ cd /home/euler-copilot-framework/deploy/scripts && tree - 注意: 1. authHub 需要域名,可预先申请域名或在 'C:\Windows\System32\drivers\etc\hosts' 下配置。 - authhub和euler-copilot必须是同一个根域名的两个子域名, 例如authhub.test.com和 - eulercopilot.test.com - 2. 修改tag为对应架构的tag; + authhub 服务和 euler-copilot 服务必须是同一个根域名的两个子域名, 例如 `authhub.test.com` 和 `eulercopilot.test.com` + 2. 根据对应的架构修改镜像标签,并填写数据库密码。 - 安装 AuthHub @@ -236,7 +233,7 @@ cd /home/euler-copilot-framework/deploy/scripts && tree - 登录 AuthHub - AuthHub 的域名以 为例,浏览器输入`https://authhub.test.com`, 登录界面如下图所示: + AuthHub 的域名以 为例,浏览器输入 `https://authhub.test.com`, 登录界面如下图所示: ![部署图](./pictures/authhub登录界面.png) @@ -266,11 +263,11 @@ cd /home/euler-copilot-framework/deploy/scripts && tree ``` - 注意: - 1. 查看系统架构,并修改values.yaml中的tag; - 2. 修改values.yaml中的globals的domain为EulerCopilot域名,并配置大模型的相关信息 - 3. 手动创建`docs_dir`、`plugin_dir`、`models`三个文件挂载目录 - 4. 修改values.yaml中framework章节的web_url和oidc设置 - 5. 如果部署插件,则需要配置用于Function Call的模型,此时必须有GPU环境用于部署sglang,可参考附件 + 1. 根据对应的架构修改镜像标签,并填写数据库密码; + 2. 修改 values.yaml 中的 globals 的 domain 为 EulerCopilot 域名,并配置大模型llm的相关信息,如果有需要部署插件; + 3. 手动创建 `docs_dir`、`plugin_dir`、`models` 三个文件挂载目录; + 4. 修改 values.yaml 中 framework 章节的 web_url 和 oidc 设置; + 5. 如果部署插件,则需要配置用于 Function Call 的模型,此时必须有GPU环境用于部署 sglang,可参考附件。 - 安装 openEuler Copilot System @@ -300,9 +297,6 @@ cd /home/euler-copilot-framework/deploy/scripts && tree ``` 注意:如果 Pod 状态出现失败,建议按照以下步骤进行排查 - -注意:如果 Pod 状态出现失败,建议按照以下步骤进行排查 - 1. 查看 Kubernetes 集群的事件 (Events),以获取更多关于 Pod 失败的上下文信息 ```bash @@ -354,18 +348,7 @@ cd /home/euler-copilot-framework/deploy/scripts && tree ## 构建专有领域智能问答 -### 1. 构建 openEuler 专业知识领域的智能问答 - - 1. 修改 values.yaml 的 pg 的镜像仓为 `pg-data` - 2. 修改 values.yaml 的 rag 部分的字段 `knowledgebaseID: openEuler_2bb3029f` - 3. 将 `vim deploy/chart/databases/templates/pgsql/pgsql-deployment.yaml` 的 volumes 相关字段注释 - 4. 进入 `cd deploy/chart/databases`,执行更新服务 `helm upgrade -n euler-copilot databases .` - 5. 进入 `cd deploy/chart/euler_copilot`,执行更新服务 `helm upgrade -n euler-copilot service .` - 6. 进入网页端进行 openEuler 专业知识领域的问答 - -### 2. 构建项目专属知识领域智能问答 - -详细信息请参考文档 [本地资产库构建指南](本地资产库构建指南.md) +详细信息请参考文档 [本地资产库构建指南](./本地资产库构建指南.md) ## 附录 @@ -474,8 +457,7 @@ NPU 环境部署可参考链接 [MindIE安装指南](https://www.hiascend.com/do ```text File "/usr/lib/python3.9/site-packages/urllib3/connection.py", line 186, in _new_conn -raise NewConnectionError( -urllib3.exceptions.eanconectionError: : Failed to establish a new conmection: [Errno 101] Network is unreachable +raise NewConnectionError(urllib3.exceptions.eanconectionError: : Failed to establish a new conmection: [Errno 101] Network is unreachable ``` - 解决办法 @@ -491,12 +473,17 @@ export HF_ENDPOINT=https://hf-mirror.com ### 2. 如何在 RAG 容器中调用获取问答结果的接口? - 请先进入到 RAG 对应 Pod - ```bash -curl -k -X POST "http://localhost:8005/kb/get_answer" -H "Content-Type: application/json" -d '{ \ - "question": "", \ - "kb_sn": "default_test", \ - "fetch_source": true }' +kubectl exec -it ${rag_pod_name} -n euler-copilot -- bash +``` +```bash +curl -k -X POST "http://localhost:8005/kb/get_answer" \ + -H "Content-Type: application/json" \ + -d '{ + "question": "", + "kb_sn": "default_test", + "fetch_source": true + }' ``` ### 3. 执行 `helm upgrade` 报错? @@ -531,9 +518,10 @@ cat /etc/systemd/system/k3s.service.env ``` ```text -http_proxy="http://172.21.60.51:3128" -https_proxy="http://172.21.60.51:3128" -no_proxy=172.21.31.10 # 代理中剔除本机IP +http_proxy="http://XXX:XXX" +https_proxy="http://XXX:XXX" +# 代理中剔除本机IP +no_proxy=XXX.XXX.XXX.XXX ``` ### 5. GPU环境部署大模型时出现无法流式回复? @@ -541,22 +529,25 @@ no_proxy=172.21.31.10 # 代理中剔除本机IP 在服务执行 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 -}' +curl -X POST 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": 8192 + }' ``` - 解决办法: @@ -565,18 +556,27 @@ curl http://localhost:30000/v1/chat/completions -H "Content-Type: application/ pip install Pydantic=1.10.13 ``` -### 6. 如何部署 sglang? +### 6. sglang如何部署模型? ```bash -# 1. 激活 Conda 环境, 并激活 Python 3.10 的 Conda 环境。假设你的环境名为 `myenv`: +# 1. 激活名为 `myenv` 的 Conda 环境,该环境基于 Python 3.10 创建: conda activate myenv -# 2. 在激活的环境中,安装 sglang[all] 和 flashinfer -pip install sglang[all]==0.3.0 +# 2. 安装 sglang 及其所有依赖项,指定版本为 0.3.0 +pip install "sglang[all]==0.3.0" + +# 3. 从特定索引安装 flashinfer,确保与您的 CUDA 和 PyTorch 版本兼容 pip install flashinfer -i https://flashinfer.ai/whl/cu121/torch2.4/ -# 3. 启动服务器 -python -m sglang.launch_server --served-model-name Qwen2.5-32B --model-path Qwen2.5-32B-Instruct-AWQ --host 0.0.0.0 --port 8001 --api-key sk-12345 --mem-fraction-static 0.5 --tp 8 +# 4. 使用 sglang 启动服务器,配置如下: +python -m sglang.launch_server \ + --served-model-name Qwen2.5-32B \ + --model-path Qwen2.5-32B-Instruct-AWQ \ + --host 0.0.0.0 \ + --port 8001 \ + --api-key "sk-12345" \ + --mem-fraction-static 0.5 \ + --tp 8 ``` - 验证安装 @@ -587,7 +587,6 @@ python -m sglang.launch_server --served-model-name Qwen2.5-32B --model-path Qwen ``` - 注意: - 1. API Key:请确保 `--api-key` 参数中的 API 密钥是正确的 2. 模型路径: 确保 `--model-path` 参数中的路径是正确的,并且模型文件存在于该路径下。 3. CUDA 版本:确保你的系统上安装了 CUDA 12.1 和 PyTorch 2.4,因为 `flashinfer` 包依赖于这些特定版本。 @@ -619,7 +618,7 @@ mkcert example.com kubectl apply -f traefik-secret.yaml ``` -### 8. Pod状态由runnning变为pending? +### 9. Pod 状态由 runnning 变为 pending ? -在Pod正常运行一段时间后,其状态从“Running”全部转变为 “Pending” 或 “Completed”, -可执行命令`df -h`,查看Pod所在宿主机的存储空间,确保可用空间不低于30%,以保证pod的正常运行。 +在 Pod 正常运行一段时间后,其状态从 “Running” 全部转变为 “Pending” 或 “Completed”, +可执行命令 `df -h`,查看 Pod 所在宿主机的存储空间,确保可用空间不低于30%,以保证pod的正常运行。 -- Gitee