すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:AI/ML 向け OSS コネクタを活用したモデルデプロイ効率の向上

最終更新日:Apr 03, 2026

OSS Connector for AI/ML は、コード変更を一切必要としない非侵入型のモデル読み込みソリューションです。`LD_PRELOAD` を活用し、OSS からの高性能な直接読み取りを実現します。また、プリフェッチおよびキャッシュ機能を備えており、モデル読み込み速度を大幅に向上させます。コンテナおよび主要な推論フレームワークとの連携が可能です。

高性能

OSS Connector for AI/ML は、OSS から大規模モデルを読み込む際のパフォーマンスを大幅に向上させます。十分な帯域幅が確保されている場合、スループットは 10 GB/s を超えることがあります。詳細については、「パフォーマンステスト」をご参照ください。

仕組み

OSS Connector for AI/ML は、クラウド環境で OSS から大規模モデルを読み込む際に発生するパフォーマンスボトルネックを解消します。

  • ユーザー空間ファイルシステム(FUSE)に基づく従来のマウント方式では、OSS の高帯域幅を十分に活用できないことが多く、結果としてモデル読み込みが遅くなります。OSS コネクタは、推論フレームワークからの I/O リクエストをインターセプトし、これを OSS への HTTP(s) リクエストに直接変換することで、データアクセス効率を向上させます。

  • `LD_PRELOAD` メカニズムを活用して、モデルデータをメモリ内にプリフェッチおよびキャッシュします。これにより、推論アプリケーションのコード変更は一切不要であり、モデル読み込みを大幅に高速化できます。

デプロイ環境

  • オペレーティングシステム:Linux x86-64

  • glibc:>=2.17

インストール OSS コネクタ

  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 コネクタをインストールします。

    ダウンロードした .rpm または .deb パッケージを使用してインストールを行います。動的ライブラリファイル `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 コネクタ

  • 構成ファイル

    構成ファイルを使用して、ログ出力、キャッシュポリシー、プリフェッチ同時実行数を制御できます。これらのパラメーターを適切に設定することで、システムパフォーマンスおよびメンテナンス性を向上させることができます。

    構成ファイルは /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

    監査ログファイルパス。セキュリティおよびコンプライアンス追跡のための監査情報を記録します。

    expireTimeSec

    キャッシュファイルの遅延解放時間(秒単位)。参照がない状態で一定時間が経過するとファイルが解放されます。デフォルト値は 120 秒です。

    prefetch.vcpus

    プリフェッチに使用する仮想 CPU(同時実行 CPU コア)の数。デフォルト値は 16 です。

    prefetch.workers

    vCPU あたりのコルーチン(ワーカー)数。同時実行数を増加させるために使用されます。デフォルト値は 16 です。

  • 環境変数の構成

    環境変数 KEY

    説明

    OSS_ACCESS_KEY_ID

    Alibaba Cloud アカウントまたは Resource Access Management (RAM) ユーザーの AccessKey ID および AccessKey Secret です。

    一時的なアクセストークンで権限を構成する場合は、この値を一時アクセス認証情報の AccessKey ID および AccessKey Secret に設定します。

    OSS コネクタは、対象バケットディレクトリに対して `oss:ListObjects` 権限を必要とします。アクセス対象のバケットおよびファイルが匿名アクセスをサポートしている場合は、`OSS_ACCESS_KEY_ID` および `OSS_ACCESS_KEY_SECRET` 環境変数を未設定のままにするか、空文字列に設定できます。

    OSS_ACCESS_KEY_SECRET

    OSS_SESSION_TOKEN

    一時的なアクセストークンです。Security Token Service (STS) から取得した一時アクセス認証情報を使用して OSS にアクセスする場合、このパラメーターを必ず設定してください。

    Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ID および AccessKey Secret を使用して権限を構成する場合は、このフィールドを空文字列に設定します。

    OSS_ENDPOINT

    OSS サービスのエンドポイントを指定します。例:http://oss-cn-beijing-internal.aliyuncs.com。プロトコルを明示しない場合、デフォルトで HTTPS が使用されます。内部ネットワークなどのセキュアな環境では、パフォーマンス向上のため HTTP プロトコルの使用を推奨します。

    OSS_REGION

    OSS のリージョン 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` パラメーターで調整可能です。

    • ローカルモデルディレクトリは、コネクタによるモデル読み込み専用に使用してください。他の目的には使用しないでください。

    • ローカルモデルディレクトリを、ossfs などの別の OSS マウントターゲット上に作成しないでください。

    LD_PRELOAD

    プリロード対象の動的ライブラリのパスで、通常は /usr/local/lib/libossc_preload.so です。一時的な環境変数として設定することを推奨します。例:LD_PRELOAD=/usr/local/lib/libossc_preload.so ENABLE_CONNECTOR=1 ./myapp

    ENABLE_CONNECTOR

    OSS コネクタのプロセスロールを設定します。一時的な環境変数で有効化します。

    • `ENABLE_CONNECTOR=1`:プライマリコネクタロール

    • `ENABLE_CONNECTOR=2`:セカンダリコネクタロール

    単一の実行中のインスタンスでは、プライマリコネクタプロセスは 1 つだけ許可されます。メインプロセス(例:エントリポイント)にプライマリロールを割り当てることを推奨します。コネクタを利用するその他のすべてのプロセスには、セカンダリコネクタロールを割り当てる必要があります。詳細については、「マルチノード起動における ray+vllm の例」をご参照ください。

モデルサービスの起動

シングルノード起動

vllm API サーバー

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 サーバー

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 は Pod の IP アドレスです。この値を head Pod の IP アドレスに置き換えてください。クラスターへの参加コマンドは、Pod A で `ray start` を実行した後の出力に表示されます。

vllm API サーバーを起動します:

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 をデプロイするには、まずコネクタをインストール済みのイメージをビルドし、リポジトリへプッシュします。以下の YAML ファイルは、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

中国 (北京)、内部ネットワークでのダウンロード帯域幅:250 Gbps

テストノード

ecs.g7nex.32xlarge、ネットワーク帯域幅:160 Gbps(80 Gbps × 2)

統計メトリック

メトリック

説明

モデルダウンロード

コネクタを用いたモデルファイルのダウンロード開始から完了までの時間です。

エンドツーエンド

vllm API サーバーの CPU 版が起動して準備完了状態になるまでの時間です。

テスト結果

モデル名

モデルサイズ(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