Tous les produits
Search
Centre de documentation

Object Storage Service:Accélérer le déploiement de modèles avec OSS Connector pour l'IA/ML

Dernière mise à jour :Aug 18, 2026

OSS Connector pour l'IA/ML accélère le chargement des modèles depuis OSS grâce à des lectures directes basées sur LD_PRELOAD, avec préchargement et mise en cache. Aucune modification du code n'est requise. Compatible avec les conteneurs et les principaux frameworks d'inférence.

Hautes performances

OSS Connector pour l'IA/ML améliore considérablement le chargement des grands modèles depuis OSS. Avec une bande passante suffisante, le débit peut dépasser 10 Go/s. Tests de performance.

Fonctionnement

OSS Connector pour l'IA/ML résout les goulots d'étranglement liés aux performances lors du chargement de grands modèles depuis OSS.

  • Les solutions de montage basées sur FUSE ne parviennent souvent pas à exploiter pleinement la bande passante d'OSS, ce qui ralentit le chargement des modèles. OSS Connector intercepte les requêtes d'E/S du framework d'inférence et les convertit directement en requêtes HTTP(s) vers OSS.

  • Grâce à LD_PRELOAD, il précharge et met en cache les données du modèle en mémoire, sans aucune modification du code de votre application d'inférence.

Environnement de déploiement

  • Système d'exploitation : Linux x86-64

  • glibc : >=2,17

Installer OSS Connector

  1. Téléchargez le package d'installation.

    • oss-connector-lib-1.1.0rc7.x86_64.rpm : Pour les distributions Linux basées sur Red Hat

      https://gosspublic.alicdn.com/oss-connector/oss-connector-lib-1.1.0rc7.x86_64.rpm
    • oss-connector-lib-1.1.0rc7.x86_64.deb : Pour les distributions Linux basées sur Debian

      https://gosspublic.alicdn.com/oss-connector/oss-connector-lib-1.1.0rc7.x86_64.deb
  2. Installez OSS Connector.

    Utilisez le package .rpm ou .deb téléchargé pour l'installation. La bibliothèque libossc_preload.so est installée dans /usr/local/lib/.

    • Installation de oss-connector-lib-1.1.0rc7.x86_64.rpm

      yum install -y oss-connector-lib-1.1.0rc7.x86_64.rpm
    • Installation de oss-connector-lib-1.1.0rc7.x86_64.deb

      dpkg -i oss-connector-lib-1.1.0rc7.x86_64.deb
  3. Vérifiez que /usr/local/lib/libossc_preload.so existe et que la version est correcte.

    nm -D /usr/local/lib/libossc_preload.so | grep version

Configurer OSS Connector

  • Fichier de configuration

    Le fichier de configuration contrôle la sortie des journaux, la politique de cache et la simultanéité du préchargement.

    Configuration par défaut située dans /etc/oss-connector/config.json :

    {
        "logLevel": 1,
        "logPath": "/var/log/oss-connector/connector.log",
        "auditPath": "/var/log/oss-connector/audit.log",
        "expireTimeSec": 120,
        "prefetch": {
            "vcpus": 16,
            "workers": 16
        }
    }
    

    Paramètre

    Description

    logLevel

    Contrôle le niveau de détail de la sortie des journaux.

    logPath

    Chemin de sortie des journaux d'exécution.

    auditPath

    Chemin des journaux d'audit pour le suivi de la sécurité et de la conformité.

    expireTimeSec

    Délai de libération des fichiers en cache (en secondes) après la fermeture de toutes les références. Valeur par défaut : 120.

    prefetch.vcpus

    Nombre de vCPU pour le préchargement. Valeur par défaut : 16.

    prefetch.workers

    Nombre de workers par vCPU pour la simultanéité. Valeur par défaut : 16.

  • Configurez les variables d'environnement

    Clé de variable d'environnement

    Description

    OSS_ACCESS_KEY_ID

    Paire AccessKey d'un compte Alibaba Cloud ou d'un utilisateur RAM.

    Lors de l'utilisation d'un jeton d'accès temporaire, définissez ces valeurs sur la paire AccessKey des identifiants temporaires.

    OSS Connector nécessite l'autorisation oss:ListObjects sur le répertoire du bucket cible. Pour les buckets accessibles anonymement, laissez OSS_ACCESS_KEY_ID et OSS_ACCESS_KEY_SECRET non définis ou vides.

    OSS_ACCESS_KEY_SECRET

    OSS_SESSION_TOKEN

    Jeton d'accès temporaire. Requis lors de l'utilisation d'identifiants temporaires STS pour accéder à OSS.

    Définissez cette valeur sur une chaîne vide lors de l'utilisation d'identifiants AccessKey permanents.

    OSS_ENDPOINT

    Endpoint OSS. Exemple : http://oss-cn-beijing-internal.aliyuncs.com. HTTPS est utilisé par défaut si aucun protocole n'est spécifié. Utilisez HTTP sur les réseaux internes pour de meilleures performances.

    OSS_REGION

    ID de région OSS. Exemple : cn-beijing. L'authentification peut échouer si cette valeur n'est pas spécifiée.

    OSS_PATH

    Chemin du modèle sur OSS. Format : oss://bucketname/path/. Exemple : oss://examplebucket/qwen/Qwen3-8B/.

    MODEL_DIR

    Répertoire local du modèle pour le framework d'inférence. Videz le répertoire avant utilisation. Les données temporaires téléchargées pendant le chargement peuvent être supprimées par la suite.

    Remarque
    • Le chemin MODEL_DIR doit correspondre au chemin du modèle du framework d'inférence (--model pour vllm, --model-path pour sglang).

    • MODEL_DIR nécessite des autorisations en lecture/écriture. Sa structure de répertoire reflète celle de OSS_PATH.

    • Les fichiers de modèle sont préchargés et mis en cache en mémoire pendant le chargement. Le cache est libéré après 120 secondes par défaut (configurable via expireTimeSec).

    • Utilisez ce répertoire exclusivement pour le chargement des modèles via le connecteur.

    • Ne créez pas ce répertoire sur un montage OSS existant (tel qu'ossfs).

    LD_PRELOAD

    Chemin de la bibliothèque préchargée : /usr/local/lib/libossc_preload.so. Définissez-le comme variable d'environnement temporaire. Exemple : LD_PRELOAD=/usr/local/lib/libossc_preload.so ENABLE_CONNECTOR=1 ./myapp

    ENABLE_CONNECTOR

    Rôle du processus OSS Connector. Définissez-le comme variable d'environnement temporaire.

    • ENABLE_CONNECTOR=1 : Rôle de connecteur principal.

    • ENABLE_CONNECTOR=2 : Rôle de connecteur secondaire.

    Chaque instance n'autorise qu'un seul processus de connecteur principal. Attribuez le rôle principal au processus principal (point d'entrée). Tous les autres processus de connecteur doivent utiliser le rôle secondaire. l'exemple ray+vllm pour le démarrage multi-nœuds.

Démarrer le service de modèle

Démarrage sur un seul nœud

vllm API Server

LD_PRELOAD=/usr/local/lib/libossc_preload.so \
ENABLE_CONNECTOR=1 OSS_ACCESS_KEY_ID=${OSS_ACCESS_KEY_ID} \
OSS_ACCESS_KEY_SECRET=${OSS_ACCESS_KEY_SECRET} \ OSS_ENDPOINT=${OSS_ENDPOINT} \
OSS_REGION=${OSS_REGION} \
OSS_PATH=${OSS_PATH} \
MODEL_DIR=/tmp/model \
python3 -m vllm.entrypoints.openai.api_server --model /tmp/model --trust-remote-code --tensor-parallel-size 1 --disable-custom-all-reduce

sglang API Server

LD_PRELOAD=/usr/local/lib/libossc_preload.so \
ENABLE_CONNECTOR=1 OSS_ACCESS_KEY_ID=${OSS_ACCESS_KEY_ID} \
OSS_ACCESS_KEY_SECRET=${OSS_ACCESS_KEY_SECRET} \ OSS_ENDPOINT=${OSS_ENDPOINT} \
OSS_REGION=${OSS_REGION} \
OSS_PATH=${OSS_PATH} \
MODEL_DIR=/tmp/model \
python3 -m sglang.launch_server --model-path /tmp/model --port 8000 

Démarrage multi-nœuds

ray+vllm

Variables d'environnement courantes :

export OSS_ACCESS_KEY_ID=${OSS_ACCESS_KEY_ID}
export OSS_ACCESS_KEY_SECRET=${OSS_ACCESS_KEY_SECRET}
export OSS_ENDPOINT=${OSS_ENDPOINT}
export OSS_REGION=${OSS_REGION}
export OSS_PATH=oss://examplebucket/
export MODEL_DIR=/tmp/models
Important

Les variables OSS_PATH et MODEL_DIR doivent correspondre. Par exemple, si le chemin du modèle sur OSS est oss://examplebucket/qwen/Qwen2___5-72B/, le répertoire local du modèle est /tmp/models/qwen/Qwen2___5-72B/.

Le pod A démarre le nœud head ray :

LD_PRELOAD=/usr/local/lib/libossc_preload.so ENABLE_CONNECTOR=1 ray start --head --dashboard-host 0.0.0.0 --block

Le pod B démarre ray et rejoint le cluster :

LD_PRELOAD=/usr/local/lib/libossc_preload.so ENABLE_CONNECTOR=1 ray start --address='172.24.176.137:6379' --block     // 172.24.176.137 is the pod IP. Change this to the IP address of the head pod. The command to join the cluster is provided in the output after you run `ray start` on Pod A.

Démarrez le serveur API vllm :

LD_PRELOAD=/usr/local/lib/libossc_preload.so ENABLE_CONNECTOR=2 python3 -m vllm.entrypoints.openai.api_server --model ${MODEL_DIR}/qwen/Qwen2___5-72B/ --trust-remote-code --served-model-name ds --max-model-len 2048 --gpu-memory-utilization 0.98 --tensor-parallel-size 32

sglang

Configurez les variables d'environnement pour le processus sglang sur chaque nœud.

Démarrage du nœud principal :

LD_PRELOAD=/usr/local/lib/libossc_preload.so \
ENABLE_CONNECTOR=1 OSS_ACCESS_KEY_ID=${OSS_ACCESS_KEY_ID} \
OSS_ACCESS_KEY_SECRET=${OSS_ACCESS_KEY_SECRET} \ OSS_ENDPOINT=${OSS_ENDPOINT} \
OSS_REGION=${OSS_REGION} \
OSS_PATH=${OSS_PATH} \
MODEL_DIR=/tmp/model \
python3 -m sglang.launch_server --model-path /tmp/model --port 8000 --dist-init-addr 192.168.1.1:20000 --nnodes 2 --node-rank 0 

Démarrage du nœud secondaire :

LD_PRELOAD=/usr/local/lib/libossc_preload.so \
ENABLE_CONNECTOR=1 OSS_ACCESS_KEY_ID=${OSS_ACCESS_KEY_ID} \
OSS_ACCESS_KEY_SECRET=${OSS_ACCESS_KEY_SECRET} \ OSS_ENDPOINT=${OSS_ENDPOINT} \
OSS_REGION=${OSS_REGION} \
OSS_PATH=${OSS_PATH} \
MODEL_DIR=/tmp/model \
python3 -m sglang.launch_server --model-path /tmp/model --port 8000 --dist-init-addr 192.168.1.1:20000 --nnodes 2 --node-rank 1 

Déploiement Kubernetes

Créez une image avec le connecteur installé et poussez-la vers un référentiel. Exemple de YAML de déploiement de pod :

apiVersion: v1
kind: ConfigMap
metadata:
  name: connector-config
data:
  config.json: |
    {
        "logLevel": 1,
        "logPath": "/var/log/oss-connector/connector.log",
        "auditPath": "/var/log/oss-connector/audit.log",
        "expireTimeSec": 120,
        "prefetch": {
            "vcpus": 16,
            "workers": 16
        }
    }
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: model-connector-deployment
spec:
  selector:
    matchLabels:
      app: model-connector
  template:
    metadata:
      labels:
        app: model-connector
    spec:
      imagePullSecrets:
        - name: acr-credential-beijing
      hostNetwork: true
      containers:
      - name: container-name
        image: {IMAGE_ADDRESS}
        imagePullPolicy: Always
        resources:
          requests:
            cpu: "24"
            memory: "700Gi"
          limits:
            cpu: "128"
            memory: "900Gi"
        command: 
          - bash
          - -c
          - ENABLE_CONNECTOR=1 python3 -m vllm.entrypoints.openai.api_server --model /var/model --trust-remote-code --tensor-parallel-size 1 --disable-custom-all-reduce
        env:
        - name: LD_PRELOAD
          value: "/usr/local/lib/libossc_preload.so"
        - name: OSS_ENDPOINT
          value: "oss-cn-beijing-internal.aliyuncs.com"
        - name: OSS_REGION
          value: "cn-beijing"
        - name: OSS_PATH
          value: "oss://examplebucket/qwen/Qwen1.5-7B-Chat/"
        - name: MODEL_DIR
          value: "/var/model/"
        - name: OSS_ACCESS_KEY_ID
          valueFrom:
            secretKeyRef:
              name: oss-access-key-connector
              key: key
        - name: OSS_ACCESS_KEY_SECRET
          valueFrom:
            secretKeyRef:
              name: oss-access-key-connector
              key: secret
        volumeMounts:
          - name: connector-config
            mountPath:  /etc/oss-connector/
      terminationGracePeriodSeconds: 10
      volumes:
      - name: connector-config
        configMap:
          name: connector-config

Tests de performance

Test de chargement de modèle sur un seul nœud

Environnement de test

Métrique

Description

OSS

Pékin, bande passante de téléchargement sur réseau interne de 250 Gbps

Nœud de test

ecs.g7nex.32xlarge, bande passante réseau de 160 Gbps (80 Gbps × 2)

Métriques statistiques

Métrique

Description

Téléchargement du modèle

Temps nécessaire pour télécharger les fichiers de modèle via le connecteur.

Bout en bout

Temps nécessaire pour que le serveur API vllm (version CPU) démarre et soit prêt.

Résultats des tests

Nom du modèle

Taille du modèle (Go)

Temps de téléchargement du modèle (secondes)

Temps bout en bout (secondes)

Qwen2,5-14B

27 522

1,7721

20,48

Qwen2,5-72B

135 437

10,57

30,09

Qwen3-8B

15 271

0,97

18,88

Qwen3-32B

61 039

3,99

22,97