PyTorch 1.5發佈,與AWS聯手推出TorchServe

PyTorch 1.5發佈,與AWS聯手推出TorchServe
PyTorch 1.5發佈,與AWS聯手推出TorchServe

導讀:近日 PyTorch 發佈了 1.5 版本的更新,作為越來越受歡迎的機器學習框架,PyTorch 本次也帶來了大的功能升級。此外, Facebook 和 AWS 還合作推出了兩個重要的 PyTorch 庫。

作者 | 神經星星

來源 | HyperAI超神經(ID:HyperAI)

隨著 PyTorch 在生產環境中的應用越來越多,為社區提供更好的工具和平臺,以便高效地擴展訓練和部署模型,也成了 PyTorch 的當務之急。

近日 PyTorch 1.5 發佈,升級了主要的 torchvision,torchtext 和 torchaudio 庫,並推出將模型從 Python API 轉換為 C ++ API 等功能。

除此之外,Facebook 還和 Amazon 合作,推出了兩個重磅的工具:TorchServe 模型服務框架和 TorchElastic Kubernetes 控制器。

TorchServe 旨在為大規模部署 PyTorch 模型推理,提供一個乾淨、兼容性好的工業級路徑。

而 TorchElastic Kubernetes 控制器,可讓開發人員快速使用 Kubernetes 集群,在 PyTorch 中創建容錯分佈式訓練作業。

這似乎是 Facebook 聯手亞馬遜,在針對大型性能 AI 模型框架上,宣戰 TensorFlow 的一個舉措。

PyTorch 1.5發佈,與AWS聯手推出TorchServe

TorchServe:用於推理任務

部署機器學習模型進行規模化推理並非易事。開發人員必須收集和打包模型工件,創建安全的服務棧,安裝和配置預測用的軟件庫,創建和使用 API 和端點,生成監控用的日誌和指標,並在可能的多個服務器上管理多個模型版本。

上述每一項任務都需要大量的時間,並可能會使模型部署速度減慢數週甚至數月。此外,為低延遲在線應用優化服務是一件必須要做的事情。

PyTorch 1.5發佈,與AWS聯手推出TorchServe

此前使用 PyTorch 的開發人員,均缺乏官方支持的部署 PyTorch 模型的方法。而生產模型服務框架 TorchServe 的發佈,將改變這一現狀,它能夠更容易地將模型投入到生產中。

在下面的例子中,將說明如何從 Torchvision 中提取訓練過的模型,並使用 TorchServe 進行部署。

<code>#Download a trained PyTorch model/<code><code>wget https://download.pytorch.org/models/densenet161-8d451a50.pth/<code>
<code>#Package model for TorchServe and create model archive .mar file/<code><code>torch-model-archiver \/<code><code> --model-name densenet161 \/<code><code> --version 1.0 \/<code><code> --model-file examples/image_classifier/densenet_161/model.py \/<code><code> --serialized-file densenet161–8d451a50.pth \/<code><code> --extra-files examples/image_classifier/index_to_name.json \/<code><code> --handler image_classifier/<code>
<code>mkdir model_store/<code><code>mv densenet161.mar model_store//<code>
<code>#Start TorchServe model server and register DenseNet161 model/<code><code>torchserve — start — model-store model_store — models densenet161=densenet161.mar/<code>

TorchServe 的測試版本現已可用,其特點包括:

  • 原生態 API:支持用於預測的推理 API,和用於管理模型服務器的管理 API。
  • 安全部署:包括對安全部署的 HTTPS 支持。
  • 強大的模型管理功能:允許通過命令行接口、配置文件或運行時 API 對模型、版本和單個工作線程進行完整配置。
  • 模型歸檔:提供執行「模型歸檔」的工具,這是一個將模型、參數和支持文件打包到單個持久工件的過程。使用一個簡單的命令行界面,可以打包和導出為單個「 .mar」文件,其中包含提供 PyTorch 模型所需的一切。該 .mar 文件可以共享和重用。
  • 內置的模型處理程序:支持涵蓋最常見用例,如圖像分類、對象檢測、文本分類、圖像分割的模型處理程序。TorchServe 還支持自定義處理程序。
  • 日誌記錄和指標:支持可靠的日誌記錄和實時指標,以監視推理服務和端點、性能、資源利用率和錯誤。還可以生成自定義日誌並定義自定義指標。
  • 模型管理:支持同時管理多個模型或同一模型的多個版本。你可以使用模型版本回到早期版本,或者將流量路由到不同的版本進行 A/B 測試。
  • 預構建的圖像
    :準備就緒後,可以在基於 CPU 和 NVIDIA GPU 的環境中,部署T orchServe 的 Dockerfile 和 Docker 鏡像。最新的 Dockerfiles 和圖像可以在這裡找到。

用戶也可以從 pytorch.org/serve 獲得安裝說明、教程和文檔。

PyTorch 1.5發佈,與AWS聯手推出TorchServe

TorchElastic :集成的 K8S 控制器

當前機器學習的訓練模型越來越大,如 RoBERTa 和 TuringNLG,它們向外擴展到分佈式集群的需求也變得越來越重要。為了滿足這一需求,通常會使用搶佔式實例(例如 Amazon EC2 Spot 實例)。

但這些可搶佔實例本身是不可預測的,為此,第二個工具 TorchElastic 出現了。

Kubernetes 和 TorchElastic 的集成,允許 PyTorch 開發人員在一組計算節點上訓練機器學習模型,這些節點可以動態地變化,而不會破壞模型訓練過程。

即使節點發生故障,TorchElastic 的內置容錯功能也可以暫停節點級別的訓練,並在該節點再次恢復正常後恢復訓練。

PyTorch 1.5發佈,與AWS聯手推出TorchServe

TorchElastic 的內置容錯能力支持斷點續傳

此外,使用帶有 TorchElastic 的 Kubernetes 控制器,可以在硬件或節點回收時問題上,在被替換了節點的集群上,運行分佈式訓練的關鍵任務。

訓練任務可以使用部分被請求的資源啟動,並且可以隨著資源可用而動態擴展,無需停止或重新啟動。

要利用這些功能,用戶只需在簡單的作業定義中指定訓練參數,Kubernetes-TorchElastic 軟件包便可以管理作業的生命週期。

以下是用於 Imagenet 訓練作業的 TorchElastic 配置的簡單示例:

<code>apiVersion: elastic.pytorch.org/v1alpha1/<code><code>kind: ElasticJob/<code><code>metadata:/<code><code>name: imagenet/<code><code>namespace: elastic-job/<code><code>spec:/<code><code>rdzvEndpoint: $ETCD_SERVER_ENDPOINT/<code><code>minReplicas: 1/<code><code>maxReplicas: 2/<code><code>replicaSpecs:/<code><code>Worker:/<code><code>replicas: 2/<code><code>restartPolicy: ExitCode/<code><code>template:/<code><code>apiVersion: v1/<code><code>kind: Pod/<code><code>spec:/<code><code>containers:/<code><code>- name: elasticjob-worker/<code><code>image: torchelastic/examples:0.2.0rc1/<code><code>imagePullPolicy: Always/<code><code>args:/<code><code>- "--nproc_per_node=1"/<code><code>- "/workspace/examples/imagenet/main.py"/<code><code>- "--arch=resnet18"/<code><code>- "--epochs=20"/<code><code>- "--batch-size=32"/<code>
PyTorch 1.5發佈,與AWS聯手推出TorchServe

微軟、谷歌,就問你們慌不慌?

這次兩家合作推出全新 PyTorch 庫的操作,其背後也許有著更深層的意義,因為「不帶你玩」這個套路,在框架模型發展的歷史上,已不是第一次出現。

2017 年 12 月,AWS、Facebook 和微軟宣佈,他們將共同開發可用於生產環境的 ONNX ,以此來對抗谷歌 TensorFlow 對工業界使用的壟斷。

隨後 Apache MXNet 、Caffe2、PyTorch 等主流深度學習框架,都對 ONNX 實現了不同程度的支持,這方便了算法及模型在不同的框架之間的遷移。

PyTorch 1.5發佈,與AWS聯手推出TorchServe

AWS、Facebook 和微軟當初欲用 ONNX 一統框架江湖

而 ONNX 想打通學術界和產業界的願景,實際上並沒有達到當初的預期,各家框架依然用各自的服務體系,基本上只有 MXNet 和 PyTorch 深入到了 ONNX。

而如今,PyTorch 推出了自己的服務體系,ONNX 則近乎失去了存在的意義(MXNet 表示不知所措)。

另一方面,PyTorch 在不斷的升級更新之下,框架的兼容性和易用性,正在逼近甚至趕超最強勁的對手 TensorFlow。

雖然谷歌有自己的雲服務和框架,但 AWS 的雲資源和 Facebook 的框架體系聯合,強強聯手之下,恐怕谷歌也將難以招架。

而微軟已經被曾經 ONNX 三人組的兩個小夥伴踢出群聊,下一步不知做何打算?

PyTorch 1.5發佈,與AWS聯手推出TorchServe
PyTorch 1.5發佈,與AWS聯手推出TorchServe
  • 如何通過深度學習,完成計算機視覺中的所有工作?

  • Go後臺項目架構思考與重構 | 深度長文

  • 黑客用上機器學習你慌不慌?這 7 種竊取數據的新手段快來認識一下

  • 阿里“去 IOE”十二年,彈性計算如何二次去 I 和 E?

  • 5分鐘!就能學會以太坊 JSON API 基礎知識


分享到:


相關文章: