meowの覚え書き

write to think, create to understand

MLCT#12 聴講メモ(特に質疑パート)

Machine Learning Casual Talks(MLCT)は、機械学習技術をプロダクションで動かす際のプラクティスや苦労話を議論する場です。 今回はオンライン開催だったため、動画のアーカイブが残っています↓。


発表もそうなのですが、発表者へ寄せられる質問も実務課題に沿ったものが多く、自分が業務を進めていく上でもリファレンスにできそうなため、質疑のメモを重点的に残しました。

発表 ①: "Cost-efficient and scalable ML-experiments in AWS with spot-instances, Kubernetes and Horovod"の紹介と感想

発表者: 服部 圭悟((元)ABEJA)
スライド URL: https://speakerdeck.com/keigohtr/cost-efficient-and-scalable-ml-experiments-in-aws-with-spot-instances-kubernetes-and-horovod-falseshao-jie-togan-xiang

要旨

(クラウドの)ML プラットフォームを実現するにあたってソフトウェア(サービス)を組み合わせるという課題に対して、"Cost-efficient and scalable ML-experiments in AWS with spot-instances, Kubernetes and Horovod"という記事で紹介されたアーキテクチャコスパもスケーラビリティもよかったので紹介するという趣旨。記事によると、データの読み書きは EFS/EBS、ML バッチマネジャーには k8s、コンテナは AWS のスポットインスタンスを使う。(データ並列な)分散学習をする際には深層分散学習フレームワーク Horovod の API をつかって、単一ノードマルチ GPUインスタンスで学習をするという構成を提案している。

質疑

  1. Q: ML プラットフォームサービスはビジネス的に利益が出るのか。 インフラコストが高くて利益があまり期待できない印象がある。
    • A: クラウドのコストで割高になるが、ML プラットフォームを自力で組もうとすると大変なこと(エージェントの管理、クオーターの管理など)がたくさんあるのでサービスとして価値がある
  2. Q: ML に k8s を使うメリットは何か
    • A: ML エンジニアでも簡単に使えるところ。インフラ知識なくても 自分で計算クラスタを用意できる。また、MLOps 関係の文脈で k8s ベースのツール(kubeflow, horobod)がさかんに開発されており k8s 使った MLOps のエコシステムが整いつつある。その結果 k8s の上で TF、PyTorch の分散学習がしやすくなっている。
  3. Q: 服部さん(or ABEJA)では学習フェーズの厳密な再現も重要視されているか?
    • A: 学習の再現のプライオリティは比較的重要度が低い。世の中的にも重視している事例はそんなに出ていない。PoC や案件を回す方を優先している。ABEJA の顧客では、気にしている人はそこまで多くない。一方で学習の再現性が必要になる分野は人命がかかわるところ(医療、自動運転など)や金融
  4. Q:kubernetes を使った機械学習基盤のアーキテクチャで参考になる文献などありますか。
  5. Q: ABEJA では、生の k8s を使って training 環境を作っているのでしょうか。それとも kubeflow などを使っているのでしょうか。
    • A: 生の k8s の上でホストするサービスを作っている。kubeflow は試したがサービス用途で使っていくには辛いと感じた。

発表 ②: データマネジメントなき ML は、破綻する。〜こんなデータじゃ機械学習できねぇよ問題の処方箋〜

発表者: yuzutas0
スライド URL: https://speakerdeck.com/yuzutas0/20200528
参考: 『データマネジメントが 30 分でわかる本』 (amazon)
yuzutas0 さんが、DMBOK を噛み砕いて平易に解説した電子書籍。500 円という破格なので、ぜひチェックいただきたい。今回の発表もこの書籍の話を ML プロジェクトを例として説明されたものである。

要旨

機械学習ではデータの質が良いことが重要であるが、実際の業務で提供されるデータは(ML で使えるほど)品質がよくない。その理由は業務全体におけるデータマネジメントがなされていないためである。本発表では、書籍 DMBOK の 12 領域を(ML の)業務に照らし合わせて、どのようなデータをどう管理・活用すべきか考察する。
ちなみに時間の都合上発表はされなかったが、スライドの appendix に、ML 関係の業務コンサルをした時の話がある。その中には、ML 側がアプリ側にいくらデータ要件の改善を起票してもアプリ側にチケットの優先順位を下げられていつまでたってもデータの品質改善がされない場合の裏技が載っていたりする。

質疑

  1. Q: データマネジメントの 11 領域どれもとても大切に感じるのですが、どれもこれもできていない場合は、まずどの領域を優先してとりかかるのが良いでしょうか?(すでにある程度データが集まっていて使っている状態の場合)
    • A: 教科書的解答は 1(アーキテクチャ)と 11(ガバナンス)。理由は全体像がわかれば関係者とデータアーキテクチャレベルで会話できるし、ガバナンスルールを作れば、担当者や役割分担され責任者が決まるため。ただし、ML エンジニア的にはデータを作る側の話は見えにくいかもしれないので 8 データの品質管理をおすすめする。すなわち、自分が何が困っていて、なぜ困っているのかか言語化することで、他部門 ML チームがどういうデータ(品質、及びそのギャップ)をほしいのかを伝える際の指針となる。
  2. Q: 現場で「業務整理 → データ整理 →ML→ ビジネス価値」の優先順位について共通認識を得るためにどのような伝え方をしていますか?
    • A: 相手の経験・理解度によるので一概にいえない。素直にデータの品質が悪かったら ML タスクは取り組めないことを言った方が話が進むと思う。
    • A(司会上田さん) 関係者に「(ビジネスの成功/失敗の)再現性得たい場合は、データ整理に投資しないといけないよ、ビジネスの良し悪しのメトリクスを決めるには、まともなデータがないと評価できないよ」、と伝える。
  3. Q: 業務でトランザクションテーブル作るべきか
    • A: 打診してみてもいい。履歴がないとトラブル・法令違反につながることがある。例: EC サイトで商品をカートを入れた後に商品の値段が変わったという苦情がおきたりした時の、証拠として持っておく必要がある。
  4. Q: 成功した ML プロジェクトは 11 領域はどの程度実現できているのか
    • A: 成功という意味では、短期的には勢いでやっても金額でいうと成功する。ただし、その後のいろんな変動要因(担当者の変更)があったり、スケールしようとした瞬間に(11 領域のできていないところから)課題が噴出する。

発表 ③: 使われる機能目指して 測ったり試したり

発表者: 大嶋 悠司(メルカリ)
スライド URL: https://www.slideshare.net/Oshima0x3fd/mlct12
補足: Google Developers Japan: メルカリ : TensorFlow Lite で、気付きにくい便利機能をユーザーに提唱
今回の発表で紹介された取り組みの詳細が載っている。

要旨

メルカリではエッジ AI の適応先の 1 つとして、メルカリアプリ内のバーコード出品推薦機能(カメラで撮られた物体が本かどうか画像分類し、本だったらバーコード出品ができる旨のメッセージを出す)をリリースした。企画からリリースまでに行った取り組み(主にモデル量子化)と機能改善活動に関して述べる。

質疑

  1. Q: 実務でサーバーサイドも tflite で行こうという機運はありますか?
    • A: サーバサイドならば、TF serving で動かしたほうが TFLite よりも早い、なので使う予定はない。
  2. Q: ML を使うという施策はどのように決定されたのか。MLを使わずともUI/UXの改善でバーコード機能を使う人を増やせそうなものだが。
    • A: もちろん UI/UX のみで使う政策も並行で走らせていた。試験した結果、ML と UI/UX を組み合わせたほうが、バーコード出品の増加率がたかいので ML も組み込んだ。
  3. Q: full quantizationの大変な点を伺いたいです。
    • A: 活性化関数のマップをつくるところ。represent dataset(実データを表現するデータ)のサブセットを入れて、活性化関数の値を記録する作業がある。ちゃんとした represent dataset 作らないと精度でない。また、出品される画像のドメインが変化したときモデルのメンテコストが上がって大変になる。今回の機能は full quantization しなくても速度要件は満たしたのでその段階をスキップした。
  4. Q: uint8 に変換したモデルの場合、速度はどれくらい向上するか?
    • A: (自分の記憶でしかないが、)40%くらいは速くなる。
  5. Q: TFLiteはスマホの違いを吸収してくれるか
    • A: すべて吸収してくれるわけではない。iOS はバージョンのしきい値を決めている。android は CPU がばらついているので、CPU アーキテクチャの指定をして推薦機能をオンにするかきめている
  6. Q: TFLite のせいでアプリがおちるとかメモリリークするとかあるか
    • A: 今回の開発では、TFLite 起因のものはおきなかった。ただし、デモ開発の段階でカメラをストリーミング形式で認識しようとするとメモリリークをおこした。
  7. Q: エッジ側モデルを更新する際に気をつけるべきことはあるか
    • A: アプリにモデルを同梱して配布しているが、これは良くない。アプリインストールした後、CDN からモデルを配布したい。今後は、この端末はこのバージョンみたいにして、端末に合ったモデルの配布を考えている。
  8. Q: mixedprecision で学習試したか
    • A: やっていない。キャッチアップできてない。

所感

  • オンライン開催
    • 個人的に非常に助かった。参加抽選はないし、動画アーカイブは残るし、質疑のインタラクション手段(sli.do)も用意されており、いたれりつくせりだった。

改めて運営メンバー、発表者の方々、ありがとうございました。