パスワードを忘れた? アカウント作成

tuneoさんのトモダチの日記みんなの日記も見てね。 みんなの日記はここから一覧を見ることができます。

13285211 journal
日記

tuneoの日記: マルウェアによるソースコード流出をアクロバット擁護する情報セキュリティ弱者に戦慄

日記 by tuneo

マルウェアにすり替えられたMac版のHandBrakeに引っかかってソースコードを流出させたアプリケーションデベロッパーが、その顛末記をブログに書いたところ某ソーシャルメディアで神対応だのいい話だのと称賛を集めている。……かつて短期間だが情報セキュリティの分野で仕事をしたこともある身としては、これが悪夢だったらどんなによかったか、と思うね。

13284134 journal
日記

tuneoの日記: 線形代数に不信感 3

日記 by tuneo

もちろん線形代数は大事ですよ?でもこんなトンパチなことを書かれたら眉に唾を付けたくなるのは人情ってもんじゃないですか。

一発目のサンプルコードは目を覆わんばかりにひどい。2つのシーケンスの要素同士の積からなる新しいシーケンス(アダマール積っていうんだっけ?)を作るには、というお題でPythonのべた書きとnumpy利用を比較して線形代数のメリットを示してみせたいらしいのだが、何すかこの汚いコードは。

# 2つの配列を掛ける
x = [1,2,3]
y = [2,3,4]
product = []
for i in range(len(x)):
    product.append(x[i]*y[i])
# 線形代数バージョン
x = numpy.array([1,2,3])
y = numpy.array([2,3,4])
x * y

しょっぱなのコメントの「配列」という言葉にイラっとする(上記のコードで使われたのは「配列」ではなく「リスト」である。Pythonにはリスト以外に「配列」を提供するarrayってモジュールがあるので、区別はきちんとしましょう)。そしてシーケンスsの全要素を頭からなめるのにfor i in range(len(s)): s[i]なんちゃらと書く連中は滅ぼされなければならない。おまけに、こんなのリスト内包表記とzip()を使えば[_x * _y for _x, _y in zip(x, y)]一発ではないか。

もう一つ追い打ちをかけておくと、アダマール積ってのはどういう「線形代数」の問題を解決するのか?という解説がないので「そういう計算をするのにnumpyってのが使えるんですね、すごーい!たーのしー!……で、それが何?」と思うのは人として当然だと思う。

そしてとどめに上記の例でnumpyを使うメリットは「速い」ことなんだそうな。もう言葉がない。「numpy使うとアダマール積が速いんだぞ線形代数はすごいだろ!」とドヤリングされても、この文章がターゲットとしている「初学者」は何が何やらさっぱりだと思うんだけど。

13280624 journal
日記

tuneoの日記: 手持ちの(使ってない)DIMMを眺めてみた。

日記 by tuneo

ラベルにはどんな情報が書いてあるのかな。
# 使ってるメモリは箱開けて見るのがめんどうくさいから省略。

・Micron Technology 2GB DDR3 SO-DIMM
「2GB 1RX8 PC3-10600S-9-10-B1」と書いてあるので、容量2GB、シングルランクでチップ数は8、PC3-10600(DDR3-1333)ということがわかる。

・Samsung Electronics 2GB DDR3 SO-DIMM
「2GB 1Rx8 PC3-10600S-09-10-ZZZ」こちらもMicronと似たような感じ。わかることも同じ。

・SK Hynics 2GB DDR3 SO-DIMM
「2GB 2Rx8 PC3-8500S-7-10-F2」2GBで2Rx8って書いてあるので、1Gbitのチップが16個載ってるデュアルランクなモジュールだとわかる。

・UMAX 4GB DDR3 SO-DIMM
「SODIMM,4GB,DDR3,PC12800,CL11」……容量は分かったがチップ数がわからんしランク数がわからん(目視では1Rx8の模様だが)。PC3-12800かDDR3-1666に統一してほしい。

うーむ、UMAXはイマイチだなぁ。もう一つ、Precision M6300に挿そうとして挫折したセコハンのモジュール(高かったなぁ)行ってみようか。

・KOMPUTERBAY 4GB DDR2 SO-DIMM
「4GB PC2-5300/5400 DDR2 667MHz NON ECC UnBuffered」容量は分かる。でもPC2-5300はDDR2-667でしょ?併記するスペースがあったらランク数書いてほしいんだがな(目視した限りでは2Gbitを16個積んだ2Rx8の模様)。

13279561 journal
日記

tuneoの日記: メモリ増設成功 2

日記 by tuneo

4Gbit×8のSO-DIMMが元凶だったらしいです。2Gbit×16のSO-DIMMに交換してもらったら(店員さんにはご面倒をおかけしました)すんなり8GBで動くようになりました。メモリチップの数が増えると配線長とか電気的な面で問題が出る気がするから少ないほうがいいんじゃね?と思ってたら例外もあるというオチ。勉強になりました。

しかしメモリを増設した後も、HDDからSSHDに移行しようとしたらC:ドライブに不良セクタが見つかってntfscloneに文句を垂れられたりで移行作業が面倒くさくなってきたので、メディア作成ツールでインストールDVDを焼いて、SSHDにWindowsをクリーンインストールしてしまいました。店に文句言ってもよかったんだけど、今更160GBのHDDに未練はないしOSが入ってドライバも全部当ってるからこれでいいや。ディスクが速くて快適快適。500GBの大容量(笑)HDDと8GBメモリ、それにCore i5の仮想化支援で1台くらいなら仮想マシンだって動かせちゃうぞ。

なお、CPU内蔵のGPUが貧相なせいか、Chromeでブラウザゲームやったら「WebGLがブロックされました」が頻発して悲しいです。Precision M6300のQuadroFX 1300Mってちゃんと仕事してたんだなぁ。

全体的には快適なんだけどこういう些細な粗が目について、ちょっと残念。

さて、PrecisionのSSD引っこ抜いてデータ吸い出すかな。

13277143 journal
日記

tuneoの日記: UMAXか?UMAXがダメなのか?(半狂乱 5

日記 by tuneo

新しく買ったセコハンノートPCのメモリ増設騒動の続き。160GB HDDを500GB SSHDに換装しようと思ったのだが、SSHDは7mm厚なので本体に仕込むと隙間ができてしまい、なんかの拍子に確実に抜けるだろう、と予測される。今日は仕事が捗ったので、早めに上がってスペーサを買いに行った。ついでにメモリも新しく買ってきた(おかげで懐が寒い)。

早速裏蓋を開けてメモリを換装し、電源を投入してUSBメモリからLinuxを……立ち上げようとしたらまたリセットorz。新品買ってきてもダメかー。ちなみに今回買った4GB×2も、かつて不安定さゆえに死蔵した4GB×2もUMAXなんだよな。UMAXは何か俺のPCに含むところがあるのか?(←被害妄想
# デスクトップPCに挿してあるUMAXのメモリはノントラブルで動いてるけど。

13276345 journal
日記

tuneoの日記: あれ?このメモリひょっとして前から腐ってた? 3

日記 by tuneo

今まで寝床で使っていたセコハンのDELL Precision M6300改は何かにつけて不安定(原因はメモリ不良?)だったうえに、Core2Duoなんていう今となっては「ただのデュアルコアCPU」を搭載してたのでさすがに非力さ全開だった。しかし後継機を探そうにも当時としてはお大尽な解像度(WUXGA)で舌が肥えてしまい、WXGAじゃ我慢ができない有様。就職してから暇を見つけては秋葉原・新宿あたり(通勤ルート上)で中古ノートPCを漁っていても食指の動くブツは見つからなかったのだが、ちょっと足を延ばした先でFullHDのお手頃価格なノートPCを見つけたので小躍りして買い込んだ。

……実は、一月くらい前まで第二世代Core i5を積んだHP ProbookのフルHDモデルのセコハンがざくざくあったのだが、そのころ俺は貧乏のどん底近くを這っていたから指をくわえて眺めているしかなかったのだ。そして給料が出たころには影も形もなくなっていた。なんとも間が悪い。もっとも、貧乏でなかったとしてもプリインストールのWindowsが32bit版だからあまり食指が動かなかったという点は否定しない。

さて、今回買ったブツはCore2Duoより1世代だけ新しい初代Core i5(560M)という、これまた古式ゆかしいプロセッサを搭載した機械だったのだが、これは許容範囲内というか割と望むところだったりする。というのも、昔「DDR3L/DDR3両対応」というCeleron J1900オンボードのマザーボードで使うためにDDR3のSO-DIMMを買って挿してみたら、呆れるくらい不安定で結局DDR3LのSO-DIMMを追加で買わざるを得なかった経験があり、DDR3 SO-DIMMの4GB×2枚セットが余っていたからだ。もちろんCPU統合GPUがへっぽこなのはちょっと痛いが、そこに目をつぶれば、OSはWindows 10 Home 64bitだしメモリ8GBでそこそこ使える代物に仕上がるぞ、しめしめ。

……という皮算用をして帰宅するなり魔改造に着手したのだが「ブートデバイス選択メニューはどうやって出すねん。いちいちBIOSセットアップで優先順位いじるとかあり得ん」などと悪態を吐きつつ裏ぶたを開けてメモリスロットにアクセスし、2GB×2を引っこ抜いて4GB×2に換装。さ~て、電源投入していっちょWindowsを起動……してる途中で画面が乱れてリセットがかかったorz。メモリモジュールを1枚ずつ挿してもダメ。挿すスロットを変えてもダメ。もちろん元の2GB×2に戻せば難なくWindowsが起動する。……この4GBのDIMM2枚、もともと腐ってたんじゃねぇか?ハズレを掴まされたかもと思うと怒り心頭だが、いかんせん購入してから死蔵したまま数年経ってしまっているので怒りのぶつけ所がない。ちくしょうめ。

当分の間は断腸の思いでメモリ4GB据え置きで我慢するとしても、このノートPCは各所が胡散臭いな。2.5インチSATA HDDが「HDD2」として認識されるのに「HDD1」は何も認識されないしどこにポートがあるのかわからない、とか。WiFi非搭載モデルなのでMiniPCIeが空いているのはわかるが、どうして2スロット?空いてるんだろうか(←mSATAという魔法の言葉で万事解決)。しかも拡張カードスロットがPCMCIA……じゃなくてCardbusときた。年式がもっと古いPrecision M6300でさえExpressCardなのにねぇ。もっとも、物持ちの良い俺はCardbusの無線LANアダプタはちゃんと持ってた(捨ててなかった、とも言う)ので、一応無線LANで使えることは使えるが……ダサい。

今後の目標:
・DDR3 SO-DIMMを買ってきて8GBに増設する
・SSHDに替える&mSATAになんか挿す
・PCMCIAじゃない無線LANに乗り換える。手段によっては電波法違反?

13275950 journal
日記

tuneoの日記: 写真は本文と無関係です

日記 by tuneo

「私 日本人でよかった」というポスターに登場する女性の画像の出所が中華人民共和国だったとかウケる。ちゃんと断り書きを入れなきゃダメじゃないか。

13270915 journal
日記

tuneoの日記: Visual Studio 2015 Communityってもうダウンロードできない?

日記 by tuneo

ちょっと前まで普通にダウンロードできたのだが、MicrosoftがVS2017 Communityに切り替えてしまったらしい。

13270505 journal
日記

tuneoの日記: ディープラーニング用Windows PCなんてこの世からなくなってしまうべきです(真剣 3

日記 by tuneo

ディープラーニング用フレームワークやらアプリケーションをWindowsで動かそうというお客さんのためにせっせとPCをセットアップしていたのだが……。DIGITSみたいなディープラーニングのWebアプリをLinuxとかUNIXで動かして、WindowsPCからはブラウザでポチポチやりゃあいいじゃねぇか!?最近はJupyter Notebookなんつーものもあるんだし、こんだけTCP/IPが行き渡ったご時世に1台で済ませたいとか馬鹿なの死ぬの?と思う次第。

しかも俺が一応はPythonの読み書きができるからPythonのフレームワークはまだ何とかなってるが、それ以外はそうじゃないからな。Torch(Lua)とかBIDMach(Scala)なんて、ディープラーニング以前に(←数学音痴なのでもちろんチンプンカンプンではあるのだが)言語が分からんもん。おまけにこいつらWindowsでのビルドにいろいろと支障がありまくるし。というわけで現時点での支障。見る人が見れば特定されてしまうが構うものか。

・BIDMach
JDKとApache Maven突っ込んでgithubでソース拾ってきてmvn installすると何やら色々コンパイルしているが、それで終わったと思うのは素人の浅はかさ。起動用のバッチファイルなど諸々が腐ってて動かず、まじめに動かそうと思ったらCygwinからシェルスクリプトで起動しないといけない。しかもその場合でも必要なモジュール(Java/Scalaだから正確には「パッケージ」か)がMavenでビルドされていないため文句を言われる。そいつらの実態はJavaのNativeメソッドなのだが、Cygwinの上でGNU makeを動かしMicrosoft Visual C++とIntel Parallel Studio(のコンパイラ)でコンパイルするという変態度の高い作業を要求されストレス急増。さらにVC++のリンカ(link.exe)がCygwinのcoreutilsのlinkとバッティングしてストレスMAXまで一瞬だったwww

個人で検証することもできなくはないが、Visual StudioはCommunityで何とかなったとしても、Intelコンパイラはお金払わないと1か月トライアルでしか使えないから検証以上のことはちょっと難しい。ひょっとしたらicl.exeをcl.exeに置き換えるだけでビルドは通るかもわからんが未検証。Intel Math Kernel Libraryも必要だけどどうなってるんだっけ、とか確認したりインストールすべき有象無象が多すぎて時間不足でギブアップ。

・Torch
LuaはWindowsで普通に動いているのでちょろいちょろい……わけがない(JavaだってScalaだってWindowsで動いてるけどBIDMachは上記の有様なわけでな?)。こちらも「Windowsならコレでビルドすりゃ動くぜ」的な一式がGithubに置いてあるのだが、ビルド用のバッチファイル動かしてみたら「行が長すぎます」エラーで終了。バッチファイルのデバッグとか悪夢なので時間不足でギブアップ。

インストーラが面倒を見てくれるって、夢なんですかねぇ……。

ともあれ、こんなん4月下旬から2週間でどうにかなる分量の作業じゃねぇ。しかも当初は3月納品のお約束だったらしい。どうしてこんなになるまで放っておいたんだ。

13258510 journal

tuneoの日記: NVIDIAのGPUなんて焦げてしまえばいいのだ! 3

日記 by tuneo

……実際にTeslaとか焦げたら一大事だけど、そんな呪いを吐きたくなった今日この頃(苦笑

事の起こりはDeepLearningなWindowsPCをセットアップするお仕事を仰せつかったことだったのだが、もうなんつーかイラッとすること尽くしで疲れた。現時点での作業の概要は以下の通り。

・GPUはNVIDIA
・ユーザが使うためにPython 2.7と3.6を入れるよ!
・Caffeも入れてPythonから使えるようにするよ!

まずNVIDIA CUDA Toolkitのインストールだが、これはつつがなく完了した。次にVisual Studio 2015 Proも入れていざ動作確認のためサンプルコードのn-bodyでも、と思ったのだが、コンパイルはつつがなく終わってもハードウェア構成の問題で正常に動かずに半日悩む。

つつがなく多体問題が動いて次はいよいよ深層学習だ、というわけでCuDNNのインストールを敢行。これはZIPの中身をCUDA Toolkitのフォルダに放り込むだけの簡単なお仕事なので特に問題なく完了。

で、Caffeのビルドに必要なあれやこれやをインストールして、とりあえずはPython2.7用にビルド、という運びになったのだが……コンパイルは一応終わるが怒涛のワーニングが発生。CUDA ToolkitのヘッダファイルにCP932以外のコードで表現された文字がある、とVisual C++コンパイラ様がお怒りなのだ。よくよく調べてみたらコメントにUTF-8でエンコードされた掛け算記号「×」が見つかった……コメントでワーニング出させるんじゃねぇよ!

仕方がないのでコンパイルオプションでソースファイルがUTF-8エンコーディングと指定してやることにした。環境変数CLに/utf-8オプションを指定すればいいのだが、これを指定すると……今度はCaffeのビルドにしくじる。泣く泣く環境変数CLから/utf-8オプションを削って再実行。やっぱりコンパイルできる。個人的にはワーニングを無視したり抑止するのは好かんのだが、背に腹は代えられない。あーストレスたまる。

さて、一通りコンパイルが済んだので次はテスト……って、これビルドスクリプト動かすたびに(WindowsでCaffeをビルドする場合はテストもビルドスクリプトで実施する)全ソース再コンパイルしてやせんか?しかもMicrosoftのnmakeってば今どき並列ビルド未対応とかありえなくない?せっかくのマルチコアCPUが宝の持ち腐れではないか。

さて、コンパイルとテストが終わるのを待っていたら失敗。どうやら、テストプログラムの実行時間を測って一定の条件を満たさなければエラー、というテストがうまくいってない模様である。ぐぐってみたら「テストケースの時間計測に問題があるので修正すれば通る」という情報を得て修正して再度ビルド……遅い。

問題のテストも通過していよいよ完走か?と思っていたらまたぞろテスト失敗。今度はPythonから拡張モジュールとしてインポートできません、と来た。Pythonの拡張モジュールのコンパイルって何か特別なお作法があったっけか?調べないと。

typodupeerror

身近な人の偉大さは半減する -- あるアレゲ人

読み込み中...