AI ๋๊ตฌ 101
Black Forest Labs์ Flux: ํ ์คํธ-์ด๋ฏธ์ง ๋ชจ๋ธ์ ๋ค์ ๋์ฝ์ Midjourney๋ณด๋ค ๋์๊น?
Black Forest Labs, Stable Diffusion 모델을 개발한 팀은 Flux – 상태-of-the-art 모델의 스위트를 출시했습니다. 이 모델은 AI 생성 이미지의 능력을 재정의하는 것을 약속합니다. 그러나 Flux는本当に 이 분야에서 도약을 나타내는지, 그리고 업계 리더인 Midjourney와 비교하여 어떻게 되는지에 대해 깊이 있는 세계를 탐색해 보겠습니다.
Black Forest Labs의 탄생
Black Forest Labs는 단순한 AI 스타트업이 아닙니다. 그것은 기초적인 생성형 AI 모델을 개발한 인재의 집합체입니다. 팀에는 VQGAN, Latent Diffusion, Stable Diffusion 모델의 가족을 개발한 창조자들이 포함되어 있습니다. 이 모델들은 AI 아트 세계를 강타했습니다.
Black Forest Labs는 3,100만 달러의 시리즈 시드 자금을 Andreessen Horowitz가 주도하고, 유명한 천사 투자자들의 지원을 받아 받았습니다. 이 회사는 생성형 深層 학습 모델을 개발하고 발전시키기 위해 자리를 잡았습니다. 미디어 이미지 및 비디오와 같은 창의성, 효율성, 다양성의 경계를 넓히는 것이 그들의 임무입니다.
Flux 모델 패밀리의 소개
Black Forest Labs는 FLUX.1 텍스트-이미지 모델 스위트를 소개했습니다. 이 모델은 이미지 세부 사항, 프롬프트 순응도, 스타일 다양성, 장면 복잡성을 새로운 벤치마크로 설정하도록 설계되었습니다. Flux 패밀리는 세 가지 변형으로 구성되어 있으며, 각 변형은 다른 사용 사례와 접근성 수준에 맞게 조정되어 있습니다:
- FLUX.1 [pro]: 플래그십 모델로, 이미지 생성에서 최상위 성능을 제공하며, 우수한 프롬프트 순종, 시각적 품질, 이미지 세부 사항 및 출력 다양성을 제공합니다. API를 통해 제공되며, 전문가 및 기업용으로 포지셔닝됩니다.
- FLUX.1 [dev]: 비상업적 용도로 사용되는 모델로, 유사한 품질과 프롬프트 순종 능력을 제공하는 모델입니다. 효율성이 더 높습니다.
- FLUX.1 [schnell]: 스위트에서 가장 빠른 모델로, 로컬 개발 및 개인용으로 최적화되었습니다. Apache 2.0 라이선스하에 공개적으로 제공되므로, 다양한 응용 프로그램 및 실험에 사용할 수 있습니다.
FLUX.1의 기능을 보여주는 몇 가지 고유하고 창의적인 프롬프트 예를 제공하겠습니다. 이러한 프롬프트는 모델의 텍스트 렌더링, 복잡한 구성 및 자세한 객체 생성과 같은 기능을 강조합니다.
- 아티스틱 스타일 블렌딩과 텍스트: “빈센트 반 고흐의 특징적인 스타일로 그린 그의 초상화를 생성하되, 그의 수염을 스타리 나이트의 글씨체로 바꾸어 보세요.”
- 다이내믹 액션 장면과 텍스트 통합: “슈퍼히어로가 만화책 페이지를 뚫고 나오는 장면을 생성하세요. 액션 라인과 사운드 이펙트는 FLUX FORCE라는 이름을 볼드하고 다이내믹한 타이포그래피로 형성되어야 합니다.”
- 초현실적 개념과 정교한 객체 배치: “창가에 앉아 있는 고양이의 근접 촬영을 생성하세요. 눈의 질감과 색상에 초점을 맞추고, 자연스러운 조명을 사용하여 실제적인 눈부신 효과와 깊이를 캡처하세요.”
이 프롬프트들은 FLUX.1의 텍스트 렌더링, 복잡한 구성 및 자세한 객체 생성과 같은 기능을 강조하기 위해 설계되었습니다.
Flux의 기술적 혁신
Flux의 인상적인 기능은 다음과 같은 일련의 기술적 혁신에 기반합니다.
트랜스포머 기반 플로우 모델의 확장
모든 공개 FLUX.1 모델은 다중 모드 및 병렬 확산 트랜스포머 블록을 결합한 하이브리드 아키텍처에 기반합니다. 이는 12억 매개변수로 확장되어, 많은 기존 텍스트-이미지 모델보다 크기와 복잡성이 크게 증가한 것입니다.
Flux 모델은 이전의 최첨단 확산 모델을 개선하여 플로우 매칭을 통합했습니다. 이는 생성 모델을 위한 더 유연하고 개념적으로 간단한 훈련 방법을 제공합니다. 확산 모델은 이 접근 방식 내에서 특수한 경우로 간주됩니다.
로터리 위치 임베딩과 병렬 어텐션 레이어를 통합하여 모델 성능과 하드웨어 효율성을 향상시켰습니다. 이러한 기술은 이미지 내의 공간적 관계를 더 잘 다루고, 대규모 데이터를 처리하는 것을 가능하게 합니다.
아키텍처 혁신
Flux의 성능에 기여하는 주요 아키텍처 요소를 살펴보겠습니다.
- 하이브리드 아키텍처: 다중 모드 및 병렬 확산 트랜스포머 블록을 결합하여, 텍스트와 시각 정보를 모두 효과적으로 처리할 수 있습니다. 이는 프롬프트와 생성된 이미지 간의 더 나은 일치로 이어집니다.
- 플로우 매칭: 이는 생성 모델을 위한 더 유연하고 효율적인 훈련 방법을 제공합니다. 확산 모델을 포함한 생성 기법에 대한 통일된 프레임워크를 제공하여, 더 강력하고 다재다능한 이미지 생성을 가능하게 합니다.
- 로터리 위치 임베딩: 이러한 임베딩은 모델이 이미지 내의 공간적 관계를 더 잘 이해하고 유지하도록 도와줍니다. 이는 시각적 콘텐츠의 일관성과 세부 사항을 생성하는 데 중요합니다.
- 병렬 어텐션 레이어: 이 기술은 어텐션 메커니즘의 처리를 더 효율적으로 만듭니다. 이는 텍스트 프롬프트와 생성된 이미지의 요소 간의 관계를 이해하는 데 중요합니다.
- 12B 매개변수로 확장: 모델의 크기 자체는 더 복잡한 패턴과 관계를 캡처하고 합성할 수 있게 하여, 더 높은 품질과 더 다양한 출력을 가능하게 합니다.
Flux 벤치마킹: 이미지 합성의 새로운 표준
Black Forest Labs는 FLUX.1이 이미지 합성에서 새로운 표준을 설정한다고 주장합니다. 이는 Midjourney v6.0, DALL·E 3 (HD), SD3-Ultra를 포함한 인기 모델을 여러 가지 측면에서 능가합니다:
- 시각적 품질: Flux는 더 높은忠實도, 더 많은 세부 사항, 더 나은 전반적인 미적 매력을 제공하는 이미지를 생성하는 것을 목표로 합니다.
- 프롬프트 순종: 모델은 주어진 텍스트 프롬프트를 더 잘 이해하고, 사용자의 의도와 더 잘 일치하는 이미지를 생성하도록 설계되었습니다.
- 크기/비율 가변성: Flux는 0.1에서 2.0 메가픽셀까지 다양한 종횡비와 해상도를 지원하여, 다양한 사용 사례에 유연성을 제공합니다.
- 타이포그래피: 모델은 이미지 내에서 텍스트를 생성하고 렌더링하는 능력을 향상시켰습니다. 이는 많은 텍스트-이미지 모델에서 일반적인 도전입니다.
- 출력 다양성: Flux는 사전 훈련에서 전체 출력 다양성을 보존하도록 세부적으로 조정되었습니다. 이는 더 넓은 창의적 가능성을 제공합니다.
Flux vs. Midjourney: 비교 분석
이제 Flux와 Midjourney를 비교하는 질문에 답해 보겠습니다. Flux가 Midjourney보다 낫는가? 이를 결정하려면 여러 요소를 고려해야 합니다:
이미지 품질 및 미적 매력
Flux와 Midjourney는 모두 높은 품질의 시각적으로 인상적인 이미지를 생성하는 것으로 알려져 있습니다. Midjourney는 예술적 매력과 독특한 미적 매력을 생성하는 능력으로 인해赞扬을 받았습니다. Flux는 더 나은 아키텍처와 더 큰 모델 크기로 인해 이 수준의 품질을 따라가거나 능가할 수 있습니다.
Flux의 초기 예시는 인상적인 세부 사항, 현실적인 텍스처, 빛과 구성의 강한 이해를 보여줍니다. 그러나 예술의 주관적인 성質으로 인해 이 영역에서 우수성을 명확하게 주장하는 것은 어렵습니다. 사용자는 각 모델이 서로 다른 스타일이나 이미지 유형에서 강점을 가질 수 있다고 생각할 수 있습니다.
프롬프트 순종
Flux는 프롬프트 순종에서 Midjourney를 능가할 수 있는 영역입니다. Black Forest Labs는 모델이 주어진 텍스트 프롬프트를 더 잘 이해하고, 사용자의 의도와 더 잘 일치하는 이미지를 생성하는 것에 중점을 두었습니다. 이는 복잡하거나 미묘한 요청에 특히 유용할 수 있습니다.
Midjourney는 때때로 프롬프트에 대한 창의적인 자유를 취하는 것으로批判을 받았습니다. 이는 아름답지만 예상치 못한 결과를 가져올 수 있습니다. Flux의 접근 방식은 생성된 출력에 더 정확한 제어를 제공할 수 있습니다.
속도 및 효율성
FLUX.1 [schnell]의 도입으로, Black Forest Labs는 Midjourney의 주요优势 중 하나인 속도에 도전하고 있습니다. Midjourney는 빠른 생성 시간으로 인해 반복적인 창의적 프로세스에서 인기를 얻었습니다. Flux가 품질을 유지하면서 이 속도에 도달하거나 능가할 수 있다면, 이는 중요한 판매 포인트가 될 수 있습니다.
접근성 및 사용 편의성
Midjourney는 사용자 친화적 인터페이스와 Discord 통합으로 인해 인기를 얻었습니다. Flux는 아직 더 접근성이 좋지 않을 수 있지만, FLUX.1 [schnell] 및 [dev] 모델의 오픈 소스 특성으로 인해, 더 넓은 범위의 커뮤니티 개발 도구와 통합이 가능할 수 있습니다. 이는 사용자 지정 및 개인화 옵션 측면에서 Midjourney를 능가할 수 있습니다.
기술적 능력
Flux의 고급 아키텍처와 더 큰 모델 크기는 더 복잡한 프롬프트를 이해하고, 더 세부적인 세부 사항을 생성하는 데 더 강력한 능력을 가질 수 있음을 시사합니다. 플로우 매칭 접근 방식과 하이브리드 아키텍처는 Flux가 더 넓은 범위의 작업과 더 다양한 출력을 처리할 수 있게 할 수 있습니다.
윤리적 고려 및 편향 완화
Flux와 Midjourney는 모두 AI 생성 이미지의 윤리적 문제에 직면합니다. 편향, 허위 정보, 저작권 문제 등입니다. Black Forest Labs의 투명성에 대한 강조와 모델을 널리 접근 가능하게 하는 의지는 이러한 영역에서 더 강한 커뮤니티 감독과 더 빠른 개선을 유도할 수 있습니다.
코드 구현 및 배포
Diffusers를 사용한 Flux 사용
Flux 모델은 Hugging Face Diffusers 라이브러리를 사용하여 기존 워크플로에 쉽게 통합할 수 있습니다. FLUX.1 [dev] 또는 FLUX.1 [schnell]를 Diffusers와 함께 사용하는 단계별 가이드입니다:
- まず, Diffusers 라이브러리를 설치하거나 업그레이드합니다:
!pip install git+https://github.com/huggingface/diffusers.git
- 다음으로,
FluxPipeline을 사용하여 모델을 실행할 수 있습니다:
import torch
from diffusers import FluxPipeline
# 모델을 로드합니다:
pipe = FluxPipeline.from_pretrained("black-forest-labs/FLUX.1-dev", torch_dtype=torch.bfloat16)
# CPU 오프로딩을 사용하여 VRAM을節約합니다(선택 사항):
pipe.enable_model_cpu_offload()
# 이미지를 생성합니다:
prompt = "고양이가 HELLO WORLD라는 표지를 잡고 있는 그림"
image = pipe(
prompt,
height=1024,
width=1024,
guidance_scale=3.5,
output_type="pil",
num_inference_steps=50,
max_sequence_length=512,
generator=torch.Generator("cpu").manual_seed(0)
).images[0]
# 생성된 이미지를 저장합니다:
image.save("flux-dev.png")
이 코드 조각은 FLUX.1 [dev] 모델을 로드하고, 텍스트 프롬프트에서 이미지를 생성하고, 결과를 저장하는 방법을 보여줍니다.
LitServe를 사용한 Flux 배포
Flux를 확장 가능하고 서버리스 API 서비스로 배포하려는 사람들을 위해, Black Forest Labs는 LitServe를 사용하는 예를 제공합니다. 배포 프로세스를 살펴보겠습니다:
모델 서버 정의:
from io import BytesIO
from fastapi import Response
import torch
import time
import litserve as ls
from optimum.quanto import freeze, qfloat8, quantize
from diffusers import FlowMatchEulerDiscreteScheduler, AutoencoderKL
from diffusers.models.transformers.transformer_flux import FluxTransformer2DModel
from diffusers.pipelines.flux.pipeline_flux import FluxPipeline
from transformers import CLIPTextModel, CLIPTokenizer, T5EncoderModel, T5TokenizerFast
class FluxLitAPI(ls.LitAPI):
def setup(self, device):
# 모델 구성 요소를 로드합니다:
scheduler = FlowMatchEulerDiscreteScheduler.from_pretrained("black-forest-labs/FLUX.1-schnell", subfolder="scheduler")
text_encoder = CLIPTextModel.from_pretrained("openai/clip-vit-large-patch14", torch_dtype=torch.bfloat16)
tokenizer = CLIPTokenizer.from_pretrained("openai/clip-vit-large-patch14", torch_dtype=torch.bfloat16)
text_encoder_2 = T5EncoderModel.from_pretrained("black-forest-labs/FLUX.1-schnell", subfolder="text_encoder_2", torch_dtype=torch.bfloat16)
tokenizer_2 = T5TokenizerFast.from_pretrained("black-forest-labs/FLUX.1-schnell", subfolder="tokenizer_2", torch_dtype=torch.bfloat16)
vae = AutoencoderKL.from_pretrained("black-forest-labs/FLUX.1-schnell", subfolder="vae", torch_dtype=torch.bfloat16)
transformer = FluxTransformer2DModel.from_pretrained("black-forest-labs/FLUX.1-schnell", subfolder="transformer", torch_dtype=torch.bfloat16)
# 모델을 8비트로 양자화하여 L4 GPU에서 실행할 수 있도록 합니다:
quantize(transformer, weights=qfloat8)
freeze(transformer)
quantize(text_encoder_2, weights=qfloat8)
freeze(text_encoder_2)
# Flux 파이프라인을 초기화합니다:
self.pipe = FluxPipeline(
scheduler=scheduler,
text_encoder=text_encoder,
tokenizer=tokenizer,
text_encoder_2=None,
tokenizer_2=tokenizer_2,
vae=vae,
transformer=None,
)
self.pipe.text_encoder_2 = text_encoder_2
self.pipe.transformer = transformer
self.pipe.enable_model_cpu_offload()
def decode_request(self, request):
return request["prompt"]
def predict(self, prompt):
image = self.pipe(
prompt=prompt,
width=1024,
height=1024,
num_inference_steps=4,
generator=torch.Generator().manual_seed(int(time.time())),
guidance_scale=3.5,
).images[0]
return image
def encode_response(self, image):
buffered = BytesIO()
image.save(buffered, format="PNG")
return Response(content=buffered.getvalue(), headers={"Content-Type": "image/png"})
# 서버를 시작합니다:
if __name__ == "__main__":
api = FluxLitAPI()
server = ls.LitServer(api, timeout=False)
server.run(port=8000)
이 코드는 LitServe를 사용하여 Flux를 확장 가능하고 서버리스 API 서비스로 배포하는 방법을 보여줍니다.
서버 시작:
python server.py
모델 API 사용:
API를 테스트하려면 다음 클라이언트 스크립트를 사용할 수 있습니다:
import requests
import json
url = "http://localhost:8000/predict"
prompt = "로봇이 의자에 앉아 그림을 그리며, 미래의 도시 풍경을 그리는 장면"
response = requests.post(url, json={"prompt": prompt})
with open("generated_image.png", "wb") as f:
f.write(response.content)
print("이미지가 생성되어 generated_image.png로 저장되었습니다.")
배포의 주요 기능
- 서버리스 아키텍처: LitServe 설정은 확장 가능하고 서버리스인 API를 제공합니다. 이는 사용하지 않을 때 스케일 아웃할 수 있습니다.
- 개인용 API: Flux를 자신의 인프라에서 개인용 API로 배포할 수 있습니다.
- 다중 GPU 지원: 설정은 여러 개의 GPU에서 효율적으로 작동하도록 설계되었습니다.
- 양자화: 코드는 모델을 8비트로 양자화하여 L4 GPU와 같은 менее 강력한 하드웨어에서 실행할 수 있도록 하는 방법을 보여줍니다.
- CPU 오프로딩:
enable_model_cpu_offload()메서드는 GPU 메모리를 보존하기 위해 모델의 일부를 CPU로 오프로드하는 데 사용됩니다.
Flux의 실제 적용
Flux의 다용도성과 강력함으로 인해 다양한 산업에서 폭넓은 적용 범위가 열립니다:
- 창의적 산업: 그래픽 디자이너, 일러스트레이터, 아티스트는 Flux를 사용하여 개념 아트, 무드 보드, 시각적 영감을 빠르게 생성할 수 있습니다.
- 마케팅 및 광고: 마케터는 캠페인, 소셜 미디어 콘텐츠, 제품 모ック업을 위한 맞춤 시각적 콘텐츠를 이전에 없던 속도와 품질로 생성할 수 있습니다.
- 게임 개발: 게임 디자이너는 Flux를 사용하여 환경, 캐릭터, 자산을 빠르게 프로토 타입으로 만들 수 있으며, 프리 프로덕션 프로세스를 간소화할 수 있습니다.
- 건축 및 인테리어 디자인: 건축가와 디자이너는 텍스트 설명에 따라 공간과 구조의 현실적인 시각화를 생성할 수 있습니다.
- 교육: 교육자는 Flux를 사용하여 맞춤형 시각적 도구와 일러스트레이션을 생성하여 학습 자료를 향상시키고, 복잡한 개념을 더 쉽게 이해할 수 있습니다.
- 영화 및 애니메이션: 스토리보드 아티스트와 애니메이터는 Flux를 사용하여 장면과 캐릭터를 빠르게 시각화하여 프리 비주얼라이제이션 프로세스를 가속화할 수 있습니다.
Flux와 텍스트-이미지 생성의 미래
Black Forest Labs는 Flux가 생성형 AI 공간에서 그들의 야망의 시작에 불과하다고 명확히 했습니다. 그들은 경쟁력 있는 생성형 텍스트-비디오 시스템을 개발하고, 정교한 생성 및 편집 능력을 고해상도와 이전에 없던 속도로 제공할 계획을 발표했습니다.
이 로드맵은 Flux가 독립된 제품이 아니라, 더广い 생성형 AI 도구 생태계의 일부임을 시사합니다. 기술이 발전함에 따라, 우리는 다음을 기대할 수 있습니다:
- 향상된 통합: 텍스트-이미지 및 텍스트-비디오 생성 사이의無缝한 워크플로우가 가능해집니다.
- 개선된 사용자 지정: 생성된 콘텐츠에 대한 더 세부적인 제어가 가능해집니다. 이는 고급 프롬프트 엔지니어링 기술이나 사용자 친화적 인터페이스를 통해 가능할 수 있습니다.
- 실시간 생성: FLUX.1 [schnell]과 같은 모델이 계속해서 개선됨에 따라, 실시간 이미지 생성 능력이 가능해질 수 있습니다. 이는 라이브 콘텐츠 생성과 상호작용형 미디어를 혁신할 수 있습니다.
- 크로스 모달 생성: 텍스트, 이미지, 비디오, 오디오와 같은 여러 모달리티에서 콘텐츠를 생성하고 조작할 수 있는 능력이 있습니다.
- 윤리적 AI 개발: 강력하지만 책임감 있고 윤리적으로 개발된 AI 모델에 대한 지속적인 초점입니다.
결론: Flux는 Midjourney보다 낫는가?
Flux가 Midjourney보다 낫는가라는 질문에 대한答案은 간단한 예나 아니요로 요약하기 어렵습니다. 두 모델은 모두 텍스트-이미지 생성 기술의 최전선에 있으며, 각기 고유한 강점과 특징을 가지고 있습니다.
Flux는 고급 아키텍처와 프롬프트 순종에 대한 강조로 인해 특정 시나리오에서 더 정확한 제어와 더 높은 품질을 제공할 수 있습니다. 오픈 소스 변형은 개발자와 연구자에게 유용한 사용자 지정 및 통합 옵션을 제공합니다.
Midjourney는 입증된 기록, 대규모 사용자 기반, 그리고 많은 사용자가 사랑하는独特한 예술적 스타일을 가지고 있습니다. Discord와의 통합 및 사용자 친화적 인터페이스는 모든 기술 수준의 창의적인 사람들에게 매우 접근성이 좋습니다.
궁극적으로, “더 나은” 모델은 특정 사용 사례, 개인적 선호도, 그리고 플랫폼의 발전에 따라 다를 수 있습니다. 명확한 것은 Flux가 생성형 AI 분야에서 중요한 발전을 나타내며, 텍스트-이미지 합성의 경계를 넓히고, 새로운 가능성을 열어줌을 알 수 있습니다.


















