찾다
백엔드 개발파이썬 튜토리얼FLUX, Python 및 Diffuser를 사용하여 AI 기반 이미지 생성 API 서비스 만들기

Creating an AI-powered Image Generation API Service with FLUX, Python, and Diffusers

FLUX(Black Forest Labs 제작)는 지난 몇 달 동안 AI 이미지 생성 세계를 휩쓸었습니다. 많은 벤치마크에서 Stable Diffusion(이전 오픈 소스의 왕)을 능가했을 뿐만 아니라 일부 지표에서는 Dall-E 또는 Midjourney와 같은 독점 모델을 능가했습니다.

그런데 귀하의 앱 중 하나에서 FLUX를 사용하려면 어떻게 하시겠습니까? Replicate 등의 서버리스 호스트를 사용하는 것을 생각할 수도 있지만 비용이 매우 빨리 들고 필요한 유연성을 제공하지 못할 수도 있습니다. 바로 여기서 자신만의 맞춤형 FLUX 서버를 만드는 것이 유용합니다.

이 기사에서는 Python을 사용하여 자신만의 FLUX 서버를 만드는 방법을 안내합니다. 이 서버를 사용하면 간단한 API를 통해 텍스트 프롬프트를 기반으로 이미지를 생성할 수 있습니다. 이 서버를 개인 용도로 실행하든, 프로덕션 애플리케이션의 일부로 배포하든, 이 가이드는 시작하는 데 도움이 될 것입니다.

전제조건

코드를 살펴보기 전에 필요한 도구와 라이브러리가 설정되어 있는지 확인하세요.

  • Python: 컴퓨터에 Python 3, 가급적 버전 3.10이 설치되어 있어야 합니다.
  • 토치: FLUX를 실행하는 데 사용할 딥 러닝 프레임워크입니다.
  • 디퓨저: FLUX 모델에 대한 액세스를 제공합니다.
  • Transformers: 디퓨저의 필수 종속성.
  • 문장: FLUX 토크나이저를 실행하는 데 필요합니다
  • protobuf: FLUX를 실행하는 데 필요합니다
  • 가속: 경우에 따라 FLUX 모델을 보다 효율적으로 로드하는 데 도움이 됩니다.
  • fastapi: 이미지 생성 요청을 수락할 수 있는 웹 서버를 생성하는 프레임워크.
  • uvicorn: FastAPI 서버를 실행하는 데 필요합니다.
  • psutil: 컴퓨터에 RAM이 얼마나 있는지 확인할 수 있습니다.

다음 명령을 실행하여 모든 라이브러리를 설치할 수 있습니다: pip install torch 확산기 Transformers 문장 조각 protobuf 가속 fastapi uvicorn

M1 또는 M2 칩이 탑재된 Mac을 사용하는 경우 최적의 성능을 위해 PyTorch를 Metal로 설정해야 합니다. 계속하기 전에 공식 PyTorch with Metal 가이드를 따르세요.

또한 GPU 장치에서 FLUX를 실행할 계획이라면 최소 12GB의 VRAM이 있는지 확인해야 합니다. 또는 CPU/MPS에서 실행하려면 최소 12GB RAM(더 느려짐).

1단계: 환경 설정

사용 중인 하드웨어를 기반으로 추론을 실행하는 데 적합한 장치를 선택하여 스크립트를 시작하겠습니다.

device = 'cuda' # can also be 'cpu' or 'mps'

import os

# MPS support in PyTorch is not yet fully implemented
if device == 'mps':
  os.environ["PYTORCH_ENABLE_MPS_FALLBACK"] = "1"

import torch

if device == 'mps' and not torch.backends.mps.is_available():
      raise Exception("Device set to MPS, but MPS is not available")
elif device == 'cuda' and not torch.cuda.is_available():
      raise Exception("Device set to CUDA, but CUDA is not available")

cpu, cuda(NVIDIA GPU의 경우) 또는 mps(Apple의 Metal Performance Shader의 경우)를 지정할 수 있습니다. 그런 다음 스크립트는 선택한 장치를 사용할 수 있는지 확인하고 그렇지 않은 경우 예외를 발생시킵니다.

2단계: FLUX 모델 로드

다음으로 FLUX 모델을 로드합니다. 품질 저하 없이 메모리를 절약할 수 있는 fp16 정밀도로 모델을 로드하겠습니다.

이 시점에서 FLUX 모델이 제한되어 있으므로 HuggingFace로 인증하라는 메시지가 표시될 수 있습니다. 성공적으로 인증하려면 HuggingFace 계정을 만들고 모델 페이지로 이동하여 약관에 동의한 다음 계정 설정에서 HuggingFace 토큰을 만들고 컴퓨터에 HF_TOKEN 환경 변수로 추가해야 합니다.

device = 'cuda' # can also be 'cpu' or 'mps'

import os

# MPS support in PyTorch is not yet fully implemented
if device == 'mps':
  os.environ["PYTORCH_ENABLE_MPS_FALLBACK"] = "1"

import torch

if device == 'mps' and not torch.backends.mps.is_available():
      raise Exception("Device set to MPS, but MPS is not available")
elif device == 'cuda' and not torch.cuda.is_available():
      raise Exception("Device set to CUDA, but CUDA is not available")

여기에서는 디퓨저 라이브러리를 사용하여 FLUX 모델을 로드합니다. 우리가 사용하는 모델은 fp16 정밀도로 로드된 black-forest-labs/FLUX.1-dev입니다.

추론 속도는 더 빠르지만 덜 상세한 이미지를 출력하는 FLUX Schnell이라는 시간 단계 증류 모델과 비공개 소스인 FLUX Pro 모델도 있습니다.
여기서는 오일러 스케줄러를 사용하겠지만 이를 실험해 볼 수도 있습니다. 여기에서 스케줄러에 대해 자세히 알아볼 수 있습니다.
이미지 생성은 리소스 집약적일 수 있으므로 특히 CPU나 메모리가 제한된 장치에서 실행되는 경우 메모리 사용량을 최적화하는 것이 중요합니다.

from diffusers import FlowMatchEulerDiscreteScheduler, FluxPipeline
import psutil

model_name = "black-forest-labs/FLUX.1-dev"

print(f"Loading {model_name} on {device}")

pipeline = FluxPipeline.from_pretrained(
      model_name,

      # Diffusion models are generally trained on fp32, but fp16
      # gets us 99% there in terms of quality, with just half the (V)RAM
      torch_dtype=torch.float16,

      # Ensure we don't load any dangerous binary code
      use_safetensors=True

      # We are using Euler here, but you can also use other samplers
      scheduler=FlowMatchEulerDiscreteScheduler()
).to(device)

이 코드는 사용 가능한 총 메모리를 확인하고 시스템의 RAM이 64GB 미만인 경우 주의 슬라이싱을 활성화합니다. 어텐션 슬라이싱은 이미지 생성 중 메모리 사용량을 줄여줍니다. 이는 리소스가 제한된 기기에 필수적입니다.

3단계: FastAPI를 사용하여 API 생성

다음으로 이미지 생성을 위한 API를 제공하는 FastAPI 서버를 설정하겠습니다.

# Recommended if running on MPS or CPU with 



<p>FastAPI는 Python으로 웹 API를 구축하는 데 널리 사용되는 프레임워크입니다. 이 경우 이를 사용하여 이미지 생성 요청을 수락할 수 있는 서버를 생성합니다. 또한 응답을 압축하기 위해 GZip 미들웨어를 사용하고 있는데, 이는 이미지를 base64 형식으로 다시 보낼 때 특히 유용합니다.</p>

<blockquote>
<p>프로덕션 환경에서는 생성된 이미지를 S3 버킷이나 기타 클라우드 스토리지에 저장하고 base64로 인코딩된 문자열 대신 URL을 반환하여 CDN 및 기타 최적화를 활용할 수 있습니다.</p>
</blockquote>

<h2>
  
  
  4단계: 요청 모델 정의
</h2>

<p>이제 API가 수락할 요청에 대한 모델을 정의해야 합니다.<br>
</p>

<pre class="brush:php;toolbar:false">from fastapi import FastAPI, HTTPException
from pydantic import BaseModel, Field, conint, confloat
from fastapi.middleware.gzip import GZipMiddleware
from io import BytesIO
import base64

app = FastAPI()

# We will be returning the image as a base64 encoded string
# which we will want compressed
app.add_middleware(GZipMiddleware, minimum_size=1000, compresslevel=7)

이 생성 요청 모델은 이미지를 생성하는 데 필요한 매개변수를 정의합니다. 프롬프트 필드는 생성하려는 이미지에 대한 텍스트 설명입니다. 다른 필드에는 이미지 크기, 추론 단계 수 및 배치 크기가 포함됩니다.

5단계: 이미지 생성 엔드포인트 생성

이제 이미지 생성 요청을 처리할 엔드포인트를 만들어 보겠습니다.

device = 'cuda' # can also be 'cpu' or 'mps'

import os

# MPS support in PyTorch is not yet fully implemented
if device == 'mps':
  os.environ["PYTORCH_ENABLE_MPS_FALLBACK"] = "1"

import torch

if device == 'mps' and not torch.backends.mps.is_available():
      raise Exception("Device set to MPS, but MPS is not available")
elif device == 'cuda' and not torch.cuda.is_available():
      raise Exception("Device set to CUDA, but CUDA is not available")

이 엔드포인트는 이미지 생성 프로세스를 처리합니다. 먼저 FLUX에서 요구하는 대로 높이와 너비가 8의 배수인지 확인합니다. 그런 다음 제공된 프롬프트를 기반으로 이미지를 생성하고 이를 base64로 인코딩된 문자열로 반환합니다.

6단계: 서버 시작

마지막으로 스크립트 실행 시 서버를 시작하는 코드를 추가해 보겠습니다.

from diffusers import FlowMatchEulerDiscreteScheduler, FluxPipeline
import psutil

model_name = "black-forest-labs/FLUX.1-dev"

print(f"Loading {model_name} on {device}")

pipeline = FluxPipeline.from_pretrained(
      model_name,

      # Diffusion models are generally trained on fp32, but fp16
      # gets us 99% there in terms of quality, with just half the (V)RAM
      torch_dtype=torch.float16,

      # Ensure we don't load any dangerous binary code
      use_safetensors=True

      # We are using Euler here, but you can also use other samplers
      scheduler=FlowMatchEulerDiscreteScheduler()
).to(device)

이 코드는 포트 8000에서 FastAPI 서버를 시작하여 0.0.0.0 바인딩 덕분에 http://localhost:8000뿐만 아니라 호스트 컴퓨터의 IP 주소를 사용하는 동일한 네트워크의 다른 장치에서도 액세스할 수 있도록 합니다.

7단계: 로컬에서 서버 테스트

이제 FLUX 서버가 실행되고 있으므로 테스트할 시간입니다. HTTP 요청을 위한 명령줄 도구인 컬을 사용하여 서버와 상호 작용할 수 있습니다.

# Recommended if running on MPS or CPU with 



<blockquote>
<p>이 명령은 컬, jq 및 base64 유틸리티가 설치된 UNIX 기반 시스템에서만 작동합니다. FLUX 서버를 호스팅하는 하드웨어에 따라 완료하는 데 최대 몇 분이 걸릴 수도 있습니다.</p>
</blockquote>

<h2>
  
  
  결론
</h2>

<p>축하합니다! Python을 사용하여 자신만의 FLUX 서버를 성공적으로 만들었습니다. 이 설정을 사용하면 간단한 API를 통해 텍스트 프롬프트를 기반으로 이미지를 생성할 수 있습니다. 기본 FLUX 모델의 결과가 만족스럽지 않은 경우 특정 사용 사례에서 더 나은 성능을 위해 모델을 미세 조정하는 것을 고려할 수 있습니다.</p>

<h2>
  
  
  전체 코드
</h2>

<p>아래에서 이 가이드에 사용된 전체 코드를 찾을 수 있습니다.<br>
</p>

<pre class="brush:php;toolbar:false">from fastapi import FastAPI, HTTPException
from pydantic import BaseModel, Field, conint, confloat
from fastapi.middleware.gzip import GZipMiddleware
from io import BytesIO
import base64

app = FastAPI()

# We will be returning the image as a base64 encoded string
# which we will want compressed
app.add_middleware(GZipMiddleware, minimum_size=1000, compresslevel=7)

위 내용은 FLUX, Python 및 Diffuser를 사용하여 AI 기반 이미지 생성 API 서비스 만들기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
Python vs. C : 주요 차이점 이해Python vs. C : 주요 차이점 이해Apr 21, 2025 am 12:18 AM

Python과 C는 각각 고유 한 장점이 있으며 선택은 프로젝트 요구 사항을 기반으로해야합니다. 1) Python은 간결한 구문 및 동적 타이핑으로 인해 빠른 개발 및 데이터 처리에 적합합니다. 2) C는 정적 타이핑 및 수동 메모리 관리로 인해 고성능 및 시스템 프로그래밍에 적합합니다.

Python vs. C : 프로젝트를 위해 어떤 언어를 선택해야합니까?Python vs. C : 프로젝트를 위해 어떤 언어를 선택해야합니까?Apr 21, 2025 am 12:17 AM

Python 또는 C를 선택하는 것은 프로젝트 요구 사항에 따라 다릅니다. 1) 빠른 개발, 데이터 처리 및 프로토 타입 설계가 필요한 경우 Python을 선택하십시오. 2) 고성능, 낮은 대기 시간 및 근접 하드웨어 제어가 필요한 경우 C를 선택하십시오.

파이썬 목표에 도달 : 매일 2 시간의 힘파이썬 목표에 도달 : 매일 2 시간의 힘Apr 20, 2025 am 12:21 AM

매일 2 시간의 파이썬 학습을 투자하면 프로그래밍 기술을 효과적으로 향상시킬 수 있습니다. 1. 새로운 지식 배우기 : 문서를 읽거나 자습서를 시청하십시오. 2. 연습 : 코드를 작성하고 완전한 연습을합니다. 3. 검토 : 배운 내용을 통합하십시오. 4. 프로젝트 실무 : 실제 프로젝트에서 배운 것을 적용하십시오. 이러한 구조화 된 학습 계획은 파이썬을 체계적으로 마스터하고 경력 목표를 달성하는 데 도움이 될 수 있습니다.

2 시간 극대화 : 효과적인 파이썬 학습 전략2 시간 극대화 : 효과적인 파이썬 학습 전략Apr 20, 2025 am 12:20 AM

2 시간 이내에 Python을 효율적으로 학습하는 방법 : 1. 기본 지식을 검토하고 Python 설치 및 기본 구문에 익숙한 지 확인하십시오. 2. 변수, 목록, 기능 등과 같은 파이썬의 핵심 개념을 이해합니다. 3. 예제를 사용하여 마스터 기본 및 고급 사용; 4. 일반적인 오류 및 디버깅 기술을 배우십시오. 5. 목록 이해력 사용 및 PEP8 스타일 안내서와 같은 성능 최적화 및 모범 사례를 적용합니다.

Python과 C : The Hight Language 중에서 선택Python과 C : The Hight Language 중에서 선택Apr 20, 2025 am 12:20 AM

Python은 초보자 및 데이터 과학에 적합하며 C는 시스템 프로그래밍 및 게임 개발에 적합합니다. 1. 파이썬은 간단하고 사용하기 쉽고 데이터 과학 및 웹 개발에 적합합니다. 2.C는 게임 개발 및 시스템 프로그래밍에 적합한 고성능 및 제어를 제공합니다. 선택은 프로젝트 요구와 개인적인 이익을 기반으로해야합니다.

Python vs. C : 프로그래밍 언어의 비교 분석Python vs. C : 프로그래밍 언어의 비교 분석Apr 20, 2025 am 12:14 AM

Python은 데이터 과학 및 빠른 개발에 더 적합한 반면 C는 고성능 및 시스템 프로그래밍에 더 적합합니다. 1. Python Syntax는 간결하고 학습하기 쉽고 데이터 처리 및 과학 컴퓨팅에 적합합니다. 2.C는 복잡한 구문을 가지고 있지만 성능이 뛰어나고 게임 개발 및 시스템 프로그래밍에 종종 사용됩니다.

하루 2 시간 : 파이썬 학습의 잠재력하루 2 시간 : 파이썬 학습의 잠재력Apr 20, 2025 am 12:14 AM

파이썬을 배우기 위해 하루에 2 시간을 투자하는 것이 가능합니다. 1. 새로운 지식 배우기 : 목록 및 사전과 같은 1 시간 안에 새로운 개념을 배우십시오. 2. 연습 및 연습 : 1 시간을 사용하여 소규모 프로그램 작성과 같은 프로그래밍 연습을 수행하십시오. 합리적인 계획과 인내를 통해 짧은 시간에 Python의 핵심 개념을 마스터 할 수 있습니다.

Python vs. C : 학습 곡선 및 사용 편의성Python vs. C : 학습 곡선 및 사용 편의성Apr 19, 2025 am 12:20 AM

Python은 배우고 사용하기 쉽고 C는 더 강력하지만 복잡합니다. 1. Python Syntax는 간결하며 초보자에게 적합합니다. 동적 타이핑 및 자동 메모리 관리를 사용하면 사용하기 쉽지만 런타임 오류가 발생할 수 있습니다. 2.C는 고성능 응용 프로그램에 적합한 저수준 제어 및 고급 기능을 제공하지만 학습 임계 값이 높고 수동 메모리 및 유형 안전 관리가 필요합니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!