9.7K Views
March 29, 22
スライド概要
2022/3/24に開催した「オンプレML基盤 on Kubernetes」の資料です。オンプレミス環境のKubernetesを使って構築した機械学習基盤の開発、運用の取り組みをご紹介します。
https://ml-kubernetes.connpass.com/event/239859/
2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp
オンプレML基盤 on Kubernetes ~Yahoo! JAPAN AIPF~ ヤフー株式会社 データプラットフォーム本部AIプラットフォーム 北嶋 昇 ©2022 Yahoo Japan Corporation All rights reserved.
⾃⼰紹介 • 名前 • 北嶋 昇 • 経歴 • Yahoo! JAPAN(2006-) • K8S/Hadoop/D&S Infra/Siteop • 趣味 • 登⼭/ランニング/ボルダリング • SNS • https://www.yamareco.com/modules/yamareco/use rinfo-339612-prof.html ©2022 Yahoo Japan Corporation All rights reserved. 2
アジェンダ 1. Intro 2. Infrastructure 3. Kubernetesとオンプレを⽀える技術 4. AIPF 5. LakeTahoe ©2022 Yahoo Japan Corporation All rights reserved. 3
アジェンダ 1. Intro 2. Infrastructure 3. Kubernetesとオンプレを⽀える技術 4. AIPF 5. LakeTahoe ©2022 Yahoo Japan Corporation All rights reserved. 4
AIPF (AI Platform) とは AIPFはK8Sを基盤とした機械学習のモデリングおよび、機械学習パイプライン、推論環境、 MLOpsに必要なモニタリングシステムを提供するプラットフォーム プロジェクト 概要 ACP 機械学習/ディープラーニング向けのマルチテナントK8S環境 MLflow, Airflow, Argo Workflows, Argo CD など様々なアプリケーションを提供 LakeTahoe サイエンティストへのモデリング環境(jupyterlab)の提供 機械学習を簡単に実⾏できるAI Platform Training API の提供 CuttySark ManagedなTensorflowServing ,Tritonを使った推論環境を提供 Dronach 機械学習モデル/FeatureStoreの継続的なモニタリングシステム データサイエンティスト/エンジニアが 上記のツールを組み合わせてシステムの実装 ©2022 Yahoo Japan Corporation All rights reserved. 5
アジェンダ 1. Intro 2. Infrastructure 3. Kubernetesとオンプレを⽀える技術 4. AIPF 5. LakeTahoe ©2022 Yahoo Japan Corporation All rights reserved. 6
Network • IP Clos Fabric NW • データ分析基盤のようなサーバ間の通信が多い環境に向けた「East-West」なトラフィックにも強い構成 • ⾼帯域で耐障害性があるNetwork • NW Security • コアスイッチではなくサーバ(HV)でNetwork ACLを管理 参考:データドリブンなサービスを支えるネットワークの作り方〜 ヤフーのデータセンターネットワーク紹介 https://techblog.yahoo.co.jp/entry/20200323819517/ ©2022 Yahoo Japan Corporation All rights reserved. 7
Server • OpenStack + KVMを⽤いたIaaS基盤 • 基本的に1HV1VM構成※ • 実機と⽐較して95%程度のパフォーマンス • GPU/NVMe/NICパススルーの活⽤ • 合計130台近くのGPUサーバ • SmartNICを活⽤した⾼速な通信 • パケット処理をHWにオフロードすることで⾼いパフォーマンスを実測 ©2022 Yahoo Japan Corporation All rights reserved. ※ K8S MASTER, INGRESS,ETCDなどのVMは除く 8
Server Spec CPU GPU MEMORY DISK NETWORK Xeon Gold 6138 x 2 V100 x 4 384GB NVMe 8TB 100G Xeon Gold 6238 x 2 V100 x 4 384GB NVMe 1.6TB 100G Xeon Gold 6238 x 2 V100 x 8 384GB NVMe 1.6TB 100G EPYC 7532 2.40GHz x 2 A100 x 4 1024GB NVMe 3.2TB 100G Xeon Gold 6238 x 2 - 384GB NVMe 1.6TB 25G EPYC 7702 x 1 - 512GB NVMe 3.2TB 25G ©2022 Yahoo Japan Corporation All rights reserved. 9
Storage(PVC) • NetApp • NFS + ISCSI • ランダムなRead/Writeで⾼スループットを実現 • DB(MySQL, NoSQL)、データキャッシュなど • Quobyte • File Storage + Object Storage(S3) • 安価なコモディティハードウェア上で動作しサーバを追加することで容量と性能がスケール • モデルデータ、メトリクス、ログなど ©2022 Yahoo Japan Corporation All rights reserved. 10
アジェンダ 1. Intro 2. Infrastructure 3. Kubernetesとオンプレを⽀える技術 4. AIPF 5. LakeTahoe ©2022 Yahoo Japan Corporation All rights reserved. 11
Kubernetes • Multitenant CPU/GPU Heterogeneous Cluster • 個⼈/ProjectでNameSpaceごとの権限管理(認証dex, 認可garm+Athenz) • Namespaceごとに全体の1/3のResourceQuota(⼀⼈で全体を壊さなければ良い) • IngressなどのDomainはOPAなどで重複排除 • Priority 定期Job High, 通常 Middle, 実験的に⼀気に動かしたい場合 low • ユーザのシステム監視は個別にPrometheus+Alertmanager+Grafanaを⽴てる • ユーザ間のデータの共有はHDFSかDragon(S3) ©2022 Yahoo Japan Corporation All rights reserved. 12
Kubernetes 通信先/量など を記録 • Security ACL 特殊な通信の許可 Ingress • 抑制対策 通信先の抑制 • 最⼩限のポート開放 • FalcoでのコマンドやNetworkのなどの監視 • Input • Ingressのなどのログを監視し⼤量のデータが 持ち出されていないか監視 A C L container falco • ロギングなど不⼗分なものやIPによる制限ができないものは Output⽤のIngressを作成し制御 Telegraf アラート 集計 • Output • データを持ち出せないようにOutputも社内の認証などが かかっているものに制限 Log送信 コマンドや ネットワークの監視 ©2022 Yahoo Japan Corporation All rights reserved. NiFi HDFS 保管/監査 13
オンプレを⽀える技術 •認証基盤 システム 概要 Athenz Roleごとのアクセス管理 dex/oauth2-proxy UIのための、Oauth2を利⽤した認証/認可 AthenzSidecar APIのための、X509 Method URLでの認可 open-policy-agent CopperArogsを利⽤したCluster/Namespace/ServiceAccountのX509証明書の発⾏ Pkinit Hadoop操作のためのX509証明書からのKerberosTokenの発⾏ 社内Secret管理システム X509証明書を使って権限管理を⾏い、鍵の取得を⾏える ©2022 Yahoo Japan Corporation All rights reserved. 14
アジェンダ 1. Intro 2. Infrastructure 3. Kubernetesとオンプレを⽀える技術 4. AIPF 5. LakeTahoe ©2022 Yahoo Japan Corporation All rights reserved. 15
AIPF (AI Platform) とは (再掲) AIPFはK8Sを基盤とした機械学習のモデリングおよび、機械学習パイプライン、推論環境、 MLOpsに必要なモニタリングシステムを提供するプラットフォーム プロジェクト 概要 ACP 機械学習/ディープラーニング向けのマルチテナントK8S環境 MLflow, Airflow, Argo Workflows, Argo CD など様々なアプリケーションを提供 LakeTahoe サイエンティストへのモデリング環境(jupyterlab)の提供 機械学習を簡単に実⾏できるAI Platform Training API の提供 CuttySark ManagedなTensorflowServing ,Tritonを使った推論環境を提供 Dronach 機械学習モデル/FeatureStoreの継続的なモニタリングシステム データサイエンティスト/エンジニアが 上記のツールを組み合わせてシステムの実装 ©2022 Yahoo Japan Corporation All rights reserved. 16
AIPF Modeling ©2022 Yahoo Japan Corporation All rights reserved. 17
AIPF Production Pipeline ©2022 Yahoo Japan Corporation All rights reserved. 18
MLOps まだ定まっておらず それぞれで実装 LakeTahoe Notebooks Tensorflow/Pytorch/XGBoost/LigthGBM/etc.. hive/cassandraなど を使って実装 LakeTahoe API Tensorflow/Pytorch/XGBoost/LigthGBM/etc.. Dronach Cu?ySark ©2022 Yahoo Japan Corporation All rights reserved. 19
アジェンダ 1. Intro 2. Infrastructure 3. Kubernetesとオンプレを⽀える技術 4. AIPF 5. LakeTahoe ©2022 Yahoo Japan Corporation All rights reserved. 20
LakeTahoe 機械学習を簡単に実⾏できるAI Platform Training API APIやCLIを使った機械学習の実⾏が可能 ※1 • 分散学習のためのリソース確保 • システム組み込みのハイパーパラメータ探索 • ランダムサーチ、グリッドサーチ、ベイズ最適化(デフォルト) • 並列での探索も可能 $ acloud auth login $ acloud laketahoe jobs submit training <ジョブID> ¥ --config <ジョブ定義YAMLファイルのパス> $ acloud laketahoe jobs describe <ジョブID> --summarize trainingInput: scaleTier: BASIC_GPU masterConfig: imageUri: ”containerregistry.example.com/aipf/laketahoecustom-tensorflow-gpu:latest" args: - "--module-name" - "trainer.task" - "--packages" "hdfs://path/to/packages/tf_probability _mnist-1.0.tar.gz" - "--data-path" - "hdfs://path/to/data/mnist.npz" - "--num-epochs" - "10" - "--num-monte-carlo" - "50" - "--fake-data" - "False” hyperparameters: ※1 Notebookの起動もCLI/API/UIから可能 ©2022 Yahoo Japan Corporation All rights reserved. 21
LakeTahoe アーキテクチャ • CRDを⽤いる代わりに外部のデータベースに状態を保存 • マルチテナントなKubernetesでCRDを登録したくなかった DB 読み書き ユーザー HTTP リクエスト LakeTahoe 読み書き API コントローラー 読み書き HDFSなどの ストレージ • controller-runtimeを利⽤ 読み書き 学習Pod K8s API 作成 ©2022 Yahoo Japan Corporation All rights reserved. 操作 ACP
最後に(というかお決まりのやつ) ©2022 Yahoo Japan Corporation All rights reserved. 23
We are hiring!! オンラインカジュアル⾯談歓迎 データプラットフォームエンジニア(AIプラットフォーム/データ基盤/DBA) ・AI/機械学習によって世界を良くしたい⼈ ・技術/サイエンス⼒を活かしてML基盤を作りたい⼈ ・ユーザ視点に⽴って、システムの設計/開発ができる⼈ TensorFlow PyTorch • Argo Workflows • • Argo CD • MLflow インフラ • • Kubernetes NW高速化 • • LakeTahoe CuttySark Dronach GPU VM ©2022 Yahoo Japan Corporation All rights reserved. 視 点 PF ミドルウェア • • • LakeTahoe Notebooks ML アプリケーション • • 視 点 24
カジュアル⾯談の応募⽅法と過去の資料 • カジュアル⾯談希望の連絡お待ちしています • 北嶋: nkitajim (YamaReco) • ⿊松: @kuromt_ (Twi7er) • 資料 • ヤフーのAIプラットフォーム紹介 〜 AI開発をより⼿軽に • MLOpsを⽀えるヤフー独⾃のモデルモニタリングサービス • AI Pla-orm with Kubernetes and GPU in Private Cloud #GTC21 • Yahoo!Japan AIPla-ormとWorkflow管理 ©2022 Yahoo Japan Corporation All rights reserved. 25
©2022 Yahoo Japan Corporation All rights reserved.
Appendix ©2022 Yahoo Japan Corporation All rights reserved. 27
K8S network latency Horovod synthe\c benchmarch (Resnet50) 2node x 4gpu(V100) img/sec per GPU 350 300 250 200 20%程度の劣化 150 100 50 0 batch-size=64 centos device=host batch-size=256 centos vxlan mtu=1500 centos vxlan mtu=9000 ubuntu vxlan mtu=9000 batch-sizeが⼩さい場合、vxlanなどの影響が⼤きく出ている vDPAなどでopenstack側からdeviceを追加しないとうまくいかない ©2022 Yahoo Japan Corporation All rights reserved. 28
AMD vs Intel numpy thread python numpyの場合、amd/intelともに速度変わらず(amdの⽅が若⼲早い) condaなどでpureなmklを使う場合、古いバージョンの場合は、MKL_DEBUG_CPU_TYPE=5をつけないと遅くなる condaなどでpureなmklを使う場合は、最新版に変更を⾏うか、MKL_DEBUG_CPU_TYPE=5を設定して対応が必要 ©2022 Yahoo Japan Corporation All rights reserved. 29
NVIDIA Driver • 更新頻度 • Tensorflow,pytorchのサポートで必要になったらあげている(⼤体半年に⼀度) • ドライバに関するトラブル • 特になし • テスト • 過去のcudaも含め、 hbps://github.com/NVIDIA/cuda-samples の動作が変わっていないことを確認 ©2022 Yahoo Japan Corporation All rights reserved. 30
Container Image管理 •tag Tag固定 (stableなど) バージョン ごとに Tag固定 (v1.0など) プラット フォーム ユーザ 事故の起こりにくさ ○ ○ × × × ○ プラット フォーム ユーザ 管理のしやすさ メリット/デメリット • Jupyterなど実験を⾏なってもらう際は常に最新を使って欲しい場合 • • 定常バッチなどでバージョンを固定したい場合 バージョンごとにセキュリティアップデートなどがあり 管理は多少めんどくさい ユーザもバージョンを変えるたびにテストが必要 ※ここでMLOPSが結局重要になる • • •Fat/Small メリット/デメリット • • 依存/インストール順序などを考慮しながら最新版にしていく必要が ある ユーザはとりあえず起動すれば全てのスクリプトが利⽤できる みんなが使えばcacheにのるのでサイズよりも共通化を意識 • • • 最新版を取り込む作業が簡単 ユーザは環境ごとに切り替えが必要 Imageが軽くなる • Fat × ○ × Small ○ × ○ ©2022 Yahoo Japan Corporation All rights reserved. 31
ユーザコミュニケーション • ユーザコミュニケーション • 機能追加などはSlackで周知 • ⼀⽇数件あがるので結構ユーザは⼤変と思う。。 • 周知とは別にまとめを作って欲しいと⾔われている • 基本的に↑と同じSlackで分からないことがあれば聞いてもらう • 情報はちょっとごちゃっとするが、他の⼈への周知や、ユーザ同⼠のフォローも⾏われる • 初めはK8S難しいなどの質問もあったが、現在はナレッジシェアとかも多くなっている(ユーザと⼀緒に成⻑したい) • ユーザコミュニティフォーラム • ユーザが試したことや、共有したいことをシェア ©2022 Yahoo Japan Corporation All rights reserved. 32
研究者のトイルを少なくするための取り組みがあるか • 実験環境 • LakeTahoe Notebooksで簡単に実験は⾏えるようになってきている • 今起きている問題 • 初期構築が⾯倒 • アップデートが⼤変 • リソースの無駄が多い • モデル開発から本番デプロイまでに連携が必要 K8S層を隠蔽したアプリケーションを提供が必要 Pipelineを簡単に作れるInterfaceが必要 ©2022 Yahoo Japan Corporation All rights reserved. 33
Kubernetes 事故 • Masterのラックが落ちて死亡(あるある) • ラック分散 • ArgoWorkflow,JobなどでCompleteJobが作られまくってETCD死亡 • Pod数に上限/CompleteJobを消すDefault設定(今は全体で10000podくらいが限界) • Priority/PodDisrupAonBudget/topologySpreadConstraints設定し忘れ(あるある) • 設定しましょう。。w • DockerRegistryのTLS期限切れ • CertManger+ACME (HTTP01チャレンジ)の導⼊予定 • 最新のImageにしたら動かない • テストをひたすら追加/RunGmeバージョンを指定 • NUM_THREADSなどの設定がなくCPU使いまくり or 遅い • Deploy templateの共通化 ©2022 Yahoo Japan Corporation All rights reserved. 34
©2022 Yahoo Japan Corporation All rights reserved.