模型存储

要部署模型,您必须先将模型存储在 Alauda AI 支持的存储类型中。支持的存储类型包括:

  • S3 对象存储:最常用的模式。通过 Storage Initializer(InitContainer)在主容器启动前下载数据。
  • Persistent Volume Claim (PVC):通过 Storage Initializer 在主容器启动前挂载存储在持久卷上的数据。
  • Open Container Initiative (OCI) 容器:在 KServe 中也称为 modelcars。该方式利用容器运行时的分层缓存能力,通过 Sidecar 实现秒级加载。

使用 S3 对象存储进行模型存储

这是最常用的模式。通过带有特定 S3 配置参数注解的 Secret 实现凭证管理。

认证配置

建议为每个项目创建独立的 ServiceAccount 和 Secret。

S3 关键配置参数

配置项实际值说明
Endpointyour-s3-service-ip:your-s3-port 指向私有 MinIO 服务的 IP 和端口
Region(未指定)默认通常为 us-east-1,若未检测到则 KServe 使用默认值
HTTPS Enabled0内部测试/演示环境禁用加密
Authentication Method静态 Access Key / Secret Key通过名为 minio-creds 的 Secret 管理
Namespace Isolationdemo-space权限限制在该命名空间内,遵循多租户隔离原则
apiVersion: v1
data:
  AWS_ACCESS_KEY_ID: YOUR_BASE64_ENCODED_ACCESS_KEY
  AWS_SECRET_ACCESS_KEY: YOUR_BASE64_ENCODED_SECRET_KEY
kind: Secret
metadata:
  annotations:
    serving.kserve.io/s3-endpoint: your_s3_service_ip:your_s3_port
    serving.kserve.io/s3-usehttps: "0"
  name: minio-creds
  namespace: demo-space
type: Opaque
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: sa-models
  namespace: demo-space
secrets:
- name: minio-creds
  1. YOUR_BASE64_ENCODED_ACCESS_KEY 替换为您实际的 Base64 编码的 AWS 访问密钥 ID。
  2. YOUR_BASE64_ENCODED_SECRET_KEY 替换为您实际的 Base64 编码的 AWS 秘密访问密钥。
  3. your_s3_service_ip:your_s3_port 替换为您 S3 服务的实际 IP 地址和端口。
  4. 如果您的 S3 服务使用 HTTPS,则将 serving.kserve.io/s3-usehttps 设置为 "1",否则使用 HTTP 设置为 "0"。

部署推理服务

kind: InferenceService
apiVersion: serving.kserve.io/v1beta1
metadata:
  annotations:
    aml-model-repo: Qwen2.5-0.5B-Instruct
    aml-pipeline-tag: text-generation
    serving.kserve.io/deploymentMode: Standard
  labels:
    aml.cpaas.io/runtime-type: vllm
  name: s3-demo
  namespace: demo-space
spec:
  predictor:
    maxReplicas: 1
    minReplicas: 1
    model:
      modelFormat:
        name: transformers
      name: ''
      protocolVersion: v2
      resources:
        limits:
          cpu: '2'
          ephemeral-storage: 10Gi
          memory: 8Gi
        requests:
          cpu: '2'
          memory: 4Gi
      runtime: aml-vllm-0.11.2-cpu
      storageUri: s3://models/Qwen2.5-0.5B-Instruct
    securityContext:
      seccompProfile:
        type: RuntimeDefault
    serviceAccountName: sa-models
  1. Qwen2.5-0.5B-Instruct 替换为您实际的模型名称。
  2. aml.cpaas.io/runtime-type: vllm 指定代码运行时类型。有关自定义推理运行时的更多信息,请参见 Extend Inference Runtimes
  3. aml-vllm-0.11.2-cpu 替换为您平台上已安装的运行时名称(对应 ClusterServingRuntime CRD 实例)。
  4. storageUri: s3://models/Qwen2.5-0.5B-Instruct 指定模型存储的 S3 桶 URI。
  5. serviceAccountName: sa-models 指定具有访问 S3 凭证 Secret 权限的服务账户。

使用 OCI 容器进行模型存储

除了将模型存储在 S3 桶或 PVC 中,您还可以将模型存储在 Open Container Initiative (OCI) 容器中。在 KServe 中,从 OCI 容器部署模型也称为 modelcars。此方式非常适合离线环境和企业内部镜像仓库,如 Quay 或 Harbor。

有关使用 OCI 容器打包和部署模型的详细说明,请参见 Using KServe Modelcar for Model Storage

使用 PVC 进行模型存储

将模型文件上传到 PVC

部署模型时,可以从已存在的 Persistent Volume Claim (PVC) 中提供模型文件。您可以通过运行中的工作台访问的 IDE,将本地模型文件上传到 PVC。

前提条件

  • 您可以访问 Alauda AI 监控面板。

  • 您可以访问拥有运行中工作台的项目。

  • 您已创建持久卷声明(PVC)。

  • 工作台已挂载该持久卷(PVC)。

    有关创建工作台和挂载 PVC 的操作步骤,请参见 Create Workbench

  • 您已将模型文件保存在本地计算机。

操作步骤

按照以下步骤将模型文件上传到工作台中的 PVC:

  1. 在 Alauda AI 监控面板中,点击 Workbench 进入工作台列表页面。

  2. 找到正在运行的工作台实例,点击 Connect 按钮进入工作台。

  3. 在工作台 IDE 中,打开文件浏览器:

    • 在 JupyterLab 中,位于左侧边栏的 Files 标签。
    • 在 code-server 中,位于左侧边栏的 Explorer 视图。
  4. 在文件浏览器中,进入 home 目录。该目录即为您挂载的 PVC 根目录。

    注意 您在此目录下创建或上传的任何文件或文件夹都会保存在 PVC 中。

  5. 可选:创建新文件夹以便管理模型:

    • 在文件浏览器中,右键点击 home 目录,选择 New Folder
    • 命名该文件夹(例如 models)。
    • 双击进入新建的 models 文件夹。
  6. 上传模型文件到当前文件夹:

    • 使用 JupyterLab:
      • 点击文件浏览器工具栏中的 Upload 按钮。
      • 在文件选择对话框中,定位并选择本地模型文件,点击 Open
      • 等待上传完成。
    • 使用 code-server:
      • 直接将模型文件从本地文件管理器拖拽到 code-server 中目标文件夹的文件浏览器面板。
      • 等待上传完成。

验证

确认上传的文件已显示在文件浏览器中对应路径下。

后续步骤

从 PVC 部署模型时,storageUri 格式为 pvc://<pvc-name>/<optional-path>,例如:

  • pvc://model-pvc — 从 PVC 根目录加载。
  • pvc://model-pvc/models/Qwen2.5-0.5B-Instruct — 从指定子目录加载。

部署推理服务

kind: InferenceService
apiVersion: serving.kserve.io/v1beta1
metadata:
  annotations:
    aml-model-repo: Qwen2.5-0.5B-Instruct
    aml-pipeline-tag: text-generation
    serving.kserve.io/deploymentMode: Standard
  labels:
    aml.cpaas.io/runtime-type: vllm
  name: pvc-demo-1
  namespace: demo-space
spec:
  predictor:
    maxReplicas: 1
    minReplicas: 1
    model:
      modelFormat:
        name: transformers
      protocolVersion: v2
      resources:
        limits:
          cpu: '2'
          ephemeral-storage: 10Gi
          memory: 8Gi
        requests:
          cpu: '2'
          memory: 4Gi
      runtime: aml-vllm-0.11.2-cpu
      storageUri: pvc://model-pvc
    securityContext:
      seccompProfile:
        type: RuntimeDefault
  1. Qwen2.5-0.5B-Instruct 替换为您实际的模型名称。
  2. aml.cpaas.io/runtime-type: vllm 指定代码运行时类型。有关自定义推理运行时的更多信息,请参见 Extend Inference Runtimes
  3. aml-vllm-0.11.2-cpu 替换为您平台上已安装的运行时名称(对应 ClusterServingRuntime CRD 实例)。
  4. storageUri: pvc://model-pvc 指定模型存储的 PVC 名称。