RunPod で FLUX.1 を動かしてみた:月数百円で最強の画像生成環境を構築する手順
画像生成 AI といえば、Midjourney(ミッドジャーニー)や DALL-E(ダリ)、Stable Diffusion(ステーブルディフュージョン)といったサービスを思い浮かべるみなさんが多いかと思います。
ただ、これらの商用サービスは月額固定で課金が発生し、しかも生成可能枚数や商用利用範囲に制限がある場合が少なくありません。
そこで本記事では、Black Forest Labs(ブラックフォレストラボ)が公開しているオープンソース画像生成モデル「FLUX.1(フラックスワン)」を、GPU クラウドサービスである RunPod(ランポッド)上で動かす手順を解説します。
FLUX.1 は2024年に公開されて以降、オープンソース画像生成モデルの最高峰として広く認知されており、特に幻想的・神秘的なビジュアル表現において Midjourney に匹敵する品質を実現できます。
この構成の最大の利点はコストです。
月に数百枚程度の画像生成であれば、GPU 利用料は数百円から千円程度に収まります。
Midjourney の Standard プランが月額30ドル前後、Replicate(レプリケート)の API 経由でも1枚あたり数セント発生することを考えると、自前運用の経済的優位は明確です。
本記事は読みながら同時に手を動かすことを前提に構成しています。
みなさんが順に進めていただければ、最初の1枚を生成するところまで到達できる内容を目指しました。
必要なもの
セットアップを開始する前に、以下の3点が揃っているかご確認ください。
第一に、Hugging Face(ハギングフェイス)のアカウントです。
FLUX.1 のモデルファイルは Hugging Face Hub(ハブ)からダウンロードする形になります。
アカウント作成は huggingface.co から行えます。
第二に、Hugging Face のアクセストークン(Access Token)です。
FLUX.1 [dev] はゲート付きモデル(Gated Model)と呼ばれる、利用申請が必要なモデルです。
RunPod から自動でダウンロードするためにトークンが必要になります。
発行手順は後述します。
第三に、RunPod のアカウントとクレジット残高です。
最低でも5ドル程度の残高があれば、本記事の手順を完遂できます。
コスト感についても先に明示します。
本記事で使用する RTX 4090(GeForce RTX 4090)の Secure Cloud(セキュアクラウド)価格は1時間あたり約0.69ドルです。
FLUX.1 のセットアップから初回生成までを通しで実施しても、合計1時間以内に収まる想定であり、実費は0.5ドル前後(日本円で80円程度)です。
ステップ1:Hugging Face でアクセストークンを発行する
まず Hugging Face 側の準備を済ませます。
ブラウザで huggingface.co にログインし、画面右上のアバターアイコンをクリックして「Settings(セッティングス)」を選択してください。
左サイドバーに「Access Tokens(アクセストークンズ)」というメニューがありますので、こちらをクリック。
「New token(ニュートークン)」ボタンを押すと、トークン作成画面が表示されます。
設定項目は以下の通りに指定してください。
Token name(トークンネーム)には「runpod-flux」など、用途が分かる任意の名前を入力します。
Token type(トークンタイプ)は「Read(リード)」を選択してください。
Write(ライト)権限はモデルのアップロードに使うものであり、今回は不要です。
「Create token(クリエイトトークン)」をクリックすると、hf_ で始まる文字列のトークンが表示されます。
このトークンは画面を閉じると再表示できませんので、必ずメモ帳やパスワードマネージャーに保管してください。
ちなみに筆者はこの手のメモはBitwardenを使っています。
ステップ2:FLUX.1 [dev] の利用申請を行う
続いて、FLUX.1 [dev] モデルの利用申請を済ませます。
ブラウザで以下の URL にアクセスしてください。
Copyhttps://huggingface.co/black-forest-labs/FLUX.1-dev
ページ上部に「You need to agree to share your contact information to access this model(このモデルにアクセスするには連絡先情報の共有に同意する必要があります)」という案内が表示されているはずです。
氏名・所属・利用目的などの簡単な入力フォームを送信すると、通常は数秒から数分以内に承認されます。
承認後、同じページに「Gated model(ゲーテッドモデル)You have been granted access to this model(このモデルへのアクセスが許可されました)」と表示されれば準備完了です。
なお、本記事ではより軽量で高速な FLUX.1 [schnell](シュネル、ドイツ語で「速い」の意)を使用する手順も併せて解説します。
schnell 版は Apache 2.0 ライセンスで利用申請が不要なため、急ぎで試したいみなさんは schnell 版から始めても問題ありません。
ステップ3:RunPod で Pod を起動する
RunPod のダッシュボードにログインし、左サイドバーの「Pods(ポッズ)」をクリックします。
「Deploy(デプロイ)」または「+ New Pod(ニューポッド)」ボタンから新しい Pod の作成画面に進んでください。
GPU の選択画面では、本記事では RTX 4090(VRAM 24GB、1時間あたり約0.69ドル) を選択します。
FLUX.1 [dev] の推奨 VRAM は20GB 以上であり、RTX 4090 は要件を満たします。
なお、より安価な選択肢として RTX A5000(24GB)も使用可能ですが、生成速度は RTX 4090 が優位です。
この辺りはどう使うか?によっても変わりますので、お使いのAIチャットと相談してください。
テンプレートの選択画面では「PyTorch 2.8.0(パイトーチ)」を選択。
CUDA(クーダ)12.8 がプリインストールされており、FLUX.1 の動作に必要な環境が最小構成で整っています。
詳細設定画面では、以下のパラメータを確認してください。
Container Disk(コンテナディスク)は最低でも30GB を確保します。
FLUX.1 のモデルファイル本体が約24GB あり、依存ライブラリと合わせて20GB 以上は必要になります。
Volume(ボリューム)も30GB 程度を推奨します。
Volume はモデルファイルなどの永続データを保存する領域であり、Pod を停止しても消えません。
「Deploy On-Demand(デプロイオンデマンド)」をクリックすると、Pod が起動します。
起動完了まで通常1〜2分程度かかります。
ステップ4:Pod に接続する
Pod のステータスが「Running(ランニング)」に変わったら、接続作業に進みます。
Pod の管理画面で「Connect(コネクト)」タブをクリックしてください。
「HTTP Services(HTTPサービシズ)」の項目に「Jupyter Lab(ジュピターラボ)」へのリンクが表示されているはずです。
「Initializing(イニシャライジング)」の表示が消え、リンクがクリック可能になるまでお待ちください。
Jupyter Lab のリンクをクリックすると、新しいブラウザタブで Jupyter Lab の画面が開きます。
ここが今後の作業環境です。
なお、本記事では Jupyter Lab に内蔵されているターミナル機能(Terminal)と Notebook(ノートブック)の両方を使用します。
Jupyter Lab の左サイドバーから「+」ボタンを押すと Launcher(ランチャー)画面が開き、Notebook と Terminal の両方を起動できます。
ステップ5:必要なライブラリをインストールする
Jupyter Lab の Launcher から「Terminal」をクリックしてターミナルを開いてください。以下のコマンドを順に実行します。
まず、Python ライブラリの最新化を行います。
Copypip install --upgrade pip
次に、FLUX.1 を動かすために必要な主要ライブラリをインストールします。
Copypip install --upgrade diffusers transformers accelerate sentencepiece protobuf
各ライブラリの役割を簡潔に説明しますと、diffusers(ディフューザーズ)は拡散モデル(Diffusion Model)全般を扱う Hugging Face 公式ライブラリです。
transformers(トランスフォーマーズ)は FLUX.1 の内部で使用されるテキストエンコーダー(Text Encoder)に必要です。
accelerate(アクセラレート)は GPU 推論を効率化します。
sentencepiece(センテンスピース)と protobuf(プロトバフ)はトークナイザー(Tokenizer)の動作に必要な補助ライブラリです。
インストールが完了したら、続けて Hugging Face トークンを環境変数に設定します。
先ほどメモした hf_ で始まるトークン文字列を、以下のコマンドの該当部分に貼り付けて実行してください。
Copyexport HF_TOKEN="hf_ここにあなたのトークンを貼り付け"
huggingface-cli login --token $HF_TOKEN
「Login successful(ログインサクセスフル)」と表示されれば、Hugging Face への認証は完了です。
ステップ6:FLUX.1 を実行する Python コードを書く
Jupyter Lab の Launcher に戻り、「Notebook」セクションから「Python 3」を選択して新しい Notebook を作成してください。
最初のセル(Cell)に、以下のコードを入力します。
これは FLUX.1 [dev] を読み込み、最初の画像を生成するコードです。
Copyimport torch
from diffusers import FluxPipeline
# パイプラインの読み込み
pipe = FluxPipeline.from_pretrained(
"black-forest-labs/FLUX.1-dev",
torch_dtype=torch.bfloat16
)
# VRAM 節約のため、必要な部分のみ GPU に乗せる設定
pipe.enable_model_cpu_offload()
コードの内容を簡潔に解説します。
FluxPipeline は diffusers ライブラリが提供する FLUX.1 専用のパイプラインクラスです。
from_pretrained メソッドで Hugging Face Hub からモデルをダウンロードし、メモリに読み込みます。
torch_dtype=torch.bfloat16 は計算精度を bfloat16(ブレインフロート16)に設定することで、VRAM 消費を抑える指定です。
enable_model_cpu_offload() は使用していないモジュールを CPU メモリに退避させ、VRAM 24GB 環境でも安定動作させるための設定です。
このセルを実行すると、初回はモデルファイル(約24GB)のダウンロードが始まります。
RunPod のネットワーク回線は高速ですので、通常は3〜7分程度で完了します。
なお、FLUX.1 [schnell] を使用する場合は、上記コードの "black-forest-labs/FLUX.1-dev" の部分を "black-forest-labs/FLUX.1-schnell" に変更してください。
schnell 版はライセンスが Apache 2.0 であり、商用利用も含めて自由に使えます。
ステップ7:最初の画像を生成する
モデルの読み込みが完了したら、新しいセルを追加して以下のコードを入力します。
Copy# プロンプト(生成したい画像の説明文)
prompt = "A mystical cosmic scene with swirling galaxies and ethereal nebulae, deep purple and gold color palette, divine feminine energy, cinematic lighting, ultra detailed, 8k quality"
# 画像生成の実行
image = pipe(
prompt,
height=1024,
width=1024,
guidance_scale=3.5,
num_inference_steps=28,
max_sequence_length=512,
generator=torch.Generator("cpu").manual_seed(42)
).images[0]
# 画像を保存
image.save("output_001.png")
# Notebook 上で画像を表示
image
各パラメータの意味を解説します。
prompt(プロンプト)は生成したい画像を英語で記述する文字列です。
FLUX.1 は英語プロンプトに最適化されているため、日本語ではなく英語での記述を推奨します。
height と width は出力画像の縦横サイズで、1024×1024 が標準です。
guidance_scale(ガイダンススケール)はプロンプトへの忠実度で、FLUX.1 [dev] では3.5前後が推奨値です。
num_inference_steps(ナムインファレンスステップス)は生成のステップ数で、多いほど高品質ですが時間もかかります。
dev 版は28、schnell 版は4が推奨です。
max_sequence_length(マックスシーケンスレングス)はプロンプトの最大トークン数で、512が上限です。
generator の manual_seed(42) は乱数シードを固定する指定で、同じシードを使えば同じ画像が再現できます。
このセルを実行すると、FLUX.1 が画像生成を開始します。
RTX 4090 環境であれば、dev 版で約20〜30秒、schnell 版で約3〜5秒で1枚の画像が生成されます。
生成完了後、output_001.png というファイルが Jupyter Lab の左サイドバーのファイル一覧に表示されているはずです。
ステップ8:複数枚を連続生成する
実用的な運用では、複数枚を連続生成するスクリプトが必要になります。
新しいセルに以下のコードを入力してください。
Copy# 複数のプロンプトをリスト形式で定義
prompts = [
"A serene cosmic goddess floating in a starry nebula, soft golden light, mystical atmosphere",
"Sacred geometry mandala with luminous patterns, deep indigo and silver, spiritual symbolism",
"Ethereal moon over a calm ocean, soft pastel colors, meditative ambiance",
"Ancient tarot card design with celestial motifs, ornate borders, vintage feel",
"Aurora borealis dancing across a snowy mountain landscape, dreamy quality"
]
# 各プロンプトに対して画像を生成
for index, prompt in enumerate(prompts):
image = pipe(
prompt,
height=1024,
width=1024,
guidance_scale=3.5,
num_inference_steps=28,
max_sequence_length=512,
generator=torch.Generator("cpu").manual_seed(index)
).images[0]
filename = f"output_{index+1:03d}.png"
image.save(filename)
print(f"生成完了: {filename}")
print("すべての画像の生成が完了しました")
このスクリプトを実行すると、5つのプロンプトに対応する5枚の画像が連続生成されます。
それぞれ異なるシード値を使用しているため、毎回異なる画像が出力されます。
ステップ9:生成した画像をローカル PC にダウンロードする
生成画像を RunPod から自分の PC に転送する方法をご案内します。
最も簡単な方法は、Jupyter Lab のファイル一覧から直接ダウンロードする方式です。
左サイドバーのファイル一覧で対象のファイルを右クリックし、「Download(ダウンロード)」を選択してください。ブラウザのダウンロード機能で PC に保存されます。
複数ファイルを一括ダウンロードしたい場合は、ターミナルで以下のコマンドを実行して ZIP(ジップ)形式に圧縮してから、生成された ZIP ファイルをダウンロードしてください。
Copyzip -r generated_images.zip output_*.png
ステップ10:Pod を停止してコストを管理する
すべての作業が完了したら、必ず Pod を停止してください。
RunPod は Pod が起動している間、継続的に課金が発生します。
RunPod のダッシュボードに戻り、対象の Pod の管理画面で「Stop(ストップ)」ボタンをクリックします。
これで GPU 課金は停止します。
ただし、Stop 状態でも Volume(ストレージ)の課金は少額継続します。
今後しばらく使用しない場合は「Terminate(ターミネイト、完全削除)」を選択することで、すべての課金を停止できます。
Terminate を選択するとデータも削除されますので、必要なファイルは事前にダウンロードしておく必要があります。
なお、ダウンロード済みのモデルファイル(約24GB)も Volume に保存されています。
次回起動時に再ダウンロードを避けたいみなさんは Stop を選択し、再ダウンロードを許容できる場合は Terminate を選択する判断になります。
コスト試算
最後に、本記事の構成での実運用コスト目安を提示します。
セットアップから初回生成までの所要時間は約30〜60分です。
RTX 4090 の時間単価0.69ドルで計算すると、約0.35〜0.70ドル(日本円で約55〜110円)が初回の実費となります。
継続運用として月100枚の画像を生成する場合、1枚あたりの生成時間(dev 版で約30秒)から逆算すると、月の GPU 使用時間は約1時間です。
これに作業時の待機時間を加味しても、月のコストは2〜5ドル(約300〜750円)の範囲に収まります。
商用サービスとの比較として、Midjourney の Standard プランは月30ドル、Replicate での FLUX.1 [dev] API は1枚約0.03ドル(月100枚で3ドル相当)となります。
自前運用は Midjourney との比較では明確に安価であり、Replicate との比較ではほぼ同等のコストでありながら、生成速度・カスタマイズ性・モデル選択の自由度で優位に立ちます。
まとめと次のステップ
本記事では、RunPod 上で FLUX.1 を動かす一連の手順を解説しました。
Hugging Face のアクセストークン発行から、Pod の起動、ライブラリのインストール、Python コードによる画像生成、ファイルのダウンロード、コスト管理までを通しでご案内しました。
次のステップとして、以下の発展課題が考えられます。
第一に、Stable Video Diffusion(ステーブルビデオディフュージョン)や LTX-Video(エルティーエックスビデオ)といった動画生成モデルと組み合わせ、FLUX.1 で生成した静止画を動画化する構成です。
第二に、Style-Bert-VITS2(スタイルバートビッツツー)などの日本語音声合成モデルと組み合わせ、画像・音声・BGM が統合されたコンテンツ生成パイプラインを構築する方向です。
第三に、LoRA(ローラ、Low-Rank Adaptation)と呼ばれるファインチューニング手法を用いて、独自の画風を学習させた専用モデルを作成する取り組みです。
オープンソース AI モデルと GPU クラウドの組み合わせは、商用 SaaS(サース)への依存度を下げながら、独自のコンテンツ制作基盤を構築する有効な選択肢です。
本記事がみなさんの実装の出発点となれば幸いです。
おまけ:Replicate の方が簡単なのか
実はReplicateAPIを使えば、画像生成くらいなら初期セットアップが10分で終わります。
Replicate のアカウントを作り、API トークンを取得し、Python から数行のコードを書くだけ。
RunPod のように Pod を起動・停止する手間が一切ありません。
Copyimport replicate
output = replicate.run(
"black-forest-labs/flux-dev",
input={"prompt": "cosmic goddess in nebula"}
)
これだけで画像が返ってきます。
RunPod の手順10ステップに対して、Replicate は実質3ステップです。
Pod の起動・停止を意識しなくていい RunPod 最大の落とし穴は「停止し忘れによる課金垂れ流し」です。Replicate は完全な従量課金(リクエストごとに課金)なので、寝落ちで課金が続く心配がゼロ。
インフラ管理が不要 モデルの更新、ライブラリのバージョン管理、CUDA のトラブル、VRAM 不足のエラー、これらすべてが Replicate 側で吸収されます。
スケーラビリティが自動 急に1日1万枚生成したくなっても、Replicate なら何もしなくていい。
RunPod 自前運用だと GPU を増やす対応が必要。
最新モデルへの追従が早い 新しいモデルが出ると数日〜数週間で Replicate に登場します。
自分で導入する手間が省ける。
Replicate のデメリット(正直に評価)
ボリュームディスカウントがない 1枚あたりの単価は固定です。
月1万枚生成すると、RunPod なら GPU を効率的に使い回せますが、Replicate は枚数 × 単価がそのまま積み上がります。
カスタマイズの自由度が低い FLUX.1 に独自の LoRA を組み合わせる、複数モデルを連続実行する、特殊な後処理を加える、といった応用は Replicate では制限があります。
RunPod なら何でもできます。
コールドスタート(初回起動の遅延)がある あまり使われていないモデルだと、初回リクエスト時に30秒〜数分待たされることがあります。
RunPod ならモデルを常駐させておけます。
長期運用での総コストは高くなりがち これは後で具体的に試算します。
自分のスキル資産にならない これが筆者にとっては最大の論点かもしれません。
Replicate は「API を叩くスキル」しか身につきません。
RunPod 自前運用は「AI インフラを構築するスキル」が手に入ります。
実際のコスト比較(具体的な数字で)
先ほどの記事で「ほぼ同等」と書きましたが、もう少し正確に試算します。
Replicate での FLUX.1 [dev] 単価 1枚あたり約0.03ドル(2026年時点の参考価格)。
生成時間ベースの課金で、解像度や複雑さで変動します。
月50枚生成する場合
- Replicate:50 × $0.03 = $1.50(約230円)
- RunPod:GPU 30分使用で $0.35(約55円)
- 差額:月175円程度、Replicate が高い
月500枚生成する場合
- Replicate:500 × $0.03 = $15(約2,250円)
- RunPod:GPU 5時間使用で $3.45(約520円)
- 差額:月1,700円程度、Replicate が高い
月5,000枚生成する場合
- Replicate:5,000 × $0.03 = $150(約22,500円)
- RunPod:GPU 50時間使用で $34.50(約5,200円)
- 差額:月17,000円程度、Replicate が高い
つまり、生成枚数が増えるほど自前運用が有利になります。
逆に少量なら Replicate でも大した金額にはなりません。
私のおすすめ:ハイブリッド運用
実は、「どちらか一方」ではなく「両方使う」のが最適解だと考えます。
具体的な使い分けはこうです。
Replicate で済ませる領域
- 試作・プロトタイプ段階の生成
- 月数十枚程度の少量生成
- まだ運用フローが固まっていない新規コンテンツの実験
- 複数モデルを比較検討するフェーズ
RunPod 自前運用に移す領域
- 運用が固まり、毎日大量生成が確定したパイプライン(毎日の星座動画など)
- 独自のカスタマイズが必要なコンテンツ(LoRA、独自ワークフロー)
- 長期的に資産化したい技術スタック(Style-Bert-VITS2 の日本語音声など)
つまり、「Replicate で立ち上げて、量産フェーズに入ったら RunPod に移行する」という段階運用です。