Wukong: A Scalable and Locality-Enhanced Framework for Serverless Parallel Computing

SoCC '20(2020) · 論文 · carver2020wukong

📅 この論文を見た日

初回 2026-06-10 / 最終 2026-06-10 / 計 1 回更新

AI解説

情報源:arXiv 全文(ar5iv HTML 版 arxiv.org/abs/2010.07268)を WebFetch で精読(手法・数式・結果・図の構成を確認)。 原論文の図は本ノートに転載していない(arXiv HTML 画像が取得できなかったため)。核心はAI生成SVGで補足し、図番号は本文の対応箇所で言及する。

一言で

DAG 並列ジョブをサーバレス(AWS Lambda)で実行する際、集中スケジューラのボトルネックと stateless 実行による過剰なデータ移動を、「スケジューラの仕事を多数の Lambda Executor に分散する」ことで解消するフレームワーク Wukong の提案。各 Executor が DAG の自分の経路を自律的に進め、fan-out で新しい Lambda を起動し、fan-in を KVS カウンタで調停する。Dask の DAG をそのまま使え、TSQR で numpywren 比 最大 68.17×高速、SVD1 で numpywren 比 92.96% 安価などを達成。

背景・問題

サーバレス(Lambda 等)は弾力的オートスケールと細粒度従量課金が魅力で、データ分析・ML・最適化のようなバースト並列ワークロードに向く。しかし従来の並列フレームワーク(MapReduce・Spark・Dask)は中央スケジューラ前提で、サーバレスの制約と相性が悪い。本研究が指す問題は 2 つ。

課題(やること):DAG ジョブを Lambda 上で、スケジューリングを並列化し、データ局所性を活かして安く速く実行するフレームワークを設計・実装する。著者はこれを Wukong として作る(約12,000行のPython:Executor Runtime 5,349/Storage Manager 3,057/Static Scheduler 3,577)。

提案手法:Wukong

中核の洞察は「中央スケジューラの仕事(完了追跡・ready タスクの特定と投入)を多数の Lambda Executor に分割すれば、タスクを並列にスケジュールでき、競合が減り、スケジューリングを局所性考慮にできる」こと。

集中型 vs 分散スケジューリング

補足図(AI生成):(a) 集中スケジューラはスケールするとボトルネック化し、stateless 実行で I/O が爆発する(Fig.1–4 に対応)。(b) Wukong は葉ノードごとの静的スケジュールを Executor が自律実行し、fan-out で新 Lambda を起動、fan-in を KVS カウンタで調停する(Fig.5–6 に対応)。

静的スケジューリング(Static Scheduling)

ユーザの Python ジョブを Dask が DAG に変換する。n 個の葉ノードを持つ DAG に対し、葉ノードごとに n 個の静的スケジュールを生成する(各葉から DFS で到達するタスク群+エッジを束ねたもの)。各静的スケジュールは、タスクコードと入力データの KVS キー、そして task execution / fan-in / fan-out の3種の操作からなる(Fig.6)。

タスク実行と動的スケジューリング(Dynamic Scheduling)

局所性最適化:Task Clustering と Delayed I/O

ストレージ層とプログラミングモデル

ストレージは AWS Fargate 上の複数 Redis インスタンスで構成(高帯域=大オブジェクト、高 IOPS=小オブジェクトの双方に対応。S3 は IOPS が絞られるため不採用)。プログラミングは Dask のインタフェースをそのまま再利用するので、Dask 互換コードは Wukong 上で動く。耐障害性は Lambda の自動リトライ(最大2回)に依存し、より良い耐障害性は将来課題としている。

主なパラメータ:Lambda 3GB/最長7分、Task Clustering しきい値 t=200MB、Storage は Fargate 75ノード(各30GB・4 vCPU)、Static Scheduler は r5n.16xlarge。

評価

ベンチマークは Tree Reduction (TR)・SVD・SVC・GEMM・TSQR。比較対象は numpywren(S3 版/単一 Redis 版)・PyWren・Dask(1,000 worker 構成と 125 worker 構成)。指標は end-to-end 時間(10回平均)・ネットワーク I/O・CPU 時間・金額コスト。

関連研究との関係(本リポジトリ内)

Wukong は本リポジトリでは「サーバレス並列実行」という周辺文脈の参照。著者陣(Carver, Cheng ら)は後の NotebookOS(GPU を実行中セルだけに束縛する設計)にも連なり、「実行中だけ資源を握り、状態/データをストアに逃がす」発想が共通する。状態を外部 KVS に置いて関数実行を軽くする方向は Cloudburst(stateful FaaS)と対になる(Wukong は DAG 並列のスケジューリング、Cloudburst は状態共有・一貫性が主眼)。

将来課題:Lambda の2回リトライ依存を超える耐障害性、設定ノブ(パーティションサイズ・Fargateノード数)の感度分析、AWS 以外(OpenWhisk・Azure・GCP)への移植。

Q&A

自分のコメント