Software from the NVIDIA l4t-ml image

A Docker image is composed of layers. The first set of layers on edgyr-ml are the layers on the NVIDIA l4t-ml image.1

Operating system and command line

The operating system on the image is Linux for Tegra (L4T).2 L4T is Ubuntu 18.04 LTS “Bionic Beaver” for the arm64 architecture, with added NVIDIA drivers, libraries, compilers and other development tools for the GPU on Jetson modules and development kits. A Jetson developer can use C/C++, Python or both with the software on an L4T system. The vim editor is standard, as is the git version control system.

Python data science / machine learning

The base l4t-ml image contains a complete Python 3 data science / machine learning stack. edgyr adds the virtualenv environment manager, the SymPy computer algebra package and the tensorflow-probability probabilistic programming package.

Package Version
jupyterlab 2.1.5
jupyterlab-server 1.1.5
Keras-Applications 1.0.8
Keras-Preprocessing 1.0.5
matplotlib 2.1.1
numba 0.50.0
numpy 1.19.0
onnx 1.7.0
pandas 1.0.5
pycuda 2019.1.2
scikit-learn 0.23.1
scipy 1.5.0
sympy 1.6.1
tensorboard 1.15.0
tensorflow 1.15.2+nv20.6
tensorflow-estimator 1.15.1
tensorflow-probability 0.8.0
torch 1.6.0
torchaudio 0.6.0a0+d6f81d1
torchvision 0.7.0a0+6631b74
virtualenv 15.1.0

Added Linux packages

edgyr-ml adds some Linux packages to the base:

  • git-lfs (handles large files in repositories)
  • lynx (command-line browser)
  • openjdk-8-jdk-headless (Java 8 - required for RStudio Server)
  • pandoc (R Markdown processing)
  • pandoc-citeproc (R Markdown processing)
  • python-virtualenv (Python virtual environment handling)
  • python3-virtualenv (Python virtual environment handling)
  • virtualenv (Python virtual environment handling)
  • virtualenvwrapper (Python virtual environment handling)

Julia

edgyr-ml includes Julia 1.5.03 installed from the Julia project download page. The IJulia Jupyter kernel4 and the CUDA.jl5 GPU interface package are also included. Note that at present there are no tests that the Jetson GPU is accessible from Julia - see issue https://github.com/znmeb/edgyR/issues/30.

R and RStudio from source

edgyr-ml includes R 4.0.2 and RStudio Server 1.3.1056 compiled from source. The compressed log files from all builds are on the image in /home/edgyr/logfiles/.

The edgyr user

Once the Linux layers are complete and RStudio Server is configured, the build process adds a non-root user edgyr with main group edgyr and sudo privileges. This is standard practice for servers built on Ubuntu Linux.

Reticulate / virtualenv / virtualenvwrapper

edgyr-ml includes the R Python interface library reticulate.6 By default, reticulate uses virtualenv7 to manage Python virtual environments.edgyr-ml also includes virtualenvwrapper,8 a command line tool for managing Python virtual environments.

R packages

The R packages included on the edgyr-ml image are aimed at the core mission of edgyr, providing an R development environment for the Jetson. Because the base image contains a Python machine learning stack, libraries for interfacing with it are also provided.

  • caracas (symbolic mathematics - uses SymPy)
  • data.table (fast data wrangling tool)
  • devtools (package development)
  • DiagrammeR (create and edit diagrams)
  • DT (display tables)
  • greta (probabilistic programming)
  • igraph (graph theoretic computing)
  • IRkernel (Jupyter R kernel)
  • keras (interface to Keras / TensorFlow)
  • knitr (R Markdown)
  • miniUI (required by pkgdown rebuild addin, imports shiny as a bonus!)
  • pkgdown (package site builder)
  • rmarkdown (R Markdown)
  • rTorch (interface to PyTorch)
  • tidyverse (R data science stack)
  • tinytex (LaTeX / PDF generation)

Some notes about tinytex:9 it’s installed, and it works. The full TeXLive LaTeX on an Ubuntu distribution is something like 4 gigabytes, and the image is already almost 7 gigabytes, so this is a big deal.

The tradeoff is that if you use a LaTeX package that isn’t already there, tinytex will pause and download it before continuing. This takes some time, but it only happens once.

Next: Operations and Persistence

vignette("jj-operations-and-persistence")

References

“L4T | Nvidia Developer.” 2020. https://developer.nvidia.com/embedded/linux-tegra.

“Machine Learning for Jetson/L4t.” 2019. https://ngc.nvidia.com/catalog/containers/nvidia:l4t-ml.

Ushey, Kevin, JJ Allaire, and Yuan Tang. 2020. Reticulate: Interface to ’Python’. https://CRAN.R-project.org/package=reticulate.

“Virtualenv.” 2020. https://virtualenv.pypa.io/en/latest/.

Xie, Yihui. 2019. “TinyTeX: A Lightweight, Cross-Platform, and Easy-to-Maintain Latex Distribution Based on Tex Live.” TUGboat, no. 1: 30–32. http://tug.org/TUGboat/Contents/contents40-1.html.


  1. (“Machine Learning for Jetson/L4t” 2019)↩︎

  2. (“L4T | Nvidia Developer” 2020)↩︎

  3. julia2020↩︎

  4. ijulia2020↩︎

  5. cudajl2020↩︎

  6. Ushey, Allaire, and Tang (2020)↩︎

  7. (“Virtualenv” 2020)↩︎

  8. (“Virtualenvwrapper” 2020)↩︎

  9. Xie (2019)↩︎