Shortcuts

Source code for torch.export.passes

from typing import Union

import torch
import torch.utils._pytree as pytree
from torch.export.exported_program import ExportedProgram


__all__ = ["move_to_device_pass"]


[docs]def move_to_device_pass( ep: ExportedProgram, location: Union[torch.device, str, dict[str, str]] ) -> ExportedProgram: """ Move the exported program to the given device. Args: ep (ExportedProgram): The exported program to move. location (Union[torch.device, str, Dict[str, str]]): The device to move the exported program to. If a string, it is interpreted as a device name. If a dict, it is interpreted as a mapping from the existing device to the intended one Returns: ExportedProgram: The moved exported program. """ def _get_new_device( curr_device: torch.device, location: Union[torch.device, str, dict[str, str]], ) -> str: if isinstance(location, dict): if str(curr_device) in location.keys(): return location[str(curr_device)] else: return str(curr_device) else: return str(location) # move all the state_dict for k, v in ep.state_dict.items(): if isinstance(v, torch.nn.Parameter): ep._state_dict[k] = torch.nn.Parameter( v.to(_get_new_device(v.device, location)), v.requires_grad, ) else: ep._state_dict[k] = v.to(_get_new_device(v.device, location)) # move all the constants for k, v in ep.constants.items(): if isinstance(v, torch.Tensor): ep._constants[k] = v.to(_get_new_device(v.device, location)) for node in ep.graph.nodes: # move all the nodes kwargs with burnt-in device if "device" in node.kwargs: kwargs = node.kwargs.copy() kwargs["device"] = _get_new_device(kwargs["device"], location) node.kwargs = kwargs # move all the tensor metadata node.meta["val"] = pytree.tree_map( lambda v: v.to(_get_new_device(v.device, location)) if isinstance(v, torch.Tensor) else v, node.meta.get("val"), ) ep.validate() return ep

Docs

Access comprehensive developer documentation for PyTorch

View Docs

Tutorials

Get in-depth tutorials for beginners and advanced developers

View Tutorials

Resources

Find development resources and get your questions answered

View Resources
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy