ZOZO MLOps のチームリーディングとSRE (Engineering)
SRE Next 2020/01/25
株式会社ZOZOテクノロジーズ
開発部 MLOps リーダー、SRE スペシャリスト
瀬尾 直利
Copyright © ZOZO Technologies, Inc.
2
瀬尾 直利 (そのっつ)
株式会社ZOZOテクノロジーズ
SRE スペシャリスト
開発部 MLOps リーダー
CSIRT兼任
Google Cloud 担当
Twitter/GitHub: @sonots
CRuby、Fluentd、Chainer コミッタ
© ZOZO Technologies, Inc.
Disclaimer (免責事項)
ZOZO MLOps のチームリーディングと銘打っていますが、
筆者であるそのっつ流のチームリーディング術であり、�所属企業であるZOZOテクノロジーズの標準手法というわけではありません
4
https://zozo.jp/
© ZOZO Technologies, Inc.
5
https://wear.jp/
© ZOZO Technologies, Inc.
6
https://zozo.jp/multisize/
【参加企業】
株式会社アーバンリサーチ、株式会社ストライプインターナショナル、
株式会社デイトナ・インターナショナル、株式会社パル、株式会社ビームス、
株式会社ベイクルーズ、MARK STYLER株式会社、リーバイ・ストラウス ジャパン株式会社 など
© ZOZO Technologies, Inc.
ZOZO MLOpsチーム
2019年4月に発足
MLOps チームのミッション
MLOpsチームにおける私の役割
Engineering Manager (EM) 兼 Tech Lead
EM としての仕事
Tech Lead としての仕事
チームが挑戦してきた課題
Phase1: ML機能を1つプロダクションに出す
Phase2: ML機能を複数プロダクションに出す
Phase3: ML機能の量産体制を整える, e.g., ML基盤?
イマココ
チームリーディング術
チームリーディングで気にしていること
チームとしての方向性を定義する
なぜわざわざチームを作ったのか軸がブレないようミッション(目標)を定義
「 THE TEAM 5つの法則」より引用
チームリーディングで気にしていること
MLOps チームの目標
ミッション (意義目標)
成果目標
行動目標
チームとしての方向性を定義する
プロ意識を持つ
そのっつの考えるプロとは
社内の期待を裏切らない
レベルの高いインフラを構築できる
行動目標
技術的負債をなくすコツ
チームリーディングで気にしていること
スムーズなプロジェクト進行
調整ごとは早めに
プロジェクト進行上のボトルネック(クリティカルパス)を潰す
チームリーディングで気にしていること
心理的安全性
思いついたら即相談
仕組み(orコード)を憎んで人を憎まず
わからないことは聞ける雰囲気
チームリーディングで気にしていること
リーダーがボトルネックにならないように
(特に) コードレビュー
リーダーは必須な(実装)タスクを握らない
チームリーディングで気にしていること
チームリーディングで気にしていること
スキルアップできる環境であること
1 on 1 でのヒアリング
原則: 1 on 1 はメンバーの時間
KPTとの違い
リーダーとしてやること
モチベーションコントロール
コーチング
基本的には「背中を見せる」スタイル
サポートの仕方は人(とその人のフェーズ)によって変えている
スキルアップできる環境であること
当たり前のレベルを引き上げる(1)
コードがあったら読むの当たり前
strace でシステムコール追うのも当たり前
ネットワークトラブル時は tcp パケット追うの当たり前
コーチング
当たり前のレベルを引き上げる(2)
技術ドキュメントを書くの当たり前
技術発表をするの当たり前
OSSにバグがあったら報告するの当たり前
コーチング
チームリーディングで気にしていること
ルールより文化
ルールを作ることの欠点
文化として染みつかせる
ルールをできるだけ作らないことがルール
チームリーディングで気にしていること
MLOps チームの文化
ルールより文化
フェーズによって柔軟に変える
フェーズによってハマるやり方は異なる
ひょっとしたら難しいことをやっているのかもしれない
ルールより文化
実例) Phase1におけるタスクアサイン
チームが立ち上がったばかり
理想とするチーム像
カンバンでタスク管理
フェーズによって柔軟に変える
実例) Phase2におけるタスクアサイン
チームで同時に扱うプロジェクトが増えてきた
(そのっつ以外は)1プロジェクトあたりメインとサブの2人担当制に変更
フェーズによって柔軟に変える
やってみて、ダメなら辞める
チーム(つまり人間)によってハマるやり方はことなる
試すコストを小さく
実例) 「20%ルール (業務時間の20%を個人プロジェクトに当ててよいルール)」を試してみたが、メンバが本業しかやらなかったので取りやめた
ルールより文化
KPT(A)
KPT (Keep, Problem, Try)
ポイント: Action まで決めて、次回実施したか確認をする
リーダーとしてやっていること
やってみて、ダメなら辞める
技術力でぶん殴る
チームプレーのプラクティスも良いけど、とにかく技術力を持てという派
SREのやり方をなぞっても技術力が伴っておらず問題解決できないのであれば意味がない
技術力でぶん殴れ ╭( ・ㅂ・)و ̑̑
ルールより文化
SRE (Engineering) 事例
技術力でぶん殴れ ╭( ・ㅂ・)و ̑̑
SRE (Engineering) 事例
ZOZO 画像検索
(一般的な)画像検索の基本
深層学習を利用してアイテム画像の特徴ベクトルを取得
深層学習を利用して画像からアイテムを検出
取得した特徴ベクトルを予め構築しておいた Approximate Nearest Neighbor(ANN)Index から類似検索
CNN
Feature
Chainer
Chainer
annoy
遭遇した問題
ANN コンテナの挙動が不安定
初回のリクエストが遅い問題
ANNがメモリを使ったり使わなかったりする問題
コードが読めたら読むの当たり前
仮説と検証のサイクル
ANNがたまに異様に遅い問題
仮説: disk cache に頼っているからでは?
対処
初回のリクエストが遅い問題
デプロイ直後の1発目が異様に遅い
仮説と検証のサイクル
Chainer (CuPy) コミッタ便利
神は細部に宿る
人事評価
採用活動
Engineering Manager (EM)としての他の仕事
人事評価
究極的には、リーダーの仕事はメンバーの給与をあげること、という考え
メンバーが活躍できれば、結果は自ずとついてくる
採用活動 - We’re hiring
まとめ
チーム立ち上げ期に行ったこと
会議体を決める
開発ツールを整える
常にブラッシュアップ
開発基盤を整える