Derek Merck
derek_merck@brown.edu
Rhode Island Hospital and Brown University
Providence, RI
Build multi-arch Conda and Keras/TensofFlow Python Docker images for embedded systems.
The official arm32v7
MiniConda is Python 2 from 2015. These images use BerryConda compiled by jjhelmus. He also explains how to build a JetsonConda in the Conda/Constructor repo.*
*Need tdd
libconda
to the package manifest.
The official arm32v7
tensorflow wheels are available as nightly build artifacts. The wheel name for the python3 build has to be manipuated to remove the platform restriction tags. NVIDIA provides a recent tensorflow wheel for their Jetson TXs.
$ docker run derekmerck/conda-py2
$ docker run derekmerck/conda-py2k
$ docker run derekmerck/conda-py3
$ docker run derekmerck/keras-py3k
This image is based on the resin/$ARCH-debian:stretch
image. Resin.io base images include a QEMU cross-compiler to facilitate building images for low-power single-board computers on more powerful Intel-architecture desktops and servers.
docker-compose.yml
contains build descriptions for all relevant architectures.
$ docker-compose build conda-py2-amd64 conda-py2k-amd64
$ docker-compose build conda-py3-amd64 conda-py3k-amd64
Desktop computers/vms, UP boards, and the Intel NUC are amd64
devices. The appropriate image can be built and pushed from Travis CI.
Most low-power single board computers such as the Raspberry Pi and Beagleboard are arm32v7
devices. Appropriate images can be cross-compiled and pushed from Travis CI.
$ docker-compose build conda-py2-arm32v7 keras-tf-py2-arm32v7
$ docker-compose build conda-py3-arm32v7 keras-tf-py3-arm32v7
The NVIDIA Jetson TX2 uses a Tegra arm64v8
cpu. The appropriate image can be built natively and pushed from Packet.io, using a brief tenancy on a bare-metal Cavium ThunderX ARMv8 server.
$ apt update && apt upgrade
$ curl -fsSL get.docker.com -o get-docker.sh
$ sh get-docker.sh
$ docker run hello-world
$ apt install git python-pip
$ pip install docker-compose
$ git clone http://github.com/derekmerck/conda-xarch
$ cd conda-xarch
$ docker-compose build conda3-arm64v8
Although Resin uses Packet ARM servers to compile arm32 images, the available ThunderX does not implement the arm32 instruction set, so it cannot compile natively for the Raspberry Pi.
After building new images, call manifest-it.py
to push updated images and build the Docker
multi-architecture service mappings.
$ python3 manifest-it conda-xarch.manifest.yml
MIT