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
12
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
570
Apache Icebergの解説とAWSでの運用
shuyasawa
1
46
S3 Metadataの仕組みと活用方法
shuyasawa
0
11
Other Decks in Technology
See All in Technology
Perlアプリケーションで トレースを実装するまでの 工夫と苦労話
masayoshi
1
410
ホリスティックテスティングの右側も大切にする 〜2つの[はか]る〜 / Holistic Testing: Right Side Matters
nihonbuson
PRO
0
580
データ基盤の管理者からGoogle Cloud全体の管理者になっていた話
zozotech
PRO
0
340
Amazon Q Developerを活用したアーキテクチャのリファクタリング
k1nakayama
2
190
生成AI導入の効果を最大化する データ活用戦略
ham0215
0
110
AI人生苦節10年で会得したAIがやること_人間がやること.pdf
shibuiwilliam
1
270
AIに目を奪われすぎて、周りの困っている人間が見えなくなっていませんか?
cap120
1
430
Mambaで物体検出 完全に理解した
shirarei24
2
210
AIのグローバルトレンド 2025 / ai global trend 2025
kyonmm
PRO
1
120
o11yツールを乗り換えた話
tak0x00
1
230
大規模イベントに向けた ABEMA アーキテクチャの遍歴 ~ Platform Strategy 詳細解説 ~
nagapad
0
190
OPENLOGI Company Profile for engineer
hr01
1
37k
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
6k
Git: the NoSQL Database
bkeepers
PRO
431
65k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
332
22k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
182
54k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
139
34k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Unsuck your backbone
ammeep
671
58k
KATA
mclloyd
31
14k
The Language of Interfaces
destraynor
158
25k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
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 今回の目的