Tehnologii aplicate pe ruinele febrei blockchain sau beneficiile practice ale distribuției resurselor

În ultimii ani, fluxurile de știri au fost inundate de mesaje despre un nou tip de rețele de calcul distribuite care apar literalmente din senin, rezolvând (sau mai bine zis, încercând să rezolve) o mare varietate de probleme - făcând un oraș inteligent, salvând lumea de drepturile de autor. infractorii sau invers, transferând în secret informații sau resurse, scăpând de sub controlul statului într-o zonă sau alta. Indiferent de domeniu, toți au o serie de caracteristici comune datorită faptului că combustibilul pentru creșterea lor au fost algoritmii și tehnicile care au ajuns la public în timpul recentului boom al criptomonedelor și tehnologiilor conexe. Probabil că fiecare al treilea articol despre resursele specializate la acea vreme avea în titlu cuvântul „blockchain” - discuția despre noi soluții software și modele economice a devenit tendința dominantă de ceva timp, pe fundalul căreia au fost alte domenii de aplicare ale sistemelor de calcul distribuite. retrogradată pe plan secund.

În același timp, vizionarii și profesioniștii au văzut esența principală a fenomenului: calculul distribuit masiv, asociat cu construirea de rețele dintr-un număr mare de participanți disparați și eterogene, a atins un nou nivel de dezvoltare. Este suficient să aruncați din cap subiectele de hype și să priviți subiectul din cealaltă parte: toate aceste rețele, asamblate din bazine uriașe, care constau din mii de participanți eterogene izolați, nu au apărut de la sine. Entuziaștii mișcării cripto au reușit să rezolve probleme complexe de sincronizare a datelor și de distribuție a resurselor și sarcinilor într-un mod nou, ceea ce a făcut posibilă reunirea unei mase similare de echipamente și crearea unui nou ecosistem proiectat să rezolve o problemă concentrată strict.

Desigur, acest lucru nu a trecut pe lângă echipele și comunitățile implicate în dezvoltarea calculatoarelor distribuite gratuit, iar noi proiecte nu au întârziat să apară.
Cu toate acestea, în ciuda creșterii semnificative a volumului de informații disponibile despre evoluțiile din domeniul construirii de rețele și al lucrului cu echipamente, creatorii de sisteme promițătoare vor trebui să rezolve probleme serioase.

Prima dintre ele, oricât de ciudat ar suna, este problema alegerii unei direcții.

Direcția poate fi corectă sau poate duce la o fundătură - nu există nicio scăpare; livrările centralizate de clarvăzători către comunitatea IT încă întârzie. Dar alegerea trebuie făcută pentru a nu cădea în capcana tradițională a echipei care ia o zonă prea largă și încearcă să creeze încă de la început un proiect de calcul general distribuit nespecializat. Se pare că domeniul de aplicare nu este atât de înfricoșător, în cea mai mare parte trebuie doar să aplicăm dezvoltările existente: să combinăm nodurile într-o rețea, să adaptăm algoritmi pentru determinarea topologiilor, schimbul de date și monitorizarea coerenței acestora, introducerea metodelor de clasificare a nodurilor și de găsire. consens și, desigur, creați-vă propriul limbaj de interogare și întregul mediu de calcul și limbaj. Ideea unui mecanism universal este foarte tentantă și apare constant într-un domeniu sau altul, dar rezultatul final este încă unul din trei lucruri: soluția creată fie se dovedește a fi de fapt un prototip limitat cu o grămadă de suspendate " ToDos” în stoc, sau devine un monstru inutilizabil gata să tragă pe oricine atinge fetidul „mlaștina Turing”, sau pur și simplu moare în siguranță din cauza faptului că lebada, racii și știuca, care trăgeau proiectul într-o direcție de neînțeles. , pur și simplu s-au suprasolicitat.

Să nu repetăm ​​greșelile stupide și să alegem o direcție care are o gamă clară de sarcini și se potrivește bine modelului de calcul distribuit. Poți înțelege oamenii care încearcă să facă totul deodată - desigur, există multe dintre care să alegi. Și o mulțime de lucruri arată extrem de interesante atât din punct de vedere al cercetării și dezvoltării și dezvoltării, cât și din punct de vedere al economiei. Folosind o rețea distribuită puteți:

  • Antrenează rețele neuronale
  • Procesează fluxurile de semnal
  • Calculați structura proteinelor
  • Redați scene XNUMXD
  • Simulați hidrodinamica
  • Testați strategiile de tranzacționare pentru burse de valori

Pentru a nu ne lăsa duși de cap cu alcătuirea unei liste de lucruri interesante care sunt bine paralelizate, vom alege randarea distribuită ca subiect suplimentar.

Redarea distribuită în sine nu este, desigur, nimic nou. Seturile de instrumente de randare existente au suportat mult timp distribuirea sarcinii pe diferite mașini; fără aceasta, a trăi în secolul XXI ar fi destul de trist. Cu toate acestea, nu ar trebui să credeți că subiectul a fost acoperit în lung și larg și nu este nimic de făcut acolo - vom lua în considerare o problemă presantă separată: crearea unui instrument pentru crearea unei rețele de randare.

Rețeaua noastră de randare este o combinație de noduri care trebuie să efectueze sarcini de randare cu noduri care au resurse de calcul gratuite pentru a procesa randarea. Proprietarii de resurse își vor conecta stațiile la rețeaua de randare pentru a primi și executa lucrări de randare folosind unul dintre motoarele de randare acceptate de rețea. În acest caz, furnizorii de sarcini vor lucra cu rețeaua ca un cloud, distribuind în mod independent resursele, monitorizând corectitudinea execuției, gestionarea riscurilor și alte probleme.

Astfel, vom lua în considerare crearea unui cadru care să sprijine integrarea cu un set de motoare de randare populare și să conțină componente care oferă instrumente pentru organizarea unei rețele de noduri eterogene și gestionarea fluxului de sarcini.

Modelul economic al existenței unei astfel de rețele nu are o importanță fundamentală, așa că vom lua ca schemă inițială o schemă similară cu cea utilizată în calculele din rețelele de criptomonede – consumatorii resursei vor trimite token-uri furnizorilor care efectuează munca de randare. Este mult mai interesant de înțeles ce proprietăți ar trebui să aibă un cadru, pentru care vom lua în considerare scenariul principal de interacțiune între participanții la rețea.

Există trei părți ale interacțiunii în rețea: furnizorul de resurse, furnizorul de sarcini și operatorul de rețea (aka centru de control, rețea etc. în text).

Operatorul de rețea oferă furnizorului de resurse o aplicație client sau o imagine a sistemului de operare cu un set de software implementat, pe care îl va instala pe mașina ale cărei resurse dorește să le furnizeze și un cont personal accesibil prin interfața web, permițându-i să setați parametrii de acces la resursă și gestionați de la distanță peisajul serverului său: controlați parametrii hardware, efectuați configurarea de la distanță, reporniți.

Atunci când un nou nod este conectat, sistemul de management al rețelei analizează echipamentul și parametrii de acces specificați, îl ierarhizează, atribuind un anumit rating și îl plasează în registrul de resurse. Pe viitor, pentru a gestiona riscul, vor fi analizați parametrii de activitate ai nodului, iar ratingul nodului va fi ajustat pentru a asigura stabilitatea rețelei. Nimeni nu va fi mulțumit dacă scena lor este trimisă pentru a reda pe carduri puternice care adesea îngheață din cauza supraîncălzirii?

Un utilizator care trebuie să redea o scenă poate merge în două moduri: să încarce scena într-un depozit de rețea prin interfața web sau să folosească un plugin pentru a-și conecta pachetul de modelare sau redarea instalată la rețea. În acest caz, se inițiază un contract inteligent între utilizator și rețea, a cărui condiție standard pentru finalizare este generarea rezultatului calculului scenei de către rețea. Utilizatorul poate monitoriza procesul de finalizare a unei sarcini și poate gestiona parametrii acesteia prin interfața web a contului său personal.

Sarcina este trimisă la server, unde se analizează volumul scenei și numărul de resurse solicitate de inițiatorul sarcinii, după care volumul total este descompus în părți adaptate pentru calcul pe numărul și tipul resurselor alocate de rețea . Ideea generală este că vizualizarea poate fi împărțită în multe sarcini mici. Motoarele profită de acest lucru prin distribuirea acestor sarcini între mai mulți furnizori de resurse. Cel mai simplu mod este să redați părți mici ale scenei numite segmente. Când fiecare segment este gata, sarcina locală este considerată finalizată, iar resursa trece la următoarea sarcină restante.

Astfel, nu are nicio diferență ca atare pentru renderer dacă calculele sunt efectuate pe o singură mașină sau pe o grilă de mai multe stații de calcul individuale. Redarea distribuită adaugă pur și simplu mai multe nuclee la pool-ul de resurse utilizate pentru o sarcină. Prin intermediul rețelei, primește toate datele necesare redării unui segment, îl calculează, trimite acel segment înapoi și trece la următoarea sarcină. Înainte de a intra în pool-ul general al rețelei, fiecare segment primește un set de metainformații care permite nodurilor de execuție să selecteze cele mai potrivite sarcini de calcul pentru ele.

Problemele de segmentare și distribuție a calculelor trebuie rezolvate nu numai din punctul de vedere al optimizării timpului de execuție, ci și din punct de vedere al utilizării optime a resurselor și al economisirii energiei, deoarece de aceasta depinde eficiența economică a rețelei. . Dacă soluția nu are succes, ar fi mai indicat să instalați un miner pe nod sau să-l opriți astfel încât să nu facă zgomot și să nu irosească energie electrică.

Cu toate acestea, să revenim la proces. Când se primește o sarcină, se formează și un contract inteligent între pool și nod, care este executat atunci când rezultatul sarcinii este calculat corect. Pe baza rezultatelor îndeplinirii contractului, nodul poate primi o recompensă într-o formă sau alta.

Centrul de control controlează procesul de execuție a sarcinii, colectarea rezultatelor calculelor, trimiterea celor incorecte pentru reprocesare și ierarhizare a cozii, monitorizarea termenului standard de finalizare a sarcinii (pentru a nu se întâmpla ca ultimul segment să nu fie preluat de către orice nod).

Rezultatele calculelor trec prin etapa de compunere, după care utilizatorul primește rezultatele randării, iar rețeaua poate primi o recompensă.

Astfel, reiese compoziția funcțională a unui cadru peisagistic conceput pentru construirea de sisteme de randare distribuite:

  1. Conturi personale de utilizator cu acces web
  2. Kit software pentru instalare pe noduri
  3. Prin sistemul de control:
    • Subsistemul de control acces
    • Subsistemul de descompunere a sarcinii de randare
    • Subsistemul de distribuție a sarcinilor
    • Subsistem de compoziție
    • Subsistemul de management al peisajului serverului și al topologiei rețelei
    • Subsistem de înregistrare și audit
    • Subsistem expert în învățare
    • Rest API sau altă interfață pentru dezvoltatori externi

Ce crezi? Ce întrebări ridică subiectul și ce răspunsuri vă interesează?

Sursa: www.habr.com

Adauga un comentariu