Collective Knowledge: organizing research projects as a database of
  reusable components and portable workflows with common APIs
  This article provides the motivation and overview of the Collective Knowledge
framework (CK or cKnowledge). The CK concept is to decompose research projects
into reusable components that encapsulate research artifacts and provide
unified application programming interfaces (APIs), command-line interfaces
(CLIs), meta descriptions and common automation actions for related artifacts.
The CK framework is used to organize and manage research projects as a database
of such components.
  Inspired by the USB "plug and play" approach for hardware, CK also helps to
assemble portable workflows that can automatically plug in compatible
components from different users and vendors (models, datasets, frameworks,
compilers, tools). Such workflows can build and run algorithms on different
platforms and environments in a unified way using the universal CK program
pipeline with software detection plugins and the automatic installation of
missing packages.
  This article presents a number of industrial projects in which the modular CK
approach was successfully validated in order to automate benchmarking,
auto-tuning and co-design of efficient software and hardware for machine
learning (ML) and artificial intelligence (AI) in terms of speed, accuracy,
energy, size and various costs. The CK framework also helped to automate the
artifact evaluation process at several computer science conferences as well as
to make it easier to reproduce, compare and reuse research techniques from
published papers, deploy them in production, and automatically adapt them to
continuously changing datasets, models and systems.
  The long-term goal is to accelerate innovation by connecting researchers and
practitioners to share and reuse all their knowledge, best practices,
artifacts, workflows and experimental results in a common, portable and
reproducible format at https://cKnowledge.io .
