1.2. 在 OCI 镜像中存储模型


您可以在 OCI 镜像中存储模型。以下流程使用 ONNX 格式存储 mobileNet v2-7 模型的示例。

先决条件

  • 您有 ONNX 格式的模型。此流程中的示例使用 ONNX 格式的 mobileNet v2-7 模型。
  • 已安装 Podman 工具。

流程

  1. 在本地机器的终端窗口中,创建一个临时目录来存储模型以及创建 OCI 镜像所需的支持文件:

    cd $(mktemp -d)
    Copy to Clipboard Toggle word wrap
  2. 在临时目录中创建一个 models 文件夹:

    mkdir -p models/1
    Copy to Clipboard Toggle word wrap
    注意

    这个示例命令指定子目录 1,因为 OpenVINO 需要编号的子目录进行建模。如果不使用 OpenVINO,则不需要创建 1 子目录来使用 OCI 容器镜像。

  3. 下载模型和支持文件:

    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 Toggle word wrap
  4. 使用 tree 命令确认模型文件按预期位于目录结构中:

    tree
    Copy to Clipboard Toggle word wrap

    tree 命令应该返回类似以下示例的目录结构:

    .
    ├── Containerfile
    └── models
        └── 1
            └── mobilenetv2-7.onnx
    Copy to Clipboard Toggle word wrap
  5. 创建名为 Containerfile 的 Docker 文件:

    注意
    • 指定提供 shell 的基础镜像。在以下示例中,ubi9-micro 是基础镜像。您不能指定不提供 shell 的空镜像,如 scratch,因为 KServe 使用 shell 来确保模型文件可以被模型服务器访问。
    • 更改复制的模型文件的所有权,并为 root 组授予读取权限,以确保模型服务器可以访问该文件。OpenShift 使用随机用户 ID 和 root 组 ID 运行容器。
    FROM registry.access.redhat.com/ubi9/ubi-micro:latest
    COPY --chown=0:0 models /models
    RUN chmod -R a=rX /models
    
    # nobody user
    USER 65534
    Copy to Clipboard Toggle word wrap
  6. 使用 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>
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat