Show HN: 80% faster, 50% less memory, 0% loss of accuracy Llama finetuning (github.com)
1. Manual autograd engine - hand derived backprop steps.
2. QLoRA / LoRA 80% faster, 50% less memory.
3. All kernels written in OpenAI's Triton language.
4. 0% loss in accuracy - no approximation methods - all exact.
5. No change of hardware necessary. Supports NVIDIA GPUs since 2018+. CUDA 7.5+.
6. Flash Attention support via Xformers.
7. Supports 4bit and 16bit LoRA finetuning.
8. Train Slim Orca fully locally in 260 hours from 1301 hours (5x faster).
9. Open source version trains 5x faster or you can check out Unsloth Pro and Max codepaths for 30x faster training!
https://www.reddit.com/r/LocalLLaMA/comments/188197j/80_fast... has more info about Unsloth!
Hopefully you can try it out! Wrote a blog post at https://unsloth.ai/introducing if you want to learn more about our manual hand derived backprop or Triton kernels and stuff! Thanks once again!
128 comments
[ 4.3 ms ] story [ 199 ms ] threadIt'd be quite a lift unless we're just willing to just accept the self reported metrics as golden. And even then, they're always qualified by hardware and usage scope. Making it good enough to be useful is the hard part. CI/CD pipeline with a bunch of machine configurations and benchmarks along with a reasonable way to communicate them...
If anyone's up for it you'd legitimately become indispensable.
I'll post it once its completed if you're interested!
For instance, are any of your prompting tests in say, Korean? What about winograd schema challenges in languages other than English? Japanese for instance, comes with its own unique set of context ambiguities that do not appear in English. I'm sure dozens of languages are similar. It'd be nice to have user contributable tests to cover the breadth of use cases here.
A great optimization that moves a score let's say from 95% -> 5% on "winograd-persian" may be fine or may be a show stopper, depends on what you care about.
That's why it's gotta be normalized, future-proof, and crowdsourced.
I haven't checked in a few months and the way things are moving now...
Cheers!
So in GPUs the goal is to saturate the GPU with matrix multiplies instead of data movement. I'll write a more detailed blog but approximately:
1. Flash Attention v2 reduces the time taken by 17% or so
2. RoPE Triton kernels: -7.1%
3. RMS Layernorm in Triton: -3.1%
4. Cross Entropy in Triton: -1%
5. Manual autograd for MLP: -4%
6. Manual QKV autograd: -2%
7. Manual O autograd: -2%
8. Smart cache evictions and reduced data duplications etc: -30%
9. And other tricks in the Max and Pro versions makes it 30x faster
You can see it's just tricks in each step, which accumulate together to make to go faster.
I'll write up a blog post to detail it all in the future!!!
This feels like the collecting underpants meme. Phase 1: Get to the same performance as other methods. Phase 2: ???. Phase 3: Now you're at 750%!
You may or may not actually have succeeded at what you claim to, but you're not being very persuasive. I realize that you're trying to turn these tricks into a profit and revealing them would destroy that possibility, but you're going to have a really hard time persuading people to pay for a product that does something that enormous teams of PhDs at BigTech haven't been able to pull off on the basis of "trust me".
I listed all the research articles and methods in Hyperlearn which in the end were gobbled up by other packages.
We still have to cover life expenses and stuff sadly as a startup.
Do you have any suggestions how we could go about this? We thought maybe an actual training / inference platform, and not even OSSing any code, but we decided against this, so we OSSed some code.
Any suggestions are welcome!
Monetizing anything isn't inherently problematic; the challenge lies in defining what should be paid for and what should be offered for free.
In the realm of open-source products and SaaS, the common practice is to provide free self-hosting options while charging for cloud hosting or enterprise-specific features, such as access control and authentication integrations.
However, the landscape becomes significantly more challenging for LLMOps (assuming you are still focusing on training as a major aspect of your business, which can be categorized as LLMOps).
Historically, there haven't been many success stories in this area (with exceptions like wand.ai, which focusing on tracking experiments). I believe this difficulty arises from the largely ad-hoc nature of training and fine-tuning processes, making standardization a challenge, coupled with the infrequency of these tasks.
That being said, training/finetuning is a valuable technique. However, transforming it into a company that offers products is really challenging. Successful examples in this realm typically depend heavily on solution customization or consulting-oriented business models.
Yep self hosting solutions like Redhat, or DBs like MongoDB or Gitlab's dashboard style approach could work - the issue is now as you mentioned we offer training and finetuning.
We do plan to offer inference as well, plus the data gathering process, and the final prompt engineering side - but we thought why not have a shot?
It's possible best to make a training and inference platform - maybe some sort of personal ChatGPT training for the public - everyone can train their own personal ChatGPT not via ChatGPT's in context learning or RAG, but coupled with actual fast 30x finetuning, a personal bot can truly be possible.
Thaks for the suggestions!
It's costing them x. you can shave y off. you can get improvements to market faster and cheaper.
I was thinking along the lines of say the cost of A100s or H100s * electricity cost and engineering costs then how much we save, and some discounting factor.
It allows for fast iteration and shorter go-to-market, which can generate virtually infinite value, as opposed to saving electricity, which is a limited game.
Oh no yep your right on time saved and what opportunities it gives them not just the electricity and capital costs :))
You can now experiment 30 different models instead of 1 - if you have 100 GPUs, we magically made it 3000!
I appreciate this probably isn’t a popular HN opinion, but as you say, you need to make a living. If you have produced something novel that is working, put the gaspedal down and monetise the absolute living daylights out of it as long as you can. Because that is what everyone with _money_ is doing. You don’t see OpenAI opening all their research and tricks now, do you?
Do your thing, buddy, and make your money. All the best with your startup, and don’t get distracted by the people clamouring for your recipes.
Sadly OpenAI did in fact open source everything, but now revenue is king - I'm sure they will open source stuff in the future once the time is right.
But thanks a lot - it means a lot - highly appreciate it!!!
Maybe you should talk to https://goodsnooze.gumroad.com/l/macwhisper to get some inspiration?
People are paying for convenience.
as for the technology itself: the B2B market is super-super early and i understand everybody is in goldrush mode, however 98% of all startups will not survive the next 3-5 years.
From the demand site: Companies are still sleeping, you can see very very very few proof of concept implementation, but basically nothing goes to production.
The rate of innovation is extremely high with LLM, making it a bad investment for a company.
My idea: OSS everything, become an expert in the field, learn how to sell, survive from consulting services. Don´t build products, do paid projects instead.
Focus all your energy to understand customer needs and building your target audience.
Be ready when the time is right to build a startup around LLM.
Don´t waste time building technology, develop your business instead.
It sounds like consultants will become freelancers in the future - but LLMs itself might take over the consultant's job as well.
But on that note - that's why with my bro, we decided Unsloth was out 1st product release - we're going to be releasing tonnes of new other products! (Coincidentally a data science consultant as well!)
Problem with most platforms is they keep ALL scale efficiencies for themselves, which scares away big projects. They end up with only small users, which don't make unicorns in this case.
Finetuned LLMs is the future for most enterprise applications. Not every shop can possibly set up its own LLM team. If you abstract that away and let them know they'll pay less (per unit) as they scale up, it'd be a juicy proposal.
Your best bet is probably a SaaS training platform (I suspect inference is a harder business, as you need to serve high uptime APIs; I guess you have more forgiving SLAs for training batches). Sell to medium-large companies (big enough to need training, not big enough to have an established in-house platform), and if you need to bootstrap at all you can probably do profitable consulting-type work without giving up your core IP, since you can hand off the trained model weights without handing out all of your trade secrets.
Folks around here are going to gripe about this; HN has a contingent of FOSS enthusiasts but these people are not going to give you a dollar, they are not your customers. FOSS is great but you are under no obligation to give away your life work.
Honestly where you have landed (opening up some of your work) is more generous with your time than most people would be; people should be thanking you instead of complaining that it’s not more open. I think giving out enough OSS for people to realize you are the real deal while keeping the biggest wins closed is a good marketing strategy.
Agreed on the training platform - yess consulting is also a good point!!
I guess the main point is we don't want to be eaten up by cloud providers, and not repeat the mistakes of other OSS projects like MongoDB with AWS etc.
But thanks for the nice comment and suggestions!
Whatever advantage they have I don’t see how they would be able to to keep it for long as part of their closed source “pro” version.
If it’s low hanging fruit the open source equivalents are bound to snipe them before long.
Best of luck and all success to you!
If you don't believe the timings, I was the author of Hyperlearn https://github.com/danielhanchen/hyperlearn which makes ML faster - I also listed the papers which cite the algos.
I also used to work at NVIDIA making TSNE 2000x faster on GPUs and some other algos like Randomized SVD, sparse matrix multiplies etc.
If you have any suggestions on a more appropriate pricing strategy - I'm all ears!!
I really don't know much about pricing and the open core model, so I'm making stuff up literally.
You might want to get some distance from talking to language models.
But for now - our goal is somehow to get revenue ourselves via some cool AI products, and trying to shrink the expenses to 0 (like via our fast training methods)
That's how I would make profit from what you're doing as many big tech companies have already achieved (and more) of what you claim.
I know this as I work in such a company. However, I'd bet they'd pay a fair amount for new solutions that differ from their own.
I worked myself in the past at NVIDIA making algos faster, so it's not a done deal big tech companies have all the tips and tricks. They have the best hardware, but software not so much.
The issue with licensing code is your revenue capture is minimal - maybe a training platform which provides everyone and not just big tech companies a cheap and efficient implementation sounds much better.
The issue with licensing is how much do you charge? How do you monitor usage? Etc
It's mainly trying to reduce data movement, maximize FLOP utilization via matrix multiplies, and reducing FLOPs via manually deriving backpropagation equations + more!
This is a pretty good overview paper: https://arxiv.org/pdf/2108.02692.pdf (they claim to be better than the rest -- I haven't evaluated their claims in practice yet)
The techniques are mostly about ordering and common subexpression elimination for XOR operations and choosing "better" matrices to do the computation with. CRS codes can be used with many different matrices, but it turns out some are better than others for effiency (XOR operations are encoded by 1s in the CRS matrix, so if you choose a CRS matrix with fewer of them while meeting the requirements, you can do less operations and get the same results).
Yep so the OSS version does have the reordering of operations - I'll write a blog post about it in the coming days!! We also have other tricks up our sleeve to make it go even faster!!
Hope it's potentially helpful :)
So technically the code can run, but I'll have to edit it to remove the Triton changes.
I think there are a few Redditors from /r/localllama who also requested this, but for now first priority is getting Mistral support!!
Edit: it seems like http://unsloth.ai works - we're talking with our web hosting people to fix it
Not to mention that other than beyond 7B models, your options drastically taper off. Mistral and most open base model projects only have models available up to 7 billion parameters or so, which is quite tiny if you are used to the relative ease of using un-finetuned GPT-4 to carry out your tasks of choice.
So what options are there? Falcon 40B and MPT-30B - sure, the weights license is all right, but many in the community have reservations about those models' underperformance, as you can get much more bang for your buck with newer models, in an equal number of weights in a newer base model. Subjectively speaking, it could be a waste of time.
Falcon 180B and Yi 34B weights are both issued under non-free licenses, just like Llama 2.
Is Llama 2 proprietary? For the vast majority of people, for the vast majority of purposes, no. I'm not a lawyer, but I think that Meta would be quite unlikely to do more than cut off your HuggingFace access to the repo where new models will be distributed.
All thanks to Llama - the LLM community is now vibrant and alive!
I'm all very new to this, so I'm literally making stuff as I go along!!
Apologies!
Given the current state of AI performance, I’d imagine that those without 100s of GPUs but looking to maximise the performance of what they do have, would be a great demographic for the Paid plan.
Would someone be able to tell me more about this?
The main reason is because from Turing, Tensor Cores got provided, and so the matrix matmuls are all different in Tensor Cores
The paid version just makes it train 30x faster on multi GPU platforms - it's more of an open core approach.
The company here does seem less sinister however - don't think they've accepted VC investment yet? Could be wrong.
We're open to VC investment now, except we truly believe in bootstrapping it - we have tonnes of other products in the pipeline like a Recession predictor, a Data Science Consultant, our own trained chatbot via DPO and our fully cleaned datasets and more!
I OSSed all the code to the community - I'm actually an extremely open person and I love contributing to the OSS community.
The issue was the package got gobbled up by other startups and big tech companies with no credit - I didn't want any cash from it, but it stung and hurt really bad hearing other startups and companies claim it was them who made it faster, whilst it was actually my work. It hurt really bad - as an OSS person, I don't want money, but just some recognition for the work.
I also used to accept and help everyone with coding up their startup's software, but I never got paid or even any thanks - sadly I didn't expect the world to be such a hostile place.
So after a sad awakening, I decided with my brother instead of OSSing everything, we would first OSS something which is still very good - 5X faster training is already very reasonable.
I'm all open to other suggestions on how we should approach this though! There are no evil intentions - in fact I insisted we OSS EVERYTHING even the 30x faster algos, but after a level headed discussion with my brother - we still have to pay life expenses no?
If you have other ways we can go about this - I'm all ears!! We're literally making stuff up as we go along!
I still haven't figured out how to open source algorithms which don't have an UI or database - maybe a training or inference platform?
But if we made a training / inference platform, then there won't be any OSS code.
We're currently stuck in the middle - do you have any suggestions on this?
Input - > excel, txt etc
Select model base -> mystal, llama2
output --> fine trained model.
Give a fixed cost based on data you got .. say it will take $50 to train on this ? for 25 hours of GPU with your markup.
User Pays the bill and get PEFT llama model out.
The big problem i see in Finetuning for GPU Poor is no one gives an estimate on how much it will cost for your data on a given model.
have a calculator for x words or Bytes and y epochs, here is the cost we are estimating..
Once you make your $x million in terms of 50x your pay for the time you invested, you can open source it, but we are greedy when it comes to money.. so opensource model at your will. In the mean time hope no one catches your technique.
Ye for hobbyists - it's hard to price.
But I agree some sort of platform for training could in theory work
You're not supposed to be able to restrict algorithms (i.e. math), and copyright (e.g. open source licenses) is definitely not the right tool. If you want to do it anyway, You'll have better chances by abusing the patent system.
> The issue was the package got gobbled up by other startups and big tech companies with no credit
I understand that this is frustrating, but are you open sourcing things for recognition? The fact is companies are going to use 100s of open source packages and aren't going to credit them all, or even any.
At any rate, I appreciate how difficult your position must be, and wish you luck.
I agree, but generally as a researcher / OSS even a nice citation is nice :) There are some cool people who do just that, but some do not.
But thanks once again!
true. saw this myself too for my projects. big tech / startups would use your project internally and give you nothing back. sadly happens often.
This also incentives contributing to open source, because you'd potentially get compensated if the code was used by some big corporation.
Why isn't this a thing?
My bro and I don't have any evil intentions, so our first priority is to release stuff carefully and safely!
question on the perf benchmarks: why do all the results with 2 GPUs & DDP take longer than the single GPU case? Both benchmarks do the same amount of work, one training epoch, so this negative scaling is surprising.
1. DDP itself has an overhead since it has to synchronize gradients at each training step since GPU0 and GPU1 has to give gradients to GPU0.
2. Huggingface seems to not be optimized well for DDP mainly due to inefficient data movement - we fixed that - interestingly - even on 1 GPU it's faster.
In other words, every benchmark, in either HF or Unsloth, is slower in absolute terms when going from 1 to 2 GPUs. That makes me think something is wrong with the test.
Could you share your benchmark code?
But thanks a lot again!
B2B deals at 200-300k+ are your best bet at selling this IMO.
https://github.com/pytorch-labs/segment-anything-fast
https://github.com/pytorch-labs/gpt-fast