안정적인 확산(SD)은 현재 가장 인기 있는 텍스트-이미지 생성 확산 모델입니다. 강력한 이미지 생성 기능은 충격적이지만, 분명한 단점은 막대한 컴퓨팅 리소스가 필요하고 추론 속도가 매우 느리다는 것입니다. SD-v1.5를 예로 들면, 반정밀도 스토리지를 사용하더라도 모델 크기는 1.7GB입니다. 10억 개의 매개변수를 사용하면 기기 내 추론 시간이 2분에 가까운 경우가 많습니다.
추론 속도 문제를 해결하기 위해 학계와 업계에서는 주로 두 가지 경로에 초점을 맞춘 SD 가속에 대한 연구를 시작했습니다. (1) 추론 단계 수를 줄입니다. 이 경로는 두 가지 하위 경로로 나눌 수 있습니다. 하나는 더 나은 노이즈 스케줄러를 제안하여 단계 수를 줄이는 것이며, 대표적인 작업은 DDIM[1], PNDM[2], DPM[3] 등입니다. 두 번째는 점진적 증류를 통해 단계 수를 줄이는 것입니다. Progressive Distillation)의 대표적인 연구로는 Progressive Distillation[4]과 w-conditioning[5] 등이 있다. (2) 엔지니어링 기술 최적화. 대표적인 작업은 Qualcomm이 int8 양자화 + 전체 스택 최적화를 사용하여 Android 휴대폰에서 15초 만에 SD-v1.5를 달성하고[6] Google은 SD-를 달성하기 위해 온엔드 GPU 최적화를 사용한다는 것입니다. 삼성 휴대폰의 v1.4는 12초로 가속됩니다[7].
이러한 노력이 먼 길을 걸어왔지만 여전히 충분히 빠르지는 않습니다.
최근 Snap 연구소는 최신 고성능 Stable Diffusion 모델을 출시했습니다. 네트워크 구조, 훈련 과정, 손실 함수를 모든 측면에서 최적화하여 iPhone 14 Pro에서 2초 안에 이미지(512x512)를 생성할 수 있습니다. SD-v1.5보다 빠르며 더 나은 CLIP 점수를 얻습니다. 이것은 알려진 가장 빠른 end-to-end Stable Diffusion 모델입니다!
Stable Diffusion 모델은 VAE 인코더/디코더, 텍스트 인코더, UNet의 세 부분으로 나누어지며, 그 중 UNet이 매개변수 양과 계산 양 측면에서 절대 다수를 차지하므로 SnapFusion은 주로 UNet을 최적화합니다. (1) UNet 구조의 최적화: 원본 UNet의 속도 병목 현상을 분석하여 이 기사에서는 UNet 구조에 대한 자동 평가 및 진화 프로세스 세트를 제안하고 보다 효율적인 UNet 구조(라고 함)를 얻습니다. 효율적인 UNet). (2) 추론 단계 수의 최적화: 우리 모두 알고 있듯이 확산 모델은 추론 중 반복적인 노이즈 제거 프로세스입니다. 반복 단계가 많을수록 생성된 이미지의 품질이 높아지지만 시간 비용도 선형적으로 증가합니다. 반복 단계 수. 단계 수를 줄이고 이미지 품질을 유지하기 위해 훈련 과정에서 CFG(Classifier-Free Guidance)의 역할을 명시적으로 고려하는 CFG 인식 증류 손실 함수를 제안합니다. CLIP 점수 UP!
다음 표는 SD-v1.5와 SnapFusion 모델의 개요 비교입니다. 속도 향상은 UNet과 VAE 디코더 두 부분에서 나오며, UNet 부분이 가장 크다는 것을 알 수 있습니다. UNet 부분의 개선에는 두 가지 측면이 있습니다. 하나는 제안된 Efficient UNet 구조를 통해 얻은 단일 대기 시간(1700ms -> 230ms, 7.4x 가속)의 감소이고, 다른 하나는 추론 단계의 감소입니다. 50 -> 8, 6.25 x 가속도) 이는 제안된 CFG 인식 증류를 통해 얻어집니다. VAE 디코더는 구조화된 가지치기를 통해 가속화됩니다.
다음은 Efficient UNet의 설계와 CFG 인식 증류 손실 함수의 설계에 중점을 둡니다.
(1) 효율적인 UNet
UNet의 Cross-Attention 및 ResNet 모듈을 분석하여 속도 병목 현상이 Cross-Attention 모듈(특히 첫 번째 Downsample의 Cross-Attention)에 있음을 확인했습니다. 단계). 이 문제의 근본 원인은 Attention 모듈의 복잡도가 특징 맵의 공간 크기와 제곱 관계를 갖기 때문에 첫 번째 Downsample 단계에서는 특징 맵의 공간 크기가 여전히 커서 계산 복잡도가 높아집니다.
UNet 구조를 최적화하기 위해 우리는 UNet 구조에 대한 일련의 자동 평가 및 진화 프로세스를 제안합니다. 먼저 UNet에 대해 강력한 교육을 수행하고 교육 중에 일부 모듈을 무작위로 삭제하여 각 모듈의 성능을 테스트합니다. 실제 영향인 경우 "CLIP 점수 대 대기 시간에 대한 영향" 조회 테이블을 구성한 다음 조회 테이블을 기반으로 CLIP 점수에 거의 영향을 미치지 않고 시간이 많이 소요되는 모듈을 먼저 제거합니다. 이 프로세스 세트는 온라인에서 자동으로 수행됩니다. 완료되면 Efficient UNet이라는 새로운 UNet 구조가 생성됩니다. 원래 UNet과 비교하여 성능 저하 없이 7.4배의 가속을 달성합니다.
(2) CFG 인식 단계 증류
CFG(Classifier-Free Guidance)는 SD 추론 단계에서 이미지 품질을 크게 향상시킬 수 있는 매우 중요한 기술입니다. 가속을 위해 단계 증류를 사용하는 확산 모델에 대한 연구가 있었지만[4] 증류 훈련의 최적화 목표로 CFG를 포함하지 않았습니다. 즉, 증류 손실 함수는 CFG가 나중에 사용될지 알지 못합니다. 우리의 관찰에 따르면 이는 단계 수가 적을 때 CLIP 점수에 심각한 영향을 미칩니다.
이 문제를 해결하기 위해 우리는 교사 모델과 학생 모델 모두 증류 손실 함수를 계산하기 전에 CFG를 수행하도록 제안하여 CFG 이후의 특징에 대해 손실 함수를 계산함으로써 다양한 CFG 척도를 명시적으로 고려하도록 제안합니다. . 실험에서 CFG 인식 증류를 완전히 사용하면 CLIP 점수가 향상될 수 있지만 FID도 상당히 악화되는 것을 발견했습니다. 우리는 원래의 단계 증류 손실 함수와 CFG 인식 증류 손실 함수를 혼합하여 두 가지 장점의 공존을 달성하는 무작위 샘플링 방식을 추가로 제안했는데, 이는 CLIP 점수를 크게 향상시켰을 뿐만 아니라 FID를 악화시키지 않았습니다. . 이 단계는 추가 추론 단계에서 6.25배의 가속도를 달성하여 총 약 46배의 가속도를 달성합니다.
위의 두 가지 주요 기여 외에도 기사에는 VAE 디코더의 가지치기 가속과 증류 과정의 신중한 설계도 포함되어 있습니다. 특정 내용은 논문을 참조하세요.
SnapFusion은 SD-v1.5 텍스트를 이미지로 변환하는 기능을 벤치마크합니다. 목표는 추론 시간을 크게 줄이고 이미지 품질을 유지하는 것입니다.
이 사진은 CLIP 점수와 FID를 측정하기 위해 MS COCO'14 검증 세트에서 30K 캡션-이미지 쌍을 무작위로 선택한 결과입니다. CLIP 점수는 이미지와 텍스트 간의 의미적 일관성을 측정하며, FID는 생성된 이미지와 실제 이미지 간의 분포 거리(일반적으로 생성된 이미지의 다양성을 측정하는 것으로 간주됨)를 측정하며 작을수록 좋습니다. 그래프의 다양한 지점은 다양한 CFG 스케일을 사용하여 얻어지며 각 CFG 스케일은 데이터 포인트에 해당합니다. 그림에서 볼 수 있듯이, 우리의 방법(빨간색 선)은 SD-v1.5(파란색 선)과 동일하게 가장 낮은 FID를 달성할 수 있으며 동시에 우리 방법의 CLIP 점수가 더 좋습니다. SD-v1.5는 이미지를 생성하는 데 1.4분이 걸리는 반면 SnapFusion은 1.84초밖에 걸리지 않는다는 점은 주목할 가치가 있습니다. 이것은 또한 우리가 아는 가장 빠른 모바일 Stable Diffusion 모델입니다!
다음은 SnapFusion에서 생성된 일부 샘플입니다.
더 많은 샘플을 보려면 기사의 부록을 참조하세요.
이러한 주요 결과 외에도 이 기사에서는 효율적인 SD 모델 개발을 위한 참조 경험을 제공하기를 희망하는 수많은 절제 분석(절제 연구) 실험도 보여줍니다.
(1) 일반적으로 단계 증류에 대한 이전 작업 점진적인 공식 방식을 사용했지만[4, 5], SD 모델에서는 점진적 증류가 직접 증류에 비해 이점이 없으며 프로세스가 번거로워 이 기사에서는 직접 증류 방식을 채택합니다.
(2) CFG는 이미지 품질을 크게 향상시킬 수 있지만 비용은 추론 비용의 두 배입니다. 올해 CVPR'23 Award Candidate의 On Distillation 기사[5]에서는 CFG 매개변수를 증류용 UNet에 대한 입력으로 사용하는 w-조건화(결과 모델을 w-조건부 UNet이라고 함)를 제안하여 추론 중 CFG 단계를 제거하고 추론을 실현합니다. 비용이 절반으로 줄었습니다. 그러나 그렇게 하면 실제로 이미지 품질이 저하되고 CLIP 점수가 감소한다는 사실을 발견했습니다(아래 그림에서 볼 수 있듯이 w 조건이 적용된 4개 라인의 CLIP 점수는 0.30을 초과하지 않으며 이는 SD-보다 나쁜 수치입니다). v1.5). 우리의 방법은 제안된 CFG 인식 증류 손실 함수 덕분에 단계 수를 줄이는 동시에 CLIP 점수를 향상시킬 수 있습니다! 특히 주목할 점은 아래 그림의 녹색 선(w-조건, 16단계)과 주황색 선(Ours, 8단계)의 추론 비용은 동일하지만 주황색 선이 분명히 더 우수하다는 점입니다. 기술적 경로는 w-조건 조건화보다 낫습니다. [5] 증류된 CFG 유도 SD 모델에서는 더 효과적입니다.
(3) 기존의 Step Distillation [4, 5] 작업에서는 원래의 손실 함수와 증류 손실 함수를 함께 추가하지 않았으며, 이미지 분류 지식 증류에 익숙한 친구들은 이것을 알아야 합니다. 디자인은 직관적으로 차선책입니다. 그래서 우리는 아래 그림과 같이 훈련에 원래의 손실 함수를 추가할 것을 제안했는데, 이는 실제로 효과적이었습니다(FID를 약간 줄임).
본 논문에서는 모바일 단말을 위한 고성능 Stable Diffusion 모델인 SnapFusion을 제안합니다. SnapFusion에는 두 가지 핵심 기여가 있습니다. (1) 기존 UNet의 계층별 분석을 통해 속도 병목 현상을 찾아내고 원래 Stable Diffusion의 UNet을 동등하게 대체할 수 있는 새로운 효율적인 UNet 구조(Efficient UNet)를 제안합니다. (2) 추론 단계에서 반복 단계 수를 최적화하고 단계 수를 줄이면서 6.25배를 달성하면서 CLIP 점수를 크게 향상시킬 수 있는 새로운 단계 증류 방식(CFG-aware Step Distillation)을 제안합니다. 가속. 전체적으로 SnapFusion은 현재 알려진 가장 빠른 모바일 Stable Diffusion 모델인 iPhone 14 Pro에서 2초 이내에 이미지 출력을 달성합니다.
향후 작업:
1. SD 모델은 다양한 이미지 생성 시나리오에서 사용할 수 있으며 현재는 텍스트를 이미지로 변환하는 핵심 작업에만 중점을 둡니다. (예: inpainting, ControlNet 등)은 나중에 따릅니다.
2. 이 글은 주로 속도 향상에 중점을 두고 있으며 모델 저장을 최적화하지 않습니다. 우리는 제안된 Efficient UNet이 다른 고성능 최적화 방법(예: 가지치기, 양자화)과 결합하면 저장 공간을 줄이고 시간을 1초 미만으로 줄여 실시간 SD를 만들 수 있을 것으로 기대합니다. 결국 한 단계 더 나아갔습니다.
위 내용은 iPhone은 사진을 생성하는 데 2초가 걸리며 가장 빠른 것으로 알려진 모바일 Stable Diffusion 모델이 여기에 있습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!