之前是在云服务器部署stable-diffusion-webui
脚本,学习AIGC
,工作需要,从该脚本了解到python
的gradio
库,才知道原来python也有这么强大的webui功能。
在使用sd-webui
的过程中发现,如果上一个任务处理不完,(例如Sadtalker
或者deforum
处理一次任务的时间较长),则会影响其他功能的使用,此时如果使用其他功能,或者有其他人在使用webui时,会出现In queue的提示,则必须得等上一个任务完成之后才能进行下一个任务,这样做如果是对云服务器来说是非常亏的(因为GPU的显存利用率非常低),此时我们可以使用queue()
方法给webui创建队列。
queue方法允许用户通过创建一个队列来控制请求的处理速率,从而实现更好的控制。用户可以设置一次处理的请求数量,并向用户显示他们在队列中的位置。
示例代码:
with gr.Blocks() as demo:
button = gr.Button(label="Generate Image")
button.click(fn=image_generator, inputs=gr.Textbox(), outputs=gr.Image())
demo.queue(concurrency_count=3)
demo.launch()
参数介绍:
- concurrency_count:并发处理请求的工作线程数,默认为1。增加此值将增加请求处理的速率,但也会增加队列的内存使用量。
- status_update_rate:状态更新的频率,以秒为单位。默认为”auto”,表示队列将在每个作业完成时向所有客户端发送状态估计。