祭囃子は遠く、

祭囃子は遠く、

無職のハッピーエヴリディを書いていきます。

kaggleやろおぜ(環境構築編)

こんばんわ、周りのオタクたちがkaggleの機運を高めているので環境構築について色々調べていたら気になるものが

qiita.com

ば・・・爆速!?環境構築が一瞬で終わってしまう夢のような話があるのか。
読んでいくとDockerを使ってやっているらしい。

Dockerとは

f:id:ta_ichi:20190609000232p:plain
Docker(ドッカー[2])は、コンテナと呼ばれるOSレベルの仮想化(英語版)環境を提供するオープンソースソフトウェアである[3]。VMware製品などの完全仮想化を行うハイパーバイザ型製品と比べて、ディスク使用量は少なく、仮想環境 (インスタンス) 作成や起動は速く、性能劣化がほとんどないという利点を持つんですよね。

まぁ早い話が、アプリとかライブラリとかOSとかひとまとめにしたやつをガシャガシャ動かせるやつみたいなもんだと思ってます。
実際に触り始めて1日しかたってないんで間違ってたら許してね。

これを使えば機械学習とかに使うライブラリをひとまとめにしたやつがババンと作れるわけですからそりゃ早いよねって。

対象・前提

対象は僕のようなPC初心者の赤ちゃんから、この辺はよく知らない大人までです。
詳しいことは理解しなくてもnotebookを開けるように書いたつもりですが、細かいところで動作確認取ってないやつあるのでおかしかったら教えてください。

僕自身あまり詳しくないので、ふんわりとしかDockerの詳しい説明とかもろもろしません。
許してね。
上の記事とこれ読めば大体わかるから頑張りましょう。(ところどころコマンドミスってるけど)
qiita.com

導入方法

基本的には上の通りにやったら一瞬で終わります。
ただ、上のやつって自分の手元にあるPCにDocker Image(環境そのものが全部詰まってるやつ)を持ってくるわけなんで、めちゃくちゃ容量食うわけです。
kaggleの公式imageだと17Gbくらいかかります。

そこで、クラウドでやりましょう!という話になります。
今回おすすめするのはGCP(Google Cloud Platform)です。
console.cloud.google.com

AWSもよさそうですが、まじめに使ったことがないのでこちらで説明していきます。
GCPは初回特典として300ドル分のクーポンをくれるので結構アドです。

まずは左上あたりにあるところからプロジェクトを作りましょう(kaggle-ichimuraとなってるところ)
f:id:ta_ichi:20190609001310p:plain
これ初回ログインの画面ではないから、もしかしたら初ログインしたら手順通りにやっていくと勝手に作らされるかも。

そして「三」みたいなボタン押してVMインスタンスを作成します。
f:id:ta_ichi:20190609001557p:plain

その後作成を押すと実際にVMのスペックを設定するところが以下のように出てきます。

f:id:ta_ichi:20190609001823p:plain

名前は適当に決めます。リージョンとゾーンは、近いやつを適当に選びました。この画面の右側に1時間当たりいくらとか出てくるので、そこと相談しながら決めましょう。
CPUやストレージについてもお好みで設定してください。僕は画面の通りに設定しました。

大事なのが「VMインスタンスにコンテナイメージをデプロイする」ってところで、ここにチェックを入れて「kaggle/python」と打ちましょう。
そうすると勝手にkaggle公式のDocker ImageをVMに導入してくれます。
ただ、立ち上げ直後は各種DLで表示されません。しばらく待ってください(5敗)

その間に以下を導入しましょう。
cloud.google.com
GCPの操作が色々楽になります、例えばSSH認証とか通信とかもう全部勝手にやってくれます。

導入したら専用のshellができるので(windows)それで

gcloud compute ssh --zone {インスタンスのゾーン} "{インスタンス名}"

で通信ができるようになります。

入ったら、

docker images

で「kaggle/python」があるか確認してください。なかったらもう少し待つか、VMを作り直してみたりしましょう。
ここまで完了すればもう環境自体は目の前にあります。

確認出来たら

docker run  -p 8888:8888  -v $PWD:/home --name test -it kaggle/python bash

でコンテナ(VM上にできる実際の環境)を作成します。
docker runは、基本的に「docker run -it {image名} そいつにやらせたいこと」みたいな形をしています。
上のコマンドは
 -pでポートのなにがしか(このあたりわかんなすぎて辛い)
 -vでVM上のディレクトリをコンテナ内の:以下から参照できるようにする(コンテナの中にデータを蓄えることは基本しない)。$PWDVMのカレントディレクトリを勝手に代入してくれます。
 --nameでコンテナの名前
 -itで用いるimage
bashを実行しますとなります。

例えば

echo "print(\"Hello World\")" > test.py
docker run -v $PWD:/home -w /home --rm -it kaggle/python python test.py  

とやるとなるほどにゃんこになれると思います。

 --rm は実行ごとにコンテナを使い捨てるオプションで、-wはコンテナのカレントディレクトリになります。
 -vでコンテナのhomeディレクトリとVMのカレントディレクトリを引っ付けてるので、そのままtest.pyで実行できているわけです。

そんなこんなでコンテナの中に入れたら

jupyter notebook --ip=0.0.0.0 --allow-root

と打ちましょう。オプションはどんなipアドレスからの接続も受け付けますとかそんな意味だった気がします。

画面にjupyter notebookが起動され、tokenが表示されると思うのでこれをコピーしましょう。

ここでsdkのshellに戻って

gcloud compute ssh "インスタンス名" -- -N  -L 28888:localhost:8888

と打ち込みます。
その後ブラウザのURL打つことろに「localhost:28888」と打ってアクセスします。

f:id:ta_ichi:20190609004709p:plain

すると上みたいな画面になって、tokenを聞いてくるので上のやつを張り付けてゴールです。

入れたら色々importしてみて各種ライブラリが入っていることを確認してください。

終わりに

さっき成功して忘れないうちにかいてるので、もしかしたら上の通りにやってもだめかもしれません。
その時は教えてください。

あとkaggleにはkernelってやつがあって、notebook形式で人の成果を読むことができるすごいやつなんですが、なんと本当にnotebookのようにプログラムを実行できます。
参加しているコンペのページからNew kernelで作成すると訓練データなど一通り導入してある仮想環境が立ち上がります。
最初はここで遊ぶのが一番いいでしょう(無料だし、GPU使えるし)。ただ、外部からデータ持ってきたりとかその辺はいろいろできなかったりするので。
もっといい環境でやりたい場合に今回の方法がおすすめです。

公式imageはまだGPUをサポートしてないぽい?ですが、git読んでる感じそのうちリリースされそうなので待ちましょう。

ちなみに僕はこれに出ようかなぁと思ってます。なんか分子間のカップリングを予測するやつっぽいですね。
僕は物理科出身な上にこのあたりが割と近い専門なのですが、不勉強なので何のアドバンテージもありません。頑張ります。
www.kaggle.com
 

追記

kaggleを始めようぜって前提で記事書いたのに、データセット落とすとこ説明してませんでしたね。
kaggle APIを使いましょう、imageの中には導入されていなかったので以下に従って導入などを済ませてください。(僕はコンテナでやった)
qiita.com
基本この通りやればいいんですが、jsonファイルをアップするの面倒なんで~/.kaggleに入って、DLしたjsonの中身をコピペしましょう

echo "{\"username\":\"scibean\",\"key\":\"key\"}" > kaggle.json

echo以下は中身のコピペで、"をバクスラでエスケープするのを忘れないでください。その結果をkaggle.jsonに書き込んでいます。
この設定が終われば後は自由に使えます。

画像のようにコンペのページに行くとdataタブの右下にapiでデータ落とす際のコマンドがあるのでコピペしましょう
f:id:ta_ichi:20190609120208p:plain

この時

mkdir data
cd data

とやっておいてコピペしたコマンドに-wをつけるとカレントディレクトリにDLされます。
基本zipなのでunzipコマンドで解凍しましょう。
解凍先はなるべく指定した方がいいです。たまにファイル数がとんでもないやつがモリモリ出てきて大変なことになります(rm,mvコマンドにはファイル数に上限あるがので面倒なことになります)

では

VR、始めました。

最近VRを始めました。
VRreadyなPCを持っていたのでOculus RIFT Sを買ったんですがめちゃくちゃ満足してます。

身の回りにVRブームが来そうな機運を感じているので、今遊んでるソフトとかについて感想とか書いていきます。

VRchat

f:id:ta_ichi:20190604235949p:plain
これはVtuber好きなら聞いたことあると思いますが、VR空間でアバターになりきってみんなとお話しするというプラットフォームです。
ロビーみたいな適当に集まった人がいる空間から、プライベートな空間まで色々で、すごく未来感がありました。

まずは、ロビーっぽいところ(Hubと呼ばれるワールド)へ行って、VRの民とコミュニケーションを図ります。
f:id:ta_ichi:20190604235410j:plain
ロビーに先についていた友人(細身のロボット)ですが、いきなり外人に絡まれていました。

なんかでかいロボットのアバターに「zigzag zigzag oioioi」とひたすらに囁かれていたらしいです。
意味不明で恐怖していましたが、あとから調べると以下のような謎の動画が見つかったようです。
www.youtube.com

奥のかわいらしいアバターはスペイン人で、事あるごとに「North Korea is No1!!!!」と叫びまくる異常者でした。

友人も異常者なので事あるごとに鋭利な爪のアバターで目をつぶそうとしてきます。わかってても目がぞわぞわします。
f:id:ta_ichi:20190605000804j:plain

BeatSaber

f:id:ta_ichi:20190604235927p:plain
これも結構有名になってるんじゃないでしょうか。

音ゲーなんですが、曲に合わせて前からくる立方体を、手に持っている剣(モーションセンサ)で切るというやつです。
シンプルなんですが、VR感とうまくマッチしていて、良ゲーです。
多分今一番やってるのはこのゲームですね。曲と譜面を配布しているサイトもあるので最高です。

モーションセンサをブンブン振り回して、かがんだり移動したりする動作も要求されるので、思ったより運動になります。
プレイしていると汗だくになって、眼鏡がたまに曇るので、眼鏡ユーザーは対策した方がいいです。

DMMVRplayer、360度動画

言わずもがな、えちえちなやつです(360度動画は普通の動画がメイン)。非常に良いですね。
導入に手間取りましたが、大体提供元不明なアプリを許可でどうにかなるっぽいです。

これはDMMVRplayerでみたクマノミ天国
f:id:ta_ichi:20190605000328j:plain

狼と香辛料VR

原作もアニメも見てないんですが、めちゃくちゃ可愛い、萌え。


おわりに

紹介とかいってまだ全然遊べてないので、面白いの見つけ次第記事にしようかな。
今は勧められている東京クロノスが気になっています。

あとVRchatで使うためのアバターとHome空間を作成するために色々調べてます。
こちらもできたら記事にしたいね。

ウキウキ東京ライフ

今日から2週間弱ほど東京に滞在するのでウキウキで日記を書くことにしました。

日記

今日は一日暇だったので(と言うか最近は毎日暇)早めに東京に行くことにしました。
せっかちなのでいつも通路側の席取るんですが、なぜか窓際の席を予約していたのですでに着席していた真ん中の人に謝りつつ窓際へ。
いつも乗っていた大阪ー福岡間は、小さな飛行機が多くて揺れるし狭いしすぐ着くしであんまり面白くないんですけど、東京ー福岡ともなると1時間半ほどの旅で飛行機自体も結構大きいのでゆったり出来ますね。

あまりこの歳で飛行機からまじまじと景色を見るという行為をしないので折角だし見てみるか、とアマプラでローカルに落としておいたsuits
Amazon.co.jp: SUITS/スーツ シーズン1 (字幕版)を観る | Prime Videoを再生しつつボケーっと眺めてました。
特に何が良かったとか何かを感じたってわけじゃないですが、単純に地球広ってなりますよね。
あとこういう時って下に広がる雲に注目しがちですが、さらにその上を眺めると奥行きのある真っ暗な空間が存在していてなんともいえない感じになりますね。

東京では上野でぷよぷよ対戦会があるというので18時ごろから向かいました。


今回は友達のでるたくん主催で行われていて、ps4などのハードは参加者持ち込みという形の対戦会です。
最初は10人くらい来て多い〜〜〜と思ってたんですが、最終的には49人も来てたらしいです。すごいね
意外な人が訪問したりもしていて、色んな分野の人が混じったりするの面白いなぁと。この辺は人の多い東京だからこそなんでしょうか。

おわりに

10月から東京で働くんですが、その前にバイトしようということで来週から1週間だけフルタイム(多分)で働くんですよね。
普通に働きたくはないんですが、技術力も身に付けたいしお金も欲しいしで仕方ない・・・。
最近あんまりやる気が出ないんですが、さっさと技術を身に付けて色んな所に自由に行けるようになりたいものですね。
ちょっとツイッターにも書いたんですが、刹那的な盛り上がりのある所に飛び込んでいく、というのが今なんとなくやってみたいと思ってることです。
はやく頑張れる人間になりたい。

生活

日記

昨日からひょんなことで生活リズムが崩壊してしまったので、せめて沢山運動しようとおもって運動したら体調が悪くなりました。
明日は多分四足歩行でしょう。

おわりに

明日から徐々にキャプチャのプログラム書いていこうかな。openCVは物体認識で少し触ったんですが、そんなに自信ないですね・・・。
上手くいったら形にするところもやってみたい。

今日のおすすめ

kawaii future rockというジャンルらしいです。調べた感じ作曲者がデータサイエンス系の人・・・?
www.youtube.com

考えるって難しいね

雑記

考えるって何でしょう。何か創作しているのか創作の準備をしているのか、すごく抽象的なものに思えてきます。現在、今まであんまり触れなかったような問題を問いているんですが、思考時間が作業時間をはるかに上回っています。

ふと、今まで自分はどういうプロセスで”理解”してきたのだろうと考えました。小学校では九九を覚えるために、ひたすら暗唱をする時間があった気がします。
詳しくは記憶にありませんが、おそらくきっと9+9+…+9=81という演習問題をやってから「くくはちじゅういち」という答えを暗唱していたのだと思います。
答えを覚えるというのは、ある意味一番強力だと思っていて、それは思考なしに答えが出るようになるからです。
フルマラソンを走った後であろうと、40度の熱が出ていようと、たいていの人は9*9=81という答えを導き出すことができます。理由は先ほど述べた通り思考がいらないからです。

結局学習に何が大事なのかって色々あると思うんですが、本質的には”記憶”にあるような気がします。
じゃあ教科書一字一句全部覚えたやつが一番賢いのかというとそんなことはなくて、それは記憶の仕方が(おそらく)よくなさそうです。
メモリに例えると、教科書の記憶がメモリ空間上の適当(悪い意味)な場所にあって、アクセスにも時間かかるし、体系的に想起することもできないような状況になっていそうです。
体系的に学ぶということは、関連するものを隣接したアドレスに書き込んでいくようなイメージでしょうか。
おそらく脳みそはもっと高次元なつながり方をしているので、そんな単純にマップできるかわからないですし、ちゃんと調べていってるわけではないですが大きく外れてるという気もしません。
”理解している”と”知っている”の違いはこの辺にあるのかなぁと思っています。結局考えている状況は関連していそうな記憶を”思い出して”いる状況なのかもしれません。それが遠いのか近いのかはその人次第です。

話がそれましたが、いま僕はおそらく九九に立ち向かっている状況です。確かめれば本当にそうなっていそうなのはわかるけど、答えを覚えることも大事な時期、ということです。
まだいろんな知識がぷかぷかと浮いているような感覚で、それらを繋げてくれるような背景も僕にはありません。今までさほど頑張らなかったので。
でも、今はとにかく考えて何か使える知識はないかと思い出したり、昨日やったことを結び付けて覚えていく作業をしたりしています。
思い出す作業はもちろん具体的なモノが仕上がっていく過程ではないので、すごく焦ります。しかも、この作業は自分が今までさぼったツケを払った後にやっと本質的な難しさに触れることができるので、余計につらいです。
しかし、学習は最初のつらい期間を抜ければ一気に世界が広がっていく感覚を得られる、ということもまた理解しているので今はとにかくやるしかないのです。

三日坊主

あぶねえ・・・三日坊主になるところだった・・・。

日記

今日はジムに行ってきました。母親がジムジムうるさいので一緒に入会しました。
でもちょうど体力はつけたかったので、最高のタイミングです。

去年度は体力がなさ過ぎておぼれかけて死にそうになったり、帰りのバスに遅れかけて雪山に置き去りにされかけたりしました。
しかし、ジムに通うことで無限に泳げるようになり、スノーボードも上手になるでしょう。

おわりに

今週は珍しくほとんど予定が無い週で、早くもニートとしての素質が試されています。
今週は主にアルゴリズム体操してるんですが、統計の勉強もちょくちょく進めてます。
11月にある統計検定1級合格を目指してるんですが、どうなることやら。

今日のおすすめアーカイブ「アイドル部学力テスト」

これは・・・”番組”だ

www.youtube.com

日記

今日は宮崎えびの市のぷよ大会にいってました。福岡から宮崎までブゥーーーーンしたんですが割と遠い。
田舎は交通費がめちゃかかるから結構金かかるんですよね。

大会自体は今回も楽しかったんですが、失得点差で敗退したので結構悔しかった・・・。
でも九州の大会はそこそこ勝てるから好きです。(関西では大体1回戦で負けるので)
あっ!レートでよく当たる人だ!みたいな人にも実際会えてわりと感動しました。

f:id:ta_ichi:20190406230336j:plain
中華料理”チャイナ”

おわりに

本日初顔出しぷよ実況をやらせてもらったんですが、難しいですね。
ぷよぷよが下手なのでよくわからないですし。

明日もウンカツ!(運転手活動)