ACK托管集群Pro版提供了测试环境和生产环境部署方案,在无需管理底层硬件与依赖的前提下,快速验证大模型的推理能力。解决开发者在本地验证大语言模型时面临的GPU资源不足和环境配置复杂等问题。
适用范围
集群版本为1.22及以上,GPU节点显存需为16GB及以上的ACK托管集群Pro版。
设置NVIDIA驱动为535及以上版本,本示例为GPU节点池添加标签
ack.aliyun.com/nvidia-driver-version,驱动版本为550.144.03。
测试环境部署
使用Arena快速部署qwen/Qwen1.5-4B-Chat,适用于测试场景,耗时约需15分钟。
安装Arena客户端。
通过Arena部署一个自定义类型的服务,并通过
--image参数指定用于部署服务的容器镜像。更多参数说明,请参见部署命令参数说明。由于ModelScope模型文件将下载至容器内,请确保GPU节点具备至少30GB的可用磁盘空间。
arena serve custom \ --name=modelscope \ --version=v1 \ --gpus=1 \ --replicas=1 \ --restful-port=8000 \ --readiness-probe-action="tcpSocket" \ --readiness-probe-action-option="port: 8000" \ --readiness-probe-option="initialDelaySeconds: 30" \ --readiness-probe-option="periodSeconds: 30" \ --image=kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/quick-deploy-llm:v1 \ "MODEL_ID=qwen/Qwen1.5-4B-Chat python3 server.py"以下输出表明与推理服务
modelscope-v1相关的Kubernetes资源已成功创建:service/modelscope-v1 created deployment.apps/modelscope-v1-custom-serving created INFO[0002] The Job modelscope has been submitted successfully INFO[0002] You can run `arena serve get modelscope --type custom-serving -n default` to check the job status查看推理服务的详细信息。
模型下载需要约10分钟,期间Pod状态显示为ContainerCreating。
arena serve get modelscope输出Pod为Running状态,表明
modelscope推理服务已就绪并正常运行。
生产环境部署
对于生产级部署场景,推荐采用OSS静态存储卷预加载模型的方式,避免每次Pod启动时重复下载大模型文件(超过10GB),从而显著缩短冷启动时间、降低外网带宽消耗,并提升服务稳定性。
步骤一:下载模型文件
下载模型文件到本地。
安装Git、Git LFS(Large File Support)插件。
macOS
安装Git。
官方维护的 macOS Git 安装程序可以在 Git 官方网站下载。
brew install git安装Git LFS(Large File Support)插件拉取大文件内容。
brew install git-lfs
Windows
安装Git。
可在Git 官方网站下载合适版本并安装。
安装Git LFS(Large File Support)插件拉取大文件内容。目前lfs已经集成在了Git for Windows 中,直接下载和使用最新版本的Windows Git即可。
Linux
安装Git。
以RedHat系列的Linux系统为例,其余系统安装,请参见Git 官方网站。
yum install git安装Git LFS(Large File Support)插件拉取大文件内容。
yum install git-lfs
下载Qwen1.5-4B-Chat模型。
GIT_LFS_SKIP_SMUDGE=1 git clone https://www.modelscope.cn/qwen/Qwen1.5-4B-Chat.git cd Qwen1.5-4B-Chat git lfs pull
将Qwen1.5-4B-Chat模型文件上传至OSS。
安装并配置ossutil,用于管理OSS资源。
创建Bucket存储空间。
为加快模型拉取速度,建议将Bucket和集群地域保持一致。
ossutil mb oss://<Your-Bucket-Name>在OSS创建名为Qwen1.5-4B-Chat的目录。
ossutil mkdir oss://<Your-Bucket-Name>/Qwen1.5-4B-Chat上传模型文件至OSS。
ossutil cp -r ./Qwen1.5-4B-Chat oss://<Your-Bucket-Name>/Qwen1.5-4B-Chat
配置存储卷PV。
登录容器服务管理控制台,单击目标集群名称,选择。
在存储卷页面,单击创建。在创建存储卷对话框中配置参数。参数配置完成后,单击创建
存储卷类型为
OSS;名称为llm-model;总量为20Gi;访问模式为ReadOnlyMany;访问证书为选择新建保密字典。可选参数为
-o umask=022 -o max_stat_cache_size=0 -o allow_other;Bucket ID为选择Bucket;OSS Path为/Qwen1.5-4B-Chat;访问域名为公网域名。
配置存储声明PVC。
在集群详情页,选择。
在创建存储声明页面中,填写界面参数。
存储声明类型为
OSS;名称为llm-model;分配模式为已有存储卷;已有存储卷为上一步创建的存储卷llm-model;总量为20Gi。
步骤二:部署推理服务
安装Arena客户端。
通过Arena部署一个自定义类型的服务,并通过
--data参数挂载包含模型文件的PVC。更多参数说明,请参见部署命令参数说明。arena serve custom \ --name=modelscope \ --version=v1 \ --gpus=1 \ --replicas=1 \ --restful-port=8000 \ --readiness-probe-action="tcpSocket" \ --readiness-probe-action-option="port: 8000" \ --readiness-probe-option="initialDelaySeconds: 30" \ --readiness-probe-option="periodSeconds: 30" \ --data=llm-model:/Qwen1.5-4B-Chat \ --image=kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/quick-deploy-llm:v1 \ "MODEL_ID=/Qwen1.5-4B-Chat python3 server.py"以下输出表明推理服务已成功提交:
service/modelscope-v1 created deployment.apps/modelscope-v1-custom-serving created INFO[0001] The Job modelscope has been submitted successfully INFO[0001] You can run `arena serve get modelscope --type custom-serving -n default` to check the job status查看推理服务详细信息。
arena serve get modelscope输出Pod为Running状态,表明推理服务已就绪并正常运行。
验证推理服务
为推理服务建立端口转发。
重要请注意kubectl port-forward建立的端口转发不具备生产级别的可靠性、安全性和扩展性,因此仅适用于开发和调试目的,不适合在生产环境使用。更多关于Kubernetes集群内生产可用的网络方案的信息,请参见Ingress管理。
kubectl port-forward svc/modelscope-v1 8000:8000预期输出:
Forwarding from 127.0.0.1:8000 -> 8000 Forwarding from [::1]:8000 -> 8000新建一个终端窗口,向推理服务发送模型推理请求。
curl -X POST http://localhost:8000/generate \ -H "Content-Type: application/json" \ -d '{ "text_input": "什么是人工智能?人工智能是", "parameters": { "stream": false, "temperature": 0.9, "seed": 10 } }'成功调用后,将返回包含模型推理结果的输出:
{"model_name":"/Qwen1.5-4B-Chat","text_output":"什么是人工智能?人工智能是计算机科学的一个分支,它研究如何使计算机具有智能行为。"}
(可选)清理环境
测试完成后,可删除已部署的推理服务以释放资源。
清理已部署的推理服务。
arena serve del modelscope清理已创建的PV和PVC。
kubectl delete pvc llm-model kubectl delete pv llm-model
部署命令参数说明
参数 | 说明 | 示例值 |
| Arena子命令。表示创建一个自定义的模型服务,而不是使用预设的类型(如 | (无) |
| 服务名称。为要部署的服务指定一个唯一的名称。名称将用于后续的管理操作,如查看日志、删除服务等。 |
|
| 服务版本。为服务指定一个版本号,方便进行版本管理和灰度发布等操作。 |
|
| GPU资源。为每个服务实例(Pod)分配的GPU卡数量。如果模型需要GPU进行推理,则必须指定此参数。 |
|
| 副本数量。指定服务的实例(Pod)数量。增加副本数可以提高服务的并发处理能力和可用性。 |
|
| RESTful端口。指定服务对外暴露的RESTful API端口号,用于接收推理请求。 |
|
| 就绪探针类型。设置Kubernetes的就绪探针(Readiness Probe)的检查方式,用于判断容器是否准备好接收流量。 |
|
| 探针类型选项。为上述探针类型提供具体参数。对于 |
|
| 探针其他选项。设置就绪探针的更多行为参数,可以多次使用。示例设置了初始延迟和检查周期。 |
|
| 数据卷挂载。将一个持久化数据卷(PVC)挂载到容器的指定路径。格式为 |
|
| 容器镜像。指定用于部署服务的容器镜像的完整地址,是服务运行环境的核心。 |
|
| 启动命令。指定容器启动后要执行的命令。设置环境变量 |
|
相关文档
如需指定驱动版本,具体操作,请参见通过指定版本号自定义节点GPU驱动版本。
如需在生产环境使用vLLM、Triton等成熟的推理服务框架。详细信息,请参见使用vLLM部署Qwen模型推理服务、使用Triton部署Qwen模型推理服务。