pandazx's blog

データ分析など雑多な技術ブログ

Deep LearningにおけるCPUとGPUの性能比較メモ

興味があったので、いくつか記事を漁ってみた。

benchmark 1

以下はNVIDIA 1080ti, Jetson, Qualcomm, Google Vision kit, Intel Core i7などのHWごとの 処理性能をベンチマーク

https://towardsdatascience.com/benchmarking-hardware-for-cnn-inference-in-2018-1d58268de12a

パラメータ数が少ないとCPUでもGPUに近いスループットが出る。それでも2倍遅いが。 パラメータ数が多い場合はGPUの方が数倍速い。 MobileNetのようなモバイル向けのDLはパラメータ数が少なく、CPUで実用的な性能が出ている。

benchmark 2

以下はResNetやSqueezeNetのGPUとCPUの比較。 CPUはGPUの100倍の時間がかかっている。

https://qiita.com/yu4u/items/c6e24d862325fac96f61

benchmark 3

以下はMSによるAzure上のベンチマーク結果。

https://azure.microsoft.com/en-us/blog/gpus-vs-cpus-for-deployment-of-deep-learning-models/

環境にかかる費用を同一にしたCPUとGPU環境を用意した場合、 同一コストではGPUの方が数倍、性能が出ることを示している。 3 node GPUと5 node CPUが同一コストらしいので、 今の価格表を見てみると以下の通り。 GPUはNC6 seriesのK80を使うインスタンス。$0.9/hour CPUはD4 v2の8coreインスタンス。$0.458/hour 3 node GPUで$2.7/hour, 5 node CPUで$2.29/hour 今の価格ではCPUは6 nodeにした方がフェアな比較になる。

Visual Studio 2010でCannot find or open the PDB file error

実行中に以下のエラーメッセージが出た場合の対応。

'C:\Windows\System32\ntdll.dll' を読み込みました。Cannot find or open the PDB file

Visual Studioで、ツール→オプション→デバッグ→シンボル→Microsoft シンボル サーバにチェックする。 これで解決。

参考記事

Skype for Business自動起動を停止

自動起動は止められないので、停止コマンドを自動実行させる。

以下の内容でstop_skype.bat ファイルを作成(Skypeアプリを停止するバッチ)

taskkill /F /IM lync.exe /T

Win+Rでshell:startupでスタートアップフォルダを開いて、stop_skype.batファイルを移動。

PCを再起動して動作確認。

参考記事 Windows10 - アプリのスタートアップを無効にする方法 - PC設定のカルマ

Ubuntu16.04でCUDAなどのインストールでログインできなくなった場合の対処

NVIDIAグラフィックカードディープラーニングGPUとして使う場合、 グラフィックカードのドライバ、cuDNN、CUDAをインストールするが、 インストール後に再起動すると画面が正しく表示されず、ログインできなくなる場合がある。

場合があるというか、よくある。

Ubuntuでこの現象が起きた場合に画面が起動中の紫色一色になったままことがある。 この場合、放置、電源長押しのシャットダウン、再起動を何回か繰り返して 20-30分ぐらい経過して、諦めの境地に達した時に 急に画面を正しく認識し、ログイン画面が表示されるようになるので、すぐに諦めてはいけない。 後はディスプレイの画面表示をフルスクリーンにしたり、他のにしたりしてみたり。

以下の方法も有効だと思われる。

Ubuntu14.04にNVIDIAドライバーをインストールしたらGUIログインできなくなったときの話

メモ: 話が分かりにくい人の条件

@sogitani_baigie のツイート。

https://twitter.com/sogitani_baigie/status/1022282283997310977?s=21

話が分かりにくい人の条件

・前提の説明がない

・結論を先に言ってない

・質問に答えてない

・全体→部分という構造になってない

・抽象的な言葉が多い

・相手に合わせて使う言葉を選んでない

・言葉を省略しすぎてる

・事実と解釈がごちゃまぜ

・話が拡散したり脱線したりする

 

教材として使えそう。

戦わずして勝つファシリテーション

開発プロジェクトでお客様または企画と打合せする際に打合せ資料を作成し、打合せの流れを考えてアジェンダを作成する。

打合せの目的が進捗報告の場合がある。その場合、プロジェクトを進めるにあたって見つかった課題を議論する。

課題はプロジェクト関係者全員にとって解決すべきことだが、その解決方法は様々である。解決方法によっては、誰かにしわ寄せが行くこともある。開発を請け負う側としては、開発がスムーズに行くようにしたいと思うのは当然である。

 

おそらく、多くの場合、課題は開発から報告される。打合せで課題をそのまま報告するのは悪手である。開発側としては、その課題の落とし所を考えておき、打合せで解決方法が意図したところに落ち着いて欲しい。

これの可能性を高めるには打合せ準備が大事だ。そして、「戦わずして勝つ」、つまり、打合せでハードな議論をせずに意図したところに話の流れを持っていく。

それは話の出発点を相手が重視するところからスタートさせること。例えば、企画があって開発があるので、当然、出発点は企画の立場にたったものになる。最初に開発の話からスタートさせてはいけない。それでは、企画からしたら、自分たちのロジックではないものをぶつけられるので、話を聞くスタンスが守りから入ってしまう。それではお互いがぶつかってしまう。

相手が納得しているロジックからスタートして、意図した解決方法に至るまでのロジックを展開する。この時にすべてを話すのではなく、一部は相手に考えてもらい、自然と意図したところに話がいくようにファシリテーションする。

 

どうやっても、どちらかが泣くしかない場合は戦うしかない。ただ、その場合、最終的に責任者が決断することになるので、それこそ、打合せが始まる前に勝負は決まっていると言えなくもない。

プロジェクトを壊す人

とある記事からの引用だが、

古参メンバーに何から何まですべて聞く
進捗が良くないことをごまかす
理解できていない部分をごまかす
よく分からないけど、なにかやばい

 

この中のどれか1つ該当ではなく、複数持ちの人はプロジェクトキラーと言える。