Utilizing Containers for HPC and Deep Learning Workloads

For developers working in the HPC and deep learning domains, containerization offers the benefits of scalability and more — without performance penalties.

utilizing containers 1000x630
Dell EMC

In application-development circles, containers have gotten a lot of attention in recent years — for many good reasons. To name a few advantages, containers simplify and accelerate the process of building and isolating applications. They are lightweight and come with low overhead. And they enable easier application sharing and reproducibility, because the container image includes both the application and its development environment.

Especially when it comes to deep learning (DL) frameworks, containerization is now rising in importance. Why? Every DL framework has many dependencies. Each dependent library has special version requirements, and all DL frameworks change frequently. The friendly supported OS for most DL frameworks is Ubuntu, whereas data center deployments are typically running Red Hat Enterprise Linux/Centos. Containerization helps developers overcome these challenges. Everything is bundled up into a single package that includes all the necessary pieces and parts.

There are many technologies which enable containerization. Docker, LXC, LXD and Singularity are some of them. Each of these technologies has pros and cons and caters to different audience types and various use cases. For a user well versed in HPC technologies that enable applications at scale, such as MPI and schedulers (slurm, torque), Singularity may be a better option. On the other hand, if the use case is a micro service based scaling, Docker, combined with orchestration technologies such as Kubernetes or Docker swarm may provide a better option.

For HPC and DL applications, containerization on the Singularity platform offers added advantages. In particular, containerization with Singularity helps developers overcome the challenges associated with compiling and optimally running at scale. It gives developers the ability to scale workloads past a single node via Singularity’s MPI integration capabilities. As DL datasets continue to grow in size, this scalability is going to be a requirement for many use cases.

Singularity was developed at Lawrence Berkeley National Lab specifically for HPC and DL workloads. As my colleague Nishanth Dandapanthula explains in an article on The Next Platform: “The core concept of Singularity is that the user context is always maintained at the time of container launch. There is no daemon process. Instead, Singularity is an executable. Singularity containers run in user space, which makes the permissions of the user identical inside and outside the container.”1

At the Dell EMC HPC and AI Innovation Lab, our research team put Singularity to the test in a project that containerized DL and HPC applications for our internal use cases.2 In this project, we found that containerization simplifies the building and deployment of DL in both single-node and multi-node configurations.

More importantly, we found there is no performance loss compared to bare metal for DL applications containerized on Singularity. In our benchmarks, we compared a bare metal run versus a containerized run and found that the relative performance difference was under 2 percent.

Here’s the key takeaway. Containerization offers notable advantages for developers working in the deep learning and HPC domains without charging significant performance penalties. And it’s clear that container technologies are going to become all the more important as organizations capitalize more fully on DL technologies to provide products and services driven by artificial intelligence.

For a deeper dive, check out Nishanth Dandapanthula’s article on The Next Platform: Singularity Containers for HPC & Deep Learning.



  1. The Next Platform, “Singularity Containers for HPC & Deep Learning,” Mar. 19, 2018.
  2. Dell Tech Center, “Containerizing HPC Applications with Singularity,” Oct. 17, 2017.