1D Convolutional neural networks (CNN)

We benchmark a simple 1-D convolutional model with a residual connection after every layer.

class ConvBlock(nn.Module):
    def __init__(self, channels, kernel_size):
        super().__init__()
        self.conv = vollo_torch.nn.PaddedConv1d(channels, channels, kernel_size)

    def forward(self, inp):
        x = self.conv(inp)
        return nn.functional.relu(x) + inp


class CNN(nn.Module):
    def __init__(self, num_layers, kernel_size, channels):
        super().__init__()
        assert num_layers >= 1

        self.cnn = nn.Sequential(
            *[ConvBlock(channels, kernel_size) for i in range(num_layers)],
        )

    def forward(self, x):
        x = self.cnn(x)  # N x channels x T
        return x

IA-840F: 3 big cores

ModelLayersChannelsParametersMean latency (μs)99th Percentile latency (μs)
cnn_tiny3128393K2.62.7
cnn_small32561.6M2.72.9
cnn_med62563.1M3.43.6

The kernel size for all models is 8.

IA-420F: 6 small cores

ModelLayersChannelsParametersMean latency (μs)99th Percentile latency (μs)
cnn_tiny3128393K2.62.8
cnn_small32561.6M3.13.2
cnn_med62563.1M4.24.3

The kernel size for all models is 8.