Slide 1

Slide 1 text

Nx、Axonを 楽しむための前説 nako@9時間睡眠 2022/11/21 協力:piacere_ex

Slide 2

Slide 2 text

自己紹介 ● nako@9時間睡眠 ● 会社員。Webサービスのサーバサイ ドエンジニア ● Elixir/Phoenix初心者コミュニティ 『piyopiyo.ex』オーガナイザー

Slide 3

Slide 3 text

Elixirの機械学習に 必要なライブラリ

Slide 4

Slide 4 text

Elixirの機械学習に必要なライブラリ(一部) ● Nx ○ Elixirで実装された行列ライブラリ ○ 機械学習、画像処理の基盤ライブラリとして用いられる ● EXLA、TorchX ○ GPU駆動のバックエンド ○ これらを通じて、ElixirはGPUを利用可能となります(CPU駆動も可能) ● Axon ○ Nxによるニューラルネットワーク/ディープラーニングのためのライブラリ ● AxonOnnx ○ Onnxモデル(推論で広く使用されている機械学習モデルのフォーマット)をロードし、利用 することができる 他にもたくさん あります!

Slide 5

Slide 5 text

AI?機械学習?

Slide 6

Slide 6 text

AI?機械学習?…それぞれの位置付け 人工知能(AI) 機械学習(ML) ニューラルネット ワーク 深層学習(DL) データから機械自身に、その振る舞いを学習させるための技術・研 究領域を指す。 人間の脳内にある神経細胞(ニューロン)とそのつながり(神経回 路網)を人工ニューロンという数式的なモデルで表現したもの。 ニューラルネットワークを応用させたものがディープラーニング、 または深層学習と呼ばれている。

Slide 7

Slide 7 text

機械学習が使われる場面 ● 自動運転 ● 文字識別 ● 顔認識検知 ● レコメンドシステム ● フィルタリング など

Slide 8

Slide 8 text

Nx…の前に、 行列はなぜ必要?

Slide 9

Slide 9 text

ざっくり行列 ● 数、文字、式等を、列と行に沿って配置し括弧でくくっったもの 1 2 3 4 5 6 7 8 9 ( ) 行 列

Slide 10

Slide 10 text

なぜ行列が必要? ● 機械学習では、文字通り機械に処理させる必要がある ● そのため、人間だと視覚や音として認識するデータも数字で表す必要がある ● つまり、画像や文字列などの数字で無いデータも数値化する必要がある ● そうした複雑なデータを数値化するには「行列」が便利

Slide 11

Slide 11 text

Nx、Axonとは

Slide 12

Slide 12 text

Nxとは ● Elixirの行列操作ライブラリ ○ 内部的には、Elixirを動かすVMであるErlangVMで動いておらず、ネイティブコードで実行 されていて、処理がとても高速 ○ Pythonをご存知であれば、NumPyに相当 ● 機械学習や画像処理の基盤ライブラリとして用いることができる ● CPU/GPU/TPUといった、様々な演算装置で利用可能 ○ 特に、GPU/TPUで行列処理を行うと、超高速で高度な処理ができる ● ちなみにNxは「Numerical Elixir(数値的なElixir)」の略

Slide 13

Slide 13 text

Axonとは ● Nxによるニューラルネットワーク/ディープラーニングのためのライブラリ ○ Pythonをご存知であれば、TensorFlow/Keras/PyTorchに相当 ● 何十層、何百層もあるニューラルネットワークをいとも簡単に構築できる ● ディープラーニングの学習/予測の基本的な関数は一通り備えており、評価関数 や最適化関数なども完備している ● ちなみにAxonは「軸索」という意味 ○ 人の脳神経の中で大事な部分

Slide 14

Slide 14 text

ご清聴ありがとう ございました!