1. 程式人生 > >Kafka +深度學習+ MQTT搭建可擴充套件的物聯網平臺【附原始碼】

Kafka +深度學習+ MQTT搭建可擴充套件的物聯網平臺【附原始碼】

問題導讀

1.本專案包含哪些原始碼?
2.本文使用了哪些框架?
3.KSQL UDF如何實現?

640?wx_fmt=png

文中連結檢視,可點選:閱讀原文

物聯網+大資料+機器學習將會是以後的趨勢,這裡介紹一篇這方面的文章包含原始碼。

混合機器學習基礎架構構建了一個場景,利用Apache Kafka作為可擴充套件的中樞神經系統。 公共雲用於極大規模地訓練分析模型(例如,通過Google ML Engine在Google Cloud Platform(GCP)上使用TensorFlow和TPU,預測(即模型推斷)在本地Kafka基礎設施的執行( 例如,利用Kafka Streams或KSQL進行流分析)。

本文重點介紹內部部署。 建立了一個帶有KSQL UDF的

Github專案,用於感測器分析。 它利用KSQL的新API功能,使用Java輕鬆構建UDF / UDAF函式,對傳入事件進行連續流處理。


使用案例:Connected Cars - 使用深度學習的實時流分析

從連線裝置(本例中的汽車感測器)連續處理數百萬個事件:
640?wx_fmt=png

為此構建了不同的分析模型。 他們在公共雲上接受TensorFlow,H2O和Google ML Engine的訓練。 模型建立不是此示例的重點。 最終模型已經可以投入生產,可以部署用於實時預測。

模型服務可以通過模型server 完成,也可以本地嵌入到流處理應用程式中。 參閱RPC與流處理的權衡,以獲得模型部署和....


演示:使用MQTT,Kafka和KSQL在Edge進行模型推理


Github專案:深度學習+KSQL UDF 用於流式異常檢測MQTT物聯網感測器資料
(下載原始碼: 
640?wx_fmt=gif ksql-udf-deep-learning-mqtt-iot-master.zip (474.64 KB, 下載次數: 0) 
該專案的重點是通過MQTT將資料提取到Kafka並通過KSQL處理資料:

640?wx_fmt=png

Confluent MQTT Proxy的一大優勢是無需MQTT Broker即可實現物聯網方案的簡單性。 可以通過MQTT代理將訊息直接從MQTT裝置轉發到Kafka。 這顯著降低了工作量和成本。 如果你“只是”想要在Kafka和MQTT裝置之間進行通訊,這是一個完美的解決方案。

如果你想看到另一部分(與Elasticsearch / Grafana等接收器應用程式整合),請檢視Github專案“
KSQL for streaming IoT data”。 這實現了通過Kafka Connect和Elastic聯結器與ElasticSearch和Grafana的整合。(原始碼下載:連結: https://pan.baidu.com/s/1FCFgAoF9v1ihp9fyqHeKag 密碼: 67sz)

KSQL UDF - 原始碼

開發UDF非常容易。 只需在UDF類中的一個Java方法中實現該函式:

[Bash shell] 純文字檢視 複製程式碼

?

1@Udf(description = "apply analytic model to sensor input")             public String anomaly(String sensorinput){ "YOUR LOGIC" }


這裡是所有程式碼:

[Java] 純文字檢視 複製程式碼

?

0102030405060708091011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980package com.github.megachucky.kafka.streams.machinelearning;import java.util.Arrays;import hex.genmodel.GenModel;import hex.genmodel.easy.EasyPredictModelWrapper;import hex.genmodel.easy.RowData;import hex.genmodel.easy.exception.PredictException;import hex.genmodel.easy.prediction.AutoEncoderModelPrediction;import io.confluent.ksql.function.udf.Udf;import io.confluent.ksql.function.udf.UdfDescription;@UdfDescription(name = "anomaly", description = "anomaly detection using deep learning")public class Anomaly {// Model built with H2O R API:// anomaly_model <- h2o.deeplearning(x = names(train_ecg),training_frame =// train_ecg,activation = "Tanh",autoencoder = TRUE,hidden =// c(50,20,50),sparse = TRUE,l1 = 1e-4,epochs = 100)// Name of the generated H2O modelprivate static String modelClassName = "io.confluent.ksql.function.udf.ml"+ ".DeepLearning_model_R_1509973865970_1"; @Udf(description = "apply analytic model to sensor input")public String anomaly(String sensorinput) {System.out.println("Kai: DL-UDF starting");GenModel rawModel;try {rawModel = (hex.genmodel.GenModel) Class.forName(modelClassName).newInstance();EasyPredictModelWrapper model = new EasyPredictModelWrapper(rawModel);// Prepare input sensor data to be in correct data format for the autoencoder model (double[]):String[] inputStringArray = sensorinput.split("#");double[] doubleValues = Arrays.stream(inputStringArray).mapToDouble(Double::parseDouble).toArray();RowData row = new RowData();int j = 0;for (String colName : rawModel.getNames()) {row.put(colName, doubleValues[j]);j++;}AutoEncoderModelPrediction p = model.predictAutoEncoder(row);// System.out.println("original: " + java.util.Arrays.toString(p.original));// System.out.println("reconstructedrowData: " + p.reconstructedRowData);// System.out.println("reconstructed: " + java.util.Arrays.toString(p.reconstructed));double sum = 0;for (int i = 0; i < p.original.length; i++) {sum += (p.original[i] - p.reconstructed[i]) * (p.original[i] - p.reconstructed[i]);}// Calculate Mean Square Error => High reconstruction error means anomalydouble mse = sum / p.original.length;System.out.println("MSE: " + mse);String mseString = "" + mse;

相關推薦

深度學習筆記——理論與推導之Structured LearningStructured SVM(七)

Separable case 1. 定義: 2. 用來計算weight的Structured Perceptron演演算法: 那麼面對很多個y,是否可以順利在有限次內找到weight呢?答案是可以的,況且只需要(R/δ)^2次,R是同一個x

快速搭建自己的聯網平臺,zigbee協議(不會控制你的聯網系統)

從事物聯網的研發已經走過第9個年頭了,見證著這個行業的衰興歷程,近2年國內搞物聯網平臺的不少,但是都很“小家子氣”,總想獨吞大餅。產品做得不夠開放,標準制定上沒有體系。動不動什麼 阿里生態鏈,小米生態鏈,京東生態圈之類,說到底他們就是想著怎麼控制你呢! 我們就不一樣,我們

精選9個值得學習的 HTML5 效果原始碼

  HTML5 規範引進了很多新特性,其中最令人期待的之一就是 Canvas 元素,HTML5 Canvas 提供了通過 JavaScript 繪製圖形的方法,非常強大。下面給大家分享一個 HTML5 Canvas 繪製的 3D 布料圖案效果。 (adsbygoogle = wi

Ubuntu深度學習環境搭建 tensorflow+pytorch

源安裝 class x86 port ORC 鏈接庫 mon latest news 目前電腦配置:Ubuntu 16.04 + GTX1080顯卡 配置深度學習環境,利用清華源安裝一個miniconda環境是非常好的選擇。尤其是今天發現conda install -c m

深度學習環境搭建:Tensorflow1.4.0+Ubuntu16.04+Python3.5+Cuda8.0+Cudnn6.0

edi tensor pkgs strong www url 輸出 軟鏈接 5.0 目錄 深度學習環境搭建:Tensorflow1.4.0+Ubuntu16.04+Python3.5+Cuda8.0+Cudnn6.0 Reference 硬件說明: 軟件準備: 1. 安

Ubuntu16.04系統GPU深度學習環境搭建

安裝Ubuntu16.04.5系統 安裝過程就不詳述了。 安裝NVIDIA1080Ti顯示卡驅動 ll /etc/modprobe.d/blacklist.conf sudo chmod 666 /etc/modprobe.d/blacklist.conf sudo vi

ubuntu16 深度學習環境搭建步驟

egl RKE 編程 支持 source ogl 瀏覽器 oot 文件夾 在安裝ubuntu之前需要條一下BIOS,講UEFI模式改為Legacy 模式。 ubuntu分區系統搭建可以參考一下博客: 分區大小為: boot 400~500M swap 內存大小 主分區 &

深度學習caffe搭建

經過一個月的時間,從開始接觸深度學習到環境搭建終於成功了! 發表第一篇部落格 慶祝一下   按照21天實戰caffe 進行架構搭建出現的錯誤大致的解決辦法, Ubuntu用的是14.04 在進行依賴包glog下載 由於google的限制需要翻牆很麻煩 我直接在CSDN裡下載的依

TX2 深度學習環境搭建記錄cmake從3.5升級到3.7.2

1.(參考https://askubuntu.com/questions/355565/how-do-i-install-the-latest-version-of-cmake-from-the-command-line/865294#865294) The most common situat

系統安裝情況以及深度學習環境搭建

1.戴爾AL安裝Ubuntu16.04問題總結 1).找不到固態硬碟 由於dell電腦的出廠設定,在BIOS裡面都統一把硬碟模式設為RAID ON,但這種模式下可能會導致不能正確識別或者完全發揮處SSD的效能。下面是把RAID模式更改位AHCI的方法。 進入wins之後,按下WIN鍵+R鍵,輸入msco

[work] 最爽的GPU深度學習環境搭建教程

背景介紹 GPU 在以下方面有別於 CPU: CPU和GPU之所以大不相同,是由於其設計目標的不同,它們分別針對了兩種不同的應用場景。CPU需要很強的通用性來處理各種不同的資料型別,同時邏輯判斷又會引入大量的分支、跳轉和中斷的處理。這些都使得CPU的內部結構異常複雜。而GPU面對的則是

ubuntu18.04+RTX2080深度學習環境搭建

搭建環境弄了半天,主要是因為各個環境版本號的問題輾轉騰挪了很久,再次記錄一下最終成功run起來的軟硬體版本號: cpu 8700K,gpu rtx2080 ubuntu 18.04 64位 gcc g++版本調整為7.3(ubuntu18.04的自帶版本) NVIDIA驅

深度學習環境搭建ubuntu16.04_cuda_8.0_cudnn.6.0_anaconda3- 5.01_python3.6_tensorflow_gpu1.4_pycharm2018

本教程簡單粗暴,後期詳細更新….------------------------------------------------------by 麒麟御史 軟體準備: 第一步:安裝ubuntu系統 軟碟通製作U盤安裝Ubuntu 1. 製作U盤安裝 2

深度學習Ubuntu下CUDA+ cuDNN + TensorFlow/TensorLayer 深度學習環境搭建

文章目錄 概述 安裝Anaconda並建立環境 安裝CUDA和cuDNN 下載安裝CUDA 下載安裝cuDNN 安裝TensorFlow和TensorLayer 檢查安裝結果

深度學習windows 10下CUDA+ cuDNN + MXNet/TensorFlow/TensorLayer 深度學習環境搭建

文章目錄 關於版本 環境 版本相容關係 搭建過程 安裝Anocanda 安裝CUDA和cuDNN 建立虛擬環境並安裝NXNet 安裝TensorFlow和Te

保姆級教程——Ubuntu16.04 Server下深度學習環境搭建:安裝CUDA8.0,cuDNN6.0,Bazel0.5.4,原始碼編譯安裝TensorFlow1.4.0(GPU版)

寫在前面 本文敘述了在Ubuntu16.04 Server下安裝CUDA8.0,cuDNN6.0以及原始碼編譯安裝TensorFlow1.4.0(GPU版)的親身經歷,包括遇到的問題及解決辦法,也有一些自己的經驗,希望能對讀者有所幫助。期間參考了許多前人的文章,後文會一一附上鍊接,在此先行謝過。在下能力有限,

Facebook開源Caffe2深度學習框架 開發者快速訓練和迭代AI模型

在Facebook與NVIDIA的合作中,工程師基於NVIDIA的GPU平臺深度優化了Caffe2。Caffe2深度學習框架中採用最新的NVIDIA深度學習SDK庫(cuDNN,cuBLAS和NCCL)來提供高效能運算,多GPU加速的訓練以及推理。由於Caffe2在NVIDIA GPU的平臺上的優異表現,使用

Win10+RTX2080深度學習環境搭建:tensorflow、mxnet、pytorch、caffe

目錄 準備工作 設定conda國內映象源 conda 深度學習環境 tensorflow、mxnet、pytorch安裝 tensorflow mxnet pytorch Caffe安裝 配置檔案修改 編譯時常見錯誤

深度學習環境搭建第一步----Ubuntu 安裝(win7 + win10)

一、Win7 裝  Ubuntu 1. 下載,四個版本,區分32和64位,優麒麟 16.04 LTS(長期支援)版本 2. UltraISO軟體 燒錄U盤啟動 3. 壓縮磁碟,2中包含-----壓縮映象的時候包含設定引導用來開機選擇進入系統-------沒用到easybcd 其中選擇zip+,