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.
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
OSS Connector for AI/ML v1.2.0 ou version ultérieure est installé. Améliorer l'efficacité du déploiement de modèles avec OSS Connector for AI/ML.
Une instance Redis ou Tair est disponible pour la découverte des nœuds et la gestion des métadonnées.
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.
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.
Configurez une liste d'autorisation afin que les nœuds d'inférence puissent accéder à l'instance Tair.
Notez l'
Connection Address, lePort Number, leUsernameet lePasswordpour 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.
-
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 -RemarqueRemplacez
UsernameetPasswordpar votre nom d'utilisateur et votre mot de passe réels. -
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 -
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 |
|
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.maxCacheAdviseGBdans/etc/oss-connector/config.json:{ ... "prefetch": { "vcpus": 16, "workers": 24, "maxCacheAdviseGB": 100 }, ... }
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

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.


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.

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.