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视频首页| 亚洲中文字幕在线一区播放| 国产精品视频导航| 日韩精品一区二区三区swag| 国产农村1级毛片| AV在线天堂进入| 日韩中文欧美| 日本AⅤ精品一区二区三区日| 日韩在线视频网| 亚洲无码视频一区二区三区| 54pao国产成人免费视频| 国产大全韩国亚洲一区二区三区| 婷婷丁香色| 在线看片免费人成视久网下载| 国产精品99一区不卡| 欧美不卡二区| 一本大道在线一本久道| 婷婷亚洲综合五月天在线| 中国一级毛片免费观看| a毛片在线免费观看| 免费视频在线2021入口| 1769国产精品视频免费观看| 精品撒尿视频一区二区三区| 伊人成人在线| 久久综合色播五月男人的天堂| 免费A级毛片无码免费视频| 欧美日在线观看| 国产精品任我爽爆在线播放6080| 国产SUV精品一区二区6| 中国毛片网| 成人日韩欧美| 国产精品亚洲精品爽爽| 一级高清毛片免费a级高清毛片| 免费看的一级毛片| 黑色丝袜高跟国产在线91| 啦啦啦网站在线观看a毛片| 亚洲一区第一页| 亚卅精品无码久久毛片乌克兰| 国产丝袜丝视频在线观看| 亚洲 日韩 激情 无码 中出| 一级爆乳无码av| 国产第一页第二页| 免费精品一区二区h| 国产一级毛片yw| 精品国产成人国产在线| 国产菊爆视频在线观看| 国产丰满大乳无码免费播放| 日韩无码视频网站| 91久久偷偷做嫩草影院电| 日本不卡在线视频| 一级毛片a女人刺激视频免费| 亚洲三级视频在线观看| 亚洲色图欧美在线| 99在线国产| 欧美亚洲欧美区| 欧美国产中文| 四虎国产成人免费观看| 成人午夜久久| 亚洲无线视频| 国产美女丝袜高潮| 精品撒尿视频一区二区三区| a级免费视频| 亚洲人成网线在线播放va| 日韩专区欧美| 日韩欧美中文字幕在线韩免费 | 91色在线视频| 手机成人午夜在线视频| 99热这里只有精品国产99| 日韩免费毛片视频| 国产区人妖精品人妖精品视频| 2024av在线无码中文最新| 欧美午夜视频在线| 亚洲最猛黑人xxxx黑人猛交| 国产成人亚洲精品无码电影| 永久天堂网Av| 美女被狂躁www在线观看|