机器学习工程师公用:运用程序框架Streamlit操作指南
作者头像
  • 王子翼
  • 2019-11-01 08:14:08 2

本文将介绍一种专门用于机器学习工程师的应用程序框架——Streamlit。

许多非大型的机器学习项目往往存在一些缺陷,内部使用的工具难以维护。这些工具通常由Jupyter Notebook和Flask应用拼凑而成,导致部署困难,需要对主从架构进行推理,并且无法很好地与TensorFlow GPU会话等机器学习架构整合。例如,卡耐基·梅隆大学、伯克利大学、Google X实验室以及Zoox的自动驾驶机器人项目都面临类似问题。这些工具常常是一些小型的Jupyter笔记本,包括传感器校准工具、模拟对比应用、激光雷达对齐应用、场景回放工具等。

随着工具变得越来越重要,项目管理的需求也随之增加。随着项目的推进,工具的数量逐渐增多,最终形成了多个脚本。维护这些脚本会成为一个巨大的挑战。于是,作者和他的Google X的老朋友Thiago Teixeira开始思考一个问题:如果能够像编写Python脚本一样简单地构建工具,那会怎么样?

他们希望机器学习工程师能够在不需要工具团队的情况下创建优秀的应用程序。这些工具应该是机器学习工作流的自然副产品。创建这样的工具应该感觉像训练神经网络或执行特定的Jupyter分析一样自然。同时,他们希望保留强大应用程序框架应有的灵活性。他们希望开发出工程师们可以展示的、美观的、高性能的工具。简而言之,他们的目标是:

Streamlit应用程序构建流程

我们有一个出色的测试社区,其中包括来自Uber、Twitter、Stitch Fix和Dropbox的工程师。经过一年的努力,我们为机器学习工程师创建了Streamlit,这是一个完全免费的开源应用程序框架。Streamlit的核心理念非常简单纯粹,具体包括以下几点:

1. 包含Python脚本

Streamlit应用程序实际上只是一个自上而下运行的脚本,没有任何隐藏结构。可以使用函数调用来分解代码。如果你会编写Python脚本,那么你也可以编写Streamlit应用程序。例如,你可以输入以下代码: python import streamlit as st st.write('Hello, world!')

2. 将微件视为变量

Streamlit中没有回调函数!每个交互只是自上而下重新运行脚本。这种方法产生的代码非常简洁: python import streamlit as st x = st.slider('x') st.write(x, '的平方是', x * x)

3. 重用数据和计算

如果需要下载大量数据或执行复杂的计算怎么办?关键在于在运行过程中安全地重用信息。Streamlit引入了一个缓存原语,它就像一个持久的、默认不变的数据存储区,可以让Streamlit应用程序安全地、轻松地重用信息。例如,以下代码仅从Udacity自动驾驶汽车项目中下载一次数据,从而生成一个简单快速的应用程序: ```python import streamlit as st import pandas as pd

重复使用此数据

readandcachecsv = st.cache(pd.readcsv) BUCKET = "https://streamlit-self-driving.s3-us-west-2.amazonaws.com/" data = readandcachecsv(BUCKET + "labels.csv.gz", nrows=1000) desiredlabel = st.selectbox('筛选:', ['car', 'truck']) st.write(data[data.label == desired_label]) `` 使用st.cache`在Streamlit运行过程中持久化数据。

Streamlit的工作原理

  1. 每次用户交互时,整个脚本都会从头开始运行。
  2. Streamlit为每个变量配置最新的微件值。
  3. 缓存允许Streamlit跳过冗余的数据提取和计算步骤。

运行Streamlit

如果你想尝试一下,只需运行以下命令: bash $ pip install --upgrade streamlit $ streamlit hello 这将在浏览器中打开Streamlit应用程序。

实例应用

Streamlit可以用于构建复杂的机器学习应用程序。例如,一个300行的Streamlit演示包括语义视觉搜索和交互式神经网络推理,整个应用程序是一个独立的300行Python脚本,其中大部分是机器学习代码。但理想情况下,整个应用程序中只有23个Streamlit调用。

Streamlit的优势

Streamlit应用程序是纯Python文件,可以与你最喜欢的编辑器和调试器一起使用。此外,纯Python脚本可以与Git及其他源代码管理系统协同工作,包括提交、拉取请求、问题和注释。由于Streamlit的基础语言是纯Python,因此可以免费享受这些协作工具带来的好处。

总结

Streamlit是一个强大的开源框架,可以帮助机器学习工程师快速创建高效、美观的应用程序。无论是处理大量数据还是执行复杂的计算,Streamlit都能提供简便且强大的解决方案。

    本文来源:图灵汇
责任编辑: : 王子翼
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
操作指南公用Streamlit框架运用机器工程师程序学习
    下一篇