Nou în

Efectuarea mai rapidă a lui Stata

Stata valorează precizia și viteza. Există adesea un compromis între cele două, dar Stata se străduiește să ofere utilizatorilor ce este mai bun din ambele lumi. Ne optimizăm și îmbunătățim continuu rutinele pentru a utiliza puterea de calcul modernă și algoritmi, astfel încât Stata să ruleze și mai repede.
În Stata 17, am actualizat algoritmii din spatele sortării și colapsului pentru a face aceste comenzi mai rapide. Mult mai repede. Deoarece comanda de sortare este utilizată de multe alte comenzi Stata, și aceste comenzi sunt mai rapide. sortarea este mai rapidă de 1,5 și chiar 6 ori așa cum se arată în Tabelul 1 de mai jos. De exemplu, cu 10 milioane de observații și 20 de variabile, temporizările au scăzut la aproape 3 secunde în Stata / SE 17 de la aproape 20 de secunde în Stata / SE 16!

Repere

    • sortarea este mult mai rapidă.
    • colapsul este mult mai rapid.
    • Funcțiile și operatorii Mata alimentați de MKL sunt mai rapide.
    • Modelele mixte sunt mai rapide.

importul delimitat este acum paralelizat în Stata / MP.

Table 1: Stata 17 versus Stata 16 timings in seconds for 20 variables and different observation numbers and edition combinations
  Mean timings in seconds
Observations and edition Stata 17 Stata 16 Speedup
10,000  
SE 0.08 0.35 4.42
MP4 0.07 0.14 2.02
MP8 0.06 0.10 1.79
100,000  
SE 0.14 0.54 3.75
MP4 0.10 0.23 2.36
MP8 0.08 0.16 1.97
1,000,000  
SE 0.25 0.77 3.14
MP4 0.16 0.44 2.83
MP8 0.14 0.32 2.54
10,000,000  
SE 3.34 19.76 5.92
MP4 2.06 6.90 3.35
MP8 1.89 5.50 2.91
Timings run in Windows 10 on a computer with an i9-9900KS processor at 4.00GHz and 64GB RAM

Comanda de colaps creează un set de date cu statistici rezumate și este una dintre cele mai utilizate comenzi de gestionare a datelor. Pe măsură ce dimensiunea datelor crește, crește în mod necesar timpul de rulare. În Stata 17, în funcție de dimensiunea setului de date, colapsul vede accelerații între 6 și 13 ori pentru calculul unei medii simple și între 40 și 70 de ori pentru calculul statisticilor, cum ar fi medianele și abaterile standard. Tabelul 2 prezintă rezultatele pentru prăbușirea unui set de date cu 10.000.000 de observații și un număr variabil de variabile prăbușite pentru cazul în care calculăm mediane și abateri standard.

Table 2: Stata 17 versus Stata 16 timings in seconds for 10,000,000 observations for different variable number and edition combinations
Variables and edition Stata 17 Stata 16 Speedup
10  
SE .3412143 13.96871 40.96581
MP4 .23 16.39493 71.29675
MP8 .2091429 13.41664 64.17162
100  
SE .3068571 13.86514 45.1849d
MP4 .2205714 16.06886 72.86166
MP8 .196 13.41314 68.43816
1,000  
SE .3437143 13.994 40.73298
MP4 .2277143 16.34614 71.79339
MP8 .2117143 13.39286 63.26852
10,000  
SE .3392857 13.92886 41.09007
MP4 .2287143 16.149 70.61243
MP8 .207 13.36543 64.58582
100,000  
SE .3177143 13.97943 44.03442
MP4 .224 16.22057 72.43024
MP8 .1944286 13.38586 68.85059
Timings run in Windows 10 on a computer with an i9-9900KS processor at 4.00GHz and 64GB RAM

Pentru Stata 17, am obținut, de asemenea, îmbunătățiri ale vitezei de estimare. Pachetul de algebră liniară (LAPACK) care stă la baza multor funcții și operatori Mata este acum alimentat de Intel Math Kernel Library (MKL). Cât de rapid este noul MKL? Înmulțirea unei matrici reale 5.000 cu 5.000 în Stata / SE cu o matrice reală de aceeași dimensiune durează aproximativ 13 secunde folosind MKL în Stata 17 comparativ cu 70 de secunde în Stata 16.

Momentul multiplicării a două matrice reale în secunde:

Edition Size MKL non-MKL
MP8 5,000 by 5,000 2.55 10.26
MP8 10,000 by 10,000 17.28 85.60
   
MP4 5,000 by 5,000 3.62 15.95
MP4 10,000 by 10,000 28.22 127.24
   
SE 5,000 by 5,000 13.64 70.61
SE 10,000 by 10,000 108.33 566.99
Timings run in Windows 10 on a computer with an i9-9900KS processor at 4.00GHz and 64GB RAM

Momentulcholesky() în secunde:

Edition Size MKL non-MKL
MP8 5,000 by 5,000 0.42 16.69
MP8 10,000 by 10,000 2.91 133.60
   
MP4 5,000 by 5,000 0.69 16.69
MP4 10,000 by 10,000 5.03 133.70
   
SE 5,000 by 5,000 2.41 18.62
SE 10,000 by 10,000 16.66 133.63
Timings run in Windows 10 on a computer with an i9-9900KS processor at 4.00GHz and 64GB RAM

LAPACK este utilizat în calcule de mai multe comenzi de estimare, deci și ele sunt automat mai rapide.
Comanda de delimitare pentru importul de date din CSV și alte fișiere text delimitate este acum paralelizată în Stata / MP. Importă seturi de date mari de până la patru ori mai rapid în Stata 17.
Nu în ultimul rând, comanda mixtă pentru montarea modelelor cu efecte mixte pe mai multe niveluri este mai rapidă. În timpii noștri, modelele cu 10.000 de panouri, 10 perioade de timp și 5 parametri de panta aleatorii rulează de 2 până la 3 ori mai repede în Stata 17 decât în Stata 16. Îmbunătățiri similare ale vitezei au avut loc pentru diferite numere de panouri, perioade de timp și coeficienți de panta.
Căutăm continuu modalități de a face Stata mai rapidă. Investigăm activ, codificăm și testăm noi algoritmi în rutina de gestionare și estimare a datelor și vă vom ține la curent cu cele mai recente evoluții.

Referințe

Hunter, J. D. 2007. Matplotlib: Un mediu grafic 2D. Calcul în știință și inginerie 9: 90-95.
McDowell, A., A. Engel, J. T. Massey și K. Maurer. 1981. Planul și funcționarea celui de-al doilea sondaj național de examinare a sănătății și nutriției, 1976–1980. Statistici vitale și de sănătate 1 (15): 1–144.
Mckinney, W. 2010. Structuri de date pentru calculul statistic în Python. Lucrările celei de-a 9-a conferințe Python in Știință, 56-61. (linkul editorului).
Oliphant, T. E. 2006. A Guide to NumPy, 2nd ed. Austin, TX: Continuum Press. Oliphant, T. E. 2006. Un ghid pentru NumPy, ed. A 2-a. Austin, TX: Continuum Press.
Péz, F. și B. E. Granger. 2007. IPython: Calcul științific interactiv, calcul în Știință și Inginerie 9: 21-29. DOI: 10.1109 / MCSE.2007.53 (link editor)