[목차]

 
■ 테스트 환경

몇일전에 구입한 머신러닝 개발 사용할수 있는 가속기 모듈인 구글 코랄(Coral)이 생각보다 빨리 도착해서 공식홈페이지에 있는 Doc 메뉴를 읽어보며 예제를 실행해보기로했습니다.  내용중에 USB타입 코랄 엑설러레이터의 경우 X86_64 환경 혹은 armv8 아키텍쳐 환경에서 예제를 실행할수 있다는 내용을 볼수 있었습니다.

아쉽게도 필자가 보유하고 있는 SBC(Single Board Compuer)들은 모두 armv7아키텍쳐의 프로세서가 탑재된것이라 가지고 있는SBC는 사용을 할수가 없었습니다. 하지만 리눅스 박스로 사용하고있는 저전력 컴퓨터는 구형이기는 하지만 Atom330과 E350프로세서를 탑재하고 있기때문에 X86_64환경을 충족하고 있었습니다. 일단 예제를 실행 시켜보기위해 Edge TPU 런타임 설치 및  예제 실행 명령어를 입력해보니 Illegal instruction 에러가 출력되고 (E350의 데비안에서는 Illegal instruction (core dumped)라고 출력되는군요) 실행이 되지 않았습니다. 

검색을해보니  텐서플로우 1.6 이상버전 부터는 CPU의 AVX명렁어가 사용되도록 빌드되어 CPU가 AVX를 지원하지 않을경우 Illegal instruction (core dumped) 에러를 띄운다는 내용을 찾을수 있었습니다. 정확히는 모르지만 edge TPU 런타임의 경우도 같은이유가 아닐까라는 추측하고 하고 명령어를 입력해 확인해보았습니다.

> grep avx /proc/cpuinfo 

확인을 위해 위의 명령를 입력해보니 atom330, E350 둘다 아무내용이도 출력되지 않는 것으로 보아 필자의 리눅스박스는 avx 명령어는 지원하지 않는 프로세서를 사용하고 있는 것이네요. 불필요한 삽질을 피하기 위해 armv8 환경이 지원되는 프로세서가 탑재된 라즈베리파이3 b+ 모델을 구입하였습니다.


■ Edge TPU 런타임 및 Python 라이브러리 설치

> wget http://storage.googleapis.com/cloud-iot-edge-pretrained-models/edgetpu_api.tar.gz
> tar xzf edgetpu_api.tar.gz
> cd python-tflite-source
> bash ./install.sh

Google Coral EdgeTPU 튜토리얼은 python 3.5버전 이상을 요구하고 있다고 합니다. 라즈베즈베리안의 파이썬3는 3.5버전이 이미 설치되어 있네요 다른 패키지를 설치할 필요 없이 예제 문서에 있는대로 설치 명령어를 입력하였습니다. 

라즈베리파이 b+에서는 특별한 경고나 오류 없이 잘설치가 되는것을 볼수 있었습니다. bash ./install.sh 를 입력하면 최대 동작 주파수를 사용할것이냐는 질의가 나오는데 최대 주파수의 동작의 경우 발열이 있다는 내용이 있어 일단은 N 을 선택하여 설치를 진행하였습니다. 

 예제 분류 모델 실행 

> cd edgetpu/
> python3 demo/classify_image.py --model  test_data/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite --label test_data/inat_bird_labels.txt --image test_data/parrot.jpg 

Get started with the USB Accelerator 튜토리얼에 나온대로 분류 모델 실행을 위해 문서에 명세된대로 위의 명령어를 입력해보았습니다. 

ERROR: Failed to retrieve TPU context
ERROR: Node number 0 (edgetpu-custom-op) failed to prepare 

에러가 출력되는군요 코랄 USB 가속기가 연결되지 않았다는 내용인데 설치하기전에 USB를 연결하고 설치 한것이 문제였나보네요 USB를 뽑았다 다시 연결하여 lsub명령어로 확인해보았더니 설치 스크립트 실행전에 는  Global Unichip Corp.  인식됬던 장치가 Google Inc. 장치로 변경된것을 확인하고 실행 명령어를 다시 입력해 보았습니다.

-------------------------------
Ara macao (Scarlet Macaw)

Score :  0.613281
-------------------------------
Platycercus elegans (Crimson Rosella)
Score :  0.152344

정상적으로 실행이 잘되는군요. Illegal instruction 에러로 인해 조금 당황하기도 했지만 공식홈의 시작하기 튜토리얼 따라해보며 구글 코랄(Coral) 인공지능 가속기를 사용한 분류 모델이 잘 동작하는 것을 확인할수 있었습니다.


- 2019.04.08 달의날에 프미케 -

+ Recent posts