Ինչպես օգտագործել NVIDIA GPU-ները արհեստական ​​ինտելեկտի մարզումների համար

Ինչպես օգտագործել NVIDIA GPU-ները արհեստական ​​ինտելեկտի մարզումների համար

Կարճ պատասխան. nvidia-smi-ի միջոցով ստուգելով, որ դրայվերը և GPU-ն տեսանելի են , այնուհետև տեղադրելով համատեղելի framework/CUDA stack և գործարկելով փոքրիկ «model + batch on cuda» թեստը: Եթե հիշողությունը սպառվել է, նվազեցրեք batch-ի չափը և օգտագործեք խառը ճշգրտություն՝ միաժամանակ վերահսկելով օգտագործումը, հիշողությունը և ջերմաստիճանը:

Հիմնական եզրակացություններ՝

Հիմնական ստուգումներ . Սկսեք nvidia-smi- ; շտկեք դրայվերի տեսանելիությունը նախքան շրջանակները տեղադրելը։

Ստեքի համատեղելիություն . Պահպանեք դրայվերի, CUDA-ի գործարկման և շրջանակի տարբերակների համապատասխանությունը՝ խափանումներից և անկայուն տեղադրումներից խուսափելու համար։

Փոքրիկ հաջողություն . փորձարկումները մասշտաբավորելուց առաջ հաստատեք CUDA-ի վրա մեկ առաջ անցման կատարումը։

VRAM կարգապահություն . հենվեք խառը ճշգրտության, գրադիենտային կուտակման և ստուգիչ կետերի վրա՝ ավելի մեծ մոդելներին համապատասխանելու համար։

Մոնիթորինգի սովորություն . հետևեք օգտագործմանը, հիշողության օրինաչափություններին, հզորությանը և ջերմաստիճաններին, որպեսզի վաղ հայտնաբերեք խոչընդոտները:

Հոդվածներ, որոնք կարող են ձեզ դուր գալ կարդալ սրանից հետո

🔗 Ինչպես ստեղծել արհեստական ​​բանականության գործակալ
Նախագծեք ձեր գործակալի աշխատանքային հոսքը, գործիքները, հիշողությունը և անվտանգության միջոցները։.

🔗 Ինչպես տեղակայել արհեստական ​​բանականության մոդելները
Հուսալիորեն կարգավորեք միջավայրերը, փաթեթավորեք մոդելները և առաքեք արտադրության։.

🔗 Ինչպես չափել արհեստական ​​բանականության արդյունավետությունը
Ընտրեք չափանիշներ, անցկացրեք գնահատումներ և հետևեք արդյունավետությանը ժամանակի ընթացքում։.

🔗 Ինչպես ավտոմատացնել առաջադրանքները արհեստական ​​բանականության միջոցով
Ավտոմատացրեք կրկնվող աշխատանքը՝ օգտագործելով հուշումներ, աշխատանքային հոսքեր և ինտեգրացիաներ։.


1) Ընդհանուր պատկերը՝ ինչ եք անում, երբ «մարզվում եք GPU-ով» 🧠⚡

Երբ դուք մարզում եք արհեստական ​​բանականության մոդելներ, դուք հիմնականում կատարում եք մատրիցային մաթեմատիկայի մի ամբողջ լեռ։ Գրաֆիկական պրոցեսորները նախատեսված են նման զուգահեռ աշխատանքի համար, ուստի PyTorch-ի, TensorFlow-ի և JAX-ի նման շրջանակները կարող են ծանր բեռը թեթևացնել գրաֆիկական պրոցեսորի վրա։ ( PyTorch CUDA փաստաթղթեր , TensorFlow տեղադրում (pip) , JAX արագ մեկնարկ )

Գործնականում «NVIDIA GPU-ների օգտագործումը մարզումների համար» սովորաբար նշանակում է

  • Ձեր մոդելի պարամետրերը (հիմնականում) գտնվում են GPU VRAM-ում

  • Ձեր խմբաքանակները RAM-ից տեղափոխվում են VRAM յուրաքանչյուր քայլով

  • Ձեր առաջ և հետընթաց փոխանցումները կատարվում են CUDA միջուկների վրա ( CUDA ծրագրավորման ուղեցույց )

  • Ձեր օպտիմիզատորի թարմացումները տեղի են ունենում GPU-ի վրա (իդեալականում)

  • Դուք վերահսկում եք ջերմաստիճանը, հիշողությունը, օգտագործումը, որպեսզի ոչինչ չեփեք 🔥 ( NVIDIA nvidia-smi փաստաթղթեր )

Եթե ​​դա շատ է թվում, մի անհանգստացեք։ Դա հիմնականում ստուգաթերթիկ է և մի քանի սովորություններ, որոնք դուք ժամանակի ընթացքում եք ձեռք բերում։.


2) Ի՞նչն է NVIDIA GPU AI մարզումների համակարգի լավ տարբերակը դարձնում 🤌

Սա «մի՛ կառուցեք տուն ժելեի վրա» բաժինն է։ NVIDIA GPU-ների արհեստական ​​ինտելեկտի մարզումների համար է այն, որը ցածր դրամա է։ Ցածր դրամա է կայունը։ Կայուն է արագը։ Արագը… լավ, արագ է 😄

Հաստատուն մարզման համակարգը սովորաբար ներառում է

  • Բավարար VRAM ձեր խմբաքանակի չափի + մոդելի + օպտիմիզատորի վիճակների համար

    • VRAM-ը նման է ճամպրուկի տարածքի։ Կարող ես ավելի խելացիորեն փաթեթավորել, բայց անվերջ չես կարող փաթեթավորել։.

  • Համապատասխան ծրագրային ապահովման փաթեթ (դրայվեր + CUDA runtime + framework համատեղելիություն) ( PyTorch Get Started (CUDA selector) , TensorFlow install (pip) )

  • Արագ պահեստավորում (NVMe-ն շատ է օգնում մեծ տվյալների հավաքածուների համար)

  • Լավ CPU + RAM, այնպես որ տվյալների բեռնումը չի ծանրաբեռնում GPU-ն ( PyTorch-ի կատարողականի կարգավորման ուղեցույց )

  • Սառեցման և հզորության հզորություն (չգնահատված մինչև վերջ 😬)

  • Վերարտադրելի միջավայր (venv/conda կամ կոնտեյներներ), որպեսզի թարմացումները չվերածվեն քաոսի ( NVIDIA կոնտեյներների գործիքակազմի ակնարկ )

Եվս մեկ բան, որը մարդիկ բաց են թողնում

  • Մոնիթորինգի սովորություն . դուք ստուգում եք GPU հիշողությունը և օգտագործումը, ինչպես հայելիները նայում եք վարելիս: ( NVIDIA nvidia-smi փաստաթղթեր )


3) Համեմատական ​​աղյուսակ - NVIDIA GPU-ներով մարզվելու հայտնի եղանակներ (առանձնահատկություններով) 📊

Ստորև բերված է արագ «որն է համապատասխանում» խորամանկ հարցաթերթիկը։ Գները մոտավոր են (քանի որ իրականությունը տարբեր է), և այո, այս բջիջներից մեկը մի փոքր անկապ է, միտումնավոր։.

Գործիք / մոտեցում Լավագույնը Գինը Ինչու է այն աշխատում (հիմնականում)
PyTorch (վանիլային) PyTorch մարդկանց մեծ մասը, նախագծերի մեծ մասը Անվճար Ճկուն, հսկայական էկոհամակարգ, հեշտ վրիպազերծում - նաև բոլորն ունեն կարծիքներ
PyTorch Lightning Lightning փաստաթղթերը թիմեր, կառուցվածքային մարզումներ Անվճար Նվազեցնում է ստանդարտ, ավելի մաքուր ցիկլերը. երբեմն թվում է «կախարդանք», մինչև որ այլևս չի գործում
Գրկախառնվող դեմք Տրանսֆորմերներ + Մարզիչ Մարզիչի փաստաթղթեր NLP + LLM նուրբ կարգավորում Անվճար Մարտկոցներով հագեցած մարզում, հիանալի կարգավորումներ, արագ հաղթանակներ 👍
Արագացնել Արագացնել փաստաթղթերը բազմա-GPU առանց ցավի Անվճար DDP-ն դարձնում է պակաս նյարդայնացնող, հարմար է մասշտաբը մեծացնելու համար՝ առանց ամեն ինչ վերաշարադրելու։
DeepSpeed ​​ZeRO փաստաթղթեր մեծ մոդելներ, հիշողության հնարքներ Անվճար ZeRO, բեռնաթափում, մասշտաբավորում - կարող են լինել բարդ, բայց բավարարող, երբ սեղմում են
TensorFlow + Keras TF տեղադրում արտադրական խողովակաշարեր Անվճար Հզոր գործիքակազմ, լավ տեղակայման պատմություն. ոմանց դուր է գալիս, ոմանց՝ աննկատ՝ ոչ
JAX + Flax JAX արագ մեկնարկ / Flax փաստաթղթեր հետազոտություն + արագության սիրահարներ Անվճար XLA կոմպիլյացիան կարող է աներևակայելի արագ լինել, բայց վրիպազերծումը կարող է թվալ… աբստրակտ
NVIDIA NeMo NeMo-ի ակնարկ խոսքի + իրավունքի կառավարման աշխատանքային հոսքեր Անվճար NVIDIA-ի համար օպտիմալացված հավաքածու, լավ բաղադրատոմսեր՝ զգացողություն է, կարծես թե պատրաստում եք շքեղ ջեռոցում 🍳
Docker + NVIDIA Container Toolkit գործիքակազմի ակնարկ վերարտադրելի միջավայրեր Անվճար «Աշխատում է իմ մեքենայի վրա» դառնում է «աշխատում է մեր մեքենաների վրա» (կրկին, հիմնականում)

4) Քայլ մեկ՝ համոզվեք, որ ձեր GPU-ն ճիշտ է երևում 🕵️♂️

Մինչև տասնյակ բաներ տեղադրելը, ստուգեք հիմունքները։.

Բաներ, որոնք դուք կցանկանայիք, որ իրական լինեն

  • Մեքենան տեսնում է գրաֆիկական պրոցեսորը

  • NVIDIA դրայվերը ճիշտ է տեղադրված

  • GPU-ն ուրիշ բանով չի զբաղված

  • Դուք կարող եք հուսալիորեն հարցնել այն

Դասական ստուգումը հետևյալն է

Ինչ եք փնտրում՝

  • GPU-ի անվանումը (օրինակ՝ RTX, A-սերիա և այլն)

  • Վարորդի տարբերակը

  • Հիշողության օգտագործումը

  • Գործող գործընթացներ ( NVIDIA nvidia-smi փաստաթղթեր )

Եթե ​​nvidia-smi-ն ձախողվի, կանգ առեք այստեղ։ Դեռ մի տեղադրեք շրջանակներ։ Դա նման է հաց թխելու փորձին, երբ ձեր վառարանը միացված չէ։ ( NVIDIA համակարգի կառավարման ինտերֆեյս (NVSMI) )

Փոքր մարդկային նշում. երբեմն nvidia-smi-ն աշխատում է, բայց ձեր մարզումը դեռևս ձախողվում է, քանի որ ձեր շրջանակի կողմից օգտագործվող CUDA runtime-ը չի համապատասխանում դրայվերի սպասումներին: Դուք հիմարություն չեք անում: Ահա թե ինչպես է… պարզապես այդպես է 😭 ( PyTorch Get Start (CUDA selector) , TensorFlow install (pip) )


5) Կառուցեք ծրագրային ապահովման փաթեթը՝ դրայվերներ, CUDA, cuDNN և «համատեղելիության պարը» 💃

Ահա թե որտեղ են մարդիկ ժամեր կորցնում։ Հնարքն այն է, որ ընտրեք ուղի և հետևեք դրան ։

Ընտրանք A. Framework-ի հետ համատեղելի CUDA (հաճախ ամենահեշտը)

Շատ PyTorch համակարգեր ունեն իրենց սեփական CUDA runtime-ը, ինչը նշանակում է, որ ձեզ անհրաժեշտ չէ համակարգում տեղադրված CUDA գործիքակազմի ամբողջական փաթեթ։ Հիմնականում ձեզ անհրաժեշտ է միայն համատեղելի NVIDIA դրայվեր։ ( PyTorch-ի մեկնարկ (CUDA selector) , PyTorch-ի նախորդ տարբերակներ (CUDA wheels) )

Առավելություններ՝

  • Ավելի քիչ շարժվող մասեր

  • Ավելի հեշտ տեղադրումներ

  • Ավելի վերարտադրելի է յուրաքանչյուր միջավայրի համար

Թերություններ՝

  • Եթե ​​​​միջավայրերը պատահականորեն խառնեք, կարող եք շփոթվել

Ընտրանք B. Համակարգի CUDA գործիքակազմ (ավելի շատ վերահսկողություն)

Դուք տեղադրում եք CUDA գործիքակազմը համակարգի վրա և ամեն ինչ համապատասխանեցնում դրան։ ( CUDA Toolkit փաստաթղթեր )

Առավելություններ՝

  • Ավելի շատ վերահսկողություն պատվերով կառուցվածքների համար, որոշ հատուկ գործիքակազմ

  • Հարմար է որոշակի գործողությունների կոմպիլյացիայի համար

Թերություններ՝

  • Ավելի շատ եղանակներ՝ տարբերակները չհամապատասխանելու և լուռ լաց լինելու համար

cuDNN և NCCL, մարդկային առումով

  • cuDNN-ը արագացնում է խորը ուսուցման պրիմիտիվները (փաթաթումներ, RNN բիթեր և այլն) ( NVIDIA cuDNN փաստաթղթեր )

  • NCCL-ը արագ «GPU-ից GPU հաղորդակցության» գրադարան է բազմա-GPU մարզումների համար ( NCCL-ի ակնարկ ):

Եթե ​​դուք մարզվում եք բազմաթիվ գրաֆիկական պրոցեսորներով, NCCL-ը ձեր լավագույն ընկերն է, իսկ երբեմն՝ նաև ձեր քմահաճ սենյակակիցը։ ( NCCL-ի ակնարկ )


6) Ձեր առաջին GPU մարզումը (PyTorch-ի օրինակով մտածելակերպ) ✅🔥

NVIDIA GPU-ների արհեստական ​​ինտելեկտի մարզումների համար օգտագործման ուղեցույցը հետևելու համար ձեզ նախ մեծ նախագիծ պետք չէ։ Ձեզ անհրաժեշտ է փոքրիկ հաջողություն։

Հիմնական գաղափարներ՝

  • Սարքի հայտնաբերում

  • Տեղափոխել մոդելը GPU-ի վրա

  • Տեղափոխել թենզորները GPU

  • Հաստատեք առաջ անցումները այնտեղ ( PyTorch CUDA փաստաթղթեր )

Բաներ, որոնցով ես միշտ շուտ եմ ստուգում իմ ողջամտությունը

Հաճախ հանդիպող «ինչու՞ է դանդաղ» հարցերը

  • Ձեր տվյալների բեռնիչը չափազանց դանդաղ է (GPU-ն անգործուն է) ( PyTorch-ի աշխատանքի կարգավորման ուղեցույց )

  • Դուք մոռացել եք տվյալները տեղափոխել GPU (վա՜յ):

  • Փաթեթի չափը փոքր է (GPU-ն թերօգտագործված է)

  • Դուք մարզման փուլում ծանրաբեռնված եք CPU նախնական մշակմամբ

Այո՛, ձեր գրաֆիկական պրոցեսորը հաճախ «այնքան էլ զբաղված» չի թվում, եթե խնդիրը տվյալները են։ Դա նման է մրցարշավորդ վարձելուն, ապա նրան ամեն շրջանի վառելիքի սպասեցնելուն։.


7) VRAM խաղը՝ խմբաքանակի չափ, խառը ճշգրտություն և ոչ պայթուցիկ 💥🧳

Գործնական մարզման խնդիրների մեծ մասը հանգում է հիշողությանը։ Եթե դուք սովորում եք մեկ հմտություն, սովորեք VRAM կառավարում։.

Հիշողության օգտագործումը կրճատելու արագ եղանակներ

  • Խառը ճշգրտություն (FP16/BF16)

  • Գրադիենտային կուտակում

  • Ավելի փոքր հաջորդականության երկարություն / կտրվածքի չափ

    • Դաժան, բայց արդյունավետ

  • Ակտիվացման ստուգիչ ստուգում

    • Փոխանակեք հաշվարկը հիշողության հետ (վերահաշվարկեք ակտիվացումները հետընթացի ընթացքում) ( torch.utils.checkpoint )

  • Օգտագործեք ավելի թեթև օպտիմիզատոր

    • Որոշ օպտիմիզատորներ պահպանում են լրացուցիչ վիճակներ, որոնք կլանում են VRAM-ը։

«Ինչո՞ւ է VRAM-ը դեռ լիքը, երբ ես կանգ եմ առնում» պահը

Ֆրեյմվորքները հաճախ քեշավորում են հիշողությունը ՝ կատարողականության համար։ Սա նորմալ է։ Սա սարսափելի է թվում, բայց միշտ չէ, որ արտահոսք է։ Դուք սովորում եք կարդալ օրինաչափությունները։ ( PyTorch CUDA semantics: caching allocator )

Գործնական սովորություն

  • Հատկացված և պահուստավորված հիշողության դիտում (շրջանակին հատուկ) ( PyTorch CUDA semantics: caching allocator )

  • Մի՛ խուճապի մատնվեք առաջին սարսափելի թվից 😅


8) Իրականացրեք GPU-ի աշխատունակությունը՝ ժամանակի արժեք ունեցող կատարողականի կարգավորում 🏎️

«GPU-ի մարզումը աշխատեցնելը» առաջին քայլն է։ Այն արագացնելը ՝ երկրորդ քայլը։

Բարձր ազդեցության օպտիմալացումներ

  • Մեծացրեք խմբաքանակի չափը (մինչև ցավը սկսվի, ապա մի փոքր նվազեցրեք)

  • Օգտագործեք ամրացված հիշողություն տվյալների բեռնիչներում (հոսթից սարք ավելի արագ պատճեններ) ( PyTorch-ի աշխատանքի կարգավորման ուղեցույց , PyTorch pin_memory/non_blocking ձեռնարկ )

  • Ավելացրեք տվյալների բեռնիչի աշխատողների քանակը (զգույշ եղեք, չափազանց շատերը կարող են հակառակ արդյունք տալ) ( PyTorch-ի կատարողականի կարգավորման ուղեցույց )

  • Նախնական ներբեռնումը խմբաքանակներով է կատարվում , որպեսզի GPU-ն չաշխատի անգործուն վիճակում

  • Օգտագործեք միաձուլված գործողություններ / օպտիմիզացված միջուկներ , երբ հասանելի է

  • Օգտագործեք խառը ճշգրտություն (կրկին, դա այդքան լավ է) ( PyTorch AMP փաստաթղթեր )

Ամենաանտեսված խոչընդոտը

Ձեր պահեստավորման և նախնական մշակման խողովակաշարը։ Եթե ձեր տվյալների բազմությունը հսկայական է և պահվում է դանդաղ սկավառակի վրա, ձեր գրաֆիկական պրոցեսորը դառնում է թանկարժեք տարածքային ջեռուցիչ։ Շատ առաջադեմ, շատ փայլուն տարածքային ջեռուցիչ։.

Նաև, մի փոքրիկ խոստովանություն. ես մեկ ժամ «օպտիմալացրել» եմ մոդելը, միայն թե հասկացա, որ գրանցման գործընթացը խոչընդոտ է։ Շատ տպագրելը կարող է դանդաղեցնել մարզումը։ Այո, կարող է։.


9) Բազմա-GPU մարզում - DDP, NCCL և մասշտաբավորում առանց քաոսի 🧩🤝

Երբ ուզում եք ավելի մեծ արագություն կամ ավելի մեծ մոդելներ, ապա օգտագործում եք բազմա-տեսա-կարող։ Ահա թե որտեղ է ամեն ինչ ավելի բարդանում։.

Ընդհանուր մոտեցումներ

  • Տվյալների զուգահեռ (DDP)

    • Բաժանեք խմբաքանակները GPU-ների միջև, համաժամեցրեք գրադիենտները

    • Սովորաբար լռելյայն «լավ» տարբերակն է ( PyTorch DDP փաստաթղթեր )

  • Մոդելային զուգահեռ / Տենզորային զուգահեռ

    • Մոդելը բաժանեք GPU-ների միջև (շատ մեծ մոդելների համար)

  • Խողովակաշարի զուգահեռ

    • Մոդելի շերտերը բաժանել փուլերի (ինչպես հավաքման գծում, բայց թենզորների համար)

Եթե ​​նոր եք սկսում, DDP ոճի մարզումը լավագույն տարբերակն է: ( PyTorch DDP ձեռնարկ )

Գործնական խորհուրդներ բազմա-GPU-ի համար

  • Համոզվեք, որ գրաֆիկական պրոցեսորները նմանապես կարող են աշխատել (խառնումը կարող է խոչընդոտ լինել)

  • Դիտեք միջկապը. NVLink-ը և PCIe-ն կարևոր են համաժամեցման ծանրաբեռնվածության դեպքում ( NVIDIA NVLink-ի ակնարկ , NVIDIA NVLink փաստաթղթեր )

  • Պահպանեք մեկ GPU-ի համար խմբաքանակների չափերի հավասարակշռությունը

  • Մի անտեսեք պրոցեսորը և պահեստը. բազմա-տեսախցիկ պրոցեսորը կարող է մեծացնել տվյալների խցանումները

Եվ այո, NCCL սխալները կարող են թվալ հանելուկ, որը փաթաթված է «ինչու՞ հիմա» հարցի մեջ։ Դուք անիծված չեք։ Հավանաբար։ ( NCCL-ի ակնարկ )


10) Մոնիթորինգ և պրոֆիլավորում՝ ոչ հմայիչ բաներ, որոնք ձեզ ժամեր են խնայում 📈🧯

Սկսելու համար ձեզ պետք չեն շքեղ վահանակներ։ Դուք պետք է նկատեք, երբ ինչ-որ բան սխալ է։.

Հիմնական ազդանշաններ, որոնք պետք է դիտարկել

  • GPU-ի օգտագործումը . այն մշտապես բարձր է, թե՞ կտրուկ։

  • Հիշողության օգտագործումը . կայուն, բարձրացող, թե՞ տարօրինակ։

  • Էլեկտրաէներգիայի սպառում . անսովոր ցածրը կարող է նշանակել թերօգտագործում

  • Ջերմաստիճաններ . բարձր ջերմաստիճանի կայունությունը կարող է դանդաղեցնել աշխատանքի արդյունավետությունը

  • CPU-ի օգտագործումը . տվյալների փոխանցման խողովակաշարի խնդիրները երևում են այստեղ ( PyTorch-ի աշխատանքի կարգավորման ուղեցույց )

Պրոֆիլավորման մտածելակերպ (պարզ տարբերակ)

  • Եթե ​​GPU-ն ցածր է օգտագործվում՝ տվյալների կամ CPU-ի խցանում

  • Եթե ​​GPU-ն բարձր է, բայց դանդաղ՝ միջուկի անարդյունավետություն, ճշգրտություն կամ մոդելի ճարտարապետություն

  • Եթե ​​մարզման արագությունը պատահականորեն նվազում է՝ ջերմային սահմանափակում, ֆոնային գործընթացներ, մուտքի/ելքի խափանումներ

Գիտեմ, մոնիթորինգը զվարճալի չի թվում։ Բայց դա նման է ատամնաթել օգտագործելուն։ Նյարդայնացնող է, բայց հանկարծ կյանքդ լավանում է։.


11) Անսարքությունների լուծում՝ սովորական կասկածյալներ (և ոչ այնքան սովորականներ) 🧰😵💫

Այս բաժինը հիմնականում հետևյալն է. «նույն հինգ հարցերը՝ ընդմիշտ»։

Խնդիր՝ CUDA-ի հիշողությունը սպառվել է

Շտկումներ՝

Խնդիր. Մարզումը պատահաբար է աշխատում պրոցեսորի վրա

Շտկումներ՝

  • համոզվեք, որ մոդելը տեղափոխվել է CUDA

  • համոզվեք, որ թենզորները տեղափոխվել են CUDA

  • Ստուգեք շրջանակային սարքի կարգավորումը ( PyTorch CUDA փաստաթղթեր )

Խնդիր՝ Տարօրինակ խափանումներ կամ հիշողությանը անօրինական մուտք

Շտկումներ՝

  • հաստատել դրայվերի + գործարկման ժամանակի համատեղելիությունը ( PyTorch Get Started (CUDA selector) , TensorFlow install (pip) )

  • փորձեք մաքուր միջավայր

  • նվազեցնել հատուկ գործողությունները

  • վերագործարկել դետերմինիստական ​​​​կարգավորումներով՝ վերարտադրելու համար

Խնդիր՝ Ավելի դանդաղ, քան սպասվում էր

Շտկումներ՝

Խնդիր. Բազմա-տեսախցիկի կախումներ

Շտկումներ՝

  • հաստատեք ճիշտ backend կարգավորումները ( PyTorch բաշխված փաստաթղթեր )

  • ստուգեք NCCL միջավայրի կարգավորումները (ուշադիր) ( NCCL-ի ակնարկ )

  • նախ փորձարկեք մեկ GPU

  • համոզվեք, որ ցանցը / միջկապը առողջ է

Փոքրիկ հետադարձ նշում. երբեմն լուծումը բառացիորեն վերագործարկումն է։ Դա հիմարություն է թվում։ Այն աշխատում է։ Համակարգիչներն այդպիսին են։.


12) Արժեք և գործնականություն՝ ճիշտ NVIDIA GPU-ի ընտրություն և կարգավորում՝ առանց չափազանց շատ մտածելու 💸🧠

Ոչ բոլոր նախագծերն են պահանջում ամենամեծ GPU-ն։ Երբեմն ձեզ բավարար GPU է պետք։

Եթե ​​դուք մանրակրկիտ կարգավորում եք միջին չափի մոդելները

Եթե ​​դուք մարզում եք ավելի մեծ մոդելներ զրոյից

Եթե ​​դուք փորձարկումներ եք անում

  • Դուք ցանկանում եք արագ կրկնություն

  • Մի՛ ծախսեք ձեր ամբողջ գումարը GPU-ի վրա, իսկ հետո մի՛ սպառեք հիշողությունն ու օպերատիվ հիշողությունը

  • Հավասարակշռված համակարգը գերազանցում է անհավասար համակարգը (օրերի մեծ մասում)

Եվ իրականում, դուք կարող եք շաբաթներ վատնել «իդեալական» սարքավորումների ընտրության վրա։ Ստեղծեք ինչ-որ բան, չափեք, ապա կարգավորեք։ Իրական թշնամին հետադարձ կապի օղակ չունենալն է։.


Եզրափակիչ նշումներ - Ինչպես օգտագործել NVIDIA GPU-ները արհեստական ​​ինտելեկտի մարզումների համար՝ առանց խելագարվելու 😌✅

Եթե ​​այս ուղեցույցից ուրիշ ոչինչ չեք հասկանում, թե ինչպես օգտագործել NVIDIA GPU-ները արհեստական ​​ինտելեկտի մարզումների համար , ապա հետևեք հետևյալին.

NVIDIA գրաֆիկական պրոցեսորների վրա մարզվելը այն հմտություններից մեկն է, որը թվում է վախեցնող, հետո հանկարծ այն պարզապես… նորմալ է դառնում։ Ինչպես մեքենա վարել սովորելը։ Սկզբում ամեն ինչ աղմկոտ է և շփոթեցնող, և դուք չափազանց ուժեղ եք սեղմում ղեկը։ Հետո մի օր դուք վարում եք մեքենան, սուրճ եք խմում և անփույթ լուծում խմբաքանակի չափի խնդիրը, կարծես դա մեծ բան չէ ☕😄

Հաճախակի տրվող հարցեր

Ի՞նչ է նշանակում արհեստական ​​բանականության մոդել մարզել NVIDIA GPU-ի վրա

NVIDIA GPU-ի վրա մարզումը նշանակում է, որ ձեր մոդելի պարամետրերը և մարզման խմբերը պահվում են GPU VRAM-ում, իսկ ծանր մաթեմատիկական գործողությունները (forward pass, backprop, optimizer steps) կատարվում են CUDA միջուկների միջոցով: Գործնականում սա հաճախ կախված է մոդելի և թենզորների CUDA-ի , այնուհետև հիշողության, օգտագործման և ջերմաստիճանի վրա հսկողությունից, որպեսզի թողունակությունը մնա կայուն:

Ինչպես ստուգել, ​​որ NVIDIA GPU-ն աշխատում է, նախքան որևէ այլ բան տեղադրելը

Սկսեք nvidia-smi- ։ Այն պետք է ցույց տա GPU-ի անունը, դրայվերի տարբերակը, հիշողության ընթացիկ օգտագործումը և բոլոր գործող գործընթացները։ Եթե nvidia-smi-ն ձախողվի, սպասեք PyTorch/TensorFlow/JAX-ի վրա՝ նախ շտկեք դրայվերի տեսանելիությունը։ Սա GPU-ի մարզման համար բազային ստուգում է՝ «միացված է վառարանը» հարցով։

Ընտրություն համակարգային CUDA-ի և PyTorch-ի հետ համատեղելի CUDA-ի միջև

Տարածված մոտեցում է framework-ի հետ կապված CUDA-ի օգտագործումը (ինչպես շատ PyTorch անիվներ), քանի որ այն նվազեցնում է շարժվող մասերի քանակը. ձեզ հիմնականում անհրաժեշտ է համատեղելի NVIDIA դրայվեր: Համակարգի ամբողջական CUDA գործիքակազմի տեղադրումը ապահովում է ավելի մեծ վերահսկողություն (պատվերով կառուցվածքներ, գործողությունների կոմպիլյացիա), բայց այն նաև ավելի շատ հնարավորություններ է ստեղծում տարբերակների անհամապատասխանությունների և շփոթեցնող գործարկման սխալների համար:.

Ինչու՞ մարզումը կարող է դանդաղ լինել նույնիսկ NVIDIA GPU-ով

Հաճախ GPU-ն ծանրաբեռնված է մուտքային հոսքագծի պատճառով։ Տվյալների բեռնիչները, որոնք դանդաղում են, մարզման փուլում CPU-ի ծանր նախնական մշակումը, փոքր խմբաքանակների չափերը կամ դանդաղ պահեստավորումը կարող են հզոր GPU-ին ստիպել գործել որպես պարապ տարածքի ջեռուցիչ։ Տվյալների բեռնիչների ավելացումը, ամրացված հիշողության միացումը, նախնական բեռնման ավելացումը և գրանցումների կրճատումը մոդելին մեղադրելուց առաջ տարածված առաջին քայլերն են։.

Ինչպես կանխել «CUDA-ն հիշողությունից դուրս է» սխալները NVIDIA GPU-ի մարզման ժամանակ

Լուծումների մեծ մասը VRAM մարտավարություն է՝ կրճատել խմբաքանակի չափը, միացնել խառը ճշգրտությունը (FP16/BF16), օգտագործել գրադիենտային կուտակում, կրճատել հաջորդականության երկարությունը/կտրման չափը կամ օգտագործել ակտիվացման ստուգիչ ստուգում: Ստուգեք նաև հիշողությունը սպառող այլ GPU պրոցեսների առկայությունը: Որոշակի փորձարկումներ և սխալներ նորմալ են. VRAM բյուջետավորումը դառնում է GPU-ի գործնական մարզումների հիմնական սովորություն:.

Ինչու՞ VRAM-ը կարող է դեռ լիքը թվալ մարզման սկրիպտի ավարտից հետո

Ֆրեյմվորքները հաճախ քեշավորում են GPU հիշողությունը՝ արագության համար, ուստի պահուստավորված հիշողությունը կարող է բարձր մնալ նույնիսկ այն դեպքում, երբ հատկացված հիշողությունը նվազում է: Սա կարող է նմանվել արտահոսքի, բայց հաճախ քեշավորման բաշխիչն է գործում ըստ նախատեսվածի: Գործնական սովորությունն այն է, որ ժամանակի ընթացքում հետևեք օրինաչափությանը և համեմատեք «հատկացվածն ու պահուստավորվածը», այլ ոչ թե կենտրոնանաք մեկ տագնապալի պատկերի վրա:.

Ինչպես ստուգել, ​​որ մոդելը լուռ չի մարզվում պրոցեսորի վրա

Վաղ ստուգում՝ հաստատեք, որ torch.cuda.is_available()- ը վերադարձնում է True , ստուգեք, որ next(model.parameters()).device-ը ցուցադրում է cuda , և առանց սխալների կատարում է մեկ առաջխաղացում։ Եթե աշխատանքը կասկածելիորեն դանդաղ է, հաստատեք նաև, որ ձեր խմբաքանակները տեղափոխվում են GPU։ Հաճախակի է լինում մոդելը տեղափոխելը և պատահաբար տվյալները թողնելը։

Բազմա-GPU մարզման ամենապարզ ուղին

Տվյալների զուգահեռ մշակումը (DDP ոճի ուսուցում) հաճախ լավագույն առաջին քայլն է. բաժանեք խմբաքանակները GPU-ների միջև և համաժամեցրեք գրադիենտները: Accelerate-ի նման գործիքները կարող են բազմա-GPU-ն ավելի քիչ ցավոտ դարձնել առանց լրիվ վերաշարադրման: Ակնկալեք լրացուցիչ փոփոխականներ՝ NCCL հաղորդակցություն, միջկապակցման տարբերություններ (NVLink vs PCIe) և տվյալների ուժեղացված խցանումներ, ուստի մեկ GPU-ով ամուր աշխատանքից հետո աստիճանական մասշտաբավորումը, որպես կանոն, ավելի լավ է ընթանում:.

Ինչին հետևել NVIDIA GPU-ի մարզման ժամանակ՝ խնդիրները վաղ հայտնաբերելու համար

Հետևեք GPU-ի ծանրաբեռնվածությանը, հիշողության ծանրաբեռնվածությանը (կայուն կամ բարձրացող), էներգիայի սպառմանը և ջերմաստիճաններին. սահմանափակումը կարող է աննկատորեն սպառել արագությունը: Ուշադրություն դարձրեք նաև CPU-ի ծանրաբեռնվածությանը, քանի որ տվյալների խողովակաշարի խնդիրները հաճախ առաջին հերթին այնտեղ են ի հայտ գալիս: Եթե ծանրաբեռնվածությունը կտրուկ կամ ցածր է, կասկածեք I/O կամ տվյալների բեռնիչներին. եթե այն բարձր է, բայց քայլի ժամանակը դեռ դանդաղ է, պրոֆիլավորեք միջուկները, ճշգրտության ռեժիմը և քայլի ժամանակի բաշխումը:.

Հղումներ

  1. NVIDIA - NVIDIA nvidia-smi փաստաթղթեր - docs.nvidia.com

  2. NVIDIA - NVIDIA համակարգի կառավարման ինտերֆեյս (NVSMI) - developer.nvidia.com

  3. NVIDIA - NVIDIA NVLink-ի ակնարկ - nvidia.com

  4. PyTorch - PyTorch-ի մեկնարկ (CUDA ընտրիչ) - pytorch.org

  5. PyTorch - PyTorch CUDA փաստաթղթեր - docs.pytorch.org

  6. TensorFlow - TensorFlow-ի տեղադրում (pip) - tensorflow.org

  7. JAX - JAX արագ մեկնարկ - docs.jax.dev

  8. Գրկախառնվող դեմք - Մարզչի փաստաթղթեր - huggingface.co

  9. Lightning AI - Lightning-ի փաստաթղթեր - lightning.ai

  10. DeepSpeed ​​- ZeRO փաստաթղթեր - deepspeed.readthedocs.io

  11. Microsoft Research - Microsoft Research: ZeRO/DeepSpeed ​​- microsoft.com

  12. PyTorch Ֆորումներ - PyTorch Ֆորում. մոդելի ստուգում CUDA-ում - discuss.pytorch.org

Գտեք արհեստական ​​բանականության վերջին նորույթները պաշտոնական արհեստական ​​բանականության օգնականների խանութում

Մեր մասին

Վերադառնալ բլոգ