As the title says, i started by selfhosting OpenWebUI including Ollama on my RIG. I have been pretty happy but the more i dig into this stuff, more i understand that i am doing it wrong and i definitely need to switch to llama.cpp / ik_llama.cpp.

But i have a few questions…

  1. I want a web based LLM chat GUI, because that’s my 80% usage for AI. If i go with llama.cpp, do i need to ditch OpenWebUI as well? Is there a better UI? Do i need an UI?

  2. i am currently hosting it all with a docker compose file. Is this still doable if i switch? I can go bare-metal (Gentoo server, good skills on my side) but it’s the maintenance part, a “podman compose pull” is just easier… or i am lazy.

  3. the server is headless and always accessed remotely via web or ssh, just to be clear.

My hardware is a NVIDIA RTX A4000 16GB VRAM on a I7-8700@3200Ghz with 64GB system RAM (shared with far too many services).

      • doodlebob@lemmy.world
        cake
        link
        fedilink
        English
        arrow-up
        1
        ·
        1 day ago

        It sure can! And it supports SO many backends so you can run llama.cpp (pulled directly from the repo and auto updated so you have access to all of the new features right away)

  • fozid@feddit.uk
    link
    fedilink
    English
    arrow-up
    10
    ·
    6 days ago

    Llama.cpp has its own built-in web UI that is fairly decent. Not as full featured as open web UI, but depends what you’re after.

    • zutto@lemmy.fedi.zutto.fi
      link
      fedilink
      English
      arrow-up
      1
      ·
      5 days ago

      It’s surprisingly good, I switched from OWUI to it. Supports MCP servers, has chats and history, can run llama.cpp built in tools, and is super light weight.

      So I’d recommend testing this at least!

  • ffhein@lemmy.world
    link
    fedilink
    English
    arrow-up
    1
    ·
    4 days ago

    The main reason anyone would “need to” switch to llama.cpp is if they want to do partial offloading, i.e. split the model between GPU and CPU. This works quite well for MoE models, but you didn’t say anything about this, so I’m just wondering what your goals are.

    Absolutely nothing wrong with switching to llama.cpp, I also use it, but that’s because I occasionally want to run models larger than my VRAM. It has official docker images and a server with both API access and a decent web-UI.

    If you’re only going to run models which fully fit in VRAM, then tabbyAPI is also a good option. However, it uses Exl3 format instead of gguf, so llama.cpp probably makes more sense if you already have a lot of models in gguf format. tabby also comes with docker files and API support, so either should be quite easy to integrate with your setup.

  • OhneHose@feddit.org
    link
    fedilink
    English
    arrow-up
    7
    ·
    6 days ago

    I’d not use ollama, it’s basically just a fancy wrapper around lama.cpp.

    There’s also modules/docker containers to hot swap models with lama.cpp

    My model hosting setup is: Lama.cpp -> Open web UI

    Lama.cpp is running in a local shell on my Mac Mini, since setting up GPU support with metal is (or was?) a pain. And open web UI sits in a docker with a local storage mounted so it have persistence when updating or moving the docker.

    16gigs vram however ain’t too much, you’ll be fairly limited to fairly low quants. It will be reasonably fast tho. If you can use most of your system ram you could go and host f.e. qwen 3.6 bf8(~56gb) or bf4 (~30gb). It would be slower but you also gain a lot of usability from that.

    Or you host two models a smaller one on the GPU and bigger one with system ram so you can switch between “knowledge” and speed.

    Using lama.cpp you’ll have to take a look at huggingface & use gguf models.

  • MalReynolds@slrpnk.net
    link
    fedilink
    English
    arrow-up
    3
    ·
    6 days ago

    OpenWebUI works with plain llama.cpp

    16 is a bit small so try a MoE (e.g. QWEN 3.6 35BA3B) model and put experts on the CPU (although DDR4 may be underwhelming) which you can do with llama ( with offloading and drafting for T/s) but not ollama (spitting noise). Here’s a good starting point. You’ll likely get 60+T/s on say a 6 bit quant.

    You can use a container approach, but llama.cpp is a bit of a moving target, with new cool features coming along regularly to support new models. I build it in a distrobox and running it is a simple call. When it doesn’t want to build anymore because dependencies have changed too much, I just spin up a new distrobox and leave the old one there for older models. I find it a good balance between flexibility and ease of maintenance, and technically it’s also a container approach. Take notes so you know how to set up the new one.