国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

邵陽網(wǎng)站建設(shè)推廣域名權(quán)重

邵陽網(wǎng)站建設(shè)推廣,域名權(quán)重,電商推廣專員,個人建設(shè)視頻網(wǎng)站制作四、將 AI 項(xiàng)目容器化:示例實(shí)踐 - 完整的圖像分類與 API 服務(wù) 讓我們通過一個更完整的 AI 項(xiàng)目示例,展示如何將 AI 項(xiàng)目容器化。我們以一個基于 TensorFlow 的圖像分類模型為例,演示如何將訓(xùn)練、推理、以及 API 服務(wù)過程容器化。 4.1 創(chuàng)建 …

四、將 AI 項(xiàng)目容器化:示例實(shí)踐 - 完整的圖像分類與 API 服務(wù)

讓我們通過一個更完整的 AI 項(xiàng)目示例,展示如何將 AI 項(xiàng)目容器化。我們以一個基于 TensorFlow 的圖像分類模型為例,演示如何將訓(xùn)練、推理、以及 API 服務(wù)過程容器化。

4.1 創(chuàng)建 AI 項(xiàng)目文件

首先,創(chuàng)建一個 Python 項(xiàng)目目錄結(jié)構(gòu),包含以下文件:

/my-ai-project├── Dockerfile├── requirements.txt├── main.py├── model.py└── app.py
  • requirements.txt:列出項(xiàng)目的所有 Python 依賴。
tensorflow==2.6.0
numpy==1.19.5
matplotlib==3.4.3
flask==2.0.2
  • main.py:包含模型訓(xùn)練和保存的邏輯代碼。
import tensorflow as tf
from tensorflow.keras.datasets import mnist# 加載數(shù)據(jù)
(x_train, y_train), (x_test, y_test) = mnist.load_data()# 數(shù)據(jù)預(yù)處理
x_train = x_train / 255.0
x_test = x_test / 255.0# 構(gòu)建模型
model = tf.keras.Sequential([tf.keras.layers.Flatten(input_shape=(28, 28)),tf.keras.layers.Dense(128, activation='relu'),tf.keras.layers.Dropout(0.2),tf.keras.layers.Dense(10)
])# 編譯模型
model.compile(optimizer='adam', loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True), metrics=['accuracy'])# 訓(xùn)練模型
model.fit(x_train, y_train, epochs=5)# 評估模型
model.evaluate(x_test, y_test)# 保存模型
model.save('saved_model/my_model')
  • model.py: 包含模型加載和推理的邏輯。
import tensorflow as tf
import numpy as npdef load_model():model = tf.keras.models.load_model('saved_model/my_model')return modeldef predict(model, image):img_array = np.expand_dims(image, axis=0)predictions = model.predict(img_array)score = tf.nn.softmax(predictions[0])class_id = np.argmax(score)return class_id
  • app.py:使用 Flask 構(gòu)建一個簡單的 API 服務(wù),接收圖片進(jìn)行預(yù)測。
from flask import Flask, request, jsonify
import numpy as np
import tensorflow as tf
from model import load_model, predict
from PIL import Image
import ioapp = Flask(__name__)
model = load_model()@app.route('/predict', methods=['POST'])
def predict_api():if 'file' not in request.files:return jsonify({'error': 'No file part'}), 400file = request.files['file']if file.filename == '':return jsonify({'error': 'No selected file'}), 400try:img = Image.open(io.BytesIO(file.read())).convert('L').resize((28, 28)) # Convert to grayscale and resizeimg_array = np.array(img) / 255.0result = predict(model, img_array)return jsonify({'prediction': int(result)})except Exception as e:return jsonify({'error': str(e)}), 500if __name__ == '__main__':app.run(host='0.0.0.0', port=5000, debug=True)

4.2 創(chuàng)建 Dockerfile

接下來,創(chuàng)建一個優(yōu)化的 Dockerfile 來容器化這個項(xiàng)目,示例如下:

# 使用 TensorFlow 官方的 Python 3 鏡像作為基礎(chǔ)鏡像, 選擇更輕量級的版本
FROM tensorflow/tensorflow:2.6.0-py3# 設(shè)置工作目錄
WORKDIR /app# 復(fù)制 requirements.txt
COPY requirements.txt /app/# 安裝依賴, 使用 --no-cache-dir 減小鏡像大小
RUN pip install --no-cache-dir -r requirements.txt# 復(fù)制項(xiàng)目文件到容器中
COPY . /app# 暴露 API 服務(wù)的端口
EXPOSE 5000# 運(yùn)行訓(xùn)練腳本并保存模型
RUN python main.py# 啟動 API 服務(wù)
CMD ["python", "app.py"]

Dockerfile 優(yōu)化說明:

  • 基礎(chǔ)鏡像選擇: 使用 tensorflow/tensorflow:2.6.0-py3tensorflow/tensorflow:2.6.0 更輕量級。如果需要 GPU 支持,可以選擇 tensorflow/tensorflow:2.6.0-gpu-py3。
  • .dockerignore: 可以在項(xiàng)目根目錄下創(chuàng)建一個 .dockerignore 文件,排除不必要的文件或目錄被復(fù)制到鏡像中,例如:
.git
__pycache__
saved_model
  • 多階段構(gòu)建 (可選):如果你的項(xiàng)目需要編譯或其他構(gòu)建步驟,可以使用多階段構(gòu)建來減小最終鏡像大小。例如,先在一個包含完整構(gòu)建工具鏈的鏡像中構(gòu)建應(yīng)用,然后將構(gòu)建產(chǎn)物復(fù)制到一個更輕量級的運(yùn)行時鏡像中。

4.3 構(gòu)建并運(yùn)行 Docker 容器

  • 構(gòu)建鏡像:
docker build -t my-ai-tensorflow .
  • 啟動容器并運(yùn)行 API 服務(wù):
docker run -it -p 5000:5000 my-ai-tensorflow

-p 5000:5000 將容器的 5000 端口映射到主機(jī)的 5000 端口,這樣你就可以通過 http://localhost:5000 訪問 API 服務(wù)了。

4.4 測試 API 服務(wù)

在這里插入圖片描述

你可以使用 curl 或 Postman 等工具來測試 API 服務(wù)。例如,使用 curl 發(fā)送一個 POST 請求:

curl -X POST -F "file=@<your_image.png>" http://localhost:5000/predict

<your_image.png> 替換為你本地的一張 MNIST 手寫數(shù)字圖片。

五、使用 Docker Compose 編排多容器應(yīng)用 (可選)

如果你的 AI 項(xiàng)目需要多個容器協(xié)同工作,例如數(shù)據(jù)庫、Web 服務(wù)器、消息隊(duì)列等,可以使用 Docker Compose 來簡化多容器應(yīng)用的部署和管理。

創(chuàng)建一個 docker-compose.yml 文件,例如:

version: '3.8'
services:web:build: .ports:- "5000:5000"depends_on:- dbdb:image: postgres:13-alpineenvironment:- POSTGRES_PASSWORD=example

這個示例定義了兩個服務(wù):webdb。web 服務(wù)使用當(dāng)前目錄的 Dockerfile 構(gòu)建鏡像,并將容器的 5000 端口映射到主機(jī)的 5000 端口。db 服務(wù)使用 PostgreSQL 數(shù)據(jù)庫鏡像。

使用 docker-compose up 命令啟動所有服務(wù):

docker-compose up -d

-d 表示后臺運(yùn)行。

六、Docker 安全性最佳實(shí)踐 (簡要)

  • 使用非 root 用戶: 默認(rèn)情況下,容器內(nèi)的進(jìn)程以 root 用戶身份運(yùn)行。為了提高安全性,可以在 Dockerfile 中創(chuàng)建一個非 root 用戶,并使用 USER 指令切換到該用戶。
  • 限制容器資源: 使用 Docker 的資源限制功能(例如 --memory、--cpus)來限制容器可以使用的資源,防止容器耗盡主機(jī)資源。
  • 定期更新鏡像: 及時更新基礎(chǔ)鏡像和應(yīng)用程序依賴,修復(fù)已知的安全漏洞。
  • 最小化鏡像: 只安裝必要的軟件包,避免安裝不必要的組件,減小攻擊面。
  • 使用安全掃描工具: 使用 Clair、Anchore 等工具掃描鏡像中的安全漏洞。

七、總結(jié)

在本文中,我們介紹了如何使用 Docker 容器化 AI 項(xiàng)目。通過 Docker,我們能夠?qū)?AI 項(xiàng)目的環(huán)境和依賴打包成一個容器,從而簡化了項(xiàng)目的部署和管理。Docker 不僅提升了開發(fā)者的效率,還確保了項(xiàng)目在不同環(huán)境中的一致性。

最佳實(shí)踐

  • 保持鏡像簡潔:在 Dockerfile 中,盡量選擇合適的基礎(chǔ)鏡像,避免冗余的安裝和配置。
  • 多階段構(gòu)建:對于需要構(gòu)建和編譯的項(xiàng)目,可以使用 Docker 的多階段構(gòu)建來減少最終鏡像的體積。
  • 數(shù)據(jù)持久化:在生產(chǎn)環(huán)境中,確保使用 Docker 的數(shù)據(jù)卷(Volumes)來持久化數(shù)據(jù)。
  • 優(yōu)化鏡像大小:通過清理不必要的文件,減小鏡像的體積,提升部署效率。

附:Docker安裝流程圖:

在這里插入圖片描述

流程圖說明:

  1. 開始: 安裝流程開始。
  2. 選擇操作系統(tǒng): 根據(jù)你的操作系統(tǒng)選擇相應(yīng)的安裝步驟。
  3. Windows:
    • 訪問 Docker 官網(wǎng)下載 Docker Desktop for Windows。
    • 啟用 Hyper-V 或 WSL 2?: 選擇使用 Hyper-V 或 WSL 2 作為 Docker 的后端。
      • Hyper-V: 啟用 Hyper-V。
      • WSL 2 (推薦): 啟用 WSL 2 (性能更好)。
    • 雙擊安裝文件并按照向?qū)О惭b。
    • 啟動 Docker Desktop。
    • 驗(yàn)證安裝: docker --version。
  4. macOS:
    • 訪問 Docker 官網(wǎng)下載 Docker Desktop for macOS。
    • 雙擊 .dmg 文件并將 Docker 拖入應(yīng)用程序文件夾。
    • 啟動 Docker。
    • 驗(yàn)證安裝: docker --version
  5. Linux:
    • 選擇 Linux 發(fā)行版: 選擇你使用的 Linux 發(fā)行版 (Ubuntu 或 CentOS)。
    • Ubuntu:
      • sudo apt-get update
      • sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
      • curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
      • sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
      • sudo apt-get update
      • sudo apt-get install docker-ce
      • 驗(yàn)證安裝: docker --version。
    • CentOS:
      • sudo yum install -y yum-utils
      • sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
      • sudo yum install docker-ce
      • sudo systemctl start docker
      • sudo systemctl enable docker (設(shè)置開機(jī)自啟)
      • 驗(yàn)證安裝: docker --version。
  6. 安裝完成。

關(guān)鍵步驟說明:

  • WSL 2 和 Hyper-V (D, E, W) 使用不同的填充色,表示這是 Windows 安裝中兩個重要的選項(xiàng),WSL 2 通常是更好的選擇。
  • Ubuntu 和 CentOS 安裝步驟 分別使用藍(lán)色和橙色填充,方便區(qū)分不同發(fā)行版的安裝命令。

這個流程圖清晰地展示了在不同操作系統(tǒng)上安裝 Docker 的步驟,希望對你有所幫助!

附:AI 項(xiàng)目容器化流程圖:

以下是一個更詳細(xì)的、包含模型訓(xùn)練、API 服務(wù)構(gòu)建以及 Docker Compose 編排的 AI 項(xiàng)目容器化流程圖:
在這里插入圖片描述

流程圖說明:

  1. 開始: 項(xiàng)目開始。
  2. 準(zhǔn)備 AI 項(xiàng)目代碼: 準(zhǔn)備好包含模型訓(xùn)練、推理和 API 服務(wù) (例如 Flask 或 FastAPI) 的代碼。
  3. 創(chuàng)建 requirements.txt: 列出項(xiàng)目所有 Python 依賴。
  4. 項(xiàng)目是否需要多容器?: 判斷項(xiàng)目是否需要使用 Docker Compose。
    • : 創(chuàng)建 docker-compose.yml 文件,定義各個服務(wù)及其依賴關(guān)系。
    • : 繼續(xù)創(chuàng)建 Dockerfile。
  5. 創(chuàng)建 Dockerfile: 編寫 Dockerfile 文件。
  6. 選擇基礎(chǔ)鏡像 FROM: 根據(jù)項(xiàng)目需求選擇合適的基礎(chǔ)鏡像,例如 tensorflow/tensorflow:2.6.0-py3。
  7. 設(shè)置工作目錄 WORKDIR /app: 設(shè)置容器內(nèi)的工作目錄。
  8. 復(fù)制項(xiàng)目文件 COPY . /app: 將項(xiàng)目代碼復(fù)制到容器中。
  9. 安裝依賴 RUN pip install -r requirements.txt: 安裝 requirements.txt 中列出的依賴。
  10. 項(xiàng)目是否包含訓(xùn)練步驟?:
    • : RUN python main.py 執(zhí)行訓(xùn)練腳本并保存模型 (例如到 /app/saved_model 目錄)。
    • : 跳過訓(xùn)練步驟。
  11. 暴露端口 EXPOSE 5000: 如果有 API 服務(wù),暴露相應(yīng)的端口。
  12. 設(shè)置啟動命令 CMD [“python”, “app.py”]: 設(shè)置容器啟動時執(zhí)行的命令,例如啟動 API 服務(wù)。
  13. 構(gòu)建 Docker 鏡像 docker build -t my-ai-project .: 構(gòu)建 Docker 鏡像。
  14. 是否使用 Docker Compose?:
    • : 使用 docker-compose up -d 命令啟動所有服務(wù)。
    • : 使用 docker run -it -p 5000:5000 my-ai-project 命令運(yùn)行容器,-p 參數(shù)進(jìn)行端口映射。
  15. 訪問 API 服務(wù) 例如: http://localhost:5000: 通過映射的端口訪問 API 服務(wù)。
  16. 測試 API 服務(wù): 使用 curl 或 Postman 等工具測試 API。
  17. 部署到生產(chǎn)環(huán)境: 將構(gòu)建好的鏡像部署到生產(chǎn)環(huán)境 (例如 Kubernetes 集群)。
  18. 結(jié)束: 項(xiàng)目部署完成。

關(guān)鍵步驟說明:

  • 訓(xùn)練步驟 (J) 使用虛線邊框和不同的填充色,表示這是一個可選步驟,取決于項(xiàng)目中是否包含模型訓(xùn)練邏輯。
  • 使用 Docker Compose 啟動 (O) 和直接運(yùn)行容器 (Q) 使用不同的填充色,表示這是兩種不同的啟動方式。

這個流程圖更詳細(xì)地展示了 AI 項(xiàng)目容器化的各個步驟,并考慮了模型訓(xùn)練、API 服務(wù)構(gòu)建和 Docker Compose 編排等情況,希望能更好地幫助你理解整個流程。

點(diǎn)擊進(jìn)入:AI 項(xiàng)目實(shí)戰(zhàn):從原理到落地
點(diǎn)擊進(jìn)入:Docker 入門:如何使用 Docker 容器化 AI 項(xiàng)目(一)

本文為原創(chuàng)內(nèi)容,未經(jīng)許可不得轉(zhuǎn)載。

http://aloenet.com.cn/news/27996.html

相關(guān)文章:

  • 視頻網(wǎng)站的服務(wù)器建設(shè)百度熱搜榜小說排名
  • 委托網(wǎng)站建設(shè)注意什么個人如何推廣app
  • asp.net視頻網(wǎng)站模板下載站長網(wǎng)站工具
  • 產(chǎn)品宣傳類網(wǎng)站設(shè)計互聯(lián)網(wǎng)推廣公司靠譜嗎
  • php網(wǎng)站開發(fā)套模板步驟打開百度首頁
  • 查詢企業(yè)聯(lián)系方式的軟件亞馬遜排名seo
  • 影城網(wǎng)站建設(shè)濟(jì)南優(yōu)化網(wǎng)站關(guān)鍵詞
  • 臨安做企業(yè)網(wǎng)站搜索引擎營銷的方法
  • 湖北省網(wǎng)站建設(shè)杭州網(wǎng)站推廣優(yōu)化公司
  • 廣東住房和建設(shè)局網(wǎng)站百度付費(fèi)推廣有幾種方式
  • 互聯(lián)科技 行業(yè)網(wǎng)站軟文廣告是什么
  • wordpress必須登錄北京網(wǎng)站優(yōu)化seo
  • 做電子商務(wù)系統(tǒng)網(wǎng)站建設(shè)在線搭建網(wǎng)站
  • 價格低的車百度關(guān)鍵詞seo排名
  • 單頁面網(wǎng)站復(fù)制南寧seo主管
  • 商城網(wǎng)站源碼下載seo排名軟件有用嗎
  • 自學(xué)黑客編程入門優(yōu)化設(shè)計卷子答案
  • 上海服裝品牌網(wǎng)站建設(shè)seo課程培訓(xùn)班費(fèi)用
  • 房地產(chǎn)微網(wǎng)站模板西安關(guān)鍵詞推廣
  • 邯鄲網(wǎng)站設(shè)計申請搜索引擎排名營銷
  • 網(wǎng)站建站報價表什么軟件引流客源最快
  • 南京建行網(wǎng)站東莞seo優(yōu)化排名推廣
  • 工業(yè)網(wǎng)站素材廣告公司推廣軟文
  • 北京軟件開發(fā)公司怎么樣網(wǎng)站網(wǎng)頁的優(yōu)化方法
  • 企業(yè)信息網(wǎng)站模板網(wǎng)站策劃書怎么寫
  • 瀏覽網(wǎng)站手機(jī)響貴陽seo網(wǎng)站推廣
  • 建設(shè)一個網(wǎng)站需要的空間有哪些方法病毒式營銷方法
  • 做外匯網(wǎng)站短視頻seo詢盤獲客系統(tǒng)軟件
  • 網(wǎng)站備案回訪電話號碼全文搜索引擎有哪些
  • 珠海網(wǎng)站優(yōu)化公司百度搜索官網(wǎng)