999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于微服務的深度學習模型服務系統

2021-05-29 05:37:58江寧遠張華熊
軟件工程 2021年5期

江寧遠 張華熊

摘? 要:Tensorflow Serving是Google開源的一個服務系統,針對Tensorflow Serving單體應用吞吐量低、服務調用煩瑣、模型生命周期管理不完善等問題,本文設計了一種基于Tensorflow Serving的微服務軟件架構方案,在部署Tensorflow Serving的Docker(開源的應用容器引擎)容器里添加本文研發的監控程序,該監控程序根據各個實例模型加載情況,將可用模型服務主動注冊到微服務架構中的注冊中心以實現對模型的編排管理。實驗結果表明:采用本文的微服務架構方案,有效提升了Tensorflow Serving服務的吞吐量,降低了服務響應時間,簡化了模型調用流程,從而滿足Tensorflow Serving在生產環境中部署和運維的實際需求。

關鍵詞:Tensorflow Serving;微服務;第三方注冊

中圖分類號:TP311? ? ?文獻標識碼:A

Deep Learning Model Service System based on Microservice

JIANG Ningyuan, ZHANG Huaxiong

(School of Information, Zhejiang Sci-Tech University, Hangzhou 310018, China)

240662137@qq.com; zhxhz@zstu.edu.cn

Abstract: Tensorflow Serving, an open source service system of Google, has problems of low throughput of Tensorflow Serving single application, cumbersome service invocation, and imperfect model lifecycle management. Aiming at these problems, this paper proposes to design a microservice software architecture solution based on Tensorflow Serving. Monitoring program developed in this research is added to Docker (open source application container engine) container where Tensorflow Serving is deployed. The monitoring program actively registers available model services to the registry of the microservice architecture according to loading status of each instance model, so to realize orchestration management of the model. Experimental results show that the proposed microservice architecture solution effectively improves throughput of Tensorflow Serving services, reduces service response time, and simplifies model invocation process. It can meet actual needs of Tensorflow Serving deployment, operation, and maintenance in production environment.

Keywords: Tensorflow Serving; microservice; third-party registration

1? ?引言(Introduction)

TensorFlow[1]是目前主流的開源機器學習[2]平臺,它擁有一個包含各種工具、庫和社區資源的全面靈活的生態系統。為解決神經網絡模型部署問題,TensorFlow推出在線原生模型服務系統Tensorflow Serving[3]。但隨著神經網絡的發展,網絡的深度逐漸加深,進行模型推理所需要的計算資源也在不斷擴大。在線上的生產環境中,往往需要對請求進行即時響應,Tensorflow Serving這種單體架構已經無法滿足企業對系統的需求,應當對其進行相應的架構調整。

微服務[4]是一種軟件架構風格,利用模組化的方式組合出復雜的大型應用程序。本文將Tensorflow Serving作為一個服務模塊嵌入微服務架構中,使可用模型服務主動注冊到微服務架構中的注冊中心。通過對模型的生命周期進行管理,使整個系統擁有更好的可擴展性、易維護性和資源隔離性。微服務架構下多實例化也能滿足高并發時的快速響應,大幅提高系統的性能。

2? ?相關技術簡介(Related technology introduction)

2.1? ?Tensorflow Serving簡介

2016年2月,TensorFlow團隊在GitHub開源一個名為“Tensorflow Serving”的項目。Tensorflow Serving是一種靈活、高性能的機器學習模型服務系統,適用于生產環境,通過GRPC或HTTP接口對外提供服務,HTTP接口如表1所示。Tensorflow Serving 使得Tensorflow深度學習模型開箱即用,也可以輕松擴展服務于其他類型的模型和數據。

Tensorflow Serving加載的標準模型格式為pb模型,pb模型文件實際上是使用了protocol buffer格式存儲的模型圖和模型參數文件。如圖1所示,pb模型文件可以保存整個網絡模型(計算圖+參數),并將所有的變量固化為常量。

此外,Tensorflow Serving可以通過配置文件自定義模型版本的加載策略,管理模型迭代。在部署方面,Tensorflow Serving可以使用apt二級制安裝、源碼編譯和Docker[5]容器(官方推薦)部署,支持調用CPU和NVIDIA GPU資源。

2.2? ?服務注冊和發現簡介

服務注冊和發現[6]是微服務架構運行的基礎。服務注冊通常是將服務提供者的網絡信息發送至注冊中心[7],而后服務消費者通過服務發現從注冊中心獲取部署服務提供者所在的網絡地址。在這一過程中,注冊中心需要支持服務動態上下線并能夠實時推送網絡信息列表的變化。注冊中心主要維護服務實例名稱及其相應的網絡地址信息,此外我們往往要對不健康或特定的實例進行篩選,那么注冊中心還需存儲實例的權重、健康狀態等數據。

自注冊和第三方注冊[8]是目前主要的兩種服務注冊方式。其中,自注冊是由服務實例本身負責在服務注冊表中注冊、注銷以及維持心跳。而在第三方注冊中,由一個第三方獨立的服務registrar通過輪詢部署環境或訂閱事件等方式去跟蹤運行中實例的變化,負責實例的注冊與注銷。

3? ?系統設計(System design)

3.1? ?系統設計原則

(1)擴展性。本系統是面向微服務設計的,開發的各組件需能夠獨立運行和部署,根據業務的需求,易于擴展,節省硬件成本。

(2)低開銷。嵌入原生Tensorflow Serving容器中的第三方監控收集數據的業務邏輯應當簡單,沒有復雜的依賴,對服務器資源占用也較少,對被監控對象的影響也要盡可能小。

(3)穩定性。在生產環境中,網絡的波動、模型版本的迭代會經常發生,系統需要保證模型服務的可用性、穩定性。

(4)時效性。當模型服務新上線或不可用時,需要及時更新模型注冊列表,確保模型服務能被成功調用。

3.2? ?系統總體設計

系統總體架構如圖2所示,Tensorflow Serving作為模型服務的提供者,在微服務架構中要被服務消費者調用,消費者需要從注冊中心獲取服務提供者的服務名、IP及端口等信息。本系統在部署了Tensorflow Serving的Docker端里構建了一個第三方監控程序,該監控程序將獲取Tensorflow Serving的IP、端口、成功加載的模型名及模型版本號。獲得這些信息后,監控程序通過HTTP接口以JSON的形式向注冊中心注冊模型信息。

模型注冊中心是整個系統中最基礎的組件,它維護各模型的信息,信息包括:模型名、模型版本號、模型健康狀態、模型服務IP地址及端口號等。其中模型健康狀態是由心跳檢測維持的,心跳的周期默認是5 s,若服務注冊中心在15 s內沒收到某實例的心跳信息,就將該實例設置為不健康;若在30 s內沒收到實例的心跳信息,就將該實例摘除。

如圖3所示,服務的調用可分為五個步驟:(1)第三方監控程序獲取成功被Tensorflow Serving加載的模型相關信息。(2)第三方監控程序向模型注冊中心進行模型注冊或注銷,并維持心跳。(3)模型注冊中心更新模型注冊表。(4)服務消費者從模型注冊中心獲取模型的調用地址信息。(5)服務消費者根據模型網絡地址,調用模型服務。

4? 系統實現及分析(System implementation and analysis)

4.1? ?監控程序實現

第三方監控程序基于Spring Boot開發,使用

@EnableSchedul開啟定時任務,實時監測Tensorflow Serving狀態的變化。通過Tensorflow Serving已有的HTTP接口獲取模型及其版本的狀態,監控流程如圖4所示。

(1)信息的獲取:通過Monitoring日志信息獲取Tensorflow Serving加載的模型名;再根據模型名,通過Model status API獲取該模型的狀態信息,如表2所示。

操作方式 API信息

范例輸入 查詢ResNet模型信息

訪問方式 GET

范例URL http://localhost:8501/v1/models/ResNet

范例輸出 {

"model_version_status":

{

"version": "1",

"state": "AVAILABLE",

"status": {

"error_code": "OK",

"error_message": ""

}

}

}

(2)分析:根據Model status API返回的信息,同監控程序本地模型表對比,判斷是否存在新增或異常的模型。

(3)執行:向模型注冊中心進行模型注冊或注銷,并更新監控程序本地模型表。

(4)此外,監控程序還需定時向注冊中心發送心跳信息。

4.2? ?模型注冊中心實現

模型注冊中心基于Nacos,Nacos是阿里巴巴在2018年7月發布的一個易于構建云原生應用的動態服務發現、配置管理和服務管理平臺。Nacos與當前主流微服務框架Spring Cloud和Dubbo緊密融合,可通過NacosSync與Zookeeper、Eureka、Consul等主流注冊中心進行數據同步。在Nacos中,以{ip#端口#集群名#分組名@服務名}設定一個實例ID,本文模型注冊中心使用{ip#端口#集群名#模型名@版本號}來確定一個模型實例。本系統實現的模型注冊中心界面如圖5所示。

4.3? ?Docker端改造

第三方監控程序需要和Tensorflow Serving在同一個Docker容器中運行,查閱Tensorflow Serving原生dockerfile文件,啟動命令為:

ENTRYPOINT ["/usr/bin/tf_serving_entrypoint.sh"]

那么只需在tf_serving_entrypoint.sh文檔中添加執行第三方監控程序的命令,如圖6所示。

4.4? ?實驗分析

為了評價第三方監控程序對原生Tensorflow Serving服務的性能影響,在進行監控和不進行監控的情況下對服務的平均響應時間、吞吐量進行對比,得出第三方監控程序本身的執行代價。服務器采用四臺物理機(操作系統Windows 7、Intel i5 4590@3.3 GHz CPU、8 GB內存、10 M/s帶寬),其中一臺作為消費者使用性能測試工具ContiPerf,另外三臺分別部署Docker容器并加載ResNet模型提供模型調用服務。實驗對單節點有監控和無監控、多節點負載均衡(采用三臺相同配置的節點,并使用本系統的模型注冊中心,采用輪詢的負載均衡調用方式發送請求)三種情況進行對比,記錄不同請求并發數下服務平均響應時間和服務吞吐量的數值,實驗結果如圖7和圖8所示。

由圖7和圖8可知,隨并發請求數的增加,模型服務的平均響應時間也逐漸增加,且兩者基本成正比的關系。對比單節點有監控和無監控情況下服務響應時間及吞吐量的關系,計算得出由第三方監控造成的服務響應延遲時間的代價為10—100 ms,對吞吐量幾乎不構成影響。同時當請求并發數達到20時,平均響應時間已達到1,000 ms,有明顯的響應延遲現象。當由1 個服務節點擴充至3 個服務節點并采用負載均衡的請求方式后,服務的吞吐量大幅提升,服務響應時間明顯下降。綜上所述,說明本文的基于微服務架構的深度學習模型服務系統在性能方面有明顯的優勢。

5? ?結論(Conclusion)

本文改造Tensorflow Serving原生Docker端,在Docker容器中以較小的侵入性添加第三方監控程序,并使用第三方注冊的模式同已有的微服務框架進行整合。仿真實驗結果表明,本文的基于微服務的深度學習模型服務系統設計,一定程度上簡化了模型的部署、調用;另一方面,實驗測試了多實例負載均衡的調用方式,實驗結果表明本文的設計符合高吞吐、高并發、高可用的性能要求。

參考文獻(References)

[1] 費寧,張浩然.TensorFlow架構與實現機制的研究[J].計算機技術與發展,2019,029(009):31-34.

[2] HAO X, ZHANG G, MA S. Deep learning[J]. International Journal of Semantic Computing, 2016, 10(03):417-439.

[3] OLSTON C, FIEDEL N, GOROVOY K, et al. TensorFlow-Serving: Flexible, high-performance ML serving[J/OL]. ArXiv Preprint ArXiv:1712.06139v2, 2017-12-27[2021-04-08]. https://arxiv.org/pdf/1712.06139.pdf.

[4] LARRUCEA X, SANTAMARIA I, COLOMO-PALACIOS R, et al. Microservices[J].IEEE Software, 2018, 35(3):96-100.

[5] 林躍,馮薇樺,孫源澤.基于Docker的容器虛擬化技術[J].中國新通信,2020,22(09):68.

[6] 段麗君.Web服務發現研究現狀分析[J].計算機科學與應用,2017,7(12):1270-1277.

[7] 張子龍,毛新軍,尹俊文,等.面向自主Web服務的注冊中心模型及其實現技術[J].計算機科學,2014,041(011):118-123.

[8] RICHARDSON C. Microservice patterns[M].Greenwich: Manning, 2017:80-85.

作者簡介:

江寧遠(1996-),男,碩士生.研究領域:軟件開發,信息研究.

張華熊(1971-),男,博士,教授.研究領域:軟件開發,信息研究.

主站蜘蛛池模板: 久草视频中文| 色综合综合网| 国产91小视频在线观看| a级毛片毛片免费观看久潮| 99久久精品免费视频| 成年A级毛片| 无码一区二区三区视频在线播放| 4虎影视国产在线观看精品| 成人免费午间影院在线观看| 精品综合久久久久久97超人该| 青青青伊人色综合久久| 91精品啪在线观看国产91| 婷婷亚洲视频| 国产swag在线观看| 久久香蕉国产线看观看式| 日本a∨在线观看| 色婷婷狠狠干| 中文字幕66页| 色悠久久久| 91视频国产高清| 国产第八页| 中文毛片无遮挡播放免费| 精品少妇人妻无码久久| 久久这里只有精品66| 亚洲九九视频| 91娇喘视频| 全午夜免费一级毛片| 欧美天天干| 亚洲日本中文综合在线| 色窝窝免费一区二区三区 | 国产清纯在线一区二区WWW| 天堂久久久久久中文字幕| 国产午夜福利片在线观看| 香蕉久久国产超碰青草| 中文字幕欧美成人免费| 国产精品无码AⅤ在线观看播放| 国产精品浪潮Av| 四虎永久免费在线| 一级全免费视频播放| 亚洲开心婷婷中文字幕| 国产成人a在线观看视频| 伊人大杳蕉中文无码| 国产精品吹潮在线观看中文| 国产精品成人第一区| 免费在线色| 日韩精品成人在线| 国产亚洲精| 国产亚洲精品91| 国产亚洲精品无码专| 波多野结衣视频一区二区| 国产一在线| 欧美人在线一区二区三区| 成人蜜桃网| 国产一线在线| 日韩精品一区二区三区免费| 亚洲欧美另类专区| 国产在线欧美| 在线欧美国产| 日韩成人在线一区二区| 波多野结衣在线se| 国产麻豆精品手机在线观看| 免费播放毛片| 亚洲国产成人久久77| 性喷潮久久久久久久久| 1769国产精品视频免费观看| 天天色综网| 久草青青在线视频| 国产精品网址在线观看你懂的| 国产在线小视频| 亚洲精品无码人妻无码| 性欧美精品xxxx| 欧美国产综合色视频| 99久久性生片| 日韩av在线直播| 伊人天堂网| 欧美综合激情| 日韩中文无码av超清 | 欧美日韩成人| 超碰精品无码一区二区| 超清无码熟妇人妻AV在线绿巨人| 在线欧美一区| 看av免费毛片手机播放|