快捷键

torch.export.passes 的源代码

from 打字 导入 联合

导入 火炬
导入 torch.utils._pytree  pytree
from torch.export.exported_program 导入 导出程序


全部 = [move_to_device_pass]


[文档]def 将程序移动到设备( ep: 导出程序, 位置: 联合[火炬.设备, 字符串, 字典[字符串, 字符串]] ) 翻译 导出程序: "" 将导出的程序移动到指定的设备上。 参数: ep (ExportedProgram): 要移动的导出程序。 location (Union[torch.device, str, Dict[str, str]]): 移动导出程序到的设备。 如果是字符串,则解释为设备名称。 如果是字典,则解释为从现有设备到目标设备的映射。 现有设备到目标设备的映射。 返回: ExportedProgram: 移动的已导出程序。 "" def 获取新设备( 当前设备: 火炬.设备, 位置: 联合[火炬.设备, 字符串, 字典[字符串, 字符串]], ) 翻译 字符串: 如果 isinstance(位置, 字典): 如果 字符串(当前设备) 位置.(): 返回 位置[字符串(当前设备)] else: 返回 字符串(当前设备) else: 返回 字符串(位置) # 移动所有 state_dict k, v ep.状态字典.项目(): 如果 isinstance(v, 火炬.神经网络.参数): ep._state_dict[k] = 火炬.神经网络.参数( v.(_获取新设备(v.设备, 位置)), v.需要梯度, ) else: ep._state_dict[k] = v.(_get_new_device(v.设备, 位置)) # 将所有常量移动 k, v ep.常量.项目(): 如果 isinstance(v, 火炬.张量): ep._constants[k] = v.(获取新设备(v.设备, 位置)) 节点 ep.graph.节点: 将所有具有内置设备的节点 kwargs 移动 如果 "设备" 节点.kwargs: kwargs = 节点.kwargs.复制() kwargs["设备"] = 获取新设备(kwargs["设备"] 位置) 节点.kwargs = kwargs 移动所有张量元数据 节点.元数据[] = py 树.tree_map( lambda v: v.(_获取新设备(v.设备, 位置)) 如果 isinstance(v, 火炬.张量) 否则 v, 节点.元数据.获取(), ) ep.验证() 返回 ep

© 版权所有 PyTorch 贡献者。

使用 Sphinx 构建,并使用 Read the Docs 提供的主题。

文档

查看 PyTorch 的全面开发者文档

查看文档

教程

深入了解初学者和高级开发者的教程

查看教程

资源

查找开发资源,获取您的疑问解答

查看资源