Collective Knowledge (software)

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
Collective Knowledge (CK)
Collective Knowledge and cTuning logo.png
Developer(s) cTuning foundation and dividiti
Initial release 2014; 4 years ago (2014)
Stable release
1.9.5 / July 18, 2018 (2018-07-18)
Written in Python
Operating system Linux, Mac OS X, Microsoft Windows, Android
Type Knowledge management, Artifact Evaluation, Artifact Sharing, Package management system, Scientific workflow system
License BSD License 3-clause
Website github.com/ctuning/ck, cknowledge.org, cknowledge.org/ai, cknowledge.org/repo

The Collective Knowledge project (or CK for short) is an open-source framework and repository to enable sustainable, collaborative and reproducible research and development.[1] CK is a small, portable, customizable and decentralized infrastructure which allows researchers:

  • share their code and data as reusable Python components with unified JSON API, JSON meta information, and distributed UID via GitHub and similar services (see the list of shared CK workflows, packages, software detection plugins and other components)
  • quickly prototype sustainable experimental workflows from shared components as LEGO(R) (such as multi-objective autotuning[2])
  • automate, crowdsource and reproduce experiments (see live repository)
  • unify predictive analytics (scikit-learn, R, DNN)
  • enable interactive articles and graphs (see online example)

Notable usages[edit]

Portable package manager[edit]

CK has an integrated cross-platform package manager with Python scripts, JSON API and JSON meta-description to automatically rebuild software environment on a user machine required to run a given shared research workflow (see documentation for more details). See already shared CK packages and software detection plugins.

Extensible AI API[edit]

CK provides a unified and extensible JSON API for multiple DNN frameworks including Caffe and TensorFlow while optimizing them across diverse hardware (mobile devices, HPC servers) and models.[12]

Reproducibility of experiments[edit]

CK enables reproducibility of experimental results via community involvement similar to Wikipedia and physics. Whenever a new workflow with all components is shared via GitHub, anyone can try it on a different machine, with different environment and using slightly different choices (compilers, libraries, data sets). Whenever an unexpected or wrong behavior is encountered, the community explains it, fixes components and shares them back as described in.[2]

External links[edit]

  • Development site: [1]
  • Documentation: [2]
  • Public repository with crowdsourced experiments: [3]
  • Resources related to open science: [4]
  • International Workshop on Adaptive Self-tuning Computing System (ADAPT) uses CK to enable public reviewing of publications and artifacts via Reddit: [5]
  • Android application to crowdsource experiments (such as program optimization) using mobile devices provided by volunteers via CK framework: [6]

References[edit]