Project Icon

ffcv

插入式数据加载系统,可显著提高模型训练中的数据吞吐量

FFCV通过加速数据加载,显著提升模型训练的数据吞吐量,同时保持训练算法不变,极大地减少训练时间和成本。例如,使用FFCV在一块GPU上训练ImageNet模型仅需35分钟,而CIFAR-10模型仅需36秒。FFCV还提供预封装的标准视觉基准代码、自动优化的数据处理功能,以及适用于各种资源约束环境的灵活选项。更多详细信息和安装指南,请访问官方网站。

项目介绍:FFCV

什么是FFCV?

FFCV,即《Fast Forward Computer Vision》,是一个即插即用的数据加载系统,旨在显著提升模型训练过程中的数据吞吐量。这个系统的核心理念是通过加速数据加载来降低模型训练的成本和时间,无需更改训练算法,只需要替换数据加载器即可。比如,用FFCV在一个GPU上训练ImageNet模型只需35分钟,而训练CIFAR-10模型更是只需36秒,大幅降低云平台上的开销。

如何安装FFCV?

FFCV支持在Linux和Windows系统上安装,安装过程分为以下几个步骤:

Linux系统安装

  1. 创建新的Conda环境,并安装所需的依赖库:
    conda create -y -n ffcv python=3.9 cupy pkg-config libjpeg-turbo opencv pytorch torchvision cudatoolkit=11.3 numba -c pytorch -c conda-forge
    conda activate ffcv
    
  2. 使用pip安装FFCV:
    pip install ffcv
    

如果安装过程中遇到包冲突错误,可以尝试conda config --env --set channel_priority flexible,或者在某些情况下增加compilers包。此外,还提供了一个无需Conda的Dockerfile,供选择使用。

Windows系统安装

  1. 安装OpenCV4,并将相应的路径添加到环境变量。
  2. 安装libjpeg-turbo和pthread,同样将相应路径添加到环境变量。
  3. 根据CUDA版本安装CuPy。
  4. 使用pip安装FFCV:
    pip install ffcv
    

快速开始

FFCV的使用分为两个主要步骤。

转换数据集

首先,需要将数据集转换为FFCV格式。这可以通过ffcv.fields模块定义数据字段类型,然后使用DatasetWriter写入数据集。例如:

from ffcv.writer import DatasetWriter
from ffcv.fields import RGBImageField, IntField

my_dataset = make_my_dataset()  # 用户需定义自己的数据集
write_path = '/输出/路径/转换后的数据集.beton'

writer = DatasetWriter(write_path, {
    'image': RGBImageField(max_resolution=256),
    'label': IntField()
})

writer.from_indexed_dataset(my_dataset)

替换数据加载器

在训练时,使用ffcv的加载器替换原有的数据加载器,非常简单。例如,在PyTorch中:

from ffcv.loader import Loader, OrderOption
from ffcv.transforms import ToTensor, ToDevice, ToTorchImage, Cutout
from ffcv.fields.decoders import IntDecoder, RandomResizedCropRGBImageDecoder

decoder = RandomResizedCropRGBImageDecoder((224, 224))
image_pipeline = [decoder, Cutout(), ToTensor(), ToTorchImage(), ToDevice(0)]
label_pipeline = [IntDecoder(), ToTensor(), ToDevice(0)]

pipelines = {
    'image': image_pipeline,
    'label': label_pipeline
}

loader = Loader(write_path, batch_size=bs, num_workers=num_workers,
                order=OrderOption.RANDOM, pipelines=pipelines)

for epoch in range(epochs):
    ...

特色功能

FFCV拥有一系列独特的功能,使其在多种资源受限环境下加快训练速度:

  • 即插即用:只需简单地替换数据加载器即可使用FFCV,无需更改训练代码中的其他部分。

  • 快速数据处理:自动处理数据读取、缓存、传输等,高效节省用户时间。

  • 数据处理自动编译与融合:支持预写和自定义数据增强操作,这些操作会自动转为机器码并异步调度以避免加载延迟。

  • 灵活的数据加载选项:可以根据可用的资源优化数据加载方式,支持从RAM、SSD或网络磁盘加载数据。

  • 多模型同GPU训练:采用线程式加载方式,允许在同一GPU上同时训练多个模型而无数据加载开销。

  • 图像处理工具:提供快速JPEG编码与解码,以及混合存储数据集以便优化I/O与计算开销。

以上列举的功能,让FFCV在计算机视觉任务中占据了重要地位,且提供了详细的性能指导和示例代码,帮助用户快速上手。

贡献者团队

FFCV的开发团队包括Guillaume Leclerc、Logan Engstrom、Andrew Ilyas、Sam Park和Hadi Salman等多人,他们共同努力致力于提升训练速度,去除数据瓶颈。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

白日梦AI

白日梦AI提供专注于AI视频生成的多样化功能,包括文生视频、动态画面和形象生成等,帮助用户快速上手,创造专业级内容。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

讯飞绘镜

讯飞绘镜是一个支持从创意到完整视频创作的智能平台,用户可以快速生成视频素材并创作独特的音乐视频和故事。平台提供多样化的主题和精选作品,帮助用户探索创意灵感。

Project Cover

讯飞文书

讯飞文书依托讯飞星火大模型,为文书写作者提供从素材筹备到稿件撰写及审稿的全程支持。通过录音智记和以稿写稿等功能,满足事务性工作的高频需求,帮助撰稿人节省精力,提高效率,优化工作与生活。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号