在2025年运行使用fairseq的项目

作者:

什么叫赛博文物修复啊.webp

fairseq是FaceBook开源的一个用于机器学习中Seq2Seq模型的框架,但在2023年就已经停止更新了。而还有很多项目是使用fairseq框架的,在如今想要再运行起来会遇到各种各样的困难。

omegaconf无法安装

问题现象:
运行pip install -r requirements.txt时出现:

The conflict is caused by:
fairseq 0.12.2 depends on omegaconf<2.1
hydra-core 1.0.7 depends on omegaconf<2.1 and >=2.0.5

就算尝试手动安装omegaconf==2.0.5也会遇到

WARNING: Ignoring version 2.0.5 of omegaconf since it has invalid metadata:
Requested omegaconf==2.0.5 from https://files.pythonhosted.org/packages/e5/f6/043b6d255dd6fbf2025110cea35b87f4c5100a181681d8eab496269f0d5b/omegaconf-2.0.5-py3-none-any.whl has invalid metadata: .* suffix can only be used with `==` or `!=` operators
    PyYAML (>=5.1.*)
            ~~~~~~^
Please use pip<24.1 if you need to use this version.

解决方案:
正如提示所写,使用喜欢的环境管理器(如venv、conda、pixi),把pip固定在24.0及以下版本。

原因:
pypa/pip#10263中引入了对指定包版本的规范,在pip 24.1中开始拒绝不符合规范的版本号,omegaconf的旧版本刚好受到影响(它指定了不合规范的PyYAML>=5.1.*依赖版本号,在fd9109c中修复)。

error: command 'cl.exe' failed: None

解决方案:
下载Microsoft C++ 生成工具并选择安装“MSVC v143 生成工具”(选择适合自己机器体系架构的)。

原因:
cl.exe是MSVC的C/C++编译器和链接器,fairseq里包含了C++代码需要在安装时编译。

在Pixi包管理器中安装MSVC?

安装vs2022_win-64(x64)或者vs2022_win-arm64(ARM64),它可以检测和使用系统里的cl.exe,其中vs2022应该对应生成工具的版本(vs2022或者vs2019)。

Tips:

  • 由于MSVC没有Conda包的发行版本,所以必须要在系统中安装VS构建工具。
  • conda-forgecxx-compiler包已经依赖了vs2019_win-64

VC++的yvals.h引用了不存在的crtdbg.h头文件导致构建失败

解决方案:
在Visual Studio Installer里安装“Windows SDK”(有很多版本,最好选择和自己系统版本相匹配的)。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注


The reCAPTCHA verification period has expired. Please reload the page.