🙅♀️
Mojo🔥でStable Diffusionを使うとPythonより1秒遅い
Mojo 🔥で画像生成
今回は画像生成を題材に、単に
簡単な実験
ランタイムはT4 GPU
を選んだ。
Colabolatoryを使わない場合
自分の環境を使う場合
インストール
torch
は
コマンドの一例
その他は次の通りインストールできる。
# Stable Diffusion
pip install --upgrade diffusers[torch]
# Mojo
pip install modular
pip
でインストールできるが、この方法は公式に推奨されているものではない。本来はpixi
でインストールするのがよいとされている。
Python
from diffusers import DiffusionPipeline
import torch
import time
pipeline = DiffusionPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5", torch_dtype=torch.float16)
pipeline.to("cuda")
def __time__(func, *args, **kwargs):
start = time.perf_counter()
result = func(*args, **kwargs)
end = time.perf_counter()
elapsed = end - start
print(f"{end - start:.6f} [s]")
return result
prompt = input('prompt > ')
image = __time__(pipeline, prompt).images[0]
name = input('name > ')
image.save(f'{name}.png')
Mojo 🔥
import time
import sys
from python import Python
fn main() raises:
try:
var torch = Python.import_module('torch')
var diffusers = Python.import_module('diffusers')
var pipeline = diffusers.DiffusionPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5", torch_dtype=torch.float16)
pipeline.to("cuda")
var prompt = input('prompt > ')
var start = time.monotonic()
var image = pipeline(prompt).images[0]
var end = time.monotonic()
var elapsed = (end - start) / 1_000_000_000
print(String('{} [s]').format(elapsed))
var name = input('file name > ')
var file_name = String('{}.png').format(name)
image.save(file_name)
print(String('{} saved').format(file_name))
except:
sys.exit(1)
|
||
---|---|---|
平均 |
※平均はどちらも
所感
本当は高速化という喜ばしい結果を期待していたのだが、以前に続きまたもや
Discussion