训练与评测数据(指标、检查点、rollout、轨迹)都通过统一的存储层保存。默认情况下,数据写入本地磁盘。要使用云存储(GCS、S3、Azure),只需把路径改成 URI 即可。
如需云存储支持:
uv pip install 'tinker-cookbook[cloud]'
训练
把云 URI 作为
log_dir 传入:# Local (default)ml_logger = setup_logging(log_dir="/tmp/my_run", config=config)# GCSml_logger = setup_logging(log_dir="gs://bucket/my_run", config=config)# S3ml_logger = setup_logging(log_dir="s3://bucket/my_run", config=config)
所有训练数据(指标、检查点、rollout)都会自动写入云路径。
评测
把云 URI 作为
save_dir 传入:# Localconfig = BenchmarkConfig(save_dir="/tmp/evals/run1")# GCSconfig = BenchmarkConfig(save_dir="gs://bucket/evals/run1")result = await run_benchmark("gsm8k", client, renderer, config)
读回数据
from tinker_cookbook.stores import TrainingRunStore, storage_from_uri# Works with local paths and cloud URIsstore = TrainingRunStore(storage_from_uri("gs://bucket/my_run"))config = store.read_config()metrics = store.read_metrics()rollouts = store.read_rollouts(0)checkpoints = store.read_checkpoints()
支持的后端
URI | 存储后端 |
/local/path | 本地文件系统 |
gs://bucket/prefix | Google Cloud Storage |
s3://bucket/prefix | Amazon S3 |
az://container/prefix | Azure Blob Storage |
云后端的 flush
为了性能,云端写入会先在本地暂存。请在检查点处调用
flush(),以确保数据被上传:storage = storage_from_uri("gs://bucket/run")store = TrainingRunStore(storage)for step in range(num_steps):store.write_metrics({"loss": loss}, step=step)if step % save_every == 0:storage.flush()
或者使用上下文管理器实现自动 flush:
with storage_from_uri("gs://bucket/run") as storage:store = TrainingRunStore(storage)# ... training ...# auto-flush on exit