01.21 使用Cortex把PyTorch模型部署到生產中

編譯:ronghuaiyang

導讀

使用Cortex可以非常方便的部署PyTorch模型。


今年是 PyTorch 成為最受研究人員歡迎的機器學習(ML)框架的一年。

使用Cortex把PyTorch模型部署到生產中

該框架的 python 風格,其學習曲線的溫和性,以及它對快速和簡單原型的方便實現,使 PyTorch 明顯成為研究人員的最愛。因此,它正在推動一些最酷的機器學習項目:

  • Transformers,Hugging Face 生成的廣泛流行的自然語言處理(NLP)庫,是建立在 PyTorch 上的。
  • Selene,生物前沿 ML 庫,建在 PyTorch 上。
  • CrypTen,這個熱門的、新的、關注隱私的機器學習框架是建立在 PyTorch 上的。

在 ML 的幾乎任何領域,從計算機視覺到 NLP 再到計算生物學,你都會發現 PyTorch 在前沿為實驗提供能量。

然而,最自然的問題是如何將這些實驗合併到軟件中。如何從“跨語言語言模型”轉換為谷歌翻譯?

在這篇博客文章中,我們將瞭解在生產環境中使用 PyTorch 模型意味著什麼,然後介紹一種允許部署任何 PyTorch 模型以便在軟件中使用的方法。

在生產中使用 PyTorch 意味著什麼?

根據生產環境的不同,在生產環境中運行機器學習可能意味著不同的事情。一般來說,在生產中有兩類機器學習的設計模式:

  • 通過推理服務器提供一個預測 API。這是在通用軟件開發中使用的標準方法,即不是移動軟件或獨立設備。
  • 嵌入。將你的模型直接嵌入到你的應用程序中。這通常用於機器人和獨立設備,有時也用於移動應用程序。

如果你打算直接將你的模型嵌入到你的應用程序中,那麼你應該看看 PyTorch 的 TorchScript。使用即時編譯,PyTorch 可以將 Python 編譯成不需要 Python 解釋器就可以運行的 TorchScript,這對於資源受限的部署目標(比如移動設備)非常有用。

在大多數情況下,你會使用模型服務器。今天你看到的許多 ML 應用程序 — 從你最喜歡的流媒體服務背後的推薦引擎到在線搜索欄中的自動完成功能—都依賴於這種部署形式,更確切地說,依賴於實時推理

在實時推理中,一個模型通常被部署為一個微服務(通常是一個 JSON API),通過它,一個軟件可以查詢模型並接收預測。

讓我們以 Facebook 人工智能的 RoBERTa 為例,一個領先的 NLP 模型。它通過分析去掉一個單詞的句子(或“屏蔽詞”),並猜測屏蔽詞是什麼,來進行推斷。例如,如果你要使用一個預先訓練好的 RoBERTa 模型來猜測一個句子中的下一個單詞,你要使用的 Python 方法是這樣的,非常簡單:

<code>roberta.fill_mask(input_text + " <mask>")/<mask>/<code>

事實證明,在序列中預測缺失的單詞正是 autocomplete 等功能背後的功能。要在應用程序中實現 autocomplete,可以將 RoBERTa 部署為 JSON API,然後在應用程序中使用用戶的輸入在 RoBERTa 節點上進行查詢。

設置 JSON API 聽起來相當簡單,但是將模型部署為微服務實際上需要大量的基礎設施工作。

你需要自動控制流量的波動。你需要監控你的預測。你需要處理模型更新。你需要了解日誌記錄。非常多的工作。

那麼,問題是如何將 RoBERTa 部署為一個 JSON API,而不需要手動滾動所有這些自定義基礎設施?

將 PyTorch 模型與 Cortex 一起投入生產

你可以使用 Cortex 自動化部署 PyTorch 模型所需的大部分基礎設施工作,這是一個將模型作為 api 部署到 AWS 上的開源工具。這篇文章並不是一個完整的 Cortex 使用指南,只是一個高層次的 Cortex 使用方法,你所需要的是:

  • 提供推斷的 Python 腳本
  • 定義你的 API 的配置文件
  • Cortex CLI 啟動你的部署

這種方法並不侷限於 RoBERTa。想要為你的圖像自動生成 alt 文本,使你的網站更容易訪問?你可以部署一個 AlexNet 模型,使用 PyTorch 和 Cortex 來標記圖像。

那語言分類器呢,比如 Chrome 用來檢測頁面不是用默認語言寫的那個?fastText 是這個任務的完美模型,你可以使用 PyTorch 和 Cortex 部署它。

使用 Cortex,你可以將許多由 PyTorch 支持的 ML 特性添加到你的應用程序中進行實時推斷。

PyTorch 用到生產中

有超過 25 個研究模型儲存在 PyTorch Hub],從 NLP 到計算機視覺。所有這些都可以通過 Cortex 來實現,使用的過程和我們剛才演示的一樣。

PyTorch 團隊無疑在他們的路線圖上有更多的以生產為中心的特性,但是僅僅看看到目前為止所取得的進展,很明顯 PyTorch 不是為生產而構建的框架的觀點已經過時了。

英文原文:https://medium.com/pytorch/how-to-build-production-software-with-pytorch-9a8725382f2a


分享到:


相關文章: