これまでのあらすじ:
2016年3月、フェルト生地を手で裁断している際にレーザーカッターがあれば複雑なカットが容易にできるなあと思って、安価になってきたレーザーカッターを購入しようと思ったのがきっかけ。調べていくうちに、合板も切れたほうがいいと思うようになって、CNCルーター(CNCミリング)についても考えるようになった。
Arduinoは以前から使っており、CNCシールドがあると気付いて自作も可能と思うようになった。当初はShapeOkoやX-CARVEを参考にMakerSlide、OpenRail、V-Wheel、2GTタイミングベルトなどで5万円くらいで自作しようと思っていた。AliExpressでも部品が安く買えることが分かって、しばらくは部品探し。探せば探すほど安くて本格的な部品も見つかってくるので、そんなにケチらなくてもいいのではないかと徐々にスペックアップ。最終的には剛性や精度のことも考えてボールスクリューやリニアスライドを使うことになり、予想以上に重厚な3軸CNCマシンをつくることに(約7万円)。
構想から約5週間(制作約3週間)でルーターとレーザーともに使えるようになり、現在はgrbl1.1+Arduino CNCシールドV3.5+bCNCを使用中(Macで)。余っていたBluetoothモジュールをつけてワイヤレス化。bCNCのPendant機能でスマホやタブレット上のブラウザからもワイヤレス操作可能。
その他、電子工作・プログラミング、最近は機械学習などもやっています。基本、Macを使っていますが、機械学習ではUbuntuを使っています。


CNCマシン全般について:
国内レーザー加工機と中国製レーザー加工機の比較
中国製レーザーダイオードについて
CNCミリングマシンとCNCルーターマシンいろいろ
その他:
利用例や付加機能など:
CNCルーター関係:

*CNCマシンの制作記録は2016/04/10〜の投稿に書いてあります。

2017年11月26日日曜日

Pytorch(ソース版)でCUDA9.0 cuDNN7.0を試す

GitにあるPytorchのソースをコンパイルするとCUDA9.0cuDNN7.0で動かすことができるようなので試してみました。
普段はAnacondapytorch.orgから入手できるcuda80/cudnn6.0.21/cudatoolkit8.0を使っていますが(CUDA9.0+cuDNN7.0をインストールしているにもかかわらず)、最新CUDA9.0とcuDNN7.0の組み合わせではどのくらい速くなるのか気になります。CUDA9.0は新型GPUであるVoltaのために開発されたらしく、現在使っているPascal(GTX1060)だとあまり効果はでないかもしれません。2〜5倍速くなるとは書いてありますが、おそらく条件が揃わないことにはそこまで速くならないのではないでしょうか。

コンパイルしたGitソース版Pytorch(master)には、CUDAとcuDNNのバージョン確認ができるコマンドがあります。
「torch.version.cuda」でCUDAのバージョン「'9.0.176'」と出ています。このコマンドは現在のソース版からのようです。
「torch.backends.cudnn.version()」でcuDNNバージョン「7004」と出てきます。CUDA8.0の環境だと「6021」と出てきます。

いつもベンチマーク的につかっているサンプル:dcgan/cifar10を1iteration(782回)動かしてみると、

CUDA8.0+cuDNN6.0


CUDA9.0+cuDNN7.0

数回試してみましたが、わずかな差(77.91秒:77.59秒)でしかありませんでした。一応毎回CUDA9.0のほうが0.5秒前後速いのですが、誤差も含まれているかもしれないので、このサンプルでは当てにならない。やはりVoltaじゃないと効果発揮しないのでしょうか。
いずれにしても、圧倒的な差が出るという感じでもなさそうなので、Voltaにしない限りは無理して(コンパイルまでして)使う必要もなさそうです。


ソースからのコンパイル/インストール方法(memo):
現状:Ubuntu16.10/GTX1060/CUDA9.0/cuDNN7.0/gcc6.2/python3.6
Anacondaの仮想環境にpy359(名前は任意ですがpython3.5)をつくり、その中にインストールしてします。ちなみに、pyenvの仮想環境内にAnacondaの仮想環境をつくり、二重の仮想環境にしています。
ソースからのコンパイル方法はGitにも載っていますが、gccのバージョンでエラーがでたので、gccを別途仮想環境内py359にインストールしています(gcc6.2から5.4へダウングレード)。Ubuntu16.10の場合、gcc5.5が適していると画面に出ましたが、Anacondaから入手できるgcc5.4でなんとかコンパイルできました(多少Warningがでましたが)。
最初にインストールしたい仮想環境に入ってから以下の手順ですすめてみました(ディレクトリはhome直下で、gitに掲載されている方法を参考に)


export CMAKE_PREFIX_PATH="$(dirname $(which conda))/../"

conda install numpy pyyaml mkl setuptools cmake cffi

#conda install -c soumith magma-cuda90   #(これはなくても動きました)

conda install -c salford_systems gcc-5       # gcc-5.4を仮想環境内へインストール


git clone --recursive https://github.com/pytorch/pytorch

cd ~/pytorch                             # homeにgit cloneしたpytorchフォルダ内へ移動


#念のためgccとg++(先程インストールしたgcc5.4)のパスを通しておきます

export CC=/home/mirrornerror/.pyenv/versions/anaconda3-5.0.1/envs/py359/bin/gcc

export CXX=/home/mirrornerror/.pyenv/versions/anaconda3-5.0.1/envs/py359/bin/g++


python setup.py install   #git cloneしたpytorchフォルダ内でインストール実行



#もしコンパイルが失敗したらクリーンしてから再挑戦

python setup.py clean

conda clean --all


コンパイルには5〜10分くらいかかるかもしれません。
インストール完了後、
conda list
で確認すると、
torch 0.4.0a0+ed64001
というモジュールとして入っています。

それからtorchvision(0.1.9)モジュールも別途必要となりますが、Anacondaからそのままインストールするとpytorch(通常版)も依存的にインストールされてしまうので(コンフリクト起こすかもしれない)、
conda install torchvision --no-deps    #依存関係無視で単体インストール
または、
pip install torchvision
すれば単体でインストールできると思います。
TensorflowもソースをコンパイルすればCUDA9.0に対応するようですが、面倒なのでやめてしまいました。まだしばらくはCUDA8.0でも間に合いそうです。

0 件のコメント:

コメントを投稿

人気の投稿