DiffuGen

by CLOUDWERX-DEV
Verified

local-only server

The server can only run on the client’s local machine because it depends on local resources.

Integrations

  • Powers the optimized Stable Diffusion backend through the stable-diffusion.cpp implementation

  • Package manager used for installing dependencies on Windows systems during the setup process

  • Desktop environment used during the development of DiffuGen on Linux Mint

DiffuGen - MCP 통합을 통한 고급 로컬 이미지 생성기

새로운 기능 : 이제 OpenAPI 서버 지원 및 OpenWebUI OpenAPI 도구(OWUI 버전 0.60.0 필요) 통합을 통해 채팅 인터페이스에서 이미지를 원활하게 생성하고 표시할 수 있습니다! OpenAPI는 MCP 서버와 분리되어 있어 자체 프로젝트에 바로 적용할 수 있습니다!

📃 목차

🚀 소개

DiffuGen은 최첨단 AI 모델을 개발 워크플로에 직접 적용하는 강력한 MCP 기반 이미지 생성 시스템입니다. Flux 모델(Flux Schnell, Flux Dev)과 Stable Diffusion 모델(SDXL, SD3, SD1.5)을 하나의 인터페이스로 완벽하게 통합하여 도구를 전환하지 않고도 각 모델군의 고유한 강점을 활용할 수 있도록 합니다. 포괄적인 매개변수 제어 및 다중 GPU 지원을 통해 DiffuGen은 일반 하드웨어에서의 신속한 컨셉 스케치부터 고성능 시스템에서 프로덕션급 비주얼까지 확장 가능합니다.

고도로 최적화된 stable-diffusion.cpp 구현을 기반으로 구축된 DiffuGen은 고품질 출력을 유지하면서도 적당한 하드웨어에서도 뛰어난 성능을 제공합니다.

🧠 MCP와 DiffuGen 이해하기

MCP란 무엇인가요?

MCP(Model Context Protocol)는 LLM(Large Language Models)이 사용자 지정 도구 및 서비스에 액세스할 수 있도록 하는 프로토콜입니다. 간단히 말해, MCP 클라이언트(예: Cursor, Windsurf, Roo Code, Cline)는 MCP 서버에 요청을 보내 MCP 서버가 제공하는 도구에 액세스할 수 있습니다.

MCP 서버로서의 DiffuGen

DiffuGen은 텍스트-이미지 생성 기능을 제공하는 MCP 서버 역할을 합니다. MCP 프로토콜을 구현하여 호환되는 IDE가 생성 요청을 보내고 생성된 이미지를 수신할 수 있도록 합니다.

서버는 두 가지 주요 도구를 제공합니다.

  1. generate_stable_diffusion_image : 안정 확산 모델로 생성
  2. generate_flux_image : Flux 모델로 생성

기술 아키텍처

DiffuGen은 몇 가지 핵심 구성 요소로 구성됩니다.

  • setup-diffugen.sh : 완전한 설치 유틸리티 및 모델 다운로더 및 관리자
  • diffugen.py : MCP 서버 기능을 구현하고 생성 도구를 정의하는 핵심 Python 스크립트
  • diffugen.sh : 환경을 설정하고 Python 서버를 시작하는 쉘 스크립트 실행기
  • diffugen.json : 다양한 IDE와 MCP 통합을 위한 템플릿 구성 파일(IDE의 MCP 구성에 복사됨)
  • stable-diffusion.cpp : 실제 이미지 생성에 사용되는 Stable Diffusion의 최적화된 C++ 구현

이 시스템은 다음과 같이 작동합니다.

  1. MCP 클라이언트로부터 프롬프트 및 매개변수 데이터 수신
  2. Python 서버를 통한 요청 처리
  3. 적절한 매개변수를 사용하여 stable-diffusion.cpp 바이너리 호출
  4. 생성된 이미지를 구성된 출력 디렉토리에 저장
  5. 생성된 이미지의 경로 및 메타데이터를 클라이언트에 반환

stable-diffusion.cpp에 대하여

stable-diffusion.cpp 는 안정 확산 알고리즘의 고도로 최적화된 C++ 구현입니다. Python 참조 구현과 비교하여 다음과 같은 기능을 제공합니다.

  • 훨씬 빠른 추론 속도(최대 3~4배 더 빠름)
  • 메모리 사용량 감소(최소 4GB VRAM이 있는 GPU에서 작동)
  • NVIDIA GPU에 최적화된 CUDA 커널
  • 다양한 샘플링 방법 및 모델 형식 지원
  • 더 나은 성능을 위한 모델 양자화 지원
  • 핵심 생성 프로세스에 대한 Python 종속성 없음

이를 통해 DiffuGen은 적당한 하드웨어 설정에서도 뛰어난 성능으로 고품질 이미지를 생성할 수 있습니다.

✨ 특징

  • 다중 모델 지원 : Flux Schnell, Flux Dev, SDXL, SD3, SD1.5를 포함한 다양한 모델을 사용하여 이미지 생성
  • MCP 통합 : MCP를 지원하는 IDE(Cursor, Windsurf, Roo Code, Cline 등)와 원활하게 통합됩니다.
  • OpenAPI 서버 : 이미지 생성 기능에 대한 직접 HTTP 액세스를 위한 추가 REST API 인터페이스
  • 크로스 플랫폼 : Linux, macOS 및 Windows에서 작동합니다(네이티브 또는 WSL을 통해)
  • 매개변수 제어 : 다음을 제어하여 세대를 미세하게 조정합니다.
    • 이미지 크기(너비/높이)
    • 샘플링 단계
    • CFG 스케일
    • 시드 값
    • 부정적 프롬프트(SD 모델에만 해당, Flux는 부정적 프롬프트를 지원하지 않습니다.)
    • 샘플링 방법
  • CUDA 가속 : GPU 가속을 활용하여 더 빠른 이미지 생성
  • 자연어 인터페이스 : 간단한 자연어 명령을 사용하여 이미지 생성
  • 스마트 오류 복구 : 운영 인식 복구 절차를 통한 강력한 오류 처리
  • 사용자 친화적 설정 : 인터럽트 처리가 개선된 대화형 설정 스크립트
  • 리소스 추적 : 효율적인 정리를 위한 세션 인식 리소스 관리
  • 사용자 정의 가능한 인터페이스 : 사용자 정의 ANSI 아트 로고 및 시각적 향상 지원

💻 시스템 요구 사항

최소 요구 사항:

  • CPU : 4코어 프로세서(Intel i5/AMD Ryzen 5 또는 동급)
  • RAM : 8GB 시스템 메모리
  • 저장 공간 : 5GB 여유 디스크 공간(더 빠른 모델 로딩을 위해 SSD 권장)
  • Python : 3.8 이상
  • GPU : 통합 그래픽 또는 보급형 전용 GPU(옵션)
  • 네트워크 : 모델 다운로드를 위한 광대역 연결(5Mbps 이상)

권장 요구 사항:

  • CPU : 8코어 이상 프로세서(Intel i7/i9 또는 AMD Ryzen 7/9)
  • RAM : 16GB 이상 시스템 메모리
  • GPU : 6GB 이상 VRAM을 탑재한 NVIDIA GPU(최적의 성능을 위해 RTX 2060 이상)
  • 저장공간 : 20GB 이상의 여유 SSD 공간
  • Python : 3.10 이상(3.11이 가장 좋은 성능을 제공함)
  • 네트워크 : 효율적인 모델 다운로드를 위한 고속 연결(20Mbps 이상)

📥 설치

자동 설치(권장)

DiffuGen을 설치하는 가장 쉬운 방법은 제공된 설치 스크립트를 사용하는 것입니다.

지엑스피1

대화형 프롬프트에 따라 설치를 완료하세요.

설정 스크립트는 다음을 수행합니다.

  • 필요한 종속성 설치
  • stable-diffusion.cpp를 복제하고 빌드합니다.
  • Python 가상 환경 설정
  • 선택한 모델 다운로드 (참고: 일부 모델에는 Clip\VAE 모델도 필요합니다)
  • 시스템의 파일 경로 구성

수동 설치

수동으로 설치하려면 다음 단계를 따르세요.

  1. 저장소를 복제합니다.
git clone https://github.com/CLOUDWERX-DEV/diffugen.git cd DiffuGen git clone --recursive https://github.com/leejet/stable-diffusion.cpp
  1. stable-diffusion.cpp를 빌드합니다.
cd stable-diffusion.cpp mkdir -p build && cd build

CUDA를 사용하면:

cmake .. -DCMAKE_BUILD_TYPE=Release -DSD_CUDA=ON make -j$(nproc) cd ../..

CUDA 없이:

cmake .. -DCMAKE_BUILD_TYPE=Release make -j$(nproc) cd ../..
  1. Python 가상 환경을 만들고 활성화하세요.
python3 -m venv diffugen_env source diffugen_env/bin/activate # On Windows: diffugen_env\Scripts\activate pip install -r requirements.txt
  1. 필요한 모델을 다운로드하세요(구조는 아래와 같습니다):
stable-diffusion.cpp/models/ ├── ae.sft # VAE model ├── clip_l.safetensors # CLIP model ├── flux/ │ ├── flux1-schnell-q8_0.gguf # Flux Schnell model (default) │ └── flux1-dev-q8_0.gguf # Flux Dev model ├── sd3-medium.safetensors # SD3 model ├── sdxl-1.0-base.safetensors # SDXL model ├── sdxl_vae-fp16-fix.safetensors # SDXL VAE ├── t5xxl_fp16.safetensors # T5 model └── v1-5-pruned-emaonly.safetensors # SD1.5 model

다음 소스에서 모델을 다운로드할 수 있습니다.

# Create model directories mkdir -p stable-diffusion.cpp/models/flux # Flux models # Flux Schnell - Fast generation model (Q8 Quantized,requires t5xxl, clip-l, vae) curl -L https://huggingface.co/leejet/FLUX.1-schnell-gguf/resolve/main/flux1-schnell-q8_0.gguf -o stable-diffusion.cpp/models/flux/flux1-schnell-q8_0.gguf # Flux Dev - Development model with better quality (Q8 QUantized, requires t5xxl, clip-l, vae) curl -L https://huggingface.co/leejet/FLUX.1-dev-gguf/resolve/main/flux1-dev-q8_0.gguf -o stable-diffusion.cpp/models/flux/flux1-dev-q8_0.gguf # Required models for Flux # T5XXL Text Encoder curl -L https://huggingface.co/Sanami/flux1-dev-gguf/resolve/main/t5xxl_fp16.safetensors -o stable-diffusion.cpp/models/t5xxl_fp16.safetensors # CLIP-L Text Encoder curl -L https://huggingface.co/Sanami/flux1-dev-gguf/resolve/main/clip_l.safetensors -o stable-diffusion.cpp/models/clip_l.safetensors # VAE for image decoding curl -L https://huggingface.co/pretentioushorsefly/flux-models/resolve/main/models/vae/ae.safetensors -o stable-diffusion.cpp/models/ae.sft # Stable Diffusion models # SDXL 1.0 Base Model (requires sdxl-vae) curl -L https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0.safetensors -o stable-diffusion.cpp/models/sd_xl_base_1.0.safetensors # SDXL VAE (required for SDXL) curl -L https://huggingface.co/madebyollin/sdxl-vae-fp16-fix/resolve/main/sdxl_vae-fp16-fix.safetensors -o stable-diffusion.cpp/models/sdxl_vae-fp16-fix.safetensors # Stable Diffusion 1.5 (standalone) curl -L https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors -o stable-diffusion.cpp/models/v1-5-pruned-emaonly.safetensors # Stable Diffusion 3 Medium (standalone) curl -L https://huggingface.co/leo009/stable-diffusion-3-medium/resolve/main/sd3_medium_incl_clips_t5xxlfp16.safetensors -o stable-diffusion.cpp/models/sd3_medium_incl_clips_t5xxlfp16.safetensors

참고: 인터넷 연결 상태에 따라 모델 다운로드 시간이 오래 걸릴 수 있습니다. SDXL 모델은 약 6GB, SD3는 약 13GB, SD1.5는 약 4GB, Flux 모델은 각각 8~13GB입니다.

  1. 구성에서 파일 경로를 업데이트합니다.

쉘 스크립트를 실행 파일로 설정

chmod +x diffugen.sh

구성 방식 : DiffuGen은 모든 설정의 원본으로 단일 구성 파일( diffugen.json )을 사용합니다. 워크플로는 다음과 같습니다.

  1. 원하는 설정으로 DiffuGen 루트 디렉토리의 diffugen.json 편집하세요.
  2. setup_diffugen.sh 에서 옵션 5를 실행하여 이 파일의 경로를 자동으로 업데이트합니다.
  3. diffugen.json 의 내용을 IDE의 MCP 구성 파일에 복사합니다.

이 파일에는 필요한 모든 설정이 포함되어 있습니다.

  • 파일 경로(명령, SD_CPP_PATH, 모델_디렉토리, 출력_디렉토리)
  • 기본 모델 매개변수(단계, cfg_scale, sampling_method)
  • VRAM 사용 설정
  • IDE 통합을 위한 메타데이터
{ "mcpServers": { "diffugen": { "command": "/home/cloudwerxlab/Desktop/Servers/MCP/Tools/DiffuGen/diffugen.sh", "args": [], "env": { "CUDA_VISIBLE_DEVICES": "0", "SD_CPP_PATH": "path/to/stable-diffusion.cpp", "default_model": "flux-schnell" }, "resources": { "models_dir": "path/to/stable-diffusion.cpp/models", "output_dir": "path/to/outputs", "vram_usage": "adaptive" }, "metadata": { "name": "DiffuGen", "version": "1.0", "description": "Your AI art studio embedded directly in code. Generate, iterate, and perfect visual concepts through this powerful MCP server for Cursor, Windsurf, and other compatible IDEs, utilizing cutting-edge Flux and Stable Diffusion models without disrupting your development process.", "author": "CLOUDWERX LAB", "homepage": "https://github.com/CLOUDWERX-DEV/diffugen", "usage": "Generate images using two primary methods:\n1. Standard generation: 'generate an image of [description]' with optional parameters:\n - model: Choose from flux-schnell (default), flux-dev, sdxl, sd3, sd15\n - dimensions: width and height (default: 512x512)\n - steps: Number of diffusion steps (default: 20, lower for faster generation)\n - cfg_scale: Guidance scale (default: 7.0, lower for more creative freedom)\n - seed: For reproducible results (-1 for random)\n - sampling_method: euler, euler_a (default), heun, dpm2, dpm++2s_a, dpm++2m, dpm++2mv2, lcm\n - negative_prompt: Specify elements to avoid in the image\n2. Quick Flux generation: 'generate a flux image of [description]' for faster results with fewer steps (default: 4)" }, "cursorOptions": { "autoApprove": true, "category": "Image Generation", "icon": "🖼️", "displayName": "DiffuGen" }, "windsurfOptions": { "displayName": "DiffuGen", "icon": "🖼️", "category": "Creative Tools" }, "default_params": { "steps": { "flux-schnell": 8, "flux-dev": 20, "sdxl": 20, "sd3": 20, "sd15": 20 }, "cfg_scale": { "flux-schnell": 1.0, "flux-dev": 1.0, "sdxl": 7.0, "sd3": 7.0, "sd15": 7.0 }, "sampling_method": { "flux-schnell": "euler", "flux-dev": "euler", "sdxl": "euler", "sd3": "euler", "sd15": "euler" } } } } }

🔧 IDE 설정 지침

커서 설정

  1. 커서 다운로드 및 설치
  2. 커서 설정 > MCP로 이동하여 "새 글로벌 MCP 서버 추가"를 클릭하세요.
  3. DiffuGen의 diffugen.json 파일의 내용을 복사하여 ~/.cursor/mcp.json 에 붙여넣습니다.
  4. 설정 > MCP에서 MCP 서버 새로 고침
  5. AI 채팅 패널을 열고(Ctrl+K 또는 Cmd+K) 이미지 생성을 요청하여 DiffuGen을 사용하세요.

Windsurf 설정

  1. Windsurf를 다운로드하고 설치하세요
  2. Windsurf > 설정 > 고급 설정 또는 명령 팔레트 > Windsurf 설정 페이지 열기로 이동합니다.
  3. Cascade 섹션으로 스크롤하여 "서버 추가" > "사용자 지정 서버 추가 +"를 클릭하세요.
  4. DiffuGen의 diffugen.json 파일의 내용을 복사하여 ~/.codeium/windsurf/mcp_config.json 에 붙여넣습니다.
  5. Cascade 채팅 인터페이스를 통해 DiffuGen을 사용하세요

Roo Code로 설정하기

  1. Roo Code를 다운로드하고 설치하세요
  2. Roo Code에 대한 MCP 구성 파일을 찾으세요
  3. DiffuGen의 diffugen.json 파일 내용을 Roo Code의 MCP 구성에 복사합니다.
  4. AI 어시스턴트 기능을 통해 DiffuGen을 활용하세요

Cline 설정

  1. Cline을 다운로드하고 설치하세요
  2. DiffuGen의 diffugen.json 파일 내용을 Cline의 MCP 설정으로 복사합니다.
  3. AI 채팅이나 명령 인터페이스를 통해 DiffuGen을 사용하세요

Anthropic Console에서 Claude 설정하기

Claude는 시스템에 MCP 서버로 설정한 경우 DiffuGen을 사용할 수 있습니다. Claude에게 이미지 생성을 요청할 때는 DiffuGen 사용에 대해 구체적으로 설명하고 사용할 매개변수를 제공해야 합니다.

🎮 사용법

DiffuGen 서버를 수동으로 시작하려면:

cd /path/to/diffugen ./diffugen.sh

또는 Python을 직접 사용하는 경우:

cd /path/to/diffugen python -m diffugen

서버가 성공적으로 시작되면 DiffuGen ready 메시지가 표시됩니다.

OpenAPI 서버 사용

OpenAPI 서버는 DiffuGen의 이미지 생성 기능에 HTTP를 통해 직접 액세스할 수 있는 REST API 인터페이스를 제공합니다. 이는 MCP 통합과 더불어 다음과 같은 경우에 유용합니다.

  • 직접 HTTP API 액세스
  • MCP를 지원하지 않는 다른 도구와의 통합
  • 프로그래밍 방식 액세스가 필요한 사용자 정의 애플리케이션

자세한 설정 지침과 고급 구성 옵션은 OpenAPI 통합 가이드를 참조하세요.

OpenAPI 서버를 시작하려면:

python diffugen_openapi.py

필요한 경우 다른 호스트 또는 포트를 사용하도록 서버를 구성할 수 있습니다. 기본적으로 다음에서 실행됩니다.

  • 호스트: 0.0.0.0
  • 포트: 8080

서버는 http://0.0.0.0:8080 에서 이용할 수 있으며, 대화형 설명서는 http://0.0.0.0:8080/docs 에서 확인할 수 있습니다.

생성된 이미지는 기본적으로 /output 디렉터리에 저장됩니다. 이 디렉터리에 접근할 수 없는 경우, 서버는 현재 작업 디렉터리에 자동으로 output 디렉터리를 생성합니다. 이미지는 /images 엔드포인트를 통해 제공됩니다.

OpenWebUI 통합

  1. OpenWebUI 설정(기어 아이콘)을 엽니다.
  2. "도구" 섹션으로 이동하세요
  3. 새로운 도구 서버를 추가하려면 "+" 버튼을 클릭하세요.
  4. 다음 세부 정보를 입력하세요.
  5. "저장"을 클릭하세요

DiffuGen을 추가하면 채팅 인터페이스에서 도구 아이콘을 클릭하면 사용 가능한 도구 목록에 나타납니다. 다음과 같은 엔드포인트를 사용할 수 있습니다.

  • generate_stable_image_generate_stable_post : 안정 확산으로 생성
  • generate_flux_image_endpoint_generate_flux_post : Flux 모델로 생성
  • list_models_models_get : 사용 가능한 모델 나열

curl을 사용한 예:

curl -X POST "http://0.0.0.0:5199/generate/flux" \ -H "Content-Type: application/json" \ -d '{"prompt": "A beautiful sunset", "model": "flux-schnell"}'

Python 요청을 사용한 예:

import requests response = requests.post( "http://0.0.0.0:5199/generate/flux", json={ "prompt": "A beautiful sunset", "model": "flux-schnell" } ) result = response.json()

모델별 기본 매개변수

각 모델에는 최상의 결과를 위해 최적화된 특정 기본 매개변수가 있습니다.

모델기본 단계기본 CFG 스케일가장 적합한
플럭스-슈넬81.0빠른 초안, 개념적 이미지
플럭스-디바이스201.0더 나은 품질의 플럭스 생성
SDXL207.0고품질의 상세 이미지
SD3207.0좋은 품질의 최신 세대
SD15207.0클래식 베이스라인 모델

이러한 기본 매개변수는 IDE의 MCP 구성 파일에 default_params 섹션을 추가하여 사용자 정의할 수 있습니다.

"default_params": { "steps": { "flux-schnell": 12, // Customize steps for better quality "sdxl": 30 // Increase steps for more detailed SDXL images }, "cfg_scale": { "sd15": 9.0 // Higher cfg_scale for stronger prompt adherence } }

재정의하려는 매개변수만 지정하면 됩니다. 지정하지 않은 값은 기본 제공 기본값을 사용합니다.

참고 : 모델별 명령줄 예제와 권장 사항은 모델별 매개변수 권장 사항 섹션을 참조하세요.

LLM에 이미지 생성 요청하기

다음은 DiffuGen을 사용하여 AI 비서에게 이미지를 생성하도록 요청하는 방법의 예입니다.

기본 요청:

Generate an image of a cat playing with yarn
Create a picture of a futuristic cityscape with flying cars

모델 사양:

Generate an image of a medieval castle using the sdxl model
Create a flux image of a sunset over mountains

고급 매개변수 사용:

Generate an image of a cyberpunk street scene, model=flux-dev, width=768, height=512, steps=25, cfg_scale=1.0, seed=42
Create an illustration of a fantasy character with model=sd15, width=512, height=768, steps=30, cfg_scale=7.5, sampling_method=dpm++2m, negative_prompt=blurry, low quality, distorted

매개변수 참조

DiffuGen은 다음의 기본 구문을 사용하여 명령줄에서 사용할 수 있습니다.

./diffugen.sh "Your prompt here" [options]

예:

./diffugen.sh "A futuristic cityscape with flying cars"

이 명령은 기본 매개변수(flux-schnell 모델, 512x512 해상도 등)를 사용하여 이미지를 생성하고 구성된 출력 디렉토리에 저장합니다.

DiffuGen에서 사용할 수 있는 매개변수는 다음과 같습니다(MCP 인터페이스와 명령줄 모두에 적용 가능):

매개변수설명기본유효한 값명령줄 플래그
모델생성에 사용할 모델플럭스-슈넬/sd15플럭스-schnell, 플럭스-개발, sdxl, sd3, sd15--모델
너비픽셀 단위의 이미지 너비512256-2048--너비
픽셀 단위의 이미지 높이512256-2048--키
단계확산 단계 수모델별1-100--단계
cfg_scale분류자 없는 안내 척도모델별0.1-30.0--cfg-스케일
씨앗재현성을 위한 무작위 시드-1 (무작위)-1 또는 임의의 정수--씨앗
샘플링 방법확산 샘플링 방법오일러오일러, 오일러_a, 휴언, dpm2, dpm++2s_a, dpm++2m, dpm++2mv2, lcm--샘플링 방법
부정적 프롬프트이미지에서 피해야 할 요소"" (비어 있는)모든 텍스트 문자열--부정적 프롬프트
출력_디렉토리이미지를 저장할 디렉토리구성 정의유효한 경로--출력-디렉토리

이러한 매개변수는 AI 비서에게 이미지 생성을 요청하거나 명령줄 인터페이스를 사용할 때 지정할 수 있습니다. 매개변수는 인터페이스에 따라 다른 형식으로 전달됩니다.

  • MCP/AI Assistant에서 : parameter=value (예: model=sdxl, width=768, height=512 )
  • 명령줄에서 : --parameter value (예: --model sdxl --width 768 --height 512 )

기본값은 대기 시간을 최소화하면서 바로 좋은 결과를 얻을 수 있도록 선택되었습니다. 더 높은 품질의 이미지를 얻으려면 단계를 늘리거나 sdxl과 같은 모델로 전환하는 것을 고려해 보세요.

모델별 매개변수 권장 사항

참고 : 이러한 권장 사항은 모델별 기본 매개변수 섹션을 기반으로 하며 실제 예를 제공합니다.

명령줄을 통해 특정 모델을 사용할 때 최상의 결과를 얻으려면:

플럭스 모델(flux-schnell, flux-dev)

# Flux-Schnell (fastest) ./diffugen.sh "Vibrant colorful abstract painting" \ --model flux-schnell \ --cfg-scale 1.0 \ --sampling-method euler \ --steps 8 # Flux-Dev (better quality) ./diffugen.sh "Detailed fantasy landscape with mountains and castles" \ --model flux-dev \ --cfg-scale 1.0 \ --sampling-method euler \ --steps 20

표준 SD 모델(sdxl, sd3, sd15)

# SDXL (highest quality) ./diffugen.sh "Hyperrealistic portrait of a Celtic warrior" \ --model sdxl \ --cfg-scale 7.0 \ --sampling-method dpm++2m \ --steps 30 # SD15 (classic model) ./diffugen.sh "Photorealistic landscape at sunset" \ --model sd15 \ --cfg-scale 7.0 \ --sampling-method euler_a \ --steps 20

기본 매개변수 변경

DiffuGen의 명령줄 인터페이스는 구성에서 달리 지정하지 않은 경우 다음 기본값을 사용합니다.

  • 기본 모델: 지정하지 않으면 함수에 적합한 모델이 사용됩니다(Flux 함수의 경우 flux-schnell, SD 함수의 경우 sd15).
  • 기본 샘플링 방법: euler (Flux 모델에 가장 적합)
  • 기본 CFG 스케일: Flux 모델의 경우 1.0 , 표준 SD 모델의 경우 7.0
  • 기본 단계: flux-schnell의 경우 8 , 기타 모델의 경우 20
  • 기본 크기: 512x512픽셀

명령줄을 사용할 때는 기본값을 재정의하려는 경우가 아니면 이러한 매개변수를 지정할 필요가 없습니다. 특정 매개변수를 자주 사용하는 경우, 각 명령줄에 지정하는 대신 구성 파일에 추가하는 것이 좋습니다.

명령줄 사용 참고 사항

  • 생성된 이미지는 타임스탬프와 매개변수를 기반으로 파일 이름으로 구성된 출력 디렉토리에 저장됩니다.
  • 명령을 여러 번 실행하여 여러 이미지를 순서대로 생성할 수 있습니다.
  • 일괄 처리를 위해 다른 매개변수로 DiffuGen을 호출하는 셸 스크립트를 만드는 것을 고려하세요.
  • 사용 가능한 모든 명령줄 옵션을 보려면 ./diffugen.sh --help 실행하세요.
  • 동일한 엔진이 MCP 인터페이스와 명령줄 도구 모두에 동력을 제공하므로 품질과 기능이 동일합니다.

⚙️ 구성

구성 접근 방식

DiffuGen은 diffugen.json 파일을 중심으로 단일 구성 방식을 사용합니다.

  1. 기본 구성 파일 : DiffuGen 루트 디렉토리의 diffugen.json 모든 설정에 대한 유일한 진실의 원천입니다.
  2. IDE 통합 : diffugen.json 의 내용을 IDE의 MCP 구성 파일에 복사합니다.
  3. 환경 변수 : 고급 사용을 위해 환경 변수를 사용하여 설정을 재정의할 수 있습니다.

환경 변수 재정의

고급 사용을 위해 환경 변수를 사용하여 설정을 재정의할 수 있습니다.

  • SD_CPP_PATH : stable-diffusion.cpp 경로를 재정의합니다.
  • DIFFUGEN_OUTPUT_DIR : 출력 디렉토리를 재정의합니다.
  • DIFFUGEN_DEFAULT_MODEL : 기본 모델을 재정의합니다.
  • DIFFUGEN_VRAM_USAGE : VRAM 사용 설정 재정의
  • CUDA_VISIBLE_DEVICES : 생성에 사용되는 GPU를 제어합니다.

IDE별 구성 설정

DiffuGen을 사용하면 각 IDE의 MCP 구성에서 환경 변수를 사용하여 IDE마다 다른 구성을 적용할 수 있습니다. 이를 통해 단일 기본 diffugen.json 파일을 유지하면서 IDE별로 매개변수를 사용자 지정할 수 있습니다.

구성 우선순위는 다음과 같이 작동합니다.

  1. 환경 변수(가장 높은 우선순위)
  2. 로컬 diffugen.json 파일의 설정(기본 구성)

예: 다른 IDE에 대한 다른 출력 디렉토리

커서의 경우( ~/.cursor/mcp.json ):

"env": { "CUDA_VISIBLE_DEVICES": "0", "SD_CPP_PATH": "/path/to/stable-diffusion.cpp", "DIFFUGEN_OUTPUT_DIR": "/cursor/specific/output/directory", "default_model": "flux-schnell" }

Windsurf의 경우( ~/.codeium/windsurf/mcp_config.json ):

"env": { "CUDA_VISIBLE_DEVICES": "0", "SD_CPP_PATH": "/path/to/stable-diffusion.cpp", "DIFFUGEN_OUTPUT_DIR": "/windsurf/specific/output/directory", "default_model": "sdxl" }

예: 다양한 기본 모델 및 VRAM 설정

"env": { "CUDA_VISIBLE_DEVICES": "0", "SD_CPP_PATH": "/path/to/stable-diffusion.cpp", "default_model": "flux-dev", "DIFFUGEN_VRAM_USAGE": "maximum" }

이 접근 방식을 사용하면 동일한 기본 설치를 사용하면서 IDE별로 DiffuGen의 동작을 사용자 지정할 수 있습니다.

주요 구성 요소

명령과 인수

  • 명령어 : diffugen.sh 스크립트의 전체 경로(절대 경로여야 함)
  • args : 스크립트에 전달할 추가 명령줄 인수(일반적으로 비어 있음)

환경 변수

  • CUDA_VISIBLE_DEVICES : 생성에 사용되는 GPU를 제어합니다.
    • "0" : 첫 번째 GPU만 사용
    • "1" : 두 번째 GPU만 사용
    • "0,1" : 첫 번째와 두 번째 GPU를 모두 사용
    • "-1" : CUDA를 비활성화하고 CPU만 사용
  • SD_CPP_PATH : stable-diffusion.cpp 설치 디렉토리 경로
    • 이는 stable-diffusion.cpp 바이너리와 모델을 찾는 데 사용됩니다.
  • default_model : 아무것도 지정되지 않은 경우 사용할 기본 모델입니다.

리소스 구성

  • models_dir : 모델 파일이 포함된 디렉토리
    • stable-diffusion.cpp 설치 내부의 models 디렉토리를 가리켜야 합니다.
  • output_dir : 생성된 이미지가 저장될 디렉토리
    • DiffuGen을 실행하는 사용자가 쓸 수 있어야 합니다.
  • vram_usage : VRAM 사용 전략을 제어합니다.
    • "adaptive" : 사용 가능한 VRAM에 따라 메모리 사용량을 자동으로 조정합니다.
    • "minimal" : 속도를 희생하고 최소한의 VRAM을 사용합니다.
    • "balanced" : 메모리 사용량과 속도의 균형을 맞춥니다(기본값)
    • "maximum" : 최상의 성능을 위해 사용 가능한 최대 VRAM을 사용합니다.

IDE별 옵션

각 IDE에는 diffugen.json 파일에서 사용자 정의할 수 있는 특정 옵션이 있습니다.

커서 옵션

"cursorOptions": { "autoApprove": true, "category": "Image Generation", "icon": "🖼️", "displayName": "DiffuGen" }

윈드서핑 옵션

"windsurfOptions": { "displayName": "DiffuGen", "icon": "🖼️", "category": "Creative Tools" }

기본 매개변수 사용자 정의

default_params 섹션에서 각 모델의 기본 매개변수를 사용자 정의할 수 있습니다.

"default_params": { "steps": { "flux-schnell": 12, "sdxl": 30 }, "cfg_scale": { "sd15": 9.0 }, "sampling_method": { "flux-schnell": "euler", "sdxl": "dpm++2m" } }

구성 파일 업데이트

자동 설치 스크립트를 사용하는 경우 옵션 5를 실행하면 시스템에 맞는 올바른 경로로 적절하게 구성된 diffugen.json 파일이 생성됩니다. DiffuGen을 IDE와 통합하려면 다음을 수행하세요.

  1. diffugen.json 의 경로를 업데이트하려면 setup_diffugen.sh 에서 옵션 5를 실행하세요.
  2. 생성된 diffugen.json 파일의 전체 내용을 복사합니다.
  3. IDE의 MCP 구성 파일(예: ~/.cursor/mcp.json )에 붙여넣습니다.
  4. 변경 사항을 적용하려면 IDE를 다시 시작하세요.

이 접근 방식의 주요 장점은 구성에 대한 단일 진실 소스를 제공하여 DiffuGen 설정을 보다 쉽게 유지 관리하고 업데이트할 수 있다는 것입니다.

📃 고급 사용법

DiffuGen Python 모듈은 사용자의 Python 스크립트에서 프로그래밍 방식으로 가져와서 사용할 수 있습니다.

from diffugen import generate_image # Generate an image programmatically result = generate_image( prompt="A starry night over a quiet village", model="sdxl", width=1024, height=768, steps=30, cfg_scale=7.0, seed=42, sampling_method="dpm++2m", negative_prompt="blurry, low quality" ) print(f"Image saved to: {result['file_path']}")

OpenAPI 서버 사용

애플리케이션에서 OpenAPI 서버를 프로그래밍 방식으로 사용할 수도 있습니다.

import requests def generate_image_via_api(prompt, model="flux-schnell", width=512, height=512): response = requests.post( "http://0.0.0.0:5199/generate/flux", json={ "prompt": prompt, "model": model, "width": width, "height": height } ) return response.json() # Example usage result = generate_image_via_api( prompt="A magical forest at night", model="flux-schnell", width=768, height=512 ) print(f"Generated image: {result['file_path']}")

🔍 문제 해결

일반적인 문제 및 솔루션

  1. 모델이 누락되었거나 경로가 잘못되었습니다.
    • 모든 모델 파일이 다운로드되어 올바른 디렉토리에 배치되었는지 확인하세요.
    • 구성 파일의 경로가 올바르게 설정되었는지 확인하세요.
    • 모델 파일에 대한 읽기 액세스를 허용하는 파일 권한을 확인하세요.
  2. CUDA/GPU 문제
    • NVIDIA 드라이버가 최신 상태인지 확인하세요
    • CUDA_VISIBLE_DEVICES 특정 GPU를 타겟으로 설정하세요.
    • VRAM이 부족한 경우 더 작은 모델을 사용하거나 크기를 줄여보세요.
  3. 이미지 품질 문제
    • 더 나은 품질을 위해 단계 증가(생성 시간 희생)
    • CFG 스케일 조정: 더 빠른 준수를 위해 더 높게, 창의성을 위해 더 낮게
    • 다양한 샘플링 방법을 시도해 보세요(dpm++2m은 종종 좋은 결과를 제공합니다)
    • 구체적인 스타일 설명과 함께 더 자세한 프롬프트를 사용하세요
  4. 파일 권한 오류
    • DiffuGen을 실행하는 사용자가 출력 디렉토리를 쓸 수 있는지 확인하세요.
    • 모든 스크립트에 실행 권한이 있는지 확인하세요( chmod +x diffugen.sh )

도움 받기

여기에 언급되지 않은 문제가 발생하면 다음을 수행할 수 있습니다.

  • 문제 및 해결책은 GitHub 저장소에서 확인하세요.
  • 디버그 로깅을 활성화하여 실행: DEBUG=1 ./diffugen.sh "your prompt"
  • GitHub 이슈를 통해 개발자에게 문의하세요

🌟 기여

DiffuGen에 기여해 주세요! 기여하려면:

  1. 저장소를 포크하세요
  2. 기능 브랜치 생성
  3. 변경 사항을 만드세요
  4. 풀 리퀘스트 제출

귀하의 코드가 프로젝트의 코딩 표준을 따르고 적절한 테스트를 포함하는지 확인하세요.

📄 라이센스

이 프로젝트는 Apache 라이선스에 따라 라이선스가 부여되었습니다. 자세한 내용은 LICENSE 파일을 참조하세요.

  • 모든 모델은 각각의 배포판에 따라 라이센스가 부여되며 CLOUDWERX.DEV에서 어떤 방식으로든 라이센스를 받거나 제공되지 않습니다.
  • HuggingFace.co는 모델을 다운로드하는 데 사용되며 CLOUDWERX.DEV와 어떤 식으로도 제휴되어 있지 않습니다.

🙏 감사의 말

📬 문의하기

______ __ ___ ___ _______ | _ \ |__|.' _|.' _|.--.--.| _ |.-----.-----. |. | \| || _|| _|| | ||. |___|| -__| | |. | \__||__| |__| |_____||. | ||_____|__|__| |: 1 / |: 1 | |::.. . / |::.. . | `------' `-------'
ID: i88tidr5w9