I have been running Stable Diffusion in a separate partition with Ubuntu 22.04 because my OpenSUSE Tumbleweed installation does not support the ROCm kernels out of the box. I have seen some sporadic attempts on the web from folks looking to get something running on their rolling release distros, like the Arch Linux community.

Just wanna know if anyone else around here has tried something that works with their favourite rolling-release distros?

  • rewarpOP
    link
    fedilink
    English
    arrow-up
    1
    ·
    9 months ago

    Oh yeah. I like Nix. I have nixpkgs running on Tumbleweed too. But yeah, the base OS needs to be stable to be compatible with ROCm stuff, so that’s why I have Ubuntu installed in a separate partition.

    • meteokr@community.adiquaints.moe
      link
      fedilink
      English
      arrow-up
      2
      ·
      9 months ago

      ROCm is userspace isn’t it though? AMDGPU is the kernel driver. My container host doesn’t have any ROCm pkgs installed. Everything is in the container with default kernel setup. I’m sure tumbleweeds kernel is up to date to be able to run it, I just don’t know their runtime pkgs needed.

      • rewarpOP
        link
        fedilink
        English
        arrow-up
        1
        ·
        9 months ago

        I may be at a loss as to how everything fits together. I was trying to get SD running for months on TW before I gave up. Then just booted Ubuntu and it worked. So I always assumed it was something kernel related since upstream only supports the non-rolling distros.

        What I need is probably an up-to-date write-up that is distro specific to TW. Meanwhile, I will probably try to compile ROCm and follow the suggestion in https://slrpnk.net/comment/2780338 and try to get rocm-opencl-runtime working.

        • meteokr@community.adiquaints.moe
          link
          fedilink
          English
          arrow-up
          2
          ·
          edit-2
          9 months ago

          As long as you have a somewhat recent kernel with the opensource AMD driver it should work. Here’s the Containerfile I use:

          FROM docker.io/debian:unstable
          RUN DEBIAN_FRONTEND="noninteractive" apt update && \
                  apt upgrade -y && \
                  apt install -y git python3.10 python3-venv python3-pip rocminfo libgl1-mesa-glx libcairo2-dev libtcmalloc-minimal4
          
          RUN useradd -m sduser
          RUN git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui /dockerx/stable-diffusion-webui && \
                  chown -R sduser:sduser /dockerx/stable-diffusion-webui
          
          WORKDIR /dockerx/stable-diffusion-webui
          USER sduser
          ENV PATH="$PATH:/home/sduser/.local/bin"
          RUN python3 -m venv venv
          ENV REQS_FILE='requirements_versions.txt'
          RUN sed -i 's/#python_cmd="python3"/python_cmd="python3.10"/g' webui-user.sh
          RUN bash -c "source venv/bin/activate && pip install -r requirements_versions.txt"
          EXPOSE 7860/tcp
          VOLUME /dockerx/stable-diffusion-webui/extensions
          VOLUME /dockerx/stable-diffusion-webui/repositories
          VOLUME /dockerx/stable-diffusion-webui/models
          CMD ./webui.sh
          

          Then I just start it with this script.

          sudo podman run -it --rm --name stablediffusion -p 7860:7860 -e COMMANDLINE_ARGS="--api --listen --port 7860 --enable-insecure-extension-access --reinstall-torch --device /dev/dri:dev/dri --privileged --device /dev/kfd:/dev/kfd stablediffweb:latest

          Mount your volumes as needed depending on how you prefer to manage those. This is by no means the best way to do it, but I’ve been running it fine for months now, just rebuilding the container every so often when there’s a big update. The ROCm nerds have settings for running it without sudo but I haven’t swapped over to that yet.

          • rewarpOP
            link
            fedilink
            English
            arrow-up
            1
            ·
            9 months ago

            Whoa this is awesome! Thanks!