Ce tutoriel explique comment affiner un grand modèle de langage (LLM) Gemma 3 sur un cluster GKE à nœuds et GPU multiples sur Google Cloud. Ce cluster utilise une instance de machine virtuelle (VM) A4 dotée de huit GPU NVIDIA B200.
Les deux principaux processus décrits dans ce tutoriel sont les suivants :
- Déployez un cluster GKE hautes performances à l'aide de GKE Autopilot. Dans le cadre de ce déploiement, vous allez créer une image de VM personnalisée avec les logiciels nécessaires préinstallés.
- Une fois le cluster déployé, vous exécutez un job d'affinage distribué à l'aide de l'ensemble de scripts qui accompagnent ce tutoriel. Le job utilise la bibliothèque Hugging Face Accelerate.
Ce tutoriel est destiné aux ingénieurs en machine learning (ML), aux chercheurs, aux administrateurs et opérateurs de plate-forme, ainsi qu'aux spécialistes des données et de l'IA qui souhaitent déployer des clusters GKE sur Google Cloud pour entraîner des LLM.
Objectifs
Accédez au modèle Gemma 3 à l'aide de Hugging Face.
Préparez votre environnement.
Créez et déployez un cluster GKE A4.
Ajustez le modèle Gemma 3 à l'aide de la bibliothèque Hugging Face Accelerate avec le parallélisme des données entièrement segmentées (FSDP).
surveiller votre job ;
Effectuer un nettoyage.
Coûts
Dans ce document, vous utilisez les composants facturables suivants de Google Cloud :
Pour obtenir une estimation des coûts en fonction de votre utilisation prévue, utilisez le simulateur de coût.
Avant de commencer
- Connectez-vous à votre compte Google Cloud . Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits sans frais pour exécuter, tester et déployer des charges de travail.
-
Installez la Google Cloud CLI.
-
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
-
Pour initialiser la gcloud CLI, exécutez la commande suivante :
gcloud init -
Créez ou sélectionnez un projet Google Cloud .
Rôles requis pour sélectionner ou créer un projet
- Sélectionnez un projet : la sélection d'un projet ne nécessite pas de rôle IAM spécifique. Vous pouvez sélectionner n'importe quel projet pour lequel un rôle vous a été attribué.
-
Créer un projet : pour créer un projet, vous devez disposer du rôle Créateur de projet (
roles/resourcemanager.projectCreator), qui contient l'autorisationresourcemanager.projects.create. Découvrez comment attribuer des rôles.
-
Créez un projet Google Cloud :
gcloud projects create PROJECT_ID
Remplacez
PROJECT_IDpar le nom du projet Google Cloud que vous créez. -
Sélectionnez le projet Google Cloud que vous avez créé :
gcloud config set project PROJECT_ID
Remplacez
PROJECT_IDpar le nom de votre projet Google Cloud .
-
Vérifiez que la facturation est activée pour votre projet Google Cloud .
Activez les API requises :
Rôles requis pour activer les API
Pour activer les API, vous avez besoin du rôle IAM Administrateur Service Usage (
roles/serviceusage.serviceUsageAdmin), qui contient l'autorisationserviceusage.services.enable. Découvrez comment attribuer des rôles.gcloud services enable compute.googleapis.com
container.googleapis.com file.googleapis.com logging.googleapis.com cloudresourcemanager.googleapis.com servicenetworking.googleapis.com -
Installez la Google Cloud CLI.
-
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
-
Pour initialiser la gcloud CLI, exécutez la commande suivante :
gcloud init -
Créez ou sélectionnez un projet Google Cloud .
Rôles requis pour sélectionner ou créer un projet
- Sélectionnez un projet : la sélection d'un projet ne nécessite pas de rôle IAM spécifique. Vous pouvez sélectionner n'importe quel projet pour lequel un rôle vous a été attribué.
-
Créer un projet : pour créer un projet, vous devez disposer du rôle Créateur de projet (
roles/resourcemanager.projectCreator), qui contient l'autorisationresourcemanager.projects.create. Découvrez comment attribuer des rôles.
-
Créez un projet Google Cloud :
gcloud projects create PROJECT_ID
Remplacez
PROJECT_IDpar le nom du projet Google Cloud que vous créez. -
Sélectionnez le projet Google Cloud que vous avez créé :
gcloud config set project PROJECT_ID
Remplacez
PROJECT_IDpar le nom de votre projet Google Cloud .
-
Vérifiez que la facturation est activée pour votre projet Google Cloud .
Activez les API requises :
Rôles requis pour activer les API
Pour activer les API, vous avez besoin du rôle IAM Administrateur Service Usage (
roles/serviceusage.serviceUsageAdmin), qui contient l'autorisationserviceusage.services.enable. Découvrez comment attribuer des rôles.gcloud services enable compute.googleapis.com
container.googleapis.com file.googleapis.com logging.googleapis.com cloudresourcemanager.googleapis.com servicenetworking.googleapis.com -
Attribuez des rôles à votre compte utilisateur. Exécutez la commande suivante une fois pour chacun des rôles IAM suivants :
roles/compute.admin, roles/iam.serviceAccountUser, roles/cloudbuild.builds.editor, roles/artifactregistry.admin, roles/storage.admin, roles/serviceusage.serviceUsageAdmingcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
Remplacez les éléments suivants :
PROJECT_ID: ID de votre projetUSER_IDENTIFIER: identifiant de votre compte utilisateur . Par exemple,myemail@example.com.ROLE: rôle IAM que vous accordez à votre compte utilisateur.
- Activez le compte de service par défaut pour votre projet Google Cloud :
export PROJECT_NUMBER="$(gcloud projects describe "PROJECT_ID" --format "value(project_number)")" gcloud iam service-accounts enable "${PROJECT_NUMBER}-compute@developer.gserviceaccount.com \ --project=PROJECT_ID
- Attribuez le rôle Éditeur (
roles/editor) au compte de service par défaut :gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role=roles/editor
- Créez des identifiants d'authentification locaux pour votre compte utilisateur :
gcloud auth application-default login
- Activez OS Login pour votre projet :
gcloud compute project-info add-metadata --metadata=enable-oslogin=TRUE
- Connectez-vous à votre compte Hugging Face ou créez-en un.
Accéder à Gemma 3 à l'aide de Hugging Face
Pour utiliser Hugging Face afin d'accéder à Gemma 3, procédez comme suit :
- Se connecter à Hugging Face
- Créez un jeton d'accès
writeHugging Face.
Cliquez sur Votre profil > Paramètres > Jetons d'accès > + Créer un jeton. - Copiez et enregistrez la valeur du jeton
write access. Vous l'utiliserez plus loin dans ce tutoriel.
Préparer votre environnement
Pour préparer votre environnement, définissez les éléments suivants :
Remplacez les éléments suivants :
PROJECT_ID: nom du Google Cloud projet dans lequel vous souhaitez créer le cluster GKE.RESERVATION: identifiant de votre capacité réservée.CLUSTER_NAME: nom du cluster GKE à créer.CLUSTER_REGION: région dans laquelle vous souhaitez créer votre cluster GKE. Vous ne pouvez créer le cluster que dans la région où se trouve votre réservation.HF_TOKEN: jeton d'accès Hugging Face que vous avez créé dans la section précédente.ARTIFACT_REPO_LOCATION: emplacement où vous souhaitez créer votre dépôt Artifact Registry.
Créer un cluster GKE en mode Autopilot
Pour créer un cluster GKE en mode Autopilot, exécutez la commande suivante :
La création du cluster GKE peut prendre un certain temps. Pour vérifier que Google Cloud a terminé de créer votre cluster, accédez à Clusters Kubernetes dans la console Google Cloud .
Créer un secret Kubernetes pour les identifiants Hugging Face
Pour créer un secret Kubernetes pour les identifiants Hugging Face, procédez comme suit :
Configurez
kubectlpour communiquer avec votre cluster GKE :Créez un secret Kubernetes pour stocker votre jeton Hugging Face :
Préparer votre charge de travail
Pour préparer votre charge de travail, procédez comme suit :
Créer des scripts de charge de travail
Pour créer les scripts utilisés par votre charge de travail d'affinage, procédez comme suit :
Créez un répertoire pour les scripts de charge de travail. Utilisez ce répertoire comme répertoire de travail.
Créez le fichier
cloudbuild.yamlpour utiliser Google Cloud Build. Ce fichier crée votre conteneur de charge de travail et le stocke dans Artifact Registry :Créez un fichier
Dockerfilepour exécuter le job d'affinage :Créez le fichier
accel_fsdp_gemma3_config.yaml. Ce fichier de configuration indique à Hugging Face Accelerate de répartir le job de réglage sur plusieurs GPU.Créez le fichier
finetune.yaml:Créez le fichier
finetune.py:
Créer un conteneur d'affinage à l'aide de Docker et Cloud Build
Créez un dépôt Docker Artifact Registry :
Dans le répertoire
llm-finetuning-gemmaque vous avez créé lors d'une étape précédente, exécutez la commande suivante pour créer l'image d'affinage et la transférer vers Artifact Registry.Exportez l'URL de l'image. Vous l'utiliserez lors d'une prochaine étape de ce tutoriel :
Démarrer votre charge de travail d'affinage
Pour démarrer votre charge de travail d'affinage :
Appliquez le fichier manifeste d'affinage pour créer le job d'affinage :
Étant donné que vous utilisez des clusters en mode GKE Autopilot, le démarrage de votre nœud compatible avec les GPU peut prendre quelques minutes.
Surveillez le job en exécutant la commande suivante :
Vérifiez les journaux du job en exécutant la commande suivante :
La ressource du job télécharge les données du modèle, puis affine le modèle sur les huit GPU. Le téléchargement prend environ cinq minutes. Une fois le téléchargement terminé, le processus d'affinage prend environ deux heures et demie.
Surveiller votre charge de travail
Vous pouvez surveiller l'utilisation des GPU dans votre cluster GKE pour vérifier que votre job de réglage fin s'exécute efficacement. Pour ce faire, ouvrez le lien suivant dans votre navigateur :
Lorsque vous surveillez votre charge de travail, vous pouvez voir les éléments suivants :
- Utilisation des GPU : pour une tâche d'affinage saine, vous pouvez vous attendre à ce que l'utilisation de vos huit GPU augmente et se stabilise à un niveau élevé tout au long de votre entraînement.
- Durée du job : l'exécution du job devrait prendre environ 10 minutes sur le cluster A4 spécifié.
Effectuer un nettoyage
Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.
Supprimer vos ressources
Pour supprimer votre job d'affinage, exécutez la commande suivante :
Pour supprimer votre cluster GKE, exécutez la commande suivante :
Supprimer votre projet
Supprimer un projet Google Cloud :
gcloud projects delete PROJECT_ID