Tous les produits
Search
Centre de documentation

Object Storage Service:Model broadcasting

Dernière mise à jour :Aug 18, 2026

La diffusion de modèles d'OSS Connector charge les données de modèle depuis OSS sur un seul nœud, puis les distribue aux autres nœuds via une topologie en chaîne. Cette approche réduit le trafic vers la source et accélère le déploiement de modèles sur plusieurs nœuds.

Fonctionnement

Lorsque plusieurs nœuds extraient simultanément des fichiers de modèle depuis OSS, les téléchargements concurrents peuvent saturer la bande passante sortante de la source, entraînant des retards ou des échecs au démarrage. Ce goulot d'étranglement est particulièrement prononcé dans les régions où la bande passante sortante d'OSS est plus faible.

Avec la diffusion de modèles, un ou quelques nœuds seulement chargent directement les données depuis OSS lors du démarrage de plusieurs instances d'inférence. Les données sont ensuite distribuées selon une topologie en chaîne, qui exploite les ressources de stockage et réseau des nœuds pour réduire le trafic vers la source et améliorer l'efficacité de la distribution.

Les fichiers de modèle sont transmis en série d'un nœud à l'autre ; chaque nœud reçoit et transfère les données une seule fois. Un flux de données unique suffit généralement à saturer la bande passante réseau de la plupart des types d'instance, et la topologie en chaîne évite les goulots d'étranglement liés au transport arborescent, où un nœud doit servir plusieurs nœuds en aval.

OSS Connector précharge les fichiers de modèle dans un tampon mémoire grâce à des téléchargements hautement concurrents. Le moteur d'inférence charge le modèle dans la mémoire GPU selon les besoins, et le tampon est libéré après un délai une fois l'inférence terminée. La diffusion de modèles étend ce mécanisme en partageant le tampon entre les nœuds via DADI P2P, ce qui ne nécessite qu'un service Redis ou Tair pour la découverte des nœuds et la gestion des métadonnées. Cette approche ajoute une logique légère de partage de tampon tout en exploitant pleinement la bande passante inutilisée des nœuds pendant le chargement du modèle.

image
Remarque

La diffusion de modèles n'extrait qu'un seul flux de données depuis OSS pour chaque modèle, ce qui réduit la charge sur la source lors des démarrages groupés. Si les performances de la source restent un goulot d'étranglement, combinez cette fonctionnalité avec OSS Accelerator ou la version cache distribué de DADI P2P.

Prérequis

Configurer la base de données

La diffusion de modèles nécessite un service Redis ou Tair pour la découverte des nœuds et la gestion des métadonnées.

Option 1 : Acheter et configurer Tair (recommandé)

Tair est le service de base de données cloud entièrement géré d'Alibaba Cloud, compatible avec le protocole Redis.

  1. Créez une instance Tair (version 6.0 ou ultérieure, avec les spécifications minimales). Vue d'ensemble du guide de démarrage rapide.

  2. Configurez une liste d'autorisation afin que les nœuds d'inférence puissent accéder à l'instance Tair.

  3. Notez l'Connection Address, le Port Number, le Username et le Password pour la configuration de la diffusion de modèles.

Option 2 : Déployer un service Redis autonome

Vous pouvez également déployer Redis dans un cluster Kubernetes.

Le fichier YAML suivant déploie Redis avec une authentification ACL.

  1. Créez un fichier de configuration ACL et générez un secret Kubernetes.

    # Create ACL content
    cat > users.acl << EOF
    user default off -@all
    user Username on >Password ~* &* +@all
    EOF
    
    # Create a secret
    kubectl create secret generic redis-acl-secret \
      --from-file=users.acl \
      --dry-run=client -o yaml | kubectl apply -f -
    Remarque

    Remplacez Username et Password par votre nom d'utilisateur et votre mot de passe réels.

  2. Appliquez le fichier YAML suivant pour déployer Redis.

    # redis-service.yaml
    apiVersion: v1
    kind: Service
    metadata:
      name: redis
    spec:
      selector:
        app: model-redis
      ports:
        - protocol: TCP
          port: 6379
          targetPort: 6379
    
    ---
    # redis-deployment.yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: model-redis-deployment
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: model-redis
      template:
        metadata:
          labels:
            app: model-redis
        spec:
          containers:
          - name: redis
            image: mirrors-ssl.aliyuncs.com/redis:8.4.0
            ports:
            - containerPort: 6379
            command: ["redis-server"]
            args:
            - "--aclfile"
            - "/etc/redis/users.acl"
            - "--maxmemory"
            - "900mb"
            - "--maxmemory-policy"
            - "volatile-lru"
            - "--save"
            - ""
            - "--appendonly"
            - "no"
            - "--loglevel"
            - "notice"
            resources:
              requests:
                memory: "1Gi"
                cpu: "100m"
              limits:
                memory: "1Gi"
                cpu: "200m"
            volumeMounts:
            - name: acl-config
              mountPath: /etc/redis/users.acl
              subPath: users.acl
          volumes:
          - name: acl-config
            secret:
              secretName: redis-acl-secret
  3. Déployez le service Redis.

    kubectl apply -f redis-service.yaml

Activer la diffusion de modèles

Ajoutez la configuration de diffusion de modèles au fichier de configuration d'OSS Connector situé à l'emplacement /etc/oss-connector/config.json.

{
  ...
  "broadcast": {
    "enableBroadcast": true,
    "tenant": "${P2P_KEY_PREFIX}",
    "db": {
      "host": "${P2P_REDIS_HOST}",
      "port": 6379,
      "username": "${P2P_REDIS_USERNAME}",
      "password": "${P2P_REDIS_PASSWD}"
    }
  },
  "bindPort": 19898
  ...
}

Paramètres de configuration :

Paramètre

Description

broadcast.enableBroadcast

Active la diffusion de modèles. Définissez la valeur sur true.

broadcast.tenant

Nom du locataire. Les nœuds partageant le même locataire utilisent la même diffusion de modèles. Utilisez un locataire unique par service.

broadcast.db.host

Adresse de connexion du service Redis ou Tair.

broadcast.db.port

Port du service Redis ou Tair. Valeur par défaut : 6379.

broadcast.db.username

Nom d'utilisateur du service Redis ou Tair.

broadcast.db.password

Mot de passe du service Redis ou Tair.

bindPort

Port utilisé pour servir les données aux autres nœuds. Valeur par défaut : 19898.

La diffusion de modèles prend en charge les déploiements Kubernetes multi-instances. Déployer un service de diffusion de modèles avec plusieurs instances.

Limiter la taille du cache

Pendant la diffusion, les nœuds mettent en cache les données de modèle en mémoire pour les autres nœuds. Vous pouvez limiter la taille de ce cache :

  • Méthode 1 : Définir une variable d'environnement

    export CONNECTOR_MAX_CACHE_ADVISE_GB=100
  • Méthode 2 : Définir dans le fichier de configuration

    Définissez prefetch.maxCacheAdviseGB dans /etc/oss-connector/config.json :

    {
      ...
      "prefetch": {
        "vcpus": 16,
        "workers": 24,
        "maxCacheAdviseGB": 100
      },
      ...
    }
Remarque
  • La limite de mémoire est une limite souple.

  • Les variables d'environnement ont priorité sur le fichier de configuration.

Rapport de performances

Résultats des tests de performances pour la diffusion de modèles avec le modèle Qwen2,5-72B (135 437 Go) dans différentes régions.

Test dans la région de Pékin

Environnement de test

Élément

Configuration

OSS

Chine (Pékin), bande passante de téléchargement intranet de 250 Gbit/s

Configuration des nœuds

ecs.g9i.24xlarge, réseau 32/48 Gbit/s (pic), 96 vCPU, 384 Gio

Modèle

Qwen2,5-72B, 135 437 Go

Métriques

Délai entre le démarrage du serveur API vLLM et la disponibilité du service, ainsi que le trafic OSS et P2P.

Taille de cache illimitée

Beijing region test results with unlimited cache

  • Un seul flux vers la source est utilisé ; tous les autres transferts de données passent par P2P, ce qui minimise la pression sur la bande passante OSS.

  • Le temps moyen de préparation du modèle reste proche de O(1) quel que soit le nombre de nœuds, ce qui démontre une excellente mise à l'échelle horizontale.

Taille de cache limitée

Le temps de préparation du modèle a été testé pour 1, 10, 50 et 100 nœuds démarrant simultanément, avec une taille de cache illimitée et limitée à 100, 60, 40, 20 et 0 Go.

Beijing region test results with limited cache - time

Beijing region test results with limited cache - impact

  • La diffusion de modèles fonctionne comme prévu pour toutes les limites de taille de cache.

  • L'impact de la limite de cache est cohérent quel que soit le niveau de concurrence. Un cache de 40 Go ou plus n'a aucun effet significatif sur le temps de préparation du modèle. Les performances diminuent sensiblement à 20 Go ou moins.

Test dans la région d'Ulanqab

Environnement de test

Élément

Configuration

OSS

Chine (Ulanqab), bande passante de téléchargement intranet de 10 Gbit/s

Configuration des nœuds

ecs.g9i.24xlarge, réseau 32/48 Gbit/s (pic), 96 vCPU, 384 Gio

Modèle

Qwen2.5-72B, 135 437 Go

Le temps de préparation du modèle a été testé pour 1, 10, 50 et 100 nœuds démarrant simultanément, avec une taille de cache illimitée et limitée à 60 et 0 Go.

Ulanqab region test results

Même avec une bande passante de téléchargement OSS limitée, la diffusion de modèles maintient une excellente mise à l'échelle horizontale et minimise la pression sur la bande passante de la source.