---
# System prepended metadata

title: NCHC Open Hackathon
tags: [2023 NCHC Hackathon]

---

# NCHC Open Hackathon
## 研究題目
An CWT-CNN based AI Server for Arrhythmia Screening of real-Time Single-Lead ECG
基於  CWT-CNN (連續小波轉換卷積式神經網路) 的人工智慧伺服器，用於即時單導聯心電圖心律不整篩檢
## 研究遇到的挑戰及難題
現有演算法對每一個心跳皆會經過：1.預處理、2.連續小波轉換、3.CNN 推理。三個程序，但是在連續小波轉換所需的時間卻使得整個系統難以實現及時的心律不整篩檢。整個流程有八成的時間被用於連續小波轉換，為了實現即時的心律不整篩檢，有必要加速整個篩檢流程，其中佔了八成的連續小波環節式最優先需被加速的部分。
## 參與此次黑客松預計達成的目標
- 加速連續小波轉換 (CWT) 的運算
- 藉由加入同步處理及快速的運算流程來建造更穩定的伺服器系統
## 黑客松期間所嘗試的新演算法/或SDK/或加速等改善方法嘗試及過程
1. 先以線上現有的 pytorch 版 CWT (連續小波轉換) 的 source code 來改善單純用 python 撰寫的　CWT 函式 [souce code reference](https://github.com/tomrunia/PyTorchWavelets) 但是線上現成的 source code 不能完全符合我們對於連續小波轉換的需求，所以我們更改了 source code 將轉換頻率範圍限定在 4~40 Hz
2. 我們將 pytorch 版 CWT　寫死成為一個固定的 CNN 模型，並將模型嫁接在我們已經訓練好的 CNN 模型前，形成一個 CWT-CNN 模型。
3. 將 CWT-CNN 模型轉換成 tensorRT 推理引擎
4. 使用 triton server 管理模型，並能同步處理來自使用者的推理請求 
## 最後結果
使用 tensorRT 模型的 triton-server，達到穩定而顯著的加速。 在及時篩檢中，能達到平均五倍的加速。而若是在大型資料的篩檢　（一次篩檢好幾小時的心電圖訊號） 隨著資料量的增加，加速的幅度越大，在超過 1000 心跳的資料上，能加速超過 40 倍。
![acceleration](https://hackmd.io/_uploads/H12mtiLP6.png)
## 參加活動的感想/感言
在這次 Open Hackathon 活動中，團隊學習到很多 nvidia 加速工具的實際應用方法。 雖然 pytorch, tensorflow 等 frameworks 已經對模型的訓練或是推論有適度的優化，但是在實際使用時還是不夠快。但也不是使用 nvidia  工具就一定能加速，像是我們將模型轉換成 tensorRT 後，嘗試呼叫模型進行推理，但其速度反而比原初的方法還要慢。待我們將tensorRT 部屬在 triton server 後加速的效果才得以展現。 感謝活動主辦及給予幫助的 mentors, 本來看似遙不可及的系統離完成只剩咫尺之遙。
## 代表性的圖表 或 參考連結
- [Project source code](https://github.com/mn12you/wtmh_GUI)
- [Architecture diagram](https://github.com/mn12you/wtmh_GUI/blob/main/Present_PPT/WTMH6.png)
![image](https://hackmd.io/_uploads/Synv2jLD6.png)
- [Comparison graph](https://github.com/mn12you/wtmh_GUI/blob/main/Present_PPT/WTMH8.png)
![image](https://hackmd.io/_uploads/HkETnj8wp.png)


