LoginSignup
2
1

More than 5 years have passed since last update.

(WIP)ML Ops/DevOps観点で「機械学習のインフラ」について考える

Last updated at Posted at 2019-04-29

4月からML Ops/DevOpsに専念することになった。
https://mazgi.github.io/posts/2019.04/my-role-in-dena-was-simplified/

ちょうど連休なのもあってふんわりと色々考えていて機械学習環境や体制についてTwitterに垂れ流したのだけど、少し整理したいのでqiitaに書いてみる。
思考整理なのでまとまりはありません。
また全ては私の捉え方と考えなので、正確あるいはこうすべきという主張でもありません。


Todo

  • 想定している組織図あると読みやすそう
  • WebアプリケーションとML環境を図で対比できると伝わりやすそう

機械学習のインフラの特徴

「機械学習のインフラ」は個々の技術に着目すると決して特殊なものではない。
しかし全体として俯瞰するとWebアプリケーションのインフラとは異なる。

  • GPUを扱う
  • Webアプリケーションが動くことは少ない
  • 公開されるエンドポイントも少ないあるいは無い
  • 多くの処理はバッチとして動く
  • 1回のバッチは数時間〜数日かかる
  • 近しいが異なる処理を何度も行う
  • 使用言語は主にPython
  • (CV)数GB * 数万ファイルを扱う
  • (DS)分析基盤と接続することがある

機械学習に携わる人とRole

ビジネス

  • 機械学習で解決できる/解決すべき課題か判断する
  • 利用者の期待値を実現可能な範囲と精度とすり合わせる

リサーチャー

データサイエンティスト

ML Ops/DevOps

私のRoleはこれ。

  • 機械学習ロジックを実用アプリケーションでwrapする
  • リサーチャー/データサイエンティストがロジックに集中できる環境を設計/構築/運用する
  • 妥当なコストで効率よく機械学習処理を行える仕組みを設計/構築/運用する

リサーチャー/データサイエンティストに意識してほしいこと

自明な以下については記載しない。

  • 各自の専門分野の知識
  • 参画したプロジェクトで求められる業務知識
  • チームワークやプロジェクトマネジメント上必要なこと

必須なITエンジニアリングの知識と技術

ML Ops/DevOps等が適切に十分なリソースを持って動けたとしても身につける必要がありそうなものを書き出す。
完全にWebブラウザだけで仕事でできるようにでもならない限りはこれらは避けて通れないと考えている。

  • セキュリティ/SSH
    • 鍵の取り扱い
    • ファイルと機密情報の取り扱い
      • 特にCVで現実世界を撮影した画像/動画を扱う場合
    • 使われている認証方式
    • 接続経路
  • バージョン管理とチーム開発
    • Git
      • 除外すべきファイルと除外方法
      • Branch
      • Commit粒度
    • GitHub
      • Issue
      • Pull Request
  • Linux
    • シェル操作
    • ファイル操作
    • パーミッション
  • コンテナ/Docker
    • VMとの違い
    • Dockerfile
    • Docker Registry
  • IaaS
    • リージョン
    • レイテンシ
    • コスト把握
  • 関係の深いIaaSリソース
    • リージョン/VPC
      • ネットワークレイテンシは意識せざるを得ないので
    • AAA/IAM
    • VM
    • オブジェクトストレージ
      • ローカルストレージ/NFSとの違い

知っていると便利な知識と技術

世の中の全ての知識と技術は知らないよりも知っていた方が便利だと思う。
その中でも特に知っていると捗りそうなこと。
例えばML Ops/DevOpsが支援または代行できるが知っているとより円滑に依頼できるなど。

  • セキュリティの考え方
  • シェルの操作とカスタマイズ
  • HW/OS/VM/コンテナ概要
    • 「Docker上でプロセスを実行する」までの概要くらい
    • わかっていると見通し良くなるしトラブル遭遇時の対応や支援要請が行いやすい
  • CI/CD
  • 通知の制御/Slack Webhook
    • 自分でSlack通知を設定できると捗ること多い
  • 各種ログの在りかと問題箇所の特定
    • トラブルシュートを依頼しやすくなる
  • コーディング規約

知らなくても良さそうな知識と技術

適したポジションの人たちに丸投げして良さそうなこと。
居ない場合はポジションを作って採用してもらうよう提案すると良さそう。

  • 折衝/渉外
    • 「ビジネス」の人にやってもらう
  • IaaS自体の選定/設計/設定/構築
    • 「ML Ops」にやってもらう
    • 選定や設計は要件が伝えられれば十分そう
    • aws cliやgcloudの操作は使うものだけわかれば十分そう
  • IaaSの全サービス
    • きっと誰も知らない
  • Webアプリケーション開発
    • 「ML Ops」にやってもらう
  • k8sそのもの
  • 認証認可サービスそのもの/LDAP/Active Directory
    • 「ML Ops」あるいは情シスにやってもらう
    • トラブル遭遇時の問い合わせ先が判断できれば十分そう
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1