Gradio:轻松实现AI算法可视化部署
Gradio:轻松实现AI算法并快速上手。 0. 安装Gradio1。 Hello World2. 图像处理:创建简单的RGB 到灰度的转换。 3. 创建外部访问链接。图像分类pytorch+resnet185。附加提示5.1 设置标题和描述5.2 设置IP 和端口号
六、总结
详细了解为什么使用Gradio 生成的布局可能会很混乱。 torchrun –nproc_per_node 2 web.py 这与启动两个web.py 相同。在这种情况下,我不知道如何解析渐变7860 的默认端口号。如何更改默认端口?自定义有点困难,但我是否仍然应该使用一组前端和后端以避免将来需要自定义?然而,语言模型聊天需要服务器推送。我怎样才能解决这个问题? 这也有很多问题,包括SSL版本冲突。事实上,许多库可以使用,但实际上无法在生产中上线。建议打包图片。感觉就像一个玩具。我选择了dash,它比flask更简单,但更灵活。为什么我在提交右侧的输出框中看到错误?
Gradio:轻松实现AI算法可视化部署
2024.5.1:我们精心更新了这篇文章,让您了解我们最新的开源人工智能训练跟踪工具SwanLab。训练模型非常容易使用。
如何快速与他人分享和体验AI算法一直是一个挑战。
首先,大多数人在本地运行他们的代码并让其他人使用该模型。此前,有以下三种选择:
在github 上
将代码打包或封装在Docker中后,使用QQ/百度云/U盘进行传输。
学习前后端知识,创建前端界面,购买域名,使用flask等微服务框架快速部署,并根据需要结合内网渗透。
这些解决方案的问题在于,前两种要求对方能够(并且愿意)编程和配置环境,而后者则要求对方是算法工程师。升级到全栈,学习前端和后端开发,学习成本太高。
总之,不适合场景,不适合自己的需求,还费时费力!
那么有没有更好的解决办法呢!今天我想介绍Gradio,一个Python 开源库。
Gradio 是HuggingFace 的一个开源项目,在GitHub 上拥有超过28,000 颗星。
最近,两位ML工程师独立开发的项目Gradio没有盈利,濒临失败。 HuggingFace 的创始人随后资助并收购了它,才有了今天的成果。它成为AI领域最好的开源demo,也是催生StableDiffusion的关键开源项目之一。
WebUI、LLaMa Factory、GPT Academic 等众多知名项目。
—— 我真的很喜欢这个故事。我真的很高兴找到了伯乐,一个小而美丽的热爱开源的项目。
使用Gradio,您只需在原始代码中添加几行代码,就可以自动生成交互式网页并支持各种输入和输出格式,例如图像分类图标签和超分辨率图。
它还支持生成可从外部网络访问的链接,让您的朋友和同事立即体验您的算法。
总结来说,它的优点是:
自动生成页面并使其具有交互性
只需更改几行代码即可实现此目的
支持多种输入输出的定制
支持生成外部可访问的共享链接
快速开始
0.安装Gradio
您需要先安装Python,然后使用pip安装Gradio
pip 安装渐变
1.Hello World
我们先从开胃菜开始吧。输入您的文本并在其前面添加“Hello World”。
导入Gladio ASGR
def print_text(文本):
\’Hello World,\’ + 返回文本
接口=gr.Interface(fn=print_text, 输入=\’文本\’, 输出=\’文本\’)
接口.launch()
Grario的核心是gr.Interface,用于构建可视化界面。参数为:
fn:插入用于处理的函数
输入:描述输入类型。输入是文本,因此它将是“文本”。
输出:描述输出类型。输出也是文本,所以也是“文本”
最后,使用interface.lauch()发布页面,你就拥有了一个本地静态交互页面。
运行此py 脚本并在浏览器中输入http://127.0.0.1:7860/来检查页面。
2.图像处理:写个简单的RGB转灰度
导入Gladio ASGR
导入CV2
def to_black(图像):
输出=cv2.cvtColor(图像, cv2.COLOR_BGR2GRAY)
返回输出
接口=gr.Interface(fn=to_black, 输入=\’图像\’, 输出=\’图像\’)
接口.launch()
这里使用的是opencv。首先你需要pip install opencv-python。
同样的逻辑:
fn:插入用于处理的函数
输入:描述输入类型。这里的输入是图像,因此它将是“图像”。
输出:描述输出类型。这里的输出是图像,因此它将是“图像”。
运行代码。
只需上传您的图片,单击“提交”即可完成。
对于图像处理ML(机器学习)代码,定义一个图像输入模型,该模型推断一个返回图像的函数(逻辑和RGB 转换为灰度图像之间本质上没有区别)并将其放置在fn 中您所需要的就是就是这样!
3.增加案例example
您可以在页面底部添加测试示例供用户选择。
以[[Path 1], [Path 2],…] 格式输入gr.Interface 示例中的图像路径。
导入Gladio ASGR
导入CV2
def to_black(图像):
输出=cv2.cvtColor(图像, cv2.COLOR_BGR2GRAY)
返回输出
接口=gr.Interface(fn=to_black, 输入=\’图像\’, 输出=\’图像\’,
示例=[[\’test.png\’]])
接口.launch()
添加示例不仅可以使你的UI界面更加美观、逻辑更加完整,而且还有其他含义。
改善demo体验:比如我用文生图制作了一个demo,但是强迫用户去思考提示(提示词)的摩擦力非常大,而你提供的示例让用户更容易会能够更快的体验demo的效果。更轻松。
3.创建一个外部访问链接
创建外部访问链接非常容易。只要启动它(share=True),打印信息中就会显示外部访问链接。
接口.launch(share=True)
全天24 小时提供免费链接。如果你想长期使用它,你可以访问Huggingface并创建一个空间。 2核16G CPU演示是完全免费的,GPU演示是付费的。取决于配置和持续时间。
您还可以选择您当地的Gradio托管平台:ModelScope Magic Community、SwanHub – 创新AI开源社区
4.升个级:图像分类pytorch+resnet18
前端需要安装torch 和torchvision。此演示推理也必须在CPU 上运行。
pip 安装torch torchvision
# 2024.5.1 代码更新
导入Gladio ASGR
进口手电筒
从torchvision 导入转换
导入请求
从PIL导入图像
模型=torch.hub.load(\’pytorch/vision:v0.6.0\’, \’resnet18\’, pretrained=True).eval()
# 下载ImageNet 的人类可读标签。
响应=request.get(\’https://git.io/JJkYN\’)
标签=response.text.split(\’\\n\’)
def 预测(inp):
inp=Image.fromarray(inp.astype(\’uint8\’), \’RGB\’)
inp=inp. 调整大小((224, 224))
inp=transform.ToTensor()(inp).unsqueeze(0)
使用torch.no_grad():
预测=torch.nn.function.softmax(model(inp)[0], dim=0)
返回{labels[i]: float(prediction[i]) for i in range(1000)}
输入=gr.Image()
输出=gr.Label(num_top_classes=3)
gr.Interface(fn=预测, 输入=输入, 输出=输出).launch()
图像分类任务是机器学习中的经典任务。上面,我在输出中设置了gr.Label(num_top_classes=3) 。这是Gradio 中的一个自定义函数,用于显示图像分类的类标签。
通过更改输入和输出的组合,您始终可以找到适合您的算法的东西。
如果你想要更多的自由组合,可以使用gr.Block。文档:渐变块文档
5. 更多技巧
5.1 设置标题和描述
gr.Interface(. title=\’Hello_World\’, description=\’入门级演示\’)
5.2 设置ip和端口号
gr.launch(服务器名称=\’0.0.0.0\’,服务器端口=8080)
server_name:设置Web 服务的IP 地址。如果您将Web服务部署到自己的服务器上,我们建议将其设置为“0.0.0.0\’\’以方便外部访问。
server_port:设置Web服务端口号。
6. 总结
我认为Gradio最大的价值在于每个人都可以即时分享和体验自己项目的成果:开源成果共享、项目报告、同行交流,甚至快速产品创建。
还在担心如何分享您的AI 算法吗?为什么不尝试Gradio?
同类产品:StreamLit
了解更多
Gradio官网:https://www.gradio.app/
开源平台SwanHub在线GradioDemo体验:SwanHub AI
问题
为什么我用Gradio生成的排版都是乱的。
Gradio 依赖于Google 的一些CSS 和字体,无法离线运行。检查网络环境
torchrun –nproc_per_node 2 web.py 这样就相当于启动了两个web.py,那gradio就有问题了,不知怎么解决
从你的代码来看,是否可以仅使用local_rank 0 启动梯度?
gradio 默认的端口号7860,如何修改默认的端口呀
在启动方法中设置参数server_port=9999。
定制化就有点难了,为了防止以后有定制化的需求 是不是还得用前后端那套。。但是语言模型那种聊天的,还要服务器推送 怎么整呀yeild ws。。
与chatgpt类似,每次发送不完整的数据包都会进行一次心跳访问,最终数据完成。
这东西也有很多问题比如ssl版本冲突,其实后面也是导入了一大堆的lib,可以用,但不能太依赖,真正上线生产环境,还是要打包镜像比较好。
感觉有点玩具了呢。我选了dash,比flask简单,但貌似更灵活
为什么点submit右边输出框显示error
答:您应该检查错误报告。您可能已启用技术来访问互联网。
问:即使我关闭了该技术,该错误似乎仍会发生。
问:但是我不知道错误信息在哪里
问:我注意到有一个show_error 参数。让我们一次尝试一个。
问:即使将show_error 设置为True,我仍然没有收到错误消息
答:在github.com/gradio-app/g 上发现以下消息。
我有同样的错误,但我从2.2.1 降级了pydantic 版本。
当我将其更新到1.10.7 时,它工作正常,但我显着更改了gradio 的版本。
这不是版本问题,在grario==3.34.0 下工作得很好。
在我个人的测试中,它保持渐变版本3.34.0,只是将环境中pydantic 包的版本降低到1.10.7。
问:是的!
答:当我打开快速入门时,它显示“Precession: Gradio 需要Python 3.8 或更高版本”。只需切换到3.8环境并重新安装即可。
林泽
Gradio:AI算法的轻松可视化部署
#python系列以上关于deep_study系列: Gradio:轻松可视化部署AI算法相关内容来源网络,仅供参考。相关信息请参见官方公告。
原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/91603.html