Den nya effektiva multi-adapter slutledningsfunktionen för Amazon SageMaker låser upp spännande möjligheter för kunder som använder finjusterade modeller. Denna funktion integreras med SageMaker slutledningskomponenter så att du kan distribuera och hantera hundratals finjusterade Low-Rank Adaptation (LoRA)-adaptrar genom SageMaker API:er. Multi-adapter inferens hanterar registreringen av finjusterade adaptrar med en basmodell och laddar dem dynamiskt från GPU-minne, CPU-minne eller lokal disk på millisekunder, baserat på begäran. Den här funktionen tillhandahåller atomoperationer för att lägga till, ta bort eller uppdatera individuella adaptrar över en SageMaker-slutpunkts körande instanser utan att påverka prestandan eller kräva en omdistribuering av slutpunkten.
Effektiviteten hos LoRA-adaptrar möjliggör ett brett utbud av hyperpersonalisering och uppgiftsbaserad anpassning som tidigare hade varit för resurskrävande och kostsam för att vara genomförbar. Till exempel kan marknadsföring och programvara som en tjänst (SaaS)-företag anpassa artificiell intelligens och maskininlärning (AI/ML) applikationer med hjälp av var och en av sina kunders bilder, konststil, kommunikationsstil och dokument för att skapa kampanjer och artefakter som representerar dem. På liknande sätt kan företag inom branscher som hälso- och sjukvård eller finansiella tjänster återanvända en gemensam basmodell med uppgiftsbaserade adaptrar för att effektivt hantera en mängd specialiserade AI-uppgifter. Oavsett om det handlar om att diagnostisera medicinska tillstånd, utvärdera låneansökningar, förstå komplexa dokument eller upptäcka ekonomiska bedrägerier, kan du helt enkelt byta in den lämpliga finjusterade LoRA-adaptern för varje användningsfall under körning. Denna flexibilitet och effektivitet låser upp nya möjligheter att distribuera kraftfull, anpassad AI i hela din organisation. Med denna nya effektiva multi-adaptrar slutledningskapacitet minskar SageMaker komplexiteten i att distribuera och hantera adaptrarna som driver dessa applikationer.
I det här inlägget visar vi hur man använder den nya effektiva multi-adapter-inferensfunktionen i SageMaker.
Problem uttalande
Du kan använda kraftfulla förtränade grundmodeller (FM) utan att behöva bygga dina egna komplexa modeller från grunden. Men dessa generella modeller kanske inte alltid passar dina specifika behov eller dina unika data. För att få dessa modeller att fungera för dig kan du använda PEFT-tekniker (Parameter-Efficient Fine-Tuning) som LoRA.
Fördelen med PEFT och LoRA är att de låter dig finjustera modeller snabbt och kostnadseffektivt. Dessa metoder bygger på tanken att endast en liten del av en stor FM behöver uppdateras för att anpassa den till nya uppgifter eller domäner. Genom att frysa basmodellen och bara uppdatera några extra adapterlager kan du finjustera modellerna mycket snabbare och billigare, samtidigt som du behåller hög prestanda. Denna flexibilitet innebär att du snabbt kan anpassa förtränade modeller till låg kostnad för att möta olika krav. Vid slutledning kan LoRA-adaptrarna laddas dynamiskt under körning för att förstärka resultaten från basmodellen för bästa prestanda. Du kan skapa ett bibliotek med uppgiftsspecifika, kundspecifika eller domänspecifika adaptrar som kan bytas in efter behov för maximal effektivitet. Detta gör att du kan bygga AI som är skräddarsydd exakt för ditt företag.
Även om finjusterade LoRA-adaptrar effektivt kan hantera målinriktade användningsfall, kan det vara utmanande i stor skala att hantera dessa adaptrar. Du kan använda bibliotek med öppen källkod eller den AWS-hanterade Large Model Inference (LMI) djupinlärningsbehållaren (DLC) för att dynamiskt ladda och ta bort adaptervikter. Aktuella distributionsmetoder använder fasta adaptrar eller Amazon enkel lagringstjänst (Amazon S3) platser, vilket gör ändringar efter implementeringen omöjliga utan att uppdatera modellens slutpunkt och lägga till onödig komplexitet. Denna distributionsmetod gör det också omöjligt att samla in mätvärden per adapter, vilket gör utvärderingen av deras hälsa och prestanda till en utmaning.
Lösningsöversikt
I den här lösningen visar vi hur man använder effektiv multi-adapter-inferens i SageMaker för att vara värd för och hantera flera LoRA-adaptrar med en gemensam basmodell. Tillvägagångssättet är baserat på en befintlig SageMaker-kapacitet, slutledningskomponenter, där du kan ha flera behållare eller modeller på samma slutpunkt och allokera en viss mängd beräkningar till varje behållare. Med inferenskomponenter kan du skapa och skala flera kopior av modellen, som var och en behåller den beräkning som du har allokerat. Med slutledningskomponenter blir det en mycket enklare process att distribuera flera modeller som har specifika hårdvarukrav, vilket möjliggör skalning och värd för flera FM:er. Ett exempel på implementering skulle se ut som följande bild.
Den här funktionen utökar slutledningskomponenter till en ny typ av komponent, inferenskomponentadaptrar, som du kan använda för att låta SageMaker hantera dina individuella LoRA-adaptrar i skala samtidigt som de har en gemensam slutledningskomponent för basmodellen som du distribuerar. I det här inlägget visar vi hur man skapar, uppdaterar och tar bort adaptrar för inferenskomponenter och hur man kallar dem för slutledning. Du kan föreställa dig denna arkitektur som följande figur.
Förutsättningar
För att köra exempelanteckningsböckerna behöver du ett AWS-konto med en AWS identitets- och åtkomsthantering (IAM) roll med behörighet att hantera skapade resurser. För detaljer, se Skapa ett AWS-konto.
Om det här är första gången du arbetar med Amazon SageMaker Studio, måste du först skapa en SageMaker-domän. Dessutom kan du behöva begära en ökning av tjänstekvoten för motsvarande SageMaker-värdinstanser. I det här exemplet är du värd för basmodellen och flera adaptrar på samma SageMaker-slutpunkt, så du kommer att använda en ml.g5.12xlarge SageMaker-värdinstans.
I det här exemplet lär du dig hur du distribuerar en basmodell (Meta Llama 3.1 8B Instruktion) och LoRA-adaptrar på en SageMaker-slutpunkt i realtid som använder inferenskomponenter. Du kan hitta exempel på anteckningsboken i GitHub repository.
Ladda ner basmodellen från modellnavet Hugging Face. Eftersom Meta Llama 3.1 8B Instruct är en gated modell, behöver du en Hugging Face-åtkomsttoken och för att skicka in en begäran om modellåtkomst på modellsidan. För mer information, se Tillgång till privata/gated modeller.
Kopiera din modellartefakt till Amazon S3 för att förbättra modellens laddningstid under driftsättning:
!aws s3 cp —recursive {local_model_path} {s3_model_path}
Välj en av tillgängliga LMI-containerbilder för värdskap. Effektiv adapterförmåga finns tillgänglig i 0.31.0-lmi13.0.0 och högre.
inference_image_uri = "763104351884.dkr.ecr.us-west-2.amazonaws.com/djl-inference:0.31.0-lmi13.0.0-cu124"
Skapa en containermiljö för värdbehållaren. LMI-behållarparametrar finns i LMI Backend Användarguider.
Parametrarna OPTION_MAX_LORAS
och OPTION_MAX_CPU_LORAS
styr hur adaptrar flyttar mellan GPU, CPU och disk. OPTION_MAX_LORAS
anger en gräns för antalet adaptrar som samtidigt lagras i GPU-minnet, med överflödiga adaptrar avlastade till CPU-minnet. OPTION_MAX_CPU_LORAS
bestämmer hur många adaptrar som är iscensatta i CPU-minnet, och överför överflödiga adaptrar till lokal SSD-lagring.
I följande exempel kan 30 adaptrar leva i GPU-minne och 70 adaptrar i CPU-minne innan de går till lokal lagring.
Med din behållarbild och miljö definierade kan du skapa ett SageMaker-modellobjekt som du kommer att använda för att skapa en slutledningskomponent senare:
Konfigurera en SageMaker-slutpunkt
För att skapa en SageMaker-slutpunkt behöver du en slutpunktskonfiguration. När du använder inferenskomponenter anger du inte en modell i slutpunktskonfigurationen. Du laddar modellen som en komponent senare.
Skapa SageMaker-slutpunkten med följande kod:
Med din slutpunkt skapad kan du nu skapa slutledningskomponenten för basmodellen. Detta kommer att vara baskomponenten som adapterkomponenterna du skapar senare kommer att bero på.
Anmärkningsvärda parametrar här är ComputeResourceRequirements. Dessa är en konfiguration på komponentnivå som bestämmer mängden resurser som komponenten behöver (minne, vCPU:er, acceleratorer). Adaptrarna kommer att dela dessa resurser med baskomponenten.
I det här exemplet skapar du en enda adapter, men du kan vara värd för upp till hundratals av dem per slutpunkt. De kommer att behöva komprimeras och laddas upp till Amazon S3.
Adapterpaketet har följande filer i roten av arkivet utan undermappar.
För det här exemplet finjusterades en adapter med QLoRA och Fullständigt delad data parallell (FSDP) på träningsuppdelningen av ECTSum dataset. Träningen tog 21 minuter på en ml.p4d.24xlarge och kostade cirka 13 USD med ström prissättning på begäran.
För varje adapter du ska distribuera måste du ange en InferenceComponentName
, En ArtifactUrl
med S3-platsen för adapterarkivet, och en BaseInferenceComponentName
för att skapa kopplingen mellan basmodellens slutledningskomponent och de nya adapterns slutledningskomponenter. Du upprepar denna process för varje ytterligare adapter.
Använd den installerade adaptern
Först skapar du en uppmaning att åberopa modellen för resultatsammanfattning, och fyller i källtexten med ett slumpmässigt objekt från ECTSum
dataset. Sedan lagrar du grundsanningssammanfattningen från objektet för jämförelse senare.
För att testa basmodellen, specificera EndpointName
för slutpunkten du skapade tidigare och namnet på basinferenskomponenten som InferenceComponentName
, tillsammans med din prompt och andra inferensparametrar i parametern Body:
För att anropa adaptern, använd namnet på adapterns inferenskomponent i din invoke_endpoint
ringa upp:
Jämför utgångar
Jämför basmodellens och adapterns utdata med jord sanning. Även om basmodellen kan verka subjektivt bättre i det här testet, är adapterns svar faktiskt mycket närmare grundsvaret. Detta kommer att bevisas med statistik i nästa avsnitt.
För att validera den verkliga adapterns prestanda kan du använda ett verktyg som fmeval att göra en utvärdering av summeringsnoggrannheten. Detta kommer att beräkna METEOR-, ROUGE- och BertScore-måtten för adaptern kontra basmodellen. Att göra det mot provdelningen av ECTSum ger följande resultat.
Den finjusterade adaptern visar en ökning med 59 % i METEOR-poäng, 159 % ökning av ROUGE-poäng och 8.6 % ökning i BertScore.
Följande diagram visar frekvensfördelningen av poängen för de olika mätvärdena, med adaptern konsekvent poäng bättre oftare i alla mätvärden.
Vi observerade en änd-till-ände latensskillnad på upp till 10 % mellan basmodellanropet och adaptern i våra tester. Om adaptern laddas från CPU-minne eller disk kommer det att medföra en ytterligare kallstartsfördröjning för den första laddningen till GPU. Men beroende på dina behållarkonfigurationer och den valda instanstypen kan dessa värden variera.
Uppdatera en befintlig adapter
Eftersom adaptrar hanteras som slutledningskomponenter kan du uppdatera dem på en slutpunkt som körs. SageMaker hanterar avlastning och avregistrering av den gamla adaptern och laddning och registrering av den nya adaptern på varje basinferenskomponent på alla instanser som den körs på för denna slutpunkt. För att uppdatera en adapterinferenskomponent, använd update_inference_component API och ange det befintliga inferenskomponentnamnet och Amazon S3-sökvägen till det nya komprimerade adapterarkivet.
Du kan träna en ny adapter eller ladda upp den befintliga adapterartefakten igen för att testa den här funktionen.
Ta bort adaptrarna
Om du behöver ta bort en adapter, anropa delete_inference_component API med inferenskomponentens namn för att ta bort den:
Om du tar bort basmodellens slutledningskomponent raderas basinferenskomponenten automatiskt och alla tillhörande adapterkomponenter:
Priser
SageMaker multi-adapter inferens är allmänt tillgänglig i AWS-regioner USA East (N. Virginia, Ohio), USA West (Oregon), Asia Pacific (Jakarta, Mumbai, Seoul, Singapore, Sydney, Tokyo), Kanada (Central), Europa ( Frankfurt, Irland, London, Stockholm), Mellanöstern (Förenade Arabemiraten) och Sydamerika (São Paulo) och är tillgänglig utan extra kostnad.
Slutsats
Den nya effektiva multiadapter-inferensfunktionen i SageMaker öppnar upp spännande möjligheter för kunder med finjusterande användningsfall. Genom att tillåta dynamisk laddning av finjusterade LoRA-adaptrar kan du snabbt och kostnadseffektivt anpassa AI-modeller till dina specifika behov. Denna flexibilitet låser upp nya möjligheter att distribuera kraftfull, anpassad AI över organisationer inom branscher som marknadsföring, hälsovård och finans. Möjligheten att hantera dessa adaptrar i stor skala genom SageMaker inferenskomponenter gör det enkelt att bygga skräddarsydda generativa AI-lösningar.
Om författarna
Dmitrij Soldatkin är Senior Machine Learning Solutions Architect på AWS, som hjälper kunder att designa och bygga AI/ML-lösningar. Dmitrys arbete täcker ett brett spektrum av ML-användningsfall, med ett primärt intresse för generativ AI, djupinlärning och skalning av ML över hela företaget. Han har hjälpt företag inom många branscher, inklusive försäkringar, finansiella tjänster, allmännyttiga företag och telekommunikation. Han har en passion för kontinuerlig innovation och att använda data för att driva affärsresultat. Innan han började på AWS var Dmitry en arkitekt, utvecklare och teknikledare inom dataanalys och maskininlärning inom finansbranschen.
Giuseppe Zappia är en Principal AI/ML Specialist Solutions Architect på AWS, fokuserad på att hjälpa stora företag att designa och distribuera ML-lösningar på AWS. Han har över 20 års erfarenhet som full-stack mjukvaruingenjör och har tillbringat de senaste 5 åren på AWS fokuserat på maskininlärning.
Ram Vegiraju är en ML-arkitekt med Amazon SageMaker Service-teamet. Han fokuserar på att hjälpa kunder att bygga och optimera sina AI/ML-lösningar på Amazon SageMaker. På fritiden älskar han att resa och skriva.
- SEO-drivet innehåll och PR-distribution. Bli förstärkt idag.
- PlatoData.Network Vertical Generative Ai. Styrka dig själv. Tillgång här.
- PlatoAiStream. Web3 Intelligence. Kunskap förstärkt. Tillgång här.
- Platoesg. Kol, CleanTech, Energi, Miljö, Sol, Avfallshantering. Tillgång här.
- PlatoHealth. Biotech och kliniska prövningar Intelligence. Tillgång här.
- Källa: https://aws.amazon.com/blogs/machine-learning/easily-deploy-and-manage-hundreds-of-lora-adapters-with-sagemaker-efficient-multi-adapter-inference/