├── .gitmodules └── README.md /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "IONN-client"] 2 | path = IONN-client 3 | url = https://github.com/jinevening/IONN-client.git 4 | [submodule "IONN-server"] 5 | path = IONN-server 6 | url = https://github.com/jinevening/IONN-server.git 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ElasticDNN 2 | ----- 3 | This repo includes the implementation of **IONN (Incremental Offloading of Neural Network)**, which was proposed by the paper titled "IONN: Incremental Offloading of Neural Network Computations From Mobile Devices to Edge Servers" published in SoCC (ACM Symposium on Cloud Computing) 2018. 4 | 5 | The repo merely consists of two submodules: *IONN-client* and *IONN-server*. Each submodule runs on the mobile device (ARM) and the server (x86), respectively. 6 | 7 | Installation 8 | ----- 9 | Client-side 10 | 1. Clone our project (IONN-client) 11 | 12 | ```bash 13 | $ git clone https://github.com/jinevening/IONN-client.git 14 | ``` 15 | 16 | 2. Build our project according to the [caffe installation instructions](https://caffe.berkeleyvision.org/installation.html). 17 | 18 | Server-side 19 | 1. Clone our project (IONN-server) 20 | 21 | ```bash 22 | $ git clone https://github.com/jinevening/IONN-server.git 23 | ``` 24 | 25 | The header lines related to hdf5.h may have to be modified (from hdf5/serial/hdf5.h to hdf5.h) or a symbolic link from "/usr/include/hdf5/serial/" to "/usr/include/" created. 26 | 27 | 2. Build our project according to the [caffe installation instructions](https://caffe.berkeleyvision.org/installation.html). 28 | 29 | Execution 30 | ----- 31 | First, we have to run IONN-server on the server by running the following command at the repository directory 32 | 33 | ``` 34 | ./build/examples/partitioning_server/classification.bin 35 | ``` 36 | 37 | Then, logs like following should be printed on the shell. 38 | 39 | ``` 40 | GPU mode 41 | Upload Server Started on Port 7675 42 | Execution Server Started on Port 7676 43 | ``` 44 | 45 | While IONN-server is running on the server, IONN-client can offload DNN execution to the server by running the following command at the client device 46 | 47 | ``` 48 | ./build/examples/partitioning/classification.bin \ 49 | *path to the prototxt file* \ 50 | *path to the caffemodel file* \ 51 | *path to the mean file* \ 52 | *path to the label file* \ 53 | *profile of the execution time in the client* \ 54 | *prediction function for the execution time in the server* \ 55 | *network speed in Mbps* \ 56 | *path to the image file* \ 57 | *value of K in the IONN paper* \ 58 | incremental \ 59 | *optimization target* \ 60 | *ip_address* 61 | ``` 62 | 63 | Example 64 | ``` 65 | ./build/examples/partitioning/classification.bin \ 66 | models/bvlc_alexnet/deploy.prototxt \ 67 | models/bvlc_alexnet/bvlc_alexnet.caffemodel \ 68 | data/ilsvrc12/imagenet_mean.binaryproto \ 69 | data/ilsvrc12/synset_words.txt \ 70 | models/bvlc_alexnet/prediction_model.txt \ 71 | server_prediction_model.txt \ 72 | 80 \ 73 | cat.jpg \ 74 | 0.8 \ 75 | incremental \ 76 | time \ 77 | 123.45.678.910 78 | ``` 79 | 80 | Acknowledgements 81 | ----- 82 | We implemented IONN based on *caffe*, an open source project to train and test DNN. We extended caffe to support the collaborative execution (inference) between a client and a server. To transmit the activation data between the client and the server, we used boost.asio library. 83 | 84 | * [caffe](https://github.com/BVLC/caffe) by [Berkeley Vision and Learning Center](https://github.com/BVLC) 85 | * [boost.asio](https://github.com/boostorg/asio) by [Boost.org](https://github.com/boostorg) 86 | 87 | License and Citation 88 | ----- 89 | ElasticDNN is released under the BSD 2-Clause license. Please cite following papers in your publications if it helps your research: 90 | 91 | ``` 92 | @inproceedings{jeong2018ionn, 93 | title={Ionn: Incremental offloading of neural network computations from mobile devices to edge servers}, 94 | author={Jeong, Hyuk-Jin and Lee, Hyeon-Jae and Shin, Chang Hyun and Moon, Soo-Mook}, 95 | booktitle={Proceedings of the ACM Symposium on Cloud Computing}, 96 | pages={401--411}, 97 | year={2018}, 98 | organization={ACM} 99 | } 100 | 101 | @inproceedings{shin2019enhanced, 102 | title={Enhanced Partitioning of DNN Layers for Uploading from Mobile Devices to Edge Servers}, 103 | author={Shin, Kwang Yong and Jeong, Hyuk-Jin and Moon, Soo-Mook}, 104 | booktitle={The 3rd International Workshop on Deep Learning for Mobile Systems and Applications}, 105 | pages={35--40}, 106 | year={2019}, 107 | organization={ACM} 108 | } 109 | ``` 110 | 111 | Project Team Members 112 | ----- 113 | Hyuk Jin Jeong (jinevening@snu.ac.kr) and Kwang Yong Shin (kwangshin@altair.snu.ac.kr) 114 | --------------------------------------------------------------------------------