深度学习之本地部署大模型ChatGLM3-6B【大模型】【报错】

文章目录

  • 0.前言
  • 1.模型下载
  • 2.配置环境
    • 2.1 下载项目文件
    • 2.2 配置环境
  • 3.开始推理
  • 4.总结

0.前言

本博客将介绍ChatGLM3-6B大模型在Ubuntu上的本地部署教程

1.模型下载

  • 由于毛毛张的服务器服务无法科学上网,所以模型的相关文件必须现在本地下载好,再上传到服务器上,目前有两个开源的比较好的下载模型文件的地方:Huggineg Face(需要科学上网)和Model Scope(中国网站)

  • 传送门:

    • Hugging Face ChatGLM3-6B 下载地址
    • ModelScope ChatGLM3-6B 下载地址
  • 然后最近看到网上说大模型的模型文件使用git-lfs来进行下载,可以理解为用来下载大文件的git,需要自己单独安装,但是毛毛张不推荐

    • 原因1:毛毛张测试了一下,还不如用自己的下载器手动下载,因为大模型的权重文件基本上都很大,用这个命令安装也不会告诉你用多久才能下载完
    • 原因2:官网的模型权重文件一般都存在两种格式,一个是适用于pytorch的(下图红色方框2),一个是适用于tensorflow的(下图红色方框1),没必要全部下载,自己需要哪一个就下载哪一个就行了,具体的大模型的模型文件中各个文件的作用请参照毛毛张的这篇博客:大模型中的模型文件的说明

在这里插入图片描述

  • 所以下载过程毛毛张就不过多赘述了

2.配置环境

2.1 下载项目文件

  • ChatGLM3-6B有一个非常详细的本地部署项目文件,里面已经做好了集成,大家只需要本地下载好,然后修改相应的路径调用即可
    • 传送门:https://github.com/zzx030702/ChatGLM3

2.2 配置环境

  • 又到了头疼的一步,不同的人和电脑会出现不同的配置环境报错的问题,只有一步一步见到什么问题解决什么问题了

  • 大家把模型文件下载和官网的微调项目文件下载之后就可以将文件传送到服务器上

  • 并在项目文件中新建一个model文件夹,然后将模型文件移动到改文件夹下,如下图所示
    在这里插入图片描述

  • 接下来就可以开始配置环境了

  • 大模型本地部署的所需要的环境配置已经全部保存在requirements.txt文件当中

    • 配置命令:

      $ conda create -n chatglm python==3.10 # 创建虚拟环境
      $ cd ~/mySata/zzx/ChatGLM3 # 虚拟环境创建完毕之后就可以使用cd命令到大模型项目文件夹下
      $ conda activate chatglm # 激活虚拟环境
      $ pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple # 并在虚拟环境中安装本地推理需要的包
      

3.开始推理

  • 在使用大模型进行推理的时候要确保自己的电脑有足够的显存,至少是12GB

  • 环境配置成功后,大家可以新建一段test.py代码感受一下chatglm3-6b的推理能力

    from transformers import AutoTokenizer, AutoModel
    tokenizer = AutoTokenizer.from_pretrained("./model/chatglm3-6b", trust_remote_code=True)
    model = AutoModel.from_pretrained("./model/chatglm3-6b", trust_remote_code=True, device='cuda')
    model = model.eval()
    response, history = model.chat(tokenizer, "你好", history=[])
    print(response)
    
    response, history = model.chat(tokenizer, "晚上睡不着应该怎么办", history=history)
    print(response)
    
  • 但是大家这一步运行之后绝对不会那么顺利,毛毛张部署的时候出现了一个报错:

    The above exception was the direct cause of the following exception:
    
    Traceback (most recent call last):
      File "/home/flyvideo/mySata/zzx/ChatGLM3/test.py", line 2, in <module>
        tokenizer = AutoTokenizer.from_pretrained("./model/chatglm3-6b", trust_remote_code=True)
      File "/home/flyvideo/anaconda3/envs/toolbench/lib/python3.10/site-packages/transformers/models/auto/tokenization_auto.py", line 719, in from_pretrained
        tokenizer_class = get_class_from_dynamic_module(class_ref, pretrained_model_name_or_path, **kwargs)
      File "/home/flyvideo/anaconda3/envs/toolbench/lib/python3.10/site-packages/transformers/dynamic_module_utils.py", line 485, in get_class_from_dynamic_module
        final_module = get_cached_module_file(
      File "/home/flyvideo/anaconda3/envs/toolbench/lib/python3.10/site-packages/transformers/dynamic_module_utils.py", line 292, in get_cached_module_file
        resolved_module_file = cached_file(
      File "/home/flyvideo/anaconda3/envs/toolbench/lib/python3.10/site-packages/transformers/utils/hub.py", line 469, in cached_file
        raise EnvironmentError(
    OSError: We couldn't connect to 'https://huggingface.co' to load this file, couldn't find it in the cached files and it looks like THUDM/chatglm3-6b is not the path to a directory containing a file named tokenization_chatglm.py.
    Checkout your internet connection or see how to run the library in offline mode at 'https://huggingface.co/docs/transformers/installation#offline-mode'
    
    • 关键信息是:OSError: We couldn't connect to 'https://huggingface.co' to load this file, couldn't find it in the cached files and it looks like THUDM/chatglm3-6b is not the path to a directory containing a file named tokenization_chatglm.py.

    • 报错原因找不到下载的Tokenizer文件,经过毛毛张排查这个应该是官方文件的一个bug

    • 解决办法:修改tokenizer_config.json文件中的THUDM/chatglm3-6b--tokenization_chatglm.ChatGLMTokenizertokenization_chatglm.ChatGLMTokenizer,修改后如下图所示

      在这里插入图片描述

  • 下面是毛毛张在实际推理过程中的显存截图:

    在这里插入图片描述

4.总结

  • 大模型在本地部署的时候会出现各种各样的报错,除了上面那个报错问题之外,还有一些包的版本问题,或者环境配置问题,各种各样的,所以大家尽量按照官网的说明去配置环境
  • 大家配置完毕之后就可以开始看项目文件中的README.md文件进行微调或者其它的任务了,毛毛张任务那个文件对于ChatGLM的推理和微调的一些代码执行说明的非常详细,再说就是废话了

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【ai技术】(1):发现一个大模型可视化项目,使用nodejs编写的,llm-viz,可以本地运行展示大模型结构。

1&#xff0c;关于项目 https://www.bilibili.com/video/BV1eF4m1c7NC/ 【ai技术】&#xff08;1&#xff09;&#xff1a;发现一个大模型可视化项目&#xff0c;使用nodejs编写的&#xff0c;llm-viz&#xff0c;可以本地运行展示大模型结构。 https://github.com/bbycroft/l…

k8s集群架构维护k8s集群以及搭建k8s集群以及k8s集群的常见问题

一、k8s架构 Kubernetes&#xff08;K8s&#xff09;是一个由Google主导开发的开源容器编排平台&#xff0c;用于自动化部署、扩展和管理容器化应用程序。它的设计目标是简化容器化应用程序在生产环境中的部署和运营。Kubernetes的架构设计复杂且高效&#xff0c;主要包括以下几…

再谈EMC Unity存储系统内存DIMM问题

以前写过一篇关于EMC Unity 存储系统的DIMM的介绍文章&#xff0c;但是最近还是遇到很多关于内存的问题&#xff0c;还有一些退货&#xff0c;所以有必要再写一篇关于EMC Unity 内存方面的问题&#xff0c;供朋友们参考。如果还有疑问&#xff0c;可以加vx&#xff1a;StorageE…

v-bind 绑定 class 与 style 基础用法

使用 v-bind 指令绑定 class 和 style 时语法相对复杂一些&#xff0c;这两者是可以互相替代的&#xff0c;均用于响应更新HTML元素的属性&#xff0c; v-bind 绑定 class 属性可以改写成绑定 style 属性&#xff0c;只是 css 属性位置变了而已。 1. 绑定 class 属性 1.1 数组…

MySQL 数据库设计范式

第一范式&#xff08;1NF&#xff09; 每一列都是不可分割的原子数据项第二范式&#xff08;2NF&#xff09; 在1NF的基础上&#xff0c;非码属性必须完全依赖于候选码(在1NF基础上消除非主属性对主码的部分函数依赖) 1.函数依赖A->B&#xff0c;如果通过A属性(属性组)的值…

蓝桥杯 2023 省B 飞机降落

首先&#xff0c;这题要求的数据量比较少&#xff0c;我们可以考虑考虑暴力解法。 这题可能难在很多情况的考虑&#xff0c;比如说&#xff1a; 现在时间是10&#xff0c;有个飞机20才到&#xff0c;我们是可以干等10分钟。 #include <iostream> #include <…

编织效率之梦:Visual Studio与Windows快捷键指南

个人主页&#xff1a;日刷百题 系列专栏&#xff1a;〖C/C小游戏〗〖Linux〗〖数据结构〗 〖C语言〗 &#x1f30e;欢迎各位→点赞&#x1f44d;收藏⭐️留言&#x1f4dd; ​ ​ 前言&#xff1a; 常用快捷键整理 (用加粗标注的是我个人使用时常用的&#xff0c;其实这个…

2024-03-19 作业

作业要求&#xff1a; 1> 将白天课堂代码重新实现一遍&#xff1a; select实现的TCP并发服务器 poll实现的TCP客户端 2> 君子作业 select实现的TCP客户端 poll实现的TCP并发服务器 作业1&#xff1a; 运行代码&#xff1a; select实现的TCP并发服务器 #include<myh…

[项目设计]基于websocket实现网络对战五子棋

项目介绍 该项目旨在实现一个网页端的在线五子棋&#xff0c;将实现登陆、好友、房间、对战、观战、聊天等功能 完成该项目需要了解C、数据库MySQL、基础前端HTML/CSS/JS/Ajax、网络协议WebSocket 项目源码&#xff1a;azhe1/online_gobang - 码云 - 开源中国 (gitee.com) …

国产-高精度、可编程数字温度传感芯片-MY18E20

由工采代理的MY18E20是一款国产高精度可编程的数字模拟混合信号温度传感芯片&#xff1b;感温原理基于CMOS半导体PN节温度与带隙电压的特性关系&#xff0c;经过小信号放大、模数转换、数字校准补偿后&#xff0c;数字总线输出&#xff0c;具有精度高、一致性好、测温快、功耗低…

vue前端解析jwt

vue前端解析jwt 我们可以用在线解析看解析的结果&#xff1a;https://www.lddgo.net/encrypt/jwt-decrypt 但是如果在前端需要解析token&#xff0c;拿到其中的权限信息&#xff0c;可以这样解决。 在线的&#xff1a; 完美解决&#xff1a; 代码&#xff1a; function par…

MySQL下载和安装部署

4.1 简介 MySQL是一个关系型数据库管理系统&#xff0c;由瑞典MySQL AB 公 司开发&#xff0c;现在已经属于 Oracle 旗下产品。MySQL 是最流行的关系型数据 库管理系统之一&#xff0c;在 WEB 应用方面&#xff0c;MySQL是最好的 RDBMS(Relational Database Management System&…

AI系统性学习—LangChain入门

文章目录 1、LangChain入门1.1 简介1.2 架构1.3 核心概念1.2 快速入门1.3 安装 2、LangChain Prompt Template2.1 什么是提示词模版2.1 创建一个提示词模版2.2 聊天消息提示词模版2.3 模版追加示例 3、语言模型3.1 LLM基础模型3.2 LangChain聊天模型3.3 自定义模型3.4 输出解析…

linux网络服务学习(2):vsftp

1.什么是vsftp vsftp是linux服务器上的一款使用ftp协议的软件&#xff0c;是linux上使用最广泛的ftp服务端软件 ftp协议是使用明文传输的&#xff0c;很不安全&#xff0c;一般用于局域网内的文件上传、下载 2.vsftp连接类型 ftp连接要用到2个端口&#xff1a;21、20端口。…

高效备考2024年AMC10:吃透2000-2023年1250道真题(限时免费送)

我们今天继续来随机看5道AMC10真题&#xff0c;以及详细解析&#xff0c;这些题目来自1250道完整的官方历年AMC10真题库。通过系统研究和吃透AMC10的历年真题&#xff0c;参加AMC10的竞赛就能拿到好名次。即使不参加AMC10竞赛&#xff0c;掌握了这些知识和解题思路后初中和高中…

阿里巴巴求职者必看:@SpringMVC?面试准备全攻略!

如有疑问或者更多的技术分享,欢迎关注我的微信公众号“知其然亦知其所以然”! 大家好,我是小米!今天我们来聊聊阿里巴巴面试中常见的一个热门话题:@SpringMVC!如果你对这个话题感兴趣,那就跟着我一起来揭开这个技术的神秘面纱吧! @Controller 在SpringMVC中,我们经…

Java-seata 头参数透传问题步骤详解-arthas

seata分布式事物下游不能回滚的问题; 初步分析headers中TX_XID 没有传给下游系统 通过拦截器打印上游服务日志和下游服务日志打印&#xff0c;影响上游服务不能传header 中自定意义参数的地方是启用线程的熔断策略。 feign:hystrix:enabled: false #不启用client: config:def…

C数据类型(C语言)---变量的类型决定了什么?

目录 数据类型&#xff08;Data Type&#xff09; 变量的类型决定了什么&#xff1f; &#xff08;1&#xff09;不同类型数据占用的内存大小不同 如何计算变量或类型占内存的大小 &#xff08;2&#xff09;不同数据类型的表数范围不同 &#xff08;3&#xff09;不同类型…

Jmeter-基础元件使用(二)

一、Jmeter属性 当我们想要在不同线程组中使用某变量&#xff0c;就需要使用属&#xff0c;此时Jmeter属性的设置需要函数来进行set和get操作 1.创建set函数 2.然后采用Beanshell取样器进行函数执行 3.调用全局变量pro_id 4.将上面生成的函数字符串粘贴到另一个线程组即可…

QB PHP 多语言配置

1&#xff1a; 下载QBfast .exe 的文件 2&#xff1a; 安装的时候 &#xff0c;一定点击 仅为我 安装 而不是 所有人 3&#xff1a; 如果提示 更新就 更新 &#xff0c; 安装如2 4&#xff1a; 如果遇到 新增 或者编辑已经 配置的项目时 不起作用 &#xff1a; 右…