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
S3のライフサイクルをAmazon Braketで最新化してみる
Search
Shuya Sawa
June 05, 2024
Technology
0
6
S3のライフサイクルをAmazon Braketで最新化してみる
2024/6/5 Storage-JAWS #4
https://storage-jaws.connpass.com/event/319243/
Shuya Sawa
June 05, 2024
Tweet
Share
More Decks by Shuya Sawa
See All by Shuya Sawa
Q Developerの最新動向
shuyasawa
3
500
Apache Icebergの解説とAWSでの運用
shuyasawa
0
14
S3 Metadataの仕組みと活用方法
shuyasawa
0
5
Other Decks in Technology
See All in Technology
PagerDuty×ポストモーテムで築く障害対応文化/Building a culture of incident response with PagerDuty and postmortems
aeonpeople
3
560
社会人力と研究力ー博士号をキャリアの武器にするー
kentaro
2
110
製造業向けIoTソリューション提案資料.pdf
haruki_uiru
0
200
10ヶ月かけてstyled-components v4からv5にアップデートした話
uhyo
5
460
白金鉱業Meetup_Vol.18_生成AIはデータサイエンティストを代替するのか?
brainpadpr
4
240
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
7
63k
AndroidアプリエンジニアもMCPを触ろう
kgmyshin
2
610
MCPが変えるAIとの協働
knishioka
1
140
30代からでも遅くない! 内製開発の世界に飛び込み、最前線で戦うLLMアプリ開発エンジニアになろう
minorun365
PRO
16
5.1k
Part1 GitHubってなんだろう?その2
tomokusaba
1
520
Dataverseの検索列について
miyakemito
1
180
250510 StepFunctionのテスト自動化始めました vol.1
east_takumi
1
150
Featured
See All Featured
It's Worth the Effort
3n
184
28k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
700
Why You Should Never Use an ORM
jnunemaker
PRO
56
9.3k
RailsConf 2023
tenderlove
30
1.1k
Rails Girls Zürich Keynote
gr2m
94
13k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
13
840
The Straight Up "How To Draw Better" Workshop
denniskardys
233
140k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.4k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Being A Developer After 40
akosma
91
590k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Making the Leap to Tech Lead
cromwellryan
133
9.3k
Transcript
S3のライフサイクルを Amazon Braketで最適化してみる 2024/6/5 Storage JAWS #4 IBM Japan /
Shuya Sawa
適切なS3クラスの検討例 3 アクセス頻度が 予測できる? 分析可能な 既存データがある? S3 Intelligent-Tiering の適用 S3
ストレージクラス分析 + ライフサイクルルール設定 ????? 適切なライフサイクルルールを適用することで、S3のコストを最適化することができる。 一方で新規構築データに対する適切なS3クラスを設定することに難しさは残る。 No Yes No Yes
適切なS3クラスの検討例 4 アクセス頻度が 予測できる? 分析可能な 既存データがある? S3 Intelligent-Tiering の適用 S3
ストレージクラス分析 + ライフサイクルルール設定 ????? 適切なライフサイクルルールを適用することで、S3のコストを最適化することができる。 一方で新規構築データに対する適切なS3クラスを設定することに難しさは残る。 No Yes No Yes とりあえずS3 Intelligent-Tieringでいいのでは…?
適切なS3クラスの検討例 5 アクセス頻度が 予測できる? 分析可能な 既存データがある? S3 Intelligent-Tiering の適用 S3
ストレージクラス分析 + ライフサイクルルール設定 ????? 適切なライフサイクルルールを適用することで、S3のコストを最適化することができる。 一方で新規構築データに対する適切なS3クラスを設定することに難しさは残る。 No Yes No Yes 前回のStorage JAWS#3 のおさらい Storage-JAWS運営 藤原さん Amazon GuardDutyを有効化していると、 脅威検出のためのアクセスが継続的に行われるため、 Intelligent-Tiringは階層の移動が不要と判断し てしまい、高頻度アクセス階層からオブジェクトの移動 ができないことがあった…
適切なS3クラスの検討例 6 アクセス頻度が 予測できる? 分析可能な 既存データがある? S3 Intelligent-Tiering の適用 S3
ストレージクラス分析 + ライフサイクルルール設定 ????? 適切なライフサイクルルールを適用することで、S3のコストを最適化することができる。 一方で新規構築データに対する適切なS3クラスを設定することに難しさは残る。 No Yes No Yes 本日のテーマ 事前にシミュレーションして ライフサイクルルールを検討 する
7 新しい角度から S3ライフサイクルを 検討したい! 01 最新の技術を 活用してみたい! 02 最適なライフ サイクルルールを
見つけたい! 03 今回の目的
やりたいことの具体化 8 S3 Standard S3 Standard-IA S3 Glacier Instant Retrieval
全体データ量 1000 GB 取りうる ストレージクラス • S3 Standard • S3 Standard-IA • S3 Glacier Instant Retrieval Get Request数/ 月 • 10万~1憶 Put Request数/ 月 • 10万~1000万 ※オブジェクト単位でのアクセスの頻度の差はないものとする Objects 1000 GB GET/PUT Requests from same region どの配分がコストを最小化できるのか? コスト① 保管コスト コスト② リクエストコスト クラス配分の最適化 リクエストを変数として各リクエストに対して どの配分が適切なのかシミュレーションする 何GBずつ分ければ イイの…?
【参考】 S3のコスト 9 S3 Standard S3 Standard IA S3 Glacier
Instant Retrieval 保管コスト [USD / GB] 0.025 0.0138 0.005 GET リクエスト [USD / GETリクエスト数] 0.00000037 0.000001 0.00001 PUT リクエスト [USD / PUTリクエスト数] 0.0000047 0.00001 0.00002 同じリージョンからのアクセスを想定しているためデータ転送量は考慮対象外 保管コストとリクエストコストはトレードオフの関係性がある
組み合わせ最適化問題として考える 組み合わせ最適化とは… 様々な制約下で多くの選択肢の中から、ある指標(価値)を最も良くする変数の値(組合せ)を求めること 10 例) ナップサック問題 価値 7 重さ 10
価値 2 重さ 4 価値 9 重さ 5 価値 4 重さ 1 最大容量 15 どの組み合わせが価値を 最大化できるのか?
組み合わせ最適化問題として考える 11 クラス Standard 容量 100 GB コスト xxx 容量
1000GB S3ストレージクラスの組み合わせを以下のように考える クラス Standard 容量 200 GB コスト xxx クラス Standard 容量 400 GB コスト xxx クラス Standard 容量 800 GB コスト xxx クラス IA 容量 100 GB コスト xxx クラス IA 容量 200 GB コスト xxx クラス IA 容量 400 GB コスト xxx クラス IA 容量 800 GB コスト xxx クラス Glacier 容量 100 GB コスト xxx クラス Glacier 容量 200 GB コスト xxx クラス Glacier 容量 400 GB コスト xxx クラス Glacier 容量 800 GB コスト xxx
S3ストレージクラスの組み合わせを以下のように考える 組み合わせ最適化問題として考える 12 容量 1000GB クラス IA 容量 100 GB
コスト xxx クラス IA 容量 200 GB コスト xxx クラス IA 容量 400 GB コスト xxx クラス IA 容量 800 GB コスト xxx クラス Glacier 容量 100 GB コスト xxx クラス Glacier 容量 200 GB コスト xxx クラス Glacier 容量 400 GB コスト xxx クラス Glacier 容量 800 GB コスト xxx クラス Standard 容量 100 GB コスト xxx クラス Standard 容量 200 GB コスト xxx クラス Standard 容量 400 GB コスト xxx クラス Standard 容量 800 GB コスト xxx これらを組み合わせることで100 ~ 1000を再現可能 容量を設定 保管コスト + リクエストコスト
S3ストレージクラスの組み合わせを以下のように考える 組み合わせ最適化問題として考える 13 容量 1000GB クラス Standard 容量 200 GB
コスト xxx クラス Standard 容量 400 GB コスト xxx クラス Standard 容量 800 GB コスト xxx クラス IA 容量 200 GB コスト xxx クラス IA 容量 400 GB コスト xxx クラス IA 容量 800 GB コスト xxx クラス Glacier 容量 200 GB コスト xxx クラス Glacier 容量 400 GB コスト xxx クラス Glacier 容量 800 GB コスト xxx クラス Standard 容量 100 GB コスト xxx クラス IA 容量 100 GB コスト xxx クラス Glacier 容量 100 GB コスト xxx ストレージクラスを設定
S3ストレージクラスの組み合わせを以下のように考える 組み合わせ最適化問題として考える 14 クラス Standard 容量 100 GB コスト xxx
クラス Standard 容量 400 GB コスト xxx クラス Standard 容量 800 GB コスト xxx クラス IA 容量 200 GB コスト xxx クラス IA 容量 800 GB コスト xxx クラス Glacier 容量 400 GB コスト xxx クラス Glacier 容量 800 GB コスト xxx 容量 1000GB クラス Standard 容量 200 GB コスト xxx クラス IA 容量 100 GB コスト xxx クラス IA 容量 400 GB コスト xxx クラス Glacier 容量 100 GB コスト xxx クラス Glacier 容量 200 GB コスト xxx 例えば … Standard: 200 GB IA: 500 GB Glacier: 300 GB
Amazon Braketとは 15 Amazon Braketとはフルマネージド量子コンピューティングサービス [AWS Webinar]Amazon Braket の使い⽅とクラウド量⼦コンピューティング活⽤事例 https://pages.awscloud.com/rs/112-TZM-766/images/webinar-hpc-20221027.pdf
量子コンピュータの計算方式 16 量子コンピュータとCMOSアニーリング~量子コンピュータの“今”と、半導体技術で大規模最適化計算に挑むCMOSアニーリング~ https://www.hitachi.co.jp/products/it/finance/insights/essay/2109-cmos_01.html 従来のコンピュータのビットを量子ビットで置き換えた量子ゲートウェイ方式を利用
量子近似最適化アルゴリズム(QAOA) QAOA (Quantum Approximation Optimization Algorithm) とは 量子ゲート方式で組み合わせ最適化を行うためのアルゴリズム 17 Step
1 : QUBO(Quadratic Unconstrained Binary Optimization)形式で定式化 • ハミルトニアン (𝐻) = 価値 (最小化/最大化対象) + 制約 Step 2 : QAOAアルゴリズムで量子計算を行う • Qiskit (量子コンピュータ用フレームワーク)を使用して実行 ハミルトニアンが最小値 = 最適解 となるように定式化
組み合わせ最適化問題として考える 18 クラス Standard 容量 100 GB コスト xxx 容量
1000GB S3ストレージクラスの組み合わせを以下のように考える クラス Standard 容量 200 GB コスト xxx クラス Standard 容量 400 GB コスト xxx クラス Standard 容量 800 GB コスト xxx クラス IA 容量 100 GB コスト xxx クラス IA 容量 200 GB コスト xxx クラス IA 容量 400 GB コスト xxx クラス IA 容量 800 GB コスト xxx クラス Glacier 容量 100 GB コスト xxx クラス Glacier 容量 200 GB コスト xxx クラス Glacier 容量 400 GB コスト xxx クラス Glacier 容量 800 GB コスト xxx 再掲
100 GB 200 GB 300 GB 800 GB 𝑥1 𝑥2
𝑥3 𝑥4 𝑥5 𝑥6 𝑥7 𝑥8 𝑥9 𝑥10 𝑥11 𝑥12 定式化 – 変数/制約設定 𝑥𝑖 は0か1の値を取る変数とし、以下のように設定する 19 S3 Standard S3 Standard-IA S3 Glacier Instant Retrieval 0 or 1 ∀𝑖 ∈ ℕ, 1 ≤ 𝑖 ≤ 12 𝑥𝑖 ∈ 0, 1 𝑠𝑖𝑧𝑒𝑖 = 100 (𝑖 𝑚𝑜𝑑 4 = 1) 200 (𝑖 𝑚𝑜𝑑 4 = 2) 400 (𝑖 𝑚𝑜𝑑 4 = 3) 800 (𝑖 𝑚𝑜𝑑 4 = 0) 制約 (Restriction) 𝑖 12 𝑠𝑖𝑧𝑒𝑖 ∙ 𝑥𝑖 = 1000 変数定義 𝑅𝑒𝑠𝑡𝑟𝑖𝑐𝑡𝑖𝑜𝑛 = 1000 − 𝑖 12 𝑠𝑖𝑧𝑒𝑖 ∙ 𝑥𝑖 2 総容量が 1000
定式化 – コストの計算方法 保管コスト 20 リクエストコスト 𝑆𝑡𝑜𝑟𝑒𝑑𝐶𝑜𝑠𝑡 = 𝑖
12 𝑠𝑡𝑜𝑟𝑒𝑑_𝑐𝑜𝑠𝑡𝑖 ∙ 𝑠𝑖𝑧𝑒𝑖 ∙ 𝑥𝑖 𝑅𝑒𝑞𝑢𝑒𝑠𝑡𝐶𝑜𝑠𝑡 = 𝑖 12 𝑠𝑖𝑧𝑒𝑖 1000 𝑇𝑜𝑡𝑎𝑙𝐺𝑒𝑡𝑅𝑒𝑞𝑢𝑒𝑠𝑡𝑠 ∙ 𝑔𝑒𝑡_𝑐𝑜𝑠𝑡𝑖 + 𝑇𝑜𝑡𝑎𝑙𝑃𝑢𝑡𝑅𝑒𝑞𝑢𝑒𝑠𝑡𝑠 ∙ 𝑝𝑢𝑡_𝑐𝑜𝑠𝑡𝑖 ∙ 𝑥𝑖 𝑔𝑒𝑡_𝑐𝑜𝑠𝑡𝑖 = ቐ 0.00000037 1 ≤ 𝑖 ≤ 4 0.000001 5 ≤ 𝑖 ≤ 8 0.00001 9 ≤ 𝑖 ≤ 12 𝑝𝑢𝑡_𝑐𝑜𝑠𝑡𝑖 = ቐ 0.0000047 1 ≤ 𝑖 ≤ 4 0.00001 5 ≤ 𝑖 ≤ 8 0.00002 9 ≤ 𝑖 ≤ 12 𝑠𝑡𝑜𝑟𝑒𝑑_𝑐𝑜𝑠𝑡𝑖 = ቐ 0.025 1 ≤ 𝑖 ≤ 4 0.0138 5 ≤ 𝑖 ≤ 8 0.005 9 ≤ 𝑖 ≤ 12 データサイズ × 保管コスト Getリクエスト数 × Getリクエストコスト Putリクエスト数 × Putリクエストコスト
定式化 – 評価関数 21 𝐻を最小化する𝑥𝑖 の組み合わせを求める 𝐻 = 𝑆𝑡𝑜𝑟𝑒𝑑𝐶𝑜𝑠𝑡 +
𝑅𝑒𝑞𝑢𝑒𝑠𝑡𝐶𝑜𝑠𝑡 + 𝑘・𝑅𝑒𝑠𝑡𝑟𝑖𝑐𝑡𝑖𝑜𝑛 コストの和 = 最小化対象 制約 係数𝑘は制約の強さに合わせて値を調整 プログラム開発環境 マネージド Jupyter Notebook 言語 python 主要ライブラリ Qiskit (量子コンピュータ用フレームワーク) Pyqubo (QUBO形式定式化ツール) 実行デバイス SV1 (ゲート方式のマネージドシミュレータ) 実行環境
実行結果 – まとめ 22 Getリクエスト 10 万 100 万 1000
万 1 億 Putリクエスト 10 万 $8.0 $15.9 $25.8 $72.9 100 万 $25.2 $26.9 $33.5 $66.7 1000 万 $84.6 $90.9 $121.6 $109.0 Standard IA Glaciar 1 0 0 900 1000 200 800 800 200 400 600 400 600 700 300 1000 1000 700 300 800 1 0 0 1 0 0 800 200 各リクエスト数に対して以下の量子計算上の最適解が得られた
実行結果 – ソルバーとの比較 一般的なソルバーでも試してみたところ、ソルバーの方が良い解を導きました。。。 23 Getリクエスト 10 万 100 万
1000 万 1 億 Putリクエスト 10 万 $8.0 $15.8 $24.8 $62.5 100 万 $23.9 $24.8 $33.4 $66.7 1000 万 $72.0 $72.4 $75.7 桁数が大きく解なし 1000 1000 1000 1000 Standard IA Glaciar 1000 1000 1000 1000 1000 1000 1000
実行結果 – 原因分析 24 原因点 ⚫ 量子コンピュータは確率論のため、値の振れ幅が小さいと最適を見誤る可能性がある • → コストに基づいていたため数値が非常に小さかった
⚫ 試行回数が少なかった/計算量が十分でなかった • → 問題の規模に対して計算量が少なく、最適解(確度の高い解)にたどり着く前に終了してしまった ⚫ 純粋な量子コンピュータへの理解が不足でチューニングができていない • → 現在鋭意勉強中です….今回は動かすことをメインに考えていたので理論を抑える必要がありそうです
25 新しい角度から S3ライフサイクルを 検討したい 01 最新の技術を 活用してみたい! 02 最適なライフ サイクルルールを
見つけたい! 03 今回の目的