Week 40 - 내가 말하는 걸 보여줘, DALL-E

Week 40 - 내가 말하는 걸 보여줘, DALL-E

주변에 디자이너 친구들과 얘기를 하면 분명 회의에서 원하는 것을 잘 상의하고 말로 정리를 잘했는데, 그걸 비주얼로 만들어 나온 것을 공유하면, 상사가 "아니, 내가 원했던 건 그게 아니고..."하는 경우가 많다고 합니다.

그만큼 글이나 말로 된 언어와 시각적으로 표현된 비주얼 언어에는 큰 차이가 있다는 것을 알 수 있습니다. 근데 그렇게 어려운 걸 NLP이 모델이 해낼 수 있다고 하면 믿으실 수 있겠습니까.

"설명하지 말고 보여줘라! (Show! Don't tell!)"은 주로 좋은 글을 쓰는 방법에 나오는 조언 중 하나입니다. 말로 설명하는 것보다 이야기나 어떤 예시로 보여주는 것이 더 효과적이란 얘기죠.

NLP에서 현재 글을 제일 잘 쓰는 모델은 OpenAI의 GPT-3라는 것은 <위클리 NLP>를 열심히 읽으신 구독자라면 이미 알고 계실겁니다.

근데 이 GPT가 Show! Don't Tell!을 너무 말그대로 받아들였는지 진화를 해버렸습니다. 바로 2021년 1월에 발표된 DALL-E라는 모델입니다. 이 모델은 내가 쓴 글을 그대로 이미지로 생성해냅니다. 얼마나 그걸 잘 하냐고요? 이런건 어떨까요?

"아보카도 모양을 가진 의자"

위 글을 보고 생성된 이미지

이번주에는 NLP와 Computer Vision이 혼합된 모델 DALL-E에 대해 알아봅니다.

텍스트에서 이미지로 (TEXT-TO-IMAGE)

지난 Week 24에서 Image-to-Text 문제를 소개했었습니다. 이미지를 보고 이를 설명하는 캡션을 달아주는 모델, 아이에게 그림 책을 읽어줄 수 있는 AI. 이 모델이 처음 나왔을 때 저는 정말 신박하다고 생각했습니다.

Text-to-image는 이것의 정반대입니다.

텍스트를 읽고 이미지를 생성하는 문제. 곰곰히 생각해보면 난이도가 훨씬 더 어려운 문제라는 것을 알 수 있습니다. 어찌보면 인간의 상상력을 넘어야 하는 문제이기 때문이죠. "아보카도 모양을 가진 의자"라는 텍스트를 읽으면 머리 속에 어렴풋이 어떤 그림이 그려지실 것 입니다. 하지만 이를 실제로 종이나 스크린에 비쥬얼로 옮기는 것은 또다른 차원의 능력입니다. 그렇기 때문에 그래픽 디자이너라는 직업이 존재할 수 있겠죠.

하지만 DALL-E는 수많은 이미지와 텍스트 데이터를 통해 text-to-image를 해냅니다.

"오각형의 초록색 시계"를 보고 생성된 DALL-E의 이미지

트랜스퍼 (TRANSFORMER) 복습하기

Week 25에서 소개했던 트랜스포머 모델은 기계 번역을 위해 처음 태어났습니다. 단어를 하나하나 보는 RNN보다 더 효과적으로 Self-attention이라는 원리를 통해 더 빠르고 효과적으로 단어 간의 관계를 학습할 수 있는 모델이죠.

기계 번역에 활용된 트랜스포머 (이미지 출처)

Week 29에서 소개한 GPT는 트랜스포머를 기반으로 한 언어 모델입니다. 기계 번역 모델에서 인코더(encoder) 부분만 떼버린 것이 GPT라고 설명드렸죠. 기계 번역은 한 언어에서 다른 언어로 바꾸어야 하기 때문에 인코더(encoder)-디코더(decoder)가 필요했지만, 언어 모델은 하나의 언어로만 하기 때문에 디코더 트랜스포머만 있어도 충분했습니다.

트랜스포머 디코더만 활용한 GPT (이미지 출처)

DALL-E의 트랜스포머

DALL-E의 트랜스포머는 GPT-3와 구조가 똑같습니다. 다만 들어가는 데이터의 형태가 다를 뿐이죠. 바로 텍스트 토큰와 이미지 토큰이 함께 하나의 데이터 스트림으로 구성된다는 점이 큰 차이점입니다.

앞에 먼저 텍스트 "야구 타자가 휘두르기 직전"이 텍스트 토큰화 되어 있습니다. 그리고 텍스트 토큰이 다 끝난 다음에는 이미지가 들어갑니다. 여기서 흥미로운 것은 이미지를 펴서 일직선으로 만든다는 점입니다. 예를 들어, 32x32 픽셀로 구성된 이미지는 일자로 펴 1024개가, 마치 한 단어, 한 단어 들어가듯이, 하나의 토큰으로 변환된다는 것 입니다.

이게 무슨 말이냐면 픽셀에 들어갈 수 있는 여러 종류의 RGB 값을 NLP의 언어 모델에서 다음에 나올 수 있는 하나의 단어처럼 취급한다는 것 입니다. 예를 들어,

모델은 주어진 텍스트 그리고 여태까지 자신이 예측한 픽셀값들을 전부 고려하여 다음 픽셀이 무엇일지 예측(생성)합니다. 그렇기 때문에 텍스트의 내용과도 연관이 있으면서도 이미지도 제대로 된 형태를 갖출 수 있도록 다음 픽셀을 생성할 수 있게 학습이 되는 것 입니다.

이렇게 한 개 한 개 픽셀을 생성하고나면 마지막에는 이걸 다 이어 붙여 다시 32 x 32의 2D 이미지로 재구성합니다.

*심화: 이미지가 너무 고화질이면 예측해야 하는 픽셀 값이 기하급수적으로 늘어나겠죠. 1024x1024만해도 벌써 2^20입니다. 그렇기 때문에 DALL-E에서는 Discrete Autoencoder라는 다른 모델을 학습시켜 이미지를 압축시키는 과정을 먼저 합니다.

DALL-E 예시

백분불여일견(百聞不如一見), 설명하는 것보다 직접 봐야 이 모델이 얼마나 대단한지 알 수 있습니다.

DALL-E는 위치공간에 대한 패턴을 가진 텍스트도 생성합니다.
세상에 없는 컨셉도 만들어낼 수 있습니다.
자세히 설명하지 않아도 단어에 내포된 의미도 척척 생성합니다.
OpenAI라고 "가게 앞"에 써있는 모습

"이 같은 고양이의 스케치를 따서 밑에 그린거". 절반 위의 고양이는 미리 주어졌습니다

정말 신기하죠? OpenAI 블로그에 가면 더 많은 결과를 볼 수 있습니다.

DALL-E 이름은 무슨 뜻일까?

제가 보통은 이런 모델들을 소개할 때 이름부터 소개를 하고는 하는데, 이번에는 결과가 너무 인상 깊어서 이름 소개 조차 까먹었습니다.

DALL-E는 미술가 살바도르 달리(Salvador Dalí)와 픽사의 로봇 캐릭터 WALL-E의 이름을 합성해서 지은 것이라고 합니다. 포스트의 대표 사진을 통해 이미 눈치를 채셨을지도 모르겠습니다.

DALL-E의 스케일

DALL-E를 학습시키는데 필요한 데이터는 약 2500만 개의 텍스트-이미지 쌍이라고 합니다. 처음에 330만 개로 시작해봤다가 모델 사이즈도 늘리면서 데이터의 양도 늘렸다고 합니다. 단순히 이미지 뿐만 아니라 이를 설명한 텍스트까지 함께 있어야 하니 이러한 데이터를 구축하는 것도 쉽지는 않았을 것 같습니다. 전부 인터넷에서 모았다고는 하지만요.

최종 모델은 약 120억 파라미터(parameter)를 가진 아주 큰 모델입니다. GPT-3이 1750억 개이니 이에 비해서는 작다고 생각할 수도 있지만, 여전히 어마어마한 사이즈입니다. 원 논문에는 GPU 분산 트레이닝에 관한 내용도 나와있으니 관심있으시면 참고하시길 바랍니다.

DALL-E는 공개되어 있는가?

아쉽게도 OpenAI는 더이상 전처럼 오픈하지 않습니다. 이 모델은 오픈소스로 공개되어 있지 않습니다. GPT-3처럼 상용화를 준비하고 있지 않나 조심스럽게 예상해봅니다. 다만, 이 모델은 그렇게 복잡하지 않기 때문에 직접 구현하는게 어렵지는 않을 것 같습니다. 물론 많은 데이터와 큰 모델을 돌릴만한 GPU는 알아서 준비해야겠지요.

DALL-E의 활용 방법?

OpenAI의 블로그에서는 패션이나 실내 인테리어 디자인에서의 활용 가능성을 염두로 둔 예시를 보여주고 있습니다만, 아직까지는 구체적인 어플리케이션은 나와있지 않습니다.

디자이너들의 창의력에 좀 더 영감을 불어 넣어줄 수 있는 툴이 될 수 있을까요? 아니면 템플릿으로 간단한 패턴이 있는 디자인들은 DALL-E로 생성하는 날이 올까요? 혹시 떠오르는 아이디어가 있으시면 댓글로 남겨주세요!

아직 저화질의 이미지 밖에 생성하지 못한다는 점, 생성된 이미지가 바로 쓰이기에는 퀄리티가 아쉽다는 점 등 상용화에는 보완해야 할 것이 있어 보입니다.

텍스트에 따라 생성된 마네킹에 걸린 옷

오늘은 OpenAI가 또 한번 세상을 놀래킨 Text-to-Image 모델 DALL-E에 대해서 알아보았습니다. 이처럼 여러가지 형태의 인풋을 혼합한 모델을 멀티 모달(Multi-modal)이라고 합니다. 이 연구는 NLP와 Computer Vision의 기술이 융합되어 엄청난 것이 나온 예시라고 할 수 있습니다. 지난 Google I/O 리뷰에서 소개한 MUM 역시 멀티 모달 방식의 기술입니다.

제가 요즘에 이러한 NLP + ? 의 멀티 모달 연구에 관심이 많아져 이것저것 보고 있는 중인데, 앞으로 몇 개의 글은 시리즈처럼 연재해보려고 합니다. DALL-E는 이 멀티모달 시리즈의 좋은 스타트라고 생각하여 소개해보았습니다.

REFERENCE

Read more

AI 코딩 툴을 사용할 때의 나의 원칙

AI 코딩 툴을 사용할 때의 나의 원칙

지난 글에서는 어떤 AI 코딩 툴을 어떻게 쓰는지 공유했었습니다. 이번에는 툴을 계속 사용하면서 머리 속에 쌓인 원칙들을 적어보았습니다. 항상 이러한 생각들을 하며 툴을 사용해야 좀 더 체계적으로, 생산적인 방향으로 일이 진행되는 것 같습니다. 사분면 (Quadrants) 현재 하고 있는 일이 4개의 사분면 중 어디에 있는지 생각한다. * 사분면 1 - 높은 임팩트

By Park Ji Ho
AI 코딩 툴 어떤 거 쓰세요?

AI 코딩 툴 어떤 거 쓰세요?

구글 IO 2023은 제 커리어에서 정말 기억에 남는 순간이었습니다. 구글 CEO 순다 피차이가 무대에서 보여준 데모 코드의 일부는 제가 리뷰했던 코드였거든요. 당시 구글의 플래그쉽 모델이었던 PaLM이 버그를 고쳐줄 뿐만 아니라, 주석을 한국어로도 달아줄 수 있다는 데모였습니다. 당시 Bard(현 Gemini App)가 처음으로 지원하는 외국어로 한국어와 일본어로 발표되기도 했습니다. 이

By Park Ji Ho
미국으로 이사왔습니다!

미국으로 이사왔습니다!

제게 큰 영향을 준 책 중 하나는 나심 탈레브의 Antifragile입니다. 탈레브는 optionality에 대해 자주 이야기합니다. 제가 이 책에서 가장 인상 깊게 읽은 부분은 인생에서의 선택지란 내 삶을 무한한 업사이드(unlimited upside)와 제한된 다운사이드(limited downside)가 있는 상황에 있어야 된다라는 것입니다. 다운사이드, 즉 떨어질 수 있는 한계를 제한하는 일은

By Park Ji Ho