1.2. 在 OCI 镜像中存储模型
您可以在 OCI 镜像中存储模型。以下流程使用 ONNX 格式存储 mobileNet v2-7 模型的示例。
先决条件
- 您有 ONNX 格式的模型。此流程中的示例使用 ONNX 格式的 mobileNet v2-7 模型。
- 已安装 Podman 工具。
流程
在本地机器的终端窗口中,创建一个临时目录来存储模型以及创建 OCI 镜像所需的支持文件:
cd $(mktemp -d)
cd $(mktemp -d)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在临时目录中创建一个
models文件夹:mkdir -p models/1
mkdir -p models/1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意这个示例命令指定子目录
1,因为 OpenVINO 需要编号的子目录进行建模。如果不使用 OpenVINO,则不需要创建1子目录来使用 OCI 容器镜像。下载模型和支持文件:
DOWNLOAD_URL=https://github.com/onnx/models/raw/main/validated/vision/classification/mobilenet/model/mobilenetv2-7.onnx curl -L $DOWNLOAD_URL -O --output-dir models/1/
DOWNLOAD_URL=https://github.com/onnx/models/raw/main/validated/vision/classification/mobilenet/model/mobilenetv2-7.onnx curl -L $DOWNLOAD_URL -O --output-dir models/1/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
tree命令确认模型文件按预期位于目录结构中:tree
treeCopy to Clipboard Copied! Toggle word wrap Toggle overflow tree命令应该返回类似以下示例的目录结构:. ├── Containerfile └── models └── 1 └── mobilenetv2-7.onnx. ├── Containerfile └── models └── 1 └── mobilenetv2-7.onnxCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建名为
Containerfile的 Docker 文件:注意-
指定提供 shell 的基础镜像。在以下示例中,
ubi9-micro是基础镜像。您不能指定不提供 shell 的空镜像,如scratch,因为 KServe 使用 shell 来确保模型文件可以被模型服务器访问。 - 更改复制的模型文件的所有权,并为 root 组授予读取权限,以确保模型服务器可以访问该文件。OpenShift 使用随机用户 ID 和 root 组 ID 运行容器。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
指定提供 shell 的基础镜像。在以下示例中,
使用
podman build命令创建 OCI 容器镜像,并将其上传到 registry。以下命令使用 Quay 作为 registry。注意如果您的存储库是私有的,请确保已向 registry 进行身份验证,然后再上传容器镜像。
podman build --format=oci -t quay.io/<user_name>/<repository_name>:<tag_name> . podman push quay.io/<user_name>/<repository_name>:<tag_name>
podman build --format=oci -t quay.io/<user_name>/<repository_name>:<tag_name> . podman push quay.io/<user_name>/<repository_name>:<tag_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow