全部產品
Search
文件中心

Object Storage Service:使用OSS Connector for AI/ML提升模型部署效率

更新時間:Sep 25, 2025

OSS Connector for AI/ML 提供免改造、無侵入的模型載入方案,通過 LD_PRELOAD 實現高效能OSS直讀,支援預取與緩衝,顯著提升模型載入速度,適用於容器及主流推理架構。

高效能

OSS Connector for AI/ML能顯著提升從OSS載入大模型的效能。在頻寬充足的條件下,輸送量可超過10 GB/s。有關效能詳情,請參見效能測試

工作原理

OSS Connector for AI/ML旨在解決雲環境下載入大型模型時的效能瓶頸,尤其是模型儲存在OSS中的情境。

  • 傳統基於FUSE的POSIX掛載方案,往往無法充分發揮OSS的高頻寬優勢,導致模型載入速度緩慢。OSS Connector通過攔截推理架構的I/O請求,並將其直接轉換為對 OSS 的 HTTP(s) 請求,有效提升了資料訪問效率。

  • 採用 LD_PRELOAD 機制,無需對推理應用程式進行任何代碼修改,即可將模型資料預取並緩衝到記憶體中,從而顯著加快模型載入速度。

部署環境

  • 作業系統:Linux x86-64

  • glibc:>=2.17

安裝OSS Connector

  1. 下載完整安裝包。

    • oss-connector-lib-1.1.0rc7.x86_64.rpm:適用於Red Hat系列的Linux發行版

      https://gosspublic.alicdn.com/oss-connector/oss-connector-lib-1.1.0rc7.x86_64.rpm
    • oss-connector-lib-1.1.0rc7.x86_64.deb:適用於Debian系列的Linux發行版

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

    通過 .rpm 或 .deb 安裝包安裝OSS Connector,動態庫檔案libossc_preload.so會自動安裝到 /usr/local/lib/ 目錄下。

    • 安裝oss-connector-lib-1.1.0rc7.x86_64.rpm

      yum install -y oss-connector-lib-1.1.0rc7.x86_64.rpm
    • 安裝oss-connector-lib-1.1.0rc7.x86_64.deb

      dpkg -i oss-connector-lib-1.1.0rc7.x86_64.deb
  3. 安裝後檢查/usr/local/lib/libossc_preload.so是否存在及版本是否正確。

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

配置OSS Connector

  • 設定檔

    設定檔主要用於控制OSS Connector的日誌輸出、緩衝策略和預取並發能力。合理設定設定檔的部分參數可以提升系統效能和可維護性。

    設定檔路徑為 /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
        }
    }
    

    參數

    說明

    logLevel

    記錄層級,控制日誌輸出的詳細程度。

    logPath

    記錄檔路徑,指定作業記錄的輸出位置。

    auditPath

    審計記錄檔路徑,記錄Action Trail資訊,便於安全合規追蹤。

    expireTimeSec

    快取檔案的延遲釋放時間(秒),無引用時延遲釋放,預設120秒。

    prefetch.vcpus

    預取時使用的虛擬CPU數(並發CPU核心數),預設值16。

    prefetch.workers

    每個vCPU下的協程(worker)數量,用於提升並發度,預設值16。

  • 配置環境變數

    環境變數 KEY

    說明

    OSS_ACCESS_KEY_ID

    阿里雲帳號或者RAM使用者的AccessKey ID和AccessKey Secret。

    使用臨時存取權杖進行許可權配置時,請設定為臨時訪問憑證的AccessKey ID和AccessKey Secret。

    使用OSS Connector需要具有目標Bucket對應目錄的oss:ListObjects 許可權。如果訪問的Bucket及檔案支援匿名訪問,可以不設定 OSS_ACCESS_KEY_ID 和 OSS_ACCESS_KEY_SECRET環境變數,或設定為空白字串。

    OSS_ACCESS_KEY_SECRET

    OSS_SESSION_TOKEN

    臨時存取權杖。當使用從STS擷取的臨時訪問憑證訪問OSS時,需要設定此參數。

    使用阿里雲帳號或者RAM使用者的AccessKey ID和AccessKey Secret進行許可權配置時,將該欄位設定為空白字串。

    OSS_ENDPOINT

    指定OSS服務Endpoint,樣本值為http://oss-cn-beijing-internal.aliyuncs.com。當不指定協議類型時,預設使用HTTPS協議。建議在內網等安全環境中使用HTTP協議,以達到更好的效能。

    OSS_REGION

    指定OSS Region ID,樣本值為 cn-beijing。如不指定則可能出現鑒權失敗。

    OSS_PATH

    OSS模型目錄,格式為 oss://bucketname/path/,樣本值為oss://examplebucket/qwen/Qwen3-8B/

    MODEL_DIR

    本地模型目錄,傳遞給vllm 或其他推理架構。建議先清空目錄,使用過程中會下載臨時資料,使用後可以刪除。

    說明
    • MODEL_DIR 路徑需與推理架構的模型路徑保持一致,例如vllm的--model 參數或sglang的 --model-path 參數。

    • MODEL_DIR 需要有讀寫權限。MODEL_DIR的目錄結構與OSS_PATH相互對應。

    • 模型載入過程中會在記憶體中預取和緩衝模型檔案,模型載入後緩衝會延遲釋放,預設延遲 120 秒。可通過設定檔中的expireTimeSec參數進行調整。

    • 本地模型目錄僅限用於Connector載入模型情境,其他用途無效。

    • 本地模型目錄不應建立於其他OSS掛載點(如ossfs掛載點)之上。

    LD_PRELOAD

    需預先載入的動態庫路徑,通常為/usr/local/lib/libossc_preload.so。建議使用臨時環境變數進行配置。例如LD_PRELOAD=/usr/local/lib/libossc_preload.so ENABLE_CONNECTOR=1 ./myapp

    ENABLE_CONNECTOR

    設定OSS Connector進程角色。請使用臨時環境變數注入方式使其生效。

    • ENABLE_CONNECTOR=1:主Connector角色。

    • ENABLE_CONNECTOR=2 :從Connector角色。

    單個運行執行個體內有且只能有一個進程為主Connector角色,建議用於主進程(如entrypoint)。其餘使用Connector的進程需指定為從Connector角色。使用方法,請參見多節點啟動下的ray+vllm案例

啟動模型服務

單節點啟動

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 

多節點啟動

ray+vllm

公用環境變數:

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
重要

OSS_PATH 與 MODEL_DIR存在對應關係,如OSS 上模型地址為 oss://examplebucket/qwen/Qwen2___5-72B/,則本地模型目錄為 /tmp/models/qwen/Qwen2___5-72B/。

Pod A 啟動 ray head:

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

Pod B 啟動 ray 加入叢集:

LD_PRELOAD=/usr/local/lib/libossc_preload.so ENABLE_CONNECTOR=1 ray start --address='172.24.176.137:6379' --block     // 172.24.176.137 是 podip改成head pod ip ,pod A 上 ray start 之後會有輸出,加入叢集的命令

啟動 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

為每個節點的 sglang 進程配置環境變數。

主節點啟動:

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 

從節點啟動:

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 

Kubernetes部署

在Kubernetes 環境部署 POD時,要求提前構建好安裝了Connector的鏡像,並推送到指定倉庫。以下是一個 Kubernetes 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

效能測試

單節點模型載入測試

測試環境

指標

說明

OSS

北京,內網下載頻寬 250Gbps

測試節點

ecs.g7nex.32xlarge,網路頻寬 160Gbps (80Gbps*2)

統計指標

指標

說明

模型下載

模型檔案通過 connector 下載開始到結束的時間。

端到端

CPU 版 vllm api server 啟動到服務就緒時間。

測試結果

模型名稱

模型大小(GB)

模型下載時間(秒)

端到端時間(秒)

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