Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Puoi creare un lavoro di ottimizzazione dell'inferenza utilizzando Studio o l'SDK SageMaker AI Python. Il lavoro ottimizza il modello applicando le tecniche che scegli. Per ulteriori informazioni, consulta Tecniche di ottimizzazione.
Prezzi delle istanze per i lavori di ottimizzazione dell'inferenza
Quando crei un processo di ottimizzazione dell'inferenza che applica la quantizzazione o la compilazione, l' SageMaker intelligenza artificiale sceglie il tipo di istanza da utilizzare per eseguire il lavoro. L'addebito viene effettuato in base all'istanza utilizzata.
Per i possibili tipi di istanze e i relativi dettagli sui prezzi, consulta le informazioni sui prezzi di ottimizzazione dell'inferenza nella pagina dei prezzi di Amazon SageMaker AI
Non sono previsti costi aggiuntivi per i lavori che applicano la decodifica speculativa.
Per i modelli supportati che puoi ottimizzare, consulta. Riferimento ai modelli supportati
Completa i seguenti passaggi per creare un lavoro di ottimizzazione dell'inferenza in Studio.
Per iniziare a creare un lavoro di ottimizzazione
-
In SageMaker AI Studio, crea un lavoro di ottimizzazione attraverso uno dei seguenti percorsi:
-
Per creare un lavoro per un JumpStart modello, procedi come segue:
-
Nel menu di navigazione, scegliete JumpStart.
-
Nella pagina Tutti i modelli pubblici, scegli un fornitore di modelli, quindi scegli uno dei modelli che supporta l'ottimizzazione.
-
Nella pagina dei dettagli del modello, scegli Ottimizza. Questo pulsante è abilitato solo per i modelli che supportano l'ottimizzazione.
-
Nella pagina Crea processo di ottimizzazione dell'inferenza, alcuni JumpStart modelli richiedono la firma di un contratto di licenza con l'utente finale (EULA) prima di poter procedere. Se richiesto, consulta i termini di licenza nella sezione Contratto di licenza. Se i termini sono accettabili per il tuo caso d'uso, seleziona la casella di controllo Accetto l'EULA e leggi i termini e le condizioni.
-
-
Per creare un lavoro per un JumpStart modello ottimizzato, procedi come segue:
-
Nel menu di navigazione, sotto Jobs, scegli Formazione.
-
Nella pagina Training Jobs, scegli il nome di un job che hai usato per mettere a punto un JumpStart modello. Questi lavori hanno il tipo di JumpStartformazione nella colonna Tipo di lavoro.
-
Nella pagina dei dettagli del lavoro di formazione, scegli Ottimizza.
-
-
Per creare un lavoro per un modello personalizzato, procedi come segue:
-
Nel menu di navigazione, sotto Jobs, scegli Ottimizzazione dell'inferenza.
-
Scegli Create new job (Crea nuovo processo).
-
Nella pagina Crea lavoro di ottimizzazione dell'inferenza, scegli Aggiungi modello.
-
Nella finestra Aggiungi modello, scegli Modello personalizzato.
-
Per Nome modello personalizzato, inserisci un nome.
-
Per l'URI S3, inserisci l'URI per la posizione in Amazon S3 in cui hai archiviato gli artefatti del modello.
-
-
-
Nella pagina Create inference optimization job, per Job name, puoi accettare il nome predefinito assegnato da SageMaker AI. Oppure, per inserire un nome di lavoro personalizzato, scegli il campo Nome lavoro e scegli Inserisci nome lavoro.
Per impostare le configurazioni di ottimizzazione
-
Per Tipo di istanza Deployment, scegli il tipo di istanza per cui desideri ottimizzare il modello.
Il tipo di istanza influisce sulle tecniche di ottimizzazione che puoi scegliere. Per la maggior parte dei tipi che utilizzano hardware GPU, le tecniche supportate sono la quantizzazione e la decodifica speculativa. Se scegli un'istanza che utilizza silicio personalizzato, come l'istanza AWS Inferentia ml.inf2.8xlarge, la tecnica supportata è Compilation, che puoi usare per compilare il modello per quel tipo di hardware specifico.
-
Seleziona una o più delle tecniche di ottimizzazione fornite da Studio:
-
Se selezionate Quantizzazione, scegliete un tipo di dati per il tipo di dati Precision.
-
Se selezionate Decodifica speculativa, scegliete una delle seguenti opzioni:
-
Usa il modello di bozza SageMaker AI: scegli di utilizzare il modello di bozza fornito dall'IA. SageMaker
Nota
Se scegli di utilizzare il modello di bozza SageMaker AI, devi anche abilitare l'isolamento della rete. Studio offre questa opzione in Sicurezza.
-
Scegli il modello di JumpStart bozza: scegli di selezionare un modello dal JumpStart catalogo da utilizzare come modello di bozza.
-
Scegli il tuo modello di bozza: scegli di utilizzare il tuo modello di bozza e fornisci l'URI S3 che lo localizza.
-
-
Se scegli Caricamento rapido del modello, Studio mostra la variabile di
OPTION_TENSOR_PARALLEL_DEGREE
ambiente. Utilizzate il campo Valore per impostare il grado di parallelismo tensoriale. Il valore deve dividere equamente il numero di GPUs nell'istanza scelta per il tipo di istanza Deployment. Ad esempio, per suddividere il modello utilizzando un'istanza con 8 GPUs, utilizzate i valori 2, 4 o 8. -
Se imposti il tipo di istanza Deployment su un'istanza AWS Inferentia o AWS Trainium, Studio potrebbe mostrare che Compilation è l'unica opzione supportata. In tal caso, Studio seleziona questa opzione per te.
-
-
Per Output, inserisci l'URI di una posizione in Amazon S3. Qui, l' SageMaker intelligenza artificiale memorizza gli artefatti del modello ottimizzato creato dal tuo lavoro.
-
(Facoltativo) Espandi le opzioni avanzate per un controllo più preciso su impostazioni come il ruolo IAM, il VPC e le variabili di ambiente. Per ulteriori informazioni, consulta la sezione Opzioni avanzate di seguito.
-
Al termine della configurazione del lavoro, scegli Crea lavoro.
Studio mostra la pagina dei dettagli del lavoro, che mostra lo stato del lavoro e tutte le relative impostazioni.
Opzioni avanzate
È possibile impostare le seguenti opzioni avanzate quando si crea un lavoro di ottimizzazione dell'inferenza.
In Configurazioni, è possibile impostare le seguenti opzioni:
- Grado di parallelo tensoriale
-
Un valore per il grado di parallelismo tensoriale. Il parallelismo tensoriale è un tipo di parallelismo del modello in cui pesi, gradienti e stati dell'ottimizzatore specifici del modello vengono suddivisi tra i dispositivi. Il valore deve dividere equamente il numero di GPUs nel cluster.
- Lunghezza massima del token
-
Il limite per il numero di token che il modello deve generare. Tieni presente che il modello potrebbe non generare sempre il numero massimo di token.
- Simultaneità
-
La capacità di eseguire più istanze di un modello sullo stesso hardware sottostante. Utilizza la concorrenza per fornire previsioni a più utenti e massimizzare l'utilizzo dell'hardware.
- Dimensione batch
-
Se il modello esegue l'inferenza in batch, utilizzate questa opzione per controllare la dimensione dei batch elaborati dal modello.
L'inferenza in batch genera previsioni di modelli su un batch di osservazioni. È una buona opzione per set di dati di grandi dimensioni o se non è necessaria una risposta immediata a una richiesta di inferenza.
In Sicurezza, puoi impostare le seguenti opzioni:
- Ruolo IAM
-
Un ruolo IAM che consente all' SageMaker IA di eseguire attività per tuo conto. Durante l'ottimizzazione dei modelli, l' SageMaker intelligenza artificiale necessita del tuo permesso per:
-
Leggi i dati di input da un bucket S3
-
Scrivi gli artefatti del modello in un bucket S3
-
Scrivere log su Amazon CloudWatch Logs
-
Pubblica i parametri su Amazon CloudWatch
Concedi le autorizzazioni per tutte queste attività a un ruolo IAM.
Per ulteriori informazioni, consulta Come utilizzare i ruoli di esecuzione dell' SageMaker IA.
-
- Chiave KMS di crittografia
-
Una chiave in AWS Key Management Service (AWS KMS). SageMaker L'intelligenza artificiale utilizza la loro chiave per crittografare gli artefatti del modello ottimizzato quando l' SageMaker IA carica il modello su Amazon S3.
- VPC
-
SageMaker L'intelligenza artificiale utilizza queste informazioni per creare interfacce di rete e collegarle ai contenitori del modello. Le interfacce di rete forniscono ai container di modello una connessione di rete all'interno del tuo VPC che non è connesso a Internet. Consentono anche al tuo modello di connettersi alle risorse nel tuo VPC privato.
Per ulteriori informazioni, consulta Offri agli endpoint ospitati dall' SageMaker intelligenza artificiale l'accesso alle risorse nel tuo Amazon VPC.
- Abilita l'isolamento della rete
-
Attiva questa opzione se desideri limitare l'accesso a Internet del tuo contenitore. I contenitori che funzionano con isolamento di rete non possono effettuare chiamate di rete in uscita.
Nota
È necessario attivare questa opzione quando si ottimizza con la decodifica speculativa e si utilizza il SageMaker modello di bozza AI.
Per ulteriori informazioni sull'isolamento della rete, vedere. Isolamento di rete
In Definizione avanzata del contenitore, puoi impostare le seguenti opzioni:
- Condizione di arresto
-
Speciifica un limite per quanto tempo può essere eseguito un processo. Quando il lavoro raggiunge il limite di tempo, l' SageMaker IA termina il lavoro. Usa questa opzione per limitare i costi.
- Tag
-
Coppie chiave-valore associate al lavoro di ottimizzazione.
Per ulteriori informazioni sui tag, consulta Taggare le AWS risorse in. Riferimenti generali di AWS
- Variabili di ambiente
-
Coppie chiave-valore che definiscono le variabili di ambiente da impostare nel contenitore del modello.
Puoi creare un lavoro di ottimizzazione dell'inferenza utilizzando l'SDK SageMaker AI Python nel tuo progetto. Innanzitutto, definisci un'Model
istanza utilizzando la classe. ModelBuilder
Quindi, utilizzate il optimize()
metodo per eseguire un processo che ottimizza il modello con quantizzazione, decodifica speculativa o compilazione. Al termine del processo, si distribuisce il modello su un endpoint di inferenza utilizzando il metodo. deploy()
Per ulteriori informazioni sulle classi e sui metodi utilizzati negli esempi seguenti, consulta la APIs
Per configurare il tuo progetto
-
Nel codice dell'applicazione, importate le librerie necessarie. L'esempio seguente importa l'SDK per Python (Boto3). Importa anche le classi dall'SDK SageMaker AI Python che usi per definire e lavorare con i modelli:
import boto3 from sagemaker.serve.builder.model_builder import ModelBuilder from sagemaker.serve.builder.schema_builder import SchemaBuilder from sagemaker.session import Session from pathlib import Path
-
Inizializza una SageMaker sessione AI. L'esempio seguente utilizza la
Session()
classe:sagemaker_session = Session()
Per definire il modello
-
Crea un'
SchemaBuilder
istanza e fornisci esempi di input e output. Fornite questa istanza allaModelBuilder
classe quando definite un modello. Con esso, l' SageMaker IA genera automaticamente le funzioni di marshalling per la serializzazione e la deserializzazione dell'input e dell'output.Per ulteriori informazioni sull'utilizzo delle classi and, consulta.
SchemaBuilder
ModelBuilder
Crea un modello in Amazon SageMaker AI con ModelBuilderL'esempio seguente fornisce esempi di stringhe di input e output per la
SchemaBuilder
classe:response = "Jupiter is the largest planet in the solar system. It is the fifth planet from the sun." sample_input = { "inputs": "What is the largest planet in the solar system?", "parameters": {"max_new_tokens": 128, "top_p": 0.9, "temperature": 0.6}, } sample_output = [{"generated_text": response}] schema_builder = SchemaBuilder(sample_input, sample_output)
-
Definisci il tuo modello in base all' SageMaker intelligenza artificiale. L'esempio seguente imposta i parametri per inizializzare un'
ModelBuilder
istanza:model_builder = ModelBuilder( model="
jumpstart-model-id
", schema_builder=schema_builder, sagemaker_session=sagemaker_session, role_arn=sagemaker_session.get_caller_identity_arn(), )Questo esempio utilizza un JumpStart modello. Sostituisci
con l'ID di un JumpStart modello, ad esempiojumpstart-model-id
meta-textgeneration-llama-3-70b
.Nota
Se desideri ottimizzare con la decodifica speculativa e desideri utilizzare la bozza SageMaker AI, devi abilitare l'isolamento della rete. Per abilitarlo, includi il seguente argomento quando inizializzi un'istanza:
ModelBuilder
enable_network_isolation=True,
Per ulteriori informazioni sull'isolamento della rete, vedereIsolamento di rete.
Ottimizzare con la quantizzazione
-
Per eseguire un processo di quantizzazione, utilizzate il
optimize()
metodo e impostate l'quantization_config
argomento. L'esempio seguente viene impostatoOPTION_QUANTIZE
come variabile di ambiente nel contenitore di ottimizzazione:optimized_model = model_builder.optimize( instance_type="
instance-type
", accept_eula=True, quantization_config={ "OverrideEnvironment": { "OPTION_QUANTIZE": "awq", }, }, output_path="s3://output-path
", )In questo esempio, sostituisci
con un'istanza ML, ad esempioinstance-type
ml.p4d.24xlarge
. Sostituisci
con il percorso della posizione S3 in cui memorizzi il modello ottimizzato creato dal lavoro.s3://output-path
Il
optimize()
metodo restituisce unModel
oggetto, che puoi utilizzare per distribuire il modello su un endpoint. -
Al termine del processo, distribuisci il modello. L'esempio seguente utilizza il
deploy()
metodo:predictor = optimized_model.deploy( instance_type="
instance-type
", accept_eula=True, )In questo esempio, sostituisci
con un'istanza ML, ad esempioinstance-type
ml.p4d.24xlarge
.Il
deploy()
metodo restituisce un oggetto predittore, che è possibile utilizzare per inviare richieste di inferenza all'endpoint che ospita il modello.
Per ottimizzare con la decodifica speculativa utilizzando il modello di bozza AI SageMaker
Quando ottimizzi il modello con una decodifica speculativa, puoi scegliere di utilizzare una bozza di modello fornita dall' SageMaker intelligenza artificiale oppure puoi usare il tuo. I seguenti esempi utilizzano il modello di bozza SageMaker AI.
Prerequisito
Per ottimizzare con la decodifica speculativa e il modello di bozza SageMaker AI, è necessario abilitare l'isolamento della rete quando si definisce il modello.
-
Per eseguire un processo di decodifica speculativo, utilizzate il
optimize()
metodo e impostate l'argomento.speculative_decoding_config
L'esempio seguente imposta laModelProvider
chiave per utilizzare il modelloSAGEMAKER
di bozza fornito dall'IA. SageMakeroptimized_model = model_builder.optimize( instance_type="
instance-type
", accept_eula=True, speculative_decoding_config={ "ModelProvider": "SAGEMAKER", }, )In questo esempio,
sostituiscilo con un'istanza ML, ad esempioinstance-type
ml.p4d.24xlarge
.Il
optimize()
metodo restituisce unModel
oggetto, che potete utilizzare per distribuire il modello su un endpoint. -
Al termine del processo, distribuisci il modello. L'esempio seguente utilizza il
deploy()
metodo:predictor = optimized_model.deploy(accept_eula=True)
Il
deploy()
metodo restituisce un oggetto predittore, che è possibile utilizzare per inviare richieste di inferenza all'endpoint che ospita il modello.
Per ottimizzare con la decodifica speculativa utilizzando un modello di bozza personalizzato
Prima di poter fornire la bozza del modello personalizzato all' SageMaker IA, devi prima caricare gli artefatti del modello su Amazon S3.
Gli esempi seguenti mostrano un modo possibile per fornire una bozza di modello personalizzata. Gli esempi scaricano la bozza del modello da Hugging Face Hub, la caricano su Amazon S3 e forniscono l'URI S3 all'argomento. speculative_decoding_config
-
Se desideri scaricare un modello dall'Hugging Face Hub, aggiungi la
huggingface_hub
libreria al tuo progetto e scarica un modello con il metodo.snapshot_download()
L'esempio seguente scarica un modello in una directory locale:import huggingface_hub huggingface_hub.snapshot_download( repo_id="
model-id
", revision="main", local_dir=download-dir
, token=hf-access-token
, )In questo esempio, sostituisci
con l'ID di un modello l'Hugging Face Hub, ad esempio.model-id
meta-llama/Meta-Llama-3-8B
Sostituisci
con una directory locale.download-dir
Sostituiscila con il tuo token di accesso utente. Per sapere come ottenere il token di accesso, consulta Token di accesso utente nella documentazionehf-access-token
di Hugging Face. Per ulteriori informazioni sulla
huggingface_hub
libreria, consulta la libreria client Hubnella documentazione di Hugging Face. -
Per rendere disponibile all' SageMaker IA il modello scaricato, caricalo su Amazon S3. L'esempio seguente carica il modello con l'
sagemaker_session
oggetto:custom_draft_model_uri = sagemaker_session.upload_data( path=hf_local_download_dir.as_posix(), bucket=sagemaker_session.default_bucket(), key_prefix="
prefix
", )In questo esempio, sostituiscilo
con un qualificatore che ti aiuti a distinguere la bozza del modello in S3, ad esempio.prefix
spec-dec-custom-draft-model
Il
upload_data()
metodo restituisce l'URI S3 per gli artefatti del modello. -
Per eseguire un processo di decodifica speculativo, utilizzate il
optimize()
metodo e impostate l'argomento.speculative_decoding_config
L'esempio seguente imposta laModelSource
chiave per l'URI S3 del modello di bozza personalizzato:optimized_model = model_builder.optimize( instance_type="
instance-type
", accept_eula=True, speculative_decoding_config={ "ModelSource": custom_draft_model_uri + "/", }, )In questo esempio, sostituisci
con un'istanza ML, ad esempio.instance-type
ml.p4d.24xlarge
Il
optimize()
metodo restituisce unModel
oggetto, che potete utilizzare per distribuire il modello su un endpoint. -
Al termine del processo, distribuisci il modello. L'esempio seguente utilizza il
deploy()
metodo:predictor = optimized_model.deploy(accept_eula=True)
Il
deploy()
metodo restituisce un oggetto predittore, che è possibile utilizzare per inviare richieste di inferenza all'endpoint che ospita il modello.
Per ottimizzare con la compilazione
-
Per eseguire un processo di compilazione, utilizzate il
optimize()
metodo e impostate l'compilation_config
argomento. L'esempio seguente utilizza laOverrideEnvironment
chiave per impostare le variabili di ambiente necessarie nel contenitore di ottimizzazione:optimized_model = model_builder.optimize( instance_type="
instance-type
", accept_eula=True, compilation_config={ "OverrideEnvironment": { "OPTION_TENSOR_PARALLEL_DEGREE": "24", "OPTION_N_POSITIONS": "8192", "OPTION_DTYPE": "fp16", "OPTION_ROLLING_BATCH": "auto", "OPTION_MAX_ROLLING_BATCH_SIZE": "4", "OPTION_NEURON_OPTIMIZE_LEVEL": "2", } }, output_path="s3://output-path
", )In questo esempio, impostate su
un tipo di istanza ML con hardware accelerato. Ad esempio, per l'inferenza accelerata con AWS Inferentia, è possibile impostare il tipo su un'istanza Inf2, ad esempio.instance-type
ml.inf2.48xlarge
Sostituisci
con il percorso della posizione S3 in cui memorizzi il modello ottimizzato creato dal lavoro.s3://output-path
-
Al termine del processo, distribuisci il modello. L'esempio seguente utilizza il
deploy()
metodo:predictor = optimized_model.deploy(accept_eula=True)
Il
deploy()
metodo restituisce un oggetto predittore, che è possibile utilizzare per inviare richieste di inferenza all'endpoint che ospita il modello.
Per testare il modello con una richiesta di inferenza
-
Per inviare una richiesta di inferenza di test al modello distribuito, utilizzate il
predict()
metodo di un oggetto predittore. L'esempio seguente passa lasample_input
variabile che è stata passata anche allaSchemaBuilder
classe negli esempi per definire il modello:predictor.predict(sample_input)
L'input di esempio ha il prompt,
"What is the largest planet in the solar system?"
. Ilpredict()
metodo restituisce la risposta generata dal modello, come illustrato nell'esempio seguente:{'generated_text': ' Jupiter is the largest planet in the solar system. It is the fifth planet from the sun. It is a gas giant with . . .'}
Limitazioni del modello di bozza SageMaker AI
Per qualsiasi modello ottimizzato con il modello di bozza SageMaker AI, tieni presente i requisiti, le restrizioni e le variabili di ambiente supportate.
Requisiti
Completa le attività seguenti:
-
Utilizza un modello fornito dall' SageMaker IA JumpStart.
-
Abilita l'isolamento della rete per l'implementazione del modello.
-
Se distribuisci il modello in un contenitore Large Model Inference (LMI), utilizza un DJLServing contenitore con versione 0.28.0 o successiva.
Per i contenitori disponibili, consulta Large Model Inference Containers
nel GitHub repository Deep Learning Containers. -
Se ottimizzi il JumpStart modello, usa il formato safetensors per i pesi del modello.
Per ulteriori informazioni su questo formato, vedere Safetensors
nella documentazione di Hugging Face.
Restrizioni
Non puoi eseguire le operazioni indicate di seguito:
-
Utilizzate il modello in ambienti di test locali creati con la modalità locale.
Per ulteriori informazioni sulla modalità locale, consulta Local Mode
nella documentazione di SageMaker AI Python SDK. -
Accedi al contenitore del modello tramite l' AWS Systems Manager agente (agente SSM). L'agente SSM fornisce l'accesso a livello di shell al contenitore modello in modo da poter eseguire il debug dei processi e registrare i comandi con Amazon. CloudWatch
Per ulteriori informazioni sull'utilizzo di questa caratteristica, consulta Accedi ai container tramite SSM.
-
Configura il contenitore del modello per un core dump che si verifica in caso di arresto anomalo del processo.
Per ulteriori informazioni sui core dump dei contenitori del modello, consulta. ProductionVariantCoreDumpConfig
-
Distribuisci il modello su endpoint multimodello, endpoint multi-container o endpoint che ospitano componenti di inferenza.
Per ulteriori informazioni su questi tipi di endpoint, consulta, e. Endpoint multi-modello Endpoint multi-container Componenti di inferenza
-
Crea un pacchetto modello per il modello. I pacchetti di modelli vengono utilizzati per creare modelli distribuibili su cui pubblicare. Marketplace AWS
Per ulteriori informazioni sull'utilizzo di questa caratteristica, consulta Creazione di una risorsa pacchetto di modelli.
-
Usa il tuo codice di inferenza nel contenitore del modello.
-
Utilizzate un
requirements.txt
file nel contenitore del modello. Questo tipo di file elenca le dipendenze dei pacchetti. -
Abilita il parametro Hugging Face.
trust_remote_code
Variabili di ambiente supportate
È possibile configurare il contenitore solo con le seguenti variabili di ambiente:
-
Variabili di ambiente comuni per contenitori LMI (Large Model Inference).
Per ulteriori informazioni su queste variabili, vedere Configurazioni delle variabili di ambiente
nella documentazione del contenitore LMI. -
Variabili di ambiente comuni per i pacchetti che Hugging Face Hub fornisce nei suoi repository Git.
Per i repository, vedi Hugging Face on
. GitHub -
Variabili di ambiente comuni PyTorch e CUDA.
Per ulteriori informazioni su queste variabili, consulta Torch Environment Variables
nella PyTorch documentazione.