in ai-ml/gke-ray/rayserve/stable-diffusion/stable_diffusion_tpu_req.py [0:0]
def send_requests(num_requests: int, batch_size: int, save_pictures: bool,
url: str = "http://localhost:8000/imagine"):
"""Sends a list of requests and processes the responses."""
print("num_requests: ", num_requests)
print("batch_size: ", batch_size)
print("url: ", url)
print("save_pictures: ", save_pictures)
prompts = _PROMPTS
if num_requests > len(_PROMPTS):
# Repeat until larger than num_requests
prompts = _PROMPTS * int(np.ceil(num_requests / len(_PROMPTS)))
prompts = np.random.choice(
prompts, num_requests, replace=False)
with futures.ThreadPoolExecutor(max_workers=batch_size) as executor:
raw_images = list(
tqdm(
executor.map(
functools.partial(send_request_and_receive_image, url=url),
prompts,
),
total=len(prompts),
)
)
if save_pictures:
print("Saving pictures to diffusion_results.png")
images = [Image.open(raw_image) for raw_image in raw_images]
grid = image_grid(images, 2, num_requests // 2)
grid.save("./diffusion_results.png")