如何在离线环境中运行OPEA实例

openlab_96bf3613 更新于 2天前

开放平台企业AI架构OPEA是一个开源项目,旨在帮助开发者构建开放、多提供商、稳健且可组合的生成式AI解决方案,充分利用生态系统中的最新创新技术。OPEA平台为开发者提供了生成式AI系统的模块化构建框架、包括LLM、数据存储和提示引擎等组件,以及端到端工作流的架构蓝图,简化了AI部署难度。

许多企业中的网络运行环境,由于安全和保密的需求,都是与公网Internet隔离的(air gapped)。在这样的环境中运行OPEA,需要经行特殊的额外配置。本文以即将发布的OPEA v1.3中的CodeGen为例,介绍如何在企业与公网隔离的air-gapped网络环境中,运行OPEA v1.3的实例。

OPEA CodeGen介绍

OPEA CodeGen实例1展示了如何利用大预言AI模型的能力和企业内部的私有的代码文档资料,根据用户的自然语言描述,自动更精确的产生符合企业内部应用开发的代码。



企业内部的私有代码文档,可以通过data preparation服务事先保存到向量数据库(VectorDB) 中。当用户通过UI或者CodeGen Gateway,用自然语言描述需求,CodeGen实例会利用大语言模型的检索增强生成(RAG)技术,从向量数据库中获得与用户需求相关的数据,通过大预言模型产生相应的代码。

环境准备

假设用户的离线环境中已经部署了一个单节点的基于baremetal的Kubernetes环境(可以使用minikube2安装单节点Kubernetes环境),并且已经安装helm3和nerdctl4工具。

假设我们使用helm工具来部署OPEA CodeGen实例。

首先在一台可以联网的机器上(准备机器)运行以下命令获得CodeGen想对应的helm chart,并且拷贝到离线K8s机器上待用:



离线环境中运行OPEA的数据准备

在离线环境中云心OPEA实例,需要从以下3个方面准备数据:

OPEA实例中所用到的微服务容器镜像
在准备机器上运行以下命令可以获取CodeGen实例所需要用到的所有容器镜像:



在准备机器上运行以下命令下载相关镜像:



对于这些容器镜像,有两种方案导入离线环境中的K8s cluster中:

方案1:适用于单节点K8s环境

Step 1: 把已下载的容器镜像打包为本地文件,在准备机器上运行以下命令



Step 2: 把本地镜像打包文件拷贝到离线K8s机器上,在准备机器上运行以下命令



Step 3: 导入镜像,在离线K8s机器上运行以下命令:



方案2:适用于多节点K8s环境

设置本地的容器镜像registry服务,把已下载的容器镜像存入本地容器镜像registry服务。具体步骤可以参见网上其他教程,本文由于篇幅限制略去具体步骤。

OPEA实例中所用到的AI模型

OPEA CodeGen实例中所用到的AI 模型如下表所示:



需要对于每个模型,需要下载并且拷贝到离线K8s机器上,在准备机器上运行以下命令:



OPEA实例中所用到的其他数据
OPEA中dataprep和retriever还用到了其他额外的在线数据nltk,需要事先下载。在准备机器上运行以下命令:



离线环境中部署OPEA CodeGen实例
首先在离线K8s机器上准备helm的配置文件:



其次在离线K8s机器上准备运行以下命令部署OPEA CodeGen



在离线K8s机器上检查所有CodeGen 相关的pod都是Ready/Running 状态:



最后,用户可以参考此文档5验证CodeGen的各个service。

改进OPEA微服务以支持离线运行环境
OEPA社区欢迎各位开发者在关于离线环境运行的RFC6下留下反馈意见,或者提出关于离线运行的新需求。

参考资料:

1、https://github.com/opea-project/GenAIExamples/tree/main/CodeGen
2、https://minikube.sigs.k8s.io/doc****r/>3、https://helm.sh/docs/helm/helm_install/
4、https://github.com/containerd/nerdctl
5、https://github.com/opea-project/GenAIInfra/blob/v1.3rc/helm-charts/codegen/README.md
6、https://github.com/opea-project/docs/pull/364

0个评论