CoreNet:深度神经网络训练库
概述
CoreNet 是一个深度神经网络工具包,支持研究人员和工程师训练标准及新型的中小型和大型模型,用于多种任务,包括基础模型(如 CLIP 和 LLM)、物体分类、物体检测和语义分割。
主要特性与更新
- 最新版本 (v0.1.1, 2024年10月):引入了 KV Prediction 功能。
- 应用范围广泛:支持从计算机视觉到自然语言处理的多种任务。
- 源于 CVNets:CoreNet 从 CVNets 发展而来,扩展了应用范围,涵盖更广泛的任务,包括大型语言模型(LLM)的训练。
苹果公司基于 CoreNet 的研究成果
以下为使用 CoreNet 的苹果公司出版物列表,相关项目文件夹内包含训练/评估配方及预训练模型链接:
- KV Prediction for Improved Time to First Token
- OpenELM: 高效语言模型系列
- CatLIP: 实现 CLIP 级视觉识别精度,且预训练速度提升 2.7 倍
- 强化数据,倍增影响:提升模型精度与鲁棒性的数据集强化技术
- CLIP 遇见模型专家:用于视觉增强的伪监督
- FastVit: 使用结构重参数化的快速混合视觉 Transformer
- 字节是一切所需:直接在文件字节上操作的 Transformer
- MobileOne: 改进的毫秒级移动网络骨干
- RangeAugment: 基于范围学习的高效在线数据增强
- MobileViTv2: 用于移动视觉 Transformer 的可分离自注意力
- CVNets: 高性能计算机视觉库 (ACM MM'22)
- MobileViT: 轻量级、通用且移动友好的视觉 Transformer (ICLR'22)
安装指南
前提条件:需安装并激活 Git LFS。
系统要求:
- Linux: Python 3.10+,PyTorch >= v2.1.0
- macOS: Python 3.9+
通用安装步骤:
- 克隆仓库:
git clone git@github.com:apple/corenet.git
- 进入目录并安装 Git LFS:
cd corenet,git lfs install,git lfs pull
- (推荐) 创建并激活虚拟环境:
python3 -m venv venv && source venv/bin/activate
- 以可编辑模式安装 CoreNet:
python3 -m pip install --editable .
可选依赖 (用于音视频处理):
- Linux:
sudo apt install libsox-dev ffmpeg
- macOS (使用 Homebrew):
brew install libsox ffmpeg
macOS 注意事项:文件系统默认不区分大小写,可能引起 Git 问题。建议通过 cd $(pwd -P) 切换到路径大小写敏感模式。
目录结构简述
CoreNet 的代码和资源按以下逻辑组织:
| 目录 |
说明 |
tutorials/ |
入门教程,包含 Jupyter Notebook 和指南,涵盖从零训练、多节点训练以及各类任务(CLIP、语义分割、物体检测)示例。 |
projects/ |
训练配方与项目,包含可复现的训练配置、预训练权重和出版物的详细说明。每个项目文件夹通常包含 README.md 和 YAML 配置文件。涵盖项目包括 KV Prediction、ByteFormer、CatLIP、CLIP、FastVit、MobileNet/ViT 系列、OpenELM 等。 |
mlx_example/ |
MLX 示例,演示如何在 Apple Silicon 上高效运行 CoreNet 模型。 |
corenet/modeling/models/ |
模型实现,按任务分类(如 audio_classification, classification, detection, language_modeling, multi_modal_img_text, segmentation)。模型类通过 @MODEL_REGISTRY.register 装饰器注册。 |
corenet/data/datasets/ |
数据集,同样按任务分类,结构与模型实现类似。 |
| 其他核心目录 |
包括 loss_fn (损失函数)、metrics (评估指标)、optims/scheduler (优化器与调度器)、train_eval_pipelines (训练评估流程),以及 data 下的子目录(如 collate_fns, sampler, transforms 等)。 |
维护与贡献
- 当前维护者:Maxwell Horton, Mohammad Sekhavat, Yanzi Jin, Dmitry Belenko。
- 前维护者:Sachin Mehta, Farzad Abdolhosseini。
- 贡献:欢迎社区提交 PR,相关指南详见项目的贡献文档。
- 许可证:详情参见项目 LICENSE 文件。
引用
如果相关工作有用,请引用:
@inproceedings{mehta2022cvnets,
author = {Mehta, Sachin and Abdolhosseini, Farzad and Rastegari, Mohammad},
title = {CVNets: High Performance Library for Computer Vision},
year = {2022},
booktitle = {Proceedings of the 30th ACM International Conference on Multimedia},
series = {MM '22}
}