발표 자료 및 영상: https://deview.kr/2023/sessions/533
1. Diffusion Model
Multimodal image generation model with diffusion process
- image generation - BigGAN → StyleGAN2 → DALL-E 2
- multimodal - pair data가 필요하다.
diffusion process = denoising (clearer image 만드는 과정)
단점
최근 6개월 간 Diffusion Model의 발전 과정
- Stable Diffusion
- 150,000 A100 GPU Hours = $600,000
- 생성 시 50 step = V100 기준 10초
- DreamBooth & LoRA
- 4억 개의 이미지 없이도 새로운 모델을 학습할 수 있을까?
- LENSA
- xformers
- Prompt-to-Prompt
- InstructPix2Pix
- ControlNet
2. 저비용: 어떻게 최적화 했는지
generation이 메인인 서비스 ⇒ latency와 scalability가 중요하다.
Distillation
생성 시, 50 step에 V100 기준으로 10초가 걸린다. 추론 횟수를 줄이려면?
knowledge distillation
distillation으로 모델 크기도 줄일 수 있으나, 추론 step 수를 절반씩 줄일 수 있다. ($2^n$씩)
Image2Image 모델로 기존 모델이 학습한 데이터셋에서 학습한 결과, 1번의 distillation은 평균 1.5일 정도 소요되었으며 전체 학습 기간은 6일이었다.
Free 버전에서는 distillation 모델을 사용하여 latency를 크게 줄여 사용자 경험을 향상시킬 수 있고, Pro 버전에서는 기존의 diffusion 모델을 사용하여 완성도를 향상시킬 수 있다.
TensorRT
- GPU 하드웨어 구조
TensorRT의 역할은 다음과 같다.
사용 방법
Triton (OpenAI)
Triton이란 OpenAI가 만든 언어/컴파일러로, I/O 최적화된 CUDA 코드를 최적화한다. (ex. swish, gelu, groupnorm, layernorm, cast 등)
TensorRT를 통해 static graph를 최적화할 수는 있으나, static graph만으로는 모든 것을 알 수 없다.
최종 Latency 개선 결과
3. MLOps: 어떻게 Serving 했는지
인프라 구조
- 클라우드가 아닌 bare metal 서버를 사용했다.
- kubespray로 self-hosted 클러스터를 운영했다.
- 2개의 서비스와 8개의 GPU 서버로 구성했다.
Triton Inference Server (NVIDIA)
OpenAI의 컴파일러인 Triton과는 다른 것이다.
- 장점
- ensemble model, scheduler, dlpack 지원
- TensorRT
- gRPC
- dynamic batching
전체 과정을 간단히 나타내면 다음과 같다.
- Triton을 활용하면 inference time을 다음과 같이 최적화 할 수 있다.
- 하나의 request를 처리할 때에도 다른 request와 함께 동시에 처리할 수 있다.
- ensemble 시 유리하다.
- diffusion model의 앞 뒤로 한 두 개의 pipeline만 있다면 필요하지는 않다.
- 참고: https://openai.com/research/techniques-for-training-large-neural-networks
메모
- 학습 데이터를 만들 때 diffusion model을 사용하는 방법?
- GPU 구조에 대한 이해
- TensorRT, Triton
- free / pro 버전