大模型后量化类型比较与选取

一、目录

1.量化对象有哪些?
2.常见的量化精度有哪些?
3.什么是后量化?
4. AWQ量化相关知识
5. GPQT量化相关知识
6. AWQ量化与GPTQ量化对比
7. Smooth quant 量化相关知识
8. 如何选择量化类型?
10. 评估量化对各种NLP任务的影响
11. 评估量化对不同LLMs的影响
12. 不同的Tensor类型对量化的影响
13. 不同的量化方法对模型的影响

二、实现

  1. 量化对象有哪些?
    可以对模型参数(weight)、激活值(activation)或者梯度(gradient)做量化。
    通常而言,模型的参数分布较为稳定,因此对参数 weight 做量化较为容易。
    然而,模型的激活值往往存在异常值,直接对其做量化,会降低有效的量化格点数,导致精度损失严重,因此,激活值的量化需要更复杂的处 理方法(如 SmoothQuant)
    常见的量化精度有哪些?
    可以将模型量化为 int4、int8,fp16 等整型数据格式。

  2. 后量化 PTQ?
    模型训练后进行量化处理,旨在提高推理速度、降低显存。

  3. AWQ量化相关知识

    1. AWQ 量化原理:AWQ是一种权重量化方法。通过保护更“重要”的权重不进行量化,从而在不进行训练的情况下提高准确率。
    2. 如何保护重要权重?
      作者提出了一种 激活感知权重量化方法。即通过保留1%的显著权重来改进LLM量化。
    3. 如何进行激活感知权重量化?
      通过按 逐通道(per-channel)缩放来减少显著权重的量化误差,这种方法不存在硬件效率低下的问题。
      即:自动搜索最佳(每个输入通道)缩放因子,使某一层量化后的输出差最小。缩放因子的确定通过使量化前后输出差最小为目的,自动搜索最佳缩放因子。从而保证不同权重具有不同的缩放比例。
    4. AWQ量化流程:
      1. 首先,AWQ 使用 group 量化将权重分组为多个子矩阵。
      2. 然后,AWQ 使用 activation-aware 的方法来量化每个子矩阵。
      3. 最后,AWQ 使用无重新排序的在线反量化来提高量化性能。
  4. GPQT量化相关知识
    GPQT 量化原理:GPQT 是一种权重量化方法。逐一量化模型的各个层,从而在不进行训练的情况下提高准确率。
    目标:每个需要被量化的层(对应参数W ),希望量化前后该层输出变化尽量小。

  5. GPQT量化与AWQ量化区别?
    AWQ 量化过程中会跳过一小部分权重,这有助于减轻量化损失。所以他们的论文提到了与GPTQ相比的可以由显著加速,同时保持了相似的,有时甚至更好的性能。
    2. GPQT量化流程:
    1. 首先,GPTQ 使用 group 量化将权重分组为多个子矩阵。
    2. 然后,GPTQ 使用 OBQ 方法来量化每个子矩阵。
    3. 最后,GPTQ 使用动态反量化来恢复权重的原始值。

  6. AWQ量化与GPTQ量化对比

    1. AWQ 在量化精度、模型大小和计算速度方面都优于 GPTQ,但在量化成本方面略高。
    2. AWQ 量化过程中会跳过一小部分权重,这有助于减轻量化损失。所以他们的论文提到了与GPTQ相比的可以由显著加速,同时保持了相似的,有时甚至更好的性能。
      3.GPTQ 具有良好的量化精度和易于实现的特点,适合于大多数 LLM 任务
  7. Smooth quant 量化相关知识
    1. 原理:可实现 8 比特权重、8 比特激活 (W8A8) 量化。由于权重很容易量化,而激活则较难量化,因此,SmoothQuant 引入平滑因子s来平滑激活异常值,通过数学上等效的变换将量化难度从激活转移到权重上。
    2. 核心: 异常值平滑处理。引入一个超参,减小激活值的变化范围,增大权重的变化范围,从而均衡两者的量化难度。
    3 . 实现方式:将量化难度从 activations 迁移至权重。即 x/alpha, walpha ,s=wx 变为 s=(w*alpha) *(x/alpha) 将w 放大,x缩小。
    4. s 取值: s是migration strength,为一个超参数,控制将多少激活值的量化难度迁移到权重量化,一般取值为0.5。

  8. 如何选择量化类型?
    gptq: 核心是贪心策略,int4/fp16 (W4A16) 的混合量化方案;将权重矩阵分组,量化之后 调整没量化的参数 弥补量化造成的精度损失,需要校准数据集;
    AWQ:AWQ 量化过程中会跳过一小部分权重,这有助于减轻量化损失。所以他们的论文提到了与GPTQ相比的可以由显著加速,同时保持了相似的,有时甚至更好的性能。但成本较高。
    Smooth quant 量化: tensorRT-LLM 中较为推荐。

  9. 评估量化对各种NLP任务的影响
    参考:https://zhuanlan.zhihu.com/p/695144724

  10. 评估量化对不同LLMs的影响

  11. 不同的Tensor类型对量化的影响

  12. 不同的量化方法对模型的影响

  • 24
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这里是一个简单的多因子模型策略的Python代码示例: ```python import pandas as pd import numpy as np import tushare as ts # 获取股票数据 data = ts.get_hist_data('000001', start='2020-01-01', end='2021-01-01') # 计算因子 data['ma5'] = data['close'].rolling(5).mean() data['ma10'] = data['close'].rolling(10).mean() data['pb'] = data['close'] / data['pb'] # 将因子标准化 data = (data - data.mean()) / data.std() # 构建多因子模型 weights = { 'ma5': 0.4, 'ma10': 0.3, 'pb': 0.3 } data['score'] = np.dot(data[list(weights.keys())], list(weights.values())) # 选取得分最高的股票进行投资 top_stock = data.sort_values('score', ascending=False).iloc[0].name # 计算每日收益率 data['return'] = data['pct_change'] data.loc[top_stock, 'return'] *= 2 # 加仓 # 计算总收益率 total_return = (data['return'] + 1).cumprod()[-1] print('Total return:', total_return) ``` 这段代码使用了tushare库获取了000001股票在2020年1月1日至2021年1月1日的历史数据,然后计算了3个因子:5天和10天的简单移动平均线、市净率。接着,将因子进行标准化,并构建了一个多因子模型,通过加权计算得出每只股票的得分,并选取得分最高的股票进行投资,如果得分最高的股票已经持仓,则加仓。最后,计算每日收益率并计算总收益率。需要注意的是,实际的多因子模型策略需要考虑更多的因素,并且需要进行回测和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值