ITADN
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈


fairseq2: FAIR 序列建模工具包 2

Nightly PyPI version License: MIT

文档:稳定版, 夜间版 | 安装:Linux, macOS, Windows, 从源码 | 贡献:指南

fairseq2 是一个序列建模工具包,允许研究人员为内容生成任务训练自定义模型。

基于 fairseq2 的部分近期 FAIR 研究

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 版本的预构建软件包。以下 矩阵显示了受支持的组合。

fairseq2PyTorchPythonVariant*Arch
HEAD2.9.1>=3.10, <=3.12cpu, cu126, cu128x86_64
2.8.0>=3.10, <=3.12cpu, cu126, cu128x86_64
2.7.1>=3.10, <=3.12cpu, cu126, cu128x86_64
0.82.9.1>=3.10, <=3.12cpu, cu126, cu128x86_64
2.8.0>=3.10, <=3.12cpu, cu126, cu128x86_64
2.7.1>=3.10, <=3.12cpu, cu126, cu128x86_64
0.72.9.0>=3.10, <=3.12cpu, cu126, cu128x86_64
2.8.0>=3.10, <=3.12cpu, cu126, cu128x86_64
2.7.1>=3.10, <=3.12cpu, cu126, cu128x86_64
0.62.8.0>=3.10, <=3.12cpu, cu126, cu128x86_64
2.7.1>=3.10, <=3.12cpu, cu126, cu128x86_64
2.6.0>=3.10, <=3.12cpu, cu124x86_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 的软件包仓库中。下表显示了受支持的组合。

fairseq2PyTorchPythonArch
HEAD2.9.1>=3.10, <=3.12arm64
0.82.9.1>=3.10, <=3.12arm64
0.72.9.0>=3.10, <=3.12arm64
0.62.8.0>=3.10, <=3.12arm64
2.7.1>=3.10, <=3.12arm64

要安装特定的组合,请先按照 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 文件。