当前位置: 首页 > news >正文

在NVIDIA Jetson平台离线部署大模型

在NVIDIA Jetson平台离线部署大模型,开启离线具身智能新纪元。

本项目提供一种将LMDeploy移植到NVIDIA Jetson系列边缘计算卡的方法,并在Jetson计算卡上运行InternLM系列大模型,为离线具身智能提供可能。

最新新闻🎉

  • [2024/3/15] 更新了对LMDeploy-v0.2.5。
  • [2024/2/26] 本项目被LMDeploy官方社区收录。

已验证模型/平台

  • ✅:已验证可运行
  • ❌:已验证不可运行
  • ⭕️:待验证
ModelsInternLM-7BInternLM-20BInternLM2-1.8BInternLM2-7BInternLM2-20B
Orin AGX(32G)
Jetpack 5.1

Mem:??/??
14.68 token/s

Mem:??/??
5.82 token/s

Mem:??/??
56.57 token/s

Mem:??/??
14.56 token/s

Mem:??/??
6.16 token/s
Orin NX(16G)
Jetpack 5.1

Mem:8.6G/16G
7.39 token/s

Mem:14.7G/16G
3.08 token/s

Mem:5.6G/16G
22.96 token/s

Mem:9.2G/16G
7.48 token/s

Mem:14.8G/16G
3.19 token/s
Xavier NX(8G)
Jetpack 5.1

Mem:4.35G/8G
28.36 token/s

未来工作

  • 更新更多型号Jetson板卡的Benchmark测试数据
  • 制作Jetson专用whl发行版
  • 跟进更新版本的LMDeploy

部署教程

Jetson端离线运行InternLM大模型

创建模型保存目录:

mkdir -p ~/models

将S1.服务器端模型W4A16量化得到的internlm-chat-7b-turbomind.tgz上传到models目录下。

解压模型文件:

tar zxvf internlm-chat-7b-turbomind.tgz -C .

0.Bug解决:修改MMEngine库

Jetson端的pytorch不支持分布式的reduce算子,这会导致MMEngine库中与分布式有关的部分出现错误。

错误为:

AttributeError: module 'torch.distributed' has no attribute 'ReduceOp'

激活conda环境:

conda activate lmdeploy

用解释器方式运行python:

python

输入如下内容:

import mmengine
print(mmengine.__file__)

这就输出了MMEngine库的安装位置,笔者的是/home/nvidia/miniconda3/envs/lmdeploy/lib/python3.8/site-packages/mmengine/__init__.py,那么相应位置就是home/nvidia/miniconda3/envs/lmdeploy/lib/python3.8/site-packages/mmengine/,咱们用<path/to/mmengine>代替。

修改<path/to/mmengine>/logging/logger.py第208行:

- global_rank = _get_rank()
+ global_rank = 0

在运行就不会报错了。

注意:该方式过于粗暴,仅适用于Jetson平台部署推理,在服务器端会影响分布式功能!

1.终端运行

激活conda环境:

conda activate lmdeploy

运行模型:

lmdeploy chat turbomind ./internlm-chat-7b-turbomind

在这里插入图片描述

2.Python集成运行

编写运行脚本run_model.py,内容如下:

from lmdeploy import turbomind as tmif __name__ == "__main__":model_path = "./internlm-chat-7b-turbomind" # 修改成你的路径tm_model = tm.TurboMind.from_pretrained(model_path)generator = tm_model.create_instance()while True:inp = input("[User] >>> ")if inp == "exit":breakprompt = tm_model.model.get_prompt(inp)input_ids = tm_model.tokenizer.encode(prompt)for outputs in generator.stream_infer(session_id=0, input_ids=[input_ids]):res = outputs[1]response = tm_model.tokenizer.decode(res)print("[Bot] <<< {}".format(response))

激活conda环境:

conda activate lmdeploy

运行脚本:

python run_model.py

在这里插入图片描述

附录

  • 为Jetson重装Jetpack
  • LMDeploy-Jetson基准测试

引用

如果本项目对您的工作有所帮助,请使用以下格式引用:

@misc{2024lmdeployjetson,title={LMDeploy-Jetson:Opening a new era of Offline Embodied Intelligence},author={LMDeploy-Jetson Community},url={https://github.com/BestAnHongjun/LMDeploy-Jetson},year={2024}
}

致谢

  • 书生·浦语大模型实战营
  • 上海人工智能实验室
  • trt-llm
http://www.lryc.cn/news/397316.html

相关文章:

  • 51单片机嵌入式开发:8、 STC89C52RC 操作LCD1602原理
  • 数字化时代的供应链管理综合解决方案
  • CentOS 安装 annie/lux,以及 annie/lux 的使用
  • 拥抱UniHttp,规范Http接口对接之旅
  • Python 给存入 Redis 的键值对设置过期时间
  • 在linux中安装docker
  • 【JVM-04】线上CPU100%
  • try catch 解决大问题
  • 手动解析Collection
  • list模拟实现【C++】
  • nginx正向代理、反向代理、负载均衡
  • matlab 有倾斜的椭圆函数图像绘制
  • PTK是如何加密WLAN单播数据帧的?
  • Django之登录权限系统
  • rust way step 1
  • 视觉语言模型导论:这篇论文能成为你进军VLM的第一步
  • Postman工具基本使用
  • uni-app三部曲之三: 路由拦截
  • 专注于国产FPGA芯片研发的异格技术Pre-A+轮融资,博将控股再次投资
  • 【python】QWidget父子关系,控件显示优先级原理剖析与应用实战演练
  • CTF php RCE(三)
  • Android 注解的语法原理和使用方法
  • YOLOv10改进 | Conv篇 | 利用FasterBlock二次创新C2f提出一种全新的结构(全网独家首发,参数量下降70W)
  • 实验-ENSP实现防火墙区域策略与用户管理
  • 【游戏客户端】大话slg玩法架构(二)背景地图
  • git-工作场景
  • coco dataset标签数据结构(json文件)
  • GaussDB关键技术原理:高性能(四)
  • 总结之企业微信(一)——创建外部群二维码,用户扫码入群
  • 透视数据治理:企业如何衡量数据治理的效果?