News for hackers. Stuff that matters.
Re:DiLoCo: Distributed Low-Communication Training of Languag... by vessenes on Wednesday December 06, 2023 @06:43PM (#38551024)
This is really cool, and I expect groups like Eleuther will want to integrate it into their workflows.

That said, there is a fundamental rule here -- gradients must, at some point, be shared. This paper says they don't have to be shared every step. Which is really great. But, gradient sizes are on the order of magnitude of the network being trained.

To get this useful for indie LLM training, I'd guess that you'll want it to work sharing gradients not more often than once every few hours to day -- more than that, and bandwidth costs sending 50GB weights files around during training are going to kill you.

The paper seems to indicate they can share every few thousand? (8 workers x 500 times bandwidth reduction?) steps, but sharing every few millions would help that distributed large LLM use case, and my guess is that this is going to be a bit harder to get to converge. But hopefully not!

Related: there's an n^2 problem for getting the gradients out to lots of distributed compute resources.

So, if anyone wants to work on step 2, I'd suggest there's an engineering task: 1-N gradient upload and distribution, and then a science task: revalidating this with a few orders of magnitude less common checkins.

Re:DiLoCo: Distributed Low-Communication Training of Languag... by dinobones on Wednesday December 06, 2023 @08:10PM (#38551639)
Quick question: What is a "gradient" in this context? Is it a file? Is it some state that is stored somewhere?

My understanding of ML is, I made what is basically a "Hot Dog or Not Hot Dog" image classifier and know what a neural net is.

The gradient for that simple neural net, was just found by running Adam an optimizer on the current batch, and then updating the model weights. So by "gradient" do you mean model weights?

Re:DiLoCo: Distributed Low-Communication Training of Languag... by lumost on Wednesday December 06, 2023 @09:36PM (#38552142)
The gradient is the direction and magnitude of change for each model weight. The optimizer determines how to adjust the weight based on the gradient.
Re:DiLoCo: Distributed Low-Communication Training of Languag... by UncleOxidant on Wednesday December 06, 2023 @11:33PM (#38552857)
No, it's an adjustment to model weights that is made during training. Given some input and some expected value there will be some delta and that is used to calculate the gradient - these networks are essentially being trained by gradient descent. As for the size of that data that has to be shared it's going to depend on network size and what kind of representation you're using for the weights - probably bfloat16 these days, but we're certainly seeing a lot of 4 bit representations now.
Re:DiLoCo: Distributed Low-Communication Training of Languag... by GaggiX on Wednesday December 06, 2023 @06:55PM (#38551121)
In the paper, they usually share every 500 steps, a few million steps is an entire training process, more often than not models are trained less than a million steps.