Gradio 和 Streamlit 安裝與使用教程

米开朗基杨發表於2024-11-18

最近 Sealos Devbox 有點火 🔥,越來越多的小夥伴都開始使用 Sealos Devbox,有位小夥伴寫的文章閱讀量已經接近了兩萬!

評論區有個小夥伴問我能不能出一篇部署 Gradio 和 Streamlit 的文章,瞬間我就來勁了,趕緊去搜一下這兩個東西是啥,你還別說,確實挺有意思的。必須得寫個教程了!

什麼是 Gradio 和 Streamlit 呢?

GradioStreamlit 是兩個用於快速構建機器學習 (ML) 應用和互動式 Web 應用的開源 Python 庫,特別適合需要快速搭建演示和原型的專案。

Gradio

Gradio 提供了一種簡潔的方法來構建 Web 應用,允許使用者與機器學習模型進行互動。開發者可以透過 Gradio 快速將模型部署為 Web 介面,使用者無需具備程式設計經驗即可使用這些模型。知名的 AI 繪畫應用 Stable Diffusion WebUI 就是使用 Gradio 來構建的

適用場景:

  • 為 ML 模型構建互動介面,測試和調優模型。
  • 快速構建概念驗證 (PoC) 或用於產品展示的原型。
  • 用於教學、分享和演示 ML 模型。

Streamlit

Streamlit 是另一個廣泛用於構建資料視覺化、儀表盤和 ML 應用的框架,設計簡潔,幫助開發者快速從資料指令碼轉化為互動式 Web 應用。Streamlit 的獨特之處在於其近乎程式碼原生的語法,適合 Python 開發者直接在程式碼中描述應用佈局。

適用場景:

  • 構建資料分析和視覺化工具,用於探索資料。
  • 為 ML 應用構建儀表盤,實時監控和調整模型引數。
  • 快速構建可演示的機器學習應用或產品原型。

為什麼選擇 Devbox

雖然 Gradio 和 Streamlit 十分強大,但是將他們部署上線卻不是一件容易的事情,你需要在本地搭建 Python 虛擬環境,然後完成打包映象、自動分配域名、HTTPS 證書等一系列步驟,然後才能上線,如此複雜的流程,直接勸退大多數小白

而 Devbox 可以將這些繁瑣的流程變的如此簡單,直接無腦操作。

實戰部署指南

1. 建立Devbox專案

首先開啟瀏覽器,進入 Sealos 桌面,找到並點選"Devbox",然後點選"新建專案"按鈕,填寫專案名稱,執行環境選擇 Python,選擇合適的 Python 版本 填寫專案基本資訊:

  • 專案名稱
  • 選擇 Python 作為執行環境
  • 選擇合適的 Python 版本
  • 配置資源規格

由於 Gradio 專案預設是 7860 埠,所以我們需要將埠改成 7860。

完成所有選擇以後,點選右上角的 “建立”。

現在就有了一個 Debox 專案了,點選下圖中的 “Cursor”,就會使用 Cursor 開啟連線 Devbox 開發環境。

首次開啟會提示安裝 Devbox 外掛,安裝後即可自動連線開發環境。

現在可以在 Cursor 左側看到 Devbox 預設建立的專案資訊。是不是非常簡單?直接省略了配置域名解析、申請 SSL 證書,配置閘道器等與開發無關的繁瑣操作,爽!

點選上方的終端,選擇 “新建終端”。

輸入以下命令:

# 開啟 python 虛擬環境
source ./bin/activate
# 安裝 gradio
pip install --upgrade gradio

執行過程如下所示:

2. 編寫示例程式碼

等待 Gradio 安裝完畢以後,將 Gradio 的 demo 程式碼複製到 hello.py 中,程式碼如下所示:

import gradio as gr

def greet(name, intensity):
    return "Hello, " + name + "!" * int(intensity)

demo = gr.Interface(
    fn=greet,
    inputs=["text", "slider"],
    outputs=["text"],
)

demo.launch(server_name="0.0.0.0")

然後修改啟動指令碼 entrypoint.sh,新增虛擬環境啟用命令:

# 開啟 python 虛擬環境
source ./bin/activate

3. 直接啟動

現在我們直接透過 entrypoint.sh 指令碼啟動 Gradio:

現在回到 Devbox 介面,進入 Gradio 開發環境的詳情頁面:

點選外網地址即可開啟 Gradio 的 Web 介面。

這是個公網域名,而且自動配置了 HTTPS 證書,你的同事、朋友、領導可以在任何地方實時預覽你的最新開發成果,太爽了!

你在 Cursor 裡面剛改完程式碼,你的領導就可以立馬看到效果了,你就說快不快?😁

4. 部署到生產環境

上面的啟動方法雖妙,但一般只用作開發演示

如果是生產環境,建議還是釋出之後再部署更好,可以自動享受到 Sealos 雲平臺的各種高階特性,比如:自愈功能、彈性伸縮等等。

釋出版本很簡單,在專案詳情頁面直接點選 “釋出版本”:

輸入版本配置資訊,選擇 “發版”。

等待 10s 左右,看見發版 “成功” 狀態以後,點選 “上線”。勝利就在前方!

進入 “上線” 介面,修改 “網路配置” 中的埠為 7860,點選右上角 “部署應用”:

部署完成後,等待應用狀態變成 running,然後點選公網地址,即可開啟 Gradio 專案的 Demo 介面。

現在,我們就已經大功告成啦!如此絲滑~

到此,Gradio 專案的部署就完成了。

相比於之前在開發環境中直接啟動的方式,這種部署方式有以下優點:

  1. 你可以根據自己的業務情況隨便擴縮容。擴到 10 個例項問題也不大。

  2. 擁有自愈功能。即使服務程序遇到了某些意外狀況退出了,也會自動再啟動一個新的例項。
  3. 可以隨意調整資源配置,拉到 8C16G 也沒問題。

由此可見,生產環境更適合發版之後到“應用管理”中部署。

而 Streamlit 的部署與 Gradio 的部署一毛一樣,將以上的安裝命令和 Demo 程式碼替換成 Streamlit 的即可。

結語

Devbox 透過極簡的視覺化介面,將複雜的開發部署流程精簡,使開發者能更直觀、高效地完成專案的構建和釋出。它將部署中的繁瑣細節模組化、自動化,降低了門檻。

透過統一的介面,Devbox 提供了配置管理、程式碼部署、版本控制和資源監控等功能,這些特性讓我們能夠專注於應用開發,而不是陷入繁瑣的部署細節中。

都 AI 時代了,快速上線才是最重要的,那些繁瑣的部署和配置細節老子不想關心!

相關文章