pytorch使用profiler对模型性能分析时报错

源码(参考自:PyTorch模型性能分析、优化及部署 (aliyun.com)):

def analysis():
    from torch.profiler import profile, tensorboard_trace_handler
    import time

    img_size = [96, 96, 96]
    model = VAN(img_size=img_size, in_chans=4, num_classes=3)
    model.eval()
    inputs = torch.randn((1, 4, *img_size))

    with profile(
            activities=[torch.profiler.ProfilerActivity.CPU, ],
            on_trace_ready=tensorboard_trace_handler('./logs'),
            profile_memory=True,
            record_shapes=True,
            with_stack=True
    ) as profiler:
        start = time.time()
        outputs = model(inputs)
        cost = time.time() - start
        print(f"predict_cost = {cost}")

        profiler.step()


analysis()

运行结束后使用命令进行可视化

 tensorboard.exe  --logdir .

结果提示如下错误:

W0421 10:34:30.495812 18184 loader.py:103] Failed to parse profile data for Run logs on DESKTOP-NQOQ6MO_20472. Exception=Invalid \escape: line 10 column 246 (char 421)
Traceback (most recent call last):
  File "d:\python3.7\lib\site-packages\torch_tb_profiler\profiler\data.py", line 126, in _preprocess_file
    trace_json = json.loads(data)
  File "d:\python3.7\lib\json\__init__.py", line 348, in loads
    return _default_decoder.decode(s)
  File "d:\python3.7\lib\json\decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "d:\python3.7\lib\json\decoder.py", line 353, in raw_decode
    obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Invalid \escape: line 10 column 246 (char 421)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "d:\python3.7\lib\site-packages\torch_tb_profiler\profiler\data.py", line 131, in _preprocess_file
    trace_json = json.loads(data, strict=False)
  File "d:\python3.7\lib\json\__init__.py", line 361, in loads
    return cls(**kw).decode(s)
  File "d:\python3.7\lib\json\decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "d:\python3.7\lib\json\decoder.py", line 353, in raw_decode
    obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Invalid \escape: line 10 column 246 (char 421)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "d:\python3.7\lib\site-packages\torch_tb_profiler\profiler\loader.py", line 88, in _process_data
    data = RunProfileData.parse(worker, span, local_file, self.caches.cache_dir)
  File "d:\python3.7\lib\site-packages\torch_tb_profiler\profiler\data.py", line 101, in parse
    trace_path, trace_json = RunProfileData._preprocess_file(path, cache_dir)
  File "d:\python3.7\lib\site-packages\torch_tb_profiler\profiler\data.py", line 137, in _preprocess_file
    trace_json = json.loads(fout.getvalue())
  File "d:\python3.7\lib\json\__init__.py", line 348, in loads
    return _default_decoder.decode(s)
  File "d:\python3.7\lib\json\decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "d:\python3.7\lib\json\decoder.py", line 353, in raw_decode
    obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Invalid \escape: line 10 column 246 (char 421)
I0421 10:34:30.507813 24200 plugin.py:497] Run logs loaded
I0421 10:34:30.517814 19016 plugin.py:467] Add run logs
W0421 10:34:35.542793  7900 security_validator.py:46] In 3.0, this warning will become an error:
Requires default-src for Content-Security-Policy
W0421 10:34:35.543481  9116 security_validator.py:46] In 3.0, this warning will become an error:
Requires default-src for Content-Security-Policy

用Vscode 查看了下生成的json文件,文件里面内部的路径分割赴全是'\'(单个'\'在json中表示转义符),因而导致了报错,解决思路是将'\'替换为"\\"。使用noetpad++或者其他文本编辑器查找替换即可,notepad++的快捷键为ctrl+H(vscode没有替换成功,暂时不知道原因)。下面放一张成功的图:

 

pytorch使用profiler对模型性能分析时报错_第1张图片

 

你可能感兴趣的:(计算机视觉与深度学习,pytorch)