All Projects → ctuning → ck-crowd-scenarios

ctuning / ck-crowd-scenarios

Licence: BSD-3-Clause license
Public scenarios to crowdsource experiments (such as DNN crowd-benchmarking and crowd-tuning) using Collective Knowledge Framework across diverse mobile devices provided by volunteers. Results are continuously aggregated at the open repository of knowledge:

Projects that are alternatives of or similar to ck-crowd-scenarios

ck-analytics
Collective Knowledge repository with actions to unify the access to different predictive analytics engines (scipy, R, DNN) from software, command line and web-services via CK JSON API:
Stars: ✭ 35 (+59.09%)
Mutual labels:  json-api, reproducible-research, collaborative-research, collective-knowledge, open-research
crowdsource-video-experiments-on-android
Crowdsourcing video experiments (such as collaborative benchmarking and optimization of DNN algorithms) using Collective Knowledge Framework across diverse Android devices provided by volunteers. Results are continuously aggregated in the open repository:
Stars: ✭ 29 (+31.82%)
Mutual labels:  collective-knowledge, open-research, mobile-devices, dnn-optimization, collaborative-dnn-optimization
ck-web
Collective Knowledge web extension to browse CK repositories, visualize interactive graphs and articles, render CK-based websites, implement simple web services with JSON API (for example to crowdsource experiments or unify access to DNN). Demos of interactive articles, graphs and crowdsourced experiments:
Stars: ✭ 31 (+40.91%)
Mutual labels:  json-api, reproducible-research, collaborative-research, collective-knowledge
crowdsource-experiments-using-android-devices
Android application to participate in experiment crowdsourcing (such as workload crowd-benchmarking and crowd-tuning) using Collective Knowledge Framework and open repositories of knowledge:
Stars: ✭ 23 (+4.55%)
Mutual labels:  reproducible-research, collaborative-research, open-research, mobile-devices
ctuning-programs
Collective Knowledge extension with unified and customizable benchmarks (with extensible JSON meta information) to be easily integrated with customizable and portable Collective Knowledge workflows. You can easily compile and run these benchmarks using different compilers, environments, hardware and OS (Linux, MacOS, Windows, Android). More info:
Stars: ✭ 41 (+86.36%)
Mutual labels:  json-api, reproducible-research, collective-knowledge
ck-env
CK repository with components and automation actions to enable portable workflows across diverse platforms including Linux, Windows, MacOS and Android. It includes software detection plugins and meta packages (code, data sets, models, scripts, etc) with the possibility of multiple versions to co-exist in a user or system environment:
Stars: ✭ 67 (+204.55%)
Mutual labels:  reproducible-research, collective-knowledge, mobile-devices
ctuning-datasets-min
Public data sets and their properties in the Collective Knowledge Format with JSON API and JSON meta information to be easily pluggable to customizable and reproducible CK experimental workflows (such as collaborative program analysis and optimization):
Stars: ✭ 26 (+18.18%)
Mutual labels:  json-api, collective-knowledge, open-research
ck-caffe2
Integration of Caffe2 to Collective Knowledge workflow framework to provide unified CK JSON API for AI (customized builds across diverse libraries and hardware, unified AI API, collaborative experiments, performance optimization and model/data set tuning):
Stars: ✭ 34 (+54.55%)
Mutual labels:  json-api, collective-knowledge
Reproduce Ck Paper
Shared artifacts in the Collective Knowledge Format as a proof-of-concept to reproduce our recent Collective Mind- and Collective Knowledge-related papers
Stars: ✭ 24 (+9.09%)
Mutual labels:  json-api, reproducible-research
Ck Caffe
Collective Knowledge workflow for Caffe to automate installation across diverse platforms and to collaboratively evaluate and optimize Caffe-based workloads across diverse hardware, software and data sets (compilers, libraries, tools, models, inputs):
Stars: ✭ 192 (+772.73%)
Mutual labels:  caffe, json-api
XNOR-Net
XNOR-Net, CUDNN5 supported version of XNOR-Net-caffe: https://github.com/loswensiana/BWN-XNOR-caffe
Stars: ✭ 30 (+36.36%)
Mutual labels:  caffe
ITKPythonPackage
A setup script to generate ITK Python Wheels
Stars: ✭ 59 (+168.18%)
Mutual labels:  reproducible-research
MobileNet-SSD-windows
No description or website provided.
Stars: ✭ 91 (+313.64%)
Mutual labels:  caffe
openscience
Empirical Software Engineering journal (EMSE) open science and reproducible research initiative
Stars: ✭ 28 (+27.27%)
Mutual labels:  reproducible-research
MSG-Net
Depth Map Super-Resolution by Deep Multi-Scale Guidance, ECCV 2016
Stars: ✭ 76 (+245.45%)
Mutual labels:  caffe
example-golang-todo
Golang API backend powering a TodoList app
Stars: ✭ 33 (+50%)
Mutual labels:  json-api
PSPNet-Pytorch
Implemetation of Pyramid Scene Parsing Network in Pytorch
Stars: ✭ 26 (+18.18%)
Mutual labels:  caffe
Mxnet2Caffe-Tensor-RT-SEnet
Mxnet2Caffe_Tensor RT
Stars: ✭ 18 (-18.18%)
Mutual labels:  caffe
caffe srgan
A Caffe Implementation of SRGAN
Stars: ✭ 59 (+168.18%)
Mutual labels:  caffe
json-api-react-redux-example
React Application With Redux And JSON API
Stars: ✭ 25 (+13.64%)
Mutual labels:  json-api

All CK components can be found at cKnowledge.io and in one GitHub repository!

This project is hosted by the cTuning foundation.

CK-powered experiment crowdsourcing scenarios

compatibility DOI License

This repository contains public scenarios (software and data sets) in the Collective Knowledge Format to let the community participate in collaborative deep learning optimization including DNN engines (Caffe, TensorFlow) and various models across diverse mobile devices using [universal experiment crowdsourcing Android app]((http://cKnowledge.org/android-apps.html) (see open sources at GitHub).

The results (performance, mispredictions, etc) are continuously aggregated in the open CK repository of knowledge.

Normally, you use this repository only for development. Whenever ready, this repository is synced at the cKnowledge.org/repo to make scenarios available for update in the Android app - just do not forget to select "Information" -> "Update Scenarios"!

Prerequisites

  • Collective Knowledge framework (@GitHub)
  • python (with imaging and matplotlib)
  • git client
  • Android NDK

Authors

License

  • BSD, 3-clause

Installation

$ sudo apt-get install python python-pip git
$ sudo pip install ck
 $ ck pull repo:ck-crowd-scenarios

Android application

Android application let volunteers participate in collaborative benchmarking and optimization of deep learning algorithms. It also sends benchmarking and optimization statistics as a JSON blob to the module 'experiment.bench.caffe.mobile' (function "process") from the ck-caffe repository to be aggregated in the live CK repository.

Updating existing scenarios

If you would like to update existing scenarios (generate new libcaffe.so and classification binary for Android via CK), you should copy them to new entries with a version extension.

For example, you can copy entry "bvlc-caffenet-android-recognize-image-v2" to "bvlc-caffenet-android-recognize-image-v3" via

 $ ck cp experiment.scenario.mobile:bvlc-caffenet-android-recognize-image-v2 ck-crowd-scenarios::bvlc-caffenet-android-recognize-image-v3

Then you should add key "outdated":"yes" to the meta.json of "bvlc-caffenet-android-recognize-image-v2" entry. In such case this entry will be in an "achive" state, will not be updated and will not be visible for Android app.

You should then update "program" key in a meta.json of the new entry with the new version, say 3.0.0. You also need to substitute v2 with v3 in all keys in meta.json.

After that you should build Caffe libs for all scenarios that will be updated.

For example, for CPU version of Caffe you should run:

$ ck install package:lib-caffe-bvlc-master-cpu-universal --target_os=android21-arm64
$ ck install package:lib-caffe-bvlc-master-cpu-universal --target_os=android21-arm-v7a

For Caffe OpenCL you should do the following:

ck install package:lib-caffe-bvlc-opencl-clblast-universal --target_os=android21-arm64 --env.DISABLE_DEVICE_HOST_UNIFIED_MEMORY=ON
ck install package:lib-caffe-bvlc-opencl-clblast-universal --target_os=android21-arm-v7a --env.DISABLE_DEVICE_HOST_UNIFIED_MEMORY=ON

For Caffe CPU you should invoke the following:

$ ck install package:lib-caffe-bvlc-master-cpu-universal --target_os=android21-arm64
$ ck install package:lib-caffe-bvlc-master-cpu-universal --target_os=android21-arm-v7a --env.OPTFLAGS="-O2 -march=armv7-a -mfloat-abi=softfp -mfpu=neon"

For TFLite CPU you should run the following:

$ ck install package:lib-tflite-1.7.0-src-static --target_os=android21-arm64
$ ck install package:lib-tflite-1.7.0-src-static --target_os=android21-arm-v7a

Note that while Caffe can currently run on Android 5+, you can build and run Caffe on older Android 4.2+ via:

$ ck install package:lib-caffe-bvlc-master-cpu-universal --target_os=android19-arm64
$ ck install package:lib-caffe-bvlc-master-cpu-universal --target_os=android19-arm-v7a --env.OPTFLAGS="-O2 -march=armv7-a -mfloat-abi=softfp -mfpu=neon"

Additional info:

  • building Caffe via CK workflow framework with various libraries for Android: notes.
  • building TensorFlow via CK workflow framework with various libraries for Android: notes.

Note that we suggest you to have a clean installation of all libs. You can do it by deleting CK env for all software via

$ ck rm -f env:*

and then removing files from '$USER/CK_TOOLS' directory.

Now you are ready to update new scenarios. You can do it as follows:

$ ck generate experiment.bench.dnn.mobile

Normally, all outdated libcaffe.so will be automatically deleted and updated ones will be copied to the new entries. You can also update only scenarios for a specific engine via

$ ck generate experiment.bench.dnn.mobile --prune_engine="Caffe CPU"
 and/or
$ ck generate experiment.bench.dnn.mobile --prune_engine="Caffe OpenCL"
 and/or
$ ck generate experiment.bench.dnn.mobile --prune_engine="TensorFlow CPU"
 and/or
$ ck generate experiment.bench.dnn.mobile --prune_engine="TFLite CPU"
 and/or
$ ck generate experiment.bench.dnn.mobile --prune_engine="ArmCL OpenCL"

Finally, you can now automatically update length of files, their MD5 and URLs for all scenarios as follows:

 $ ck process experiment.scenario.mobile

or for specific ones such as tflite as follows:

 $ ck process experiment.scenario.mobile:tflite*

Now, new scenarios should be ready to be used by this Android app if updated at the cKnowledge.org/repo server - contact authors for more details.

Public results

Public benchmarking and optimization results collected from Android devices are continuously aggregated in the live CK repository.

Related publications

See all CK publications with BibTex here.

Further discussions

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].