2019/01/10
サイエンスパーク
安原彬裕
機械学習の環境構築でハマったこと
1
自己紹介
SP1901-E04
2
• ID: ak1x(connpass, GitHub共通, SNSはやってません)
• 名前: 安原彬裕
• 画像処理を主にやっています。
• 他はWebアプリ・Windowsスタンドアロンアプリ・IoTなど
ネットでよくある記事
SP1901-E04
$ git clone https://github.com/pjreddie/darknet
$ cd darknet
$ make
$ wget http://pjreddie.com/media/files/yolo.weights
$ ./darknet detect cfg/yolov2.cfg yolo.weights data/dog.jpg
できた。以上。
・・・こんなにすんなりいくわけがない
3
今回の環境
SP1901-E04
Linux(Debian 9.6 x86_64)
Python 2.7, 3.5
GCC
CUDA
OpenCV
Yolo v3
4
Linuxをネットワークインストールしようとしてハマる
SP1901-E04
問題:
ネットワークインストール用OSイメージ(.iso)をUSBメモリに入れてUSBメモリから起
↓
無線LANのドライバが検出できず、インストールが中途半端に止まる
解決策:
通常のCD(DVD)インストール用OSイメージでとりあえずインストール、無線LANのド
バはあとから入れる
ドライバは/lib/firmware/以下に入れておけばいい。
firmwareディレクトリがなかったら作る←ここポイント
5
gitが入っていない、そしてgitのインストールもできない
SP1901-E04
問題:
$ git clone https://github.com/pjreddie/darknet
gitが入っていない←ここまではわかる
# apt install git
依存しているパッケージrsync、liberror-perlが入ってないよエラー
解決策:
rsyncはapt install rsyncでインストールできた
liberror-perlはapt install liberror-perlでnot found
仕方ないのでdebパッケージをDLして# dpkg -i liberror-perl_0.17027-1_all.debで
その後# apt install git
6
GPUドライバインストール(1)
SP1901-E04
NvidiaからDLしてインストール
# sh NVIDIA-Linux-x86_64-410.78.run
→Xが起動してたらだめだよって言われる
↓
Ctrl + Alt + F1でGUI→CUIに切り替えて
/etc/init.d/lightdm stop
さらに
# sh NVIDIA-Linux-x86_64-410.78.run
↓
nouveau kernel driverが入ってるからインストールには失敗したけど、modprobeで無効化し
ようか?って言われるのでYESを選択する
→少し進むがgccがないよと言われたりLinuxのソースコードがないとだめだよって言われ
る
7
GPUドライバインストール(2)
SP1901-E04
# apt install gcc
# apt install linux-headers-$(uname -r)
# apt install linux-source-$(uname -r)
今度こそ・・
# sh NVIDIA-Linux-x86_64-410.78.run
→インストールできた
8
CUDAインストール
SP1901-E04
ドライバインストール同様にCtrl + Alt + F1でGUI→CUIに切り替え、/etc/init.d/lightdm stop
続いて
# su cuda_10.0.130_140.48_linux.run
→g++がないからだめだよエラー
# apt install g++
続いて
# su cuda_10.0.130_140.48_linux.run
→なんとインストールできた
何回か質問されるので適当にYesって答えとく
9
YOLOのビルド(1)
SP1901-E04
Yolo公式に従って以下を実行
$ git clone https://github.com/pjreddie/darknet.git
$ cd darknet
$ make
→cudnn.hがないよエラーがでる
nvidiaからlibcudnn, libcudnn-devをダウンロード
(libcudnn7_7.4.2.24-1+cuda10.0_amd64.deb, libcudnn7-dev_7.4.2.24-1+cuda10.0_amd64.deb)
インストール(nvidiaに登録しないとならないので注意)
# dpkg -i libcudnn7_7.4.2.24-1+cuda10.0_amd64.deb
# dpkg -i libcudnn7-dev_7.4.2.24-1+cuda10.0_amd64.deb
cudnn.hの存在を確認できたので $ make
→7以降のバージョンのgccはサポートしてないんだよエラー
10
YOLOのビルド(2)
SP1901-E04
# apt install gcc-6
# apt install g++-6
これだけではgccのバージョンが変わらないためシンボリックリンクを張り替える
# cd /usr/bin
# mv gcc /tmp
# ln -s gcc-6 gcc
# mv g++ /tmp
# ln -s g++-6 g++
再度ビルド
$ make
→成功
パスを通しとく(.bashrcにも書いとく)
$ export PATH=$PATH:/usr/local/cuda-10.0/bin
11
darknet実行
SP1901-E04
$ cd darknet
$ ./darknet
→libcudart.soが見つからないよエラー
パスを通す(.bashrcにも書いとく)
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-10.0/lib64
$ ./darknet
usage: ./darknet <function>
できた
12

機械学習の環境構築でハマったこと