偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

人工智能的實力:利用Docker簡化機器學習應用程序的部署和可擴展性

譯文
人工智能 機器學習
利用Docker的強大功能,可以簡化部署解決方案,確??蓴U展性,簡化機器學習模型的持續(xù)集成(CI)/持續(xù)交付(CD)流程。

譯者 | 李睿

審校 | 重樓

近年來,機器學習的應用出現(xiàn)了爆炸式增長,導致對健壯、可擴展和高效部署方法的需求快速增長。由于訓練和服務環(huán)境之間的差異或擴大規(guī)模的困難等因素,傳統(tǒng)方法通常需要幫助運營機器學習模型。

本文提出了一種使用Docker的技術(shù)。Docker是一個開源平臺,旨在自動化應用程序的部署、擴展和管理,以此來解決這些挑戰(zhàn)。所提出的方法將機器學習型及其環(huán)境封裝到一個標準化的Docker容器單元中。Docker容器提供了許多好處,包括開發(fā)和生產(chǎn)環(huán)境之間的一致性、易于擴展以及部署的簡單性。

本文對Docker及其在機器學習模型部署中的作用進行深入探討,并對使用Docker部署機器學習模型進行實際演示,從創(chuàng)建Dockerfile到使用Docker Swarm擴展模型,所有這些都以相關(guān)代碼片段為例。此外,還介紹Docker在持續(xù)集成(CI)/持續(xù)交付(CD)管道中的集成,最終得出使用Docker進行高效機器學習模型部署的結(jié)論和最佳實踐。

Docker是什么?

作為一個平臺,Docker在輕量級、可移植的容器中自動化軟件應用程序的部署、擴展和運營。Docker的基礎(chǔ)圍繞著“容器化”的概念。這種虛擬化方法允許將軟件及其整個運行時環(huán)境打包成一個用于軟件開發(fā)的標準化單元。

Docker容器封裝了應用程序運行所需的一切(包括庫、系統(tǒng)工具、代碼和運行時),并確保它在不同的計算環(huán)境中表現(xiàn)一致。這有助于快速可靠地構(gòu)建、測試和部署應用程序,使Docker成為軟件開發(fā)和運營(DevOps)的關(guān)鍵工具。

當談到機器學習應用程序時,Docker帶來了幾個優(yōu)勢。Docker的容器化特性確保了機器學習模型的訓練和服務環(huán)境之間的一致性,降低了由于環(huán)境差異而遇到差異的風險。Docker還簡化了擴展過程,允許在多個服務器上輕松部署機器學習模型的多個實例。這些特性具有顯著簡化機器學習模型部署和降低相關(guān)運營復雜性的潛力。

為什么要將機器學習應用程序Docker化?

在機器學習應用程序的背景下,Docker提供了許多好處,每一個都對運營效率和模型性能做出了重大貢獻。

首先,Docker容器提供的一致性環(huán)境確保了開發(fā)、測試和生產(chǎn)階段之間的差異最小化。這種一致性消除了“它工作在我的機器上”的問題,使其成為部署機器學習模型的首選,機器學習模型對其運營環(huán)境的變化特別敏感。

其次,Docker擅長于促進可擴展性。機器學習應用程序通常需要運行同一模型的多個實例來處理大量數(shù)據(jù)或高請求率。Docker通過允許快速高效地部署多個容器實例來實現(xiàn)水平擴展,使其成為擴展機器學習模型的有效解決方案。

最后,Docker容器是獨立運行的,這意味著它們有自己的運行時環(huán)境,包括系統(tǒng)庫和配置文件。這種隔離提供了額外的安全層,確保每個機器學習模型在受控和安全的環(huán)境中運行。Docker提供的一致性、可擴展性和隔離性使其成為部署機器學習應用程序的具有吸引力的平臺。

為機器學習設(shè)置Docker

以下重點介紹在機器學習應用程序中使用Docker所需的初始設(shè)置。由于操作系統(tǒng)不同,Docker的安裝過程略有不同。對于Linux發(fā)行版,Docker通常通過命令行界面安裝,而對于Windows和MacOS, Docker Desktop版本可用。在每種情況下,Docker網(wǎng)站都提供了簡單易懂的詳細安裝說明。通過從Docker Hub(一個基于云的注冊表服務,允許開發(fā)人員共享應用程序或庫)中提取Docker鏡像,安裝成功。作為示例,可以使用以下命令提取最新的Python圖像以用于機器學習應用程序:

Shell 
docker pull python:3.8-slim-buster

隨后,從提取的映像運行Docker容器涉及Docker run命令。例如,如果需要交互式Python shell,則可以使用以下命令:

Shell 
docker run -it python:3.8-slim-buster /bin/bash

該命令啟動一個帶有交互式終端(-it)的Docker容器,并在Python容器中提供一個shell (/bin/bash)。通過遵循這個過程,Docker可以有效地幫助部署機器學習模型。

為簡單的機器學習模型創(chuàng)建Dockerfile

Docker操作簡單性的核心是Dockerfile,它是一個文本文檔,包含了組裝Docker映像所需的所有命令。用戶可以通過Docker命令行執(zhí)行Dockerfile來自動創(chuàng)建鏡像。

Dockerfile由一組指令和參數(shù)組成,這些指令和參數(shù)以連續(xù)的行排列。指令是Docker命令,例如FROM(指定基本鏡像)、RUN(執(zhí)行命令)、COPY(將文件從主機復制到Docker鏡像)和CMD(為執(zhí)行容器提供默認值)。

以使用Scikit learn的線性回歸算法構(gòu)建的一個簡單的機器學習模型為例。此類應用程序的Dockerfile可能如下所示:

Dockerfile 
 # Use an official Python runtime as a parent image
 FROM python:3.8-slim-buster

 # Set the working directory in the container to /app
 WORKDIR /app

 # Copy the current directory contents into the container at /app
 ADD . /app

 # Install any needed packages specified in requirements.txt
 RUN pip install --no-cache-dir -r requirements.txt

 # Make port 80 available to the world outside this container
 EXPOSE 80



 # Run app.py when the container launches

 CMD ["python", "app.py"]

這個Dockerfile中提到的requirements.txt文件列出了機器學習模型的所有Python依賴項,例如Scikit-learn、Pandas和Flask。另一方面,app.py腳本包含加載經(jīng)過訓練的模型并將其用作Web應用程序的代碼。

通過在Dockerfile中定義配置和依賴關(guān)系,可以創(chuàng)建一個映像,其中包含機器學習模型及其執(zhí)行所需的運行時環(huán)境,從而促進一致的部署。

構(gòu)建和測試Docker鏡像

在成功創(chuàng)建Dockerfile之后,接下來的階段包括構(gòu)建Docker映像。通過執(zhí)行Docker build命令構(gòu)建Docker鏡像,然后執(zhí)行包含Docker文件的目錄。-t標志用指定的名稱標記圖像。這樣一個命令的實例是:

Shell 
 docker build -t ml_model_image:1.0 

在這里,ml_model_image:1.0是分配給圖像的名稱和版本,而“.”表示Dockerfile駐留在當前目錄中。

在構(gòu)建Docker鏡像之后,下面的任務涉及從該鏡像啟動Docker容器,從而允許測試機器學習模型的功能。Docker的run命令可以幫助完成這個任務:

Shell 
 docker run -p 4000:80 ml_model_image:1.0

在這個命令中,-p標志將主機的端口4000映射到容器的端口80(在Dockerfile中定義)。因此,機器學習模型可以通過主機的4000端口訪問。

測試模型需要向Docker容器中的Flask應用程序公開的端點發(fā)送一個請求。例如,如果模型基于POST請求發(fā)送的數(shù)據(jù)提供預測,curl命令可以促進這一點:

Shell 
 curl -d '{"data":[1, 2, 3, 4]}' -H 'Content-Type: application/json' http://localhost:4000/predict

該方法確保了從Dockerfile創(chuàng)建到在Docker容器中測試機器學習模型的無縫流程。

使用Docker部署機器學習模型

機器學習模型的部署通常涉及將模型公開為可通過互聯(lián)網(wǎng)訪問的服務。實現(xiàn)這一目標的標準方法是使用Web框架(如Flask)將模型作為REST API提供服務。

考慮一個Flask應用程序封裝機器學習模型的例子。以下的Python腳本演示了如何將模型作為REST API端點公開:

Python 
 from flask import Flask, request
 from sklearn.externals import joblib

 app = Flask(__name__)
 model = joblib.load('model.pkl')

 @app.route('/predict', methods=['POST'])

 def predict():
  data = request.get_json(force=True)
  prediction = model.predict([data['features']])
  return {'prediction': prediction.tolist()}

 if __name__ == '__main__':
 app.run(host='0.0.0.0', port=80)

在這個例子中,F(xiàn)lask應用程序加載了一個預訓練的Scikit-learn模型(保存為model.pkl),并定義了一個API端點/predict。當POST請求與包含特性數(shù)組的JSON對象一起發(fā)送到該端點時,模型進行預測并將其作為響應返回。

一旦機器學習模型被部署并在Docker容器中運行,它就可以使用HTTP請求進行通信。例如,使用curl命令,一個POST請求可以發(fā)送到一個特征數(shù)組的模型,它將響應一個預測:

Shell 
 curl -d '{"features":[1, 2, 3, 4]}' -H 'Content-Type: application/json'
 http://localhost:4000/predict

這個實例演示了Docker如何將機器學習模型部署為可擴展和可訪問的服務。

用Docker Swarm擴展器學習模型

隨著機器學習應用程序的范圍和用戶基礎(chǔ)的增長,擴展能力變得越來越重要。Docker Swarm為Docker提供了一個本地集群和編排解決方案,允許多個Docker主機變成一個虛擬主機。因此,Docker Swarm可以用于跨多臺機器管理和擴展部署的機器學習模型。

啟動Docker Swarm是一個簡單的過程,通過執(zhí)行“Docker Swarm init”命令開始。這個命令將當前機器初始化為Docker Swarm管理器:

Shell 
 docker swarm init --advertise-addr $(hostname -i)

在這個命令中,--advertise-addr標志指定工作節(jié)點可以到達Swarm管理器的地址。hostname-i命令檢索當前機器的IP地址。

在初始化Swarm之后,機器學習模型可以使用Docker服務跨Swarm部署。該服務是用docker service create命令創(chuàng)建的,其中像-replicas這樣的標志可以決定要運行的容器實例的數(shù)量:

Shell 
 docker service create --replicas 3 -p 4000:80 --name ml_service ml_model_image:1.0

在這個命令中,--replica 3確保容器的三個實例在Swarm中運行,-p 4000:80將Swarm的端口4000映射到容器的端口80,--name ml_service為服務分配一個名稱。

因此,通過實現(xiàn)Docker Swarm,部署的機器學習模型可以有效地跨多個Docker主機擴展,從而增強其可用性和性能。

采用Docker的持續(xù)集成(CI)/持續(xù)交付(CD)

持續(xù)集成(CI)/持續(xù)交付(CD)是現(xiàn)代軟件開發(fā)的一個重要方面,促進自動化測試和部署,以確保軟件發(fā)布周期的一致性和速度。Docker的可移植性很適合持續(xù)集成(CI)/持續(xù)交付(CD)管道,因為Docker映像可以在管道中的不同階段進行構(gòu)建、測試和部署。

一個將Docker集成到持續(xù)集成(CI)/持續(xù)交付(CD)管道中的例子可以用Jenkins管道來說明。管道在Jenkinsfile中定義,看起來像這樣:

Groovy 
 pipeline {
 agent any

 stages {
 stage('Build') {
 steps {
 script {
 sh 'docker build -t ml_model_image:1.0 .'
 }
 }
 }
 stage('Test') {
 steps {
 script {
 sh 'docker run -p 4000:80 ml_model_image:1.0'
 sh 'curl -d '{"features":[1, 2, 3, 4]}' -H 'Content-Type: application/json' http://localhost:4000/predict'
 }
 }
 }
 stage('Deploy') {
 steps {
 script {
 sh 'docker service create --replicas 3 -p 4000:80 --name ml_service ml_model_image:1.0'
 }
 }
 }
 }
 }

在這個Jenkinsfile中,構(gòu)建(Build)階段構(gòu)建Docker鏡像,測試(Test)階段運行Docker容器并向機器學習模型發(fā)送請求以驗證其功能,部署(Deploy)階段創(chuàng)建Docker服務并跨Docker Swarm進行擴展。

因此,借助Docker, 持續(xù)集成(CI)/持續(xù)交付(CD)管道可以實現(xiàn)可靠高效的機器學習模型部署。

結(jié)論和最佳實踐

最后,本文強調(diào)了Docker在簡化機器學習模型部署方面的功效。Docker能夠?qū)⒛P图捌湟蕾囮P(guān)系封裝在一個獨立的、一致的、輕量級的環(huán)境中,這使得Docker成為機器學習從業(yè)者的一個強大工具。通過Docker Swarm和它與持續(xù)集成(CI)/持續(xù)交付(CD)管道的無縫集成,Docker在跨多臺機器擴展機器學習模型的潛力進一步增強了它的價值。

然而,為了從Docker中獲取最大的價值,推薦以下最佳實踐:

  • 最小化Docker鏡像大?。狠^小的鏡像使用更少的磁盤空間,減少構(gòu)建時間,并加快部署。這可以通過使用更小的基本映像、刪除不必要的依賴以及有效地利用Docker的層緩存來實現(xiàn)。
  • 使用.dokerignore:與Git中的.gitignore類似,.dokerignORE可以防止Docker鏡像中包含不必要的文件,從而減小其大小。
  • 確保Dockerfiles是可復制的:在將來構(gòu)建Docker鏡像時,使用特定版本的基本鏡像和依賴可以防止意外的更改。

通過堅持這些指南并充分利用Docker的功能,在部署機器學習模型的復雜性中導航變得更加可行,從而加快了從開發(fā)到生產(chǎn)的路徑。

參考文獻

1.Docker Official Documentation. Docker, Inc.

2.Docker for Machine Learning. O'Reilly Media, Inc.

3. Continuous Integration with Docker. Jenkins Documentation.

4.Scikit-learn: Machine Learning in Python. Scikit-learn Developers.

5.Kalade, S., Crockett, L. H., & Stewart, R. (2018). Using Sequence to Sequence Learning for Digital BPSK and QPSK Demodulation.

6.Blog — Page 3 — Liran Tal.

7.Introduction to the Dockerfile Part II | by Hakim | Medium.

8.Spring Boot 2.2 with Java 13 CRUD REST API Tutorial: Using JPA Hibernate & MySQL | Techiediaries

原文標題:AI Prowess: Harnessing Docker for Streamlined Deployment and Scalability of Machine Learning Applications,作者:Rudrendu Kumar PaulBidyut Sarkar


責任編輯:華軒 來源: 51CTO
相關(guān)推薦

2009-04-16 17:53:09

SQL Server 應用程序擴展性

2015-01-06 09:59:59

云應用程序Java開發(fā)SQL

2020-10-31 21:53:02

機器學習人工智能AI

2021-09-02 09:42:11

測試軟件可擴展性開發(fā)

2021-12-09 05:36:16

云存儲可擴展性數(shù)據(jù)存儲云存儲

2017-01-05 19:29:10

公共云云存儲微軟

2023-10-11 13:46:26

緩存Web應用程序

2022-09-05 15:17:34

區(qū)塊鏈比特幣可擴展性

2023-05-29 15:58:25

機器學習人工智能

2025-07-11 10:23:34

2023-09-15 10:01:04

2024-10-10 14:01:34

2021-12-03 14:41:00

云存儲可擴展性存儲

2018-05-15 10:42:44

應用程序云計算開發(fā)

2025-04-09 08:14:03

2021-05-17 07:28:23

Spring可擴展性項目

2016-10-13 14:38:51

OpenStack可擴展性IT人員

2024-05-10 09:38:01

人工智能

2019-03-06 09:00:00

機器學習人工智能

2020-09-04 09:53:38

人工智能數(shù)據(jù)中心GPU
點贊
收藏

51CTO技術(shù)棧公眾號