DeepSeek&Qwen ONNX格式部署平台

ChatBase

项目描述

ChatBase 是一个基于 ONNX Runtime 的聊天机器人项目,主要用于加载和运行大型语言模型 (LLM),如 DeepSeek 和 Qwen 模型。该项目支持通过消息列表格式输入提示,并生成响应。目前聚焦于 LLM 的自回归生成,支持 CUDA 加速。

项目目标是构建一个简单的聊天基础框架,可扩展到 ASR (自动语音识别) 和 TTS (文本转语音) 模块。

目录结构

ChatBase/
├── configs
├── deepseek_gpu.png
├── deepseek.png
├── model_classes
│   ├── modelloader.py
│   └── __pycache__
│       ├── modelloader.cpython-310.pyc
│       └── modelloader.cpython-313.pyc
├── models
│   ├── ASR
│   ├── LLM
│   │   ├── deepseek_r1_1.5b_onnx
│   │   │   ├── config.json
│   │   │   ├── configuration.json
│   │   │   ├── generation_config.json
│   │   │   ├── model.onnx
│   │   │   ├── model.onnx_data
│   │   │   ├── special_tokens_map.json
│   │   │   ├── tokenizer_config.json
│   │   │   └── tokenizer.json
│   │   └── qwen2.5_1.5b_onnx
│   │       ├── added_tokens.json
│   │       ├── config.json
│   │       ├── generation_config.json
│   │       ├── merges.txt
│   │       ├── model.onnx
│   │       ├── model.onnx_data
│   │       ├── special_tokens_map.json
│   │       ├── tokenizer_config.json
│   │       ├── tokenizer.json
│   │       └── vocab.json
│   └── TTS
├── model_utils
├── qwen_gpu.png
├── qwen.png
├── README.md
├── req.info
└── run.py
11 directories, 28 files

安装

依赖

项目依赖于多个 Python 包,包括但不限于:

  • onnxruntime-gpu
  • transformers
  • torch
  • numpy

完整依赖列表见 req.info 文件。您可以使用以下命令安装:

pip install -r req.info

注意:对于 GPU 支持,需要安装 CUDA 和相应的驱动程序。

模型下载

  1. 下载 DeepSeek 或 Qwen 模型的 ONNX 版本。
  2. 将模型文件放置在 models/LLM/ 目录下,例如 deepseek_r1_1.5b_onnx/

使用

运行主程序

执行以下命令启动交互式聊天:

python run.py
  • 输入提示(如 “你好”),模型将生成响应。
  • 输入 “exit” 退出。

程序会使用 messages 列表构建提示,包括系统提示(如 “你的名字叫 Brisk, 你是机器人大脑, 任何回答都要用中文”)。

自定义

  • 修改 run.py 中的 messages 结构以调整系统提示或历史对话。
  • model_classes/modelloader.py 中调整生成参数,如 top_ptop_ktemperature

项目结构

  • configs/: 配置文件目录(当前为空)。
  • model_classes/:
    • modelloader.py: ONNXLoader 类,用于加载 ONNX 模型、处理输入和生成响应。
  • model_utils/: 模型工具目录(当前为空)。
  • models/:
    • ASR/: 语音识别模型(未实现)。
    • LLM/: 大型语言模型目录,包括 DeepSeek 和 Qwen 的 ONNX 文件。
    • TTS/: 文本转语音模型(未实现)。
  • run.py: 主入口脚本,支持交互式输入和响应生成。
  • req.info: 依赖包列表。

注意事项

  • 性能: 项目使用 CUDAExecutionProvider,需要 NVIDIA GPU 和 CUDA 环境。CPU 模式可用但较慢。
  • 错误处理: 如果遇到维度不匹配或推理错误,请检查输入形状和模型兼容性。
  • 扩展: 项目设计为模块化,可添加 ASR 和 TTS 支持以构建完整语音聊天系统。
  • 许可证: (如果适用,请添加)。

如有问题,欢迎提交 issue 或贡献代码!

实现细节

核心实现

项目的主要功能通过 model_classes/modelloader.py 中的 ONNXLoader 类实现。该类负责加载 ONNX 模型、处理输入提示(支持字符串或消息列表格式)、执行自回归生成,并返回生成的响应。

  • 模型加载: 使用 ONNX Runtime 的 InferenceSession 加载模型,支持 CUDA 或 CPU 执行提供者。
  • 输入处理: 对于消息列表,使用 transformers 库的 apply_chat_template 应用聊天模板;对于字符串提示,直接使用 tokenizer 编码。手动创建 attention mask 和 position ids 以兼容模型输入。
  • 生成循环: 实现自回归生成,逐个 token 生成响应,直到达到最大长度或遇到 EOS token。

使用的技术

  • ONNX Runtime: 用于高效推理 ONNX 格式的模型,支持 GPU 加速(CUDAExecutionProvider)。
  • Transformers: 提供 tokenizer 和聊天模板处理,支持 Hugging Face 模型生态。
  • PyTorch: 处理 logits 计算、采样和 softmax 操作。
  • NumPy: 用于数组操作和张量转换。
  • 其他: 支持 top-k/top-p 采样、temperature 调整和重复惩罚。

算法与机制

  • 自回归生成 (Autoregressive Generation): 模型基于当前序列预测下一个 token,逐步构建响应。
  • 采样算法:
    • Top-k Sampling: 仅从概率最高的 k 个 token 中采样。
    • Top-p (Nucleus) Sampling: 从累计概率超过 p 的最小 token 集合中采样。
    • Temperature Scaling: 调整 logits 以控制随机性(temperature < 1 使输出更确定,> 1 增加多样性)。
  • 重复惩罚: 对已生成 token 的 logits 应用惩罚以减少重复。
  • 停止条件: 检测 EOS token 或达到最大生成长度。

这些机制确保生成的响应连贯、多样且相关。如果需要自定义采样参数,可在 ONNXLoader 初始化时调整 top_ptop_ktemperature

示例截图

DeepSeek 运行截图

在这里插入图片描述

此截图展示了模型在交互模式下的运行示例,包括用户输入、模型生成的响应,以及终端输出日志。展示了自回归生成的过程和最终输出。

GPU 资源消耗截图

在这里插入图片描述

此截图显示了模型推理过程中 GPU 的资源消耗情况,包括内存使用率、利用率等指标。项目使用 CUDA 加速,确保高效运行大型模型。

Qwen 运行截图

在这里插入图片描述

此截图展示了模型在交互模式下的运行示例,包括用户输入、模型生成的响应,以及终端输出日志。展示了自回归生成的过程和最终输出。

GPU 资源消耗截图

在这里插入图片描述

此截图显示了模型推理过程中 GPU 的资源消耗情况,包括内存使用率、利用率等指标。项目使用 CUDA 加速,确保高效运行大型模型。

获取项目源码以及模型文件请关注公众号“CrazyNET”回复“llmchat”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值