Tous les produits
Search
Centre de documentation

Auto Scaling:Utiliser des instances à la demande pour réduire les coûts de l'affinage de grands modèles

Dernière mise à jour :Aug 18, 2026

Un groupe de mise à l'échelle provisionne automatiquement des instances à la demande pour l'affinage de grands modèles et garantit la continuité de l'entraînement en créant une nouvelle instance et en reprenant l'exécution depuis le dernier point de contrôle lorsqu'une instance à la demande fait l'objet d'une interruption et récupération.

Présentation de la solution

Cette solution applique une stratégie privilégiant les instances à la demande via un groupe de mise à l'échelle et utilise Object Storage Service (OSS) pour persister les points de contrôle. Pendant le processus d'entraînement :

  1. Priorité aux instances à la demande : Le groupe de mise à l'échelle privilégie les instances à la demande pour les tâches d'entraînement et utilise OSS pour stocker les fichiers de point de contrôle.

  2. En cas d'interruption et de récupération d'une instance à la demande : Le groupe de mise à l'échelle tente d'abord de provisionner une instance à la demande à partir de l'inventaire disponible dans d'autres zones de disponibilité. Si l'inventaire d'instances à la demande est insuffisant, il provisionne automatiquement une instance au paiement à l'utilisation et reprend l'entraînement depuis le dernier point de contrôle.

  3. Après la restauration de l'inventaire d'instances à la demande : Le groupe de mise à l'échelle remplace automatiquement l'instance au paiement à l'utilisation par une instance à la demande et reprend l'entraînement depuis le dernier point de contrôle.

image

Remarque

Si vous êtes sensible aux coûts et pouvez tolérer des temps d'entraînement plus longs, vous pouvez configurer le groupe de mise à l'échelle pour utiliser uniquement des instances à la demande. Dans cette configuration, l'entraînement est mis en pause lorsque les instances à la demande ne sont pas disponibles et reprend automatiquement lorsque l'inventaire est restauré, maximisant ainsi vos économies de coûts. En savoir plus sur la combinaison de groupes de mise à l'échelle et d'instances à la demande.

Comparaison des coûts

Important

La comparaison des coûts suivante est fournie à titre indicatif uniquement. Les économies réelles peuvent varier en fonction des conditions d'exécution.

Supposons un temps d'entraînement total de 12 heures, un prix d'instance à la demande de 3,5/h et un prix d'instance au paiement à l'utilisation de 10/h. La comparaison des coûts est la suivante.

Mode

Instances à la demande uniquement

Hybride (à la demande et paiement à l'utilisation)

Paiement à l'utilisation uniquement

Description

Lorsqu'une instance à la demande est interrompue et récupérée, l'entraînement est mis en pause. Une nouvelle instance à la demande est lancée automatiquement pour poursuivre l'entraînement après la restauration de la capacité.

Supposons que sur les 12 heures totales d'entraînement, 8 heures soient effectuées sur des instances à la demande et 4 heures sur des instances au paiement à l'utilisation en raison d'interruptions.

Tout l'entraînement est effectué sur des instances au paiement à l'utilisation.

Coût

12h * 3,5/h = 42

8h 3,5/h + 4h 10/h = 68

12h * 10/h = 120

Économies par rapport au paiement à l'utilisation uniquement

65 %

43,33 %

0 %

Procédure

  1. Créez une image personnalisée avec l'environnement d'entraînement de base.

    Cette image sert d'image de lancement pour les instances du groupe de mise à l'échelle. Elle inclut un script de démarrage qui reprend automatiquement l'entraînement, garantissant que les nouvelles instances peuvent démarrer rapidement la tâche et s'exécuter sans intervention manuelle.

  2. Créez et configurez un groupe de mise à l'échelle.

    Le groupe de mise à l'échelle crée automatiquement de nouvelles instances à la demande ou au paiement à l'utilisation après une interruption, garantissant la poursuite de la tâche d'entraînement.

  3. Démarrez la tâche d'entraînement.

    L'activation du groupe de mise à l'échelle déclenche un événement de mise à l'échelle horizontale, créant une instance qui démarre automatiquement la tâche d'entraînement.

  4. Simulez une interruption (vérification).

    Libérez manuellement une instance pour simuler un scénario d'interruption ou de récupération. Vérifiez qu'une nouvelle instance est lancée et que la tâche d'entraînement reprend automatiquement afin de garantir la stabilité et la fiabilité.

1. Créez une image d'entraînement personnalisée

Cette rubrique explique comment effectuer un affinage par autocognition sur le modèle DeepSeek-R1-Distill-Qwen-7B en utilisant le framework d'entraînement Swift sur une configuration mono-machine et mono-GPU.

Commencez par créer une instance avec l'environnement d'entraînement et les dépendances requis, puis créez une image personnalisée à partir de celle-ci pour servir d'image de lancement du groupe de mise à l'échelle. L'image inclut un script d'entraînement automatique et un service de démarrage au boot pour automatiser le flux de travail. La figure suivante illustre l'architecture.

image

Les composants clés incluent :

  • Dépendances de l'environnement d'entraînement de base : Inclut le pilote GPU, CUDA et les dépendances Python pertinentes, qui varient selon le framework d'entraînement.

  • Script d'entraînement automatique : Ce script doit vérifier automatiquement s'il faut reprendre depuis le dernier point de contrôle et si l'entraînement est terminé.

  • Montage automatique du bucket au démarrage : Lorsque le script d'entraînement démarre, il lit les poids du modèle, les jeux de données et les fichiers de point de contrôle générés depuis le bucket OSS.

  • Service de démarrage au boot : Ce service garantit que le script d'entraînement s'exécute automatiquement après le démarrage de l'instance, en lisant les fichiers nécessaires depuis le bucket pour commencer ou poursuivre l'entraînement.

Suivez ces étapes pour créer l'image.

1,1 Créez une instance et configurez l'environnement

Cette instance sert de modèle pour créer une image personnalisée. Par la suite, le groupe de mise à l'échelle utilisera cette image pour créer automatiquement de nouvelles instances.

  1. Accédez à la console ECS pour créer une instance GPU.

    Commencez par créer une instance GPU au paiement à l'utilisation pour configurer l'environnement de base. Ce tutoriel utilise une instance ecs.gn7i-c8g1.2xlarge dans la zone de disponibilité J de la région Chine (Hangzhou). Configurez l'instance comme suit :

    1. Billing Method : Paiement à l'utilisation.

    ② :Region. Chine (Hangzhou).

    ③④ : Network and Zone. Sélectionnez un VPC et un vSwitch. S'ils n'existent pas, vous pouvez les créer en suivant les instructions à l'écran.

    ⑤⑥ : Sélectionnez le type d'instance. Sélectionnez ecs.gn7i-c8g1,2xlarge.

    ⑦⑧⑨ : Images : Ubuntu 22.04 64 bits.

    ⑩ : Installer automatiquement le pilote GPU. Sélectionnez les versions : CUDA version 12.4.1, Driver version 550.127.08 et CUDNN version 9.2.0.82.

    ⑪ : System Disk > Capacity. 60 GiB.

    ⑫⑬⑭ : Attribuer une adresse IPv4 publique pour permettre à l'instance d'accéder à Internet et de télécharger les fichiers de modèle. Pour Bandwidth Billing Method, sélectionnez Pay-by-traffic. Pour Maximum Bandwidth, sélectionnez 100 Mbps.

    ⑮⑯⑰ : Créez un nouveau groupe de sécurité de base. Ouvrez au moins les ports SSH (TCP : 22) et ICMP (IPv4) pour autoriser les connexions à distance.

    ⑱⑲⑳ : Logon Credential. Ces identifiants sont utilisés pour se connecter à l'instance. Vous pouvez sélectionner une paire de clés ou un mot de passe. Suivez les invites à l'écran pour terminer la configuration.

    21 :Instance Name. Spécifiez un nom pour l'instance afin de faciliter sa mémorisation et sa recherche. Cette rubrique utilise ess-lora-deepseek7b-template à titre d'exemple.

    Une fois la configuration terminée, cliquez sur Confirm Order et attendez la création de l'instance.

  2. Une fois l'instance créée, connectez-vous-y et attendez l'installation du pilote GPU.

    1. Accédez à Console ECS - Instances.

    2. Recherchez l'instance que vous avez créée à l'étape précédente et cliquez sur Connect dans la colonne Actions. Connectez-vous à l'instance à l'aide de Workbench et connectez-vous comme indiqué.

      Si vous ne trouvez pas l'instance, votre région actuelle peut ne pas correspondre à la région de l'instance. Vous pouvez changer de région dans le coin supérieur gauche.
      Si l'instance est arrêtée, actualisez la page et attendez qu'elle démarre.
    3. Après vous être connecté à l'instance, attendez la fin de l'installation du pilote GPU. Après l'installation, vous serez invité à vous reconnecter.

      Si l'interface se fige, essayez d'actualiser la page et de vous reconnecter à l'instance.
      Welcome to Alibaba Cloud Elastic Compute Service !
      
      Last login: Tue Mar 18 21:12:39 2025 from xxx
        % Total    % Received % Xferd  Average Speed   Time    Time     Current
                                       Dload  Upload   Total   Spent    Left  Speed
      100    21  100    21    0     0    875      0 --:--:-- --:--:-- --:--:--   913
      
      Driver-xxx installing, it takes 0 minutes. Remaining installation time 11 to 15 minutes!
      [cuda-12.4.1. Installing, it tasks 2 to 5 minutes. Remaining installation time 9 to 12 minutes!

      Je ne vois pas cette page. Comment puis-je vérifier l'installation ?

      Si cette interface n'apparaît pas après votre connexion à l'instance, le pilote est peut-être déjà installé. Vous pouvez exécuter la commande suivante pour confirmer l'installation du pilote :

      nvidia-smi

      Si la sortie suivante apparaît, l'installation est terminée.

      root@ixxx:~# nvidia-smi
      Wed Mar 26 09:40:48 2025
      +-----------------------------------------------------------------------------------------+
      | NVIDIA-SMI 550.127.08    Driver Version: 550.127.08    CUDA Version: 12.4              |
      |-------------------------------------------+------------------------+-------------------|
      | GPU  Name        Persistence-M |  Bus-Id        Dis.A | Volatile Uncorr. ECC |
      | Fan  Temp  Perf    Pwr:Usage/Cap |                     | Memory-Usage | GPU-Util  Compute M. |
      |===========================================================================================|
      |  0   NVIDIA A10         On |  00000000:00:07.0 Off |                    0 |
      |  0%   27C    P8       9W / 150W |      1MiB / 23028MiB |      0%      Default |
      +-------------------------------------------+------------------------+-------------------+
      
      +-----------------------------------------------------------------------------------------+
      | Processes:                                                                               |
      |  GPU   GI   CI     PID   Type   Process name                         GPU Memory         |
      |        ID   ID                                                        Usage              |
      |=========================================================================================|
      |  No running processes found                                                              |
      +-----------------------------------------------------------------------------------------+

      Si cette sortie n'apparaît pas, le pilote n'est pas installé ou présente un problème. Nous vous recommandons de créer une nouvelle instance et de sélectionner Installer automatiquement le pilote GPU lors de la configuration.

      Pour installer manuellement le pilote, consultez Installer manuellement le pilote Tesla sur une instance Linux optimisée pour le calcul accéléré par GPU .
  3. Installez les dépendances Python.

    Exécutez les commandes suivantes pour installer les dépendances requises pour l'entraînement.

    L'image Ubuntu 22.04 64-bit utilisée dans ce tutoriel inclut déjà Python 3.10, donc aucune installation séparée de Python n'est nécessaire.
    # The Ubuntu 22.04 image includes Python 3.10, so no extra installation is needed.
    python3 -m pip install --upgrade pip
    # Switch to the Alibaba Cloud internal PyPI mirror.
    pip config set global.index-url http://mirrors.cloud.aliyuncs.com/pypi/simple/
    
    pip install modelscope==1.22.3
    pip install openai==1.61.0
    pip install tqdm==4.67.1
    pip install "vllm>=0.5.1" -U
    pip install "lmdeploy>=0.5,<0.6.5" -U --no-deps
    pip install autoawq -U --no-deps
    pip install auto_gptq optimum bitsandbytes -U
    pip install ms-swift[all]
    pip install timm -U
    pip install deepspeed==0.14.* -U
    pip install qwen_vl_utils decord librosa pyav icecream -U
En attendant l'installation des dépendances, vous pouvez cliquer sur l'icône image dans le coin supérieur droit pour ouvrir un terminal multiple et procéder simultanément à l'étape 1,2.

1,2 Créez et montez un bucket OSS

Créez un bucket dans OSS et montez-le sur l'instance ECS. Ce bucket stocke les fichiers de poids du modèle, les jeux de données et les points de contrôle générés pendant l'entraînement.

  1. Accédez à la console OSS pour créer un bucket.

    Voici les paramètres de configuration clés. Conservez les valeurs par défaut pour tous les paramètres non mentionnés.

    2. Bucket. Vous utiliserez ce nom de bucket lors du montage ultérieur du bucket.

    3. Region. Sélectionnez Spécifique à la région. La région doit être la même que celle de l'instance ECS. Dans cet exemple, la région est China (Hangzhou).

    Les instances ECS peuvent accéder aux buckets OSS dans la même région via le réseau interne sans frais de trafic. Pour plus d'informations, consultez Accéder aux ressources OSS depuis une instance ECS via un réseau interne.
  2. Créez et attachez un rôle RAM.

    Un rôle RAM autorise l'instance ECS à accéder à votre bucket OSS. Pour créer et attacher un rôle RAM, suivez ces étapes :

    1. Dans la console RAM

      Dans la boîte de dialogue de confirmation Select Scaling Configuration, cliquez sur OK.

      Dans la boîte de dialogue de confirmation Enable Scaling Group, cliquez sur OK pour activer le groupe de scaling.

3. Démarrer la tâche d'entraînement

Une fois le groupe de scaling configuré, ajustez le nombre attendu d'instances à 1.

Accédez à la page des détails du groupe de scaling et consultez la section Instance Scaling Overview. Les nombres d'instances actuels sont tous à 0.

Cliquez sur Modify dans la section Instance Scaling Overview. Activez l'option Expected Number of Instances, définissez la valeur sur 1 et cliquez sur OK. Le groupe de scaling créera automatiquement une instance spot.

Le groupe de scaling crée alors automatiquement une nouvelle instance et démarre la tâche d'entraînement.

Le groupe de scaling vérifie périodiquement si le nombre d'instances dans le groupe correspond au nombre attendu d'instances. Étant donné que le nombre actuel est de 0, un scale-out est automatiquement déclenché pour créer une nouvelle instance.
Remarque
  • Après avoir ajusté le nombre attendu d'instances, il peut y avoir un délai avant la création de l'instance. Vous pouvez consulter les activités en cours dans l'onglet Scaling Activities.

  • Une fois l'instance créée et démarrée, vous trouverez un dossier output dans votre bucket OSS. Ce dossier stocke les fichiers de points de contrôle générés pendant l'entraînement.

4. Simuler une interruption (vérification)

Une fois que l'instance a commencé l'entraînement, vérifiez la présence d'un dossier tel que checkpoint-10 dans le répertoire output de votre bucket OSS. Dès qu'un point de contrôle existe, libérez manuellement l'instance d'entraînement pour simuler une interruption :

  1. Libérer manuellement l'instance.

    1. Tout d'abord, accédez à l'onglet Instances du groupe de scaling et cliquez sur l'Instance ID pour accéder à la page Instance Details correspondante.

    2. Sur la page des détails de l'instance, cliquez sur All Operations > Release dans le coin supérieur droit et suivez les instructions pour libérer l'instance.

  2. Vérifier si l'entraînement reprend à partir du dernier point de contrôle.

    Attendez que le groupe de scaling crée une nouvelle instance. Une fois l'instance créée, connectez-vous-y et consultez le journal de la tâche.

    1. Accédez à l'onglet Instances du groupe de scaling et cliquez sur l'Instance ID pour accéder à la page Instance Details correspondante.

    2. Cliquez sur Connect dans le coin supérieur droit et connectez-vous à l'instance comme indiqué.

    3. Exécutez la commande suivante pour afficher le journal d'entraînement du modèle. Ce chemin de sortie de journal a été défini pour le service de démarrage automatique à l'étape 1,4.

      cat /root/train-service-log/train.log

      Comme vous pouvez le constater, la tâche d'entraînement reprend à partir du dernier point de contrôle.

      root@ixxx:~# cat train-service-log/train.log
      Resume training from: /mnt/oss-data/output/checkpoint-10
      run sh: /usr/bin/python3 /usr/local/lib/python3.10/dist-packages/xxx
        s-data/self-cognition#500 --torch_dtype bfloat16 --num_train_epochs xxx
        --eval_steps 50 --save_steps 10 --save_total_limit 5 --logging_steps xxx
        --num_workers 4 --model_author swift --model_name swift-robot --resume xxx

Étapes suivantes

Utiliser le modèle affiné pour l'inférence

Une fois la tâche d'affinage terminée, un dossier checkpoint-93 est généré dans le répertoire output du bucket OSS. Vous pouvez ensuite vous connecter à l'instance et exécuter la commande suivante pour interagir avec le modèle affiné.

# Bucket mount path
BUCKET_MOUNT_PATH="/mnt/oss-data"

# Set the output directory
OUTPUT_DIR="$BUCKET_MOUNT_PATH/output"

# Find the latest checkpoint
LATEST_CHECKPOINT=$(ls -dt $OUTPUT_DIR/checkpoint-* 2>/dev/null | head -1)

CUDA_VISIBLE_DEVICES=0 \
swift infer \
    --adapters $LATEST_CHECKPOINT \
    --stream true \
    --temperature 0 \
    --max_new_tokens 2048
[INFO:swift] Start time of running main: 2025-03-26 15:15:11.595764
[INFO:swift] request_config: RequestConfig(max_tokens=2048, temperature=0.0, top_k=None, top_p=None, repetition_penalty=None, num_beams=1, stop=[], seed=None, stream=True, logprobs=False, top_logprobs=None, n=1, best_of=None, presence_penalty=0.0, frequency_penalty=0.0, length_penalty=1.0)
[INFO:swift] Input 'exit' or 'quit' to exit the conversation.
[INFO:swift] Input 'multi-line' to switch to multi-line input mode.
[INFO:swift] Input 'reset-system' to reset the system and clear the history.
[INFO:swift] Input 'clear' to clear the history.
<<< Who are you?

Libérer les ressources

Pour éviter d'engager des frais supplémentaires, vous pouvez libérer les ressources utilisées dans ce tutoriel en suivant ces étapes.

  1. Supprimer le groupe de scaling. La suppression du groupe de scaling créé à l'étape 2 supprimera également les instances qu'il a créées automatiquement.

  2. Supprimer l'image personnalisée. Supprimez l'image personnalisée créée à l'étape 1,5.

  3. Supprimer le bucket. Supprimez le bucket OSS créé à l'étape 1,2.

  4. Supprimer le rôle RAM. Supprimez le rôle RAM créé à l'étape 1,2.

  5. Libérer l'instance. Libérez l'instance créée à l'étape 1,1.

Recommandations pour les environnements de production

Adaptez cette solution à la production en fonction de vos besoins métier et des recommandations suivantes.

  • Intégrer CloudMonitor pour la gestion des interruptions

    Intégrez CloudMonitor à votre code d'entraînement pour détecter et répondre aux événements d'interruption des instances spot. L'enregistrement d'un point de contrôle cinq minutes avant une interruption réduit la perte de progression lors de la reprise de l'entraînement. L'architecture améliorée est la suivante :

    image

  • Mettre en place un mécanisme de récupération des tâches

    Ce tutoriel reprend l'entraînement à partir du dernier point de contrôle sans le valider. En production, mettez en œuvre une détection d'anomalies pour identifier les points de contrôle invalides et reprendre automatiquement à partir du dernier point de contrôle valide.

  • Améliorer le processus de fin de tâche

    Ajoutez une logique à votre code d'entraînement pour détecter la fin de la tâche. Une fois la tâche terminée, appelez l'API du groupe de scaling via la CLI ou le SDK pour définir le nombre attendu d'instances à 0. Le groupe de scaling libère alors automatiquement les instances excédentaires, évitant ainsi des coûts inutiles.

    De plus, lorsque la tâche est terminée, vous pouvez signaler des événements personnalisés à CloudMonitor. Cela vous permet de recevoir des notifications sur les résultats de l'entraînement par e-mail, SMS ou via un chatbot DingTalk.

  • Utiliser un système de fichiers haute performance

    Pour les modèles comportant un grand nombre de paramètres, OSS peut devenir un goulot d'étranglement. Utilisez plutôt un système de fichiers à haut débit et à faible latence tel que CPFS pour améliorer les performances d'E/S.

  • Configurer des vSwitches multi-AZ pour une meilleure disponibilité

    Un vSwitch mono-zone limite la création d'instances à une seule zone, ce qui augmente le risque d'échec du scale-out en raison d'une capacité insuffisante. Configurez des vSwitches dans plusieurs zones de disponibilité afin que le système puisse créer des instances dans différentes zones lorsqu'une instance spot est récupérée.

Références