fairseq2: FAIR 序列建模工具包 2
文档:稳定版, 夜间版 | 安装:Linux, macOS, Windows, 从源码 | 贡献:指南
fairseq2 是一个序列建模工具包,允许研究人员为内容生成任务训练自定义模型。
基于 fairseq2 的部分近期 FAIR 研究
- Omnilingual ASR: Open-Source Multilingual Speech Recognition for 1600+ Languages
- Bridging Offline and Online Reinforcement Learning for LLMs
- R.I.P.: Better Models by Survival of the Fittest Prompts
- Learning to reason for factuality
- Diverse Preference Optimization
- Large Concept Models: Language Modeling in a Sentence Representation Space
- Seamless: Multilingual Expressive and Streaming Speech Translation
fairseq2 与原始 fairseq 有何不同?
fairseq2 是一个从零开始的项目,可以被视为原始 fairseq 的重启,旨在提供干净、模块化的 API。值得注意的是,它与其前身在设计理念上有所不同,从单体框架转向可扩展、侵入性更低的架构,使研究人员能够独立拥有其项目代码库。
由于 fairseq2 是一个全新的项目,而非对原始 fairseq 的增量更新,我们有意避免将其标记为 fairseq 版本 2,以反映其独特且独立的身份。
功能
- 针对语言模型 指令微调 和 偏好优化 的第一方配方
- 使用 DDP、FSDP 和张量并行进行多 GPU、多节点 训练。支持 70B+ 模型。
- 原生支持 vLLM,并内置采样和束搜索序列生成器
- 可通过 setuptools 扩展机制 进行扩展。无需分叉/分支该库即可轻松注册新模型、优化器、学习率调度器、训练器单元。
- 现代 PyTorch 工具。使用可组合性(即 torch.compile)、PyTorch FSDP 及其他相关功能
- 基于流式的高吞吐量 数据管道 API,使用 C++ 编写,支持语音和(即将支持)视频解码
- 用于以版本控制方式访问模型、数据集和分词器的程序化 资产卡片
- 基于内置 结构化 API 的灵活但确定性的配置
入门指南
访问我们的 文档网站 以了解有关 fairseq2 的更多信息。
在 Linux 上安装
系统依赖项
fairseq2 依赖于 libsndfile, 可以通过大多数 Linux 发行版的系统包管理器进行安装。对于基于 Ubuntu 的系统,请运行:
sudo apt install libsndfile1
同样,在 Fedora 上,运行:
sudo dnf install libsndfile
对于其他 Linux 发行版,请参阅其文档了解如何 安装软件包。
pip
要在 Linux x86-64 上安装 fairseq2,请运行:
pip install fairseq2
此命令将安装一个与托管在 PyPI 上的 PyTorch 兼容的 fairseq2 版本。
目前,我们尚未为基于 ARM 的系统(如 Raspberry PI 或 NVIDIA Jetson)提供预构建的软件包。请参阅 Install From Source 以了解如何在这些系统上构建和安装 fairseq2。
Variants
除了 PyPI 之外,fairseq2 还在 FAIR 的软件包仓库中提供了针对不同 PyTorch 和 CUDA 版本的预构建软件包。以下 矩阵显示了受支持的组合。
| fairseq2 | PyTorch | Python | Variant* | Arch |
|---|---|---|---|---|
HEAD | 2.9.1 | >=3.10, <=3.12 | cpu, cu126, cu128 | x86_64 |
2.8.0 | >=3.10, <=3.12 | cpu, cu126, cu128 | x86_64 | |
2.7.1 | >=3.10, <=3.12 | cpu, cu126, cu128 | x86_64 | |
0.8 | 2.9.1 | >=3.10, <=3.12 | cpu, cu126, cu128 | x86_64 |
2.8.0 | >=3.10, <=3.12 | cpu, cu126, cu128 | x86_64 | |
2.7.1 | >=3.10, <=3.12 | cpu, cu126, cu128 | x86_64 | |
0.7 | 2.9.0 | >=3.10, <=3.12 | cpu, cu126, cu128 | x86_64 |
2.8.0 | >=3.10, <=3.12 | cpu, cu126, cu128 | x86_64 | |
2.7.1 | >=3.10, <=3.12 | cpu, cu126, cu128 | x86_64 | |
0.6 | 2.8.0 | >=3.10, <=3.12 | cpu, cu126, cu128 | x86_64 |
2.7.1 | >=3.10, <=3.12 | cpu, cu126, cu128 | x86_64 | |
2.6.0 | >=3.10, <=3.12 | cpu, cu124 | x86_64 |
* cuXYZ 指 CUDA XY.Z(例如 cu118 表示 CUDA 11.8)
要安装特定的组合,请先按照
pytorch.org 上所需 PyTorch
版本的安装说明进行操作,然后使用以下命令(以 PyTorch 2.9.1 和
变体 cu126 为例):
pip install fairseq2\
--extra-index-url https://fair.pkg.atmeta.com/fairseq2/whl/pt2.9.1/cu126
[!WARNING] fairseq2 依赖于 PyTorch 的 C++ API,该 API 在不同版本之间不具备 API/ABI 兼容性。 这意味着你必须安装与你的 PyTorch 版本完全匹配的 fairseq2 变体。否则,你可能会遇到 诸如进程立即崩溃或虚假段错误等问题。出于同样的原因,如果你升级了 PyTorch 版本, 你也必须升级你的 fairseq2 安装。
Nightlies
对于 Linux,我们还在 FAIR 的软件包仓库上托管了每日构建版本。受支持的变体
与上文 Variants 中列出的变体完全相同。一旦你安装了所需的 PyTorch 版本,
你可以使用以下命令来安装对应的每日构建包(以 PyTorch 2.9.1
和变体 cu128 为例):
pip install fairseq2\
--pre --extra-index-url https://fair.pkg.atmeta.com/fairseq2/whl/nightly/pt2.9.1/cu128
在 macOS 上安装
系统依赖项
fairseq2 依赖于 libsndfile, 可通过 Homebrew 安装:
brew install libsndfile
pip
要在基于 ARM64(即 Apple silicon)的 Mac 计算机上安装 fairseq2,请运行:
pip install fairseq2
此命令将安装一个与托管在 PyPI 上的 PyTorch 兼容的 fairseq2 版本。
目前,我们不提供针对基于 Intel 的 Mac 计算机的预构建软件包。 请参阅 Install From Source 以了解如何 在 Intel 机器上构建和安装 fairseq2。
变体
除了 PyPI,fairseq2 还提供针对不同 PyTorch 版本的预构建包,托管在 FAIR 的软件包仓库中。下表显示了受支持的组合。
| fairseq2 | PyTorch | Python | Arch |
|---|---|---|---|
HEAD | 2.9.1 | >=3.10, <=3.12 | arm64 |
0.8 | 2.9.1 | >=3.10, <=3.12 | arm64 |
0.7 | 2.9.0 | >=3.10, <=3.12 | arm64 |
0.6 | 2.8.0 | >=3.10, <=3.12 | arm64 |
2.7.1 | >=3.10, <=3.12 | arm64 |
要安装特定的组合,请先按照
pytorch.org 上所需 PyTorch
版本的安装说明操作,然后使用以下命令(以 PyTorch 2.9.1 为例):
pip install fairseq2\
--extra-index-url https://fair.pkg.atmeta.com/fairseq2/whl/pt2.9.1/cpu
[!WARNING] fairseq2 依赖于 PyTorch 的 C++ API,该 API 在不同版本之间不具备 API/ABI 兼容性。 这意味着你必须安装与你的 PyTorch 版本完全匹配的 fairseq2 变体。否则,你可能会遇到 进程立即崩溃或虚假段错误等问题。出于同样的原因,如果你升级了 PyTorch 版本, 你也必须升级你的 fairseq2 安装。
Nightlies
对于 macOS,我们还在 FAIR 的软件包仓库上托管了每日构建版本。受支持的变体
与上文 Variants 中列出的变体完全相同。一旦你安装了所需的 PyTorch 版本,你可以使用以下
命令来安装相应的每日构建包(以 PyTorch 2.9.1 为例):
pip install fairseq2\
--pre --extra-index-url https://fair.pkg.atmeta.com/fairseq2/whl/nightly/pt2.9.1/cpu
在 Windows 上安装
fairseq2 不支持 Windows 原生环境,且在可预见的未来也没有支持计划。但是,您可以使用 Windows 子系统 for Linux (也称为 WSL)以及 WSL 2 中引入的完整 CUDA 支持来使用 fairseq2。请按照 在 Linux 上安装 部分中的说明进行基于 WSL 的安装。
从源代码安装
参见此处。
贡献
我们随时欢迎对 fairseq2 的贡献!请参阅 贡献指南 以了解如何格式化、测试和 提交您的工作。
引用 fairseq2
如果您在研究中使用 fairseq2 并希望引用它,请使用 以下 BibTeX 条目。
@software{balioglu2023fairseq2,
author = {Can Balioglu and Alexander Erben and Martin Gleize and Artyom Kozhevnikov and Ilia Kulikov and Julien Yao},
title = {fairseq2},
url = {http://github.com/facebookresearch/fairseq2},
year = {2023},
}
许可证
本项目采用 MIT 许可证,详见 LICENSE 文件。