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 arquivos do Amazon FSx ou um sistema do NFS acessível por meio 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 pontos de verificação usando o NeMo-style inicializador ou usando o 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