全部產品
Search
文件中心

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

更新時間:Apr 01, 2026

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

高效能

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

模型廣播功能支援大量啟動同一模型推理服務時,由單個節點從OSS載入模型,其餘節點利用本機存放區和網路資源通過拓撲結構完成分發,大幅降低回源壓力,提升大規模節點啟動效率。

工作原理

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.2.0.x86_64.rpm:適用於Red Hat系列的Linux發行版

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

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

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

    • 安裝oss-connector-lib-1.2.0.x86_64.rpm

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

      dpkg -i oss-connector-lib-1.2.0.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,
            "maxCacheAdviseGB": -1
        }
    }
    

    參數

    說明

    logLevel

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

    logPath

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

    auditPath

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

    expireTimeSec

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

    prefetch.vcpus

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

    prefetch.workers

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

    pretech.maxCacheAdviseGB

    預取可以使用的記憶體緩衝大小,預設 -1,即不限制,單位 GB。

  • 配置環境變數

    環境變數 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案例

    OSS_AUTHORIZATION_FILE_PATH

    JSON格式訪問憑證檔案路徑。

    阿里雲帳號或者RAM使用者的AccessKey ID、AccessKey Secret訪問憑證:

    {
      "AccessKeyId": "LTAI************************",
      "AccessKeySecret": "At32************************"
    }

    使用臨時訪問憑證:

    {
      "AccessKeyId": "STS.L4aB******************",
      "AccessKeySecret": "wyLTSm*************************",
      "SecurityToken": "************",
      "Expiration": "2024-08-15T15:04:05Z"
    }
    說明

    配置優先順序高於OSS_ACCESS_KEY_ID、OSS_ACCESS_KEY_SECRET和OSS_SESSION_TOKEN。

    CONNECTOR_CONFIG_PATH

    通過環境變數修改設定檔路徑。預設值:/etc/oss-connector/config.json

    CONNECTOR_UDS_PATH

    通過環境變數設定 Unix域通訊端(UDS)檔案路徑。預設值:/run/modelconnector.sock

    說明

    Connector 主/從進程通過 UDS 通訊。

    CONNECTOR_MAX_CACHE_ADVISE_GB

    通過環境變數設定預取可以使用的記憶體緩衝大小,單位 GB。

    說明

    與設定檔中的"pretech.maxCacheAdviseGB"相同功能,但是有更高的優先順序。

啟動模型服務

單節點啟動

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 

多模型載入

當推理任務涉及多個模型時(如投機採樣Speculative Decoding),OSS Connector支援同時從OSS載入多個模型。只需將OSS_PATH設定為所有模型的公用父路徑,MODEL_DIR設定為對應的本地父目錄。

以下樣本展示了通過vllm使用Speculative Decoding同時載入目標模型Qwen3-32B和草稿模型Qwen3-0.6B:

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

LD_PRELOAD=/usr/local/lib/libossc_preload.so ENABLE_CONNECTOR=1 \
python3 -m vllm.entrypoints.openai.api_server \
    --model ${MODEL_DIR}/qwen/Qwen3-32B/ --trust-remote-code \
    --tensor-parallel-size 1 --disable-custom-all-reduce \
    --speculative_config '{"model": "'"${MODEL_DIR}/qwen/Qwen3-0___6B/"'", "num_speculative_tokens": 5}'
說明

OSS_PATH與MODEL_DIR存在對應關係。例如OSS上目標模型路徑為oss://examplebucket/qwen/Qwen3-32B/,草稿模型路徑為oss://examplebucket/qwen/Qwen3-0___6B/,則OSS_PATH應設定為它們的公用父路徑oss://examplebucket/,MODEL_DIR設定為/tmp/models。對應的目標模型本地路徑為/tmp/models/qwen/Qwen3-32B//tmp/models/qwen/Qwen3-0___6B/

多節點啟動

多節點部署情境中,OSS Connector支援模型廣播功能。啟用模型廣播後,僅由單個節點從OSS載入模型資料,其餘節點通過鏈式拓撲結構完成模型資料的分發,避免多節點同時回源帶來的頻寬壓力。有關模型廣播的詳細資料,請參見模型廣播

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環境中部署OSS Connector時,可以通過Init Container、啟動時動態安裝或自訂鏡像等方式完成安裝。有關Kubernetes部署的詳細資料和完整YAML樣本,請參見在Kubernetes中啟用Connector功能

效能測試

單節點模型載入測試

測試環境

指標

說明

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