View a markdown version of this page

Ajuste fino supervisionado (SFT) no Nova 2.0 no SageMaker Training Jobs - Amazon Nova

Ajuste fino supervisionado (SFT) no Nova 2.0 no SageMaker Training Jobs

Pré-requisitos

Antes de iniciar uma tarefa de treinamento, observe o seguinte:

  • Os buckets do Amazon S3 para armazenar seus dados de entrada e as saídas das tarefas de treinamento. Você pode usar um bucket para ambos ou buckets separados para cada tipo de dados. Seus buckets devem estar na mesma Região da AWS onde você cria todos os outros recursos para treinamento. Para ter mais informações, consulte Criar um bucket de uso geral.

  • Um perfil do IAM com permissões para executar uma tarefa de treinamento. Você deve anexar uma política do IAM com AmazonSageMakerFullAccess. Para obter mais informações, consulte Como usar os perfis de execução do SageMaker AI.

  • Fórmulas básicas do Amazon Nova, consulte Obter fórmulas do Amazon Nova.

O que é SFT?

O ajuste fino supervisionado (SFT) treina um modelo de linguagem usando pares de entrada-saída rotulados. O modelo aprende com exemplos de demonstração que consistem em prompts e respostas, refinando suas capacidades para se alinhar a tarefas específicas, instruções ou comportamentos desejados.

Para determinar se o SFT é adequado para seu caso de uso, consulte Ajuste fino supervisionado (SFT).

Início de uma tarefa de treinamento

Preparar seus dados

Para obter informações sobre formato dos dados, recursos compatíveis, restrições e melhores práticas para preparar os dados de treinamento do SFT, consulte Preparar dados para SFT no Amazon Nova 2.

Carregar seus dados

Os conjuntos de dados devem ser enviados para um bucket que possa ser acessado pelas tarefas de treinamento do SageMaker. Para obter mais informações sobre como configurar as permissões corretas, consulte Pré-requisitos.

Seleção de hiperparâmetros e atualização da fórmula

A configuração do Nova 2.0 é basicamente a mesma do Nova 1.0. Depois que os dados de entrada forem carregados no S3, use a fórmula das Fórmulas do SageMaker HyperPod disponíveis na pasta Ajuste fino do GitHub. Para o Nova 2.0 Lite, confira a seguir alguns dos principais hiperparâmetros que você pode atualizar com base no caso de uso. Um exemplo da fórmula de SFT PEFT do Nova 2.0 Lite é mostrado a seguir. Para o URI da imagem do contêiner, use 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-TJ-SFT-V2-latest para executar um trabalho de ajuste fino de SFT.

Exemplo de entrada

run: name: {peft_recipe_job_name} model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: {peft_model_name_or_path} data_s3_path: {train_dataset_s3_path} # SageMaker HyperPod (SMHP) only and not compatible with SageMaker Training jobs. Note replace my-bucket-name with your real bucket name for SMHP job replicas: 4 # Number of compute instances for training, allowed values are 4, 8, 16, 32 output_s3_path: "" # Output artifact path (Hyperpod job-specific; not compatible with standard SageMaker Training jobs). Note replace my-bucket-name with your real bucket name for SMHP job training_config: max_steps: 10 # Maximum training steps. Minimal is 4. save_steps: 10 # How many training steps the checkpoint will be saved. Should be less than or equal to max_steps save_top_k: 1 # Keep top K best checkpoints. Note supported only for SageMaker HyperPod jobs. Minimal is 1. max_length: 32768 # Sequence length (options: 8192, 16384, 32768 [default], 65536) global_batch_size: 32 # Global batch size (options: 32, 64, 128) reasoning_enabled: true # If data has reasoningContent, set to true; otherwise False lr_scheduler: warmup_steps: 15 # Learning rate warmup steps. Recommend 15% of max_steps min_lr: 1e-6 # Minimum learning rate, must be between 0.0 and 1.0 optim_config: # Optimizer settings lr: 1e-5 # Learning rate, must be between 0.0 and 1.0 weight_decay: 0.0 # L2 regularization strength, must be between 0.0 and 1.0 adam_beta1: 0.9 # Exponential decay rate for first-moment estimates, must be between 0.0 and 1.0 adam_beta2: 0.95 # Exponential decay rate for second-moment estimates, must be between 0.0 and 1.0 peft: # Parameter-efficient fine-tuning (LoRA) peft_scheme: "lora" # Enable LoRA for PEFT lora_tuning: alpha: 64 # Scaling factor for LoRA weights ( options: 32, 64, 96, 128, 160, 192), lora_plus_lr_ratio: 64.0

A fórmula também contém basicamente os mesmos hiperparâmetros do Nova 1.0. Os principais hiperparâmetros são:

  • max_steps: número de etapas para as quais você deseja executar o trabalho. Geralmente, para uma época (uma execução em todo o conjunto de dados), o número de etapas = número de amostras de dados/tamanho global do lote. Quanto maior o número de etapas e menor o tamanho do lote global, mais tempo o trabalho levará para ser executado.

  • reasoning_enabled: controla o modo de raciocínio para seu conjunto de dados. Opções:

    • true: habilita o modo de raciocínio (equivalente ao raciocínio elevado)

    • false: desabilita o modo de raciocínio

    Observação: para o SFT, não há controle granular sobre os níveis de esforço de raciocínio. A configuração reasoning_enabled: true habilita a capacidade total de raciocínio.

  • peft.peft_scheme: definir como “lora” habilita o ajuste fino baseado em PEFT. Defini-lo como nulo (sem aspas) habilita o ajuste fino de full-rank.

Iniciar a tarefa de treinamento

from sagemaker.pytorch import PyTorch # define OutputDataConfig path if default_prefix: output_path = f"s3://{bucket_name}/{default_prefix}/{sm_training_job_name}" else: output_path = f"s3://{bucket_name}/{sm_training_job_name}" output_kms_key = "<KMS key arn to encrypt trained model in Amazon-owned S3 bucket>" # optional, leave blank for Amazon managed encryption recipe_overrides = { "run": { "replicas": instance_count, # Required "output_s3_path": output_path }, } estimator = PyTorch( output_path=output_path, base_job_name=sm_training_job_name, role=role, disable_profiler=True, debugger_hook_config=False, instance_count=instance_count, instance_type=instance_type, training_recipe=training_recipe, recipe_overrides=recipe_overrides, max_run=432000, sagemaker_session=sagemaker_session, image_uri=image_uri, output_kms_key=output_kms_key, tags=[ {'Key': 'model_name_or_path', 'Value': model_name_or_path}, ] ) print(f"\nsm_training_job_name:\n{sm_training_job_name}\n") print(f"output_path:\n{output_path}")
from sagemaker.inputs import TrainingInput train_input = TrainingInput( s3_data=train_dataset_s3_path, distribution="FullyReplicated", s3_data_type="Converse", ) estimator.fit(inputs={"validation": val_input}, wait=False)
nota

A aprovação de um conjunto de dados de validação não é compatível com o ajuste fino supervisionado do Nova 2.0 Lite.

Para começar a tarefa:

  • Atualize a fórmula com seus caminhos e hiperparâmetros do conjunto de dados

  • Execute as células especificadas no caderno para enviar a tarefa de treinamento

O caderno gerencia o envio de tarefas e fornece o rastreamento de status.