A few people here tried the Goliath-120B model I released a while back, and looks like TheBloke has released the quantized versions now. So far, the reception has been largely positive.
https://huggingface.co/TheBloke/goliath-120b-GPTQ
https://huggingface.co/TheBloke/goliath-120b-GGUF
https://huggingface.co/TheBloke/goliath-120b-AWQ
The fact that the model turned out good is completely unexpected. Every LM researcher I’ve spoken to about this in the past few days has been completely baffled. The plan moving forward, in my opinion, is to finetune this model (preferably a full finetune) so that the stitched layers get to know each other better. Hopefully I can find the compute to do that soon :D
On a related note, I’ve been working on LLM-Shearing lately, which would essentially enable us to shear down a transformer down to much smaller sizes, while preserving accuracy. The reason goliath-120b came to be was an experiment in moving at the opposite direction of shearing. I’m now wondering if we can shear a finetuned Goliath-120B to around ~70B again and end up with a much better 70B model than the existing ones. This would of course be prohibitively expensive, as we’d need to do continued pre-train after the shearing/pruning process. A more likely approach, I believe, is shearing Mistral-7B to ~1.3B and perform continued pretrain on about 100B tokens.
If anyone has suggestions, please let me know. Cheers!
I’ve done bunch of D&D character sheets with this and yeah I think is pretty good. (Still not sure if it’s just Euryale though which looks like has been trained on that kind of data).
I would love to see where Goliath ranks in the traditional benchmarks, Hellaswag, Winogrande etc. (has anyone run them yet?) Very curious if this model is strictly better than the two models it was made out of in a more rigorous test.
I’m really hoping the frankensteining method can be proven that it really does improve the smarts compared to the models it is made out of.
I’ve been using a Q6 gguf quant I made myself on day 1 and it works well. 1.22 tokens per second on a pure CPU + DDR5 memory and I think around 90GB of memory.
Just finished the Hellaswag trial runs. First, here’s a table from best to worst:
Model name | 0-shot Hellaswag 400 tests % :-- | :-- | :– goliath-120b_q6_k.gguf | 69.75 euryale-1.3-l2-70b.Q6_K.gguf | 66.5 airoboros-l2-70b-2.2.Q4_K_M.gguf | 63.25 xwin-lm-70b-v0.1.Q6_K.gguf | 63.0 yi_200k_Q8_0.gguf | 59.21 openchat-3.5_Q8_0.gguf | 53.25
The euryale and xwin models are the ones used to Frankenstein together the Goliath model.
The Goliath .gguf was quantized by myself, as was the Yi model. The rest are downloaded from TheBloke.
Even though Goliath shows up as the top model, here is why I don’t think you should run off and tell everyone Goliath’s the best model ever:
-
The trials ran 400 random tests from the Hellaswag set. There is a random element in the final score. When I plugged in Goliath and Euryale results for 400 trials to compute the probability that Goliath is better at 0-shot Hellaswag vs. Euryale, I got 84% as result (97.83% for vs. Xwin). 84% is good but I was hoping it would be more like 99%. In other words, it’s possible I randomly got a better result for Goliath simply because it got lucky in the choice of which Hellaswag tests it was asked to complete.
-
This was the first time I ever tried running more rigorous tests on LLMs rather than eyeballing it so I may have made mistakes.
-
The numbers can’t be compared with the OpenLLM leaderboard (they use N-shot Hellaswag, forgot what N was), and I noticed they also don’t line up with the llama.cpp link there. OpenLLM leaderboard, I expected it to not be the same but I can’t explain why it doesn’t match with the llama.cpp discussion.
-
Hellaswag is just one benchmark and I looked at the examples inside the tests what it’s actually asking the models and I think 0-shot testing is a bit brutal for these models. It might be a bit unfair for them. I thought the Yi model for example was supposed to be real good.
I would wait until proper benchmarks run by people with more resources can test this out. I don’t plan on myself on updating these numbers.
BUT. It does look promising. I’m hoping more rigorous benchmarks will give some more confidence.
Surprise!.. xwin doing poorly among the 70b. It does bad when I test it vs chat logs too. Shows higher perplexity than yi-34b and a gaggle of other models, including base.
Makes sense the benchmark results would be surprisingly low for goliath. After playing around with it for a few days, I’ve noticed two glaring issues:
- it tends to make slight spelling mistakes
- it hallucinates words They happen rarely, but frequent enough to throw off benchmarks. I’m very positive this can be solved by a quick full finetune over a 100 or so steps, which would align the layers to better work together.
Not sure if you misread, but it’s actually high, i.e. it’s better than Xwin and Euryale it’s made out of (in this particular quick test).
It beat all the 70B models I tested there, although the gap is not super high.
Yes well it should perform much higher than that. Turboderp ran MMLU at 3.25bpw and it was performing worse than other 70B models. I assume quantization further degrades the spelling consistency.
-
I suspect that it behaves sort of as if you have (fictious) Xwin and Eurayle adapter and apply it as catsum which sums the rank (so 2x256 rank would became 512 rank!) but improves the response only a tiny bit.
But in this case we are summing “virtual” rank of two 70b models. The model could be a smidgen smarter, but not that much because a huge chunks of weights are overlapping. We are wasting probably 80b parameters :) that do not contribute.
A correct test has to be done between the Sum and both Xwin and Eurayle to see the actual result. I’ve seen it many times with fine-tuning when I attributed the good response to the fine-tune, but in fact it was mostly due to the prior model, when I A/B and the fine-tune really added only a tiny bit.
I’m honestly more interested in the opposite way to make models smaller while maybe loosing only a smidgen of knowledge.
I’m wondering what that approach could generate if applied to codellama 34b.
A Frankenstein 2x 34B model may be more easy to test, and we have 70B model for reference… Also, imo code generation is a good way to test the behavior of the models and to discriminate some lucky results that “sounds right”.
I tried the model. since I do a lot of historical research I felt like checking it out. I was very disappointed. 1- he answers coldly and succinctly, often getting nervous 2 Even simple answers were 99 per cent wrong. Example I did donande on Hannibal during the Punic war in Spain. the results were demoralising
Started d/l the 3.0bpw quant since it fits on 2 GPU. Now that there are GGUF, I’ll try some bigger ones if the 3 bit does well.
I’m a huge fan of this model. It writes conversationally in a way I’ve not seen any model do before. More than anything, it’s *funny.*. It can be sarcastic, it can be witty, it can do alliteration and meter, and most incredibly, it does so with the illusion of being under its own free will. And it shows rather tells than better than any model I’ve seen before.
A quick question: does it imply that it has 160 layers as a result? Afaik, Falcon has 80 layers (like Llama), and original GPT3 had 96. “Stack more layers” ©
Sooo… is “stacking 1000 phi 1.3b together” is a recipe for AGI? :)
The stacking wasn’t as simple as just taking one model and putting it on top of another. I took multiple layer ranges from each model (except first and last few, which are xwin only) and then stacked those slices on top of each other. In the end, the model has 136 layers because that’s how many I specified in the ranges. Otherwise we’d have a ~135B model (can’t stack input and output layers, they need to be unique and non-repeating).
I’m quite impressed with Goliath so far, so thank you and everyone who helped you make it.
The plan moving forward, in my opinion, is to finetune this model (preferably a full finetune) so that the stitched layers get to know each other better. Hopefully I can find the compute to do that soon :D
My suggestion is that it would be best to try out a 4-bit QLoRA fine-tune first and see how it preforms before spending the money/compute required to do a full fine-tune of such a massive model and have it possibly turn out to be mediocre.
On a related note, I’ve been working on LLM-Shearing lately, which would essentially enable us to shear down a transformer down to much smaller sizes, while preserving accuracy. The reason goliath-120b came to be was an experiment in moving at the opposite direction of shearing. I’m now wondering if we can shear a finetuned Goliath-120B to around ~70B again and end up with a much better 70B model than the existing ones. This would of course be prohibitively expensive, as we’d need to do continued pre-train after the shearing/pruning process. A more likely approach, I believe, is shearing Mistral-7B to ~1.3B and perform continued pretrain on about 100B tokens.
I do think small models have a lot of good uses already and still have plenty of potential, especially ones that were created or fine-tuned for a specific task. I’m also sure we’ll get a general purpose 1-10B parameter model that’s GPT-4 level within 5 years, but I really don’t see any 7B parameter model outperforming a good Llama-2-70B fine-tune before the second half of 2024 unless there’s some big breakthrough. So I’d really encourage you to do some more research in this direction, as there’s plenty of others working on improving small models, but barely anyone doing research on improving large models.
I know that it requires a lot of money and compute to fine-tune large models, that the time and cost increase the larger the model is, and that a majority of people can’t run large models locally. I know those are the main reasons why large models don’t get as much attention as smaller ones, but come on, there’s a new small base model every week now, while I was stuck with LLaMA-65B for like half a year, and then I was stuck with Llama-2 70B for months, and now the only better model (which might not actually be much better, still waiting for the benchmarks…) that was only very recently released is not really even a base model, as it’s a merge of two fine-tuned Llama-2-70B models. Mistral-70B may not even be available to download and won’t be under a free license, and Yi-100B will be completely proprietary and unavailable to download, which leaves no upcoming models besides Llama-3-70B that are likely to outperform Llama-2-70B.
Goliath was created by merging layers of Xwin and Euryale. (from their model card)
The layer ranges used are as follows: - range 0, 16 Xwin - range 8, 24 Euryale - range 17, 32 Xwin - range 25, 40 Euryale - range 33, 48 Xwin - range 41, 56 Euryale - range 49, 64 Xwin - range 57, 72 Euryale - range 65, 80 Xwin
I’m not sure how the model would be reduced to 70B unless it’s through removing layers. Is that what “shearing” is? I don’t understand what is being pruned in that, is it layers?