Machine Learning algorithms are being developed and improved at an incredible rate, but are not necessarily getting more accessible to the broader community. That’s why today Algorithmia is announcing DanKu, a new blockchain-based protocol for evaluating and purchasing ML models on a public blockchain such as Ethereum. DanKu enables anyone to get access to high quality, objectively measured machine learning models. At Algorithmia, we believe that widespread access to algorithms and deployment solutions is going to be a fundamental building block of a balanced future for AI, and DanKu is a step towards that vision.
The DanKu protocol utilizes blockchain technology via smart contracts. The contract allows anyone to post a data set, an evaluation function, and a monetary reward for anyone who can provide the best trained machine learning model for the data. Participants train deep neural networks to model the data, and submit their trained networks to the blockchain. The blockchain executes these neural network models to evaluate submissions, and ensure that payment goes to the best model.
The contract allows for the creation of a decentralized and trustless marketplace for exchanging ML models. This gives ML practitioners an opportunity to monetize their skills directly. It also allows any participant or organization to solicit machine learning models from all over the world. This will incentivize the creation of better machine learning models, and make AI more accessible to companies and software agents. Anyone with a dataset, including software agents can create DanKu contracts.
To run the DanKu unittests, we first need to setup our local development environment. The following commands have been tested for OSX and Linux.
0.1. Installing the Solidity Compiler
Install a these homebrew packages:
brew install pkg-config libffi autoconf automake libtool openssl
Install the solidity compiler (solc):
brew update brew upgrade brew tap ethereum/ethereum brew install solidity brew link solidity
sudo add-apt-repository ppa:ethereum/ethereum sudo apt-get update sudo apt-get install solc libssl-dev
0.2. Initialize your Virtual Environment
Install virtualenv if you don't have it yet. (Comes installed with Python3.6)
Setup a virtual environment with Python 3:
cd danku; python3.6 -m venv venv; source venv/bin/activate;
0.3. Install the Populus Framework
populus and other requirements while in virtualenv:
pip install -r requirements.txt
Yay! You should be able to develop Ethereum contracts in Python 3 now!
All contracts are developed and tested using the Populus framework.
To compile all contracts, run the following:
To run all the tests, use the following:
python -m pytest --disable-pytest-warnings tests/*
2. Danku Contracts
The DanKu contract can be found in the
For more information about DanKu contracts, please read the white paper.