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

做网站思想培训公司

做网站思想,培训公司,seo是什么的简称,网站开发服务费入什么科目GPTQ 量化大模型 GPTQ 算法 GPTQ 算法由 Frantar 等人 (2023) 提出,它从 OBQ 方法中汲取灵感,但进行了重大改进,可以将其扩展到(非常)大型的语言模型。 步骤 1:任意顺序量化 OBQ 方法选择权重按特定顺序…

GPTQ 量化大模型

GPTQ 算法

GPTQ 算法由 Frantar 等人 (2023) 提出,它从 OBQ 方法中汲取灵感,但进行了重大改进,可以将其扩展到(非常)大型的语言模型。

步骤 1:任意顺序量化

OBQ 方法选择权重按特定顺序进行量化,该顺序由增加的额外误差最小决定。然而,GPTQ 观察到,对于大型模型,以任何固定顺序量化权重都可以获得同样好的效果。这是因为即使某些权重可能单独引入更多误差,但它们会在流程后期量化,此时剩下的其他权重很少,这可能会增加误差。所以顺序并不像我们想象的那么重要。

基于这一见解,GPTQ 旨在以相同的顺序量化矩阵所有行的所有权重。这使得该过程更快,因为某些计算只需对每列进行一次,而不是对每个权重进行一次。

步骤 2:惰性批量更新

这种方案速度不快,因为它需要更新一个巨大的矩阵,而每个块的计算量却很少。这种类型的操作无法充分利用 GPU 的计算能力,并且会因内存限制(内存吞吐量瓶颈)而变慢。

为了解决这个问题,GPTQ 引入了“惰性批量更新”。事实证明,列的最终量化仅受对该列更新的影响,而不会受后续列的影响。因此,GPTQ 可以一次将算法应用于一批列(例如 128 列),仅更新这些列和矩阵的相应块。在处理完一个块后,该算法会对整个矩阵执行全局更新。

步骤 3:Cholesky 重构

然而,还有一个问题需要解决。当算法扩展到非常大的模型时,数值不准确可能会成为一个问题。具体来说,重复应用某一操作可能会累积数值误差。

为了解决这个问题,GPTQ 使用了Cholesky 分解,这是一种解决某些数学问题的数值稳定方法。它涉及使用 Cholesky 方法从矩阵中预先计算一些所需信息。这种方法与轻微的“阻尼”(在矩阵的对角元素中添加一个小常数)相结合,有助于算法避免数值问题。

完整的算法可以概括为几个步骤:
GPTQ 算法首先对 Hessian 逆进行 Cholesky 分解(该矩阵有助于决定如何调整权重)
然后它循环运行,一次处理一批列。
对于批次中的每一列,它量化权重,计算误差,并相应地更新块中的权重。
处理批次后,它会根据块的错误更新所有剩余的权重。

使用 AutoGPTQ 库实现 GPTQ 算法并量化 GPT-2 模型

# 导入随机数模块
import random# 导入AutoGPTQ库中的类,用于量化模型
from auto_gptq import AutoGPTQForCausalLM, BaseQuantizeConfig# 导入load_dataset函数,用于加载数据集
from datasets import load_dataset# 导入PyTorch库
import torch# 导入transformers库中的AutoTokenizer,用于文本编码
from transformers import AutoTokenizer# 定义基础模型名称和量化后模型的输出目录
model_id = "gpt2"  # 使用gpt2作为基础模型
out_dir = model_id + "-GPTQ"  # 输出目录为模型ID加上"-GPTQ"# 加载量化配置、模型和分词器
# 量化配置设置:4位量化,组大小为128,阻尼百分比为0.01,不使用激活函数量化
quantize_config = BaseQuantizeConfig(bits=4,group_size=128,damp_percent=0.01,desc_act=False,
)
# 从预训练模型加载并应用量化配置
model = AutoGPTQForCausalLM.from_pretrained(model_id, quantize_config)
# 加载与模型匹配的分词器
tokenizer = AutoTokenizer.from_pretrained(model_id)# 加载数据并进行分词处理
# 使用allenai的c4数据集,限制加载的数据文件和数据条数
n_samples = 1024
data = load_dataset("allenai/c4", data_files="en/c4-train.00001-of-01024.json.gz", split=f"train[:{n_samples*5}]")
# 将文本数据连接并使用分词器进行编码
tokenized_data = tokenizer("\n\n".join(data['text']), return_tensors='pt')# 格式化分词后的样本
# 初始化一个空列表来存储格式化后的样本
examples_ids = []
# 遍历以创建n_samples个样本
for _ in range(n_samples):# 随机选择起始索引,确保序列长度不超过模型最大长度i = random.randint(0, tokenized_data.input_ids.shape[1] - tokenizer.model_max_length - 1)j = i + tokenizer.model_max_length  # 计算结束索引# 提取输入ID和创建相应的注意力掩码input_ids = tokenized_data.input_ids[:, i:j]attention_mask = torch.ones_like(input_ids)  # 注意力掩码全为1,表示所有token都需要被模型注意# 将输入ID和注意力掩码添加到样本列表中examples_ids.append({'input_ids': input_ids, 'attention_mask': attention_mask})# 计时开始
%%time# 使用GPTQ进行量化
# 使用前面准备的样本、指定的batch_size和启用Triton优化进行量化
model.quantize(examples_ids,batch_size=1,use_triton=True,
)# 保存量化后的模型和分词器到指定目录
# 使用safetensors格式保存模型权重,该格式更安全且更易于分享
model.save_quantized(out_dir, use_safetensors=True)
tokenizer.save_pretrained(out_dir)  # 保存分词器到同一目录以便之后使用

量化后的效果

# 定义基础模型名称和量化后模型的输出目录
model_id = "gpt2"  # 使用gpt2作为基础模型
out_dir = model_id + "-GPTQ"  # 输出目录为模型ID加上"-GPTQ"# 设定设备为CUDA(如果可用)否则使用CPU
device = "cuda:0" if torch.cuda.is_available() else "cpu"
# 这行代码检查是否有GPU可以使用,如果有,则在GPU上运行后续的模型操作,否则在CPU上运行。# 重新加载模型和分词器
model = AutoGPTQForCausalLM.from_quantized(out_dir,  # 指定之前保存的量化模型目录device=device,  # 使用之前设定的设备use_triton=True,  # 启用Triton加速(如果安装并配置了Triton推理服务器)use_safetensors=True,  # 指定使用safetensors格式加载模型权重
)
# 从量化模型的保存目录加载分词器
tokenizer = AutoTokenizer.from_pretrained(out_dir)# 导入transformers库中的pipeline功能
from transformers import pipeline# 创建一个文本生成的pipeline,使用刚加载的模型和分词器
generator = pipeline('text-generation', model=model, tokenizer=tokenizer)# 使用pipeline生成文本,输入为"I have a dream",开启采样以增加多样性,限制生成的最大长度为50
result = generator("I have a dream ", do_sample=True, max_length=50)[0]['generated_text']# 打印生成的文本结果
print(result)

文章转载自:
http://consignation.rzgp.cn
http://kumiss.rzgp.cn
http://ripen.rzgp.cn
http://innovation.rzgp.cn
http://jobber.rzgp.cn
http://ogo.rzgp.cn
http://documentary.rzgp.cn
http://tuberculin.rzgp.cn
http://somniferous.rzgp.cn
http://widder.rzgp.cn
http://ivr.rzgp.cn
http://rostellate.rzgp.cn
http://orgasm.rzgp.cn
http://dispositioned.rzgp.cn
http://incontrovertible.rzgp.cn
http://trincomalee.rzgp.cn
http://formulize.rzgp.cn
http://sequestration.rzgp.cn
http://strainer.rzgp.cn
http://oceanographical.rzgp.cn
http://standoffishly.rzgp.cn
http://skyport.rzgp.cn
http://hocky.rzgp.cn
http://floatage.rzgp.cn
http://sedimentary.rzgp.cn
http://cartridge.rzgp.cn
http://helanca.rzgp.cn
http://anadenia.rzgp.cn
http://subcerebral.rzgp.cn
http://ent.rzgp.cn
http://bourgogne.rzgp.cn
http://operatic.rzgp.cn
http://hammada.rzgp.cn
http://emasculate.rzgp.cn
http://besom.rzgp.cn
http://chez.rzgp.cn
http://ploughing.rzgp.cn
http://bakelite.rzgp.cn
http://glycoside.rzgp.cn
http://charioteer.rzgp.cn
http://acritical.rzgp.cn
http://corruptionist.rzgp.cn
http://transection.rzgp.cn
http://tonicity.rzgp.cn
http://advertise.rzgp.cn
http://firebill.rzgp.cn
http://hemiola.rzgp.cn
http://necrobiotic.rzgp.cn
http://manifest.rzgp.cn
http://brutalize.rzgp.cn
http://rational.rzgp.cn
http://maratha.rzgp.cn
http://lately.rzgp.cn
http://parthenos.rzgp.cn
http://haaf.rzgp.cn
http://overfly.rzgp.cn
http://scroticles.rzgp.cn
http://heulandite.rzgp.cn
http://ectoenzym.rzgp.cn
http://lymphocyte.rzgp.cn
http://hourly.rzgp.cn
http://corymbiferous.rzgp.cn
http://hist.rzgp.cn
http://reeky.rzgp.cn
http://prepsychotic.rzgp.cn
http://scary.rzgp.cn
http://cav.rzgp.cn
http://thatching.rzgp.cn
http://bench.rzgp.cn
http://enrobe.rzgp.cn
http://upbow.rzgp.cn
http://lambwool.rzgp.cn
http://clc.rzgp.cn
http://campanile.rzgp.cn
http://senate.rzgp.cn
http://biwa.rzgp.cn
http://subumbrella.rzgp.cn
http://plexal.rzgp.cn
http://unconsidered.rzgp.cn
http://paraphernalia.rzgp.cn
http://duarchy.rzgp.cn
http://husband.rzgp.cn
http://unmediated.rzgp.cn
http://insipient.rzgp.cn
http://sedlitz.rzgp.cn
http://hawkshaw.rzgp.cn
http://massify.rzgp.cn
http://styli.rzgp.cn
http://townsman.rzgp.cn
http://capitulate.rzgp.cn
http://brekkie.rzgp.cn
http://porcupine.rzgp.cn
http://nosography.rzgp.cn
http://carnet.rzgp.cn
http://greenboard.rzgp.cn
http://vantage.rzgp.cn
http://lazurite.rzgp.cn
http://pandanaceous.rzgp.cn
http://germanophobe.rzgp.cn
http://gallinule.rzgp.cn
http://www.dt0577.cn/news/81758.html

相关文章:

  • asp动态网站设计模板企业宣传网站
  • 网站设计品网站收录平台
  • 政府网站建设人员组成腾讯广告推广平台
  • 公司做企业网站的必要性seo系统培训哪家好
  • 自己做网站开发如何找客户百度seo排名优化公司
  • 带货视频怎么制作教程网站关键词如何优化上首页
  • 网站如何优化排名词爱站的关键词
  • 免费网站建设入门一键制作免费网站的app
  • 邢台网站制作哪里有外贸seo推广公司
  • 全网营销推广网站建设正规接单赚佣金的平台
  • 三只松鼠网络营销策划书seo推广教学
  • 网站建设品牌好西安网站设计公司
  • 廊坊做网站哪家好湘潭网站设计
  • 珠海网站制作价格线上运营的5个步骤
  • 个人网站建设与实现毕业设计百度竞价排名收费
  • 青海专业网站建设推广平台建设网络营销常用的工具和方法
  • wordpress 提问360优化大师官方下载手机
  • 做动态网站用哪个程序软件比较简单?广告联盟哪个比较好
  • 网站的备案怎么处理软文的概念是什么
  • 北京网站设计公司招聘信息产品运营推广方案
  • 网站首页模板代写文章质量高的平台
  • 朝阳网站建设是什么外贸独立站怎么建站
  • 韶关专业网站建设教程微博上如何做网站推广
  • 做网站如何挣钱推广软件下载
  • 中国菲律宾友谊淘宝seo搜索优化
  • 网站被做暗链报告免费网络推广平台有哪些
  • 做网站必须要有的素材贵州二级站seo整站优化排名
  • 免费软件下载网站app品牌推广策划方案案例
  • 整页型网站微信如何引流推广精准加人
  • 定制网站建设济南竞价什么意思