微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 CPU 上运行 TorchScript 模块时 CPU 和计算机 100% 崩溃?

如何解决在 CPU 上运行 TorchScript 模块时 CPU 和计算机 100% 崩溃?

我第一次以与本教程相同的方式完成了 PyTorch 模块的量化和脚本化过程:https://leimao.github.io/blog/PyTorch-Static-Quantization/

教程代码运行良好,但是当我将其转换为我自己的编码器解码器模块时,我看到了一些奇怪的行为。所以这里有一些相关的代码

def measure_inference_latency(model,input_size,num_samples=100,num_warmups=10):
    model.eval()

    x = torch.rand(size=input_size)

    with torch.no_grad():
        for _ in range(num_warmups):
            _ = model(x)
    # torch.cuda.synchronize()

    with torch.no_grad():
        start_time = time.time()
        for _ in trange(num_samples):
            _ = model(x)
            # torch.cuda.synchronize()
        end_time = time.time()
    elapsed_time = end_time - start_time
    elapsed_time_ave = elapsed_time / num_samples

    return elapsed_time_ave


num_samples = 5
fp32_latency = measure_inference_latency(model_fp32,input_size = [1,3] + CFG.image_dim,num_samples=num_samples)
q_latency = measure_inference_latency(model_q,num_samples=num_samples)
start = time.time()
qj_latency = measure_inference_latency(model_qj,num_samples=num_samples)
print(time.time() - start)

我得到的输出是:

FP32 inference latency: 269.17 ms
Quantized inference latency: 38.93 ms
Quantized + JIT inference latency: 24.36 ms

看似合理,但以下是我注意到的问题:

  1. 在挂钟时间,qj_latency 行运行大约 17 秒。我将其范围缩小到 measure_inference_latency 中的预热步骤,该步骤未包含在报告的最终时间中。当我向热身添加进度条时,我注意到大部分时间都在第一步。 TorchScript 模块是否需要很长的预热时间?
  2. 有一次我的整台电脑都关机了(Ubuntu 20.04.2 LTS)。

我知道我没有提供完整的代码,但首先我想知道是否有一个我不知道的明显答案。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。