This is the fourth and final article demonstrating the growing acceptance of high-performance computing (HPC) in new user communities and application areas. In this article we present UberCloud use case #211 on Deep Learning for Fluid Flow Prediction in the Advania Data Centers Cloud, for educational purposes, for our wider engineering simulation community. This project is another demonstration of the trend toward easy-to-use application software (in this case OpenFOAM) and the seamless access to HPC cloud resources.
This UberCloud project #211 has been collaboratively performed by Jannik Zuern, master student at the Karlsruhe Institute of Technology (KIT) supported by Renumics GmbH for Automated Computer Aided Engineering in Germany, and cloud resource provider Advania Data Centers in Iceland, with sponsorship from HPE and Intel. OpenFOAM and Renumics AI tools have been packaged into an UberCloud HPC software container.
Solving fluid flow problems using computational fluid dynamics (CFD) is demanding both in terms of computing power and simulation time. Artificial neural networks (ANN) can learn complex dependencies between high-dimensional variables. This ability is exploited in a data-driven approach to CFD that is presented in this case study. An ANN is applied in predicting the fluid flow given only the shape of the object that is to be simulated. The goal of the approach is to apply an ANN to solve fluid flow problems to significantly decrease time-to-solution while preserving much of the accuracy of a traditional CFD solver. Creating a large number of simulation samples is paramount to let the neural network learn the dependencies between simulated design and the flow field around it.
This project between Renumics in Karlsruhe and UberCloud in Sunnyvale was therefore established to explore the benefits of additional cloud computing resources on Advania Data Centers that can be used to create a large amount of simulation samples in parallel in a fraction of the time a desktop computer would need to create them. In this project, we wanted to explore whether the overall accuracy of the neural network can be improved the more samples are being created in the UberCloud HPC/AI container based on Docker Community Edition and OpenFOAM CFD software and then used during the training of the neural network.
In order to create the simulation samples automatically, a comprehensive four-step Deep Learning workflow was established, as shown in Figure 1.
As a first step, random two-dimensional shapes are created. These shapes have to be diverse enough to let the neural network learn the dependencies between different kinds of shapes and their respective surrounding flow fields.
In the second step, the shapes are meshed and added to an OpenFOAM simulation template (Fig. 2).
In the third step, the simulation results are post-processed using the open-source visualization tool ParaView. The flow-fields are resampled on a rectangular regular grid to simplify the information processing by the neural net.
In the fourth and final step, both the simulated design and the flow fields are fed into the input queue of the neural network. After training, the neural network is able to infer a flow field merely from seeing the to-be-simulated design.
The HPC hardware of the Advania Data Centers compute nodes hosting the UberCloud container consisted of 2 x 16 core compute nodes with Intel Xeon CPU E5-2683 v4 @ 2.10 GHz and 250 GB memory per node, while the user’s desktop just had a 2 x 6 core Intel i7-5820K CPU @ 3.30 GHz, and GeForce GTX 1080 (8GB GDDR5X memory) GPU card with 32 GB memory.
As a first step, we compared the time it takes to create the samples on the desktop workstation computer with the time it takes to create the same number of samples on UberCloud/Advania. On the desktop computer it took 13h 10min to create these 10,000 samples. In the UberCloud OpenFOAM container in the Advania Data Centers Cloud, it took about 2h 4min to create 10,000 samples, which means that a speedup of 6.37 could be achieved using the UberCloud container.
A total of 70,000 samples were created. We compared the losses and accuracies of the neural network for different training set sizes. In order to determine the loss and the accuracy of the neural network, we first defined “loss of the neural network prediction.” This measure describes the difference between the prediction of the neural network and the fully simulated results. A loss of 0.0 for all samples would mean that every flow velocity field in the dataset is predicted perfectly. Similarly, the level of accuracy that the neural network achieves, had to be described. For details about the ‘loss’ and the ‘level of accuracy’ see the complete case study.
The generated samples are divided into the training and validation datasets. The training- and validation loss for different numbers of training samples was evaluated. The neural net was trained three times from scratch with 1,000, 10,000, and 70,000 training samples respectively. Figure 4 shows the loss after 50,000 training steps:
The more different samples the neural network processes during the training process the better and faster it is able to infer a flow velocity field from the shape of the simulated object suspended in the fluid. Figure 5 illustrates the difference between the ground truth flow field (left image) and the predicted flow field (right image) for one exemplary simulation sample after 300,000 training steps. The arrow direction indicates the flow direction and the arrow color indicates the flow velocity. Visually, no difference between the two flow fields can be made out.
We were able to prove a mantra amongst machine learning engineers: The more data the better. We showed that the training of the neural network is substantially faster using a large dataset of samples compared to smaller datasets of samples. Additionally, the proposed metrics for measuring the accuracies of the neural network predictions exhibited higher values for the larger numbers of samples. The overhead of creating high volumes of additional samples can be effectively compensated by the high-performance containerized (based on Docker) computing node provided by UberCloud on the Advania Data Centers Cloud. A speed-up of more than 6 compared to a state-of-the-art desktop workstation allows creating the tens of thousands of samples needed for the neural network training process in a matter of hours instead of days.
In order to train more complex models (e.g., for transient 3D flow models) much more training data will be required. Thus, software platforms for training data generation and management as well as flexible compute infrastructure will become increasingly important.