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

茶叶网站制作模板在外国做玄幻小说网站

茶叶网站制作模板,在外国做玄幻小说网站,音乐视频怎么做mp3下载网站,做360网站优化权重量化方面的最新进展使我们能够在消费类硬件上运行大量大型语言模型#xff0c;例如 RTX 3090 GPU 上的 LLaMA-30B 模型。 这要归功于性能下降最小的新型 4 位量化技术#xff0c;例如 GPTQ、GGML 和 NF4。 在上一篇文章中#xff0c;我们介绍了简单的 8 位量化技术和出…权重量化方面的最新进展使我们能够在消费类硬件上运行大量大型语言模型例如 RTX 3090 GPU 上的 LLaMA-30B 模型。 这要归功于性能下降最小的新型 4 位量化技术例如 GPTQ、GGML 和 NF4。 在上一篇文章中我们介绍了简单的 8 位量化技术和出色的 LLM.int8()。 在本文中我们将探索流行的 GPTQ 算法以了解其工作原理并使用 AutoGPTQ 库实现它。 你可以在 Google Colab 和 GitHub 上找到代码。 在线工具推荐 Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器  1、最优大脑量化 让我们首先介绍我们要解决的问题。 对于网络中的每一层 ℓ我们希望找到原始权重 Wₗ 的量化版本 Ŵₗ。 这称为分层压缩问题。 更具体地说为了最大限度地减少性能下降我们希望这些新权重的输出 (ŴᵨXᵨ) 尽可能接近原始权重 (WᵨXᵨ)。 换句话说我们想要找到 人们提出了不同的方法来解决这个问题但我们对这里的最优大脑量化器OBQOptimal Brain Quantizer框架感兴趣。 该方法的灵感来自于一种修剪pruning技术该技术可以仔细地从经过充分训练的密集神经网络最佳脑外科医生中去除权重。 它使用近似技术并为要删除的最佳单个权重 w和最佳更新 δ提供显式公式以调整剩余非量化权重 F 的集合以弥补删除 其中 quant(w) 是量化给出的权重舍入H 是 Hessian 矩阵。 使用 OBQ我们可以首先量化最简单的权重然后调整所有剩余的非量化权重以补偿这种精度损失。 然后我们选择下一个要量化的权重依此类推。 这种方法的一个潜在问题是当存在异常权重时这可能会导致高量化误差。 通常当剩下很少的非量化权重可以调整以补偿大误差时这些离群值将最后被量化。 当一些权重因中间更新而被进一步推到网格之外时这种效果可能会恶化。 应用一个简单的启发式方法来防止这种情况异常值一出现就被量化。 这个过程的计算量可能很大尤其是对于KKM而言。 为了解决这个问题OBQ 方法使用了一种技巧可以避免每次简化权重时都重新进行整个计算。 量化权重后它通过删除与该权重关联的行和列使用高斯消除来调整计算中使用的矩阵Hessian 该方法还采用矢量化来一次处理多行权重矩阵。 尽管其效率很高但 OBQ 的计算时间随着权重矩阵大小的增加而显着增加。 这种立方增长使得在具有数十亿参数的大型模型上使用 OBQ 变得困难。 2、GPTQ 算法 由 Frantar 等人提出GPTQ 算法从 OBQ 方法中汲取灵感但进行了重大改进以将其扩展到非常大型语言模型。 第 1 步任意排序洞察 OBQ 方法按一定的顺序选择权重模型中的参数进行量化所确定的权重将增加最少的附加误差。 然而GPTQ 观察到对于大型模型以任何固定顺序量化权重都可以获得同样的效果。 这是因为即使某些权重可能会单独引入更多误差但它们会在过程中稍后进行量化因为此时几乎没有其他权重可能会增加误差。 所以顺序并不像我们想象的那么重要。 基于这一见解GPTQ 旨在以相同的顺序量化矩阵所有行的所有权重。 这使得过程更快因为某些计算只需为每列执行一次而不是为每个权重执行一次。 第 2 步惰性批量更新 该方案不会很快因为它需要更新一个巨大的矩阵并且每个条目的计算量很少。 此类操作无法充分利用 GPU 的计算能力并且会因内存限制内存吞吐量瓶颈而减慢速度。 为了解决这个问题GPTQ 引入了“惰性批量”更新。 事实证明给定列的最终舍入决策仅受对该列执行的更新的影响而不受后续列上执行的更新的影响。 因此GPTQ 可以一次将该算法应用于一批列例如 128 列仅更新这些列和矩阵的相应块。 完全处理一个块后算法对整个矩阵执行全局更新。 步骤 3Cholesky 重构 然而还有一个问题需要解决。 当算法扩展到非常大的模型时数值不准确可能会成为一个问题。 具体来说重复应用某个运算可能会累积数值误差。 为了解决这个问题GPTQ 使用 Cholesky 分解这是一种用于解决某些数学问题的数值稳定方法。 它涉及使用 Cholesky 方法从矩阵中预先计算一些所需的信息。 这种方法与轻微的“阻尼”向矩阵的对角元素添加一个小常数相结合有助于算法避免数值问题。 完整的算法可以概括为以下几个步骤 GPTQ 算法从 Hessian 逆矩阵帮助决定如何调整权重的矩阵的 Cholesky 分解开始然后它循环运行一次处理一批列。对于批次中的每一列它都会量化权重计算误差并相应地更新块中的权重。处理完该批次后它会根据块的错误更新所有剩余的权重。 GPTQ 算法在各种语言生成任务上进行了测试。 它与其他量化方法进行了比较例如将所有权重四舍五入到最接近的量化值RTN。 GPTQ 与 BLOOM176B 参数和 OPT175B 参数模型系列一起使用并使用单个 NVIDIA A100 GPU 对模型进行量化。 3、使用 AutoGPTQ 量化 LLM GPTQ 在创建可在 GPU 上高效运行的 4 位精度模型方面非常流行。 你可以在 Hugging Face Hub 上找到许多示例尤其是来自 TheBloke 的示例。 如果你正在寻找一种对 CPU 更友好的方法GGML 目前是你的最佳选择。 最后带有 bitsandbytes 的 Transformer 库允许你在使用 load_in_4bittrue 参数加载模型时对其进行量化这需要下载完整模型并将其存储在 RAM 中。 让我们使用 AutoGPTQ 库实现 GPTQ 算法并量化 GPT-2 模型。 这需要 GPU但 Google Colab 上的免费 T4 就可以了。 我们首先加载库并定义我们想要量化的模型在本例中为 GPT-2。 !BUILD_CUDA_EXT0 pip install -q auto-gptq transformers import randomfrom auto_gptq import AutoGPTQForCausalLM, BaseQuantizeConfig from datasets import load_dataset import torch from transformers import AutoTokenizer# Define base model and output directory model_id gpt2 out_dir model_id -GPTQ 我们现在要加载模型和分词器。 分词器是使用 Transformers 库中的经典 AutoTokenizer 类加载的。 另一方面我们需要传递特定的配置BaseQuantizeConfig来加载模型。 在此配置中我们可以指定要量化的位数此处bits4和组大小惰性批次的大小。 请注意该组大小是可选的我们还可以对整个权重矩阵使用一组参数。 在实践中这些组通常以非常低的成本提高量化质量特别是在 group_size1024 的情况下。 此处的 hum_percent 值用于帮助 Cholesky 重新公式化不应更改。 最后desc_act也称为行为顺序是一个棘手的参数。 它允许你根据减少的激活来处理行这意味着首先处理最重要或最有影响力的行由采样的输入和输出确定。 该方法旨在将大部分量化误差在量化过程中不可避免地引入置于不太重要的权重上。 这种方法通过确保以更高的精度处理最重要的权重提高了量化过程的整体准确性。 然而当与组大小一起使用时由于需要频繁重新加载量化参数desc_act 可能会导致性能下降。 因此我们不会在这里使用它但是将来可能会修复它。 # Load quantize config, model and tokenizer quantize_config BaseQuantizeConfig(bits4,group_size128,damp_percent0.01,desc_actFalse, ) model AutoGPTQForCausalLM.from_pretrained(model_id, quantize_config) tokenizer AutoTokenizer.from_pretrained(model_id) 量化过程很大程度上依赖于样本来评估和提高量化质量。 它们提供了一种比较原始模型和新量化模型产生的输出的方法。 提供的样本数量越多进行更准确和有效比较的潜力就越大从而提高量化质量。 在本文中我们利用 C4Colossal Clean Crawled Corpus数据集来生成样本。 C4 数据集是从 Common Crawl 项目收集的大规模、多语言的网络文本集合。 这个庞大的数据集经过专门清理和准备用于训练大规模语言模型使其成为此类任务的重要资源。 维基文本数据集是另一个流行的选择。 在下面的代码块中我们从 C4 数据集中加载 1024 个样本对它们进行标记并格式化。 # Load data and tokenize examples n_samples 1024 data load_dataset(allenai/c4, data_filesen/c4-train.00001-of-01024.json.gz, splitftrain[:{n_samples*5}]) tokenized_data tokenizer(\n\n.join(data[text]), return_tensorspt)# Format tokenized examples examples_ids [] 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_lengthinput_ids tokenized_data.input_ids[:, i:j]attention_mask torch.ones_like(input_ids)examples_ids.append({input_ids: input_ids, attention_mask: attention_mask}) 现在数据集已准备就绪我们可以开始批大小为 1 的量化过程。我们还可以选择使用 OpenAI TritonCUDA 的替代方案与 GPU 进行通信。 完成此操作后我们将分词器和模型保存为安全张量格式。 # Quantize with GPTQ model.quantize(examples_ids,batch_size1,use_tritonTrue, )# Save model and tokenizer model.save_quantized(out_dir, use_safetensorsTrue) tokenizer.save_pretrained(out_dir) 像往常一样然后可以使用 AutoGPTQForCausalLM 和 AutoTokenizer 类从输出目录加载模型和标记生成器。 device cuda:0 if torch.cuda.is_available() else cpu# Reload model and tokenizer model AutoGPTQForCausalLM.from_quantized(out_dir,devicedevice,use_tritonTrue,use_safetensorsTrue, ) tokenizer AutoTokenizer.from_pretrained(out_dir) 让我们检查一下模型是否正常工作。 AutoGPTQ 模型大部分作为普通transformer模型工作这使得它与推理管道兼容如以下示例所示 from transformers import pipelinegenerator pipeline(text-generation, modelmodel, tokenizertokenizer) result generator(I have a dream, do_sampleTrue, max_length50)[0][generated_text] print(result) I have a dream, she told CNN last week. I have this dream of helping my mother find her own. But, to tell that for the first time, now that Im seeing my mother now, just knowing how wonderful it is that 我们成功地从量化的 GPT-2 模型中获得了令人信服的完成结果。 更深入的评估需要测量量化模型与原始模型的复杂度。 但是我们将其排除在本文的讨论范围之外。 4、结束语 在本文中我们介绍了 GPTQ 算法这是一种在消费级硬件上运行 LLM 的最先进的量化技术。 我们展示了它如何基于具有任意顺序洞察、惰性批量更新和 Cholesky 重构的改进 OBS 技术来解决分层压缩问题。 这种新颖的方法显着降低了内存和计算需求使LLM可供更广泛的受众使用。 此外我们在免费的 T4 GPU 上量化了我们自己的 LLM 模型并运行它来生成文本。 你可以在 Hugging Face Hub 上推送自己的 GPTQ 4 位量化模型版本。 正如简介中提到的GPTQ 并不是唯一的 4 位量化算法GGML 和 NF4 都是优秀的替代方案但范围略有不同。 我鼓励你更多地了解它们并尝试一下 原文链接GPTQ 4位量化实战 - BimAnt
http://www.tj-hxxt.cn/news/134131.html

相关文章:

  • 尤溪网站开发公司如何建立网站
  • 常州网站开发培训郴州做网站的公司
  • 蛋品 东莞网站建设网站设计是用什么做的
  • 排名好的青岛网站建设营销网站建设专业服务公司
  • 洛阳网站推广怎么做永康住房城乡建设局网站
  • 免费的黄冈网站有哪些平台呢永久久微信网页版手机端
  • 电商网站开发实战视频教程深圳网站建设最专业
  • html网站开发基础siteapp wordpress
  • 做网站有什么js特效室内设计软件免费下载
  • 公司网站的建设与运营管理制度网页升级访问新域名
  • 电子商务网站建设需求概述网站制作是怎么学的
  • 如何做国外网站推广wordpress增加底部导航
  • 做本地网站赚钱吗?泉州app开发
  • 苏州网站网络推广WordPress友情链接添加
  • 怎么把做的网站放到腾讯云里面什么网站可以做实验室
  • 婚纱摄影网站论文电子商务网站建设的期中考试
  • 气象网站建设管理的不足如何做网站seo优化
  • 网站域名怎么写好建立外贸网站
  • 酒店网站建设策划书wordpress 做问卷
  • 电子商务网站开发与设计报告上海公司网站建设价格
  • 建设信用网站的目的网页设计师培训班招生
  • 高密市建设局网站软文广告经典案例300
  • dw做网站如何让用户可编辑搜索引擎营销方案
  • 南山做网站教程四川省建设厅招标网站
  • 文明网站建设方案榆林市建设局网站
  • 开封市建设局网站wordpress tag调用文章
  • 百度seo优化网站wordpress文章位置
  • 上海奉贤网站建设建设工程法律法规
  • 动效网站建筑人才网官网96877
  • 宣传电脑的网站开发百度seo排名优化