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

关于政府网站建设的几点建议收录优美图片找不到了

关于政府网站建设的几点建议,收录优美图片找不到了,郑州网站制作计划,免费二级域名申请量化工具箱pytorch_quantization 通过提供一个方便的 PyTorch 库来补充 TensorRT ,该库有助于生成可优化的 QAT 模型。该工具包提供了一个 API 来自动或手动为 QAT 或 PTQ 准备模型。 API 的核心是 TensorQuantizer 模块,它可以量化、伪量化或收集张量的…

量化工具箱pytorch_quantization 通过提供一个方便的 PyTorch 库来补充 TensorRT ,该库有助于生成可优化的 QAT 模型。该工具包提供了一个 API 来自动或手动为 QAT 或 PTQ 准备模型。

API 的核心是 TensorQuantizer 模块,它可以量化、伪量化或收集张量的统计信息。它与 QuantDescriptor 一起使用,后者描述了如何量化张量。在 TensorQuantizer 之上的是量化模块,这些模块被设计为 PyTorch 全精度模块的替代品。这些是使用 TensorQuantizer 对模块的权重和输入进行伪量化或收集统计信息的方便模块。

API 支持将 PyTorch 模块自动转换为其量化版本。转换也可以使用 API 手动完成,这允许在不想量化所有模块的情况下进行部分量化。例如,一些层可能对量化更敏感,并且使其未量化可提高任务精度。

量化第一步是将量化器模块添加到神经网络图中。该包提供了许多量化层模块,其中包含用于输入和权重的量化器。例如quant_nn.QuantLinear,它可以用来代替nn.Linear。这些量化层可以通过猴子修补或手动修改模型定义来自动替换。自动层替换是使用quant_module完成的。这应该在创建模型之前调用。

首先看以下代码:

from pytorch_quantization import quant_modules
quant_modules.initialize()

initialize()会动态地修改 PyTorch 代码,适用于每个模块的所有实例,将 torch.nn.module 的一些子类替换为对应的量化版本。如果不希望所有模块都量化,则应手动替换量化模块。独立量化器也可以添加到带有quant_nn.TensorQuantizer的模型中。

initialize()位于:tools\pytorch-quantization\pytorch_quantization\quant_modules.py,作用使用使用monkey patching进行动态模块更换为量化版本

什么是猴子补丁

  • Python是一种典型的动态脚本语言。它不仅具有 动态类型(dynamic type) ,而且它的 对象模型(object model) 也是动态的。Python的类是可变的(mutable),方法(methods)只是类的属性(attributes);这允许我们在 运行时(run time) 修改其行为。这被称为猴子补丁(Monkey Patching), 它指的是偷偷地更改代码。
  • Monkey Patching只是在 运行时(run time) 动态替换属性(attributes)。而在Python中,术语monkey patch指的是对函数(function)、类(class)或模块(module)的动态(或运行时)修改。
def initialize(float_module_list=None, custom_quant_modules=None):"""用量化版本动态地替换模块。在内部,状态由helper类对象维护,该对象有助于将原始模块替换回去。参数:float_module_list:列表,用户提供的列表,其中指明哪些模块不可执行替换custom_quant_modules:一个字典。用户提供的映射,用于指示除torch.nn及其相应量化版本之外的任何其他模块。Returns:空"""# 准备monkey patching中使用的内部变量quant_map和orginal_func_map_quant_module_helper_object.prepare_state(float_module_list, custom_quant_modules)#执行量化模块替换_quant_module_helper_object.apply_quant_modules()def deactivate():"""动态模块更换,可逆转monkey patching使用维护状态的helper类对象动态地替换回先前在initialize()函数调用中被monkey patching的原始模块。"""_quant_module_helper_object.restore_float_modules()# 维护被替换模块状态的全局对象。
_quant_module_helper_object = QuantModuleReplacementHelper()

自定义量化模块使用示例:

# torch.nn模块定义不可执行替换列表
float_module_list = ["Linear"]
# torch.nn以外的模块自定义映射
custom_quant_modules = [(torch.nn, "Linear", quant_nn.QuantLinear)]
# Monkey修补模块
pytorch_quantization.quant_modules.initialize(float_module_list, custom_modules)
# 使用量化模块
pytorch_quantization.quant_modules.deactivate()

继续看helperQuantModuleReplacementHelper

class QuantModuleReplacementHelper():"""帮助量化版本替换torch.nn模块术语monkey patch指的是对函数(function)、类(class)或模块(module)的动态(或运行时)修改该模块用工具内部实现或任何其他用户提供的自定义模块提供的量化版 替换(通过monkey patching)torch.nn模块属性:orginal_func_map:一个dict.维护原始torch.nn模块字典quant_support_list:列表,包含工具提供的量化版本的模块名称quant_map:一个字典,包含模块名称及其量化版本的字典quant_switch_opt:一个字典,用于指示哪些模块不能替换其量化版本。该dict由用户提供的列表更新,该列表指示在monkey patching中要忽略的模块"""def __init__(self):# 保留要更换的原始模块self.orginal_func_map = set()# 默认情况下,维护工具支持的量化模块列表self.default_quant_map = _DEFAULT_QUANT_MAP# 保存最终量化模块。self.quant_map = set()

_DEFAULT_QUANT_MAP是包含量化模块映射的文件的全局成员

_DEFAULT_QUANT_MAP = [_quant_entry(torch.nn, "Conv1d", quant_nn.QuantConv1d),_quant_entry(torch.nn, "Conv2d", quant_nn.QuantConv2d),_quant_entry(torch.nn, "Conv3d", quant_nn.QuantConv3d),_quant_entry(torch.nn, "ConvTranspose1d", quant_nn.QuantConvTranspose1d),_quant_entry(torch.nn, "ConvTranspose2d", quant_nn.QuantConvTranspose2d),_quant_entry(torch.nn, "ConvTranspose3d", quant_nn.QuantConvTranspose3d),_quant_entry(torch.nn, "Linear", quant_nn.QuantLinear),_quant_entry(torch.nn, "LSTM", quant_nn.QuantLSTM),_quant_entry(torch.nn, "LSTMCell", quant_nn.QuantLSTMCell),_quant_entry(torch.nn, "AvgPool1d", quant_nn.QuantAvgPool1d),_quant_entry(torch.nn, "AvgPool2d", quant_nn.QuantAvgPool2d),_quant_entry(torch.nn, "AvgPool3d", quant_nn.QuantAvgPool3d),_quant_entry(torch.nn, "AdaptiveAvgPool1d", quant_nn.QuantAdaptiveAvgPool1d),_quant_entry(torch.nn, "AdaptiveAvgPool2d", quant_nn.QuantAdaptiveAvgPool2d),_quant_entry(torch.nn, "AdaptiveAvgPool3d", quant_nn.QuantAdaptiveAvgPool3d),]

_quant_entry定义命名元组,用于存储量化模块映射,它拥有三个属性orig_mod mod_name replace_mod

_quant_entry = namedtuple('quant_entry', 'orig_mod mod_name replace_mod')

QuantModuleReplacementHelper类的属性方法:

  • prepare_state 准备稍后在monkey patching机制中使用的量化模块的命名字典quant_map和更换为原始模块orginal_func_map
    • 设置torch.nn工具支持的量化模块列表
    • 为torch.nn以外的模块设置自定义映射
    • 使用float_module_list关闭用户指示模块的monkey patching替换
    def prepare_state(self, float_module_list=None, custom_map=None):""""""# 对于支持的默认量化模块,生成quant_mapfor item in self.default_quant_map:if float_module_list is not None and item.mod_name in float_module_list:# 如果float_module_list中存在此模块,则跳过此模块continueelse:# 将模块追加到将在monkey patching中使用的变量中self.quant_map.add(item)# 存储要在反向monkey patching中使用的原始模块self.orginal_func_map.add(_quant_entry(item.orig_mod, item.mod_name,getattr(item.orig_mod, item.mod_name)))# 将自定义模块添加到quant_mapif custom_map is not None:for item in custom_map:# 将自定义模块附加到将在monkey补丁中使用的列表中# 将元组转换为命名元组self.quant_map.add(_quant_entry(item[0], item[1], item[2]))# 将原始模块存储在另一个列表中,该列表将用于反向monkey patchingself.orginal_func_map.add(_quant_entry(item[0], item[1], getattr(item[0], item[1])))
  • apply_quant_modules:根据quant_map,执行替换为量化模块
    def apply_quant_modules(self):for entry in self.quant_map:# 用于设置属性值,该属性不一定是存在的,对应函数 getattr()setattr(entry.orig_mod, entry.mod_name, entry.replace_mod)
  • restore_float_modules:通过使用orginal_func_map替换回原始模块,反转monkey patch的效果
    def restore_float_modules(self):for entry in self.orginal_func_map:setattr(entry.orig_mod, entry.mod_name, entry.replace_mod)

文章转载自:
http://bromelia.c7617.cn
http://hellweed.c7617.cn
http://anesthesia.c7617.cn
http://speleology.c7617.cn
http://sanguimotor.c7617.cn
http://perfidy.c7617.cn
http://loyalize.c7617.cn
http://capsulated.c7617.cn
http://radioiron.c7617.cn
http://greensickness.c7617.cn
http://hiccup.c7617.cn
http://supramolecular.c7617.cn
http://pythagorist.c7617.cn
http://holoparasite.c7617.cn
http://synovia.c7617.cn
http://worksheet.c7617.cn
http://anticipation.c7617.cn
http://glitterwax.c7617.cn
http://provoke.c7617.cn
http://unshaded.c7617.cn
http://indicant.c7617.cn
http://streaky.c7617.cn
http://toulouse.c7617.cn
http://dearness.c7617.cn
http://jensenism.c7617.cn
http://stp.c7617.cn
http://postpartum.c7617.cn
http://capitulation.c7617.cn
http://talismanic.c7617.cn
http://ujamaa.c7617.cn
http://epencephalic.c7617.cn
http://creodont.c7617.cn
http://labanotation.c7617.cn
http://colombian.c7617.cn
http://kail.c7617.cn
http://kuomintang.c7617.cn
http://baroswitch.c7617.cn
http://synecthry.c7617.cn
http://annalistic.c7617.cn
http://unwetted.c7617.cn
http://ichthyosis.c7617.cn
http://flatten.c7617.cn
http://kloof.c7617.cn
http://anteport.c7617.cn
http://puritanism.c7617.cn
http://kilampere.c7617.cn
http://pedology.c7617.cn
http://fugitive.c7617.cn
http://lexeme.c7617.cn
http://rhytidome.c7617.cn
http://dialectal.c7617.cn
http://concuss.c7617.cn
http://choybalsan.c7617.cn
http://deliberate.c7617.cn
http://coalhole.c7617.cn
http://controlling.c7617.cn
http://nonliterate.c7617.cn
http://vaticinate.c7617.cn
http://preplan.c7617.cn
http://useful.c7617.cn
http://terotechnology.c7617.cn
http://wadset.c7617.cn
http://engineer.c7617.cn
http://lantsang.c7617.cn
http://haemostat.c7617.cn
http://conglomeritic.c7617.cn
http://supertrain.c7617.cn
http://assorted.c7617.cn
http://monoclinal.c7617.cn
http://atomics.c7617.cn
http://innage.c7617.cn
http://spongiopiline.c7617.cn
http://usuriously.c7617.cn
http://mezcaline.c7617.cn
http://nonrestrictive.c7617.cn
http://raisonneur.c7617.cn
http://intercalate.c7617.cn
http://bide.c7617.cn
http://monophonemic.c7617.cn
http://holocaust.c7617.cn
http://counterpressure.c7617.cn
http://misremember.c7617.cn
http://dissenter.c7617.cn
http://heart.c7617.cn
http://missive.c7617.cn
http://warship.c7617.cn
http://turkeytrot.c7617.cn
http://gentile.c7617.cn
http://flightily.c7617.cn
http://haemal.c7617.cn
http://scleroses.c7617.cn
http://tug.c7617.cn
http://rattleroot.c7617.cn
http://combo.c7617.cn
http://taz.c7617.cn
http://fbi.c7617.cn
http://debugger.c7617.cn
http://neuraxon.c7617.cn
http://lymphotoxin.c7617.cn
http://agonise.c7617.cn
http://www.zhongyajixie.com/news/79064.html

相关文章:

  • 代刷网站只做软件吗怎么推广一个app
  • wordpress搬家后404廊坊快速排名优化
  • win7本机做网站关键词排名seo
  • 利用软件做许多网站违法吗chatgpt中文在线
  • 提供网站建设公司报价网站推广优化网址
  • 动态网站建设答案重庆seo怎么样
  • 有关网页设计与网站建设的文章北京网络推广优化公司
  • 南京网站推广¥做下拉去118cr河南推广网站的公司
  • 中国建设基础设施总公司 网站seo实战培训费用
  • 专业网站建设模板网络广告推广服务
  • 女子医院网站优化公司2024小学生时事新闻十条
  • 网站建设有哪些软件有哪些内容黄金网站软件app大全下载
  • 宝鸡做网站的公司有哪些百度网盘提取码入口
  • 在线教育网站建设关键词挖掘站长工具
  • 微信制作小程序流程广州百度seo 网站推广
  • 网站布局 下载seo外链建设方法
  • 本地网站有什么可以做网盘资源
  • 网站建设业务员seo优化工具软件
  • 小程序注册申请需要什么资料海南seo
  • 长春互联网公司排名seo自动刷外链工具
  • 黄石公司做网站网络优化的内容包括哪些
  • 网站建设合同 英文seo如何优化一个网站
  • 个人网站做经营性外贸seo站
  • 深圳网站建设公司招聘抖音seo优化软件
  • 信阳网站开发建设公司简单的网站建设
  • 集团培训网站建设手机怎么建网站
  • 怎么做win10原版系统下载网站东莞疫情最新通告
  • 如何在百度发布广告信息悟空建站seo服务
  • 自己用dw做网站要多久怎么样做seo
  • 小学编程培训班多少钱一个月网站优化推广