1.5. 将您的 AI 模型打包到 OCI 镜像中
您可以将模型打包成 OCI 镜像,并使用 ModelCar 方法来帮助设置离线环境。使用 ModelCar 方法时,您的模型可以像任何其他容器镜像一样嵌入。
如果您已经有 S3 兼容对象存储或配置的持久性卷声明,您可以将 AI 模型上传到这些资源,但只有 ModelCar 方法经过测试并被支持。
先决条件
- 有对机器的 root 用户访问权限。
-
已安装 OpenShift CLI (
oc
)。 - podman 已安装。
- 您的模型可以使用。
您可以了解以下关于构建适合 vLLM 模型服务器的 OCI 镜像的"如何构建 ModelCar 容器"部分中的概念,并在 OpenShift AI 中构建和部署 ModelCar 容器。
注意确切的目录结构取决于模型服务器。以下示例使用一个与 OpenVINO Model Server OVMS 兼容的 ResNet-50 模型的 Containerfile。OVMS 通常不需要额外的硬件加速器。
流程
使用兼容模型和模型服务器准备 Containerfile。
带有与 OVMS 搭配使用的 ResNet-50 模型的 Containerfile 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将
IMAGE_REF
环境变量设置为简化您的过程:IMAGE_REF=<ovms-resnet50:test>
$ IMAGE_REF=<ovms-resnet50:test>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
<ovms-resnet50:test
> 替换为镜像引用的名称。在本例中,使用 <repo:tag&
gt; 格式。您的镜像引用名称特定于您的用例。
运行以下命令来构建 Containerfile:
sudo podman build -t $IMAGE_REF
$ sudo podman build -t $IMAGE_REF
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 由于 CRI-O 和 Podman 共享存储,需要使用
sudo
使镜像成为根容器存储的一部分,并可供 MicroShift 使用。
输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:运行以下命令将 Containerfile 推送到 registry 中:
sudo podman push $IMAGE_REF
$ sudo podman push $IMAGE_REF
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要对于离线用例,请包括除
latest
以外的标签。如果使用latest
标签,则获取和设置模型的容器将被配置为imagePullPolicy:
参数,并且忽略本地镜像。如果您使用除
latest
之外的任何其他标签,则imagePullPolicy:
参数将设置为IfNotPresent
。
验证
运行以下命令验证镜像是否存在:
sudo podman images ovms-resnet50
$ sudo podman images ovms-resnet50
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
REPOSITORY TAG IMAGE ID CREATED SIZE localhost/ovms-resnet50 test 375b265c1c4b 3 minutes ago 136 MB
REPOSITORY TAG IMAGE ID CREATED SIZE localhost/ovms-resnet50 test 375b265c1c4b 3 minutes ago 136 MB
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
后续步骤
- 配置模型运行时。
- 确认您的 AI 模型已准备好推断。
- 向模型服务器发出请求。