2018年12月20日木曜日

Pythonのリストを一部シャッフルする

基本ここを参照。
https://qiita.com/joe_banana/items/3ebe185c32e7d7a1fa85

0、1~19、20、21~29・・・・
のリストで0,20、・・・は固定して
1~19内、21~29内・・・でシャッフル。
余りは削除。

import random

k=20

f = open('train_data.txt', 'r')
areas = f.readlines()

amari=len(areas)%k
del areas[len(areas)-amari:]

for i in range(len(areas)):
areas_b=areas[i*k+1:i*k+19]
random.shuffle(areas_b)
areas[i*k+1:i*k+19]=areas_b

f.close()

f = open('new_train_data.txt', 'w+')
f.writelines(areas)
f.close

2018年12月12日水曜日

Ubuntu16.04LTSにChainerをInstallする(GTX1080 & GTX1080Ti)

Ubuntu14.04LTSのサポート終了も迫ってきておりますので、
Ubuntu16.04LTSでChainerを使えるようにセットアップしました。

sudo do-release-upgrade

というコマンドを打てば、OSのアップグレードは通常問題なく行われます。が、今回はSSDをクリーンにして、そこへUbuntu16.04.5LTSとChainerを導入しました。
**(後日、別のPC2台「1台は1080、もう一台は1080Ti」では、sudo do-release-upgradeを試みました。オプションはすべてデフォルト対応でうまくアップグレードされました。うまくいくかどうかはドライバーのバージョンなどに依存しそうな気もしていますが、do-release-upgradeは超便利なので、とりあえずこっちでやってみて、もしダメならそのとき考えるという方針がいいとおもいます)。

基本的には
UbuntuにChainerをInstallする(GTX1080)
と同じやり方です。

変更点や気になったところをいくつか列挙します。

(1)今回は4)~11)は飛ばしてドライバー導入から始めました。今回のPCはマザーのビデオポートがないので、最初からGTX1080にディスプレイが繋がっています。最近のUbuntuには汎用ドライバーが組み込まれているので、もんだいなく画面は映ります。ただし、GTX1080専用のドライバーではありません。人によっては、この汎用ドライバーを使えなくしてから、GTX1080専用のドライバーを導入しているようです(途中X-Windowが使えなくなるかもです)。今回は邪魔くさいので、汎用ドライバーはキルしていません。

(2)Nvidiaドライバーは、この時点(2018年12月12日)での最新は415でしたので、nvidia-415をいれましたが、CUDA Toolkit(バージョン10)を入れた時点で410にダウングレードされました。ここでnvidia-smiを実行しますと、Driver/Library version mismatchエラーがでます。前回はドライバーバージョンを再び無理無理上げましたが、今回はそのままリブートしました(リブート前に念のため415は手動でも削除)。リブートしてnvidia-smiを実行すると410で動いているのが確認されました。

(3)sudo apt-get install cudaのあと、apt-keyの設定をコマンド上で指示されていたので、指示通りに設定しました。

(4)パスを通した後、apt系、pip系のインストールをしました(可能な限りたくさん)。前回やりませんでしたが、今回はsudo pip install chainerの前に、sudo pip install cupyを手動で行いました(インストールに結構時間がかかります)。

(5)本質的なことではないのですが、この時点でpipはバージョン8です。最新はバージョン18(番号デカい!)ですので、「バージョンアップよろしく」というメッセージがpipをつかうたびにでますが、これは無視しました。再帰的なバージョンアップは好ましくないとおもいます。pipはもともとaptで導入したので、aptでアップグレードしたほうがいいので、apt側の対応を待ちます。

Chainerは、まだ18.04LTSはリコメンドしていませんでの、この状態がいまのところベストかとおもいます。

2018年12月7日金曜日

フォルダー名とディレクトリー名にスペース禁止

【リナックス豆知識】

よくみかけますよね。
_ アンダーバー。

これには重要な意味があります。
コマンド命令をするとすぐにわかます。
スペースがあると命令が途切れてしまいます。
そこでアンダーバーです。

フォルダー名とディレクトリー名にスペースは使ってはいけないのです。
OSで禁止されていないのが変ですが避けるべきものです。
どのOSでもアンダーバーを使うクセをつけておくのがよいとおもいます。


2018年12月4日火曜日

Win10のグラボ(GTX750Ti)をGTX1080Tiに換装

GTX750Tiで動いているWin10のグラボをGTX1080Tiに換装しました。
基本的には下記ふたつのサイトを参照しました。

【できる!グラボ交換】 グラフィックボード・ビデオカードの増設・換装の方法
http://blog.livedoor.jp/wisteriear/archives/1061882137.html

Windows 10 をセーフモードで起動する方法、覚えておくべき注意事項
https://freesoft.tvbok.com/win10/safemode/how-to-enter-safe-mode.html
(4. msconfigを利用する場合で対応)

ポイントとしては、
1)十分な電源余力があるか(750Wくらい。電源ソケットに余り必要)
2)パソコンの筐体に十分な大きさがあるか(GTX1080Tiはとにかく長い)
の2点です。

【できる!グラボ交換】 の通りに作業を行い、グラボを付けたら再起動させ、NVIDIAの最新ドライバーインストーラーを起動させればあとは自動的にセットアップされます。いちおう予めNVIDIAの最新ドライバーインストーラーはダウンロードしておき、LANは切り離しておきました。msconfigを利用する場合は、マニュアルで元の設定に戻しましょうと書かれてありますが、勝手にもとにもどりました。SONYのNNCを走らせてGPUの働きと、温度をチェックすれば作業完了です。温度はELSA System Graphなどでチェックできます。

ちなみにこのグラボは色が虹のように変わるのですが、外からみえない...

2018年11月19日月曜日

突然動きが不安定になったWindowsを修復

Windowsの突然動きが不安定になりました。
OSは8.1。

立ち上がったり立ち上がらなかったり。
立ち上がってもマウスのアイコンが出てこなかったり。
一瞬出てきてもなにかすると落ちてしまったり。
ハードディスクをSSDに換装しても、
さらに動きがカオス状態に陥る始末。
DVDからも立ち上がらない!!!

結論。今回の原因は、メモリーでした。

BIOS画面でメモリーの状態を見ると、
4本あるDIMMが3本しか認識されていない状態でした。

4本ともきっとりと差しなおすと、
ちゃんと認識されてWindowsは綺麗に動き始めました。

BIOSのところでエラーを出してくれればありがたかったなー。
なんで通り過ぎるんだよー。

2018年11月2日金曜日

Skypeでカメラが使えない(macOS Mojave バージョン10.14)

macOS Mojave バージョン10.14に更新後、
Skypeでカメラが使えない状態になりました。
Photo Boothでは使えておりました。

僕の場合の解決方法は以下の通り。

[システム環境設定]>[セキュリティーとプライバシー]>
>[プライバシー]>[カメラ]
の順に開くと、[Skype]があるはず。

[Skype]のチェックマークが消えていたら、それが原因。
チェックマークを入れると復活する。

「Skypeでカメラの使用を許可しますか?」という質問に
反射的に「いいえ」を押すとチェックマークが外れてしまいます。
このチェックマークはSkypeからは制御できないのです。

2018年1月5日金曜日

Windows10とUbuntu14.04.5のデュアルブート(OMEN by HP Desktop 880)

OMEN by HP Desktop 880では、NVIDIA GeForce GTX1080Tiが使えるデスクトップ環境が提供されています。深層学習専用機と比較するとコストパフォーマンスはかなりよいです。OMENと似たようなコンセプトのゲーム機はいろいろありますが、あとはデザインの可否でしょうか。

搭載されている1080Tiは従来の1080と比較して速度はそれほど変わりませんが、メモリーが11Gbまで拡大しています。画面表示と兼用しても、最低でも10Gb以上の領域を深層学習計算用に確保できます(描画用のグラフィックボードを追加すれば11Gbまるまる使えます)。手元のテスト環境としては十二分の能力でしょう。

OMENにはデフォルトでWindows10が付属しています。そこで今回はWindows10とUbuntu14.04のデュアルブート環境を構築します。Windows10を上書きするも一手ですが、ラボにWindows10環境がないのであえて残すことにしました。またSSDの領域を分けて使うとディスク容量に不安がありますので、Ubuntu用のディスクを新たに用意することとしました。元のWindows10は、M.2(エムドットツー)規格のSSDに搭載されています(マザーボードへの直差し)。Windows10のバックアップ領域は別途3.5インチのハードディスクに用意されており、今回は両方とも温存します。

1)新しい2.5インチSSDを用意し、筐体上部に用意されているSATAスロットに差し込みます(2スロットのうち一つを使う)。このSATAスロットは3.5インチ用なので、2.5インチSSDを差し込む際には変換アダプターがあったほうがいいです。変換アダプターがなくても差し込むことは可能ですが、ユラユラして不安定です。筐体上部に用意されているSATAスロット用には、OMENにはネジが8個付属しています。

2)Ubuntu14.04.5LTSのイメージDVDを用意します。末尾のバージョンが5であることが重要で、このバージョン以降がUEFIブートに対応しています。16.04LTSなら何の問題もないでしょう(ただし未試行です)。

3)Windows10の高速ブートをOFFにしてPCを落とします。http://121ware.com/qasearch/1007/app/servlet/relatedqa?QID=018214

4)イメージDVDをセットしてPCを立ち上げ、ESCキーを押し続け、BIOS画面に移行します。まずBIOSにもある高速ブートをOFFにします。さらにセキュアブート関係の項目をすべてOFFにしたうえで、起動順を変更します。DVDを最優先にして起動させます。

5)まずはインストールなしのトライモードで立ち上げてみます。

6)うまく立ち上がったらデスクトップのインストールアイコンをクリックしてインストール開始です。インストール対象はデフォルトではM.2のSSDになっているので、これを新しく差し込んだSSDのドライブに変更します(ここは慎重に!間違うとWindows10環境を失います)。あとは通常通りのインストールです。新しいディスクへのインストールですので、ディスクを完全イレースした上でのインストールを選択します。

7)再起動後、BIOS画面で再度起動順を調整して終わりです。

8)うまくいけば、UBUNTUのブートマネージャーが立ち上がります。

深層学習用の環境を整えるのは以前の記事の通りです。
https://doraemonkokoro.blogspot.jp/2016/09/ubuntuchainerinstallgtx1080_5.html
バージョンがいろいろ変わっていますが基本は一緒です。

Kerasの最新版2.1.Xでは、なぜかGPUが反応してくれなかったので、今回は2.0.8を使用しました。バックグラウンドにはTensorboardを使います。Chainerはバージョン3を使いましたが、問題なく動きました。



追記1(2018年6月11日):
Chainerのバージョンを4に上げました。問題なく作動しています。

追記2(2018年11月21日):
Windows10とUbuntu14.04.5のデュアルブートなんか作ってもWindows10は使わないだろうなーとおもっていましたが、SONYがneural network console(https://dl.sony.com/ja/)という開発環境を提供し始めました。コードを書くことなく、深層学習ネットワークを組み上げることができます。
 クラウドで使うのが基本のようですが(Chromeで動きます)、Windowsのデスクトップオフライン環境でも高速に動作します(WindowsユーザーでGPUを保有しているかたは、デスクトップオフライン環境がお勧め)。似たような試みとしては、IBMのWatson Studioがありますが、こちらはクラウドのみですので、Windowsアプリとして自前のGPUでガンガン動かせるSONYを使うメリットはかなりあるかと思います。
 試しにインストールしてみましたが、まずチュートリアルの動作が快適です。OMENに搭載されているGTX1080Tiもうまく動いています(独自に拡張したオートエンコーダーで目測150倍速)。データセットの扱いが独特ですし、変数が使えなさそうな雰囲気なので大規模なネットワークを組むには不向きかもしれませんが(その場合はテキストタイプのものが用意されているようです)、視覚的に構造が確認できるので、特に教育現場では役に立つことでしょう。
 ちなみデフォルトで搭載されているRandom Structure Searchは便利です。こちらがネットワークの原型だけ与えれば、勝手にいろんな構造を試してくれます(独自に拡張したオートエンコーダーで、はじめ最小二乗法のエラーが0.006だったものが、20時間ほどの探索で0.002まで下がりました。ただしネットワークは巨大化していく傾向にあります)。

追記3(2021年9月30日):
ある日突然まったく動かなくなりました。いくつかのPCが同時におかしくなったので、なにか変なことが起こったみたいです。結果的にはCMOSのクリアとメモリの接点清掃で復活しました。が、まだ不具合が。本体のSSDのWINDOWSのOSは削除、UBUNTU20へ移行してましたが、WINDOWSのバックアップディスクが悪いことをしていたみたいです。これを取り除きました。もうひとつは、元のUBUNTUディスクへのログインがはねられました。これはレガシーブートに変更して対応できました。



WindowsのWSL2は深層学習にガッツリ使える??

いろいろ検討した結果、 「WindowsのWSL2は深層学習に使える」 と、結論しましたので、ここに記録。 が、諸事情によりタイトルは??を付けました。 諸事情は最後に。 まず、 Windows及びNvidia driverはとことんアップデートする。 その後、 https://...