Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Enum.mapから始めるElixirデータサイエンス
Search
piacerex
June 01, 2019
Technology
3.3k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Enum.mapから始めるElixirデータサイエンス
piacerex
June 01, 2019
More Decks by piacerex
See All by piacerex
実践生成AIレクチャー会(基本編)※高度編イントロ無版
piacerex
1
540
「エッジ×分散生成AI」の技術と変わる産業、そしてITの未来
piacerex
0
950
今のコンピュータ、AI にも Web にも 向いていないので 作り直そう!!
piacerex
1
2.2k
ノーコードと生成AI、IoTが繋がると何が出来るか?
piacerex
0
120
ElixirがHW化され、最新CPU/GPU/NWを過去のものとする数万倍、高速+超省電力化されたWeb/動画配信/AIが動く日
piacerex
0
630
fukuoka.ex/kokura.exとElixirって何ソレ美味しいの?つまみ食い
piacerex
0
170
PMMとは? … モダンなSaaSプロダクトに必須な役割(「プロマネチョットデキル#5」より)
piacerex
0
330
とうとう実践配備された ElixirDesktopにようこそ!!
piacerex
0
1.8k
7年間アドカレ続け、トップランカー入りしたElixirにようこそ!!
piacerex
0
410
Other Decks in Technology
See All in Technology
ScotSecure West 2026 - Glasgow
raybugg
0
160
おい、エージェントを使って終わらせろ
nwiizo
3
910
AIに任せた品質は、誰が見立てるのか - AI時代のテストマネジメント
nakanao
3
3k
GitHub Agentic Workflows を触ってみる
htkym
1
140
Antigravity SDK for the Java Developer
glaforge
0
200
絵ではじめるKubernetesセキュリティ
aoi1
5
710
バイブコーディング時代のWebアプリ開発入門~Cloud Runで学ぶセキュアなビルドとデプロイ
waiwai2111
1
150
AIに賢く動いてもらうためのコンテキスト〜Snowflake女子会 vol.8
snowwmn0824
0
170
手を動かして実感する、Kiro が変える開発体験
inariku
0
260
Making AI Agents Safe and Fast- Jev, Obsidian, and the Meta-Harness
x5gtrn
PRO
0
140
What the customer really needed
kawaguti
PRO
3
220
事業課題から技術的負債に向き合う
sansantech
PRO
2
2.3k
Featured
See All Featured
A Soul's Torment
seathinner
8
3.6k
So, you think you're a good person
axbom
PRO
2
2.2k
Testing 201, or: Great Expectations
jmmastey
46
8.3k
30 Presentation Tips
portentint
PRO
1
410
RailsConf 2023
tenderlove
30
1.6k
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
310
How GitHub (no longer) Works
holman
316
150k
The Limits of Empathy - UXLibs8
cassininazir
1
690
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
260
エンジニアに許された特別な時間の終わり
watany
109
250k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
770
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
490
Transcript
Erlang & Elixir Fest 2019 LT Enum.mapから始める Elixir データサイエンス 2019/05/30
ver 0. 5作成 2019/05/31 ver 0. 9作成 2019/06/01 ver 1. 0作成
いきなりですが Elixirと言えば…
そう、「Enum」 ですよね?w (や、パターンマッチやパイプ等、当然、愛してますよ) Elixir創始者José Valim (とfukuoka.exの面々) José のサイン
3 Enum.map/reduceが、かなりイイ具合 大抵のデータ処理は、この2つと、filter/sortをパイプで繋げば、 ほぼ完結と、シンプルで強力過ぎるのが、Elixir最大の魅力です defmodule DataCleansing do def run( filename
) do filename |> File.stream! # データクレンジング |> Flow.map( & String.replace( &1, ",", "¥t" ) ) # ①CSV→TSV |> Flow.map( & String.replace( &1, "¥r¥n", "¥n" ) ) # ②CRLF→LF |> Flow.map( & String.replace( &1, "¥"", "" ) ) # ③ダブルクォート外し # 集計 |> Enum.map( & &1 |> String.split( "¥t" ) ) # ④タブで分割 |> Enum.map( fn [ _head | tail ] -> tail |> List.first end ) # ⑤2番目の項目を抽出 |> Enum.reduce( %{}, fn name, acc -> # ⑥同値の出現数を集計 Map.update( acc, name, 1, &( &1 + 1 ) ) end ) |> Enum.sort( & elem( &1, 1 ) > elem( &2, 1 ) ) # ⑦多い順でソート end end
4 他Enumも便利だし、StreamもHaskell風でイイ もしくはTensorFlow風 zip/unzipやslice、take系がステキ
5 そして、「Flow」の衝撃 ~マルチコアの雷に打たれた~ 1年半前、BtoB向けマーケティングプロダクト開発にて、2時間も かかっていたデータ処理バッチ (Javaで誰か作った) をどうにか する際、Enumの並列実装「Flow」で同等処理を実装したら、 ナント、6分半で処理できてしまった (しかも1時間で実装完了)
このFlowとの衝撃的な出会いから、私はデータ処理領域での Elixirプロダクション適用に本腰を入れ、fukuoka.exのミッション にも、「Elixirによるデータサイエンス実現」が加わりました ▪Flow ▪Enum
6 実はマルチコアとのお付き合いは2011年以来 2003年以降、CPUクロック数が上昇しなくなり、コア数を増やす 方向にCPUメーカーが舵を切って以来、15年近く経ちますが、 マルチコア/マルチスレッドプログラミングは、未だ頭痛の種でしょう 従来/モダンの言語は結構多く使ってきました (実はRustやGo、 C++をけっこう書きますw) が、マルチコアプログラミングの文脈で、 実用性高く、人類が制御できるであろうものに出会ったのは、
Elixir+Flowの組み合わせが初めてです (GHCは好きです)
7 参考:最近、出た「Broadway」は「Flow」の後継 今年3月にオースティンで開催された「Lonestar ElixirConf」で、 Elixir創始者 José Valim が披露した「Broadway」は、この 「Flow」の後継ライブラリであり、Flow (GenStage)
で未達成 だった「データ消失回避用ダウン」「障害時イベント消失軽減」 と それらを叶える「スーパーバイザツリー構成」を実現します https://www.youtube.com/watch?v=a3FtBNMzMxM
しかし、Enum系は 知るほど難点が見え…
9 細かい操作を始めるとSQL/pandasと比べてしまう… たとえば、下記のようなところで、Enumの舌足らずを感じます ➢ 「Enum.sort」がイケてない SQLのORDER BYのように第2優先以降が指定できない ➢ LEFT/RIGHT JOIN的な、片方がnilのデータが未対応
➢ 複数項目指定のdropができない (drop以外にも結構ある) ➢ Enum.reduceで似たような処理を頻繁に書く機会多かった ➢ CSV変換が無い … あと、こんなデメリットもあります ➢ with_indexやatなど、添字アクセス風関数は、オブジェクト 指向屋さんの好物で、Elixirっぽく無いコードを書かせてしまう ➢ 行列やテンソルのようなデータ操作が、カオスになっていく…
10 そこでpandasライクなElixirライブラリを作った sort第2以降優先、LEFT/RIGHT JOIN、dropなどの複数 項目指定、Enum.reduce頻出データ処理、CSV変換など、 pandasで良く使うものは、大体揃え、scikit-learnやNumPy の一部実装もクローンしています
でも、pandasレベルすら 書きたくなくなったので… (実はPythonでも書きたく無いんですよね…)
12 プログラミングレスな、Elixirコード生成処理系を作った Web上でUI操作するだけで、データ変換/集約/クレンジング を行える データサイエンスプラットフォーム「Esuna」 は、UIで 設定したデータ処理をElixirコード生成します (単独実行も可) α版は3日で作り、力武先生にもゲスト出演いただいた昨年6月 「fukuoka.ex#11:データサイエンスにコネクトするElixir」披露
Vue.js+Elixir の組み合わせ以外 では、たぶん3日で 仕上がらないかな
13 データ加工だけで無く、ディープラーニングモデルも生成 その後、「ErlangPort」によるElixir-Python連携でKerasの DLモデルを呼べるようにし、Kerasのコードも自動生成可に Kaggleのタイタニック問題を解くコラムで実演しています 第1回:https://qiita.com/piacere_ex/items/ab0b32c521293d4ab38e 第2回:https://qiita.com/piacere_ex/items/771389e1fe66dcf795c5
14 データサイエンス以外の分野でも使われ始めています 「Esuna」は、データサイエンス文脈に限らず、データ処理全般を カンタンに取り扱えるため、AI・ML案件だけで無く、以下のような データ処理においても利用しています ① 事業向けデータ整形/集計の「BI」 ※Business Intelligence ②
既存システムのリプレースに伴う「データ移行」 「ETLツール」のカバー範囲を、マルチコアのパワーとErlangVMの 安定性で、高速かつ安全にこなすことが可能です それと、データ操作をElixirコード生成するので、こんな使い方も ③ インプットデータからデータ加工を行うようなWeb/API開発 (データ読込/加工部分がプログラミングレスで生成できる)
15 次期Esunaは、データ加工Webアプリ/APIも出力 現在、データ処理部分のみのElixirコード生成ですが、もう一歩 推し進めて、UI上で設定したデータの加工を行い、その加工後 データでCRUDするWebアプリ/API毎、生成する予定です (golangのHugoにデータ加工エンジンを突っ込んだような?) これにより、CRUDする程度のWebアプリ開発している方の仕事 はreduceしてしまおう…とまでは言いませんが、よりクリエイティブ な仕事にパラメータ振りできるようになるでしょう 村山さんのネタと
ちょっとかぶったw
16 訓練画像の加工/管理もEsunaに搭載予定 現在は、テキスト/数値主体のデータ処理のみの対応ですが、 画像系Deep Learningの退屈で頻出する前処理…たとえば、 ➢ OpenCVでやるような加工 (回転/拡大・縮小/色変更) ➢ オーバーサンプリリングやアンダーサンプリング
などの操作と、それら画像の管理もEsunaで簡素化したいです これで、訓練画像の加工/管理の手間が減り、 モデル開発やSIにより集中しやすくなります 「退屈なことはPythonにやらせよう」では無く、 退屈なことは、そもそもやらないようにするために、 ツールに落とし込もう…ということですね (≒自らの生産性を上げるための生産こそ本懐)
17 リアルタイムフロント技術「LiveView」でリビルド中 現行バージョンは、Vue.jsでフロントUIを実装していますが、 「Phoenix LiveView」での再実装を始めています Phoenix コミッター、Chris McCordにVue.js版Esunaを見せ、 LiveViewでリビルドする話をしたら、「Github教えて」「グラフは 何のJS?」とか聞かれました
(José もメッチャ画面触ってた) とてもフレンドリー
18 elixirforumでもEsunaについて聞かれました pandasが好きな方のようだったので、pandas的なデータ操作 ライブラリは、Esuna UIと別々に使えることをお知らせしました (でも、コード生成できるから使ってラクした方がいいよ、ともw)
「Esuna」のデモや 突っ込んだ話は…
tokyo.ex#11 + fukuoka.ex#24 + Shinjuku.ex#13 akiba.ex + kochi.ex + KYOTOEX
+ hibikino.ex + α … . 国内の各地域Elixirコミュニティ集合 !!
明日のjapan.ex でお話します 機械学習側に BigQuery ML との連携とかも 話せたらいいな
22 fukuoka.exが手掛けるデータサイエンスプロダクト ➢ 「Hastega」 … GPU & マルチコアドライバ ➢ 「Cockatrise」
… FPGAドライバ ※予測性能はGPU以上 ➢ 「DeepPipe」 … ディープラーニングコア (MNIST90%超) これらはEsunaと結合し、Pythonツールチェーンと勝負できる、 爆速のデータサイエンスプラットフォームを提供します (TensorFlowやscikit-learnといったMachine Learning/ Deep Learningの牙城を崩しに行く?…かも知れない) 「ツールチェーン」の充実に加え、今月から新たに開始するコラム、 「Esunaで始めるデータサイエンス入門」で、fukuoka.exは、 「Elixirによるデータサイエンス実現」 を福岡だけに限らず、全国/全世界に配信していこうと思います
23 最後に: Elixirの「潮目」は今後かなり変わっていく Lonestar ElixirConf 2019の、Bruce Tateのキーノートでは、 José と Plataformatec
から始まった初期のElixirの流れが、 José自身の「Elixir Is Done」という、ある種の完了宣言にて、 コミュニティや各アルケミストに開放されていく趣旨の発表でした 今後のElixirおよび周辺を握るカギは「1人1人の投票 (vote)」 https://www.youtube.com/watch?v=KW85rW6-PgI
24 ~JEAへのLonestar ElixirConf フォローのお礼~ この場を借りて、ElixirConf登壇参加の渡航費用フォローという、 ステキ過ぎる施策をご提供いただいた「一般社団法人 Japan Elixir Association (JEA)」に、改めて感謝の気持ちをお伝え
したいと思います (皆さま、どうぞ一緒に拍手をお願いします) 「Erlang & Elixir Fest 2019」も、JEAの主催となりますが、 毎年、とても素晴らしい「Elixirのお祭りの場」を作っていただき、 アルケミストとしては、本当に嬉しい限りです
25 fukuoka.exも、じょじょに海外のElixir勢とシンクロ José との交流を通じて、Elixirのネイティブコード化などコア部分 に関わるコミュニケーションを始めてます また、海外Elixirコミュニティとのジョイントイベントの企画や、各国 Elixirプレイヤーとの「交換留学」的な活動も開始しています https://www.youtube.com/watch?v=qCA-Qu-TPoM
ちなみに 私の個人的な動機
27 プログラマを36年間続け、現在、「重力プログラマ」中 重力波解析するし、重力・流体・天体シミュレータも作る
28 「福岡 理学部」というサークルを主催し、重力の話します 割とガチな物理・数学・相対性理論・量子力学を披露
人工衛星100万機 にElixir積んで…
ブラックホールに 順々に落として…
「事象の地平線」の境界で メッセージパッシングして…
「重力制御の技術」 を獲得したい (私の大事な技術課題)
33 Qiitaにそれっぽいコラムを挙げているのでご興味あれば https://qiita.com/piacere_ex
※9/7 (土) は、Elixirのために カラダを空けておいてください