Språkmodeller är statistiska metoder som förutsäger följden av tokens i sekvenser, med hjälp av naturlig text. Stora språkmodeller (LLM) är neurala nätverksbaserade språkmodeller med hundratals miljoner (BERTI) till över en biljon parametrar (MiCS), och vars storlek gör träning med en GPU opraktisk. LLM:ers generativa förmågor gör dem populära för textsyntes, sammanfattning, maskinöversättning och mer.
Storleken på en LLM och dess träningsdata är ett tveeggat svärd: det ger modellkvalitet, men medför infrastrukturutmaningar. Modellen i sig är ofta för stor för att få plats i minnet av en enda GPU-enhet eller på flera enheter i en multi-GPU-instans. Dessa faktorer kräver utbildning av en LLM över stora kluster av instanser av accelererad maskininlärning (ML). Under de senaste åren har många kunder använt AWS Cloud för LLM-utbildning.
I det här inlägget dyker vi ner i tips och bästa praxis för framgångsrik LLM-utbildning på Amazon SageMaker utbildning. SageMaker Training är en hanterad batch ML-beräkningstjänst som minskar tiden och kostnaderna för att träna och finjustera modeller i stor skala utan att behöva hantera infrastruktur. Inom ett startkommando, Amazon SageMaker lanserar ett fullt fungerande, tillfälligt datorkluster som kör den uppgift du väljer, och med förbättrade ML-funktioner som metastore, hanterad I/O och distribution. Inlägget täcker alla faser av en LLM-utbildningsarbetsbelastning och beskriver tillhörande infrastrukturfunktioner och bästa praxis. Några av de bästa metoderna i det här inlägget hänvisar specifikt till ml.p4d.24xlarge-instanser, men de flesta är tillämpliga på alla instanstyper. Dessa bästa metoder låter dig träna LLM på SageMaker i skalan från dussintals till hundratals miljoner parametrar.
Angående omfattningen av detta inlägg, notera följande:
- Vi täcker inte vetenskaplig design för neurala nätverk och tillhörande optimeringar. Amazon. Vetenskap innehåller många vetenskapliga publikationer, inklusive och inte begränsat till LLM.
- Även om det här inlägget fokuserar på LLM:er, är de flesta av dess bästa praxis relevanta för alla typer av utbildning i stora modeller, inklusive datorseende och multimodala modeller, såsom Stable Diffusion.
Bästa praxis
Vi diskuterar följande bästa praxis i det här inlägget:
- Compute – SageMaker Training är ett utmärkt API för att lansera CPU-datauppsättningsjobb och tusenskaliga GPU-jobb.
- lagring – Vi ser att dataladdning och kontroll görs på två sätt, beroende på kompetens och preferenser: med en Amazon FSx Luster filsystem, eller Amazon enkel lagringstjänst (endast Amazon S3).
- parallel~~POS=TRUNC – Ditt val av distribuerat träningsbibliotek är avgörande för korrekt användning av GPU:erna. Vi rekommenderar att du använder ett molnoptimerat bibliotek, till exempel SageMaker fragmenterad dataparallellism, men självhanterade bibliotek och bibliotek med öppen källkod kan också fungera.
- nätverk – Se till att EFA och NVIDIA GPUDirectRDMA är aktiverade för snabb kommunikation mellan maskiner.
- Elasticitet – I stor skala kan hårdvarufel inträffa. Vi rekommenderar att du kontrollerar regelbundet. Med några timmars mellanrum är vanligt.
Regionval
Instanstyp och önskad kapacitet är en avgörande faktor för val av region. För de regioner som stöds av SageMaker och Amazon Elastic Compute Cloud (Amazon EC2) instanstyper som är tillgängliga i varje region, se Amazon SageMaker Prissättning. I det här inlägget antar vi att träningsinstanstypen är en SageMaker-hanterad ml.p4d.24xlarge.
Vi rekommenderar att du arbetar med ditt AWS-kontoteam eller kontaktar AWS försäljning för att bestämma lämplig region för din LLM-arbetsbelastning.
Dataförberedelse
LLM-utvecklare tränar sina modeller på stora datamängder av naturligt förekommande text. Populära exempel på sådana datakällor inkluderar Vanlig genomsökning och Högen. Naturligt förekommande text kan innehålla fördomar, felaktigheter, grammatiska fel och syntaxvariationer. En LLM:s slutliga kvalitet beror väsentligt på valet och kureringen av träningsdata. LLM-utbildningsdataförberedelse är ett aktivt område för forskning och innovation inom LLM-branschen. Utarbetandet av en datauppsättning för naturlig språkbearbetning (NLP) är överflöd av parallellitetsmöjligheter. Med andra ord, det finns steg som kan tillämpas på enheter av verk—källfiler, stycken, meningar, ord—utan att det krävs synkronisering mellan anställda.
SageMaker jobb API:er, nämligen SageMaker Training och SageMaker Processing, utmärker sig för denna typ av uppgifter. De gör det möjligt för utvecklare att köra en godtycklig Docker-container över en flotta av flera maskiner. När det gäller SageMaker Training API kan datorflottan vara heterogena. Många distribuerade beräkningsramverk har använts på SageMaker, inklusive dask, Stråle, och även PySpark, som har en dedikerad AWS-hanterad behållare och SDK i SageMaker Processing.
När du startar ett jobb med flera maskiner kör SageMaker Training and Processing din kod en gång per maskin. Du behöver inte använda ett särskilt distribuerat datorramverk för att skriva en distribuerad applikation: du kan skriva koden du väljer, som kommer att köras en gång per maskin, för att realisera parallellitet mellan ingenting. Du kan också skriva eller installera den inter-nodskommunikationslogik du väljer.
Laddning av data
Det finns flera sätt att lagra träningsdata och flytta den från dess lagring till de accelererade beräkningsnoderna. I det här avsnittet diskuterar vi alternativen och bästa praxis för dataladdning.
SageMaker lagrings- och laddningsalternativ
En typisk LLM-datauppsättningsstorlek är i hundratals miljoner texttokens, vilket representerar några hundra gigabyte. SageMaker-hanterade kluster av ml.p4d.24xlarge-instanser erbjuder flera alternativ för datalagring och laddning:
- NVMe SSD på noden – ml.P4d.24xlarge instanser är utrustade med 8TB NVMe, tillgängligt under
/opt/ml/input/data/<channel>
om du använder SageMaker filläge, och vid/tmp
. Om du letar efter enkelheten och prestandan för en lokal läsning kan du kopiera dina data till NVMe SSD. Kopieringen kan antingen göras med SageMaker File-läge eller med din egen kod, till exempel med multi-processed Boto3 or S5cmd. - FSx för Luster – On-Node NVMe SSD:er är begränsade i storlek och kräver intag från Amazon S3 vid varje jobb eller varma klusterskapande. Om du vill skala till större datauppsättningar samtidigt som du behåller slumpmässig åtkomst med låg latens, kan du använda FSx för Lustre. Amazon FSx är ett parallellt filsystem med öppen källkod, populärt inom högpresterande datoranvändning (HPC). FSx för Luster-användningar distribuerad fillagring (stripping) och fysiskt separerar filmetadata från filinnehåll för att uppnå högpresterande läsning/skrivning.
- SageMaker FastFile-läge – FastFile-läge (FFM) är en endast SageMaker-funktion som presenterar fjärranslutna S3-objekt i SageMaker-hanterade beräkningsinstanser under ett POSIX-kompatibelt gränssnitt, och strömmar dem endast vid läsning med FUSE. FFM läser resultat i S3-samtal som streamar fjärrfiler block för block. Som en bästa praxis för att undvika fel relaterade till Amazon S3-trafik bör FFM-utvecklare sträva efter att hålla det underliggande antalet S3-anrop rimligt, till exempel genom att läsa filer sekventiellt och med en kontrollerad mängd parallellitet.
- Självhanterad dataladdning – Naturligtvis kan du också bestämma dig för att implementera din egen helt anpassade dataladdningslogik, med proprietär eller öppen källkod. Några anledningar till att använda självhanterad dataladdning är att underlätta en migrering genom att återanvända redan utvecklad kod, för att implementera anpassad felhanteringslogik eller för att ha mer kontroll över underliggande prestanda och sönderdelning. Exempel på bibliotek du kan använda för självhanterad dataladdning inkluderar torchdata.datapipes (tidigare AWS PyTorch S3 Plugin) Och Webbdataset. AWS Python SDK Boto3 kan också kombineras med Torch Dataset klasser för att skapa anpassad dataladdningskod. Anpassade dataladdningsklasser möjliggör också kreativ användning av SageMaker Training heterogena kluster, för att finjustera CPU- och GPU-balansen till en given arbetsbelastning.
För mer information om dessa alternativ och hur du väljer dem, se Välj den bästa datakällan för ditt Amazon SageMaker-utbildningsjobb.
Bästa metoder för storskalig interaktion med Amazon S3
Amazon S3 kan hantera LLM-arbetsbelastningar, både för dataläsning och checkpointing. Den stöder en begäran rate av 3,500 5,500 PUT/COPY/POST/DELETE eller 3 XNUMX GET/HEAD-förfrågningar per sekund per prefix i en hink. Denna kurs är dock inte nödvändigtvis tillgänglig som standard. Istället, när förfrågningsfrekvensen för ett prefix växer, skalas Amazon SXNUMX automatiskt för att hantera den ökade frekvensen. För mer information, se Varför får jag 503 Slow Down-fel från Amazon S3 när förfrågningarna ligger inom den stödda begäran per prefix.
Om du förväntar dig högfrekvent Amazon S3-interaktion rekommenderar vi följande bästa praxis:
- Försök att läsa och skriva från flera S3-hinkar och prefix. Du kan till exempel dela upp träningsdata och kontrollpunkter över olika prefix.
- Kontrollera Amazon S3-statistiken amazoncloudwatch för att spåra förfrågningsfrekvenser.
- Försök att minimera mängden PUT/GET samtidigt:
- Har färre processer som använder Amazon S3 samtidigt. Till exempel, om åtta processer per noder behöver checkpoint till Amazon S3, kan du minska PUT-trafiken med en faktor 8 genom att checkpointa hierarkiskt: först inom noden, sedan från noden till Amazon S3.
- Läs flera träningsposter från en enda fil eller S3 GET, istället för att använda en S3 GET för varje träningsrekord.
- Om du använder Amazon S3 via SageMaker FFM, gör SageMaker FFM S3-anrop för att hämta filer bit för bit. För att begränsa Amazon S3-trafiken som genereras av FFM, rekommenderar vi att du läser filerna sekventiellt och begränsar antalet filer som öppnas parallellt.
Om du har en Supportplan för utvecklare, företag eller företag, kan du öppna ett tekniskt supportärende om S3 503 Slow Down-fel. Men först se till att du har följt de bästa metoderna, och hämta begäran-ID:n för de misslyckade förfrågningarna.
Träningsparallellism
LLM har vanligtvis dussintals till hundratals miljarder parametrar, vilket gör dem för stora för att rymmas i ett enda NVIDIA GPU-kort. LLM-utövare har utvecklat flera bibliotek med öppen källkod som underlättar distribuerad beräkning av LLM-utbildning, inklusive FSDP, DeepSpeed och Megatron. Du kan köra dessa bibliotek i SageMaker Training, men du kan också använda SageMaker distribuerade träningsbibliotek, som har optimerats för AWS Cloud och ger en enklare utvecklarupplevelse. Utvecklare har två val för distribuerad utbildning av sin LLM på SageMaker: distribuerade bibliotek eller självhanterade.
SageMaker distribuerade bibliotek
För att ge dig förbättrad distribuerad träningsprestanda och användbarhet, föreslår SageMaker Training flera proprietära tillägg för att skala TensorFlow och PyTorch träningskod. LLM-utbildning bedrivs ofta på ett 3D-parallellistiskt sätt:
- Dataparallelism delar upp och matar träningsminibatcherna till flera identiska kopior av modellen för att öka bearbetningshastigheten
- Pipeline parallellism tillskriver olika lager av modellen till olika GPU:er eller till och med instanser, för att skala modellstorlek bortom en enda GPU och en enda server
- Tensorparallellism delar upp ett enda lager i flera GPU:er, vanligtvis inom samma server, för att skala enskilda lager till storlekar som överstiger en enda GPU
I följande exempel tränas en 6-lagersmodell på ett kluster av k*3-servrar med 8*k*3 GPU:er (8 GPU:er per server). Dataparallellitetsgraden är k, pipelineparallellism 6 och tensorparallellism 4. Varje GPU i klustret innehåller en fjärdedel av ett modelllager och en hel modell är uppdelad på tre servrar (24 GPU:er totalt).
Följande är specifikt relevanta för LLM:er:
- SageMaker distribuerade modell parallellt – Det här biblioteket använder grafpartitionering för att producera intelligent modellpartitionering optimerad för hastighet eller minne. SageMaker distribuerade modellparallell avslöjar den senaste och bästa träningsoptimeringen för stora modeller, inklusive dataparallellism, pipelineparallellism, tensorparallellism, optimeringstillståndsskärning, aktiveringskontroll och avlastning. Med SageMakers distribuerade parallella modellbibliotek dokumenterade vi en 175 miljarder parametermodellutbildning över 920 NVIDIA A100 GPU:er. För mer information, se Träna 175+ miljarder NLP-parametermodeller med parallella modelltillägg och Hugging Face på Amazon SageMaker.
- SageMaker delade data parallellt - I MiCS: Närlinjär skalning för träning av gigantisk modell på Public CloudZhang et al. introducera en parallell strategi för lågkommunikationsmodeller som delar upp modeller endast över en dataparallellgrupp, istället för hela klustret. Med MiCS kunde AWS-forskare uppnå 176 teraflops per GPU (56.4 % av den teoretiska toppen) för att träna en 210-lagers modell med 1.06 biljoner parametrar på EC2 P4de-instanser. MiCS är nu tillgängligt för SageMaker Training-kunder som SageMaker delade data parallellt.
SageMaker distribuerade utbildningsbibliotek ger hög prestanda och en enklare utvecklarupplevelse. Framför allt behöver utvecklare inte skriva och underhålla en anpassad parallellprocessstartare eller använda ett ramspecifikt startverktyg, eftersom parallellstartaren är inbyggd i jobblanserings-SDK:n.
Självstyrd
Med SageMaker Training har du friheten att använda ramverket och det vetenskapliga paradigmet du väljer. I synnerhet, om du vill hantera distribuerad utbildning själv, har du två alternativ för att skriva din anpassade kod:
- Använd en AWS Deep Learning Container (DLC) – AWS utvecklar och underhåller DLC, tillhandahåller AWS-optimerade Docker-baserade miljöer för ML-ramverk med öppen källkod. SageMaker Training har en unik integration som gör att du kan dra och köra AWS DLC:er med extern, användardefinierad ingångspunkt. Särskilt för LLM-utbildning är AWS DLC:er för TensorFlow, PyTorch, Hugging Face och MXNet särskilt relevanta. Genom att använda en ramverks-DLC kan du använda ram-inbyggd parallellism, såsom PyTorch Distributed, utan att behöva utveckla och hantera dina egna Docker-bilder. Dessutom har våra DLC:er en MPI-integration, vilket gör att du enkelt kan starta parallellkod.
- Skriv en anpassad SageMaker-kompatibel Docker-bild – Du kan ta med din egen (BYO) bild (se Använd dina egna träningsalgoritmer och Amazon SageMaker Custom Training-containrar), antingen från början eller utöka en befintlig DLC-bild. När du använder en anpassad bild för LLM-utbildning på SageMaker är det särskilt viktigt att verifiera följande:
- Din bild innehåller EFA med lämpliga inställningar (diskuteras mer senare i detta inlägg)
- Din bild innehåller ett NVIDIA NCCL-kommunikationsbibliotek, aktiverat med GPUDirectRDMA
Kunder har kunnat använda ett antal självhanterade distribuerade utbildningsbibliotek, inklusive DeepSpeed.
Trygghet i vårdförloppet
Med tanke på den distribuerade karaktären hos ett LLM-utbildningsjobb är kommunikation mellan maskinerna avgörande för genomförbarheten, prestandan och kostnaderna för arbetsbelastningen. I det här avsnittet presenterar vi nyckelfunktioner för kommunikation mellan maskiner och avslutar med tips för installation och inställning.
Elastisk tygadapter
För att accelerera ML-applikationer och förbättra prestanda genom att uppnå flexibilitet, skalbarhet och elasticitet som tillhandahålls av molnet, kan du dra fördel av Elastisk tygadapter (EFA) med SageMaker. Enligt vår erfarenhet är användning av EFA ett krav för att få tillfredsställande multi-nod LLM-träningsprestanda.
En EFA-enhet är ett nätverksgränssnitt kopplat till EC2-instanser som hanteras av SageMaker under körningen av träningsjobben. EFA är tillgänglig på specifika familjer av instanser, inklusive P4d. EFA-nätverk kan uppnå flera hundra Gbps genomströmning.
Associerad till EFA har AWS introducerat Skalbart tillförlitligt datagram (SRD), en Ethernet-baserad transport inspirerad av InfiniBand Reliable Datagram, utvecklats med avslappnad paketbeställningsbegränsning. För mer information om EFA och SRD, se I sökandet efter prestanda finns det mer än ett sätt att bygga ett nätverk, videon Hur EFA fungerar och varför vi inte använder infiniband i molnetoch forskningsrapporten Ett molnoptimerat transportprotokoll för elastisk och skalbar HPC från Shalev et al.
Du kan lägga till EFA-integration på kompatibla instanser till SageMakers befintliga Docker-behållare, eller anpassade behållare som kan användas för att träna ML-modeller med SageMaker-jobb. För mer information, se Löpträning med EFA. EFA exponeras via öppen källkod Libfabric kommunikationspaket. LLM-utvecklare programmerar dock sällan direkt med Libfabric, och förlitar sig vanligtvis istället på NVIDIA Collective Communications Library (NCCL).
AWS-OFI-NCCL-plugin
I distribuerad ML används EFA oftast med NVIDIA Collective Communications Library (NCCL). NCCL är ett NVIDIA-utvecklat bibliotek med öppen källkod som implementerar inter-GPU-kommunikationsalgoritmer. Inter-GPU-kommunikation är en hörnsten i LLM-utbildning som katalyserar skalbarhet och prestanda. Det är så viktigt för DL-träning att NCCL ofta är direkt integrerad som ett kommunikationsstöd i träningsbibliotek för djupinlärning, så att LLM-utvecklare använder det – ibland utan att märka det – från deras föredragna Python DL-utvecklingsramverk. För att använda NCCL på EFA använder LLM-utvecklare den AWS-utvecklade AWS OFI NCCL plugin, som mappar NCCL-anrop till Libfabric-gränssnittet som används av EFA. Vi rekommenderar att du använder den senaste versionen av AWS OFI NCCL för att dra nytta av de senaste förbättringarna.
För att verifiera att NCCL använder EFA bör du ställa in miljövariabeln NCCL_DEBUG
till INFO
, och kontrollera i loggarna att EFA laddas av NCCL:
För mer information om NCCL- och EFA-konfigurationen, se Testa din EFA- och NCCL-konfiguration. Du kan ytterligare anpassa NCCL med flera Miljövariabler. Observera att effektivt i NCCL 2.12 och högre bidrog AWS med en logik för val av automatisk kommunikationsalgoritm för EFA-nätverk (NCCL_ALGO
kan lämnas oinställd).
NVIDIA GPUDirect RDMA över EFA
Med P4d-instanstypen, vi introducerade GPUDirect RDMA (GDR) över EFA-tyg. Det gör det möjligt för nätverkskort (NIC) att få direkt åtkomst till GPU-minne, vilket gör fjärrkommunikation mellan GPU-till-GPU snabbare över NVIDIA GPU-baserade EC2-instanser, vilket minskar orkestreringskostnader på processorer och användarapplikationer. GDR används under huven av NCCL, när det är möjligt.
GDR-användning visas i inter-GPU-kommunikation när loggnivån är inställd på INFO, som i följande kod:
Använda EFA i AWS Deep Learning Containers
AWS underhåller Deep Learning Containers (DLC), av vilka många kommer med AWS-hanterade Dockerfiler och byggda som innehåller EFA, AWS OFI NCCL och NCCL. Följande GitHub-repos erbjuder exempel med PyTorch och TensorFlow. Du behöver inte installera dessa bibliotek själv.
Använd EFA i din egen SageMaker Training-behållare
Om du skapar din egen SageMaker Training-container och vill använda NCCL över EFA för accelererad kommunikation mellan noder, måste du installera EFA, NCCL och AWS OFI NCCL. För mer information, se Löpträning med EFA. Dessutom bör du ställa in följande miljövariabler i din behållare eller i din ingångskod:
FI_PROVIDER="efa"
anger leverantören av tyggränssnittNCCL_PROTO=simple
instruerar NCCL att använda ett enkelt protokoll för kommunikation (för närvarande stöder EFA-leverantören inte LL-protokoll; att aktivera dem kan leda till datakorruption)FI_EFA_USE_DEVICE_RDMA=1
använder enhetens RDMA-funktion för enkel- och dubbelsidig överföringNCCL_LAUNCH_MODE="PARALLEL"
NCCL_NET_SHARED_COMMS="0"
orkestrering
Att hantera livscykeln och arbetsbelastningen för dussintals till hundratals beräkningsinstanser kräver orkestreringsprogramvara. I det här avsnittet erbjuder vi bästa praxis för LLM-orkestrering
Inom jobbet orkestrering
Utvecklare måste skriva både träningskod på serversidan och startkod på klientsidan i de flesta distribuerade ramverk. Träningskod körs på träningsmaskiner, medan startkod på klientsidan startar den distribuerade arbetsbelastningen från en klientdator. Det finns lite standardisering idag, till exempel:
- I PyTorch kan utvecklare starta uppgifter med flera maskiner med hjälp av
torchrun
,torchx
,torch.distributed.launch
(avskrivningsväg), ellertorch.multiprocessing.spawn
- DeepSpeed föreslår sin egen deepspeed CLI-starter och stöder även MPI-lansering
- MPI är ett populärt parallellberäkningsramverk som har fördelen av att vara ML-agnostiskt och rimligt fastställt, och därför stabilt och dokumenterat, och ses alltmer i distribuerade ML-arbetsbelastningar
I ett SageMaker Training-kluster lanseras träningsbehållaren en gång på varje maskin. Följaktligen har du tre alternativ:
- Native launcher – Du kan använda den inbyggda startprogrammet för ett visst DL-ramverk som en ingångspunkt, till exempel en
torchrun
samtal, vilket i sig skapar flera lokala processer och upprättar kommunikation mellan instanser. - SageMaker MPI-integration – Du kan använda SageMaker MPI-integration, tillgänglig i vår AWS DLC, eller självinstallerbar via sagemaker-utbildning-verktygslåda, för att direkt köra din ingångskod N gånger per maskin. Detta har fördelen av att undvika användningen av mellanliggande ramspecifika startskript i din egen kod.
- SageMaker distribuerade bibliotek – Om du använder SageMakers distribuerade bibliotek kan du fokusera på träningskoden och behöver inte skriva startkod alls! SageMaker distribuerad startkod är inbyggd i SageMaker SDK.
Inter-jobb orkestrering
LLM-projekt består ofta av flera jobb: parametersökning, skalningsexperiment, återställning från fel och mer. För att starta, stoppa och parallellisera träningsuppgifter är det viktigt att använda en jobborganisatör. SageMaker Training är en serverlös ML-jobbarrangör som tillhandahåller transienta beräkningsinstanser omedelbart på begäran. Du betalar bara för det du använder och kluster tas ur drift så snart din kod tar slut. Med SageMaker Träning Varma Pooler, har du möjlighet att definiera en tid att leva på utbildningskluster, för att kunna återanvända samma infrastruktur över jobb. Detta minskar iterationstid och variabilitet mellan arbetsplatser. SageMaker-jobb kan lanseras från en mängd olika programmeringsspråk, inklusive Python och CLI.
Det finns en SageMaker-specifik Python SDK som heter SageMaker Python SDK och implementeras via sagemaker Python-biblioteket, men dess användning är valfri.
Öka kvoterna för utbildningsjobb med ett stort och långt utbildningskluster
SageMaker har standardkvoter på resurser, utformade för att förhindra oavsiktlig användning och kostnader. För att träna en LLM med hjälp av ett stort kluster av avancerade instanser som körs under lång tid, behöver du troligen öka kvoterna i följande tabell.
Kvotens namn | Standardvärde |
Längsta körtid för ett träningsjobb | 432,000 sekunder |
Antal instanser över alla utbildningsjobb | 4 |
Max antal tillfällen per utbildningsjobb | 20 |
ml.p4d.24xlarge för träningsjobbanvändning | 0 |
ml.p4d.24xlarge för träning i varma pooler | 0 |
Se AWS tjänstekvoter hur du ser dina kvotvärden och begär en kvotökning. On-Demand, Spot Instance och tränings kvoter för varma pooler spåras och modifieras separat.
Om du bestämmer dig för att hålla SageMaker Profiler aktiverad, var medveten om att varje träningsjobb startar ett SageMaker Processing-jobb, som vart och ett förbrukar en ml.m5.2xlarge instans. Bekräfta att dina SageMaker Processing-kvoter är tillräckligt höga för att klara det förväntade träningsjobbet. Om du till exempel vill starta 50 Profiler-aktiverade utbildningsjobb som körs samtidigt, måste du höja gränsen för ml.m5.2xlarge för bearbetning av jobbanvändning till 50.
Dessutom, för att starta ett långvarigt jobb, måste du uttryckligen ställa in Uppskattare max_run
parametern till den önskade maximala varaktigheten för träningsjobbet i sekunder, upp till kvotvärdet för den längsta körtiden för ett träningsjobb.
Övervakning och motståndskraft
Hårdvarufel är extremt sällsynt i omfattningen av en enskild instans och blir mer och mer frekvent när antalet instanser som används samtidigt ökar. I typisk LLM-skala – hundratals till tusentals GPU:er används 24/7 i veckor till månader – är det nästan säkert att maskinvarufel kommer att inträffa. Därför måste en LLM-arbetsbelastning implementera lämpliga övervaknings- och resiliensmekanismer. För det första är det viktigt att noggrant övervaka LLM-infrastruktur, för att begränsa effekten av fel och optimera användningen av beräkningsresurser. SageMaker Training föreslår flera funktioner för detta ändamål:
- Loggar skickas automatiskt till CloudWatch-loggar. Loggar inkluderar ditt träningsskript
stdout
ochstderr
. I MPI-baserad distribuerad utbildning skickar alla MPI-arbetare sina loggar till ledarprocessen. - Systemresursutnyttjandestatistik som minne, CPU-användning och GPU-användning skickas automatiskt till CloudWatch.
- Du kan definiera anpassade träningsmått som kommer att skickas till CloudWatch. Mätvärdena hämtas från loggar baserade på reguljära uttryck du ställer in. Experimentpaket från tredje part som AWS-partner erbjuder Vikter & Biases kan användas med SageMaker Training (se till exempel Optimera CIFAR-10 hyperparametrar med W&B och SageMaker).
- SageMaker Profiler låter dig inspektera infrastrukturanvändning och få optimeringsrekommendationer.
- Amazon EventBridge och AWS Lambda låter dig skapa automatisk klientlogik som reagerar på händelser som misslyckanden, framgångar, S3-filuppladdningar och mer.
- SageMaker SSH Helper är ett community-underhållet bibliotek med öppen källkod som gör att du kan ansluta till utbildningsjobbvärdar via SSH. Det kan vara till hjälp att inspektera och felsöka kodkörningar på specifika noder.
Förutom övervakning tar SageMaker även med sig utrustning för arbetsförmåga:
- Kluster hälsokontroller – Innan ditt jobb börjar kör SageMaker GPU-hälsokontroller och verifierar NCCL-kommunikation på GPU-instanser, och ersätter eventuella felaktiga instanser om det behövs för att säkerställa att ditt träningsskript börjar köras på ett hälsosamt kluster av instanser. Hälsokontroller är för närvarande aktiverade för P- och G GPU-baserade instanstyper.
- Inbyggda försök och klusteruppdatering – Du kan konfigurera SageMaker till automatiskt Försök igen utbildningsjobb som misslyckas med ett internt serverfel från SageMaker (ISE). Som en del av ett nytt försök med ett jobb kommer SageMaker att ersätta alla instanser som har stött på oåterställningsbara GPU-fel med nya instanser, starta om alla friska instanser och starta om jobbet. Detta resulterar i snabbare omstarter och slutförande av arbetsbelastningen. Klusteruppdatering är för närvarande aktiverad för P- och G GPU-baserade instanstyper. Du kan lägga till din egen mekanism för att försöka igen kring klientkoden som skickar jobbet, för att hantera andra typer av lanseringsfel, som att överskrida din kontokvot.
- Automatiserad checkpoint till Amazon S3 – Detta hjälper dig checkpoint dina framsteg och ladda om ett tidigare tillstånd på nya jobb.
För att dra nytta av ersättning på nodnivå måste din kod fel. Kollektiv kan hänga, istället för att göra fel, när en nod misslyckas. Därför, för att få snabb åtgärd, ställ in en timeout på dina kollektiv och få koden att ge ett fel när det nås.
Vissa kunder ställer in en övervakningsklient för att övervaka och agera i händelse av att jobbet hänger sig eller applicerande konvergens avbryts, genom att övervaka CloudWatch-loggar och mätvärden för onormala mönster som inga loggar skrivna eller 0 % GPU-användning för att tipsa om hängning, konvergensstopp och auto stoppa/försök jobbet igen.
Djupdykning vid checkpointing
Smakämnen SageMaker checkpoint funktion kopierar allt du skriver på /opt/ml/checkpoints
tillbaka till Amazon S3 som den URI som anges i checkpoint_s3_uri
SDK-parameter. När ett jobb startar eller startar om skickas allt som skrivits på den URI:en tillbaka till alla maskiner, kl /opt/ml/checkpoints
. Detta är praktiskt om du vill att alla noder ska ha tillgång till alla kontrollpunkter, men i skala – när du har många maskiner eller många historiska kontrollpunkter kan det leda till långa nedladdningstider och för hög trafik på Amazon S3. Dessutom, i tensor- och pipelineparallellism, behöver arbetarna bara en bråkdel av den checkpointade modellen, inte allt. Om du möter dessa begränsningar rekommenderar vi följande alternativ:
- Checkpointing till FSx för Luster – Tack vare högpresterande slumpmässig I/O kan du definiera skärnings- och filattributionsschemat som du väljer
- Självhanterad Amazon S3 checkpointing – För exempel på Python-funktioner som kan användas för att spara och läsa kontrollpunkter på ett icke-blockerande sätt, se Spara kontrollpunkter
Vi rekommenderar starkt att du kontrollerar din modell med några timmars mellanrum, till exempel 1–3 timmar, beroende på associerade omkostnader och kostnader.
Gränssnitt och användarhantering
Användarhantering är en viktig användbarhetsstyrka hos SageMaker jämfört med äldre delad HPC-infrastruktur. SageMaker Training-behörigheter styrs av flera AWS identitets- och åtkomsthantering (IAM) abstraktioner:
- Rektorer – användare och system – ges tillstånd att starta resurser
- Utbildningsjobb bär roller själva, vilket gör att de kan ha egna behörigheter, till exempel angående dataåtkomst och tjänsteanrop
Dessutom lade vi till 2022 SageMaker rollchef för att underlätta skapandet av persondrivna behörigheter.
Slutsats
Med SageMaker Training kan du minska kostnaderna och öka iterationshastigheten på din träningsbelastning av stora modeller. Vi har dokumenterat framgångshistorier i många inlägg och fallstudier, inklusive:
Om du vill förbättra din LLM time-to-market samtidigt som du minskar dina kostnader, ta en titt på SageMaker Training API och låt oss veta vad du bygger!
Speciellt tack till Amr Ragab, Rashika Kheria, Zmnako Awrahman, Arun Nagarajan, Gal Oshri för deras användbara recensioner och läror.
Om författarna
Anastasia Tzeveleka är en maskininlärnings- och AI-specialistlösningsarkitekt på AWS. Hon arbetar med kunder i EMEA och hjälper dem att utforma lösningar för maskininlärning i stor skala med hjälp av AWS-tjänster. Hon har arbetat med projekt inom olika domäner inklusive Natural Language Processing (NLP), MLOps och Low Code No Code-verktyg.
Gili Nachum är en senior AI/ML Specialist Solutions Architect som arbetar som en del av EMEAs Amazon Machine Learning-team. Gili brinner för utmaningarna med att träna modeller för djupinlärning och hur maskininlärning förändrar världen som vi känner den. På fritiden tycker Gili om att spela bordtennis.
Olivier Cruchant är en Principal Machine Learning Specialist Solutions Architect på AWS, baserad i Frankrike. Olivier hjälper AWS-kunder – från små startups till stora företag – att utveckla och distribuera maskininlärningsapplikationer i produktionsklass. På fritiden tycker han om att läsa forskningsrapporter och utforska vildmarken med vänner och familj.
Bruno Pistone är en AI/ML Specialist Solutions Architect för AWS baserad i Milano. Han arbetar med kunder av alla storlekar för att hjälpa dem att på djupet förstå deras tekniska behov och designa AI- och Machine Learning-lösningar som utnyttjar AWS Cloud och Amazon Machine Learning-stacken på bästa sätt. Hans expertområde är Machine Learning end to end, Machine Learning Industrialization och MLOps. Han tycker om att umgås med sina vänner och utforska nya platser, samt att resa till nya destinationer.
- SEO-drivet innehåll och PR-distribution. Bli förstärkt idag.
- Platoblockchain. Web3 Metaverse Intelligence. Kunskap förstärkt. Tillgång här.
- Källa: https://aws.amazon.com/blogs/machine-learning/training-large-language-models-on-amazon-sagemaker-best-practices/
- :är
- ][s
- $UPP
- 000
- 1
- 100
- 2022
- 7
- 8
- a
- förmågor
- Able
- Om Oss
- ovan
- accelerera
- accelererad
- tillgång
- rymma
- Konto
- Uppnå
- uppnå
- tvärs
- Agera
- aktivering
- aktiv
- anpassa
- lagt till
- Dessutom
- Dessutom
- tillsatser
- Fördel
- AI
- AI / ML
- AL
- algoritm
- algoritmer
- Alla
- tillåta
- tillåter
- amason
- Amazon EC2
- Amazon FSx
- Amazon maskininlärning
- Amazon SageMaker
- mängd
- och
- api
- API: er
- tillämplig
- Ansökan
- tillämpningar
- tillämpas
- lämpligt
- ÄR
- OMRÅDE
- runt
- AS
- associerad
- At
- attribut
- bil
- Automatiserad
- automatiskt
- tillgänglig
- undvika
- AWS
- tillbaka
- backend
- Balansera
- baserat
- BE
- därför att
- blir
- innan
- Där vi får lov att vara utan att konstant prestera,
- fördel
- BÄST
- bästa praxis
- Bortom
- Stor
- Miljarder
- miljarder
- Blockera
- föra
- Bringar
- SLUTRESULTAT
- byggt
- företag
- by
- Ring
- kallas
- Samtal
- KAN
- kapabel
- Kapacitet
- kortet
- Kort
- bära
- Vid
- Fallstudier
- katalyserar
- utmaningar
- byte
- Kanal
- ta
- Kontroller
- val
- val
- Välja
- klasser
- klient
- nära
- cloud
- kluster
- koda
- Kollektiv
- kombinerad
- komma
- Gemensam
- vanligen
- Kommunikation
- Trygghet i vårdförloppet
- jämfört
- kompatibel
- fullbordan
- beräkning
- Compute
- dator
- Datorsyn
- databehandling
- avslutar
- genomfördes
- konfiguration
- Bekräfta
- Kontakta
- Följaktligen
- innehålla
- Behållare
- Behållare
- innehåller
- innehåll
- bidrog
- kontroll
- kontrolleras
- Bekväm
- Konvergens
- Korruption
- Pris
- Kostar
- kunde
- Kurs
- täcka
- Täcker
- skapa
- skapande
- Kreativ
- kritisk
- avgörande
- curation
- För närvarande
- beställnings
- Kunder
- skräddarsy
- datum
- datatillgång
- Förberedelse av data
- datauppsättningar
- beslutar
- dedicerad
- djup
- djupt lärande
- Standard
- Examen
- beroende
- beror
- distribuera
- Designa
- utformade
- önskas
- destinationer
- Bestämma
- bestämmande
- utveckla
- utvecklade
- Utvecklare
- utvecklare
- Utveckling
- utvecklar
- anordning
- enheter
- olika
- Diffusion
- direkt
- diskutera
- diskuteras
- distribueras
- distribuerad databehandling
- distribuerad utbildning
- fördelning
- Hamnarbetare
- inte
- domäner
- inte
- ner
- ladda ner
- dussintals
- under
- varje
- lätt
- Effektiv
- antingen
- EMEA
- möjliggöra
- aktiverad
- möjliggör
- möjliggör
- uppmuntra
- slutar
- förbättrad
- njuta
- tillräckligt
- säkerställa
- Företag
- företag
- inträde
- Miljö
- miljöer
- Utrustning
- utrustad
- fel
- fel
- etablera
- Även
- händelser
- eventuell
- Varje
- allt
- utvecklats
- exempel
- exempel
- excel
- befintliga
- förvänta
- förväntat
- erfarenhet
- experimentera
- Utforska
- utsatta
- uttryck
- sträcker
- förlängningar
- extern
- extremt
- tyg
- Ansikte
- främja
- underlättande
- faktorer
- Misslyckades
- misslyckas
- Misslyckande
- familjer
- familj
- Mode
- SNABB
- snabbare
- defekt
- möjlig
- Leverans
- Funktioner
- få
- fält
- Fil
- Filer
- Förnamn
- passa
- FLOTTA
- Flexibilitet
- Fokus
- fokuserar
- följt
- efter
- För
- fraktion
- Ramverk
- ramar
- Frankrike
- Frihet
- frekvent
- färsk
- vänner
- från
- full
- fullständigt
- funktionella
- funktionalitet
- funktioner
- ytterligare
- TJEJ
- genereras
- generativ
- skaffa sig
- få
- GitHub
- ges
- GPU
- GPUs
- diagram
- stor
- störst
- Grupp
- Växer
- hantera
- Arbetsmiljö
- Hänga
- hända
- hårdvara
- Har
- har
- Hälsa
- friska
- hjälp
- hjälpa
- hjälper
- Hög
- Hög frekvens
- högpresterande
- historisk
- huva
- värdar
- ÖPPETTIDER
- Hur ser din drömresa ut
- How To
- Men
- HPC
- html
- http
- HTTPS
- Hundratals
- hundratals miljoner
- i
- identiska
- Identitet
- bild
- bilder
- blir omedelbart
- Inverkan
- genomföra
- genomföras
- genomföra
- med Esport
- förbättra
- förbättras
- förbättringar
- in
- I andra
- innefattar
- Inklusive
- Öka
- ökat
- Ökar
- alltmer
- individuellt
- industrin
- info
- informationen
- Infrastruktur
- Innovation
- inspirerat
- installera
- exempel
- istället
- integrerade
- integrering
- Intelligent
- interaktion
- Gränssnitt
- mellanhand
- inre
- införa
- introducerade
- IT
- iteration
- DESS
- sig
- Jobb
- Lediga jobb
- jpg
- Ha kvar
- Nyckel
- Snäll
- Vet
- språk
- Språk
- Large
- storskalig
- större
- senaste
- lansera
- lanserades
- lanserar
- lager
- skikt
- leda
- ledare
- inlärning
- Legacy
- Nivå
- bibliotek
- Bibliotek
- livscykel
- tycka om
- sannolikt
- BEGRÄNSA
- begränsningar
- Begränsad
- liten
- LLM
- läser in
- lokal
- Lång
- länge sedan
- se
- du letar
- Låg
- Maskinen
- maskininlärning
- Maskiner
- bibehålla
- upprätthålla
- upprätthåller
- göra
- GÖR
- Framställning
- hantera
- förvaltade
- ledning
- många
- kartor
- maximal
- Minne
- metadata
- metoder
- Metrics
- migration
- MILAN
- miljoner
- ML
- MLOps
- Mode
- modell
- modeller
- modifierad
- Övervaka
- övervakning
- mer
- mest
- flytta
- multipel
- nämligen
- nativ
- Natural
- Naturlig språkbehandling
- Natur
- nödvändigtvis
- nödvändigt för
- Behöver
- behov
- nät
- nätverksbaserade
- nätverk
- neurala nätverk
- Nya
- nlp
- nod
- noder
- antal
- talrik
- Nvidia
- objekt
- of
- erbjudanden
- erbjuda
- Oliv
- on
- On-Demand
- ONE
- öppet
- öppen källkod
- öppen källkod
- öppnade
- möjligheter
- optimering
- Optimera
- optimerad
- Alternativet
- Tillbehör
- orkestrering
- beställa
- Övriga
- egen
- paket
- paket
- Papper
- papper
- paradigmet
- Parallell
- parameter
- parametrar
- del
- särskilt
- särskilt
- brinner
- Tidigare
- bana
- mönster
- Betala
- Topp
- prestanda
- föreställningar
- tillstånd
- behörigheter
- Fysiskt
- rörledning
- platser
- plato
- Platon Data Intelligence
- PlatonData
- i
- Punkt
- poolen
- Pools
- Populära
- Inlägg
- inlägg
- praktiken
- praxis
- förutsäga
- preferenser
- föredragen
- presentera
- presenterar
- förhindra
- tidigare
- Principal
- process
- processer
- bearbetning
- producera
- Program
- Programmering
- programmeringsspråk
- Framsteg
- projekt
- ordentligt
- föreslå
- föreslår
- proprietary
- protokoll
- protokoll
- ge
- förutsatt
- leverantör
- tillhandahålla
- allmän
- publikationer
- Syftet
- sätta
- Python
- pytorch
- kvalitet
- höja
- slumpmässig
- SÄLLSYNT
- Betygsätta
- rates
- kommit fram till
- Läsa
- Läsning
- inser
- rimlig
- skäl
- motta
- senaste
- rekommenderar
- rekommendationer
- post
- register
- återvinning
- minska
- minskar
- reducerande
- om
- region
- regioner
- regelbunden
- regelbundet
- relaterad
- relevanta
- pålitlig
- avlägsen
- ersätta
- representerar
- begära
- förfrågningar
- kräver
- krav
- Kräver
- forskning
- forskning och innovation
- resurs
- Resurser
- Resultat
- Omdömen
- Roll
- roller
- Körning
- rinnande
- sagemaker
- Samma
- Save
- skalbarhet
- skalbar
- Skala
- skalor
- skalning
- ordningen
- vetenskaplig
- vetenskapsmän
- omfattning
- skript
- sDK
- Sök
- Andra
- sekunder
- §
- söker
- vald
- Val
- senior
- Server
- Servrar
- service
- Tjänster
- in
- inställningar
- flera
- skärmad
- sharding
- delas
- skall
- signifikant
- Enkelt
- enkelhet
- samtidigt
- enda
- Storlek
- storlekar
- färdigheter
- långsam
- Small
- So
- Mjukvara
- Lösningar
- några
- Källa
- Källor
- specialist
- specifik
- specifikt
- specificerade
- fart
- Spendera
- Delar upp
- Spot
- stabil
- stapel
- starta
- Starta
- startar
- Startups
- Ange
- statistisk
- Steg
- Sluta
- stoppa
- förvaring
- lagra
- Upplevelser för livet
- Strategi
- ström
- strömmar
- hållfasthet
- strippning
- starkt
- studier
- framgång
- Framgångsberättelser
- framgångsrik
- sådana
- stödja
- Som stöds
- Stöder
- synkronisering
- syntax
- system
- bord
- Ta
- uppgift
- uppgifter
- grupp
- Teknisk
- tensorflow
- Tack
- den där
- Smakämnen
- världen
- deras
- Dem
- sig själva
- teoretiska
- därför
- Dessa
- tredje part
- tusentals
- tre
- Genom
- genomströmning
- tid
- gånger
- Tips
- till
- i dag
- tokens
- alltför
- verktyg
- verktyg
- topp
- Totalt
- spår
- trafik
- Tåg
- tränad
- Utbildning
- Översättning
- transport
- Biljon
- typer
- typisk
- under
- underliggande
- förstå
- unika
- enheter
- Uppdatering
- us
- användbarhet
- Användning
- användning
- Användare
- vanligen
- värde
- Värden
- mängd
- olika
- verifiera
- version
- via
- Video
- utsikt
- syn
- varm
- Sätt..
- sätt
- veckor
- VÄL
- Vad
- som
- medan
- VEM
- Hela
- kommer
- med
- inom
- utan
- ord
- Arbete
- arbetade
- arbetare
- arbetssätt
- fungerar
- världen
- skriva
- skriven
- år
- Om er
- Din
- själv
- Youtube
- zephyrnet