In the old Dockerfile, labels were assigned at the beginning so changing whether Vitis AI was included invalidated the entire cache. This refactoring enables more parallel stage building and encourages cache reuse.
AKS kernels no longer need to be built manually and are instead built as part of the regular build process.
Implementation
The Dockerfile multi-stage build process is broken up into two kinds of stages: builder and installer stages. Builder stages build and compile dependencies and place all the ones that are ultimately needed into a location for the installer stages to copy. The installer stages inherit from each other and are built serially but the builder stages are largely independent.
This PR also makes Vitis AI an opt-in feature in the Dockerfile, similar to the other backends.
Summary of Changes
Closes #41
Motivation
In the old Dockerfile, labels were assigned at the beginning so changing whether Vitis AI was included invalidated the entire cache. This refactoring enables more parallel stage building and encourages cache reuse.
AKS kernels no longer need to be built manually and are instead built as part of the regular build process.
Implementation
The Dockerfile multi-stage build process is broken up into two kinds of stages: builder and installer stages. Builder stages build and compile dependencies and place all the ones that are ultimately needed into a location for the installer stages to copy. The installer stages inherit from each other and are built serially but the builder stages are largely independent.
This PR also makes Vitis AI an opt-in feature in the Dockerfile, similar to the other backends.