# A Case Study on Virtual HPC Container Clusters and Machine Learning Applications
## 2 Related Work
### Docker in HPC
Also problematic is Docker's use of the _cgroups_ subsystem, which imposes top-down limitations on the use of computer resources, while in HPC environments, it is usually the queue system (e.g., SLURM) that primarily manages this [19]. In response to Docker's shortcomings, alternative containerization platforms dedicated to deployment in HPC systems have been developed. One such platform is Shifter [19], implemented at the National Energy Research Scientific Computing Center in California. Its users run tasks from their chosen container images (user-defined images, UDIs). Shifter was designed with special attention given to performance and scalability, not only of the applications themselves but also of the installation process of containers and images. It was also intended to provide access to shared resources in containers, including parallel file systems and internal networks. An important feature was the ability to cooperate with queue systems and to support handling images designed for other containerization platforms (including Docker). In addition to Shifter, there are at least two related containerization platforms: Singularity and Charlieloud. Both of these have been subjected to performance studies [23]. They tested computational, memory, and application performance, as well as RAM usage, based on benchmark tests such as SysBench, STREAM, and HPCG. It turned out that the performance drop caused by containerization was very small or even non-existent. The additional memory demand for each platform was considered minimal. Furthermore, it was found that the implementation of containerization essentially had no impact on performance. Of course, this conclusion only applies to these three platforms dedicated to HPC systems and does not concern Docker. However, it is possible that Docker would perform just as well, assuming that it uses the same isolation techniques as the tested platforms. For the purposes of this thesis, the solution presented in [22] was the most suitable, where only the possibilities of easily programming parallel applications were mentioned. The work [22] focused more on containerization in production environments, rather than development and testing environments. Study of the integration of Docker technology in HPC and ML applications intersects with various works in the field. For example, the article [25] focused on TensorFlow, a comprehensive framework for large-scale ML on heterogeneous distributed systems. The content aligns closely with the themes discussed in this article, particularly in the context of utilizing complex computational systems for advanced ML tasks. The authors highlighted TensorFlow's ability to map computations onto various hardware platforms, thus facilitating both research and deployment of ML models in numerous domains. They underscored TensorFlow's evolution, emphasizing improvements in performance, flexibility, and support for a broader range of models and hardware. Key aspects covered in the document include model parallel training, where different portions of a model computation are carried out simultaneously on different computational devices, and concurrent steps for model computation pipelining to optimize utilization during the training of deep neural networks. In relation to our research, this document can provide insights into how such virtual HPC clusters could be optimized and utilized for running complex ML models like those implemented in TensorFlow. The parallelization and distribution strategies discussed for TensorFlow are particularly relevant for managing large-scale computations in virtual HPC environments.