Առավելագույնի հասցրեք կատարողականը և նվազեցրեք ձեր խորը ուսուցման ուսուցման արժեքը AWS Trainium-ի և Amazon SageMaker-ի միջոցով

Այսօր տասնյակ հազարավոր հաճախորդներ կառուցում, վերապատրաստում և տեղակայում են մեքենայական ուսուցման (ML) մոդելներ՝ օգտագործելով Amazon SageMaker-ը, որպեսզի հզորացնեն այն հավելվածները, որոնք ներուժ ունեն նորից ստեղծելու իրենց բիզնեսը և հաճախորդների փորձը: Այս ML մոդելները մեծացել են իրենց չափերով և բարդությամբ վերջին մի քանի տարիների ընթացքում, ինչը հանգեցրել է ժամանակակից ճշգրտության մի շարք առաջադրանքների և նաև մարզվելու ժամանակը օրերից շաբաթներ մղելու համար: Արդյունքում, հաճախորդները պետք է չափեն իրենց մոդելները հարյուրավորից հազարավոր արագացուցիչներով, ինչը նրանց վերապատրաստումն ավելի թանկ է դարձնում:

SageMaker-ը լիովին կառավարվող ML ծառայություն է, որն օգնում է մշակողներին և տվյալների գիտնականներին հեշտությամբ կառուցել, վարժեցնել և կիրառել ML մոդելներ: SageMaker-ն արդեն տրամադրում է հաշվողական առաջարկների ամենալայն և խորը ընտրությունը, որոնք պարունակում են ապարատային արագացուցիչներ ML ուսուցման համար, ներառյալ G5 (Nvidia A10G) և P4d (Nvidia A100) օրինակները:

Հաշվարկների աճող պահանջները պահանջում են ավելի արագ և ծախսարդյունավետ մշակման հզորություն: Մոդելների ուսուցման ժամանակներն էլ ավելի կրճատելու և ML պրակտիկանտներին ավելի արագ կրկնելու հնարավորություն տալու համար AWS-ը նորարարություն է կատարել չիպերի, սերվերների և տվյալների կենտրոնների միացման մեջ: AWS Trainium չիպերով սնուցվող Trn1 նոր նմուշները առաջարկում են լավագույն գնային արդյունավետությունը և ամենաարագ ML մոդելի ուսուցումը AWS-ի վրա՝ ապահովելով մինչև 50% ցածր գնով խորը ուսուցման մոդելներ վարժեցնելու համար՝ համեմատելի GPU-ի վրա հիմնված օրինակների վրա՝ առանց ճշգրտության անկման:

Այս գրառման մեջ մենք ցույց ենք տալիս, թե ինչպես կարող եք առավելագույնի հասցնել ձեր կատարումը և նվազեցնել ծախսերը՝ օգտագործելով Trn1 օրինակները SageMaker-ի հետ:

Լուծման ակնարկ

SageMaker-ի վերապատրաստման աշխատանքներն աջակցում են ml.trn1 օրինակներին, որոնք սնուցվում են Trainium չիպերով, որոնք նախատեսված են ամպում բարձր արդյունավետությամբ ML ուսուցման հավելվածների համար: Դուք կարող եք օգտագործել ml.trn1 օրինակները SageMaker-ում՝ բնական լեզվի մշակման (NLP), համակարգչային տեսլականի և առաջարկող մոդելների պատրաստման համար մի շարք հավելվածներում, ինչպիսիք են խոսքի ճանաչումը, առաջարկությունը, խարդախության հայտնաբերումը, պատկերների և տեսանյութերի դասակարգումը և կանխատեսումը: ml.trn1 օրինակները պարունակում են մինչև 16 Trainium չիպ, որը երկրորդ սերնդի ML չիպ է, որը ստեղծվել է AWS-ի կողմից AWS Inferentia-ից հետո: ml.trn1 օրինակները Amazon Elastic Compute Cloud-ի (Amazon EC2) առաջին օրինակներն են՝ մինչև 800 Գբիտ/վ Elastic Fabric Adapter (EFA) ցանցի թողունակությամբ: Արդյունավետ տվյալների և մոդելների զուգահեռության համար յուրաքանչյուր ml.trn1.32xl օրինակ ունի 512 ԳԲ բարձր թողունակությամբ հիշողություն, ապահովում է մինչև 3,4 ֆետաֆլոպ FP16/BF16 հաշվողական հզորություն և ունի NeuronLink՝ ներատնային, բարձր թողունակությամբ, չարգելափակող փոխկապակցում։ .

Trainium-ը հասանելի է երկու կոնֆիգուրացիաներով և կարող է օգտագործվել ԱՄՆ Արևելյան (Ն. Վիրջինիա) և ԱՄՆ Արևմտյան (Օրեգոն) շրջաններում:

Հետևյալ աղյուսակը ամփոփում է Trn1 օրինակների առանձնահատկությունները:

Օրինակի չափը Տրեյնիում
Արագացուցիչներ
Արագացուցիչ
Հիշողություն
(ԳԲ)
vCPU-ներ Օրինակ
Հիշողություն
(GiB)
Ցանց
Լայնություն
(Gbps)
EFA և
RDMA
Աջակցություն
trn1.2x մեծ 1 32 8 32 Մինչև 12.5 Ոչ
trn1.32x մեծ 16 512 թ 128 512 թ 800 թ Այո՛
trn1n.32xlarge (շուտով) 16 512 թ 128 512 թ 1600 թ Այո՛

Եկեք հասկանանք, թե ինչպես օգտագործել Trainium-ը SageMaker-ի հետ պարզ օրինակով: Մենք կսովորեցնենք տեքստի դասակարգման մոդել SageMaker-ի և PyTorch-ի հետ՝ օգտագործելով Hugging Face Transformers Library:

Մենք օգտագործում ենք Amazon Reviews տվյալների բազան, որը բաղկացած է amazon.com-ի ակնարկներից: Տվյալներն ընդգրկում են 18 տարվա ժամանակահատված, որը ներառում է մոտավորապես 35 միլիոն ակնարկներ մինչև 2013 թվականի մարտը: Հետևյալ կոդը օրինակ է AmazonPolarity թեստային հավաքածու.

{
title':'Great CD',
'content':"My lovely Pat has one of the GREAT voices of her generation. I have listened to this CD for YEARS and I still LOVE IT. When I'm in a good mood it makes me feel better. A bad mood just evaporates like sugar in the rain. This CD just oozes LIFE. Vocals are jusat STUUNNING and lyrics just kill. One of life's hidden gems. This is a desert isle CD in my book. Why she never made it big is just beyond me. Everytime I play this, no matter black, white, young, old, male, female EVERYBODY says one thing ""Who was that singing ?""",
'label':1
}

Այս գրառման համար մենք օգտագործում ենք միայն բովանդակության և պիտակի դաշտերը: Բովանդակության դաշտը անվճար տեքստային ակնարկ է, իսկ պիտակի դաշտը երկուական արժեք է, որը պարունակում է 1 կամ 0 համապատասխանաբար դրական կամ բացասական կարծիքների համար:

Մեր ալգորիթմի համար մենք օգտագործում ենք BERT-ը, տրանսֆորմատորային մոդել, որը նախապես պատրաստված է անգլերեն տվյալների մեծ կորպուսի վրա՝ ինքնուրույն վերահսկվող եղանակով: Այս մոդելը հիմնականում ուղղված է այն առաջադրանքների վրա, որոնք օգտագործում են ամբողջ նախադասությունը (պոտենցիալ դիմակավորված) որոշումներ կայացնելու համար, ինչպիսիք են հաջորդականության դասակարգումը, նշանների դասակարգումը կամ հարցերի պատասխանը:

Իրականացման մանրամասները

Եկեք սկսենք ավելի սերտորեն նայելով մոդելի ուսուցման մեջ ներգրավված տարբեր բաղադրիչներին.

  • AWS Trainium – Իր հիմքում յուրաքանչյուր Trainium օրինակ ունի իր մեջ ներկառուցված Trainium սարքեր: Trn1.2xlarge-ն ունի 1 Trainium սարք, իսկ Trn1.32xlarge-ն ունի 16 Trainium սարք։ Յուրաքանչյուր Trainium սարքը բաղկացած է հաշվարկից (2 NeuronCore-v2), 32 ԳԲ HBM սարքի հիշողությունից և NeuronLink-ից՝ արագ միջսարքային հաղորդակցության համար: Յուրաքանչյուր NeuronCore-v2 բաղկացած է լիովին անկախ հետերոգեն հաշվարկային միավորից՝ առանձին շարժիչներով (Tensor/Vector/Scalar/GPSIMD): GPSIMD-ը լիովին ծրագրավորվող ընդհանուր նշանակության պրոցեսորներ են, որոնք կարող եք օգտագործել հատուկ օպերատորների ներդրման և դրանք ուղղակիորեն NeuronCore շարժիչների վրա գործարկելու համար:
  • Amazon SageMaker ուսուցում – SageMaker-ը տրամադրում է լիովին կառավարվող վերապատրաստման փորձ՝ մոդելներին հեշտությամբ վարժեցնելու համար՝ առանց ենթակառուցվածքի մասին անհանգստանալու: Երբ դուք օգտագործում եք SageMaker Training-ը, այն գործարկում է այն ամենը, ինչ անհրաժեշտ է վերապատրաստման աշխատանքի համար, ինչպիսիք են ծածկագիրը, կոնտեյները և տվյալները, հաշվողական ենթակառուցվածքում, որը անջատված է կանչի միջավայրից: Սա մեզ թույլ է տալիս զուգահեռաբար և արագ կրկնել փորձերը: SageMaker-ը տրամադրում է Python SDK՝ վերապատրաստման աշխատանքներ սկսելու համար: Այս գրառման օրինակն օգտագործում է SageMaker Python SDK-ն՝ Trainium-ի միջոցով վերապատրաստման աշխատանքը գործարկելու համար:
  • AWS նեյրոն – Քանի որ Trainium NeuronCore-ն ունի իր հաշվողական շարժիչը, մեզ անհրաժեշտ է մեխանիզմ՝ մեր ուսումնական ծածկագիրը կազմելու համար: AWS Neuron կոմպիլյատորը վերցնում է Pytorch/XLA-ով գրված կոդը և այն օպտիմալացնում է Neuron սարքերում աշխատելու համար: Neuron կոմպիլյատորը ինտեգրված է որպես Deep Learning Container-ի մաս, որը մենք կօգտագործենք մեր մոդելի ուսուցման համար:
  • PyTorch/XLA – Python-ի այս փաթեթն օգտագործում է XLA խորը ուսուցման կոմպիլյատորը՝ PyTorch խորը ուսուցման շրջանակը և Trainium-ի պես ամպային արագացուցիչները միացնելու համար: Նոր PyTorch ցանց կառուցելը կամ գոյություն ունեցողը XLA սարքերի վրա գործարկելու համար փոխակերպելը պահանջում է XLA-ին հատուկ կոդ ընդամենը մի քանի տող: Մենք մեր օգտագործման դեպքում կտեսնենք, թե ինչ փոփոխություններ պետք է անենք:
  • Բաշխված ուսուցում – Բազմաթիվ NeuronCore-ների վրա ուսուցումն արդյունավետ իրականացնելու համար մեզ անհրաժեշտ է մեխանիզմ՝ ուսուցումը հասանելի NeuronCore-ների մեջ բաշխելու համար: SageMaker-ն աջակցում է torchrun-ին Trainium-ի օրինակներով, որոնք կարող են օգտագործվել կլաստերի մեջ NeuronCore-ների թվին համարժեք բազմաթիվ գործընթացներ գործարկելու համար: Սա արվում է՝ փոխանցելով բաշխման պարամետրը SageMaker գնահատողին հետևյալ կերպ, որը սկսում է տվյալների զուգահեռ բաշխված ուսուցում, որտեղ նույն մոդելը բեռնվում է տարբեր NeuronCore-ներում, որոնք մշակում են տվյալների առանձին խմբաքանակներ.
distribution={"torch_distributed": {"enabled": True}}

Trainium-ում գործարկելու համար անհրաժեշտ են սցենարի փոփոխություններ

Եկեք նայենք կոդի փոփոխություններին, որոնք անհրաժեշտ են սովորական GPU-ի վրա հիմնված PyTorch սկրիպտ ընդունելու համար՝ Trainium-ում գործարկելու համար: Բարձր մակարդակով մենք պետք է կատարենք հետևյալ փոփոխությունները.

  1. Փոխարինեք GPU սարքերը Pytorch/XLA սարքերով: Քանի որ մենք օգտագործում ենք ջահի բաշխումը, մենք պետք է նախաստորագրենք ուսուցումը XLA-ով որպես սարք հետևյալ կերպ.
    device = "xla"
    torch.distributed.init_process_group(device)

  2. Մենք օգտագործում ենք PyTorch/XLA բաշխված հետնամասը՝ PyTorch-ի բաշխված API-ները XLA հաղորդակցության իմաստաբանությանը կամրջելու համար:
  3. Մենք օգտագործում ենք PyTorch/XLA MpDeviceLoader-ը տվյալների կլանման խողովակաշարերի համար: MpDeviceLoader-ն օգնում է բարելավել կատարողականությունը՝ համընկնող երեք քայլերի՝ հետագծում, հավաքում և տվյալների խմբաքանակի բեռնում սարքում: Մենք պետք է փաթաթենք PyTorch տվյալների բեռնիչը MpDeviceDataLoader-ով հետևյալ կերպ.
    train_device_loader = pl.MpDeviceLoader(train_loader, "xla")

  4. Գործարկեք օպտիմալացման քայլը՝ օգտագործելով XLA-ի կողմից տրամադրված API-ն, ինչպես ցույց է տրված հետևյալ կոդում: Սա համախմբում է միջուկների գրադիենտները և թողարկում է XLA սարքի քայլի հաշվարկը:
    torch_xla.core.xla_model.optimizer_step(optimizer)

  5. Քարտեզագրեք CUDA API-ները (եթե այդպիսիք կան) ընդհանուր PyTorch API-ներին:
  6. Փոխարինեք CUDA միաձուլված օպտիմիզատորները (եթե այդպիսիք կան) ընդհանուր PyTorch այլընտրանքներով:

Ամբողջ օրինակը, որը պատրաստում է տեքստի դասակարգման մոդել՝ օգտագործելով SageMaker-ը և Trainium-ը, հասանելի է հետևյալ GitHub ռեպո-ում: Նոթատետրի ֆայլը Fine tune Transformers-ը SageMaker-ի և Trainium.ipynb-ի միջոցով շենքերի դասակարգման մոդելների համար մուտքի կետն է և պարունակում է քայլ առ քայլ հրահանգներ ուսուցումն իրականացնելու համար:

Հենանիշային թեստեր

Թեստի ընթացքում մենք երկու ուսուցման աշխատանք կատարեցինք՝ մեկը ml.trn1.32xlarge-ում և մեկը ml.p4d.24xlarge-ի վրա՝ նույն խմբաքանակի չափով, վերապատրաստման տվյալների և այլ հիպերպարամետրերով: Վերապատրաստման աշխատանքների ընթացքում մենք չափել ենք SageMaker-ի վերապատրաստման աշխատանքների վճարման ժամանակը և հաշվարկել ենք գնի արդյունավետությունը՝ բազմապատկելով ժամերով վերապատրաստման աշխատանքների կատարման համար պահանջվող ժամանակը օրինակի տեսակի համար ժամի գնով: Մենք ընտրեցինք լավագույն արդյունքը յուրաքանչյուր օրինակի տեսակի համար մի քանի առաջադրանքներից:

Հետևյալ աղյուսակը ամփոփում է մեր հենանիշային բացահայտումները:

Մոդել Օրինակի տեսակը Գինը (մեկ հանգույց * ժամ) Արտադրողականություն (կրկնումներ/վրկ) Վավերացման ճշգրտություն Վճարման ժամանակ (վրկ) Ուսուցման արժեքը՝ դոլարով
BERT բազային դասակարգում ml.trn1.32xlarge 24.725 6.64 0,984 6033 թ 41.47
BERT բազային դասակարգում ml.p4d.24xlarge 37.69 5.44 0,984 6553 68.6

Արդյունքները ցույց տվեցին, որ Trainium օրինակն արժե ավելի քիչ, քան P4d օրինակը, ապահովելով նմանատիպ թողունակություն և ճշգրտություն, երբ նույն մոդելը վերապատրաստում է նույն մուտքային տվյալներով և վերապատրաստման պարամետրերով: Սա նշանակում է, որ Trainium օրինակն ապահովում է ավելի լավ գնային արդյունավետություն, քան GPU-ի վրա հիմնված P4D օրինակները: Նման պարզ օրինակով մենք կարող ենք տեսնել, որ Trainium-ն առաջարկում է մոտ 22% ավելի արագ ժամանակ մարզվելու համար և մինչև 50% ավելի ցածր գին P4d օրինակների նկատմամբ:

Տեղադրեք վերապատրաստված մոդելը

Մոդելը վարժեցնելուց հետո մենք կարող ենք այն տեղակայել տարբեր օրինակների տեսակների վրա, ինչպիսիք են CPU, GPU կամ AWS Inferentia: Հիմնական կետը, որը պետք է նշել, այն է, որ պատրաստված մոդելը կախված չէ մասնագիտացված ապարատից՝ տեղակայելու և եզրակացություններ անելու համար: SageMaker-ը մեխանիզմներ է տրամադրում վերապատրաստված մոդելի տեղակայման համար՝ օգտագործելով ինչպես իրական ժամանակում, այնպես էլ խմբաքանակի մեխանիզմները: GitHub ռեպո-ի նոութբուքի օրինակը պարունակում է կոդ՝ վերապատրաստված մոդելը որպես իրական ժամանակի վերջնակետ տեղադրելու համար՝ օգտագործելով ml.c5.xlarge (CPU-ի վրա հիմնված) օրինակ:

Եզրակացություն

Այս գրառման մեջ մենք նայեցինք, թե ինչպես կարելի է օգտագործել Trainium-ը և SageMaker-ը՝ արագ կարգավորելու և վարժեցնելու դասակարգման մոդելը, որը տալիս է մինչև 50% ծախսերի խնայողություն՝ չվնասելով ճշգրտությունը: Դուք կարող եք օգտագործել Trainium-ը օգտագործման դեպքերի լայն շրջանակի համար, որոնք ներառում են տրանսֆորմատորի վրա հիմնված մոդելների նախնական վերապատրաստում կամ ճշգրտում: Տարբեր մոդելային ճարտարապետությունների աջակցության մասին լրացուցիչ տեղեկությունների համար տե՛ս Model Architecture Fit ուղեցույցները:


Հեղինակների մասին

Արուն Կումար Լոկանաթա ML Solutions-ի ավագ ճարտարապետ է Amazon SageMaker ծառայության թիմի հետ: Նա կենտրոնանում է հաճախորդներին օգնելու վրա՝ կառուցել, վարժեցնել և տեղափոխել ML արտադրության աշխատանքային ծանրաբեռնվածությունը SageMaker մասշտաբով: Նա մասնագիտացած է Deep Learning-ում հատկապես NLP-ի և CV-ի ոլորտում: Աշխատանքից դուրս նա սիրում է վազել և քայլել:

Մարկ Յու AWS SageMaker-ում ծրագրային ապահովման ինժեներ է: Նա կենտրոնանում է լայնածավալ բաշխված ուսուցման համակարգերի կառուցման, մարզումների կատարողականի օպտիմալացման և բարձր արդյունավետությամբ թրեյնինգային սարքավորումների մշակման վրա, ներառյալ SageMaker trainium-ը: Մարկը նաև խորը գիտելիքներ ունի մեքենայական ուսուցման ենթակառուցվածքի օպտիմալացման վերաբերյալ: Ազատ ժամանակ նա սիրում է արշավել և վազել։

Օմրի Ֆուկս AWS SageMaker-ում Ծրագրային ապահովման զարգացման մենեջեր է: Նա տեխնիկական ղեկավարն է, որը պատասխանատու է SageMaker վերապատրաստման աշխատանքային հարթակի համար՝ կենտրոնանալով SageMaker-ի վերապատրաստման կատարողականի օպտիմալացման և վերապատրաստման փորձի բարելավման վրա: Նա կիրք ունի ML-ի և AI-ի ժամանակակից տեխնոլոգիաների նկատմամբ: Ազատ ժամանակ սիրում է հեծանիվ վարել, արշավել։

Գալ Օշրի Amazon SageMaker թիմի ավագ արտադրանքի մենեջեր է: Նա ունի մեքենայական ուսուցման գործիքների, շրջանակների և ծառայությունների վրա աշխատելու 7 տարվա փորձ:

Source link