相比视频中的脚本使用方式,这里做了改进,可以直接通过 pip 安装了!
Gradio 是一个开源的 Python 库,旨在使机器学习模型的演示和分享变得简单快捷。通过几行代码,开发者可以为他们的模型创建交互式的网页应用程序,无需深入了解前端技术。目前很多项目都是由 gradio 搭建而成的,比如 stable diffusion 的 webui。
除了开发简单之外,gradio 还内置了一个内网穿透的功能,可以通过一个公网地址访问本地部署的服务。不论是想要远程访问自己电脑里的服务还是远程访问云服务器里的服务,都可以使用这个功能。
如上所示的这个代码,在成功运行后会显示类似下面的内容:
也就是说,如果我们点击上面的 `https://xxx.gradio.live` 这样的地址就能访问到刚才在本地开启的 gradio 的服务了。这个功能对我来说真实太有用了,尤其是一些 gpu 服务,比如 autodl,我可以通过这个功能直接访问到我的服务,而不需要自己去做 ssh 的端口映射了。而且我也可以很方便的把这个链接分享给别人,非常适合展示 demo 的场景,毕竟很多时候 it works only on my machine。
当我看到 huggingface 这种财大气粗的给别人倒流量的方式,我有了一个非分之想:能不能让非 gradio 创建的服务也去用 huggingface 所提供的这个子域名呢?
那么这里呢,我就把最后的结论放出来:
Gradio 这个 `share` 功能是通过魔改 `frp` 获得的
Gradio 自己会提供一个公网地址作为 `frp` 的 server
Gradio 这部分的功能相对比较独立,我直接把这部分代码抽取出来了,可以支持任意端口的内网穿透并且不需要一定是 gradio 创建的服务
我最终封装成了一个 python 库 `gradio-tunneling` 并发布到了 `PyPI` 上,可以直接安装并使用
首先安装 `gradio-tunneling`:
然后用如下命令直接使用:
Windows 里不能直接使用,第一次使用会出现如下的报错信息。
这是因为 windows 不允许我们直接使用从网上下载的 `frp` 客户端。需要在「病毒和威胁防护」里面把这个文件添加到白名单里面。建议直接把 python 这个目录都添加到白名单里面。