本地CPU部署运行ChatGLM2-6B模型

2023-11-20

1、前期准备:
   需要下载模型文件

2、部署过程及碰到的问题
(1)编译安装python 3.8.13 (Asianux release 7.6.18 gcc 4.8.5)
按运行的要求需要安装torch的>=2.0,因此安装了torch的2.0.1,该版本的torch    依赖的glibc的版本至少是2.28,而当前操作系统的版本号是2.17。
通过strings libtorch_cpu.so|grep GLIBC_  可以看到该so文件到底依赖的glibc的版本。

(2)升级glibc
 编译glibc2.28,发现gcc4.8.5版本太老,需要先升级gcc的版本,就升级了gcc的版本到5.4.0:

升级gcc的方法:
https://blog.csdn.net/CN_Maxwell/article/details/99302888

重新编译了glibc2.28,但是发现libc-2.28.so
配入系统环境变量后,系统的各种命令用不了了,通过如下方式实现了libc库的恢复:
export LD_PRELOAD="/lib64/libc-2.17.so"
https://blog.csdn.net/zhangpeterx/article/details/96149932
https://blog.csdn.net/carefree2005/article/details/117559312

(3)通过patchelf工具对torch的libtorch_cpu.so文件的动态链接路径进行的修改
直接下载了编译好的patchelf-0.18.0不能用,修改后so文件变成了不是动态执行的文件,因此需要编译安装。
a、通过patchelf对so文件进行修改动态链接
https://blog.csdn.net/zdy0_2004/article/details/104574224
b、linux使用patchelf工具:
https://blog.csdn.net/juluwangriyue/article/details/108617283
c、编译安装patchelf过程,出现了"__strtof128_nan@GLIBC_PRIVATE" 未定义的引用:
原因:/usr/lib64目录下的libm.so和libc.so的版本不一致,让两者的版本一致就可以解决。
patchelf的相关说明手册:
https://blog.adafruit.com/2021/05/12/patchelf-a-simple-utility-for-modifying-existing-elf-executables-and-libraries/

d、编译安装patchelf之后,可以把/lib64/libc.so.6替换成编译安装的高版本的libc.so执行之后依然报错ld动态链接的“__dl_create_exception”@GLIBC_PRIVATE问题,patchelf 通过--set-interperter 试图修改链接器,发现动态连接器static linked,无法修改。
(4)问题追踪到此,发觉自己升级glibc和操作系统kernel有兼容性的问题,因此果断进行了操作系统的重装,从7.6.18升级到了8.5.0,glibc2.28,至此基础环境问题解决。

3、运行耗的资源
   (1)机器配置:96 cores的逻辑核(物理核8个,Intel(R) Xeon(R) CPU 2.1G),内存128G
   操作系统版本:Asianux Linux release 8.5.0   
kernel 4.18.0-372.13.2.axs8.x86_64
   模型总大小:7个模型文件共11G
   在cpu上执行:   
加载模型:耗用16s
加载模型耗用内存:26.5G
推理过程耗用CPU:50cores

4、运行的例子:
问题1:红楼梦讲述的是一个什么样的故事?

 

问题2:巴塞尔资本法涉及哪些内容?

 

问题3:帮我生成一段查询数据库的sql语句?

 


torch的安装有cpu版和gpu版两种情况,对于cpu运行的模型需要将推理的cuda函数继续调整。
https://www.tjsky.net/tutorial/701

总结:(1)在python3.8.13上,安装完了torch后,可以先将python的安装目录进行备份,相当于快照放在其他机器上使用,不用老是从源码编译安装
(2)gcc8.5.0编译安装python3.8.13会出现:a、fatal error: ffi.h: No such file or directory问题的解决;b、Linux安装python3.8时,编译过程中报错Could not build the ssl module!和zipimport.ZipImportError: can't decompress data; zlib not available,需要安装zlibc zlib1g-dev,配置yum源就可以安装。
https://blog.csdn.net/Aidam_Bo/article/details/112919330


 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

本地CPU部署运行ChatGLM2-6B模型 的相关文章

随机推荐

  • 于仕琪老师libfacedetection最新开源代码使用测试配置

    一 首先要感谢于老师的分享 二 此教程只是方便像我这样编程小白入门使用 若有不足之处 请原谅 网上对libfacedetection的介绍已经很多了 我在这里就不进行多余的解释 直接进入主题 下载地址 https github com Sh
  • Fsm2 Fsm2

    This is a Moore state machine with two states two inputs and one output Implement this state machine This exercise is th
  • 时序预测

    时序预测 MATLAB实现DBN深度置信网络时间序列预测 目录 时序预测 MATLAB实现DBN深度置信网络时间序列预测 预测效果 基本介绍 模型描述 程序设计 参考资料 预测效果 基本介绍 BP神经网络是1968年由Rumelhart和M
  • QMainwindow中添加的其他组件无法发送消息调用槽函数

    QMainwindow中添加的其他组件无法发送消息调用槽函数 问题所在 解决办法 问题所在 include mainwindow h include ui mainwindow h include QDebug include QMessa
  • [超实用]Java返回结果的工具类

    在做项目中 处理完各种业务数据后都需要返回值告诉前端最后的操作结果 但又不能直接返回一串错误代码信息 这个时候结果处理工具类就起了有比较好的作用 在此记录下 比较简单返回结果处理方法供大家参考学习 1 结果返回处理业务类 package r
  • python123.io---双一流高校及所在省份统计

    双一流高校及所在省份统计 类型 Python 组合数据类型 字典 d 中存储了我国 42 所双一流高校及所在省份的对应关系 请以这个列表为数据变量 完善 Python 代码 统计各省份学校的数量 d 北京大学
  • vue安装Base64转码

    第一步 项目文件路径下运行 npm install save js base64 或者 cnpm install save js base64 第二步 main js文件中引入 const Base64 require js base64
  • vue——vue-video-player插件实现rtmp直播流

    更新 flash已不可再使用 大家另寻出路吧 安装前首先需要注意几个点 vue video player插件 其实就是 video js 集成到 vue 中 所以千万不要再安装 video js 可能会出错 视频流我这个项目选择rtmp格式
  • 3559摄像头

    input aoni Webcam as devices platform soc 12310000 xhci 1 usb1 1 1 1 1 1 0 input input0 yuv转 的代码 https github com 198708
  • DC/DC闭环控制的丘克(Cuk)变换电路原理设计及实验仿真

    如果将降压 Buck 变换电路和升压 Boost 变换电路的拓扑结构进行对偶变换 即Boost变换电路和Buck变换电路串联在一起得到一种新的电路拓扑结构 丘克 CUK 变换电路 如图所示 Cuk变换电路的输入和输出均有电感 增加电感的值
  • matlab画圆并生成随机数

    A区域生成随机数 画圆 t 0 pi 100 2 pi x 10 cos t 30 3 y 10 sin t 89 8 plot x y r 生成随机数 a zeros 2 8 i 1 while i lt 8 temp1 rand 1 2
  • node中间件是什么意思?

    node中间件是什么意思 2020 09 11 16 11 17分类 常见问题 Node js答疑阅读 1757 评论 0 中间件是一种独立的系统软件或服务程序 分布式应用软件借助这种软件在不同的技术之间共享资源 中间件位于客户机 服务器的
  • Spark SQL 项目:实现各区域热门商品前N统计

    一 需求1 1 需求简介这里的热门商品是从点击量的维度来看的 计算各个区域前三大热门商品 并备注上每个商品在主要城市中的分布比例 超过两个城市用其他显示 1 2 思路分析使用 sql 来完成 碰到复杂的需求 可以使用 udf 或 udaf查
  • 四位均衡磨损格雷码

    什么是均衡磨损格雷码 均衡磨损格雷码是一种与标准格雷码具有相同的迭代后只变化一个位的特性 但每一个数位变化的次数相近的编码 为什么要均衡磨损 由于继电器输出PLC比晶体管输出PLC具有更好的可靠性 如果用继电器输出的PLC代替晶体管输出PL
  • 从0开始用shell写一个tomcat日志清理脚本

    一 目的 tomcat日志随着时间的流逝会越来越大 虽然我们可以使用cronolog对tomcat输出的日志根据日期进行切割 但是日子一长 进到logs 文件夹下都是密密麻麻的日志 不好查看也浪费了大量的空间 故本文的目的是编写一个脚本 能
  • linux 0.11 int80实现,Linux0.11内核--系统中断处理程序int 0x80实现原理

    extern int sys setup 系统启动初始化设置函数 kernel blk drv hd c 71 extern int sys exit 程序退出 kernel exit c 137 extern int sys fork 创
  • 神经网络学习小记录68——Tensorflow2版 Vision Transformer(VIT)模型的复现详解

    神经网络学习小记录68 Tensorflow2版 Vision Transformer VIT 模型的复现详解 学习前言 什么是Vision Transformer VIT 代码下载 Vision Transforme的实现思路 一 整体结
  • 尘技-教你如何造安全相关文章

    介绍 写文章不仅仅能够总结自己的知识 还能为他人提供帮助 以及 我为自己代言 稿费 曝光度等等 如何能有思路的制造文章 下面由我慢慢道来 造文种类 造文可以分为总结类 创新类 实录类 见解类 工具分享类等等 每种类型的文章 都有自己的造文套
  • JDK自带JVM监控jvisualvm.exe 观察JVM内应用程序

    无论在测试环境还是在生产环境 我们都想知道程序在JVM中是否正常运行 除了使用第三方的一些工具 最直接的就是使用JDK自带的jvisualvm exe 系统主界面操作 JVM提供了本地的JVM监控 远程的JMX监控和快照服务 VM示例 Vi
  • 本地CPU部署运行ChatGLM2-6B模型

    1 前期准备 需要下载模型文件 2 部署过程及碰到的问题 1 编译安装python 3 8 13 Asianux release 7 6 18 gcc 4 8 5 按运行的要求需要安装torch的 gt 2 0 因此安装了torch的2 0