Qwen-Image-Edit-2511

Qwen-Image-Edit-2511

Qwen-Image-Edit-2511은 Qwen-Image의 20B 편집 대응 모델입니다. 텍스트, 재질, 조명, 시점, 구도를 바꾸는 데 강하며 요청되지 않은 영역의 드리프트를 줄입니다.

출처: 문서

본문

<DiffusionModelTags tags={["image editing", "text replacement", "character consistency", "multi-person", "20B"]} />

1. 모델 소개 (Model Introduction)

Qwen-Image-Edit-2511은 Qwen-Image의 20B 편집 대응 모델입니다. 텍스트, 재질, 조명, 시점, 구도를 바꾸는 데 강하며 요청되지 않은 영역의 드리프트를 줄입니다.

정체성 민감한 초상화 편집, 다중 인물 구도, 타이포그래피 교체, 지오메트리 인지 디자인 작업에 이를 선택하세요. 작은 전문 편집 모델보다 훨씬 무겁고, 일관성은 보장이 아니라 개선됩니다. 실제 편집 워크로드에서 미터치 영역 드리프트를 평가하세요.

2. SGLang-diffusion 설치 (Installation)

SGLang-diffusion은 여러 설치 방법을 제공합니다. 하드웨어 플랫폼과 요구사항에 따라 가장 적합한 방법을 선택할 수 있습니다.

설치 지침은 공식 SGLang-diffusion 설치 가이드를 참조하세요.

3. 모델 배포 (Model Deployment)

이 섹션은 다양한 하드웨어 플랫폼과 사용 사례에 최적화된 배포 구성을 제공합니다.

3.1 기본 구성 (Basic Configuration)

Qwen-Image-Edit-2511은 이미지 편집 작업에 최적화된 20B 파라미터 모델입니다. 권장 시작 구성은 하드웨어에 따라 다릅니다.

대화형 명령 생성기 (Interactive Command Generator): 아래 구성 선택기를 사용해 하드웨어 플랫폼에 적합한 배포 명령을 자동 생성하세요.

3.2 구성 팁 (Configuration Tips)

가속 기능과 런타임 요구사항은 성능 최적화를 참조하세요.

  • --vae-path: 커스텀 VAE 모델 또는 HuggingFace 모델 ID 경로(예: fal/FLUX.2-Tiny-AutoEncoder). 지정하지 않으면 메인 모델 경로에서 VAE를 로드.
  • --num-gpus: 사용할 GPU 수
  • --tp-size: 텐서 병렬 크기(인코더 전용. 텍스트 인코더 오프로드가 활성화되면 1보다 크면 안 됩니다. 레이어별 오프로드 + 프리페치가 더 빠르기 때문)
  • --sp-degree: 시퀀스 병렬 크기(보통 GPU 수와 일치해야 함)
  • --ulysses-degree: USP에서 DeepSpeed-Ulysses 스타일 SP의 정도
  • --ring-degree: USP에서 ring attention 스타일 SP의 정도

3.3 H200에서 이미지를 레이어로 분해 (Decompose an image into layers on H200)

Qwen/Qwen-Image-Layered는 별도의 RGBA 이미지를 반환합니다. 이 모델의 경우 --num-frames 4가 출력 레이어 4개를 요청합니다. CLI는 네 개의 PNG를 모두 저장하고, DiffGenerator.generate()는 레이어당 하나의 결과를 반환합니다.

Linux에서 NVIDIA CUDA와 두 개의 H200 GPU를 사용하면 조건부·비조건부 분기를 별도 GPU에서 실행할 수 있습니다:

CUDA_VISIBLE_DEVICES=0,1 sglang generate \
  --model-path Qwen/Qwen-Image-Layered \
  --num-gpus 2 \
  --cfg-parallel-size 2 \
  --tp-size 1 \
  --ulysses-degree 1 \
  --quality lossless \
  --enable-torch-compile false \
  --warmup-mode request \
  --width 640 --height 640 --num-frames 4 \
  --num-inference-steps 50 --guidance-scale 4.0 --seed 42 \
  --image-path https://raw.githubusercontent.com/QwenLM/Qwen-Image-Layered/main/assets/test_images/4.png \
  --prompt "a high quality, cute halloween themed illustration, consistent style and lighting" \
  --output-path outputs/qwen-layered \
  --save-output

단일 H200의 경우 CUDA_VISIBLE_DEVICES=0, --num-gpus 1, --cfg-parallel-size 1을 설정하세요. 두 구성 모두 eager 실행을 사용합니다. Layered는 현재 breakable CUDA graph를 지원하지 않습니다. BCG를 활성화하면 eager 실행으로 폴백합니다.

Layered CFG 정책은 단일 GPU 산술 순서를 적용하기 전에 분기 예측을 모아 검증된 고정-시드 예시에서 BF16 반올림과 알파 값을 보존합니다. 각 GPU는 여전히 전체 DiT 복제본을 보유하므로 CFG 병렬성은 각 GPU에 필요한 모델 메모리를 줄이지 않고 요청 지연을 줄입니다.

4. API 사용법 (API Usage)

전체 API 문서는 공식 API 사용 가이드를 참조하세요.

4.1 이미지 편집 (Edit an Image)

import base64
from openai import OpenAI

client = OpenAI(api_key="EMPTY", base_url="http://localhost:3000/v1")

response = client.images.edit(
    model="Qwen/Qwen-Image-Edit-2511",
    image=open("input.png", "rb"),
    prompt="Change the color of the taxi to black.",
    n=1,
    response_format="b64_json",
)

# Save the edited image
image_bytes = base64.b64decode(response.data[0].b64_json)
with open("output.png", "wb") as f:
    f.write(image_bytes)

4.2 고급 사용법 (Advanced Usage)

4.2.1 Cache-DiT 가속 (Cache-DiT Acceleration)

SGLang은 Diffusion Transformer(DiT)용 캐싱 가속 엔진인 Cache-DiT를 통합해 최소 품질 손실로 최대 7.4배 추론 속도 향상을 얻을 수 있습니다. SGLANG_CACHE_DIT_ENABLED=True로 활성화할 수 있습니다. 자세한 내용은 SGLang Cache-DiT 문서를 참조하세요.

기본 사용법 (Basic Usage)

SGLANG_CACHE_DIT_ENABLED=true sglang serve --model-path Qwen/Qwen-Image-Edit-2511

고급 사용법 (Advanced Usage)

  • DBCache 파라미터: DBCache는 블록 수준 캐싱 동작을 제어합니다:
파라미터 (Parameter) 환경 변수 (Env Variable) 기본값 (Default) 설명 (Description)
Fn SGLANG_CACHE_DIT_FN 1 항상 계산할 첫 블록 수
Bn SGLANG_CACHE_DIT_BN 0 항상 계산할 마지막 블록 수
W SGLANG_CACHE_DIT_WARMUP 4 캐싱이 시작되기 전 워밍업 스텝
R SGLANG_CACHE_DIT_RDT 0.24 잔차 차이 임계값
MC SGLANG_CACHE_DIT_MC 3 최대 연속 캐시 스텝 수
  • TaylorSeer 구성: TaylorSeer는 Taylor 전개를 사용해 캐싱 정확도를 개선합니다:
파라미터 (Parameter) 환경 변수 (Env Variable) 기본값 (Default) 설명 (Description)
Enable SGLANG_CACHE_DIT_TAYLORSEER false TaylorSeer 교정기 활성화
Order SGLANG_CACHE_DIT_TS_ORDER 1 Taylor 전개 차수 (1 또는 2)

결합 구성 예시:

SGLANG_CACHE_DIT_ENABLED=true \
SGLANG_CACHE_DIT_FN=2 \
SGLANG_CACHE_DIT_BN=1 \
SGLANG_CACHE_DIT_WARMUP=4 \
SGLANG_CACHE_DIT_RDT=0.4 \
SGLANG_CACHE_DIT_MC=4 \
SGLANG_CACHE_DIT_TAYLORSEER=true \
SGLANG_CACHE_DIT_TS_ORDER=2 \
sglang serve --model-path Qwen/Qwen-Image-Edit-2511

4.2.2 CPU 오프로드 (CPU Offload)

  • --dit-cpu-offload: DiT 추론에 CPU 오프로드 사용. 메모리가 부족하면 활성화.
  • --text-encoder-cpu-offload: 텍스트 인코더 추론에 CPU 오프로드 사용.
  • --image-encoder-cpu-offload: 이미지 인코더 추론에 CPU 오프로드 사용.
  • --vae-cpu-offload: VAE에 CPU 오프로드 사용.
  • --pin-cpu-memory: CPU 오프로드를 위한 메모리 고정. "CUDA error: invalid argument"가 발생할 때만 임시 해결책으로 추가.

4.2.3 알려진 LoRA 예시 (Known LoRA examples)

어댑터를 로드하려면 시작 시 --lora-path 또는 LoRA 관리 API를 사용하세요. 알려진 Qwen-Image-Edit 예시:

5. 벤치마크 (Benchmark)

테스트 환경:

  • 하드웨어: NVIDIA B200 GPU (1x)
  • 모델: Qwen/Qwen-Image-Edit-2511
  • sglang diffusion 버전: 0.5.6.post2

5.1 속도 향상 벤치마크 (Speedup Benchmark)

5.1.1 이미지 편집 (Edit a image)

서버 명령 (Server Command):

sglang serve --model-path Qwen/Qwen-Image-Edit-2511 --port 30000

벤치마크 명령 (Benchmark Command):

python3 -m sglang.multimodal_gen.benchmarks.bench_serving \
    --dataset vbench --task image-to-image --num-prompts 1 --max-concurrency 1

결과 (Result):

================= Serving Benchmark Result =================
Model:                                   Qwen/Qwen-Image-Edit-2511
Dataset:                                 vbench
Task:                                    image-to-image
--------------------------------------------------
Benchmark duration (s):                  35.31
Request rate:                            inf
Max request concurrency:                 1
Successful requests:                     1/1
--------------------------------------------------
Request throughput (req/s):              0.03
Latency Mean (s):                        35.3053
Latency Median (s):                      35.3053
Latency P99 (s):                         35.3053
--------------------------------------------------
Peak Memory Max (MB):                    47959.35
Peak Memory Mean (MB):                   47959.35
Peak Memory Median (MB):                 47959.35
============================================================

5.1.2 고동시성 이미지 편집 (Edit a image with high concurrency)

벤치마크 명령 (Benchmark Command):

python3 -m sglang.multimodal_gen.benchmarks.bench_serving \
    --dataset vbench --task image-to-image --num-prompts 20 --max-concurrency 20

결과 (Result):

================= Serving Benchmark Result =================
Model:                                   Qwen/Qwen-Image-Edit-2511
Dataset:                                 vbench
Task:                                    image-to-image
--------------------------------------------------
Benchmark duration (s):                  286.11
Request rate:                            inf
Max request concurrency:                 20
Successful requests:                     20/20
--------------------------------------------------
Request throughput (req/s):              0.07
Latency Mean (s):                        150.0428
Latency Median (s):                      150.0600
Latency P99 (s):                         283.3843
--------------------------------------------------
Peak Memory Max (MB):                    47971.82
Peak Memory Mean (MB):                   47971.49
Peak Memory Median (MB):                 47971.29
============================================================

6. ComfyUI에서 실행 (Run in ComfyUI)

더 알아보기 (Learn more)