Q : 이 논문을 아주 자세하게 읽고 논문의 강점과 독창적인 지점을 설명해주고 핵심 알고리즘을 예시 입력을 들어서 전체적인 과정을 설명해줘 추가적으로 논문의 한계점에 대해서도 알려줘
A :
✅ 결론 요약 (핵심 강점 및 독창성)
Seedream 2.0은 중국어와 영어 모두를 native하게 이해하고 시각화하는 최초 수준의 이중언어 텍스트-이미지 생성 모델이다. 주요 강점은 다음과 같다:
강점 | 설명 |
---|---|
이중언어 이해 | 자체 개발한 bilingual LLM 기반 텍스트 인코더로 CLIP/T5 대비 우수한 언어 표현력 |
고성능 텍스트 렌더링 | ByT5와 LLM 기반의 glyph-aware 설계로 정확한 문자 배치 및 복잡한 문장 렌더링 가능 |
중국 문화 표현 | 다층 데이터 구성 및 문화 특화 데이터로 중국 스타일 표현 탁월 |
인간 취향 정렬 (RLHF) | aesthetics, text alignment, text rendering 각 축의 reward 모델과 RLHF를 통한 정렬 |
PE 기반 사용자 프롬프트 보정 | 단순 프롬프트 → 모델이 선호하는 표현으로 강화하여 이미지 질 개선 (30% aesthetics 향상) |
SeedEdit 확장성 | 동일 diffusion backbone을 image editing에도 확장 가능함 |
🔍 핵심 알고리즘 및 전체 파이프라인 (예시 기반 설명)
입력 프롬프트 예시:
중국 전통 복장을 입은 소녀가 벚꽃 아래 서 있는 모습, 배경은 봄날의 정원
전체 파이프라인 흐름
단계 | 설명 |
---|---|
1. 텍스트 인코딩 | 입력 프롬프트 → LLM 기반 텍스트 인코더 (중국어에 강함) |
2. Glyph 인코딩 | 텍스트 렌더링 시 ByT5 → 문자 level glyph 정보를 추출 |
3. 텍스트-이미지 통합 | 텍스트 토큰과 Glyph 특징 → DiT 구조에서 이미지 토큰과 함께 self-attn 수행 |
4. Scaled 2D RoPE | 다양한 해상도 대응을 위해 위치 임베딩을 해상도에 따라 scale 조정 |
5. 생성 결과 post-process | Refiner로 해상도 업스케일링 + 얼굴 등 구조 수정 |
6. RLHF 보정 | aesthetic, alignment, text rendering 각 RM 기반 feedback 학습 반복 |
7. 최종 이미지 출력 | 고해상도, 텍스트 정렬된 이미지 생성 |
핵심 구조 다이어그램 요약
[Prompt]
↓
[LLM Text Encoder] + [ByT5 Character Encoder]
↓ concat & projection
[Diffusion Transformer (DiT + Scaled RoPE)]
↓
[Image Token Generation]
↓
[Refiner + RLHF based fine-tuning]
↓
[Final Image Output]
📊 정량적 성능 비교
Bench-240 기준 인간 평가 결과 (상위 5개 모델 비교)
항목 | Seedream 2.0 | Ideogram 2.0 | Midjourney v6.1 | FLUX1.1 Pro | GPT-4o |
---|---|---|---|---|---|
Text-Image Alignment | 3.99 | 3.9 | 3.66 | 3.49 | 3.9 |
Structure Accuracy | 3.59 | 3.45 | 3.45 | 3.54 | 3.48 |
Aesthetic Quality | 3.27 | 3.44 | 3.9 | 3.22 | 2.59 |
ELO Score | 1117 | 1104 | 1082 | 1083 | 1074 |
Text Rendering (중국어 기준)
모델 | Text Accuracy | Hit Rate | Availability |
---|---|---|---|
Seedream 2.0 | 78% | 82% | 78% |
Kolors 1.5 | 66% | 65% | 45% |
MiracleVision 5.0 | 65% | 66% | 66% |
⚠️ 논문의 한계점
한계점 | 설명 |
---|---|
모델 아키텍처의 상세한 수식 부재 | DiT의 attention 설계, RoPE scaling 등의 수학적 정의 부족 |
LLM 기반 텍스트 인코더의 수렴 안정성 | 기존 T5/CLIP 대비 feature alignment 문제가 명시되어 있음 → alignment loss 등 더 정량적인 접근법 필요 |
추론 속도에 대한 실험 미비 | step distillation 및 quantization 기법이 소개되었지만, 실험 수치 부족 |
SeedEdit 편향성 | facial ID preservation을 위한 heuristic 방식이 얼굴 중심 태스크에 치우침 |
중국어 중심 | 다국어 확장 가능성은 언급되지만, 실험은 영어-중국어에 국한됨 |
Q : SeedEdit 세부 알고리즘 및 PE prompt rewriting 예제, RLHF 학습 루프 시각화에 대해서 자세하게 알려줘
A :
좋습니다. 요청하신 세 가지 항목 — SeedEdit 알고리즘, Prompt Engineering (PE) 예시, RLHF 학습 루프 구조 — 에 대해 구체적으로 설명드릴게요.
1️⃣ SeedEdit 알고리즘: Instruction-Based Image Editing
🎯 목적
- 텍스트-이미지 생성 모델을 “이미지 편집 모델”로 전환하여, 사용자 지시에 따른 편집 수행
- 예: “여자의 머리를 파란색으로 바꿔줘”, “배경을 뉴욕 시내로 바꿔줘”
🔧 핵심 설계 구성
구성 요소 | 설명 |
---|---|
Instruction Encoder | 사용자 지시문을 LLM으로 인코딩 |
Image Encoder | 원본 이미지를 latent space로 인코딩 (diffusion 기반 encoder 사용) |
Causal Diffusion Model | 인코딩된 이미지 + instruction을 조합하여 새로운 이미지를 생성 |
Iterative Optimization | 이미지-텍스트 특징을 다단계로 융합하여 더 자연스러운 편집 유도 |
📌 SeedEdit 개선 사항
항목 | 설명 |
---|---|
Face-aware Loss | AdaFace를 활용한 얼굴 유사도 손실 적용으로 얼굴 ID 보존 성능 향상 |
Multi-Expert Fusion | 다양한 실사 이미지와 스타일을 학습하여 overfitting 없이 보편적 편집 가능 |
Refiner Input 사용 | 고해상도 이미지 편집을 위해 Seedream Refiner 출력까지 고려하여 joint 학습 |
🔁 예시 프로세스 (Instruction: “머리색을 파란색으로 바꿔줘”)
[원본 이미지 + 지시문] → [LLM 인코딩] + [이미지 latent 인코딩]
↓
[SeedEdit Diffusion 모델 입력] → [디코딩]
↓
[최종 이미지 출력: 파란 머리로 바뀐 인물]
2️⃣ Prompt Engineering (PE): 사용자 프롬프트 개선
🎯 목적
- 실제 사용자는 짧고 간단한 문장을 입력함 → 모델 학습 시에는 길고 자세한 문장을 사용함
- 간단한 입력을 모델이 선호하는 스타일의 프롬프트로 재작성
📘 예시
원본 프롬프트:
"중국 전통 복장을 입은 여성"
PE Rewritten Prompt:
"중국 전통 마한복을 입은 여성, 얼굴이 온화하고 부드럽고, 실크 질감의 옷, 배경은 고대 정원, 벚꽃이 흩날리는 봄날, 고해상도, 은은한 햇살"
→ 결과적으로 aesthetics + alignment + detail이 모두 향상됨
🛠️ PE 모델 학습 구성
단계 | 내용 |
---|---|
1. Prompt Pair 생성 | (u, r): 원본 사용자 입력 u, 이를 기반으로 여러 번 시도 후 선택된 고성능 프롬프트 r |
2. Supervised Fine-Tuning | LLM에 위 prompt pair를 학습시켜 u → r 맵핑 능력을 내재화 |
3. RLHF 보정 (SimPO 방식) | r을 통한 이미지 생성 후, 품질 비교를 통해 고품질 prompt를 보존하도록 보정 학습 |
3️⃣ RLHF 학습 루프: Multi-Reward Optimization 구조
🎯 목적
- 인간 취향에 맞는 이미지를 생성하도록 diffusion model을 직접 보정
- 기존 PPO/DPO 기반의 LLM과 달리, diffusion model 전용 RLHF 알고리즘 설계
📈 전체 루프 구조
각 구성 요소
구성 요소 | 설명 |
---|---|
Prompt 시스템 | 100만 개 이상의 다양한 프롬프트 수집 및 분류 |
Reward Model (RM) | 세 가지 RM을 구성: 이미지-텍스트 정렬, aesthetics, text rendering |
Feedback 학습 (REFL) | 각 reward에 따라 weighted loss 구성 → diffusion 모델에 직접 backprop |
🔁 반복 최적화 루프
1. 현재 diffusion 모델로 이미지 생성
2. RM으로 평가: 예) (3.9 aesthetic, 3.7 alignment, 2.1 text rendering)
3. 보상이 낮은 항목에 대해 loss 구성하여 학습
4. RM 업데이트 → diffusion 모델 다시 학습
5. 반복 (N회)
🧠 안정성 향상 기법
- 학습률 조정
- denoising step tuning
- exponential moving average (EMA) 사용
- bad-case-aware RM 구축
🧩 시각화 다이어그램 요약
[Text Prompt] → [Text Encoder (LLM)]
+ [Image Encoder (if editing)]
↓
[Diffusion Transformer + DiT block]
↓
[Image Output] → [Reward Models: RM1, RM2, RM3]
↓
[RLHF Update Loop] → [Loss Aggregation → Backpropagation]
Q : 이 논문에서 사용하는 방법을 학습하기 위하여 어떤 데이터셋이 필요할까? 그리고 어떻게 학습을 진행하면 될지 예시를 들어서 아주 자세하게 설명해줘
A :
Seedream 2.0에서 사용하는 방법론을 학습하기 위해서는 텍스트-이미지 페어 데이터셋, 텍스트 렌더링 특화 데이터, 그리고 사용자 선호 피드백 기반 데이터까지 세 종류의 고품질 학습 데이터가 필요합니다. 아래에 각 데이터셋의 구성, 전처리 방법, 학습 프로세스를 구체적인 예시와 함께 정리하겠습니다.
✅ 필요한 데이터셋 종류와 구성
데이터셋 종류 | 목적 | 데이터 예시 | 설명 |
---|---|---|---|
1. 일반 텍스트-이미지 페어 | 기본 텍스트-이미지 생성 학습 | (프롬프트: “한 소녀가 벚꽃 아래 서 있다”, 이미지) | 일반적인 captioning 학습용 |
2. 텍스트 렌더링 데이터 | 텍스트가 이미지 안에 그려진 경우 학습 | (프롬프트: “‘春’이라는 글자가 깃털로 쓰인 이미지”, 이미지) | OCR 기반 전처리 필요 |
3. 사용자 피드백 데이터 | RLHF 학습에 사용 | (프롬프트, 후보 이미지 A/B, 사용자 선택 결과) | 선호 학습에 필요 |
🧪 1단계: 데이터셋 구축 방법
📦 일반 텍스트-이미지 데이터 구축
수집처
- LAION-5B, WIT, COYO, Conceptual Captions 등 공개 대규모 데이터셋 활용
- 중국 문화/예술 특화: Baidu Baike, Wikimedia zh, Weibo 이미지 등에서 수집
전처리 예시 (Python)
from PIL import Image
from transformers import CLIPProcessor, CLIPModel
import torch
# 텍스트-이미지 정합성 필터링
clip_model = CLIPModel.from_pretrained("openai/clip-vit-base-patch32")
processor = CLIPProcessor.from_pretrained("openai/clip-vit-base-patch32")
image = Image.open("girl_sakura.jpg")
text = "A girl standing under cherry blossoms"
inputs = processor(text=[text], images=image, return_tensors="pt", padding=True)
outputs = clip_model(**inputs)
logits = outputs.logits_per_image
if logits.item() > 0.25: # threshold 설정
keep = True
🧾 텍스트 렌더링 데이터 구축
수집처
- e-commerce, 광고, 뉴스 썸네일 이미지
- OCR 활용하여 텍스트 존재 이미지 필터링
전처리 파이프라인
- OCR → 텍스트 박스 추출
- 품질 점수 기반 필터링 (blur, 글자 왜곡 제거)
- 텍스트에 대한 재caption 수행
- 이미지 + 재caption 결과로 시각적 텍스트 학습
📝 피드백 기반 데이터 구축
생성 방식
- 다양한 프롬프트에 대해 이미지 2개 이상 생성 (예: A, B)
- 전문가 or crowdsource를 통해 어떤 이미지가 더 나은지 선택
- (프롬프트, 이미지 A, 이미지 B, 선택 결과)로 구성
예시 데이터
prompt: "a dragon-shaped lantern in Chinese temple"
image_A: img_a.png
image_B: img_b.png
preference: B
🧠 2단계: 학습 프로세스 (단계별 상세 예시 포함)
✳️ Step 1: 텍스트-이미지 pre-training
구성 | 내용 |
---|---|
Text Encoder | 자체 LLM 또는 T5/ByT5 |
Vision Encoder | VAE → patchify |
Training Objective | Cross-entropy loss on denoising timestep prediction |
loss = diffusion_model.compute_loss(latent_image, text_embedding)
loss.backward()
✳️ Step 2: 텍스트 렌더링 훈련 (ByT5 + LLM 융합)
입력 | ByT5(Glyph) + LLM(text) → MLP로 통합 |
출력 | text rendering attention mask와 함께 디퓨전 모델에 투입 |
학습목표 | 텍스트의 정확한 위치, 내용, 폰트 반영 학습 |
✳️ Step 3: Continuing Training (Aesthetic 강화)
- 미적 품질 중심의 데이터로 추가 학습
- VMix를 통해 aesthetic attribute(label) 사용
condition = { "color": "soft pastel", "light": "natural light", "texture": "silk", "composition": "symmetrical" }
✳️ Step 4: Supervised Fine-Tuning (SFT)
- 고품질 이미지와 caption → fine-tune
- “진짜 이미지 vs 생성 이미지” binary 분류 통해 realism을 강화
✳️ Step 5: RLHF
| 구성 요소 | 설명 | |———–|——| | Reward Model | CLIP 기반 + Text Rendering RM (ByT5 기반) | | 학습 방식 | Preference pair 학습 → REFL 방식 적용 |
loss = REFL_loss(image_A_score, image_B_score, preference)
loss.backward()
✳️ Step 6: Prompt Engineering (PE)
- (user_prompt, rewritten_prompt) 데이터셋 생성
- LLM으로 supervised fine-tuning
- SimPO 방식 RLHF 보정
# SimPO loss: Aesthetic preference에 따라 prompt 선택 보정 reward = RM(prompt_r1_image) - RM(prompt_r2_image) loss = -torch.log(torch.sigmoid(reward))
✅ 전체 학습 루틴 요약
1. Text-Image Pretrain: DiT + VAE + LLM 텍스트 인코더
2. Glyph-Aware Training: ByT5를 통한 문자 학습
3. Continuing Training (Aesthetic 강화)
4. SFT: Real vs Fake 이미지 + 미학 caption
5. RLHF: multi-reward + preference 학습
6. Prompt Engineering (u → r 매핑 학습)
📎 정리 및 실습 가능 방향
실습 단계 | 공개 대체 자료 |
---|---|
일반 pre-training | BLIP-2, LAION-5B 사용 가능 |
텍스트 렌더링 | TextDiffuser-2 코드 재활용 |
RLHF | TRL + custom RM (CLIP 기반) 활용 |
Prompt Engineering | LLM + PE fine-tune은 Alpaca 기반 가능 |
Q : 이 논문에서 제시한 결과를 자세하게 보고 다른 방법론에 비하여 특출난 점과 논문에서 제기하는 어떠한 방법이 이러한 결과를 도출하게 되었는지 논문에서 제시하는 이유와 너의 생각을 알려줘
A :
결론부터 말하자면, Seedream 2.0은 다양한 평가 항목에서 기존 상용 모델(GPT-4o, Midjourney, Ideogram 등)을 능가하는 전반적 우수성을 보이며, 특히 중국어 기반의 텍스트 이해 및 렌더링, aesthetics(미적 감각), 문화 표현 정확도 측면에서 독보적인 성능을 보입니다. 이 성능의 근거는 단순한 모델 구조 개선이 아닌, 데이터 품질 관리, 텍스트 인코딩 방식, RLHF 기반 정렬, Prompt Engineering의 유기적 통합에 있습니다.
아래에 논문에서 제시한 결과와 그 원인을 상세히 분석합니다.
🏆 Seedream 2.0의 주요 성능 결과 요약
✅ Human Evaluation (Bench-240 기준)
항목 | Seedream 2.0 | Ideogram 2.0 | Midjourney v6.1 | FLUX1.1 Pro | GPT-4o |
---|---|---|---|---|---|
Text-Image Alignment | 3.99 | 3.90 | 3.66 | 3.49 | 3.90 |
Structure Accuracy | 3.59 | 3.45 | 3.45 | 3.54 | 3.48 |
Aesthetic Quality | 3.27 | 3.44 | 3.90 | 3.22 | 2.59 |
ELO Score | 1117 | 1104 | 1082 | 1083 | 1074 |
→ Seedream은 모든 항목에서 상위권을 기록하며 전반적으로 균형 잡힌 성능을 달성
✅ Text Rendering 성능
항목 | Seedream 2.0 | Recraft V3 | Ideogram 2.0 | GPT-4o |
---|---|---|---|---|
Text Accuracy (EN) | 91% | 89% | 84% | 78% |
Text Accuracy (ZH) | 78% | - | 66% | 59% |
Availability (ZH) | 78% | - | 45% | 67% |
→ 중국어 텍스트 렌더링에서 압도적 우세
→ 고난도 구성(예: 클라우드로 표현된 한자)에서도 뛰어난 텍스트-이미지 정렬
✅ Chinese Culture 이해 평가
모델 | Response Score | Aesthetic Score |
---|---|---|
Seedream 2.0 | 3.86 | 3.33 |
Kolors 1.5 | 3.05 | 3.11 |
GPT-4o | 2.87 | 2.89 |
Hunyuan | 2.72 | 3.11 |
MiracleVision | 2.35 | 3.18 |
→ Seedream은 중국 전통 의상, 건축, 음식, 예술 등 다양한 문화 요소에서 정확한 표현을 보여줌
→ 예: “热干面 vs 刀削面” 차이를 시각적으로 구별할 수 있음
🧠 논문에서 제시하는 성능 향상의 원인 분석
성능 요인 | 구체적 기법 | 설명 |
---|---|---|
텍스트 이해력 | 자체 개발 bilingual LLM + ByT5 | CLIP, T5보다 긴 문장 이해력 뛰어남. 특히 중국어에서 native 수준의 표현 가능 |
텍스트 렌더링 정확도 | ByT5 + re-caption based text layout | OCR 박스가 아닌 재caption 모델로 위치, 폰트, 길이, 배치를 end-to-end 학습 |
미적 표현력 향상 | VMix aesthetic tag + SFT | color, light, texture, composition 등 세부 tag 학습 → 감성적 이미지 표현 가능 |
사용자 취향 반영 | RLHF with 3 RM (alignment, aesthetic, rendering) | 각 항목 별 reward로 균형 있게 fine-tuning 가능 |
Prompt 성능 보정 | Prompt Engineering + SimPO RLHF | 짧은 user 입력 → 학습된 스타일로 rewriting 하여 최적화된 이미지 생성 유도 |
🧩 내 생각: Seedream이 특히 특출난 이유
- “기술적 설계의 완성도” + “데이터 파이프라인의 치밀함”의 결합
- 단순히 모델 구조만 바꾼 것이 아니라, prompt 설계 → text encoder → rendering → refinement → 평가 → feedback까지 전 단계가 유기적으로 연결됨
- 중국어 기반 모델 최초의 실질적 우위 확보
- 기존 OpenAI/SD 기반 모델이 중국 문화 표현에 약한 틈을 완벽히 메움
- 한자 기반 glyph-aware 구조와 텍스트 배치 학습이 결정적 차별점
- PE + RLHF의 상호보완 구조
- 일반 사용자 prompt는 단순 → PE로 고도화
- 이후 RLHF로 aesthetic/align을 보정 → 시스템 전반이 self-improving
✏️ 향후 연구 확장 방향 (내 의견)
제안 | 설명 |
---|---|
Multilingual 확장 | Seedream은 중국어/영어에 강점 → 한국어, 일본어로 확장 가능성 큼 (ByT5 구조 활용 가능) |
Layout-aware generation 강화 | 포스터/책표지 등에서의 시각적 배치까지 포함한 조건 생성 연구로 발전 가능 |
LLM-fused caption generator 학습 공개 | caption quality가 이미지 품질 결정 → caption 모델 자체도 논문으로 확장할 가치 있음 |
Q : 이 논문의 입력데이터와 추론 과정에 대해서 예시를 들어 아주 자세하게 설명해 주겠니? 추가적으로 모델아키텍처의 구성 및 모델을 구성하는 연산과 메모리 요구량 컴퓨팅 요구량 대해서도 설명해줘
A :
좋습니다. Seedream 2.0의 입력 데이터 형식 → 추론 파이프라인 → 모델 아키텍처 → 연산 흐름 → 메모리 및 계산량 요구까지 예시 기반으로 전체적인 과정을 정밀하게 정리해드리겠습니다.
✅ 1. 입력 데이터 예시 및 처리 과정
🎯 목표: “텍스트 프롬프트로부터 고품질 이미지 생성”
📌 입력 예시 1: 일반 텍스트 입력 (중국어/영어)
Prompt: 一个身穿唐朝服饰的女子,站在盛开的樱花树下,微风拂面,阳光柔和,背景是一座古典中式园林。
Translation: A woman in Tang dynasty clothing stands under cherry blossoms, breeze blowing, soft sunlight, with a classical Chinese garden in the background.
📌 입력 예시 2: 텍스트 렌더링이 포함된 입력
Prompt: 用青花瓷风格写出“春”字,作为海报中心元素,背景为古风水墨。
Translation: Write the character “春” (spring) in blue-and-white porcelain style, used as central text element in a poster, background is ink-wash painting.
📥 전처리 단계
처리 단계 | 설명 |
---|---|
텍스트 인코딩 | - 자체 개발 bilingual LLM → sequence-level semantic encoding - ByT5 (glyph-aware) → character-level encoding |
Token Fusion | LLM feature + ByT5 feature → MLP projection → concat |
Condition 입력 | 위 결과를 image generation condition으로 사용 |
옵션: aesthetic tag, layout tag 추가 | color: pastel, texture: silk 등 optional tag condition 사용 (VMix 기반) |
🌀 2. 추론 파이프라인: Seedream Inference Flow
아래는 Seedream의 Text-to-Image Inference 전체 흐름입니다:
[Text Prompt]
↓
[Text Encoder (LLM + ByT5 + MLP)] ← rendering condition도 포함 가능
↓
[Diffusion Transformer (DiT) with Scaled 2D RoPE]
↓
[Latent Space Sampling with VAE]
↓
[Image Generation (e.g. 512x512)]
↓
[Refiner (optional for 1024x1024 upscale)]
🧠 3. 모델 아키텍처 구성
🎯 Seedream = [Text Encoder] + [DiT] + [VAE] + [Refiner]
🧩 A. Text Encoder
구성 요소 | 설명 |
---|---|
LLM | Decoder-only 구조로 긴 문장 이해, bilingual 능력 우수 |
ByT5 (glyph-level) | 문자단위 한자/영어 렌더링 표현 가능 |
MLP fusion layer | 두 feature를 projection하여 하나의 condition vector로 합침 |
🧩 B. DiT (Diffusion Transformer, SD3 기반)
블록 | 설명 |
---|---|
Patchify된 Latent | VAE latent x ∈ ℝC×H×W → 2D patch 형태 |
Transformer Block (per step) | - Self-Attn(텍스트 + 이미지 patch) - Modality-specific MLP - Adaptive LayerNorm - QK Norm for 안정화 |
Positional Encoding | Scaled 2D RoPE → multi-resolution generalization |
Time Embedding | denoising timestep 조건 입력 |
🧩 C. VAE (AutoEncoder)
구성 | 설명 |
---|---|
Encoder | 이미지 x → latent z ∈ ℝ4×64×64 (ex: 512x512 input) |
Decoder | latent z → 이미지 재구성 |
🧩 D. Refiner (optional, 고해상도 및 질감 강화)
역할 | 설명 |
---|---|
고해상도 업스케일 | 512 → 1024 이미지 생성 |
Texture 강화 | RLHF로 학습된 texture RM 기반 리파인 |
💾 4. 연산량 및 메모리 요구 분석
🧮 A. 모델 사이즈
구성 | 파라미터 수 (대략) |
---|---|
Text Encoder (LLM) | ~7B (decoder-only) |
ByT5 (char encoder) | ~200M |
Diffusion Transformer (DiT) | ~1.3B |
VAE | ~200M |
Refiner (optional) | ~600M |
총합 | 약 9~10B parameters |
💻 B. 추론 시 연산량 (계산량 FLOPs 기준)
구성 | 추정 FLOPs (512x512 기준, 50 steps) |
---|---|
Text Encoder (1회) | ~30 GFLOPs |
DiT (1 step) | ~200 GFLOPs/step |
DiT (50 steps) | ~10 TFLOPs |
VAE Decode | ~2.5 GFLOPs |
총합 | 약 10.05 TFLOPs (Refiner 제외) |
📈 C. 메모리 요구량 (A100 기준)
구성 | Peak GPU Mem |
---|---|
Text encoder + DiT + VAE | 약 18~22GB (bf16 inference 기준) |
+ Refiner 사용 시 | ~26GB |
- ByT5 character encoder는 대부분
seq_len × 1d conv
수준이므로 메모리 영향 적음 - Scaled RoPE 사용으로 해상도 증가 시에도 position embedding 증가 억제
🔁 결론: Seedream의 추론 과정 요약 (예시 포함)
입력:
Prompt = "A Tang dynasty woman under cherry blossoms, in soft sunlight, in a classical Chinese garden"
처리 순서:
- Text Encoder: LLM 인코딩 + ByT5 글리프 인코딩 → MLP로 통합
- Condition → DiT: diffusion transformer에서 patch self-attention
- Sampling: 50 step DDIM or DDPO sampling
- Decoder(VAE): latent → 이미지 복원
- (선택적) Refiner: 해상도 업스케일링 및 얼굴/텍스트 질감 보강
Q : Scaled RoPE에서 resolution 대응 방식 설명 및 LLM+ByT5 인코더 설계 mockup 에 대해서 자세하게 알려줘
A :
좋습니다. 아래에 요청하신 두 항목을 상세하게 설명드립니다:
✅ 1. Scaled RoPE (Rotary Position Embedding)의 해상도 일반화 기법
📌 기본 개념
RoPE는 Transformer에서 위치 정보를 각도 회전으로 인코딩하는 방식입니다. 기존 RoPE는 입력 길이(토큰 수)에 고정된 위치 임베딩을 학습하는데, 이는 해상도(즉, 패치 수)가 달라지면 학습된 위치 정보를 그대로 적용하기 어렵다는 문제가 있습니다.
🔍 문제점 요약
- RoPE는 토큰 위치에 따라 ( \theta = \text{freq} \cdot \text{pos} )를 회전변환에 사용
- 훈련 시 resolution이 512×512 (64×64 패치)였는데, 추론 시 768×768을 입력하면 RoPE의 positional bias가 깨짐
🌟 Scaled RoPE의 핵심 아이디어
🧠 중심 정렬 기반 scaling
- 중앙 기준으로 위치를 scale 하여, 고해상도에서도 기존 중앙 패치들과 같은 위치 정보를 유지
- 이를 통해 학습 시 보지 않은 해상도에서도 위치 일반화 가능
📐 수식 설명 (가로 방향 예시)
기존 RoPE:
[ \text{RoPE}_{\text{orig}}(i) = \sin(\omega \cdot i), \quad \omega = \frac{1}{10000^{2d/D}}, \quad i = \text{token index} ]
Scaled RoPE:
[ i’ = \frac{(i - H’/2)}{H/2} \cdot H/2 + H/2 = i \cdot \frac{H’}{H} ] 즉, 스케일링 계수 ( \alpha = H’/H )를 곱해 위치를 재조정
📊 예시
훈련 시 | 추론 시 | 위치 변환 (중앙기준) |
---|---|---|
512×512 (64×64) | 768×768 (96×96) | index 32 → ( 32 × \frac{96}{64} = 48 ) |
- 중앙 기준 정렬로 인해 RoPE의 positional field가 깨지지 않음
✅ 2. LLM + ByT5 Text Encoder 구조 설계 (Mockup)
🎯 목적
- LLM은 문장/의미 단위의 context 표현
- ByT5는 문자/glyph 단위로 텍스트 시각 표현
- 이 둘을 병렬적으로 인코딩 후 projection하여 결합
🧱 전체 아키텍처 구조도
+------------------+ +------------------+
Prompt Text ─────▶│ LLM Text Encoder│─┐ ┌─▶│ ByT5 Glyph Encoder│
+------------------+ │ │ +------------------+
▼ ▼
[Dense Projection]
▼
[Concat + PosEmbed + LayerNorm]
▼
[Input to Diffusion Transformer]
🧬 주요 구성 요소
컴포넌트 | 설명 |
---|---|
LLM | Decoder-only LLM (ex: 7B 규모, autoregressive X) |
ByT5 | character-level T5 → BPE 없이 UTF-8 byte-level input |
MLP Projection | ByT5의 output을 LLM의 feature space로 매핑 (linear layer + LayerNorm) |
Concat | LLM + mapped ByT5 features를 axis=1 방향으로 concat |
Positional Encoding | Concat된 token sequence에 Scaled RoPE 추가 |
🔢 입력 예시 (중국어)
Prompt: 春风十里不如你
Token 처리
| LLM Input Tokens | ByT5 Input Bytes | |——————|——————| | [“春”, “风”, “十”, “里”, “不”, “如”, “你”] | [0xe6, 0x98, 0xa5, 0xe9, 0xa3, 0x8e, …] (UTF-8) |
- LLM은 의미 단위로 인코딩
- ByT5는 byte-level 입력으로 glyph 구성 정보까지 인코딩
🔗 Fusion 단계
llm_out: [B, T1, D]
byt5_out: [B, T2, d]
# ByT5 projection to match LLM dimension
proj_byt5 = Linear(d, D)(byt5_out)
# Concat
fused = torch.cat([llm_out, proj_byt5], dim=1) # [B, T1+T2, D]
- 이후 DiT의 text embedding으로 사용됨 (text condition)
🧠 장점
항목 | 효과 |
---|---|
LLM | 긴 문맥 이해, 스타일/맥락 표현 |
ByT5 | 복잡한 문자(glyph) 구성, 미세한 렌더링 차이 표현 |
합성 | 문맥 + 렌더링을 모두 포괄한 강력한 텍스트 표현 생성 |