2022年3月30日水曜日

Google Colab ってパッケージ開発者にとっていい環境かもしれない

Python プログラムの勉強をするときに Google Colab って便利だなぁ、と思ったりしている。

いろんなパッケージなどが入っていることもそうだけど、やはり一番の理由は「環境構築が必要ない」というところ。pipenv や venv あるいは conda と pip などの「複数ある手法のうちのどれを使えばいいの?」ということがないのが、かなり良いのではないかと思う。

特にパッケージ開発者の場合は「Google Colab でテストして問題ありませんでした」だけにできれば、pipenv, venv, conda などの複数の環境でテストする必要もなくて、効率的にはなりそう。

ちなみに、Julia の場合は Google Colab を使ってもいいけど、Julia の環境構築は簡単なのでローカルにインストールするのも大変ではないかな、と思う。

2022年2月18日金曜日

Julia のベクトル計算高速化

 Julia についての本ということで「1から始める Julia プログラミング」を読んでみた。タイトルから見ると初心者向けのようにも見えるけど、Julia で基本的なプログラミングができる段階から読んでみると多くの勉強になるかと思う。

 例えば、ベクトル x = [5; 3] に対して, a = 7, b = 4 のスカラーのときに
a*x .+ b
とすれば、数式で言うa*x+b*[1; 1] が計算できるわけだけど、これは
a.*x .+b あるいは @.(a*x+b)
の方が良い。

これがなぜ良いのか、という理由が分かりやすく書いてある。上の例だと小規模なのであまり影響が出ないが、最急降下法などで反復回数が増えるとパフォーマンスに違いが出そうにも思う。(この違いをコンパイラが最適化で吸収すると、パフォーマンスの違いはなくなるかもしれないけど。)

他にも、コードを関数の中に入れるだけで Julia は高速化されやすくなるのか、など、高速化の理由が書いてあり勉強になる。

あと、パッケージ管理や仮想環境などについても触れていたりなどなど、勉強になる点が多い。