2.12. 使用单模式服务平台部署模型


在单型号服务平台上,每个模型都部署在自己的模型服务器上。这有助于您部署、监控、扩展和维护需要增加资源的大型模型。

重要

如果要使用单一模型服务平台从使用自签名 SSL 证书的 S3 兼容存储中部署模型,您必须在 OpenShift 集群上安装证书颁发机构(CA)捆绑包。如需更多信息,请参阅 在断开连接的环境中 使用证书 (OpenShift AI Self-Managed)或使用 证书 (OpenShift AI Self-Managed )。

2.12.1. 启用单模型服务平台

安装 KServe 后,您可以使用 Red Hat OpenShift AI 仪表板启用 single-model 服务平台。您还可以使用仪表板为平台启用模型运行时。

先决条件

  • 您已以具有 OpenShift AI 管理员特权的用户身份登录到 OpenShift AI。
  • 已安装 KServe。
  • 集群管理员 还没有 编辑 OpenShift AI 仪表板配置,以禁用选择使用 KServe 组件的 single-model serving 平台。如需更多信息,请参阅 Dashboard 配置选项

流程

  1. 启用 single-model 服务平台,如下所示:

    1. 在左侧菜单中,点击 Settings Cluster settings
    2. 找到 Model serving platform 部分。
    3. 要为项目启用单型号服务平台,请选择 Single-model serving 平台 复选框。
    4. Save Changes
  2. 为单模型服务平台启用预安装运行时,如下所示:

    1. 在 OpenShift AI 仪表板的左侧菜单中,点 Settings Serving runtime

      Serving 运行时 页面会显示预安装的运行时以及您添加的任何自定义运行时。

      有关预安装运行时的更多信息,请参阅支持的运行时

    2. 将要使用的运行时设置为 Enabled

      单型号服务平台现在可用于模型部署。

2.12.2. 为单模型服务平台添加自定义模型运行时

模型运行时增加了对指定模型框架和这些框架支持的模型格式的支持。您可以使用 OpenShift AI 中包含的 预安装运行时。如果默认运行时不满足您的需要,您还可以添加自己的自定义运行时。例如,如果 TGIS 运行时不支持 Hugging Face Text Generation Inference (TGI) 支持的模型格式,您可以创建自定义运行时来添加对模型的支持。

作为管理员,您可以使用 OpenShift AI 接口来添加和启用自定义模型运行时。然后,您可以在单模式服务平台上部署模型时选择自定义运行时。

注意

红帽不提供对自定义运行时的支持。您需要确保获得许可来使用您添加的任何自定义运行时,以及正确配置和维护它们。

先决条件

  • 您已以具有 OpenShift AI 管理员特权的用户身份登录到 OpenShift AI。
  • 您已构建自定义运行时,并将镜像添加到容器镜像存储库中,如 Quay

流程

  1. 在 OpenShift AI 仪表板中点 Settings > Serving runtime

    Serving 运行时 页面将打开,并显示已安装和启用的模型服务运行时。

  2. 要添加自定义运行时,请选择以下选项之一:

    • 要开始使用现有运行时(例如,KServe 的 TGIS Standalone ServingRuntime),请点现有运行时旁的操作菜单(WWN),然后点击 Duplicate
    • 要添加新的自定义运行时,请点 Add serving runtime
  3. Select the model service platform this runtime support 列表中,选择 Single-model serving platform
  4. Select the API 协议中,这个运行时支持 列表,选择 RESTgRPC
  5. 可选:如果您启动一个新的运行时(而不是复制现有运行时),请选择以下选项之一来添加代码:

    • 上传 YAML 文件

      1. Upload files
      2. 在文件浏览器中,选择计算机上的 YAML 文件。

        嵌入的 YAML 编辑器将打开,并显示您上传的文件内容。

    • 在编辑器中直接输入 YAML 代码

      1. Start from scratch
      2. 在嵌入式编辑器中直接输入或粘贴 YAML 代码。
    注意

    在很多情况下,创建自定义运行时需要在 ServingRuntime 规格的 env 部分中添加新或自定义参数。

  6. 点击 Add

    Serving 运行时页面将打开,并显示所安装的运行时的更新列表。观察您添加的自定义运行时会自动启用。显示您在创建运行时时指定的 API 协议。

  7. 可选: 要编辑自定义运行时,点操作菜单(需要)并选择 Edit

验证

  • 您添加的自定义模型运行时显示在 Serving 运行时 页面中的 enabled 状态。

2.12.3. 为单模式服务平台添加经过测试和验证的模型运行时

除了预安装和自定义模型服务运行时外,您还可以使用红帽经过测试和验证的模型运行时,如 NVIDIA Triton Inference Server 来支持您的需要。有关红帽经过测试和验证的运行时的更多信息,请参阅 Red Hat OpenShift AI 测试和验证的运行时

您可以使用 Red Hat OpenShift AI 仪表板为单模式服务平台添加并启用 NVIDIA Triton Inference Server 运行时。然后,您可以在单模式服务平台上部署模型时选择运行时。

先决条件

  • 您已以具有 OpenShift AI 管理员特权的用户身份登录到 OpenShift AI。

流程

  1. 在 OpenShift AI 仪表板中点 Settings > Serving runtime

    Serving 运行时 页面将打开,并显示已安装和启用的模型服务运行时。

  2. Add serving runtime
  3. Select the model service platform this runtime support 列表中,选择 Single-model serving platform
  4. Select the API 协议中,这个运行时支持 列表,选择 RESTgRPC
  5. Start from scratch

    1. 如果您选择了 REST API 协议,请直接在嵌入的编辑器中输入或粘贴以下 YAML 代码。

      apiVersion: serving.kserve.io/v1alpha1
      kind: ServingRuntime
      metadata:
        name: triton-kserve-rest
        labels:
          opendatahub.io/dashboard: "true"
      spec:
        annotations:
          prometheus.kserve.io/path: /metrics
          prometheus.kserve.io/port: "8002"
        containers:
          - args:
              - tritonserver
              - --model-store=/mnt/models
              - --grpc-port=9000
              - --http-port=8080
              - --allow-grpc=true
              - --allow-http=true
            image: nvcr.io/nvidia/tritonserver@sha256:xxxxx
            name: kserve-container
            resources:
              limits:
                cpu: "1"
                memory: 2Gi
              requests:
                cpu: "1"
                memory: 2Gi
            ports:
              - containerPort: 8080
                protocol: TCP
        protocolVersions:
          - v2
          - grpc-v2
        supportedModelFormats:
          - autoSelect: true
            name: tensorrt
            version: "8"
          - autoSelect: true
            name: tensorflow
            version: "1"
          - autoSelect: true
            name: tensorflow
            version: "2"
          - autoSelect: true
            name: onnx
            version: "1"
          - name: pytorch
            version: "1"
          - autoSelect: true
            name: triton
            version: "2"
          - autoSelect: true
            name: xgboost
            version: "1"
          - autoSelect: true
            name: python
            version: "1"
    2. 如果您选择了 gRPC API 协议,请直接在嵌入的编辑器中输入或粘贴以下 YAML 代码。

      apiVersion: serving.kserve.io/v1alpha1
      kind: ServingRuntime
      metadata:
        name: triton-kserve-grpc
        labels:
          opendatahub.io/dashboard: "true"
      spec:
        annotations:
          prometheus.kserve.io/path: /metrics
          prometheus.kserve.io/port: "8002"
        containers:
          - args:
              - tritonserver
              - --model-store=/mnt/models
              - --grpc-port=9000
              - --http-port=8080
              - --allow-grpc=true
              - --allow-http=true
            image: nvcr.io/nvidia/tritonserver@sha256:xxxxx
            name: kserve-container
            ports:
              - containerPort: 9000
                name: h2c
                protocol: TCP
            volumeMounts:
              - mountPath: /dev/shm
                name: shm
            resources:
              limits:
                cpu: "1"
                memory: 2Gi
              requests:
                cpu: "1"
                memory: 2Gi
        protocolVersions:
          - v2
          - grpc-v2
        supportedModelFormats:
          - autoSelect: true
            name: tensorrt
            version: "8"
          - autoSelect: true
            name: tensorflow
            version: "1"
          - autoSelect: true
            name: tensorflow
            version: "2"
          - autoSelect: true
            name: onnx
            version: "1"
          - name: pytorch
            version: "1"
          - autoSelect: true
            name: triton
            version: "2"
          - autoSelect: true
            name: xgboost
            version: "1"
          - autoSelect: true
            name: python
            version: "1"
      volumes:
        - emptyDir: null
          medium: Memory
          sizeLimit: 2Gi
          name: shm
  6. metadata.name 字段中,确保您添加的运行时值与您已添加的运行时不匹配。
  7. 可选: 要为您添加的运行时使用自定义显示名称,请添加 metadata.annotations.openshift.io/display-name 字段并指定一个值,如下例所示:

    apiVersion: serving.kserve.io/v1alpha1
    kind: ServingRuntime
    metadata:
      name: kserve-triton
      annotations:
        openshift.io/display-name: Triton ServingRuntime
    注意

    如果没有为您的运行时配置自定义显示名称,OpenShift AI 会显示 metadata.name 字段的值。

  8. Create

    Serving 运行时页面将打开,并显示所安装的运行时的更新列表。观察您添加的运行时会自动启用。显示您在创建运行时时指定的 API 协议。

  9. 可选: 要编辑运行时,请点击操作菜单(WWN)并选择 Edit

验证

  • 您添加的 model-serving 运行时显示在 Serving 运行时 页面中的 enabled 状态。

2.12.4. 在单模型服务平台上部署模型

当您启用了单型号服务平台时,您可以启用预安装或自定义模型运行时,并开始在平台上部署模型。

注意

文本 Generation Inference Server (TGIS) 基于 Hugging Face TGI 的早期分叉。红帽将继续开发独立 TGIS 运行时来支持 TGI 模型。如果模型无法在 OpenShift AI 的当前版本中工作,则未来版本可能会添加支持。同时,您还可以添加自己的自定义运行时来支持 TGI 模型。如需更多信息,请参阅为单模型服务平台添加自定义模型运行时

先决条件

  • 您已登陆到 Red Hat OpenShift AI。
  • 如果您使用 OpenShift AI 组,则作为 OpenShift 中的用户组或 admin 组(如 rhoai-usersrhoai-admins)的一部分。
  • 已安装 KServe。
  • 您已启用了 single-model 服务平台。
  • 要为部署的模型启用令牌授权和外部模型路由,您已添加了 Authorino 作为授权供应商。如需更多信息,请参阅为 单模式服务平台添加授权供应商
  • 您已创建了数据科学项目。
  • 您可以访问 S3 兼容对象存储。
  • 对于您要部署的模型,您知道 S3 兼容对象存储桶中的关联文件夹路径。
  • 要使用 Caikit-TGIS 运行时,您需要将模型转换为 Caikit 格式。例如,请参阅 cai kit-tgis-serving 存储库中的 Hugging Face Hub 模型转换为 Caikit 格式
  • 如果要将图形处理单元(GPU)与模型服务器搭配使用,在 OpenShift AI 中启用了 GPU 支持。如果使用 NVIDIA GPU,请参阅启用 NVIDIA GPU。如果使用 AMD GPU,请参阅 AMD GPU 集成
  • 要使用 vLLM 运行时,已在 OpenShift AI 中启用 GPU 支持,并在集群中安装并配置了 Node Feature Discovery operator。如需更多信息,请参阅安装 Node Feature Discovery operator启用 NVIDIA GPU
  • 要将 vLLM ServingRuntime 与 Gaudi Accelerators 支持 KServe 运行时,启用了对 OpenShift AI 中的混合处理单元(HPU)的支持。这包括安装 Intel Gaudi AI Accelerator operator 并配置加速器配置集。如需更多信息,请参阅为 OpenShift 设置 Gaudi使用加速器
  • 要将 vLLM ROCm ServingRuntime 用于 KServe 运行时,您可以在 OpenShift AI 中启用了对 AMD 图形处理单元(GPU)的支持。这包括安装 AMD GPU operator 和配置加速器配置集。如需更多信息,请参阅在 OpenShift 上部署 AMD GPU 操作器 和使用加速器

    注意

    在 OpenShift AI 2.17 中,红帽支持 NVIDIA GPU、Intel Gaudi 和 AMD GPU 加速器用于模型服务。

  • 部署 RHEL AI 模型:

    • 您已为 KServe 运行时启用了 vLLM ServingRuntime
    • 您已从红帽容器注册中心下载了模型,并将其上传到 S3 兼容对象存储。

流程

  1. 在左侧菜单中,单击 Data Science Projects

    Data Science Projects 页面将打开。

  2. 点击您要在其中部署模型的项目的名称。

    此时会打开项目详情页面。

  3. Models 选项卡。
  4. 执行以下操作之一:

    • 如果您看到 ​Single-model 服务平台 标题,请点击 Deploy model on the 标题。
    • 如果没有看到任何标题,请点击 Deploy model 按钮。

    此时会打开 Deploy model 对话框。

  5. Model deployment name 字段中输入您要部署的模型的唯一名称。
  6. Serving runtime 字段中,选择一个已启用的运行时。
  7. Model 框架(名称 - version) 列表中选择一个值。
  8. 在要部署的模型服务器副本的 Number of model server replicas 中,指定一个值。
  9. Model server size 列表中选择一个值。
  10. 只有在集群中启用了加速器支持并创建了加速器配置集时,以下选项才可用:

    1. Accelerator 列表中,选择一个加速器。
    2. 如果在上一步中选择了加速器,请在 Number of accelerators 字段中指定要使用的加速器数。
  11. 可选:在 Model route 部分中,选择 Make deployed model available via an external route 复选框,使部署的模型可供外部客户端使用。
  12. 要要求对部署的模型对 inference 请求进行令牌授权,请执行以下操作:

    1. 选择 Require token authorization
    2. Service account name 字段中,输入要为其生成令牌的服务帐户名称。
  13. 要指定模型的位置,请执行以下操作之一:

    • 使用现有连接

      1. 选择现有连接
      2. Name 列表中,选择一个您之前定义的连接。
      3. Path 字段中输入在指定数据源中包含模型的文件夹路径。

        重要

        OpenVINO Model Server 运行时对指定模型路径有具体要求。如需更多信息,请参阅 OpenShift AI 发行注记中的已知问题 RHOAIENG-3025

    • 使用新连接

      1. 要定义模型可访问的新连接,请选择 New connection

        1. Add connection modal 中,选择 Connection typeS3 兼容对象存储URI 选项是预安装的连接类型。如果您的 OpenShift AI 管理员添加了其他选项,则可能会使用其他选项。

          此时会打开 Add connection 表单,其中包含特定于您选择的连接类型的字段。

      2. 填写连接详情字段。

        重要

        如果您的连接类型是 S3 兼容对象存储,您必须提供包含您的数据文件的文件夹路径。OpenVINO Model Server 运行时对指定模型路径有具体要求。如需更多信息,请参阅 OpenShift AI 发行注记中的已知问题 RHOAIENG-3025

  14. (可选)在 配置参数 部分中自定义运行时参数:

    1. 修改附加服务 运行时参数中的值,以定义部署模型的行为方式。
    2. 修改 附加环境变量中的值,以在模型环境中定义变量。

      Configuration parameters 部分显示预定义的服务运行时参数(若有可用)。

      注意

      不要修改端口或模型服务运行时参数,因为它们需要设置特定的值。覆盖这些参数可能会导致部署失败。

  15. Deploy

验证

  • 确认部署的模型显示在项目的 Models 选项卡中,并在仪表板的 Model Serving 页面中显示 Status 列中带有复选标记。

2.12.5. 为 KServe 设置超时

当部署大型模型或使用 KServe 的节点自动扩展时,操作可能会在部署模型前超时,因为 KNative Serving 集的默认 progress-deadline 为 10 分钟。

如果部署使用 KNative Serving 的 pod 需要的时间超过 10 分钟,则 pod 可能会自动标记为失败。如果您部署的大型模型需要超过 10 分钟才能从 S3 兼容对象存储中提取,或者使用节点自动扩展来减少 GPU 节点的消耗,会出现这种情况。

要解决这个问题,您可以在应用程序的 KServe InferenceService 中设置自定义 progress-deadline

先决条件

  • 具有 OpenShift 集群的命名空间编辑访问权限。

流程

  1. 以集群管理员身份登录 OpenShift 控制台。
  2. 选择部署模型的项目。
  3. Administrator 视角中,点击 Home Search
  4. 资源 下拉菜单中,搜索 InferenceService
  5. spec.predictor.annotations 下,使用新超时修改 service.knative.dev/progress-deadline

    apiVersion: serving.kserve.io/v1alpha1
    kind: InferenceService
    metadata:
      name: my-inference-service
    spec:
      predictor:
        annotations:
          serving.knative.dev/progress-deadline: 30m
    注意

    确保在 spec.predictor.annotations 级别上设置 progress-deadline,以便 KServe InferenceService 可以将 progress-deadline 复制到 KNative Service 对象。

2.12.6. 自定义部署模型运行时的参数

除了默认的模型或增强现有模型部署外,您可能需要额外的参数。在这种情况下,您可以修改现有运行时的参数以满足您的部署需求。

注意

自定义运行时的参数仅会影响所选模型部署。

先决条件

  • 您已以具有 OpenShift AI 管理员特权的用户身份登录到 OpenShift AI。
  • 您已在单模式服务平台上部署了模型。

流程

  1. 在 OpenShift AI 仪表板中点左侧菜单中的 Model Serving

    此时会打开 Deployed model 页面。

  2. 点击您要自定义的型号名称旁的操作菜单(swig),然后选择 Edit

    Configuration parameters 部分显示预定义的服务运行时参数(若有可用)。

  3. Configuration parameters 部分中自定义运行时参数:

    1. 修改附加服务 运行时参数中的值,以定义部署模型的行为方式。
    2. 修改 附加环境变量中的值,以在模型环境中定义变量。

      注意

      不要修改端口或模型服务运行时参数,因为它们需要设置特定的值。覆盖这些参数可能会导致部署失败。

  4. 完成自定义运行时参数后,点 Redeploy 以保存和部署模型。

验证

  • 确认部署的模型显示在项目的 Models 选项卡中,并在仪表板的 Model Serving 页面中显示 Status 列中带有复选标记。
  • 使用以下方法之一确认您设置的参数和变量出现在 spec.predictor.model.argsspec.predictor.model.env 中:

    • 从 OpenShift 控制台检查 InferenceService YAML.
    • 在 OpenShift CLI 中使用以下命令:

      oc get -o json inferenceservice <inferenceservicename/modelname> -n <projectname>

2.12.7. 可自定义模型服务运行时参数

您可以修改现有模型服务运行时的参数,以满足您的部署需求。

有关每个支持的服务运行时的参数的更多信息,请参阅下表:

服务运行时资源

NVIDIA Triton Inference Server

NVIDIA Triton Inference Server: Model 参数

Caikit 文本 Generation Inference Server (Caikit-TGIS) ServingRuntime for KServe

Caikit NLP: 配置
TGIS: Model 配置

Caikit Standalone ServingRuntime for KServe

Caikit NLP: 配置

OpenVINO Model Server

OpenVINO 模型服务器功能:动态输入参数

文本 Generation Inference Server (TGIS) Standalone ServingRuntime for KServe

TGIS: 模型配置

vLLM ServingRuntime for KServe

vLLM: Engine 参数
OpenAI 兼容服务器

2.12.8. 使用 OCI 容器进行模型存储

作为在 S3 存储桶或 URI 中存储模型的替代选择,您可以将模型上传到开放容器项目(OCI)容器中。使用 OCI 容器进行模型存储可帮助您:

  • 通过避免多次下载同一模型来减少启动时间。
  • 通过减少本地下载的模型数量来减少磁盘空间使用量。
  • 通过允许预抓取镜像来提高模型性能。

使用 OCI 容器进行模型存储涉及以下任务:

  • 在 OCI 镜像中存储模型
  • 从 OCI 镜像部署模型
重要

Red Hat OpenShift AI 2.17 当前提供了将 OCI 容器用于模型存储作为技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

2.12.8.1. 在 OCI 镜像中存储模型

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

先决条件

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

流程

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

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

    mkdir -p models/1
    注意

    这个示例命令指定子目录 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/
  4. 使用 tree 命令确认模型文件按预期位于目录结构中:

    tree

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

    .
    ├── Containerfile
    └── models
        └── 1
            └── mobilenetv2-7.onnx
  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
  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>

2.12.8.2. 部署存储在 OCI 镜像中的模型

您可以部署存储在 OCI 镜像中的模型。

以下流程使用 ONNX 格式部署 mobileNet v2-7 模型的示例,存储在 OpenVINO 模型服务器上的 OCI 镜像中。

注意

默认情况下,在 KServe 中,模型在集群外公开,不受授权保护。

先决条件

流程

  1. 创建一个项目来部署模型:

    oc new-project oci-model-example
  2. 使用 OpenShift AI Applications 项目 kserve-ovms 模板来创建 ServingRuntime 资源,并在新项目中配置 OpenVINO 模型服务器:

    oc process -n redhat-ods-applications -o yaml kserve-ovms | oc apply -f -
  3. 验证名为 kserve-ovmsServingRuntime 是否已创建:

    oc get servingruntimes

    该命令应该返回类似如下的输出:

    NAME          DISABLED   MODELTYPE     CONTAINERS         AGE
    kserve-ovms              openvino_ir   kserve-container   1m
  4. 根据模型是否存储于私有还是公共 OCI 存储库,创建 InferenceService YAML 资源:

    • 对于存储在公共 OCI 存储库中的模型,创建一个带有以下值的 InferenceService YAML 文件,将 < user_name>、< repository_name>、<tag_name >、< tag_name > 的值替换为特定于您的环境的值:

      apiVersion: serving.kserve.io/v1beta1
      kind: InferenceService
      metadata:
        name: sample-isvc-using-oci
      spec:
        predictor:
          model:
            runtime: kserve-ovms # Ensure this matches the name of the ServingRuntime resource
            modelFormat:
              name: onnx
            storageUri: oci://quay.io/<user_name>/<repository_name>:<tag_name>
            resources:
              requests:
                memory: 500Mi
                cpu: 100m
                # nvidia.com/gpu: "1" # Only required if you have GPUs available and the model and runtime will use it
              limits:
                memory: 4Gi
                cpu: 500m
                # nvidia.com/gpu: "1" # Only required if you have GPUs available and the model and runtime will use it
    • 对于存储在私有 OCI 存储库中的模型,请创建一个 InferenceService YAML 文件,该文件在 spec.predictor.imagePullSecrets 字段中指定您的 pull secret,如下例所示:

      apiVersion: serving.kserve.io/v1beta1
      kind: InferenceService
      metadata:
        name: sample-isvc-using-private-oci
      spec:
        predictor:
          model:
            runtime: kserve-ovms # Ensure this matches the name of the ServingRuntime resource
            modelFormat:
              name: onnx
            storageUri: oci://quay.io/<user_name>/<repository_name>:<tag_name>
            resources:
              requests:
                memory: 500Mi
                cpu: 100m
                # nvidia.com/gpu: "1" # Only required if you have GPUs available and the model and runtime will use it
              limits:
                memory: 4Gi
                cpu: 500m
                # nvidia.com/gpu: "1" # Only required if you have GPUs available and the model and runtime will use it
          imagePullSecrets: # Specify image pull secrets to use for fetching container images, including OCI model images
          - name: <pull-secret-name>

      创建 InferenceService 资源后,KServe 会部署 storageUri 字段引用的 OCI 镜像中存储的模型。

验证

检查部署的状态:

oc get inferenceservice

该命令应返回包含信息的输出,如部署模型的 URL 及其就绪状态。

2.12.9. 在 vLLM 中使用加速器

OpenShift AI 包含对 NVIDIA、AMD 和 Intel Gaudi 加速器的支持。OpenShift AI 还包括预安装的模型服务运行时,提供加速器支持。

2.12.9.1. NVIDIA GPU

您可以使用 vLLM ServingRuntime for KServe 运行时提供 NVIDIA 图形处理单元(GPU)的模型。要使用运行时,您必须在 OpenShift AI 中启用 GPU 支持。这包括在集群中安装和配置 Node Feature Discovery Operator。如需更多信息,请参阅安装 Node Feature Discovery operator启用 NVIDIA GPU

2.12.9.2. Intel Gaudi Accelerators

您可以使用 vLLM ServingRuntime 和 Gaudi 加速器支持 Intel Gaudi Accelerators 为 Intel Gaudi Accelerators 提供模型。要使用运行时,您必须在 OpenShift AI 中启用混合处理支持(HPU)支持。这包括安装 Intel Gaudi AI Accelerator operator 并配置加速器配置集。如需更多信息,请参阅为 OpenShift 设置 Gaudi使用加速器配置集

有关推荐的 vLLM 参数、环境变量、支持的配置等信息,请参阅 带有 Intel® Gaudi® AI Accelerators 的 vLLM

2.12.9.3. AMD GPU

您可以使用 vLLM ROCm ServingRuntime for KServe 运行时提供 AMD GPU 的模型。要使用运行时,您必须在 OpenShift AI 中为 AMD 图形处理单元(GPU)启用支持。这包括安装 AMD GPU operator 和配置加速器配置集。如需更多信息,请参阅在 OpenShift 上部署 AMD GPU Operator 和 使用加速器配置集

2.12.10. 自定义 vLLM 模型运行时

在某些情况下,您可能需要在 vLLM ServingRuntime for KServe 运行时添加额外的标志或环境变量来部署一系列 LLM。

以下流程描述了自定义 vLLM 模型运行时,以部署 Llama、Granite 或 Mistral 模型。

先决条件

  • 您已以具有 OpenShift AI 管理员特权的用户身份登录到 OpenShift AI。
  • 对于 Llama 模型部署,您已将 meta-llama-3 模型下载到对象存储中。
  • 对于 Granite 模型部署,您已将 granite-7b-instruct 或 granite-20B-code-instruct 模型下载到您的对象存储中。
  • 对于 Mistral 模型部署,您已将 mistral-7B-Instruct-v0.3 模型下载到对象存储。
  • 您已为 KServe 运行时启用了 vLLM ServingRuntime
  • 您已在 OpenShift AI 中启用了 GPU 支持,并在集群中安装并配置了 Node Feature Discovery operator。如需更多信息,请参阅安装 Node Feature Discovery operator启用 NVIDIA GPU

流程

  1. 按照以下步骤部署模型,如 在单模式服务平台上部署模型 中所述
  2. Serving runtime 字段中,为 KServe 选择 vLLM ServingRuntime
  3. 如果要部署 meta-llama-3 模型,请在 Configuration parameters 部分中的 Additional service runtime 参数 中添加以下参数:

    –-distributed-executor-backend=mp 1
    --max-model-len=6144 2
    1
    将后端设置为分布式模型 worker 的多处理
    2
    将模型的最大上下文长度设置为 6144 令牌
  4. 如果您要部署 granite-7B-instruct 模型,请在 Configuration parameters 部分中的 Additional service runtime 参数 中添加以下参数:

    --distributed-executor-backend=mp 1
    1
    将后端设置为分布式模型 worker 的多处理
  5. 如果您要部署 granite-20B-code-instruct 模型,请在 Configuration parameters 部分中的 Additional service runtime 参数 中添加以下参数:

    --distributed-executor-backend=mp 1
    –-tensor-parallel-size=4 2
    --max-model-len=6448 3
    1
    将后端设置为分布式模型 worker 的多处理
    2
    在单个节点中分布 4 个 GPU 的干扰
    3
    将模型的最大上下文长度设置为 6448 令牌
  6. 如果您要部署 mistral-7B-Instruct-v0.3 模型,请在 Configuration parameters 部分中的 Additional service runtime 参数 中添加以下参数:

    --distributed-executor-backend=mp 1
    --max-model-len=15344 2
    1
    将后端设置为分布式模型 worker 的多处理
    2
    将模型的最大上下文长度设置为 15344 令牌
  7. Deploy

验证

  • 确认部署的模型显示在项目的 Models 选项卡中,并在仪表板的 Model Serving 页面中显示 Status 列中带有复选标记。
  • 对于 granite 模型,请使用以下示例命令验证对部署的模型的 API 请求:

    curl -q -X 'POST' \
        "https://<inference_endpoint_url>:443/v1/chat/completions" \
        -H 'accept: application/json' \
        -H 'Content-Type: application/json' \
        -d "{
        \"model\": \"<model_name>\",
        \"prompt\": \"<prompt>",
        \"max_tokens\": <max_tokens>,
        \"temperature\": <temperature>
        }"

其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.