PT 日記 (1)

PyTorch 入門日記。

ぐだぐだしてても始まらないので何も考えず入門チュートリアルをこなすものなり。とりあえず最初のやつだけやった。一週間で進捗がこれだけとは捗らなすぎ。来週からはもうちょっと時間を割けるといいのだが。

手元に環境を作ろうかと思ったものの、環境セットアップで時間を溶かしがちな過去を踏まえまずは Colab で。というか実は Conda を入れて Jupyter を起動したのだけれどキーバインドが思い出せず Colab に撤退した。そのうち Conda に戻るかもしれないが、とにかく「正しい環境」を作るのは意識的にさぼり、行けるところまでは素人ぽく進めるのが今回の目標。すなわちなるべく pyenv とかそっち方面は避けたい所存。Colab, リリースされたばかりの PyTorch 1.3 がさっそくインストールされており感心。

さわった感想:

  • ほんとに numpy ぽくつかえるのに感心。
  • backward() したあと buffer が開放されるタイミングがよくわからない。が、保留。
  • nn.Module と nn.functional の住み分けがいまいちわからない. Trainable parameters がある場合は nn.Module にするかんじなのだろうか。まあ実用上はふんいきで使えば良さそう。そして nn.Module の定義をみていると Python にも pipeline operator あればよかったのになと思う。
  • DataSet や DataLoader はしょぼいが、こんなもんでいいのかもしれない。
  • データの中身を覗くところに強い苦手意識を感じる。いわゆる EDA というやつ。ML 以前に data exploration の練習が必要(だが今はその事実を無視してチュートリアルを進めてまいります。)これとかこれみたいな本があるあたりに R の歴史的強さを感じる。そのうち The Pandas Book (2ed) でも読むことにしましょう。
  • TorchScript がモデルフォーマットの標準になると思い込んでいたがまったく間違いで、実際は Python code + weight の dump を使うものらしい。たしかにその方が pretrained モデルが Python オブジェクトとしてさわれるから再利用は圧倒的にやりやすい。TorchScript はあくまでコンパイルされた実行環境向け表現なのだね。


本当はなんらかの ML プロジェクトをやるなり Kaggle に参加するなりオープンソースに PR するなりデータ職を得るなりのゴールをもって進めた方がいいのだろうけれど、決めることができなかった。興味のもてる ML プロジェクトはないし、競技にもやる気を起こせないし、オープンソースをするならコードなりバグなりを読んだほうが早いけど自分がやりたいのは ML だし、職の点では TF をやった方が良いし。

意味のある目標を持つ意義は理解しているが、自分は目標について考えるほど自分と ML の間にある距離の現実を突きつけられ憂鬱になるばかりだった。何か意味のある(キャリアに影響のある)形で ML に関わることが自分にできるとは思えない。

ただその現実に discourage されて何もできずにいるのは癪なので、深いことは何も考えずチュートリアルで手を動かすことにした。これは Hello Work と同じ精神。多くを期待せずただなんとなくさわってみる。なにかおもしろいことがみつからないかなと淡い期待を抱きながら。

やってみてわかった(というか、思い出した)のは自分はとにかくデータを触るのが苦手で、こんな簡単なチュートリアルですら結構 uncomfortable だいうこと。そしてこの uncomfortable な感じは仕事だとなかなか得られない。

実害の無い形で苦手なものを触り「苦手さ」を和らげていく体験として PyTorch をやるのはアリだと思うに至った。目標がなくても手を動かすのは、何もしないよりはマシ。手を動かさずにいると忘れがち。