0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Pytorch+CUDAをpipenv環境にて構築する手順(Windows11での例)

Last updated at Posted at 2024-10-04

今回のポイント

pipではなく、pipenvを使う場合、PyTorchのインストールコマンドを少し修正する必要があるが、修正のポイントを明示する。

  • [o]pipenv install ... --index <URL> --- これを使うこと
  • [x]pipenv install ... --extra-index-url <URL> --- セキュリティリスクのために利用できなくなっている
  • [x]pipenv install ... --index-url <URL> --- こちらも利用できず、エラーになる

Windows11での例を提示するが、基本Linuxでも同じ(WSL2のUbuntuでも同じ)
ネット上で検索すると古い書式で実行しようとして躓いている記事が散見されるし、ChatGPT等の生成AIも間違えて教えてくれるので、厄介。
2022年3月23日にセキュリティリスクのために変更されたとあり、当方では2023年10月の時点でインストール方法が変化したことを確認している。

Pipenvでの仮想環境の入った[.venv]フォルダを仮想環境フォルダ内に設置する方法も併記した。

前準備

  1. GPUのドライバを最新版にしておく
    https://www.nvidia.com/ja-jp/drivers/
  2. 搭載されているGPUに応じて制約を確認する
    https://developer.nvidia.com/cuda-gpus
  3. ドライバのバージョンにて利用可能なCUDAのバージョンをチェックする。
    https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html
  4. Pythonのインストール(インストールされていない場合)
    https://www.python.org/

※初回のインストールの場合「Add Python *** to PATH」にチェックを入れてインストールすること!!

Pipenv関連の設定

1. pipのアップグレード

Windows
python -m pip install --upgrade pip

※Linuxの場合

Linux
python3 -m pip install --upgrade pip

2. 初めてPipenvを使う場合

2-1. pipenvのインストール

Windows/Linux
pip install pipenv

2-2. pipenvの環境変数設定

環境変数「PIPENV_VENV_IN_PROJECT」を「True」に設定

設定変更手順
【Windowsスタート・右クリック】→【システム】
→(画面内)【システムの詳細設定】
→【システムのプロパティ】ダイアログ表示
→(右下)【環境変数...】
→【環境変数】ダイアログ表示
→【システム環境変数】→【新規...】にて
変数名: PIPENV_VENV_IN_PROJECT
変数値*: True
と設定する。

*boolean属性なのでTrueの代わりに、true, yes, 1 ないし on でも良い。設定解除は false, no, 0, ないし off になる
参考:PIPENV_VENV_IN_PROJECTの設定詳細

pipenv-1.jpg

※既にpipenvを使っていて「Pipfile」および「.venv」が「c:/users/[利用者]/」直下に存在する場合には、無理に切り換えないこと。

どうしても切り換えたい場合
  1. 「c:/users/[利用者]/Pipfile」を利用中の仮想環境フォルダ内にコピー
  2. pipenv --rmで切替前の仮想環境を削除
  3. 「c:/users/[利用者]/Pipfile」を削除(※)
  4. 下記手順で「PIPENV_VENV_IN_PROJECT」環境変数を設定(ないし変更)して切替
  5. 切替後、利用中の仮想環境フォルダに入りpipenv installを実行すればコピーしておいた「Pipfile」の設定に従って「.venv」が利用中の仮想環境フォルダに再構築される。
    [※削除しないと落とし穴にはまります]
    pipenvでプロジェクトを初期作成しようとするとあらぬところにvenvフォルダが生成される.
    [※仮想環境がどこにあるか不明な場合は下記を参照のこと]
    [小ネタ]pipenvのvenvとPipfileの対応を確認して不要なものを消したい

3. pipenvのアップグレード(2回目以降にPipenvを使う場合)

Windows/Linux
pip install -U pipenv

4. 切り換えたいPythonのインストール

https://www.python.org/
切り換えたいPythonは予めWindowsにインストールしておく。
※Linuxの場合pyenv等で切り換えたいバージョンのPythonをインストールしておく。

最新のPythonを(追加)インストールする場合、パスを環境変数へ追加するように設定しておく必要がある。

設定関連の詳細
  • インストール時に【Add Python *** to PATH】にチェックを入れる(オプション指定時であれば【add python to environment variables】にチェックを入れる)
  • インストール後に「修正インストール」で後から修正も可能。

以前の(インストール済みよりも古い)バージョンを追加インストールする場合、パスを環境変数へは追加しない。

設定関連の詳細

5. Pipenv --python [バージョン] にて仮想環境構築

仮想環境を構築するフォルダを新たに作成し、該当フォルダに移動し、構築用コマンドを実行する。
Python 3.12.*** を使う仮想環境を構築したい場合、

Windows/Linux
mkdir [仮想環境構築用ディレクトリ名]
cd [仮想環境構築用ディレクトリ名]
pipenv --python 3.12

PyTorchのインストール

PyTorchのサイトにて自身の環境に合うインストールコマンドを入手する。
※WSL2でのUbuntuの場合にはOSに【Linux】を指定する。
https://pytorch.org/get-started/locally/

PyTorch環境の選択
PyTorch Build: 【Stable(***)】
YourOS: 【Windows】
Package: 【Pip】
Language: 【Python】
Compute Platform: 【CUDA ***】← 自身の環境に応じたバージョン、ないしCPUを選択

pipenv-pytorch.jpg

上記にて表示される【Run this Command】の 「pip3」を「pipenv」に変更し、さらに「-url」を削除したコマンド を実行する。(urlが入らない形式の場合、「pip3」を「pipenv」に修正するだけで良い)

Windows/Linux
例 
[修正前]
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

[修正後]
pipenv install torch torchvision torchaudio --index https://download.pytorch.org/whl/cu118

※Pytorchの場合、システムにインストールされているCUDAとは無関係に上記のコマンドで指定されたCUDAが仮想環境内にインストールされ、自動的に切り替わってくれる。

※インストール時の画面(例)

pipenv-pytorch2.jpg

仮想環境構築後のテスト

構築した仮想環境に入る。

Windwos/Linux
cd [構築した仮想環境のフォルダ]
pipenv shell

下記を実行する。

cuda_check.py
import torch

cuda_is_available = torch.cuda.is_available()

print(f'torch_version = {torch.__version__}')
print(f'cuda_available = {cuda_is_available}')
if cuda_is_available:
    print(f'cuda_device_count = {torch.cuda.device_count()}')
    print(f'cuda_GPU_Num = {torch.cuda.current_device()}')
    print(f'GPU_Name = {torch.cuda.get_device_name()}')
    print(f'GPU_Compute_Capability = {torch.cuda.get_device_capability()}')
Windows/Linux
python cuda_check.py

実行例
※PythonおよびCUDAの異なるバージョンを構築した場合の例

テスト例
PS:tc241p311cu118 > pipenv shell
Launching subshell in virtual environment...
PowerShell 7.4.5
[venv]PS:tc241p311cu118 > python cuda_check.py
torch_version = 2.4.1+cu118
cuda_available = True
cuda_device_count = 1
cuda_GPU_Num = 0
GPU_Name = NVIDIA GeForce RTX 3090
GPU_Compute_Capability = (8, 6)
[venv]PS:tc241p311cu118 > exit
PS:tc241p311cu118 > cd ..\tc241p312\
PS:tc241p312 > pipenv shell
Launching subshell in virtual environment...
PowerShell 7.4.5
[venv]PS:tc241p312 > python cuda_check.py
torch_version = 2.4.1+cu121
cuda_available = True
cuda_device_count = 1
cuda_GPU_Num = 0
GPU_Name = NVIDIA GeForce RTX 3090
GPU_Compute_Capability = (8, 6)
[venv]PS:tc241p312 >

pipenv仮想環境のセキュリティチェック

インストール前にはライブラリが正規のものか、インストール後にはライブラリの脆弱性を確認すること。

脆弱性チェック
pipenv check

オプション類については下記を参照

=== 2024/10/06 10:33 追記 ===
念のため、PyTorch環境をチェックしてみたら、ver2.4.0, ver2.4.1にて脆弱性が含まれていることが判った。

分散トレーニングを開始するマスター ノードが侵害され、機密性の高い AI 関連データが盗まれる可能性

Ver2.2以降へのアップデートで対応可能なような記述だが、脆弱性がFixされたという情報にはなっておらず、そのまま持続している様子。

PyTorch-脆弱性2.jpg

https://data.safetycli.com/v/71670/742/
https://jp.tenable.com/plugins/nessus/200978
https://huntr.com/bounties/39811836-c5b3-4999-831e-46fee8fcade3

生成AIが提示する「誤ったコマンドの例」

※正しくは[--index <URL>]で、少なくとも本記事執筆時の1年前には変更されている。現時点で下記の状況であり、そのうちに変化するだろうけれど、生成AIが如何に表在的な情報のみに頼ってコードを検証していないかの実録としてここに記録しておく。

ChatGPT-4o, Gemini-1.5Flash, Microsoft Copilot
[--extra-index-url <URL>]
Claude 3.5 Sonnet
[--index-url <URL>]

ChatGPT-4o
pipenv-pytoch-chatGPT-4o.jpg

Gemini-1.5Flash
pipenv-pytoch-Gemini.jpg

Microsoft Copilot
pipenv-pytoch-copilot.jpg

Claude 3.5 Sonnet
pipenv-pytoch-Claude.jpg

上記いずれも下記のようなインストール時エラーとなります。
pipenv-pytoch-GenAI-error-1.jpg
pipenv-pytoch-GenAI-error-2.jpg

【参考資料】

  1. https://www5.dent.niigata-u.ac.jp/~nisiyama/grad/python/pipenv-sys-install-GPU-j.pdf
  2. https://www5.dent.niigata-u.ac.jp/~nisiyama/grad/Pipenv-PyTorch.pdf
  3. Specifying Package Indexes
    https://pipenv.pypa.io/en/latest/indexes.html
  4. GUIDE: How to install PyTorch via Pipenv (andhow to add other 3rd Party Repositories). #4961
    https://github.com/pypa/pipenv/issues/4961
  5. 【図で理解】PipenvによるPython仮想環境の管理
    https://qiita.com/mtitg/items/3aa5e5c6d1c1cf6fd3c2
  6. Pipenv Commands
    https://pipenv.pypa.io/en/latest/commands.html
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?