Machine Learning Production Pitch #2 イベントレポート #MLPP

2019年5月30日に開催されたこのイベントに参加してきました。
Machine Learning Production Pitch #2 - connpass

Machine Learning Production Pitchは、機械学習について業務で培った知見や経験や苦労話を共有できる場を提供することを目的としたMeetupです。機械学習に取り組み、実社会への適用に日々もがき苦しみ楽しんでいる方々を対象としております。

機械学習ワークフロー(Airflow、Luigi)周りの話がやや多くて、個人的には馴染みが無かったので、うまくまとまっているとは言えないと思います(スライドを書き写すだけになってしまったところが多かった気がする)。参考程度にどうぞ。

Detecting opinionated articles in SmartNews/Tianxiang Zhang (張天翔) (スマートニュース株式会社)

  • タスク

    • 配信するコンテンツの情報を理解する必要がある
    • 今回紹介するのはタギング(タグ付け)の一つ
    • ニュースか、オピニオンかの2クラス分類タスクを考える
    • ボトムアップのアプローチを採った
  • システム

    • パイプライン
    • sagemakerは3種類のインスタンスがある。jupyter notebook、training、serving
  • モデル
    • 共通部分はBERTやLSTMなどの一般的な手法を用いる。
    • 特定の各タスクに合わせて、最終部分のNNを別途作った
    • GPU必須の手法だと精度が出るが…CPUでも間に合うようにしたい
    • Wide and Deep手法を採用
    • エッジケース 記事が第三者のオピニオンであるケース。コンテンツチームに見てもらって話し合って、これはオピニオンではないと判断した
  • まとめと今後の課題
    • 一文ごとのオピニオン解析
    • 係り受け解析→主語の分析(筆者のオピニオンなのか、第三者のオピニオンなのか判別できる)
    • 著者の特定

つらくないAirflowにむけて/Kenji Yamauchi (LINE株式会社)

2019年6月5日 スライドを追記

  • 現行
    • Airflowとは:OSSのワークフローエンジン。PythonでDAGを作る
    • 依存性のあるタスクを組み上げて実装しなきゃいけない→workflowエンジンの導入を決定
    • まずは一旦作った。Ansibleで構成管理、データストアはBucket
  • 学習
    • 評価についてはpoolを使い、実行マシンを指定する
  • 課題
    • 20台以上のvmを管理するコストが大きい
    • DAGの実行マシンの指定をもっと細かく実施したい
      • メモリ16GB以上のマシンだけで実行するぞ、とか
  • アーキテクチャ改善
  • 目標の構成
  • DAGに対するテストの導入

機械学習関連の開発を効率化した話/西場正浩 @m_nishiba (エムスリー株式会社)

当初の題は「luigiを使って開発を効率化した話」

  • 開発体制
    • 1つのアルゴリズムの主担当、責任者は1人のエンジニア。チームメイトと相談はするけど。
    • 1人のエンジニアが複数アルゴリズムを同時に担当
  • 歴史上の経緯で、アンチパターンみたいなテーブルがあってしまったりする
    • 使い回しが効くように設計したい
  • Luigi
  • Luigi導入の利点
    • 各モジュールの設計を一々考えなくてよい(Luigiによって規定される)
    • 設計フォーマットが統一される。
    • 新人が入ってきても読んで理解しやすい。
    • コードレビューも楽になる
  • そしてgokartを開発した
    • https://github.com/m3dev/gokart
    • Luigiをラップした
    • エムスリーで作ったOSS
    • 出力ファイルをユニークにしたけど「さっきの出力ファイルをうっかり上書きして消してしまった……」を防ぐ
    • 出力ファイルを作ったときのパラメータを保持するので「いい結果が出たけどパラメータが分からん……」を防ぐ

エッジ向け Deep Learning プロジェクトで必要なこと/Shuichi Yasumura (LeapMind株式会社)

  • エッジ向けDeepLearningプロジェクトの注意点
    • 「自社で作ったモデルがあるのでエッジ向けのハードウェア用に変換してください」→そんな単純なものではない。
    • 「最初にネットワーク作って、次に圧縮」ではダメ。最初の設計から計算量の削減を意識する必要がある
    • 「精度何%が絶対必要」なんです→そもそも精度って何?本当にその数値が必要なの?
  • モデルの圧縮、量子化で必要なこと
    • 圧縮手法のうち、LeapMindでは主に量子化を使う
    • 1bitの演算に落としていく
    • 小さなFPGAでは、8bitでも大きすぎる
    • 完成したモデルに量子化を適用したらダメになった、という話を聞く
    • 量子化に関しても学習を繰り返していく
    • 顧客の求める精度とはどういうものなのかを理解し、顧客に説明する まとめ
    • エッジ向けのDeepLearningの場合、再学習が前提or再学習なしでは性能が大きく劣化
    • 実運用に耐えられるスペックがどこまでなのか、を見極めるのが重要