airllm fork and some questions #2
Replies: 4 comments 3 replies
|
P.S. I appreciate why you worked AirLLM, and that this is the existing code base for this layer paging approach, but as a long term strategy would it be better to use llamacp as a base and add functionality to that? The reason I am suggesting this is that llamacpp already had the ability to split layers between vRAM & RAM and the logic to decide how to prioritise them, so it should hopefully be reasonably easy to turn that from a static loading action into something more dynamic like RabbitLLM. |
|
Please note that I have thunked further and have updated the original post with some new ideas. |
|
I added the following points to #3 after Manuel commented that the current performance is 4mins/token: As you clearly realise 4 minutes for 1 token is unusable (and slower than CPU inference). My guess is that swapping layers in and out of memory takes substantially longer than the time for a single layer to execute. But in essence my suggestions are as follows:
Narrower Use CasesThe net result of the above is a guess that we probably need to narrow down the use cases where this can be beneficial.
Development strategyI agree with your comment on not developing an API until performance gains have been proven. But at that point you should probably ask whether it makes sense:
|
|
Since I wanted to develop these features using other techniques, I created this project, which outperforms Ollama and vLLM. So I'm leaving this research repository here https://github.com/ferrumox/fox |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
I don't blame you for forking airllm which feels abandoned. Well done for taking the plunge and committing the time.
A few questions...
New models implement new inference techniques and e.g. llamacp gets updated to improve performance and handle these new model internals in a cleverer way.
Qwen definitely has some of these internal techniques (dual attention if I remember). Does RabbitLLM include all similar updates and fully support and optimise these?
Similarly MoE models limit what gets executed using a technique other than layers. Does RabbitLLM fully support and optimise MoE models?
Does it only support 70B models in 4GB vRAM or is it more flexible about model and vRAM size? (I have a 6GB a3000 and I desperately want to do local intense with a decent model with reasonable performance.)
Does it manage normal RAM to cache or pre-load shards ready to be loaded into vRAM? Having now read the code, I know that it starts to pre-fetch the next layer from disk, but e.g
What llamacp or LM studio or ollama options does it support? K/V cache quantisation feels the most important because of the vRAM usage implications.
For unified memory systems (e.g. with Apple silicon or AMD Ryzen AI CPUs), can it use exactly the same techniques to keep only the executing layer in unified memory?
What capabilities are there to analyse and predict and report on the likely performance of a particular model on particular hardware?
I don't want to spend time testing models when most of them will be unsuitable. And for those that are suitable, I would like to know whether I can get 90% of the quality with 5x the throughout with LLM A compared to LLM B e.g. because model A can have preloading of layers whilst model B can't. Ideally this would include performance comparisons between paged models and models that fit entirely into vRAM and don't need to be pushed and including paged models with some layers being CPU inference.
Do I need to prepare models locally and how long does that take? Can we have prepared models uploaded to HF to be used without local effort?
Do I need to write code to use RabbitLLM or can I load a model (like I can with llamacp or ollama or LM Studio) and call it with an Anthropic or OpenAI API? This is the biggest use case, so for significant take up of RabbitLLM, this would need to be supported.
And is there a docker image that I can use instead of Ollama?Dockerfile provided. But without an HTTP server, much less useful.Thanks again for taking this on.
S
All reactions