當(dāng)前位置:首頁 > 物聯(lián)網(wǎng) > 智能應(yīng)用
[導(dǎo)讀]近年來,人工智能 (AI) 和機(jī)器學(xué)習(xí) (ML)技術(shù)在各行各業(yè)的采用大幅增加。 TensorFlow、PyTorch 和 Scikit-learn 等框架因其多功能性和魯棒性而成為人工智能開發(fā)的熱門選擇。然而,將人工智能無縫集成到企業(yè)級、生產(chǎn)就緒的應(yīng)用程序中提出了需要解決的獨特挑戰(zhàn)。

近年來,人工智能 (AI) 和機(jī)器學(xué)習(xí) (ML)技術(shù)在各行各業(yè)的采用大幅增加。 TensorFlow、PyTorch 和 Scikit-learn 等框架因其多功能性和魯棒性而成為人工智能開發(fā)的熱門選擇。然而,將人工智能無縫集成到企業(yè)級、生產(chǎn)就緒的應(yīng)用程序中提出了需要解決的獨特挑戰(zhàn)。

Spring是一種廣泛認(rèn)可的企業(yè)級框架,以其在構(gòu)建復(fù)雜應(yīng)用程序方面卓越的穩(wěn)健性、可擴(kuò)展性和靈活性而聞名。然而,問題出現(xiàn)了:Spring 能否有效滿足基于 AI/ML 的應(yīng)用程序的復(fù)雜需求?本文旨在探討 Spring 在 AI 領(lǐng)域的深度功能、它與 AI 庫的潛在集成,以及它在生產(chǎn)環(huán)境中有效管理 AI 工作流程的能力。

一.Spring框架和Spring AI概述

Spring 是一個著名的基于Java的框架,用于開發(fā)可擴(kuò)展、安全和模塊化的應(yīng)用程序。其關(guān)鍵組件包括 Spring Boot、Spring Cloud 和 Spring Data。

1.什么是 Spring AI?

雖然 Spring 框架本身沒有專用的 AI 庫,但事實證明,與強(qiáng)大的 AI/ML 框架結(jié)合使用時,它是開發(fā) AI 驅(qū)動系統(tǒng)的有效平臺。

Spring Boot 和 Spring Cloud 提供了部署 AI/ML 模型、管理 REST API 和編排微服務(wù)的基本功能,所有這些都是構(gòu)建和部署生產(chǎn)就緒的 AI 系統(tǒng)的關(guān)鍵組件。

2. Spring 在人工智能開發(fā)中的優(yōu)勢

可擴(kuò)展性:Spring 對構(gòu)建微服務(wù)的本機(jī)支持可實現(xiàn)輕松的水平擴(kuò)展,使 AI 應(yīng)用程序能夠在不影響性能的情況下處理增加的工作負(fù)載。

生產(chǎn) 就緒性:Spring 的穩(wěn)健設(shè)計專為管理高性能、分布式應(yīng)用程序而定制,確保生產(chǎn)環(huán)境中部署的 AI 應(yīng)用程序可靠、高效的運(yùn)行。

集成:Spring通過REST API或Java庫與基于Python的AI框架無縫集成,促進(jìn)AI系統(tǒng)不同組件之間的順暢通信和數(shù)據(jù)交換。

安全性:Spring Security 提供了全面的措施來保護(hù) AI 模型中的敏感數(shù)據(jù),為推薦系統(tǒng)中的用戶信息和預(yù)測模型中的醫(yī)療記錄提供保護(hù),從而確保 AI 應(yīng)用程序的完整性和機(jī)密性。

二. 使用 Spring 的 AI/ML 管道

1.將 TensorFlow/PyTorch 模型與 Spring Boot 集成

在人工智能開發(fā)領(lǐng)域,使用Python和TensorFlow或PyTorch等流行框架創(chuàng)建模型是一種普遍的做法。Spring Boot以其效率和可靠性而聞名,它作為將這些模型無縫集成到可擴(kuò)展、生產(chǎn)就緒的服務(wù)中的最佳框架:

Java

@RestController

@RequestMapping("/api/v1/predict")

public class PredictionController {

@PostMapping

public ResponseEntity<?> predict(@RequestBody InputData inputData) {

// Load the TensorFlow model

SavedModelBundle model = SavedModelBundle.load("/path/to/model", "serve");

Session session = model.session();

// Prepare input tensor

Tensor inputTensor = Tensor.create(inputData.getFeatures());

// Run the session to get predictions

Tensor result = session.runner().feed("input", inputTensor).fetch("output").run().get(0);

// Convert result tensor to expected output format

float[][] prediction = new float[1][1];

result.copyTo(prediction);

return ResponseEntity.ok(prediction[0][0]);

}

}


在此代碼中:

我們使用SavedModelBundle.

該Session對象處理 TensorFlow 計算。

Spring Boot 控制器公開一個用于推理的 REST 端點。

2.使用 Spring Cloud Data Flow 的分布式 ML 管道

Spring Cloud Data Flow 是一個強(qiáng)大的平臺,旨在創(chuàng)建和管理分布式 AI 和機(jī)器學(xué)習(xí)管道。它支持流處理(非常適合實時 AI 模型更新)和批處理(對于批量模型訓(xùn)練等任務(wù)至關(guān)重要)。

例如,使用 Spring Cloud Data Flow,您可以構(gòu)建一個管道來無縫處理流數(shù)據(jù)、應(yīng)用復(fù)雜的機(jī)器學(xué)習(xí)算法并為各種用例提供實時預(yù)測。

使用 Spring Cloud 的典型 ML 管道的組件

來源:收集實時數(shù)據(jù)(例如,用戶點擊、傳感器數(shù)據(jù))

處理器:將預(yù)先訓(xùn)練的模型應(yīng)用于數(shù)據(jù)

Sink:將預(yù)測發(fā)送回數(shù)據(jù)庫、UI 或外部系統(tǒng)

YAML

stream create real-time-ml --definition "http-source | ml-processor | log-sink" --deploy


在這個例子中:

攝取http-source流數(shù)據(jù)。

通過調(diào)用存儲在微服務(wù)中的模型來執(zhí)行ml-processor實時預(yù)測。

捕獲log-sink并記錄預(yù)測結(jié)果。

三. 使用 Spring Boot 構(gòu)建 AI 微服務(wù)

AI 模型通常需要部署為微服務(wù),以促進(jìn)可擴(kuò)展性和維護(hù)。 Spring Boot 是一個出色的框架,因為它能夠簡化 RESTful API 和微服務(wù)的開發(fā)。

例如,您可以利用 Spring Boot 將 PyTorch 模型部署為 REST API,盡管 PyTorch 是基于 Python 的框架。以下是該過程的詳細(xì)概述:

首先將 PyTorch 模型導(dǎo)出為torch.jit模型,專為生產(chǎn)用途而定制。

繼續(xù)利用 Spring Boot 托管 REST API,從而實現(xiàn)與 Python 代碼的無縫通信。

第 1 步:PyTorch 模型導(dǎo)出

Java

import torch

import torch.nn as nn

# Define and export the PyTorch model

class SimpleModel(nn.Module):

def __init__(self):

super(SimpleModel, self).__init__()

self.fc = nn.Linear(10, 1)

def forward(self, x):

return self.fc(x)

model = SimpleModel()

torch.jit.save(torch.jit.script(model), "model.pt")


步驟2:Spring Boot控制器調(diào)用Python腳本

我們可以在 Spring Boot REST API 中使用 Python 代碼調(diào)用導(dǎo)出的模型ProcessBuilder:

Java

@RestController

@RequestMapping("/api/v1/predict")

public class PyTorchPredictionController {

@PostMapping

public ResponseEntity<?> predict(@RequestBody InputData inputData) throws IOException {

ProcessBuilder processBuilder = new ProcessBuilder("python3", "/path/to/predict.py", inputData.toString());

Process process = processBuilder.start();

BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));

String prediction = reader.readLine();

return ResponseEntity.ok(prediction);

}

}


這是一個簡單的設(shè)置,其中:

POST 請求發(fā)送到控制器,控制器調(diào)用 Python 模型。

捕獲預(yù)測結(jié)果并將其發(fā)送回客戶端。

四.使用 Spring 進(jìn)行 AI 模型版本控制和監(jiān)控

1.使用 Spring Boot 管理多個模型版本

隨著人工智能 (AI) 模型的不斷發(fā)展,生產(chǎn)中多個版本的管理提出了重大挑戰(zhàn)。 Spring Boot 通過支持 RESTful 架構(gòu)來促進(jìn)這些版本的管理,從而提供了一種解決方案:

Java

@RestController

@RequestMapping("/api/v1/model/{version}")

public class ModelVersionController {

@PostMapping("/predict")

public ResponseEntity<?> predict(@PathVariable String version, @RequestBody InputData inputData) {

// Load model based on the version

String modelPath = "/models/model_" + version + ".pb";

SavedModelBundle model = SavedModelBundle.load(modelPath, "serve");

Session session = model.session();

// Perform inference

Tensor inputTensor = Tensor.create(inputData.getFeatures());

Tensor result = session.runner().feed("input", inputTensor).fetch("output").run().get(0);

// Convert result tensor to expected output format

float[][] prediction = new float[1][1];

result.copyTo(prediction);

return ResponseEntity.ok(prediction[0][0]);

}

}


2.使用彈簧執(zhí)行器監(jiān)控 AI 模型

Spring Actuator是生產(chǎn)環(huán)境中實時監(jiān)控AI模型性能不可或缺的工具。該工具可以利用預(yù)定義和定制的指標(biāo)來跟蹤關(guān)鍵的模型指標(biāo),包括響應(yīng)時間、錯誤率和使用統(tǒng)計數(shù)據(jù)。它提供了有關(guān)人工智能模型的健康狀況和性能的寶貴見解,從而可以進(jìn)行主動維護(hù)和優(yōu)化:

Java

@Component

public class ModelMetrics {

private final MeterRegistry meterRegistry;

@Autowired

public ModelMetrics(MeterRegistry meterRegistry) {

this.meterRegistry = meterRegistry;

meterRegistry.counter("model.requests", "version", "v1");

}

public void incrementModelRequests(String version) {

meterRegistry.counter("model.requests", "version", version).increment();

}

}


在此示例中,我們創(chuàng)建自定義指標(biāo)來跟蹤模型每個版本的調(diào)用頻率。這些指標(biāo)可以與Prometheus、Grafana等工具集成進(jìn)行監(jiān)控。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉