对象存储加速使用说明
1. 功能简介
Section titled “1. 功能简介”对象存储加速支持用户将 S3 兼容对象存储接入平台,例如阿里云 OSS、腾讯云 COS、火山引擎 TOS、华为云 OBS、自建 MinIO 等,并通过 JuiceFS 文件系统和缓存加速能力,将对象存储中的模型、数据集等内容挂载到任务容器中使用。
本功能适用于大模型推理、训练数据读取、模型冷启动优化等场景。用户可以按目录将对象存储中的数据预热到指定加速区域,减少任务运行时从远端对象存储读取数据的等待时间。对象存储加速是一项缓存加速能力,不是新的持久化存储服务。源数据仍保存在用户的对象存储中。
2. 操作流程
Section titled “2. 操作流程”2.1. 对象存储加速
Section titled “2.1. 对象存储加速”进入存储加速管理页面后,在左侧菜单点击「对象存储加速」,进入对象存储加速管理页面。
页面中会展示当前账号下已创建的对象存储加速配置,包括配置名称、云服务商、最后预热时间、加速用量、区域和操作入口。
2.2. 获取对象存储配置
Section titled “2.2. 获取对象存储配置”2.2.1. 权限说明
Section titled “2.2.1. 权限说明”必须具备以下权限:
-
ListObjectsV2:用于校验 S3 加速页面所提供的目录是否存在。
- ListObjectsV2Input。
-
PutObject:用于校验对象存储是否具备写权限。此操作会创建临时文件进行校验,原因在于对象存储会生成 uuid 并放置到对象存储目录下。
- PutObjectInput。
-
DeleteObject:用于清理由 PutObject 创建的临时文件。
- DeleteObjectInput。
在使用过程中,请勿停用访问密钥(AK)、安全密钥(SK)或对其进行修改,以免功能不可用,对您的使用体验造成不良影响。
2.2.2. 阿里云 OSS
Section titled “2.2.2. 阿里云 OSS”可参照 这篇文档 了解如何创建 Access Key 和 Secret Key。
进入对象存储的控制台,找到 Access Key 入口:
创建一个 Access Key 用于挂载:
2.2.3. 腾讯云 COS
Section titled “2.2.3. 腾讯云 COS”Secret ID(AccessKey)和 Secret Key 需要在 API 密钥管理 中查看或创建。
2.2.4. 自建 S3 - MinIO
Section titled “2.2.4. 自建 S3 - MinIO”理论上兼容 MinIO 和 RustFS
2.2.5. 火山引擎 TOS
Section titled “2.2.5. 火山引擎 TOS”可参照 这篇文档 了解如何创建 Access Key 和 Secret Key。
火山引擎 TOS 为每个区域都提供了公网和内网 endpoint 链接,你可以根据实际的场景选用。
Endpoint 获取:需要选择 S3 Endpoint
在下面 2.3 章节中配置对象存储时,需要使用携带 s3 的 Endpoint
2.2.6. 华为云 OBS
Section titled “2.2.6. 华为云 OBS”可参照这篇文档 了解如何创建 Access Key 和 Secret Key。
需在对应的 bucket 中设置桶策略,如下图
2.3. 配置对象存储加速
Section titled “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.4. 配置加速区域
Section titled “2.4. 配置加速区域”对象存储配置保存成功后,需要为该配置选择加速区域。在列表中点击「配置区域」,选择需要启用的区域。
配置加速区域主要用于准备对象存储加速能力。配置完成后,该区域具备后续挂载和缓存能力,但数据不会自动全部缓存到本地。
也就是说,配置区域不等于缓存预热。首次配置完成后,区域通常显示为「缓存未同步」状态。此时区域已经可以挂载使用,但首次访问数据时可能仍需要从对象存储读取。建议在正式使用前,按需执行「预热缓存」。
此时系统正在为该区域启用对象存储加速能力,请等待加载完成再进行或许操作。
此时该区域的对象存储创建完成,因为还没有进行数据预热,所以显示加速用量为 0B。
2.5. 预热缓存
Section titled “2.5. 预热缓存”区域配置完成后,可以点击「预热缓存」选择需要提前缓存的数据目录。
预热缓存需要同时选择预热区域和预热目录。用户可以选择一个或多个可用区域,也可以选择一个或多个目录进行预热。系统会将所选目录中的数据提前加载到对应加速区域,后续任务访问这些数据时可以减少从对象存储读取的等待时间。
预热缓存弹窗中的目录树采用按需加载方式。打开弹窗时,仅展示当前目录下的第一层目录;点击目录左侧箭头后,再加载下一层子目录。当前仅展示目录和子目录,不展示具体文件。
点击「开始预热」后,系统会先同步目录信息,使平台能够识别所选目录;随后在后台执行缓存预热,将所选目录下的数据加载到指定加速区域。
目录信息同步期间,「预热缓存」和「删除缓存」入口会短暂置灰并显示「元数据更新中」。同步完成后,按钮恢复可点击。后续缓存预热会继续在后台执行,不影响已可用区域的挂载使用。
2.6. 删除缓存
Section titled “2.6. 删除缓存”如果某些目录的数据不再需要加速,可以点击「删除缓存」释放缓存空间。
删除缓存用于释放所选目录对应的加速用量。删除后,平台会移除 JuiceFS 文件系统中对应目录的数据记录,并更新加速用量。该操作不会删除对象存储中的源文件,也不会删除对象存储配置。后续任务再次访问这些数据时,可能需要重新从对象存储读取,或重新执行缓存预热。
删除缓存弹窗中展示的是当前配置下已缓存目录的集合。目录树仅展示目录名称和缓存用量,不展示具体文件。
如果删除了全部可选缓存目录,加速用量会明显降低。但由于系统会保留外层父目录等基础目录信息,加速用量通常不会回到 0B,可能显示为 4KB 左右,请以页面实际展示为准。
删除缓存过程中,平台会更新缓存状态,因此该操作为异步执行。在更新完成前,「预热缓存」和「删除缓存」入口会显示为「元数据更新中」,暂时不可重复点击。
2.7. 任务发布时挂载
Section titled “2.7. 任务发布时挂载”在任务发布页面,用户可以选择已配置并启用区域的对象存储加速配置进行挂载。
发布任务时,需要选择任务运行区域。任务运行区域应与对象存储加速区域保持一致。例如,对象存储加速配置已启用「福建五区」「浙江六区」,任务也应选择「福建五区」或「浙江六区」的计算资源。
在「存储配置」区域选择对应的对象存储加速配置,并填写容器内挂载路径。挂载路径需以 / 开头,例如:
/mnt/data/root/.cache/huggingface这里将对象存储 Bucket 中的 /qwen1-5/hub/挂载到了容器中的 /root/.cache/huggingface 目录中。
任务启动后,平台会将对象存储加速配置挂载到容器内指定路径。如果该区域缓存已同步,任务可以更快读取数据;如果缓存未同步或缓存已被删除,任务首次访问时可能需要从对象存储重新读取。
2.8. 验证挂载
Section titled “2.8. 验证挂载”提交任务后,容器启动时会自动挂载所选对象存储加速配置。待容器启动完成后,可进入容器并验证挂载结果。
用户可以查看容器内挂载路径下的目录和文件是否存在,例如:
ls /root/.cache/huggingface如果能够看到对象存储中对应目录下的数据,说明挂载成功。
2.9. 子账号授权
Section titled “2.9. 子账号授权”2.9.1. 授权操作
Section titled “2.9.1. 授权操作”2.9.1.1. 腾讯云
Section titled “2.9.1.1. 腾讯云”- 找到对象存储。
- 点击存储桶列表。
2.9.1.2. 阿里云
Section titled “2.9.1.2. 阿里云”- 找到对象存储。
- 找到要设置权限的桶,然后点进去。
- 设置权限。
2.9.1.3. 火山云
Section titled “2.9.1.3. 火山云”- 找到对象存储。
- 找到要设置的桶
- 设置权限
2.9.2. IAM 权限和桶权限的关系
Section titled “2.9.2. IAM 权限和桶权限的关系”
2.9.2.1. 核心区别与重叠
Section titled “2.9.2.1. 核心区别与重叠”为了更具体地理解,我们来看看两者的对比:
场景一:简单权限控制(within one account)
“我希望我创建的某个 IAM 用户只能读取 A 桶。”
- 方案 A (使用 IAM):在 IAM 中,给该用户附加一个策略,策略内容为对
arn:aws:s3:::bucket-A资源拥有s3:GetObject和s3:ListBucket权限。 - 方案 B (使用 Bucket Policy):在 A 桶的策略中,添加一条语句,允许该用户的 ARN 执行
s3:GetObject和s3:ListBucket。 - 结论:两种方案效果几乎一样,任选其一即可。通常更推荐使用 IAM 方案,因为权限集中在 IAM 控制台,更易于统一管理身份及其权限。
3. 区域状态说明
Section titled “3. 区域状态说明”对象存储加速列表中会展示每个加速区域的状态。用户可根据区域状态判断当前区域是否可用、缓存是否完成,以及是否需要处理异常。
状态 | 含义 | 用户处理建议 |
区域加载中 | 系统正在为该区域启用对象存储加速能力 | 请等待加载完成 |
缓存未同步 | 区域已可用,但数据尚未完成缓存预热,首次访问可能较慢 | 建议点击「预热缓存」后使用 |
缓存同步中 | 区域正在进行缓存预热 | 可继续使用,未缓存完成的数据首次访问可能较慢 |
缓存同步完成 | 缓存预热已完成 | 可正常使用 |
预热失败 | 本次缓存预热失败,缓存可能不是最新状态 | 检查配置、权限或目录后重新预热 |
区域下线 | 该加速区域当前不可用 | 请更换其他可用区域 |
存储异常 | 对象存储服务返回权限或服务错误,平台暂时无法正常访问对象存储 | 检查 AK/SK 权限、Bucket 状态和对象存储服务可用性 |
区域异常 | PVC 创建失败 | 平台异常,需要让用户稍后重新尝试 |
当区域显示为「区域加载中」「区域下线」「存储异常」或「区域异常」时,暂不支持对该区域发起缓存预热,请等待区域恢复或更换其他可用区域。
当区域显示为「缓存未同步」「缓存同步中」「缓存同步完成」或「预热失败」时,仍可以选择该区域进行缓存预热。缓存同步中的区域可以继续挂载使用,也可以继续对其他目录发起预热;预热失败时,建议检查对象存储配置、权限或目录后重新预热。
4. 功能效果
Section titled “4. 功能效果”冷启动定义:模型服务从零实例状态(缩放到 0)接收请求到准备处理第一个请求的时间间隔,是影响部署响应能力、服务等级协议(SLA)和成本控制的关键因素。为了优化冷启动,我们将介绍以下策略:对象存储加速,它通过提前将 S3 数据缓存到本地,从而提高性能。
性能提升显著
冷启动带来的挑战:
- 用户体验:首次请求响应时间长,影响用户满意度
- 成本控制:频繁冷启动导致资源浪费和成本增加
- 服务可用性:冷启动时间过长可能导致服务超时
S3 存储加速的优化策略:
- 预取机制:利用 JuiceFS 预取功能,后台线程提前下载模型权重和数据
- 分布式缓存:将模型权重缓存在分布式文件系统中,避免重复下载
- 智能预热:对高频访问的模型进行预热处理
部署方式 | 冷启动时间 | 性能提升 |
传统方式 | 数分钟(如 Stable Diffusion XL) | |
S3 加速 | 10 秒以内 | 提升 90% 以上 |
资源利用优化
- 读取加速:本地缓存机制提供接近本地磁盘的读取速度
- 并行下载:多线程并行下载,充分利用网络带宽
- 智能缓存:自动管理缓存空间,优先缓存高频访问数据
- 按需加载:仅在首次访问时从云端拉取数据,避免重复下载
- 空间复用:多个任务可共享同一份缓存数据,节省存储空间
5. 应用场景
Section titled “5. 应用场景”5.1. 模型版本管理与无停机更新
Section titled “5.1. 模型版本管理与无停机更新”在生产环境中,AI 模型需要频繁更新迭代,传统方式需要重新构建和发布 Docker 镜像,过程繁琐且耗时。
S3 存储加速解决方案:
- 解耦模型与镜像:将模型文件存储在 S3 中,Docker 镜像只包含运行环境,实现模型与代码的分离
- 快速模型切换:通过更新 S3 中的模型文件,无需重建镜像即可完成模型更新
- A/B 测试:可同时挂载多个模型版本,方便进行对比测试
实际效果:
- 模型更新时间:从数小时缩短至几分钟
- 运维效率:提升 80% 以上
5.2. 弹性扩容与负载均衡
Section titled “5.2. 弹性扩容与负载均衡”在业务高峰期或突发流量场景下,需要快速扩容计算节点以应对负载增长。
S3 存储加速解决方案:
- 快速节点启动:新扩容的节点可直接使用缓存的模型数据,避免重复下载
- 智能缓存预热:新节点启动时自动预热常用模型,减少首次访问延迟
- 跨区域部署:支持在不同区域快速部署节点,提升服务覆盖范围
实际效果:
- 扩容时间:从传统的 10-30 分钟缩短至 1-3 分钟
- 资源利用率:提升 60% 以上
- 服务稳定性:显著提升,支持平滑扩缩容
6. 操作流程一览
Section titled “6. 操作流程一览”
7. 注意事项
Section titled “7. 注意事项”- 对象存储加速是缓存能力,不是新的持久化存储。请继续以对象存储作为源数据保存位置。
- 删除缓存不会删除对象存储源数据,而是删除 JuiceFS 文件系统中对应目录的数据记录/元数据,使平台不再将该目录作为已缓存数据展示。对象存储源数据更新后,缓存不会自动同步,建议重新执行缓存预热。
- 不建议直接选择 Bucket 根目录作为加速目录。请勿停用或修改 AccessKey / SecretKey。
- 任务运行区域应与对象存储加速区域保持一致。元数据更新中时不可重复发起预热或删除操作。缓存同步中仍可挂载使用,但未缓存数据首次访问可能较慢。
- 区域下线、区域异常或配置失效时,请更换可用区域、检查对象存储配置,或联系平台管理员处理。
8. 常见问题
Section titled “8. 常见问题”8.1. 配置区域后,数据是否已经缓存完成?
Section titled “8.1. 配置区域后,数据是否已经缓存完成?”不是。配置区域只表示该对象存储配置已经具备挂载和缓存能力。数据是否被缓存,需要用户点击「预热缓存」并选择目录执行预热。
8.2. 预热缓存会删除对象存储数据吗?
Section titled “8.2. 预热缓存会删除对象存储数据吗?”不会。预热缓存只会将对象存储中的数据加载到加速区域缓存中,不会修改或删除对象存储源数据。
8.3. 删除缓存会删除对象存储源文件吗?
Section titled “8.3. 删除缓存会删除对象存储源文件吗?”不会。删除缓存只会移除平台侧 JuiceFS 文件系统中对应目录的数据记录,并更新加速用量,不会删除对象存储中的源文件,也不会删除对象存储配置。
8.4. 为什么按钮显示“元数据更新中”?
Section titled “8.4. 为什么按钮显示“元数据更新中”?”因为系统正在同步或更新目录相关信息。在该操作完成前,目录树可能不是最新状态,因此暂时不允许重复预热或删除。更新完成后,按钮会恢复可点击。
8.5. 缓存同步中还能使用吗?
Section titled “8.5. 缓存同步中还能使用吗?”可以。只要区域可用,任务就可以挂载使用。缓存同步中表示部分数据仍在后台预热,首次访问未缓存完成的数据时,可能仍需从对象存储读取。
8.6. 为什么预热进度可能变化?
Section titled “8.6. 为什么预热进度可能变化?”后端会持续巡检缓存同步情况,进度仅作为参考,可能不是严格线性增长。用户主要关注区域是否可用,以及是否存在异常状态。
8.7. 为什么删除缓存后,加速用量变少了?
Section titled “8.7. 为什么删除缓存后,加速用量变少了?”删除缓存后,平台会移除所选目录对应的数据记录,因此加速用量会减少。首次配置区域完成且尚未预热任何数据时,加速用量可能显示为 0B。后续执行过预热或删除缓存后,即使删除了全部可选缓存目录,系统仍会保留外层父目录等基础目录信息,因此加速用量通常不会回到 0B,可能显示为 4KB 左右。
8.8. 多个任务共享同一份缓存是什么意思?
Section titled “8.8. 多个任务共享同一份缓存是什么意思?”同一加速区域内,多个任务访问相同对象存储目录时,可以复用该区域已有的缓存数据,不需要每个任务都重新从对象存储下载一遍。
例如,某个模型目录已经预热到「上海一区」。后续多个任务如果都运行在「上海一区」,并挂载同一个对象存储目录,就可以复用这份缓存,从而减少模型加载时间。







