Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ビッグデータ分析システムにおける 分散分析基盤のリソース割当最適化
Search
Rina Ueno
June 22, 2023
Technology
0
58
ビッグデータ分析システムにおける 分散分析基盤のリソース割当最適化
2023/6/2-3 会津大学にて開催されたサービスコンピューティング研究会に登壇しました。そのときに発表資料です。
現在Rayの利活用について調査しています。
その時の研究アイデアです。
Rina Ueno
June 22, 2023
Tweet
Share
More Decks by Rina Ueno
See All by Rina Ueno
Open Policy Agentを用いたAPI Gatewayの認可制御 / Authorization in API Gateway using Open Policy Agent
enori
3
520
Other Decks in Technology
See All in Technology
Lambda10周年!Lambdaは何をもたらしたか
smt7174
2
110
B2B SaaSから見た最近のC#/.NETの進化
sansantech
PRO
0
890
『Firebase Dynamic Links終了に備える』 FlutterアプリでのAdjust導入とDeeplink最適化
techiro
0
130
OCI Security サービス 概要
oracle4engineer
PRO
0
6.5k
RubyのWebアプリケーションを50倍速くする方法 / How to Make a Ruby Web Application 50 Times Faster
hogelog
3
950
SRE×AIOpsを始めよう!GuardDutyによるお手軽脅威検出
amixedcolor
0
170
AWS Lambdaと歩んだ“サーバーレス”と今後 #lambda_10years
yoshidashingo
1
180
リンクアンドモチベーション ソフトウェアエンジニア向け紹介資料 / Introduction to Link and Motivation for Software Engineers
lmi
4
300k
Amplify Gen2 Deep Dive / バックエンドの型をいかにしてフロントエンドへ伝えるか #TSKaigi #TSKaigiKansai #AWSAmplifyJP
tacck
PRO
0
390
Flutterによる 効率的なAndroid・iOS・Webアプリケーション開発の事例
recruitengineers
PRO
0
120
個人でもIAM Identity Centerを使おう!(アクセス管理編)
ryder472
4
230
ドメインの本質を掴む / Get the essence of the domain
sinsoku
2
160
Featured
See All Featured
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
506
140k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
A better future with KSS
kneath
238
17k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
329
21k
Optimising Largest Contentful Paint
csswizardry
33
2.9k
Documentation Writing (for coders)
carmenintech
65
4.4k
Building a Scalable Design System with Sketch
lauravandoore
459
33k
10 Git Anti Patterns You Should be Aware of
lemiorhan
655
59k
Building an army of robots
kneath
302
43k
A designer walks into a library…
pauljervisheath
204
24k
Docker and Python
trallard
40
3.1k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Transcript
© Hitachi, Ltd. FY2023. All rights reserved. ビッグデータ分析システムにおける 分散分析基盤のリソース割当最適化 2023/6/2-3
サービスコンピューティング研究会 ㈱日立製作所 研究開発グループ 〇上野 里奈、藪崎 仁史
© Hitachi, Ltd. FY2023. All rights reserved. クラウド上での分散分析の課題 ▪ ビッグデータ処理は処理コストが高く「実行時間が長い」
▪ 処理を高速化するため、分散分析基盤で処理を並列化 ◇ Hadoop, Spark, Ray 1
© Hitachi, Ltd. FY2023. All rights reserved. Ray framework Ray
AI Runtime ▪ MLエンジニア、データサイエンティスト、研究者向け ▪ MLアプリケーションのためのスケーラブルで統一的なツールキット ▪ オープンソース、Python、ドメイン固有のライブラリセットで提供 Ray Core ▪ MLエンジニア、Python開発者向け ▪ オープンソースで、Pythonで、汎用的な、分散コンピューティングのライブラリ ▪ PythonアプリケーションでMLワークロードを拡張する作業を速くできる Ray Cluster ▪ Head NodeとWorker Nodeのセット ▪ クラスタのサイズは固定でも、ジョブが必要とするリソースサイズにオートスケールす ることもできる ▪ ローカルマシン、Kubernetes Pod、AWSやGCPのインスタンスなどでも構成可能 2 head worker worker Scale out/in … Ray Cluster
© Hitachi, Ltd. FY2023. All rights reserved. クラウド上での分散分析の課題 ▪ ビッグデータ処理は処理コストが高く「実行時間が長い」
▪ 処理を高速化するため、分散分析基盤で処理を並列化 ◇ Hadoop, Spark, Ray ▪ クラウド上でビッグデータを分散処理すると利用コストが高くなる ▪ 実行時間の最小化をしつつ、リソースの利用コストを抑えることが重要 3
© Hitachi, Ltd. FY2023. All rights reserved. 分散分析基盤のスケジューリングの色々 ▪ ベストエフォート方式
◇ リクエスト順にでデプロイ済みのリソースのうち使用可能なものを割り当てる ◇ 使用可能なリソースがなく待機時間が長くなる場合は、分散分析基盤のリソースポリシーの 範囲内でリソースをスケールする ▪ スケジュール方式 ◇ リソースの事前予約と実行完了期限の設定によって、優先的にリソースを割り当てる ▪ 優先度方式 ◇ ジョブに優先度を付与し、優先度の高い順にリソースを割り当てる ◇ 使用可能なリソースがない場合は、低優先度のジョブを一時停止して使用可能なリソースを つくって譲る 4
© Hitachi, Ltd. FY2023. All rights reserved. リソース使用量と実行時間のバランスの最適化 ワークロードごとにリソース割当量と実行時間との関係を表すパラメータを定義 ◇
リソースの使用効率が高く、実行時間が短くなるリソース量を推定 5 ピーク使用量かつ顕著な性能低下がない点 リソース量 ジョブ実行時間 (s) リソース量とジョブ実行時間は指数関数的に減少する リソース割当量とジョブ実行時間はトレードオフの関係
© Hitachi, Ltd. FY2023. All rights reserved. 課題 ▪ データの分散に伴う転送遅延などのオーバーヘッドがある
オーバーヘッドは分析対象のデータの量に依存する ▪ 既存手法は、与えるジョブは単一、分析対象のデータの量は一定、を前提としてる。 リソース割当量は、デフォルト値や事前定義した値通り。 ▪ 分析対象のデータ量が可変なアプリケーションへは適用できない ▪ 何回もいろんな処理に対して分散分析基盤を用いたいアプリケーションへの適用ができない ◇ 処理の中でデータ量が変わっていくから ▪ オーバーヘッド、分析対象データの量を考慮して、リソース使用量の最小化と実行時間の最小化 の両立 6
© Hitachi, Ltd. FY2023. All rights reserved. 1. 2. 分散分析基盤のリソース割当最適化の提案の概要
1. ワークロードごとにリソース割当量と実行時間とデータ量の関係を表すパラメーターを定義 2. アプリケーション内のタスクを認識・識別、 各タスクの最適なリソース量を瞬時に決定・スケーリングする方法 7 データ量 実行時間 リソース割当量 タスクの 処理内容 データ量 最適な リソース量 ? import math def dsin(x): return math.sin(math.radians(x)) def dcos(x): return math.cos(math.radians(x)) def dtan(x): return math.tan(math.radians(x)) print("sin60°: {}".format(dsin(60))) print("cos60°: {}".format(dcos(60))) print("tan60°: {}".format(dtan(60))) TaskX 最適なリソース量 TaskX アプリケーション実行
© Hitachi, Ltd. FY2023. All rights reserved. ソースコードの記述 リソース最適化を適用する関数には、 「リソース最適化適用の関数アノテーション」を
付与 リソース最適化処理をする際に必要な機能の ライブラリを取り込む 1 import ray 2 import ray[resource_optimizer] 3 4 5 def func1(): 6 print(‘func1’) 7 with … 8 9 @ray.remote() 10 def func2(): 11 print(‘func2’) 12 with … 13 14 @ray.remote(optimize_resource=True) 15 def func3(): 16 print(‘func3’) 17 with … 18 19 @ray.remote(optimize_resource=True) 20 def func4(): 21 print(‘func4’) 22 with … 23 … 最適リソース推定 ライブラリの読込 分散分析基盤の リソース最適化を 適用するタスクT1 分散分析基盤の リソース最適化を 適用するタスクT2 リソース最適化適用の 関数アノテーション 8
© Hitachi, Ltd. FY2023. All rights reserved. リソース量予測モデルの生成 import ray
import ray[resource_optimizer] @ray.remote (optimize_resource=True) def func1(): print(‘hello world’) … モデルの生成 対象タスクの抽出 対象タスクの実行 分析の サンプル データ モデル生成コンテナ 分散分析基盤 トレーシング 情報 保存 学習データ リソース量予測モデル アプリケーションコード 実行命令/結果 読込 保存 読込 9 実行時間に対する割当リソースデータ量の相関 実行時間T ・・・ タスクごとに 存在する タスクごとに 存在する ソースコードからリソース最適化の対象となるタスクを発見して タスクを実際に実行することで 「リソース量」「データ量」「実行時間」で1セットの 学習データをたくさん収集する 表上の点はリソースの使用効率がX%となる点
© Hitachi, Ltd. FY2023. All rights reserved. 最適リソース量の逐次推定 実行命令/ 結果
アプリケーション リソース最適化コンテナ 分析データ 処理をホールド 処理のホールド解除 分散処理 処理の開始・継続 リソース 動的最適化処理 対象タスクの検出 データの受取 モデルの選出/ データ量の計量 リソースの最適量の決定 リソースのスケールの要求 スケール完了 分散分析基盤 スケール確認 命令 処理の完了 分析データ リソース最適化ライブラリ 10 関数名からモデルを選出 モデルに利用可能なリソース量/入力データ量を与えて、 リソース量を決定
© Hitachi, Ltd. FY2023. All rights reserved. まとめ • クラウド上でビッグデータの分散処理をする際、
実行時間の最小化をしつつ、リソースの利用コストを抑えることが重要 • 課題:リソースを効率的に使える範囲で処理時間を可能な限り短くするリソース量を推定 • 分散フレームワークRayをご紹介 • AIやPythonアプリを高速・シンプルに分散並列化するための計算レイヤーを提供 • 複数ノードでクラスタを構成 • アプリケーションコードへの関数アノテーションとライブラリを付与 データ量・リソース量・実行時間からリソース量予測モデルを生成 アプリ実行中にタスクを検出・識別し、データ量とモデルから最適なリソース量を決定しスケール • アプリケーション実行時間の短縮、リソースの動的割当、リソースの利用効率の向上が可能 11
© Hitachi, Ltd. FY2023. All rights reserved. 商標 • Python、Pythonのロゴは、米国Python
Software Foundationの登録商標です。 • Apache Hadoop、Hadoop、Apache、Apache、Apache Featherのロゴ、Apache Hadoop プロジェクトのロゴは、米国およびその他の国におけるApache Software Foundationの登録商 標または商標です。 12