개요
모교인 동의대학교의 응용소프트웨어공학과에서 졸업하기 위한 요건 중 졸업 프로젝트를 진행하게 되어 있다. 그래서 친구들과 함께 팀을 만들어 프로젝트를 진행하게 되었다. 프로젝트의 주제를 무엇으로 결정할지 토론을 통해 클라우드 노트북이란 주제로 결정하였다. 클라우드 노트북은 기존 노트북을 렌탈 및 대여 서비스에서 착안이 되었으며, 컴퓨터의 자원을 제공하는 클라우드와 실제 물건인 노트북을 엮어 노트북을 부팅 단계에서 클라우드에 접속하여 보안과 구독제 서비스를 뜻한다. 친구들과 함께 구현 난이도는 매우 높아 흥미로움과, 노트북을 직접 만들어 본다는 경험, 소프트웨어와 하드웨어를 함께 제작하여 성능을 최적화하는 것을 경험을 하게 되었다.
프로젝트의 목적성
주제 역시 원하는 것을 만들자란 목표로 구성이 되었다. 그래서 무엇을 만들지 결정한 뒤 클라우드 노트북을 구현하였을 때 가져오는 파장을 고민하게 되었다. 가장 대표적으로 주로 컴퓨팅 연산이 노트북에서 이뤄지지 않고 클라우드 환경에서 동작하며 그 결과를 가져와 출력만 하는 장치이므로 타 하드웨어적인 해킹이 어렵다 라는 장점이 있다.
최종 구현
구현 방식에 대해서 어떻게, 기존과 차별점을 두는지에 대해 토론을 진행하였다. Windows의 RDP는 벡터형식의 렌더링 방식이며, VNC는 이미지를 매번 압축(Jpeg, Mpeg 등)하여 통신하는 방식이다. 그래서 대부분 리눅스 환경에서 VNC의 RFB 프로토콜을 최대한 활용하면서, Super Resolution이나, Restoration 기능을 이용할 예정이다. 이러한 연산은 상당한 CPU와 GPU, 딥러닝 연산이 수행이 되므로, 필수적으로 NPU가 탑재된 시스템이 필요하다.
위의 이미지는 간단하게 구현할 최종 아키텍처이다. End User에서 Tinker Edge R과 Raspberry Pi가 존재하는데 이는 성능 분산처리 하기 위함이다. Tinker Edge R은 CPU, GPU(Mali), NPU(Asus)가 탑재된 보드이며, Raspberry PI 는 CPU, GPU(Video Core 6)가 탑재된 보드이다. 그래서 딥러닝 연산이 필요한 경우 Tinker Edge R에서 수행하고, 즉시적인 사용자 식별이 아닌, 지연이 필요한 경우 RPI4B를 사용 하도록 하였다.
Raspberry PI는 10초 또는 실시간으로 카메라로 센서 데이터를 수집 후, 내부적인 영상처리 또는 딥러닝을 통하여 사용자 식별을 거친다. 그리고 GPIO를 통해 Tinker Edge R 보드로 데이터를 전송한다.
Tinker Edge R은 GPU를 통해 RFB 프로토콜로 데이터를 받은 이미지 데이터를 변환하여 NPU에서 이미지 복원 및 향상한다. 또한 CPU에서 추가적인 내부 시스템 관리를 통해 하나의 보드에서 시스템을 수행하도록 한다.
추가적인 연구 방향
에트리에서 이기종 코어 구조에서 적합하지 않는 ArmCL을 최적화하여 성능을 약 1.5배 향상 시켰음을 이야기 드리니, 여러가지 임베디드 장비를 주섬주섬 꺼내주셨다. 그 중 하나가 Intel에서 만든 NCS2(Neural Compute Stick 2) 제품을 주시면서 여기에 신기한 보드가 많으니, 필요한게 있으면 언제든지 이야기를 하라고 하셨다. 그래서 NCS2와 Asus의 Rockchip NPU, ArmCL을 동시에 사용하여 딥러닝의 처리량을 증가시키는 연구를 할 예정이다.