Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Elixirで始めるデータサイエンス入門 ~Elixir製データサイエンスプラットフォーム「E...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
piacerex
June 02, 2019
Technology
800
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Elixirで始めるデータサイエンス入門 ~Elixir製データサイエンスプラットフォーム「Esuna」にて~
piacerex
June 02, 2019
More Decks by piacerex
See All by piacerex
実践生成AIレクチャー会(基本編)※高度編イントロ無版
piacerex
1
370
「エッジ×分散生成AI」の技術と変わる産業、そしてITの未来
piacerex
0
720
今のコンピュータ、AI にも Web にも 向いていないので 作り直そう!!
piacerex
1
2k
ノーコードと生成AI、IoTが繋がると何が出来るか?
piacerex
0
95
ElixirがHW化され、最新CPU/GPU/NWを過去のものとする数万倍、高速+超省電力化されたWeb/動画配信/AIが動く日
piacerex
0
570
fukuoka.ex/kokura.exとElixirって何ソレ美味しいの?つまみ食い
piacerex
0
160
PMMとは? … モダンなSaaSプロダクトに必須な役割(「プロマネチョットデキル#5」より)
piacerex
0
290
とうとう実践配備された ElixirDesktopにようこそ!!
piacerex
0
1.8k
7年間アドカレ続け、トップランカー入りしたElixirにようこそ!!
piacerex
0
380
Other Decks in Technology
See All in Technology
不要なレビューをAIにまかせて AIコーディングの環境改善を加速した
shoota
1
140
FinOps × AIエージェントで実現する コストインシデントの自動調査
oasis1994liveforever
0
140
アンオフィシャルな、オフィシャルからのお願い
wyamazak_devrel
0
110
AIの性能が向上しても未解決な組織の重大問題は何か?/An Unsolved Organizational Problem in the Age of AI
moriyuya
4
680
【NRUG vol.18】KubernetesにおけるNew Relicデータ取得量削減の考え方
nrug_member
0
130
「エンジニア進化論」2028年の開発完全自動化、エンジニアはどう進化するか
cyberagentdevelopers
PRO
6
5.2k
気軽に使える"情報のハブ"としてのNotion活用 〜フロー情報の集積点 と、 Claude Code × Notion AI〜
syucream
1
140
SONiCで構築・運用する生成AI向けパブリッククラウドネットワーク ~実装編~
sonic
0
220
やさしいA2A入門
minorun365
PRO
12
1.9k
【セミナー資料】Claude Code をセキュアに使うための考え方と設定の勘どころ / Claude Code Webinar 20260616
masahirokawahara
2
360
攻撃者視点で考えるDetection Engineering
cryptopeg
3
1.9k
Chainlitで作るお手軽チャットUI
ynt0485
0
260
Featured
See All Featured
Into the Great Unknown - MozCon
thekraken
41
2.6k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
56k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
The agentic SEO stack - context over prompts
schlessera
0
820
For a Future-Friendly Web
brad_frost
183
10k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
210
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.2k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.1k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.7k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.5k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
430
ラッコキーワード サービス紹介資料
rakko
1
3.6M
Transcript
2019/6/2 (Sun) japan.ex#1 & fukuoka.ex#24 Elixirで始める データサイエンス入門 ~Elixir製データサイエンスプラットフォーム「Esuna」にて~ 2019/05/31 ver
0. 5作成 2019/06/02 ver 0. 9作成
1 Elixir、マイナー言語だけど、地味に生活を支えてます
2 福岡Elixirコミュニティ「fukuoka.ex」を主催してます 「fukuoka.ex」は、福岡で、Webシステム構築やビッグデータ/ AI・ML領域の「大量アクセス/データの高速処理と安定運用」 「高い開発効率」を両立できる「Elixir」「Phoenix」を盛り上げ、 Elixir自身も進化させていくコミュニティです SI経験に裏付けられた開発ノウハウと大規模インフラ運用知識 といった実践的なElixir活用と、マルチコア/GPU/FPGA活用、 Elixirコンパイラ開発といった、先端領域研究も、熱く展開中!!
3 ライブデモする「MeetUp」+入門者OKな「もくもく会」 仕事終わり、くつろぎ、ほろ酔いつつ、Elixir/Phoenix による先端プログラミングに触れるイベントを定期開催 毎月開催で、リモート参加も可なので、よろしければ、 ”福岡 Elixir”でググって、connpassご登録ください ▪もくもく会 (毎月、入門者もOK) ▪MeetUp
(隔月、経験者向け)
4
5 今年、小倉Elixirコミュニティ「kokura.ex」を発足!! 北九州の小倉で「kokura.ex」を発足しました fukuoka.exと連携しつつ、「福岡市」と「北九州市」を繋ぐこと で「福岡県」全体をElixirで盛り上げつつ、国内各地を繋ぎつつ、 やがて全世界に向けてElixirコンテンツ発信をしたいと思います
少しだけ、fukuoka.ex 発足当時のことお話します
7 再掲:fukuoka.ex#1
8 再掲:fukuoka.ex#1
tokyo.ex ↓ fukuoka.ex
10 2017/12、Shinjuku.exの高橋さんと意気投合 新宿Elixirコミュ「Shinjuku.ex」を主催し、最近はGlusterで 著名な高橋 敬祐さん (@kske_t) と出会い、fukuoka.exと Shinjuku.exが、わりかし同じ道を辿っていることを聞けました
Shinjuku.ex ↓ fukuoka.ex
12 fukuoka.exや刺激を受けたコミュニティの元は… fukuoka.ex、およびその姉妹のkokura.exは、こんな感じで、 発足したんです その他、fukuoka.exに刺激を受けて立ち上がった、各地Elixir コミュニティも割とあるようで、その根っこには、実は、tokyo.exと Shinjuku.exがありました (この場を借りて、感謝の言葉です)
13 一方、fukuoka.exのこれまで Qiitaコラム化していたり、成果報告スライドをまとめていますので、 よろしければご覧ください https://qiita.com/piacere_ex/items/3b88ebe9882ac8aef0ea https://speakerdeck.com/piacere/2018nian-fukuoka-dot-exji-ri-zhong-jian-cheng-guo-shi-ji-fa-biao
本編です
15 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
16 他Enumも便利だし、StreamもHaskell風でイイ もしくはTensorFlow風 zip/unzipやslice、take系がステキ
17 そして、「Flow」の衝撃 ~マルチコアの雷に打たれた~ 1年半前、BtoB向けマーケティングプロダクト開発にて、2時間も かかっていたデータ処理バッチ (Javaで誰か作った) をどうにか する際、Enumの並列実装「Flow」で同等処理を実装したら、 ナント、6分半で処理できてしまった (しかも1時間で実装完了)
このFlowとの衝撃的な出会いから、私はデータ処理領域での Elixirプロダクション適用に本腰を入れ、fukuoka.exのミッション にも、「Elixirによるデータサイエンス実現」が加わりました ▪Flow ▪Enum
そんなEnumを pandas級にレベルアップ
19 pandasライクなElixirライブラリ 「Dataframe」 sort第2以降優先、LEFT/RIGHT JOIN、dropなどの複数 項目指定、Enum.reduce頻出データ処理、CSV変換など、 Enumに無く、pandasで良く使うものは、大体揃えました (scikit-learnやNumPyの一部実装もクローンしています)
更に、データ操作を プログラミングレスに…
21 Elixirコードを生成するWebUIをVue.js+Elixirで Web上でUI操作するだけで、データ変換/集約/クレンジング を行える データサイエンスプラットフォーム「Esuna」 は、UIで 設定したデータ処理をElixirコード生成します (単独実行も可) α版は3日で作り、力武先生にもゲスト出演いただいた昨年6月 「fukuoka.ex#11:データサイエンスにコネクトするElixir」披露
Vue.js+Elixir の組み合わせ以外 では、たぶん3日で 仕上がらないかな
22 データ加工だけで無く、ディープラーニングモデルも生成 その後、「ErlangPort」によるElixir-Python連携でKerasの DLモデルを呼べるようにし、Kerasのコードも自動生成可に Kaggleのタイタニック問題を解くコラムで実演しています 第1回:https://qiita.com/piacere_ex/items/ab0b32c521293d4ab38e 第2回:https://qiita.com/piacere_ex/items/771389e1fe66dcf795c5
23 現在、UIリニューアルし、プロダクション利用しています 列ドリブンな操作メニューと、順番通りに進めればデータ処理系が 作れる9ステップのナビと、直感的なUIに全面リニューアルしました データソースとして、CSV/ExcelやDBだけで無く、AWSやGCP、 汎用APIにも対応…たとえば、CSVとBigQueryとかJoin可w Kaggleの 「タイタニック問題」 (Titanic: Machine
Learning from Disaster) をロードしていて、 欠損値の補完など を前述コラムにて
24 elixirforumでもEsunaについて聞かれました pandasが好きな方のようだったので、pandas的なデータ操作 ライブラリは、Esuna UIと別々に使えることをお知らせしました (でも、コード生成できるから使ってラクした方がいいよ、ともw)
それではEsunaで データサイエンス入門 https://qiita.com/piacere_ex/items/ab0b32c521293d4ab38e
26 データサイエンス以外の分野でも使われ始めています 「Esuna」は、データサイエンス文脈に限らず、データ処理全般を カンタンに取り扱えるため、AI・ML案件だけで無く、以下のような データ処理においても利用しています ① 事業向けデータ整形/集計の「BI」 ※Business Intelligence ②
既存システムのリプレースに伴う「データ移行」 「ETLツール」のカバー範囲を、マルチコアのパワーとErlangVMの 安定性で、高速かつ安全にこなすことが可能です それと、データ操作をElixirコード生成するので、こんな使い方も ③ インプットデータからデータ加工を行うようなWeb/API開発 (データ読込/加工部分がプログラミングレスで生成できる)
27 次期Esunaは、データ加工Webアプリ/APIも出力 現在、データ処理部分のみのElixirコード生成ですが、もう一歩 推し進めて、UI上で設定したデータの加工を行い、その加工後 データでCRUDするWebアプリ/API毎、生成する予定です (golangのHugoにデータ加工エンジンを突っ込んだような?) これにより、CRUDする程度のWebアプリ開発している方の仕事 はreduceしてしまおう…とまでは言いませんが、よりクリエイティブ な仕事にパラメータ振りできるようになるでしょう
28 訓練画像の加工/管理もEsunaに搭載予定 現在は、テキスト/数値主体のデータ処理のみの対応ですが、 画像系Deep Learningの退屈で頻出する前処理…たとえば、 ➢ OpenCVでやるような加工 (回転/拡大・縮小/色変更) ➢ オーバーサンプリリングやアンダーサンプリング
などの操作と、それら画像の管理もEsunaで簡素化したいです これで、訓練画像の加工/管理の手間が減り、 モデル開発やSIにより集中しやすくなります 「退屈なことはPythonにやらせよう」では無く、 退屈なことは、そもそもやらないようにするために、 ツールに落とし込もう…ということですね (≒自らの生産性を上げるための生産こそ本懐)
29 リアルタイムフロント技術「LiveView」でリビルド中 現行バージョンは、Vue.jsでフロントUIを実装していますが、 「Phoenix LiveView」での再実装を始めています Phoenix コミッター、Chris McCordにVue.js版Esunaを見せ、 LiveViewでリビルドする話をしたら、「Github教えて」「グラフは 何のJS?」とか聞かれました
(José もメッチャ画面触ってた) とてもフレンドリー
30 fukuoka.exが手掛けるデータサイエンスプロダクト ➢ 「Hastega」 … GPU & マルチコアドライバ ➢ 「Cockatrise」
… FPGAドライバ ※予測性能はGPU以上 ➢ 「DeepPipe」 … ディープラーニングコア (MNIST90%超) これらはEsunaと結合し、Pythonツールチェーンと勝負できる、 爆速のデータサイエンスプラットフォームを提供します (TensorFlowやscikit-learnといったMachine Learning/ Deep Learningの牙城を崩しに行く?…かも知れない) 「ツールチェーン」の充実に加え、今月から新たに開始するコラム、 「Esunaで始めるデータサイエンス入門」で、fukuoka.exは、 「Elixirによるデータサイエンス実現」 を福岡だけに限らず、全国/全世界に配信していこうと思います
31 最後に: 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
32 fukuoka.exも、じょじょに海外のElixir勢とシンクロ José との交流を通じて、Elixirのネイティブコード化などコア部分 に関わるコミュニケーションを始めてます また、海外Elixirコミュニティとのジョイントイベントの企画や、各国 Elixirプレイヤーとの「交換留学」的な活動も開始しています https://www.youtube.com/watch?v=qCA-Qu-TPoM
※9/7 (土) は、Elixirのために カラダを空けておいてください