머신러닝 & 딥러닝/딥러닝

Flux.1-dev 모델 구조와 작동 원리

Haru_29 2024. 11. 18. 20:48

  1. 입력 준비
    • Latent : 이미지의 공간보다 낮은 공간을 차지하면서 계산 속도에 대해 영향을 끼침 + 시작하기 전에 랜덤 노이즈로 초기화 진행
    • Text Prompt: 사용자가 입력한 텍스트, T5 Encoder와 CLIP으로 분리됨
      • T5 Encoder는 언어의 문맥을 파악하는데 특화됨
      • CLIP은 이미지-텍스트 쌍으로 학습이 진행되기 때문에 시각적 개념과 텍스트 상의 연관성을 잘 표현
    • Scheduler → Timesteps: Diffusion Process steps
      • Scheduler : Diffusion process에서 노이즈 제거 속도와 품질을 조절하는 파라미터 생성
      • Timesteps : 각 Timestep은 노이즈 제거 과정의 특정 지점을 표
    • Guidance: 생성 과정을 제어하는 파라미터
    • Image Ids와 Text Ids: 이미지와 텍스트 식별자
  2. Diffusion Transformer first step
    • Latent → Latent Linear Projection : Latent 벡터를 선형 변환 매트릭스를 사용하여 새로운 차원으로 투영을 합니다. 이때 모델의 다른 부분의 차원을 일치 시키는 과정을 진행하여 효율적인 처리가 가능합니다.
    • T5 Encoder → Text Linear Projection : T5 Encoder에서 나온 텍스트 표현을 결합을 진행하고 선형 변환을 진행합니다. 이를 통하여 텍스트 정보를 이미지 생성 과정에 효율적으로 통합하는 것이 가능합니다.
    • MLP : 여러 층의 뉴런으로 구성되어 있는 피트포워드 신경망을 의미합니다. 비선형 변환을 통하여 복잡한 패턴을 학습하고 표현합니다. 이 MLP는 모델 내에서 여러번 사용을 하며, 주로 GELU 활성화 함수를 사용합니다.
    • Sinusoidal(정현파) timestep embedding : 사인과 코사인 함수를 사용하여 timestep을 연속적인 값으로 인코딩을 진행합니다. 이를 통하여 diffusion process의 현재 단계를 인식하는 것이 가능합니다.
    • Frequency Positional Embedding : 시퀸스 내의 위치 정보를 사인 및 코사인 함수를 사용하여 인코딩합니다. 이것은 transfomer 기반 모델에서 순서 정보를 유지하는데 필수적입니다.
  3. N(반복) x Double Stream (Multimodal) blocks
    • LayerNorm : 각 레이어의 입력을 정규화하여 학습 안정겅을 높입니다. 이 과정을 통하여 각 특성의 평균과 분산을 조정하여 일정한 스케일을 유지합니다.
    • Get Image Modulation : 이미지 관련 정보를 기반으로 모델의 파라미터를 조절합니다. 이는 이미지 특성에 따라 모델의 동작을 동적으로 변경을 할 수 있게 합니다.
    • Get Text Modulation : 텍스트 관련 정보를 기반으로 모델의 파라미터를 조절합니다.
    • QKV + Modulation
      • QKV : Query, Key, Value의 약자로, transfomer의 핵심인 어텐션 메커니즘의 핵심 구성 요소입니다.
      • Modulation : QKV 값들을 컨텍스트에 따라 조절합니다.
      • 이는 더욱 더 효과적인 어텐션 연산을 가능하게 합니다.
    • RMS Norm(Root Mean Square Normalization) : LayerNorm의 변형으로 계산이 더 간단하고 효율적입니다.
    • Q, K, V : 어텐션 메커니즘에서 각각 다른 역할을 수행하게 됩니다.
    • GELU MLP + Modulation
      • GELU : 비선형 활성화 함수를 의미합니다.
      • MLP : 다층 퍼셉트론으로 복잡한 패턴을 학습을 합니다.
      • Modulation : MLP의 출력을 컨텍스트에 따라서 조절을 진행합니다.
    • RoPE + Attn + Split
      • RoPE : Rotary Position Embedding : 위치 정보를 효과적으로 인코딩합니다.
      • Attn : 어텐션 알고리즘에서 중요한 정보를 집중시킵니다.
      • Split : 출력을 여러 스트림으로 나누어 줍니다.
    • Proj : Projection의 약자로 벡터를 다른 차원의 공간으로 투영을 진행합니다. 이는 차원 축소나 확장에 사용이 됩니다.
    • Latent : 이미지의 압축된 표현으로 모델 내에서 지속적으로 업데이트되며 최종적으로 이미지를 디코딩됩니다.
    • Text : 텍스트 입력의 인코딩된 표현으로 이미지 생성 과정 전반에 영향을 끼칩니다.
  4. N(반복) * Single Stream blocks
    • Modulate : 입력 데이터를 동적으로 조절합니다. 이는 컨텍스트나 다른 입력에 기반하여 특징들을 스케일링하여 변형합니다.
    • GELU + Linear
      • GELU : 비선형 활성화 함수를 의미합니다.
      • Linear : 선형 변환을 수행합니다. 이는 입력을 새로운 특징 공간으로 맵핑을 진행합니다.
    • Get Modulation : 현재 상태나 입력에 기반하여 Modulation Parameter를 생성합니다. 이는 네트워크의 다른 부분을 동적으로 조절할 수 있게 합니다.
    • LayerNorm : 각 레이어의 출력을 정규화합니다. 작동 방식으로는 평균을 0로 분산을 1로 조정하여 학습 안정성을 높입니다. 니는 깊은 네트워크에서 Gradient 소실 문제를 완화시킵니다.
    • Q, K, V : 어텐션 메커니즘에서 각각 다른 역할을 수행하게 됩니다.
      • Query: 현재 위치의 정보를 나타냅니다.
      • Key: 다른 위치들의 정보를 나타냅니다.
      • Value: 실제 내용 정보를 담고 있습니다.
    • RoPE + Attn
      • RoPE : Rotary Position Embedding : 위치 정보를 효과적으로 인코딩합니다.
      • Attn : 어텐션 알고리즘에서 중요한 정보를 집중시킵니다.
    • RMS Norm(Root Mean Square Normalization) : LayerNorm의 변형으로 계산이 더 간단하고 효율적입니다.
    • Linear : 선형 변환을 수행합니다. 입력을 새로운 특징 공간으로 맵핑을 진행하여 네트워크의 표현력을 증가시킵니다.
  5. Final Decoding
    • VAE Decoder를 사용하여 최종 잠재 표현을 실제 이미지로 변환