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

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

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

一.Spring框架和Spring AI概述

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

1.什么是 Spring AI?

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

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

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

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

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

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

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

二. 使用 Spring 的 AI/ML 管道

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

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

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 是一個強大的平臺,旨在創(chuàng)建和管理分布式 AI 和機器學習管道。它支持流處理(非常適合實時 AI 模型更新)和批處理(對于批量模型訓練等任務至關重要)。

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

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

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

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

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

YAML

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


在這個例子中:

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

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

捕獲log-sink并記錄預測結果。

三. 使用 Spring Boot 構建 AI 微服務

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

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

首先將 PyTorch 模型導出為torch.jit模型,專為生產用途而定制。

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

第 1 步:PyTorch 模型導出

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控制器調用Python腳本

我們可以在 Spring Boot REST API 中使用 Python 代碼調用導出的模型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);

}

}


這是一個簡單的設置,其中:

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

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

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

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

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

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是生產環(huán)境中實時監(jiān)控AI模型性能不可或缺的工具。該工具可以利用預定義和定制的指標來跟蹤關鍵的模型指標,包括響應時間、錯誤率和使用統(tǒng)計數(shù)據(jù)。它提供了有關人工智能模型的健康狀況和性能的寶貴見解,從而可以進行主動維護和優(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)建自定義指標來跟蹤模型每個版本的調用頻率。這些指標可以與Prometheus、Grafana等工具集成進行監(jiān)控。

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

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

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

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

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

關鍵字: 汽車 人工智能 智能驅動 BSP

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

關鍵字: 亞馬遜 解密 控制平面 BSP

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

關鍵字: 騰訊 編碼器 CPU

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

關鍵字: 華為 12nm EDA 半導體

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

關鍵字: 華為 12nm 手機 衛(wèi)星通信

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

關鍵字: 通信 BSP 電信運營商 數(shù)字經濟

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

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

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

關鍵字: BSP 信息技術
關閉