Live data from Hacker News

Zero-3 Offload: Scale DL models to trillion parameters without code changes

deepspeed.ai

31–40 of 49 posts

Re: Zero-3 Offload: Scale DL models to trillion parameters without code changes

#31
post #14
post #9

Earlier quoted context omitted.

Did you even read through the issue? I don't see anything that indicates it won't work.

Yes, I did. The last comment is a traceback and an explanation what would have to be done to fix it.

Your comment implied it's not possible at all for them to use it, not that it's currently not working.

Re: Zero-3 Offload: Scale DL models to trillion parameters without code changes

#32
post #19

Earlier quoted context omitted.

You ideally need ~500GB of text, or so. EleutherAI's The Pile was designed to be just big enough to fit a 1t GPT efficiently, and you can get the various scaling curves out of the OA-related scaling papers. (You want the amount of data that fits into a single epoch, because if you reuse data, you get less bang for the FLOPs buck, and FLOPS constraints are right now much more binding than data or model size.)

This feels off by a couple of orders of magnitude, unless a significant number of the parameters are not independent.

It's quite amusing. The standard statistical theory does not work at all in estimating data vs model size, and the bounds are all vacuously large. It's a very active area of research, understanding why models act so simple when overparameterized and coming up with real measures of model complexity. Lots to read there if you are interested in such things.

Re: Zero-3 Offload: Scale DL models to trillion parameters without code changes

#33
post #19

Earlier quoted context omitted.

You ideally need ~500GB of text, or so. EleutherAI's The Pile was designed to be just big enough to fit a 1t GPT efficiently, and you can get the various scaling curves out of the OA-related scaling papers. (You want the amount of data that fits into a single epoch, because if you reuse data, you get less bang for the FLOPs buck, and FLOPS constraints are right now much more binding than data or model size.)

This feels off by a couple of orders of magnitude, unless a significant number of the parameters are not independent.

Well, that's the "magic" of modern deep learning. You can fit models with p > n somehow without overfitting. In some areas you might find this called "the strong inductive bias of neural networks" or "double descent" but no one has found a convincing explanation (to me).

Re: Zero-3 Offload: Scale DL models to trillion parameters without code changes

#37
post #18
post #15

Alternatively, one could get rid of the memory used by optimizers entirely by switching to vanilla SGD. I haven’t tried this on transformers and maybe that’s what breaks down here but in “classic” supervised settings I’ve found SGD with schedule tuning just as fast as Adam.

SGD doesn't work on large Transformers, no. You need something like AdamW.

Mish is generally superior to RadamW https://lessw.medium.com/meet-mish-new-state-of-the-art-ai-a...

Re: Zero-3 Offload: Scale DL models to trillion parameters without code changes

#38
post #26
post #24

Earlier quoted context omitted.

But it's not clear how they managed to improve training on a single GPU: they say they can fit 40B model on a single V100.

They offload parameters, gradients and optimizer states (such as moment, velocity and exponential avg of these in Adam) into CPU memory.

They did all that before: https://arxiv.org/abs/2101.06840, but they could only fit a model with 13B weights on a single V100.

Re: Zero-3 Offload: Scale DL models to trillion parameters without code changes

#39
post #4
post #3

GPT-NeoX is an example project that is using deepspeed and Zero-3 offloading. The wider project intend to train a GPT-3 sized model and release it freely to the world. https://github.com/EleutherAI/gpt-neox

It seems like Zero-3 doesn't work for them: https://github.com/EleutherAI/gpt-neox/issues/171

Hi! I’m the one who wrote this code. My ZeRO-3 implementation is currently not working, but I’ve spoken with DeepSpeed devs and they’ve explained to me what I’ve been doing wrong. I haven’t had time to implement the fix but I don’t see any reason to assume it won’t work.

https://github.com/microsoft/DeepSpeed/issues/846

Also, the specific problem described in that Issue was due to a bug I found in DeepSpeed that has since been corrected.

Re: Zero-3 Offload: Scale DL models to trillion parameters without code changes

#40
post #11

Earlier quoted context omitted.

Third paragraph or so in the overview: > ZeRO removes the memory redundancies across data-parallel processes by partitioning the three model states (optimizer states, gradients, and parameters) across data-parallel processes instead of replicating them. By doing this, it boosts memory efficiency compared to classic data-parallelism while retaining its computational granularity and communication efficiency

Yeah that would be the techno-babble. I've been working on a machine learning pipeline for 6 years and I still have no idea what this means.

I have a reasonable amount of experience with distributed machine learning (and transformers in particular, too) and I have to 100% agree that this blog post (and even the ZeRO paper) is largely technobabble. I don't doubt that this might really work, but how it works is not elucidated very well, and I'm still not 100% sure I understand what they actually did.

For anyone who still thinks the blog post has substance: Saying that they partitioned the optimizer state, params, etc to have no redundancies is kind of "duh," sort of like saying "we solved the problem using coding and algorithms." It's obvious that we want to eliminate redundancies to maximize the effective VRAM; it's not like nobody thought of not having redundancies before. The problem is that in general, training models distributed is a weird balancing act between redundancy, network usage, compute, etc. The existing methods, model/pipeline/data parallel, gradient checkpoint/accum, etc all have their pros and cons. Unless ZeRO3 is doing something crazy, it has to be giving something up to get to zero redundancy, and knowing what that is would be very important.

If someone could ELI5 how ZeRO actually works, that would be nice.

Post reply on HN