🔰
uvを用いてfairseqをeditableインストールする
はじめに
研究でfairseqを利用する際に、pipではなくuvでeditableインストールする方法がわからず詰まったので、動いた記録を共有します。
uvはpythonのバージョン管理からパッケージ管理まで行える便利なツールです。
利用を開始する際は以下の記事がわかりやすいです。
公式のpytorch導入のドキュメントもあります。
作業手順
プロジェクトの準備
# ディレクトリの準備
mkdir fairseq_test
cd fairseq_test
# プロジェクト初期化
uv init
uv python pin 3.10
# fairseqをクローン
git clone https://github.com/pytorch/fairseq
依存ライブラリを定義
fairseq==0.12.2
はtorch==1.12.1+cu113
とnumpy==1.26.4
の組み合わせで動作することが確認できました。
このバージョンをインストールするためにpyproject.tomlを編集します。
以下のように書き換えてください。
[project]
name = "fairseq_test"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.10"
dependencies = [
"fairseq",
"torch==1.12.1+cu113",
"torchvision==0.13.1+cu113",
"numpy==1.26.4",
]
[tool.uv]
find-links = [
"https://download.pytorch.org/whl/cu113/torch",
"https://download.pytorch.org/whl/cu113/torchvision",
]
[tool.uv.sources]
fairseq = { path = "fairseq", editable = true }
fairseqの依存バージョンを修正
fairseqはtorch>=1.13
しか受け付けません。1.12を利用したいので修正します。
fairseq/setup.py
のtorch>=1.13
と記載の部分を1.11に書き換えてください。
~~~
long_description_content_type="text/markdown",
install_requires=[
"cffi",
"cython",
"hydra-core>=1.0.7,<1.1",
"omegaconf<2.1",
"numpy>=1.21.3",
"regex",
"sacrebleu>=1.4.12",
- "torch>=1.13",
+ "torch>=1.11",
"tqdm",
"bitarray",
"torchaudio>=0.8.0",
"scikit-learn",
"packaging",
],
~~~
インストール
この状態でインストールします。
私の環境ではCXX
の変数を指定する必要がありました。
# インストール
CXX=g++ uv sync
テスト
正常にインストールできたか確認します。
ここでは、fairseqに含まれるexampleの推論を行ってみます。
上記の例を参考にshellファイルを作成します。
test.sh
というファイルに以下を貼り付けてください。
uv runを追加しています。
test.sh
mkdir -p data-bin
curl https://dl.fbaipublicfiles.com/fairseq/models/wmt14.v2.en-fr.fconv-py.tar.bz2 | tar xvjf - -C data-bin
curl https://dl.fbaipublicfiles.com/fairseq/data/wmt14.v2.en-fr.newstest2014.tar.bz2 | tar xvjf - -C data-bin
CUDA_VISIBLE_DEVICES=1 uv run fairseq-generate data-bin/wmt14.en-fr.newstest2014 \
--path data-bin/wmt14.en-fr.fconv-py/model.pt \
--beam 5 --batch-size 128 --remove-bpe | tee ./tmp/gen.out
# ...
# | Translated 3003 sentences (96311 tokens) in 166.0s (580.04 tokens/s)
# | Generate test with beam=5: BLEU4 = 40.83, 67.5/46.9/34.4/25.5 (BP=1.000, ratio=1.006, syslen=83262, reflen=82787)
# Compute BLEU score
grep ^H ./tmp/gen.out | cut -f3- >./tmp/gen.out.sys
grep ^T ./tmp/gen.out | cut -f2- >./tmp/gen.out.ref
uv run fairseq-score --sys ./tmp/gen.out.sys --ref ./tmp/gen.out.ref
# BLEU4 = 40.83, 67.5/46.9/34.4/25.5 (BP=1.000, ratio=1.006, syslen=83262, reflen=82787)
実行結果は以下のようになりました。
BLEU4 = 40.82, 67.5/46.9/34.4/25.5 (BP=1.000, ratio=1.006, syslen=83021, reflen=82565)
おわりに
この記事ではuvを用いてfairseqをeditableインストールする方法を紹介しました。
解決の手助けになれば幸いです。
Discussion