PyTorch 1.5 发布,与 AWS 合作 TorchServe
內(nèi)容概要:近日 PyTorch 發(fā)布了 1.5 版本的更新,作為越來越受歡迎的機(jī)器學(xué)習(xí)框架,PyTorch 本次也帶來了大的功能升級(jí)。此外, Facebook 和 AWS 還合作推出了兩個(gè)重要的 PyTorch 庫(kù)。
關(guān)鍵詞:PyTorch ?AWS ?TorchServe??
隨著 PyTorch 在生產(chǎn)環(huán)境中的應(yīng)用越來越多,為社區(qū)提供更好的工具和平臺(tái),以便高效地?cái)U(kuò)展訓(xùn)練和部署模型,也成了 PyTorch 的當(dāng)務(wù)之急。
近日 PyTorch 1.5 發(fā)布,升級(jí)了主要的 torchvision,torchtext 和 torchaudio 庫(kù),并推出將模型從 Python API 轉(zhuǎn)換為 C ++ API 等功能。
除此之外,Facebook 還和 Amazon 合作,推出了兩個(gè)重磅的工具:TorchServe 模型服務(wù)框架和 TorchElastic Kubernetes 控制器。
TorchServe 旨在為大規(guī)模部署 PyTorch 模型推理,提供一個(gè)干凈、兼容性好的工業(yè)級(jí)路徑。
而 TorchElastic Kubernetes 控制器,可讓開發(fā)人員快速使用 Kubernetes 集群,在 PyTorch 中創(chuàng)建容錯(cuò)分布式訓(xùn)練作業(yè)。
這似乎是 Facebook 聯(lián)手亞馬遜,在針對(duì)大型性能 AI 模型框架上,宣戰(zhàn) TensorFlow 的一個(gè)舉措。
TorchServe:用于推理任務(wù)
部署機(jī)器學(xué)習(xí)模型進(jìn)行規(guī)模化推理并非易事。開發(fā)人員必須收集和打包模型工件,創(chuàng)建安全的服務(wù)棧,安裝和配置預(yù)測(cè)用的軟件庫(kù),創(chuàng)建和使用 API 和端點(diǎn),生成監(jiān)控用的日志和指標(biāo),并在可能的多個(gè)服務(wù)器上管理多個(gè)模型版本。
上述每一項(xiàng)任務(wù)都需要大量的時(shí)間,并可能會(huì)使模型部署速度減慢數(shù)周甚至數(shù)月。此外,為低延遲在線應(yīng)用優(yōu)化服務(wù)是一件必須要做的事情。
此前使用 PyTorch 的開發(fā)人員,均缺乏官方支持的部署 PyTorch 模型的方法。而生產(chǎn)模型服務(wù)框架 TorchServe 的發(fā)布,將改變這一現(xiàn)狀,它能夠更容易地將模型投入到生產(chǎn)中。
在下面的例子中,將說明如何從 Torchvision 中提取訓(xùn)練過的模型,并使用 TorchServe 進(jìn)行部署。
#Download a trained PyTorch model wget https://download.pytorch.org/models/densenet161-8d451a50.pth#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_classifiermkdir model_store mv densenet161.mar model_store/#Start TorchServe model server and register DenseNet161 model torchserve — start — model-store model_store — models densenet161=densenet161.marTorchServe 的測(cè)試版本現(xiàn)已可用,其特點(diǎn)包括:
原生態(tài) API:支持用于預(yù)測(cè)的推理 API,和用于管理模型服務(wù)器的管理 API。
安全部署:包括對(duì)安全部署的? HTTPS 支持。
強(qiáng)大的模型管理功能:允許通過命令行接口、配置文件或運(yùn)行時(shí) API 對(duì)模型、版本和單個(gè)工作線程進(jìn)行完整配置。
模型歸檔:提供執(zhí)行「模型歸檔」的工具,這是一個(gè)將模型、參數(shù)和支持文件打包到單個(gè)持久工件的過程。使用一個(gè)簡(jiǎn)單的命令行界面,可以打包和導(dǎo)出為單個(gè)「 .mar」文件,其中包含提供 PyTorch 模型所需的一切。該 .mar 文件可以共享和重用。
內(nèi)置的模型處理程序:支持涵蓋最常見用例,如圖像分類、對(duì)象檢測(cè)、文本分類、圖像分割的模型處理程序。TorchServe 還支持自定義處理程序。
日志記錄和指標(biāo):支持可靠的日志記錄和實(shí)時(shí)指標(biāo),以監(jiān)視推理服務(wù)和端點(diǎn)、性能、資源利用率和錯(cuò)誤。還可以生成自定義日志并定義自定義指標(biāo)。
模型管理:支持同時(shí)管理多個(gè)模型或同一模型的多個(gè)版本。你可以使用模型版本回到早期版本,或者將流量路由到不同的版本進(jìn)行 A/B 測(cè)試。
預(yù)構(gòu)建的圖像:準(zhǔn)備就緒后,可以在基于 CPU 和 NVIDIA GPU 的環(huán)境中,部署T orchServe 的 Dockerfile 和 Docker 鏡像。最新的 Dockerfiles 和圖像可以在這里找到。
用戶也可以從 pytorch.org/serve 獲得安裝說明、教程和文檔。
TorchElastic :集成的 K8S 控制器
當(dāng)前機(jī)器學(xué)習(xí)的訓(xùn)練模型越來越大,如 RoBERTa 和 TuringNLG,它們向外擴(kuò)展到分布式集群的需求也變得越來越重要。為了滿足這一需求,通常會(huì)使用搶占式實(shí)例(例如 Amazon EC2 Spot ?實(shí)例)。
但這些可搶占實(shí)例本身是不可預(yù)測(cè)的,為此,第二個(gè)工具 TorchElastic 出現(xiàn)了。
Kubernetes 和 TorchElastic 的集成,允許 PyTorch 開發(fā)人員在一組計(jì)算節(jié)點(diǎn)上訓(xùn)練機(jī)器學(xué)習(xí)模型,這些節(jié)點(diǎn)可以動(dòng)態(tài)地變化,而不會(huì)破壞模型訓(xùn)練過程。
即使節(jié)點(diǎn)發(fā)生故障,TorchElastic 的內(nèi)置容錯(cuò)功能也可以暫停節(jié)點(diǎn)級(jí)別的訓(xùn)練,并在該節(jié)點(diǎn)再次恢復(fù)正常后恢復(fù)訓(xùn)練。
TorchElastic 的內(nèi)置容錯(cuò)能力支持?jǐn)帱c(diǎn)續(xù)傳
此外,使用帶有 TorchElastic 的 Kubernetes 控制器,可以在硬件或節(jié)點(diǎn)回收時(shí)問題上,在被替換了節(jié)點(diǎn)的集群上,運(yùn)行分布式訓(xùn)練的關(guān)鍵任務(wù)。
訓(xùn)練任務(wù)可以使用部分被請(qǐng)求的資源啟動(dòng),并且可以隨著資源可用而動(dòng)態(tài)擴(kuò)展,無需停止或重新啟動(dòng)。
要利用這些功能,用戶只需在簡(jiǎn)單的作業(yè)定義中指定訓(xùn)練參數(shù),Kubernetes-TorchElastic 軟件包便可以管理作業(yè)的生命周期。
以下是用于 Imagenet 訓(xùn)練作業(yè)的 TorchElastic 配置的簡(jiǎn)單示例:
apiVersion: elastic.pytorch.org/v1alpha1 kind: ElasticJob metadata:name: imagenetnamespace: elastic-job spec:rdzvEndpoint: $ETCD_SERVER_ENDPOINTminReplicas: 1maxReplicas: 2replicaSpecs:Worker:replicas: 2restartPolicy: ExitCodetemplate:apiVersion: v1kind: Podspec:containers:- name: elasticjob-workerimage: torchelastic/examples:0.2.0rc1imagePullPolicy: Alwaysargs:- "--nproc_per_node=1"- "/workspace/examples/imagenet/main.py"- "--arch=resnet18"- "--epochs=20"- "--batch-size=32"?
微軟、谷歌,就問你們慌不慌?
這次兩家合作推出全新 PyTorch 庫(kù)的操作,其背后也許有著更深層的意義,因?yàn)椤覆粠阃妗惯@個(gè)套路,在框架模型發(fā)展的歷史上,已不是第一次出現(xiàn)。
2017 年 12 月,AWS、Facebook 和微軟宣布,他們將共同開發(fā)可用于生產(chǎn)環(huán)境的 ONNX ,以此來對(duì)抗谷歌 TensorFlow 對(duì)工業(yè)界使用的壟斷。
隨后 Apache MXNet 、Caffe2、PyTorch 等主流深度學(xué)習(xí)框架,都對(duì) ONNX 實(shí)現(xiàn)了不同程度的支持,這方便了算法及模型在不同的框架之間的遷移。
AWS、Facebook 和微軟當(dāng)初
欲用?ONNX 一統(tǒng)框架江湖
而 ONNX 想打通學(xué)術(shù)界和產(chǎn)業(yè)界的愿景,實(shí)際上并沒有達(dá)到當(dāng)初的預(yù)期,各家框架依然用各自的服務(wù)體系,基本上只有 MXNet 和 PyTorch 深入到了 ONNX。
而如今,PyTorch 推出了自己的服務(wù)體系,ONNX 則近乎失去了存在的意義(MXNet 表示不知所措)。
另一方面,PyTorch 在不斷的升級(jí)更新之下,框架的兼容性和易用性,正在逼近甚至趕超最強(qiáng)勁的對(duì)手 TensorFlow。
雖然谷歌有自己的云服務(wù)和框架,但 AWS 的云資源和 Facebook 的框架體系聯(lián)合,強(qiáng)強(qiáng)聯(lián)手之下,恐怕谷歌也將難以招架。
而微軟已經(jīng)被曾經(jīng) ONNX 三人組的兩個(gè)小伙伴踢出群聊,下一步不知做何打算?
往期精彩回顧適合初學(xué)者入門人工智能的路線及資料下載機(jī)器學(xué)習(xí)在線手冊(cè)深度學(xué)習(xí)在線手冊(cè)AI基礎(chǔ)下載(pdf更新到25集)本站qq群1003271085,加入微信群請(qǐng)回復(fù)“加群”獲取一折本站知識(shí)星球優(yōu)惠券,復(fù)制鏈接直接打開:https://t.zsxq.com/yFQV7am喜歡文章,點(diǎn)個(gè)在看
總結(jié)
以上是生活随笔為你收集整理的PyTorch 1.5 发布,与 AWS 合作 TorchServe的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: YOLOv4重磅发布,五大改进,二十多项
- 下一篇: 【经验分享】计算机专业如何自己增加项目经