nikkie-ftnextの日記

イベントレポートや読書メモを発信

イベントレポート | #SciPyJapan 1日目、科学計算まわりのPythonのトークを十分に浴びてきました

はじめに

いつも心は虹色に! nikkieです。
皆さん、SciPy Japanはご存知でしょうか?
機会をいただいたので、当日ボランティアとして参加してきました。

イベントの概要

Scipy Japan Conference 2019

SciPy Japan Conferenceは、日本で成長しているScientific Pythonコミュニティを結集させ、最新のプロジェクトを紹介し、参加者が熟練したユーザーや開発者から学ぶことを目的としています。

学問、企業、Pythonコミュニティからの参加者が一堂に会しました。
内訳は、5カ国から90名だそうです。
会場は「マンダリンオリエンタル東京」(超高級ホテル!)です。

Tutorial(Beginner): TensorFlow 2.0 Tutorial

https://storage.googleapis.com/applied-dl/SciPy_Tokyo.pdf

ディープラーニングは画像や長大なテンソルを入力にするという印象を抱いていたのですが、

  • 線形回帰も扱える
  • 構造化データ(CSVで扱われるような表形式のデータ)も扱える

ことがわかりました。
入門の例だけではなく、

  • DCGAN
  • seq2seq

といった応用例も取り上げていただき、TensorFlow2.0のクイックツアーに参加した感触です。

TensorFlowのインターフェース

tensorflow.keras前提です。

  1. 層(Layer)を並べてモデルを定義
  2. モデルをインスタンス
  3. compile
  4. fit
  5. predict

機械学習のポイント:カジノの例

レーニングデータセットとテストデータセットの違い

  • レーニングデータセットはモデルを作成する上で自由に使えるデータ
  • テストデータセットはカジノにある(モデル作成時に自由に使えず、自信のあるモデルをカジノに持って行ってテストデータセットへの性能を試す)

興味深かったのは、TensorFlow.js!
機械学習アプリケーションのデプロイに関心があるのですが、「JSで作ってしまうのはありだな」と思いました。
今度手を動かしてみます。

Advanced TutorialのAdvanced NumPyは公開されるビデオに期待しています。

Keynote: f(x) = a + bi

  • f: future
  • a: Atom
  • bi: Bit
  • →リアルとビットが未来を決める(世の中もエンジニアのキャリアも)

Bit

現在のAIの懸念点(AlphaGoを想定)

  • AIは高価
  • 電力コストを食い過ぎる

→解決策がCognitive Computing

Atom

リアルな世界の技術が必要

成功例:Carbon社
3Dプリンティングの問題をAtomとBitを組合せて解決

高い視座での話を久しぶりに聞いたので、ワクワクしました。
個人的には、これから来るだろう分野で素振りしておいて、チャンスに備えたいですね。

Apache Arrow

Pythonistaへのメリット

  • pickleの代替として使える(PySpark)
  • pandasとVaes(データフレームのライブラリ)は少しArrowを使っている

メモ:pickleはPythonのオブジェクトをバイトに変換したもの1

cross-languageがArrowの魅力とのことです。
多様な言語で使えるようにC++ベースで実装しようという考えが開発者間で共有されているのが、開発に参加したきっかけとおっしゃっていました。

Chainer: A Deep Learning Framework for Fast Research and Applications

  • ChainerはDefine-By-Runのパイオニア
  • ChanierXによるSpeed, Quick deployment
  • Domain Specific add-on packages

GoogleがTensorFlowでいろいろなプロジェクトを進めているのと同様に、PFNはChainerでいろいろなプロジェクトを進めている印象です。
直近では充実のチュートリアルが公開されています。

Scaling Your Python Interactive Applications with Jupyter

Jupyterでの懸念点を解決したそうです。

  • Optimized resource allocation
  • Security(HTTPS、multiuser)

クラウドのリソースを使いやすくする仕組みで、複数人で使わなくてもメリットはあるとのことです。

ドキュメントにチュートリアルがありました:

CuPy: A NumPy-Compatible Library for High Performance Computing with GPU

「ColabもしくはNVIDIA GPU環境で試してみて」:pip install cupy-cuda-101
(ColabではGPUを有効にする必要あり(Select runtime))

  • CuPyはNumPy, SciPy互換
    • コード中のnpをcpに置き換える(import cupy as cpしている前提)
  • NLPで聞いたことのあったspaCyもcupyを使っていた

GitHubにはexamplesも充実しているそうです:
cupy/examples at master · cupy/cupy · GitHub

RAPIDS: GPU Accelerated Data Science

2018年10月のPyDataでも取り上げられたPAPIDS

  • GPUはCPUがないと動かない(CPUからGPUに指示している)
  • CPU-GPU間でデータを送る部分のオーバーヘッドがある
  • 機械学習のはじめから終わりまでGPUで行う(=RAPIDSの世界観)

RAPIDSの世界観ではfail fastで進められるのがいいですね。

構成要素

太字のものをデモ込みで紹介していただきました。

  • GPU上にArrow互換な形式でデータを持つ
  • pandasライクなデータフレームのライブラリcuDF
  • scikit-learnライクな機械学習API cuML
  • グラフ解析→cuGraph
  • ディープラーニングはこれまで通り
  • 可視化→cuXFilter

cuDF, cuMLともに本体をC++実装して性能を確保し、インターフェースをPython実装して、既存パッケージライクなAPIを実現しているそうです。
pip, conda対応しているので、すぐに使えるのもいいですね。

感想

会場の高級感に終始圧倒されていました。
食事も豪華でおいしく、なんとミシュランに載るほどだそうです。

Wi-Fi接続などはホテルのスタッフさんがサーブの中で対応され、実はボランティアの出る幕はあまりありませんでした(十分にトークを聞くことができました)。
あまりに多くをいただきすぎていると感じているので、このレポートブログや、ツイートで盛り上げに貢献できればと思います。
2日目も(途中までですが)よろしくお願いします。