이미지 생성 모델 FLUX는 빠르고 오픈 소스입니다
(replicate.com)- Replicate에서 FLUX 실행 속도가 크게 빨라졌고, 최적화 코드까지 공개되어 구현 확인과 커스텀 확장이 가능해짐
- 종단 간 측정 기준으로 FLUX.1 [schnell] 은 512x512·4 steps 0.29초, 1024x1024·4 steps 0.72초까지 내려감
- 속도 개선은
flux-fp8-api기반 최적화,torch.compile, nightly Torch의 빠른 CuDNN attention 커널, 새 동기식 HTTP API가 결합된 결과임 flux-fp8-api의 양자화는 출력을 약간 바꾸지만 품질 영향은 작았고, 필요하면go_fast=false로 끌 수 있음- Replicate는 FLUX 개선 사항을 공개하며, AI Compiler Study Group 및 연구자들과 함께 빠른 오픈 소스 FLUX를 만드는 쪽으로 협력 중임
FLUX 실행 속도와 공개 데모
- Replicate에서 FLUX 모델 실행이 더 빨라졌고, 최적화 구현은 오픈 소스로 공개됨
- 미국 서부에서 Python 클라이언트를 사용해 측정한 종단 간 속도는 다음과 같음
- FLUX.1 [schnell], 512x512, 4 steps: 0.29초, P90 0.49초
- FLUX.1 [schnell], 1024x1024, 4 steps: 0.72초, P90 0.95초
- FLUX.1 [dev], 1024x1024, 28 steps: 3.03초, P90 3.90초
- FLUX.1 [schnell] 데모는 실시간 입력 방식으로 제공되며, 전체 앱과 소스 코드도 확인할 수 있음
최적화 방식과 품질 제어
- Replicate의 많은 모델은 커뮤니티가 기여하지만, FLUX 모델은 Black Forest Labs와 협력해 유지됨
- 속도 개선에는 두 가지 작업이 적용됨
- Alex Redden의 flux-fp8-api를 출발점으로 삼고,
torch.compile과 nightly Torch 빌드의 빠른 CuDNN attention 커널을 사용함 - Replicate의 새 동기식 HTTP API를 추가해 모든 이미지 모델이 더 빠르게 동작하도록 함
- Alex Redden의 flux-fp8-api를 출발점으로 삼고,
flux-fp8-api의 양자화는 모델 출력을 약간 바꾸지만, 품질 영향은 작았음- FLUX.1 [schnell]과 FLUX.1 [dev]에서 수천 개 프롬프트 출력을 비교하는 도구가 있으며, 비교 결과를 직접 볼 수 있음
go_fast입력을false로 설정하면 해당 최적화를 비활성화할 수 있음
- 모델 제공자가 품질에 영향을 주는 최적화를 적용하는지 불명확한 경우가 많기 때문에, Replicate는 최적화 방식을 공개하고 사용자가 끌 수 있게 함
오픈 소스 코드와 활용 경로
- FLUX 최적화 코드는 github.com/replicate/cog-flux에 공개됨
- Replicate는 FLUX 개선 사항을 오픈 소스로 공개하고, AI Compiler Study Group 및 AI 연구자들과 협력해 빠른 오픈 소스 FLUX 버전을 만들고 있음
- FLUX로 할 수 있는 작업은 다음과 같음
댓글과 토론
Hacker News 의견들
-
텍스트-이미지 모델은 비효율적으로 느껴짐. 텍스트→장면 그래프→의미론적으로 분할된 이미지→최종 이미지처럼 단계를 나누는 편이 가능하고 더 나을지 궁금함
각 단계를 따로 학습하고 모듈화할 수 있고, 새 프롬프트 출력으로 통째로 갈아엎는 대신 이미지를 더 쉽게 편집할 수 있을 것 같음. 그러면 "객체 x가 객체 y 옆에 있고, 그 위에 foo라는 글자가 있음" 같은 생성이 훨씬 쉬워지고, 예술 스타일이나 사실성 수준은 프롬프트 준수와 분리된 최종 렌더링 모델에 맡길 수 있음
비디오 게임 출력을 향상하는 video2video나 프레임별 img2img 모델과 비슷한 느낌임
https://www.theverge.com/2021/5/12/22432945/intel-gta-v-real...
https://www.reddit.com/r/aivideo/comments/1fx6zdr/gta_iv_wit...- 일반적으로 이런 접근은 신경망 기반 모델에서 계속 실패한다는 게 여러 번 드러났음
a→b로 가는 신경망과 b→c로 가는 신경망을 학습할 수 있다면, 보통 그 조합을 a→c로 직접 가는 더 단순한 신경망으로 대체할 수 있음. a를 b로 변환하면서 잃는 정보가 있을 수 있으니 말이 됨. 단일 신경망은 c를 만들기 위해 필요한 a의 관련 정보가 상위 층으로 전달되도록 보장함 - 이건 이미지 인식 같은 분야에서 오래 실패하다가 결국 더 크고 깊은 행렬로 밀어붙여 해결한 접근과 본질적으로 같은 것 아닌가 싶음
특징을 추출하고 인간처럼 추론하는 방식은 그럴듯하지만, 결국 컴퓨터가 순수하게 하는 패턴 매칭을 확장하는 쪽이 더 쉬웠던 것으로 보임 - AI 예술이 모듈식 접근으로 가면 좋겠음. 캐릭터, 배경, 스타일, 카메라 움직임을 각각 별도 단계에서 생성하는 식임
모든 것을 한 번에 설명하고 결과가 마음에 들기를 바라는 방식은 말이 안 됨 - 확산 모델이 본질적으로 그렇게 함. 다만 "장면 그래프"와 "전체 이미지" 사이에 명확한 경계가 없을 뿐임
노이즈에서 시작해서 점진적으로 더 많은 디테일을 추가함 - 여기에는 이미지가 객체들의 모음이라는 잘못된 가정이 있음. 이미지는 반드시 그렇지는 않음
나는 얼어붙은 청록색 복숭아 솜털 사진을 원함
- 일반적으로 이런 접근은 신경망 기반 모델에서 계속 실패한다는 게 여러 번 드러났음
-
비상업 라이선스는 오픈소스가 아님. 원 저작권자가 유지보수를 멈추면 다른 사람이 이어갈 수 없거나, 공짜 노예처럼 일해야 하기 때문임
오픈소스의 핵심은 원 저자가 작업을 멈췄을 때 무슨 일이 가능하냐에 있음. 오픈소스는 누구에게나 개발을 계속할 라이선스를 주고, 이는 당연히 돈을 받을 수 있는 능력도 포함. 이 측면이 빠져 있으면 오픈소스라고 부르면 안 됨
FLUX.1 [schnell] 만 오픈소스(Apache2)이고, FLUX.1 [dev]는 비상업 라이선스임- FLUX.1-schnell 모델을 미세조정하고 증류를 걷어낸 OpenFLUX.1이 있음. OpenFLUX.1은 Apache 2.0 라이선스임
https://huggingface.co/ostris/OpenFLUX.1/ - 오픈소스는 소스가 보이고 검사 가능하다는 뜻 아닌가? 소스를 볼 수 있게 해주는 폐쇄 소스 앱은 아는 게 없음
- FLUX.1-schnell 모델을 미세조정하고 증류를 걷어낸 OpenFLUX.1이 있음. OpenFLUX.1은 Apache 2.0 라이선스임
-
FLUX.schnell을 쉽게 써보고 싶으면 프롬프트를 Pollinations URL에 넣으면 됨
https://pollinations.ai/p/a_donkey_holding_a_sign_with_flux_...
https://pollinations.ai/p/a_donkey_holding_a_sign_with_flux_...
https://pollinations.ai/p/Minimalist%20and%20conceptual%20ar...
속도가 정말 놀라움. L40S GPU 세 장만으로 사용자용 이미지를 30분마다 8000장 생성함. 참고로 Pollinations 쪽 사람임- 여기서 "만"이라는 표현은 대부분에게 꽤 비싸게 들림
-
Flux로 제일 좋아하는 작업은 Substack용 흰 배경 이미지를 만드는 것임. 뒤따르는 텍스트가 훌륭하고, 아트워크를 통해 시각적으로도 뭔가를 전달할 수 있음
[1]https://substackcdn.com/image/fetch/w_1456,c_limit,f_webp,q_...- 그 예시는 예술가들이 화내는 이유를 잘 보여준다고 봄. LLM이 특정 예술가의 고유 스타일을 명백히 흉내 내고 있고, 그 결과 그 예술가는 유료 작업을 놓치게 됨
여기에 대해 뚜렷한 입장이 있는지는 모르겠음. 기술은 계속 전진하니까. 그래도 흥미롭긴 함 - 프롬프트를 공유해줄 수 있음?
- 그 예시는 예술가들이 화내는 이유를 잘 보여준다고 봄. LLM이 특정 예술가의 고유 스타일을 명백히 흉내 내고 있고, 그 결과 그 예술가는 유료 작업을 놓치게 됨
-
Flux는 로컬 호스팅 생성 시스템 중 프롬프트 준수 측면에서 선두 후보지만, 어디에나 나타나는 얕은 피사계 심도가 짜증 날 만큼 제거하기 어려움
- 예술적인 이미지에 최적화된 것 같음?
-
방금 Midjourney 구독을 취소했음. 내가 하려는 작업 기준으로는 너무 뒤처진 느낌임
Replicate와 Ideogram을 쓰는 것도 한참 고민했음- 최근엔 나도 신기함을 넘어서는 가치가 있는지 의문이 듦. 다른 도구로 갈아탔는지, 아니면 그런 도구들에서 더는 가치를 못 느끼는지 궁금함
- Midjourney는 특유의 느낌이 있고 손, 발, 글자에 약해서 써본 적이 없음
Emad가 몰락한 지 1년도 안 됐는데 로컬 오픈소스이면서 더 나은 모델이 나온 게 미친 일임. 이런 회사들의 해자가 얼마나 얕은지 보여주고, 막대한 현금을 태우는 덕분에 우리가 이득을 보는 셈임
-
FLUX 1.1이 무엇으로 학습됐는지 아는 사람이 있음? pro 모델에서 "카메라 파일명 + 간단한 단어" 두 단어 프롬프트로 거의 100장을 생성했는데, 전부 누군가의 휴대폰 사진처럼 보였음
텍스트가 없었다면 AI 이미지인지 생각해보지도 않았을 수준임. 가끔은 잘린 사진처럼 보이고, 음식 사진, 어질러진 식탁과 아파트가 많이 나옴
공개 Facebook 게시물, Snapchat, Vkontakte를 긁은 건가? OneDrive나 Dropbox의 개인 이미지를 산 건가? 두 번째 단어로 여성 이름을 넣으면 거의 항상 NSFW 필터가 작동함. 그래서 학습 세트에 꽤 사적인 이미지가 들어 있다고 추정함
직접 보길 바람. 자동재생 음악 주의
people: https://vm.tiktok.com/ZGdeXEhMg/
food and stuff: https://vm.tiktok.com/ZGdeXEBDK/
signs: https://vm.tiktok.com/ZGdeXoAgy/
[edit] 이런 이미지들을 보고 있으면 누군가의 사적인 사진을 보는 것처럼 불편함. "IMG00012.JPG forbid" 같은 프롬프트에는 이런 이미지를 설명할 만큼 충분한 유도 정보가 없으니, 전부 학습 데이터에서 온 것일 수밖에 없음
FLUX 1.1 pro가 이전 공개 모델들과 근본적으로 다른 학습 세트를 썼다고 믿지는 않음. 다만 이런 생성에 더 취약할 수는 있음
느낌이 정말 이상함. 그래서 다시 묻자면, 이 모델들에 사용된 학습 데이터에 대한 정보가 있음?- flux만 그런 건 아니고, Stable Diffusion을 포함한 다른 모델에서도 같은 걸 할 수 있음
아래 Reddit 글 두 개가 이 파일명 관례를 조금 다룸
DSC_0001-9999.JPG - Nikon 기본값
DSCF0001-9999.JPG - Fujifilm 기본값
IMG_0001-9999.JPG - 일반 이미지
P0001-9999.JPG - Panasonic 기본값
CIMG0001-9999.JPG - Casio 기본값
PICT0001-9999.JPG - Sony 기본값
Photo_0001-9999.JPG - Android 사진
VID_0001-9999.mp4 - 일반 동영상
추가로 3D 소프트웨어 파일명 버전도 만들었음. 전부 테스트했고, 일부만 효과가 있었음
Autodesk Filmbox (FBX): my_model0001-9999.fbx
Stereolithography (STL): Model0001-9999.stl
3ds Max: 3ds_Scene0001-9999.max
Cinema 4D: Project0001-9999.c4d
Maya (ASCII): Animation0001-9999.ma
SketchUp: SketchUp0001-9999.skp
[1]: https://www.reddit.com/r/StableDiffusion/comments/1fxkt3p/co...
[2]: https://www.reddit.com/r/StableDiffusion/comments/1fxdm1n/i_... - 원시 학습 데이터셋 때문일 가능성은 매우 낮다고 봄. 나는 반대 문제를 겪었음. "background" 토큰이 프롬프트에서 어떻게 쓰이든 거의 상관없이 전체 이미지에 강한 흐림을 도입했는데, 프롬프트 해석은 훨씬 좋아졌다는 점이 흥미로웠음
텍스트에 대한 강한 보정과 함께, 모델이 flux다운 이미지를 선호하게 만드는 많은 튜닝을 했을 가능성이 큼
어떤 과정을 따르든, 특정 용어가 들어가기만 해도 LoRA보다 강하게 작용할 정도로 모델을 과민하게 만든 셈임
보여준 사진들은 전체 맥락에서 특별히 주목할 만하지 않음. 기본 이미지 형식을 벗어나 초사실적인 결과를 얻는 데는 많은 노력이 필요하지 않음. 개인적으로는 그들이 초사실성을 숨기려 한다기보다, 사람들이 원하는 이미지로 기본값을 맞추려는 것에 가깝다고 봄 - 나도 같은 걸 겪었고 정말 이상했음. 처음에는 좋은 결과가 나오다가 이후엔 망가졌음
왜 Flux에 대한 비판적인 댓글들이 전부 다운보트나 플래그를 받는지 모르겠고, 꽤 이상함
- flux만 그런 건 아니고, Stable Diffusion을 포함한 다른 모델에서도 같은 걸 할 수 있음
-
비슷한 품질이라고 주장하면서 비교 페이지를 가리키는데, 우선 디테일이 훨씬 적은 게 아주 명확함. 더 나쁜 건 "구름 낀 날, 초록 계곡이 내려다보이는 산길 커브를 도는 노란색 2017 Corvette의 3/4 전면 뷰" 예시임
원본 모델은 전면을 보여주는데, 속도 버전은 Corvette의 후면을 보여줌. 완전히 다른 그림임. 비슷한 게 아니라 두드러지게 다름
https://flux-quality-comparison.vercel.app/ -
Meta 모델 스레드가 올라올 때마다 진짜 오픈소스가 아니라는 정정이 쏟아짐
그렇다면 FLUX도 분명히 해야 함. 공개된 모델 중 오픈소스는 FLUX schnell 하나뿐이고, 독점 모델에서 증류된 것이라 다루기가 훨씬 어려움
아이러니하게도 Meta의 Llama 모델들은 실용적인 관점에서 훨씬 더 허용적인 라이선스이고, Meta 자체 오픈소스 프레임워크나 여러 서드파티 도구로 미세조정하기도 매우 쉬움. 반면 FLUX schnell은 그렇지 않음
오픈소스 커뮤니티는 Schnell의 인위적 제약을 고치려는 OpenFLUX나 비슷한 프로젝트를 중심으로 힘을 모아야 한다고 봄: https://huggingface.co/ostris/OpenFLUX.1 -
"Replicate의 모든 이미지 모델을 훨씬 빠르게 만드는 새로운 동기식 HTTP API를 추가했다"고 하는데, 왜 동기식이면 빠른 거지? 눌러서 들어가 봄
https://replicate.com/changelog/2024-10-09-synchronous-api
"이제 클라이언트 라이브러리와 API가 모델 실행을 훨씬 빠르게 하며, 특히 파일이 반환될 때 그렇다"
…고맙긴 한데?
개발자로서의 답답함을 공유하는 것임. 기억에 남고 우리가 지지자가 되길 바란다면 조금 더 잘 설명해줬으면 함- 두 번째 문단에 말 그대로 이유가 설명돼 있음. 파일 데이터를 받기 위해 두 번째 요청을 해야 하는 URL을 반환하는 대신, 응답 안에 실제 파일 데이터를 반환함
- 맞음. 이 부분이 명확하지 않았음. 이전에는 무엇을 해야 했는지 설명하는 문단을 하나 더 추가했음