View a markdown version of this page

Fine-tune modelli di base disponibili al pubblico con la classe ModelTrainer - 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à.

Fine-tune modelli di base disponibili al pubblico con la classe ModelTrainer

Nota

Per istruzioni su come eseguire il fine-tuning dei modelli di fondazione in un hub privato selezionato, consulta Fine-tune modelli di hub curati.

Puoi mettere a punto un algoritmo integrato o un modello preaddestrato in poche righe di codice utilizzando l'SDK. SageMaker Python

  1. Innanzitutto, trova l'ID del modello di tua scelta in. Modelli di fondazione disponibili

  2. Utilizzando l'ID del modello, definisci il tuo lavoro di formazione con un JumpStartModelTrainer.

    from sagemaker.train import ModelTrainer from sagemaker.core.jumpstart.configs import JumpStartConfig jumpstart_config = JumpStartConfig(model_id="huggingface-textgeneration1-gpt-j-6b") model_trainer = ModelTrainer.from_jumpstart_config(jumpstart_config=jumpstart_config)
  3. Richiamate il train() metodo a vostro piacimentoModelTrainer, indicando i dati di allenamento da utilizzare per la messa a punto.

    from sagemaker.train.configs import InputData model_trainer.train( input_data_config=[ InputData(channel_name="train", data_source=training_dataset_s3_path), InputData(channel_name="validation", data_source=validation_dataset_s3_path), ] )
  4. Quindi, utilizza il metodo deploy per implementare automaticamente il modello per l’inferenza. In questo esempio, utilizziamo il modello 6B di GPT-J . Hugging Face

    from sagemaker.serve import ModelBuilder model_builder = ModelBuilder.from_jumpstart_config(jumpstart_config=jumpstart_config) model = model_builder.build() endpoint = model_builder.deploy()
  5. È quindi possibile eseguire l'inferenza con il modello distribuito utilizzando il metodo. invoke Text-generation modelli come questo accettano un corpo di richiesta JSON con una chiave. inputs Serializza il payload con json.dumps e imposta il tipo di contenuto su. application/json

    import json question = "What is Southern California often abbreviated as?" payload = {"inputs": question, "parameters": {"max_new_tokens": 100}} response = endpoint.invoke(body=json.dumps(payload), content_type="application/json") print(response.body.read().decode('utf-8'))
Nota

Questo esempio utilizza il modello base GPT-J 6B, adatto per un'ampia gamma di casi d'uso della generazione di testo, tra cui la risposta alle domande, il riconoscimento delle entità denominate, il riepilogo e altro ancora. Per ulteriori informazioni sui casi d’uso dei modelli, consulta Modelli di fondazione disponibili.

Facoltativamente, puoi specificare una versione del modello sul tuo. JumpStartConfig Per scegliere un tipo e un numero di istanze, passate un Compute oggetto aModelTrainer.from_jumpstart_config. JumpStartConfigDi per sé non accetta le impostazioni delle istanze. Per ulteriori informazioni sulla ModelTrainer classe e sui suoi parametri, consulta SageMaker Train nella documentazione SageMaker Python SDK sul sito Web Read the Docs.

Controllo dei tipi di istanza predefiniti

Quando si perfeziona un modello preaddestrato con la ModelTrainer classe, è possibile specificare facoltativamente una versione del modello sul proprio. JumpStartConfig Puoi anche scegliere un tipo di istanza con un oggetto. Compute Tutti i JumpStart modelli hanno un tipo di istanza predefinito. Recupera il tipo di istanza di implementazione predefinita utilizzando il seguente codice:

from sagemaker.core import instance_types instance_type = instance_types.retrieve_default( model_id=model_id, model_version=model_version, scope="training") print(instance_type)

È possibile visualizzare tutti i tipi di istanza supportati per un determinato JumpStart modello con il instance_types.retrieve() metodo.

Controllo degli iperparametri predefiniti

Per controllare gli iperparametri predefiniti utilizzati per l’addestramento, puoi applicare il metodo retrieve_default() della classe hyperparameters.

from sagemaker.core import hyperparameters my_hyperparameters = hyperparameters.retrieve_default(model_id=model_id, model_version=model_version) print(my_hyperparameters) # Optionally override default hyperparameters for fine-tuning my_hyperparameters["epoch"] = "3" my_hyperparameters["per_device_train_batch_size"] = "4" # Optionally validate hyperparameters for the model hyperparameters.validate(model_id=model_id, model_version=model_version, hyperparameters=my_hyperparameters)

Per ulteriori informazioni sugli iperparametri disponibili, consulta iperparametri comunemente supportati per il fine-tuning.

Controllo delle definizioni delle metriche predefinite

Puoi anche controllare le definizioni delle metriche predefinite:

from sagemaker.core import metric_definitions print(metric_definitions.retrieve_default(model_id=model_id, model_version=model_version))