Fine-tuning dei modelli di hub selezionati - Amazon SageMaker AI

Fine-tuning dei modelli di hub selezionati

Nel tuo hub di modelli privato selezionato puoi eseguire job di addestramento per il fine-tuning utilizzando i riferimenti ai modelli. I riferimenti ai modelli rimandano a un modello JumpStart disponibile al pubblico nell’hub pubblico di SageMaker AI, ma è possibile eseguire il fine-tuning del modello in base ai propri dati per il caso d’uso specifico. Dopo il processo di fine-tuning, hai accesso ai pesi del modello che puoi quindi utilizzare o implementare su un endpoint.

È possibile eseguire il fine-tuning di modelli di hub selezionati in poche righe di codice utilizzando SageMaker Python SDK. Per informazioni più generali sul fine-tuning dei modelli JumpStart disponibili al pubblico, consulta Modelli di fondazione e iperparametri per il fine-tuning.

Prerequisiti

Per eseguire il fine-tuning di un riferimento al modello JumpStart nel tuo hub, effettua le seguenti operazioni:

  1. Assicurati che il ruolo IAM dell’utente disponga dell’autorizzazione TrainHubModel SageMaker AI collegata. Per ulteriori informazioni, consulta Aggiunta e rimozione di autorizzazioni per identità IAM nella Guida per l’utente di AWS IAM.

    È consigliabile collegare al ruolo IAM dell’utente una policy come la seguente:

    JSON
    { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "sagemaker:TrainHubModel", "Resource": "arn:aws:sagemaker:*:111122223333:hub/*" } ] }
    Nota

    Se il tuo hub selezionato è condiviso tra più account e il contenuto dell’hub è di proprietà di un altro account, assicurati che il tuo HubContent (la risorsa di riferimento al modello) disponga di una policy IAM basata su risorse che conceda anche l’autorizzazione TrainHubModel all’account richiedente, come mostrato nell’esempio seguente.

    JSON
    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCrossAccountSageMakerAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": [ "sagemaker:TrainHubModel" ], "Resource": [ "arn:aws:sagemaker:*:111122223333:hub/*" ] } ] }
  2. Scegli un hub privato selezionato con un riferimento a un modello JumpStart di cui desideri eseguire il fine-tuning. Per ulteriori informazioni sulla creazione di un hub privato, consulta Creazione di un hub di modelli privato. Per informazioni su come aggiungere al tuo hub privato modelli JumpStart disponibili al pubblico, consulta Aggiunta di modelli a un hub privato.

    Nota

    Dovrebbe essere possibile eseguire il fine-tuning del modello JumpStart scelto. Per verificare se è possibile eseguire il fine-tuning di un modello, consulta la tabella degli algoritmi integrati con modelli preaddestrati.

  3. Scegli un set di dati di addestramento da utilizzare per il fine-tuning del modello. Il set di dati deve essere nel formato di addestramento appropriato per il modello di cui desideri eseguire il fine-tuning.

Fine-tuning di un riferimento al modello di hub selezionato

La procedura seguente mostra come eseguire il fine-tuning di un riferimento al modello nel tuo hub privato selezionato utilizzando SageMaker Python SDK.

  1. Assicurati di aver installato la versione più recente (almeno 2.242.0) di SageMaker Python SDK. Per ulteriori informazioni, consulta Utilizzo della versione 2.x di SageMaker Python SDK.

    !pip install --upgrade sagemaker
  2. Importa AWS SDK for Python (Boto3) e i moduli necessari da SageMaker Python SDK.

    import boto3 from sagemaker.jumpstart.estimator import JumpStartEstimator from sagemaker.session import Session
  3. Inizializza una sessione Boto3, un client SageMaker AI e una sessione SageMaker Python SDK.

    sagemaker_client = boto3.Session(region_name=<AWS-region>).client("sagemaker") sm_session = Session(sagemaker_client=sagemaker_client)
  4. Crea JumpStartEstimator e fornisci l’ID del modello JumpStart, il nome dell’hub che contiene il riferimento al modello e la sessione SageMaker Python SDK. Per un elenco degli ID dei modelli, consulta la tabella degli algoritmi integrati con modelli preaddestrati.

    Facoltativamente, puoi specificare i campi instance_type e instance_count durante la creazione dello strumento di stima. In caso contrario, il job di addestramento utilizza il tipo e il numero di istanze predefiniti per il modello che stai utilizzando.

    Se lo desideri, puoi anche specificare il output_path alla posizione Amazon S3 in cui intendi archiviare i pesi dei modelli ottimizzati con fine-tuning. Se non specifichi il output_path, utilizza un bucket SageMaker AI Amazon S3 predefinito per la Regione del tuo account, denominato con il seguente formato: sagemaker-<region>-<account-id>.

    estimator = JumpStartEstimator( model_id="meta-textgeneration-llama-3-2-1b", hub_name=<your-hub-name>, sagemaker_session=sm_session, # If you don't specify an existing session, a default one is created for you # Optional: specify your desired instance type and count for the training job # instance_type = "ml.g5.2xlarge" # instance_count = 1 # Optional: specify a custom S3 location to store the fine-tuned model artifacts # output_path: "s3://<output-path-for-model-artifacts>" )
  5. Crea un dizionario con la chiave training in cui specifichi la posizione del set di dati per il fine-tuning. Questo esempio rimanda a un URI Amazon S3. In caso di altre considerazioni, come l’utilizzo della modalità locale o di più canali di dati di addestramento, consulta JumpStartEstimator.fit() nella documentazione di SageMaker Python SDK per ottenere ulteriori informazioni.

    training_input = { "training": "s3://<your-fine-tuning-dataset>" }
  6. Chiama il metodo fit() dello strumento di stima e passa i dati di addestramento e l’accettazione dell’EULA (se applicabile).

    Nota

    Il seguente esempio imposta accept_eula=False. Per poter accettare l’EULA, è necessario modificare manualmente il valore in True.

    estimator.fit(inputs=training_input, accept_eula=False)

Il processo di fine-tuning dovrebbe ora iniziare.

Puoi controllare il fine-tuning visualizzando i job di addestramento nella console SageMaker AI o utilizzando l’API ListTrainingJobs.

Puoi accedere agli artefatti del modello ottimizzati con fine-tuning presenti nel output_path Amazon S3 specificato nell’oggetto JumpStartEstimator (il bucket SageMaker AI Amazon S3 predefinito per la Regione o un percorso Amazon S3 personalizzato che hai specificato, se applicabile).