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 のバージョンとシステムを固定しています。

Installing a specific PyTorch build (f/e CPU-only) with 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を実行することで生成されます。
まず、次の(デフォルトの)設定を考慮してください。uv init --python 3.12を実行した後にuv add torch torchvisionを実行することで、この設定が生成されます。

この場合、PyTorchはPyPIからインストールされます。PyPIはWindowsとmacOS用のCPU専用ホイールをホストし、Linux用のGPU加速ホイール(CUDA 12.4をターゲット)をホストしています:
この場合、PyTorchはPyPIからインストールされます。PyTorchは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
 
Resolved 63 packages in 10.37s
      Built auto-caption-generate-offline @ fil
 Preparing packages... (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]
    Updated https://github.com/MrXnneHang/Auto_Caption_Generated_Offline (12065e01ec1dc11f8f224fbb132cfd1c18ec3ac1)
  × No solution found when resolving dependencies:
  ╰─▶ Because there is no version of torch==2.1.0+cpu and auto-caption-generate-offline==2.4.0 depends on torch==2.1.0+cpu, we can conclude that auto-caption-generate-offline==2.4.0 cannot be used.
      And because only auto-caption-generate-offline==2.4.0 is available and you require auto-caption-generate-offline, we can conclude that your requirements are unsatisfiable.

原因:#

原因は pytorch がアップロードしたイメージが pypi のインデックスに存在しないことです。

パッケージの観点から見ると、PyTorchにはいくつかの珍しい特徴があります:
パッケージの観点から見ると、PyTorchにはいくつかの珍しい特徴があります:

多くのPyTorchホイールは、Pythonパッケージインデックス(PyPI)ではなく、専用のインデックスにホストされています。そのため、PyTorchをインストールするには、プロジェクトをPyTorchインデックスを使用するように構成する必要があります。
多くのPyTorchホイールは、Pythonパッケージインデックス(PyPI)ではなく、専用のインデックスにホストされています。そのため、PyTorchをインストールするには、プロジェクトをPyTorchインデックスを使用するように構成する必要があります。

PyTorchは各アクセラレータ(例:CPU専用、CUDA)用に異なるビルドを生成します。公開またはインストール時にこれらのアクセラレータを指定する標準化されたメカニズムがないため、PyTorchはそれらをローカルバージョンスペシファイアにエンコードします。そのため、PyTorchのバージョンは通常2.5.1+cpu、2.5.1+cu121などのようになります。
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に公開されます。
異なるアクセラレータのビルドは異なるインデックスに公開されます。たとえば、+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)を使用することを考慮すべきです。性能上の大きな向上がない限り、一般的には大きな違いはありません。

GitHub からのインストール:#

最終的に成功しました =-=。

xnne@xnne-PC:~/code/test/Auto_Caption_Generated_Offline$ uv venv -p 3.10 --seed
Using CPython 3.10.16
Creating virtual environment with seed packages at: .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]
Resolved 63 packages in 5.85s
Prepared 2 packages in 11m 45s
...
 + 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
      Built auto-caption-generate-offline @ file:///home/xnne/code/test/Auto_Caption_Generated_Offline
Uninstalled 1 package in 0.57ms
Installed 1 package in 0.95ms

A module that was compiled using NumPy 1.x cannot be run in
NumPy 2.1.3 as it may crash. To support both 1.x and 2.x
versions of NumPy, modules must be compiled with NumPy 2.0.
Some module may need to rebuild instead e.g. with 'pybind11>=2.12'.

If you are a user of the module, the easiest solution will be to  
downgrade to 'numpy<2' or try to upgrade the affected module.
We expect that some modules will need time to support 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 
Using CPython 3.10.16
Creating virtual environment with seed packages at: .venv
 + pip==25.0.1
 + setuptools==75.8.2
 + wheel==0.45.1
Activate with: source .venv/bin/activate

xnne@xnne-PC:~/code/test$ uv pip install git+https://github.com/MrXnneHang/[email protected]
Resolved 63 packages in 7.90s
Prepared 2 packages in 603ms
Installed 63 packages in 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 バージョンで問題が発生した場合は、再度補足するかもしれません。

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