Ultimii ani au arătat o creștere uimitoare a rețelelor neuronale de învățare profundă (DNN). Această creștere poate fi observată în modele mai precise și chiar deschiderea de noi posibilități cu IA generativă: modele de limbaj mari (LLM) care sintetizează limbajul natural, generatoare de text în imagine și multe altele. Aceste capacități sporite ale DNN-urilor vin cu costul de a avea modele masive care necesită resurse de calcul semnificative pentru a fi instruite. Instruirea distribuită abordează această problemă cu două tehnici: paralelismul datelor și paralelismul modelului. Paralelismul de date este utilizat pentru a scala procesul de instruire pe mai multe noduri și lucrători, iar paralelismul modelului împarte un model și îl potrivește peste infrastructura desemnată. Amazon SageMaker instruire distribuită locurile de muncă vă permit cu un singur clic (sau un apel API) să configurați un cluster de calcul distribuit, să antrenați un model, să salvați rezultatul în Serviciul Amazon de stocare simplă (Amazon S3) și închideți clusterul când este finalizat. În plus, SageMaker a inovat continuu în spațiul de instruire distribuit prin lansarea unor funcții precum clustere eterogene și biblioteci de instruire distribuite pentru paralelism de date și paralelism model.
Antrenamentul eficient într-un mediu distribuit necesită ajustarea hiperparametrilor. Un exemplu obișnuit de bună practică atunci când antrenați pe mai multe GPU-uri este de a înmulți dimensiunea lotului (sau mini-lot) cu numărul GPU-ului pentru a păstra aceeași dimensiune a lotului per GPU. Cu toate acestea, ajustarea hiperparametrilor afectează adesea convergența modelului. Prin urmare, antrenamentul distribuit trebuie să echilibreze trei factori: distribuția, hiperparametrii și acuratețea modelului.
În această postare, explorăm efectul instruirii distribuite asupra convergenței și modului de utilizare Reglarea automată a modelelor Amazon SageMaker pentru a ajusta hiperparametrii modelului pentru antrenamentul distribuit folosind paralelismul de date.
Codul sursă menționat în această postare poate fi găsit pe GitHub depozit (este recomandată o instanță m5.xlarge).
Extindeți formarea de la un mediu unic la unul distribuit
Paralelismul datelor este o modalitate de a scala procesul de instruire la mai multe resurse de calcul și de a obține un timp de antrenament mai rapid. Cu paralelismul datelor, datele sunt împărțite între nodurile de calcul, iar fiecare nod calculează gradienții pe baza partiției lor și actualizează modelul. Aceste actualizări pot fi efectuate folosind unul sau mai multe servere de parametri într-un mod asincron, unu-la-mulți sau all-to-all. O altă modalitate poate fi utilizarea unui algoritm AllReduce. De exemplu, în algoritmul ring-allreduce, fiecare nod comunică doar cu două dintre nodurile învecinate, reducând astfel transferurile totale de date. Pentru a afla mai multe despre serverele de parametri și ring-allreduce, consultați Lansarea cu ușurință a instruirii distribuite TensorFlow cu serverele Horovod sau Parameter în Amazon SageMaker. În ceea ce privește partiționarea datelor, dacă există n noduri de calcul, atunci fiecare nod ar trebui să primească un subset de date, aproximativ 1/n in marime.
Pentru a demonstra efectul extinderii antrenamentului asupra convergenței modelului, rulăm două experimente simple:
Fiecare antrenament model a rulat de două ori: pe o singură instanță și distribuit pe mai multe instanțe. Pentru instruirea distribuită DNN, pentru a utiliza pe deplin procesoarele distribuite, am înmulțit dimensiunea mini-lot cu numărul de instanțe (patru). Următorul tabel rezumă configurarea și rezultatele.
Tipul problemei | Clasificarea imaginilor | Clasificare binară | ||
Model | DNN | XGBoost | ||
instanță | ml.c4.xlarge | ml.m5.2xmare | ||
Set de date |
(Imagini etichetate) |
Marketing direct (categorii tabelare, numerice și vectorizate) |
||
Valoarea de validare | Acuratete | ASC | ||
Epoc/Runde | 20 | 150 | ||
Numărul de instanțe | 1 | 4 | 1 | 3 |
Tip de distribuție | - | Server de parametri | - | AllReduce |
Timp de antrenament (minute) | 8 | 3 | 3 | 1 |
Scorul final de validare | 0.97 | 0.11 | 0.78 | 0.63 |
Pentru ambele modele, timpul de antrenament a fost redus aproape liniar de factorul de distribuție. Cu toate acestea, convergența modelului a suferit o scădere semnificativă. Acest comportament este consecvent pentru cele două modele diferite, diferitele instanțe de calcul, diferitele metode de distribuție și diferite tipuri de date. Deci, de ce distribuirea procesului de instruire a afectat acuratețea modelului?
Există o serie de teorii care încearcă să explice acest efect:
- Când actualizările tensorilor sunt mari, traficul dintre lucrători și serverul de parametri poate fi aglomerat. Prin urmare, serverele de parametri asincrone vor suferi o convergență semnificativ mai proastă din cauza întârzierilor în actualizările ponderilor [1].
- Creșterea dimensiunii lotului poate duce la supraajustare și generalizare slabă, reducând astfel acuratețea validării [2].
- La actualizarea asincronă a parametrilor modelului, este posibil ca unele DNN-uri să nu folosească cele mai recente ponderi actualizate de model; prin urmare, ei vor calcula gradienți pe baza greutăților care sunt cu câteva iterații în urmă. Acest lucru duce la învechirea greutății [3] și poate fi cauzat de o serie de motive.
- Unii hiperparametri sunt specifici modelului sau optimizatorului. De exemplu, documentația oficială XGBoost spune că
exact
valoare pentrutree_mode
hiperparametrul nu acceptă instruirea distribuită, deoarece XGBoost utilizează distribuția de date de împărțire a rândurilor, în timp ceexact
metoda arborelui funcționează pe un format de coloană sortat. - Unii cercetători au propus că configurarea unui mini-lot mai mare poate duce la gradienți cu mai puțină stocasticitate. Acest lucru se poate întâmpla atunci când funcția de pierdere conține minime locale și puncte de șa și nu se face nicio modificare a mărimii pasului, pentru ca optimizarea să rămână blocată în astfel de minime locale sau punct de șa [4].
Optimizați pentru instruire distribuită
Optimizarea hiperparametrului (HPO) este procesul de căutare și selectare a unui set de hiperparametri care sunt optimi pentru un algoritm de învățare. SageMaker Automatic Model Tuning (AMT) oferă HPO ca serviciu gestionat prin rularea mai multor joburi de instruire pe setul de date furnizat. SageMaker AMT caută intervalele de hiperparametri pe care le specificați și returnează cele mai bune valori, măsurate de o valoare pe care o alegeți. Puteți utiliza SageMaker AMT cu algoritmii încorporați sau puteți utiliza algoritmii și containerele personalizate.
Cu toate acestea, optimizarea pentru instruire distribuită diferă de HPO obișnuit, deoarece în loc să lanseze o singură instanță per job de instruire, fiecare job lansează de fapt un grup de instanțe. Aceasta înseamnă un impact mai mare asupra costurilor (mai ales dacă luați în considerare instanțe costisitoare accelerate de GPU, care sunt tipice pentru DNN). În plus față de Limitele AMT, ai putea lovi Limitele contului SageMaker pentru numărul concomitent de instanțe de instruire. În cele din urmă, lansarea clusterelor poate introduce o suprasarcină operațională datorită timpului de pornire mai lung. SageMaker AMT are caracteristici specifice pentru a rezolva aceste probleme. Hyperband cu oprire timpurie se asigură că configurațiile hiperparametrilor cu performanțe bune sunt reglate fin, iar cele care au performanțe slabe sunt oprite automat. Acest lucru permite utilizarea eficientă a timpului de antrenament și reduce costurile inutile. De asemenea, SageMaker AMT acceptă pe deplin utilizarea Instanțelor Spot Amazon EC2, care pot optimiza costul instruirii până la 90% peste cazuri la cerere. În ceea ce privește timpii lungi de pornire, SageMaker AMT reutiliza automat instanțele de instruire în cadrul fiecărei sarcini de reglare, reducând astfel timpul mediu de pornire al fiecărei sarcini. job de formare de 20 de ori. În plus, ar trebui să urmați Cele mai bune practici AMT, cum ar fi alegerea hiperparametrilor relevanți, intervalele și scalele adecvate ale acestora și cel mai bun număr de joburi de formare concomitente și setarea unei semințe aleatorii pentru a reproduce rezultatele.
În secțiunea următoare, vedem aceste caracteristici în acțiune pe măsură ce configurăm, rulăm și analizăm un job AMT folosind exemplul XGBoost despre care am discutat mai devreme.
Configurați, rulați și analizați o lucrare de reglare
După cum am menționat mai devreme, codul sursă poate fi găsit pe GitHub repo. În pașii 1–5, descarcăm și pregătim datele, creăm xgb3
estimator (estimatorul XGBoost distribuit este setat să utilizeze trei instanțe), rulați joburile de antrenament și observați rezultatele. În această secțiune, descriem cum să configurați jobul de reglare pentru acel estimator, presupunând că ați parcurs deja pașii 1–5.
Un job de reglare calculează hiperparametri optimi pentru joburile de antrenament pe care le lansează utilizând o metrică pentru a evalua performanța. Puteți configurați propria măsurătoare, pe care SageMaker îl va analiza în funcție de expresia regex pe care o configurați și la care o emitați stdout
, sau utilizați valorile pentru Algoritmi încorporați SageMaker. În acest exemplu, folosim metrica obiectivului XGBoost încorporată, deci nu trebuie să configuram o expresie regex. Pentru a optimiza pentru convergența modelului, optimizăm pe baza valorii AUC de validare:
Ajustăm șapte hiperparametri:
- num_round – Numărul de runde pentru boost în timpul antrenamentului.
- eta – Reducerea mărimii treptei utilizată în actualizări pentru a preveni supraadaptarea.
- alfa – Termen de regularizare L1 pe ponderi.
- greutatea_min_copilului – Suma minimă de greutate a instanței (hessian) necesară la un copil. Dacă pasul de partiție în arbore are ca rezultat un nod frunză cu suma greutății instanței mai mică decât
min_child_weight
, procesul de construire renunță la împărțirea ulterioară. - adancime maxima – Adâncimea maximă a unui copac.
- colsample_bylevel – Raportul subeșantionului de coloane pentru fiecare divizare, în fiecare nivel. Această subeșantionare are loc o dată pentru fiecare nou nivel de adâncime atins într-un copac.
- colsample_bytree – Raportul de subeșantion al coloanelor la construirea fiecărui arbore. Pentru fiecare arbore construit, subeșantionarea are loc o dată.
Pentru a afla mai multe despre hiperparametrii XGBoost, consultați Hiperparametrii XGBoost. Următorul cod arată cei șapte hiperparametri și intervalele lor:
În continuare, oferim configurație pentru strategia Hyperband și configurația obiectului tuner folosind SDK-ul SageMaker. HyperbandStrategyConfig
poate folosi doi parametri: max_resource
(opțional) pentru numărul maxim de iterații de utilizat pentru un job de formare pentru a atinge obiectivul și min_resource
– numărul minim de iterații care trebuie utilizat de un job de formare înainte de oprirea antrenamentului. Folosim HyperbandStrategyConfig
a configura StrategyConfig
, care este folosit ulterior de definiția jobului de reglare. Vezi următorul cod:
Acum creăm un HyperparameterTuner
obiect, căruia îi transmitem următoarele informații:
- Estimatorul XGBoost, setat să ruleze cu trei instanțe
- Numele și definiția metricii obiective
- Intervalele noastre de hiperparametri
- Reglarea configurațiilor resurselor, cum ar fi numărul de joburi de antrenament de rulat în total și câte joburi de antrenament pot fi executate în paralel
- Setări Hyperband (strategia și configurația pe care le-am configurat în ultimul pas)
- Oprire devreme (
early_stopping_type
) setat laOff
De ce setăm oprirea anticipată la Off? Lucrările de instruire pot fi oprite devreme atunci când este puțin probabil ca acestea să îmbunătățească metrica obiectivă a sarcinii de reglare a hiperparametrului. Acest lucru poate ajuta la reducerea timpului de calcul și la evitarea supraadaptării modelului dvs. Cu toate acestea, Hyperband folosește un mecanism avansat încorporat pentru a aplica oprirea timpurie. Prin urmare, parametrul early_stopping_type
trebuie setat la Off
când utilizați caracteristica internă de oprire anticipată Hyperband. Vezi următorul cod:
În cele din urmă, începem lucrarea de reglare automată a modelului apelând la potrivi metodă. Dacă doriți să lansați jobul într-un mod asincron, setați wait
la False
. Consultați următorul cod:
Puteți urmări progresul lucrării și rezumatul pe consola SageMaker. În panoul de navigare, sub Pregătire, alege Lucrări de reglare a hiperparametrilor, apoi alegeți lucrarea de reglare relevantă. Următoarea captură de ecran arată lucrarea de reglare cu detalii despre starea și performanța joburilor de antrenament.
Când lucrarea de reglare este finalizată, putem revizui rezultatele. În exemplul de notebook, arătăm cum să extragem rezultate folosind SDK-ul SageMaker. În primul rând, examinăm modul în care munca de reglare a crescut convergența modelului. Puteți atașa HyperparameterTuner
obiect folosind numele jobului și apelați descrie metodă. Metoda returnează un dicționar care conține metadate și rezultate ale jobului de reglare.
În următorul cod, regăsim valoarea jobului de formare cu cele mai bune performanțe, măsurată de metrica noastră obiectivă (AUC de validare):
Rezultatul este 0.78 în AUC pe setul de validare. Aceasta este o îmbunătățire semnificativă față de 0.63 inițial!
În continuare, să vedem cât de repede a decurs jobul nostru de antrenament. Pentru asta, folosim HyperparameterTuningJobAnalytics metoda din SDK pentru a prelua rezultatele despre sarcina de reglare și a citi într-un cadru de date Pandas pentru analiză și vizualizare:
Să vedem timpul mediu durat un job de formare cu strategia Hyperband:
Timpul mediu a durat aproximativ 1 minut. Acest lucru este în concordanță cu mecanismul strategiei Hyperband, care încetează devreme să nu performanțeze joburile de formare. În ceea ce privește costul, munca de tuning ne-a taxat pentru un total de 30 de minute de timp de antrenament. Fără oprirea anticipată a Hyperband, durata totală de formare facturabilă era de așteptat să fie de 90 de minute (30 de joburi * 1 minut per job * 3 instanțe per job). Aceasta este de trei ori mai bună în economii de costuri! În cele din urmă, vedem că jobul de tuning a rulat 30 de joburi de formare și a durat un total de 12 minute. Adică cu aproape 50% mai puțin din timpul așteptat (30 de joburi/4 joburi în paralel * 3 minute per job).
Concluzie
În această postare, am descris câteva probleme de convergență observate atunci când antrenăm modele cu medii distribuite. Am văzut că SageMaker AMT folosind Hyperband a abordat principalele preocupări pe care le-a introdus optimizarea datelor de formare distribuită în paralel: convergența (care s-a îmbunătățit cu mai mult de 10%), eficiența operațională (lucrarea de reglare a durat cu 50% mai puțin decât ar fi o lucrare secvențială, neoptimizată). pe care le-au luat) și eficiența costurilor (30 față de cele 90 de minute facturabile de timp de pregătire). Următorul tabel rezumă rezultatele noastre:
Metrica de îmbunătățire | Fără implementare Tuning/Naive Model Tuning | Reglarea automată a modelului SageMaker Hyperband | Îmbunătățirea măsurată |
Calitatea modelului (Măsurat prin AUC de validare) |
0.63 | 0.78 | 15% |
A costat (Măsurată prin minute de antrenament facturabile) |
90 | 30 | 66% |
Eficienta operationala (Măsurat prin timpul total de funcționare) |
24 | 12 | 50% |
Pentru a regla fin în ceea ce privește scalarea (dimensiunea clusterului), puteți repeta lucrarea de reglare cu mai multe configurații de cluster și puteți compara rezultatele pentru a găsi hiperparametrii optimi care satisfac viteza și acuratețea modelului.
Am inclus pașii pentru a realiza acest lucru în ultima secțiune a caiet.
Referinte
[1] Lian, Xiangru, et al. „Coborâre asincronă a gradientului stocastic paralel, descentralizat.” Conferință internațională despre învățarea automată. PMLR, 2018.
[2] Keskar, Nitish Shirish, et al. „Despre antrenamentul în loturi mari pentru învățare profundă: decalaj de generalizare și minime clare.” arXiv preprint arXiv: 1609.04836 (2016).
[3] Dai, Wei, et al. „Spre înțelegerea impactului învechirii în învățarea automată distribuită.” arXiv preprint arXiv: 1810.03264 (2018).
[4] Dauphin, Yann N., et al. „Identificarea și atacarea problemei punctului șei în optimizarea neconvexă de dimensiuni înalte.” Progrese în sistemele de procesare a informațiilor neuronale 27 (2014).
Despre autor
Uri Rosenberg este manager tehnic de specialitate AI și ML pentru Europa, Orientul Mijlociu și Africa. Cu sediul în Israel, Uri lucrează pentru a le permite clienților întreprinderilor să proiecteze, să construiască și să opereze sarcini de lucru ML la scară. În timpul liber, îi place să meargă cu bicicleta, să facă drumeții și să se plângă de pregătirea datelor.
- 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. Automobile/VE-uri, carbon, CleanTech, Energie, Mediu inconjurator, Solar, Managementul deșeurilor. Accesați Aici.
- BlockOffsets. Modernizarea proprietății de compensare a mediului. Accesați Aici.
- Sursa: https://aws.amazon.com/blogs/machine-learning/effectively-solve-distributed-training-convergence-issues-with-amazon-sagemaker-hyperband-automatic-model-tuning/
- :are
- :este
- :nu
- $UP
- 1
- 10
- 100
- 12
- 15%
- 20
- 200
- 2014
- 2016
- 2018
- 24
- 27
- 30
- 7
- 8
- 9
- a
- Despre Noi
- Cont
- precizie
- precis
- Obține
- Acțiune
- de fapt
- plus
- În plus,
- adresa
- adrese
- avansat
- afecta
- Africa
- AI
- AL
- Algoritmul
- algoritmi
- Alfa
- deja
- de asemenea
- uimitor
- Amazon
- Amazon EC2
- Amazon SageMaker
- Amazon Web Services
- printre
- an
- analiză
- Google Analytics
- analiza
- și
- O alta
- api
- Aplică
- adecvat
- aproximativ
- SUNT
- AS
- At
- atașa
- atacare
- Automat
- în mod automat
- in medie
- evita
- AWS
- Sold
- bazat
- BE
- deoarece
- înainte
- comportament
- în spatele
- CEL MAI BUN
- Mai bine
- între
- Mare
- stimularea
- atât
- construi
- Clădire
- construit-in
- by
- calcularea
- apel
- apel
- CAN
- Poate obține
- capacități
- categorii
- cauzată
- Schimbare
- încărcat
- copil
- Alege
- alegere
- clic
- Grup
- cod
- Coloană
- Coloane
- cum
- Comun
- comparaţie
- Completă
- Calcula
- preocupările
- concurent
- Conferință
- Configuraţie
- configurat
- Lua în considerare
- consistent
- Consoleze
- construirea
- Containere
- conține
- continuu
- Convergenţă
- A costat
- costisitor
- Cheltuieli
- ar putea
- crea
- personalizat
- clienţii care
- DAI
- de date
- Pregătirea datelor
- descentralizată
- adânc
- învățare profundă
- definiție
- întârzieri
- demonstra
- adâncime
- descrie
- descris
- Amenajări
- desemnat
- detalii
- FĂCUT
- diferit
- discutat
- distribuite
- instruire distribuită
- distribuire
- distribuire
- do
- documentaţie
- Nu
- făcut
- Dont
- jos
- Descarca
- Picătură
- două
- durată
- în timpul
- E&T
- fiecare
- Mai devreme
- Devreme
- cu ușurință
- Est
- efect
- în mod eficient
- eficiență
- eficient
- angajează
- împuternici
- permite
- permite
- asigură
- Afacere
- Mediu inconjurator
- medii
- mai ales
- Europa
- evalua
- Chiar
- Fiecare
- examina
- exemplu
- de aşteptat
- experimente
- Explica
- explora
- extrage
- factor
- factori
- Modă
- FAST
- mai repede
- Caracteristică
- DESCRIERE
- puțini
- În cele din urmă
- Găsi
- First
- potrivi
- urma
- următor
- Pentru
- format
- găsit
- patru
- FRAME
- din
- complet
- funcţie
- mai mult
- În plus
- decalaj
- generativ
- AI generativă
- Generatoare
- obține
- obtinerea
- oferă
- bine
- GPU
- unități de procesare grafică
- gradienți
- mai mare
- Creștere
- întâmpla
- Avea
- având în
- he
- ajutor
- lui
- Lovit
- Cum
- Cum Pentru a
- Totuși
- HTML
- http
- HTTPS
- Reglarea hiperparametrului
- if
- imagini
- Impactul
- Impacturi
- îmbunătăţi
- îmbunătățit
- îmbunătățire
- in
- inclus
- a crescut
- informații
- Infrastructură
- inițială
- instanță
- in schimb
- intern
- în
- introduce
- introdus
- Israel
- probleme de
- IT
- iterații
- ESTE
- Loc de munca
- Locuri de munca
- A pastra
- L1
- limbă
- mare
- mai mare
- Nume
- mai tarziu
- lansa
- lansează
- lansare
- conduce
- Conduce
- AFLAȚI
- învăţare
- mai puțin
- Nivel
- biblioteci
- ca
- local
- Lung
- mai lung
- de pe
- maşină
- masina de învățare
- făcut
- Principal
- gestionate
- manager
- multe
- masiv
- maxim
- Mai..
- mijloace
- mecanism
- menționat
- Metadata
- metodă
- Metode
- metric
- Metrici
- De mijloc
- Orientul Mijlociu
- ar putea
- minim
- minut
- minute
- ML
- model
- Modele
- mai mult
- cele mai multe
- multiplu
- înmulțit
- trebuie sa
- nume
- Natural
- Navigare
- Nevoie
- necesar
- nevoilor
- rețele
- rețele neuronale
- Nou
- următor
- Nu.
- nod
- noduri
- caiet
- număr
- obiect
- obiectiv
- observa
- of
- de pe
- oficial
- de multe ori
- on
- La cerere
- dată
- ONE
- afară
- de deschidere
- funcionar
- operațional
- optimă
- optimizare
- Optimizați
- optimizarea
- or
- comandă
- al nostru
- afară
- peste
- global
- propriu
- panda
- pâine
- Paralel
- parametru
- parametrii
- trece
- pentru
- performanță
- Loc
- Plato
- Informații despre date Platon
- PlatoData
- Punct
- puncte
- sărac
- posibilităţile de
- eventual
- Post
- practică
- pregătire
- Pregăti
- împiedica
- Problemă
- proces
- prelucrare
- procesoare
- Progres
- propus
- furniza
- prevăzut
- furnizează
- aleator
- raport
- atins
- Citeste
- motive
- recent
- recomandat
- reduce
- Redus
- reduce
- reducerea
- ceea ce privește
- regex
- repeta
- necesita
- Necesită
- cercetători
- resursă
- Resurse
- rezultat
- REZULTATE
- Returnează
- revizuiască
- runde
- RÂND
- Alerga
- funcţionare
- sagemaker
- Reglarea automată a modelului SageMaker
- acelaşi
- Economisiți
- văzut
- spune
- SC
- Scară
- cântare
- scalare
- sdk
- căutare
- Secțiune
- vedea
- sămânţă
- văzut
- selectarea
- Servere
- serviciu
- Servicii
- set
- instalare
- setări
- configurarea
- Șapte
- ascuţit
- să
- Arăta
- indicat
- Emisiuni
- Închide
- semnificativ
- semnificativ
- simplu
- singur
- Mărimea
- So
- REZOLVAREA
- unele
- Sursă
- cod sursă
- Spaţiu
- specialist
- specific
- viteză
- împărţi
- șpalturi
- Loc
- Începe
- Pornire
- lansare
- Stare
- Pas
- paşi
- oprit
- oprire
- opriri
- depozitare
- Strategie
- astfel de
- a suferit
- REZUMAT
- a sustine
- Sprijină
- tabel
- luate
- ia
- Tehnic
- tehnici de
- tensorflow
- durată
- termeni
- decât
- acea
- Sursa
- lor
- Lor
- apoi
- Acolo.
- astfel
- prin urmare
- Acestea
- ei
- acest
- aceste
- trei
- Prin
- timp
- ori
- la
- a luat
- Total
- trafic
- Tren
- dresat
- Pregătire
- Transferuri
- copac
- încerca
- De două ori
- Două
- Tipuri
- tipic
- în
- înţelegere
- improbabil
- inutil
- actualizat
- actualizări
- actualizarea
- us
- utilizare
- utilizat
- utilizări
- folosind
- folosi
- validare
- valoare
- Valori
- vizualizare
- vs
- vrea
- a fost
- Cale..
- we
- web
- servicii web
- greutate
- a mers
- cand
- întrucât
- care
- de ce
- Wikipedia
- voi
- cu
- în
- fără
- muncitorii
- fabrică
- mai rău
- ar
- XGBoost
- ani
- Tu
- Ta
- zephyrnet