LLaMA-Factory AWS S3 文件读写
2025-07-11
深度学习
00

目录

1. S3 数据集怎么用?
步骤一:数据格式要对
步骤二:配置 dataset_info.json
步骤三:搞定权限
2. 多模态图片也能直接用 S3 路径
3. fsspec 到底是啥?和 boto3 有啥区别?
fsspec 简单说
fsspec 和 boto3 对比
4. 总结
5. 常见问题

最近用 LLaMA-Factory 训练大模型,数据都放在 AWS S3 上,发现其实不用自己写 boto3,直接用 S3 路径就能搞定。这里把我的踩坑和经验都写下来,帮你少走弯路。

1. S3 数据集怎么用?

LLaMA-Factory 支持直接从 S3 读取数据集,不用你自己写 boto3 脚本,也不用提前把数据下载到本地。你只要在配置里写上 S3 路径,比如 s3://my-bucket/data.jsonl,剩下的都交给 LLaMA-Factory。

步骤一:数据格式要对

  • 支持的格式有:alpacasharegpt,文件类型支持 jsonjsonlcsvparquetarrow

  • 你只要保证内容和本地训练时一样,比如 alpaca 格式长这样:

    json
    展开代码
    [ { "instruction": "请写一首诗", "input": "", "output": "床前明月光,疑是地上霜。" } ]
  • 多模态(图文)训练时,图片字段直接写 S3 路径:

    json
    展开代码
    { "instruction": "描述这张图片", "input": "", "output": "这是一只猫。", "image": "s3://your-bucket/path/to/cat.jpg" }

步骤二:配置 dataset_info.json

data/dataset_info.json 里加一段:

json
展开代码
"my_s3_dataset": { "cloud_file_name": "s3://your-bucket/path/to/data.jsonl", "formatting": "alpaca" }

训练时参数写 dataset: my_s3_dataset 就行。

步骤三:搞定权限

  • LLaMA-Factory 用 fsspec 访问 S3,默认先试匿名,不行就用你本地的 AWS 配置(比如 ~/.aws/credentials)。
  • 你也可以用环境变量 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY,或者直接用 EC2 的 IAM 角色。

2. 多模态图片也能直接用 S3 路径

如果你训练多模态模型,json 里图片字段直接写 S3 路径,LLaMA-Factory 会自动用 fsspec 读取图片。你不用提前下载,也不用改代码,和本地图片用法一模一样。

3. fsspec 到底是啥?和 boto3 有啥区别?

fsspec 简单说

  • fsspec 是 Python 的一个库,让你用同一套代码访问本地、S3、GCS、HDFS 等各种存储。
  • 你只要写 fsspec.open("s3://bucket/file"),就像操作本地文件一样操作 S3 文件。

fsspec 和 boto3 对比

特性fsspecboto3
适用场景数据读写、批量处理S3 全功能管理
易用性非常高需要写较多代码
性能和 boto3 基本一致原生
稳定性很高官方
认证方式支持多种官方
生态数据科学主流AWS 官方
  • 速度:fsspec 其实底层还是用 boto3 或 s3fs,速度差不多。大文件/多文件时,fsspec 支持分块和并发,性能很不错。
  • 稳定性:fsspec 很成熟,pandas、dask、huggingface datasets 都在用,放心用。
  • 功能:boto3 能做 S3 的所有事(比如 bucket 管理、权限、生命周期),fsspec 只管文件读写,但对训练来说已经够用了。

4. 总结

  • LLaMA-Factory 直接支持 S3 路径,文本和图片都能用,不用自己写 boto3。
  • 数据格式和本地一样,json 里图片字段直接写 S3 路径。
  • fsspec 速度快、稳定、易用,适合数据读写,和 boto3 性能相当。
  • 只要配置好 AWS 权限,剩下的都交给 LLaMA-Factory。

5. 常见问题

  • Q:S3 访问报错怎么办?
    检查 AWS 权限,或者用环境变量指定 key/secret。

  • Q:多模态图片用 S3 路径会不会慢?
    fsspec 支持并发和缓存,速度很快。如果你带宽够,基本没问题。

  • Q:能不能用 http 链接?
    建议用 s3://,这样权限和速度都更好。

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!