Quando si distribuiscono modelli di deep learning su larga scala, è fondamentale utilizzare in modo efficace l'hardware sottostante per massimizzare le prestazioni e i vantaggi in termini di costi. Per i carichi di lavoro di produzione che richiedono throughput elevato e bassa latenza, la selezione di Cloud di calcolo elastico di Amazon (EC2), lo stack di servizio del modello e l'architettura di distribuzione sono molto importanti. Un'architettura inefficiente può portare a un utilizzo non ottimale degli acceleratori e a costi di produzione inutilmente elevati.
In questo post ti guidiamo attraverso il processo di distribuzione dei server modello FastAPI sui dispositivi AWS Inferentia (che si trovano su Amazon EC2 INF1 e Amazon EC INF2 istanze). Dimostriamo anche l'hosting di un modello di esempio distribuito in parallelo su tutti i NeuronCore per il massimo utilizzo dell'hardware.
Panoramica della soluzione
FastAPI è un framework web open source per servire applicazioni Python che è molto più veloce dei framework tradizionali come Flask e Django. Utilizza un Interfaccia server gateway asincrona (ASGI) invece del diffuso Interfaccia del gateway del server Web (WSGI). ASGI elabora le richieste in arrivo in modo asincrono rispetto a WSGI che elabora le richieste in sequenza. Ciò rende FastAPI la scelta ideale per gestire le richieste sensibili alla latenza. Puoi utilizzare FastAPI per distribuire un server che ospita un endpoint su un'istanza Inferentia (Inf1/Inf2) che ascolta le richieste del client attraverso una porta designata.
Il nostro obiettivo è ottenere le massime prestazioni al minor costo attraverso il massimo utilizzo dell'hardware. Ciò ci consente di gestire più richieste di inferenza con meno acceleratori. Ciascun dispositivo AWS Inferentia1 contiene quattro NeuronCores-v1 e ciascun dispositivo AWS Inferentia2 contiene due NeuronCores-v2. IL Neurone AWS L'SDK ci consente di utilizzare ciascuno dei NeuronCores in parallelo, il che ci offre un maggiore controllo nel caricamento e nell'inferenza di quattro o più modelli in parallelo senza sacrificare il throughput.
Con FastAPI, puoi scegliere il server Web Python (gunicorn, Uvicorno, Ipercorno, Daphne). Questi server Web forniscono un livello di astrazione in cima al modello di Machine Learning (ML) sottostante. Il client richiedente ha il vantaggio di ignorare il modello ospitato. Un client non ha bisogno di conoscere il nome o la versione del modello che è stato distribuito sotto il server; il nome dell'endpoint ora è solo un proxy per una funzione che carica ed esegue il modello. Al contrario, in uno strumento di pubblicazione specifico del framework, come TensorFlow Serving, il nome e la versione del modello fanno parte del nome dell'endpoint. Se il modello cambia sul lato server, il client deve conoscere e modificare di conseguenza la sua chiamata API al nuovo endpoint. Pertanto, se si evolvono continuamente i modelli di versione, come nel caso dei test A/B, l'utilizzo di un server Web Python generico con FastAPI è un modo conveniente per servire i modelli, poiché il nome dell'endpoint è statico.
Il ruolo di un server ASGI è generare un numero specificato di worker che ascoltano le richieste dei client ed eseguono il codice di inferenza. Una capacità importante del server è assicurarsi che il numero richiesto di lavoratori sia disponibile e attivo. Nel caso in cui un lavoratore venga ucciso, il server deve avviare un nuovo lavoratore. In questo contesto, il server e i lavoratori possono essere identificati dal loro ID di processo Unix (PID). Per questo post, usiamo a Ipercorno server, che è una scelta popolare per i server Web Python.
In questo post, condividiamo le best practice per distribuire modelli di deep learning con FastAPI su AWS Inferentia NeuronCores. Mostriamo che puoi distribuire più modelli su NeuronCore separati che possono essere chiamati contemporaneamente. Questa configurazione aumenta il throughput perché è possibile dedurre più modelli contemporaneamente e l'utilizzo di NeuronCore è completamente ottimizzato. Il codice è reperibile sul Repository GitHub. La figura seguente mostra l'architettura su come configurare la soluzione su un'istanza EC2 Inf2.
La stessa architettura si applica a un tipo di istanza EC2 Inf1 tranne che ha quattro core. Questo cambia un po' il diagramma dell'architettura.
AWS Inferentia NeuronCore
Analizziamo un po' più a fondo gli strumenti forniti da AWS Neuron per interagire con i NeuronCores. Le tabelle seguenti mostrano il numero di NeuronCores in ogni tipo di istanza Inf1 e Inf2. Le vCPU host e la memoria di sistema sono condivise tra tutti i NeuronCores disponibili.
Dimensione istanza | # Acceleratori Inferentia | # NeuronCores-v1 | CPU virtuali | Memoria (GiB) |
Inf1.xlarge | 1 | 4 | 4 | 8 |
Inf1.2xgrande | 1 | 4 | 8 | 16 |
Inf1.6xgrande | 4 | 16 | 24 | 48 |
Inf1.24xgrande | 16 | 64 | 96 | 192 |
Dimensione istanza | # Acceleratori Inferentia | # NeuronCores-v2 | CPU virtuali | Memoria (GiB) |
Inf2.xlarge | 1 | 2 | 4 | 32 |
Inf2.8xgrande | 1 | 2 | 32 | 32 |
Inf2.24xgrande | 6 | 12 | 96 | 192 |
Inf2.48xgrande | 12 | 24 | 192 | 384 |
Le istanze Inf2 contengono il nuovo NeuronCore-v2 rispetto al NeuronCore-v1 nelle istanze Inf1. Nonostante il minor numero di core, sono in grado di offrire un throughput 4 volte superiore e una latenza 10 volte inferiore rispetto alle istanze Inf1. Le istanze Inf2 sono ideali per carichi di lavoro di deep learning come intelligenza artificiale generativa, modelli linguistici di grandi dimensioni (LLM) nella famiglia OPT/GPT e trasformatori di visione come Stable Diffusion.
Il Neuron Runtime è responsabile dell'esecuzione dei modelli sui dispositivi Neuron. Neuron Runtime determina quale NeuronCore eseguirà quale modello e come eseguirlo. La configurazione di Neuron Runtime è controllata attraverso l'uso di variabili ambientali a livello di processo. Per impostazione predefinita, le estensioni del framework Neuron si occuperanno della configurazione di Neuron Runtime per conto dell'utente; tuttavia, sono anche possibili configurazioni esplicite per ottenere un comportamento più ottimizzato.
Due variabili di ambiente popolari sono NEURON_RT_NUM_CORES
ed NEURON_RT_VISIBLE_CORES
. Con queste variabili d'ambiente, i processi Python possono essere legati a un NeuronCore. Con NEURON_RT_NUM_CORES
, è possibile riservare un numero specificato di core per un processo e con NEURON_RT_VISIBLE_CORES
, è possibile prenotare una serie di NeuronCore. Per esempio, NEURON_RT_NUM_CORES=2 myapp.py
riserverà due core e NEURON_RT_VISIBLE_CORES=’0-2’ myapp.py
riserverà zero, uno e due core per myapp.py
. Puoi prenotare NeuronCore anche su più dispositivi (chip AWS Inferentia). COSÌ, NEURON_RT_VISIBLE_CORES=’0-5’ myapp.py
riserverà i primi quattro core device1
e un core acceso device2
in un tipo di istanza Ec2 Inf1. Allo stesso modo, su un tipo di istanza EC2 Inf2, questa configurazione riserverà due core device1
ed device2
e un core acceso device3
. La tabella seguente riassume la configurazione di queste variabili.
Nome | Descrizione | Tipologia | Valori attesi | Valore di default | Versione RT |
NEURON_RT_VISIBLE_CORES |
Gamma di NeuronCores specifici necessari al processo | Intervallo intero (come 1-3) | Qualsiasi valore o intervallo compreso tra 0 e Max NeuronCore nel sistema | Nessuna | 2.0+ |
NEURON_RT_NUM_CORES |
Numero di NeuronCore richiesti dal processo | Numero intero | Un valore compreso tra 1 e Max NeuronCore nel sistema | 0, che viene interpretato come "tutto" | 2.0+ |
Per un elenco di tutte le variabili di ambiente, fare riferimento a Configurazione del runtime del neurone.
Per impostazione predefinita, durante il caricamento dei modelli, i modelli vengono caricati su NeuronCore 0 e quindi su NeuronCore 1, a meno che non sia esplicitamente indicato dalle variabili di ambiente precedenti. Come specificato in precedenza, i NeuronCores condividono le vCPU host disponibili e la memoria di sistema. Pertanto, i modelli distribuiti su ciascun NeuronCore competeranno per le risorse disponibili. Questo non sarà un problema se il modello utilizza in larga misura i NeuronCores. Ma se un modello è in esecuzione solo in parte su NeuronCore e il resto su vCPU host, diventa importante considerare la disponibilità della CPU per NeuronCore. Ciò influisce anche sulla scelta dell'istanza.
La tabella seguente mostra il numero di vCPU host e la memoria di sistema disponibili per modello se un modello è stato distribuito a ogni NeuronCore. A seconda dell'utilizzo di NeuronCore, della vCPU e della memoria dell'applicazione, si consiglia di eseguire dei test per scoprire quale configurazione è più performante per l'applicazione. IL Strumento superiore del neurone può aiutare a visualizzare l'utilizzo del core e l'utilizzo della memoria del dispositivo e dell'host. Sulla base di queste metriche è possibile prendere una decisione informata. Dimostriamo l'uso di Neuron Top alla fine di questo blog.
Dimensione istanza | # Acceleratori Inferentia | # Modelli | vCPU/modello | Memoria/Modello (GiB) |
Inf1.xlarge | 1 | 4 | 1 | 2 |
Inf1.2xgrande | 1 | 4 | 2 | 4 |
Inf1.6xgrande | 4 | 16 | 1.5 | 3 |
Inf1.24xgrande | 16 | 64 | 1.5 | 3 |
Dimensione istanza | # Acceleratori Inferentia | # Modelli | vCPU/modello | Memoria/Modello (GiB) |
Inf2.xlarge | 1 | 2 | 2 | 8 |
Inf2.8xgrande | 1 | 2 | 16 | 64 |
Inf2.24xgrande | 6 | 12 | 8 | 32 |
Inf2.48xgrande | 12 | 24 | 8 | 32 |
Per provare tu stesso le funzionalità di Neuron SDK, controlla le ultime novità Funzionalità dei neuroni per PyTorch.
Configurazione del sistema
Di seguito è riportata la configurazione del sistema utilizzata per questa soluzione:
Imposta la soluzione
Ci sono un paio di cose che dobbiamo fare per configurare la soluzione. Inizia creando un ruolo IAM che la tua istanza EC2 assumerà e che le consentirà di eseguire il push e il pull Registro dei contenitori Amazon Elastic.
Passaggio 1: imposta il ruolo IAM
- Inizia accedendo alla console e accedendo a IAM > Ruoli > Crea ruolo
- Seleziona il tipo di entità attendibile
AWS Service
- Seleziona EC2 come servizio nel caso d'uso
- Clicchi Avanti e potrai vedere tutte le polizze disponibili
- Ai fini di questa soluzione, daremo alla nostra istanza EC2 l'accesso completo a ECR. Filtra per AmazonEC2ContainerRegistryAccesso completo e selezionalo.
- Premi Avanti e assegna un nome al ruolo
inf-ecr-access
Nota: la policy allegata fornisce all'istanza EC2 l'accesso completo ad Amazon ECR. Si consiglia vivamente di seguire il principale di privilegio minimo per carichi di lavoro di produzione.
Fase 2: configurazione dell'AWS CLI
Se utilizzi la Deep Learning AMI prescritta sopra elencata, viene fornita con l'AWS CLI installata. Se utilizzi un'AMI diversa (Amazon Linux 2023, Base Ubuntu ecc.), installa gli strumenti CLI seguendo questa guida.
Dopo aver installato gli strumenti della CLI, configurare la CLI utilizzando il comando aws configure
. Se disponi di chiavi di accesso, puoi aggiungerle qui, ma non sono necessariamente necessarie per interagire con i servizi AWS. Facciamo affidamento sui ruoli IAM per farlo.
Note:: Dobbiamo inserire almeno un valore (regione predefinita o formato predefinito) per creare il profilo predefinito. Per questo esempio, stiamo andando con us-east-2
come la regione e json
come output predefinito.
Clona il repository Github
I Repository GitHub fornisce tutti gli script necessari per distribuire i modelli utilizzando FastAPI su NeuronCores su istanze AWS Inferentia. Questo esempio utilizza i contenitori Docker per garantire la possibilità di creare soluzioni riutilizzabili. Incluso in questo esempio è quanto segue proprietà.config file per consentire agli utenti di fornire input.
Il file di configurazione richiede prefissi dei nomi definiti dall'utente per l'immagine Docker e i contenitori Docker. IL build.sh
script in fastapi
ed trace-model
le cartelle lo usano per creare immagini Docker.
Compila un modello su AWS Inferentia
Inizieremo tracciando il modello e producendo un file PyTorch Torchscript .pt. Inizia accedendo trace-model
directory e modificando il file .env. A seconda del tipo di istanza scelto, modificare il file CHIP_TYPE
all'interno .env
file. Ad esempio, sceglieremo Inf2 come guida. Gli stessi passaggi si applicano al processo di distribuzione per Inf1.
Successivamente imposta la regione predefinita nello stesso file. Questa regione verrà utilizzata per creare un repository ECR e le immagini Docker verranno inviate a questo repository. Sempre in questa cartella forniamo tutti gli script necessari per tracciare a bert-base-uncased
modello su AWS Inferentia. Questo script può essere utilizzato per la maggior parte dei modelli disponibili su Abbracciare il viso. Dockerfile ha tutte le dipendenze per eseguire modelli con Neuron ed esegue il file traccia-modello.py codice come punto di ingresso.
Spiegazione della compilazione dei neuroni
L'API di Neuron SDK è molto simile all'API PyTorch Python. IL torch.jit.trace()
da PyTorch accetta il modello e il tensore di input del campione come argomenti. Gli input campione vengono forniti al modello e le operazioni invocate mentre l'input si fa strada attraverso i livelli del modello vengono registrate come Torcia. Per ulteriori informazioni su JIT Tracing in PyTorch, fare riferimento a quanto segue documentazione.
Proprio come torch.jit.trace()
, puoi verificare se il tuo modello può essere compilato su AWS Inferentia con il seguente codice per le istanze inf1.
Per inf2, viene chiamata la libreria torch_neuronx
. Ecco come puoi testare la compilazione del tuo modello rispetto alle istanze inf2.
Dopo aver creato l'istanza di traccia, possiamo passare l'input del tensore di esempio in questo modo:
E infine salva l'output TorchScript risultante sul disco locale
Come mostrato nel codice precedente, è possibile utilizzare compiler_args
ed optimizations
per ottimizzare la distribuzione. Per un elenco dettagliato degli argomenti per il torch.neuron.trace
API, fare riferimento a PyTorch-Neuron trace API python.
Tieni a mente i seguenti punti importanti:
- L'SDK Neuron non supporta le forme tensoriali dinamiche al momento della stesura di questo documento. Pertanto, un modello dovrà essere compilato separatamente per le diverse forme di input. Per ulteriori informazioni sull'esecuzione dell'inferenza su forme di input variabili con il bucket, fare riferimento a Esecuzione di inferenza su forme di input variabili con bucket.
- Se riscontri problemi di memoria insufficiente durante la compilazione di un modello, prova a compilare il modello su un'istanza AWS Inferentia con più vCPU o memoria o anche su un'istanza c6i o r6i di grandi dimensioni poiché la compilazione utilizza solo CPU. Una volta compilato, il modello tracciato può probabilmente essere eseguito su istanze AWS Inferentia di dimensioni inferiori.
Spiegazione del processo di costruzione
Ora costruiremo questo contenitore eseguendo costruire.sh. Il file dello script di compilazione crea semplicemente l'immagine Docker estraendo un'immagine del contenitore di deep learning di base e installando HuggingFace transformers
pacchetto. Basato sul CHIP_TYPE
specificato in .env
file, il docker.properties
file decide l'appropriato BASE_IMAGE
. Questo BASE_IMAGE
punta a un'immagine del contenitore di deep learning per Neuron Runtime fornita da AWS.
È disponibile tramite un repository ECR privato. Prima di poter estrarre l'immagine, dobbiamo effettuare il login e ottenere le credenziali AWS temporanee.
Note:: dobbiamo sostituire la regione elencata nel comando specificato dal flag regione e all'interno dell'URI del repository con la regione che abbiamo inserito nel .env file.
Allo scopo di semplificare questo processo, possiamo utilizzare il file fetch-credentials.sh
file. La regione verrà prelevata automaticamente dal file .env.
Successivamente, invieremo l'immagine utilizzando lo script spingere.sh. Lo script push crea per te un repository in Amazon ECR ed esegue il push dell'immagine del contenitore.
Infine, quando l'immagine viene creata e inviata, possiamo eseguirla come contenitore eseguendo corri.sh e registri di coda in esecuzione con logs.sh. Nei log del compilatore (vedere la schermata seguente), vedrai la percentuale di operatori aritmetici compilati su Neuron e la percentuale di sottografi del modello compilati con successo su Neuron. Lo screenshot mostra i log del compilatore per il file bert-base-uncased-squad2
modello. I log mostrano che il 95.64% degli operatori aritmetici sono stati compilati e forniscono anche un elenco degli operatori compilati su Neuron e di quelli che non sono supportati.
Ecco un elenco di tutti gli operatori supportati nell'ultimo pacchetto PyTorch Neuron. Allo stesso modo, ecco l'elenco di tutti gli operatori supportati nell'ultimo pacchetto PyTorch Neuronx.
Distribuisci modelli con FastAPI
Dopo la compilazione dei modelli, il modello tracciato sarà presente nel file trace-model
cartella. In questo esempio, abbiamo posizionato il modello tracciato per una dimensione del batch pari a 1. Consideriamo qui una dimensione del batch pari a 1 per tenere conto di quei casi d'uso in cui una dimensione del batch superiore non è fattibile o richiesta. Per i casi d'uso in cui sono necessarie dimensioni batch più elevate, il file torcia.neurone.datiparallelo (per Inf1) o torch.neuronx.DataParallel (per Inf2) anche l'API può essere utile.
I fast-api La cartella fornisce tutti gli script necessari per distribuire i modelli con FastAPI. Per distribuire i modelli senza alcuna modifica, è sufficiente eseguire il file distribuire.sh script e creerà un'immagine del contenitore FastAPI, eseguirà i contenitori sul numero specificato di core e distribuirà il numero specificato di modelli per server in ciascun server modello FastAPI. Questa cartella contiene anche un file .env
file, modificarlo per riflettere il corretto CHIP_TYPE
ed AWS_DEFAULT_REGION
.
Note:: Gli script FastAPI si basano sulle stesse variabili di ambiente utilizzate per creare, inviare ed eseguire le immagini come contenitori. Gli script di distribuzione FastAPI utilizzeranno gli ultimi valori noti di queste variabili. Pertanto, se hai tracciato per ultimo il modello per il tipo di istanza Inf1, quel modello verrà distribuito tramite questi script.
I fastapi-server.py file che è responsabile dell'hosting del server e dell'invio delle richieste al modello esegue le seguenti operazioni:
- Legge il numero di modelli per server e la posizione del modello compilato dal file delle proprietà
- Imposta i NeuronCore visibili come variabili di ambiente nel contenitore Docker e legge le variabili di ambiente per specificare quali NeuronCore utilizzare
- Fornisce un'API di inferenza per
bert-base-uncased-squad2
modello - Con
jit.load()
, carica il numero di modelli per server come specificato nella configurazione e memorizza i modelli e i tokenizzatori richiesti nei dizionari globali
Con questa configurazione, sarebbe relativamente facile impostare API che elenchino quali modelli e quanti modelli sono memorizzati in ciascun NeuronCore. Allo stesso modo, le API potrebbero essere scritte per eliminare modelli da NeuronCores specifici.
I Dockerfile per la creazione di contenitori FastAPI è basato sull'immagine Docker che abbiamo creato per tracciare i modelli. Per questo il docker.properties file specifica il percorso ECR dell'immagine Docker per tracciare i modelli. Nella nostra configurazione, i contenitori Docker in tutti i NeuronCores sono simili, quindi possiamo creare un'immagine ed eseguire più contenitori da un'immagine. Per evitare eventuali errori di punto di ingresso, specifichiamo ENTRYPOINT ["/usr/bin/env"]
nel Dockerfile prima di eseguire il file startup.sh
script, che sembra hypercorn fastapi-server:app -b 0.0.0.0:8080
. Questo script di avvio è lo stesso per tutti i contenitori. Se stai utilizzando la stessa immagine di base dei modelli di traccia, puoi creare questo contenitore semplicemente eseguendo lo script build.sh. IL push.sh
lo script rimane lo stesso di prima per i modelli di traccia. L'immagine Docker modificata e il nome del contenitore sono forniti dal file docker.properties
file.
I run.sh file
fa quanto segue:
- Legge l'immagine Docker e il nome del contenitore dal file proprietà file, che a sua volta legge il file
config.properties
file, che ha un filenum_cores
impostazione dell'utente - Avvia un ciclo da 0 a
num_cores
e per ogni nucleo:- Imposta il numero di porta e il numero del dispositivo
- Imposta il
NEURON_RT_VISIBLE_CORES
variabile d'ambiente - Specifica il montaggio del volume
- Esegue un contenitore Docker
Per chiarezza, il comando Docker run per la distribuzione in NeuronCore 0 per Inf1 sarebbe simile al seguente codice:
Il comando run per la distribuzione in NeuronCore 5 sarebbe simile al seguente codice:
Dopo che i contenitori sono stati distribuiti, usiamo il file run_apis.py script, che chiama le API in thread paralleli. Il codice è impostato per chiamare sei modelli distribuiti, uno su ciascun NeuronCore, ma può essere facilmente modificato in un'impostazione diversa. Chiamiamo le API dal lato client come segue:
Monitorare NeuronCore
Dopo che i server modello sono stati distribuiti, per monitorare l'utilizzo di NeuronCore, potremmo utilizzare neuron-top
per osservare in tempo reale la percentuale di utilizzo di ciascun NeuronCore. neurone-top è uno strumento CLI nell'SDK Neuron per fornire informazioni come NeuronCore, vCPU e utilizzo della memoria. In un terminale separato, inserisci il seguente comando:
L'output dovrebbe essere simile alla figura seguente. In questo scenario, abbiamo specificato di utilizzare due NeuronCores e due modelli per server su un'istanza Inf2.xlarge. Lo screenshot seguente mostra che due modelli di dimensioni 287.8 MB ciascuno sono caricati su due NeuronCore. Con un totale di 4 modelli caricati, puoi vedere che la memoria del dispositivo utilizzata è di 1.3 GB. Usa i tasti freccia per spostarti tra i NeuronCore su diversi dispositivi
Allo stesso modo, su un tipo di istanza Inf1.16xlarge vediamo un totale di 12 modelli (2 modelli per core su 6 core) caricati. Viene consumata una memoria totale di 2.1 GB e ogni modello ha una dimensione di 177.2 MB.
Dopo aver eseguito il file run_apis.py script, puoi vedere la percentuale di utilizzo di ciascuno dei sei NeuronCores (vedi lo screenshot seguente). È inoltre possibile visualizzare l'utilizzo della vCPU di sistema e l'utilizzo della vCPU di runtime.
Lo screenshot seguente mostra la percentuale di utilizzo del core dell'istanza Inf2.
Allo stesso modo, questo screenshot mostra l'utilizzo del core in un tipo di istanza inf1.6xlarge.
ripulire
Per ripulire tutti i contenitori Docker che hai creato, forniamo a pulizia.sh script che rimuove tutti i contenitori in esecuzione e arrestati. Questo script rimuoverà tutti i contenitori, quindi non utilizzarlo se desideri mantenere alcuni contenitori in esecuzione.
Conclusione
I carichi di lavoro di produzione hanno spesso requisiti di throughput elevato, bassa latenza e costi. Architetture inefficienti che utilizzano gli acceleratori in modo non ottimale potrebbero portare a costi di produzione inutilmente elevati. In questo post, abbiamo mostrato come utilizzare in modo ottimale NeuronCores con FastAPI per massimizzare il throughput alla minima latenza. Abbiamo pubblicato le istruzioni sul ns Repository GitHub. Con questa architettura della soluzione, puoi distribuire più modelli in ciascun NeuronCore e utilizzare più modelli in parallelo su diversi NeuronCore senza perdere prestazioni. Per ulteriori informazioni su come distribuire modelli su larga scala con servizi come Servizio Amazon Elastic Kubernetes (Amazon EKS), fare riferimento a Offri 3,000 modelli di deep learning su Amazon EKS con AWS Inferentia per meno di $ 50 l'ora.
Circa gli autori
Ankur Srivastava è Sr. Solutions Architect nel team di ML Frameworks. Si concentra sull'assistenza ai clienti con formazione distribuita autogestita e inferenza su larga scala su AWS. La sua esperienza comprende la manutenzione predittiva industriale, i gemelli digitali, l'ottimizzazione del design probabilistico e ha completato i suoi studi di dottorato presso l'ingegneria meccanica presso la Rice University e la ricerca post-dottorato presso il Massachusetts Institute of Technology.
KC Tung è Senior Solution Architect presso AWS Annapurna Labs. È specializzato nella formazione e nell'implementazione di modelli di deep learning di grandi dimensioni su larga scala nel cloud. Ha un dottorato di ricerca. in biofisica molecolare presso l'Università del Texas Southwestern Medical Center di Dallas. Ha parlato agli AWS Summit e AWS Reinvent. Oggi aiuta i clienti ad addestrare e distribuire grandi modelli PyTorch e TensorFlow nel cloud AWS. È autore di due libri: Scopri TensorFlow Enterprise ed Riferimento tascabile TensorFlow 2.
Pronoy Chopra è un Senior Solutions Architect del team Startup Generative AI di AWS. È specializzato nell'architettura e nello sviluppo di soluzioni IoT e Machine Learning. Ha co-fondato due startup in passato e gli piace essere pratico con progetti nel dominio IoT, AI/ML e Serverless.
- Distribuzione di contenuti basati su SEO e PR. Ricevi amplificazione oggi.
- PlatoData.Network Generativo verticale Ai. Potenzia te stesso. Accedi qui.
- PlatoAiStream. Intelligenza Web3. Conoscenza amplificata. Accedi qui.
- PlatoneESG. Automobilistico/VE, Carbonio, Tecnologia pulita, Energia, Ambiente, Solare, Gestione dei rifiuti. Accedi qui.
- BlockOffset. Modernizzare la proprietà della compensazione ambientale. Accedi qui.
- Fonte: https://aws.amazon.com/blogs/machine-learning/optimize-aws-inferentia-utilization-with-fastapi-and-pytorch-models-on-amazon-ec2-inf1-inf2-instances/
- :ha
- :È
- :non
- :Dove
- $ SU
- 000
- 1
- 1.3
- 10
- 100
- 12
- 13
- 15%
- 2023
- 7
- 8
- 91
- a
- capace
- Chi siamo
- sopra
- astrazione
- acceleratori
- accesso
- Accedendo
- di conseguenza
- Il mio account
- Raggiungere
- operanti in
- attivo
- aggiungere
- contro
- AI
- AI / ML
- Tutti
- consentire
- consente
- anche
- Amazon
- Amazon EC2
- Amazon Web Services
- an
- ed
- in qualsiasi
- api
- API
- App
- Applicazioni
- applicazioni
- APPLICA
- opportuno
- architettura
- SONO
- argomenti
- AS
- assumere
- At
- autore
- automaticamente
- disponibilità
- disponibile
- evitare
- AWS
- AWS Inferenza
- base
- basato
- BE
- perché
- diventare
- stato
- prima
- per conto
- comportamento
- essendo
- beneficio
- vantaggi
- MIGLIORE
- best practice
- fra
- Biofisica
- Po
- Blog
- Libri
- costruire
- Costruzione
- costruito
- ma
- by
- chiamata
- detto
- Bandi
- Materiale
- funzionalità
- capacità
- che
- Custodie
- casi
- centro
- il cambiamento
- cambiato
- Modifiche
- dai un'occhiata
- Chips
- scegliere
- Scegli
- ha scelto
- chiarezza
- cliente
- strettamente
- Cloud
- codice
- viene
- confronto
- competere
- Completato
- Calcolare
- Configurazione
- Prendere in considerazione
- considerando
- consolle
- consumato
- contenere
- Contenitore
- Tecnologie Container
- contiene
- contesto
- continuamente
- contrasto
- di controllo
- controllata
- Comodo
- Nucleo
- correggere
- Costo
- Costi
- potuto
- Coppia
- creare
- creato
- crea
- Creazione
- Credenziali
- cruciale
- Clienti
- Dallas
- decisione
- deep
- apprendimento profondo
- più profondo
- Predefinito
- dimostrare
- Dipendente
- schierare
- schierato
- distribuzione
- deployment
- Design
- designato
- Nonostante
- dettagliati
- determina
- in via di sviluppo
- dispositivo
- dispositivi
- diverso
- Emittente
- DIG
- digitale
- Gemelli digitali
- distribuito
- formazione distribuita
- Django
- do
- docker
- effettua
- non
- dominio
- Dont
- dinamico
- ogni
- In precedenza
- più facile
- facilmente
- facile
- EC
- in maniera efficace
- fine
- endpoint
- impegnarsi
- Ingegneria
- garantire
- entrare
- entità
- iscrizione
- Ambiente
- errori
- eccetera
- Anche
- Ogni
- evoluzione
- esempio
- Tranne
- esperienza
- estensioni
- Faccia
- famiglia
- più veloce
- fattibile
- Caratteristiche
- Federale
- meno
- figura
- Compila il
- filtro
- Infine
- Trovare
- Nome
- si concentra
- i seguenti
- segue
- Nel
- formato
- essere trovato
- quattro
- Contesto
- quadri
- da
- pieno
- completamente
- function
- porta
- generativo
- AI generativa
- ottenere
- GitHub
- Dare
- dà
- globali
- andando
- guida
- maniglia
- mani su
- Hardware
- Avere
- he
- Aiuto
- aiutare
- aiuta
- qui
- Alta
- superiore
- massimo
- il suo
- host
- ospitato
- di hosting
- padroni di casa
- Come
- Tutorial
- Tuttavia
- HTML
- http
- HTTPS
- abbracciare il viso
- ID
- ideale
- identificato
- if
- Immagine
- immagini
- importare
- importante
- in
- incluso
- inclusi
- In arrivo
- Aumenta
- industriale
- inefficiente
- informazioni
- informati
- ingresso
- Ingressi
- install
- installato
- installazione
- esempio
- invece
- Istituto
- istruzioni
- interagire
- ai miglioramenti
- invocato
- IoT
- problema
- sicurezza
- IT
- SUO
- JIT
- jpg
- ad appena
- mantenere
- Tasti
- Sapere
- conosciuto
- Labs
- Lingua
- grandi
- Cognome
- Latenza
- con i più recenti
- lanciare
- strato
- galline ovaiole
- portare
- IMPARARE
- apprendimento
- Livello
- Biblioteca
- piace
- linux
- Lista
- elencati
- piccolo
- un po' più profondo
- LLM
- Caricamento in corso
- carichi
- locale
- località
- registrazione
- accesso
- Guarda
- una
- SEMBRA
- a
- Basso
- inferiore
- minore
- macchina
- machine learning
- fatto
- manutenzione
- make
- FA
- Fare
- molti
- Massachusetts
- Istituto di Tecnologia del Massachussetts
- max
- Massimizzare
- massimo
- Maggio..
- meccanico
- medicale
- Memorie
- Metrica
- mente
- ordine
- ML
- modello
- modelli
- modificato
- modificare
- molecolare
- Monitorare
- Scopri di più
- maggior parte
- cambiano
- molti
- multiplo
- devono obbligatoriamente:
- Nome
- necessariamente
- necessaria
- Bisogno
- di applicazione
- esigenze
- New
- GENERAZIONE
- adesso
- numero
- obiettivo
- osservare
- of
- offrire
- di frequente
- on
- una volta
- ONE
- esclusivamente
- su
- open source
- operare
- Operazioni
- Operatori
- opposto
- ottimizzazione
- OTTIMIZZA
- ottimizzati
- or
- nostro
- su
- produzione
- ancora
- pacchetto
- Parallel
- parte
- passare
- passato
- sentiero
- per
- percentuale
- performance
- Platone
- Platone Data Intelligence
- PlatoneDati
- punto
- punti
- Termini e Condizioni
- politica
- Popolare
- possibile
- Post
- pratiche
- presenti
- un bagno
- probabilmente
- processi
- i processi
- produzione
- Produzione
- Profilo
- progetti
- proprietà
- fornire
- purché
- fornisce
- delega
- pubblicato
- traino
- scopo
- Spingi
- spinto
- spinge
- metti
- Python
- pytorch
- gamma
- di rose
- tempo reale
- raccomandare
- raccomandato
- registrato
- riflettere
- regione
- relativamente
- fare affidamento
- basandosi
- resti
- rimuovere
- sostituire
- deposito
- richieste
- necessario
- Requisiti
- riparazioni
- assomiglia
- Prenotare
- riservato
- Risorse
- risposta
- responsabile
- REST
- risultante
- riutilizzabile
- Riso
- Ruolo
- ruoli
- Correre
- running
- corre
- sacrificando
- stesso
- Risparmi
- Scala
- scenario
- script
- sdk
- vedere
- prodotti
- invio
- anziano
- delicata
- separato
- serverless
- Server
- servizio
- Servizi
- servizio
- set
- regolazione
- flessibile.
- forme
- Condividi
- condiviso
- dovrebbero
- mostrare attraverso le sue creazioni
- ha mostrato
- mostrato
- Spettacoli
- lato
- simile
- Allo stesso modo
- semplicemente
- SIX
- Taglia
- Dimensioni
- inferiore
- So
- soluzione
- Soluzioni
- alcuni
- specializzata
- specifico
- specificato
- parlato
- stabile
- pila
- inizia a
- startup
- Startup
- ha dichiarato
- Passi
- fermato
- memorizzati
- negozi
- fortemente
- studi
- Con successo
- tale
- Vertici
- supporto
- supportato
- sicuro
- sistema
- tavolo
- Fai
- preso
- prende
- team
- Tecnologia
- temporaneo
- tensorflow
- terminal
- test
- Testing
- test
- Texas
- di
- che
- I
- loro
- Li
- poi
- perciò
- Strumenti Bowman per analizzare le seguenti finiture:
- di
- cose
- questo
- quelli
- Attraverso
- portata
- Legato
- tempo
- a
- oggi
- strumenti
- top
- torcia
- Totale
- Traccia
- Tracciato
- tradizionale
- Treni
- Training
- trasformatori
- di fiducia
- prova
- TURNO
- Gemelli
- seconda
- Digitare
- Ubuntu
- per
- sottostante
- Università
- unix
- inutilmente
- su
- us
- Impiego
- uso
- utilizzato
- Utente
- utenti
- usa
- utilizzando
- utilizzare
- utilizza
- Utilizzando
- APPREZZIAMO
- Valori
- versione
- molto
- visibile
- visione
- volume
- volere
- Prima
- Modo..
- we
- sito web
- web server
- servizi web
- WELL
- sono stati
- quando
- quale
- perché
- ampiamente
- volere
- con
- entro
- senza
- lavoratore
- lavoratori
- sarebbe
- scrittura
- scritto
- Tu
- Trasferimento da aeroporto a Sharm
- te stesso
- zefiro
- zero