radames commited on
Commit
fa2d678
·
1 Parent(s): 09b852c

all toghether

Browse files
Files changed (4) hide show
  1. Dockerfile +20 -1
  2. app.py +190 -0
  3. requirements.txt +2 -0
  4. run.sh +2 -0
Dockerfile CHANGED
@@ -5,4 +5,23 @@ RUN chown -R user:user /root/
5
 
6
  USER user
7
  ENV HOME=/home/user \
8
- PATH=/home/user/.local/bin:$PATH
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
 
6
  USER user
7
  ENV HOME=/home/user \
8
+ PATH=/home/user/.local/bin:$PATH \
9
+ PYTHONPATH=$HOME/app \
10
+ PYTHONUNBUFFERED=1 \
11
+ GRADIO_ALLOW_FLAGGING=never \
12
+ GRADIO_NUM_PORTS=1 \
13
+ GRADIO_SERVER_NAME=0.0.0.0 \
14
+ GRADIO_THEME=huggingface \
15
+ SYSTEM=spaces
16
+
17
+ WORKDIR $HOME/app
18
+ COPY ./requirements.txt /code/requirements.txt
19
+
20
+ # create virtual env for Gradio app
21
+ RUN python -m venv $HOME/.venv && \
22
+ . $HOME/.venv/bin/activate && \
23
+ pip install --no-cache-dir --upgrade pip && \
24
+ pip install --no-cache-dir -r /code/requirements.txt
25
+
26
+ COPY --chown=user . $HOME/app
27
+ CMD ["sh", "run.sh"]
app.py ADDED
@@ -0,0 +1,190 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ import gradio as gr
3
+ from PIL import Image
4
+ import requests
5
+ import base64
6
+ import numpy as np
7
+ import random
8
+ import io
9
+
10
+ URL = "http://localhost:5000/predictions"
11
+ HEADERS = {
12
+ "Content-Type": "application/json",
13
+ }
14
+
15
+ MAX_SEED = np.iinfo(np.int32).max
16
+
17
+
18
+ def randomize_seed_fn(seed: int, randomize_seed: bool) -> int:
19
+ if randomize_seed:
20
+ seed = random.randint(0, MAX_SEED)
21
+ return seed
22
+
23
+
24
+ def generate(
25
+ prompt: str,
26
+ negative_prompt: str = "",
27
+ seed: int = 0,
28
+ width: int = 1024,
29
+ height: int = 1024,
30
+ prior_num_inference_steps: int = 30,
31
+ # prior_timesteps: List[float] = None,
32
+ prior_guidance_scale: float = 4.0,
33
+ decoder_num_inference_steps: int = 12,
34
+ # decoder_timesteps: List[float] = None,
35
+ decoder_guidance_scale: float = 0.0,
36
+ num_images_per_prompt: int = 2,
37
+
38
+ ) -> Image:
39
+ payload = {
40
+ "input": {
41
+ "hdr": 0,
42
+ "image": "https://replicate.delivery/pbxt/KA9yP9n3ZX5A5mkoPz3gsPzKTH1NA7LqVkQRTg7Sov46lOfo/0_1.webp",
43
+ "steps": 20,
44
+ "prompt": "UHD 4k vogue, a woman resting in a magic pool, face above the surface of the water, red freckles",
45
+ "scheduler": "DDIM",
46
+ "creativity": 0.25,
47
+ "guess_mode": False,
48
+ "resolution": "original",
49
+ "resemblance": 0.75,
50
+ "guidance_scale": 7,
51
+ "negative_prompt": "teeth, tooth, open mouth, longbody, lowres, bad anatomy, bad hands, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, mutant"
52
+ }
53
+ }
54
+ response = requests.post(URL, headers=HEADERS, json=payload)
55
+ json_response = response.json()
56
+ if 'output' in json_response:
57
+ base64_image = json_response["output"][0]
58
+ image_data = base64.b64decode(
59
+ base64_image.replace("data:image/png;base64,", ""))
60
+ image_stream = io.BytesIO(image_data)
61
+ return Image.open(image_stream)
62
+ raise gr.Error(json_response["status"])
63
+
64
+
65
+ examples = [
66
+ "An astronaut riding a green horse",
67
+ "A mecha robot in a favela by Tarsila do Amaral",
68
+ "The sprirt of a Tamagotchi wandering in the city of Los Angeles",
69
+ "A delicious feijoada ramen dish"
70
+ ]
71
+
72
+ with gr.Blocks() as demo:
73
+ with gr.Group():
74
+ with gr.Row():
75
+ prompt = gr.Text(
76
+ label="Prompt",
77
+ show_label=False,
78
+ max_lines=1,
79
+ placeholder="Enter your prompt",
80
+ container=False,
81
+ )
82
+ run_button = gr.Button("Run", scale=0)
83
+ result = gr.Image(label="Result", show_label=False)
84
+ with gr.Accordion("Advanced options", open=False):
85
+ negative_prompt = gr.Text(
86
+ label="Negative prompt",
87
+ max_lines=1,
88
+ placeholder="Enter a Negative Prompt",
89
+ )
90
+
91
+ seed = gr.Slider(
92
+ label="Seed",
93
+ minimum=0,
94
+ maximum=MAX_SEED,
95
+ step=1,
96
+ value=0,
97
+ )
98
+ randomize_seed = gr.Checkbox(label="Randomize seed", value=True)
99
+ with gr.Row():
100
+ width = gr.Slider(
101
+ label="Width",
102
+ minimum=1024,
103
+ maximum=1024,
104
+ step=512,
105
+ value=1024,
106
+ )
107
+ height = gr.Slider(
108
+ label="Height",
109
+ minimum=1024,
110
+ maximum=1024,
111
+ step=512,
112
+ value=1024,
113
+ )
114
+ num_images_per_prompt = gr.Slider(
115
+ label="Number of Images",
116
+ minimum=1,
117
+ maximum=2,
118
+ step=1,
119
+ value=1,
120
+ )
121
+ with gr.Row():
122
+ prior_guidance_scale = gr.Slider(
123
+ label="Prior Guidance Scale",
124
+ minimum=0,
125
+ maximum=20,
126
+ step=0.1,
127
+ value=4.0,
128
+ )
129
+ prior_num_inference_steps = gr.Slider(
130
+ label="Prior Inference Steps",
131
+ minimum=10,
132
+ maximum=30,
133
+ step=1,
134
+ value=20,
135
+ )
136
+
137
+ decoder_guidance_scale = gr.Slider(
138
+ label="Decoder Guidance Scale",
139
+ minimum=0,
140
+ maximum=0,
141
+ step=0.1,
142
+ value=0.0,
143
+ )
144
+ decoder_num_inference_steps = gr.Slider(
145
+ label="Decoder Inference Steps",
146
+ minimum=4,
147
+ maximum=12,
148
+ step=1,
149
+ value=10,
150
+ )
151
+
152
+ gr.Examples(
153
+ examples=examples,
154
+ inputs=prompt,
155
+ outputs=result,
156
+ fn=generate,
157
+ cache_examples=False,
158
+ )
159
+
160
+ inputs = [
161
+ prompt,
162
+ negative_prompt,
163
+ seed,
164
+ width,
165
+ height,
166
+ prior_num_inference_steps,
167
+ # prior_timesteps,
168
+ prior_guidance_scale,
169
+ decoder_num_inference_steps,
170
+ # decoder_timesteps,
171
+ decoder_guidance_scale,
172
+ num_images_per_prompt,
173
+ ]
174
+ gr.on(
175
+ triggers=[prompt.submit, negative_prompt.submit, run_button.click],
176
+ fn=randomize_seed_fn,
177
+ inputs=[seed, randomize_seed],
178
+ outputs=seed,
179
+ queue=False,
180
+ api_name=False,
181
+ ).then(
182
+ fn=generate,
183
+ inputs=inputs,
184
+ outputs=result,
185
+ api_name="run",
186
+ )
187
+
188
+
189
+ if __name__ == "__main__":
190
+ demo.queue(max_size=20).launch()
requirements.txt ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ gradio==4.18.0
2
+ replicate==0.23.1
run.sh ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ cd /src && python3 -m cog.server.http --threads=10 &
2
+ cd $HOME/app && . $HOME/.venv/bin/activate && python app.py