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
8
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
540
Apache Icebergの解説とAWSでの運用
shuyasawa
1
30
S3 Metadataの仕組みと活用方法
shuyasawa
0
8
Other Decks in Technology
See All in Technology
AWS アーキテクチャ作図入門/aws-architecture-diagram-101
ma2shita
27
9.2k
API の仕様から紐解く「MCP 入門」 ~MCP の「コンテキスト」って何だ?~
cdataj
0
180
ハノーバーメッセ2025座談会.pdf
iotcomjpadmin
0
130
從四件事帶你見識見識 事件驅動架構設計 (EDA)
line_developers_tw
PRO
0
820
25分で解説する「最小権限の原則」を実現するための AWS「ポリシー」大全 / 20250625-aws-summit-aws-policy
opelab
2
300
RubyOnRailsOnDevin+α / DevinMeetupJapan#2
ginkouno
0
850
_第3回__AIxIoTビジネス共創ラボ紹介資料_20250617.pdf
iotcomjpadmin
0
130
TechLION vol.41~MySQLユーザ会のほうから来ました / techlion41_mysql
sakaik
0
120
本部長の代わりに提案書レビュー! KDDI営業が毎日使うAIエージェント「A-BOSS」開発秘話
minorun365
PRO
14
2.1k
DB 醬,嗨!哪泥嘎斯基?
line_developers_tw
PRO
0
950
"SaaS is Dead" は本当か!? 生成AI時代の医療 Vertical SaaS のリアル
kakehashi
PRO
3
260
Copilot Agentを普段使いしてわかった、バックエンド開発で使えるTips
ykagano
1
1.4k
Featured
See All Featured
Building Applications with DynamoDB
mza
95
6.5k
BBQ
matthewcrist
89
9.7k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
281
13k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
20
1.3k
YesSQL, Process and Tooling at Scale
rocio
172
14k
Code Reviewing Like a Champion
maltzj
524
40k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.3k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
16
930
Optimizing for Happiness
mojombo
379
70k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Speed Design
sergeychernyshev
31
1k
Automating Front-end Workflow
addyosmani
1370
200k
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 今回の目的