へっぽこ技術ブログです

【覚書】【AI】ふる〜いPCにTensorflow環境を作ったった(多分)という話

会社の倉庫に何台も転がっている古いPCにNVIDIAGPUを載っけて、そこにTensorflowを導入できたっぽいので手順を覚書しておく。

 

■マシン環境:

Fujitsu FMV ESPRIMO D5350

  - MotherBoard : GIGABYTE GA-TQ35M

  - CPU : Intel Core2Duo E6850 3.0GHz

  - Memory : 4GB(DDR2 2GB × 2)

  - HDD : 500GB

  - GPU : MSI Geforce GTX-1050ti 4G OCV1

  - 電源 : 230W

 

■ソフトウェア環境

Windows 10 (Fall Creator Update)

・Anaconda 5.1 (Python 3.6 version, 64-Bit Graphics Installer (537MB))  download

・CUDA 9.0 (cuda_9.0.176_win10.exe と 2つのパッチ)  download

・cuDNN 7.0.5 (cudnn-9.0-windows10-x64-v7.zip)*1  download(要ID登録)

python 3.5.5*2

・tensorflow-gpu 1.5.0

・keras 2.1.6

・Visual C++ 2015 再配布可能パッケージ  download

Visual Studio Community 2017  download

 

■インストール手順 Part.1 (ダウンロードしたソフトのインストール)

(1) コントロールパネルの「プログラムと機能」からNVIDIA関係のものを全てアンインストール

  このPCはグラボを載せるとマザーのDsub出力が使えなくなるので必然的にディスプレイをグラボ側に接続する必要がある。この状態で Windows10 をクリーンインストールするとNVIDIAのソフトが勝手に入ってくるっぽい。CUDAをインストールするときに同じのがインストールされるので、バッティングしないように一応アンインストールしておいた。(この作業が必要かどうかはわからないけど念の為)

(2) Visual C++ 2015 再配布可能パッケージをインストール

 うーん、不必要かも知れない。そのうち試す。

(3) Visual Studio Community 2017 をインストール

 CUDA 9.0のインストール中に「こいつ必要だけど入ってる?」と聞かれるので、あらかじめインストールしておいた。

(4) CUDA 9.0と2つのパッチをインストール

(5) cuDNNのzipを展開して c:¥Program Files¥NVIDIA GPU Computing Toolkit¥CUDA¥v9.0 の下にコピー

(6) Anaconda をインストール

 

■インストール手順 Part.2 (環境構築)

(1) Anaconda Promptを起動。以下、このウインドウで作業する。

(2) 「conda upgrade -n base conda」でcondaを最新版に更新

(3) 「conda create -n tfenv35 python=3.5 jupyter」で tfenv35 という環境を作成*3

(4) 「activate tfenv35」で環境を切り替え。

(5) 「pip install tensorflow-gpu==1.5」でTensorFlow 1.5をインストール

(6) 「pip install keras」でKerasをインストール

 

そのうち Windows10のクリーンインストールからこの手順で大丈夫なのか検証しておく。もう一枚 1050tiを買おうかな?*4

 

 ネットのたくさんの方々のブログを紐解いてここまでできた。皆様の知見公開に感謝。

 

 

 

 

 

*1:7.1.4ではダメ

*2:3.6でも普通に動いた

*3:3.6でも大丈夫だったので conda create -n tfenv36 jupyter ってので良さげ。tfenv36の部分はお好きな名称で

*4:もう一枚買って試した。1080なマシンでも試した。Good!でしたよ

【覚書】【AI】Windows10にTensorflowとKerasを使える環境を設定したいのだけど...

いろいろなWindowsマシン(i7~Core2Duo、GTX1080~GTX750Ti)にTensorflowを入れたのだけどサクッと動くときと実行時にエラーを吐き出すときがあってよくわからない。Web記事をもとにいろいろと試してみるけど、結局のところCUDA、cuDNN、Tensorflow、Pythonのバージョンの組み合わせで不具合が起きているのではないかと思われた。...っちゅーわけで、巷のソレ系の技術ブログさんで示されているバージョンの組み合わせを一覧にしてみようかなーと。

 

見つけ次第に以下へ記していく所存

No. CUDA cuDNN tensorflow-gpu Python
1 8.0 6.0 1.4  
2 9.1 7.1.3 1.8  
3 9.0 7.0 1.6 3.5
4 9.1 7.0.5   3.6
5 8.0 5.1   3.5
6 8.0 6.0    
7 8.0 6.0 1.4 3.5

 空欄はバージョンの記載が無しだったものです。

 

元記事へのリンクも張ろうかと思ったけどちょっとなんなのでヤメておいた。

 

 

【Windows】【覚書】Creator Updateを適用したら通信が劇的に遅くなったのを解決したっぽい話

Windows 10 に Creator Update Fall を適用したらネットワークが(逆)感動するくらいに遅くなった。今までふつ〜に数十Mbpsが出ていたのに1Mbps出れば良い、下手すると64Kbpsとかしか出なかったり。各種SpeedTestサイトで測ってもタスクマネージャーの表示をみてもそのくらいの低速。光回線だってのに!無線部分だけの通信速度をみた見るとこれまた普通に 500Mbps以上(うちのWi-Fi802.11ac使ってるので)は出ていると表示されているのに...

Creator Updateを削除(OSを旧バージョンに復旧)すると回線速度がふつ〜に戻るので明らかにアップデートが原因。これは困った。

様々なサイトを見てみたのだけど同じ症状になっている人が意外にも少ない。質問されていても解決に至っているのは無し。

ぶっちゃけ諦めていたのだけど、2018年1月になって全ての人にCreator Update FallがWindows Update経由で落ちて来るようになった。これはさすがにいつまでも旧バージョンを使っているわけにいかなそう。

ということで改めて調べまくってみたところ、関係あるか無いかわからない以下の記述を見かけて試してみたところうまくいった(通信速度が数十Mbpsに回復した)ようなので覚書。

news.mynavi.jp

 

ざっくりいうとMicrosoft Wi-Fi Direct Virtual Adapterというドライバと相性の良くない無線LAN用デバイスがあるってことらしい。無効化したところほぼ元どおりの速度が回復したよ、と。 

無線LANに原因があるとは思わなかった。でも本当に改善されたのかはまだ様子をみないとわからない。通信が不安定(タスクマネージャーで見てると急に通信速度が0Mbpsになってずっとそのままということがあったり)っぽいのがちっと怖い。気のせいかもしれないけどね。

 ちなみに使っている無線LAN用デバイスは「BUFFALO WI-U3-866D」というUSB接続のやつです。

 

というわけで、その後についていつか書くかも。

 

おしまい

【覚書】KMS認証サーバー壊れた

年末にKMSライセンスの管理サーバーとして稼働させていたPCが突然壊れた。電源がランプが点いていて一見普通に稼働しているようなのだけど実は動いてなかったので実際にはいつから壊れていたのかわからないけど。

サーバーとして売られていた機種ではなくふつ〜のPCを使って無休で稼働させていたのでまあ耐久性的にはしょうがないか。Windows7から8を経て10にOSをUpgrade(基本的に管理させるクライアントOSに合わせてアップさせる必要があるから)させていたし、よく働いてくれていたということで。

なぜ故障に気づいたかというと、Windows10とOffice 2013のKMSライセンス管理をさせていたのにそれらのクライアントで認証エラーが発生するようになったから。あれ?と言うことはもしかして結構前から壊れていたんじゃ無いのかな。

 

ということで、Windows10とOfficer2013のライセンス管理も Windows Server 2012 R2機に行わせることに。こいつはいまWindows 10とOffice2016のライセンス管理をさせているサーバー機である(Domain Controlerで、DNSやらDHCPやらもやってる)。

その途中でした失敗を自分用に覚書。

 

(1) Windows10クライアント機の管理するように設定してあったつもりができてなかった。slmgr.vbs /dli all の結果をよく見ると「Windows(R) Iperationg System, VOLUME_KMS_20120R2_WIN10 channel」が「このライセンスは使用されていません。ライセンスされていません」の状態だった。

解決策:普通のWindows10やWindows Server 2012 R2のKMSキーを登録してもだめ。専用のキー(Windows Server 2012 R2 上で Windows 10以下を管理するためのKMSキー)を用意して登録すべし。

https://support.microsoft.com/ja-jp/help/3086418/error-0xc004f015-when-you-try-to-activate-windows-10-enterprise-on-a-w

 

(2) ライセンスマネージャーでOffice 2013のキーが登録できない。

解決策:Office 2013用のボリュームライセンスパック(追加ソフト)を適用してから作業する(Office 2016の登録時にダウンロードしてあったボリュームライセンスパックを使ってたのでダメだったっぽい)。あと、Active Directoryでの管理とKMSサーバーソフトでの管理のどちらで行うかを間違えないこと。

 

間違ってたらごめん。それにしてもちょっと恥ずかしいミスばかり。ぽっ

 

【Advent Calendar】こんなこといっいな♪な話

あー、この記事は以下のAdvent Calendarの記事です。4つ目の記事書くのを登録してたのすっかり忘れてクリスマスもTooに過ぎてから書いてます。ゴメンナサイ。

 

adventar.org

 

ちなみにクリスマス・イブのイブはイブニング(Evening)の略で、単に「クリスマスの夜」という意味でしかありません。今は0:00から24:00までが1日と呼ばれていますが、昔は日没から次の日没までを1日としていたので12月24日の日没から12月25日の日没までクリスマスであり、12月25日の夜明けまでが「夜=イブ」というわけです。尊敬するアイザックアシモフ先生のエッセイに書かれていたことです。何が言いたいかっていうと「イブ=前日」って意味じゃねーから12月23日に『今日はクリスマス・イブイブだね❤︎』とか寝ぼけたこと言ってんじゃねーぞ、ってことです。

 

おしまい

 

 

 

ではなくて、プログラミングクラブのアドカレ的にプログラミングの話っちゅーか心構えって言うか考え方の事を書きます。書きますというか寝言を言います。

説教というわけでは無いのですが、プログラミングクラブに所属してくれているメンバーで「作品を仕上げて公開する」事ができていない人が残念ながら多々見受けられるのでちょっと「それってどうなのかなー」と思っています。

一般に漫画とか絵を描いている人たちの世界では「下手でもいいからどんどん他人に見てもらうこと」「とにかくたくさん手を動かす(描く)こと」ってのはもはや常識かと思います。それと同じ事でプログラム作りの世界も、作品を作っては公開するって事が上達やモチベーションアップのためにはもう絶対条件だと思うんですよね。

特に今はアプリストアが充実してますのでまずはGoogle Playに開発者アカウントを登録して(今でも$25で永遠に利用可能なのかな?)ヘタレ作品でもいいから公開して見ましょう。意外と「こういうのが欲しかった!」と喜んでくれる人がいたりしますし、よしんば誰からも反応なくてもマイナスになることは何もありませんから。

#昔は自分のWebサイトで公開ってのが普通だったなあ。もしくはベクターさんあたりくらい。

#自前のサイトで公開してたときはストアとカスタマイズの要望を受けてたりしたなあ。ストア経由だとこれができないのが寂しいよね。

 

ちなみに単機能のアプリをたくさん作ってみるのがオススメ。例えばQRコードを読み取って読み取った内容を音声で出力するだけのアプリ、とか。

上記のアプリは「視覚障害の方がレストランのメニューに何かが書かれているけど読めないで困る。音声で読み上げてくれたらいいのに」という要望を聞いてきた学生の話を聞いて、「バーコードリーダーで読ませてサーバーにあるメニューデータを検索させるか......。いや待てよ、直接料理の名前をQRコード化してそれを音声読み上げさせればいいじゃん」と思ってサクッと作ってみたものです。今時はQRコードを読むライブラリや音声読み上げのWebAPIなどが充実しているのでそれを呼び出すだけだからそんなに手間かかりませんでしたよ〜。

 

と言うわけで、クラブに所属してくれているのは大変嬉しいのだけど、自信持って「こんなの作ってます(作りました)」って言うネタを1つは持って欲しいなーという、ささやかな願いを表明して、2017年を終わりにしたいと思います。

 

おしまい(本当)

 

 

【覚書】Office 2013のKMSボリュームライセンスをサーバーに登録失敗した話

Windows Server 2012 R2 のサーバーにて Office 2016のKMSライセンスキー管理を行わせていたのだけど、新たに Office 2013のライセンスキー管理も行わせようということになった。

Windows Serverの「コントロールパネル」→「管理ツール」→「ボリュームライセンス認証ツール」を起動してKMSキーを登録しようとしたのだけど、最後のところで「プロダクトキーが無効であるか、ライセンスが一致しません」という旨のメッセージが出て登録ができなかった。

さんざっぱら悩んだけどなんてことはなくて、Office 2013 クライアントのKMSライセンス管理をさせるには Office 2013 用のボリュームライセンスパックというのを導入しておかなければいけないのであった。Office 2016 のライセンスキーを登録する前にも同じことをしていたのにすっかり忘れていた。

ちなみにこれ↓

Download Microsoft Office 2013 ボリューム ライセンス パック from Official Microsoft Download Center

 

 

その他、詳しいことは

Office 2013 の Active Directory によるライセンス認証

を読んでください。

 

おしまい

 

 

【Advent Calendar】Oracle Javaプログラミング資格のススメ

この記事は以下のAdvent Calendarに向けた記事です。

adventar.org

 

昨日の記事は の、「Javaの開発環境構築手順 その2」でした。度々のお目汚し申し訳ない。

 

さて本日は「Oracle Javaプログラミング資格」について記します。

 

現在のJavaの開発元である「Oracle社」が直々に Javaプログラミングに関する認定資格を実施しています。Javaの資格を取るならコレが最強にして最大のものです。以下のページに説明があります。

Java SE 8 認定資格 | オラクル認定資格制度 | Oracle University

 

資格試験について説明してくれているサイトもたくさんありますので色々と見てみてください。

 

おしまい。

 

 

 

 

 

 

...だけではちょっと不親切なので簡単に説明。

 

Oracle社のお得意な分類に沿って「Gold」「Silver」「Bronze」という資格の段階があります。内なる自分の力*1の大きさに沿って受験しましょう。

 

まあ、勉強したてなら Bronze から受験になるでしょう。BronzeはJavaの初歩の初歩についてだけ問われますので、参考書や問題集を元に勉強するだけで合格できると思います。基本は何を学ぶ上でも大切ですので、Bronze資格の勉強で「コマンドラインでの実行の仕方」とか「main関数の記述の仕方」とか「ポリモーフィズムの意味」などをしっかりと理解しましょう。

 

最終的には Gold資格を取得して欲しいです。Javaプログラマの資格試験としては 前身に SJC-P というのがありまして、これに相当するのが Gold資格です。ぶっちゃけ、それなりに自信持って自慢できるのは Gold持ちになるでしょう。Bronzeとは実力のケタが違いますので戦いにすらならないでしょう。[要出典]

 

ふつ〜のJavaプログラミング(Java SE)に関する資格は Gold が最上位です。飽き足らずに更に上位の資格、ある意味『神の領域』まで目指したい人は Java EE の資格を目標にするってのも良いかもしれません。

 

 

まあとりあえず、「コマンドラインの実行環境を作って」「Bronze資格を目指せ」ってことで。

 

おしまい(本当)

 

*1:人はそれをコスモと呼びます