8 ms·
DyLoRA: Parameter Efficient Tuning of Pre-Trained Models
- turnsout 3y agoSo this can tune a model 7X faster than LoRA, which was already a massive speed boost? Curious to see what this will do to the LLaMA-derivative community in particular.
- whimsicalism 3y ago7x faster compared to grid-search LoRA for best rank. I am not convinced that the "best rank" is not just the highest possible with your compute budget, personally.
- sitkack 3y agoWhat is the fastest way to show that?
- whimsicalism 3y agoFastest way to show what? That you should train with the maximum sized LoRA you can? Because the only upsides to having a smaller LoRA are in the training time, and if you are already able to train a DynLoRA with max rank 8, then you should just train a LoRA with that rank.
- fancyfredbot 3y agoYou get diminishing returns as you increase the rank, so with a fixed training budget it's not clear whether you get the best return from increasing rank vs increasing something else. If you start off by training DynLORA with max rank 8 you can see returns diminish fast beyond rank 5. Then you can use rank 5 for the rest of your training. You wouldn't know that with LoRA. I think this is the idea behind the paper. If you are just going to use your entire budget training a DyLoRA with max rank 8 then you're right there's no advantage over LoRA with rank 8. You'd have to use the ability to assess multiple ranks in order to see some benefit.
- whimsicalism 3y agoI can see that. But are we sure that a rank-based difference that doesn't manifest early in the training process won't manifest as you get further along? See also 'grokking' [0] [0]: https://arxiv.org/abs/2201.02177 https://arxiv.org/abs/2201.02177
- fancyfredbot 3y agoNot sure there's any way to know beforehand whether that would happen but the advantage of DyLoRA is that at least you will know afterwards whether you really needed the full rank whereas with LoRA you wouldn't? In some cases that might not be valuable information but I guess you'd rather know than not.
- Ldorigo 3y agoWhy is the only advantage at training time? I might misunderstand something but with this method you can train once, and then deploy models that use arbitrary rank (according to end-users compute requirements) and expect to have a model that performs best for that specific rank.
- Majromax 3y agoHighest posssible in which combination, though? If you’re fine tuning a model with N layers, then you could apply LoRA to any or all of them. Maybe it’s better to concentrate effort unevenly, in which case a uniform increase of adaptation rank (to compute budget) could still be subpar.
- whimsicalism 3y agoRight but the way that this paper proposes determining the best rank is by training a LoRA with the full rank.
- whimsicalism 3y agoI'm unsure of the value of dynamically reducing the rank of the LoRA matrix at inference time given that probably most of the parameter count comes from the original weights rather than the LoRA diff. But nonetheless, training time improvements look interesting. e: Oh I see, the training time improvement is compared to a grid search over the LoRA rank. Not for a single run. I am not convinced that you shouldn't just train on the highest possible rank that you can with your compute budget. If you can train a DynLoRA with rank 8, why not just train a LoRA with that rank?
- huevosabio 3y agoYea, this is interesting but I can't see the immidiate value (not that there isn't). Maybe if the "optimal rank" of LORA applies to any adaptation and you interested in training multiple adaptations for different use cases?
- vladf 3y agoThe optimal rank could differ across layers
- whimsicalism 3y agoI would be shocked if the "optimal rank" in terms of performance wouldn't be using the maximum rank from the DynLoRA across all layers.
- vladf 3y agoErr, I suppose trivially, the higher rank terms include the lower-rank subnets, so they dominate in terms of quality. But if you have some capacity constraint (e.g., memory, I guess?) then you can imagine dynamic rank allocation helping in the case where the maximum rank across all layers isn't within budget. It's a bit of a stretch though, I agree
- whimsicalism 3y agoAs someone else mentioned [0], the procedure would basically be to train a DyLoRA for an initial few iterations, then do a search among the layers to find the best scoring combination of ranks, and then train pruned to just use those ranks to completion. Seems complicated but I could see it being useful potentially. [0]: https://news.ycombinator.com/item?id=35517353 https://news.ycombinator.com/item?id=35517353
- fancyfredbot 3y agoWhen fine tuning an LLM you can use the LORA technique to make the fine tuning faster. LORA involves fine tuning a subset of parameters (really it's a low rank approximation of the weight matrix determined by picking the n largest eigenvalues in the SVD decomposition). The size of the subset is determined by the rank. The smaller the rank the faster the fine tuning. However if you make the rank too small then quality will suffer. So you want to pick the optimal rank. This paper describes a technique which can be used to find the optimal rank more easily.
- FrostKiwi 3y agoFascinating progress. Would you say the following understanding is correct?: - You can fine-tune a model, regardless of whether it has been quantized (as in the 4-bit versions of models made to fit in consumer grade RAM sizes) or not. - You can fine-tune any model on any hardware, provided it fits into RAM. That means, that the 30B llama-derived models in their 4-bit quantized version and 19.5GB of VRAM requirement can be fine-tuned on consumer grade GPUs with 24gb of VRAM. (Like the RTX 3090 and 4090)
- whimsicalism 3y agoYes to the first. To the second, I'm not sure that the RAM requirements are the same to train because you have to preserve the state which takes extra memory.
- alchemist1e9 3y agoIs it possible for many people to simultaneously fine tune models on different data and then combine the new models into something improved?
- yorwba 3y agoYes, but the naïve way to combine rank k adaptations created by n different people would be to concatenate them to a rank nk adaptation, which wouldn't be as lightweight and easy to share, so you'd likely be better off mushing them into the baseline model.
- lxe 3y agoKudos for the authors for providing the code https://github.com/huawei-noah/KD-NLP/tree/main/DyLoRA https://github.com/huawei-noah/KD-NLP/tree/main/DyLoRA and the roberta example. Considering the current state of the OSS LLM community, I'm guessing someone is already porting it to Llama and gpt-style models.
- kernelsanderz 3y agoAdding this to the huggingface peft library would be amazing. That's the main library that people using LoRA are currently using. https://github.com/huggingface/peft/issues/289 https://github.com/huggingface/peft/issues/289
- brucethemoose2 3y agoThe stable diffusion community has, unfortunately, largely ignored peft because the training/inference scripts largely ignored diffusers.
- vladf 3y agoHow does this technique differ from the supernet optimization for one-shot NAS? https://proceedings.mlr.press/v80/bender18a.html https://proceedings.mlr.press/v80/bender18a.html It seems like they use a fixed-distribution controller for training. It’d be nice to see why it’s worth deviating from the original RL paradigm.
- whimsicalism 3y agoIt's very different, but hard to distill in a comment. They use a new regularization technique to basically create a LoRA with dynamically adjustable rank.
- charleshmartin 3y agoThere are good theoretical reasons behind this as well https://calculatedcontent.com/2023/02/01/deep-learning-and-effective-correlation-spaces/ https://calculatedcontent.com/2023/02/01/deep-learning-and-e...