Gradio Agents & MCP 黑客马拉松
获奖者Gradio Agents & MCP 黑客马拉松
获奖者Gradio 是一个功能强大且直观的 Python 库,旨在创建展示机器学习模型的 Web 应用。这些 Web 应用可以在本地运行,也可以免费部署到 Hugging Face Spaces。或者,您也可以将它们部署到您的服务器上的 Docker 容器中。将 Gradio 应用 Docker 化具有以下几个优势:
让我们通过一个简单的例子来了解如何使用 Docker 将 Gradio 应用容器化。
首先,我们需要一个简单的 Gradio 应用。让我们创建一个名为 app.py
的 Python 文件,内容如下:
import gradio as gr
def greet(name):
return f"Hello {name}!"
iface = gr.Interface(fn=greet, inputs="text", outputs="text").launch()
此应用创建一个简单的界面,通过姓名向用户问好。
接下来,我们将创建一个 Dockerfile 来指定如何构建和运行我们的应用。在与应用相同的目录中创建一个名为 Dockerfile
的文件,内容如下:
FROM python:3.10-slim
WORKDIR /usr/src/app
COPY . .
RUN pip install --no-cache-dir gradio
EXPOSE 7860
ENV GRADIO_SERVER_NAME="0.0.0.0"
CMD ["python", "app.py"]
此 Dockerfile 执行以下步骤:
GRADIO_SERVER_NAME
环境变量,确保 Gradio 监听所有网络接口。有了 Dockerfile,您就可以构建并运行容器了:
docker build -t gradio-app .
docker run -p 7860:7860 gradio-app
您的 Gradio 应用现在应该可以通过 https://:7860
访问。
在 Docker 中运行 Gradio 应用时,有几点需要牢记:
"0.0.0.0"
上运行 Gradio 应用并暴露 7860 端口在 Docker 环境中,将 GRADIO_SERVER_NAME="0.0.0.0"
设置为环境变量(或直接在 Gradio 应用的 launch()
函数中设置)对于允许来自容器外部的连接至关重要。Dockerfile 中的 EXPOSE 7860
指令则告诉 Docker 暴露 Gradio 的默认端口,以启用对 Gradio 应用的外部访问。
在部署具有多个副本的 Gradio 应用(例如在 AWS ECS 上)时,启用 sessionAffinity: ClientIP
的会话粘性非常重要。这可确保来自同一用户的所有请求都路由到同一实例。这一点很重要,因为 Gradio 的通信协议需要前端到后端有多个独立的连接才能正确处理事件。(如果您使用 Terraform,您需要将一个 粘性块 添加到您的目标组定义中。)
如果您在代理(如 Nginx)后面部署 Gradio 应用,正确配置代理至关重要。Gradio 提供了一份指南,详细说明了必要的步骤。此设置可确保您的应用在生产环境中可访问并表现良好。