There have been multiple accounts created with the sole purpose of posting advertisement posts or replies containing unsolicited advertising.

Accounts which solely post advertisements, or persistently post them may be terminated.

Introducing Stable-Diffusion.cpp (Inference in Pure C/C++)

cross-posted from: lemmy.world/post/3549390

stable-diffusion.cpp

Introducing stable-diffusion.cpp, a pure C/C++ inference engine for Stable Diffusion! This is a really awesome implementation to help speed up home inference of diffusion models.

Tailored for developers and AI enthusiasts, this repository offers a high-performance solution for creating and manipulating images using various quantization techniques and accelerated inference.


Key Features:

  • Efficient Implementation: Utilizing plain C/C++, it operates seamlessly like llama.cpp and is built on the ggml framework.
  • Multiple Precision Support: Choose between 16-bit, 32-bit float, and 4-bit to 8-bit integer quantization.
  • Optimized Performance: Experience memory-efficient CPU inference with AVX, AVX2, and AVX512 support for x86 architectures.
  • Versatile Modes: From original txt2img to img2img modes and negative prompt handling, customize your processing needs.
  • Cross-Platform Compatibility: Runs smoothly on Linux, Mac OS, and Windows.

Getting Started

Cloning, building, and running are made simple, and detailed examples are provided for both text-to-image and image-to-image generation. With an array of options for precision and comprehensive usage guidelines, you can easily adapt the code for your specific project requirements.


<span style="color:#323232;">git clone --recursive https://github.com/leejet/stable-diffusion.cpp
</span><span style="color:#323232;">cd stable-diffusion.cpp
</span>
  • If you have already cloned the repository, you can use the following command to update the repository to the latest code.

<span style="color:#323232;">cd stable-diffusion.cpp
</span><span style="color:#323232;">git pull origin master
</span><span style="color:#323232;">git submodule update
</span>

More Details

  • Plain C/C++ implementation based on ggml, working in the same way as llama.cpp
  • 16-bit, 32-bit float support
  • 4-bit, 5-bit and 8-bit integer quantization support
  • Accelerated memory-efficient CPU inference
    • Only requires ~2.3GB when using txt2img with fp16 precision to generate a 512x512 image
  • AVX, AVX2 and AVX512 support for x86 architectures
  • Original txt2img and img2img mode
  • Negative prompt
  • stable-diffusion-webui style tokenizer (not all the features, only token weighting for now)
  • Sampling method
    • Euler A
  • Supported platforms
    • Linux
    • Mac OS
    • Windows

This is a really exciting repo. I’ll be honest, I don’t think I am as well versed in what’s going on for diffusion inference - but I do know more efficient and effective methods running those models are always welcome by people frequently using diffusers. Especially for those who need to multi-task and maintain performance headroom.

TimeSquirrel ,
@TimeSquirrel@kbin.social avatar

Nice to see C++ getting some love. The kiddies and their Python have taken over.

JackGreenEarth ,

Does this run faster than the python model?

olicvb ,
@olicvb@lemmy.ca avatar

Got a 1.42s generation on the Cpp one and 2.1s with auto1111’s SD (note my torch is outdated, model was converted to fp16).

Though i’m having trouble finding the generated image 😅.

All on the same generation settings, 5800x cpu & 3080 12gb

JackGreenEarth ,

I’d love a 2s generation, it usually takes about 60s with my 1660ti 4gb

olicvb ,
@olicvb@lemmy.ca avatar

oh that’s rough, this was on 512x512 20 steps. I usually do 768x768 50 steps for 33 seconds, gets me better quality without using upscale.

JackGreenEarth ,

768x768 50 steps takes me several minutes

Fubarberry ,
@Fubarberry@sopuli.xyz avatar

Are you sure that it’s using your GPU? That seems way slower than I’d expect.

JackGreenEarth ,

I’m using it on low, because is runs out of memory whenever I try medium or high

  • All
  • Subscribed
  • Moderated
  • Favorites
  • [email protected]
  • random
  • lifeLocal
  • goranko
  • All magazines