動かざることバグの如し

近づきたいよ 君の理想に

TensorFlowからGPUが認識できているかを2行コードで確認する

GPUのドライバ入れた!CUDAもOK!けどTensorFlowでちゃんと使えてるかわからん!ってときの確認用

環境

方法

from tensorflow.python.client import device_lib
device_lib.list_local_devices()

を実行してdevice_type:GPUのやつがあれば認識してる。

実際にやってみると、

$ python
>>> from tensorflow.python.client import device_lib
  return f(*args, **kwds)
>>> device_lib.list_local_devices()
2018-01-12 20:09:07.451631: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:892] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2018-01-12 20:09:07.452057: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Found device 0 with properties: 
name: Tesla K80 major: 3 minor: 7 memoryClockRate(GHz): 0.8235
pciBusID: 0000:00:04.0
totalMemory: 11.17GiB freeMemory: 11.10GiB
2018-01-12 20:09:07.452093: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1120] Creating TensorFlow device (/device:GPU:0) -> (device: 0, name: Tesla K80, pci bus id: 0000:00:04.0, compute capability: 3.7)
[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 2319180638018740093
, name: "/device:GPU:0"
device_type: "GPU"
memory_limit: 11324325888
locality {
  bus_id: 1
}
incarnation: 13854674477442207273
physical_device_desc: "device: 0, name: Tesla K80, pci bus id: 0000:00:04.0, compute capability: 3.7"
]

って感じ

認識できてない場合(GPUとTensorFlowとの連携がうまく行ってない場合)だと以下のようにCPUだけになる。

>>> device_lib.list_local_devices()
[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 2286130473433412332
]

ちなみに自分の場合は pip install tensorflow-gpu が足りなかった

GCPの仮想マシンのディスク容量を増やす

GCPの機能の1つ、GCEでは仮想マシンが構築できる。AWSでいうEC2的な

初期ウィザードでそのまま作るとルートディスクが10GBで作られるが、流石にキツくなったので容量を拡張してみたメモ

やりかた

f:id:thr3a:20180110233658p:plain

  • ここからターミナル(管理画面)にアクセス
  • 左メニューから「ディスク」をクリック
  • ディスク一覧が表示されるので、拡張したいディスクをクリック
  • 右上の「編集」をクリック
  • GB数を入力して青い保存ボタンをクリック

これでハードディスクレベルでは増量された。

が、OSが拡張されたセクタを認識しなくてはならない。手元のUbuntuでは再起動したら自動で増えてれたがCentOSでは増えてくれない。

確認

増やす前

root@instance-1:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            2.0G     0  2.0G   0% /dev
tmpfs           395M  5.6M  390M   2% /run
/dev/sda1       9.7G  9.7G     0 100% /
tmpfs           2.0G     0  2.0G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
tmpfs           395M     0  395M   0% /run/user/1001

増やした後 /dev/sda1の部分が増えてる

root@instance-1:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            2.0G     0  2.0G   0% /dev
tmpfs           395M  5.9M  389M   2% /run
/dev/sda1        30G  8.1G   21G  28% /
tmpfs           2.0G  108K  2.0G   1% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
tmpfs           395M   28K  395M   1% /run/user/113
tmpfs           395M     0  395M   0% /run/user/1001

CentOS等、一部のOSではコマンドの操作が必要ぽい。以下を参照

https://www.compiere-distribution-lab.net/2016/04/23/gcp-lab-0001-%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB-%E3%83%AB%E3%83%BC%E3%83%88-%E3%81%AE%E3%83%87%E3%82%A3%E3%82%B9%E3%82%AF%E5%AE%B9%E9%87%8F%E3%82%92%E5%A2%97%E9%87%8F%E3%81%99%E3%82%8B/

Python(Anaconda)でCythonのインストールにコケる件

環境

症状

pip install cythonでエラーになる

  Found existing installation: bleach 2.0.0
    Uninstalling bleach-2.0.0:
      Successfully uninstalled bleach-2.0.0
  Found existing installation: Cython 0.26.1
    Uninstalling Cython-0.26.1:
Exception:
Traceback (most recent call last):
  File "/anaconda3/lib/python3.6/shutil.py", line 544, in move
    os.rename(src, real_dst)
FileNotFoundError: [Errno 2] No such file or directory: '/anaconda3/lib/python3.6/site-packages/__pycache__/cython.cpython-36.pyc' -> '/var/folders/6z/xq_8ddx97hq9hzlgwzjjdjbw0000gn/T/pip-zvhgvr6a-uninstall/anaconda3/lib/python3.6/site-packages/__pycache__/cython.cpython-36.pyc'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/anaconda3/lib/python3.6/site-packages/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
  File "/anaconda3/lib/python3.6/site-packages/pip/commands/install.py", line 342, in run
    prefix=options.prefix_path,
  File "/anaconda3/lib/python3.6/site-packages/pip/req/req_set.py", line 778, in install
    requirement.uninstall(auto_confirm=True)
  File "/anaconda3/lib/python3.6/site-packages/pip/req/req_install.py", line 754, in uninstall
    paths_to_remove.remove(auto_confirm)
  File "/anaconda3/lib/python3.6/site-packages/pip/req/req_uninstall.py", line 115, in remove
    renames(path, new_path)
  File "/anaconda3/lib/python3.6/site-packages/pip/utils/__init__.py", line 267, in renames
    shutil.move(old, new)
  File "/anaconda3/lib/python3.6/shutil.py", line 558, in move
    copy_function(src, real_dst)
  File "/anaconda3/lib/python3.6/shutil.py", line 257, in copy2
    copyfile(src, dst, follow_symlinks=follow_symlinks)
  File "/anaconda3/lib/python3.6/shutil.py", line 120, in copyfile
    with open(src, 'rb') as fsrc:
FileNotFoundError: [Errno 2] No such file or directory: '/anaconda3/lib/python3.6/site-packages/__pycache__/cython.cpython-36.pyc'

とりあえず以下のコマンドを実行

conda install -c anaconda cython

その後に再度pip installするといける。

同じAnacondaでやってるはずなのに上手くいくときもある。なぜだか理由がわからない。。。。

Ubuntuで古いバージョンのパッケージをインストールする

環境

最新ではなく1つ前のバージョンをインストールしたい、ってのはよくあると思う。そもそも特定のバージョンをインストールするには、そのバージョンがいくつかを知る必要があるのだが、Ubuntuだと結構面倒だった。

古い記事(Ubuntu 12とか)だとapt-show-versionsコマンド使おうとか、apt-cacheで裏技的にバージョンを表示していたが、aptコマンドに統一されてからは結構直感的に出来るようになった わーい

方法

例えば cudaのバージョン一覧を表示したい場合、apt show <パッケージ名> -aで一覧が表示される。-aをつけないと最新版歯科表示されないので注意

# apt show cuda -a

Package: cuda
Version: 9.1.85-1
Priority: optional
Section: multiverse/devel
Maintainer: cudatools <cudatools@nvidia.com>
Installed-Size: 25.6 kB
Depends: cuda-9-1 (>= 9.1.85)
Download-Size: 2,512 B
APT-Sources: http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64  Packages
Description: CUDA meta-package
 Meta-package containing all the available packages required for native CUDA
 development. Contains the toolkit, samples, driver and documentation.

Package: cuda
Version: 9.0.176-1
Priority: optional
Section: multiverse/devel
Maintainer: cudatools <cudatools@nvidia.com>
Installed-Size: 25.6 kB
Depends: cuda-9-0 (>= 9.0.176)
Download-Size: 2,504 B
APT-Sources: http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64  Packages
Description: CUDA meta-package
 Meta-package containing all the available packages required for native CUDA
 development. Contains the toolkit, samples, driver and documentation.

Package: cuda
Version: 8.0.61-1
Priority: optional
Section: multiverse/devel
Maintainer: cudatools <cudatools@nvidia.com>
Installed-Size: 25.6 kB
Depends: cuda-8-0 (>= 8.0.61)
Download-Size: 2,510 B
APT-Sources: http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64  Packages
Description: CUDA meta-package
 Meta-package containing all the available packages required for native CUDA
 development. Contains the toolkit, samples, driver and documentation.

Package: cuda
Version: 8.0.44-1
Priority: optional
Section: multiverse/devel
Maintainer: cudatools <cudatools@nvidia.com>
Installed-Size: 25.6 kB
Depends: cuda-8-0 (>= 8.0.44)
Download-Size: 2,504 B
APT-Sources: http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64  Packages
Description: CUDA meta-package
 Meta-package containing all the available packages required for native CUDA
 development. Contains the toolkit, samples, driver and documentation.

ここで8.0.61-1をインストールしたい場合は

apt install cuda=8.0.61-1

でおk かんたんだ