リファレンス:#
ps . uv 公式は本当に親切で、さまざまなcpu
,cu11
,cu12
,intel gpu
... の基本設定が書かれています。
私の印象では、poetry
ユーザーがインストール時に指定された whl パスを使用することを考慮していましたが、whl は Python のバージョンとシステムを固定するため、大きな制限があります。
特定の PyTorch ビルド(例:CPU 専用)を Poetry でインストールする
問題の説明:#
通常、uv add torch==2.1.0
を使用すると、インストールされるのは cpu+cuda バージョンの torch です:
xnne@xnne-PC:~/code/Auto_Caption_Generated_Offline$ uv add torch==2.1.0 torchaudio==2.1.0
⠴ nvidia-cusparse-cu12==12.1.0.106 ^C
まず、以下の(デフォルトの)設定を考慮してください。これは、uv init --python 3.12を実行した後、uv add torch torchvisionを実行することで生成されます。
この場合、PyTorchはPyPIからインストールされ、WindowsおよびmacOS用のCPU専用ホイールと、Linux用のGPUアクセラレートホイール(CUDA 12.4をターゲット)をホストします:
[project]
name = "project"
version = "0.1.0"
requires-python = ">=3.12"
dependencies = [
"torch>=2.6.0",
"torchvision>=0.21.0",
]
これは、私たちが望んでいるものではない場合があります。たとえば、私の deepin には nvidia のドライバーがインストールされていないため、3〜4G の環境をダウンロードしてもまったく使えません。
私はuv add torch==2.1.0+cpu -f https://download.pytorch.org/whl/torch_stable.html
を試みました。
xnne@xnne-PC:~/code/Auto_Caption_Generated_Offline$ uv add torch==2.1.0+cpu -f https://download.pytorch.org/whl/torch_stable.html
63パッケージを10.37秒で解決しました
auto-caption-generate-offlineをビルドしました @ fil
⠹ パッケージを準備中... (4/5)
torch ------------------------------ 19.06 MiB/176.29 MiB
確かに cpu バージョンの torch がダウンロードされましたが、私のリモートリポジトリからインストールしようとしたときに問題が発生しました:
xnne@xnne-PC:~/code/test/Auto_Caption_Generated_Offline$ uv pip install git+https://github.com/MrXnneHang/[email protected]
https://github.com/MrXnneHang/Auto_Caption_Generated_Offline (12065e01ec1dc11f8f224fbb132cfd1c18ec3ac1)を更新しました
× 依存関係を解決する際に解決策が見つかりませんでした:
╰─▶ torch==2.1.0+cpuのバージョンが存在しないため、auto-caption-generate-offline==2.4.0はtorch==2.1.0+cpuに依存しているため、auto-caption-generate-offline==2.4.0は使用できないと結論できます。
そして、auto-caption-generate-offline==2.4.0のみが利用可能であり、auto-caption-generate-offlineが必要なため、要件が満たされないと結論できます。
原因:#
原因は、pytorch がアップロードしたイメージが pypi のインデックスにないことです。
パッケージングの観点から見ると、PyTorchにはいくつかの珍しい特徴があります:
多くのPyTorchホイールは、Pythonパッケージインデックス(PyPI)ではなく、専用のインデックスにホストされています。そのため、PyTorchをインストールするには、プロジェクトをPyTorchインデックスを使用するように構成する必要があります。
PyTorchは、各アクセラレーター(例:CPU専用、CUDA)用に異なるビルドを生成します。公開またはインストール時にこれらのアクセラレーターを指定する標準化されたメカニズムがないため、PyTorchはそれらをローカルバージョンスペシファイアにエンコードします。そのため、PyTorchのバージョンは通常、2.5.1+cpu、2.5.1+cu121などのようになります。
異なるアクセラレーター用のビルドは、異なるインデックスに公開されます。たとえば、+cpuビルドはhttps://download.pytorch.org/whl/cpuに公開され、+cu121ビルドはhttps://download.pytorch.org/whl/cu121に公開されます。
解決:#
最終的に私が決定した関連設定は次のようになります:
dependencies = [
"funasr==1.2.4",
"pyaml==25.1.0",
"torch==2.1.0",
"torchaudio==2.1.0",
]
[[tool.uv.index]]
name = "pytorch-cpu"
url = "https://download.pytorch.org/whl/cpu"
explicit = true
[tool.uv.sources]
torch = [
{ index = "pytorch-cpu" },
]
torchaudio = [
{ index = "pytorch-cpu" },
]
その後、私たちはuv lock
を実行し、プッシュしました。
ps: cuda バージョンを設定する際には、最新の 12.x や 13.x ではなく、以前のバージョンの cuda(例えば 11.8)を使用することを考慮すべきです。なぜなら、ユーザーのドライバーは常に最新ではなく、新しいドライバーは古い cu バージョンと互換性があるからです。性能の向上が非常に高い場合を除いて、一般的には大きな違いはありません。
GitHub からのインストール:#
最終的に成功しました =-=。
xnne@xnne-PC:~/code/test/Auto_Caption_Generated_Offline$ uv venv -p 3.10 --seed
CPython 3.10.16を使用しています
シードパッケージを使用して仮想環境を作成しています: .venv
+ pip==25.0.1
+ setuptools==75.8.2
+ wheel==0.45.1
xnne@xnne-PC:~/code/test/Auto_Caption_Generated_Offline$ uv pip install git+https://github.com/MrXnneHang/[email protected]
63パッケージを5.85秒で解決しました
11分45秒で2パッケージを準備しました
...
+ torch==2.1.0+cpu
+ torch-complex==0.4.4
+ torchaudio==2.1.0+cpu
+ tqdm==4.67.1
...
...
ただし、実行中に torch の numpy と funasr の numpy に少し衝突が発生しました:
xnne@xnne-PC:~/code/test/Auto_Caption_Generated_Offline$ uv run test-ACGO
auto-caption-generate-offlineをビルドしました @ file:///home/xnne/code/test/Auto_Caption_Generated_Offline
0.57msで1パッケージをアンインストールしました
0.95msで1パッケージをインストールしました
NumPy 1.xを使用してコンパイルされたモジュールは、NumPy 2.1.3では実行できません。クラッシュする可能性があります。1.xおよび2.xの両方のバージョンのNumPyをサポートするには、モジュールはNumPy 2.0でコンパイルする必要があります。
一部のモジュールは再構築が必要な場合があります。例:'pybind11>=2.12'で。
モジュールのユーザーである場合、最も簡単な解決策は、'numpy<2'にダウングレードするか、影響を受けるモジュールをアップグレードすることです。
一部のモジュールはNumPy 2をサポートするのに時間がかかると予想されます。
Traceback (most recent call last): File "/home/xnne/code/test/Auto_Caption_Generated_Offline/.venv/bin/test-ACGO", line 4, in <module>
from uiya.test import main
File "/home/xnne/code/test/Auto_Caption_Generated_Offline/src/uiya/test.py", line 1, in <module>
import funasr
手動で1.26.4
にダウングレードした後、解決しました。
uv add numpy==1.26.4
uv lock
xnne@xnne-PC:~/code/test$ uv venv -p 3.10 --seed
CPython 3.10.16を使用しています
シードパッケージを使用して仮想環境を作成しています: .venv
+ pip==25.0.1
+ setuptools==75.8.2
+ wheel==0.45.1
有効化するには: source .venv/bin/activate
xnne@xnne-PC:~/code/test$ uv pip install git+https://github.com/MrXnneHang/[email protected]
63パッケージを7.90秒で解決しました
603msで2パッケージを準備しました
63パッケージを259msでインストールしました
+ aliyun-python-sdk-core==2.16.0
+ aliyun-python-sdk-kms==2.16.5
+ antlr4-python3-runtime==4.9.3
+ audioread==3.0.1
+ auto-caption-generate-offline==2.4.0 (from git+https://github.com/MrXnneHang/Auto_Caption_Generated_Offline@5f03a04ebdbe4b7a1329302b551e58092e8af9ee)
...
+ torch==2.1.0+cpu
+ torch-complex==0.4.4
+ torchaudio==2.1.0+cpu
+ tqdm==4.67.1
...
xnne@xnne-PC:~/code/test$ uv run test-ACGO
funasr:1.2.4
torch:2.1.0+cpu
torchaudio:2.1.0+cpu
小さなトラブル#
その間に小さなトラブルがありました。プロジェクトディレクトリでuv pip install
->uv run
を実行すると、pyproject.toml と uv.lock が存在する場合、実行されるのは私がインストールしたものではなく、プロジェクトの pyproject.toml に基づいて生成されたバージョンです。したがって、私は更新されていないコードでuv run
を実行し続け、元のバグの問題に陥りました。git pull で解決しました。
したがって、git pull
を行った場合は、uv pip install git+
を使用する必要はありません。直接uv run
で大丈夫です。
その後、cuda バージョンで問題が発生した場合は、再度補足するかもしれません。