This tutorial implements a Convolutional Neural Network classifier on AMD VersalTM adaptive SoC AIE-ML for identifying hand-written digits from the MNIST database. The goal is to illustrate how to partition & vectorize a simple machine learning example to Versal AI Engines. An MNIST ConvNet classifier makes a good learning example because it contains only ~100,000 parameters and a handful of layers. This tutorial example illustrates a number of key topics fundamental to custom coding machine learning designs using the AIE API including:
Using multi-channel matrix multiply intrinsics to vectorize ConvNet layer compute workloads
Using 3D addressing patterns of memory tiles to access layer I/O in the order required for consumption by the compute
Using local tile memory for capturing stored network weights
Structuring AIE-ML kernel code to implement convolutional & pooling layers efficiently