As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Tutoriais - Amazon SageMaker HyperPod Checkpointless Full Finetuning GPT OSS 120b
A sequência de etapas a seguir é necessária para executar receitas de treinamento sem pontos de verificação. HyperPod
Pré-requisitos
Antes de começar a configurar seu ambiente, você deve:
Suporte habilitado para Amazon EKS na Amazon SageMaker HyperPod
Ter um local de armazenamento compartilhado. Pode ser um sistema de FSx arquivos Amazon ou um sistema NFS acessível a partir dos nós do cluster.
-
Ter dados em um dos seguintes formatos:
JSON
JSONGZ (JSON compactado)
ARROW
Baixe os pesos do modelo Hugging Face e converta para o formato compatível com Nemo.
Configurar o ambiente
Configuração do ambiente Kubernetes
Para configurar seu ambiente Kubernetes, faça o seguinte:
-
Configure um ambiente virtual. Certifique-se de que sua versão do Python seja maior ou igual a 3,10 e menor que 3,14.
python3 -m venv ${PWD}/venv source venv/bin/activate -
Conecte-se ao cluster do Kubernetes.
aws eks update-kubeconfig --region "${CLUSTER_REGION}" --name "${CLUSTER_NAME}" -
Instale as dependências usando um dos seguintes métodos:
-
Método 1: método de SageMaker HyperPod receitas:
# install SageMaker HyperPod Recipes. git clone --recursive git@github.com:aws/sagemaker-hyperpod-recipes.git cd sagemaker-hyperpod-recipes pip3 install -r requirements.txt -
Método 2: kubectl com método yaml de trabalho predefinido
# install SageMaker HyperPod checkpointless training. git clone git@github.com:aws/sagemaker-hyperpod-checkpointless-training.git cd sagemaker-hyperpod-checkpointless-training
-
Agora você pode iniciar a receita de treinamento sem ponto de verificação usando o inicializador NeMo -style ou usando kubectl.
Inicie trabalhos de treinamento com o lançador de receitas
Você pode usar as SageMaker HyperPod receitas da Amazon para enviar seu trabalho de treinamento. O uso das receitas envolve atualizar k8s.yaml, config.yaml e executar o script de inicialização.
-
Atualizar as
launcher_scripts/gpt_oss/run_checkpointless_gpt_oss_120b_full_fine_tuning.shyour_container: um contêiner de aprendizado profundo. Para encontrar a versão mais recente do contêiner de treinamento checkpointless, consulte as notas de versão do checkpointless training.
#!/bin/bash SAGEMAKER_TRAINING_LAUNCHER_DIR=${SAGEMAKER_TRAINING_LAUNCHER_DIR:-"$(pwd)"} TRAIN_DIR="${TRAIN_DIR}" VAL_DIR="${VAL_DIR}" EXP_DIR="${EXP_DIR}" LOG_DIR="${LOG_DIR}" CONTAINER_MOUNT="/data" CONTAINER="${CONTAINER}" MODEL_NAME_OR_PATH="${MODEL_NAME_OR_PATH}" HYDRA_FULL_ERROR=1 python3 "${SAGEMAKER_TRAINING_LAUNCHER_DIR}/main.py" \ recipes=fine-tuning/gpt_oss/checkpointless_gpt_oss_120b_full_fine_tuning \ recipes.dataset.dataset_path="${TRAIN_DIR}" \ recipes.exp_manager.exp_dir="${EXP_DIR}" \ recipes.log_dir="${LOG_DIR}" \ recipes.resume.restore_config.path="${MODEL_NAME_OR_PATH}" \ base_results_dir="${SAGEMAKER_TRAINING_LAUNCHER_DIR}/results" \ git.use_default=false \ cluster=k8s \ cluster_type=k8s \ container="${CONTAINER}" \ +cluster.hostNetwork=true \ +cluster.persistent_volume_claims.0.claimName=fsx-claim \ +cluster.persistent_volume_claims.0.mountPath="${CONTAINER_MOUNT}" \ +recipes.dataset.val_dataset_path="${VAL_DIR}" \ ++recipes.callbacks.3.test_fault_config.fault_prob_between_lock=1 \ -
Iniciar a tarefa de treinamento
bash launcher_scripts/gpt_oss/run_checkpointless_gpt_oss_120b_full_fine_tuning.sh
Depois de enviar a tarefa de treinamento, você pode usar o comando a seguir para verificar se a enviou com êxito.
kubectl get pods NAME READY STATUS RESTARTS AGE gpt-oss-120b-worker-0 0/1 running 0 36s
Se o STATUS estiver em PENDING ou ContainerCreating, execute o comando a seguir para obter mais detalhes
kubectl describe pod <name of pod>
Depois que o STATUS da tarefa mudar para Running, você poderá examinar o log usando o comando a seguir.
kubectl logs <name of pod>
O STATUS mudará para COMPLETED quando você executar kubectl get pods.
Inicie o trabalho de treinamento com kubectl com yaml predefinido
Outra opção é iniciar o treinamento por meio do kubectl com um job pré-definido yaml.
-
atualize o examples/gpt_oss/launch/full _finetune_gpt_oss_120b_checkpointless_p5.yaml
imagem: Um contêiner de aprendizado profundo. Para encontrar a versão mais recente do contêiner de treinamento checkpointless, consulte as notas de versão do checkpointless training.
resume.restore_config.path=: O caminho para baixar os pesos do modelo pré-treinado no formato Nemo na etapa de pré-requisitos. <path_to_pretrained_weights>
dataset.dataset_path=<path_to_dataset>: o caminho para o conjunto de dados armazenado no armazenamento compartilhado
-
Envie o trabalho usando kubectl com full_finetune_gpt_oss_120b_checkpointless_p5.yaml
kubectl apply -f examples/gpt_oss/launch/full_finetune_gpt_oss_120b_checkpointless_p5.yaml
Depois de enviar a tarefa de treinamento, você pode usar o comando a seguir para verificar se a enviou com êxito.
kubectl get pods NAME READY STATUS RESTARTS AGE gpt-oss-120b-worker-0 0/1 running 0 36s
Se o STATUS estiver em PENDING ou ContainerCreating, execute o comando a seguir para obter mais detalhes
kubectl describe pod <name of pod>
Depois que o STATUS da tarefa mudar para Running, você poderá examinar o log usando o comando a seguir.
kubectl logs <name of pod>
O STATUS mudará para Concluído quando você executar kubectl get pods