使用 KServe Modelcar 进行模型存储
目录
概述使用 OCI Containers 进行模型存储的优势先决条件将模型打包为 OCI Image选项 1:使用 Busybox Base Image(Alauda AI 推荐)选项 2:使用 UBI Micro Base Image(Red Hat 推荐)构建并推送模型镜像从 OCI Image 部署模型部署先决条件创建 InferenceService应用 InferenceService验证部署最佳实践故障排查常见问题结论概述
KServe Modelcar,也称为基于 OCI container 的模型存储,是一种在云原生环境中部署模型的强大方式。通过将模型打包为 OCI container 镜像,您可以利用 container runtime 的能力,实现更快的启动时间和更高效的资源利用率。
使用 OCI Containers 进行模型存储的优势
- 缩短启动时间:避免多次下载同一个模型
- 降低磁盘空间占用:减少本地下载的模型数量
- 提升模型性能:允许预先拉取镜像以加快加载速度
- 支持离线环境:非常适合互联网访问受限的环境
- 简化模型分发:使用企业内部 registry,如 Quay 或 Harbor
先决条件
- 已安装并运行 Alauda AI platform
- 已准备好可用于打包的模型文件
- 对 container registry(例如 Harbor、Quay)具有写入/推送权限
- 本地机器上已安装 Podman 或 nerdctl
将模型打包为 OCI Image
选项 1:使用 Busybox Base Image(Alauda AI 推荐)
创建一个包含以下内容的 Containerfile:
选项 2:使用 UBI Micro Base Image(Red Hat 推荐)
创建一个包含以下内容的 Containerfile:
构建并推送模型镜像
-
创建一个用于存储模型和支持文件的临时目录:
-
创建一个 models 文件夹(对于 OpenVINO 等框架,也可以选择创建版本子目录):
-
将模型文件复制到相应目录:
- 对于大多数框架:
cp -r your-model-folder/* models/ - 对于 OpenVINO:
cp -r your-model-folder/* models/1/
- 对于大多数框架:
-
构建 OCI container 镜像:
-
将镜像推送到您的 container registry:
注意 如果您的 repository 是私有的,请确保在上传 container image 之前已通过 registry 身份验证。
从 OCI Image 部署模型
部署先决条件
除上述通用先决条件外,无需其他额外先决条件。
创建 InferenceService
创建一个包含以下内容的 InferenceService YAML 文件:
- 将
Qwen2.5-0.5B-Instruct替换为您的实际模型名称。 aml.cpaas.io/runtime-type: vllm指定了代码运行时类型。有关自定义推理运行时的更多信息,请参见 扩展推理运行时。- 将
demo-space替换为一个已存在的 namespace,或者先使用kubectl create namespace demo-space创建它。 - 将
aml-vllm-0.11.2-cpu替换为平台中已安装的运行时名称(对应一个 ClusterServingRuntime CRD instance)。 storageUri指定模型存储所在的带标签 OCI image URI。请使用完整的 registry URL。例如:storageUri: oci://docker.io/alaudapublic/models-qwen2.5:v1
应用 InferenceService
使用 kubectl 应用 InferenceService 配置:
验证部署
检查 InferenceService 的状态:
部署成功后,您应看到服务处于 Ready 状态。
如果服务启动失败或一直处于未就绪状态,可以通过以下方式进行排查:
- 检查 InferenceService 事件以获取详细错误信息:
- 检查 predictor pod 日志:
- 验证模型镜像是否可以在集群本地成功拉取:
最佳实践
- 模型版本管理:在 container image 中使用 tag 对模型进行版本管理
- 镜像大小优化:使用轻量级 base image,并且仅包含必要的模型文件
- Registry 管理:使用具备适当访问控制的私有 registry
- 安全性:遵循 container 安全最佳实践,包括定期漏洞扫描
- 缓存:利用 container registry 缓存来提升拉取速度
故障排查
常见问题
- 权限错误:确保镜像中的模型文件具有正确的权限
- Ascend 910 vLLM-ascend 权限模式:对于 Huawei Ascend 910 的
vLLM-ascend部署,尤其是单节点多卡服务,请参见 Ascend 910 的 Modelcar 权限模式。 - Registry 身份验证:验证集群是否能够访问 container registry
结论
使用 KServe Modelcar(基于 OCI container 的模型存储)可以在 Alauda AI platform 中提供一种高效的模型部署方式。按照本指南中的步骤,您可以将模型打包为 OCI image,并以更快的启动时间和更高的资源利用率进行部署。