- 뉴로모픽 아키텍처 기반 자율형 IoT 응용 통합개발환경
- (Integrated Development Environment for Autonomic IoT Applications based on Neuromorphic Architecture)
- Member : ISYSLAB - 김선민, 진선미, 이지영, 한병현, 최현웅
- ONNX, ONNX Runtime, Scikit-learn to ONNX 조사
- Protobuf 공부
- ONNX Runtime Version 1.0
- Scikit Learn으로 Model Training
- Skl2learn 이용하여 .ONNX Model Protobuf 형식으로 변환(Writing)
- Visualizing(by netron)
- Scikit-learn to .onnx 변환 내용추가
- Onnx Runtime (ORT) 조사 / Pytorch Training 기능, 다양한 플랫폼 등 에서 사용가능
- ONNX Runtime vs Scikit-learn Benchmarks 비교 (연산자 비교)
- ONNX Runtime 분석
-
ORT 조사 및 공부
-
지능형컴포넌트 레지스트리 (1) : Flask 기반의 ONNX 파일 관리 (웹 UI)
- 기능 3가지 : 파일 리스트 확인 / 파일 등록 (upload) / 파일 다운 (Download)
-
지능형컴포넌트 레지스트리 (2) : ONNX Log 관리
- 파일관리하면서 발생하는 Event 에 대한 Log 남기기
- (1) ONNX 파일 리스트 보기
- (2) ONNX 파일 Download 하기
- (3) ONNX 파일 Upload 하기
- (4) ONNX 파일 Netron 이용 시각화하기
- Python에 Netron 설치 후 python 코드 이용 cmd 명령어 실행 방식
- 결과 링크 : [https://github.com/neurom-iot/onnx-registry]
- (1) .onnx 파일 구조를 어떻게 읽어오는지 (key-value로 구성되어있는 protobuf를 어떻게 읽어오는지?)
- (2) 읽어온 후 ONNX-RUNTIME 추론시 onnx-runtime 클래스 중 어디를 참조하는지-아마 nodeArg)
- (1) Nengo-dl 사용법 공부 (API)
- (2) Nengo-dl 에서 Tensorflow를 이용한 LIF 작동 공부
- https://github.com/onnx/onnx/blob/master/docs/Operators-ml.md // onnx-ml operator
- https://github.com/onnx/tutorials // onnx tutorial
- https://github.com/onnx/sklearn-onnx // sklearn-onnx
- https://github.com/microsoft/onnxruntime/blob/master/docs/Versioning.md // onnxruntime, onnx version 호환
- https://github.com/microsoft/onnxruntime/blob/master/docs/AddingCustomOp.md // onnxruntime adding new operator
- https://github.com/microsoft/onnxruntime/releases/tag/v1.0.0 // onnx runtime 1.0 release
- https://www.nengo.ai/nengo-dl/examples/from-tensorflow.html // nengo-DL Tensorflow와 코드비교
- https://www.nengo.ai/nengo-dl/simulator.html // nengo-dl simulator서 data 확인
- https://www.nengo.ai/nengo-dl/reference.html // nengo-dl api document
- https://forum.nengo.ai/t/saving-the-model-after-training-in-nengo-core/1176/5 // nengo 모델 가중치 저장하고서, 불러와서 반영하는 법.
- https://github.com/PaddlePaddle/VisualDL#%E5%AE%89%E8%A3%85%E6%96%B9%E5%BC%8F // 바이두 paddle paddle
- (1) ONNX Runtime의 Inference 과정 (ONNX 연산자 호출 및 Load 과정)
- (2) Custom ONNX 연산자를 만들어서 추가하는 방법(protobuf로 감싸서 구조 정의하는 것과는 다름)
- (3) (09.10 회의 결론)
- ONNX Runtime 은 C API 를 참조하는 것으로 확인/ pybind_state.py, ONNXRuntime 1.0 github 파일 폴더에서 py 파일안에 C관련 API가 있음4
- pybind 로 연결시키는 것으로 파악.
- ONNX Runtime 에 SNN관련 자체 연산자를 추가하는 것은 불가로 판단
- (1) ONNX 레지스트리
- download, visualization 버튼 이동
- (case1) 목록 리스트 이름 클릭시 - 새로운 창 뜨고 download나 visualization
- (case2) 목록 리스트 안에 항목으로 download or visualization 버튼
- visualization 화면에서, 상대에 그래프 정보 관련 출력 (Visualization 화면 꾸미기)
- Prediction REST API
- download, visualization 버튼 이동
- (2) ONNX 모델 추론 시스템 구현
- 해당 ONNX 판별식(API) 짜기
- ML, DL / SNN 구분 API
- 각 모델 Type 따라 추론 시스템 구현
- SNN -> Nengo -> Nengo Simulator ==> 1차년도 Upgrade
- DL / ML -> ONNX Runtime ==> ONNX Runtime - run() 메소드 이용
- (1) ONNX 레지스트리
- download, visualization
- 추론 결과 반환하는 RESTFul API
- (2) 판별식 update
- 1차구분 : SNN 인지 아닌지 (SNN 일경우 Nengo 모델로 변환) - 활성화함수로 체크
- 2차구분 : SNN이 아닌경우 ML인지, DL인지 연산자 형태로 구분 - 연산자로 체크
- (3) .NPZ 파일 분석 및 Nengo 가중치 ONNX 삽입
- (1) ONNX 레지스트리 관리
- 메인기능 : Upload 기능, Download 기능, 목록 View 기능, 모델 Visualization 기능
- (2) ONNX 모델 판별법
- 판별기준 1차, 2차 정리 완료
- (3) .NPZ 파일 분석 및 Nengo <-> ONNX 모델 가중치 교환
- Keras 기반의 모델에 .npz 가중치 삽입 및 교환
- (4) Ksc 2020 논문 투고 완료(10.26)