【LLM之基座】qwen 14b-4int 部署踩坑

由于卡只有24G,qwen14b 原生需要 30GB,按照官方团队的说法,他们用的量化方案是基于AutoGPTQ的,而且根据评测,量化之后的模型效果在几乎没有损失的情况下,显存降低到13GB,妥妥穷狗福音,说干就干。

下载模型

现在huggingface只能通过科学的方式访问,而且如果一个个手动下载hin麻烦,还好阿里的魔搭做的不错,上面也有很多开源的中文模型,所以更推荐使用魔搭进行下载,速度杠杠的,最高可以达到73.6MB/s,等个几分钟就下完了:

pip install modelscope
from modelscope.hub.snapshot_download import snapshot_download
model_dir = snapshot_download('qwen/Qwen-14B-Chat-Int4', cache_dir='model', revision='master')

请添加图片描述

安装依赖包

比起原生的14b模型,这里需要安装相应的量化包auto-gptqoptimum,这两包安装不麻烦,但要版本对,不然就会报很多奇奇怪怪的错误,笔者在安装过程中就碰到过如下报错:

ModuleNotFoundError: No module named 'optimum.gptq'
exllama_kernels not installed.

其实就是包的版本要套上,笔者最终实验成功的版本答案如下:

torch                          2.0.1+cu117
auto-gptq                      0.4.2
transformers                   4.33.3
optimum                        1.12.0

如果想要推理更快一点,也可以安装flash_attn,不过这个安装也有挺多坑的,要看cuda驱动,torch版本,用pip安装容易报错,推荐直接去安装预编译的whl包,地址在GitHub上:https://github.com/Dao-AILab/flash-attention/releases

不过装完之后,还是报了个找不到包的警告,说明我们还没有完全安装成功:

import flash_attn rotary fail
import flash_attn rms_norm fail

去git上把源码clone下来,然后去对应的文件下安装好,这个编译过程有点长,特别是安装layer_norm的时候,笔者卡了大概个把小时,看issue上说cuda118会快很多,笔者环境是cuda117,真的3Q了,可以先去喝杯咖啡:

cd rotary/
pip install .cd layer_norm
pip install .

请添加图片描述

成功安装之后,大概可以将推理速度缩短到原来的1/3,所以有耐心的还是推荐去安装一下。

推理

from transformers import AutoModelForCausalLM, AutoTokenizermodel_dir = "model/qwen/Qwen-14B-Chat-Int4"
# Note: The default behavior now has injection attack prevention off.
tokenizer = AutoTokenizer.from_pretrained(model_dir, trust_remote_code=True)model = AutoModelForCausalLM.from_pretrained(model_dir,device_map="auto",trust_remote_code=True
).eval()response, history = model.chat(tokenizer, "你是谁", history=None)
print(response)

请添加图片描述

以上,就搞定Qwen-14B-Chat-Int4的推理部署了。

flash_attn 未生效前:
请添加图片描述
flash_attn 生效后:
请添加图片描述

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

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

相关文章

【数据结构】图的简介(图的逻辑结构)

一.引例(哥尼斯堡七桥问题) 哥尼斯堡七桥问题是指在哥尼斯堡市(今属俄罗斯)的普雷格尔河(Pregel River)中,是否可以走遍每座桥一次且仅一次,最后回到起点的问题。这个问题被认为是图…

【Proteus仿真】【Arduino单片机】DS1302时钟

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器,使用PCF8574、LCD1602液晶、DS1302等。 主要功能: 系统运行后,LCD1602显示时间日期。 二、软件设计 /* 作者:…

早晨暖心的早安问候语,祝好心情从清晨开始,愿你享受美好生活每一天!

1、冬天里,重调理;多锻炼,日光浴;早安睡,晚游历;勤开窗,通空气;暖腹背,寒不欺;适滋补,强体力;心乐观,无忧虑;温…

Redis篇---第五篇

系列文章目录 文章目录 系列文章目录前言一、持久化有两种,那应该怎么选择呢?二、怎么使用 Redis 实现消息队列?三、说说你对Redis事务的理解前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,…

BUUCTF [GXYCTF2019]佛系青年 1

BUUCTF:https://buuoj.cn/challenges 题目描述: 密文: 下载附件,解压得到ZIP压缩包。 解题思路: 1、压缩包内有一张png图片和一个txt文本,解压zip压缩包,解压出图片,但txt文本提示需要输入密…

null 不好,我真的推荐你使用 Optional

"Null 很糟糕." - Doug Lea。 Doug Lea 是一位美国的计算机科学家,他是 Java 平台的并发和集合框架的主要设计者之一。他在 2014 年的一篇文章中说过:“Null sucks.”1,意思是 null 很糟糕。他认为 null 是一种不明确的表示&#x…

C 语言字符串

C 语言字符串 在本教程中,您将学习C语言编程中的字符串。您将在示例的帮助下学习声明它们,对其进行初始化以及将它们用于各种 I / O(输入/输出)操作。 在C语言编程中,字符串是以null字符\0结束的字符序列。例如: ch…

SQL 的 AND、OR 和 NOT 运算符:条件筛选的高级用法

AND 运算符 SQL的AND运算符用于根据多个条件筛选记录,确保所有条件都为TRUE才返回记录。下面是AND运算符的基本语法: SELECT column1, column2, ... FROM table_name WHERE condition1 AND condition2 AND condition3 ...;column1, column2,等是您要选…

2023年(第六届)电力机器人应用与创新发展论坛-核心PPT资料下载

一、峰会简介 大会以“聚焦电力机器人创新、助力行业数字化转型、促进产业链协同发展”为主题,展示电力机器人产业全景创新技术,探讨数字化战略下电力机器人应用前景和发展趋势。为加快推进电力机器人应用拓新,助力电网数字化转型升级&#…

C语言百钱买百鸡(ZZULIOJ1074:百钱买百鸡)

题目描述 百钱买百鸡问题:公鸡五文钱一只,母鸡三文钱一只,小鸡三只一文钱,用100文钱买100只鸡,公鸡、母鸡、小鸡各买多少只? 本程序要求解的问题是:给定一个正整数n,用n文钱买n只鸡&…

Pandas+Matplotlib 数据分析

利用可视化探索图表 一、数据可视化与探索图 数据可视化是指用图形或表格的方式来呈现数据。图表能够清楚地呈现数据性质, 以及数据间或属性间的关系,可以轻易地让人看图释义。用户通过探索图(Exploratory Graph)可以了解数据的…

《向量数据库指南》——TruLens + Milvus Cloud构建RAG深入了解性能

深入了解性能 索引类型 本例中,索引类型对查询速度、token 用量或评估没有明显影响。这可能是因为数据量较小的关系。索引类型对较大语料库可能更重要。 Embedding 模型 text-embedding-ada-002 在准确性(0.72,平均 0.60)和答案相关度(0.82,平均0.62)上优于 MiniLM Embeddin…