机器学习开发者如何用Python和Streamlit轻松打造App?300行代码即可实现

2025-01-09
来源:网络整理

对于机器学习开发人员来说,构建应用程序有多困难?其实你只需要知道如何编码,剩下的工作就可以交给工具了。最近,联合创始人写了一篇文章,介绍了他开发的机器学习工具开发框架——一个专门为机器学习工程师创建的免费、开源的应用程序构建框架。该工具可以在您编写代码时实时更新您的应用程序。目前星数已突破3400,热度达9000+。

网站:

地址:

使用 300 行代码编写一个语义搜索引擎,可以实时执行神经网络推理。

根据我的经验,每个重要的机器学习项目都是使用充满错误且难以维护的内部工具组合在一起的。这些工具通常编写在应用程序中,部署困难,需要客户端-服务器架构(C/S架构)进行推理,并且无法与GPU会话等机器学习组件很好地集成。

我第一次看到这样的工具是在卡内基梅隆大学,后来又在伯克利、X 和 Zoox。这些工具最初都很小:传感器校准工具、模拟比较应用程序、激光雷达对准应用程序、场景重建工具等。

当工具变得越来越重要时,项目经理就会介入:流程和需求不断增加。这些单独的项目变成了代码脚本,并变成了漫长的“维护噩梦”......

机器学习工程师创建应用程序的过程(临时)。

而当一个工具非常关键的时候,我们就会组建一个工具团队。他们熟练地编写 Vue 和 Vue,他们的笔记本电脑上贴满了声明式框架的贴纸。他们的设计流程是这样的:

工具团队构建应用程序的流程(干净,从头开始)。

这简直太棒了!但所有这些工具都需要新功能,比如每周都会推出新功能。尽管工具团队可能同时支持 10 多个项目,但他们会说:“我们将在两个月内更新您的工具。”

我们回到了自己构建工具的过程:部署应用程序、编写 HTML、CSS,并尝试对从样式表到所有内容进行版本控制。我和在 X 工作的朋友开始思考:如果构建工具像编写脚本一样简单怎么办?

我们希望机器学习工程师无需工具团队也能构建出优秀的应用程序。这些内部工具应该自然出现,就像机器学习工作流程的副产品一样。编写这样的工具感觉就像训练神经网络或执行临时分析!同时,我们还希望保留强大的应用程序框架的灵活性。我们希望创造出让工程师引以为豪的出色工具。

我们想要的app构建流程如下:

应用程序构建过程。

我们与 Uber、Fix 等公司的工程师一起花了一年的时间创建了它,一个面向机器学习工程师的免费开源应用程序框架。对于任何原型来说,核心原理都更加简单和纯粹。

核心原则如下:

1.拥抱

该应用程序是一个完全自上而下的脚本,没有隐藏状态。您可以使用函数调用来处理代码。只要你会写脚本,你就能写应用程序。例如,您可以使用以下代码写入屏幕:

import streamlit as stst.write('Hello, world!')

2. 视为变量

没有任何!每次交互都只是从上到下重新运行脚本。这种方法使代码非常干净:

代码对齐快捷键_代码中怎么设置对齐方式_小程序开发工具代码对齐

import streamlit as stx = st.slider('x') st.write(x, 'squared is', x * x)

用 3 行代码编写的交互式应用程序。

3. 重用数据和计算

如果您想下载大量数据或执行复杂计算怎么办?关键是在多次运行中安全地重用信息。推出后,它就像一个持久的默认不可更改的数据存储,确保应用程序可以轻松、安全地重用信息。例如,以下代码仅从自动驾驶项目 () 下载一次数据,从而形成一个简单而快速的应用程序:

使用圣。保存多次运行的数据。代码运行说明参见:#-。

运行 st 的输出。上面的例子。

简而言之,其工作流程如下:

每个用户交互都需要从头开始运行整个脚本。每个变量都会根据状态分配最新值。缓存保证数据和计算的重用。

如下图:

用户事件触发从头开始重新运行脚本。在运行之间仅保留缓存。

如果你有兴趣,现在就可以尝试一下!只需运行以下几行:

Web 浏览器将自动打开并重定向到本机应用程序。如果浏览器窗口没有出现,只需单击链接即可。

这些想法简单而有效,并且它们的使用不会阻止您创建丰富且有用的应用程序。当我在 Zoox 和 X 工作时,我看到自动驾驶汽车项目成长为需要搜索和理解的数十亿字节的视觉数据,包括在图像数据上运行模型来比较性能。我看到的每个自动驾驶汽车项目都有一个完整的团队致力于开发工具。

在 .以下演示可以对整个自动驾驶汽车照片数据集执行语义搜索,可视化人工注释的地面实况标签,并在应用程序中实时运行完整的神经网络 (YOLO)。

这个 300 行演示将语义视觉搜索与交互式神经网络推理相结合。

整个App只有300行代码,其中大部分是机器学习代码。事实上,整个应用程序只有 23 个调用。你可以试试这个:

当我们与机器学习团队合作开展他们的项目时,我们逐渐意识到这些简单的想法有许多重要的好处:

应用程序是纯文件。您可以使用您最喜欢的编辑器和 .

我喜欢在构建应用程序时使用编辑器(左)和(右)。

纯代码可以与Git等源代码控制软件无缝连接,包括pull、and。由于底层语言是 ,因此您可以免费利用这些协作工具的优势。

代码对齐快捷键_小程序开发工具代码对齐_代码中怎么设置对齐方式

应用程序是脚本,因此您可以使用 Git 轻松执行版本控制。

提供实时模式编程环境。当检测到源文件发生更改时,只需单击。

点击“ ”,保证实时编程。

缓存简化了计算过程。一系列的缓存功能自动创建高效的计算过程!您可以尝试以下代码:

简单的计算过程。运行上面的代码,参见说明:#-。

基本上,该过程涉及从加载元数据到创建摘要的步骤 (→)。每次运行脚本时,仅重新计算过程的一个子集。

为了保证应用程序的可执行性,仅计算更新UI所需的部分。

适用于 GPU。这些库通过直接访问机器级原语(例如 .例如,在下面的演示中,缓存存储了整个 .此方法允许应用程序在用户更新左侧滑块时执行近乎即时的推理。

这个应用程序使用TL-GAN来演示的效果。

它是一个免费的开源库,而不是私人网络应用程序。您可以在本地部署应用程序,无需提前联系我们。您甚至可以在笔记本电脑上本地运行它,而无需连接到互联网。此外,现有项目也可以增量使用。

几种方法逐步使用。

以上只是功能的冰山一角。最令人兴奋的是,这些原语可以轻松地形成复杂的应用程序,但它们看起来像简单的脚本。这涉及到架构的工作原理和功能,本文不予讨论。

组件图。

我们很高兴与社区分享它,并希望它能帮助每个人轻松地将脚本变成漂亮且有用的机器学习应用程序。

今天给大家分享一本叫做《进阶》的书,就是《进阶》的中文翻译。本书具有以下优点:简单、易读、易译。这些都不是重点,重点是:这是一本想象力丰富的书。无论你是初学者还是专家,它总会向你展示最美的东西。

特征

如何获取信息

其实上手很容易,但是我们要坚持学习。每天坚持下去是很困难的。相信很多人学习一周后就放弃了。为什么?事实上,如果没有好的学习材料供你学习,你就很难坚持下去。这是小编收集的入门学习资料。关注、转发、私信小编“01”即可免费领取!希望对您有帮助

分享