概要
こんにちは、ふきです!
この記事では、2026年に公開されたオープンモデル Krea 2(Krea-2-Turbo) を、GPUを持っていなくても 1枚5円以下 で動かす方法を解説します。
今回は、そのまま使える公開Dockerイメージ(GHCR) と、80GBディスクに収まる軽量版モデル を共有するので、
めんどくさい事前準備をSkipしつつ、環境構築 → 画像生成が完結します。
この記事を読むと、以下ができるようになります。
- Krea 2 がどんなモデルか分かる
- RunPod Serverless で画像生成モデルを動かす流れが分かる
- 公開イメージを使って、自分のEndpointから画像を生成できる
本記事はその画像生成・実践版です。RunPod Serverless そのものの基礎(アカウント作成・Model Cache・API の叩き方)は、入門記事で詳しく解説しています。RunPodが初めての方は、こちらからどうぞ。
1. Krea 2とは
Krea 2 は、12B(120億パラメータ)の Diffusion Transformer ベースのT2Iモデルです。
ポイントは大きく3つ。
- オープンウェイトで公開(Hugging Face から誰でもDL可能)
-
Turbo(蒸留)版がある …
Krea-2-Turboは たった8ステップ で生成できる -
diffusers 対応(
Krea2Pipeline)
品質の高い最新モデルで、安く画像生成できるのが今回のKrea2です。
Krea 2 には高品質な Krea-2-Raw(28ステップ)と、高速な Krea-2-Turbo(8ステップ)があります。コスト重視なので、本記事は Turbo を使います。
2. RunPod Serverlessで動かす
ちょっとだけローカルLLMを試すためだけに自前で 80GB GPU を買う/借りっぱなしにするのは、個人にはつらいです。そこで RunPod の Serverless を使います。
- 必要なときだけGPUが起動し、終わると自動で止まる(AWS Lambda の GPU 版みたいなもの)
- 秒単位課金なので、画像を数枚作るだけなら数円
- Model Cache 機能で、Hugging Face のモデルを課金時間外に事前DLしてくれる
特に Model Cache がほかのサービスにはないメリットです。これのおかげで、重い36GBのモデルをDockerイメージに焼きこむ必要がなく、イメージは軽量なまま、起動時にキャッシュから読み込めます。
生成コスト
RunPod Serverless の H100 80GB はだいたい 1秒あたり約0.2円。
Turbo は 8ステップなので、1024×1024 の1枚が 8秒で生成できます。つまり、
ウォーム状態なら 1枚あたり 1.5円前後ぐらいです。
注意:上の「1枚1.5円」はワーカーが温まっている(ウォーム)状態の話です。最初の1リクエストは、モデル(約36GB)をVRAMにロードするコールドスタートが走るため、別途数十秒ぶんの課金(数円)が乗ります。
3. セットアップ 〜 画像生成まで
ここからが本番です。やることは3ステップだけ。
- 公開イメージを指定して Endpoint を作る
- Model Cache に軽量版モデル
fkyyy/Krea-2-Turbo-slimを指定する - API を叩いて画像を受け取る(base64)
3-0. 事前準備(RunPodアカウント & APIキー)
RunPod のアカウントを作り、APIキーを発行しておきます(無料枠はなく、最初に $10 チャージが必要です)。
下記の招待リンクから登録すると、お互いに $5 ぶんのクレジットがもらえます。
自分もうれしいのでお願いします!
Settings → API Keys → Create API Key
発行したキーは 後で使うので控えておきます。
3-1. 配布している公開イメージ
今回のビルド済みの公開イメージ(GHCR) がこちらです。Endpoint作成時にこれを指定するだけでOKです。
ghcr.io/fky1714/krea:latest
3-2. 使うモデル(軽量版を配布しています)
Model Cache に指定するのは、オリジナルではなく私が用意した軽量版です。
fkyyy/Krea-2-Turbo-slim
なぜ軽量版なのか? オリジナルの krea/Krea-2-Turbo は、単一ファイル版とdiffusers分割版が二重に入っていてリポジトリ全体で約62GBあります。これを Model Cache でDLすると、80GBのディスクに(Dockerイメージと合わせて)収まらず、ワーカーが image ready, model pending download のまま起動しない…という問題が起きます。
そこで、推論に使わない重複ファイル(turbo.safetensors 約26GB)を除いた軽量版(約36GB) を公開しています。中身の推論結果はオリジナルと同一で、80GBディスクに余裕で収まります。
3-3. Endpoint を作成する
RunPodコンソールから Serverless Endpoint を作ります。流れは入門記事と同じです。
Serverless → New Endpoint → Custom Deployment
→ Deploy from Docker registry or a template → イメージを指定
左メニューの Serverless → New Endpoint
Custom deployment を選択
Deploy from Docker registry or a template で、配布イメージを指定
ここに、先ほどの公開イメージを入力します。
ghcr.io/fky1714/krea:latest
少し下の Model に Hugging Face リポジトリを指定(=Model Cache)
Model フィールドに、次を入れるだけです。
fkyyy/Krea-2-Turbo-slim
環境変数に MODEL_NAME を指定(重要)
配布イメージの既定は krea/Krea-2-Turbo を読む設定になっているため、軽量版を使うにはワーカーにも同じリポジトリを教える必要があります。Endpoint の環境変数に次を追加してください。
MODEL_NAME = fkyyy/Krea-2-Turbo-slim
これを設定し忘れると、ワーカーがオリジナル(62GB)を読みに行き、model pending download で詰まります。Model フィールドと MODEL_NAME は必ず同じ fkyyy/Krea-2-Turbo-slim に揃えてください。
設定項目の例
- GPU:H100 80GB
- Max Workers:1
- Active Workers:0
- Idle Timeout:1秒
Krea 2 は 12B と大きいので、VRAM 80GB のGPUを選びます。Active Workers は常時課金なので 0、個人利用なら Idle Timeout は最小の1秒でOKです。
もっと安く・小さいGPUで動かしたい人へ
このワーカーは環境変数で挙動を変えられます(どれも任意。未設定でそのまま動きます)。
| 環境変数 | 効果 |
|---|---|
ENABLE_FP8=1 |
transformer を fp8 量子化し VRAM を約半分に |
ENABLE_CPU_OFFLOAD=1 |
VRAMが足りないGPUで、CPUへ退避しながら動かす(遅いがVRAM節約) |
OUTPUT_FORMAT=jpeg |
返却画像をJPEGに(レスポンスが軽くなる) |
まずは MODEL_NAME だけ設定して動かすのがおすすめです。
設定したら Deploy でEndpointを作成します。
作成直後、Model Cache が fkyyy/Krea-2-Turbo-slim(約36GB)をDLします。このDL中はワーカー課金は発生しません。オリジナル(62GB)より軽いぶんDLも短めですが、終わるまでは少し待ちます。たまにログを見ながら待ちましょう。
3-4. 画像を生成する(最初の1枚)
Endpoint ができると API URL が発行されます。リクエストは「最上位に input を持つJSON」が基本形。input の中身がワーカーへのパラメータです。
非同期実行(/run)でジョブを投げます。
curl -X POST \
https://api.runpod.ai/v2/{ENDPOINT_ID}/run \
-H "Authorization: Bearer {API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"input": {
"prompt": "a cinematic photo of a red fox sitting in fresh snow, golden hour light",
"width": 1024,
"height": 1024,
"steps": 8,
"guidance_scale": 0.0,
"seed": 42
}
}'
steps: 8 / guidance_scale: 0.0 は Turbo の推奨値です。指定しなくても同じ値がデフォルトで入ります。
すぐにジョブIDが返ります。
{ "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "status": "IN_QUEUE" }
この id で /status をポーリングして完了を待ちます。
curl https://api.runpod.ai/v2/{ENDPOINT_ID}/status/{JOB_ID} \
-H "Authorization: Bearer {API_KEY}"
完了すると status が COMPLETED になり、output.images に base64 の画像(PNG) が配列で入ってきます。
{
"status": "COMPLETED",
"output": {
"status": "completed",
"images": ["iVBORw0KGgoAAAANSUhEUg...(base64)"],
"meta": { "seed": 42, "steps": 8, "model": "krea-2-turbo-slim", "gpu": "NVIDIA H100 80GB HBM3" },
"timing": { "inference_s": 4.2, "total_s": 4.3 }
}
}
3-5. base64 をデコードして保存(Python)
ここまでをまとめた最小クライアントです。これを実行すれば out.png が手に入ります。
import base64
import time
import requests
EP = "{ENDPOINT_ID}"
KEY = "{API_KEY}"
H = {"Authorization": f"Bearer {KEY}", "Content-Type": "application/json"}
# 1. ジョブを投げる
jid = requests.post(
f"https://api.runpod.ai/v2/{EP}/run",
headers=H,
json={"input": {
"prompt": "a cinematic photo of a red fox sitting in fresh snow, golden hour light",
"steps": 8,
"guidance_scale": 0.0,
"seed": 42,
}},
).json()["id"]
# 2. 完了までポーリング(コールドスタートを考慮して長めに待つ)
while True:
s = requests.get(f"https://api.runpod.ai/v2/{EP}/status/{jid}", headers=H).json()
if s["status"] in ("COMPLETED", "FAILED", "CANCELLED", "TIMED_OUT"):
break
print("status:", s["status"])
time.sleep(3)
# 3. base64 をデコードして保存
out = s["output"]
b64 = out["images"][0] # 先頭の画像
with open("out.png", "wb") as f:
f.write(base64.b64decode(b64))
print("saved -> out.png meta:", out.get("meta"))
実行すると、こんな画像が返ってきます(プロンプト:雪の中のキツネ)。
1枚以上まとめて作りたいときは、batch を使うと1回のGPU処理でまとめて生成できます(お得)。
{ "input": {
"batch": [
{ "prompt": "a fox in the snow" },
{ "prompt": "a cyberpunk night market in the rain" }
],
"steps": 8, "guidance_scale": 0.0
} }
結果は output.results[i](入力順)に、それぞれ images が入って返ります。
4. コストの実際
最後に、気になるコストを整理します(H100 80GB ≒ 0.2円/秒 で概算)。
| タイミング | 内容 | ざっくり課金 |
|---|---|---|
| 初回(コールド) | モデル約36GBをVRAMへロード(数十秒)+生成 | 数円 |
| 2回目以降(ウォーム) | 生成のみ(8ステップ・数秒) | 1枚 1.5円前後 |
つまり「最初だけ数円、あとは1枚数円以下」。Idle Timeout を1秒にしておけば、使っていない間は課金されません。
コールドスタートを減らすコツ:連続で何枚も作りたいときは、Idle Timeout を少し長め(数十秒)にすると、ワーカーが温まったまま使い回せて、トータルで安くなることがあります。とはいえ普段は1秒で十分です。
まとめ
- Krea 2(Turbo) は、8ステップで速く生成できる高品質オープンモデル
- RunPod Serverless + Model Cache で、GPUを持たずに自分のAPI化できる
- 今回配布した 公開イメージ
ghcr.io/fky1714/krea:latest+ 軽量版モデルfkyyy/Krea-2-Turbo-slimを指定するだけでデプロイ完了 - コストは 最初だけ数円・あとは1枚数円以下
「最新の画像生成モデルを、安く、自分のものとして触る」体験、ぜひ試してみてください。
RunPod の基礎やコスト最適化については、こちらもどうぞ。
最後まで読んでいただき、ありがとうございました!




