Skip to content

Collective Knowledge is a cross-platform customizable Python framework to share artifacts as reusable components with JSON API; assemble experimental workflows (such as multi-objective DNN optimization); automate package installation; crowdsource and reproduce experiments; unify predictive analytics; enable interactive articles. Project website:

License

Notifications You must be signed in to change notification settings

Optimisticism/ck

 
 

Repository files navigation

logo License

Linux/MacOS: Build Status Windows: Windows Build status Coverage: Coverage Status

Introduction

Collective Knowledge is our "swiss knife" for open, collaborative and reproducible experimentation. CK is a small, portable and customizable research SDK to

  • share artifacts as reusable and indexable Python components with unified JSON API and meta information (programs, benchmarks, data sets, tools, predictive models, etc) - see Artifact Evaluation website and Reusable AI artifacts;
  • automate detection or installation of all software dependencies on Linux, Windows, MacOS, Android while enabling co-existence of different versions (compilers, benchmarks, libraries, tools) for a given experimental workflow across diverse Linux, Windows and Android based platforms via CK cross-platform customizable package and environment manager;
  • enable simple virtual environment for native OS packages besides Python packages;
  • quickly prototype experimental workflows from shared components (such as customizable and multi-objective autotuning for DSL, OpenCL, CUDA, MPI, OpenMP and compiler flags) across diverse hardware and software (CK repo);
  • crowdsource experiments across diverse hardware and workloads provided by volunteers and validate ideas or report unexpected behavior and bugs (CK repo);
  • reuse and collaboratively extend JSON description of all existing platforms from IoT to supercomputers (CK repo);
  • abstract access to continuously evolving software and hardware stack (CK repo);
  • automate, reproduce and crowdsource empirical experiments using CK JSON-based web services (live repo);
  • unify access to predictive analytics (scikit-learn, R, DNN, etc) via unified JSON API and CK web services (CK repo);
  • enable reproducible and interactive articles (CK repo).

We use CK to gradually develop common API and meta for reproducible computer systems research together with the community and ACM!

Feel free to contact us if you need free help to convert your artifacts and workflows to the CK format.

Useful links

Reference article

@inproceedings{ck-date16,
    title = {{Collective Knowledge}: towards {R\&D} sustainability},
    author = {Fursin, Grigori and Lokhmotov, Anton and Plowman, Ed},
    booktitle = {Proceedings of the Conference on Design, Automation and Test in Europe (DATE'16)},
    year = {2016},
    month = {March},
    url = {https://www.researchgate.net/publication/304010295_Collective_Knowledge_Towards_RD_Sustainability}
}

License

  • Permissive 3-clause BSD license. (See LICENSE.txt for more details).

Testimonials and awards

Acknowledgments

CK development is coordinated by the cTuning foundation (non-profit research organization) and dividiti. We would like to thank the EU TETRACOM 609491 Coordination Action for initial funding, Microsoft for sponsoring hosting of a CK public repository in the Azure cloud, and all our partners for continuing support. We are also extremely grateful to all volunteers for their valuable feedback and contributions.

Minimal installation

The minimal installation requires:

  • Python 2.7 or 3.3+ (limitation is mainly due to unitests)
  • Python PIP (if you would like to install CK via PIP)
  • Git command line client.

On Ubuntu, you can install these dependencies via

$ apt-get install -y python python-pip git

On Windows, you can download and install these tools from the following sites:

You can now install a stable CK version via PIP simply as following (you may need to prefix it with "sudo" on Linux):

$ pip install ck

Alternatively, you can install a development CK version in your local user space via GIT as following:

 $ git clone https://github.com/ctuning/ck.git ck

and then add CK to PATH on Linux as following:

 $ export PATH=$PWD/ck/bin:$PATH

or on Windows as following:

 $ set PATH={CURRENT PATH}\ck\bin;%PATH%

Further installation details can be found here.

Trying CK using Docker image

If you would like to try CK without installing it, you can run the following Docker image:

 $ docker run -it ctuning/ck

Also note that we added Docker automation to CK (to help evaluate artifacts at the conferences, share interactive and reproducible articles or crowdsource experiments for example).

Please check 'ck-docker' repository at GitHub:

 $ ck show repo:ck-docker

You can download and view one of our CK-based interactive and reproducible articles as following:

 $ ck pull repo:ck-docker
 $ ck run docker:ck-interactive-article --browser (--sudo)

See the list of other CK-related Docker images here.

However note that the main idea behind CK is to be able to rebuild user experimental workflows natively, take advantage of the latest software environment and hardware, and enable open research via collaborative reuse and agile improvement of all shared artifacts and workflows.

Practical use cases

See the list of real use cases by the growing CK community.

Questions/comments/discussions?

CK authors

About

Collective Knowledge is a cross-platform customizable Python framework to share artifacts as reusable components with JSON API; assemble experimental workflows (such as multi-objective DNN optimization); automate package installation; crowdsource and reproduce experiments; unify predictive analytics; enable interactive articles. Project website:

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 97.2%
  • PHP 2.4%
  • Other 0.4%