grbl1.1+Arduino CNCシールドV3.5+bCNCを使用中。
BluetoothモジュールおよびbCNCのPendant機能でスマホからもワイヤレス操作可能。
その他、電子工作・プログラミング、機械学習などもやっています。
MacとUbuntuを使用。

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



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


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

2018年5月25日金曜日

Ubuntu 18.04 LTS:各種設定・機能拡張(Extensions)など

Ubuntu 18.04インストール後、いくつかのセッティングをしました。今後インストールし直すときもあるかもしれないのでカスタマイズした設定の覚書。


日本語入力・切替え:
普段Macも使っているのでスペースキーを中心に、[英数][スペース][かな]の三つのキーで切替入力変換できるように[無変換][スペース][かな]のキーへ割り当て。

とりあえず以下から。
「日本語(Mozc)」だけでも日本語変換は可能でしたが、「日本語(OADG 109A)」を入れないとキー配列が日本語キーボードとずれてしまうので両方入れました。

デスクトップのメニューバー右端を見るとこんな感じででてきます。

最初は上下で日本語と英数を切り替えるのかと思っていたら、「日本語(Mozc)」だけを使って切替えるようです。普段は下の「日本語(OADG 109A)」には切り替えないらしい。これは単にキー配列のためだけに入っているのかもしれない。クリックでこれに切替えると半角英数のみで日本語切替してくれないため、挙動が変ならここをチェックしてみるといいのかもしれない。
ちなみに、何もしていないときに入力切替しても何も起こらず、実際に入力を行っているとき(画面などにフォーカスを与えて)にはじめて切替可能となるようです。試しにキーボード押して何も起こらないからといって焦らないように。

キーマッピング:
そして入力切替のためのキーマッピングですが、上画像のプロパティをクリックすると以下の画面が出てきます。
左画面下のほうの「キー設定の選択」で「MS-IME」を選んで「編集」を押すと、「MS-IME」ベースのキーマッピングをカスタマイズできるようです。ただし一つでも変更すると、「カスタム」という名前になってしまうようです。
今回は右画像にあるように、[Muhenkan]キーと[Hiragana]キーの二つに追加でマッピングしてみました。
英数に切替えるには、とにかく「IMEを無効化」すればいいようです。日本語の場合は、「直接入力」の時だけ「IMEを有効化」し、そのほかは「ひらがなに入力切替」にすればいいようです。基本的にはこの4種類の状況においてマッピングすればいいようですが、同じキーが使われていないかこのリスト内をチェックする必要があります(同じキーがある場合はその項目を削除)。
これで、Macのように日本語切替できるようになりました。


Homeディレクトリ以下を英字表示に変更:
日本語化してしまうと、ホーム以下にあるデスクトップ、ドキュメント、ダウンロードなどのディレクトリ名も日本語になってしまいcdコマンドなど使う際に面倒になるので、それらを英字表記に変更。

LANG=C xdg-user-dirs-gtk-update

をターミナルから入力して変更。変更内容について再度確認してくるので、「Don't ask me this again」にチェックを入れつつ「Update Names」をクリックして再ログイン。
そうすればこのように各ディレクトリが英字表記に切り替わります。
左側の「ホーム」と「デスクトップ」だけはなぜか変わらないけれども特に問題ない。


GNOME Tweaksをインストール:
GNOME Tweaksを使うとより細かい設定ができるようなので、「Ubuntuソフトウェア」から「gnome tweaks」で検索しインストール(sudo apt install gnome-tweak-toolでも構わない)。

通常使用している「設定」ではできないことが可能になりますが、「機能拡張」欄にあるようなGNOME Shell Extensionsを追加していくことでかなりカスタマイズできるようです。

現在はこのようなExtensionsを入れてあります。これらの一部は「Ubuntuソフトウェア」の「ユーティリティ」などからもインストールできますが、「GNOME Shell Extensions」というサイトに行けばもっと見つかります。


GNOME Shell Extensionsからインストール:
GNOME Shell Extensions(要ログイン)に行きキーワードで検索すればたくさん機能拡張が出てきます。すべてクリック操作なので気軽にインストールできます。
こんな感じで「Installed extensions」というページに行けば、パソコンにインストールしてあるExtensionsと同期して機能のON/OFF、設定、アンインストールがブラウザ上でできます。
特に気に入ったものが以下です。


これは画面上部のトップバーにアプリメニューバーを組み込む機能拡張です。
通常トップバーにはアプリの操作メニューがでてこないため、もう一段下にアプリ用メニューバーがでてくるところ、その二段をひとつにまとめてくれます。
特にChromeを開いているときには、Chromeのメニューバーが出てこないため不便でしたが、これを使うことで表示するようになりました。
こんな感じでMacと同じように「ファイル 編集 表示・・・」という感じでトップバーに現れます。他のアプリでも同じように現れてくれるので便利です。
ただ、Ubuntu 18.04の場合は最新のものを
からダウンロードし、解凍したファイルの中身を
~/.local/share/gnome-shell/extensions
の中に入れる必要があります。さらに、そのままでは設定ができないので、ここに書いてあるように
sudo apt install gir1.2-clutter-1.0 gir1.2-clutter-gst-3.0 gir1.2-gtkclutter-1.0
で依存ファイルをインストールすれば問題なく動きます。


NO Title Bar:
これはタイトルバー(アプリウィンドウ上部のバー)を消す機能拡張。ならびに、左上に設置したウィンドウボタンの位置も変えてくれます。
以下はAtomエディタを使った場合ですが、通常トップバー、タイトルバー、メニューバーの3段構成になって上2段が無駄に見えます。

しかし、先ほどのGnome global Application menu(HUD for Gnome)と合わせて使うと、以下のように1段にすっきりとまとまってくれます。
もともと、トップバーやタイトルバーが無駄だと感じていたので、これで納得です。

できるだけ一本のバーにまとめたいということから、似たようなもので「Dash to Panel」や「TaskBar」という機能拡張もあります。MacのDockのようにお気に入りのアプリなどを入れておくことができるトップバー(あるいはボトムバー)になり、さらにアプリのメニューもいっしょに入れることもでき、トップバー、Dock、メニューバーを一本化できます。試しにやってみましたが、アプリメニューもバーに入れてしまうと、あまりにもごちゃごちゃしたのでやめました。


Extensions:
これは、インストールしたExtensionsをトップバーからのメニューでON/OFF/設定できる機能拡張です。
GNOME Tweaksでも可能なのですが、手っ取り早く設定できるのであると便利です。一番下のAdd gnome shell extensions...をクリックすればサイトへ飛んでくれます。
一時的に機能を中断したり、Extensionsの品定めしているときには便利。


Gno-Menu:
トップバーからアプリなど選択できるメニューの機能拡張。グリッド状に複数のアイコンが配置されるため探しやすい。主なディレクトリ、最近使った書類、頻繁に使うアプリ、ブックマークなどもある。最近更新されたようでワークスペース選択もできる多機能。

トップバーにはこのMenu(上画像では足跡マーク)以外にもViewやAppsも追加できる。ViewやAppsは場所がとられてしまうので、最低必要なMenuだけでも十分。
このGno-menuだけでもたくさんのことができる。つい欲張って多機能にしようとすると煩雑になってくるので、必要な部分だけを使うと言う感じ。もともとトップバー左端には「アクティビティ」というクリックエリアがあったけれども、それも消してしまいました。


Dash to Dock
DashをDockに追加させるだけでなく、Dock自体いろいろ調節できる機能拡張。
Dockはデフォルトのままだと融通が効かないのでこれもExtensionsでなんとかならないかと。
トップバーとメニューバーの一本化はできたので、あとはよく使うアプリなどをいれておく場所なのですが、さきほどのGne-MenuがあるのでもはやDock自体あまり必要なさそう。ただ、以前もよく使っていたのでできれば使いたいという感じ。
画面左上に主な機能が集中しているので、今回もまた画面左にDockを設置することに。
・ダッシュを一番上に配置(たぶんあまり使わない)
・アプリ画面最大化(あるいは重なると)の際にDockが自動的に隠れる
・マウスを左端に持って行けば再びDockが出てくる
・Dock上でマウスホイールを動かすとworkspace移動
というくらいでしょうか。サイズ、色や透明度も変えられ、デフォルトよりは細かく設定できます。

左:Dockが隠れている時、右:マウスを画面左端につけるとDockが飛び出てくる。
もともと、トップバー1本(ボトムバーなし)にできるだけ機能を集中させ、必要に応じてDockが左から出てくるようにしたかったので、これで大体想定していた構成になりました。あとは以下にあるような細かなパーツをトップバーに組み込む感じ。


Clock override:
トップバー上の時計のフォーマットを自由に変えられる機能拡張。
年/月/日/曜日/時/分/秒の表示が可能。そのほか任意の言葉なども表示できます。
デフォルトだと年が表示できなかったような。


Show Desktop Button:
デスクトップを瞬時に見ることができるトップバー上のボタン。上画像真ん中の家型のボタン。


WorkspaceBar:
ワークスペースを移動するためのトップバー上のボタン。上画面左端。
ほかにもWorkspace用の機能拡張はいくつかあるのですが、これが使いやすそうでした。現在のワークスペースの数、そしてワンアクションで行きたい番号をクリック。マウスホイールでも移動可能。
ただしこのままだと設定をクリックするとバグってしまう。少し古いタイプなのか、gtk2.0開発環境をインストールしてみることに。

sudo apt-get install libgtk2.0-dev

でインストールすると無事設定ができるようになりました。以下が設定画面。位置が調節可能。
もしかすると、少し古いタイプでもgtk2.0を入れれば動くのかもしれません。


Trash:
ゴミ箱をトップバーに表示する機能拡張。
以前はDockの一番下の方にあったゴミ箱だけれども、Ubuntu17.04あたりからデスクトップの任意の位置に表示され、どこに置こうか迷ってしまう。というよりも邪魔なのでゴミ箱を非表示にして、そのかわりにこのTrashをトップバー上に置いてすっきりさせました。
一応トップバーから空にする/開く/中身の確認も可能です。
いつも不要ファイルを右クリックしてゴミ箱に入れているので、デスクトップ上になくても特に問題なし。


GDebi Package Installer:
Ubuntuソフトウェアからインストールするdebファイルインストーラアプリ。

いままではdpkgコマンドを使ってdebファイルをインストールしていましたが、gdebiコマンドを使うと依存関係も解決しながらインストールできるようです。それのGUIアプリで、ダウンロードしたdebファイルを選択してインストールボタンを押すだけなので使いやすい。


Atom editor:
普段使っているエディタ。前から使っているのでダウンロードしておきましたが、Ubuntuソフトウェアからインストールすると日本語入力できないAtomになってしまいます。再度、https://atom.ioからdebファイルをダウンロードして先ほどのgdebiでインストールし直したら日本語入力できるようになりました。
ちなみに、Anaconda NavigatorからはVSCodeが簡単にインストールできます。VSCodeのほうが軽快に動くので、そっちのほうがいいかもしれません。
Dockへのランチャー登録は、DashからAtomを見つけ出し右クリックで登録するか、ターミナルでatomと入力して起動するとDockにアイコンがでるのでそのまま右クリックで登録。


Polo File Manager:
二窓のファイルマネージメントアプリ。
複数のフォルダ間のファイル移動やコピーなど多い時は便利。


Obmin:
ワンクリックでファイルシェアリングできるHTTP(HTTPS)ファイルサーバー機能拡張。
トップバーからオンにすると、他のPCのブラウザ上からアクセスできるようになります。
ブラウザを通して画像など閲覧/ダウンロードできるので便利です。
これは設定画面ですが、共有したいディレクトリやフォルダを複数追加できます。チェックを外して停止させたり、サーバごとオフにすることも簡単にできます。
ちなみに他のPC上のブラウザ(http://192.168.3.2:8088にアクセス)からはこのように見えます。必要なファイルをダウンロード(あるいはドラッグ&ドロップ)するだけです。


Firewall Configuration:
Ubuntuソフトウェアから入手できるgufwというファイアウォール機能拡張。
起動と同時にパスワード入力が必要。設定画面内でオンにすればいいだけ。
ただし、ローカルネットワーク内でのファイル共有をするには、オンにしたあとに「ルール」ボタンを押して設定を追加(+ボタン)する必要がある(設定が面倒であれば一時的にオフにするしかない)。

関連:
Ubuntu 18.04 LTS: ファイアウォール、ファイル共有、画面共有、SambaやVNCなど(Macと)


まとめ:
いろいろカスタマイズするのは楽しいのですが、あまりにも機能を積み込みすぎると重くなりそうなので、できるだけ少なくしてみました。
結果的には大体頭に思い浮かべていたような感じにはなりました。個人的にはGnome global Application menu(HUD for Gnome)を使うことでトップバー周辺がすっきりしたのが一番の収穫。
MacとUbuntuの2台使っているのでファイル共有はあると便利。
GNOME Shell Extensionsにはたくさんの機能拡張がありますが、古いものの多く必ずしも動くとは限りません。しかし、gtk2.0など古い開発環境などインストールしておけば(sudo apt-get install libgtk2.0-dev)少しは動くかもしれません。

2018年5月22日火曜日

Ubuntu 18.04 LTSへアップグレード(不具合無事解決)

ようやく待望のUbuntu18.04LTSにアップグレードしました。



手持ちのパソコンは、MSiゲーミングノートパソコン(GeForce1060)であり、当初Ubuntu16.04LTSをインストールしたかったのですが、相性が悪いのかフリーズしまくりで、たまたま不具合の起こらない16.10をインストールしました(17.04、17.10も不具合発生)。
しかしながら、16.10はもうすでにサポートが切れており、必要なドライバやモジュールを自力で探してインストールしなければいけなくて大変でした。
そこで待望の18.04LTSが先月リリースされたので早速アップグレードしようと思いましたが、CUDAには正式に対応していないようだったので様子見していました。

現在CUDA9.2までリリースされていますが、Tensorflow1.8はまだCUDA9.0にしか対応しておらず、しかもCUDA9.0はUbuntu17.04までの対応なので、この組み合わせが難しいところ。ネットで検索してみると、Ubuntu18.04LTSにCUDA9.0をインストールしてTensorflow1.8も動く例を発見したので、今回ようやくアップグレードすることにしました。

またもやインストールで問題発生:
クリーンインストールしようと思いUSBメモリにイメージファイルをいれて起動させてみると、画面には現れるがクリックできないという現象が発生。
日本版、英語版の両方を試してみましたが、入力インターフェースのドライバの不具合なのかクリックが効きません。

試しにBIOSをアップグレード(特に効果なし):
クリックできない対策として、MSiゲーミングパソコンのBIOSをアップグレードする方法というのが見つかったので、試しにやってみることに。
・MSi BIOS更新方法
各型番に応じたサポートページに行くと、新しいBIOSが今月更新された模様。

USBメモリに解凍したダウンロードデータを入れ(他のデータが入っていても大丈夫)、BIOS画面内でデータを選択してアップデートするという手順。

再度Ubuntu18.04LTSインストールにチャレンジ:
BIOS更新後、USBメモリから起動してみましたが相変わらずクリックが効かない。そのままフリーズすることも。
USBメモリで起動する際に、

Try Ubuntu without Installing
Install Ubuntu
OEM install (for manufacture)
Check disk for detects

という選択肢がでてきて、通常は一番上の「インストールせずに起動」を選んでUbuntu内でGUIを使ってインストールするわけですが、2番目のいきなり「Ubuntuをインストールする」を選択してみました。
そうすると、インストール画面に移行しました。どうやらクリックできるようです(安心、しかしまだ何があるか分からない)。
今回は標準インストール(最小インストールという選択肢もある)で。ひと通り設定項目を入力して、再起動。
さてどうなるか?

相変わらず不具合:
しかし、不具合はまだ続く。ログイン画面でパスワード入れてリターンを押すとフリーズしてしまう。
一応、ある程度の入力、マウス操作ができるようになったので、さっきよりはまし。

リカバリーモードで起動:
さて次の方法は、起動の際に、
Ubuntu
Advanced options for Ubuntu
がありますが、通常は一番上で普通にUbuntuを起動するところ、二番目を選択して、リカバリーモードで起動させます。
リカバリーモードで起動すると解像度の低い画面が出てきます。そうすると、クリックできないとかフリーズするとか不具合は発生しないようなので、ターミナルを起動して
sudo apt-get update
sudo apt-get upgrade
でアップグレードしてみました。
そうすればいくつかバグ修正されて直るかもしれないので。

普通モードで起動(結果不具合解決):
恐る恐る普通モードで起動してみると、まずログイン成功。これはいけそうという予感。
無事、デスクトップが現れて、フリーズやクリックできないなどの不具合は解決されました。
他に不具合がないかいろいろ探ってみましたが、いまのところ大丈夫そうです(安心)。
これでなんとかロングタームサポートのUbuntuを利用できる状態になりました。

各種インストール:
CUDA関係:
CUDAは、Tensorflowの関係から9.0をインストール。Ubuntu 17.04用です。
以前はdebファイルからインストールしていましたがエラーがでるので、runファイルでインストールすると大丈夫でした。ちなみにドライバは390のままで、384はインストールしませんでした。インストール途中でサンプルもインストールするか聞かれますが、一応yesにしておいたほうがよさそうです。

CUDA 9.0
・cuDNN 7.1.2 for CUDA 9.0



Python関係:
・pyenv
・Anaconda
・Python3.6
・Tensorflow-gpu 1.8.0
・Pytorch 0.4.0

そのほか:
・Chrome
・Atom Editor
・dconf Editor
・gnome Tweaks


まとめ:
今回のインストールも不具合に遭遇しましたが、なんとか無事成功できてよかったです。一番の収穫はサポート切れのUbuntu 16.10からLTS(ロングタームサポート)に移行できたことでしょうか。これでしばらくは安心して使えそうです。
もしかしたら、以前もリカバリーモードでバグ修正していれば16.04LTSが使えたのかもしれません。
Linuxは不具合が多いので、毎回いろんな対処方法をしているうちに勉強になるという感じです。
おかげでBIOSも最新にアップデートできたということもあるので、このような不具合が起こらなければ、そんなこともしていなかったでしょう。


2017年12月6日水曜日

Pytorch CUDA 9.0

ようやく正式にCUDA9.0のPytorch0.3.0がリリースされたようです。前回、慌ててソース版をコンパイルする必要もなかったようです。早速入れ替えてみようと思います。環境:Ubuntu16.10、GTX1060、CUDA9.0、cuDNN7.0。

無難にPython3.5で。pyenv仮想環境内にさらにAnaconda仮想環境をつくり、py359というAnaconda仮想環境内にインストールしています。ちなみに現在はpy27(python2.7、cuda8.0)とpy35(python3.5、cuda8.0)という仮想環境も別にインストールしてあります。

インストール後、Pythonを起動し、
import torch
torch.version.cuda
で、CUDAのバージョン確認、'9.0.176'になっています。
torch.backends.cudnn.version()
で、cuDNNバージョン確認、7004になっています。

いつものPytorch/examples/dcgan/cifar10を動かしてみると(1イテレーション=784回)、
1:15.80=75.8秒くらい。このサンプルでCUDA8.0と比較すると2秒くらい速くなったかもしれません。

2017年11月27日月曜日

Windows10/Ubuntu16.10:パーティション割当変更

エディタなどの作業環境はほぼ落ち着いたのですが、そうやってサンプルなど試しているとやはりハードディスクの容量が気になってきます。デュアルブートにしたため、データセットを取り込んでしまうと、けっこうすぐにいっぱいになってしまいそうです。
ゲーミングノートパソコンには、256GB(PCIE)+256GB(SATA)が搭載されており、256GB(PCIE)のほうがWindows10とUbuntu(Linux)で半々くらいに分けられています。256GB(SATA)のほうはデータ保存用として丸々使うことができますが、より高速な256GB(PCIE)のほうはUbuntu用に対して120GB程度しか割り当てられません。
Windows10はほぼ使うことはないのでもっとUbuntuに割当量を増やしたいのですが、Windows10の「ディスクを管理」でパーティションをつくると、なぜか全体の50%くらい(125GB相当)をWindows10に取られてしまう(ただ、このMSiのゲーミングノートの場合、後からでもHDなど交換可能らしい、例えば512GBなどに)。

そこでEaseUS Partition Masterというフリーソフトを見つけて使ってみると、Windows10ではそれ以上限界だと言われたにもかかわらず減らすことができました。以下は結果。
左の73.24GiBがWindows10です。元々125GBから50GBくらい減らしました。一番大きい147.93GiBがUbuntu、その右側がUbuntuのスワップメモリ領域で15.89GiB。全体の2/3くらいはUbuntuに割り当てることができたので前回よりはゆとりができました。
以下は変更の流れ。


最初は真ん中あたりで左がWindows10、右がUbuntuという感じで分かれていました。Windows10を縮めてUbuntuが左側に拡張すればいいかなと思いましたが、パーティションは右側には増やせるけど、左側には増やせませんでした。真ん中の50GBをUbuntuに割り当てることはできるのですが、そうすると不連続になってしまうので、どうしようかと。

また初期化してすべてをインストールするというのは大変そうなので、そのまま移植できないのかとネットで調べてみると、あることはあるのですが大変そう。そのまま最初からインストールし直したほうが早いかもしれないということで、前回苦労してインストールしたけれども(そのおかげでほぼやり方は習得できたので)思い切って初期化してしまいました。

右半分のUbuntuは初期化してしまい、その後統合し、新たにインストールという手順です。再度インストールとは言ってもまだあまりソフトは入っていないので、実際はそれほど大変ではありませんでした。前回苦労したNVIDIAドライバやCUDAもすんなり入りました。

せっかくインストールし直すということになったので、試しにUbuntu17.10をインストールしてみました。前回そこそこ動いていたので大丈夫かなと思いましたが、終了ボタンを押すとフリーズしたり、完全にオフになるまで5分かかったりと、まだ少し不安定でストレスもたまるので、このゲーミングノートパソコンと相性のいいUbuntu16.10に戻しました。次期Ubuntu18.04がリリースされるのを期待するしかありません。
最終的には、Windows10をもう一つのハードディスク(256GB:SATA)にまるごと移動したいのですが、危険なのでまだ保留中。

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でも間に合いそうです。

2017年11月16日木曜日

デュアルブートWindows10/Ubuntu16.10/NVIDIA-384/CUDA9.0/cuDNN7.0/Anaconda

前回の投稿にも書きましたが、現在使用しているMacBook Pro(2014年製)の後継機として、MSI GS43VR 7RE Phantom Proという14型のゲーミングノートパソコンを購入しました。GeForce GTX1060のGPU内蔵なので、Deep Learningの計算をさせればMacBook Proよりもずっと速いはずです。Windows10ですが、Deep Learningのプログラミング環境では、Linuxのほうが高速に処理してくれるらしいので、Linux(Ubuntu)とWindows10のデュアルブートにしました。
MSI GS43VR 7RE Phantom Pro ゲーミングノートパソコン:
プロセッサ:Intel Core i7-7700HQ
GPU: GeForce GTX1060(6GB)
RAM: 16GB
HD: 256GB(PCIEx Gen3) + 256GB(SSD/SATA:オプション変更)
画面:14インチ/1920x1080px
サイズ:345x245x22.8mm
重量: 1.8kg

Deep Learning用のパソコンにするには、以下のことが必要らしい。
・デュアルブート(万が一LinuxがダメならWindowsに戻るため)
Ubuntuのインストール(ほぼ定番)
NVIDIAドライバ(GPUドライバ)のインストール
CUDA(NVIDIA/GPU並列計算プラットフォーム)のインストール
cuDNN(NVIDIA/Deep Learning用ライブラリ)のインストール
Anaconda(Python統合環境/Python3.6含む)のインストール
Pytorch(Deep Learningライブラリ)のインストール
Tensorflow(Deep Learningライブラリ)のインストール
PyCharm(エディタ)のインストール

1日で終わればいいけど、そう簡単には終わらないはず。特にLinux(Ubuntu)で環境を整えるのは、バージョンの違いなどもあるためかなりハマりそう。ネットで調べてみてもトラブルが多い。
結果的には何とか動きましたが、何回もインストールし直し、思うようにいかず設定に数日かかってしまいました。

これはUbuntu16.10上の画面です。通常Ubuntu16.04が最適なバージョンですが、MSiのゲーミングノートPCとは相性が悪いのかフリーズしたりほとんど使えない状態でした。やむを得ず、Ubuntu16.10にしてみて悪戦苦闘の結果なんとか動いたという感じです。Ubuntuのバージョンによって、対応するドライバやライブラリなどが変わってしまうので、その組み合わせが難しい。
Ubuntuを何回もインストールし直していると、コンピューター好きには楽しいのですが(コンピュータの構造、シェルコマンド、viエディタの使い方などに詳しくなってしまう)、いつのまにか環境構築が目的(達成感や克服感)となってしまい、本来の目的であるLinuxで何をするかということから次第に遠ざかってしまい、時間ばかり消費してしまうのであまり深追いはしないほうがいいと思います。

理想的な組み合わせ:
・Ubuntu16.04
・NVIDIAドライバ nvidia-384(多分低すぎなければいい)
・CUDA 8.0(対応:Ubuntu16.04/14.04、Tensorflowなども対応)
・cuDNN 6.0/7.0

最終的な組み合わせ:(なぜか無事動いた)
・Ubuntu16.10/Windows10デュアルブート(gcc 6.2.0)
・NVIDIAドライバ nvidia-384
・CUDA 9.0(対応:Ubuntu17.04/16.04、未対応:Tensorflow/Pytorch)
・cuDNN 7.0.4 for CUDA 9.0
・Anaconda 4.3.30(cuda80/cudnn6.0.21/Tensorflow-gpu1.3.0)
・Pytorch (Linux/conda/Python3.5/CUDA8.0)

矛盾するけれどもAnacondaで解消?
NVIDIA製CUDA8.0だとUbuntu16.04のgccバージョン5(6未満)でなければならず、Ubuntu16.10にしてしまうとgcc6.2になってしまう。仮にgccを5へダウングレードしても、CUDA8.0をUbuntu16.10にインストールするとgcc6.2へアップグレードされてしまうので、やむを得ずCUDA9.0ならびにcuDNNもCUDA9.0用をインストール。とりあえず、CUDA9.0とcuDNN7.0のマニュアルにある動作確認では問題なし。
ちなみにTensorflowやPytorchはまだCUDA9.0には未対応。
Tensorflow1.5からCUDA9.0に対応するらしい。いちおうベータ版Tensorflow1.5はあるけれども、ソースをコンパイルしてインストールしなければならない。またベータ版PytorchであればCUDA9.0でも動くらしい
しかしながらAnacondaをインストールしてみると、仮想環境のおかげなのかCUDA8.0+cuDNN6.0対応のTensorflow-gpu1.3とPytorchのサンプルがきちんと動きました。もしかしたらUbuntu17.10(最新)でも動くかもしれないけれど、またインストールし直すのは大変なのでやめました。

Tensorflow-gpu/CNN/CIFAR10での実験:
ということで、CIFAR10のサンプルで試してみました。以下がGPU(GeForce GTX1060)で動かしてみた内容。右端の数値を見ると0.018〜0.019sec/batchとなっています。これはかなり高速。
ちなみに、MacBook Pro(GPUなし)のほうでも同じように動かしてみると、以下。
0.680sec/batch前後という結果。比較すると、GPUのほうが約36倍速いということになります。あまりに違うので、いままでMacBook Proを使っていたのが馬鹿馬鹿しく感じてしまいます。その他VAEのサンプルで試すと約6.5倍の速さでした。CNNのサンプルに関しては、cuDNNを使っているためか、かなり効果があるようです。特にエラーもでないし、このような歴然とした結果からおそらくGPUはきちんと機能しているはずです。

ネットで設定例がたくさん見つかるので、ここでは細かな内容は省きますが、手順を一通り書いておきます。

デュアルブート下準備:
・Windowsの「ディスクの管理」でパーティションを区切り約120GBをUbuntu用に確保
・USBメモリースティック(8GB)をFAT32フォーマット化
・Ubuntuをダウンロード
Rufusソフトをダウンロード
・Rufusを使ってUbuntuをUSBメモリースティックへLiveCDとして書き込む
・再起動しBIOS画面にする(起動中Deleteキー連打/違う機種だとF2キー連打)
・BIOS画面内でFast boot無効、USBメモリースティックを最優先に起動順序を変える
ハマりどころ:
Windows10のボリュームはすでに5個くらいに分割されており、Ubuntu用に充分な領域を確保できないけれども、後から変えることもできるはず。それほどこの段階では問題はない。

Ubuntu:
・USBメモリースティックからUbuntuが立ち上がったらWifiとつないでおく
・Ubuntuのインストール(使用言語、地域、ユーザ名、パスワードなどの設定)
・インストールされれば再起動
・また起動中にBIOS画面にしてPCにインストールしたUbuntuを最優先起動に設定する
・Ubuntuとして起動したら、Wifiなど基本事項を設定
ハマりどころ:
Ubuntu17.10が最新バージョンだけれども、CUDAには正式に対応していないためUbuntu16.04を選ぶのがいいとされる。しかし16.04(日本語版)をインストールしてみたところディスプレイ解像度変更不可、ネットがつながらないなどの問題発生。オリジナル版もフリーズしたり機能上の不具合が多くで断念。つぎに16.10を試してみると何とか動いた。さらに次の候補となる17.04もフリーズ、17.10はかろうじて動くがたまにフリーズする。16.10くらいしかまともに動かないため、やむを得ず16.10で以下の作業を進めることに。しかし気がかりなのは、CUDAが17.04か16.04にしか正式に対応していないという点。

NVIDIAドライバ:
NVIDIAサイトからドライバのダウンロード
・Nouveauの無効化
・Ubuntu上で仮想コンソールへ移動してドライバのインストール
・BIOS画面でセキュアブート無効にする
ドライバを入れた後(CUDA無し)、ターミナルでnvidia-smiを入力してこの画面が出ればOK(しかしなかなか出なかった)。

ハマりどころ:
ほとんどはUbuntuのターミナルからインストールするけれども、一旦GUI表示を無効にして仮想コンソールへ場所を移して、そこでドライバのインストールをするというややこしい手順。また、viでNouveau無効化ファイル作成するため、viの使い方も知らないといけない。セキュアブート無効を忘れるとログインループにハマったりGUI画面が表示されなくなったりします。後から気づいたけれども、セキュアブート無効にすればこのような面倒な手順は不要かもしれない。最初nvidia-375をインストールしていましたが、他のソフトを入れると最新のnvidia-384に引き上げられてしまうようです。結果的には問題なし。

CUDA:
NVIDIAサイトからインストーラのダウンロード
・CUDAのインストール
・パスの追加
ハマりどころ:
作業事態は単純だけれども、どのバージョンをインストールしたらいいのか迷う。最新はCUDA9.0だけれども、まだTensorflowやPytorchは対応していない。それではCUDA8.0にすればいいかというと、Ubuntu16.10のgccのバージョンと対応しなくなる。現状では他の環境やライブラリがまだCUDA8.0にしか対応していないため、CUDA9.0を使わないほうがいいみたい。CUDA8.0にとどまるなら、Ubuntuを17.04にアップグレードするという手もあるけれども、このMSI GS43VRは17.04でもフリーズしてしまう。かろうじてUbuntu17.10では動くのだけれども、一旦ここまでインストールしてしまうと17.10へ変えにくい。というわけで、使用するパソコン、ライブラリ、ドライバ、プラットフォームのそれぞれのバージョンがうまく噛み合わなくて選択が難しい。CUDAのバージョンに振り回される。
CUDAでつまづくようなら、NVIDIAサイトからダウンロードせずに、
sudo apt-get install nvidia-cuda-toolkit
でインストールしたほうがいいかもしれません。

cuDNN
・メール登録が必要
・CUDAのバージョンに合わせてNVIDIAサイトからダウンロード
・Ubuntuへインストール
ハマりどころ:
特に難しくはない。このライブラリを使うとかなり高速になるようです。tarファイル版は一気にダウンロードできるけれども、なぜかマニュアルにある動作確認用サンプルが含まれていない。3つあるdeb版なら3つ目がサンプルなのでいいかもしれない。

Anaconda
・pyenvを最初にインストール(こちらを参考にしました
・pyenvにパス通す
・Anacondaをインストール(Python3.6含む)
・tensorflow-gpu1.3をインストール(Anaconda内)
・pytorchをインストール(Anaconda内:pytorch/torchvision/cuda80)
・cudnnをインストール(Anaconda内)
*Anaconda経由(あるいはanaconda-navigator)で、tensorflow-gpu1.3、pytorch、cuda80、cudnn6.0をインストールできるのでかなり楽。Anaconda cloudに登録し、cloud上で必要なライブラリを探すのもいいと思います。場合によってはpython2.7もインストールして仮想環境をつくっておくといいらしい。
結果的には、まだ未対応のCUDA9.0とcuDNN7.0(CUDA9.0用)をNVIDIAからインストールしたにもかかわらず、Anacondaの仮想環境とpytorch/cuda80/cucnn6.0のおかげで無事動いたのかもしれない。

PyCharm(エディタ):
サイトから無料のcommunity版をダウンロード
・解凍したあと、pycharm-community-2017.2.4/binへ移動し、./pycharm.shで起動。
・Anacondaのパスとつなげておく(確かデフォルトでつながっていたような)
・エディタ内でターミナル使用、git pullも可能
・pytorchのdcganサンプルなどにあるコマンドラインオプション/引数なども登録可能
*例えば、
python main.py --batchSize 128 --cuda --ngpu 1
などのmain.pyのうしろにつける設定項目(こちらを参考に)。

まとめ:
・Linuxと使用するパソコンとの相性次第(ダメならWindowsで)
・BIOS画面でFast BootとSecure Bootを必ずオフにする
・Anacondaを使う
前半は先が見えずかなり苦戦し、UbuntuがだめならWindows10にインストールするしかないとも考えていました。海外国内問わずネット上にはなかなか動かない例もたくさんあり、予想以上に面倒でした。Linux固有のトラブルと、ハード、ソフトそれぞれの対応が微妙にずれており、しかも今後リリースされるライブラリも徐々にバージョンアップしていくので、またインストールし直す時がくるので面倒です。Ubuntuは年2回(4月と10月)にバージョンアップするらしく、次回18.04は2018年4月という意味でLTS(Long Term Support/5年間)になる予定。
しかしながら、一度設定できればGPUのパワーはすごい。MacBook Proもそこそこ速いのではないかと思っていましたが、そんなことはありませんでした。やはりGPU搭載のパソコンは圧倒的に作業時間が短縮されていいと思います。特にCNNなどの層が厚いアルゴリズムでは効果てきめんという感じです。

Linuxはトラブルが多いと思うのですが(ドラブルがあれば自分で直すという姿勢からか)、一旦動き出せば、機能も見た目もシンプルだし元々軽快なためか計算速度も速いらしいでの、できるだけWindowsを使いたくありませんでした。WindowsはしばらくTensorflowにも対応しておらず、Pytorchにおいては公式ではLinuxとMac版だけ(WIndows版はAnacondaからインストール可能)。MicrosoftがCNTKをリリースしたものの、Windowsはやや一歩遅れというのも気になります。

また、DockerやAWSなどのクラウドへUbuntu16.04をインストールし(必要に応じてその他のライブラリも)、GPUで計算させるという方法もあるようです。どうしても時間を短縮したいという場合は有料(数百円)にはなるけれどもいいかもしれません。コーディングは普通のノートパソコンでやって、計算のときはクラウド利用するというのが一番スマートな方法(ものを持ちすぎない)だと思います。

Tensorflow1.4でKerasが取り込まれ、さらにはEager(まだpre-alpha版)も登場し(tf.learnやtf-slimはどうなってしまったのか)、まだまだ変化がありすぎる状況です。現在はCUDA8.0とcuDNN6.0/7.0が主流だと思うのですが、数ヶ月以内ですぐにCUDA9.0に対応してしまうと思います。半年後にはUbuntu18.04LTSがリリースされ、そのころにはまた新たなライブラリや環境が登場していると思うのできりがないという感じです。

人気の投稿