Această postare este scrisă în colaborare cu Dima Zadorozhny și Fuad Babaev de la VirtuSwap.
VirtuSwap este o companie startup care dezvoltă tehnologie inovatoare pentru schimbul descentralizat de active pe blockchains. Tehnologia VirtuSwap oferă tranzacții mai eficiente pentru activele care nu au o pereche directă între ele. Absența unei perechi directe duce la tranzacții indirecte costisitoare, ceea ce înseamnă că sunt necesare două sau mai multe tranzacții pentru a finaliza un swap dorit, ceea ce duce la dublarea sau triplarea costurilor de tranzacționare. Tehnologia Pool-urilor virtuale bazată pe rezerve de la VirtuSwap rezolvă problema făcând fiecare tranzacție directă, economisind până la 50% din costurile de tranzacționare. Citiți mai multe la virtuswap.io.
În această postare, împărtășim modul în care VirtuSwap a folosit funcția de a aduce propriul container în Amazon SageMaker Studio pentru a construi un mediu robust pentru a găzdui simulările lor intensive în GPU pentru a rezolva problemele de optimizare liniară.
Provocarea
Motorul VirtuSwap Minerva creează recomandări pentru distribuția optimă a lichidității între diferitele fonduri de lichiditate, luând în considerare mai mulți parametri, cum ar fi volumele de tranzacționare, lichiditatea curentă a pieței și volatilitățile activelor tranzacționate, constrânse de o cantitate totală de lichiditate disponibilă pentru distribuție. Pentru a oferi aceste recomandări, VirtuSwap Minerva utilizează mii de perechi de tranzacționare istorice pentru a simula parcurgerea acestora prin diferite configurații de lichiditate pentru a găsi distribuția optimă a lichidității, comisioane de pool și multe altele.
Implementarea inițială a fost codificată folosind cadre de date Pandas. Cu toate acestea, pe măsură ce datele de simulare au crescut, timpul de rulare aproape sa dublat de patru ori, împreună cu dimensiunea problemei. Rezultatul a fost că iterațiile au încetinit și a fost aproape imposibil să rulezi sarcini de dimensionalitate mai mare. VirtuSwap și-a dat seama că trebuie să folosească instanțele GPU pentru simulare pentru a permite rezultate mai rapide.
VirtuSwap avea nevoie de o bibliotecă de tip panda compatibilă cu GPU pentru a rula simularea și a ales cuDF, o bibliotecă GPU DataFrame de Praguri. cuDF este utilizat pentru încărcarea, unirea, agregarea, filtrarea și manipularea în alt mod a datelor, într-un panda-cum ar fi API-ul care accelerează lucrul pe cadrele de date, folosind CUDA pentru performanțe semnificativ mai rapide decât panda.
Prezentare generală a soluțiilor
VirtuSwap a ales SageMaker Studio pentru dezvoltarea end-to-end, începând cu dezvoltarea iterativă, interactivă în notebook-uri. Datorită flexibilității SageMaker Studio, au decis să-l folosească și pentru simularea lor, profitând de Amazon SageMaker imagini personalizate, care permit VirtuSwap să-și aducă propriile biblioteci personalizate și software-ul necesar, cum ar fi cuDF. Următoarea diagramă ilustrează fluxul de lucru al soluției.
În secțiunile următoare, împărtășim instrucțiunile pas cu pas pentru a construi și utiliza o imagine Rapids cuDF în SageMaker.
Cerințe preliminare
Pentru a rula acest ghid pas cu pas, aveți nevoie de un cont AWS cu permisiuni pentru SageMaker, Registrul Amazon de containere elastice (Amazon ECR), Gestionarea identității și accesului AWS (IAM) și AWS CodeBuild. În plus, trebuie să aveți un domeniul SageMaker gata.
Creați roluri și politici IAM
Pentru procesul de construire a notebook-urilor personalizate SageMaker, am folosit AWS CloudShell, care oferă toate pachetele necesare pentru a construi imaginea personalizată. În CloudShell, am folosit SageMaker Docker Build, un CLI pentru construirea de imagini Docker pentru și în SageMaker Studio. CLI poate crea depozitul în Amazon ECR și poate construi containerul folosind CodeBuild. Pentru aceasta, trebuie să oferim instrumentului un rol IAM cu permisiunile corespunzătoare. Parcurgeți următorii pași:
- Conectați-vă la AWS Management Console și deschideți Consola IAM.
- În panoul de navigare din stânga, alegeți Politicile.
- Creați o politică numită
sm-build-policy
cu următoarele permisiuni:
Permisiunile oferă posibilitatea de a utiliza utilitarul în întregime: creați depozite, creați un job CodeBuild, utilizați Serviciul Amazon de stocare simplă (Amazon S3) și trimiteți jurnalele către Amazon CloudWatch.
- Creați un rol numit
sm-build-role
cu următoarea politică de încredere și adăugați politicasm-build-policy
pe care l-ai creat mai devreme:
Acum, să revizuim pașii din CloudShell.
Creați o imagine cuDF Docker în CloudShell
Pentru scopurile noastre, aveam nevoie de o imagine Rapids CUDA, care include și un ipykernel, astfel încât imaginea să poată fi utilizată într-un Notebook SageMaker Studio.
Folosim o imagine CUDA existentă de RapidsAI care este disponibil în oficial Hub Rapids AI Docker, și adăugați ipykernel
instalare.
Într-un terminal CloudShell, rulați următoarea comandă:
Acest lucru va crea fișierul Docker care va construi imaginea noastră personalizată Docker pentru SageMaker.
Creați și împingeți imaginea într-un depozit
După cum am menționat, am folosit Biblioteca SageMaker Docker Build, care le permite oamenilor de știință de date și dezvoltatorilor să creeze cu ușurință imagini de container personalizate. Pentru mai multe informații, consultați Utilizarea CLI-ului Amazon SageMaker Studio Image Build pentru a crea imagini de container din notebook-urile dvs. Studio.
Următoarea comandă creează un depozit ECR (dacă depozitul nu există). sm-docker o va crea și va construi și va împinge noua imagine Docker în depozitul creat:
În cazul în care lipsești sm-docker
în CloudShell, rulați următorul cod:
La finalizare, URI-ul imaginii ECR va fi returnat.
Creați o imagine personalizată SageMaker
După ce ați creat o imagine Docker personalizată și ați trimis-o în depozitul dvs. de containere (Amazon ECR), puteți configura SageMaker să utilizeze acea imagine Docker personalizată. Parcurgeți următorii pași:
- Pe consola SageMaker, alegeți imagini în panoul de navigare.
- Alege Creați imagine.
- Introduceți rezultatul URI al imaginii din secțiunea anterioară, apoi alegeți Pagina Următoare →.
- Pentru Numele imaginii și Numele afișat al imaginii, introduce
rapids
. - Pentru Descriere, introduceți o descriere.
- Pentru Rolul IAM, alegeți rolul IAM adecvat pentru domeniul dvs. SageMaker.
- Pentru Calea de montare EFS, introduce
/home/sagemaker-user
(Mod implicit). - Extinde Configurare avansată.
- Pentru numele de utilizator, introduce
1000
. - Pentru ID grup, introduce
100
.
- În Tipul imaginii secțiune, selectați SageMaker Studio Image.
- Alege Adăugați nucleul.
- Pentru Numele nucleului, introduce
conda-env-rapids-py
. - Pentru Nume afișat kernel, introduce
rapids
. - Alege Trimite mesaj pentru a crea imaginea SageMaker.
Atașați noua imagine la domeniul dvs. SageMaker Studio
Acum că ați creat imaginea personalizată, trebuie să o faceți disponibilă pentru utilizare, atașând imaginea la domeniul dvs. Parcurgeți următorii pași:
- Pe consola SageMaker, alegeți domenii în panoul de navigare.
- Alegeți domeniul dvs. Acest pas este opțional; puteți crea și atașa imaginea personalizată direct din domeniu și sări peste acest pas.
- În pagina cu detaliile domeniului, alegeți Mediu inconjurator fila, apoi alegeți Atașați imaginea.
- Selectați Imagine existentă și selectați noua imagine (
rapids
) din listă. - Alege Pagina Următoare →.
- Examinați configurația personalizată a imaginii și asigurați-vă că o setați Tipul imaginii as SageMaker Studio Image, ca și în pasul anterior, cu același nume de kernel și același nume de afișare a nucleului.
- Alege Trimite mesaj.
Imaginea personalizată este acum disponibilă în SageMaker Studio și gata de utilizare.
Creați un nou caiet cu imaginea
Pentru instrucțiuni pentru lansarea unui nou notebook, consultați Lansați o imagine SageMaker personalizată în Amazon SageMaker Studio. Parcurgeți următorii pași:
- Pe consola SageMaker Studio, alegeți Deschideți lansatorul.
- Alege Schimbați mediul.
- Pentru Imagine, alege imaginea nou creată,
rapids v1
. - Pentru Nucleu, alege
rapids
. - Pentru Tipul instanței¸ alegeți instanța dvs.
SageMaker Studio oferă opțiunea de a vă personaliza puterea de calcul, alegând o instanță din familiile AWS de calcul accelerat, de calcul de uz general, de calcul optimizat sau de memorie optimizată. Această flexibilitate v-a permis să treceți fără probleme între procesoare și GPU, precum și să măriți sau să micșorați dinamic dimensiunile instanțelor, după cum este necesar. Pentru notebook-ul nostru, am folosit tipul de instanță ml.g4dn.2xlarge pentru a testa performanța cuDF în timp ce folosim acceleratorul GPU.
- Alege Selectați.
- Selectați mediul dvs. și alegeți Creați un caiet, apoi așteptați până când nucleul notebook-ului devine gata.
Validați-vă imaginea personalizată
Pentru a valida că imaginea dvs. personalizată a fost lansată și cuDF este gata de utilizare, creați o nouă celulă, intrați import cudf
, și rulați-l.
A curăța
Opriți instanța Jupyter care rulează blocnotesul de testare în SageMaker Studio, alegând Terminale de rulare și nuclee și oprirea instanței care rulează.
Rezultate compararea timpului de execuție
Am efectuat o comparație de rulare a codului nostru folosind atât CPU, cât și GPU pe instanțe SageMaker g4dn.2xlarge, cu o complexitate de timp de O(N). Rezultatele, așa cum se arată în figura următoare, dezvăluie eficiența utilizării GPU-urilor peste procesoare.
Principalul avantaj al GPU-urilor constă în capacitatea lor de a efectua procesări paralele. Pe măsură ce creștem valoarea lui N, timpul de rulare pe procesoare crește cu o rată de 3N. Pe de altă parte, cu GPU-urile, rata de creștere poate fi descrisă ca 2N, așa cum este ilustrat în figura anterioară. Cu cât dimensiunea problemei este mai mare, cu atât GPU-ul devine mai eficient. În cazul nostru, utilizarea unui GPU a fost de cel puțin 20 de ori mai rapidă decât utilizarea unui procesor. Acest lucru evidențiază importanța tot mai mare a GPU-urilor în calculul modern, în special pentru sarcinile care necesită procesare rapidă a unor cantități mari de date.
Cu instanțe GPU SageMaker, VirtuSwap este capabil să crească dramatic dimensionalitatea problemelor rezolvate și să găsească soluții mai rapid.
Concluzie
În această postare, am arătat cum VirtuSwap a personalizat SageMaker Studio folosind o imagine personalizată pentru a rezolva o problemă complexă. Cu capacitatea de a schimba cu ușurință mediul de rulare și de a comuta între diferite instanțe, dimensiuni și nuclee, VirtuSwap a reușit să experimenteze rapid și să accelereze timpul de rulare de 15 ori și să ofere o soluție scalabilă.
Ca pas următor, VirtuSwap are în vedere extinderea utilizării SageMaker și rularea procesării lor în Procesare Amazon SageMaker pentru a procesa datele masive pe care le colectează de la diverse blockchain-uri în platforma lor.
Despre Autori
Adir Sharabi este arhitect principal de soluții cu Amazon Web Services. El lucrează cu clienții AWS pentru a-i ajuta să creeze aplicații sigure, rezistente, scalabile și de înaltă performanță în cloud. De asemenea, este pasionat de date și de a ajuta clienții să profite la maximum de ele.
Omer Haim este arhitect senior de soluții pentru startup la Amazon Web Services. El ajută startup-urile în călătoria lor în cloud și este pasionat de containere și ML. În timpul liber, lui Omer îi place să călătorească și ocazional să se joace cu fiul său.
Dmitri Zadorojni este analist de date la virtuswap.io. El este responsabil pentru extragerea, procesarea și stocarea datelor, precum și pentru integrarea serviciilor cloud precum AWS. Înainte de a se alătura virtuswap, a lucrat în domeniul științei datelor și a fost un ambasador al analizei la fundația dydx. Dima are un Master în Informatică. Lui Dima îi place să joace jocuri pe calculator în timpul liber.
Fuad Babaev servește ca specialist în știința datelor la Virtuswap (virtuswap.io). El aduce expertiză în abordarea provocărilor complexe de optimizare, realizarea de simulări și modele de arhitectură pentru procesele comerciale. În afara carierei sale profesionale, Fuad are o pasiune în a juca șah.
- Distribuție de conținut bazat pe SEO și PR. Amplifică-te astăzi.
- PlatoData.Network Vertical Generative Ai. Împuterniciți-vă. Accesați Aici.
- PlatoAiStream. Web3 Intelligence. Cunoștințe amplificate. Accesați Aici.
- PlatoESG. carbon, CleanTech, Energie, Mediu inconjurator, Solar, Managementul deșeurilor. Accesați Aici.
- PlatoHealth. Biotehnologie și Inteligență pentru studii clinice. Accesați Aici.
- Sursa: 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/
- :are
- :este
- $UP
- 100
- 11
- 20
- 7
- 804
- 9
- 91
- a
- capacitate
- Capabil
- Despre Noi
- accelerat
- Accelerează
- accelerator
- acces
- Cont
- Acțiune
- adăuga
- plus
- Avantaj
- agregare
- AI
- TOATE
- permite
- permis
- permite
- aproape
- de-a lungul
- de asemenea
- Amazon
- Amazon SageMaker
- Amazon SageMaker Studio
- Amazon Web Services
- Ambasador
- sumă
- Sume
- an
- analist
- Google Analytics
- și
- api
- aplicatii
- SUNT
- AS
- Bunuri
- At
- atașa
- disponibil
- AWS
- Consola de administrare AWS
- BE
- devine
- între
- blockchains
- atât
- aduce
- Aduce
- construi
- Clădire
- by
- CAN
- Carieră
- caz
- provocări
- Schimbare
- Şah
- Alege
- alegere
- a ales
- Cloud
- servicii de tip cloud
- cod
- cifrat
- colaborare
- Colectare
- COM
- companie
- comparație
- Completă
- completare
- complex
- complexitate
- Calcula
- calculator
- Informatică
- tehnica de calcul
- puterea de calcul
- condiție
- efectuat
- Configuraţie
- luand in considerare
- Consoleze
- Recipient
- Containere
- costisitor
- Cheltuieli
- crea
- a creat
- creează
- Curent
- personalizat
- clienţii care
- personaliza
- personalizate
- de date
- data mining
- știința datelor
- descentralizată
- Schimbul descentralizat
- hotărât
- Mod implicit
- livra
- descris
- descriere
- dorit
- detalii
- Dezvoltatorii
- în curs de dezvoltare
- Dezvoltare
- diferit
- direcționa
- direct
- Afişa
- distribuire
- Docher
- Nu
- domeniu
- Dont
- dubla
- jos
- dramatic
- două
- dydx
- dinamic
- Mai devreme
- cu ușurință
- efect
- eficiență
- eficient
- un capăt la altul
- Motor
- Intrați
- Mediu inconjurator
- mai ales
- Fiecare
- schimb
- exista
- existent
- experiment
- expertiză
- familii
- FAST
- mai repede
- Caracteristică
- Taxe
- camp
- Figura
- filtrare
- Găsi
- Flexibilitate
- următor
- Pentru
- Fundație
- din
- Complet
- joc
- Jocuri
- General
- obține
- GPU
- unități de procesare grafică
- a crescut
- În creştere
- ghida
- mână
- Avea
- he
- ajutor
- ajutor
- ajută
- Înalt
- highlights-uri
- lui
- istoric
- gazdă
- Cum
- Totuși
- HTML
- http
- HTTPS
- Identitate
- if
- ilustrează
- imagine
- imagini
- implementarea
- importanță
- imposibil
- in
- include
- Crește
- Creșteri
- informații
- inițială
- inovatoare
- tehnologie inovatoare
- instala
- instalare
- instanță
- instrucțiuni
- integrarea
- interactiv
- în
- IT
- iterații
- Loc de munca
- aderarea
- călătorie
- mare
- mai mare
- lansa
- a lansat
- conduce
- conducere
- Conduce
- cel mai puțin
- stânga
- biblioteci
- Bibliotecă
- se află
- îi place
- Lichiditate
- rezerve de lichiditate
- Listă
- încărcare
- Principal
- face
- Efectuarea
- administrare
- manipulant
- Piață
- masiv
- sens
- Memorie
- menționat
- Minerit
- ML
- Modele
- Modern
- mai mult
- mai eficient
- cele mai multe
- MOUNT
- multiplu
- nume
- Numit
- Navigare
- aproape
- Nevoie
- necesar
- Nou
- recent
- următor
- caiet
- acum
- of
- de pe
- oficial
- on
- deschide
- optimă
- optimizare
- optimizate
- Opțiune
- or
- Altele
- in caz contrar
- al nostru
- afară
- producție
- exterior
- peste
- propriu
- ofertele
- pagină
- pereche
- perechi
- panda
- pâine
- Paralel
- parametrii
- pasiune
- pasionat
- Efectua
- performanță
- permisiuni
- platformă
- Plato
- Informații despre date Platon
- PlatoData
- joc
- Politica
- piscină
- piscine
- Post
- putere
- Alimentarea
- precedent
- Principal
- anterior
- Problemă
- probleme
- proces
- Procesat
- procese
- prelucrare
- profesional
- adecvat
- furniza
- furnizează
- scop
- scopuri
- Împinge
- împins
- Piton
- crescut de patru ori
- repede
- rată
- Citeste
- gata
- realizat
- Recomandări
- trimite
- depozit
- necesita
- necesar
- elastic
- resursă
- responsabil
- rezultat
- REZULTATE
- dezvălui
- revizuiască
- robust
- Rol
- rolurile
- Alerga
- funcţionare
- sagemaker
- acelaşi
- economisire
- SC
- scalabil
- Scară
- Ştiinţă
- oamenii de stiinta
- perfect
- Secțiune
- secțiuni
- sigur
- trimite
- senior
- servește
- serviciu
- Servicii
- set
- Distribuie
- a arătat
- indicat
- semnificativ
- simplu
- simulare
- Mărimea
- dimensiuni
- So
- Software
- soluţie
- soluţii
- REZOLVAREA
- rezolvă
- fiu
- specialist
- viteză
- Pornire
- lansare
- Startup-urile
- Declarație
- Pas
- paşi
- depozitare
- studio
- astfel de
- sigur
- schimba
- Intrerupator
- tackling
- luare
- sarcini
- Tehnologia
- Terminal
- test
- decât
- acea
- lor
- Lor
- apoi
- Acestea
- ei
- acest
- mii
- Prin
- timp
- ori
- la
- instrument
- Total
- comerţului
- firmei
- meserii
- Trading
- perechi de tranzacționare
- volumele de tranzacționare
- tranziţie
- călătorie
- triplu
- Încredere
- Două
- tip
- până la
- Folosire
- utilizare
- utilizat
- Utilizator
- utilizări
- folosind
- utilitate
- folosi
- Utilizand
- v1
- VALIDA
- valoare
- diverse
- versiune
- Virtual
- volume
- aștepta
- a fost
- we
- web
- servicii web
- BINE
- care
- în timp ce
- voi
- cu
- Apartamente
- a lucrat
- flux de lucru
- fabrică
- scris
- Tu
- Ta
- zephyrnet