View a markdown version of this page

Creazione di un processo di ottimizzazione dell’inferenza - Amazon SageMaker AI

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à.

Creazione di un processo di ottimizzazione dell’inferenza

Puoi creare un processo di ottimizzazione dell'inferenza utilizzando Studio o SageMaker AI Python SDK. Il processo ottimizza il modello applicando le tecniche scelte dall’utente. Per ulteriori informazioni, consulta Tecniche di ottimizzazione.

Prezzi delle istanze per i processi di ottimizzazione dell’inferenza

Quando crei un processo di ottimizzazione dell'inferenza che applica la quantizzazione o la compilazione, SageMaker AI sceglie il tipo di istanza da utilizzare per eseguire il lavoro. L’addebito si basa sull’istanza utilizzata.

Per i possibili tipi di istanze e i relativi dettagli sui prezzi, consulta le informazioni sui prezzi dell'ottimizzazione dell'inferenza nella pagina dei prezzi di Amazon. SageMaker

Non sono previsti costi aggiuntivi per i processi che applicano la decodifica speculativa.

Per informazioni sui modelli supportati che è possibile ottimizzare, consulta Riferimento sui modelli supportati.

Completa la seguente procedura per creare un processo di ottimizzazione dell’inferenza in Studio.

Come iniziare a creare un processo di ottimizzazione
  1. In SageMaker AI Studio, crea un processo di ottimizzazione tramite uno dei seguenti percorsi:

    • Per creare un lavoro per un JumpStart modello, procedi come segue:

      1. Nel menu di navigazione, scegliete JumpStart.

      2. Nella pagina Tutti i modelli pubblici, scegli un provider di modelli, quindi scegli uno dei modelli che supporta l’ottimizzazione.

      3. Nella pagina dei dettagli del modello, scegli Ottimizza. Questo pulsante è abilitato solo per i modelli che supportano l’ottimizzazione.

      4. Nella pagina Create inference optimization job, 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 caso d’uso specifico, seleziona la casella di controllo Accetto l’EULA e leggi i termini e le condizioni.

    • Per creare un job per un modello ottimizzato JumpStart , effettuate le seguenti operazioni:

      1. Nel menu di navigazione, in Processi, scegli Addestramento.

      2. Nella pagina Training Jobs, scegliete il nome di un job che avete usato per mettere a punto un modello. JumpStart Questi lavori hanno il tipo JumpStart training nella colonna Tipo di lavoro.

      3. Nella pagina dei dettagli del job di addestramento, scegli Ottimizza.

    • Per creare un processo per un modello personalizzato, effettua le seguenti operazioni:

      1. Nel menu di navigazione, in Processi, scegli Ottimizzazione dell’inferenza.

      2. Scegli Create new job (Crea nuovo processo).

      3. Nella pagina Creazione di un processo di ottimizzazione dell’inferenza, scegli Aggiungi modello.

      4. Nella finestra Aggiungi modello, scegli Modello personalizzato.

      5. Scegli una delle seguenti opzioni:

        Usa il tuo modello esistente: seleziona questa opzione per ottimizzare un modello che hai già creato in SageMaker AI.

        Nome del modello esistente: inserisci il nome del tuo modello SageMaker AI.

        Da S3: seleziona questa opzione per fornire artefatti del modello da Amazon S3. In URI S3, inserisci l’URI per la posizione in Amazon S3 in cui hai archiviato gli artefatti del modello.

      6. (Facoltativo) Per il nome del modello Output , puoi inserire un nome personalizzato per il modello ottimizzato creato dal lavoro. Se non fornisci un nome, Studio ne genera automaticamente uno in base alla selezione effettuata.

  2. Nella pagina Crea processo di ottimizzazione dell'inferenza, per Nome del lavoro, puoi accettare il nome predefinito assegnato dall' SageMaker IA. Oppure, per inserire un nome di processo personalizzato, seleziona il campo Nome del processo e scegli Inserisci il nome del processo.

Come impostare le configurazioni di ottimizzazione
  1. Per Tipo di istanza implementazione, scegli il tipo di istanza per il quale 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.

  2. Seleziona una o più tecniche di ottimizzazione fornite da Studio:

    • Se selezioni Quantizzazione, scegli un tipo di dati per Tipo di dati di precisione.

    • Se selezioni Decodifica speculativa, scegli 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 la bozza del modello 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 individua.

    • Se scegli Caricamento rapido del modello, Studio mostra la variabile di ambiente OPTION_TENSOR_PARALLEL_DEGREE. Utilizza il campo Valore per impostare il grado di parallelizzazione tensoriale. Il valore deve dividere equamente il numero di GPU nell’istanza scelta per Tipo di istanza implementazione. Ad esempio, per suddividere il modello mentre utilizzi un’istanza con 8 GPU, utilizza 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.

  3. Per Output, inserisci l’URI di una posizione in Amazon S3. Lì, l' SageMaker intelligenza artificiale memorizza gli artefatti del modello ottimizzato creato dal tuo lavoro.

  4. (Facoltativo) Espandi Opzioni avanzate per un controllo più preciso sulle impostazioni, come il ruolo IAM, il VPC e le variabili di ambiente. Per ulteriori informazioni, consulta Opzioni avanzate.

  5. Al termine della configurazione del processo, scegli Crea processo.

    Studio mostra la pagina dei dettagli del processo, su cui è indicato lo stato del processo con tutte le relative impostazioni.

Opzioni avanzate

Quando si crea un processo di ottimizzazione dell’inferenza, è possibile impostare le opzioni avanzate indicate di seguito.

In Configurazioni, puoi impostare le seguenti opzioni:

Grado di parallelizzazione tensoriale

Un valore per il grado di parallelizzazione tensoriale. La parallelizzazione tensoriale è un tipo di parallelizzazione 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 GPU 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.

Concurrency (Simultaneità)

La capacità di eseguire più istanze di un modello sullo stesso hardware sottostante. Utilizza la simultaneità per fornire previsioni a più utenti e massimizzare l’utilizzo dell’hardware.

Dimensione batch

Se il modello esegue l’inferenza in batch, utilizza questa opzione per controllare la dimensione dei batch elaborati dal modello.

L’inferenza in batch genera previsioni tramite 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 del modello, l' SageMaker IA ha bisogno del tuo permesso per:

  • Leggere i dati di input da un bucket S3

  • Scrivere artefatti dei modelli in un bucket S3

  • Scrivere i log su Amazon CloudWatch Logs

  • Pubblica le metriche su Amazon CloudWatch

Concedi le autorizzazioni per tutte queste attività a un ruolo IAM.

Per ulteriori informazioni, consulta Come utilizzare i ruoli di esecuzione SageMaker AI.

Chiave KMS di crittografia

Una chiave in AWS Key Management Service (AWS KMS). SageMaker L'intelligenza artificiale utilizza la 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 con SageMaker intelligenza artificiale l'accesso alle risorse nel tuo Amazon VPC.

Abilitazione dell’isolamento di rete

Attiva questa opzione se desideri limitare l’accesso a Internet del container. I container 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, consulta Isolamento di rete.

In Definizione avanzata del container, è possibile impostare le seguenti opzioni:

Condizione di arresto

Specifica un limite per la durata dell’esecuzione di un processo. Quando il lavoro raggiunge il limite di tempo, l' SageMaker IA lo termina. Utilizza questa opzione per limitare i costi.

Tag

Key-value coppie associate al processo di ottimizzazione.

Per ulteriori informazioni sui tag, consulta Tagging delle risorse AWS in Riferimenti generali di AWS.

Variabili di ambiente

Key-value coppie che definiscono le variabili di ambiente da impostare nel contenitore del modello.

Puoi creare un processo di ottimizzazione dell'inferenza utilizzando SageMaker AI Python SDK nel tuo progetto. Innanzitutto, definisci un’istanza Model utilizzando la classe ModelBuilder. Quindi, utilizza il metodo optimize() per eseguire un processo che ottimizza il modello con quantizzazione, decodifica speculativa o compilazione. Al termine del processo, implementa il modello su un endpoint di inferenza utilizzando il metodo deploy().

Per ulteriori informazioni sulle classi e sui metodi utilizzati nei seguenti esempi, consulta le API nella documentazione di SageMaker AI Python SDK.

Come configurare il progetto
  1. Nel codice dell’applicazione, importa le librerie necessarie. L’esempio seguente importa l’SDK per Python (Boto3). Inoltre, importa le classi dall'SDK SageMaker AI Python che utilizzi per definire e lavorare con i modelli:

    import boto3 from sagemaker.serve.model_builder import ModelBuilder from sagemaker.serve.builder.schema_builder import SchemaBuilder from sagemaker.core.helper.session_helper import Session from pathlib import Path
  2. Inizializza una SageMaker sessione AI. L’esempio seguente utilizza la classe Session():

    sagemaker_session = Session()
Come definire il tuo modello
  1. Crea un’istanza SchemaBuilder e fornisci esempi di input e output. Fornisci questa istanza alla classe ModelBuilder al momento della definizione di un modello. Con esso, l' SageMaker IA genera automaticamente le funzioni di marshalling per serializzare e deserializzare l'input e l'output.

    Per ulteriori informazioni sull’utilizzo delle classi SchemaBuilder e ModelBuilder, consulta Crea un modello in Amazon SageMaker AI con ModelBuilder.

    L’esempio seguente fornisce esempi di stringhe di input e output per la classe SchemaBuilder:

    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)
  2. SageMaker Definisci il tuo modello in base all'IA. L’esempio seguente imposta i parametri per inizializzare un’istanza ModelBuilder:

    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 jumpstart-model-id con l'ID di un JumpStart modello, ad esempiometa-textgeneration-llama-3-70b.

    Nota

    Se si desidera ottimizzare con la decodifica speculativa e si desidera utilizzare la bozza SageMaker AI, è necessario 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, consulta Isolamento di rete.

Come eseguire l’ottimizzazione con la quantizzazione
  1. Per eseguire un processo di quantizzazione, utilizza il metodo optimize() e imposta l’argomento quantization_config. L’esempio seguente imposta OPTION_QUANTIZE come variabile di ambiente nel container 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 instance-type con un’istanza ML, ad esempio ml.p4d.24xlarge. Sostituisci s3://output-path con il percorso della posizione S3 in cui archivi il modello ottimizzato creato dal processo.

    Il metodo optimize() restituisce un oggetto Model, che è possibile utilizzare per implementare il modello in un endpoint.

  2. Al termine del processo, implementa il modello. L’esempio seguente utilizza il metodo deploy():

    endpoint = model_builder.deploy( instance_type="instance-type", accept_eula=True, )

    In questo esempio, sostituisci instance-type con un’istanza ML, ad esempio ml.p4d.24xlarge.

    Il deploy() metodo restituisce un Endpoint oggetto, che puoi 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 ottimizzate il modello con la decodifica speculativa, potete scegliere di utilizzare una bozza di modello fornita dall' SageMaker intelligenza artificiale oppure potete utilizzare il vostro. Gli esempi seguenti utilizzano il modello di bozza SageMaker AI.

Prerequisito

Per l'ottimizzazione con la decodifica speculativa e il modello di bozza SageMaker AI, è necessario abilitare l'isolamento della rete quando si definisce il modello.

  1. Per eseguire un processo di decodifica speculativa, utilizza il metodo optimize() e imposta l’argomento speculative_decoding_config. L'esempio seguente imposta la ModelProvider chiave per utilizzare il modello SAGEMAKER di bozza fornito dall'IA. SageMaker

    optimized_model = model_builder.optimize( instance_type="instance-type", accept_eula=True, speculative_decoding_config={ "ModelProvider": "SAGEMAKER", }, )

    In questo esempio, sostituisci instance-type con un’istanza ML, ad esempio ml.p4d.24xlarge.

    Il metodo optimize() restituisce un oggetto Model, che è possibile utilizzare per implementare il modello in un endpoint.

  2. Al termine del processo, implementa il modello. L’esempio seguente utilizza il metodo deploy():

    endpoint = model_builder.deploy(accept_eula=True)

    Il deploy() metodo restituisce un Endpoint oggetto, che è possibile utilizzare per inviare richieste di inferenza all'endpoint che ospita il modello.

Come eseguire l’ottimizzazione 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 in Amazon S3 e forniscono l’URI S3 per l’argomento speculative_decoding_config.

  1. Se desideri scaricare un modello dall’Hugging Face Hub, aggiungi la libreria huggingface_hub al tuo progetto e scarica un modello con il metodo snapshot_download(). L’esempio seguente scarica un modello in una cartella 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 model-id con l’ID di un modello dell’Hugging Face Hub, ad esempio meta-llama/Meta-Llama-3-8B. Sostituisci download-dir con una directory locale. Sostituisci hf-access-token con il tuo token di accesso utente. Per scoprire come ottenere il token di accesso, consulta Token di accesso utente nella documentazione di Hugging Face.

    Per ulteriori informazioni sulla libreria huggingface_hub, consulta Libreria client dell’hub nella documentazione di Hugging Face.

  2. Per rendere il modello scaricato disponibile all' SageMaker IA, caricalo su Amazon S3. L’esempio seguente carica il modello con l’oggetto sagemaker_session.

    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, sostituisci prefix con un qualificatore che ti aiuti a distinguere la bozza del modello in S3, ad esempio spec-dec-custom-draft-model.

    Il metodo upload_data() restituisce l’URI S3 per gli artefatti del modello.

  3. Per eseguire un processo di decodifica speculativa, utilizza il metodo optimize() e imposta l’argomento speculative_decoding_config. L’esempio seguente imposta la chiave ModelSource 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 instance-type con un’istanza ML, ad esempio ml.p4d.24xlarge.

    Il metodo optimize() restituisce un oggetto Model, che è possibile utilizzare per implementare il modello in un endpoint.

  4. Al termine del processo, implementa il modello. L’esempio seguente utilizza il metodo deploy():

    endpoint = model_builder.deploy(accept_eula=True)

    Il deploy() metodo restituisce un Endpoint oggetto, che puoi utilizzare per inviare richieste di inferenza all'endpoint che ospita il modello.

Come ottimizzare con la compilazione
  1. Per eseguire un processo di compilazione, utilizza il metodo optimize() e imposta l’argomento compilation_config. L’esempio seguente utilizza la chiave OverrideEnvironment per impostare le variabili di ambiente necessarie nel container 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, imposta instance-type su un tipo di istanza ML con hardware accelerato. Ad esempio, per un'inferenza accelerata con AWS Inferentia, è possibile impostare il tipo su un'istanza Inf2, ad esempio. ml.inf2.48xlarge Sostituisci s3://output-path con il percorso della posizione S3 in cui archivi il modello ottimizzato creato dal processo.

  2. Al termine del processo, implementa il modello. L’esempio seguente utilizza il metodo deploy():

    endpoint = model_builder.deploy(accept_eula=True)

    Il deploy() metodo restituisce un Endpoint oggetto, che è possibile utilizzare per inviare richieste di inferenza all'endpoint che ospita il modello.

Come testare il modello con una richiesta di inferenza
  • Per inviare una richiesta di inferenza di test al modello distribuito, utilizzate il invoke() metodo dell'oggetto. Endpoint L’esempio seguente passa la variabile sample_input, che è stata passata anche alla classe SchemaBuilder negli esempi per definire il modello:

    import json response = endpoint.invoke(body=json.dumps(sample_input), content_type="application/json") result = json.loads(response.body.read().decode('utf-8'))

    L’input di esempio presenta il prompt, "What is the largest planet in the solar system?". Il metodo invoke() 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 . . .'}

Puoi utilizzare l' AWS SDK per Python (Boto3) per creare e gestire in modo programmatico i lavori di ottimizzazione dell'inferenza. Questa sezione fornisce esempi di diverse tecniche di ottimizzazione.

Prerequisiti

Prima di creare un processo di ottimizzazione con Boto3, assicurati di avere:

  • AWS Credenziali configurate: configura le tue AWS credenziali con le autorizzazioni appropriate

  • Creato un modello SageMaker AI (se si utilizza un modello esistente)

  • Dati di addestramento preparati in S3 (per l'ottimizzazione della decodifica speculativa, lunghezza del contesto supportata fino a 4096)

  • Ruolo IAM con le autorizzazioni necessarie: il ruolo di esecuzione deve disporre delle autorizzazioni per accedere a S3 e creare risorse SageMaker

Esempio: creazione di un processo di ottimizzazione con EAGLE Speculative Decoding (Llama 3.3 70B)

Questo esempio dimostra la creazione di un processo di ottimizzazione per un modello linguistico di grandi dimensioni utilizzando la tecnica di decodifica speculativa EAGLE:

import boto3 # Initialize SageMaker client sagemaker_client = boto3.client('sagemaker', region_name='us-west-2') # Step 1: Create a SageMaker model (if not already created) model_response = sagemaker_client.create_model( ModelName='meta-llama-3-3-70b-instruct', ExecutionRoleArn='arn:aws:iam::123456789012:role/SageMakerExecutionRole', PrimaryContainer={ 'Image': '763104351884.dkr.ecr.us-west-2.amazonaws.com/djl-inference:<tag>', 'ModelDataSource': { 'S3DataSource': { 'S3Uri': 's3://my-bucket/models/Llama-3.3-70B-Instruct/', 'S3DataType': 'S3Prefix', 'CompressionType': 'None' } }, 'Environment': { 'SAGEMAKER_ENV': '1', 'SAGEMAKER_MODEL_SERVER_TIMEOUT': '3600' } } ) # Step 2: Create optimization job with speculative decoding optimization_response = sagemaker_client.create_optimization_job( OptimizationJobName='llama-optim-job-eagle-speculative-decoding', RoleArn='arn:aws:iam::123456789012:role/SageMakerExecutionRole', ModelSource={ 'SageMakerModel': { 'ModelName': 'meta-llama-3-3-70b-instruct' } }, DeploymentInstanceType='ml.p4d.24xlarge', # MaxInstanceCount specifies the maximum number of instances for distributed training MaxInstanceCount=4, OptimizationConfigs=[ { 'ModelSpeculativeDecodingConfig': { 'Technique': 'EAGLE', 'TrainingDataSource': { 'S3Uri': 's3://my-bucket/training_data/ultrachat_8k/', 'S3DataType': 'S3Prefix' } } } ], OutputConfig={ 'S3OutputLocation': 's3://my-bucket/optimized-models/llama-optim-output/', }, StoppingCondition={ 'MaxRuntimeInSeconds': 432000 # 5 days } ) print(f"Optimization job ARN: {optimization_response['OptimizationJobArn']}")

Esempio: creazione di un processo di ottimizzazione da artefatti del modello S3 (Qwen3 32B)

Questo esempio mostra come creare un lavoro di ottimizzazione utilizzando gli artefatti del modello direttamente da S3:

import boto3 sagemaker_client = boto3.client('sagemaker', region_name='us-west-2') # Create model from S3 artifacts model_response = sagemaker_client.create_model( ModelName='qwen3-32b', ExecutionRoleArn='arn:aws:iam::123456789012:role/SageMakerExecutionRole', PrimaryContainer={ 'Image': '763104351884.dkr.ecr.us-west-2.amazonaws.com/djl-inference:<tag>', 'Mode': 'SingleModel', 'ModelDataSource': { 'S3DataSource': { 'S3Uri': 's3://my-bucket/models/qwen3-32b/', 'S3DataType': 'S3Prefix', 'CompressionType': 'None' } }, 'Environment': { 'AWS_REGION': 'us-west-2' } } ) # Create optimization job with smaller training dataset optimization_response = sagemaker_client.create_optimization_job( OptimizationJobName='qwen3-optim-job-eagle', RoleArn='arn:aws:iam::123456789012:role/SageMakerExecutionRole', ModelSource={ 'SageMakerModel': { 'ModelName': 'qwen3-32b' } }, DeploymentInstanceType='ml.g6.48xlarge', MaxInstanceCount=4, OptimizationConfigs=[ { 'ModelSpeculativeDecodingConfig': { 'Technique': 'EAGLE', 'TrainingDataSource': { 'S3Uri': 's3://my-bucket/training_data/ultrachat_1k/', 'S3DataType': 'S3Prefix' } } } ], OutputConfig={ 'S3OutputLocation': 's3://my-bucket/optimized-models/qwen3-optim-output/', }, StoppingCondition={ 'MaxRuntimeInSeconds': 432000 # 5 days } ) print(f"Optimization job ARN: {optimization_response['OptimizationJobArn']}")

Esempio: monitoraggio e gestione dei lavori di ottimizzazione

Dopo aver creato un processo di ottimizzazione, puoi monitorarne l'avanzamento e gestirlo utilizzando questi comandi:

import boto3 sagemaker_client = boto3.client('sagemaker', region_name='us-west-2') # Describe optimization job to check status describe_response = sagemaker_client.describe_optimization_job( OptimizationJobName='llama-optim-job-eagle-speculative-decoding' ) print(f"Job Status: {describe_response['OptimizationJobStatus']}") # List all optimization jobs (with pagination) list_response = sagemaker_client.list_optimization_jobs( MaxResults=10, SortBy='CreationTime', SortOrder='Descending' ) print("\nRecent optimization jobs:") for job in list_response['OptimizationJobSummaries']: print(f"- {job['OptimizationJobName']}: {job['OptimizationJobStatus']}") # Stop a running optimization job if needed # sagemaker_client.stop_optimization_job( # OptimizationJobName='llama-optim-job-eagle-speculative-decoding' # ) # Delete a completed or failed optimization job # sagemaker_client.delete_optimization_job( # OptimizationJobName='llama-optim-job-eagle-speculative-decoding' # )

La decodifica speculativa con Eagle Heads esegue quattro processi di addestramento sequenziali. Ogni lavoro produce un output che diventa l'input per il successivo. Solo l'output del lavoro finale viene inviato al bucket S3. Gli output intermedi sono crittografati e archiviati in un bucket di servizi SageMaker AI interno per un massimo di 20 giorni. SageMaker L'IA non dispone delle autorizzazioni per decrittografarli. Se desideri che i dati intermedi vengano rimossi prima di tale periodo di tempo, assicurati che il processo sia stato completato o interrotto, quindi apri una richiesta di assistenza [https://docs.aws.amazon.com/awssupport/latest/user/case-management.html#creating -a-support-case] per eliminare questi dati. Includi nella richiesta l'ID del tuo AWS account e l'ARN del lavoro di ottimizzazione.

Limitazioni della bozza del SageMaker modello 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:

  • Usa un modello fornito da SageMaker JumpStart.

  • Abilita l’isolamento della rete per l’implementazione del modello.

  • Se implementi il modello in un container Large Model Inference (LMI), utilizza un container DJLServing con versione 0.28.0 o successiva.

    Per i contenitori disponibili, vedi Large Model Inference Containers nel GitHub repository Deep Learning Containers.

  • Se ottimizzate il JumpStart modello, utilizzate il formato safetensors per i pesi del modello.

    Per ulteriori informazioni su questo formato, consulta Safetensors nella documentazione di Hugging Face.

Restrizioni

Non puoi eseguire le operazioni indicate di seguito:

  • Utilizza il modello in ambienti di test locali creati con la modalità locale.

    Per ulteriori informazioni sulla modalità locale, vedi Modalità locale 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 del 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 container del modello per un core dump che si verifica in caso di arresto anomalo del processo.

    Per ulteriori informazioni sui core dump dai contenitori modello, consulta. ProductionVariantCoreDumpConfig

  • Implementa il modello su endpoint multi-modello, endpoint multi-container o endpoint che ospitano componenti di inferenza.

    Per ulteriori informazioni su questi tipi di endpoint, consulta Multi-model punti finali, Multi-container punti finali e Componenti di inferenza.

  • Crea un pacchetto di modelli per il modello. Si utilizzano i pacchetti di modelli per creare modelli distribuibili su cui pubblicare. AWS Marketplace

    Per ulteriori informazioni sull'utilizzo di questa caratteristica, consulta Creazione di una risorsa pacchetto di modelli.

  • Utilizza il tuo codice di inferenza nel container del modello.

  • Utilizza un file requirements.txt nel container del modello. Questo tipo di file elenca le dipendenze dei pacchetti.

  • Abilita il parametro trust_remote_code di Hugging Face.

Variabili di ambiente supportate

Puoi configurare il container solo con le seguenti variabili di ambiente:

  • Variabili di ambiente comuni per container di inferenza di modelli di grandi dimensioni (LMI).

    Per ulteriori informazioni su queste variabili, consulta Configurazioni delle variabili di ambiente nella documentazione del container LMI.

  • Variabili di ambiente comuni per i pacchetti forniti da Hugging Face Hub 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, vedere Torch Environment Variables nella PyTorch documentazione.