通过脚本一键式部署使用
用户在K8s集群中部署多个相关联的推理任务,手动编写和维护大量的K8s YAML文件效率低下且容易出错。为此,MindCluster提供一个自动化脚本参考设计,替代繁琐的手动操作。用户只需提供基本的应用信息(如应用名、镜像版本、副本数等),脚本即可自动生成所有必要的、符合规范的K8s YAML文件,并直接部署到指定集群。同时,MindCluster提供一种简单的方式(如指定同一个应用名)一键删除所有相关资源。
当前脚本仅支持P/D分离部署。
前提条件
- MindCluster、AIBrix相关组件安装完成。
- 环境已安装Python,并可联网下载依赖包。
- 存在KubeConfig文件,可以与K8s集群正常通信。
操作步骤
- 从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 k8s-deploy-tool && source k8s-deploy-tool/bin/activate
根据环境实际情况选择使用Python或Python3。
- 安装依赖。
pip install -r requirements.txt
- (可选)修改实例启动脚本。用户可根据模型实际情况进行修改。
- 打开“example/scripts/start_server.sh”文件。
vi example/scripts/start_server.sh
- 按“i”进入编辑模式,根据模型实际情况,修改vLLM进程启动命令,例如max-model-len、max-num-batched-tokens等。
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 打开“example/scripts/start_server.sh”文件。
- (可选)复制启动脚本到主机其他目录或集群其他节点。如果用户环境为单机环境,可以跳过该步骤。如果用户环境包含共享存储,也可以将脚本文件复制到共享存储,并将共享存储挂载给推理服务。
- (可选)编辑YAML模板,配置模型、脚本挂载路径。用户可以根据模型和脚本实际路径配置YAML模板。
- 打开“src/templates/aibrix/stormservice.yaml.j2”文件。
vi src/templates/aibrix/stormservice.yaml.j2
- 按“i”进入编辑模式,修改容器中模型存放目录。
volumeMounts: - name: model mountPath: /mnt/models volumes: #修改挂载的volume - name: model #设置为模型实际存放目录 hostPath: path: /mnt/models - name: scripts #设置为启动脚本实际存放目录 hostPath: path: /scripts
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 打开“src/templates/aibrix/stormservice.yaml.j2”文件。
- 编辑用户配置文件“config/stormservice-config.yaml”。
- 打开“config/stormservice-config.yaml”文件。
vi config/stormservice-config.yaml
- 按“i”进入编辑模式,按实际情况修改文件中的字段。
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- “dp_size”需要为“podGroupSize”的整数倍。
- 当“dp_size”设置为“1”时,“distributed_dp”只能为“false”,大于“1”时才能设置为“true”。
- 打开“config/stormservice-config.yaml”文件。
- (可选)创建任务名称空间,vllm-test为“config/stormservice-config.yaml”设置的“app_namespace”。如果“app_namespace”为“default”或未设置,可以不创建名称空间。
kubectl create ns vllm-test
- 设置服务框架类型为aibrix。
export SERVING_FRAMEWORK=aibrix
- 部署推理任务。
python main.py deploy -c config/stormservice-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:应用名称,必填。
- -ns, --namespace:应用命名空间,选填。默认值为"default" 。
- -k, --kubeconfig:KubeConfig文件路径,选填。默认值为~/.kube/config。
用户也可以使用kubectl命令行工具查看任务运行状态。
- 新建终端窗口,在当前K8s集群的节点中执行以下命令,访问推理服务。若请求成功返回,表示推理服务部署成功。
curl http://<routing-podip>:8080/v1/completions \ -H "Content-Type: application/json" \ -d '{ "model": "<模型名称>", "prompt": "Who are you?", "max_tokens": 10, "temperature": 0 }'
<routing-podip>为Routing Pod的IP地址,可以通过以下命令查看。
kubectl get pod -A -o wide
- (可选)删除推理任务。若用户需要删除任务,可以执行该步骤。
python main.py delete -n my-test -ns default
参数说明如下:
- -n, --app-name:应用名称,必填。
- -ns, --namespace:应用命名空间,选填。默认值为"default" 。
- -k, --kubeconfig:KubeConfig文件路径,选填。默认值为~/.kube/config。
父主题: 部署vLLM推理任务