When using computing platforms with limited resources it is common to have multiple units and dedicate one task to each unit. By pairing multiple units together many tasks can be completed at the same time. In the case of this project, the GPU in the J1010 has enough memory and compute power to either display the interface on the monitor, or perform the Machine Learning task, but not both. By pairing two units together, both tasks can be completed at the same time.
This technique is used even for the multi-core processors of an expensive smartphone or the many nodes that make up the large supercomputers in today’s High Performance Computing data-centres. Sharing the task into many smaller parts, which can be carried out at the same time as each other (in parallel) makes the whole process much faster. Like having many different people, with different specialist skills, work on setting up a concert, instead of just the musician.
The key is managing the communication and timing between the different components and communicating only the limited information that is necessary.
In this project one of the units, with one of the GPUs, is used to drive the video display and the web interface, and the other computer, with its own GPU, provides the machine learning capability and the code behind the models. Neither of the computers are connected to the Internet (and that should remain the case so that the system doesn’t break itself with unnecessary updates), however the two machines are communicating to each other over a private internal network using a short ethernet cable.
The Jupyter Notbook environment runs on reComputer1, with reComputer2 providing the graphics display and web interface to the headless python environment. The Jupyter Server on reComputer1 sends only small text-based html instructions on how to draw the graphics, which are quick to send, whilst the web browser on reComputer2 does the hard work of interpreting those instructions and drawing the interface. The large amount of data which the webcam generates, and the hard work of the machine learning processing, is handled by reComputer1, so that the reComputer2 can concentrate on just the creation of the visual display.
This video provides a detailed walkthrough of the Getting the System Up and Running guide and includes discussion of the communication between the two machines,
The written guide to how to get the system up and running includes further discussion of how the two reComputer units communicate with each other and share the task. The guide can be downloaded here,
01 Getting the System Up and Running_Guide [ ⇓ ]
Quick Shortcuts to project resources:
a glossary of the highlighted technical terms used can be downloaded here [ ⇓ ]
download the eBooklet [ ⇓ ], a digital copy of the printed project booklet