När du distribuerar Deep Learning-modeller i stor skala är det avgörande att effektivt använda den underliggande hårdvaran för att maximera prestanda och kostnadsfördelar. För produktionsarbetsbelastningar som kräver hög genomströmning och låg latens, valet av Amazon Elastic Compute Cloud (EC2)-instans, modellbetjäningsstack och distributionsarkitektur är mycket viktigt. Ineffektiv arkitektur kan leda till suboptimalt utnyttjande av acceleratorerna och onödigt höga produktionskostnader.
I det här inlägget går vi igenom processen med att distribuera FastAPI-modellservrar på AWS Inferentia-enheter (finns på Amazon EC2 INF1 och Amazon EC INF2 instanser). Vi visar också att vi är värd för en exempelmodell som distribueras parallellt över alla NeuronCores för maximalt hårdvaruutnyttjande.
Lösningsöversikt
FastAPI är ett webbramverk med öppen källkod för att servera Python-applikationer som är mycket snabbare än traditionella ramverk som Flask och Django. Den använder en Asynkront Server Gateway-gränssnitt (ASGI) istället för den allmänt använda Gränssnitt för webbservergateway (WSGI). ASGI behandlar inkommande förfrågningar asynkront i motsats till WSGI som behandlar förfrågningar sekventiellt. Detta gör FastAPI till det perfekta valet för att hantera latenskänsliga förfrågningar. Du kan använda FastAPI för att distribuera en server som är värd för en slutpunkt på en Inferentia (Inf1/Inf2)-instans som lyssnar på klientförfrågningar via en angiven port.
Vårt mål är att uppnå högsta prestanda till lägsta kostnad genom maximalt utnyttjande av hårdvaran. Detta gör att vi kan hantera fler slutledningsförfrågningar med färre acceleratorer. Varje AWS Inferentia1-enhet innehåller fyra NeuronCores-v1 och varje AWS Inferentia2-enhet innehåller två NeuronCores-v2. De AWS Neuron SDK tillåter oss att använda var och en av NeuronCores parallellt, vilket ger oss mer kontroll när det gäller att ladda och sluta fyra eller fler modeller parallellt utan att offra genomströmningen.
Med FastAPI har du ditt val av Python-webbserver (gunicorn, Uvicorn, Hypercorn, Daphne). Dessa webbservrar tillhandahåller ett abstraktionslager ovanpå den underliggande Machine Learning (ML)-modellen. Den begärande klienten har fördelen av att vara omedveten om den värdbaserade modellen. En klient behöver inte känna till modellens namn eller version som har distribuerats under servern; slutpunktsnamnet är nu bara en proxy till en funktion som laddar och kör modellen. Däremot är modellens namn och version en del av slutpunktsnamnet i ett ramspecifikt serververktyg, som TensorFlow Serving. Om modellen ändras på serversidan måste klienten känna till och ändra sitt API-anrop till den nya slutpunkten i enlighet med detta. Därför, om du kontinuerligt utvecklar versionsmodellerna, till exempel i fallet med A/B-testning, är användningen av en generisk Python-webbserver med FastAPI ett bekvämt sätt att betjäna modeller, eftersom slutpunktsnamnet är statiskt.
En ASGI-servers roll är att skapa ett specificerat antal arbetare som lyssnar efter klientförfrågningar och kör slutledningskoden. En viktig förmåga hos servern är att se till att det begärda antalet anställda är tillgängliga och aktiva. Om en arbetare dödas måste servern starta en ny arbetare. I detta sammanhang kan servern och arbetarna identifieras av deras Unix-process-ID (PID). För det här inlägget använder vi en Hypercorn server, som är ett populärt val för Python-webbservrar.
I det här inlägget delar vi bästa praxis för att implementera modeller för djupinlärning med FastAPI på AWS Inferentia NeuronCores. Vi visar att du kan distribuera flera modeller på separata NeuronCores som kan anropas samtidigt. Denna inställning ökar genomströmningen eftersom flera modeller kan antas samtidigt och NeuronCore-användningen är helt optimerad. Koden finns på GitHub repo. Följande figur visar arkitekturen för hur man ställer in lösningen på en EC2 Inf2-instans.
Samma arkitektur gäller för en EC2 Inf1-instanstyp förutom att den har fyra kärnor. Så det förändrar arkitekturdiagrammet lite.
AWS Inferentia NeuronCores
Låt oss gräva lite djupare i verktyg som tillhandahålls av AWS Neuron för att engagera oss i NeuronCores. Följande tabeller visar antalet NeuronCores i varje Inf1- och Inf2-instanstyp. Värdens vCPU:er och systemminnet delas mellan alla tillgängliga NeuronCores.
Förekomststorlek | # Inferentiacceleratorer | # NeuronCores-v1 | vCPU: er | Minne (GiB) |
Inf1.xlarge | 1 | 4 | 4 | 8 |
Inf1.2xlarge | 1 | 4 | 8 | 16 |
Inf1.6xlarge | 4 | 16 | 24 | 48 |
Inf1.24xlarge | 16 | 64 | 96 | 192 |
Förekomststorlek | # Inferentiacceleratorer | # NeuronCores-v2 | vCPU: er | Minne (GiB) |
Inf2.xlarge | 1 | 2 | 4 | 32 |
Inf2.8xlarge | 1 | 2 | 32 | 32 |
Inf2.24xlarge | 6 | 12 | 96 | 192 |
Inf2.48xlarge | 12 | 24 | 192 | 384 |
Inf2-instanser innehåller den nya NeuronCores-v2 i jämförelse med NeuronCore-v1 i Inf1-instanserna. Trots färre kärnor kan de erbjuda 4x högre genomströmning och 10x lägre latens än Inf1-instanser. Inf2-instanser är idealiska för Deep Learning-arbetsbelastningar som Generativ AI, Large Language Models (LLM) i OPT/GPT-familjen och visiontransformatorer som Stable Diffusion.
Neuron Runtime är ansvarig för att köra modeller på Neuron-enheter. Neuron Runtime avgör vilken NeuronCore som ska köra vilken modell och hur den ska köras. Konfiguration av Neuron Runtime styrs genom att använda Miljövariabler på processnivå. Som standard kommer Neuron framework extensions att ta hand om Neuron Runtime-konfigurationen för användarens räkning; explicita konfigurationer är dock också möjliga för att uppnå mer optimerat beteende.
Två populära miljövariabler är NEURON_RT_NUM_CORES
och NEURON_RT_VISIBLE_CORES
. Med dessa miljövariabler kan Python-processer knytas till en NeuronCore. Med NEURON_RT_NUM_CORES
, kan ett specificerat antal kärnor reserveras för en process, och med NEURON_RT_VISIBLE_CORES
, en rad NeuronCores kan reserveras. Till exempel, NEURON_RT_NUM_CORES=2 myapp.py
kommer att reservera två kärnor och NEURON_RT_VISIBLE_CORES=’0-2’ myapp.py
kommer att reservera noll, en och två kärnor för myapp.py
. Du kan också reservera NeuronCores över enheter (AWS Inferentia-chips). Så, NEURON_RT_VISIBLE_CORES=’0-5’ myapp.py
kommer att reservera de första fyra kärnorna på device1
och en kärna på device2
i en Ec2 Inf1-instanstyp. På liknande sätt, på en EC2 Inf2-instanstyp, kommer denna konfiguration att reservera två kärnor över device1
och device2
och en kärna på device3
. Följande tabell sammanfattar konfigurationen av dessa variabler.
Namn | Beskrivning | Typ | Förväntade värden | Standardvärde | RT-version |
NEURON_RT_VISIBLE_CORES |
En rad specifika NeuronCores som behövs för processen | Heltalsområde (som 1-3) | Valfritt värde eller intervall mellan 0 till Max NeuronCore i systemet | Ingen | 2.0+ |
NEURON_RT_NUM_CORES |
Antal NeuronCores som krävs av processen | Heltal | Ett värde från 1 till Max NeuronCore i systemet | 0, vilket tolkas som "alla" | 2.0+ |
För en lista över alla miljövariabler, se Neuron Runtime Configuration.
Som standard, när modeller läses in, laddas modellerna till NeuronCore 0 och sedan NeuronCore 1 om det inte uttryckligen anges av de föregående miljövariablerna. Som specificerats tidigare delar NeuronCores de tillgängliga värd-vCPU:erna och systemminnet. Därför kommer modeller som distribueras på varje NeuronCore att konkurrera om de tillgängliga resurserna. Detta kommer inte att vara ett problem om modellen använder NeuronCores i stor utsträckning. Men om en modell endast körs delvis på NeuronCores och resten på värd-vCPU:er blir det viktigt att överväga CPU-tillgänglighet per NeuronCore. Detta påverkar också valet av instans.
Följande tabell visar antalet tillgängliga värd-vCPU:er och systemminne per modell om en modell distribuerades till varje NeuronCore. Beroende på din applikations NeuronCore-användning, vCPU och minnesanvändning, rekommenderas det att köra tester för att ta reda på vilken konfiguration som fungerar bäst för din applikation. De Neuron Top verktyg kan hjälpa till att visualisera kärnanvändning och enhets- och värdminnesanvändning. Baserat på dessa mätvärden kan ett välgrundat beslut fattas. Vi visar användningen av Neuron Top i slutet av denna blogg.
Förekomststorlek | # Inferentiacceleratorer | # Modeller | vCPU:er/modell | Minne/modell (GiB) |
Inf1.xlarge | 1 | 4 | 1 | 2 |
Inf1.2xlarge | 1 | 4 | 2 | 4 |
Inf1.6xlarge | 4 | 16 | 1.5 | 3 |
Inf1.24xlarge | 16 | 64 | 1.5 | 3 |
Förekomststorlek | # Inferentiacceleratorer | # Modeller | vCPU:er/modell | Minne/modell (GiB) |
Inf2.xlarge | 1 | 2 | 2 | 8 |
Inf2.8xlarge | 1 | 2 | 16 | 64 |
Inf2.24xlarge | 6 | 12 | 8 | 32 |
Inf2.48xlarge | 12 | 24 | 8 | 32 |
För att testa Neuron SDK-funktionerna själv, kolla in de senaste Neuronfunktioner för PyTorch.
Systeminställning
Följande är systeminställningen som används för denna lösning:
Ställ in lösningen
Det finns ett par saker vi måste göra för att ställa in lösningen. Börja med att skapa en IAM-roll som din EC2-instans kommer att anta som gör att den kan trycka och dra från Amazon Elastic Container Registry.
Steg 1: Ställ in IAM-rollen
- Börja med att logga in på konsolen och gå till IAM > Roller > Skapa roll
- Välj Betrodd enhetstyp
AWS Service
- Välj EC2 som tjänst under use-case
- Klicka Nästa och du kommer att kunna se alla tillgängliga policyer
- För ändamålet med denna lösning kommer vi att ge vår EC2-instans full tillgång till ECR. Filtrera för AmazonEC2ContainerRegistryFullAccess och välj det.
- Tryck på nästa och namnge rollen
inf-ecr-access
Obs: policyn vi bifogade ger EC2-instansen full tillgång till Amazon ECR. Vi rekommenderar starkt att följa minsta privilegiets huvudman för produktionsbelastningar.
Steg 2: Konfigurera AWS CLI
Om du använder den föreskrivna Deep Learning AMI som anges ovan kommer den med AWS CLI installerad. Om du använder en annan AMI (Amazon Linux 2023, Base Ubuntu etc.), installera CLI-verktygen genom att följa Denna guide.
När du har installerat CLI-verktygen konfigurerar du CLI med kommandot aws configure
. Om du har åtkomstnycklar kan du lägga till dem här men behöver dem inte nödvändigtvis för att interagera med AWS-tjänster. Vi förlitar oss på IAM-roller för att göra det.
Anmärkningar: Vi måste ange minst ett värde (standardregion eller standardformat) för att skapa standardprofilen. För det här exemplet går vi med us-east-2
som regionen och json
som standardutgång.
Klona Github-förvaret
Smakämnen GitHub repo tillhandahåller alla skript som behövs för att distribuera modeller med FastAPI på NeuronCores på AWS Inferentia-instanser. Det här exemplet använder Docker-behållare för att säkerställa att vi kan skapa återanvändbara lösningar. Inkluderat i detta exempel är följande config.properties fil för användare att ge indata.
Konfigurationsfilen behöver användardefinierade namnprefix för Docker-bilden och Docker-behållare. De build.sh
manus i fastapi
och trace-model
mappar använder detta för att skapa Docker-bilder.
Kompilera en modell på AWS Inferentia
Vi börjar med att spåra modellen och producera en PyTorch Torchscript .pt-fil. Börja med att komma åt trace-model
katalogen och ändra .env-filen. Beroende på vilken typ av instans du valde, ändra CHIP_TYPE
inom .env
fil. Som ett exempel kommer vi att välja Inf2 som guide. Samma steg gäller för distributionsprocessen för Inf1.
Ställ sedan in standardregionen i samma fil. Denna region kommer att användas för att skapa ett ECR-arkiv och Docker-bilder kommer att skickas till detta arkiv. Även i den här mappen tillhandahåller vi alla skript som behövs för att spåra en bert-base-uncased
modell på AWS Inferentia. Detta skript kan användas för de flesta modeller som finns tillgängliga på Kramande ansikte. De Dockerfile har alla beroenden för att köra modeller med Neuron och kör trace-model.py kod som ingångspunkt.
Neuronsammanställning förklaras
Neuron SDK:s API liknar PyTorch Python API. De torch.jit.trace()
från PyTorch tar modellen och provinmatningstensorn som argument. Sampelingångarna matas till modellen och operationerna som anropas när den ingången tar sig igenom modellens lager registreras som TorchScript. För att lära dig mer om JIT-spårning i PyTorch, se följande dokumentation.
Precis som torch.jit.trace()
, kan du kontrollera om din modell kan kompileras på AWS Inferentia med följande kod för inf1-instanser.
För inf2 kallas biblioteket torch_neuronx
. Så här kan du testa din modellkompilering mot inf2-instanser.
Efter att ha skapat spårningsinstansen kan vi skicka exemplet på tensoringången så här:
Och spara slutligen den resulterande TorchScript-utdatan på lokal disk
Som visas i föregående kod kan du använda compiler_args
och optimizations
för att optimera driftsättningen. För en detaljerad lista över argument för torch.neuron.trace
API, se PyTorch-Neuron spårar python API.
Tänk på följande viktiga punkter:
- Neuron SDK stöder inte dynamiska tensorformer när detta skrivs. Därför måste en modell kompileras separat för olika inmatningsformer. För mer information om att köra slutledning om variabla indataformer med bucketing, se Kör slutledning om variabla indataformer med bucketing.
- Om du får problem med minnet när du kompilerar en modell, försök att kompilera modellen på en AWS Inferentia-instans med fler vCPU:er eller minne, eller till och med en stor c6i- eller r6i-instans eftersom kompilering bara använder processorer. När den väl har kompilerats kan den spårade modellen förmodligen köras på mindre AWS Inferentia-instansstorlekar.
Bygg processförklaring
Nu ska vi bygga den här behållaren genom att köra build.sh. Byggskriptfilen skapar helt enkelt Docker-bilden genom att dra en bas Deep Learning Container Image och installera HuggingFace transformers
paket. Baserat på CHIP_TYPE
anges i .env
fil, docker.properties
fil avgör lämpligt BASE_IMAGE
. Detta BASE_IMAGE
pekar på en Deep Learning Container Image för Neuron Runtime tillhandahållen av AWS.
Det är tillgängligt via ett privat ECR-förråd. Innan vi kan dra bilden måste vi logga in och få tillfälliga AWS-uppgifter.
Anmärkningar: vi måste ersätta regionen som listas i kommandot som anges av regionflaggan och inom arkivets URI med regionen vi lägger i .env fil.
För att göra denna process enklare kan vi använda fetch-credentials.sh
fil. Regionen tas automatiskt från .env-filen.
Därefter trycker vi bilden med hjälp av skriptet push.sh. Push-skriptet skapar ett arkiv i Amazon ECR åt dig och skickar behållarbilden.
Slutligen, när bilden är byggd och pushad, kan vi köra den som en behållare genom att köra run.sh och svanslöpande stockar med logs.sh. I kompilatorloggarna (se följande skärmdump) kommer du att se andelen aritmetiska operatorer som kompilerats på Neuron och procentandelen av modellundergrafer som framgångsrikt kompilerades på Neuron. Skärmdumpen visar kompilatorloggarna för bert-base-uncased-squad2
modell. Loggarna visar att 95.64% av de aritmetiska operatorerna kompilerades, och det ger också en lista över operatorer som kompilerades på Neuron och de som inte stöds.
Här är en lista av alla operatörer som stöds i det senaste PyTorch Neuron-paketet. Liknande, här är listan av alla operatörer som stöds i det senaste PyTorch Neuronx-paketet.
Distribuera modeller med FastAPI
Efter att modellerna har sammanställts kommer den spårade modellen att finnas i trace-model
mapp. I det här exemplet har vi placerat den spårade modellen för en batchstorlek på 1. Vi betraktar en batchstorlek på 1 här för att ta hänsyn till de användningsfall där en högre batchstorlek inte är möjlig eller krävs. För användningsfall där större batchstorlekar behövs, torch.neuron.DataParallel (för Inf1) eller torch.neuronx.DataParallel (för Inf2) API kan också vara användbart.
Smakämnen snabb-api mappen tillhandahåller alla nödvändiga skript för att distribuera modeller med FastAPI. För att distribuera modellerna utan några ändringar, kör helt enkelt deploy.sh skriptet och det kommer att bygga en FastAPI-containeravbildning, köra behållare på det angivna antalet kärnor och distribuera det angivna antalet modeller per server i varje FastAPI-modellserver. Denna mapp innehåller också en .env
fil, ändra den för att återspegla den korrekta CHIP_TYPE
och AWS_DEFAULT_REGION
.
Anmärkningar: FastAPI-skript förlitar sig på samma miljövariabler som används för att bygga, pusha och köra bilderna som behållare. FastAPI-distributionsskript kommer att använda de senast kända värdena från dessa variabler. Så om du spårade modellen för Inf1-instanstypen senast, kommer den modellen att distribueras genom dessa skript.
Smakämnen fastapi-server.py fil som är ansvarig för att vara värd för servern och skicka förfrågningarna till modellen gör följande:
- Läser antalet modeller per server och platsen för den kompilerade modellen från egenskapsfilen
- Ställer in synliga NeuronCores som miljövariabler till Docker-behållaren och läser miljövariablerna för att specificera vilka NeuronCores som ska användas
- Tillhandahåller ett slutlednings-API för
bert-base-uncased-squad2
modell - Med
jit.load()
, laddar antalet modeller per server som specificerats i konfigurationen och lagrar modellerna och nödvändiga tokenizers i globala ordböcker
Med den här inställningen skulle det vara relativt enkelt att sätta upp API:er som listar vilka modeller och hur många modeller som finns lagrade i varje NeuronCore. På liknande sätt kan API:er skrivas för att ta bort modeller från specifika NeuronCores.
Smakämnen Dockerfile för att bygga FastAPI-containrar är byggd på Docker-bilden som vi byggde för att spåra modellerna. Det är därför docker.properties fil anger ECR-sökvägen till Docker-bilden för att spåra modellerna. I vår installation är Docker-behållarna över alla NeuronCores lika, så vi kan bygga en bild och köra flera behållare från en bild. För att undvika eventuella ingångsfel anger vi ENTRYPOINT ["/usr/bin/env"]
i Dockerfilen innan du kör startup.sh
skript, som ser ut hypercorn fastapi-server:app -b 0.0.0.0:8080
. Detta startskript är detsamma för alla behållare. Om du använder samma basbild som för spårningsmodeller kan du bygga den här behållaren genom att helt enkelt köra skriptet build.sh. De push.sh
skriptet förblir detsamma som tidigare för spårningsmodeller. Den modifierade Docker-bilden och behållarnamnet tillhandahålls av docker.properties
fil.
Smakämnen run.sh file
gör följande:
- Läser Docker-bilden och behållarens namn från egenskaper fil, som i sin tur läser
config.properties
fil, som har ennum_cores
användarinställning - Startar en loop från 0 till
num_cores
och för varje kärna:- Ställer in portnummer och enhetsnummer
- Ställer in
NEURON_RT_VISIBLE_CORES
miljöfaktor - Anger volymfästet
- Kör en Docker-container
För tydlighetens skull skulle Docker run-kommandot för distribution i NeuronCore 0 för Inf1 se ut som följande kod:
Körkommandot för distribution i NeuronCore 5 skulle se ut som följande kod:
Efter att behållarna är utplacerade använder vi run_apis.py skript, som anropar API:erna i parallella trådar. Koden är inställd för att anropa sex utplacerade modeller, en på varje NeuronCore, men kan enkelt ändras till en annan inställning. Vi anropar API:erna från klientsidan enligt följande:
Övervaka NeuronCore
Efter att modellservrarna har distribuerats, för att övervaka NeuronCore-användning, kan vi använda neuron-top
för att i realtid observera utnyttjandeprocenten för varje NeuronCore. neuron-topp är ett CLI-verktyg i Neuron SDK för att tillhandahålla information som NeuronCore, vCPU och minnesanvändning. I en separat terminal anger du följande kommando:
Din utmatning bör likna följande figur. I det här scenariot har vi specificerat att använda två NeuronCores och två modeller per server på en Inf2.xlarge-instans. Följande skärmdump visar att två modeller med storleken 287.8 MB vardera är laddade på två NeuronCores. Med totalt 4 modeller laddade kan du se enhetens minne som används är 1.3 GB. Använd piltangenterna för att flytta mellan NeuronCores på olika enheter
På liknande sätt ser vi på en Inf1.16xlarge-instanstyp totalt 12 modeller (2 modeller per kärna över 6 kärnor) laddade. Ett totalt minne på 2.1 GB förbrukas och varje modell är 177.2 MB i storlek.
När du kör run_apis.py skript, kan du se procentandelen utnyttjande av var och en av de sex NeuronCores (se följande skärmdump). Du kan också se systemets vCPU-användning och runtime vCPU-användning.
Följande skärmdump visar kärnanvändningsprocenten för Inf2-instansen.
På samma sätt visar den här skärmdumpen kärnanvändning i en inf1.6xlarge-instanstyp.
Städa upp
För att rensa upp alla Docker-behållare du skapade tillhandahåller vi en cleanup.sh skript som tar bort alla körda och stoppade behållare. Det här skriptet kommer att ta bort alla behållare, så använd det inte om du vill behålla vissa behållare igång.
Slutsats
Produktionsarbetsbelastningar har ofta hög genomströmning, låg latens och kostnadskrav. Ineffektiva arkitekturer som suboptimalt utnyttjar acceleratorer kan leda till onödigt höga produktionskostnader. I det här inlägget visade vi hur man optimalt använder NeuronCores med FastAPI för att maximera genomströmningen med minimal latens. Vi har publicerat instruktionerna på vår GitHub repo. Med denna lösningsarkitektur kan du distribuera flera modeller i varje NeuronCore och driva flera modeller parallellt på olika NeuronCores utan att förlora prestanda. För mer information om hur man distribuerar modeller i stor skala med tjänster som Amazon Elastic Kubernetes-tjänst (Amazon EKS), se Servera 3,000 50 modeller för djupinlärning på Amazon EKS med AWS Inferentia för under XNUMX USD i timmen.
Om författarna
Ankur Srivastava är Sr. Solutions Architect i ML Frameworks Team. Han fokuserar på att hjälpa kunder med självstyrd distribuerad utbildning och slutsatser i stor skala om AWS. Hans erfarenhet inkluderar industriellt prediktivt underhåll, digitala tvillingar, probabilistisk designoptimering och har avslutat sina doktorandstudier från Mechanical Engineering vid Rice University och postdoktoral forskning från Massachusetts Institute of Technology.
KC Tung är senior lösningsarkitekt i AWS Annapurna Labs. Han är specialiserad på utbildning och implementering av stora modeller för djupinlärning i moln. Han har en Ph.D. i molekylär biofysik från University of Texas Southwestern Medical Center i Dallas. Han har talat på AWS Summits och AWS Reinvent. Idag hjälper han kunder att träna och distribuera stora PyTorch- och TensorFlow-modeller i AWS-moln. Han är författare till två böcker: Lär dig TensorFlow Enterprise och TensorFlow 2 Pocket Referens.
Pronoy Chopra är Senior Solutions Architect med Startups Generative AI-teamet på AWS. Han är specialiserad på att bygga och utveckla IoT- och Machine Learning-lösningar. Han har varit med och grundat två startups tidigare och tycker om att vara praktisk med projekt inom IoT, AI/ML och Serverless-domänen.
- 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. Fordon / elbilar, Kol, CleanTech, Energi, Miljö, Sol, Avfallshantering. Tillgång här.
- BlockOffsets. Modernisera miljökompensation ägande. Tillgång här.
- Källa: https://aws.amazon.com/blogs/machine-learning/optimize-aws-inferentia-utilization-with-fastapi-and-pytorch-models-on-amazon-ec2-inf1-inf2-instances/
- : har
- :är
- :inte
- :var
- $UPP
- 000
- 1
- 1.3
- 10
- 100
- 12
- 13
- 15%
- 2023
- 7
- 8
- 91
- a
- Able
- Om oss
- ovan
- abstraktion
- acceleratorer
- tillgång
- åtkomst
- i enlighet med detta
- Konto
- Uppnå
- tvärs
- aktiv
- lägga till
- mot
- AI
- AI / ML
- Alla
- tillåter
- tillåter
- också
- amason
- Amazon EC2
- Amazon Web Services
- an
- och
- vilken som helst
- api
- API: er
- app
- Ansökan
- tillämpningar
- Ansök
- lämpligt
- arkitektur
- ÄR
- argument
- AS
- utgå ifrån
- At
- Författaren
- automatiskt
- tillgänglighet
- tillgänglig
- undvika
- AWS
- AWS slutledning
- bas
- baserat
- BE
- därför att
- blir
- varit
- innan
- vägnar
- beteende
- Där vi får lov att vara utan att konstant prestera,
- fördel
- Fördelarna
- BÄST
- bästa praxis
- mellan
- Biofysik
- Bit
- Blogg
- Böcker
- SLUTRESULTAT
- Byggnad
- byggt
- men
- by
- Ring
- kallas
- Samtal
- KAN
- kapacitet
- kapacitet
- vilken
- Vid
- fall
- Centrum
- byta
- ändrats
- Förändringar
- ta
- Pommes frites
- val
- Välja
- valde
- klarhet
- klient
- nära
- cloud
- koda
- kommer
- jämförelse
- konkurrera
- Avslutade
- Compute
- konfiguration
- Tänk
- med tanke på
- Konsol
- konsumeras
- innehålla
- Behållare
- Behållare
- innehåller
- sammanhang
- kontinuerligt
- Däremot
- kontroll
- kontrolleras
- Bekväm
- Kärna
- korrekt
- Pris
- Kostar
- kunde
- Par
- skapa
- skapas
- skapar
- Skapa
- referenser
- avgörande
- Kunder
- Dallas
- Beslutet
- djup
- djupt lärande
- djupare
- Standard
- demonstrera
- beroende
- distribuera
- utplacerade
- utplacera
- utplacering
- Designa
- betecknad
- Trots
- detaljerad
- bestämd
- utveckla
- anordning
- enheter
- olika
- Diffusion
- GRÄV
- digital
- Digitala tvillingar
- distribueras
- distribuerad utbildning
- Django
- do
- Hamnarbetare
- gör
- inte
- domän
- inte
- dynamisk
- varje
- Tidigare
- lättare
- lätt
- lätt
- EC
- effektivt
- änden
- Slutpunkt
- engagera
- Teknik
- säkerställa
- ange
- enhet
- inträde
- Miljö
- fel
- etc
- Även
- Varje
- utvecklas
- exempel
- Utom
- erfarenhet
- förlängningar
- Ansikte
- familj
- snabbare
- möjlig
- Funktioner
- Fed
- färre
- Figur
- Fil
- filtrera
- Slutligen
- hitta
- Förnamn
- fokuserar
- efter
- följer
- För
- format
- hittade
- fyra
- Ramverk
- ramar
- från
- full
- fullständigt
- fungera
- nätbryggan
- generativ
- Generativ AI
- skaffa sig
- GitHub
- Ge
- ger
- Välgörenhet
- kommer
- styra
- hantera
- praktisk
- hårdvara
- Har
- he
- hjälpa
- hjälpa
- hjälper
- här.
- Hög
- högre
- högsta
- hans
- värd
- värd
- värd
- värdar
- Hur ser din drömresa ut
- How To
- Men
- html
- http
- HTTPS
- Kramar ansikte
- ID
- idealisk
- identifierade
- if
- bild
- bilder
- importera
- med Esport
- in
- ingår
- innefattar
- Inkommande
- Ökar
- industriell
- ineffektiv
- informationen
- informeras
- ingång
- ingångar
- installera
- installerad
- installera
- exempel
- istället
- Institute
- instruktioner
- interagera
- in
- åberopas
- iot
- fråga
- problem
- IT
- DESS
- JIT
- jpg
- bara
- Ha kvar
- nycklar
- Vet
- känd
- Labs
- språk
- Large
- Efternamn
- Latens
- senaste
- lansera
- lager
- skikt
- leda
- LÄRA SIG
- inlärning
- Nivå
- Bibliotek
- tycka om
- linux
- Lista
- Noterade
- liten
- lite djupare
- LLM
- läser in
- laster
- lokal
- läge
- skogsavverkning
- logga in
- se
- ser ut som
- UTSEENDE
- förlora
- Låg
- lägre
- lägst
- Maskinen
- maskininlärning
- gjord
- underhåll
- göra
- GÖR
- Framställning
- många
- massachusetts
- Massachusetts Institute of Technology
- max
- Maximera
- maximal
- Maj..
- mekanisk
- medicinsk
- Minne
- Metrics
- emot
- minsta
- ML
- modell
- modeller
- modifierad
- modifiera
- molekylär
- Övervaka
- mer
- mest
- flytta
- mycket
- multipel
- måste
- namn
- nödvändigtvis
- nödvändigt för
- Behöver
- behövs
- behov
- Nya
- Nästa
- nu
- antal
- mål
- observera
- of
- erbjudanden
- Ofta
- on
- gång
- ONE
- endast
- till
- öppen källkod
- driva
- Verksamhet
- operatörer
- motsatt
- optimering
- Optimera
- optimerad
- or
- vår
- ut
- produktion
- över
- paket
- Parallell
- del
- passera
- Tidigare
- bana
- för
- procentuell
- prestanda
- plato
- Platon Data Intelligence
- PlatonData
- Punkt
- poäng
- Strategier
- policy
- Populära
- möjlig
- Inlägg
- praxis
- presentera
- privat
- förmodligen
- process
- processer
- producerande
- Produktion
- Profil
- projekt
- egenskaper
- ge
- förutsatt
- ger
- ombud
- publicerade
- dra
- Syftet
- Tryck
- sköt
- skjuter
- sätta
- Python
- pytorch
- område
- verklig
- realtid
- rekommenderar
- rekommenderas
- registreras
- reflektera
- region
- relativt
- förlita
- förlita
- resterna
- ta bort
- ersätta
- Repository
- förfrågningar
- Obligatorisk
- Krav
- forskning
- Liknar
- Reserv
- reserverad
- Resurser
- respons
- ansvarig
- REST
- resulterande
- återanvändbar
- Ris
- Roll
- roller
- Körning
- rinnande
- kör
- offra
- Samma
- Save
- Skala
- scenario
- skript
- sDK
- se
- Val
- skicka
- senior
- känslig
- separat
- Server
- Servrar
- service
- Tjänster
- portion
- in
- inställning
- inställning
- former
- Dela
- delas
- skall
- show
- visade
- visas
- Visar
- sida
- liknande
- Liknande
- helt enkelt
- SEX
- Storlek
- storlekar
- mindre
- So
- lösning
- Lösningar
- några
- specialiserat
- specifik
- specificerade
- talat
- stabil
- stapel
- starta
- start
- Startups
- anges
- Steg
- slutade
- lagras
- lagrar
- starkt
- studier
- Framgångsrikt
- sådana
- Toppmöten
- stödja
- Som stöds
- säker
- system
- bord
- Ta
- tagen
- tar
- grupp
- Teknologi
- temporär
- tensorflow
- terminal
- testa
- Testning
- tester
- texas
- än
- den där
- Smakämnen
- deras
- Dem
- sedan
- därför
- Dessa
- de
- saker
- detta
- de
- Genom
- genomströmning
- Bunden
- tid
- till
- i dag
- verktyg
- verktyg
- topp
- brännaren
- Totalt
- Trace
- spåra
- traditionell
- Tåg
- Utbildning
- transformatorer
- betrodd
- prova
- SVÄNG
- Tvillingar
- två
- Typ
- ubuntu
- under
- underliggande
- universitet
- unix
- onödigt
- på
- us
- Användning
- användning
- Begagnade
- Användare
- användare
- användningar
- med hjälp av
- utnyttja
- Återvinnare
- Använda
- värde
- Värden
- version
- mycket
- synlig
- syn
- volym
- vill
- var
- Sätt..
- we
- webb
- webbserver
- webbservice
- VÄL
- były
- när
- som
- varför
- brett
- kommer
- med
- inom
- utan
- arbetstagaren
- arbetare
- skulle
- skrivning
- skriven
- Om er
- Din
- själv
- zephyrnet
- noll-