Gradio私网和公网的使用

当Gradio部署在只有私有地址的服务器上,可以使用端口转发和NAT技术,如iptables,将内部IP映射到公共IP以供外部访问。Gradio官网提供的免费公共URL可通过反向代理让用户在72小时内访问本地部署的应用程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Gradio私网问题

如果部署的服务器只有私有地址,那么无法直接从外部网络中的其他计算机访问该服务器和其中运行的 Gradio 应用程序。在这种情况下,你可以考虑使用端口转发技术,将服务器的私有地址映射到一定的公开地址上,从而可以在外部网络中访问 Gradio 应用程序。

常用的一种端口转发技术是 NAT 网络地址转换(Network Address Translation),它可以将服务器的内部 IP 地址映射到一个公共 IP 地址上,并将访问该公共 IP 地址和端口的流量转发到服务器的内部 IP 地址和端口。在 Linux 系统中,可以使用 iptables 工具来进行端口转发和 NAT 配置。

以下是一个使用 iptables 进行端口转发和 NAT 配置的示例,假设服务器的内部 IP 地址为 192.168.1.100,应用程序运行在 7861 端口上:

  1. 首先在服务器上打开 iptables 转发功能,运行以下命令:

    sysctl -w net.ipv4.ip_forward=1
    
  2. 然后使用 iptables 进行端口转发和 NAT 配置,运行以下命令:

    iptables -t nat -A PREROUTING -p tcp --dport 7861 -j DNAT --to-destination 192.168.1.100:7861
    iptables -t nat -A POSTROUTING -j MASQUERADE
    

    这个命令将 7861 端口的 TCP 流量转发到内部 IP 地址为 192.168.1.100 的服务器上,并使用 MASQUERADE 参数将内部服务器的流量源地址替换为公共 IP 地址,从而使内部服务器的流量看起来像是通过公共 IP 地址上双向通信的网络一样。

需要注意的是,使用端口转发技术进行 NAT 配置时,需要确保转发规则和防火墙配置正确,并且应该采取适当的安全措施来保证访问的安全性,比如只允许特定的 IP 地址或者设置 VPN 访问等。

Gradio公网问题

https://98d0d9aff8aacde33d.gradio.live 这个地址是 Gradio 官网提供的免费公共 URL,可以通过公网访问你本地部署的 Gradio 应用程序。具体实现原理是 Gradio 官网提供了一个服务,它会反向代理到你部署的本地 Gradio 应用程序,从而使通过 https://98d0d9aff8aacde33d.gradio.live 可以访问你本地部署的 Gradio 应用程序。

在实现上,你在本地部署 Gradio 应用程序后,需要运行 gradio share 命令,该命令会向 Gradio 服务器注册你的应用程序,并把应用程序的公网 URL 地址返回给你。当你在浏览器中访问该地址时,Gradio 服务器就会通过反向代理的方式将用户的请求转发到你的本地 Gradio 应用程序上。这种实现方式可以使用户在不知道具体本地部署的情况下,通过公共网址轻松地访问 Gradio 应用程序。

由于 Gradio 官网提供的免费公共 URL 是在公网服务器上提供服务的,因此可以通过不同网络环境下的设备进行访问,包括在内网环境的设备。但需要注意的是,这种公共 URL 只有 72 小时的有效期限,如果需要长期的永久部署,则需要使用 Gradio 官方提供的部署服务。

### Gradio 使用教程 #### 导入 Gradio 库 为了使用 Gradio 创建交互式的 Web 界面,第一步是安装并导入 Gradio 库。可以通过 pip 安装最新版本的 Gradio[^1]。 ```bash pip install gradio ``` 接着,在 Python 脚本或 Jupyter Notebook 中引入 Gradio: ```python import gradio as gr ``` #### 构建简单的接口 创建一个基础的应用程序只需要定义输入输出组件,并指定处理函数。这里展示了一个最简化的例子,它接收文本作为输入并返回相同的文本作为输出。 ```python def echo(text): return text iface = gr.Interface(fn=echo, inputs="text", outputs="text") iface.launch() ``` #### 设计复杂的布局 对于更加复杂的应用场景,比如多模态大模型的部署,可以利用 `gr.Row()` `gr.Column()` 方法来自定义页面结构。这些方法允许开发者构建分栏或多行排列的小部件组合,从而提高用户体验的质量[^2]。 例如,下面这段代码展示了如何通过嵌套列来安排不同的 UI 组件: ```python with gr.Blocks() as demo: with gr.Row(): with gr.Column(): input_image = gr.Image(label='Input Image') button = gr.Button('Submit') with gr.Column(): output_text = gr.Textbox(label='Output Text') def process(image): # 假设这是某个图像处理逻辑... result = "Processed image" return result button.click(process, inputs=input_image, outputs=output_text) demo.launch() ``` 此段代码不仅设置了两个垂直方向上的栏目用于放置输入框按钮控件,还配置了点击事件处理器以响应用户的操作请求。 #### 实现交互功能 除了静态的内容显示外,Gradio 还支持动态更新界面元素的能力。这通常借助于特定的方法如 `.change()` 或者是在上述案例中的`.click()` 来监听用户行为的变化,并据此调用相应的回调函数执行进一步的动作。 综上所述,Gradio 提供了一种简便而强大的方式让用户能够快速搭建起具有高度互动性的机器学习项目前端界面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值