All Products
Search
Document Center

Object Storage Service:Tingkatkan efisiensi penerapan model dengan OSS Connector untuk AI/ML

Last Updated:Apr 03, 2026

OSS Connector for AI/ML menawarkan solusi pemuatan model non-intrusif yang tidak memerlukan perubahan kode. Solusi ini menggunakan LD_PRELOAD untuk pembacaan langsung berkinerja-tinggi dari OSS, serta mendukung pra-ambil (prefetching) dan cache guna meningkatkan kecepatan pemuatan model secara signifikan. Solusi ini kompatibel dengan kontainer dan framework inferensi utama.

Berkinerja-tinggi

OSS Connector for AI/ML secara signifikan meningkatkan kinerja saat memuat model besar dari OSS. Dengan bandwidth yang mencukupi, throughput dapat melebihi 10 GB/s. Untuk informasi lebih lanjut, lihat Pengujian kinerja.

Cara kerja

OSS Connector for AI/ML mengatasi hambatan kinerja yang terjadi saat Anda memuat model besar dari OSS di lingkungan cloud.

  • Solusi mount tradisional berbasis Filesystem in Userspace (FUSE) sering kali tidak dapat memanfaatkan bandwidth tinggi OSS secara optimal, sehingga menyebabkan pemuatan model menjadi lambat. OSS Connector meningkatkan efisiensi akses data dengan mencegat permintaan I/O dari framework inferensi dan mengonversinya langsung menjadi permintaan HTTP(S) ke OSS.

  • Solusi ini menggunakan mekanisme LD_PRELOAD untuk melakukan pra-ambil dan menyimpan data model dalam memori. Pendekatan ini tidak memerlukan perubahan kode pada aplikasi inferensi Anda dan secara signifikan mempercepat pemuatan model.

Lingkungan penerapan

  • Sistem operasi: Linux x86-64

  • glibc: >=2.17

Instal OSS Connector

  1. Unduh paket instalasi lengkap.

    • oss-connector-lib-1.1.0rc7.x86_64.rpm: Untuk distribusi Linux berbasis 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: Untuk distribusi Linux berbasis Debian

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

    Gunakan paket .rpm atau .deb yang telah diunduh untuk instalasi. File pustaka dinamis libossc_preload.so akan otomatis diinstal ke direktori /usr/local/lib/.

    • Instal oss-connector-lib-1.1.0rc7.x86_64.rpm

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

      dpkg -i oss-connector-lib-1.1.0rc7.x86_64.deb
  3. Setelah instalasi, verifikasi bahwa /usr/local/lib/libossc_preload.so ada dan versinya benar.

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

Konfigurasikan OSS Connector

  • File konfigurasi

    Anda dapat menggunakan file konfigurasi untuk mengontrol output log, kebijakan cache, dan konkurensi pra-ambil. Pengaturan parameter ini secara tepat dapat meningkatkan kinerja dan kemudahan pemeliharaan sistem.

    File konfigurasi terletak di /etc/oss-connector/config.json. Paket instalasi mencakup file konfigurasi default, seperti ditunjukkan di bawah ini:

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

    Parameter

    Deskripsi

    logLevel

    Tingkat log. Mengontrol tingkat detail output log.

    logPath

    Jalur file log. Menentukan lokasi output log waktu proses.

    auditPath

    Jalur file log audit. Mencatat informasi audit untuk pelacakan keamanan dan kepatuhan.

    expireTimeSec

    Waktu penundaan pelepasan file cache dalam detik. File dilepaskan setelah jeda ketika tidak ada referensi. Nilai default adalah 120 detik.

    prefetch.vcpus

    Jumlah CPU virtual (core CPU konkuren) yang digunakan untuk pra-ambil. Nilai default adalah 16.

    prefetch.workers

    Jumlah korutin (worker) per vCPU. Digunakan untuk meningkatkan konkurensi. Nilai default adalah 16.

  • Konfigurasikan variabel lingkungan

    Variabel Lingkungan KEY

    Deskripsi

    OSS_ACCESS_KEY_ID

    ID AccessKey dan Rahasia AccessKey dari Akun Alibaba Cloud atau Pengguna Resource Access Management (RAM).

    Saat Anda mengonfigurasi izin dengan token akses temporary, atur nilai ini ke ID AccessKey dan Rahasia AccessKey dari kredensial akses temporary tersebut.

    OSS Connector memerlukan izin `oss:ListObjects` untuk direktori bucket target. Jika bucket dan file yang Anda akses mendukung akses anonim, Anda dapat membiarkan variabel lingkungan `OSS_ACCESS_KEY_ID` dan `OSS_ACCESS_KEY_SECRET` tidak diatur atau diatur ke string kosong.

    OSS_ACCESS_KEY_SECRET

    OSS_SESSION_TOKEN

    Token akses temporary. Anda harus mengatur parameter ini saat menggunakan kredensial akses temporary dari Security Token Service (STS) untuk mengakses OSS.

    Saat Anda menggunakan ID AccessKey dan Rahasia AccessKey dari Akun Alibaba Cloud atau Pengguna RAM untuk konfigurasi izin, atur field ini ke string kosong.

    OSS_ENDPOINT

    Menentukan Endpoint layanan OSS. Contoh: http://oss-cn-beijing-internal.aliyuncs.com. Jika Anda tidak menentukan protokol, HTTPS digunakan secara default. Kami merekomendasikan penggunaan protokol HTTP di lingkungan aman, seperti jaringan internal, untuk kinerja yang lebih baik.

    OSS_REGION

    Menentukan ID Region OSS. Contoh: cn-beijing. Jika tidak ditentukan, otentikasi mungkin gagal.

    OSS_PATH

    Direktori model OSS. Formatnya adalah `oss://bucketname/path/`. Contoh: oss://examplebucket/qwen/Qwen3-8B/.

    MODEL_DIR

    Direktori model lokal yang diteruskan ke vllm atau framework inferensi lainnya. Kami merekomendasikan mengosongkan direktori terlebih dahulu. Data sementara diunduh selama penggunaan dan dapat dihapus setelahnya.

    Catatan
    • Jalur `MODEL_DIR` harus konsisten dengan jalur model framework inferensi, seperti parameter `--model` untuk vllm atau parameter `--model-path` untuk sglang.

    • `MODEL_DIR` memerlukan izin baca dan tulis. Struktur direktori `MODEL_DIR` sesuai dengan `OSS_PATH`.

    • Selama pemuatan model, file model dipra-ambil dan di-cache dalam memori. Cache dilepaskan setelah jeda ketika model dimuat. Waktu tunda default adalah 120 detik. Anda dapat menyesuaikannya dengan parameter `expireTimeSec` dalam file konfigurasi.

    • Gunakan direktori model lokal hanya untuk memuat model dengan connector. Direktori ini tidak boleh digunakan untuk tujuan lain.

    • Jangan membuat direktori model lokal pada titik pemasangan OSS lainnya, seperti titik pemasangan ossfs.

    LD_PRELOAD

    Jalur pustaka dinamis yang akan dipraload, biasanya /usr/local/lib/libossc_preload.so. Kami merekomendasikan mengonfigurasi ini menggunakan variabel lingkungan sementara. Contoh: LD_PRELOAD=/usr/local/lib/libossc_preload.so ENABLE_CONNECTOR=1 ./myapp

    ENABLE_CONNECTOR

    Mengatur peran proses OSS Connector. Gunakan variabel lingkungan sementara agar berlaku.

    • `ENABLE_CONNECTOR=1`: Peran connector utama.

    • `ENABLE_CONNECTOR=2`: Peran connector sekunder.

    Satu instans yang berjalan hanya dapat memiliki satu proses connector utama. Kami merekomendasikan menetapkan peran utama ke proses utama, seperti entrypoint. Semua proses lain yang menggunakan connector harus diberi peran connector sekunder. Untuk informasi lebih lanjut, lihat contoh ray+vllm untuk startup multi-node.

Jalankan layanan model

Startup single-node

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 

Startup Multi-node

ray+vllm

Variabel lingkungan umum:

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
Penting

Variabel OSS_PATH dan MODEL_DIR harus saling berkorespondensi. Misalnya, jika jalur model di OSS adalah oss://examplebucket/qwen/Qwen2___5-72B/, maka direktori model lokal adalah /tmp/models/qwen/Qwen2___5-72B/.

Pod A menjalankan 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 menjalankan ray dan bergabung ke kluster:

LD_PRELOAD=/usr/local/lib/libossc_preload.so ENABLE_CONNECTOR=1 ray start --address='172.24.176.137:6379' --block     // 172.24.176.137 adalah IP pod. Ubah ini ke alamat IP pod head. Perintah untuk bergabung ke kluster disediakan dalam output setelah Anda menjalankan `ray start` di Pod A.

Jalankan 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

Konfigurasikan variabel lingkungan untuk proses sglang di setiap node.

Startup node utama:

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 

Startup node sekunder:

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 

Penerapan Kubernetes

Untuk menerapkan pod di lingkungan Kubernetes, pertama-tama buat image dengan connector yang telah diinstal dan dorong image tersebut ke repositori. File YAML berikut merupakan contoh penerapan pod Kubernetes:

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

Pengujian kinerja

Pengujian pemuatan model single-node

Lingkungan pengujian

Metrik

Deskripsi

OSS

Beijing, bandwidth unduh jaringan internal 250 Gbps

Node pengujian

ecs.g7nex.32xlarge, lebar pita jaringan 160 Gbps (80 Gbps × 2)

Metrik statistik

Metrik

Deskripsi

Pengunduhan model

Waktu dari awal hingga selesai pengunduhan file model menggunakan connector.

End-to-end

Waktu yang dibutuhkan server API vllm versi CPU untuk mulai berjalan dan siap digunakan.

Hasil pengujian

Nama model

Ukuran model (GB)

Waktu pengunduhan model (detik)

Waktu end-to-end (detik)

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