この投稿は、VirtuSwap の Dima Zadorozhny と Fuad Babaev の協力によって書かれています。
ヴァーチュスワップ は、ブロックチェーン上の資産の分散交換のための革新的なテクノロジーを開発している新興企業です。 VirtuSwap のテクノロジーは、間に直接のペアがない資産のより効率的な取引を提供します。 直接ペアが存在しないと、コストのかかる間接取引が発生します。これは、目的のスワップを完了するために 50 回以上の取引が必要となり、取引コストが XNUMX 倍または XNUMX 倍になることを意味します。 VirtuSwap のリザーブベースの仮想プール テクノロジーは、すべての取引を直接行うことで問題を解決し、取引コストを最大 XNUMX% 節約します。 続きを読む virtuswap.io.
この投稿では、VirtuSwap が独自のコンテナーの持ち込み機能をどのように使用したかを共有します。 Amazon SageMakerスタジオ 線形最適化問題を解決するために、GPU を多用するシミュレーションをホストする堅牢な環境を構築します。
課題
VirtuSwap Minerva エンジンは、分配に利用可能な流動性の総量によって制約される、取引量、現在の市場流動性、取引資産のボラティリティなどの複数のパラメーターを考慮しながら、異なる流動性プール間で流動性を最適に分配するための推奨事項を作成します。 これらの推奨事項を提供するために、VirtuSwap Minerva は数千の過去の取引ペアを使用して、さまざまな流動性構成による実行をシミュレートし、流動性、プール料金などの最適な配分を見つけます。
初期実装は、pandas データフレームを使用してコーディングされました。 ただし、シミュレーション データが増大するにつれて、実行時間はほぼ XNUMX 倍になり、問題のサイズも増大しました。 その結果、反復速度が低下し、より大きな次元のタスクを実行することはほとんど不可能になりました。 VirtuSwap は、より高速な結果を得るためにシミュレーションに GPU インスタンスを使用する必要があることに気付きました。
VirtuSwap はシミュレーションを実行するために GPU 互換のパンダのようなライブラリを必要としていたので、 CUDF、による GPU DataFrame ライブラリ 早瀬。 cuDF は、データのロード、結合、集約、フィルタリング、その他の操作に使用されます。 パンダCUDA を使用して、パンダよりも大幅に高速なパフォーマンスを実現し、データフレームでの作業を高速化する類似の API。
ソリューションの概要
VirtuSwap は、ノートブックでの反復的でインタラクティブな開発から始める、エンドツーエンドの開発に SageMaker Studio を選択しました。 SageMaker Studio の柔軟性により、彼らはこれをシミュレーションにも使用することに決めました。 アマゾンセージメーカー カスタム画像これにより、VirtuSwap は cuDF などの必要な独自のカスタム ライブラリとソフトウェアを導入できるようになります。 次の図は、ソリューションのワークフローを示しています。
次のセクションでは、SageMaker で Rapids cuDF イメージを構築して使用するための段階的な手順を共有します。
前提条件
このステップバイステップガイドを実行するには、SageMaker へのアクセス許可を持つ AWS アカウントが必要です。 Amazon エラスティック コンテナ レジストリ (アマゾン ECR)、 AWS IDおよびアクセス管理 (IAM)、および AWS コードビルド。 さらに、次のものが必要です。 SageMakerドメイン 準備が整いました。
IAM ロールとポリシーを作成する
SageMaker カスタム ノートブックのビルド プロセスには、以下を使用しました。 AWS クラウドシェル、カスタム イメージを構築するために必要なすべてのパッケージが提供されます。 CloudShell では、 SageMakerDockerビルド、SageMaker Studio 用および SageMaker Studio 内で Docker イメージを構築するための CLI。 CLI は、Amazon ECR にリポジトリを作成し、CodeBuild を使用してコンテナを構築できます。 そのためには、適切な権限を持つ IAM ロールをツールに提供する必要があります。 次の手順を実行します。
- AWS マネジメントコンソールにサインインし、 IAMコンソール.
- 左側のナビゲーションペインで、 Policies.
- という名前のポリシーを作成します。
sm-build-policy
次の権限を持つ:
権限により、ユーティリティを完全に利用する機能が提供されます。リポジトリの作成、CodeBuild ジョブの作成、使用 Amazon シンプル ストレージ サービス (Amazon S3) にログを送信します。 アマゾンクラウドウォッチ.
- という名前のロールを作成します
sm-build-role
次の信頼ポリシーを使用して、ポリシーを追加しますsm-build-policy
以前に作成したもの:
ここで、CloudShell の手順を確認してみましょう。
CloudShell で cuDF Docker イメージを作成する
この目的のためには、Rapids CUDA イメージが必要でした。これには、 ipyカーネル、画像を使用できるようにします。 SageMaker Studio ノートブック.
既存の CUDA イメージを使用します。 RapidsAI それは公式で入手可能です Rapids AI Docker ハブ、および ipykernel
インストール。
CloudShell ターミナルで次のコマンドを実行します。
これにより、SageMaker のカスタム Docker イメージを構築する Dockerfile が作成されます。
イメージをビルドしてリポジトリにプッシュする
前述したように、私たちは SageMaker Docker ビルド ライブラリこれにより、データ サイエンティストや開発者はカスタム コンテナ イメージを簡単に構築できます。 詳細については、以下を参照してください。 Amazon SageMaker Studio Image Build CLIを使用してStudioノートブックからコンテナーイメージをビルドする.
次のコマンドは、ECR リポジトリを作成します (リポジトリが存在しない場合)。 sm-docker がそれを作成し、新しい Docker イメージをビルドして、作成されたリポジトリにプッシュします。
行方不明の場合に備えて sm-docker
CloudShell で次のコードを実行します。
完了すると、ECR イメージ URI が返されます。
SageMaker カスタム イメージを作成する
カスタム Docker イメージを作成し、それをコンテナリポジトリ (Amazon ECR) にプッシュした後、そのカスタム Docker イメージを使用するように SageMaker を設定できます。 次の手順を実行します。
- SageMakerコンソールで、 画像 ナビゲーションペインに表示されます。
- 選択する 画像を作成する.
- 前のセクションで出力された画像 URI を入力し、選択します Next.
- 画像名 および 画像表示名、 入る
rapids
. - Description、説明を入力します。
- IAMの役割、SageMaker ドメインに適切な IAM ロールを選択します。
- EFSマウントパス、 入る
/home/sagemaker-user
(ディフォルト)。 - 詳細 高度な設定.
- ユーザーID、 入る
1000
. - グループID、 入る
100
.
- 画像の種類 セクション、選択 SageMaker スタジオのイメージ.
- 選択する カーネルの追加.
- カーネル名、 入る
conda-env-rapids-py
. - カーネル表示名、 入る
rapids
. - 選択する 送信 SageMaker イメージを作成します。
新しいイメージを SageMaker Studio ドメインに添付します
カスタム イメージを作成したので、イメージをドメインに添付して使用できるようにする必要があります。 次の手順を実行します。
- SageMakerコンソールで、 ドメイン ナビゲーションペインに表示されます。
- ドメインを選択してください。 このステップはオプションです。 カスタム イメージをドメインから直接作成して添付し、この手順をスキップできます。
- ドメインの詳細ページで、 環境 タブをクリックし、 画像を添付.
- 選択 既存の画像 新しい画像を選択します (
rapids
) リストから。 - 選択する Next.
- カスタム イメージの構成を確認し、必ず設定してください 画像の種類 as SageMaker スタジオのイメージ前の手順と同様に、同じカーネル名とカーネル表示名を使用します。
- 選択する 送信.
カスタム イメージが SageMaker Studio で利用可能になり、すぐに使用できるようになりました。
画像を使用して新しいノートブックを作成する
新しいノートブックを起動する手順については、を参照してください。 Amazon SageMaker Studio でカスタム SageMaker イメージを起動する。 次の手順を実行します。
- SageMaker Studio コンソールで、次を選択します。 ランチャーを開く.
- 選択する 環境を変える.
- 画像、新しく作成した画像を選択し、
rapids v1
. - カーネル、選択する
rapids
. - インスタンスタイプ¸ インスタンスを選択します。
SageMaker Studio は、AWS 高速コンピューティング、汎用コンピューティング、コンピューティング最適化、またはメモリ最適化ファミリーからインスタンスを選択することで、コンピューティング能力をカスタマイズするオプションを提供します。 この柔軟性により、CPU と GPU の間をシームレスに移行できるだけでなく、必要に応じてインスタンス サイズを動的にスケールアップまたはスケールダウンすることができます。 このノートブックでは、ml.g4dn.2xlarge インスタンス タイプを使用して、GPU アクセラレータを利用しながら cuDF のパフォーマンスをテストしました。
- 選択する 選択.
- 環境を選択して選択してください ノートブックを作成、ノートブック カーネルの準備が整うまで待ちます。
カスタム イメージを検証する
カスタム イメージが起動され、cuDF が使用できる状態になったことを検証するには、新しいセルを作成し、次のように入力します。 import cudf
、実行します。
クリーンアップ
SageMaker Studio でテスト ノートブックを実行している Jupyter インスタンスをパワーオフします。 ターミナルとカーネルの実行 そして実行中のインスタンスをパワーオフします。
実行時の比較結果
SageMaker g4dn.2xlarge インスタンス上の CPU と GPU の両方を使用し、時間計算量 O(N) でコードの実行時比較を実行しました。 次の図に示す結果から、CPU よりも GPU を使用した方が効率的であることがわかります。
GPU の主な利点は、並列処理を実行できることにあります。 N の値を増やすと、CPU での実行時間は 3N の割合で増加します。 一方、GPU では、上の図に示すように、増加率は 2N と表現できます。 問題のサイズが大きくなるほど、GPU の効率は高くなります。 私たちの場合、GPU を使用すると、CPU を使用するより少なくとも 20 倍高速になりました。 これは、現代のコンピューティング、特に大量のデータを迅速に処理する必要があるタスクにおいて GPU の重要性が高まっていることを浮き彫りにしています。
SageMaker GPU インスタンスを使用すると、VirtuSwap は解決された問題の次元を大幅に高め、解決策をより迅速に見つけることができます。
まとめ
この投稿では、VirtuSwap がカスタム イメージを使用して SageMaker Studio をカスタマイズし、複雑な問題を解決する方法を示しました。 VirtuSwap は、実行環境を簡単に変更し、異なるインスタンス、サイズ、カーネルを切り替える機能を備えているため、迅速に実験を行い、実行時間を 15 倍高速化し、スケーラブルなソリューションを提供することができました。
次のステップとして、VirtuSwap は SageMaker の使用範囲を拡大し、SageMaker で処理を実行することを検討しています。 Amazon SageMaker処理 さまざまなブロックチェーンから収集している大量のデータをプラットフォームに処理するためです。
著者について
アディル・シャラビ アマゾン ウェブ サービスのプリンシパル ソリューション アーキテクトです。 彼は AWS の顧客と協力して、クラウド上で安全で復元力があり、スケーラブルで高性能なアプリケーションを設計できるよう支援しています。 彼はデータにも情熱を持っており、顧客がデータを最大限に活用できるよう支援しています。
オメルハイム アマゾン ウェブ サービスのシニア スタートアップ ソリューション アーキテクトです。 彼はスタートアップ企業のクラウドへの取り組みを支援しており、コンテナーと ML に情熱を注いでいます。 余暇には、オメルは旅行するのが好きで、時々息子とゲームをします。
ドミトリー・ザドロジニー のデータアナリストです virtuswap.io。 データマイニング、処理、ストレージ、および AWS などのクラウド サービスの統合を担当しています。 virtuswap に入社する前は、データ サイエンスの分野で働き、dydx Foundation で分析アンバサダーのリードを務めていました。 Dima はコンピューター サイエンスの修士号を取得しています。 ディマは余暇にはコンピューター ゲームを楽しんでいます。
フアド・ババエフ Virtuswap でデータ サイエンス スペシャリストを務めています (virtuswap.io)。 彼は、複雑な最適化の課題への取り組み、シミュレーションの作成、貿易プロセスのモデルの構築に関する専門知識をもたらします。 プロとしてのキャリア以外では、フアドはチェスをプレイすることに情熱を持っています。
- SEO を活用したコンテンツと PR 配信。 今日増幅されます。
- PlatoData.Network 垂直生成 Ai。 自分自身に力を与えましょう。 こちらからアクセスしてください。
- プラトアイストリーム。 Web3 インテリジェンス。 知識増幅。 こちらからアクセスしてください。
- プラトンESG。 カーボン、 クリーンテック、 エネルギー、 環境、 太陽、 廃棄物管理。 こちらからアクセスしてください。
- プラトンヘルス。 バイオテクノロジーと臨床試験のインテリジェンス。 こちらからアクセスしてください。
- 情報源: https://aws.amazon.com/blogs/machine-learning/how-virtuswap-accelerates-their-pandas-based-trading-simulations-with-an-amazon-sagemaker-studio-custom-container-and-aws-gpu-instances/
- :持っている
- :は
- $UP
- 100
- 11
- 20
- 7
- 804
- 9
- 91
- a
- 能力
- できる
- 私たちについて
- 加速された
- 加速する
- 加速器
- アクセス
- Action
- 加えます
- 添加
- 利点
- 集約する
- AI
- すべて
- 許す
- 許可されて
- ことができます
- ほとんど
- 沿って
- また
- Amazon
- アマゾンセージメーカー
- Amazon SageMakerスタジオ
- Amazon Webサービス
- 大使
- 量
- 金額
- an
- アナリスト
- 分析論
- および
- API
- です
- AS
- 資産
- At
- アタッチ
- 利用できます
- AWS
- AWSマネジメントコンソール
- BE
- になる
- の間に
- ブロックチェーン
- 両言語で
- 持って来る
- もたらす
- ビルド
- 建物
- by
- 缶
- キャリア
- 場合
- 課題
- 変化する
- チェス
- 選択する
- 選択する
- 選んだ
- クラウド
- クラウドサービス
- コード
- コード化
- 環境、テクノロジーを推奨
- 収集
- COM
- 会社
- 比較
- コンプリート
- 完成
- 複雑な
- 複雑さ
- 計算
- コンピュータ
- コンピュータサイエンス
- コンピューティング
- コンピューティングパワー
- 条件
- 実施
- 考えると
- 領事
- コンテナ
- コンテナ
- 高額で
- コスト
- 作ります
- 作成した
- 作成します。
- 電流プローブ
- カスタム
- Customers
- カスタマイズ
- カスタマイズ
- データ
- データマイニング
- データサイエンス
- 分権化された
- 分散型Exchange
- 決定しました
- デフォルト
- 配信する
- 記載された
- 説明
- 希望
- 細部
- 開発者
- 開発
- 開発
- 異なります
- 直接
- 直接に
- ディスプレイ
- ディストリビューション
- デッカー
- そうではありません
- ドメイン
- ドント
- ダウン
- 劇的に
- 原因
- DYDX
- 動的に
- 前
- 簡単に
- 効果
- 効率
- 効率的な
- 端から端まで
- エンジン
- 入力します
- 環境
- 特に
- あらゆる
- 交換
- 存在する
- 既存の
- 実験
- 専門知識
- 家族
- スピーディー
- 速いです
- 特徴
- 費用
- フィールド
- フィギュア
- フィルタリング
- もう完成させ、ワークスペースに掲示しましたか?
- 柔軟性
- フォロー中
- Foundation
- から
- フル
- ゲーム
- Games
- 取得する
- GPU
- GPU
- 成長しました
- 成長
- ガイド
- ハンド
- 持ってる
- he
- 助けます
- 助け
- ことができます
- ハイ
- ハイライト
- 彼の
- 歴史的
- host
- 認定条件
- しかしながら
- HTML
- HTTP
- HTTPS
- アイデンティティ
- if
- 説明する
- 画像
- 画像
- 実装
- 重要性
- 不可能
- in
- 含ま
- 増える
- 増加
- 情報
- 初期
- 革新的な
- 革新的な技術
- install
- インストール
- 説明書
- 統合
- 相互作用的
- に
- IT
- 繰り返し
- ジョブ
- 参加
- 旅
- 大
- より大きい
- 起動する
- 打ち上げ
- つながる
- 主要な
- リード
- 最低
- 左
- ライブラリ
- 図書館
- ある
- 好き
- 流動性
- 流動性プール
- リスト
- ローディング
- メイン
- make
- 作成
- 管理
- 操作する
- 市場
- 大規模な
- 意味
- メモリ
- 言及した
- 鉱業
- ML
- モデル
- モダン
- 他には?
- もっと効率的
- 最も
- MOUNT
- の試合に
- 名
- 名前付き
- ナビゲーション
- ほぼ
- 必要
- 必要とされる
- 新作
- 新しく
- 次の
- ノート
- 今
- of
- オフ
- 公式
- on
- 開いた
- 最適な
- 最適化
- 最適化
- オプション
- or
- その他
- さもないと
- 私たちの
- でる
- 出力
- 外側
- が
- 自分の
- パッケージ
- ページ
- ペア
- 足
- パンダ
- ペイン
- 並列シミュレーションの設定
- パラメータ
- 情熱
- 情熱的な
- 実行する
- パフォーマンス
- パーミッション
- プラットフォーム
- プラトン
- プラトンデータインテリジェンス
- プラトデータ
- 再生
- 方針
- プール
- プール
- ポスト
- 電力
- 電源
- 前
- 校長
- 事前の
- 問題
- 問題
- プロセス
- 処理済み
- ラボレーション
- 処理
- プロ
- 適切な
- 提供します
- は、大阪で
- 目的
- 目的
- プッシュ
- プッシュ
- Python
- 四倍
- すぐに
- レート
- 読む
- 準備
- 実現
- 提言
- 参照する
- 倉庫
- 必要とする
- の提出が必要です
- 弾力性のあります
- リソースを追加する。
- 責任
- 結果
- 結果
- 明らかにする
- レビュー
- 堅牢な
- 職種
- 役割
- ラン
- ランニング
- セージメーカー
- 同じ
- 節約
- SC
- ド電源のデ
- 規模
- 科学
- 科学者たち
- シームレス
- セクション
- セクション
- 安全に
- 送信
- シニア
- 仕える
- サービス
- サービス
- セッションに
- シェアする
- 示されました
- 示す
- 著しく
- 簡単な拡張で
- サイズ
- サイズ
- So
- ソフトウェア
- 溶液
- ソリューション
- 解決する
- 解決する
- 息子
- 専門家
- スピード
- 起動
- スタートアップ
- スタートアップ
- ステートメント
- 手順
- ステップ
- ストレージ利用料
- 研究
- そのような
- 確か
- swap
- スイッチ
- タックル
- 取得
- タスク
- テクノロジー
- ターミナル
- test
- より
- それ
- アプリ環境に合わせて
- それら
- その後
- ボーマン
- 彼ら
- この
- 数千
- 介して
- 時間
- <font style="vertical-align: inherit;">回数</font>
- 〜へ
- ツール
- トータル
- トレード
- 取引
- トレード
- トレーディング
- 取引ペア
- 取引量
- 遷移
- 旅行
- トリプル
- 信頼
- 2
- type
- まで
- 使用法
- つかいます
- 中古
- ユーザー
- 使用されます
- ユーティリティ
- 活用する
- 活用
- v1
- 検証
- 値
- さまざまな
- バージョン
- バーチャル
- ボリューム
- wait
- ました
- we
- ウェブ
- Webサービス
- WELL
- which
- while
- 意志
- 仕事
- 働いていました
- ワークフロー
- 作品
- 書かれた
- You
- あなたの
- ゼファーネット