[アップデート] Amazon BedrockでStable Diffusion 3.5 Largeが使えるようになりました!
こんにちは、AWS事業本部 コンサルティング部の荒平(@0Air)です。
2024年re:Inventで発表されていた、Stable Diffusion 3.5 LargeがAmazon Bedrockで使えるようになっていました。
Stable Diffusion 3.5 LargeはStability AIが提供する最新のモデルで、Text to Image, Image to Imageに対応しています。以下は公式の紹介文です。
Stability AI の最新かつ最先端のモデルにより、お客様はテキストの記述から驚くほど高品質の画像を生成できます。コンセプトアートの作成、視覚効果のプロトタイピング、詳細な製品イメージの作成を加速します。
言語: 英語
ファインチューニング対応: いいえ
サポートされているユースケース: メディアとエンターテインメント、ゲーム開発、小売、出版、教育とトレーニング、マーケティング/広告代理店
https://aws.amazon.com/jp/bedrock/stability-ai/より引用
Bedrockで利用可能なStable Diffusionモデルの比較
モデル名 | パラメータ数 | 料金 | 備考 |
---|---|---|---|
Stable Diffusion 3.5 Large | 8.1 Billion | 0.08 USD/Image | 画像入力に対応 |
Stable Image Ultra 1.0 (v1.1) | 16 Billion | 0.14 USD/Image | Stable Diffusion 3.5 ベース |
Stable Image Core 1.0 (v1.1) | 2.6 Billion | 0.04 USD/Image | Stable Diffusion 3.5 ベース |
Stable Diffusion 3 Large | 8 Billion | 0.08 USD/Image | 画像入力に対応 |
Stable Image Ultra 1.0 (v1) | 16 Billion | 0.14 USD/Image | Stable Diffusion 3.0 ベース |
Stable Image Core 1.0 (v1) | 2.6 Billion | 0.04 USD/Image | Stable Diffusion 3.0 ベース |
Stable Diffusion XL 1.0 | 3.5 Billion (Base) | 0.04 USD/Image - 0.08 USD/Image |
廃止予定 |
※ リストのモデルは2024/12/24時点。
※ Stable Image Ultra, Coreのパラメータは以下の記事から引用。
画像出力の速度が上がっていそう
Stable Diffusion 3 Large (SD3.0)とStable Diffusion 3.5 Large (SD3.5)で同じプロンプトを叩いて比較してみます。
以下はサンプルコードです。執筆時点ではオレゴンのみにリリースされているため、us-west-2
を明示的に指定しています。
import boto3
import json
import base64
import time
from datetime import datetime
bedrock = boto3.client(
'bedrock-runtime',
region_name='us-west-2'
)
request_body = {
"prompt": "a beautiful flower",
# "prompt": "A magical glowing flower in a mystical garden, iridescent petals, ethereal lighting, detailed botanical illustration style, photorealistic",
"mode": "text-to-image",
"aspect_ratio": "1:1",
"output_format": "jpeg"
}
try:
start_time = time.time()
response = bedrock.invoke_model(
modelId="stability.sd3-5-large-v1:0",
# modelId="stability.sd3-large-v1:0",
body=json.dumps(request_body),
contentType="application/json",
accept="application/json"
)
end_time = time.time()
elapsed_time = round(end_time - start_time, 2)
response_body = json.loads(response['body'].read())
print("レスポンスの構造:")
print(json.dumps(response_body, indent=2))
if 'images' in response_body and response_body['images']:
image_data = response_body['images'][0]
timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')
filename = f"generated_flower_{timestamp}.jpg"
with open(filename, "wb") as f:
f.write(base64.b64decode(image_data))
print(f"画像が正常に生成され、{filename}として保存されました。")
print(f"処理時間: {elapsed_time}秒")
else:
print("画像データが見つかりませんでした。")
except Exception as e:
print(f"エラーが発生しました: {str(e)}")
import traceback
print(traceback.format_exc())
結果
新モデルであるStable Diffusion 3.5 Largeの画像出力速度は、計測範囲で最大約19%向上していました。
もちろん、リソースの混雑状況やネットワークにもよると思いますが、画像1枚につき1秒ほどの有意差は出ていそうです。
モデル | プロンプト | 速度 (秒) | 平均 (秒) |
---|---|---|---|
Stable Diffusion 3.5 Large | 短 (※1) | 6.22 6.14 6.18 6.09 6.32 |
6.19 |
Stable Diffusion 3.0 Large | 短 (※1) | 7.47 7.31 7.38 7.46 7.25 |
7.37 |
Stable Diffusion 3.5 Large | 長 (※2) | 6.47 6.39 6.35 6.40 6.48 |
6.42 |
Stable Diffusion 3.0 Large | 長 (※2) | 7.30 7.46 7.12 7.33 7.18 |
7.28 |
※1: "a beautiful flower"
※2: "A magical glowing flower in a mystical garden, iridescent petals, ethereal lighting, detailed botanical illustration style, photorealistic"
ちなみに、2のプロンプトはClaudeくんが77トークン以内で!と指示して考えてくれました。
SD3.5産のイラストとSD3.0産のイラストを並べてみます。そこまで差はないように見えますが、同じプロンプトでもSD3.5の方がアート風のものが少し多く出力されました。(シードによります)
とても綺麗な花ですね。
おわりに
最新モデルのStable Diffusion 3.5 LargeがAmazon Bedrockから使えるようになったので触ってみました。
このモデルは自宅で動かそうと思うとかなりスペックが必要になります。
満足に動かせるのはNVIDIA GeForce RTX 3090/4090
(VRAM 24GB)以降となっており、本来は数十万円が必要になるところですが、AWSはオンデマンドに提供してくれるため、ちょっとの利用であれば少額で済むのでありがたいですね。
このエントリが誰かの助けになれば幸いです。
それでは、AWS事業本部 コンサルティング部の荒平(@0Air)がお送りしました!
参考