repro-tech-meetup-7
by
Takeshi Kamada
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
ReproのAI機能を支える技術 Repro AI Labs. 鎌田武志 (@take4_k)
Slide 2
Slide 2 text
自己紹介 ● 鎌田武志 (@take4_k) ● 2018 年 6 月 Repro 入社 ● Repro AI Labs 所属 ● WEB アプリケーションエンジニア (!?)
Slide 3
Slide 3 text
今日話すこと ● Repro の ML 基盤について ● 最速で AI 機能をリリースする技術からのリリース後安定化させ るまでの軌跡 ● アルゴリズムの話は出てきません
Slide 4
Slide 4 text
Reproとは
Slide 5
Slide 5 text
Reproでできること ● アナリティクス ( 分析 ) ● マーケティング ○ プッシュ配信 ○ アプリ内メッセージ ○ Web メッセージ
Slide 6
Slide 6 text
Smart Audience™ ● Repro 初の AI 機能 ● キャンペーン対象ユーザーを自動予測 ○ 現在はチャーン予測 ( 離脱しそうなユーザー ) に対応
Slide 7
Slide 7 text
Repro AI Labs. ● データ分析 ● PoC ● ML Ops ● Repro 本体への機能追加
Slide 8
Slide 8 text
アーキテクチャ 最近の CTO の発表もご参照ください
Slide 9
Slide 9 text
ML基盤 ● 予測結果を S3 に転送してクラウドの壁を超える ● 本体とはなるべく粗結合にする
Slide 10
Slide 10 text
Composer(Airflow) ● フルマネージドワークフローオーケストレーションサービス ● GKE 上に Airflow を構築してくれる ● Python で DAG( 有向非巡回グラフ ) を使いワークフローを定義 ○ DAG ファイルは GCS に置くだけ ● スケジュール管理 ● 様々な Operator ● ( UI わかりずらいけど他よりまだマシな気がする)
Slide 11
Slide 11 text
DAG
Slide 12
Slide 12 text
Dataproc ● Spark & Hadoop クラスタのフルマネージドサービス ● GCS コネクタ ● Pyspark など様々な言語に対応 ● Job API がある
Slide 13
Slide 13 text
Datalab ● GCE 上にデータ分析、可視化、 ML のための環境を構築してく れるサービス ● Notebook 形式で使いやすい ● BQ 、 GCS などと簡単に接続できる ● Docker 化されている ● Repro では PoC 用
Slide 14
Slide 14 text
最速リリースのポイント ● 構築が楽なサービスを使った ● Repro 本体の既存の仕組みに乗れた
Slide 15
Slide 15 text
最速でリリースしたツケ ● 前処理・学習・予測全て 1 スクリプト 1 タスクで実行 ○ 途中でコケた時に全て再実行 … ● 処理時間が線形に増加してスケールできない ○ 一時期は 7 時間かかっていた … ● 補足できてないエラーがあった ○ コケていたことに気付かずインシデントに …
Slide 16
Slide 16 text
Dataprocアンチパターン ● Jupyter notebook も scikit-learn もインストールできる ● やろうと思えば ML バッチ処理に使える?! ● でもやらないほうがよい ○ Python 側でマシンリソース使いすぎた時に Spark の Job が落 ちる
Slide 17
Slide 17 text
改善できた理由 ● 今後の AI 機能開発を見据えたチーム増員 ○ アプリケーション ○ インフラ ● AI エンジニアに不足しがちな視点を補完 ( きっとアルゴリズムや 予測精度で頭いっぱいですよね ) ○ システム負荷 ○ 障害対応 ■ 起き辛いコードを書くのも含む
Slide 18
Slide 18 text
推測するな 計測せよ ● 適切にログを追加 ● 通信に無駄に時間がかかっていたのがわかって改善につな がった ○ Spark のキャッシュを使った ○ 転送ファイル圧縮した
Slide 19
Slide 19 text
技術スタックの理解を深める ● 知らないと使えない ● 知ることで監視設定など追加できた ○ Stackdriver Monitoring ■ VM とコンテナの死活監視 ○ Airflow ■ Timeout 設定 ■ Retry の設定
Slide 20
Slide 20 text
雰囲気で運用をやらない ● チームで SLO 設定 ○ エラーだから ASAP で対応→心の余裕 ● Redash のダッシュボード作成 ○ 定期的な振り返りを実施
Slide 21
Slide 21 text
リファクタリング ● 前処理・学習・予測を分割した ● 再実行しやすくなった ● `SocketTimeoutException` がでなくなった
Slide 22
Slide 22 text
まとめ ● アルゴリズムや予測精度だけでなくシステム開発の基本が改め て重要 ● メンバーで補完しあえるチームを作ろう
Slide 23
Slide 23 text
今後やっていきたいこと ● ML 基盤まだまだ伸びしろある ○ Dataproc から ML を剥がしたい ○ もっと良い感じの PoC 環境を作りたい ● もっと AI 機能を作る ○ 課金ユーザーを予測 ○ ユーザー毎の最適なプッシュ配信時間を予測
Slide 24
Slide 24 text
We are hiring!! https://www.wantedly.com/companies/repro/projects