DEVGRU

プログラミングとbitcoinのシステムトレードについて書きます

Anacondaの利用は是か非か?(またはそれでも私がAnacondaを“今“使う理由)

先日の投稿で、少しフィードバックをいただけた(ありがとうございます!)ので、それに対する反応です。

team-6.hatenablog.jp

フィードバックその1

コメント欄より。

引用されていたので反応しておきますと、こういう理由からAnacondaもいまは問題があると思っています。 http://ymotongpoo.hatenablog.com/entry/2017/02/02/182647

一次情報含め非常に詳しく書かれていますが、 要約すると、パッケージングにデフォルトのwheelではなく、独自のcondaを用いているAnacondaはデフォルトに歩み寄って欲しい、というお話です。

これについてはおっしゃるとおりで、wheelでできることをわざわざ別のパッケージシステムを構築してしまっているのはエネルギーの無駄ですね。 wheel一本になれば嬉しい人は多いはず。

フィードバックその2

今Pythonで機械学習・ディープラーニングする環境を作るならpyenv系一択だよね(※個人の感想です) - DEVGRU

Pythonで機械学習っぽいことやってるけどvenvとpipで必要なもの全部動いてるし環境のメンテに手間もかかってない。MacとLinuxで同じようにできてる。Anacondaが必須という前提に同意できないのでそもそも本題に入れない…

2017/08/23 23:08
b.hatena.ne.jp

Anaconda が機械学習に必須、という前提に少し乱暴なものがあるのは事実です。そのあたりはあの記事は雑でしたね。 確かに、numpyやscikit-learn, TensorFlow、Keras、matploblib、Jupyter Notebook があれば機械学習やディープラーニングについて大抵のことはできます。

それでも“私”が“今”Anacondaを使う理由

何も考えずとも必要なものの多くがすぐに使える状態で入ってきてくれるから、でしょうか。怠惰ですね。

パッケージシステムに問題がありますが、でも直近は困りません。

Anacondaじゃなくても機械学習やディープラーニングはできます、でもAnacondaのほうが何もせずともいろいろ入ってくるのでお得です。

特筆するべきはNumba とmatplotlibです。Numbaは@jitつけた関数を高速に実行してくれます。

github.com

依存ライブラリがあるためか、

The easiest way to install numba and get updates is by using the Anaconda Distribution: https://www.continuum.io/downloads

と、公式がAnaconda使うと楽だよ、と言ってしまっており、実際その下を見ると少々面倒なインストール手順となっています。

パフォーマンスが必要な場面でスッと@jitが使えるのは嬉しいです。

また、matplotlibも事情は同じのようです。

Installing — Matplotlib 2.0.2 documentation

こちらはOSのパッケージツールでもインストールはできますが、Anacondaはそれすら不要です。

いちいちインストールしなくてもいいなら、その浮いた手間で、本当にやりたいことに時間を割くことができます。

本当にみんながほしいもの

みんなが本当に欲しいものは、実行すれば必要なものが全部入るrequirements.txtや、またはwheelベースでコミコミのPythonディストリビューション、 もしくは私が想像できていないソリューションがあるかもしれません。

ただ、それらは現状は見当たらず(あったら教えて!)、結局、多少の問題を認めつつも“今”はAnaconda(とpyenv)を使ったり勧めたりするわけです。

あと1年もすればAnacondaよりもっと問題の少ないソリューションが出てくると思います。出てくるといいな。

蛇足

以下の本もPythonのインストールはAnaconda+pyenvになってました。

詳解 ディープラーニング ~TensorFlow・Kerasによる時系列データ処理~

詳解 ディープラーニング ~TensorFlow・Kerasによる時系列データ処理~

やはり、説明・手順が簡単なことは価値なんだと思います。

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

入門 Python 3

入門 Python 3

詳細!Python 3 入門ノート

詳細!Python 3 入門ノート

実践 Python 3

実践 Python 3