This program was used to execute tasks on clusters of heterogeneous devices (smartphones, smart TVs, tablets) as part of the publication "Pervasive Data Science on the Edge" published in IEEE Pervasive Computing in 2019 and supported by Academy of Finland (Project number 297741).
Includes task assignment client, task executor for smart devices, and standalone program for comparison with cloud VMs.
Full text (authors' copy) available at: https://researchportal.helsinki.fi/en/publications/pervasive-data-science-on-the-edge
Official publication: https://ieeexplore.ieee.org/document/8915957
- Download an image dataset, like the CORe50 or ILSVRC
- Extract the files to a folder
- Use the
preprocess
shell script to randomly select N files for classification:
$ preprocess <folder> <N>
- Install the dependencies for master node using npm
$ cd master && npm install
- Run the master node with Node.js:
node master.js
- Build the client in Android Studio
- Install and open the client on worker devices, enter the master
ip:port
and press START - Type "ready" in the master console to start the inference
For comparison, there is a non-distributed (but threaded) Java implementation under /standalone. You can build it using IntelliJ IDEA and Maven.
NOTE: Using a .pb instead of .tflite requires that colors are formatted in 0-1 range.
NOTE: TF handles threading, rolling your own threadpool might end up in deadlock.
(C) 2020 - Jonatan Hamberg <jonatan.hamberg@cs.helsinki.fi>
(C) 2020 - Eemil Lagerspetz <eemil.lagerspetz@cs.helsinki.fi>