CoreWeave

How to Configure CoreWeave AI Object Storage for Faster Reads and Writes at Lower Cost

7.1内容质量
How to Configure CoreWeave AI Object Storage for Faster Reads and Writes at Lower Cost

TL;DR · AI 摘要

CoreWeave AI Object Storage Setup: LOTA, Writes, Archive Published on September 16, 2026 7 min read How to Configure Cor...

核心要点

  • 主题聚焦:How to Configure CoreWeave AI Object Storage for
  • 来源:CoreWeave,建议结合原文判断细节。
  • AI 分析暂不可用,本条为保底评分与摘要。
#AI#编程#后端
打开原文

CoreWeave AI 对象存储设置:LOTA、写入、归档

发布于

2026年9月16日

7

分钟阅读

如何配置 CoreWeave AI 对象存储以实现更快速的读取和写入并降低成本

设置 LOTA 缓存、预加载、跨区域写入和归档层级,附带 Python 示例。(共2部分的第2部分)

作者

Jeff Braunstein

Sean Derrington

已复制

CoreWeave AI 对象存储(CAIOS)中有三个要素决定了 GPU 读取速度、写入耗时以及存储非活跃数据的费用:本地对象传输加速器(LOTA)、跨区域写入加速和归档层级。这三个都是配置项而非架构设计,且无需重写应用程序。

第1部分介绍了每个功能的作用及重要性。在第2部分中,我们将演示如何配置这些功能:将客户端指向 LOTA 端点、在首个训练周期前预加载缓存、在存储桶上启用跨区域写入,以及设置自动老化检查点的归档策略。每个示例都包含可复制和调整的代码:Python、boto3 或用于存储桶设置的 CLI 命令。

选择存储类别和计费层级

首先决定存储桶所在的区域,然后选择数据的存储方式和计费方式。

我们提供一个简单的决策:是否启用新的归档计费层级。这取决于两个 S3 API 参数值:

每个存储桶可以有四种存储计费层级,它们的关系如下:

存储类别

存储计费层级

数据到达方式

STANDARD

Hot

最近访问

Warm

7天内无访问

Cold

30天以上无访问

STANDARD_IA

Archive

可选并自定义

使用 LOTA 加速读取

LOTA 为计算节点提供本地 NVMe 端点以降低读取延迟。S3 客户端的其他所有设置保持不变,当对象存在时,读取操作将从节点本地的 NVMe 缓存中获取。

影响读取延迟改善程度的三个因素:

  • 对象大小,
  • 使用分段上传,以及
  • 在作业开始前预加载缓存。

LOTA 缓存大于 4 MB 的对象;小于该尺寸的对象将直接从持久化存储读取。对于大对象,最佳实践是使用分段上传。对象被分割为并行上传的多个部分以充分利用可用带宽,较小的分段可减少网络错误的影响。LOTA 还会将这些分段分布到多个 GPU 节点上,使读取操作能同时从多个节点获取数据,而通过单次 PutObject 上传的对象则仅存储在单一节点上。

预加载 LOTA 缓存

在首个训练周期中,对象会从存储桶读取并在首次请求时存入缓存。首次读取需支付完整的存储桶延迟成本,之后每次缓存未命中都会增加不必要的延迟。

预加载方案则在作业开始前就将预定义数据集填充到缓存中。这能显著提升首次训练周期的缓存命中率,而非让命中率随着作业运行逐渐提升。

要预加载作业所需的数据集,请对数据集中的每个对象发起带有零长度范围头的 HeadObject 请求:

code
1
from
botocore.client
import
Config
2
from
concurrent.futures
import
ThreadPoolExecutor
3
4
s3 = boto3.client(
5
"s3"
,
6
endpoint_url=
"http://cwlota.com"
,
7
config=Config(
8
max_pool_connections=
32
,
9
s3={
"addressing_style"
:
"virtual"
},
10
),
11
)
12
13
def
prestage
(
key
):
14
s3.head_object(
15
Bucket=
"training-data"
,
16
Key=key,
17
Range=
"bytes=0-0"
,
18
)
19
20
with
ThreadPoolExecutor(max_workers=
32
)
as
pool:
21
list
(pool.
map
(prestage, shard_keys))
22
23
24
25

LOTA 会识别每个范围的 HEAD 请求,从存储桶中获取完整的对象并放入缓存。不会有任何响应体返回给客户端。将作业需要读取的对象填充到 shard_keys 中,第一个训练周期会从本地读取。

需要了解的三个要点:

  • 仅通过 LOTA 端点有效:对主端点发起相同请求只会返回元数据且不会填充任何内容
  • 该操作会计入访问次数:预加载会将对象移动到热存储层级,这对预加载已降级的数据尤为重要
  • 当首次读取延迟是瓶颈时值得使用:第一个训练周期的读取、加载推理模型权重、检查点恢复等场景

启用跨区域写入加速

跨区域写入功能在 CoreWeave 任意区域对之间的存储桶级别启用。

与 LOTA 类似,启用跨区域写入后,应用程序无需任何修改。应用继续向 LOTA 端点写入数据,对象字节会持久化存储在本地区域并以本地延迟获得确认。元数据会同步写入存储桶的远程区域,因此存储桶呈现统一的命名空间。无论从哪个区域读取,所有读取者看到的都是相同对象。对象数据会在后台迁移到远程区域。

code
1
s3.upload_file(
2
"/tmp/checkpoint-4200.pt"
,
3
"checkpoints"
,
4
"run-17/checkpoint-4200.pt"
,
5
)
6

数据迁移时间:迁移将在24小时内入队,通常在72小时内完成,具体时间取决于对象大小和网络状况。这对于检查点来说通常是可接受的,因为重启时会从本地区域读取。如果对象必须在截止时间前到达远程区域,请预留72小时。

检查点频率:检查点写入期间训练会暂停,因此频率始终是恢复粒度和训练时间的权衡。消除每次提交的跨区域往返延迟消除了这种权衡。如果因提交延迟高而限制了检查点频率,现在值得重新测试可维持的频率。

启用归档存储层级

与跨区域写入加速类似,归档存储层级在存储桶级别启用。有两种方式可以使用新的归档存储层级:直接写入归档存储,或在存储桶上启用自动归档。

‍ 选项1:直接写入归档存储。如果已知对象是长期记录而非近期需要读取的数据,此方法效果最佳。与热存储、温存储和冷存储计费层级相比,写入归档存储会带来额外延迟,因此需要考虑应用程序的延迟容忍度。

code
1
s3.upload_file(
2
"/tmp/final-weights.pt"
,
3
"checkpoints"
,
4
"run-17/final-weights.pt"
,
5
ExtraArgs={
"StorageClass"
:
"STANDARD_IA"
},
6
)
7
8
code

选项 2:在存储桶中启用自动归档功能。当您希望通过基于最后访问时间的规则将对象迁移至归档层级时,使用此方法。两个字段控制此选项:

1 # 启用 60 天无访问自动归档 2 cwic cwobject bucket update my-bucket \ 3 --archive-enabled=true \ 4 --archive-after-last-access-days=60 5

code

字段

作用说明

--archive-enabled

为存储桶启用自动归档功能

--archive-after-last-access-days

自最后访问时间(或对象从未被读取时自创建时间)起的天数;当 --archive-enabled 为 true 时必填

该阈值基于最后访问时间,可自定义且最低为 60 天。该规则适用于 STANDARD 对象版本,不会重新处理已处于 STANDARD_IA 的对象。

### 从归档存储层级读取数据

由于无需恢复步骤,归档对象可通过标准 GET 操作读取,始终使用其原有的存储桶和密钥:

1 s3.download_file( 2 "checkpoints" , 3 "run-17/final-weights.pt" , 4 "/tmp/final-weights.pt" , 5 ) 6

code

差异在于首次字节时间(time-to-first-byte),其比其他计费层级更长,整体吞吐量也更低。这是需要考虑的应用场景。如果延迟敏感,可在批量读取前将对象复制到 STANDARD 存储类别。复制自身并指定新存储类是标准 S3 模式。在启用版本控制的存储桶中,此操作会创建新版本而非替换现有版本,这在处理版本历史的工具中需要特别注意。

1 s3.copy_object( 2 Bucket= "checkpoints" , 3 Key= "run-17/final-weights.pt" , 4 CopySource={ "Bucket" : "checkpoints" , "Key" : "run-17/final-weights.pt" }, 5 StorageClass= "STANDARD" , 6 MetadataDirective= "COPY" , 7 ) 8

code

## 构建检查点保留策略

假设某个训练运行在拥有 GPU 的区域,但将检查点写入其他地区的存储桶。以下是您需要依次做出的五个决策:

- 检查点通过 LOTA 端点提交。作业在运行的区域写入数据。启用跨区域写入后,每次提交会本地确认并在后台迁移至远程区域。训练脚本中没有任何代码会感知到这些操作。

- 考虑近期检查点的读取延迟。由于它们正在被读取或至少最近被写入,因此保留在 STANDARD 层级。从先前检查点恢复的延迟低于归档层级。

- 自动归档处理尾部。设置阈值,最低为 60 天。需要足够长以确保仍在运行中的对象已被访问,同时足够短以避免已完成运行的检查点过长时间产生冷存储费用。

- 最终权重可跳过阶梯。如果运行已完成且最终产物是记录而非重启候选,可直接写入 STANDARD_IA。

- 在计划批量读取前进行复制。如果提前知道应用需要一组对象,提前复制可消除首次字节时间的延迟。此操作不会产生检索、访问或操作费用。

CoreWeave Mission Control ® 让您无需任何设置即可全面掌握存储资源。开箱即用的 Grafana 仪表板和存储指标,以及成本与 CAIOS 使用监控指南中包含按存储桶分组的 AI 对象存储消耗完整查询示例。

启用自动化归档后,可在 AI 对象存储使用面板中查看 Auto Archive 面板组,并基于相同指标构建自定义视图。观察随着闲置对象迁移,层级分布的变化情况。

您也可以使用 Mission Control MCP,它以只读工具的形式向兼容 MCP 的客户端暴露指标、日志和 AI 对象存储存储桶。该功能目前处于公开预览阶段。

## 下一步

至此已完成完整的 CAIOS 配置:端点变更、预分阶段传输、按存储桶启用以及归档策略。其中两项可立即操作,另外两项需要先为您的账户开启。

立即开始使用 LOTA 和预分阶段传输。跨区域写入加速和归档功能均已可用。联系您的客户经理,了解这些功能如何提升您的 AI 工作负载效率。

#### 了解更多关于 AI 对象存储的内容:

- 博客第一部分:CoreWeave AI 对象存储新功能:跨区域写入与归档存储  
  [Blog Part 1 : New in CoreWeave AI Object Storage: Cross-Region Writes and Archive Storage](链接)

- CoreWeave AI 对象存储(CAIOS)文档:LOTA 最佳实践、预分阶段传输和分段上传指南  
  [CoreWeave AI Object Storage (CAIOS) documentation : LOTA best practices, pre-staging, and multipart upload guidance](链接)

- 按需网络研讨会:如何突破存储层级限制、权衡取舍并避免 AI 存储成本失控  
  [On-demand webinar : How to Move Beyond Tiers, Tradeoffs, and Runaway Costs in AI Storage](链接)

在 AI 对象存储系列第二部分中,您将学习如何通过 Python 示例配置 LOTA、预分阶段传输、跨区域写入加速以及归档层级。

分享本文:  
[Share this article](链接)