XnneHang

XnneHang

github
steam_profiles
douban

[tool.uv.index] 使用 uv 配置は Pytorch の pyproject に依存し、cpu または cuda バージョンに対して個別に設定されます。

リファレンス:#

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 バージョンで問題が発生した場合は、再度補足するかもしれません。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。