機器學習工程師福音:超好用的Streamlit簡介!

2020-12-14 讀芯術

全文共4706字,預計學習時長9分鐘

本文將介紹一個機器學習工程師專用的應用程式框架Streamlit。

根據自身經驗,每一個非平凡機器學習項目最終都布滿漏洞,其內部工具均難以維護。這些工具通常是由Jupyter Notebook和Flask應用程式拼湊而成,故很難部署,需要對主從式架構進行推理,並且不能很好地與TensorFlow GPU會話等機器學習架構整合。

卡耐基·梅隆大學、伯克利大學、Google X實驗室、Zoox的自動機器人都出現了這一特點。這些工具起初通常是小的Jupyter notebook,包括傳感器校準工具,模擬比較應用程式,雷射雷達對準應用程式,場景回放工具等等。

工具越來越重要,也就需要項目管理。進程推進,需求也越來越多,這些單獨的項目催生了腳本,最後維護將變成人們的噩夢。

機器學習工程師的特殊應用程式構建流。

如果工具成為主角,就需要組建工具團隊。他們可以編寫絕佳的Vue和React代碼,在筆記本電腦上貼滿聲明性框架的標籤。他們有這樣的一個設計流程:

工具團隊的電腦保護軟體應用程式構建流

這流程真是太棒了。但是這些工具都需要新性能,比如每周更新。工具團隊當時還有另外十個項目,他們會說:「兩個月後我們會再次更新你的工具。」

因此需要重新開始構建自己的工具,部署Flask應用程式,編寫HTML、CSS和JavaScript代碼,並對從筆記本到樣式表的所有內容進行版本控制。因此,我和我的Google X老朋友Thiago Teixeira開始思考一個問題:如果可以讓構建工具像編寫Python腳本一樣簡單,會怎麼樣?

我們希望機器學習工程師能夠在不需要工具團隊的情況下創建極佳的應用程式。這些內部工具應該是機器學習工作流的自然副產物。創建這樣的工具應該感覺像是訓練一個神經網絡或執行一個特殊的Jupyter分析!同時,我們希望保留一個強大應用程式框架應有的靈活性。我們想要創造出工程師們可以炫耀的、漂亮的、高性能的工具。基本上,我們的想法是這樣的:

Streamlit應用程式構建流

我們擁有一個絕佳的測試社區,其中包括來自Uber、Twitter、Stitch Fix和Dropbox的工程師,我們花了一年時間為機器學習工程師創建了Streamlit,這是一個完全免費的開源應用程式框架。每一個原型中,Streamlit的核心原理都更加簡單純粹。分別是:

#1: 涵括Python腳本。Streamlit應用程式實際上只是自上而下運行的腳本,沒有隱藏狀態。可以使用函數調用對代碼進行分解。知道如何編寫Python腳本,就可以編寫Streamlit應用程式。例如,可以輸入以下代碼:

import streamlit as st

st.write('Hello, world!')

很高興遇見你

#2:將微件視為變量。Streamlit中沒有回調函數!每個交互只是自上而下重新運行腳本。這種方法產生了真正整潔的代碼:

import streamlit as st

x = st.slider('x')

st.write(x, 'squared is', x * x)

三行代碼的交互式Streamlit應用程式。

#3: 重用數據和計算。如果下載了大量數據或執行了複雜的計算怎麼辦?關鍵是在運行中安全地重用信息。Streamlit引入了一個緩存原語,它就像一個持久的,默認情況下不變的數據存儲區,可以讓Streamlit應用程式安全地、輕鬆地重用信息。例如,此代碼僅從Udacity自動駕駛汽車項目(https://github.com/udacity/self-driving-car)下載一次數據,從而生成一個簡單快速的應用程式:

import streamlit as st

import pandas as pd

# Reuse this data across runs!

read_and_cache_csv = st.cache(pd.read_csv)

BUCKET = "https://streamlit-self-driving.s3-us-west-2.amazonaws.com/"

data = read_and_cache_csv(BUCKET + "labels.csv.gz", nrows=1000)

desired_label = st.selectbox('Filter to:', ['car', 'truck'])

st.write(data[data.label == desired_label])

使用st.cache在Streamlit運行中持久化數據。若要運行此代碼,請按照說明操作::https://gist.github.com/treuille/c633dc8bc86efaa98eb8abe76478aa81

運行上例的st.cache輸出。

總而言之,Streamlit是這樣工作的:

1. 為每個用戶交互從頭開始運行整個腳本。

2. Streamlit為每個變量配置指定微件狀態的最新值。

3. 緩存允許Streamlit跳過冗餘的數據提取和計算步驟。

圖示:

用戶事件觸發Streamlit從頭開始重新運

如果聽起來不錯,現在就可以試試!只需運行:

$ pip install --upgrade streamlit

$ streamlit hello

現在可以在瀏覽器中查看Streamlit應用程式。

本地URL: http://localhost:8501

網絡URL: http://10.0.1.29:8501

屆時會自動彈出一個連結到本地Streamlit應用程式的Web瀏覽器。如果沒有彈出,就單擊連結。

對於分形還意猶未盡嗎嗎?這可能很迷人。

這些想法很簡單,但並不妨礙使用Streamlit創建非常豐富和有用的應用程式。在Zoox和Google X工作期間,我經歷了無人駕駛汽車項目迅速擴充成幾千兆字節的視覺數據,這些數據需要搜索和分析,包括在圖像上運行模型以比較性能。筆者了解的每一個無人駕駛汽車項目最終都會有整個團隊專攻這個工具。

在Streamlit中構建這樣的工具很容易。這個Streamlit演示可以在整個Udacity自動駕駛汽車圖像數據集中進行語義搜索,可視化基於人工標註的地面實況標記,並在應用程式[1]中實時運行完整的神經網絡(YOLO)。

整個應用程式是一個完全獨立的300行Python腳本,其中大部分是機器學習代碼。但事實上,整個應用程式中只有23個Streamlit調用。現在就來親自操作吧!

$ pip install --upgrade streamlit opencv-python

$ streamlit run

https://raw.githubusercontent.com/streamlit/demo-self-driving/master/app.py

在與機器學習團隊合作進行他們的項目時,我們意識到這些簡單的想法有許多明顯的優勢:

Streamlit應用程式是純Python文件。因此可以同時使用自己最喜歡的編輯器和調試器。

純Python腳本可以與Git以及其他原始碼管理軟體協同,包括提交、拉拽請求、問題和注釋。因為Streamlit的底層語言是純Python,所以可以免費享受這些協作工具的帶來的優質體驗。

Streamlit提供立即模式實時編碼環境。只需在Streamlit檢測到源文件更改時單擊「始終重新運行」。

單擊「始終重新運行」以啟用實時編碼。

緩存簡化了計算流程的設置。令人驚訝的是,連結緩存函數會自動創建高效的計算流程!以下是從Udacity演示中改編的代碼:

import streamlit as st

import pandas as pd

@st.cache

def load_metadata():

DATA_URL = "https://streamlit-self-driving.s3-us-west-2.amazonaws.com/labels.csv.gz"

return pd.read_csv(DATA_URL, nrows=1000)

@st.cache

def create_summary(metadata, summary_type):

one_hot_encoded = pd.get_dummies(metadata[["frame", "label"]], columns=["label"])

return getattr(one_hot_encoded.groupby(["frame"]), summary_type)()

# Piping one st.cache function into another forms a computation DAG.

summary_type = st.selectbox("Type of summary:", ["sum", "any"])

metadata = load_metadata()

summary = create_summary(metadata, summary_type)

st.write('## Metadata', metadata, '## Summary', summary)

Streamlit中的一個簡單計算流程。若要運行此代碼,請按照說明操作:https://gist.github.com/treuille/ac7755eb37c63a78fac7dfef89f3517e。

一般的程序是load_metadata→create_summary。每次運行腳本時,Streamlit只重新計算所需流程的任何子集,以獲得準確信息。

為了提高應用程式的性能,Streamlit只

Streamlit是為GPU構建的。Streamlit允許直接訪問機器原語(如TensorFlow和Pytorch),並對這些庫進行補充。例如,在此演示中,Streamlit的緩存存儲了所有英偉達名人的照片GAN[2]。當用戶更新滑塊時,這種方法幾乎可以即時進行推理。

這款Streamlit應用程式演示了英偉達的

Streamlit是一個免費的開源庫,而不是一個專營的Web應用程式。可以在不與我們聯繫的情況下在使用Streamlit應用程式的預置軟體,甚至可以在沒有網際網路連接的筆記本電腦上本地運行Streamlit!此外,現有項目也可以採用Streamlit。

這只是對Streamlit功能的一個粗淺的描述。Streamlit最令人興奮的是如何將這些原語輕鬆地組合,實現腳本形式的複雜應用程式。

留言 點讚 關注

我們一起分享AI學習與發展的乾貨

如需轉載,請後臺留言,遵守轉載規範

相關焦點

  • 機器學習項目可視化展示方法
    Streamlit是一個機器學習工程師專用的,專門針對機器學習和數據科學團隊的應用開發框架,是目前開發自定義機器學習工具的最快的方法。可以認為它的目標是取代Flask在機器學習項目中的地位,可以幫助機器學習工程師快速開發用戶交互工具。本文目錄:     1. Streamlit是什麼               2.
  • 鳶尾花預測:如何創建機器學習Web應用程式?
    作為數據科學家或機器學習工程師,能夠部署數據科學項目非常重要,這有助於完成數據科學生命周期。通過既有框架(如Django或Flask)對傳統機器學習模型進行部署,可能是一項艱巨耗時的任務。本文就將展示如何在Python庫中使用streamlit,用不到50行的代碼構建一個簡單的基於機器學習的數據科學web應用程式。
  • 有了這個神器,輕鬆用 Python 寫 APP !
    近日,Streamlit 聯合創始人 Adrien Treuille 撰文介紹其開發的機器學習工具開發框架——Streamlit,這是一款專為機器學習工程師創建的免費、開源 app 構建框架。這款工具可以在你寫 Python 代碼的時候,實時更新你的應用。目前,Streamlit 的 GitHub Star 量已經超過 3400,在 medim 上的熱度更是達到了 9000+。
  • 從Python代碼到APP,你只需要一個小工具:GitHub已超3000星
    近日,Streamlit 聯合創始人 Adrien Treuille 撰文介紹其開發的機器學習工具開發框架——Streamlit,這是一款專為機器學習工程師創建的免費、開源 app 構建框架。這款工具可以在你寫 Python 代碼的時候,實時更新你的應用。目前,Streamlit 的 GitHub Star 量已經超過 3400,在 medim 上的熱度更是達到了 9000+。
  • 用Python構建數據科學Web應用程式
    在本文中,我將向你展示如何使用streamlit python庫快速構建一個簡單的數據驅動web應用程式,只需幾行代碼。作為一名數據科學家或機器學習工程師,能夠部署我們的數據科學項目是很重要的。傳統的使用Django或Flask這樣的框架來部署機器學習模型可能是一項艱巨和/或耗時的任務。
  • 機器學習工程師與軟體工程師的區別是什麼?
    今天我們就來談談機器學習工程師和軟體工程師的區別。截至2020上半年,軟體工程已經激增,在國內擁有超過500萬名員工,並且預計增長不會放緩。接下來就是機器學習工程師,解決自動化或決策問題。軟體工程師最致命的一點:偏執於自己編寫的系統的複雜性。Python開發人員環境好的軟體工程項目最終將使機器學習的任務更容易。數據將更容易獲得,而且對於產品迭代和價值也將更加統一和提升。
  • 自學成才的機器學習工程師
    後起之秀應該認可前輩們做出的巨大努力,但也應該認可他們中的每一個人都會告訴這位新晉的機器學習工程師同樣的事情:這個領域的未來取決於你的工作。6. 不要低估了完全重寫的力量你的目標應該是在第一時間構建可靠的東西。
  • 【全自動機器學習】ML 工程師屠龍利器,一鍵接收訓練好的模型
    圖1:auto-weka 算法選擇樹狀圖  CASH 用一個樹形結構(如圖1 所示)刻畫機器學習中算法選擇和超參設置的步驟,每一種算法的組合和超參的選擇對應為一個採樣,用 k 折交叉驗證的錯誤率作為評價指標。
  • 如何用簡單的Python編寫Web應用程式?
    機器學習項目只有充分展示給公眾時才稱得上是完整的項目。過去在介紹數據科學項目時,選擇合適的可視化操作或簡單的PPT就足夠了,但現在隨著像RShiny和Dash這類儀錶盤化工具的出現,一名合格的數據科學家也需要掌握一定的Web框架的知識。可Web框架也不是塊好啃的骨頭。
  • 如何在一天內構建和部署機器學習web應用程式 — 榴槤分類
    我們重複以上步驟三次,用其他品種的榴槤進行搜索。請注意,由於我們在API中修改了搜索URL,查詢中的空格將替換為「+」(即mao+shan+wang,red+prawn+durian等)。數據清理在我們的用例中,由於沒有公開的榴槤圖像,因此下載的許多圖像可能與正確的榴槤品種不符(例如,在搜索「 mao shan wang」時可能會找到通用的「未標記」榴槤) )。
  • 英特爾優化OpenVINO工具包;Streamlit發布開源機器學習開發框架
    二進位操作將高吞吐量與低內存壓力結合在一起,是降低精度的理想選擇,加速網絡的一種方法是用二進位卷積代替標準卷積。為了向 OpenVINO 社區提供培訓功能,英特爾今天在神經網絡壓縮框架(NNCF)中發布了對二進位模型的支持,該框架是 OpenVINO 培訓擴展的一部分。
  • 機器學習算法KNN簡介及實現
    算法簡介KNN(K近鄰算法)是一種不需要學習任何參數同時也非常簡單的機器學習算法,既可以用來解決分類問題也可以用來解決回歸問題。K取值為1的分類效果 那如果選擇較大的K值,就相當於用較大範圍的訓練實例進行預測,可以減少異常數據的影響。假如K取值為整個樣本的大小那麼最後的結果相當於對樣本整體做了個平均,這時模型會過於簡單。
  • 谷歌機器學習速成課視頻全集丨07-09講
    目錄機器學習概念01-03講:機器學習簡介、框架處理、深入了解ML04-06講:降低損失
  • 成為數據科學家、人工智慧和機器學習工程師的自學之路
    也可以使用許多其他語言,但出於多種原因,我列出的語言是最常用的語言:如果你有足夠的學習時間並能堅持,那麼它們很容易學會並且可以快速用於開發;它們使你可以用更少的代碼做更多的事情;它們有一個良好而穩固的技術社區,可以在遇到任何問題時為你提供幫助和支持;他們擁有你作為數據科學家,人工智慧或機器學習工程師所需的幾乎所有庫和軟體包
  • 【下載】《機器學習》+《機器學習實戰》
    簡介:機器學習是計算機科學與人工智慧的重要分支領域。 本書作為該領域的入門教材,在內容上儘可能涵蓋機器學習基礎知識的各方面。為方便讀者, 本書附錄給出了一些相關數學基礎知識簡介。簡介:機器學習是人工智慧研究領域中一個極其重要的研究方向,在現今的大數據時代背景下,捕獲數據並從中萃取有價值的信息或模式
  • 機器學習工程師面試題集錦附指南:網際網路篇
    【IT168 評論】機器學習工程師是現在的熱門職位,因為其極高的薪資成為很多技術人的晉升目標。本文總結了部分一線網際網路公司機器學習工程師的面試題及面試指南,希望對各位技術人員的進階之路有所幫助。阿里巴巴根據參加過阿里巴巴機器學習算法工程師面試的技術人員反饋,總共需要經過四輪面試,前兩輪為技術考察,第三輪是交叉面試,最後一輪是人力面試。每輪面試大概持續時間為40到50分鐘,面試內容由項目經驗詢問和基礎機器學習算法詢問兩部分組成。
  • 你為什麼想成為機器學習工程師?是因為熱情還是熱度?
    許多工程師患上錯失恐懼症(F-O-M-O)正如我剛開始所說,機器學習不會很快過時。事實是,許多求職網站上與機器學習相關的職位發布數量躍升了90%。但困難之處在於,整整兩個月後,至少有40%的職位依然空缺。由此得知,儘管對機器學習工程師的需求很大,但人才供應是問題所在。工程師對通用化與專業化存在爭論。
  • 想成為機器學習工程師?這份自學指南你值得收藏
    如何成長為一名機器學習工程師?經常有人這麼問,而這篇文章就嘗試回答這個問題,其中會談到關於機器學習的方方面面,從簡單的線性回歸到最新的神經網絡。你不僅將學習如何使用這些技術,還將學習如何從頭開始構建它們。這個指南主要面向計算機視覺(CV),這也是掌握一般知識的最快方式,從CV中獲取的經驗可以簡單地應用到機器學習的其他領域。
  • 2019年度最佳工作榜單出爐:機器學習工程師百萬年薪奪冠
    機器學習工程師薪資近百萬人民幣,排名第一;全棧工程師多金又有閒排名第三;全行業領域的最佳工作中,科技領域佔有9席。AI崗就是最賺錢的工作。最佳崗位:機器學習工程師百萬年薪Indeed的這份榜單評選了兩個維度:時間維度:以2015年至2018年之間的工作崗位增加衡量。
  • Indeed發布了AI 人才就業報告:機器學習工程師年薪 98 萬,但 AI...
    來源:CSDN  作者 | 唐小引人工智慧這股技術熱潮風起兩年,國內外眾多企業紛紛「AI First」,隨處可見百萬年薪、人才巨大缺口,無論國內外,AI 人才招聘需求都可以用「