Bij het op grote schaal implementeren van Deep Learning-modellen is het van cruciaal belang om de onderliggende hardware effectief te gebruiken om de prestaties en kostenvoordelen te maximaliseren. Voor productieworkloads die een hoge doorvoer en lage latentie vereisen, is de selectie van de Amazon Elastic Compute-cloud (EC2) instance, model serving stack en implementatiearchitectuur zijn erg belangrijk. Inefficiënte architectuur kan leiden tot suboptimaal gebruik van de versnellers en onnodig hoge productiekosten.
In dit bericht leiden we u door het proces van het implementeren van FastAPI-modelservers op AWS Inferentia-apparaten (te vinden op Amazon EC2 Info1 en Amazon EC Info2 gevallen). We demonstreren ook het hosten van een voorbeeldmodel dat parallel wordt geïmplementeerd op alle NeuronCores voor maximaal hardwaregebruik.
Overzicht oplossingen
FastAPI is een open-source webframework voor het bedienen van Python-applicaties dat veel sneller is dan traditionele frameworks zoals Flask en Django. Het maakt gebruik van een Asynchrone servergateway-interface (ASGI) in plaats van de veelgebruikte Webserver Gateway-interface (WSGI). ASGI verwerkt inkomende verzoeken asynchroon in tegenstelling tot WSGI dat verzoeken opeenvolgend verwerkt. Dit maakt FastAPI de ideale keuze om latentiegevoelige verzoeken af te handelen. U kunt FastAPI gebruiken om een server te implementeren die een eindpunt host op een Inferentia-instantie (Inf1/Inf2) die luistert naar clientverzoeken via een aangewezen poort.
Ons doel is om de hoogste prestaties tegen de laagste kosten te bereiken door maximaal gebruik van de hardware. Hierdoor kunnen we meer inferentieverzoeken afhandelen met minder versnellers. Elk AWS Inferentia1-apparaat bevat vier NeuronCores-v1 en elk AWS Inferentia2-apparaat bevat twee NeuronCores-v2. De AWS-neuron SDK stelt ons in staat om elk van de NeuronCores parallel te gebruiken, wat ons meer controle geeft bij het parallel laden en afleiden van vier of meer modellen zonder dat dit ten koste gaat van de doorvoer.
Met FastAPI heeft u de keuze uit een Python-webserver (gunicorn, Uvicorn, hypercorn, Daphne). Deze webservers bieden een abstractielaag bovenop het onderliggende Machine Learning (ML)-model. De aanvragende klant heeft het voordeel dat hij zich niet bewust is van het gehoste model. Een client hoeft de naam van het model of de versie die onder de server is geïmplementeerd niet te weten; de naam van het eindpunt is nu slechts een proxy voor een functie die het model laadt en uitvoert. In een raamwerkspecifieke weergavetool, zoals TensorFlow Serving, maken de naam en versie van het model daarentegen deel uit van de naam van het eindpunt. Als het model aan de serverzijde verandert, moet de client dit weten en zijn API-aanroep naar het nieuwe eindpunt dienovereenkomstig wijzigen. Daarom, als u de versiemodellen voortdurend ontwikkelt, zoals in het geval van A/B-testen, dan is het gebruik van een generieke Python-webserver met FastAPI een handige manier om modellen te bedienen, omdat de naam van het eindpunt statisch is.
De rol van een ASGI-server is het spawnen van een bepaald aantal werkers die luisteren naar clientverzoeken en de inferentiecode uitvoeren. Een belangrijke mogelijkheid van de server is ervoor te zorgen dat het gevraagde aantal werknemers beschikbaar en actief is. Als een werker wordt gedood, moet de server een nieuwe werker lanceren. In deze context kunnen de server en werknemers worden geïdentificeerd aan de hand van hun Unix-proces-ID (PID). Voor deze post gebruiken we een hypercorn server, wat een populaire keuze is voor Python-webservers.
In dit bericht delen we best practices voor het implementeren van deep learning-modellen met FastAPI op AWS Inferentia NeuronCores. We laten zien dat je meerdere modellen kunt inzetten op afzonderlijke NeuronCores die gelijktijdig kunnen worden aangeroepen. Deze opstelling verhoogt de doorvoer omdat meerdere modellen gelijktijdig kunnen worden afgeleid en het gebruik van NeuronCore volledig is geoptimaliseerd. De code is te vinden op de GitHub repo. De volgende afbeelding toont de architectuur voor het instellen van de oplossing op een EC2 Inf2-instantie.
Dezelfde architectuur is van toepassing op een instantietype EC2 Inf1, behalve dat het vier kernen heeft. Dus dat verandert het architectuurdiagram een beetje.
AWS Inferentia NeuronCores
Laten we wat dieper ingaan op de tools van AWS Neuron om met de NeuronCores om te gaan. De volgende tabellen tonen het aantal NeuronCores in elk Inf1- en Inf2-instantietype. De vCPU's van de host en het systeemgeheugen worden gedeeld door alle beschikbare NeuronCores.
Instantiegrootte | # Inferentia-versnellers | # NeuronCores-v1 | vCPU's | Geheugen (GiB) |
Inf1.xgroot | 1 | 4 | 4 | 8 |
Inf1.2xgroot | 1 | 4 | 8 | 16 |
Inf1.6xgroot | 4 | 16 | 24 | 48 |
Inf1.24xgroot | 16 | 64 | 96 | 192 |
Instantiegrootte | # Inferentia-versnellers | # NeuronCores-v2 | vCPU's | Geheugen (GiB) |
Inf2.xgroot | 1 | 2 | 4 | 32 |
Inf2.8xgroot | 1 | 2 | 32 | 32 |
Inf2.24xgroot | 6 | 12 | 96 | 192 |
Inf2.48xgroot | 12 | 24 | 192 | 384 |
Inf2-instanties bevatten de nieuwe NeuronCores-v2 in vergelijking met de NeuronCore-v1 in de Inf1-instanties. Ondanks minder kernen kunnen ze 4x hogere doorvoer en 10x lagere latentie bieden dan Inf1-instanties. Inf2-instanties zijn ideaal voor Deep Learning-workloads zoals Generative AI, Large Language Models (LLM) in de OPT/GPT-familie en vision transformers zoals Stable Diffusion.
De Neuron Runtime is verantwoordelijk voor het uitvoeren van modellen op Neuron-apparaten. Neuron Runtime bepaalt welke NeuronCore welk model uitvoert en hoe het moet worden uitgevoerd. De configuratie van Neuron Runtime wordt geregeld door het gebruik van omgevingsvariabelen op procesniveau. Neuron-frameworkextensies zorgen standaard voor de configuratie van Neuron Runtime namens de gebruiker; er zijn echter ook expliciete configuraties mogelijk om meer geoptimaliseerd gedrag te bereiken.
Twee populaire omgevingsvariabelen zijn NEURON_RT_NUM_CORES
en NEURON_RT_VISIBLE_CORES
. Met deze omgevingsvariabelen kunnen Python-processen worden gekoppeld aan een NeuronCore. Met NEURON_RT_NUM_CORES
, kan een bepaald aantal kernen worden gereserveerd voor een proces, en met NEURON_RT_VISIBLE_CORES
, kan een reeks NeuronCores worden gereserveerd. Bijvoorbeeld, NEURON_RT_NUM_CORES=2 myapp.py
reserveert twee kernen en NEURON_RT_VISIBLE_CORES=’0-2’ myapp.py
reserveert nul, één en twee kernen voor myapp.py
. U kunt NeuronCores ook op verschillende apparaten (AWS Inferentia-chips) reserveren. Dus, NEURON_RT_VISIBLE_CORES=’0-5’ myapp.py
reserveert de eerste vier cores aan device1
en een kern aan device2
in een instantietype Ec2 Inf1. Evenzo zal deze configuratie op een EC2 Inf2-instantietype twee kernen reserveren device1
en device2
en een kern aan device3
. De volgende tabel geeft een overzicht van de configuratie van deze variabelen.
Naam | Omschrijving | Type | Verwachte waarden | Standaardwaarde | RT-versie |
NEURON_RT_VISIBLE_CORES |
Bereik van specifieke NeuronCores die nodig zijn voor het proces | Geheel getal (zoals 1-3) | Elke waarde of bereik tussen 0 en Max NeuronCore in het systeem | Geen | 2.0+ |
NEURON_RT_NUM_CORES |
Aantal NeuronCores vereist door het proces | Geheel getal | Een waarde van 1 tot Max NeuronCore in het systeem | 0, wat wordt geïnterpreteerd als "alle" | 2.0+ |
Raadpleeg voor een lijst met alle omgevingsvariabelen Neuron Runtime-configuratie.
Bij het laden van modellen worden modellen standaard geladen in NeuronCore 0 en vervolgens in NeuronCore 1, tenzij expliciet aangegeven door de voorgaande omgevingsvariabelen. Zoals eerder aangegeven, delen de NeuronCores de beschikbare vCPU's van de host en het systeemgeheugen. Daarom zullen modellen die op elke NeuronCore worden ingezet, strijden om de beschikbare middelen. Dit zal geen probleem zijn als het model de NeuronCores voor een groot deel gebruikt. Maar als een model slechts gedeeltelijk draait op de NeuronCores en de rest op vCPU's van de host, wordt het belangrijk om de CPU-beschikbaarheid per NeuronCore te overwegen. Dit heeft ook invloed op de keuze van de instantie.
De volgende tabel toont het aantal beschikbare host-vCPU's en systeemgeheugen per model als er één model is geïmplementeerd voor elke NeuronCore. Afhankelijk van het NeuronCore-gebruik, vCPU en geheugengebruik van uw toepassing, wordt aanbevolen om tests uit te voeren om erachter te komen welke configuratie het beste presteert voor uw toepassing. De Neuron Top-tool kan helpen bij het visualiseren van het kerngebruik en het geheugengebruik van apparaten en hosts. Op basis van deze statistieken kan een weloverwogen beslissing worden genomen. We demonstreren het gebruik van Neuron Top aan het einde van deze blog.
Instantiegrootte | # Inferentia-versnellers | # Modellen | vCPU's/model | Geheugen/Model (GiB) |
Inf1.xgroot | 1 | 4 | 1 | 2 |
Inf1.2xgroot | 1 | 4 | 2 | 4 |
Inf1.6xgroot | 4 | 16 | 1.5 | 3 |
Inf1.24xgroot | 16 | 64 | 1.5 | 3 |
Instantiegrootte | # Inferentia-versnellers | # Modellen | vCPU's/model | Geheugen/Model (GiB) |
Inf2.xgroot | 1 | 2 | 2 | 8 |
Inf2.8xgroot | 1 | 2 | 16 | 64 |
Inf2.24xgroot | 6 | 12 | 8 | 32 |
Inf2.48xgroot | 12 | 24 | 8 | 32 |
Bekijk de nieuwste versie om de Neuron SDK-functies zelf te testen Neuron-mogelijkheden voor PyTorch.
Systeeminstellingen
Het volgende is de systeemconfiguratie die voor deze oplossing wordt gebruikt:
Stel de oplossing in
Er zijn een aantal dingen die we moeten doen om de oplossing in te stellen. Begin met het maken van een IAM-rol die uw EC2-instantie gaat aannemen, zodat deze kan pushen en pullen Amazon Elastic Container-register.
Stap 1: stel de IAM-rol in
- Begin door in te loggen op de console en naar IAM > Rollen > Rol maken te gaan
- Selecteer Vertrouwd entiteitstype
AWS Service
- Selecteer EC2 als de service onder use-case
- Klik Volgende en u kunt alle beschikbare beleidsregels zien
- Voor deze oplossing gaan we onze EC2-instantie volledige toegang geven tot ECR. Filteren op AmazonEC2ContainerRegistryFullAccess en selecteer het.
- Druk op volgende en geef de rol een naam
inf-ecr-access
Opmerking: het beleid dat we hebben bijgevoegd, geeft de EC2-instantie volledige toegang tot Amazon ECR. We raden ten zeerste aan om de principe van de minste privileges voor productietaken.
Stap 2: Stel AWS CLI in
Als u de hierboven vermelde voorgeschreven Deep Learning AMI gebruikt, is AWS CLI geïnstalleerd. Als u een andere AMI gebruikt (Amazon Linux 2023, Base Ubuntu enz.), installeert u de CLI-tools als volgt Deze gids.
Nadat u de CLI-tools hebt geïnstalleerd, configureert u de CLI met behulp van de opdracht aws configure
. Als u toegangssleutels heeft, kunt u deze hier toevoegen, maar u hebt ze niet noodzakelijkerwijs nodig voor interactie met AWS-services. We vertrouwen op IAM-rollen om dat te doen.
Note: We moeten ten minste één waarde invoeren (standaardregio of standaardindeling) om het standaardprofiel te maken. Voor dit voorbeeld gaan we met us-east-2
als de regio en json
als de standaarduitvoer.
Kloon de Github-repository
De GitHub repo biedt alle scripts die nodig zijn om modellen te implementeren met behulp van FastAPI op NeuronCores op AWS Inferentia-instanties. In dit voorbeeld worden Docker-containers gebruikt om ervoor te zorgen dat we herbruikbare oplossingen kunnen maken. In dit voorbeeld is het volgende opgenomen config.eigenschappen bestand voor gebruikers om input te geven.
Het configuratiebestand heeft door de gebruiker gedefinieerde naamvoorvoegsels nodig voor de Docker-image en Docker-containers. De build.sh
script in de fastapi
en trace-model
mappen gebruiken dit om Docker-afbeeldingen te maken.
Stel een model samen op AWS Inferentia
We beginnen met het traceren van het model en het produceren van een PyTorch Torchscript .pt-bestand. Begin met toegang trace-model
directory en het wijzigen van het .env-bestand. Wijzig, afhankelijk van het type exemplaar dat u hebt gekozen, het CHIP_TYPE
in de .env
bestand. Als voorbeeld kiezen we Inf2 als gids. Dezelfde stappen zijn van toepassing op het implementatieproces voor Inf1.
Stel vervolgens de standaardregio in hetzelfde bestand in. Deze regio wordt gebruikt om een ECR-repository te maken en Docker-afbeeldingen worden naar deze repository gepusht. Ook in deze map bieden we alle scripts die nodig zijn om een bert-base-uncased
model op AWS Inferentia. Dit script kan worden gebruikt voor de meeste beschikbare modellen op Gezicht knuffelen. De Dockerfile heeft alle afhankelijkheden om modellen met Neuron uit te voeren en voert het trace-model.py code als toegangspunt.
Neuronencompilatie uitgelegd
De API van de Neuron SDK lijkt sterk op de PyTorch Python API. De torch.jit.trace()
van PyTorch neemt het model en de voorbeeldinvoertensor als argumenten. De voorbeeldinvoer wordt naar het model gevoerd en de bewerkingen die worden aangeroepen wanneer die invoer door de lagen van het model gaat, worden geregistreerd als TorchScript. Raadpleeg het volgende voor meer informatie over JIT-tracering in PyTorch documentatie.
Net als torch.jit.trace()
, kunt u controleren of uw model kan worden gecompileerd op AWS Inferentia met de volgende code voor inf1-instanties.
Voor inf2 wordt de bibliotheek aangeroepen torch_neuronx
. Hier leest u hoe u uw modelcompilatie kunt testen tegen inf2-instanties.
Nadat we de trace-instantie hebben gemaakt, kunnen we de invoer van de voorbeeldtensor als volgt doorgeven:
En sla ten slotte de resulterende TorchScript-uitvoer op een lokale schijf op
Zoals getoond in de voorgaande code, kunt u gebruiken compiler_args
en optimizations
om de inzet te optimaliseren. Voor een gedetailleerde lijst met argumenten voor de torch.neuron.trace
API, zie: PyTorch-Neuron traceren python API.
Houd de volgende belangrijke punten in gedachten:
- De Neuron SDK ondersteunt op dit moment geen dynamische tensorvormen. Er zal dus voor verschillende invoervormen apart een model moeten worden samengesteld. Raadpleeg voor meer informatie over het uitvoeren van gevolgtrekkingen op variabele invoervormen met bucketing Gevolgtrekking uitvoeren op variabele invoervormen met bucketing.
- Als u bij het compileren van een model te maken krijgt met geheugenproblemen, probeer het model dan te compileren op een AWS Inferentia-instantie met meer vCPU's of geheugen, of zelfs een grote c6i- of r6i-instantie, aangezien compilatie alleen CPU's gebruikt. Eenmaal gecompileerd, kan het getraceerde model waarschijnlijk worden uitgevoerd op kleinere AWS Inferentia-instanties.
Bouw proces uitleg
Nu gaan we deze container bouwen door te rennen bouwen.sh. Het build-scriptbestand maakt eenvoudig de Docker-image door een basis Deep Learning Container Image te trekken en de HuggingFace te installeren transformers
pakket. Gebaseerd op de CHIP_TYPE
gespecificeerd in de .env
bestand, het docker.properties
bestand beslist het juiste BASE_IMAGE
. Deze BASE_IMAGE
verwijst naar een Deep Learning Container Image voor Neuron Runtime geleverd door AWS.
Het is beschikbaar via een eigen ECR-repository. Voordat we de afbeelding kunnen ophalen, moeten we inloggen en tijdelijke AWS-referenties krijgen.
Note: we moeten de regio vervangen die wordt vermeld in de opdracht die is opgegeven door de regiovlag en binnen de repository-URI door de regio die we in de .env bestand.
Om dit proces gemakkelijker te maken, kunnen we de fetch-credentials.sh
bestand. De regio wordt automatisch uit het .env-bestand gehaald.
Vervolgens pushen we de afbeelding met behulp van het script push.sh. Het push-script maakt voor u een repository aan in Amazon ECR en pusht de container-image.
Als de afbeelding ten slotte is gebouwd en gepusht, kunnen we deze uitvoeren als een container door te draaien rennen.sh en staart lopende logboeken mee logs.sh. In de compilerlogboeken (zie de volgende schermafbeelding) ziet u het percentage rekenkundige operatoren dat is gecompileerd op Neuron en het percentage modelsubgrafieken dat met succes is gecompileerd op Neuron. De schermafbeelding toont de compilerlogboeken voor het bert-base-uncased-squad2
model. De logboeken laten zien dat 95.64% van de rekenkundige operatoren zijn gecompileerd, en het geeft ook een lijst met operatoren die op Neuron zijn gecompileerd en die niet worden ondersteund.
Hier is een lijst van alle ondersteunde operators in het nieuwste PyTorch Neuron-pakket. Evenzo, hier is de lijst van alle ondersteunde operators in het nieuwste PyTorch Neuronx-pakket.
Implementeer modellen met FastAPI
Nadat de modellen zijn gecompileerd, zal het getraceerde model aanwezig zijn in het trace-model
map. In dit voorbeeld hebben we het getraceerde model geplaatst voor een batchgrootte van 1. We beschouwen hier een batchgrootte van 1 om rekening te houden met die gebruikssituaties waarin een hogere batchgrootte niet haalbaar of vereist is. Voor use-cases waar grotere batches nodig zijn, de fakkel.neuron.DataParallel (voor Inf1) of fakkel.neuronx.DataParallel (voor Inf2) API kan ook nuttig zijn.
De snelle-api map biedt alle benodigde scripts om modellen met FastAPI te implementeren. Om de modellen zonder wijzigingen te implementeren, voert u eenvoudig het implementeren.sh script en het bouwt een FastAPI-containerimage, voert containers uit op het opgegeven aantal kernen en implementeert het opgegeven aantal modellen per server in elke FastAPI-modelserver. Deze map bevat ook een .env
bestand, wijzig het om het juiste weer te geven CHIP_TYPE
en AWS_DEFAULT_REGION
.
Note: FastAPI-scripts vertrouwen op dezelfde omgevingsvariabelen die worden gebruikt om de afbeeldingen als containers te bouwen, te pushen en uit te voeren. FastAPI-implementatiescripts gebruiken de laatst bekende waarden van deze variabelen. Dus als u het model voor Inf1-instantietype als laatste hebt getraceerd, wordt dat model via deze scripts geïmplementeerd.
De fastapi-server.py bestand dat verantwoordelijk is voor het hosten van de server en het verzenden van de verzoeken naar het model doet het volgende:
- Leest het aantal modellen per server en de locatie van het gecompileerde model uit het eigenschappenbestand
- Stelt zichtbare NeuronCores in als omgevingsvariabelen voor de Docker-container en leest de omgevingsvariabelen om op te geven welke NeuronCores moeten worden gebruikt
- Biedt een inferentie-API voor de
bert-base-uncased-squad2
model - met
jit.load()
, laadt het aantal modellen per server zoals opgegeven in de configuratie en slaat de modellen en de vereiste tokenizers op in wereldwijde woordenboeken
Met deze opstelling zou het relatief eenvoudig zijn om API's in te stellen die aangeven welke modellen en hoeveel modellen in elke NeuronCore zijn opgeslagen. Evenzo kunnen API's worden geschreven om modellen uit specifieke NeuronCores te verwijderen.
De Dockerfile voor het bouwen van FastAPI-containers is gebouwd op de Docker-image die we hebben gebouwd voor het traceren van de modellen. Dit is waarom de docker.eigenschappen -bestand specificeert het ECR-pad naar de Docker-afbeelding voor het traceren van de modellen. In onze opzet zijn de Docker-containers voor alle NeuronCores vergelijkbaar, dus we kunnen één afbeelding bouwen en meerdere containers uitvoeren vanaf één afbeelding. Om fouten in het beginpunt te voorkomen, specificeren we ENTRYPOINT ["/usr/bin/env"]
in de Dockerfile voordat u het startup.sh
script, dat lijkt op hypercorn fastapi-server:app -b 0.0.0.0:8080
. Dit opstartscript is voor alle containers hetzelfde. Als u dezelfde basisimage gebruikt als voor traceermodellen, kunt u deze container bouwen door simpelweg het script build.sh uit te voeren. De push.sh
script blijft hetzelfde als voorheen voor traceermodellen. De gewijzigde Docker-image en containernaam worden geleverd door het docker.properties
bestand.
De run.sh file
doet het volgende:
- Leest de Docker-image en containernaam uit het vastgoed bestand, dat op zijn beurt de
config.properties
bestand, dat eennum_cores
gebruikersinstelling - Start een lus van 0 tot
num_cores
en voor elke kern:- Stelt het poortnummer en apparaatnummer in
- Stelt de
NEURON_RT_VISIBLE_CORES
variabele omgeving - Specificeert de volumekoppeling
- Voert een Docker-container uit
Voor de duidelijkheid: de opdracht Docker run voor implementatie in NeuronCore 0 voor Inf1 ziet er als volgt uit:
De run-opdracht voor implementatie in NeuronCore 5 ziet eruit als de volgende code:
Nadat de containers zijn ingezet, gebruiken we de run_apis.py script, dat de API's in parallelle threads aanroept. De code is ingesteld om zes modellen aan te roepen, één op elke NeuronCore, maar kan eenvoudig worden gewijzigd in een andere instelling. We noemen de API's vanaf de clientzijde als volgt:
Bewaak NeuronCore
Nadat de modelservers zijn geïmplementeerd, kunnen we gebruiken om het gebruik van NeuronCore te controleren neuron-top
om in realtime het gebruikspercentage van elke NeuronCore te observeren. neuron-top is een CLI-tool in de Neuron SDK om informatie te verstrekken zoals NeuronCore, vCPU en geheugengebruik. Voer in een aparte terminal de volgende opdracht in:
Uw uitvoer zou vergelijkbaar moeten zijn met de volgende afbeelding. In dit scenario hebben we gespecificeerd om twee NeuronCores en twee modellen per server te gebruiken op een Inf2.xlarge-instantie. De volgende schermafbeelding laat zien dat twee modellen van elk 287.8 MB op twee NeuronCores zijn geladen. Als er in totaal 4 modellen zijn geladen, kunt u zien dat het gebruikte apparaatgeheugen 1.3 GB is. Gebruik de pijltjestoetsen om te schakelen tussen de NeuronCores op verschillende apparaten
Evenzo zien we op een instantietype Inf1.16xlarge in totaal 12 modellen (2 modellen per kern over 6 kernen) geladen. Er wordt een totaal geheugen van 2.1 GB verbruikt en elk model is 177.2 MB groot.
Nadat u het run_apis.py script, kunt u het gebruikspercentage van elk van de zes NeuronCores zien (zie de volgende schermafbeelding). U kunt ook het vCPU-gebruik van het systeem en het runtime vCPU-gebruik zien.
De volgende schermafbeelding toont het kerngebruikspercentage van de Inf2-instantie.
Evenzo toont deze schermafbeelding het kerngebruik in een instantietype inf1.6xlarge.
Opruimen
Om alle Docker-containers die u hebt gemaakt op te ruimen, bieden we een opruimen.sh script dat alle actieve en gestopte containers verwijdert. Dit script verwijdert alle containers, dus gebruik het niet als u sommige containers actief wilt houden.
Conclusie
Productieworkloads hebben vaak hoge doorvoer, lage latentie en kostenvereisten. Inefficiënte architecturen die versnellers niet optimaal benutten, kunnen leiden tot onnodig hoge productiekosten. In dit bericht hebben we laten zien hoe je NeuronCores optimaal kunt gebruiken met FastAPI om de doorvoer te maximaliseren met minimale latentie. We hebben de instructies op onze gepubliceerd GitHub repo. Met deze oplossingsarchitectuur kunt u meerdere modellen in elke NeuronCore implementeren en meerdere modellen parallel gebruiken op verschillende NeuronCores zonder prestatieverlies. Voor meer informatie over het op schaal implementeren van modellen met services zoals Amazon Elastic Kubernetes-service (Amazon EKS), zie Serveer 3,000 deep learning-modellen op Amazon EKS met AWS Inferentia voor minder dan $ 50 per uur.
Over de auteurs
Ankur Srivastava is Sr. Solutions Architect in het ML Frameworks-team. Hij richt zich op het helpen van klanten met zelfbeheerde gedistribueerde training en inferentie op schaal op AWS. Zijn ervaring omvat industrieel voorspellend onderhoud, digitale tweelingen, probabilistische ontwerpoptimalisatie en heeft zijn doctoraatsstudies van Werktuigbouwkunde aan de Rice University en postdoctoraal onderzoek van het Massachusetts Institute of Technology afgerond.
KC Tung is Senior Solution Architect bij AWS Annapurna Labs. Hij is gespecialiseerd in training van grote deep learning-modellen en implementatie op grote schaal in de cloud. Hij heeft een Ph.D. in moleculaire biofysica van het University of Texas Southwestern Medical Center in Dallas. Hij heeft gesproken op AWS Summits en AWS Reinvent. Tegenwoordig helpt hij klanten bij het trainen en implementeren van grote PyTorch- en TensorFlow-modellen in de AWS-cloud. Hij is de auteur van twee boeken: Leer TensorFlow Enterprise en TensorFlow 2 zakreferentie.
Pronoi Chopra is een Senior Solutions Architect bij het Startups Generative AI-team bij AWS. Hij is gespecialiseerd in het ontwerpen en ontwikkelen van IoT- en Machine Learning-oplossingen. Hij was in het verleden mede-oprichter van twee startups en houdt ervan om hands-on te zijn met projecten op het gebied van IoT, AI/ML en Serverless.
- Door SEO aangedreven content en PR-distributie. Word vandaag nog versterkt.
- PlatoData.Network Verticale generatieve AI. Versterk jezelf. Toegang hier.
- PlatoAiStream. Web3-intelligentie. Kennis versterkt. Toegang hier.
- PlatoESG. Automotive / EV's, carbon, CleanTech, Energie, Milieu, Zonne, Afvalbeheer. Toegang hier.
- BlockOffsets. Eigendom voor milieucompensatie moderniseren. Toegang hier.
- Bron: https://aws.amazon.com/blogs/machine-learning/optimize-aws-inferentia-utilization-with-fastapi-and-pytorch-models-on-amazon-ec2-inf1-inf2-instances/
- : heeft
- :is
- :niet
- :waar
- $UP
- 000
- 1
- 1.3
- 10
- 100
- 12
- 13
- 15%
- 2023
- 7
- 8
- 91
- a
- in staat
- Over
- boven
- abstractie
- versnellers
- toegang
- toegang
- dienovereenkomstig
- Account
- Bereiken
- over
- actieve
- toevoegen
- tegen
- AI
- AI / ML
- Alles
- toelaten
- toestaat
- ook
- Amazone
- Amazon EC2
- Amazon Web Services
- an
- en
- elke
- api
- APIs
- gebruiken
- Aanvraag
- toepassingen
- Solliciteer
- passend
- architectuur
- ZIJN
- argumenten
- AS
- ervan uitgaan
- At
- auteur
- webmaster.
- beschikbaarheid
- Beschikbaar
- vermijd
- AWS
- AWS Inferentie
- baseren
- gebaseerde
- BE
- omdat
- worden
- geweest
- vaardigheden
- namens
- gedrag
- wezen
- voordeel
- betekent
- BEST
- 'best practices'
- tussen
- Biofysica
- Beetje
- Blog
- Boeken
- bouw
- Gebouw
- bebouwd
- maar
- by
- Bellen
- Dit betekent dat we onszelf en onze geliefden praktisch vergiftigen.
- oproepen
- CAN
- mogelijkheden
- bekwaamheid
- verzorging
- geval
- gevallen
- Centreren
- verandering
- veranderd
- Wijzigingen
- controle
- chips
- keuze
- Kies
- koos
- helderheid
- klant
- van nabij
- Cloud
- code
- komt
- vergelijking
- concurreren
- Voltooid
- Berekenen
- Configuratie
- Overwegen
- aangezien
- troosten
- geconsumeerd
- bevatten
- Containers
- containers
- bevat
- verband
- doorlopend
- contrast
- onder controle te houden
- gecontroleerd
- gemakkelijk
- Kern
- te corrigeren
- Kosten
- Kosten
- kon
- Koppel
- en je merk te creëren
- aangemaakt
- creëert
- Wij creëren
- Geloofsbrieven
- cruciaal
- Klanten
- Dallas
- beslissing
- deep
- diepgaand leren
- diepere
- Standaard
- tonen
- Afhankelijk
- implementeren
- ingezet
- het inzetten
- inzet
- Design
- aangewezen
- Niettegenstaande
- gedetailleerd
- bepaalt
- het ontwikkelen van
- apparaat
- systemen
- anders
- Verspreiding
- DIG
- digitaal
- Digitale tweeling
- verdeeld
- gedistribueerde training
- Django
- do
- havenarbeider
- doet
- Nee
- domein
- Dont
- dynamisch
- elk
- Vroeger
- gemakkelijker
- gemakkelijk
- En het is heel gemakkelijk
- EC
- effectief
- einde
- Endpoint
- toegewijd
- Engineering
- verzekeren
- Enter
- entiteit
- toegang
- Milieu
- fouten
- etc
- Zelfs
- Alle
- evoluerende
- voorbeeld
- Behalve
- ervaring
- extensies
- Gezicht
- familie
- sneller
- uitvoerbaar
- Voordelen
- Fed
- minder
- Figuur
- Dien in
- filter
- Tot slot
- VIND DE PLEK DIE PERFECT VOOR JOU IS
- Voornaam*
- richt
- volgend
- volgt
- Voor
- formaat
- gevonden
- vier
- Achtergrond
- frameworks
- oppompen van
- vol
- geheel
- functie
- poort
- generatief
- generatieve AI
- krijgen
- GitHub
- Geven
- geeft
- Globaal
- gaan
- gids
- handvat
- hands-on
- Hardware
- Hebben
- he
- hulp
- het helpen van
- helpt
- hier
- Hoge
- hoger
- hoogst
- zijn
- gastheer
- gehost
- Hosting
- hosts
- Hoe
- How To
- Echter
- HTML
- http
- HTTPS
- KnuffelenGezicht
- ID
- ideaal
- geïdentificeerd
- if
- beeld
- afbeeldingen
- importeren
- belangrijk
- in
- inclusief
- omvat
- Inkomend
- Verhoogt
- industrieel
- ondoeltreffend
- informatie
- op de hoogte
- invoer
- ingangen
- installeren
- geïnstalleerd
- installeren
- instantie
- verkrijgen in plaats daarvan
- Instituut
- instructies
- interactie
- in
- ingeroepen
- iot
- kwestie
- problemen
- IT
- HAAR
- JIT
- jpg
- voor slechts
- Houden
- toetsen
- blijven
- bekend
- Labs
- taal
- Groot
- Achternaam*
- Wachttijd
- laatste
- lancering
- lagen
- Legkippen
- leiden
- LEARN
- leren
- Niveau
- Bibliotheek
- als
- linux
- Lijst
- opgesomd
- Elke kleine stap levert grote resultaten op!
- beetje dieper
- LLM
- het laden
- ladingen
- lokaal
- plaats
- logging
- Log in
- Kijk
- ziet eruit als
- LOOKS
- kwijt te raken
- Laag
- te verlagen
- laagste
- machine
- machine learning
- gemaakt
- onderhoud
- maken
- MERKEN
- maken
- veel
- massachusetts
- Massachusetts Institute of Technology
- max
- Maximaliseren
- maximaal
- Mei..
- mechanisch
- medisch
- Geheugen
- Metriek
- denken
- minimum
- ML
- model
- modellen
- gewijzigd
- wijzigen
- moleculair
- monitor
- meer
- meest
- beweging
- veel
- meervoudig
- Dan moet je
- naam
- nodig
- noodzakelijk
- Noodzaak
- nodig
- behoeften
- New
- volgende
- nu
- aantal
- doel van de persoon
- waarnemen
- of
- bieden
- vaak
- on
- eens
- EEN
- Slechts
- naar
- open source
- besturen
- Operations
- exploitanten
- gekant tegen
- optimalisatie
- Optimaliseer
- geoptimaliseerde
- or
- onze
- uit
- uitgang
- over
- pakket
- Parallel
- deel
- passeren
- verleden
- pad
- voor
- percentage
- prestatie
- Plato
- Plato gegevensintelligentie
- PlatoData
- punt
- punten
- beleidsmaatregelen door te lezen.
- beleidsmaatregelen
- Populair
- mogelijk
- Post
- praktijken
- presenteren
- privaat
- waarschijnlijk
- processen
- producerende
- productie
- Profiel
- projecten
- vastgoed
- zorgen voor
- mits
- biedt
- volmacht
- gepubliceerde
- trekken
- doel
- Duwen
- geduwd
- duwt
- zetten
- Python
- pytorch
- reeks
- vast
- real-time
- adviseren
- aanbevolen
- opgenomen
- reflecteren
- regio
- relatief
- vertrouwen
- te vertrouwen
- stoffelijk overschot
- verwijderen
- vervangen
- bewaarplaats
- verzoeken
- nodig
- Voorwaarden
- onderzoek
- lijkt op
- Reserveren
- gereserveerd
- Resources
- antwoord
- verantwoordelijk
- REST
- verkregen
- herbruikbare
- Rijst
- Rol
- rollen
- lopen
- lopend
- loopt
- concessies te doen
- dezelfde
- Bespaar
- Scale
- scenario
- scripts
- sdk
- zien
- selectie
- verzending
- senior
- gevoelig
- apart
- Serverless
- Servers
- service
- Diensten
- serveer-
- reeks
- het instellen van
- setup
- vormen
- Delen
- gedeeld
- moet
- tonen
- vertoonde
- getoond
- Shows
- kant
- gelijk
- evenzo
- eenvoudigweg
- ZES
- Maat
- maten
- kleinere
- So
- oplossing
- Oplossingen
- sommige
- specialiseert
- specifiek
- gespecificeerd
- gesproken
- stabiel
- stack
- begin
- startup
- Startups
- bepaald
- Stappen
- gestopt
- opgeslagen
- winkels
- sterk
- studies
- Met goed gevolg
- dergelijk
- Toppen
- ondersteuning
- ondersteunde
- zeker
- system
- tafel
- Nemen
- ingenomen
- neemt
- team
- Technologie
- tijdelijk
- tensorflow
- terminal
- proef
- Testen
- testen
- Texas
- neem contact
- dat
- De
- hun
- Ze
- harte
- daarom
- Deze
- ze
- spullen
- dit
- die
- Door
- doorvoer
- Gebonden
- niet de tijd of
- naar
- vandaag
- tools
- tools
- top
- fakkel
- Totaal
- Opsporen
- Tracing
- traditioneel
- Trainen
- Trainingen
- transformers
- vertrouwde
- proberen
- BEURT
- Tweelingen
- twee
- type dan:
- Ubuntu
- voor
- die ten grondslag liggen
- universiteit-
- unix
- onnodig
- op
- us
- Gebruik
- .
- gebruikt
- Gebruiker
- gebruikers
- toepassingen
- gebruik
- gebruik maken van
- maakt gebruik van
- Gebruik makend
- waarde
- Values
- versie
- zeer
- zichtbaar
- visie
- volume
- willen
- was
- Manier..
- we
- web
- webserver
- webservices
- GOED
- waren
- wanneer
- welke
- Waarom
- wijd
- wil
- Met
- binnen
- zonder
- werker
- werknemers
- zou
- het schrijven van
- geschreven
- You
- Your
- jezelf
- zephyrnet
- nul