OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  代码  ›  LoRAX — 面向多 LoRA 模型热切换的推理服务器

LoRAX — 面向多 LoRA 模型热切换的推理服务器

 
  awake ·  2026-07-21 11:00:19 · 21 次点击  · 0 条评论  

LoRAX Logo

_LoRAX:可扩展到数千个微调大语言模型的多 LoRA 推理服务器_ [![加入 Discord](https://dcbadge.vercel.app/api/server/CBgdrGnZjy?style=flat&theme=discord-inverted)](https://discord.gg/CBgdrGnZjy) [![许可证](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://github.com/predibase/lorax/blob/master/LICENSE) [![Artifact Hub](https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/lorax)](https://artifacthub.io/packages/search?repo=lorax)

LoRAX(LoRA 交换)是一个框架,允许用户在单个 GPU 上服务数千个微调模型,显著降低服务成本而不影响吞吐量或延迟。

📖 目录

🌳 特性

  • 🚅 动态适配器加载: 在请求中包含来自 HuggingFacePredibase任意文件系统的任何微调 LoRA 适配器,它将即时加载而不阻塞并发请求。按请求合并适配器以即时创建强大的集成模型。
  • 🏋️‍♀️ 异构连续批处理: 将不同适配器的请求打包到同一批次中,保持延迟和吞吐量几乎与并发适配器数量无关。
  • 🧁 适配器交换调度: 异步预取和卸载 GPU 与 CPU 内存之间的适配器,调度请求批处理以优化系统总吞吐量。
  • 👬 优化推理: 高吞吐量和低延迟优化,包括张量并行、预编译 CUDA 内核(flash-attentionpaged attentionSGMV)、量化、令牌流式传输。
  • 🚢 生产就绪: 预构建的 Docker 镜像、Kubernetes 的 Helm chart、Prometheus 指标和 OpenTelemetry 分布式追踪。兼容 OpenAI API,支持多轮对话。通过每请求租户隔离实现私有适配器。结构化输出(JSON 模式)。
  • 🤯 免费商用: Apache 2.0 许可证。无需多言 😎。

🏠 模型

使用 LoRAX 服务微调模型由两部分组成:

  • 基础模型 所有适配器共享的预训练大型模型。
  • 适配器 按请求动态加载的任务特定适配器权重。

LoRAX 支持多种大语言模型作为基础模型,包括 Llama(包括 CodeLlama)、Mistral(包括 Zephyr)和 Qwen。完整支持列表请参阅支持的架构

基础模型可以以 fp16 或通过 bitsandbytesGPT-QAWQ 进行量化加载。

支持的适配器包括使用 PEFTLudwig 库训练的 LoRA 适配器。模型中的任何线性层都可以通过 LoRA 进行调整并加载到 LoRAX 中。

🏃‍♂️ 快速开始

我们建议从预构建的 Docker 镜像开始,以避免编译自定义 CUDA 内核和其他依赖项。

前提条件

运行 LoRAX 的最低系统要求包括:

  • Nvidia GPU(Ampere 代或更高)
  • CUDA 11.8 及以上兼容设备驱动程序
  • Linux 操作系统
  • Docker(用于本指南)

启动 LoRAX 服务器

先决条件

安装 nvidia-container-toolkit
然后:
- sudo systemctl daemon-reload
- sudo systemctl restart docker

model=mistralai/Mistral-7B-Instruct-v0.1
volume=$PWD/data

docker run --gpus all --shm-size 1g -p 8080:80 -v $volume:/data \
    ghcr.io/predibase/lorax:main --model-id $model

有关令牌流式传输和 Python 客户端的完整教程,请参阅快速开始 - Docker

通过 REST API 进行推理

提示基础 LLM:

curl 127.0.0.1:8080/generate \
    -X POST \
    -d '{
        "inputs": "[INST] Natalia sold clips to 48 of her friends in April, and then she sold half as many clips in May. How many clips did Natalia sell altogether in April and May? [/INST]",
        "parameters": {
            "max_new_tokens": 64
        }
    }' \
    -H 'Content-Type: application/json'

提示 LoRA 适配器:

curl 127.0.0.1:8080/generate \
    -X POST \
    -d '{
        "inputs": "[INST] Natalia sold clips to 48 of her friends in April, and then she sold half as many clips in May. How many clips did Natalia sell altogether in April and May? [/INST]",
        "parameters": {
            "max_new_tokens": 64,
            "adapter_id": "vineetsharma/qlora-adapter-Mistral-7B-Instruct-v0.1-gsm8k"
        }
    }' \
    -H 'Content-Type: application/json'

有关完整详情,请参阅参考 - REST API

通过 Python 客户端进行推理

安装:

pip install lorax-client

运行:

from lorax import Client

client = Client("http://127.0.0.1:8080")

# 提示基础 LLM
prompt = "[INST] Natalia sold clips to 48 of her friends in April, and then she sold half as many clips in May. How many clips did Natalia sell altogether in April and May? [/INST]"
print(client.generate(prompt, max_new_tokens=64).generated_text)

# 提示 LoRA 适配器
adapter_id = "vineetsharma/qlora-adapter-Mistral-7B-Instruct-v0.1-gsm8k"
print(client.generate(prompt, max_new_tokens=64, adapter_id=adapter_id).generated_text)

有关完整详情,请参阅参考 - Python 客户端

其他运行 LoRAX 的方式,请参阅快速开始 - Kubernetes快速开始 - SkyPilot快速开始 - 本地

通过 OpenAI API 进行对话

LoRAX 通过兼容 OpenAI 的 API 支持多轮对话和动态适配器加载。只需将任意适配器指定为 model 参数即可。

from openai import OpenAI

client = OpenAI(
    api_key="EMPTY",
    base_url="http://127.0.0.1:8080/v1",
)

resp = client.chat.completions.create(
    model="alignment-handbook/zephyr-7b-dpo-lora",
    messages=[
        {
            "role": "system",
            "content": "你是一个友好的聊天机器人,始终以海盗风格回复",
        },
        {"role": "user", "content": "人在一顿饭里能吃多少架直升机?"},
    ],
    max_tokens=100,
)
print("回复:", resp.choices[0].message.content)

有关详情,请参阅OpenAI 兼容 API

下一步

以下是一些值得尝试的 Mistral-7B 微调模型:

你可以在这里找到更多 LoRA 适配器,或使用 PEFTLudwig 微调你自己的适配器。

🙇 致谢

LoRAX 基于 HuggingFace 的 text-generation-inference 构建,源于 v0.9.4(Apache 2.0 许可证)。

我们还要感谢 Punica 在 SGMV 内核方面的工作,该内核用于在高负载下加速多适配器推理。

🗺️ 路线图

我们的路线图在这里跟踪。

21 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私 ·  条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 16 ms
Developed with Cursor