6K Views
August 29, 22
スライド概要
「オンプレML基盤 on Kubernetes #2 パネルディスカッション #ml_kubernetes」
オンプレミスで大規模なKubernetesクラスタを運用しているヤフーとPFNの合同イベントの二回目のパネルディスカッションでヤフーが発表した資料です。
ヤフーのMLOpsを支えるプラットフォームの裏側を紹介します。
https://ml-kubernetes.connpass.com/event/255797/
2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp
オンプレML基盤 on Kubernetes #2 パネルディスカッション Copyright ©2022 (C)Yahoo 2020 Japan Yahoo Corporation Japan Corporation. All rights Allreserved. Rights Reserved.
GPUスケジューリングや断⽚化にどんな対策をしている︖ ©2022 Yahoo Japan Corporation All rights reserved. 2
Kubernetesスケジューラ •1GPUのアドホックワークロードが複数ノードに分散する •3/4空きGPUのノードが頻出 •全GPUを使いたいバッチワークロードのアロケーションの 妨げになる •→GPUワークロードのみbin-packing •kube-schedulerを標準Scheduler Pluginでチューニング •NodeResourcesFitをLeastAllocatedからGPUのMostAllocatedへ •CPUワークロードをNodeResourcesBalancedAlloca=onで分散 •GPUノードとCPUノードはtaintで分離 ©2022 Yahoo Japan Corporation All rights reserved. 3
Kubernetesスケジューラ •WIP: 分散学習に向けた本格的なスケジューラ改善 •ギャングスケジューリング・階層型キュー対応 •Volcano, Apache YuniKorn •RDMA⽤CLOS NW整備/CNI対応 •Multus, NUMA/RDMA-aware Topology Mapping •トラフィックのスコアリングへの反映 •Telemetry-aware Scheduling etc… ©2022 Yahoo Japan Corporation All rights reserved. 4
どんなKubernetesコントローラ/Operatorを開発している︖ ©2022 Yahoo Japan Corporation All rights reserved. 5
LakeTahoe/LakeTahoe Notebooks •機械学習ジョブの実⾏やJupyterLabインスタンスの作成を⾏うためのREST API •CLIツールやWebアプリからも操作可能 $ acloud auth login $ acloud laketahoe jobs submit training <ジョブID> --config <ジョブ定義ファイルのパス> $ acloud laketahoe jobs describe <ジョブID> --summarize ©2022 Yahoo Japan Corporation All rights reserved. 6
LakeTahoeのコントローラー DB • CRDを⽤いる代わりに外部のデータベースに状態を保存 • controller-runtimeのsource.Sourceを実装して コントローラー(Reconciler)の⼊⼒とする 読み書き LakeTahoe 読み書き API コントローラー HTTP リクエスト 操作 JupyterLab 学習ジョブ K8s API ユーザー 作成 ©2022 Yahoo Japan Corporation All rights reserved. ACP 7
CuttySark(カティサーク) •推論マネージドサービス •TensorFlowやTritonサーバをWebAPI経由で管理 •監視設定もWebAPI経由で管理 •2つのコントローラーを使って管理している •柔軟に要望に応える •ZCP特有の制限に対応 •権限が全て付与されない 1. Admission Webhooksが使えない 2. 特定namespaceのsecretでlist出来ない ©2022 Yahoo Japan Corporation All rights reserved.
構成図 ユーザー WebAPI Server controller A Inference Server ©2022 Yahoo Japan Corporation All rights reserved. controller B Prometheus 9
モデルモニタリングツールDronach モデルモニタリングに必要な処理を ワークフローとして実⾏する ©2022 Yahoo Japan Corporation All rights reserved. 10
特徴量を指定するとデータのドリフトを検知するWorkflowを⽣成する 対象のデータと実⾏スケジュールを指定してBaseModelリソースを作ると Dronach Controllerがドリフト検定と統計情報収集のワークフローをデプロイ ドリフト検定A Data : hdfs://data/xxx Schedule : * */1 * * * BaseModel をデプロイ ドリフト検定B $ kubectl apply -f basemodel.yml API server BaseModel Resource Dronach Controller ©2022 Yahoo Japan Corporation All rights reserved. 統計情報収集 11
最近あった障害どんなのあった︖ ©2022 Yahoo Japan Corporation All rights reserved. 12
アジェンダ 1. Trouble Pattern 2. Master/ETCD/Ingress 3. Multi tenancy Trouble 4. Node/PVC Trouble ©2022 Yahoo Japan Corporation All rights reserved. 13
オンプレ Trouble Pattern • • 物理レイヤー 障害点 問題 対策 サーバ CPU/MEMORY/DISK/NIC/GPU 1サーバがダウン ダウンしても⼤丈夫なソフトウェア設計 Leafスイッチ 1ラックに収容しているサーバが全て落ちる ラック分散 Mlagなどでスイッチの冗⻑化 ※重要な箇所のみ対応(Hadoopのマスターノードなど) Spineスイッチ 特になし ※4冗⻑されているため1Spineスイッチが落ちても問題なし ※CoreSwitchに集約するパターンの場合トラフィックで 問題になる時期もあったが、CLOSネットワーク化して から帯域の問題は0 DC間ネットワーク 特になかったが、ヒートドームで多重にしているネットワーク が全てダウン(街のネットワーク⾃体が全てダウン)が1度起きた DCの冗⻑化 ※できるが⾦がかかる DC(空調/電源) 特になし ソフトウェアレイヤー 障害点 問題 対策 オペレーションミス 設定不備でのデプロイ テスト環境でのテスト/監視 ダブルチェック(テスト/監視が優先) パフォーマンス/リミッ ト キャパシティ上限を迎え停⽌ 監視 パフォーマンステスト(監視が優先) 分散設計 バグ バグ テスト ※直せばい ©2022 Yahoo Japan Corporation All rights reserved. 14
オンプレ Trouble Pattern • サーバ(検証機/サーバ/VM/Container) • サーバチームでベンチマーク系のソフトでテストしている • 検証機/サーバが納品されてタイミングでそれぞれ実施 パーツ テスト ノート CPU Multi process gzip/zcat time Avx flops DISK dd single / multi process Network Iperf / qperf 最近問題起こるのは⼤抵ここw ※BIOS/Firmware/Driver… GPU Cuda Samples 追加でMlperfなども投げてストレステストをしている どこが問題かを切り分けるためにもまずはテストを⾏い想定通りのパフォーマンスが出ることを確認 ⻑期間利⽤していると、あとで障害はでまずけどねw ©2022 Yahoo Japan Corporation All rights reserved. 15
Master/ETCD/Ingress • 障害 • ラック分散をできておらずETCD死亡 • • 初期段階でラック分散するだけのサーバがなかったw ETCDのキャパオーバー • ETCD_QUOTA_BACKEND_BYTESの設定 • MasterNodeと同居していたがVMを分離(現在は8vcore, 16GB Memory, 60GB Disk) • Master Nodeのメモリ/パフォーマンス不⾜ • Master Nodeのメモリ監視 • NamespaceごとのPod数の制限(12000pods くらいが今の上限) • Argo WorkflowsのTTLの設定(ttlStrategy) • JobのTTLの設定(ttlSecondsAfterFinished) • VMのスケールアウト(現在は12vcore,32GB Memory, 60GB Disk) ©2022 Yahoo Japan Corporation All rights reserved. 16
Multi Tenancy Trouble • 障害 • Quota • pods,limits.cpu,limits.memory,nvidia.com/gpu • requests.storage,persistentvolumeclaims • • Netappには筐体ごとにvolume数の上限があります(解放するライセンス⾃体も⼀応あるらしい) 共有リソースの重複 • Ingress • NameがないIngressがdeployされ即死 • OPAで重複する名前のものはエラーにする ©2022 Yahoo Japan Corporation All rights reserved. 17
Node/PVC Trouble • 障害 • PVCがmountできない • Quobyte • Mountを⾏うQuobyte-clientが半死 • • Netapp-nfs • • 問題なし Netapp-iscsi • Multipathの設定不備によるmountの失敗 • Mountできてもreadできない時があるがiscsiなのため検知ができないケースがある • • Fatal errorがあったら強制restart(最新版ではほぼ起きなくなっているが保険としてまだ⼊れている) Deployment/StatefulでもRestartPolicy:Naverつけたい。。(いい⽅法ないですか︖) Terminated Podsが消えない • • metadata.deletionTimestamp+metadata.deletionGracePeriodSeconds>now なpodを強制削除 Node障害からの⾃動drain+restart • まだやっていません。 ©2022 Yahoo Japan Corporation All rights reserved. 18
どんなチーム構成で取り組んでいるのか教えて︕ ©2022 Yahoo Japan Corporation All rights reserved. 19
チーム体制 •各チームが担当プロダクトのオーナーシップを持ちながら、プラットフォーム全体を意識 して開発に取り組んでいます。 プロダクト AIPF ACP MLflow Argo LakeTahoe CuttySark Dronach チーム PO & Engineer PO & Engineer PO & Engineer PO & Engineer Manager ※1人のエンジニアが複数プロダクト(チーム)に関わることはあります。 ©2022 Yahoo Japan Corporation All rights reserved. PO & Engineer 主務 PO & Engineer 他部署と兼務 (他部署が主務) ※人数は正確ではありません。 20
フルサイクル開発 企画/設計 •各プロダクトごとに少数(1-5⼈) からなるチームを組織します。 •⼯程ごとに担当者を分けずに企画 /設計からサポートまでを1つの チームで担当します。 サポート 開発 Product Development Team 運⽤ テスト デプロイ ©2022 Yahoo Japan Corporation All rights reserved. 21
We are Hiring !! データプラットフォームエンジニア(AIプラットフォーム/データ基盤/DBA) ・機械学習を推進することで⽇本をUPDATEしたい⼈ ・OSS/内製を問わずエンジニアリング/サイエンスを活⽤して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 アプリケーション • • 視 点 22
カジュアル⾯談の応募⽅法と過去の資料 •カジュアル⾯談希望の連絡お待ちしています •北嶋: nkitajim (YamaReco) •⿊松: @kuromt_ (Twi<er) •資料 •オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 •ヤフーの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. 23
©2022 Yahoo Japan Corporation All rights reserved.