TPU-MLIR——实现Chatglm2-6B大模型移植部署

TPU-MLIR——实现Chatglm2-6B大模型移植部署

本项目实现BM1684X部署语言大模型ChatGLM2-6B。通过TPU-MLIR编译器将模型转换成bmodel,并采用c++代码将其部署到BM1684X的PCIE环境,或者SoC环境。

编译chatglm2-6B模型

1. 下载‘Chat-GLM2-6B’

在这里插入图片描述

2. 对该模型做两点修改:

一是将config.json文件中seq_length配置为512;
二是将modeling_chatglm.py文件中的如下代码:在这里插入图片描述

修改为:
在这里插入图片描述

这样修改可以提升效率,使用masked_fill效率低下

加载并编译TPU-MLIR:
在这里插入图片描述

下载本项目‘ChatGLM2-TPU’
在这里插入图片描述

编译模型
  1. 指定’ChatGLM2-6B‘的python路径
    在这里插入图片描述

  2. 导出所有onnx模型,如果过程中提示缺少某些组建,直接’pip install‘即可
    在这里插入图片描述

  3. 对onnx模型进行编译,生成bmodel,这个过程会花一些时间,最终生成’chatglm2-6b.bmodel’文件
    在这里插入图片描述

移植模型到开发板
  1. chatglm2-6b.bmodeltokenizer.model拷贝到开发板运行环境。(tokenizer.model来自ChatGLM2-6B)
    在这里插入图片描述

C++部署测试(1684X开发板)

编译模型
  1. 将sentencepiece编译后/workspace/sentencepiece/build/src/目录下SoC版本的libsentencepiece.a替换到此目录的/lib/下,进入chatglm2-tpu/demo目录进行编译

    在这里插入图片描述
    在这里插入图片描述

    如果要编译SoC环境,则修改CMakeLists.txt为以下内容:【 CMakeLists.txt在上一级目录 】
    在这里插入图片描述

  2. 编译
    在这里插入图片描述

  3. 将ChatGLM2-TPU整个目录拷贝到开发板运行环境就可以执行了。
    在这里插入图片描述

连接开发板

通过本地网络适配器网线直连方式,IP地址:192.168.150.1,用户名:linaro 密码:linaro
在这里插入图片描述

也可通过串口Serial连接,设置COM口,Speed为115200
成功进入显示linaro@bm1684的Ubuntu系统
通过LAN口网络连接方式,IP地址:172.xxx.xxx.xxx(DHCP获取的地址,可通过串口ifconfig查看IP),用户名:linaro 密码:linaro

开发板运行

进入到/data/目录,查看scp传输的文件:
在这里插入图片描述

执行编译好的C++代码,即可实现在线chat
在这里插入图片描述

c++部署完成!

python部署测试(1684x开发板)

编译模型
  1. 进入chatglm2-tpu/python_demo目录进行编译
    在这里插入图片描述

    如果要编译SoC环境,则修改CMakeLists.txt为以下内容:【 CMakeLists.txt在上一级目录 】
    在这里插入图片描述

  2. 编译
    在这里插入图片描述

    编译成功会生成ChatGLM2.cpython-38-x86_64-linux-gnu.so,之后将chatglm2-6b.bmodel放到python_demo目录下。

  3. 将ChatGLM2-TPU整个目录拷贝到开发板运行环境就可以执行了。
    在这里插入图片描述

连接开发板

通过本地网络适配器网线直连方式,IP地址:192.168.150.1,用户名:linaro 密码:linaro
在这里插入图片描述

也可通过串口Serial连接,设置COM口,Speed为115200
成功进入显示linaro@bm1684的Ubuntu系统
通过LAN口网络连接方式,IP地址:172.xxx.xxx.xxx(DHCP获取的地址,可通过串口ifconfig查看IP),用户名:linaro 密码:linaro

开发板运行

进入到/data/目录,查看scp传输的文件:
在这里插入图片描述

运行
在这里插入图片描述

python部署完成!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/83799.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python 合并/拆分Excel

python对于合并excel本篇文章给出合并xlsx文件的方法,xls的方法不在本文介绍 拆分数据可以适用于xlsx或xls 合并excel 先读取所有的excel,得到df列表,在将这个df列表 按行进行合并 import pandas as pd# 读取所有xlsx def read_xlsx(xlsx_l…

9月18日,每日信息差

今天是2023年09月19日,以下是为您准备的11条信息差 第一、江苏无锡首次获得6000年前古人类DNA 第二、全球天然钻石价格暴跌。数据显示,国际钻石交易所钻石价格指数在2022年3月达到158的历史峰值,之后一路下跌到目前的110左右,创…

Glide - Android的图像加载和缓存库,专注于平滑滚动

官网 GitHub - bumptech/glide: An image loading and caching library for Android focused on smooth scrolling 项目介绍 An image loading and caching library for Android focused on smooth scrolling Glide is a fast and efficient open source media management a…

谷歌版ChatGPT与旗下邮箱、视频、地图等,实现全面集成!

9月20日,谷歌在官网宣布推出Bard Extensions。借助该扩展用户可在谷歌的Gmail、谷歌文档、网盘、Google 地图、视频等产品中使用Bard。 Bard是谷歌基于PaLM 2大模型,打造的一款类ChatGPT产品,可自动生成文本、代码、实时查询信息等。新的集成…

数据结构与算法(C语言版)P5---栈

1、栈 1.1、栈的概念及结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。__进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。__栈中的数据元素遵守__后进先出(先进后出)__LIFO&#xf…

iOS 蓝牙连接 connectionSupervisionTimeout 是720ms 还是 2~6s

对比 HCI可以看到iPhone作为主设连接外设时,可以看到: connection Event Interval 30ms; connection Slave Latency 0; connection Supervision Timeout 720ms;但苹果官方文档《 Accessory Design Guidelines for …

FPGA原理与结构(12)——FIFO IP核原理学习

系列文章目录:FPGA原理与结构(0)——目录与传送门 一、FIFO概述 1、FIFO的定义 FIFO是英文First-In-First-Out的缩写,是一种先入先出的数据缓冲器,与一般的存储器的区别在于没有地址线, 使用起来简单&…

C/C++算法入门 | 简单模拟

不爱生姜不吃醋⭐️ 如果本文有什么错误的话欢迎在评论区中指正 与其明天开始,不如现在行动! 文章目录 🌴前言🌴一、害死人不偿命的(3n1)猜想1.题目(PAT B1001)2.思路3.代码实现 &am…

BD就业复习第一天

hive 1.分区分桶 在Hive中,分区(Partition)和分桶(Bucketing)都是用于数据管理和查询性能优化的技术。它们有不同的用途和特点。 分区(Partition): 定义:分区是将数据…

Hexo在多台电脑上提交和更新

文章目录 1.博客搭建2.创建一个新文件夹new,用于上传hexo博客目录3.github上创建hexo分支并设置为默认分支创建hexo分支将hexo分支设置为默认分支 4.进入新建的文件夹中git clone,再上传相关文件至hexo分支1.clone下来的文件夹内应该有个.gitignore文件&…

Springboot部署服务器项目上线

第一步,项目打包,有两种方式 第一种、直接在项目根目录打开终端,输入以下语句即可。如下图: mvn clean package -DskipTests 第二种、在右侧点击 Maven选项,选择鼠标左键双击package选项即可。如下图: 两…

Python 搭建编程环境

一、搭建编程环境 1、下载python 官网:https://www.python.org 2、开始安装 下载安装版本,双击下载的安装包,如下: 步骤一: 步骤二: 步骤三: 安装完成后执行下面的操作,判断是否…

高教杯数学建模A题程序设计要点与思路

2023 年是我最后一次参加 高教杯大学生数学建模竞赛 以后不会再参加了(大四参加意义不太,研究生有研究生的数学建模大赛) 很遗憾 由于各种原因 我们没有能够完成赛题2022 年 美赛 2022年 Mathor Cup 2022 年国赛 2022 亚太杯 2023年 美赛 202…

面试官:说说Vue 3.0中Treeshaking特性?举例说明一下?

🎬 岸边的风:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 一、是什么 二、如何做 Vue2 项目 Vue3 项目 三、作用 一、是什么 Tree shaking 是一种通过清除多余代码方式来…

974. 和可被 K 整除的子数组

974. 和可被 K 整除的子数组 C代码:哈希表前缀和 typedef struct{int val;int cnt;UT_hash_handle hh; } HashTable;int subarraysDivByK(int* nums, int numsSize, int k){HashTable* head NULL;HashTable* out NULL;int sum 0;int cnt 0;out (HashTable*)ma…

Nginx 的优化思路有哪些?网站的防盗链如何做?附图文说明和完整代码步骤

Nginx 的优化思路有哪些?网站的防盗链如何做?实际工作中有哪些类似的安全经验?通过代码实践一步一步实现,附图文说明和完整代码步骤 实验拓扑图: 实验步骤 1、在Centos01上安装Nginx,设置网站根目录/www使用域名www.huhu.com访问 2、在Centos02上安装DNS使用域名访问Ce…

嵌入式Linux--进程间通讯--消息队列

1.需要知道的问题: 1、如何创建消息队列(A\B使用同一个队列通信) 2、如何加消息到队列(队列是链表) 3、如何从队列拿到消息 消息队列: 消息队列,是消息的链接表,存放在内核中。一个…

C#不通过byte[],直接对内存映射文件复制内存

背景 多个进程直接需要传递大量图片,所以对性能要求较高。支付复制内存显然比转成byte[]再复制优越。 命名空间 using System; using System.Diagnostics; using System.Runtime.InteropServices; 代码 public CMainTestForm() { InitializeCo…

【数据结构】二叉树的前序遍历(七)

题目:二叉树的前序遍历 题目详情:给你二叉树的根节点 root ,返回它节点值的 前序 遍历; 我们先来看几个示例: 输入:root [ 1,null,2,3 ] 输出:[ 1&#xf…

爬虫 — Js 逆向案例二微信公众平台登录

目标网站:https://mp.weixin.qq.com/ 需求:找到密码加密的过程,进行加密 案例分析 1、抓到向服务器发请求的数据包,输入错误的账号和密码 2、找到加密字段 pwd 如果 Search 里面数据太多,也可以在 Initiator 里面查找…