miniDiffusion 프로젝트 소개
Diffusion 모델은 현재 이미지 생성 분야에서 가장 강력한 성능을 보여주고 있는 기술이며, Stable Diffusion 계열 모델은 그 중에서도 가장 널리 사용되고 있는 프레임워크 중 하나입니다. 하지만 그 내부 구조는 복잡하고, 다양한 라이브러리와의 의존성으로 인해 학습이나 커스터마이징이 쉽지 않습니다. miniDiffusion은 Stable Diffusion 3.5의 구조를 순수 PyTorch로 재현하여, 이러한 복잡성을 제거하고 누구나 쉽게 구조를 학습할 수 있도록 돕는 프로젝트입니다.
miniDiffusion은 Yousef Rafat가 공개한 Stable Diffusion 3.5의 교육용 PyTorch 구현체입니다. 이 프로젝트는 약 2,800줄의 코드로 구성되어 있으며, Hugging Face에서 제공하는 사전 학습 가중치만을 사용하고 외부 의존성을 최소화하여 구성되었습니다. 핵심적인 아키텍처인 DiT(Diffusion Transformer), VAE, 텍스트 인코더, 토크나이저, 스케줄러 등이 모두 PyTorch 기반으로 구현되어 있어, 구조를 직접 분석하거나 수정하기에 적합한 형태입니다.
특히 이 프로젝트는 복잡한 inference pipeline이나 API 통합 없이도 순수하게 모델 구조를 이해하는 데 집중할 수 있게 설계되었습니다. 이는 최신 diffusion 모델의 원리를 학습하고자 하는 학생, 연구자, 그리고 현업 개발자들에게 매우 유용한 접근 방식을 제공합니다. 학습 방식은 간단합니다. 저장소를 클론한 뒤 필요한 Python 패키지를 설치하고, 체크포인트 파일을 다운로드한 후 학습 혹은 추론 스크립트를 실행하면 됩니다.
Diffusion 모델 소개
Diffusion 모델은 데이터를 점차적으로 노이즈화하고, 이를 다시 원래 데이터로 복원하는 과정을 학습하는 생성 모델입니다. 정방향 과정에서는 원본 이미지에 점진적으로 Gaussian 노이즈를 추가하여 거의 무작위 상태까지 변형하고, 역방향 과정에서는 이 노이즈를 제거하며 원래 이미지를 복원하는 과정을 모델이 학습합니다. 대표적인 논문인 DDPM(Denoising Diffusion Probabilistic Models)은 이 과정을 수학적으로 엄밀하게 정의하며, 각 시간 단계마다 노이즈를 예측하여 제거하는 모델을 제안하였습니다.
miniDiffusion에서 구현된 Stable Diffusion 3.5 모델은 이러한 DDPM 구조를 기반으로 하면서도, latent 공간에서 동작하도록 설계되어 고해상도 이미지 생성을 효율적으로 수행할 수 있습니다. 이를 위해 사전 학습된 VAE로 이미지를 잠재 공간(latent space)으로 압축하고, 해당 공간에서 DiT 아키텍처가 확산 과정을 수행합니다. 텍스트 조건부 생성을 위해서는 T5 텍스트 인코더와 CLIP tokenizer를 사용합니다.
miniDiffusion의 주요 구성 요소와 구조
miniDiffusion의 가장 큰 특징은 모든 구성 요소가 PyTorch로 직접 구현되어 있다는 점입니다. 모델 아키텍처는 DiT(Diffusion Transformer) 기반으로, attention, transformer block, position embedding 등을 자체적으로 처리하며, joint attention 구조를 통해 cross-attention이 구현되어 있습니다. 확산 스케줄링은 Euler 방식의 flow matching 기반으로 구성되어 있어, 확률적 경로 추론이 가능하며 실제 이미지 품질도 우수합니다.
텍스트 인코딩에는 Hugging Face T5 및 CLIP 인코더를 활용하며, tokenizer 역시 직접 구현되어 있어, 각 모듈이 어떻게 상호작용하는지를 코드 레벨에서 명확히 파악할 수 있습니다. 데이터셋은 기본적으로 패션 이미지(fashion_mnist)를 활용하며, 실험을 위한 미니 학습에도 적합한 구조를 가지고 있습니다.
설치와 실행 방법
프로젝트는 다음과 같이 간단하게 사용할 수 있습니다. 저장소를 클론한 후, 필요한 패키지를 설치하고, 사전 학습된 체크포인트를 다운로드하여 학습 또는 추론을 진행하면 됩니다. 아래는 설치 및 실행 예시입니다.
git clone https://github.com/yousef-rafat/miniDiffusion
cd miniDiffusion
pip install -r requirements.txt
python3 encoders/get_checkpoints.py # Hugging Face token 필요
python3 train.py # 학습
python3 infer.py # 추론
전체 학습 및 생성 파이프라인은 약 10개 내외의 주요 파이썬 파일로 구성되어 있으며, 이로 인해 프로젝트 구조를 직관적으로 파악할 수 있습니다. 각 모듈은 개별적으로 독립되어 있어 재사용성과 분석에도 유리합니다.
라이선스
miniDiffusion 프로젝트는 MIT License로 배포되고 있습니다. 개인 및 상업적 사용에 제약이 없으며, 자유롭게 수정 및 재배포가 가능합니다.
miniDiffusion 프로젝트 GitHub 저장소
이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다.
파이토치 한국 사용자 모임
이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일
로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)
아래
쪽에 좋아요
를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~