In dieser Anleitung erfahren Sie, wie Sie eine verteilte Trainingsumgebung für Reinforcement Learning (RL) in Google Kubernetes Engine (GKE) orchestrieren. Sie verwenden Ray und das NVIDIA NeMo RL-Framework, um eine verteilte Trainingsumgebung zum Feinabstimmen eines Modells einzurichten.
In dieser Anleitung geht es um die Trainingspipeline für die Group Relative Policy Optimization (GRPO) in GKE mit Ray und NeMo RL. GRPO ist ein Reinforcement-Learning-Algorithmus, der die Denkfähigkeit eines Modells verbessern soll. Dieser speichereffiziente Algorithmus vereinfacht den RL-Prozess, indem er den Critic oder das Wertmodell eliminiert und stattdessen eine relative gruppenbasierte Berechnung verwendet.
Bevor Sie diese Anleitung durcharbeiten, empfehlen wir Ihnen, die Anleitung Verstärkungslernen mit verl in GKE optimieren und skalieren durchzuarbeiten. In der folgenden Anleitung wird dieselbe Clusterkonfiguration wie in der Anleitung zum Feinabstimmen und Skalieren von RL mit VERL verwendet.
Hintergrund
In den folgenden Abschnitten erhalten Sie einen kurzen Überblick über die in dieser Anleitung verwendeten Konzepte.
Bestärkendes Lernen (Reinforcement Learning, RL)
Beim bestärkenden Lernen werden Modelle durch Erfahrung, Erkundung und Feedback trainiert, anstatt durch statische Imitation. Beim Vortraining wird einem Modell beigebracht, was es sagen soll. Beim bestärkenden Lernen durch menschliches Feedback (Reinforcement Learning from Human Feedback, RLHF) wird ihm beigebracht, wie es hilfreich, sicher und logisch sein kann. RL dient als Brücke zwischen einem Basismodell und einem feinabgestimmten Modell für einen speziellen Anwendungsfall.
Weitere Informationen finden Sie unter Was ist bestärkendes Lernen?
Gruppenrelative Richtlinienoptimierung (Group Relative Policy Optimization, GRPO)
GRPO, ein von DeepSeek entwickelter Algorithmus, bietet eine speichereffiziente Alternative zur Proximal Policy Optimization (PPO) für die LLM-Abstimmung, da das Critic-Modell entfernt wird. Anstelle eines Critic-Netzwerks generiert GRPO eine Gruppe von Antworten für denselben Prompt und verwendet die durchschnittliche Belohnung dieser Gruppe als Baseline.
Weitere Informationen finden Sie unter GRPO.
NVIDIA NeMo RL
NeMo RL ist die Open-Source-Bibliothek von NVIDIA für das Post-Training, die für skalierbares RL entwickelt wurde. NeMo RL ist Teil des umfassenderen NeMo-Framework-Ökosystems und ermöglicht sowohl kleine Experimente auf einer einzelnen GPU als auch Multi-Node-Bereitstellungen auf Tausenden von GPUs.
Weitere Informationen finden Sie unter NVIDIA NeMo RL.
GSM8k-Dataset
In dieser Anleitung verwenden Sie das GSM8k-Dataset, das 8.500 hochwertige, sprachlich vielfältige Textaufgaben für Grundschulmathematik enthält.
Mit GSM8k und GRPO generiert das Modell n verschiedene Antworten auf dasselbe Problem. GRPO vergleicht diese Antworten mit dem Gruppendurchschnitt. Das Modell wird stärker für Pfade belohnt, die im Vergleich zum Rest der Gruppe durchgehend richtig und logisch sind. Im Laufe der Zeit lernt das Modell, dass die klare Formulierung seiner Schritte die zuverlässigste Methode ist, um die Belohnung zu maximieren. Dadurch wird die Belohnung für Antworten mit geringer Leistung effektiv reduziert.
Weitere Informationen finden Sie unter GSM8k.
Ziele
In dieser Anleitung erfahren Sie, wie Sie RL in GKE mit NeMo RL einrichten. Dazu führen Sie die folgenden Schritte aus:
- Bereiten Sie Ihre Umgebung vor.
- GKE-Cluster mit B200- oder H200-GPUs einrichten
- KubeRay zum Verwalten eines verteilten Ray-Clusters konfigurieren
- Verwenden Sie Managed Lustre für Hochleistungsspeicher.
- Führen Sie einen GRPO-Trainingsjob aus, der NeMo RL verwendet.
Hinweis
- Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
-
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init -
Erstellen Sie ein Google Cloud Projekt oder wählen Sie eines aus.
Rollen, die zum Auswählen oder Erstellen eines Projekts erforderlich sind
- Projekt auswählen: Für die Auswahl eines Projekts ist keine bestimmte IAM-Rolle erforderlich. Sie können jedes Projekt auswählen, für das Ihnen eine Rolle zugewiesen wurde.
-
Projekt erstellen: Zum Erstellen eines Projekts benötigen Sie die Rolle „Projektersteller“ (
roles/resourcemanager.projectCreator), die die Berechtigungresourcemanager.projects.createenthält. Weitere Informationen zum Zuweisen von Rollen
-
So erstellen Sie ein Google Cloud Projekt:
gcloud projects create PROJECT_ID
Ersetzen Sie
PROJECT_IDdurch einen Namen für das Google Cloud Projekt, das Sie erstellen. -
Wählen Sie das von Ihnen erstellte Google Cloud Projekt aus:
gcloud config set project PROJECT_ID
Ersetzen Sie
PROJECT_IDdurch den Namen Ihres Projekts in Google Cloud .
-
Prüfen Sie, ob die Abrechnung für Ihr Google Cloud Projekt aktiviert ist.
Aktivieren Sie die erforderlichen APIs:
Rollen, die zum Aktivieren von APIs erforderlich sind
Zum Aktivieren von APIs benötigen Sie die IAM-Rolle „Service Usage-Administrator“ (
roles/serviceusage.serviceUsageAdmin), die die Berechtigungserviceusage.services.enableenthält. Weitere Informationen zum Zuweisen von Rollengcloud services enable container.googleapis.com
storage.googleapis.com compute.googleapis.com -
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init -
Erstellen Sie ein Google Cloud Projekt oder wählen Sie eines aus.
Rollen, die zum Auswählen oder Erstellen eines Projekts erforderlich sind
- Projekt auswählen: Für die Auswahl eines Projekts ist keine bestimmte IAM-Rolle erforderlich. Sie können jedes Projekt auswählen, für das Ihnen eine Rolle zugewiesen wurde.
-
Projekt erstellen: Zum Erstellen eines Projekts benötigen Sie die Rolle „Projektersteller“ (
roles/resourcemanager.projectCreator), die die Berechtigungresourcemanager.projects.createenthält. Weitere Informationen zum Zuweisen von Rollen
-
So erstellen Sie ein Google Cloud Projekt:
gcloud projects create PROJECT_ID
Ersetzen Sie
PROJECT_IDdurch einen Namen für das Google Cloud Projekt, das Sie erstellen. -
Wählen Sie das von Ihnen erstellte Google Cloud Projekt aus:
gcloud config set project PROJECT_ID
Ersetzen Sie
PROJECT_IDdurch den Namen Ihres Projekts in Google Cloud .
-
Prüfen Sie, ob die Abrechnung für Ihr Google Cloud Projekt aktiviert ist.
Aktivieren Sie die erforderlichen APIs:
Rollen, die zum Aktivieren von APIs erforderlich sind
Zum Aktivieren von APIs benötigen Sie die IAM-Rolle „Service Usage-Administrator“ (
roles/serviceusage.serviceUsageAdmin), die die Berechtigungserviceusage.services.enableenthält. Weitere Informationen zum Zuweisen von Rollengcloud services enable container.googleapis.com
storage.googleapis.com compute.googleapis.com -
Weisen Sie Ihrem Nutzerkonto Rollen zu. Führen Sie den folgenden Befehl für jede der folgenden IAM-Rollen einmal aus:
roles/container.admin, roles/iam.serviceAccountAdmin, roles/storage.admingcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
Ersetzen Sie Folgendes:
PROJECT_ID: Ihre Projekt-ID.USER_IDENTIFIER: Die Kennung für Ihr Nutzerkonto . Beispiel:myemail@example.comROLE: Die IAM-Rolle, die Sie Ihrem Nutzerkonto zuweisen.
- Erstellen Sie ein Hugging Face-Konto, falls Sie noch keines haben.
- Sie benötigen ein Hugging Face-Token.
- Prüfen Sie, ob Ihr Projekt ein ausreichendes Kontingent für B200- und H200-GPUs hat. Weitere Informationen finden Sie unter GPU-Kontingent planen und GPU-Kontingent.
Umgebung vorbereiten
In dieser Anleitung verwenden Sie Cloud Shell.
Rufen Sie die Google Cloud Console auf.
Klicken Sie oben im Google Cloud Console-Fenster auf den Button Cloud Shell aktivieren.
Legen Sie die folgenden Umgebungsvariablen fest:
export PROJECT_ID=$(gcloud config get project) export PROJECT_NUMBER=$(gcloud projects describe ${PROJECT_ID} --format="value(projectNumber)") export CONTROL_PLANE_REGION=CONTROL_PLANE_REGION export NODE_ZONE=NODE_ZONE export CLUSTER_NAME=CLUSTER_NAME export GPU_TYPE=GPU_TYPE export MACHINE_TYPE=MACHINE_TYPE export KSA_NAME=generic-ksa export NAMESPACE=default export RESERVATION=RESERVATION export LUSTRE_NAME=LUSTRE_NAME export HF_TOKEN=YOUR_HF_TOKEN export WANDB_API_KEY=YOUR_WANDB_API_KEYErsetzen Sie die folgenden Werte:
CLUSTER_NAME: Name Ihres GKE-Clusters.CONTROL_PLANE_REGION: die Compute Engine-Region für die GKE-Cluster-Steuerungsebene.NODE_ZONE: Die Zone für Ihre Knoten. Wählen Sie eine Zone aus, in der NVIDIA B200- oder H200-GPUs verfügbar sind.GPU_TYPE: der Beschleuniger, den Sie in der Compute Engine-Kapazitätsreservierung reserviert haben. Muss einer der folgenden Werte sein:nvidia-b200: NVIDIA B200 (180 GB)nvidia-h200-141gb: NVIDIA H200 (141 GB)
MACHINE_TYPE: der zu verwendende Maschinentyp:- Verwenden Sie für NVIDIA B200-GPUs (180 GB)
a4-highgpu-8goder höher. - Verwenden Sie für NVIDIA H200-GPUs (141 GB)
a3-ultragpu-8goder höher.
- Verwenden Sie für NVIDIA B200-GPUs (180 GB)
RESERVATION: Der Name Ihrer GPU-Reservierung.LUSTRE_NAME: der Name Ihrer Lustre-Instanz.YOUR_HF_TOKEN: Ihr Hugging Face-Token.YOUR_WANDB_API_KEY: Ihr Wandb-API-Schlüssel.
Erstellen Sie die folgenden Umgebungsvariablen für das Netzwerk:
export NETWORK="NETWORK-NAME" export GVNIC_NETWORK_PREFIX="GVNIC-NAME" export RDMA_NETWORK_PREFIX="RDMA-NAME"Ersetzen Sie die folgenden Werte:
NETWORK-NAME: Der Netzwerkname für GKE.GVNIC-NAME: Das Präfix für den Namen des gVNIC-Netzwerks. Sie können ein beliebiges Präfix verwenden.RDMA-NAME: Das Präfix für das RDMA-Netzwerk (Remote Direct Memory Access). Sie können ein beliebiges Präfix verwenden.
Infrastruktur einrichten
In diesem Abschnitt erstellen Sie VPC-Netzwerke und einen GKE-Cluster.
VPC-Netzwerk erstellen
VPC-Netzwerk für die gVNIC-Schnittstelle erstellen:
gcloud compute networks create ${NETWORK} --subnet-mode=auto gcloud compute networks create ${GVNIC_NETWORK_PREFIX}-net \ --subnet-mode=custom gcloud compute networks subnets create ${GVNIC_NETWORK_PREFIX}-sub \ --network=${GVNIC_NETWORK_PREFIX}-net \ --region=${CONTROL_PLANE_REGION} \ --range=192.168.0.0/24 gcloud compute firewall-rules create ${GVNIC_NETWORK_PREFIX}-internal \ --network=${GVNIC_NETWORK_PREFIX}-net \ --action=ALLOW \ --rules=tcp:0-65535,udp:0-65535,icmp \ --source-ranges=192.168.0.0/16Erstellen Sie ein VPC-Netzwerk und Subnetze für RDMA, das acht Subnetze für acht GPUs enthält:
gcloud compute networks create ${RDMA_NETWORK_PREFIX}-net \ --network-profile=${NODE_ZONE}-vpc-roce \ --subnet-mode=custom for N in $(seq 0 7); do gcloud compute networks subnets create ${RDMA_NETWORK_PREFIX}-sub-$N \ --network=${RDMA_NETWORK_PREFIX}-net \ --region=${CONTROL_PLANE_REGION} \ --range=192.168.$((N+1)).0/24 & done wait
GKE-Cluster erstellen
Sie können NeMo RL in einem GKE Standard-Cluster festlegen.
Standardcluster erstellen:
gcloud container clusters create ${CLUSTER_NAME} \ --location=${CONTROL_PLANE_REGION} \ --workload-pool=${PROJECT_ID}.svc.id.goog \ --enable-dataplane-v2 \ --enable-ip-alias \ --enable-multi-networking \ --addons=RayOperator,LustreCsiDriver \ --enable-legacy-lustre-port \ --machine-type=n2-highmem-80 \ --num-nodes=1 \ --min-nodes=1 \ --max-nodes=5 \ --enable-autoscaling \ --network=${NETWORK}Rufen Sie Anmeldedaten für Ihren Cluster ab:
gcloud container clusters get-credentials ${CLUSTER_NAME} \ --location=${CONTROL_PLANE_REGION}Erstellen Sie den GPU-Knotenpool:
gcloud container node-pools create gpu-pool \ --cluster=${CLUSTER_NAME} \ --location=${CONTROL_PLANE_REGION} \ --node-locations=${NODE_ZONE} \ --machine-type=${MACHINE_TYPE} \ --accelerator=type=${GPU_TYPE},count=8,gpu-driver-version=DEFAULT \ --reservation-affinity=specific \ --reservation=${RESERVATION} \ --enable-autoscaling \ --num-nodes=0 \ --total-max-nodes=2 \ --additional-node-network=network=${GVNIC_NETWORK_PREFIX}-net,subnetwork=${GVNIC_NETWORK_PREFIX}-sub \ --additional-node-network=network=${RDMA_NETWORK_PREFIX}-net,subnetwork=${RDMA_NETWORK_PREFIX}-sub-0 \ --additional-node-network=network=${RDMA_NETWORK_PREFIX}-net,subnetwork=${RDMA_NETWORK_PREFIX}-sub-1 \ --additional-node-network=network=${RDMA_NETWORK_PREFIX}-net,subnetwork=${RDMA_NETWORK_PREFIX}-sub-2 \ --additional-node-network=network=${RDMA_NETWORK_PREFIX}-net,subnetwork=${RDMA_NETWORK_PREFIX}-sub-3 \ --additional-node-network=network=${RDMA_NETWORK_PREFIX}-net,subnetwork=${RDMA_NETWORK_PREFIX}-sub-4 \ --additional-node-network=network=${RDMA_NETWORK_PREFIX}-net,subnetwork=${RDMA_NETWORK_PREFIX}-sub-5 \ --additional-node-network=network=${RDMA_NETWORK_PREFIX}-net,subnetwork=${RDMA_NETWORK_PREFIX}-sub-6 \ --additional-node-network=network=${RDMA_NETWORK_PREFIX}-net,subnetwork=${RDMA_NETWORK_PREFIX}-sub-7Installieren Sie das NCCL RDMA-Installationsprogramm:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/refs/heads/master/gpudirect-rdma/nccl-rdma-installer.yaml
Netzwerkzuordnungen konfigurieren
Speichern Sie das folgende Manifest als
network-mapping.yaml:Wenden Sie das Manifest an:
envsubst < network-mapping.yaml > network-mapping-updated.yaml kubectl apply -f network-mapping-updated.yaml
Speicher vorbereiten
In diesem Abschnitt erstellen Sie eine Managed Lustre-Instanz, die den leistungsstarken Speicher bereitstellt, der für Ihre RL-Arbeitslast erforderlich ist.
IP-Adressbereich für den Zugriff auf private Dienste zuweisen:
gcloud compute addresses create ${LUSTRE_NAME}-range \ --global --purpose=VPC_PEERING \ --prefix-length=20 --network=${NETWORK}Peering-Verbindung herstellen:
gcloud services vpc-peerings connect \ --service=servicenetworking.googleapis.com \ --ranges=${LUSTRE_NAME}-range \ --network=${NETWORK}Managed Lustre-Instanz erstellen:
gcloud lustre instances create ${LUSTRE_NAME} \ --per-unit-storage-throughput=500 \ --capacity-gib=18000 \ --filesystem=lustrefs \ --location=${NODE_ZONE} \ --network=projects/${PROJECT_ID}/global/networks/${NETWORK} \ --gke-support-enabledMit dem Managed Lustre-CSI-Treiber auf eine vorhandene Managed Lustre-Instanz zugreifen
Extrahieren Sie die IP-Adresse der Managed Lustre-Instanz.
export LUSTRE_IP=$(gcloud lustre instances describe ${LUSTRE_NAME} \ --location=$NODE_ZONE --format="value(mountPoint)" | awk -F'@' '{print $1}')lustre-pv.yaml-Manifest prüfenWenden Sie das Manifest an:
envsubst < lustre-pv.yaml > lustre-pv-updated.yaml kubectl apply -f lustre-pv-updated.yamllustre-pvc.yaml-Manifest prüfenWenden Sie das Manifest an:
kubectl apply -f lustre-pvc.yaml
RayCluster bereitstellen
In diesem Abschnitt klonen Sie das Beispiel-Repository, bereiten die Manifeste vor und stellen den Ray-Cluster bereit:
Klonen Sie das Beispiel-Repository:
git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples.git cd kubernetes-engine-samplesWechseln Sie zum Arbeitsverzeichnis:
cd ai-ml/nemo-rl-on-gke/nemoRLPrüfen Sie das
values.yaml-Manifest:Ersetzen Sie
NCCL_TUNER_CONFIG_PATHdurch einen der folgenden Werte, je nachdem, welchen Beschleuniger Sie in diesem Tutorial verwenden:- NVIDIA B200 (180 GB):
/usr/local/gib/configs/tuner_config_a4.txtpb - NVIDIA H200 (141 GB):
/usr/local/gib/configs/tuner_config_a3u.txtpb
In diesem Manifest verwaltet der Head-Knoten den Job und hostet das Ray-Dashboard. Die Trainingsjobs werden von den Worker-Knoten ausgeführt.
- NVIDIA B200 (180 GB):
Ray-Cluster bereitstellen:
export REPLICA_COUNT=2 helm install ray-cluster . \ --set additionalWorkerGroups.worker-grp-0.replicas=$REPLICA_COUNTIn dieser Anleitung verwenden Sie zwei Worker-Knoten. Wenn Sie die Anzahl der Worker-Knoten ändern möchten, ändern Sie den Wert von
REPLICA_COUNT.Prüfen Sie, ob die Worker- und Head-Knoten ausgeführt werden:
kubectl get podsDie Ausgabe sieht etwa so aus:
NAME READY STATUS RESTARTS AGE ray-cluster-kuberay-head-sw7dp 3/3 Running 0 33h ray-cluster-kuberay-worker-grp-0-worker-gkbxw 3/3 Running 0 33h ray-cluster-kuberay-worker-grp-0-worker-kdg62 3/3 Running 0 33hPrüfen Sie, ob der Ray-Cluster ausgeführt wird:
kubectl ray get clusterDie Ausgabe sieht etwa so aus:
NAME NAMESPACE DESIRED WORKERS AVAILABLE WORKERS CPUS GPUS TPUS MEMORY CONDITION STATUS AGE ray-cluster-kuberay default 2 2 618 17 0 1573741824k RayClusterProvisioned ready 33h
GRPO-Job starten
Sobald Ihr Ray-Cluster bereit ist, können Sie einen Ray-Job an Ihren laufenden Ray-Cluster in GKE senden. NeMo RL lädt das Modell automatisch während der Ausführung des RL-Trainingsjobs herunter.
Wenn Sie einen Ray-Job senden möchten, starten Sie eine interaktive Sitzung, um den Job auszuführen.
Führen Sie diesen Befehl aus, um eine lokale Verbindung zu Ihrem Ray-Cluster herzustellen:
kubectl ray session ray-cluster-kuberayMit diesem Befehl wird die Portweiterleitung zwischen Ihrem lokalen Computer und dem Ray-Head-Knoten in Ihrem GKE-Cluster initiiert. Beachten Sie, dass Ihr Terminal belegt ist, solange diese Sitzung aktiv ist. Öffnen Sie eine separate Terminalinstanz, um fortzufahren.
Bearbeiten Sie die Datei
gemma3-27b-gsm8k.sh.Ersetzen Sie die folgenden Werte in der Datei
gemma3-27b-gsm8k.sh:YOUR_WANDB_API_KEY: Ihr WandB-API-Schlüssel.YOUR_HF_TOKEN: Ihr Hugging Face-Token.
In dieser Datei sehen Sie die Konfiguration zum Ausführen eines Jobs mit dem Modell „gemma3-27b-it“ für den GSM8k-Datensatz. Für die GRPO-Trainingspipeline werden in diesem Skript die folgenden Parameter definiert:
num_prompts_per_step: 16undnum_generations_per_prompt: 32: Das Modell „Gemma3-27b-it“ generiert für jeden Prompt eine große Gruppe von Antworten. In dieser Konfiguration generiert das Modell insgesamt 512 Antworten (16 × 32 = 512).policy.generation.colocated.enabled=False: Mit diesem Parameter wird die Funktion für die gemeinsame Generierung deaktiviert. Das bedeutet, dass das Modell keine Antworten im selben Knoten wie der Trainingsprozess generiert. Beim Standard-RL werden sowohl Training als auch Generierung von denselben GPUs übernommen. Bei dieser NeMo RL-Einrichtung weisen Sie bestimmte Knoten (die mit dem Parameterpolicy.generation.colocated.resourcesverwaltet werden) ausschließlich der vLLM-Inferenz zu, während sich der Rest des Clusters auf die rechenintensive Trainingsmathematik konzentriert. Durch die Trennung dieser Arbeitslasten verhindern Sie Ressourcenkonflikte zwischen den speicherintensiven Trainingspuffern und den rechenintensiven Inferenzarbeitslasten.
Führen Sie den folgenden Befehl aus, um den Job zu senden:
bash gemma3-27b-it/gemma3-27b-gsm8k.shWährend der Job ausgeführt wird, werden in der Ausgabe die Trainingsergebnisse, das Timing und die Leistungsmesswerte angezeigt.
Integrität des GRPO-Jobs überwachen
Nachdem Ray den Job abgeschlossen hat, speichert NeMo RL die Prüfpunkte im konfigurierten Pfad.
Wenn Sie die Ausgabe des GRPO-Jobs prüfen möchten, stellen Sie eine SSH-Verbindung zum
ray-head-Container her:kubectl exec -it $(kubectl get pods -l ray.io/node-type=head -o name) -c ray-head -- bashInstallieren Sie das apt-tree-Dienstprogramm im Terminal des
ray-head-Containers:apt update && apt install -y treeDie Ausgabe sieht etwa so aus:
root@ray-cluster-kuberay-worker-grp-0-worker-gkbxw:/opt/nemo-rl# tree /data/nemo_rl_gemma3_27b_3_17/ /data/nemo_rl_gemma3_27b_3_17/ `-- step_10 |-- config.yaml |-- policy | |-- optimizer | | |-- __0_0.distcp | | |-- __10_0.distcp | | |-- __11_0.distcp | | |-- __12_0.distcp | | |-- __13_0.distcp | | |-- __14_0.distcp | | |-- __15_0.distcp | | |-- __1_0.distcp | | |-- __2_0.distcp | | |-- __3_0.distcp | | |-- __4_0.distcp | | |-- __5_0.distcp | | |-- __6_0.distcp | | |-- __7_0.distcp | | |-- __8_0.distcp | | `-- __9_0.distcp | |-- tokenizer | | |-- chat_template.jinja | | |-- special_tokens_map.json | | |-- tokenizer.json | | `-- tokenizer_config.json | `-- weights | |-- __0_0.distcp | |-- __10_0.distcp | |-- __11_0.distcp | |-- __12_0.distcp | |-- __13_0.distcp | |-- __14_0.distcp | |-- __15_0.distcp | |-- __1_0.distcp | |-- __2_0.distcp | |-- __3_0.distcp | |-- __4_0.distcp | |-- __5_0.distcp | |-- __6_0.distcp | |-- __7_0.distcp | |-- __8_0.distcp | `-- __9_0.distcp |-- train_dataloader.pt `-- training_info.json 6 directories, 39 files ```
Bereinigen
Löschen Sie die Ressourcen, um Gebühren zu vermeiden:
helm delete ray-cluster
gcloud container clusters delete ${CLUSTER_NAME} \
--location=${CONTROL_PLANE_REGION} \
--quiet
gcloud lustre instances delete ${LUSTRE_NAME} --location=${NODE_ZONE} --quiet
gcloud services vpc-peerings delete \
--service=servicenetworking.googleapis.com \
--network=${NETWORK}
gcloud compute addresses delete ${LUSTRE_NAME}-range --global --quiet
gcloud compute firewall-rules delete ${GVNIC_NETWORK_PREFIX}-internal --quiet
gcloud compute networks subnets delete ${GVNIC_NETWORK_PREFIX}-sub \
--region=${CONTROL_PLANE_REGION} --quiet
gcloud compute networks delete ${GVNIC_NETWORK_PREFIX}-net --quiet
for N in $(seq 0 7); do
gcloud compute networks subnets delete ${RDMA_NETWORK_PREFIX}-sub-$N \
--region=${CONTROL_PLANE_REGION} --quiet &
done
wait
gcloud compute networks delete ${RDMA_NETWORK_PREFIX}-net --quiet
gcloud compute networks delete ${NETWORK} --quiet