通过脚本一键式部署使用
用户在K8s集群中部署多个相关联的推理任务,手动编写和维护大量的K8s YAML文件效率低下且容易出错。为此,MindCluster提供一个自动化脚本参考设计,替代繁琐的手动操作。用户只需提供基本的应用信息(如应用名、镜像版本、副本数等),脚本即可自动生成所有必要的、符合规范的K8s YAML文件,并直接部署到指定集群。同时,MindCluster提供一种简单的方式(如指定同一个应用名)一键删除所有相关资源。
当前脚本仅支持P/D分离部署,可以为用户同时拉起多个P/D实例、Router以及Memfabric_Store服务端。
前提条件
- 环境已安装Python,并可联网下载依赖包。
- 存在KubeConfig文件,可以与K8s集群正常通信。
- 已部署MindCluster和OME。
- 已部署任务所需的Base Model和Serving Runtime。
操作步骤
- 从mindcluster-deploy仓库获取源码,进入“k8s-deploy-tool”目录。
git clone https://gitcode.com/Ascend/mindcluster-deploy.git && cd mindcluster-deploy/k8s-deploy-tool
- (可选)创建并激活Python虚拟环境。该操作可以使得不同Python项目使用不同版本的库而互不干扰。
python -m venv venv && source venv/bin/activate
根据环境实际情况使用Python或Python3。
- 安装依赖。
pip install -r requirements.txt
- (可选)部署示例Serving Runtime。该示例用作测试使用,用户可以根据任务实际情况部署对应的Serving Runtime。
kubectl apply -f example/ome-runtimes/
- 编辑用户配置文件“config/isvc-config.yaml”。
- 打开“config/isvc-config.yaml”文件。
vi config/isvc-config.yaml
- 按“i”进入编辑模式,按实际情况修改文件中的字段。
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 打开“config/isvc-config.yaml”文件。
- (可选)创建任务名称空间。"xxx"为“config/isvc-config.yaml”设置的“app_namespace”。如果“app_namespace”为“default”或未设置,可以不创建名称空间。
kubectl create ns xxx
- (可选)设置服务框架类型。当前支持ome和aibrix,若不设置,默认使用ome。
export SERVING_FRAMEWORK=ome
- 部署推理任务。
python main.py deploy -c config/isvc-config.yaml
根据环境实际情况使用Python或Python3。参数说明如下:
- -c, --config:配置文件路径,必填。
- -k, --kubeconfig:KubeConfig文件路径,选填。默认值为~/.kube/config。
- --dry-run:试运行(不实际部署,展示生成的YAML),选填。
- 查看任务运行状态。
python main.py status -n my-test -ns default
参数说明如下:
- -n, --app-name:应用名称,必填。my-test为“config/isvc-config.yaml”中设置的“app_name”。
- -ns, --namespace:应用命名空间,选填。默认值为"default" 。
- -k, --kubeconfig:KubeConfig文件路径,选填。默认值为~/.kube/config。
用户也可以使用kubectl命令行工具查看任务运行状态。
- 新建终端窗口,在当前K8s集群的节点中执行以下命令,访问推理服务。若请求成功返回,表示推理服务部署成功。
curl --location 'http://<router-podip>:<router-port>/generate' --header 'Content-Type: application/json' --data '{ "text": "Who are you", "sampling_params": { "temperature": 0, "max_new_tokens": 20 }, "stream": true }'- <router-podip>为Router Pod的IP地址,可以通过以下命令查看。
kubectl get pod -A -o wide
- <router-port>为Serving Runtime中Router设置的服务端口。
- <router-podip>为Router Pod的IP地址,可以通过以下命令查看。
- (可选)删除推理任务。若用户需要删除任务,可以执行该步骤。
python main.py delete -n my-test
根据环境实际情况使用Python或Python3。参数说明如下:
- -n, --app-name:应用名称,必填。
- -ns, --namespace:应用命名空间,选填。默认值为"default" 。
- -k, --kubeconfig:KubeConfig文件路径,选填。默认值为~/.kube/config。
父主题: 部署基于OME的SGLang推理任务