マイブログ リスト

医療言語処理講座

ラベル Anaconda の投稿を表示しています。 すべての投稿を表示
ラベル Anaconda の投稿を表示しています。 すべての投稿を表示

2022年10月19日水曜日

Pyゼミ0.06 備忘録 Ubuntu20.04にCUDA11.4、TensorFlowをインストールする 

はじめに

Ubuntuを20.04にして、NVIDIAのドライバーをインストールするとCUDA12.0がインストールされます(2023年2月20日)。

問題なくインストールされnvidia-smiを正常に起動されます。

しかし、TensorflowがGPUを認識しません。

そこで、今回CUDAを11.4にバージョンダウンして利用する方法を投稿します。


1)Ubuntu20.04インストール後 ソフトウェアアップデート

$ sudo apt update
$ sudo apt upgrade

$ sudo reboot


2)CUDA&Driverインストール

下記URLにてCUDA Toolkit Archiveのページへ
https://developer.nvidia.com/cuda-toolkit-archive

バージョン11.4の下記を選択する
CUDA Toolkit Documentation v11.4.4 

Select Target Platformは以下を選択
  • OS:Linux
  • Architecture:x86_64
  • Distribution:Ubuntu
  • Version:20.04
  • Installer Type:dev(local)

注意:cudaのインストール時に明示的に11.4をcuda-11-4と指定すること


$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
$ sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
$ wget https://developer.download.nvidia.com/compute/cuda/11.4.4/local_installers/cuda-repo-ubuntu2004-11-4-local_11.4.4-470.82.01-1_amd64.deb
$ sudo dpkg -i cuda-repo-ubuntu2004-11-4-local_11.4.4-470.82.01-1_amd64.deb
$ sudo apt-key add /var/cuda-repo-ubuntu2004-11-4-local/7fa2af80.pub
$ sudo apt-get update
$ sudo apt-get -y install cuda-11-4


$ sudo reboot



確認1

$ nvidia-smi

Sun Mar 26 13:51:22 2023       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.82.01    Driver Version: 470.82.01    CUDA Version: 11.4     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  On   | 00000000:01:00.0  On |                  N/A |
| 38%   33C    P0    28W / 120W |    188MiB /  6069MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      1084      G   /usr/lib/xorg/Xorg                 35MiB |
|    0   N/A  N/A      1569      G   /usr/lib/xorg/Xorg                 58MiB |
|    0   N/A  N/A      1698      G   /usr/bin/gnome-shell               84MiB |
+-----------------------------------------------------------------------------+


確認2

/usr/localにcudaの関連ディレクトリがあるか確認する

$ sudo find /usr/local | grep cuda

/usr/local/cuda-11.4
/usr/local/cuda-11.4/compute-sanitizer
   ・・・

   



3)CUDAパス設定

CUDA のライブラリにパスを通します

$ gedit .bashrc

次の3行を .bashrc ファイルの最後に追加

#CUDA
export PATH="/usr/local/cuda/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"


確認

$ source .bashrc
$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Mon_Oct_11_21:27:02_PDT_2021
Cuda compilation tools, release 11.4, V11.4.152
Build cuda_11.4.r11.4/compiler.30521435_0



4)cuDNNのインストール

下記のURLからNVIDIA Developer Program Membership Requiredへ
https://developer.nvidia.com/rdp/cudnn-download

ログイン(またはJoin nowにて新規登録)

cuDNN Downloadのダウンロードページへ

今回はcuDNN v8.6をインストールするため、最新のボタンの下の下記を選択
            Archived cuDNN Releases 

リストから下記を選択しファイルをダウンロード
            Download cuDNN v8.6.0 (October 3rd, 2022), for CUDA 11.x
            Local Installer for Ubuntu20.04 x86_64 (Deb)

ダウンロードしたファイル名:cudnn-local-repo-ubuntu2004-8.6.0.163_1.0-1_amd64.deb

ファイルをhomeディレクトリに移動し、以下を実行

$ sudo dpkg -i cudnn-local-repo-ubuntu2004-8.6.0.163_1.0-1_amd64.deb

$ sudo cp /var/cudnn-local-repo-ubuntu2004-8.6.0.163/cudnn-local-B0FE0A41-keyring.gpg /usr/share/keyrings/
$ sudo apt update
$ sudo apt -y install libcudnn8 libcudnn8-dev libcudnn8-samples


確認


$ dpkg -l | grep cudnn

ii  cudnn-local-repo-ubuntu2004-8.6.0.163      1.0-1                               amd64        cudnn-local repository configuration files
ii  libcudnn8                                  8.6.0.163-1+cuda11.8                amd64        cuDNN runtime libraries
ii  libcudnn8-dev                              8.6.0.163-1+cuda11.8                amd64        cuDNN development libraries and headers
ii  libcudnn8-samples                          8.6.0.163-1+cuda11.8                amd64        cuDNN samples



5)Anacondaのインストール

Python 3.9をインストールするため、昨年のファイルを使用

https://www.anaconda.com/distribution/

ダウントード:Anaconda3-2023.03-Linux-x86_64.sh


$ bash Anaconda3-2023.03-Linux-x86_64.sh


確認

$ source .bashrc

$  conda -V
conda 4.12.0


$ python
[GCC 7.5.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 
Python 3.9.12 (main, Apr  5 2022, 06:56:58) 


6)TnesorFlow と Kerasのインストール

Tensorflowの2.8.2をインストール。

次を実行することでGPU対応のTensorflowとKerasがインストールされる

$ pip install tensorflow==2.8.2


GPU確認

python起動後

>>> from tensorflow.python.client import device_lib
>>> device_lib.list_local_devices()
2023-03-26 14:06:15.580531: I tensorflow/core/platform/cpu_feature_guard.cc:151] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX2 FMA
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
2023-03-26 14:06:15.612622: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:936] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2023-03-26 14:06:15.706883: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:936] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2023-03-26 14:06:15.708182: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:936] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2023-03-26 14:06:16.083901: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:936] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2023-03-26 14:06:16.084200: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:936] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2023-03-26 14:06:16.084453: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:936] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2023-03-26 14:06:16.084689: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1525] Created device /device:GPU:0 with 5239 MB memory:  -> device: 0, name: NVIDIA GeForce GTX 1060 6GB, pci bus id: 0000:01:00.0, compute capability: 6.1
[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 3029067233870127766
xla_global_id: -1
, name: "/device:GPU:0"
device_type: "GPU"
memory_limit: 5493751808
locality {
  bus_id: 1
  links {
  }
}
incarnation: 7369121378162548002
physical_device_desc: "device: 0, name: NVIDIA GeForce GTX 1060 6GB, pci bus id: 0000:01:00.0, compute capability: 6.1"
xla_global_id: 416903419
]
>>> 



7)OpenCVのインストール

$ pip install opencv-python

Collecting opencv-python
  Downloading opencv_python-4.6.0.66-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (60.9 MB)
     |████████████████████████████████| 60.9 MB 10.5 MB/s 
Requirement already satisfied: numpy>=1.14.5 in ./anaconda3/lib/python3.9/site-packages (from opencv-python) (1.21.5)
Installing collected packages: opencv-python
Successfully installed opencv-python-4.6.0.66


確認

>>> import cv2
>>> cv2.__version__
'4.7.0'



8)Pydicomインストール

$ pip install  pydicom

Collecting pydicom
  Downloading pydicom-2.3.0-py3-none-any.whl (2.0 MB)
     |████████████████████████████████| 2.0 MB 3.1 MB/s 
Installing collected packages: pydicom
Successfully installed pydicom-2.3.1



9)DCMTKのインストール

$ sudo apt install dcmtk


確認

$ dcmdjpeg --version

(以下の内容が表示されればOK)

$dcmtk: dcmdjpeg v3.6.4 2018-11-29 $
dcmdjpeg: Decode JPEG-compressed DICOM file
Host type: Debian
Character encoding: UTF-8
External libraries used:
- ZLIB, Version 1.2.11
- IJG, Version 6b  27-Mar-1998 (modified)





10)ImageJのインストール

ImageJのページからLinux版をダウンロード

https://imagej.nih.gov/ij/

ダウンロード:ij153-linux64-java8.zip

Homeで展開、起動してアイコンをお気に入りに登録する


GUI画面が小さい場合

Edit/Options/AppearanceのGUI scaleを1.5にしてみる。




11)その他の設定

○メニューに空のドキュメントを追加する

# フォルダーが日本語のままの場合

$ touch ~/テンプレート/空のドキュメント


○エディタ

・行番号の表示

・Tab 4文字空白で設定

・フォントサイズ 16


-----------------------------------

 おまけ)Dropboxのインストール

$ cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf -


起動

$ ~/.dropbox-dist/dropboxd



2019年8月26日月曜日

Pyゼミ0.01 Pythonで医用画像のAIを試すための環境構築

それではPythonゼミナールをはじめます。


Keyword:Python, VMware Workstation Player, Anaconda, Chainer, ImageJ

Python開発環境の作成

最初は開発環境の作成です。ゼミでは特に統合開発環境は使わずにテキストエディタでプログラムを入力・保存して,ターミナル(端末)上で実行するようなシンプルな環境で勉強しています。

今回の目標は,次の通りです。

  • 仮想環境(ここではVMware)でUbuntuを起動する。
  • UbuntuにAnaconda,ChainerとImageJをインストールする。
  • テキストエディタgeditを開発しやすいように設定変更する。
  • 医療画像を扱える環境を作成する。


ハードウェアの環境


  • CPU,Corei3以上
  • メモリ,4GB以上,できれば8GB以上が望ましい
  • ストレージ,20GB以上の空き領域
  • GPU,動作条件には入れませんが,連載の中ではGPU対応について取り上げます。


---------------------------------------------------

PythonとChainerのインストール手順を示します.


①仮想環境VMwareのダウンロードとインストール

ゼミでは基本的に手持ちのWindowsノートPCを使います。
Windowsに仮想環境構築のためVMware Workstation Playerをインストールします。
VMwareのホームページからダウンロードしてインストールします。

②Ubuntuダウンロード

UbuntuのLTS(Long Time Support)の最新版は現在Ubuntu18.04ですが,ネット上の情報が多いUbuntu16.04を使います。
UbuntuのホームページからUbuntu16.04のisoイメージをダウンロードします。

③仮想環境にUbuntuをインストール

VMware Workstation Player上でUbuntu16.04をインストールします。
VMware Workstation Playerを起動し,Ubuntuのisoイメージを選択し仮想環境を作ります。インターネット上に方法がたくさん掲載されいるので参考にしましょう。

④Anacondaのダウンロードとインストール

VMware Workstation Player上でUbuntuを起動して,anacondaをインストールします。
 ancondaには開発に必要なPythonのパッケージがたくさん入っています。
Anacondaのホームページからファイルをダウンロードしてください。

ターミナル(ダウンロードフォルダ内で右クリックし,リストから「端末を開く」を選択)から以下のコマンドを実行します。

$bash␣Anaconda3-4.4.0-Linux-x86_64.sh⏎

($はプロンプト,␣はスペース,⏎はEnterキーです。Anacondaのバージョンにより数字「3-4.4.0」が異なります)

⑤Chainerのインストール

人工知能フレームワークのChainerをインストールします。
ここではバージョン2.0を指定してインストールします。指定しなければ最新版がインストールされます。

$pip␣install␣chainer==”2.0.0”⏎


⑥画像解析ビューワのImageJ

ImageJのホームページから画像解析ビューワImageJのファイルをダウンロードしてインストールします。
DICOM画像の表示やメタ情報を確認することができます。
また,Pythonのプログラムで処理した画像の確認にも利用できます。

これでとりあえずの環境がととのいました.

⑦確認してみよう

1)pythonを起動します。

ターミナルからpythonの入力するとプロンプト>>>が現れ,対話モードでの入力が可能な状態です。
$python⏎
Python 3.6.4 |Anaconda custom (64-bit)| (default, Dec 21 2017, 21:42:08)
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

pythonを起動するとバージョンが表示されます。

2)簡単な演算

四則演算です.

>>> 1 + 2
3
>>> 2 - 3
-1
>>> 3 * 4
12
>>> 4 / 5
0.8


Pythonは整数の割り算で割り切れない場合,値は浮動小数点になります。割り算の結果を整数で得たい場合は // を使います.

>>> 5 / 2
2.5
>>> 5 // 2
2

3)NumPyの配列の生成

はじめにNumPyのライブラリをnpという名前でインポートします.

>>> import numpy as np


0から9までの範囲(range(10))の要素をもつ,浮動小数点(dtype = np.float32)の配列xを作成して表示します.

>>> x = np.array(range(10), dtype = np.float32)
>>> x
array([ 0.,  1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9.], dtype = float32)

4)Chainerの確認

Chainerをインポートしてバージョンを確認してみます。ゼミでは2.0を基本にしていますが,それ以降のバージョンでも問題なく動作するはずです。

>>> import chainer
>>> chainer.__version__
'2.1.0'


モジュールのインポート

次にChainerの3つのモジュールをインポートして簡単な演算の確認をしてみます。

>>> from chainer import Variable
>>> import chainer.functions as F
>>> import chainer.links as L


Variable,functionsとlinksを使って簡単ネットワークを作ってみる

VariableはChainerのネットワークに渡す変数を定義します。xに4つの値を[1,2,3,4]を代入します。

>>> x = Variable(np.array([[1,2,3,4]],dtype=np.float32))
>>> x
variable([[ 1.,  2.,  3.,  4.]])

次にlinksパッケージのLiner関数を用いて入力が4ノード,出力が3ノードのネットワークを作ってみます.

>>> l = L.Linear(4,3)


このネットワークの重みWとバイアスbの初期値を見てみましょう.

>>> l.W.data
array([[-0.35292298, -0.23537879, -0.09752855,  0.19314146],
       [-1.20308304, -0.10927824, -0.37381825,  0.24644093],
       [ 0.31677744, -0.83313662,  0.28393224,  0.09073655]], dtype=float32)
>>> l.b.data
array([ 0.,  0.,  0.], dtype=float32)
重みWは3行4列の行列で乱数により初期化されているのがわかります.バイアスは出力ノードに関連するので3つの初期値0が表示されています.

このネットワークに入力xを与えて,出力hを見てみましょう。
>>> h = l(x)
>>> h
variable([[-0.34370032, -1.55733061, -0.13475287]])

variable型で3つの出力を得ることができました。
重みWとバイアスbをもつネットワークは次のように計算して出力を求めます。
           h = W x + b 
ここでhの出力の検算してみましょう。
ネットワークlの重みの1行目はl.W.data[0]で得ることができます。
>>> l.W.data[0]
array([-0.35292298, -0.23537879, -0.09752855,  0.19314146], dtype=float32)

これに内積のメソッドdot()を使って次のように計算し見ます。
>>> l.W.data[0].dot(np.array([1,2,3,4],dtype=np.float32))+l.b.data[0]
-0.34370035

確かに,hの出力のゼロ番目の要素の値をほぼ同じ値になりました。
同様に1番目,2番めの要素の値は次のようになり,chainerを使った計算とほぼ同じ出力が得られました。
>>> l.W.data[1].dot(np.array([1,2,3,4],dtype=np.float32))+l.b.data[1]
-1.5573305
>>> l.W.data[2].dot(np.array([1,2,3,4],dtype=np.float32))+l.b.data[2]
-0.13475287

最後に出力hは負の値ですが,これをsoftomax関数を使って確率分布に変換します。
>>> y = F.softmax(h)
>>> y
variable([[ 0.3953355 ,  0.11746077,  0.48720363]])

chainerの動作の確認ができました。
またchainerのモジュールを使うことにより簡単にネットワークを作ることができることもわかりました。

5)Anacondaの確認

condaコマンドを使ってAnacondaのバージョンおよびPythonのバージョンやその他のライブラリのバージョンが確認できます。

$conda␣list⏎
# packages in environment at /home/uesemi/anaconda3:
#
# Name                    Version                   Build  Channel
_license                  1.1                      py36_1 
alabaster                 0.7.10           py36h306e16b_0 
anaconda                  custom           py36hbbc8b67_0 
 ・・・・・
python                    3.6.4                hc3d631a_0 
 ・・・・・・
zeromq                    4.2.2                hb0b69da_1 
zict                      0.1.2            py36ha0d441b_0 
zlib                      1.2.11               ha838bed_2   


⑧Pythonの終了

>>>Ctl + D



テキストエディタの設定

これからテキストエディタのgeditを使ってpythonのプログラムを作成していきますが,最初にテキストエディタのgeditの設定を行います。

geditの起動

geditの起動には空のテキストファイルを作成し,ダブルクリックして起動するのが簡単でしょう。
プログラムを作成するディレクトリ上で右クリックし「新しいドキュメント/空のドキュメント」を作成します。
ファイル上で右クリックしてリストから「名前の変更」を選択し,プログラムの名前に変更します(例えばreadFile.pyなど)

ファイルをダブルクリックするとgeditが起動してファイルを開きます。

設定ダイアログの表示

geditのメニューバーの「編集/設定」を選択します。


表示設定

最初の「表示」タブです。
行番号を表示する」にチェックを入れます。
Pythonのプログラム実行時のエラーに行番号が表示されるので,行番号を有効にしておくと作業効率が上がります。


エディター設定

次に「エディター」タブです。
タブの代わりにスペースを挿入する」にチェックを入れます。
Pythonはインデントによりfor文やif文の有効範囲(ブロック)を明示しているのでタブは非常に重要です。しかしタブとスペースが混在したりするとインデントのエラーが出力されます。ここではタブをスペース4文字に置き換えるようにします。

自動インデントを有効にする」にチェックを入れます。
プログラム入力中,文の最後でenterキーを打つと,前の行の先頭と同じ位置にカーソルが来ますので便利です。


フォントと色設定

「フォントと色」ではカラースキームを選択することができます。
好みに合わせて選択するとよいでしょう。私は「クラシック」を選択して利用しています。



まとめ

これでPythonと人工知能のフレームワークChainerを使って,プログラムを作成する準備ができました。このほかに必要なモジュールについてはそのつど説明します。
次回はDICOM画像を表示するプログラム(Pyゼミ1.01)を作成しましょう。