We are releasing DPU-PYNQ to leverage the state-of-the-art Vitis AI and PYNQ technologies. Starting from PYNQ image v2.5 on Zynq Ultrascale boards, users can upgrade their images, install our package from PYPI
, and try a few example notebooks on the board. Currently supported boards include Ultra96, ZCU104, and ZCU111. Please see our getting started guide for more details.
Some key benefits:
-
The ability to deploy DPU designs in 6 bash command lines.
git clone --recursive --shallow-submodules https://github.com/Xilinx/DPU-PYNQ.git cd DPU-PYNQ/upgrade make pip3 install pynq-dpu cd $PYNQ_JUPYTER_NOTEBOOKS pynq get-notebooks pynq-dpu -p .
-
Simple Python API to get everything ready for DNNDK run-time.
With the
pynq-dpu
Python package we are releasing, users have a simple API to download the bitstream (dpu.bit
) and load a DPU model (e.g.dpu_tf_yolov3.elf
) during run-time.from pynq_dpu import DpuOverlay overlay = DpuOverlay("dpu.bit") overlay.load_model("dpu_tf_yolov3.elf")
No rebooting is required, which enables quick turn-around for development.
-
Coverage of various models using 4 example notebooks.
With the 6 command lines mentioned before, users should be able to try the notebooks. The following DPU models are shown in the notebooks, though we definitely support more models.
- Resnet 50 model based on Caffe framework.
- Inception v1 model based on Caffe framework.
- Yolo v3 model based on Tensorflow framework.
- MNIST model based on Tensorflow framework.
-
Demonstration of how users can train their own models on host machine.
We show a Jupyter notebook that can run on the host side (x86 machine) so users can follow the steps to train their own models. The output of this process is a DPU model that can be used directly by the released
pynq-dpu
Python package. -
Ease of rebuilding of the DPU hardware designs.
We have also formalized the
Make
flow on the host side for users to easily rebuild DPU designs. This flow can be leveraged to target different DPU configurations, or different Zynq Ultrascale boards. For more information, please check instructions on rebuilding DPU designs.
Besides these main benefits, there are a couple of other interesting features we have put into the pynq-dpu
Python package. To name a few, we have pybind11
IPython magic to run C++ code in Jupyter; we have automatic AXI port width adjustment; and we have on-board compilation of deployable *.elf
models into shared objects.
If you have questions, please feel free to ask them on PYNQ support forum. Finally, I hope you enjoy this piece of work made available by the PYNQ team!
The PYNQ Team