Todos os produtos
Search
Central de documentação

Object Storage Service:Acelere a implantação de modelos com OSS Connector for AI/ML

Última atualização: Jul 03, 2026

O OSS Connector for AI/ML acelera o carregamento de modelos do OSS por meio de leituras diretas baseadas em LD_PRELOAD, com prefetch e cache. Não é necessário alterar o código. Compatível com containers e os principais frameworks de inferência.

Alto desempenho

O OSS Connector for AI/ML melhora significativamente o carregamento de modelos grandes a partir do OSS. Com largura de banda suficiente, o throughput pode ultrapassar 10 GB/s. Testes de desempenho.

Como funciona

O OSS Connector for AI/ML resolve gargalos de desempenho no carregamento de modelos grandes diretamente do OSS.

  • Soluções de montagem baseadas em FUSE frequentemente não aproveitam totalmente a largura de banda do OSS, resultando em carregamento lento de modelos. O OSS Connector intercepta as requisições de I/O do framework de inferência e as converte diretamente em requisições HTTP(s) para o OSS.

  • Por meio de LD_PRELOAD, ele faz prefetch e armazena dados do modelo em cache na memória, sem exigir alterações no código da sua aplicação de inferência.

Ambiente de implantação

  • Sistema operacional: Linux x86-64

  • glibc: >=2,17

Instale o OSS Connector

  1. Baixe o pacote de instalação.

    • oss-connector-lib-1.1.0rc7.x86_64.rpm: Para distribuições Linux baseadas em 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: Para distribuições Linux baseadas em Debian

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

    Use o pacote .rpm ou .deb baixado para a instalação. A biblioteca libossc_preload.so será instalada em /usr/local/lib/.

    • Instale o oss-connector-lib-1.1.0rc7.x86_64.rpm

      yum install -y oss-connector-lib-1.1.0rc7.x86_64.rpm
    • Instale o oss-connector-lib-1.1.0rc7.x86_64.deb

      dpkg -i oss-connector-lib-1.1.0rc7.x86_64.deb
  3. Verifique se o arquivo /usr/local/lib/libossc_preload.so existe e se a versão está correta.

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

Configure o OSS Connector

  • Arquivo de configuração

    Este arquivo controla a saída de log, a política de cache e a concorrência de prefetch.

    Configuração padrão em /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
        }
    }
    

    Parâmetro

    Descrição

    logLevel

    Defina o nível de detalhe da saída de log.

    logPath

    Caminho para a saída de logs de execução.

    auditPath

    Caminho do log de auditoria para rastreamento de segurança e conformidade.

    expireTimeSec

    Atraso em segundos para liberação de arquivos de cache após o fechamento de todas as referências. Padrão: 120.

    prefetch.vcpus

    Quantidade de vCPUs dedicadas ao prefetch. Padrão: 16.

    prefetch.workers

    Número de workers por vCPU para concorrência. Padrão: 16.

  • Configure as variáveis de ambiente

    CHAVE da variável de ambiente

    Descrição

    OSS_ACCESS_KEY_ID

    Par de AccessKey de uma conta Alibaba Cloud ou usuário RAM.

    Ao usar um token de acesso temporário, defina estes campos com o par de AccessKey da credencial temporária.

    O OSS Connector exige a permissão oss:ListObjects no diretório do bucket de destino. Para buckets com acesso anônimo, deixe OSS_ACCESS_KEY_ID e OSS_ACCESS_KEY_SECRET indefinidos ou vazios.

    OSS_ACCESS_KEY_SECRET

    OSS_SESSION_TOKEN

    Token de acesso temporário. Obrigatório ao usar credenciais temporárias STS para acessar o OSS.

    Defina como string vazia ao usar credenciais permanentes de AccessKey.

    OSS_ENDPOINT

    Endpoint do OSS. Exemplo: http://oss-cn-beijing-internal.aliyuncs.com. Usa HTTPS por padrão se nenhum protocolo for especificado. Em redes internas, prefira HTTP para melhor desempenho.

    OSS_REGION

    ID da região do OSS. Exemplo: cn-beijing. A autenticação pode falhar caso este campo não seja especificado.

    OSS_PATH

    Caminho do modelo no OSS. Formato: oss://bucketname/path/. Exemplo: oss://examplebucket/qwen/Qwen3-8B/.

    MODEL_DIR

    Diretório local do modelo para o framework de inferência. Esvazie o diretório antes do uso. Você pode excluir dados temporários baixados durante o carregamento posteriormente.

    Nota
    • O caminho em MODEL_DIR deve corresponder ao caminho do modelo no framework de inferência (--model para vllm, --model-path para sglang).

    • O MODEL_DIR requer permissões de leitura e escrita. Sua estrutura de diretórios espelha a de OSS_PATH.

    • Os arquivos do modelo passam por prefetch e são armazenados em cache na memória durante o carregamento. Por padrão, o cache é liberado após 120 segundos (configurável via expireTimeSec).

    • Use este diretório exclusivamente para o carregamento de modelos pelo connector.

    • Não crie este diretório em uma montagem OSS existente (como ossfs).

    LD_PRELOAD

    Caminho para a biblioteca pré-carregada: /usr/local/lib/libossc_preload.so. Defina como variável de ambiente temporária. Exemplo: LD_PRELOAD=/usr/local/lib/libossc_preload.so ENABLE_CONNECTOR=1 ./myapp

    ENABLE_CONNECTOR

    Função do processo do OSS Connector. Defina como variável de ambiente temporária.

    • ENABLE_CONNECTOR=1: Função primária do connector.

    • ENABLE_CONNECTOR=2: Função secundária do connector.

    Cada instância permite apenas um processo de connector primário. Atribua a função primária ao processo principal (entrypoint). Todos os demais processos do connector devem usar a função secundária. Consulte o exemplo ray+vllm para inicialização multi-nó.

Execute o serviço de modelo

Inicialização em nó único

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 

Inicialização multi-nó

ray+vllm

Variáveis de ambiente comuns:

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
Importante

As variáveis OSS_PATH e MODEL_DIR devem corresponder entre si. Por exemplo, se o caminho do modelo no OSS for oss://examplebucket/qwen/Qwen2___5-72B/, o diretório local do modelo deverá ser /tmp/models/qwen/Qwen2___5-72B/.

O Pod A inicia o head do ray:

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

O Pod B inicia o ray e entra no 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.

Execute o vllm API Server:

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

Configure as variáveis de ambiente para o processo sglang em cada nó.

Inicialização do nó primário:

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 

Inicialização do nó secundário:

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 

Implantação no Kubernetes

Crie uma imagem com o connector instalado e envie-a para um repositório. Exemplo de YAML para implantação 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

Testes de desempenho

Teste de carregamento de modelo em nó único

Ambiente de teste

Métrica

Descrição

OSS

Pequim, largura de banda de download em rede interna de 250 Gbps

Nó de teste

ecs.g7nex.32xlarge, largura de banda de rede de 160 Gbps (80 Gbps × 2)

Métricas estatísticas

Métrica

Descrição

Download do modelo

Tempo para baixar os arquivos do modelo via connector.

Ponta a ponta

Tempo para o servidor de API vllm (versão CPU) iniciar e ficar pronto.

Resultados dos testes

Nome do modelo

Tamanho do modelo (GB)

Tempo de download do modelo (segundos)

Tempo ponta a ponta (segundos)

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