FLUX、Python、ディフューザーを使用した AI を活用した画像生成 API サービスの作成
FLUX (Black Forest Labs による) は、ここ数か月で AI 画像生成の世界を席巻しました。多くのベンチマークで Stable Diffusion (以前のオープンソースの王様) を上回っただけでなく、いくつかの指標では Dall-E や Midjourney などの独自モデルも上回りました。
しかし、あなたのアプリの 1 つで FLUX を使用するにはどうすればよいでしょうか? Replicate などのサーバーレス ホストの使用を考える人もいるかもしれませんが、これらはすぐに非常に高価になる可能性があり、必要な柔軟性を提供できない可能性があります。そこで、独自のカスタム FLUX サーバーを作成することが役立ちます。
この記事では、Python を使用して独自の FLUX サーバーを作成する手順を説明します。このサーバーを使用すると、単純な API を介してテキスト プロンプトに基づいて画像を生成できます。このサーバーを個人使用で実行する場合でも、運用アプリケーションの一部として展開する場合でも、このガイドは開始に役立ちます。
前提条件
コードに入る前に、必要なツールとライブラリが設定されていることを確認してください。
- Python: マシンに Python 3 がインストールされている必要があります。バージョン 3.10 が望ましいです。
- torch: FLUX を実行するために使用する深層学習フレームワーク。
- ディフューザー: FLUX モデルへのアクセスを提供します。
- トランスフォーマー: ディフューザーの必須の依存関係。
- 文: FLUX トークナイザーを実行するために必要です
- protobuf: FLUX を実行するために必要です
- 加速: 場合によっては、FLUX モデルをより効率的にロードできるようになります。
- fastapi: 画像生成リクエストを受け入れることができる Web サーバーを作成するフレームワーク。
- uvicorn: FastAPI サーバーを実行するために必要です。
- psutil: マシン上の RAM の量を確認できます。
次のコマンドを実行すると、すべてのライブラリをインストールできます: pip install torch diffusersTransformers Sentencepiece protobuf Accelerate fastapi uvicorn.
M1 または M2 チップを搭載した Mac を使用している場合は、最適なパフォーマンスを得るために Metal で PyTorch をセットアップする必要があります。続行する前に、公式 PyTorch with Metal ガイドに従ってください。
GPU デバイスで FLUX を実行する予定の場合は、少なくとも 12 GB の VRAM があることを確認する必要もあります。または、CPU/MPS で実行する場合は少なくとも 12 GB の 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 Shaders の場合) を指定できます。次にスクリプトは、選択したデバイスが利用可能かどうかを確認し、利用できない場合は例外を発生させます。
ステップ 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 モデルをロードしています。私たちが使用しているモデルは black-forest-labs/FLUX.1-dev で、fp16 精度でロードされています。
クローズドソースの FLUX Pro モデルと同様に、より高速な推論を備えていますが、詳細度の低い画像を出力する FLUX Schnell という名前のタイムステップ蒸留モデルもあります。
ここではオイラー スケジューラを使用しますが、これを試してみることもできます。スケジューラーの詳細については、こちらをご覧ください。
画像の生成はリソースを大量に消費する可能性があるため、特にメモリが限られた 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 が 64 GB 未満の場合にアテンション スライスを有効にします。アテンション スライスにより、画像生成中のメモリ使用量が削減されます。これは、リソースが限られているデバイスにとって不可欠です。
ステップ 3: FastAPI を使用して API を作成する
次に、画像を生成するための API を提供する FastAPI サーバーをセットアップします。
# Recommended if running on MPS or CPU with < 64 GB of RAM total_memory = psutil.virtual_memory().total total_memory_gb = total_memory / (1024 ** 3) if (device == 'cpu' or device == 'mps') and total_memory_gb < 64: print("Enabling attention slicing") pipeline.enable_attention_slicing()
FastAPI は、Python で Web API を構築するための人気のあるフレームワークです。この場合、これを使用して、画像生成のリクエストを受け入れることができるサーバーを作成します。また、GZip ミドルウェアを使用して応答を圧縮しています。これは、画像を Base64 形式で送り返すときに特に便利です。
実稼働環境では、CDN やその他の最適化を利用するために、生成されたイメージを S3 バケットまたは他のクラウド ストレージに保存し、base64 でエンコードされた文字列の代わりに URL を返すことができます。
ステップ 4: リクエスト モデルの定義
次に、API が受け入れるリクエストのモデルを定義する必要があります。
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)
この GenerateRequest モデルは、画像の生成に必要なパラメーターを定義します。プロンプト フィールドは、作成するイメージの説明テキストです。他のフィールドには、画像の寸法、推論ステップの数、バッチ サイズが含まれます。
ステップ 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 サーバーを起動し、http://localhost:8000 からだけでなく、0.0.0.0 バインディングのおかげで、ホスト マシンの IP アドレスを使用して同じネットワーク上の他のデバイスからもアクセスできるようにします。
ステップ 7: サーバーをローカルでテストする
FLUX サーバーが起動して実行されているので、テストしてみましょう。 HTTP リクエストを行うためのコマンドライン ツールであるcurlを使用して、サーバーと対話できます。
# Recommended if running on MPS or CPU with < 64 GB of RAM total_memory = psutil.virtual_memory().total total_memory_gb = total_memory / (1024 ** 3) if (device == 'cpu' or device == 'mps') and total_memory_gb < 64: print("Enabling attention slicing") pipeline.enable_attention_slicing()
このコマンドは、curl、jq、base64 ユーティリティがインストールされている UNIX ベースのシステムでのみ機能します。 FLUX サーバーをホストしているハードウェアによっては、完了までに最大で数分かかる場合もあります。
結論
おめでとうございます! Python を使用して独自の FLUX サーバーを正常に作成しました。この設定により、単純な API を介してテキスト プロンプトに基づいて画像を生成できます。基本の FLUX モデルの結果に満足できない場合は、特定のユースケースでのパフォーマンスをさらに向上させるためにモデルを微調整することを検討してください。
完全なコード
このガイドで使用されている完全なコードは以下にあります:
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、ディフューザーを使用した AI を活用した画像生成 API サービスの作成の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

Pythonは学習と使用が簡単ですが、Cはより強力ですが複雑です。 1。Python構文は簡潔で初心者に適しています。動的なタイピングと自動メモリ管理により、使いやすくなりますが、ランタイムエラーを引き起こす可能性があります。 2.Cは、高性能アプリケーションに適した低レベルの制御と高度な機能を提供しますが、学習しきい値が高く、手動メモリとタイプの安全管理が必要です。

限られた時間でPythonの学習効率を最大化するには、PythonのDateTime、時間、およびスケジュールモジュールを使用できます。 1. DateTimeモジュールは、学習時間を記録および計画するために使用されます。 2。時間モジュールは、勉強と休息の時間を設定するのに役立ちます。 3.スケジュールモジュールは、毎週の学習タスクを自動的に配置します。

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

Pythonは、自動化、スクリプト、およびタスク管理に優れています。 1)自動化:OSやShutilなどの標準ライブラリを介してファイルバックアップが実現されます。 2)スクリプトの書き込み:Psutilライブラリを使用してシステムリソースを監視します。 3)タスク管理:スケジュールライブラリを使用してタスクをスケジュールします。 Pythonの使いやすさと豊富なライブラリサポートにより、これらの分野で優先ツールになります。
