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

挖掘 M2 Pro 32G UMA 内存潜力:在 Mac 上本地运行清华大模型 ChatGLM2-6B

说明

ChatGLM-6B 是由清华大学和智谱AI联合研发的产品 。是一个开源的、支持中英双语问答的对话语言模型,并针对中文进行了优化。该模型基于 General Language Model (GLM) 架构,具有 62 亿参数。结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4量化级别下最低只需 6GB 显存)。

ChatGLM2-6B是开源中英双语对话模型 ChatGLM-6B 的第二代版本,在保留了初代模型对话流畅、部署门槛较低等众多优秀特性的基础之上,ChatGLM2-6B 引入了如下新特性:

  • 更强大的性能:相比于初代模型,ChatGLM2-6B 在 MMLU(+23%)、CEval(+33%)、GSM8K(+571%) 、BBH(+60%)等数据集上取得了大幅度的提升。
  • 更长的上下文:基于 FlashAttention 技术,我们将基座模型的上下文长度(Context Length)由 ChatGLM-6B 的 2K 扩展到了 32K。
  • 更高效的推理:基于 Multi-Query Attention 技术,推理速度相比初代提升了 42%,INT4 量化下,6G 显存支持的对话长度由 1K 提升到了 8K。

硬件与软件需求

ChatGLM2-6B 在其他平台要求如下:

量化等级编码 2048 长度的最小显存生成 8192 长度的最小显存
FP16 / BF1613.1 GB12.8 GB
INT88.2 GB8.1 GB
INT45.5 GB5.1 GB

但在 Mac 平台上,情况更复杂一些:

  • Mac 上只支持本地运行,也就是项目代码和模型分开下载,然后修改 web_demo.py 中模型地址运行
  • 搭载了 Apple Silicon 或者 AMD GPU 的 Mac,需使用 MPS 后端在 GPU 上运行,修改 web_demo.py 中运行方式
  • 加载需要 13G 内存,使用过程会不断上涨至 20G 以上,建议使用 32G 以上内存设备
  • 内存不足设备,可使用量化后的 INT4 模型,但量化后只能使用 CPU 推理,为了充分使用 CPU 并行,还需要单独安装 OpenMP。

Mac 上的 MPS 支持 Apple silicon or AMD GPUs,还需要软件环境:

  • macOS 12.3 or later
  • Python 3.7 or later
  • Xcode command-line tools: xcode-select --install

总结: 因为这些限制的存在,对小内存设备及 GPU 较差的设备极不友好,所以这里只推荐 32G 内存以上的 m1 pro/max/ultra 与 m2 pro/max/ultra 设备来进行测试,24G 内存的 m2 也可以尝试。

关键步骤

0. 环境准备(可根据自己情况跳过)

① 安装 Anaconda,用来安装 Pytorch Nightly 版

也可不安装 Anaconda, 下一步使用 Mac 上自带的 pip 安装 Pytorch Nightly 版

// Apple silicon
curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh
sh Miniconda3-latest-MacOSX-arm64.sh// 或 x86
curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh
sh Miniconda3-latest-MacOSX-x86_64.sh

② 安装 Pytorch Preview (Nightly) 版,用来提供 MPS 支持

// Anaconda
conda install pytorch torchvision torchaudio -c pytorch-nightly// 或 pip
pip3 install --pre torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/nightly/cpu

安装完成后测试,详见 苹果官方 Pytorch 安装完整教程

③安装 Git LFS,用来从 Huggingface 下载模型文件

brew install git-lfs

其他安装方式及测试方法,详见 Git Large File Storage 安装

1. 从 Github 下载项目代码

git clone https://github.com/THUDM/ChatGLM2-6B
cd ChatGLM2-6B

然后使用 pip 安装依赖:

pip install -r requirements.txt

其中 transformers 库版本推荐为 4.30.2,torch 推荐使用 2.0 以上的版本,以获得最佳的推理性能。

2. 从 Huggingface 下载模型及相关代码

从 Hugging Face Hub 下载模型需要 Git LFS,注意上图中标注 LFS 的文件大小,然后运行

// Http 方式
git lfs install
git clone https://huggingface.co/THUDM/chatglm2-6b// 或 ssh 方式
git lfs install
git clone git@hf.co:THUDM/chatglm2-6b

如果你网络不好,也可以只从 Huggingface 下载模型实现与占位文件,然后从清华网盘下载模型后,替换相关占位文件即可。

//Http 方式
GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/THUDM/chatglm2-6b// 或 ssh
GIT_LFS_SKIP_SMUDGE=1 git clone git@hf.co:THUDM/chatglm2-6b

需要注意的是,清华网盘中少了一个 LFS 中的 tokenizer.model 文件,需要自行从 Huggingface 另外下载替换。

3. 修改第 1 步中 demo.py 代码

这里 Web 版有两种运行方式,加上 命令行 版,所以共有 3 个 demo 文件需要更改,修改内容是一样的。每个都需修改两个地方:

  • 本地地址修改为模型的磁盘路径(第 2 步中从 Huggingface 下载的模型路径)
  • 模型加载使用 to('mps') 方式
# eg: web_demo.py
tokenizer = AutoTokenizer.from_pretrained("修改为第 2 步中存放 Huggingface 模型的路径", trust_remote_code=True)
model = AutoModel.from_pretrained("修改为第 2 步中存放 Huggingface 模型的路径", trust_remote_code=True).to('mps')
model = model.eval()

如果要部署 api 版,也要按同样方式修改 api.pyopenai_api.py 中的代码,api 版中使用 cuda 的代码也需要自行修改

4. 运行 Web Demo

① 普通版 web_demo.py 首先安装 Gradio:pip install gradio,然后运行仓库中的 web_demo.py:

python web_demo.py

② 基于 Streamlit 的网页版 Demo web_demo2.py 使用时首先需要额外安装依赖:pip install streamlit streamlit-chat,然后通过以下命令运行:

streamlit run web_demo2.py

经测试,如果输入的 prompt 较长的话,使用基于 Streamlit 的网页版 Demo 会更流畅。

遇到的错误

RuntimeError: Internal: src/sentencepiece_processor.cc(1101) [model_proto->ParseFromArray(serialized.data(), serialized.size())]
一般是因为下载的模型或文件缺少导致的,也可能是文件没有下载完整。比如没有直接从 Huggingface 中下载 LFS 文件,而是从网盘下载 .bin 文件替换,就会缺少 tokenizer.model 文件。 详情见 启动web_demo报错,加载tokenizer报错

You seem to have cloned a repository without having git-lfs installed.
一般是因为下载的模型没有替换 git-lfs 占位符导致的,查看模型文件是否已被完全替换。

请注意比较下载后文件的大小或 sha256 !!!

如何系统的去学习大模型LLM ?

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

事实上,抢你饭碗的不是AI,而是会利用AI的人。

科大讯飞、阿里、华为等巨头公司发布AI产品后,很多中小企业也陆续进场!超高年薪,挖掘AI大模型人才! 如今大厂老板们,也更倾向于会AI的人,普通程序员,还有应对的机会吗?

与其焦虑……

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高。

针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

一、LLM大模型经典书籍

AI大模型已经成为了当今科技领域的一大热点,那以下这些大模型书籍就是非常不错的学习资源。

在这里插入图片描述

二、640套LLM大模型报告合集

这套包含640份报告的合集,涵盖了大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(几乎涵盖所有行业)

在这里插入图片描述

三、LLM大模型系列视频教程

在这里插入图片描述

四、LLM大模型开源教程(LLaLA/Meta/chatglm/chatgpt)

在这里插入图片描述

LLM大模型学习路线

阶段1:AI大模型时代的基础理解

  • 目标:了解AI大模型的基本概念、发展历程和核心原理。

  • 内容

    • L1.1 人工智能简述与大模型起源
    • L1.2 大模型与通用人工智能
    • L1.3 GPT模型的发展历程
    • L1.4 模型工程
    • L1.4.1 知识大模型
    • L1.4.2 生产大模型
    • L1.4.3 模型工程方法论
    • L1.4.4 模型工程实践
    • L1.5 GPT应用案例

阶段2:AI大模型API应用开发工程

  • 目标:掌握AI大模型API的使用和开发,以及相关的编程技能。

  • 内容

    • L2.1 API接口
    • L2.1.1 OpenAI API接口
    • L2.1.2 Python接口接入
    • L2.1.3 BOT工具类框架
    • L2.1.4 代码示例
    • L2.2 Prompt框架
    • L2.3 流水线工程
    • L2.4 总结与展望

阶段3:AI大模型应用架构实践

  • 目标:深入理解AI大模型的应用架构,并能够进行私有化部署。

  • 内容

    • L3.1 Agent模型框架
    • L3.2 MetaGPT
    • L3.3 ChatGLM
    • L3.4 LLAMA
    • L3.5 其他大模型介绍

阶段4:AI大模型私有化部署

  • 目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。

  • 内容

    • L4.1 模型私有化部署概述
    • L4.2 模型私有化部署的关键技术
    • L4.3 模型私有化部署的实施步骤
    • L4.4 模型私有化部署的应用场景

这份 LLM大模型资料 包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈


http://www.mrgr.cn/news/55444.html

相关文章:

  • 浅谈数据库选型
  • <项目代码>YOLOv8路面病害识别<目标检测>
  • WPF实现类似网易云音乐的菜单切换
  • Django框架介绍
  • 算法Day-6
  • RHCE——时间服务器
  • 云服务器遭受攻击后的应急响应与解决策略
  • 【前端Vue学习笔记】组件注册方式 组件传递数据 组件事件 透传 插槽slot 组件生命周期 动态组件 异步组件 依赖注入 Vue应用
  • leetcode动态规划(八)-不同的二叉搜索树
  • 生信学院|10月22日《SOLIDWORKS 自定义属性卡片应用》
  • React第十一章(useReducer)
  • 如何解决企业异地办公网络难题?
  • 持续输出面试题系列之SpringCloud篇
  • 数造科技荣获2024DAMA中国“数据治理创新奖”
  • 4.1粒子系统
  • C++游戏开发入门:用 SDL 实现你的第一个 2D 游戏
  • 汕头市自闭症全托管学校,为孩子打开未来大门
  • consumer 角度讲一下i2c外设
  • 实现了通过摄像头检测手部手势来控制 B 站视频播放的功能。它使用了 OpenCV 进行视频捕获和图像处理,MediaPipe 进行手部检测和关键点识别
  • 五台山景点购票系统——后附计算机源码
  • Windows下搭建VUE开发环境
  • 87 VRRPV2/V3 综合技术实操
  • 冒泡排序(Python)
  • 用Python制作《我的世界》风格小游戏:入门指南
  • java获取当前服务器的cpu核数、cpu信息
  • git 免密的方法