00:00:00많은 분들이 와주셔서 반갑습니다.
00:00:02서두에서 말씀드렸듯이,
00:00:04이미지 생성 및 편집을 위한 저희 모델 제품군인 Flux에 대해 자세히 설명해 드리겠습니다.
00:00:13(작동하는지 확인하는 뉘앙스) 잘 되나요?
00:00:16저는 Black Force Labs의 공동 창립자 앤디입니다.
00:00:22모델에 대해 설명하기 전에 저희가 어떤 일을 하는지 간략하게 소개해 드리고자 합니다.
00:00:29Black Force Labs는 미래에 시각 미디어가 인간 소통의 중심 인터페이스가 될 것이라고 믿습니다.
00:00:39저희는 사람들이 서로 소통하는 데 사용할 모든 이미지와 비디오를 구동하는 핵심 인프라 제공자로서,
00:00:48카메라가 포착할 수 있는 것을 넘어 훨씬 더 많은 것을 제공하고자 합니다.
00:00:54이러한 비전을 가지고 2024년 8월에 회사를 설립했습니다.
00:01:00그 이후로 직원 수는 45명으로 늘었으며, 두 개의 본사에 분산되어 있습니다.
00:01:07주요 본사는 독일 블랙 포레스트의 프라이부르크에 있으며, 샌프란시스코에도 사무실이 있습니다.
00:01:152024년 8월 회사 설립과 함께 이미지 생성 제품군인 Flux를 출시한 이래로,
00:01:22저희는 항상 세 가지 계층으로 출시를 구성하고 모델 제품군을 지속적으로 발전시켜 왔습니다.
00:01:31그 계층은 다음과 같습니다.
00:01:33프로 모델이 있습니다.
00:01:35이 모델들은 매우 강력하고 저희가 제공하는 가장 빠른 모델입니다.
00:01:41VFL API를 통해서만 사용할 수 있으며,
00:01:45File 및 Replicate와 같은 몇몇 추론 파트너를 통해서도 제공됩니다.
00:01:52아마 여러분도 아실 겁니다.
00:01:54통합이 매우 쉽고 거의 즉시 대규모 볼륨으로 확장할 수 있습니다..
00:02:03이것이 첫 번째 계층이지만,
00:02:05아시다시피 저와 공동 창립자들은 오늘 저희를 초대한 분과 마찬가지로 오픈 소스에 깊은 뿌리를 두고 있습니다.
00:02:13저희는 또한 Stable Diffusion의 원 개발자이기도 합니다.
00:02:19저희는 여전히 그 정신을 고수하고 있습니다.
00:02:22저희는 오픈 소스 커뮤니티를 사랑하며, 그래서 오픈 웨이트 및 오픈 소스 모델도 제공합니다..
00:02:29Flux Dev 모델도 있습니다.
00:02:32이 모델들은 공개적으로 다운로드하여 자유롭게 활용할 수 있습니다.
00:02:37완전히 맞춤 설정이 가능하며, 사용하고자 하는 모든 사람에게 많은 유연성을 제공합니다.
00:02:45마지막으로 Flux Schnell 모델이 있습니다.
00:02:49이 모델들은 완전한 오픈 소스이며, Flux 생태계로 진입하는 완벽한 시작점이라고 할 수 있습니다.
00:02:57생태계에 대해 말하자면,
00:02:59Hugging Face의 모델 아틀라스(다양한 분야에서 가장 많이 사용되는 오픈 소스 기반 모델을 시각화한 것)를 보면,
00:03:09Hugging Face에서 가장 큰 생태계를 가진 단일 모델이 바로 저희 Flux Dev 모델임을 알 수 있습니다.
00:03:19이는 Flux가 이미 개방형 이미지 생성의 표준이 되었음을 분명히 보여줍니다.
00:03:25물론, 저희는 앞으로도 배포를 더욱 발전시키고 확장할 계획입니다.
00:03:30회사 소개는 여기까지입니다.
00:03:33(장비 확인) 아직도 안 되나요?
00:03:35어쨌든.
00:03:36이제 강연의 주요 부분으로 넘어가겠습니다..
00:03:41여러분과 함께 Flux,
00:03:43특히 텍스트-이미지 생성과 편집을 통합한 최신 모델인 Flux Context에 대해 자세히 알아보고자 합니다.
00:03:52오늘은 이것을 어떻게 통합하는지에 대해 이야기하겠습니다..
00:03:56그 전에 몇 가지 말씀드리겠습니다.
00:03:59이 통합 모델을 갖는 것이 매우 중요하다고 생각합니다.
00:04:04이미지 생성은 분명히 많은 훌륭한 응용 분야를 가지고 있으며 지난 한 해 동안 이를 보아왔지만,
00:04:11이미지 편집은 올해까지는 개발 속도가 그에 미치지 못했습니다.
00:04:16이미지 편집은 사실 매우 중요한 사용 사례입니다.
00:04:20기존 이미지를 반복적으로 수정할 수 있게 해주며,
00:04:24사람들이 이미지를 정밀하게 수정할 수 있는 추가적인 제어 수준을 제공한다고 생각합니다.
00:04:31이것은 매우 중요합니다.
00:04:33Flux Context를 통해 저희는 이미지 편집의 결정적인 순간을 만들었습니다.
00:04:402025년 6월에 출시되었습니다.
00:04:43이 모델은 이미지 생성과 캐릭터 일관성,
00:04:46스타일 참조,
00:04:47로컬 편집 등 편집에 필요한 모든 기능을 거의 실시간 속도로 결합합니다.
00:04:53이것은 나중에 살펴보겠습니다..
00:04:57좋은 예시로, 여기 이미지 한 줄을 가져왔습니다.
00:05:01왼쪽에서 오른쪽으로, 먼저 입력 이미지로 시작합니다.
00:05:04그런 다음 모델에 그녀의 얼굴에서 이 물체를 제거하도록 지시하고,
00:05:09캐릭터의 일관성을 유지하면서 완전히 새로운 맥락에 그녀를 배치할 수 있습니다.
00:05:15이것은 매우 중요합니다.
00:05:16과거에는 공개된 텍스트-이미지 모델을 기반으로 이러한 캐릭터 일관성을 모델에 구현하기 위해 많은 미세 조정 작업이 필요했지만,
00:05:26이 즉각적인 이미지 편집 기능 덕분에 항상 다소 번거로웠던 모든 미세 조정 작업을 없앨 수 있었습니다.
00:05:33이제 이것이 4초 정도밖에 걸리지 않는다는 것은 정말 놀랍습니다.
00:05:38마지막으로, 배경을 바꿀 수 있습니다.
00:05:41이 경우, 가장 오른쪽 이미지는 겨울 풍경으로 변경됩니다.
00:05:45멋지죠.
00:05:45이 모델이 할 수 있는 몇 가지 추가 예시입니다.
00:05:49캐릭터 일관성 편집뿐만 아니라 스타일 전송에도 매우 유용합니다.
00:05:53왼쪽에서 볼 수 있습니다.
00:05:55입력 이미지에서 스타일을 가져와 새로운 콘텐츠에 적용하거나,
00:06:00폰트를 일관되게 유지하면서 몬트리올을 프라이부르크로 바꾸는 텍스트 편집과 같은 작업을 할 수 있습니다.
00:06:07이 모든 것이 하나의 모델에 통합되어 있으며,
00:06:10매우 간단한 텍스트 인터페이스를 통해 상호 작용할 수 있습니다.
00:06:15멋집니다.
00:06:16매우 중요한 점은,
00:06:17이 모델이 일반적인 모델일 뿐만 아니라 특정하고 중요하며 흥미로운 비즈니스 문제를 해결하는 데도 매우 뛰어나다는 것입니다.
00:06:26예를 들어,
00:06:27왼쪽 예시에서 우리는 실제 이미지에서 이 치마를 추출하여 거의 즉시,
00:06:32다시 말해 몇 초 만에 제품 사진과 확대 이미지를 얻을 수 있습니다.
00:06:37이전에는 이러한 편집 모델이 없었을 때는 몇 시간, 며칠이 걸리거나 심지어 불가능했던 작업입니다.
00:06:44오른쪽 예시와 유사하게, 스케치에서 완전히 렌더링된 결과물을 몇 초 만에 얻을 수 있습니다.
00:06:50멋지죠.
00:06:51이미 언급했듯이, Flux Context는 텍스트-이미지 생성과 이미지 편집을 결합합니다.
00:06:58방금 몇 가지 예시를 보았습니다.
00:07:00이제 이것이 실제로 모델 파이프라인 측면에서 무엇을 의미하는지 간략하게 살펴보겠습니다.
00:07:06여기서는 고전적인 텍스트-이미지 파이프라인을 볼 수 있습니다.
00:07:11아주 간단합니다.
00:07:12우리 모두 알고 있습니다.
00:07:14텍스트 프롬프트를 사용합니다.
00:07:16모델을 통해 전달합니다.
00:07:18그러면 모델이 마법을 부립니다.
00:07:20잠시 후 이런 모델을 어떻게 만드는지 설명해 드리겠습니다.
00:07:24그러면 모델이 좋다면, 우리의 입력 텍스트 프롬프트를 따르는 이미지가 나옵니다.
00:07:30이미지 편집을 보면, 상당히 다르게 보입니다.
00:07:33우리는 모델에 이미지를 보여주는 방식으로 시작하고,
00:07:37전체 장면을 설명하는 텍스트 지시가 아니라 해당 이미지에 대한 변경 사항만을 추가합니다.
00:07:43여기에는 두 가지 조건이 있습니다.
00:07:46첫 번째 부분에서는 더 많은 입력만 있습니다.
00:07:49첫 번째 예시에서는 입력이 하나뿐이었습니다.
00:07:52이제 변경 사항을 설명하면 모델은 그 변경 사항에 따라 이미지를 수정해야 합니다.
00:07:58여기 교회처럼 일부 부분은 편집 후에도 동일해야 합니다.
00:08:02다른 부분은 그렇지 않습니다.
00:08:04이것이 바로 이러한 편집 모델이 하는 일입니다.
00:08:08상당히 다른 작업입니다.
00:08:09이것을 단일 모델로 결합하는 것은 실제로 매우 좋습니다.
00:08:13왜냐하면 모든 것을 할 수 있기 때문입니다.
00:08:16이미지를 생성한 다음 나중에 편집하여 훨씬 더 많은 유연성을 얻을 수 있습니다.
00:08:22이미 언급했듯이,
00:08:23이러한 편집 모델을 출시하기 전,
00:08:26또는 이러한 일반 편집 모델을 보기 전에는 텍스트-이미지 모델을 미세 조정하여 이러한 수준의 제어를 모델에 통합하기 위한 많은 작업이 있었습니다.
00:08:36하지만 이제는 더 이상 필요하지 않습니다.
00:08:39우리는 이것을 즉시 할 수 있습니다.
00:08:42이것은 좋은 결과를 얻는 데 필요한 시간을 크게 단축시킵니다.
00:08:47파이프라인 측면에서는 이렇습니다.
00:08:49이제 이러한 모델을 실제로 어떻게 훈련시킬 수 있는지 살펴보겠습니다.
00:08:54그리고 제가 이야기하고 싶은 매우 중요한 알고리즘이 있습니다.
00:08:58이러한 모델을 훈련할 수 있게 해주는 알고리즘은 Latent Flow Matching이라고 불리며,
00:09:06Latent와 Flow Matching이라는 두 가지 측면으로 구성되어 있습니다.
00:09:12이 두 가지에 대해 좀 더 자세히 설명해 드리고자 합니다..
00:09:24먼저 Latent부터 시작하겠습니다.
00:09:26이것은 잠재 생성 모델링에서 파생된 것입니다.
00:09:29이 알고리즘은 저와 공동 창립자들이 거의 5년 전에 고안한 것입니다.
00:09:33이것이 무엇을 의미하는지 설명하기 위해, 먼저 다음 예시를 살펴보겠습니다.
00:09:37제가 여기서 시각화한 것은 기본적으로 두 개의 이미지인데, 우리 눈에는 똑같아 보입니다.
00:09:43왼쪽은 JPEG이고, 오른쪽은 동일한 이미지를 PNG로 저장한 것입니다.
00:09:47따라서 왼쪽 이미지는 오른쪽 이미지의 근사치이지만, 우리는 어떤 차이도 느끼지 못합니다..
00:09:53아니면 이 두 이미지에서 차이를 보시는 분이 계신가요?
00:09:58없을 것 같습니다.
00:09:59좋습니다, 이제 이 이미지들의 파일 크기를 살펴보겠습니다.
00:10:03JPEG 파일의 크기는 실제로 PNG 파일 크기보다 거의 한 자릿수 정도 작습니다.
00:10:10이것은 상당히 놀라운 일이며,
00:10:12우리 모두 이미지 압축이 어떻게 작동하는지 알고 있지만,
00:10:17이미지에서 많은 정보를 눈치채지 못하게 제거할 수 있다는 사실을 깨닫는 것은 매우 놀랍다고 할 수 있습니다..
00:10:26따라서 이미지에는 우리 인간의 눈으로 인지할 수 없는 많은 정보가 분명히 존재합니다.
00:10:32이를 시각화하는 또 다른 방법은,
00:10:35이전 예시에서 PNG 이미지(원본 이미지)와 이 이미지의 근사치인 JPEG 이미지의 지각적 유사성을 파일 크기에 대비하여 그래프로 그리는 것입니다.
00:10:46이렇게 하면 이 그래프를 얻을 수 있습니다.
00:10:49이것은 개념적인 그래프이므로 실제 데이터는 아니지만, 개념적으로는 이렇게 생겼습니다.
00:10:56지각적 유사성은 빠르게 증가한 다음, 거의 전체 파일 크기에 걸쳐 일정한 수준을 유지합니다.
00:11:03이것이 바로 JPEG와 같은 손실 압축 알고리즘이 활용하는 부분이며,
00:11:08이제 여러분은 이것이 생성 모델링과 무슨 관련이 있는지 물을 수 있습니다.
00:11:13이는 이미지와 같은 지각 신호,
00:11:16즉 자연 신호(오디오도 마찬가지)가 실제처럼 보이거나 실제처럼 인지되기 위해서는,
00:11:22우리가 인지할 수 없는 모든 고주파 세부 사항을 모델링할 필요가 없다는 것을 보여줍니다.
00:11:28우리가 인지할 수 없는 모든 고주파 세부 사항을 모델링할 필요가 없으며,
00:11:34따라서 픽셀 공간에서 이러한 모든 고주파 세부 사항에 대해 생성 모델을 훈련하는 것은 실제로 컴퓨팅 자원과 시간의 엄청난 낭비가 될 것입니다.
00:11:45왜냐하면 모델이 우리가 인지하지도 못하는 측면을 표현하도록 학습할 것이기 때문에,
00:11:51이것을 학습하는 것은 무의미합니다,
00:11:53그렇죠?
00:11:54그리고 이것이 바로 잠재 생성 모델링의 핵심입니다.
00:11:58따라서 이미지에 대해 픽셀 공간에서 직접 생성 모델을 훈련하는 대신,
00:12:03우리는 더 낮은 차원의 소위 잠재 공간을 추출하는 압축 모델을 학습합니다.
00:12:08이 잠재 공간이 여기 중앙에서 보이는 것입니다.
00:12:12레이저 포인터가 작동하는지 보겠습니다.
00:12:15아, 네, 이 부분입니다.
00:12:17이 모델을 어떻게 학습할까요?
00:12:19사실 매우 간단합니다..
00:12:24여기 왼쪽에 이미지를 사용합니다.
00:12:26이미지를 인코더를 통해 전달합니다.
00:12:29사실상 이것은 오토인코더입니다.
00:12:31이미지를 인코더를 통해 전달하면 이 잠재 공간에 도달하고,
00:12:35이 표현을 정규화(regularisation)라는 작업을 통해 다시 전달합니다..
00:12:42이것은 모델이 이 잠재 표현에서 정보를 제거하도록 강제합니다.
00:12:47이는 이산적으로 또는 연속적으로 구현될 수 있으며, 그런 다음 이 잠재 표현에서 이미지를 다시 재구성합니다.
00:12:56따라서 고전적인 오토인코더를 훈련하여 기본적으로 입력과 유사한 재구성을 생성하도록 하며,
00:13:03매우 중요하게도 이 판별자 손실(discriminator loss)을 추가합니다.
00:13:10이것은 우리 인간의 눈에 지각적으로 중요한 세부 사항만 이 잠재 표현에 반영되도록 하는 사전 정보(prior)로 생각할 수 있습니다.
00:13:21다시 말해,
00:13:22이 정규화는 모델이 정보를 줄이거나 제거하도록 강제하고,
00:13:27판별자는 우리가 인지할 수 없는 올바른 정보를 제거하도록 합니다.
00:13:32이렇게 해서 이 모델을 훈련하고 나면, 생성 모델을 훈련하는 데 사용되는 이 잠재 공간에 도달하게 됩니다.
00:13:41잠재 공간은 입력 이미지 또는 지각적으로 동등한 이미지의 저차원 표현입니다.
00:13:47이것이 기본적으로 잠재 플로우 매칭 알고리즘의 잠재(latent) 측면입니다.
00:13:54이제 두 번째인 플로우 매칭에 대해 이야기해 봅시다.
00:13:58다시 말하지만, 제가 지금 설명하는 모든 것은 이 잠재 공간에서 일어납니다.
00:14:04따라서 우리가 지금 무엇을 하든, 여기에서 볼 수 있습니다.
00:14:09왼쪽에서 모든 이미지는 기본적으로 그 잠재 공간에 임베딩됩니다.
00:14:14네, 그럼 플로우 매칭에 대해 이야기해 봅시다.
00:14:18플로우 매칭 알고리즘은 매우 간단한 분포(저희의 경우 항상 표준 정규 분포)에서 변환하는 데 사용되는 일반적인 알고리즘 제품군입니다.
00:14:29따라서 우리는 지금 확률 분포에 대해 이야기하고 있습니다.
00:14:34여기에서 시각화했습니다.
00:14:36여기 매우 간단한 분포가 있습니다.
00:14:39플로우 매칭 알고리즘은 이 간단한 분포와 자연 이미지의 데이터 분포와 같이 매우 복잡한 분포 사이를 매핑하기 위해 신경망(여기 보이는 이 부분)으로 표현되는 벡터 필드를 훈련하는 수단을 제공합니다.
00:14:55이것이 데이터 분포입니다.
00:14:57이것을 훈련하기 위해 무엇을 할까요?
00:15:00플로우 매칭 알고리즘은 이를 수행하는 매우 간단한 수단을 제공합니다.
00:15:06훈련 중에 우리가 해야 할 일은 여기 표준 정규 분포에서 샘플을 추출하는 것입니다.
00:15:13그래서 우리는 샘플을 하나 가지고,
00:15:16그것을 데이터 분포에서 가져온 하나의 샘플,
00:15:19즉 훈련 예시에 할당하고,
00:15:21이것을 연결한 다음,
00:15:23이들을 직접적으로 선형적으로 연결하는 이러한 종류의 벡터를 구성할 수 있습니다..
00:15:34훈련 데이터셋의 모든 예시에 대해 이 작업을 수행하면,
00:15:38즉 예시를 가져와 표준 정규 분포에서 무작위로 점을 샘플링하고 연결하면,
00:15:44여기 보이는 이러한 종류의 구성된 벡터 필드에 도달하게 됩니다.
00:15:49이제 벡터 필드의 속성에 대해 많은 이야기를 할 수 있습니다.
00:15:54한 가지 중요한 속성은 벡터 필드에서 경로가 교차할 수 없다는 것인데,
00:16:00여기서는 많은 교차가 일어나고 있으므로,
00:16:03이것은 분명히 이 분포의 모든 점 사이,
00:16:06또는 이 분포와 저 분포 사이를 변환하는 진정한 벡터 필드가 아닙니다..
00:16:13플로우 매칭의 놀라운 점은,
00:16:15이 규칙을 따르기만 하면,
00:16:17즉 데이터 샘플과 표준 정규 분포에서 가져온 샘플 사이의 이러한 종류의 벡터를 항상 예측하도록 모델을 훈련하면 됩니다.
00:16:28그러면 우리는 진정한 벡터 필드에 도달하게 되는데, 그 모습은 이렇습니다.
00:16:34여기서는 경로가 더 이상 교차하지 않으며, 플로우 매칭 알고리즘이 이를 보장합니다.
00:16:41이것은 약간 마법처럼 보이지만, 수학적으로 적어보면 실제로 말이 됩니다.
00:16:47그리고 이처럼 우리는 표준 정규 분포와 우리의 데이터 분포 사이를 변환하는 이 진정한 벡터 필드를 표현하도록 모델을 훈련할 수 있습니다..
00:17:00그리고 중요하게도,
00:17:01우리는 텍스트 입력을 기반으로 이미지를 생성할 수 있기를 원하므로,
00:17:08모든 이미지 예시에 대해 이 네트워크를 항상 기본적으로 텍스트 입력에 조건화합니다.
00:17:17그렇다면 모델을 샘플링할 때 우리는 무엇을 하는 걸까요?
00:17:21우리는 이 두 분포 사이의 매핑을 나타내는 벡터 필드를 가지고 있습니다.
00:17:27우리가 하는 일은 표준 정규 분포에서 샘플로 시작하는 것입니다.
00:17:32컴퓨터로 샘플링할 수 있죠?
00:17:34우리 모두 알고 있습니다.
00:17:36그리고 신경망으로 표현된 이 궤적을 따라 통합합니다.
00:17:40간단한 오일러 전진 알고리즘으로 할 수 있습니다.
00:17:43아마 많은 분들이 아실 겁니다.
00:17:46따라서 수치 적분 방식을 사용하여 여기 이 궤적을 따라 적분한 다음 데이터 샘플에 도달할 수 있습니다.
00:17:53다시 디코더를 통해 전달하면 도착합니다.
00:17:56다시 말해, 이것은 잠재 공간에서 일어나지만, 여기서는 다시 픽셀 공간에 도달합니다.
00:18:03그리고 이것이 제가 텍스트 프롬프트를 기반으로 이미지를 생성하는 방법입니다.
00:18:09멋지죠.
00:18:09한 가지, 이러한 수치 적분 방식은 꽤 많은 단계를 사용한다고 생각합니다.
00:18:15그래서 이 과정을 최대 50단계로 세분화합니다.
00:18:19따라서 이러한 잠재 플로우 매칭 모델은 본질적으로 꽤 느려서 이미지를 생성하는 데 약 30초에서 1분 정도 걸리는데,
00:18:28이는 다소 긴 시간입니다..
00:18:32곧 이 모델들을 어떻게 빠르게 만드는지 설명해 드리겠습니다.
00:18:35하지만 이것이 일반적인 잠재 플로우 매칭 알고리즘입니다.
00:18:39다시 말해, 잠재(latent)는 우리가 모델을 훈련하는 이 잠재 공간을 연결하거나 나타냅니다.
00:18:45그리고 플로우 매칭 알고리즘은 방금 여기서 논의한 것입니다.
00:18:48좋습니다,
00:18:49이제 텍스트 프롬프트를 기반으로 이미지를 생성하는 방법을 설명했지만,
00:18:53이것이 편집 모델인 컨텍스트에 어떻게 적용될까요?
00:18:56이것도 매우 간단합니다.
00:18:57이것은 기본적인 Flux Context 아키텍처입니다.
00:19:01트랜스포머 모델입니다.
00:19:02우리 모두 알고 있습니다..
00:19:05조금 특별하지만, 마법은 입력에 있습니다.
00:19:08여기 왼쪽에서 모델의 입력을 볼 수 있습니다.
00:19:12먼저 텍스트 인코더에 의해 텍스트 토큰 집합으로 임베딩되는 텍스트 입력이 있습니다.
00:19:18그리고 지난 슬라이드에서 이미 보았던 이미지 인코더가 있습니다, 그렇죠?
00:19:24여기 이 부분입니다.
00:19:25이것이 지금 여기서 보는 것입니다.
00:19:28그래서 이 이미지 인코더가 있고, 여기에는 두 세트의 시각 토큰이 있습니다.
00:19:34첫 번째는 실제로 생성하는 데 사용하는 시각 토큰 집합입니다.
00:19:39이것이 출력 이미지가 될 것입니다.
00:19:42그리고 이미지 편집을 하고 싶다면,
00:19:44컨텍스트 이미지를 모델링하거나 나타내는 두 번째 시각 토큰 집합이 있습니다.
00:19:50즉, 모델에 보여주는 참조 이미지입니다.
00:19:54그리고 나서 이것을 트랜스포머 모델로 전달합니다.
00:19:57이것은 소위 이중 스트림 블록(double stream blocks)을 포함하고 있기 때문에 특별합니다.
00:20:06이것들은 각 충실도(fidelity)에 대한 일종의 전문가 모델이라고 할 수 있습니다.
00:20:13그래서 여기서는 시각 토큰과 텍스트 토큰을 별도로 처리합니다..
00:20:20어텐션 연산을 제외한 모든 것에 대해, 어텐션 연산은 모든 토큰에 걸쳐 공동으로 발생합니다.
00:20:28그리고 어텐션 연산 전에 모든 입력과 텍스트 토큰,
00:20:33시각 토큰을 동일한 매핑으로 기본적으로 매핑하는 표준 블록,
00:20:38즉 표준 트랜스포머 블록이 있습니다.
00:20:42그리고 이렇게 하면 이미지 편집으로 바로 들어갈 수 있습니다..
00:20:48여기에 입력 이미지를 제공하고 텍스트 이미지 생성을 할 때는 이것을 제공하지 않으면 텍스트 프롬프트만 입력으로 사용됩니다,
00:20:57그렇죠?
00:20:58멋지죠.
00:20:58마지막으로 한 가지 더 말씀드리겠습니다.
00:21:01이 모델은 어떻게 그렇게 빠를까요?
00:21:04Flux 모델을 아는 분이 얼마나 계신지 모르겠습니다.
00:21:08혹시 Flux 모델을 아시는 분은 손을 들어주시겠어요?
00:21:12아, 몇 분 계시네요.
00:21:14좋습니다, 멋지네요.
00:21:15그래서 우리 모두 이 모델들이 꽤 빠르다는 것을 알고 있습니다, 그렇죠?
00:21:21제가 빠르다고 말할 때 무슨 의미일까요?
00:21:24저희 모델은 기본적으로 비교 가능한 모델보다 대부분 몇 배나 더 빠릅니다.
00:21:29예를 들어, 여기서는 분명히 매우 느리지만 훌륭한 모델인 GPD 이미지 1을 살펴봅니다.
00:21:36편집에서도 Flux 모델은 10배 이상, 심지어 20배 이상 빠릅니다.
00:21:41그래서 비교적 강력한 모델들과 비교했을 때 얼마나 빠른지는 정말 놀랍습니다.
00:21:47그 이유는 저희가 2, 3년 전에 개발한 알고리즘 때문입니다.
00:21:51이 알고리즘은 적대적 확산 증류(adversarial diffusion distillation)라고 불리며,
00:21:59이 알고리즘의 목표는 수치 적분 단계의 수를 줄이는 것입니다.
00:22:04앞서 말씀드렸듯이,
00:22:05표준 플로우 매칭 모델의 경우 대부분 50단계인데,
00:22:09여기서는 이를 4단계까지 줄이는 것이 목표입니다.
00:22:13각 수치 적분 단계는 신경망을 통한 순방향 전달을 의미하므로,
00:22:18이것이 오랜 시간이 걸린다는 것을 짐작할 수 있습니다.
00:22:22따라서 가능한 한 많이 줄이고자 합니다.
00:22:25어떻게 작동할까요?
00:22:26여기에서 교사(teacher)와 학생(student)이라는 두 개의 네트워크를 초기화합니다.
00:22:33둘 다 방금 보여드린 알고리즘을 통해 학습된 플로우 매칭 모델에서 초기화됩니다.
00:22:39그리고 나서 우리는 학생 모델이 교사 모델이 50단계에서 얻는 것과 동일한 이미지 품질을 4단계에서 얻도록 훈련합니다.
00:22:48이것이 목표이며, 이렇게 합니다.
00:22:50이미지로 시작하여,
00:22:52여기에서 다시 잠재 공간으로 인코딩한 다음,
00:22:55학생 모델을 위해 4단계 또는 우리가 원하는 목표 단계 수로 출력 이미지를 생성합니다.
00:23:01그리고 다시 픽셀로 디코딩합니다..
00:23:08처음에는 여기 이 이미지가 매우 흐릿하고 비현실적으로 보입니다.
00:23:12그리고 목표는 당연히 이것을 개선하는 것입니다.
00:23:16그래서 우리는 이것을 다시 사용하여,
00:23:18다시 잠재 공간으로 인코딩한 다음,
00:23:20교사 모델로 동일한 작업을 수행하지만 4단계 대신 50단계로 수행합니다.
00:23:25그러면 고품질 이미지가 생성되고, 우리는 이 증류 손실(distillation loss)을 사용합니다.
00:23:32기본적으로 교사 또는 학생의 분포가 교사의 분포와 일치하도록 보장하는 손실입니다.
00:23:38이것만으로는 불행히도 실제처럼 보이는 이미지를 기본적으로 생성할 수 없습니다.
00:23:43그래서 우리는 또 다른 판별자 손실(discriminator loss)을 추가합니다.
00:23:49이전에 강연의 잠재 생성 모델링 부분에서 오토인코더 부분에서 이미 이것을 보았습니다.
00:23:55이것은 기본적으로 동일합니다.
00:23:57그래서 우리는 학생 모델이 생성한 이미지와 여기에 입력하는 실제 이미지를 구별하도록 판별자를 훈련합니다.
00:24:04그리고 이것은 dyno v2 특징 공간 또는 학습된 이미지 표현 모델 공간에서 일어납니다.
00:24:10그리고 이렇게 하면 결국 모델을 훈련하여 50단계를 사용하는 대신 4단계만 사용하여 사실적인 이미지를 생성할 수 있습니다.
00:24:19그것은 분명히 엄청난 속도 향상입니다.
00:24:21하지만, 마지막으로 한 가지 더 말씀드리겠습니다.
00:24:24여기 이 부분을 보면, 꽤 많은 오버헤드가 있는 것 같습니다, 그렇죠?
00:24:29왜냐하면 여기서는 잠재 공간으로 침범해야 하기 때문입니다.
00:24:33그래서 이미지 공간에서 시작하여 잠재 공간으로 변환된 다음,
00:24:37다시 디코딩하고,
00:24:38다시 인코딩하고 디코딩해야 합니다.
00:24:41그리고 이 부분도 다시 다른 표현 공간으로 인코딩됩니다.
00:24:45많은 오버헤드, 이와 관련된 많은 메모리 비용이 발생합니다.
00:24:49그리고 이것은 정말, 우리가 이것을 고안했을 때 놀라웠습니다.
00:24:53왜냐하면 빠른 모델을 훈련할 수 있게 해주었기 때문입니다.
00:24:57이것을 훈련하는 데 많은 노력이 필요했습니다.
00:25:00그래서 우리는 '이것을 어떻게 단순화할 수 있을까?'라고 생각했습니다?
00:25:05그리고 답은 항상 답입니다.
00:25:07픽셀이 있을 때마다 잠재 공간으로 옮기세요.
00:25:10그래서 저희는 잠재 적대적 확산 증류(latent adversarial diffusion distillation) 접근 방식을 고안했습니다.
00:25:19이것은 기본적으로 일반적인 잠재 생성 모델링 알고리즘에 대해 우리가 했던 것과 매우 유사합니다.
00:25:26우리는 여기 모든 것을 잠재 공간으로 옮깁니다.
00:25:29같은 방식이지만, 이러한 인코더와 디코더를 사용할 필요 없이 그냥 없앨 수 있습니다.
00:25:35그리고 중요하게도, 판별자로 더 이상 dyno를 사용하지 않습니다..
00:25:44이 이미지 표현 모델은 교사 모델을 사용합니다.
00:25:47왜냐하면 교사 모델은 어차피 잠재 공간에 이미 존재하며, 매우 훌륭한 이미지 표현을 제공하기 때문입니다.
00:25:54따라서 교사 모델을 판별자로도 사용할 수 있습니다.
00:25:57그리고 나머지는 기본적으로 거의 동일합니다.
00:26:00증류 손실도 제거합니다.
00:26:01필요 없다는 것을 알게 되었는데, 이것도 멋진 점입니다..
00:26:06그래서 손실이 줄어들고 모든 것이 단순화됩니다.
00:26:10그리고 이처럼 우리는 매우 메모리 효율적인 방식으로 통합 단계를 5단계에서 4단계로 줄일 수 있습니다.
00:26:21그래서 12.5배의 속도 향상을 얻었고,
00:26:25이것이 바로 이 섹션 초반에 보여드린 그래프에서 볼 수 있는 그 정도의 규모입니다.
00:26:34그래서 이것이 기본적으로 플로우 매칭, 즉 기본 플로우 매칭 모델에서 매우 빠른 모델을 얻는 방법입니다.
00:26:45이제 강연이 끝나기 전에, Flux가 실제로 어떻게 작동하는지 보여드리기 위해 데모를 준비했습니다.
00:26:55한번 보시죠.
00:26:57그럼 여기서 이미지 편집에 사용해 보겠습니다.
00:27:01잠시 후에 뭔가 업로드하겠습니다.
00:27:05여기서 뭘 하고 있죠.
00:27:07이게 좋아 보이네요?
00:27:09네.
00:27:10좋습니다.
00:27:10네.
00:27:11좋습니다.
00:27:12여기 제가 가장 좋아하는 축구 클럽인 SC 프라이부르크 축구 클럽의 로고로 시작하겠습니다.
00:27:21미국에서는 '축구'라고 말해야겠죠.
00:27:25좋습니다.
00:27:26이 클럽은 제가 가장 좋아하는 클럽이고, 이 로고로 티셔츠를 만들고 싶습니다.
00:27:34그럼 이 로고를 티셔츠에 넣어보겠습니다.
00:27:38앞에 화면이 없어서 좀 이상하네요.
00:27:42좋습니다.
00:27:42자, 시작합니다.
00:27:44생성 중입니다.
00:27:46이걸 좀 더 작게 만들어 볼게요..
00:27:53아마 이렇게요.
00:27:55좋습니다.
00:27:56좋네요.
00:27:56몇 초 기다리면 티셔츠에 멋진 로고가 새겨진 것을 볼 수 있습니다.
00:28:03그리고 이제 좋은 점은 우리가 계속 진행할 수 있다는 것입니다, 그렇죠?
00:28:10이것을 반복해서 수정할 수 있습니다.
00:28:14예를 들어, 이 로고가 좀 너무 크다고 할 수 있겠네요.
00:28:19로고를 더 작게 만들고 나머지 부분에 놓아보겠습니다.
00:28:24다시요.
00:28:25몇 초 기다립니다.
00:28:27좋습니다.
00:28:28멋지네요.
00:28:29그리고 정말 멋진 결과에 도달합니다.
00:28:32제가 원했던 바로 그겁니다.
00:28:35다시 이것으로 시작하고 싶습니다.
00:28:38그리고 이제 색상을 바꾸고 싶습니다.
00:28:42왜냐하면 SC 프라이부르크의 색상은 검정이 아니라 빨강이기 때문입니다.
00:28:49그래서 티셔츠를 빨간색으로 만들겠습니다.
00:28:53이것도 매우 간단합니다.
00:28:55이제 로컬 편집을 하고 있습니다.
00:28:58이미지의 특정 부분만 편집하는 거죠?
00:29:02이 경우 색상입니다.
00:29:04그리고 중요하게도,
00:29:06우리는 몇 가지 편집을 했지만 로고가 여전히 매우 일관되게 표현되고 있음을 볼 수 있습니다.
00:29:15이것이 우리가 보았던 캐릭터, 또는 이 경우 객체 일관성입니다.
00:29:21이것은 매우 중요합니다.
00:29:23어떤 객체를 가지고 특정 맥락에 배치하고 싶어 하는 마케터를 생각해 보세요, 그렇죠?
00:29:32비즈니스 가치 측면에서 이것은 훌륭하고 매우 중요합니다.
00:29:37그리고 이제 마지막으로 좀 더 복잡한 변환을 추가해 보겠습니다.
00:29:43티셔츠를 공원을 걷는 남자에게 입히라고 말할 수 있습니다.
00:29:49앗.
00:29:49이것은 복잡한 변환이며,
00:29:52여러분은 '색상 변경 같은 것은 포토샵으로 할 수 있잖아?'라고 말할 수도 있습니다,
00:30:00그렇죠?
00:30:01역사적으로 그런 종류의 작업은 표준 또는 이전의 비AI 이미지 생성 도구로는 할 수 없었던 일입니다?
00:30:11이것은 정말 멋집니다.
00:30:13그래서 이제 이런 종류의 결과가 나왔고,
00:30:17마지막으로,
00:30:18시간이 다 된 것 같지만,
00:30:20이 모델이 얼마나 일반적인지 보여주는 마지막 한 가지를 해보겠습니다.
00:30:27스타일 전송도 할 수 있습니다, 그렇죠.
00:30:31그럼 이것을 수채화로 만들어 보겠습니다.?
00:30:42좋습니다, 마지막입니다.
00:30:44그리고 이러한 모델이 나오기 전에는 아마도 각 작업마다 개별적으로 미세 조정을 훈련해야 했을 텐데,
00:30:53이제는 이 모든 것을 하나로 결합할 수 있다는 것이 정말 멋집니다.
00:30:59좋네요.
00:31:00이제 이것을 인쇄해서 벽에 걸어둘 수도 있겠네요.
00:31:04어쨌든, 네, 이것이 이 모델들의 힘을 보여준다고 생각합니다.
00:31:10아, 뭔가 충돌했네요.
00:31:12마지막 슬라이드를 보여드리고 싶었는데, 시간이 다 되어서요.
00:31:17저희는 채용 중입니다.
00:31:19저희와 함께하고 싶으시다면 여기를 스캔하시거나,
00:31:23방금 보여드린 데모를 자유롭게 이용할 수 있는 플레이그라운드를 방문해 주세요.
00:31:30정말 감사합니다.
00:31:32뭔가 배우셨기를 바랍니다..