"map_location". The builtin location tags are "'cpu'" for CPU
   tensors and "'cuda:device_id'" (e.g. "'cuda:2'") for CUDA tensors.
   "map_location" should return either "None" or a storage. If
   "map_location" returns a storage, it will be used as the final
   deserialized object, already moved to the right device. Otherwise,
   "torch.load()" will fall back to the default behavior, as if
   "map_location" wasn't specified.
If "map_location" is a "torch.device" object or a string containing
   a device tag, it indicates the location where all tensors should be
   loaded.
Otherwise, if "map_location" is a dict, it will be used to remap
   location tags appearing in the file (keys), to ones that specify
   where to put the storages (values).
User extensions can register their own location tags and tagging
   and deserialization methods using
   "torch.serialization.register_package()".
Parameters:
      * f (Union[str, PathLike, BinaryIO*,