Skip to main content

llmexport: A toolkit to export llm to onnx or mnn.

Project description

LLM-Export

PyPI version Python 3.8+ License: MIT

English | 中文

一个高效的大语言模型导出工具,能够将 LLM 模型导出为 ONNX 和 MNN 格式,支持量化优化和多模态模型。

✨ 主要特性

  • 🚀 动态形状支持:优化原始代码,支持动态输入形状
  • 🚀 模型优化:减少常量部分,提升推理性能
  • 🚀 自动优化:集成 OnnxSlim 优化 ONNX 模型,性能提升约 5% (感谢 @inisis)
  • 🚀 LoRA 支持:支持 LoRA 权重的合并/分离导出
  • 🚀 量化技术:支持 AWQ、GPTQ、HQQ等多种量化方法
  • 🚀 EAGLE 支持:支持 EAGLE 推理加速技术
  • 🚀 多模态支持:支持文本、图像、音频等多模态模型
  • 🚀 推理框架:提供 MNNONNX 推理代码

📜 快速开始

安装

# 从 PyPI 安装(推荐)
pip install llmexport

# 从 GitHub 安装最新版本
pip install git+https://github.com/wangzhaode/llm-export@master

# 本地开发安装
git clone https://github.com/wangzhaode/llm-export
cd llm-export
pip install -e .

基本用法

1. 下载模型

# 使用 Hugging Face CLI
huggingface-cli download Qwen/Qwen2.5-1.5B-Instruct --local-dir Qwen2.5-1.5B-Instruct

# 或使用 ModelScope(国内用户推荐)
modelscope download Qwen/Qwen2.5-1.5B-Instruct --local_dir Qwen2.5-1.5B-Instruct

2. 模型测试

# 文本对话测试
llmexport --path Qwen2.5-1.5B-Instruct --test "你好,请介绍一下你自己"

# 多模态测试(图像+文本)
llmexport --path Qwen2-VL-2B-Instruct --test "<img>image_url</img>描述一下这张图片"

3. 模型导出

# 导出为 ONNX 格式
llmexport --path Qwen2.5-1.5B-Instruct --export onnx

# 导出为 MNN 格式(默认 4bit 量化)
llmexport --path Qwen2.5-1.5B-Instruct --export mnn

# 自定义量化参数
llmexport --path Qwen2.5-1.5B-Instruct --export mnn --quant_bit 8 --quant_block 128

# 导出 EAGLE 模型
llmexport --path Qwen2.5-1.5B-Instruct --export mnn --eagle_path path/to/eagle

🔧 高级功能

模型导出选项

  • ONNX 导出:使用 --export onnx 导出为 ONNX 格式
  • MNN 导出:使用 --export mnn 导出为 MNN 格式
  • 模型优化:默认启用 OnnxSlim 优化,使用 --onnx_slim 显式启用
  • EAGLE 导出:使用 --eagle_path 导出 EAGLE 加速模型

量化配置

  • 量化位数--quant_bit 4/8 (默认 4bit)
  • 量化块大小--quant_block 64/128 (默认 64)
  • LM Head 量化--lm_quant_bit 单独设置输出层量化
  • 对称量化--sym 启用对称量化(无零点)

量化算法支持

  • AWQ 量化--awq 启用 AWQ 量化
  • HQQ 量化--hqq 启用 HQQ 量化
  • GPTQ 量化--gptq_path 加载 GPTQ 量化模型
  • Smooth 量化--smooth 启用 Smooth 量化

LoRA 支持

  • LoRA 合并--lora_path 指定 LoRA 权重路径
  • LoRA 分离--lora_split 分离导出 LoRA 权重

多模态支持

  • 视觉量化--visual_quant_bit--visual_quant_block 设置视觉模块量化
  • 视觉对称--visual_sym 视觉模块对称量化

其他选项

  • 详细输出--verbose 显示详细日志
  • 性能评估--ppl 获取所有 token 的 logits
  • 自定义输出--dst_path 指定输出目录(默认 ./model
  • EAGLE 支持--eagle_path 指定 EAGLE 模型路径

📎 命令行参数

基本参数

参数 类型 说明
--path 必需 模型路径,支持本地目录或 Hugging Face 模型 ID
--export 可选 导出格式:onnxmnn
--test 可选 测试查询字符串
--dst_path 可选 输出目录(默认 ./model
--verbose 开关 显示详细日志

量化参数

参数 默认值 说明
--quant_bit 4 量化位数(4 或 8)
--quant_block 64 量化块大小(0 表示通道级量化)
--lm_quant_bit quant_bit LM Head 层量化位数
--visual_quant_bit 模型相关 视觉模块量化位数
--visual_quant_block 模型相关 视觉模块量化块大小

量化算法

参数 说明
--awq 启用 AWQ 量化
--hqq 启用 HQQ 量化
--smooth 启用 Smooth 量化
--sym 启用对称量化(无零点)
--visual_sym 视觉模块对称量化

LoRA 支持

参数 说明
--lora_path LoRA 权重路径
--lora_split 分离导出 LoRA 权重

EAGLE 支持

参数 说明
--eagle_path EAGLE 模型路径

其他选项

参数 说明
--tokenizer_path 分词器路径(默认使用 --path
--gptq_path GPTQ 量化模型路径
--mnnconvert 本地 MNNConvert 路径
--onnx_slim 启用 ONNX-Slim 优化
--ppl 获取所有 token 的 logits
--seperate_embed 分离嵌入层以避免量化
--calib_data 校准数据路径

📋 支持模型

目前支持以下模型类型:

文本模型

  • Qwen 系列:Qwen3、Qwen2.5、Qwen2、Qwen1.5、Qwen-VL 等
  • LLaMA 系列:Llama-3.2、Llama-3、Llama-2 等
  • ChatGLM 系列:ChatGLM4、ChatGLM3、ChatGLM2 等
  • Baichuan 系列:Baichuan2-7B-Chat 等
  • Yi 系列:Yi-6B-Chat 等
  • 其他:InternLM、DeepSeek、Phi、Gemma、TinyLlama、SmolLM 等

多模态模型

  • 视觉模型:Qwen2-VL、Qwen2.5-VL、Qwen3-VL、Llama-3.2-Vision、InternVL 等
  • 音频模型:Qwen2-Audio、Qwen2.5-Omni 等

嵌入模型

  • 文本嵌入:bge-large-zh、gte-multilingual 等

💾 模型下载

我们提供了已经优化的模型下载:

部分热门模型:

模型 Hugging Face ModelScope
DeepSeek-R1-1.5B-Qwen Q4_1 Q4_1
Qwen2.5-0.5B-Instruct Q4_1 Q4_1
Qwen2.5-1.5B-Instruct Q4_1 Q4_1
GPT-OSS-20B Q4_1 Q4_1
Qwen3-4B-Instruct-2507 Q4_1 Q4_1

更多模型请查看完整列表。

🔗 相关项目

  • MNN 推理mnn-llm - MNN 框架的 LLM 推理库
  • ONNX 推理onnx-llmOnnxLLM - ONNX 格式推理库
  • 模型优化OnnxSlim - ONNX 模型优化工具

📄 许可证

本项目采用 Apaache 2.0 许可证

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

llmexport-0.0.5.tar.gz (134.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

llmexport-0.0.5-py3-none-any.whl (142.6 kB view details)

Uploaded Python 3

File details

Details for the file llmexport-0.0.5.tar.gz.

File metadata

  • Download URL: llmexport-0.0.5.tar.gz
  • Upload date:
  • Size: 134.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for llmexport-0.0.5.tar.gz
Algorithm Hash digest
SHA256 070525233c232501228322d8bb303fe1e4cd0e0c793c3d1f4fae7649c025e895
MD5 fe3233a0f0a004c0dbc1a68ca7f6dcb0
BLAKE2b-256 9efaf3a9e2f70c62014f55ec35b839ad803f303c290a11814cf99f7ddd0f0ed4

See more details on using hashes here.

Provenance

The following attestation bundles were made for llmexport-0.0.5.tar.gz:

Publisher: release.yml on wangzhaode/llm-export

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file llmexport-0.0.5-py3-none-any.whl.

File metadata

  • Download URL: llmexport-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 142.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for llmexport-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 c29aeda941183502d8fbe2d02e06011c833fb5424eb3473cf425a51cfef0a1d9
MD5 b4caba75e8157571e3ddf8211efc75a7
BLAKE2b-256 d6b833d253c79717e0f71a069ae1c68dc49d040ecc7361fd90b61ac1391d2546

See more details on using hashes here.

Provenance

The following attestation bundles were made for llmexport-0.0.5-py3-none-any.whl:

Publisher: release.yml on wangzhaode/llm-export

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page