OSS Connector for AI/ML 提供免改造、无侵入的模型加载方案,通过 LD_PRELOAD 实现高性能OSS直读,支持预取与缓存,显著提升模型加载速度,适用于容器及主流推理框架。
工作原理
OSS Connector for AI/ML旨在解决云环境下加载大型模型时的性能瓶颈,尤其是模型存储在OSS中的场景。
传统基于FUSE的POSIX挂载方案,往往无法充分发挥OSS的高带宽优势,导致模型加载速度缓慢。OSS Connector通过拦截推理框架的I/O请求,并将其直接转换为对 OSS 的 HTTP(s) 请求,有效提升了数据访问效率。
采用 LD_PRELOAD 机制,无需对推理应用程序进行任何代码修改,即可将模型数据预取并缓存到内存中,从而显著加快模型加载速度。
配置OSS Connector
创建配置文件。
配置文件主要用于控制OSS Connector的日志输出、缓存策略和预取并发能力。合理设置配置文件的部分参数可以提升系统性能和可维护性。
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 } }参数
说明
logLevel
日志级别,控制日志输出的详细程度。
logPath
日志文件路径,指定运行日志的输出位置。
auditPath
审计日志文件路径,记录操作审计信息,便于安全合规追踪。
expireTimeSec
缓存文件的延迟释放时间(秒),无引用时延迟释放,默认120秒。
prefetch.vcpus
预取时使用的虚拟CPU数(并发CPU核心数),默认值16。
prefetch.workers
每个vCPU下的协程(worker)数量,用于提升并发度,默认值16。
创建OSS Secret。
apiVersion: v1 kind: Secret metadata: name: access-key-oss stringData: fs.oss.accessKeyId: <YOUR-BUCKET-AK> # 阿里云账号或者RAM用户的AccessKey ID fs.oss.accessKeySecret: <YOUR-BUCKET-SK> # 阿里云账号或者RAM用户的AccessKey Secret fs.oss.endpoint: <YOUR-BUCKET-ENDPOINT> # 指定OSS服务Endpoint,请修改为实际Endpoint,如oss-cn-beijing-internal.aliyuncs.com fs.oss.path: oss://<YOUR-BUCKET-NAME>/qwen/Qwen3-8B/ # 指定OSS模型所在目录,请修改为实际目录
安装OSS Connector
选择安装方式。
.deb包
wget https://gosspublic.alicdn.com/oss-connector/oss-connector-lib-1.1.0rc7.x86_64.deb dpkg -i oss-connector-lib-1.1.0rc7.x86_64.deb.rpm包
yum install -y https://gosspublic.alicdn.com/oss-connector/oss-connector-lib-1.1.0rc7.x86_64.rpm以上安装方式同样适用于在基础镜像中安装OSS Connector。
以使用.deb包方式为例,通过修改启动命令,安装并使用OSS Connector。
安装命令后还需添加
LD_PRELOAD=/usr/local/lib/libossc_preload.so ENABLE_CONNECTOR=1以启用OSS Connector。apiVersion: apps/v1 kind: Deployment metadata: labels: app: my-deployment name: qwen-oss-connector namespace: default spec: replicas: 1 selector: matchLabels: app: my-deployment template: metadata: labels: alibabacloud.com/compute-class: gpu alibabacloud.com/gpu-model-series: L20 app: my-deployment spec: containers: - command: - sh - -c # 修改启动命令,安装OSS Connector,并添加 LD_PRELOAD 和 ENABLE_CONNECTOR 环境变量 - wget https://gosspublic.alicdn.com/oss-connector/oss-connector-lib-1.1.0rc7.x86_64.deb; dpkg -i oss-connector-lib-1.1.0rc7.x86_64.deb; LD_PRELOAD=/usr/local/lib/libossc_preload.so ENABLE_CONNECTOR=1 python3 -m vllm.entrypoints.openai.api_server --model /tmp/model --trust-remote-code --tensor-parallel-size 1 --disable-custom-all-reduce env: - name: OSS_ENDPOINT valueFrom: secretKeyRef: name: access-key-oss key: fs.oss.endpoint - name: OSS_PATH valueFrom: secretKeyRef: name: access-key-oss key: fs.oss.path - name: MODEL_DIR value: /tmp/model - name: OSS_ACCESS_KEY_ID valueFrom: secretKeyRef: name: access-key-oss key: fs.oss.accessKeyId - name: OSS_ACCESS_KEY_SECRET valueFrom: secretKeyRef: name: access-key-oss key: fs.oss.accessKeySecret #示例镜像,请替换为实际镜像地址 image: egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/llm-inference:vllm0.5.4-deepgpu-llm24.7-pytorch2.4.0-cuda12.4-ubuntu22.04 imagePullPolicy: IfNotPresent name: my-deployment ports: - containerPort: 8000 name: pytorch protocol: TCP resources: limits: cpu: "8" memory: 64Gi nvidia.com/gpu: "1" requests: cpu: "8" memory: 64Gi nvidia.com/gpu: "1"环境变量
env配置说明:环境变量 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 ./myappENABLE_CONNECTOR
设置OSS Connector进程角色。请使用临时环境变量注入方式使其生效。
ENABLE_CONNECTOR=1:主Connector角色。
ENABLE_CONNECTOR=2 :从Connector角色。
单个运行实例内有且只能有一个进程为主Connector角色,建议用于主进程(如entrypoint)。其余使用Connector的进程需指定为从Connector角色。使用方法,请参见多节点启动下的ray+vllm案例。
常见问题
如何在基础镜像中安装OSS Connector?
可参考以下示例Dockerfile构建镜像。
FROM egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/llm-inference:vllm0.5.4-deepgpu-llm24.7-pytorch2.4.0-cuda12.4-ubuntu22.04
WORKDIR /
RUN wget https://gosspublic.alicdn.com/oss-connector/oss-connector-lib-1.1.0rc7.x86_64.deb
RUN dpkg -i oss-connector-lib-1.1.0rc7.x86_64.deb对于基于Red Hat系列的Linux发行版的基础镜像,可使用.rpm包方式。