Proposal: Adding Proof of Learning to NFT Callback

Name of Project: Proof of Learning - NFT Callback

Proposal in one sentence: After implementing a Pytorch NFT Callback as described here (Implementation can be seen here).

I want to replace the way “Proof-of-Learning” is done right now which is easily manipulated with the approach outlined in the following paper: Proof-of-Learning: Definitions and Practice.

Description of the project and what problem is it solving: Trying to determine who actually did the training of a machine learning model is currently very hard. I want to improve my current approach by implementing a more robust approach as outlined in the paper above.

Grant Deliverables:

  • Functioning integration of the “Proof-of-Learning” algorithm as described in the paper
  • Easily installable for the latest Pytorch version

Funding Requested: $1000

Squad: @shafu


Sounds interesting! Could you provide a TL;DR for the paper?

yeah sure.

So the paper introduces a proof that basically lets you do a proof verification of two separate checkpoints. That lets you proof that the gradient descent step between checkpoint-N and checkpoint-N+1 is correct. This allows a proof of training without doing the whole training again from scratch.

They also introduce a similarity function between two sets of weights because of the inherit randomness of gradient descent.

There is also this 15 min video by the authors on YT for more info: Proof-of-Learning: Definitions and Practice - YouTube

I hope that helps.

Hey cool project. Curious to know how things will be rendered to the user at the frontend. These things look real technical to even ML folks not in crypto. Maybe work on a explainer to your project. Best of luck!

Thank you!

So from a fronted perspective it is actually not that complicated. You only need to hash the proof checkpoints. You could even build a merkle tree out of them if you want to get fancy.

That means that I do not have to change my current frontend implementation that much. You can see the current frontend implementation here: GitHub - SharifElfouly/NFT-Pytorch-Callback-Frontend.

I tried to describe the project in this README. But I definitely need to update it.