Ce tutoriel explique comment affiner un grand modèle de langage (LLM) Gemma 4 sur un cluster Google Kubernetes Engine (GKE) à hôte unique et GPU multiples sur Google Cloud. Ce cluster utilise une seule instance de machine virtuelle (VM) A4 avec huit GPU NVIDIA B200 associés.
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 le logiciel nécessaire préinstallé.
- 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 4 à l'aide de Hugging Face.
Préparez votre environnement.
Créez et déployez un cluster GKE A4.
Ajustez le modèle Gemma 4 à 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
Activez les API requises, si certaines ne le sont pas déjà :
Rôles requis pour activer les API
Pour activer les API, vous devez disposer de l'autorisation
serviceusage.services.enable. Si vous avez créé le projet, vous disposez probablement déjà de cette autorisation grâce au rôle Propriétaire (roles/owner). Sinon, vous pouvez obtenir cette autorisation grâce au rôle Administrateur Service Usage (roles/serviceusage.serviceUsageAdmin). 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 Activez le compte de service par défaut pour votre projet Google Cloud :
export PROJECT_NUMBER="$(gcloud projects describe "YOUR_PROJECT_ID" --format "value(project_number)")" gcloud iam service-accounts enable "${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \ --project=YOUR_PROJECT_ID
Attribuez les rôles dont le compte de service par défaut a besoin pour exécuter la charge de travail d'affinage :
ROLES=("roles/aiplatform.user" "roles/container.developer" "roles/storage.objectUser") for role in "${ROLES[@]}"; do gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \ --member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \ --role="${role}" done unset ROLES
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 \ --project=YOUR_PROJECT_ID
Pour obtenir les autorisations nécessaires pour suivre ce tutoriel, demandez à votre administrateur de vous accorder les rôles IAM suivants sur votre projet :
- Administrateur Kubernetes Engine (
roles/container.admin) - Administrateur de Compute (
roles/compute.admin) - Administrateur de l'espace de stockage (
roles/storage.admin) - Administrateur Artifact Registry (
roles/artifactregistry.admin) - Éditeur Cloud Build (
roles/cloudbuild.builds.editor) -
Utilisateur du compte de service (
roles/iam.serviceAccountUser) - Administrateur de compte de service (
roles/iam.serviceAccountAdmin) - Administrateur de projet IAM (
roles/resourcemanager.projectIamAdmin) - Administrateur Service Usage (
roles/serviceusage.serviceUsageAdmin)
Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.
Accéder à Gemma 4 à l'aide de Hugging Face
Pour utiliser Hugging Face afin d'accéder à Gemma 4, 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 en aurez besoin 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 :
YOUR_PROJECT_ID : ID du Google Cloud projet dans lequel vous souhaitez créer le cluster GKE.
YOUR_CLUSTER_NAME : nom du cluster GKE à créer.
YOUR_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.
YOUR_RESERVATION_NAME : identifiant de votre capacité réservée.
YOUR_HF_TOKEN : jeton d'accès Hugging Face que vous avez créé dans la section précédente.
YOUR_ARTIFACT_REGISTRY_LOCATION : Google Cloud région dans laquelle vous souhaitez créer votre dépôt Artifact Registry. Pour minimiser la latence d'extraction des images, nous vous recommandons d'utiliser la même région que celle que vous avez utilisée pour YOUR_REGION.
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 le 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_gemma4_config.yaml. Ce fichier de configuration indique à Hugging Face Accelerate de répartir le job d'optimisation sur les huit GPU locaux de votre hôte unique à l'aide de FSDP :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 :
Comme 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 :
Une fois les pods en cours d'exécution, vérifiez les journaux du job :
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 deux heures et 30 minutes sur le cluster A4 spécifié.
Effectuer un nettoyage
Pour éviter des frais supplémentaires, supprimez les ressources créées au cours de ce tutoriel.
Supprimer vos ressources
Pour supprimer votre job d'affinage, exécutez la commande suivante :
Pour supprimer votre cluster GKE, exécutez la commande suivante :