共绩科技
共绩科技

使用说明

对象存储加速

对象存储加速支持用户将 S3 兼容对象存储接入平台,例如阿里云 OSS、腾讯云 COS、火山引擎 TOS、华为云 OBS、自建 MinIO 等,并通过 JuiceFS 文件系统和缓存加速能力,将对象存储中的模型、数据集等内容挂载到任务容器中使用。

1. 功能简介

对象存储加速支持用户将 S3 兼容对象存储接入平台,例如阿里云 OSS、腾讯云 COS、火山引擎 TOS、华为云 OBS、自建 MinIO 等,并通过 JuiceFS 文件系统和缓存加速能力,将对象存储中的模型、数据集等内容挂载到任务容器中使用。

本功能适用于大模型推理、训练数据读取、模型冷启动优化等场景。用户可以按目录将对象存储中的数据预热到指定加速区域,减少任务运行时从远端对象存储读取数据的等待时间。对象存储加速是一项缓存加速能力,不是新的持久化存储服务。源数据仍保存在用户的对象存储中。

1. 功能简介示意图

2. 操作流程

2.1. 对象存储加速

进入存储加速管理页面后,在左侧菜单点击「对象存储加速」,进入对象存储加速管理页面。

页面中会展示当前账号下已创建的对象存储加速配置,包括配置名称、云服务商、最后预热时间、加速用量、区域和操作入口。

2.1. 对象存储加速示意图

2.2. 获取对象存储配置

2.2.1. 权限说明

必须具备以下权限:

  • ListObjectsV2:用于校验 S3 加速页面所提供的目录是否存在。

    • ListObjectsV2Input。
  • PutObject:用于校验对象存储是否具备写权限。此操作会创建临时文件进行校验,原因在于对象存储会生成 uuid 并放置到对象存储目录下。

    • PutObjectInput。
  • DeleteObject:用于清理由 PutObject 创建的临时文件。

    • DeleteObjectInput。

在使用过程中,请勿停用访问密钥(AK)、安全密钥(SK)或对其进行修改,以免功能不可用,对您的使用体验造成不良影响。

2.2.2. 阿里云 OSS

可参照 这篇文档 了解如何创建 Access Key 和 Secret Key。

进入对象存储的控制台,找到 Access Key 入口:

2.2.2. 阿里云 OSS示意图

创建一个 Access Key 用于挂载:

2.2.2. 阿里云 OSS示意图

2.2.3. 腾讯云 COS

Secret ID(AccessKey)和 Secret Key 需要在 API 密钥管理 中查看或创建。

2.2.3. 腾讯云 COS示意图

2.2.4. 自建 S3 - MinIO

理论上兼容 MinIO 和 RustFS

2.2.4. 自建 S3 - MinIO示意图

2.2.5. 火山引擎 TOS

可参照 这篇文档 了解如何创建 Access Key 和 Secret Key。

火山引擎 TOS 为每个区域都提供了公网和内网 endpoint 链接,你可以根据实际的场景选用。

2.2.5. 火山引擎 TOS示意图

2.2.5. 火山引擎 TOS示意图

Endpoint 获取:需要选择 S3 Endpoint

2.2.5. 火山引擎 TOS示意图

在下面 2.3 章节中配置对象存储时,需要使用携带 s3 的 Endpoint

2.2.5. 火山引擎 TOS示意图

2.2.6. 华为云 OBS

可参照这篇文档 了解如何创建 Access Key 和 Secret Key。

需在对应的 bucket 中设置桶策略,如下图

2.2.6. 华为云 OBS示意图

2.3. 配置对象存储加速

在对象存储加速页面点击「新增对象存储配置」,填写对象存储相关信息。

需要填写的主要信息包括配置名称、云服务商、地域、Endpoint、AccessKey、SecretKey、Bucket 名称和加速目录。

加速目录建议填写业务所需的子目录,例如模型目录、训练数据目录或推理数据目录。不建议直接选择 Bucket 根目录。

推荐示例:

oss://demo-bucket/models/qwen/
oss://demo-bucket/dataset/train/
oss://demo-bucket/checkpoints/v1/

不推荐示例:

oss://demo-bucket/

如果直接选择 Bucket 根目录,后续目录加载、缓存预热和缓存删除的范围都会变大,可能导致目录加载较慢、缓存空间占用过多,也不利于区分不同业务数据。

当前目录树仅展示目录和子目录,不展示具体文件。如果文件直接放在 Bucket 根目录下,用户需要选择整个根目录范围才能对这些文件进行预热。因此,建议将模型、数据集、日志等文件按业务目录进行组织。

2.3. 配置对象存储加速示意图

当执行保存配置操作时,系统会自动对配置的可用性进行检测。只有在校验通过之后,配置才可成功保存。

2.4. 配置加速区域

对象存储配置保存成功后,需要为该配置选择加速区域。在列表中点击「配置区域」,选择需要启用的区域。

配置加速区域主要用于准备对象存储加速能力。配置完成后,该区域具备后续挂载和缓存能力,但数据不会自动全部缓存到本地。

也就是说,配置区域不等于缓存预热。首次配置完成后,区域通常显示为「缓存未同步」状态。此时区域已经可以挂载使用,但首次访问数据时可能仍需要从对象存储读取。建议在正式使用前,按需执行「预热缓存」。

2.4. 配置加速区域示意图

2.4. 配置加速区域示意图

2.4. 配置加速区域示意图

此时系统正在为该区域启用对象存储加速能力,请等待加载完成再进行或许操作。

2.4. 配置加速区域示意图

此时该区域的对象存储创建完成,因为还没有进行数据预热,所以显示加速用量为 0B。

2.5. 预热缓存

区域配置完成后,可以点击「预热缓存」选择需要提前缓存的数据目录。

预热缓存需要同时选择预热区域和预热目录。用户可以选择一个或多个可用区域,也可以选择一个或多个目录进行预热。系统会将所选目录中的数据提前加载到对应加速区域,后续任务访问这些数据时可以减少从对象存储读取的等待时间。

预热缓存弹窗中的目录树采用按需加载方式。打开弹窗时,仅展示当前目录下的第一层目录;点击目录左侧箭头后,再加载下一层子目录。当前仅展示目录和子目录,不展示具体文件。

点击「开始预热」后,系统会先同步目录信息,使平台能够识别所选目录;随后在后台执行缓存预热,将所选目录下的数据加载到指定加速区域。

目录信息同步期间,「预热缓存」和「删除缓存」入口会短暂置灰并显示「元数据更新中」。同步完成后,按钮恢复可点击。后续缓存预热会继续在后台执行,不影响已可用区域的挂载使用。

2.5. 预热缓存示意图

2.5. 预热缓存示意图

2.5. 预热缓存示意图

2.5. 预热缓存示意图

2.6. 删除缓存

如果某些目录的数据不再需要加速,可以点击「删除缓存」释放缓存空间。

删除缓存用于释放所选目录对应的加速用量。删除后,平台会移除 JuiceFS 文件系统中对应目录的数据记录,并更新加速用量。该操作不会删除对象存储中的源文件,也不会删除对象存储配置。后续任务再次访问这些数据时,可能需要重新从对象存储读取,或重新执行缓存预热。

删除缓存弹窗中展示的是当前配置下已缓存目录的集合。目录树仅展示目录名称和缓存用量,不展示具体文件。

如果删除了全部可选缓存目录,加速用量会明显降低。但由于系统会保留外层父目录等基础目录信息,加速用量通常不会回到 0B,可能显示为 4KB 左右,请以页面实际展示为准。

删除缓存过程中,平台会更新缓存状态,因此该操作为异步执行。在更新完成前,「预热缓存」和「删除缓存」入口会显示为「元数据更新中」,暂时不可重复点击。

2.6. 删除缓存示意图

2.6. 删除缓存示意图

2.6. 删除缓存示意图

2.6. 删除缓存示意图

2.7. 任务发布时挂载

在任务发布页面,用户可以选择已配置并启用区域的对象存储加速配置进行挂载。

发布任务时,需要选择任务运行区域。任务运行区域应与对象存储加速区域保持一致。例如,对象存储加速配置已启用「福建五区」「浙江六区」,任务也应选择「福建五区」或「浙江六区」的计算资源。

在「存储配置」区域选择对应的对象存储加速配置,并填写容器内挂载路径。挂载路径需以 / 开头,例如:

/mnt/data
/root/.cache/huggingface

这里将对象存储 Bucket 中的 /qwen1-5/hub/挂载到了容器中的 /root/.cache/huggingface 目录中。

任务启动后,平台会将对象存储加速配置挂载到容器内指定路径。如果该区域缓存已同步,任务可以更快读取数据;如果缓存未同步或缓存已被删除,任务首次访问时可能需要从对象存储重新读取。

2.7. 任务发布时挂载示意图

2.7. 任务发布时挂载示意图

2.8. 验证挂载

提交任务后,容器启动时会自动挂载所选对象存储加速配置。待容器启动完成后,可进入容器并验证挂载结果。

用户可以查看容器内挂载路径下的目录和文件是否存在,例如:

ls /root/.cache/huggingface

如果能够看到对象存储中对应目录下的数据,说明挂载成功。

2.8. 验证挂载示意图

2.9. 子账号授权

2.9.1. 授权操作

2.9.1.1. 腾讯云
  1. 找到对象存储。

2.9.1. 授权操作示意图

  1. 点击存储桶列表。

2.9.1. 授权操作示意图

2.9.1. 授权操作示意图

2.9.1. 授权操作示意图

2.9.1.2. 阿里云
  1. 找到对象存储。

2.9.1. 授权操作示意图

  1. 找到要设置权限的桶,然后点进去。

2.9.1. 授权操作示意图

  1. 设置权限。

2.9.1. 授权操作示意图

2.9.1. 授权操作示意图

2.9.1. 授权操作示意图

2.9.1.3. 火山云
  1. 找到对象存储。

2.9.1. 授权操作示意图

  1. 找到要设置的桶

2.9.1. 授权操作示意图

  1. 设置权限

2.9.1. 授权操作示意图

2.9.1. 授权操作示意图

2.9.1. 授权操作示意图

2.9.1. 授权操作示意图

2.9.1. 授权操作示意图

2.9.2. IAM 权限和桶权限的关系

2.9.2. IAM 权限和桶权限的关系示意图

2.9.2.1. 核心区别与重叠

为了更具体地理解,我们来看看两者的对比:

场景一:简单权限控制(within one account)

​​“我希望我创建的某个 IAM 用户只能读取 A 桶。”​​

  • 方案 A (使用 IAM):在 IAM 中,给该用户附加一个策略,策略内容为对 arn:aws:s3:::bucket-A资源拥有 s3:GetObjects3:ListBucket权限。
  • 方案 B (使用 Bucket Policy):在 A 桶的策略中,添加一条语句,允许该用户的 ARN 执行 s3:GetObjects3:ListBucket
  • 结论:两种方案效果几乎一样,任选其一即可。通常更推荐使用 IAM 方案,因为权限集中在 IAM 控制台,更易于统一管理身份及其权限。

3. 区域状态说明

对象存储加速列表中会展示每个加速区域的状态。用户可根据区域状态判断当前区域是否可用、缓存是否完成,以及是否需要处理异常。

状态 含义 用户处理建议
区域加载中 3. 区域状态说明示意图 系统正在为该区域启用对象存储加速能力 请等待加载完成
缓存未同步 3. 区域状态说明示意图 区域已可用,但数据尚未完成缓存预热,首次访问可能较慢 建议点击「预热缓存」后使用
缓存同步中 3. 区域状态说明示意图 区域正在进行缓存预热 可继续使用,未缓存完成的数据首次访问可能较慢
缓存同步完成 3. 区域状态说明示意图 缓存预热已完成 可正常使用
预热失败 3. 区域状态说明示意图 本次缓存预热失败,缓存可能不是最新状态 检查配置、权限或目录后重新预热
区域下线 3. 区域状态说明示意图 该加速区域当前不可用 请更换其他可用区域
存储异常 3. 区域状态说明示意图 对象存储服务返回权限或服务错误,平台暂时无法正常访问对象存储 检查 AK/SK 权限、Bucket 状态和对象存储服务可用性
区域异常 3. 区域状态说明示意图 PVC 创建失败 平台异常,需要让用户稍后重新尝试

当区域显示为「区域加载中」「区域下线」「存储异常」或「区域异常」时,暂不支持对该区域发起缓存预热,请等待区域恢复或更换其他可用区域。

当区域显示为「缓存未同步」「缓存同步中」「缓存同步完成」或「预热失败」时,仍可以选择该区域进行缓存预热。缓存同步中的区域可以继续挂载使用,也可以继续对其他目录发起预热;预热失败时,建议检查对象存储配置、权限或目录后重新预热。

4. 功能效果

冷启动定义:模型服务从零实例状态(缩放到 0)接收请求到准备处理第一个请求的时间间隔,是影响部署响应能力、服务等级协议(SLA)和成本控制的关键因素。为了优化冷启动,我们将介绍以下策略:对象存储加速,它通过提前将 S3 数据缓存到本地,从而提高性能。

性能提升显著

冷启动带来的挑战:

  • 用户体验:首次请求响应时间长,影响用户满意度
  • 成本控制:频繁冷启动导致资源浪费和成本增加
  • 服务可用性:冷启动时间过长可能导致服务超时

S3 存储加速的优化策略:

  1. 预取机制:利用 JuiceFS 预取功能,后台线程提前下载模型权重和数据
  2. 分布式缓存:将模型权重缓存在分布式文件系统中,避免重复下载
  3. 智能预热:对高频访问的模型进行预热处理
部署方式 冷启动时间 性能提升
传统方式 数分钟(如 Stable Diffusion XL)
S3 加速 10 秒以内 提升 90% 以上

资源利用优化

  • 读取加速:本地缓存机制提供接近本地磁盘的读取速度
  • 并行下载:多线程并行下载,充分利用网络带宽
  • 智能缓存:自动管理缓存空间,优先缓存高频访问数据
  • 按需加载:仅在首次访问时从云端拉取数据,避免重复下载
  • 空间复用:多个任务可共享同一份缓存数据,节省存储空间

5. 应用场景

5.1. 模型版本管理与无停机更新

在生产环境中,AI 模型需要频繁更新迭代,传统方式需要重新构建和发布 Docker 镜像,过程繁琐且耗时。

S3 存储加速解决方案:

  • 解耦模型与镜像:将模型文件存储在 S3 中,Docker 镜像只包含运行环境,实现模型与代码的分离
  • 快速模型切换:通过更新 S3 中的模型文件,无需重建镜像即可完成模型更新
  • A/B 测试:可同时挂载多个模型版本,方便进行对比测试

实际效果:

  • 模型更新时间:从数小时缩短至几分钟
  • 运维效率:提升 80% 以上

5.2. 弹性扩容与负载均衡

在业务高峰期或突发流量场景下,需要快速扩容计算节点以应对负载增长。

S3 存储加速解决方案:

  • 快速节点启动:新扩容的节点可直接使用缓存的模型数据,避免重复下载
  • 智能缓存预热:新节点启动时自动预热常用模型,减少首次访问延迟
  • 跨区域部署:支持在不同区域快速部署节点,提升服务覆盖范围

实际效果:

  • 扩容时间:从传统的 10-30 分钟缩短至 1-3 分钟
  • 资源利用率:提升 60% 以上
  • 服务稳定性:显著提升,支持平滑扩缩容

6. 操作流程一览

6. 操作流程一览示意图

7. 注意事项

  • 对象存储加速是缓存能力,不是新的持久化存储。请继续以对象存储作为源数据保存位置。
  • 删除缓存不会删除对象存储源数据,而是删除 JuiceFS 文件系统中对应目录的数据记录/元数据,使平台不再将该目录作为已缓存数据展示。对象存储源数据更新后,缓存不会自动同步,建议重新执行缓存预热。
  • 不建议直接选择 Bucket 根目录作为加速目录。请勿停用或修改 AccessKey / SecretKey。
  • 任务运行区域应与对象存储加速区域保持一致。元数据更新中时不可重复发起预热或删除操作。缓存同步中仍可挂载使用,但未缓存数据首次访问可能较慢。
  • 区域下线、区域异常或配置失效时,请更换可用区域、检查对象存储配置,或联系平台管理员处理。

8. 常见问题

8.1. 配置区域后,数据是否已经缓存完成?

不是。配置区域只表示该对象存储配置已经具备挂载和缓存能力。数据是否被缓存,需要用户点击「预热缓存」并选择目录执行预热。

8.2. 预热缓存会删除对象存储数据吗?

不会。预热缓存只会将对象存储中的数据加载到加速区域缓存中,不会修改或删除对象存储源数据。

8.3. 删除缓存会删除对象存储源文件吗?

不会。删除缓存只会移除平台侧 JuiceFS 文件系统中对应目录的数据记录,并更新加速用量,不会删除对象存储中的源文件,也不会删除对象存储配置。

8.4. 为什么按钮显示“元数据更新中”?

因为系统正在同步或更新目录相关信息。在该操作完成前,目录树可能不是最新状态,因此暂时不允许重复预热或删除。更新完成后,按钮会恢复可点击。

8.5. 缓存同步中还能使用吗?

可以。只要区域可用,任务就可以挂载使用。缓存同步中表示部分数据仍在后台预热,首次访问未缓存完成的数据时,可能仍需从对象存储读取。

8.6. 为什么预热进度可能变化?

后端会持续巡检缓存同步情况,进度仅作为参考,可能不是严格线性增长。用户主要关注区域是否可用,以及是否存在异常状态。

8.7. 为什么删除缓存后,加速用量变少了?

删除缓存后,平台会移除所选目录对应的数据记录,因此加速用量会减少。首次配置区域完成且尚未预热任何数据时,加速用量可能显示为 0B。后续执行过预热或删除缓存后,即使删除了全部可选缓存目录,系统仍会保留外层父目录等基础目录信息,因此加速用量通常不会回到 0B,可能显示为 4KB 左右。

8.8. 多个任务共享同一份缓存是什么意思?

同一加速区域内,多个任务访问相同对象存储目录时,可以复用该区域已有的缓存数据,不需要每个任务都重新从对象存储下载一遍。

例如,某个模型目录已经预热到「上海一区」。后续多个任务如果都运行在「上海一区」,并挂载同一个对象存储目录,就可以复用这份缓存,从而减少模型加载时间。