Questo post è scritto in collaborazione con Dima Zadorozhny e Fuad Babaev di VirtuSwap.
Virtu Swap è una startup che sviluppa una tecnologia innovativa per lo scambio decentralizzato di asset su blockchain. La tecnologia di VirtuSwap fornisce un trading più efficiente per asset che non hanno una coppia diretta tra loro. L'assenza di una coppia diretta porta a costose negoziazioni indirette, il che significa che sono necessarie due o più operazioni per completare uno scambio desiderato, portando a costi di negoziazione doppi o tripli. La tecnologia Virtual Pools basata su riserva di VirtuSwap risolve il problema rendendo ogni operazione diretta, risparmiando fino al 50% sui costi di negoziazione. Leggi di più su virtuswap.io.
In questo post condividiamo il modo in cui VirtuSwap ha utilizzato la funzionalità Bring Your Own Container Amazon Sage Maker Studio costruire un ambiente robusto per ospitare le simulazioni ad uso intensivo di GPU per risolvere problemi di ottimizzazione lineare.
La sfida
Il motore VirtuSwap Minerva crea raccomandazioni per la distribuzione ottimale della liquidità tra diversi pool di liquidità, tenendo conto di molteplici parametri, come i volumi di scambio, la liquidità attuale del mercato e la volatilità degli asset negoziati, vincolati da una quantità totale di liquidità disponibile per la distribuzione. Per fornire queste raccomandazioni, VirtuSwap Minerva utilizza migliaia di coppie di trading storiche per simulare la loro corsa attraverso varie configurazioni di liquidità per trovare la distribuzione ottimale della liquidità, delle commissioni del pool e altro ancora.
L'implementazione iniziale è stata codificata utilizzando i dataframe panda. Tuttavia, man mano che i dati della simulazione crescevano, il tempo di esecuzione è quasi quadruplicato, insieme alla dimensione del problema. Il risultato di ciò è stato che le iterazioni sono rallentate ed è stato quasi impossibile eseguire attività di dimensionalità più ampie. VirtuSwap si è reso conto che era necessario utilizzare istanze GPU per la simulazione per consentire risultati più rapidi.
VirtuSwap aveva bisogno di una libreria simile a quella dei panda compatibile con GPU per eseguire la simulazione e ha scelto cuDF, una libreria GPU DataFrame di Rapide. cuDF viene utilizzato per caricare, unire, aggregare, filtrare e manipolare in altro modo i dati, in a pandaAPI simile che accelera il lavoro sui dataframe, utilizzando CUDA per prestazioni significativamente più veloci rispetto ai panda.
Panoramica della soluzione
VirtuSwap ha scelto SageMaker Studio per lo sviluppo end-to-end, a partire dallo sviluppo iterativo e interattivo nei notebook. Grazie alla flessibilità di SageMaker Studio, hanno deciso di utilizzarlo anche per la loro simulazione, traendo vantaggio da Amazon Sage Maker immagini personalizzate, che consentono a VirtuSwap di portare le proprie librerie personalizzate e il software necessario, come cuDF. Il diagramma seguente illustra il flusso di lavoro della soluzione.
Nelle sezioni seguenti, condividiamo le istruzioni passo passo per creare e utilizzare un'immagine cuDF Rapids in SageMaker.
Prerequisiti
Per eseguire questa guida passo passo, è necessario un account AWS con autorizzazioni per SageMaker, Registro dei contenitori Amazon Elastic (Raccolta Amazon), Gestione dell'identità e dell'accesso di AWS (IAM), e AWSCodeBuild. Inoltre, è necessario disporre di un file dominio SageMaker pronto.
Crea ruoli e policy IAM
Per il processo di creazione dei notebook personalizzati SageMaker, abbiamo utilizzato AWS CloudShell, che fornisce tutti i pacchetti necessari per creare l'immagine personalizzata. In CloudShell, abbiamo utilizzato SageMaker Docker Build, una CLI per la creazione di immagini Docker per e in SageMaker Studio. La CLI può creare il repository in Amazon ECR e creare il contenitore utilizzando CodeBuild. Per questo, dobbiamo fornire allo strumento un ruolo IAM con autorizzazioni adeguate. Completa i seguenti passaggi:
- Accedi alla Console di gestione AWS e apri il file Console IAM.
- Nel riquadro di navigazione a sinistra, scegli Termini e Condizioni.
- Crea una policy denominata
sm-build-policy
con le seguenti autorizzazioni:
Le autorizzazioni forniscono la possibilità di utilizzare completamente l'utilità: creare repository, creare un lavoro CodeBuild, utilizzare Servizio di archiviazione semplice Amazon (Amazon S3) e inviare i registri a Amazon Cloud Watch.
- Crea un ruolo denominato
sm-build-role
con la seguente policy di attendibilità e aggiungere la policysm-build-policy
che hai creato in precedenza:
Ora esaminiamo i passaggi in CloudShell.
Crea un'immagine Docker cuDF in CloudShell
Per i nostri scopi, avevamo bisogno di un'immagine CUDA di Rapids, che includa anche un file ipykernel, in modo che l'immagine possa essere utilizzata in a Taccuino di SageMaker Studio.
Usiamo un'immagine CUDA esistente di RapidsAI che è disponibile nel funzionario Hub Docker AI di Rapidse aggiungi il ipykernel
installazione.
In un terminale CloudShell, esegui il comando seguente:
Questo creerà il Dockerfile che creerà la nostra immagine Docker personalizzata per SageMaker.
Costruisci e invia l'immagine a un repository
Come accennato, abbiamo utilizzato il file Libreria SageMaker Docker Build, che consente ai data scientist e agli sviluppatori di creare facilmente immagini di contenitori personalizzate. Per ulteriori informazioni, fare riferimento a Utilizzo della CLI di build di immagini di Amazon SageMaker Studio per creare immagini di container dai notebook di Studio.
Il comando seguente crea un repository ECR (se il repository non esiste). sm-docker lo creerà, creerà e invierà la nuova immagine Docker al repository creato:
Nel caso in cui ti manchi sm-docker
nel tuo CloudShell, esegui il codice seguente:
Al termine, verrà restituito l'URI dell'immagine ECR.
Crea un'immagine personalizzata SageMaker
Dopo aver creato un'immagine Docker personalizzata e averla inviata al repository del contenitore (Amazon ECR), puoi configurare SageMaker per utilizzare quell'immagine Docker personalizzata. Completa i seguenti passaggi:
- Sulla console di SageMaker, scegli Immagini nel pannello di navigazione.
- Scegli Crea immagine.
- Inserisci l'output dell'URI dell'immagine dalla sezione precedente, quindi scegli Avanti.
- Nel Nome dell'immagine ed Nome visualizzato dell'immagine, accedere
rapids
. - Nel Descrizione, inserisci una descrizione.
- Nel Ruolo IAM, scegli il ruolo IAM appropriato per il tuo dominio SageMaker.
- Nel Percorso di montaggio EFS, accedere
/home/sagemaker-user
(predefinito). - Espandere Configurazione avanzata.
- Nel User ID, accedere
1000
. - Nel ID gruppo, accedere
100
.
- Nel Tipo di immagine sezione, selezionare Immagine di SageMaker Studio.
- Scegli Aggiungi nocciolo.
- Nel Nome del kernel, accedere
conda-env-rapids-py
. - Nel Nome visualizzato del kernel, accedere
rapids
. - Scegli Invio per creare l'immagine SageMaker.
Allega la nuova immagine al tuo dominio SageMaker Studio
Ora che hai creato l'immagine personalizzata, devi renderla disponibile per l'uso allegandola al tuo dominio. Completa i seguenti passaggi:
- Sulla console di SageMaker, scegli Domini nel pannello di navigazione.
- Scegli il tuo dominio. Questo passaggio è facoltativo; puoi creare e allegare l'immagine personalizzata direttamente dal dominio e saltare questo passaggio.
- Nella pagina dei dettagli del dominio, scegli il Ambiente scheda, quindi scegli Allega immagine.
- Seleziona Immagine esistente e seleziona la nuova immagine (
rapids
) dall'elenco. - Scegli Avanti.
- Esamina la configurazione dell'immagine personalizzata e assicurati di impostarla Tipo di immagine as Immagine di SageMaker Studio, come nel passaggio precedente, con lo stesso nome kernel e nome visualizzato del kernel.
- Scegli Invio.
L'immagine personalizzata è ora disponibile in SageMaker Studio e pronta per l'uso.
Crea un nuovo taccuino con l'immagine
Per istruzioni su come avviare un nuovo notebook, fare riferimento a Avvia un'immagine SageMaker personalizzata in Amazon SageMaker Studio. Completa i seguenti passaggi:
- Nella console di SageMaker Studio, scegli Apri lanciatore.
- Scegli Cambia ambiente.
- Nel Immagine, scegli l'immagine appena creata,
rapids v1
. - Nel noccioloscegli
rapids
. - Nel Tipo di istanza¸ scegli la tua istanza.
SageMaker Studio offre la possibilità di personalizzare la potenza di calcolo scegliendo un'istanza dalle famiglie di calcolo accelerato AWS, calcolo per uso generale, ottimizzazione per il calcolo o ottimizzazione per la memoria. Questa flessibilità ti ha consentito di passare senza problemi tra CPU e GPU, nonché di aumentare o ridurre dinamicamente le dimensioni delle istanze in base alle esigenze. Per il nostro notebook, abbiamo utilizzato il tipo di istanza ml.g4dn.2xlarge per testare le prestazioni cuDF utilizzando l'acceleratore GPU.
- Scegli Seleziona.
- Seleziona il tuo ambiente e scegli Crea quaderno, quindi attendere finché il kernel del notebook non sarà pronto.
Convalida la tua immagine personalizzata
Per verificare che la tua immagine personalizzata sia stata avviata e che cuDF sia pronto per l'uso, crea una nuova cella, inserisci import cudf
, ed eseguirlo.
ripulire
Spegni l'istanza Jupyter che esegue il notebook di test in SageMaker Studio scegliendo Terminali e kernel in esecuzione e spegnere l'istanza in esecuzione.
Risultati del confronto di runtime
Abbiamo condotto un confronto di runtime del nostro codice utilizzando sia CPU che GPU su istanze SageMaker g4dn.2xlarge, con una complessità temporale di O(N). I risultati, come mostrato nella figura seguente, rivelano l'efficienza dell'utilizzo delle GPU rispetto alle CPU.
Il vantaggio principale delle GPU risiede nella loro capacità di eseguire l'elaborazione parallela. Aumentando il valore di N, il tempo di esecuzione sulle CPU aumenta a una velocità di 3N. D'altra parte, con le GPU, il tasso di aumento può essere descritto come 2N, come illustrato nella figura precedente. Maggiore è la dimensione del problema, più efficiente diventa la GPU. Nel nostro caso, l'utilizzo di una GPU è stato almeno 20 volte più veloce rispetto all'utilizzo di una CPU. Ciò evidenzia la crescente importanza delle GPU nell’informatica moderna, in particolare per le attività che richiedono l’elaborazione rapida di grandi quantità di dati.
Con le istanze GPU SageMaker, VirtuSwap è in grado di aumentare notevolmente la dimensionalità dei problemi risolti e trovare soluzioni più velocemente.
Conclusione
In questo post, abbiamo mostrato come VirtuSwap ha personalizzato SageMaker Studio utilizzando un'immagine personalizzata per risolvere un problema complesso. Grazie alla possibilità di modificare facilmente l'ambiente di esecuzione e passare da istanze, dimensioni e kernel diversi, VirtuSwap è stato in grado di sperimentare rapidamente e accelerare il tempo di esecuzione di 15 volte e fornire una soluzione scalabile.
Come passo successivo, VirtuSwap sta valutando la possibilità di ampliare l'utilizzo di SageMaker e di eseguirne l'elaborazione Elaborazione di Amazon SageMaker per elaborare nella loro piattaforma l'enorme quantità di dati che raccolgono da varie blockchain.
Informazioni sugli autori
Adir Sharabi è un Principal Solutions Architect presso Amazon Web Services. Collabora con i clienti AWS per aiutarli a progettare applicazioni sicure, resilienti, scalabili e ad alte prestazioni nel cloud. È anche appassionato di dati e aiuta i clienti a trarne il massimo.
Omer Haim è un Senior Startup Solutions Architect presso Amazon Web Services. Aiuta le startup nel loro percorso verso il cloud ed è appassionato di container e ML. Nel tempo libero, Omer ama viaggiare e, occasionalmente, giocare con suo figlio.
Dmitry Zadorozhny è un analista di dati presso virtuswap.io. È responsabile del data mining, dell'elaborazione e dell'archiviazione, nonché dell'integrazione di servizi cloud come AWS. Prima di entrare in virtuswap, ha lavorato nel campo della scienza dei dati ed è stato ambasciatore dell'analisi presso la Fondazione Dydx. Dima ha un Master in Informatica. A Dima piace giocare ai videogiochi nel tempo libero.
Fuad Babaev ricopre il ruolo di specialista in scienza dei dati presso Virtuswap (virtuswap.io). Porta esperienza nell'affrontare complesse sfide di ottimizzazione, creare simulazioni e progettare modelli per i processi commerciali. Al di fuori della sua carriera professionale, Fuad ha una passione per il gioco degli scacchi.
- Distribuzione di contenuti basati su SEO e PR. Ricevi amplificazione oggi.
- PlatoData.Network Generativo verticale Ai. Potenzia te stesso. Accedi qui.
- PlatoAiStream. Intelligenza Web3. Conoscenza amplificata. Accedi qui.
- PlatoneESG. Carbonio, Tecnologia pulita, Energia, Ambiente, Solare, Gestione dei rifiuti. Accedi qui.
- Platone Salute. Intelligence sulle biotecnologie e sulle sperimentazioni cliniche. Accedi qui.
- Fonte: 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/
- :ha
- :È
- $ SU
- 100
- 11
- 20
- 7
- 804
- 9
- 91
- a
- capacità
- capace
- WRI
- accelerata
- accelera
- acceleratore
- accesso
- Il mio account
- Action
- aggiungere
- aggiunta
- Vantaggio
- aggregando
- AI
- Tutti
- consentire
- permesso
- consente
- quasi
- lungo
- anche
- Amazon
- Amazon Sage Maker
- Amazon Sage Maker Studio
- Amazon Web Services
- Ambassador
- quantità
- importi
- an
- analista
- analitica
- ed
- api
- applicazioni
- SONO
- AS
- Attività
- At
- allegare
- disponibile
- AWS
- Console di gestione AWS
- BE
- diventa
- fra
- blockchains
- entrambi
- portare
- Porta
- costruire
- Costruzione
- by
- Materiale
- Career
- Custodie
- sfide
- il cambiamento
- Scacchi
- Scegli
- la scelta
- ha scelto
- Cloud
- servizi cloud
- codice
- codificato
- collaborazione
- Raccolta
- COM
- azienda
- confronto
- completamento di una
- completamento
- complesso
- complessità
- Calcolare
- computer
- Informatica
- informatica
- potenza di calcolo
- condizione
- condotto
- Configurazione
- considerando
- consolle
- Contenitore
- Tecnologie Container
- costoso
- Costi
- creare
- creato
- crea
- Corrente
- costume
- Clienti
- personalizzare
- personalizzate
- dati
- data mining
- scienza dei dati
- decentrata
- Scambio decentralizzato
- deciso
- Predefinito
- consegnare
- descritta
- descrizione
- desiderato
- dettagli
- sviluppatori
- in via di sviluppo
- Mercato
- diverso
- dirette
- direttamente
- Dsiplay
- distribuzione
- docker
- non
- dominio
- Dont
- doppio
- giù
- drammaticamente
- dovuto
- dydx
- dinamicamente
- In precedenza
- facilmente
- effetto
- efficienza
- efficiente
- da un capo all'altro
- motore
- entrare
- Ambiente
- particolarmente
- Ogni
- exchange
- esistere
- esistente
- esperimento
- competenza
- famiglie
- FAST
- più veloce
- caratteristica
- Costi
- campo
- figura
- filtraggio
- Trovate
- Flessibilità
- i seguenti
- Nel
- Fondazione
- da
- pieno
- gioco
- Giochi
- Generale
- ottenere
- GPU
- GPU
- è cresciuto
- Crescita
- guida
- cura
- Avere
- he
- Aiuto
- aiutare
- aiuta
- Alta
- evidenzia
- il suo
- storico
- host
- Come
- Tuttavia
- HTML
- http
- HTTPS
- Identità
- if
- illustra
- Immagine
- immagini
- implementazione
- importanza
- impossibile
- in
- inclusi
- Aumento
- Aumenta
- informazioni
- inizialmente
- creativi e originali
- tecnologia innovativa
- install
- installazione
- esempio
- istruzioni
- Integrazione
- interattivo
- ai miglioramenti
- IT
- iterazioni
- Lavoro
- accoppiamento
- viaggio
- grandi
- superiore, se assunto singolarmente.
- lanciare
- lanciato
- portare
- principale
- Leads
- meno
- a sinistra
- biblioteche
- Biblioteca
- si trova
- piace
- Liquidità
- pool di liquidità
- Lista
- Caricamento in corso
- Principale
- make
- Fare
- gestione
- manipolazione
- Rappresentanza
- massiccio
- significato
- Memorie
- menzionato
- Siti di estrazione mineraria
- ML
- modelli
- moderno
- Scopri di più
- più efficiente
- maggior parte
- MONTARE
- multiplo
- Nome
- Detto
- Navigazione
- quasi
- Bisogno
- di applicazione
- New
- recentemente
- GENERAZIONE
- taccuino
- adesso
- of
- MENO
- ufficiale
- on
- aprire
- ottimale
- ottimizzazione
- ottimizzati
- Opzione
- or
- Altro
- altrimenti
- nostro
- su
- produzione
- al di fuori
- ancora
- proprio
- Packages
- pagina
- coppia
- coppie
- panda
- vetro
- Parallel
- parametri
- passione
- appassionato
- Eseguire
- performance
- permessi
- piattaforma
- Platone
- Platone Data Intelligence
- PlatoneDati
- gioco
- politica
- pool
- Piscine
- Post
- energia
- Accensione
- precedente
- Direttore
- Precedente
- Problema
- problemi
- processi
- Elaborato
- i processi
- lavorazione
- professionale
- corretto
- fornire
- fornisce
- scopo
- fini
- Spingi
- spinto
- Python
- quadruplicato
- rapidamente
- tasso
- Leggi
- pronto
- realizzato
- raccomandazioni
- riferimento
- deposito
- richiedere
- necessario
- elastico
- risorsa
- responsabile
- colpevole
- Risultati
- rivelare
- recensioni
- robusto
- Ruolo
- ruoli
- Correre
- running
- sagemaker
- stesso
- risparmio
- SC
- scalabile
- Scala
- Scienze
- scienziati
- senza soluzione di continuità
- Sezione
- sezioni
- sicuro
- inviare
- anziano
- serve
- servizio
- Servizi
- set
- Condividi
- ha mostrato
- mostrato
- significativamente
- Un'espansione
- simulazione
- Taglia
- Dimensioni
- So
- Software
- soluzione
- Soluzioni
- RISOLVERE
- risolve
- è composta da
- specialista
- velocità
- Di partenza
- startup
- Startup
- dichiarazione
- step
- Passi
- conservazione
- studio
- tale
- sicuro
- swap
- Interruttore
- Affronto
- presa
- task
- Tecnologia
- terminal
- test
- di
- che
- Il
- loro
- Li
- poi
- Strumenti Bowman per analizzare le seguenti finiture:
- di
- questo
- migliaia
- Attraverso
- tempo
- volte
- a
- Totale
- commercio
- negoziate
- mestieri
- Trading
- coppie di trading
- volumi di trading
- transizione
- viaggiare
- Triplicare
- Affidati ad
- seconda
- Digitare
- fino a quando
- Impiego
- uso
- utilizzato
- Utente
- usa
- utilizzando
- utilità
- utilizzare
- Utilizzando
- v1
- CONVALIDARE
- APPREZZIAMO
- vario
- versione
- virtuale
- volumi
- aspettare
- Prima
- we
- sito web
- servizi web
- WELL
- quale
- while
- volere
- con
- Lavora
- lavorato
- flusso di lavoro
- lavori
- scritto
- Tu
- Trasferimento da aeroporto a Sharm
- zefiro