Kafka +深度學習+ MQTT搭建可擴充套件的物聯網平臺【附原始碼】
問題導讀
1.本專案包含哪些原始碼?
2.本文使用了哪些框架?
3.KSQL UDF如何實現?
文中連結檢視,可點選:閱讀原文
物聯網+大資料+機器學習將會是以後的趨勢,這裡介紹一篇這方面的文章包含原始碼。
混合機器學習基礎架構構建了一個場景,利用Apache Kafka作為可擴充套件的中樞神經系統。 公共雲用於極大規模地訓練分析模型(例如,通過Google ML Engine在Google Cloud Platform(GCP)上使用TensorFlow和TPU,預測(即模型推斷)在本地Kafka基礎設施的執行( 例如,利用Kafka Streams或KSQL進行流分析)。
本文重點介紹內部部署。 建立了一個帶有KSQL UDF的
使用案例:Connected Cars - 使用深度學習的實時流分析
從連線裝置(本例中的汽車感測器)連續處理數百萬個事件:
為此構建了不同的分析模型。 他們在公共雲上接受TensorFlow,H2O和Google ML Engine的訓練。 模型建立不是此示例的重點。 最終模型已經可以投入生產,可以部署用於實時預測。
模型服務可以通過模型server 完成,也可以本地嵌入到流處理應用程式中。 參閱RPC與流處理的權衡,以獲得模型部署和....
演示:使用MQTT,Kafka和KSQL在Edge進行模型推理
Github專案:深度學習+KSQL UDF 用於流式異常檢測MQTT物聯網感測器資料
(下載原始碼: ksql-udf-deep-learning-mqtt-iot-master.zip )
該專案的重點是通過MQTT將資料提取到Kafka並通過KSQL處理資料:
Confluent MQTT Proxy的一大優勢是無需MQTT Broker即可實現物聯網方案的簡單性。 可以通過MQTT代理將訊息直接從MQTT裝置轉發到Kafka。 這顯著降低了工作量和成本。 如果你“只是”想要在Kafka和MQTT裝置之間進行通訊,這是一個完美的解決方案。
如果你想看到另一部分(與Elasticsearch / Grafana等接收器應用程式整合),請檢視Github專案“
KSQL UDF - 原始碼
開發UDF非常容易。 只需在UDF類中的一個Java方法中實現該函式:
[Bash shell] 純文字檢視 複製程式碼
?
1 | @Udf(description = "apply analytic model to sensor input" ) public String anomaly(String sensorinput){ "YOUR LOGIC" } |
這裡是所有程式碼:
[Java] 純文字檢視 複製程式碼
?
0102030405060708091011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 | package 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 model private 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 anomaly double mse = sum / p.original.length; System.out.println( "MSE: " + mse); String mseString = "" + mse; 相關推薦深度學習筆記——理論與推導之Structured Learning【Structured 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.0edi 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.21.(參考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+, |