Upgrade to Pro — share decks privately, control downloads, hide ads and more …

S3のライフサイクルをAmazon Braketで最新化してみる

S3のライフサイクルをAmazon Braketで最新化してみる

Avatar for Shuya Sawa

Shuya Sawa

June 05, 2024
Tweet

More Decks by Shuya Sawa

Other Decks in Technology

Transcript

  1. 適切なS3クラスの検討例 3 アクセス頻度が 予測できる? 分析可能な 既存データがある? S3 Intelligent-Tiering の適用 S3

    ストレージクラス分析 + ライフサイクルルール設定 ????? 適切なライフサイクルルールを適用することで、S3のコストを最適化することができる。 一方で新規構築データに対する適切なS3クラスを設定することに難しさは残る。 No Yes No Yes
  2. 適切なS3クラスの検討例 4 アクセス頻度が 予測できる? 分析可能な 既存データがある? S3 Intelligent-Tiering の適用 S3

    ストレージクラス分析 + ライフサイクルルール設定 ????? 適切なライフサイクルルールを適用することで、S3のコストを最適化することができる。 一方で新規構築データに対する適切なS3クラスを設定することに難しさは残る。 No Yes No Yes とりあえずS3 Intelligent-Tieringでいいのでは…?
  3. 適切なS3クラスの検討例 5 アクセス頻度が 予測できる? 分析可能な 既存データがある? S3 Intelligent-Tiering の適用 S3

    ストレージクラス分析 + ライフサイクルルール設定 ????? 適切なライフサイクルルールを適用することで、S3のコストを最適化することができる。 一方で新規構築データに対する適切なS3クラスを設定することに難しさは残る。 No Yes No Yes 前回のStorage JAWS#3 のおさらい Storage-JAWS運営 藤原さん Amazon GuardDutyを有効化していると、 脅威検出のためのアクセスが継続的に行われるため、 Intelligent-Tiringは階層の移動が不要と判断し てしまい、高頻度アクセス階層からオブジェクトの移動 ができないことがあった…
  4. 適切なS3クラスの検討例 6 アクセス頻度が 予測できる? 分析可能な 既存データがある? S3 Intelligent-Tiering の適用 S3

    ストレージクラス分析 + ライフサイクルルール設定 ????? 適切なライフサイクルルールを適用することで、S3のコストを最適化することができる。 一方で新規構築データに対する適切なS3クラスを設定することに難しさは残る。 No Yes No Yes 本日のテーマ 事前にシミュレーションして ライフサイクルルールを検討 する
  5. やりたいことの具体化 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ずつ分ければ イイの…?
  6. 【参考】 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 同じリージョンからのアクセスを想定しているためデータ転送量は考慮対象外 保管コストとリクエストコストはトレードオフの関係性がある
  7. 組み合わせ最適化問題として考える 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
  8. 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を再現可能 容量を設定 保管コスト + リクエストコスト
  9. 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 ストレージクラスを設定
  10. 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
  11. 量子近似最適化アルゴリズム(QAOA) QAOA (Quantum Approximation Optimization Algorithm) とは 量子ゲート方式で組み合わせ最適化を行うためのアルゴリズム 17 Step

    1 : QUBO(Quadratic Unconstrained Binary Optimization)形式で定式化 • ハミルトニアン (𝐻) = 価値 (最小化/最大化対象) + 制約 Step 2 : QAOAアルゴリズムで量子計算を行う • Qiskit (量子コンピュータ用フレームワーク)を使用して実行 ハミルトニアンが最小値 = 最適解 となるように定式化
  12. 組み合わせ最適化問題として考える 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 再掲
  13. 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
  14. 定式化 – コストの計算方法 保管コスト 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リクエストコスト
  15. 定式化 – 評価関数 21 𝐻を最小化する𝑥𝑖 の組み合わせを求める 𝐻 = 𝑆𝑡𝑜𝑟𝑒𝑑𝐶𝑜𝑠𝑡 +

    𝑅𝑒𝑞𝑢𝑒𝑠𝑡𝐶𝑜𝑠𝑡 + 𝑘・𝑅𝑒𝑠𝑡𝑟𝑖𝑐𝑡𝑖𝑜𝑛 コストの和 = 最小化対象 制約 係数𝑘は制約の強さに合わせて値を調整 プログラム開発環境 マネージド Jupyter Notebook 言語 python 主要ライブラリ Qiskit (量子コンピュータ用フレームワーク) Pyqubo (QUBO形式定式化ツール) 実行デバイス SV1 (ゲート方式のマネージドシミュレータ) 実行環境
  16. 実行結果 – まとめ 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 各リクエスト数に対して以下の量子計算上の最適解が得られた
  17. 実行結果 – ソルバーとの比較 一般的なソルバーでも試してみたところ、ソルバーの方が良い解を導きました。。。 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
  18. 実行結果 – 原因分析 24 原因点 ⚫ 量子コンピュータは確率論のため、値の振れ幅が小さいと最適を見誤る可能性がある • → コストに基づいていたため数値が非常に小さかった

    ⚫ 試行回数が少なかった/計算量が十分でなかった • → 問題の規模に対して計算量が少なく、最適解(確度の高い解)にたどり着く前に終了してしまった ⚫ 純粋な量子コンピュータへの理解が不足でチューニングができていない • → 現在鋭意勉強中です….今回は動かすことをメインに考えていたので理論を抑える必要がありそうです