Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
@@ -6,6 +6,7 @@ from diffusers import AutoPipelineForText2Image
|
|
6 |
from io import BytesIO
|
7 |
import gradio as gr
|
8 |
import ray
|
|
|
9 |
|
10 |
ray.init()
|
11 |
|
@@ -43,10 +44,10 @@ class ModelActor:
|
|
43 |
print(f"[{process_id}] Error generating image for {prompt_name}: {e}")
|
44 |
return None
|
45 |
|
46 |
-
|
47 |
-
|
48 |
|
49 |
-
async def queue_api_calls(sentence_mapping, character_dict, selected_style):
|
50 |
print(f"queue_api_calls invoked with sentence_mapping: {sentence_mapping}, character_dict: {character_dict}, selected_style: {selected_style}")
|
51 |
prompts = []
|
52 |
|
@@ -57,7 +58,7 @@ async def queue_api_calls(sentence_mapping, character_dict, selected_style):
|
|
57 |
prompts.append((paragraph_number, prompt))
|
58 |
print(f"Generated prompt for paragraph {paragraph_number}: {prompt}")
|
59 |
|
60 |
-
tasks = [
|
61 |
print("Tasks created for image generation.")
|
62 |
|
63 |
responses = await asyncio.gather(*[asyncio.to_thread(ray.get, task) for task in tasks])
|
@@ -76,7 +77,8 @@ def process_prompt(sentence_mapping, character_dict, selected_style):
|
|
76 |
asyncio.set_event_loop(loop)
|
77 |
print("Event loop created.")
|
78 |
|
79 |
-
|
|
|
80 |
print(f"process_prompt completed with return value: {cmpt_return}")
|
81 |
return cmpt_return
|
82 |
|
|
|
6 |
from io import BytesIO
|
7 |
import gradio as gr
|
8 |
import ray
|
9 |
+
from ray.util import ActorPool
|
10 |
|
11 |
ray.init()
|
12 |
|
|
|
44 |
print(f"[{process_id}] Error generating image for {prompt_name}: {e}")
|
45 |
return None
|
46 |
|
47 |
+
def create_actor_pool(num_actors):
|
48 |
+
return ActorPool([ModelActor.remote() for _ in range(num_actors)])
|
49 |
|
50 |
+
async def queue_api_calls(sentence_mapping, character_dict, selected_style, pool):
|
51 |
print(f"queue_api_calls invoked with sentence_mapping: {sentence_mapping}, character_dict: {character_dict}, selected_style: {selected_style}")
|
52 |
prompts = []
|
53 |
|
|
|
58 |
prompts.append((paragraph_number, prompt))
|
59 |
print(f"Generated prompt for paragraph {paragraph_number}: {prompt}")
|
60 |
|
61 |
+
tasks = [pool.submit(lambda actor, prompt, prompt_name: actor.generate_image.remote(prompt, prompt_name), prompt, f"Prompt {paragraph_number}") for paragraph_number, prompt in prompts]
|
62 |
print("Tasks created for image generation.")
|
63 |
|
64 |
responses = await asyncio.gather(*[asyncio.to_thread(ray.get, task) for task in tasks])
|
|
|
77 |
asyncio.set_event_loop(loop)
|
78 |
print("Event loop created.")
|
79 |
|
80 |
+
pool = create_actor_pool(min(20, max(1, len(sentence_mapping)))) # Create pool with dynamic size
|
81 |
+
cmpt_return = loop.run_until_complete(queue_api_calls(sentence_mapping, character_dict, selected_style, pool))
|
82 |
print(f"process_prompt completed with return value: {cmpt_return}")
|
83 |
return cmpt_return
|
84 |
|