Skip to content

MLC-LLM 通用模型部署

MLC-LLM 是一个基于 Apache TVM 的通用大模型部署框架,通过编译优化将模型部署到各种硬件平台,包括 GPU、CPU、手机和浏览器,实现真正的跨平台推理。

MLC-LLM跨平台部署

核心架构

MLC-LLM 的技术栈:

  • Apache TVM Unity:编译后端,支持自动算子优化
  • Relax:TVM 的高级中间表示,支持动态形状
  • MLC Engine:轻量推理运行时,C++ 实现
  • MLC Chat:多平台客户端 SDK
python
# 模型编译
from mlc_llm import compile_model

# 编译为 CUDA 目标
compile_model(
    model="meta-llama/Llama-2-7b-hf",
    quantization="q4f16_1",  # 4-bit 量化 + FP16
    target="cuda",
    max_seq_len=4096,
    output="/path/to/output",
)

# 编译为 Android 目标
compile_model(
    model="meta-llama/Llama-2-7b-hf",
    quantization="q4f16_1",
    target="android",
    max_seq_len=2048,
    output="/path/to/android_output",
)

量化方案

MLC-LLM 支持的量化方案:

方案描述压缩比适用平台
q4f16_14-bit 量化 + FP16 残差~4xGPU/手机
q4f32_14-bit 量化 + FP32 残差~3.5xCPU
q8f16_18-bit 量化 + FP16 残差~2xGPU
q0f16无量化 FP161x高端 GPU
q0f32无量化 FP321xCPU

多平台部署

bash
# iOS 部署
mlc_llm compile \
  --model meta-llama/Llama-2-7b-hf \
  --quantization q4f16_1 \
  --target iphone \
  --max-seq-len 2048 \
  -o dist/Llama-2-7b-ios/

# Web 浏览器部署
mlc_llm compile \
  --model meta-llama/Llama-2-7b-hf \
  --quantization q4f16_1 \
  --target webgpu \
  --max-seq-len 1024 \
  -o dist/Llama-2-7b-web/

WebGPU 部署

MLC-LLM 是目前少数支持在浏览器中运行大模型的框架。通过 WebGPU 后端,7B 模型在 Chrome 中可以达到 10-15 tok/s 的推理速度。

Python 推理

python
from mlc_llm import MLCEngine

engine = MLCEngine(
    model="dist/Llama-2-7b-q4f16_1",
    model_lib="dist/Llama-2-7b-q4f16_1/lib.so",
)

response = engine.chat.completions.create(
    messages=[{"role": "user", "content": "解释编译优化"}],
    max_tokens=256,
    temperature=0.7,
)
print(response.choices[0].message.content)

编译时间

模型编译可能需要 10-60 分钟,取决于模型大小和目标平台。编译产物可缓存复用,后续部署无需重新编译。

相关资源

最近更新