實戰之快速完成 ChatGLM3-6B 在 GPU-8G的 INT4 量化和本地部署

ChatGLM3 (ChatGLM3-6B)

項目地址

https://github.com/THUDM/ChatGLM3

大模型是很吃CPU和顯卡的,所以,要不有一個好的CPU,要不有一塊好的顯卡,顯卡盡量13G+,內存基本要32GB+。
清華大模型分為三種(ChatGLM3-6B-Base,ChatGLM3-6B,ChatGLM3-6B-32K)
dd032091c280d455facca120b02fcd28.png
從上圖也可以看到,ChatGLM3-6B-32K的話是最高配的模型,而ChatGLM3-6B-Base是最低配的模型。
一般會選擇 ChatGLM3-6B普通模型來使用,當然,如果配置高,可以用32K的,會更好。

使用方式

環境安裝

首先需要下載本倉庫:

# 可以訪問github的話,直接git clone即可
git clone https://github.com/THUDM/ChatGLM3
# 如果不能訪問的話,利用代理加速, 使用下面命令即可
git clone https://www.gitclone.com/github.com/THUDM/ChatGLM3
cd ChatGLM3

我是安裝在Conda虛擬環境下, Conda的搭建安裝可以參考我的【Win安裝Conda及其環境配置(包含pip、conda換源)】

第一步,創建虛擬環境

請安裝 Anaconda,然后用下面的命令創建名為 chatglm3 的虛擬環境:

conda create --name chatglm3 python=3.10
conda activate chatglm3
第二步,然后使用 pip 安裝依賴:
pip install -r requirements.txt
# 國內建議使用指定國內鏡像進行安裝
pip install -r requirements.txt -i https://mirror.sjtu.edu.cn/pypi/web/simple
第三步,安裝 pytorch

為了保證 torch 的版本正確,請嚴格按照 官方文檔 的說明安裝。
查看本機顯卡驅動和cuda版本

nvcc --versionnvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Wed_Sep_21_10:41:10_Pacific_Daylight_Time_2022
Cuda compilation tools, release 11.8, V11.8.89
Build cuda_11.8.r11.8/compiler.31833905_0nvidia-smiThu May 23 09:57:00 2024
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 551.61                 Driver Version: 551.61         CUDA Version: 12.4     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                     TCC/WDDM  | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA GeForce GTX 1070 Ti   WDDM  |   00000000:01:00.0  On |                  N/A |
|  0%   50C    P8              9W /  180W |     777MiB /   8192MiB |      6%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
# 安裝對應pytorch版本命令
conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=11.8 -c pytorch -c nvidia# 查找torch是否安裝成功
import torch
print(torch.__version__) 
print(torch.cuda.is_available()) # True
print(torch.version.cuda) 
第四步,下載模型

可以從Huggingface, Modelsope, SwanHub三個平臺下載模型。
使用 Huggingface 下載模型

git lfs install
git clone https://huggingface.co/THUDM/chatglm3-6b.git

使用 Modelscope 下載模型,沒工具的情況下,用Modelscope下載最快

git lfs install
git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b.git

使用 SwanHub 下載模型

git lfs install
git clone https://swanhub.co/ZhipuAI/chatglm3-6b.git
第五步,使用本地模型運行示例
5.1、基本對話示例

模型路徑: E:\AI\code\models\chatglm3-6b,修改basic_demo目錄中的cli_demo.py、web_demo_gradio.py、web_demo_streamlit.py模型路徑代碼。

# cli_demo.py、web_demo_gradio.py、web_demo_streamlit.py
MODEL_PATH = os.environ.get('MODEL_PATH', 'E:\\AI\\code\\models\\chatglm3-6b')
5.2、低成本部署
模型量化

默認情況下,模型以 FP16 精度加載,運行上述代碼需要大概 13GB 顯存。如果你的 GPU 顯存有限,可以嘗試以量化方式加載模型,使用方法如下:

model = AutoModel.from_pretrained("THUDM/chatglm3-6b", trust_remote_code=True).quantize(4).cuda()

模型量化會帶來一定的性能損失,經過測試,ChatGLM3-6B 在 4-bit 量化下仍然能夠進行自然流暢的生成。

CPU 部署

如果你沒有 GPU 硬件的話,也可以在 CPU 上進行推理,但是推理速度會更慢。使用方法如下(需要大概 32GB 內存)

model = AutoModel.from_pretrained("THUDM/chatglm3-6b", trust_remote_code=True).float()
Mac 部署

對于搭載了 Apple Silicon 或者 AMD GPU 的 Mac,可以使用 MPS 后端來在 GPU 上運行 ChatGLM3-6B。需要參考 Apple 的 官方說明 安裝 PyTorch-Nightly(正確的版本號應該是2.x.x.dev2023xxxx,而不是 2.x.x)。
目前在 MacOS 上只支持從本地加載模型。將代碼中的模型加載改為從本地加載,并使用 mps 后端:

model = AutoModel.from_pretrained("your local path", trust_remote_code=True).to('mps')

加載半精度的 ChatGLM3-6B 模型需要大概 13GB 內存。內存較小的機器(比如 16GB 內存的 MacBook Pro),在空余內存不足的情況下會使用硬盤上的虛擬內存,導致推理速度嚴重變慢。

5.3、命令行demo
python basic_demo/cli_demo.py

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/15068.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/15068.shtml
英文地址,請注明出處:http://en.pswp.cn/web/15068.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

“大數據建模、分析、挖掘技術應用研修班”的通知!

隨著2015年9月國務院發布了《關于印發促進大數據發展行動綱要的通知》,各類型數據呈現出了指數級增長,數據成了每個組織的命脈。今天所產生的數據比過去幾年所產生的數據大好幾個數量級,企業有了能夠輕松訪問和分析數據以提高性能的新機會&am…

Vue3中為Ant Design Vue中table的checkbox加tooltip、popover

問題的產生 Vue版本:3.3.13 ant-design-vue 版本:3.x.x 在工作時遇到一個場景,需要在 ant-table 的 checkbox 被禁用的時候提示原因,但是在 ant-design-vue 文檔中并沒有發現有相關介紹。 首先我去看了issue中是否有提到相關問題…

【金磚賽】基于docker搭鏈

一.基于docker搭建 啟動并檢查是否啟動成功 #啟動命令 sudo systemctl start docker#檢查命令 sudo systemctl status docker修改權限 chomd 777 build_chain.sh 進行4節點聯盟鏈搭建(舉例) sudo ./build_chain.sh -d -l "127.0.0.1…

OOM不會導致JVM退出

問題來源 一次生產事故,由于一次性從數據庫查詢過多數據導致線程 OOM:Java heap space 異常(千萬級表,JVM堆內存2G),但是在線程OOM發生時,java進程卻沒有立即掛掉。 ##OOM與異常 說到底OutOfM…

基于Android Studio記事本系統

目錄 項目介紹 圖片展示 運行環境 獲取方式 項目介紹 具有登錄,注冊,記住密碼,自動登錄的功能; 可以新增記事本,編輯,刪除記事本信息,同時可以設置主標題,內容,以及…

Ansible自動化運維中的Setup收集模塊應用詳解

作者主頁:點擊! Ansible專欄:點擊! 創作時間:2024年5月22日13點14分 💯趣站推薦💯 前些天發現了一個巨牛的🤖人工智能學習網站,通俗易懂,風趣幽默&#xf…

服務器沒有圖形界面沒有顯示器怎么辦

可以用vnc。 vnc是開元的。什么是vnc? 使用vnc 下載vnc和vncserver命令。 每生成一個圖形界面就叫做開啟session會話。 vnc相關命令: start a new session: vncserver。 如果沒有會話,一般從:1開始 端口5901 vncserver :2 #指定會話為:2 端…

WinForm+SQL Server+.NET開發菜鳥驛站管理系統

完整效果看嗶哩嗶哩,有需要其他系統,可以私信

Leecode熱題100---55:跳躍游戲(貪心算法)

題目: 給你一個非負整數數組 nums ,你最初位于數組的 第一個下標 。數組中的每個元素代表你在該位置可以跳躍的最大長度。 判斷你是否能夠到達最后一個下標,如果可以,返回 true ;否則,返回 false 。 貪心算…

Spring中的三級緩存和循環依賴

三級緩存 在 Spring 中,Bean 的創建過程涉及到三級緩存。這三級緩存分別是 singletonObjects、earlySingletonObjects 和 singletonFactories。它們在 Spring 容器啟動時用于存儲正在創建的 Bean 實例。 在 Spring 源碼中,三級緩存涉及到了 DefaultSin…

python02 循環與容器

一、if的條件判斷 1-1 if elif else 判斷年齡屬于哪個年齡段 # 判斷學生 core input(請輸入成績) ? if int(core) >90 :print(優秀) elif int(core) >70 and int(core) <90:print(中等) elif int(core) >60 and int(core) <70:print(及格) else:print(不及…

20240521在Ubuntu20.04下編譯RK3588的IPC方案的編譯環境問題makeinfo: not found

20240521在Ubuntu20.04下編譯RK3588的IPC方案的編譯環境問題makeinfo: not found 2024/5/21 20:52 viewproviewpro-ThinkBook-16-G5-IRH:~/RK3588_IPC_SDK$ sudo apt-get install texinfo viewproviewpro-ThinkBook-16-G5-IRH:~$ viewproviewpro-ThinkBook-16-G5-IRH:~$ md5su…

【Basic】Linux Labs

文章目錄 前言一、Linux Labs二、知識點ssh介紹ssh的主要功能SSH的工作原理SSH的常見用法 解題感悟 前言 由于我參加了網絡安全的比賽(被迫)… but我毛都不會&#xff0c;所以我只能臨時抱佛腳… 順便把學習的過程記錄下來&#xff0c;歡迎收看小白0基礎ctf踩坑分享 一、Linux…

【正點原子Linux連載】 第四十六章 M.2硬盤驅動實驗摘自【正點原子】ATK-DLRK3568嵌入式Linux驅動開發指南

1&#xff09;實驗平臺&#xff1a;正點原子ATK-DLRK3568開發板 2&#xff09;平臺購買地址&#xff1a;https://detail.tmall.com/item.htm?id731866264428 3&#xff09;全套實驗源碼手冊視頻下載地址&#xff1a; http://www.openedv.com/docs/boards/xiaoxitongban 第四十…

【selenium】自動化測試chrome webdriver驅動下載網址,V123版本以上

Hi&#xff0c;大家好&#xff0c;今天和大家分享下最新的selenium自動化測試&#xff0c;chrome瀏覽器驅動下載的最新地址 chrome webdriver下載網址&#xff0c;適用于瀏覽器版本V123以上

結構型模式 (Python版)

代理模式 from abc import ABC, abstractmethod# 買的行為&#xff08;抽象類&#xff09; class Buy(ABC):abstractmethoddef buy_ticket(self):pass# 男人&#xff08;具體類&#xff09; class Man(Buy):# 男人買票def buy_ticket(self):print("Man 買票成功&#xff…

【輸入示例100,999 輸出示例4】水仙花數

// “水仙花數”是指一個三位正整數&#xff0c;其各位上的數字的立方和等于該數本身。如:1^35^33^3153&#xff0c;因此153是一個水仙花數。輸入兩個三位正整數a和b(其中a<b)&#xff0c;求[a,b]范圍內水仙花數的個數。 //輸入示例100,999 //輸出示例4 #include <stdio.…

AI爆文寫作:如果你有一篇文章爆了,正確的做法是:自己抄襲自己,重復發,還可以繼續爆!

爆款總是相似的&#xff0c;如果你有一篇文章爆了&#xff0c;正確的做法&#xff0c;就是重復發&#xff0c;讓它繼續爆下去。 以前我在小紅書看到一個人&#xff0c;將一篇自己火的筆記&#xff0c;連續發了5次&#xff0c;每次點贊數據都不錯。 公眾號文章也是一樣的。 我…

Gin與OpenAPI(Swagger)的使用

一、背景 1、swagger與openapi Swagger&#xff1a; 一種用于描述RESTFUL API的規范&#xff0c;它提供了一種簡單的來描述API的請求和相應參數、錯誤碼、返回數據類型等信息&#xff0c;是開發者可以方便了解API使用方式。 官網: https://swagger.io/ OpenAPI : 始于 …

gazebo仿真不起飛——QGC地面站查看下是否參數正確

檢查方法&#xff1a;打開QGC地面站查看是否能夠切入定點模式&#xff0c;不能的話查看定位數據來源參數