如题,pytorch cpu训练很慢,使用的是开源的wenet语音识别框架,搭了一个nvidia/cuda:11.6.1-cudnn8-runtime-ubuntu20.04镜像,但用的是cpu,训练可以正常运行,性能表现是模型前向计算很慢,一个小时的训练数据,batchsize 16, num_worker 4, 模型参数量80M, 需要一个小时才能跑一个batch,16小时跑一个epoch,这是因为什么问题导致的呢,大佬们帮忙看看
我仔细分析了下,发现是torch.nn.Conv1d这个函数跑的慢, X86跑了0.016秒,arm跑了0.254秒,我推测是不是需要在docker里安装一些鲲鹏独有的数学计算加速库,拜托大佬们指导指导, 这是测试代码:
import torch
import time
# Create random input
input_data = torch.randn(1, 256, 1000)
# Create convolutional layer
#conv1d_layer = torch.nn.Conv1d(in_channels=1, out_channels=1, kernel_size=3)
#start_time_x86 = time.time()
conv1d_layer = torch.nn.Conv1d(
256,
256,
15,
stride=1,
padding=0,
groups=256,
bias=True,
)
# Perform convolution on x86
start_time_x86 = time.time()
output_x86 = conv1d_layer(input_data)
end_time_x86 = time.time()
time_elapsed_x86 = end_time_x86 - start_time_x86
print('Time elapsed on x86:', time_elapsed_x86)
print(output_x86)
如题,pytorch cpu训练很慢,使用的是开源的wenet语音识别框架,搭了一个nvidia/cuda:11.6.1-cudnn8-runtime-ubuntu20.04镜像,但用的是cpu,训练可以正常运行,性能表现是模型前向计算很慢,一个小时的训练数据,batchsize 16, num_worker 4, 模型参数量80M, 需要一个小时才能跑一个batch,16小时跑一个epoch,这是因为什么问题导致的呢,大佬们帮忙看看
我仔细分析了下,发现是torch.nn.Conv1d这个函数跑的慢, X86跑了0.016秒,arm跑了0.254秒,我推测是不是需要在docker里安装一些鲲鹏独有的数学计算加速库,拜托大佬们指导指导, 这是测试代码:
import torch
import time
# Create random input
input_data = torch.randn(1, 256, 1000)
# Create convolutional layer
#conv1d_layer = torch.nn.Conv1d(in_channels=1, out_channels=1, kernel_size=3)
#start_time_x86 = time.time()
conv1d_layer = torch.nn.Conv1d(
256,
256,
15,
stride=1,
padding=0,
groups=256,
bias=True,
)
# Perform convolution on x86
start_time_x86 = time.time()
output_x86 = conv1d_layer(input_data)
end_time_x86 = time.time()
time_elapsed_x86 = end_time_x86 - start_time_x86
print('Time elapsed on x86:', time_elapsed_x86)
print(output_x86)