새로운 오픈소스 이미지 생성용 인공지능 모델 Flex.1이 HuggingFace 에 공유되었습니다.
Flex.1-alpha 는 예전에 Flux 미세조정 솔루션을 공유했던 ostris가 개발했습니다. 이 모델은 매개변수가 80억개이며, "guidance embedder"와 통합하여, 이미지 생성시 무분류기 안내(CFG, Classifier-Free Guidance)가 필요 없는 특징이 있습니다.
Flex.1은 FLUX.1 deve 아키텍처위에 개발되었는데, 듀얼 트랜스포머 블록(dual transformer block)의 수를 19개에서 8개로 줄였다고 합니다. 이렇게 최적화시킴으로써 이미지 품질을 유지하면서도 효율적으로 이미지를 생성할 수 있게 되었다고 하네요. 또한 이 모델은 Flux Schnell 기반으로 학습하였기 때문에 Apache 2.0 오픈소스 라이선스를 이어받아, 개발자와 연구자들이 훨씬 더 유연하게 사용할 수 있다고 합니다.
Flex.1 Alpha 개요
Flex.1-alpha는 텍스트 프롬프트로부터 이미지를 생성하도록 설계된 사전학습 rectified flow 트랜스포머 모델입니다. 주요 특징은 아래와 같습니다.
- 80억개의 매개변수 : SDXL 모델의 매개변수(66억개) 보다는 약간 크고, Flux 모델의 매개변수(120억개)보다는 약간 적은 정도로, 텍스트 프롬프트의 복잡한 뉘앙스를 포착할 수 있어, 생성된 이미지와 관련성이 향상되었습니다.
- "Guidance Embedder" 통합 : Flex.1-alpha는 "guidance embedder"를 통합하여 무분류기 안내(CFG)의 필요성을 없앴습니다. 이 통합의 결과로 이미지의 품질을 유지하면서도 생성 프로세스의 효율을 높였습니다.
- 토큰 길이 512 : 텍스트 입력을 최대 512 토큰까지 받아들일 수 있어, 상세하고 복잡한 설명을 유연하게 처리할 수 있어, 정확한 이미지를 생성할 수 있습니다.
- Aphache License 2.0 : Flex.1-alpha는 아파치 라이선스 2.0하에 배포됨으로서, 여러가지 프로젝트에 자유롭고 쉽게 통합할 수 있습니다.
이러한 특징은 텍스트 프롬프트에서 이미지를 생성하고자하는 개발자 및 연구자에게 Flex.1-alpha를 강력하면서도 접근하기 쉬운 도구로 만들어주며, 최적화된 아키텍처와 관대한 라이선스의 이점을 누릴 수 있습니다.
개발 배경
Flex.1은 맨처음 FLUX.1 schnell을 위한 LoRA를 쉽게 생성할 수 있는 솔루션인 Flux.1-schnell-training-adapter로부터 시작되었는데, 이 어댑터를 FLUX.1 schnell과 합쳐서 계속 학습한 끝에 OpenFLUX.1을 공개했고, 이를 몇달 간 더욱더 학습시켜 flux.1-lite-8B-alpha를 만들었다고하고, 그다음 계속 개선해서 이 Flex.1-alpha를 개발했다고 합니다.
사용 방법
Flex.1 alpha는 모델과 clip, VAE가 모두 합쳐진 checkpoint 모델로서, FLUX.1-dev와 똑같이 사용할 수 있습니다.
먼저 Flex.1-alpha.safetensors 파일을 다운로드받아 ComfyUI\models\checkpoints 폴더(Stability Matrix로 사용할 경우에는 Data\Model\checkpoints 폴더)넣어줍니다.
그다음 아래의 워크플로를 불러들이고 사용하시면 됩니다.
이 워크플로를 불러오면 오류가 발생할 수 있는데, 그러한 경우, 다음과 같은 작업이 필요합니다.
- 처음 사용할 때 - ComfyUI Manager 를 설치해야 합니다.
- ComfyUI를 오랜만에 사용할 때 - ComfyUI를 최신버전으로 업데이트해야 합니다.
- 노드가 없다고 (빨간색) 경고가 뜰 때 - 빠진 커스톰 노드를 가져오기해야 합니다.
- 불러오기 혹은 수행중 에러 발생시 - 커스톰 노드를 업데이트해야 합니다.
이 워크플로에 포함된 프롬프트는 아래와 같습니다. 이 글 맨위에 있는 이미지를 생성하는 프롬프트로, 호랑이의 눈을 컬러풀한 아트워크로 만들고, 눈 앞에 "Flex.1"이라는 글자가 나오도록 하는 내용입니다.
프롬프트: a digital artwork featuring a stylized tiger's eye. The image is vibrant and colorful, utilizing a blend of neon blue, purple, and pink hues to create a striking, almost surreal effect. The tiger's eye is the focal point, with intricate details of the eye's iris and pupil rendered in vivid colors. The eye is positioned centrally, occupying the upper half of the image. The background is a deep, dark black, which contrasts sharply with the bright colors of the eye, making the eye pop out prominently.
Superimposed on the eye is the word "Flex.1," written in a bold, white, hand-painted style font that appears to be brushed on with a textured brush. The text is positioned slightly to the left of the eye, and the letters have a slightly rough, unfinished look, adding to the overall gritty, urban aesthetic of the piece. The texture of the eye and the background is smooth, while the text has a more rough, brushstroke-like texture. The overall style is modern and edgy, with a strong emphasis on color and texture, creating a visually dynamic and eye-catching digital artwork.
Flux.1 dev GUFF 와 Flex.1-alpha 의 비교
생성속도
생성속도는 RTX 3070에서 생성되는 시간으로, 모델을 불러오는 시간을 제외한, 샘플링을 위한 시간만 고려한 것으로, FLUX.1 dev GGUF의 경우엔 이미지 한장 생성에 1분 20초 정도 소요되었고, Flex.1-alpha 의 경우엔 55초가 소요되었습니다.
시험방법
여기에서는 SDXL과 FLUX.1의 비교에서 사용한 여러가지 비교 방법중에서, 텍스트 생성/인체 묘사의 정확성/프롬프트의 이해도(물체의 배치) 에 대해서만 시험해 보겠습니다. Seed를 무작위로 변경하면서 각각 3개의 이미지를 생성하고, 모두 보여드리는 방법으로 시험해 보겠습니다.
아래는 FLUX.1 dev GGUF 모델을 위한 워크플로입니다. 자세한 내용은 이 글을 참고하세요.
아래는 Flex.1-alpha 모델을 위한 워크플로입니다.
텍스트 생성
텍스트 생성 기능 면에선 FLUX.1 dev GGUF가 훨씬 뛰어나네요. 3장중에서 2개가 성공했고, 나머지도 얼추 비슷합니다. 반면 Flex.1-alpha의 경우엔 1개가 성공했고, 하나는 완전히 써먹을 수 없을 정도네요.
프롬프트: a portrait photo of a 25-year old beautiful woman, busy street street, smiling, holding a sign “Flux.1 dev vs Flex.1-alpha”
FLUX.1 dev GGUF
![]() |
![]() |
![]() |
Flex.1-alpha
![]() |
![]() |
![]() |
인체 묘사
프롬프트는 대략 60대 한국인 남자가 해변에서 두손을 앞으로 내밀고 있는 모습입니다. 손가락을 제대로 표현했는지를 살펴보면, FLUX.1 dev GGUF는 2개가 성공한 반면 Flex.1-alpha는 1개도 성공하지 못했네요. 흠... 실망스럽습니다.
프롬프트: A highly detailed and realistic photograph of a 60-year-old Korean man standing on a sandy beach during daytime, facing the camera. He has short, neatly combed gray hair and a warm, gentle expression with subtle wrinkles that reflect his age. He is wearing a casual yet stylish outfit consisting of a light beige linen shirt with the sleeves rolled up and comfortable khaki pants.
His both hands are extended toward the camera, palm open and fully visible, as if offering a friendly greeting or gesture. The ocean waves gently roll onto the shore behind him, and the sky is a soft blue with a few wispy clouds. Sunlight casts a natural glow on his face, highlighting his features, while the breeze slightly ruffles his shirt. The atmosphere is calm and serene, evoking a sense of peace and wisdom in this beautifully captured moment.
FLUX.1 dev GGUF
![]() |
![]() |
![]() |
Flex.1-alpha
![]() |
![]() |
![]() |
물체의 배치
프롬프트는 책 위에 해골이 있고, 우측에 오렌지, 좌측에 사과가 있는 정물 이미지인데요, FLUX.1 dev GGUF의 경우엔 2개가 성공했는데, Flex.1-alpha 의 경우엔 제대로 표현된 이미지가 1개 뿐이네요. 흠...
프롬프트: Still life painting of a skull above a book, with an orange on the right and an apple on the left
FLUX.1 dev GGUF
![]() |
![]() |
![]() |
Flex.1-alpha
![]() |
![]() |
![]() |
결론
https://huggingface.co/ostris/Flex.1-alpha 를 읽어보면, 이 모든 것을 혼자 개발했다고 하네요. 지원해달라는 요청도 있고요. 정말 대단하신 분이네요.
그런데, FLUX.1 dev GGUF와 비교한 결과를 보면, 여러가지 면에서 상당히 실망스럽습니다. 원하는대로 제대로 표현해주지를 못해서요. 물론 alpha 버전이라서 그럴 수도 있습니다. 앞으로 나오는 모델을 기대해봐야겠네요.
이상입니다.
이 글은 Flex.1-alpha 사이트와 stablediffusion.blog의 글을 참고하고 일부는 제가 보충하여 작성한 글입니다.