PyTorch 1.5 釋出,與 AWS 合作 TorchServe
By 超神經
內容概要:近日 PyTorch 釋出了 1.5 版本的更新,作為越來越受歡迎的機器學習框架,PyTorch 本次也帶來了大的功能升級。此外, Facebook 和 AWS 還合作推出了兩個重要的 PyTorch 庫。
關鍵詞:PyTorch AWS TorchServe
隨著 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 的一個舉措。
TorchServe:用於推理任務
部署機器學習模型進行規模化推理並非易事。開發人員必須收集和打包模型工件,建立安全的服務棧,安裝和配置預測用的軟體庫,建立和使用 API 和端點,生成監控用的日誌和指標,並在可能的多個伺服器上管理多個模型版本。
上述每一項任務都需要大量的時間,並可能會使模型部署速度減慢數週甚至數月。此外,為低延遲線上應用最佳化服務是一件必須要做的事情。
此前使用 PyTorch 的開發人員,均缺乏官方支援的部署 PyTorch 模型的方法。而生產模型服務框架 TorchServe 的釋出,將改變這一現狀,它能夠更容易地將模型投入到生產中。
在下面的例子中,將說明如何從 Torchvision 中提取訓練過的模型,並使用 TorchServe 進行部署。
#Download a trained PyTorch model
wget
#Package model for TorchServe and create model archive .mar file
torch-model-archiver \
--model-name densenet161 \
--version 1.0 \
--model-file examples/image_classifier/densenet_161/model.py \
--serialized-file densenet161–8d451a50.pth \
--extra-files examples/image_classifier/index_to_name.json \
--handler image_classifier
mkdir model_store
mv densenet161.mar model_store/
#Start TorchServe model server and register DenseNet161 model
torchserve — start — model-store model_store — models densenet161=densenet161.mar
TorchServe 的測試版本現已可用,其特點包括:
原生態 API:支援用於預測的推理 API,和用於管理模型伺服器的管理 API。
安全部署:包括對安全部署的 HTTPS 支援。
強大的模型管理功能:允許透過命令列介面、配置檔案或執行時 API 對模型、版本和單個工作執行緒進行完整配置。
模型歸檔:提供執行「模型歸檔」的工具,這是一個將模型、引數和支援檔案打包到單個持久工件的過程。使用一個簡單的命令列介面,可以打包和匯出為單個「 .mar」檔案,其中包含提供 PyTorch 模型所需的一切。該 .mar 檔案可以共享和重用。
內建的模型處理程式:支援涵蓋最常見用例,如影像分類、物件檢測、文字分類、影像分割的模型處理程式。TorchServe 還支援自定義處理程式。
日誌記錄和指標:支援可靠的日誌記錄和實時指標,以監視推理服務和端點、效能、資源利用率和錯誤。還可以生成自定義日誌並定義自定義指標。
模型管理:支援同時管理多個模型或同一模型的多個版本。你可以使用模型版本回到早期版本,或者將流量路由到不同的版本進行 A/B 測試。
預構建的影像:準備就緒後,可以在基於 CPU 和 NVIDIA GPU 的環境中,部署T orchServe 的 Dockerfile 和 Docker 映象。最新的 Dockerfiles 和影像可以在這裡找到。
使用者也可以從 pytorch.org/serve 獲得安裝說明、教程和文件。
TorchElastic :整合的 K8S 控制器
當前機器學習的訓練模型越來越大,如 RoBERTa 和 TuringNLG,它們向外擴充套件到分散式叢集的需求也變得越來越重要。為了滿足這一需求,通常會使用搶佔式例項(例如 Amazon EC2 Spot 例項)。
但這些可搶佔例項本身是不可預測的,為此,第二個工具 TorchElastic 出現了。
Kubernetes 和 TorchElastic 的整合,允許 PyTorch 開發人員在一組計算節點上訓練機器學習模型,這些節點可以動態地變化,而不會破壞模型訓練過程。
即使節點發生故障,TorchElastic 的內建容錯功能也可以暫停節點級別的訓練,並在該節點再次恢復正常後恢復訓練。
TorchElastic 的內建容錯能力支援斷點續傳
此外,使用帶有 TorchElastic 的 Kubernetes 控制器,可以在硬體或節點回收時問題上,在被替換了節點的叢集上,執行分散式訓練的關鍵任務。
訓練任務可以使用部分被請求的資源啟動,並且可以隨著資源可用而動態擴充套件,無需停止或重新啟動。
要利用這些功能,使用者只需在簡單的作業定義中指定訓練引數,Kubernetes-TorchElastic 軟體包便可以管理作業的生命週期。
以下是用於 Imagenet 訓練作業的 TorchElastic 配置的簡單示例:
apiVersion: elastic.pytorch.org/v1alpha1
kind: ElasticJob
metadata:
name: imagenet
namespace: elastic-job
spec:
rdzvEndpoint: $ETCD_SERVER_ENDPOINT
minReplicas: 1
maxReplicas: 2
replicaSpecs:
Worker:
replicas: 2
restartPolicy: ExitCode
template:
apiVersion: v1
kind: Pod
spec:
containers:
- name: elasticjob-worker
image: torchelastic/examples:0.2.0rc1
imagePullPolicy: Always
args:
- "--nproc_per_node=1"
- "/workspace/examples/imagenet/main.py"
- "--arch=resnet18"
- "--epochs=20"
- "--batch-size=32"
微軟、谷歌,就問你們慌不慌?
這次兩家合作推出全新 PyTorch 庫的操作,其背後也許有著更深層的意義,因為「不帶你玩」這個套路,在框架模型發展的歷史上,已不是第一次出現。
2017 年 12 月,AWS、Facebook 和微軟宣佈,他們將共同開發可用於生產環境的 ONNX ,以此來對抗谷歌 TensorFlow 對工業界使用的壟斷。
隨後 Apache MXNet 、Caffe2、PyTorch 等主流深度學習框架,都對 ONNX 實現了不同程度的支援,這方便了演算法及模型在不同的框架之間的遷移。
AWS、Facebook 和微軟當初
欲用 ONNX 一統框架江湖
而 ONNX 想打通學術界和產業界的願景,實際上並沒有達到當初的預期,各家框架依然用各自的服務體系,基本上只有 MXNet 和 PyTorch 深入到了 ONNX。
而如今,PyTorch 推出了自己的服務體系,ONNX 則近乎失去了存在的意義(MXNet 表示不知所措)。
另一方面,PyTorch 在不斷的升級更新之下,框架的相容性和易用性,正在逼近甚至趕超最強勁的對手 TensorFlow。
雖然谷歌有自己的雲服務和框架,但 AWS 的雲資源和 Facebook 的框架體系聯合,強強聯手之下,恐怕谷歌也將難以招架。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69969896/viewspace-2687670/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Go1.5 釋出說明Go
- 大模型Grok-1.5釋出大模型
- 騰訊遊戲與NVIDIA合作釋出START雲遊戲服務遊戲
- NVIDIA DOCA 1.5 長期支援版本釋出
- AWS太過強勢?VMware為自保疑與微軟達成合作微軟
- .NET開源工作流 RoadFlow 1.5 釋出
- Novell釋出“開放企業平臺” 加強與戴爾合作(轉)
- Flutter 1.5 釋出,正式成為全平臺 UI 框架!FlutterUI框架
- Jeasyframe 開源框架 穩定版 V1.5 釋出框架
- 首汽約車與AWS聯合釋出的智慧語音方案為智慧出行提速
- 微軟釋出Azure資料倉儲,對抗AWS Redshift微軟
- HTC與安德瑪強強合作 高階健身裝置今年可釋出
- 搜狗與微軟達成合作 釋出英文搜尋及學術搜尋微軟
- Dapr 官方文件中文翻譯 v1.5 版本正式釋出
- 思博倫與AWS合作提供自動化5G網路測試
- 卡西歐將釋出與車隊Scuderia AlphaTauri合作的新款EDIFICE腕錶
- VKontakte&YeahMobi深度合作新聞釋出會
- 微信小遊戲 IP 限時合作計劃釋出!遊戲
- Dubbo-go 釋出 1.5 版,朝雲原生邁出關鍵一步Go
- python框架Django 1.5 正式版釋出,Python 3 支援Python框架Django
- 谷歌官方合作!出門問問釋出Android Wear應用商店谷歌Android
- ?Slow Admin v1.5.* 版本釋出, 新增擴充套件管理模組套件
- 谷歌正式釋出TensorFlow 1.5:終於支援CUDA 9和cuDNN 7谷歌DNN
- iBoxDB for .NET v1.5釋出, 移動NoSQL資料庫SQL資料庫
- Lzlib 1.5 正式釋出,C 語言壓縮演算法庫演算法
- 埃裡森炮轟亞馬遜AWS不安全,釋出Oracle雲2.0亞馬遜Oracle
- AWS釋出針對Amazon EC2的Apple macOS例項APPMac
- 測試與釋出
- GitHub Desktop釋出1.5版本,簡化合並衝突解決Github
- AWS釋出 Amazon DevOps Guru 機器學習驅動的全新運營服務dev機器學習
- 就在剛剛!PyTorch 官方教程釋出,限時免費開放!PyTorch
- AWS釋出五大用於工業領域的機器學習服務機器學習
- 從Oracle到MongoDB:為什麼AWS不斷拋棄合作伙伴?OracleMongoDB
- Alexa聯手戰略合作伙伴 釋出最新中國排行榜
- 正式支援Transformer與TensorBoard,PyTorch 1.2新鮮出爐ORMORBPyTorch
- Redis 的訂閱與釋出Redis
- Vue外掛打包與釋出Vue
- Laravel Redis釋出與訂閱.LaravelRedis