模型存储

要部署您的模型,必须先将其存储到 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 指向私有 S3 服务的 IP 和端口
Region(未指定)默认通常为 us-east-1,若未检测到,KServe 将使用默认值
HTTPS Enabled0用于内部测试/Demo 环境,禁用加密
Authentication MethodStatic Access Key / Secret Key通过名为 s3-creds 的 Secret 管理
Namespace Isolationdemo-space仅限于该 namespace 的权限,遵循多租户隔离原则
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: s3-creds
  namespace: demo-space
type: Opaque
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: sa-models
  namespace: demo-space
secrets:
- name: s3-creds
  1. YOUR_BASE64_ENCODED_ACCESS_KEY 替换为实际的 Base64 编码 AWS access key ID。
  2. YOUR_BASE64_ENCODED_SECRET_KEY 替换为实际的 Base64 编码 AWS secret access key。
  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 bucket URI。
  5. serviceAccountName: sa-models 指定了具有访问 S3 凭证 Secret 权限的 ServiceAccount。

使用 OCI 容器作为模型存储

作为将模型存储在 S3 bucket 或 PVC 中的替代方案,您也可以将模型存储在 Open Container Initiative (OCI) 容器中。在 KServe 中,从 OCI 容器部署模型也称为 modelcars。此方式非常适合离线环境以及 Quay 或 Harbor 等企业内部 registry。

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

使用 PVC 作为模型存储

将模型文件上传到 PVC

在部署模型时,您可以从已存在且存放模型文件的 Persistent Volume Claim (PVC) 中提供服务。您可以在从正在运行的 workbench 访问的 IDE 中,将本地模型文件上传到 PVC。

前提条件

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

  • 您可以访问一个已运行 workbench 的项目。

  • 您已经创建了 persistent volume claim (PVC)。

  • workbench 已挂载到 persistent volume (PVC)。

    有关创建 workbench 并挂载 PVC 的说明,请参见 Create Workbench

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

操作步骤

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

  1. 在 Alauda AI 监控面板中,单击 Workbench 进入 workbench 列表页面。

  2. 找到正在运行的 workbench 实例,然后单击 Connect 按钮进入 workbench。

  3. 在 workbench 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 名称。