Jupyter Notebooks are notoriously hard to use well with Git and GitHub. Dotscience lets you fork someone else's project, create new runs in notebooks and propose them back along with their metrics. See a full, clear full notebook diff and merge conflicting changes with ease.
In the example on reviewing experiments we saw Charlotte’s work had a higher accuracy score than Ben’s. In order for Ben to improve on his work, we can have Charlotte submit a pull request to her manager Bob’s project and then have Ben update his project with the new results.
To do this, logged in as Charlotte, let’s go to the project:
We can create a pull request any time there is more work done on this project than the upstream project - if you click on “Create a pull request”:
We see an initial diff of what has changed - which files were added, and which files changed. If we click the blue “Create a pull request”…
You’re then able to fill in a text description of what changed and why you’re submitting the pull request.
Next we’re taken to the list of pull requests for Bob’s project which includes our new one:
By clicking on the PR, we can leave comments or close it, but only the owner of the project can accept or reject the pull request:
We also get a full diff of the pull request.
Now, from the Bob’s perspective, we get a similar view, except that we also have the option of rejecting or accepting the pull request:
Let’s merge the pull request - there will be a confirm box to ensure you know what you’re doing, and then you are taken back to the pull requests list:
The PR has now moved to merged, and on the runs page we have all of Charlotte’s work added to the project:
Now if we switch over to Ben’s view, Ben can see in his project that there are updates:
When we click “update from origin” we get a notice and then eventually, we can choose to continue and handle potential conflicts or revert back to where we were:
If we click “continue” we now see which files were conflicted in the update:
For the first file, I’m going to check “clear all cell outputs” and mark it as resolved as this should be the only thing that potentially changed and isn’t really important.
For the second notebook let’s expand it using the down arrow:
And then find the conflicted cell. Here we can type or select the bits we need:
In this case I’m going to change sgd to adam, as that was Charlotte’s optimizer, and change the number of epochs to 3. You can do this automatically by clicking the small arrow next to the one you want:
Finally resolve any other conflicts by clicking “mark resolved”, and then click the big blue mark resolved button at the bottom.
This should take us to this screen:
From here let’s complete the merge which takes us back to the project page.