성능 프로파일링은 구글 팀에 따르면 OpenCL 백엔드 최적화는 OpenGL보다 훨씬 쉽다. 이는 OpenCL이 탁월한 프로파일링 기능을 제공하고 이러한 프로파일링 API를 통해 개발자가 이제 각 커널 디스패치의 성능을 매우 정확하게 측정 할 수 있기 때문이다.

안드로이드 용 OpenCL 기반 모바일 GPU 추론 엔진 발표(사진:구글)

구글이 안드로이드 용 OpenCL(Open Computing Language) 기반 모바일 GPU 추론 엔진을 지난 17일(현지시간) 발표했다. 이 엔진은 GPU를 위한 충분한 워크로드를 포함하는 신경망에서 OpenGL 백엔드 보다 최대 2 배 빠른 속도를 제공한다,

이 GPU 추론 엔진은 현재 최신 버전의 텐서플로라이트(TensorFlow Lite, TFLite) 에서 사용할 수 있다.

Duo의 AR 효과는 OpenCL 백엔드에 의해 구동된다.(사진:구글)
Duo의 AR 효과는 OpenCL 백엔드에 의해 구동된다.(사진:구글)

OpenCL 또는 OpenGL(Open Graphics Library)은 클라이언트 응용 프로그램이 이 시스템을 제어할 수 있는 벡터 그래픽 렌더링을 위해 설계된 API로 프로그래머가 그래픽 하드웨어와 통신할 수 있도록 하는 인기 있는 소프트웨어 인터페이스다. OpenGL은 기본적으로 그래픽 프로그래밍에 사용되며 그래픽 작업을 수행하기 위해 프로그램을 작성할 수 있다. OpenGL 렌더링 시스템은 하드웨어 구현이 허용되도록 신중하게 지정된다.

또한 슈퍼컴퓨터, 클라우드 서버, 개인용 컴퓨터, 모바일 장치 및 임베디드 플랫폼에서 볼 수 있는 다양한 가속기의 교차 플랫폼 병렬 프로그래밍을 위한 로열티가 없는 개방형 표준이다. 이 개방형 표준은 전문적인 창작 도구, 비전 처리, 신경망 교육, 추론 등과 같은 여러 시장 범주에서 광범위한 응용 프로그램의 속도와 응답성을 향상시키는 데 도움이 된다.

텐서플로 라이트 GPU팀에 따르면 기존 OpenGL 기반 모바일 GPU 추론 엔진을 개선한 것 외에도 다른 기술을 지속적으로 조사하고 실험하고 있다. OpenCL 기반 모바일 GPU 추론 엔진이 빛을 발하는 대목이다.

연구팀은 GPU를 범용 작업에 사용하기 위해 OpenGL 컴퓨팅 셰이더를 사용해 왔다. 컴퓨팅 셰이더는 렌더링을 수행할 수 있는 셰이더 단계로, 컴퓨팅 셰이더가 작동하는 공간은 대부분 추상적이다. 즉, 각 컴퓨팅 셰이더에 따라 공간이 무엇을 의미하는지 결정한다.

OpenCL을 사용하는 일부 Android 장치에서 MNASNet 1.3의 추론 지연 시간
OpenCL을 사용하는 일부 Android 장치에서 MNASNet 1.3의 추론 지연 시간

 구글 연구팀에 따르면 컴퓨팅 셰이더는 OpenGL ES 3.1 버전으로 추가됐지만, 역호환 API 설계 결정으로 GPU의 잠재력을 최대한 발휘하지 못하고 있었다. OpenCL은 처음부터 다양한 가속기와의 연산을 위해 설계되었으며 따라서 모바일 GPU 추론 영역과 더 관련이 있다. 그들은 OpenCL 기반 추론 엔진을 실험하고 조사했다고 발다. 개발자가 모바일 GPU 추론 엔진을 최적화하도록 하는 직관적인 기능을 많이 도입했다.

OpenCL을 사용하는 일부 Android 장치에서 SSD MobileNet v3 (대형)의 추론 지연 시간
OpenCL을 사용하는 일부 Android 장치에서 SSD MobileNet v3 (대형)의 추론 지연 시간

특히 OpenCL에는 OpenGL 백엔드에 비해 현저하게 개선된 많은 직관적인 기능이 있다. 먼저 성능 프로파일링은 구글 팀에 따르면 OpenCL 백엔드 최적화는 OpenGL보다 훨씬 쉽다. 이는 OpenCL이 탁월한 프로파일링 기능을 제공하고 이러한 프로파일링 API를 통해 개발자가 이제 각 커널 디스패치의 성능을 매우 정확하게 측정 할 수 있기 때문이다.

또한 퀄컴 Adreno GPU에서 TFLite GPU의 성능이 작업 그룹 크기에 매우 민감하다는 것을 확인했다. 올바른 작업 그룹 크기를 선택하면 성능이 향상 될 수 있으며 잘못된 작업 그룹을 선택하면 성능이 동일한 수준으로 저하될 수 있다. OpenCL의 성능 프로파일링 기능 덕분에 개발자는 이제 작업 그룹 크기에 대한 최적화 프로그램을 구현할 수 있다. 그 결과 평균 구현에 비해 최대 50 % 속도가 향상되었다.

OpenCL 백엔드는 기본적으로 16 비트 정밀 부동 소수점(FP16) 유지한다. 데이터 유형의 가용성을 정의하려면 가속기가 필요하다. 구글에 따르면 OpenCL을 사용하면 일부 구형 GPU(예: Adreno 305)도 모든 기능을 수행할 수 있다.

텐서플로 라이트 GPU팀에 따르면 OpenCL은 일정한 기억 이론을 가지고 있다. 선도적인 칩 제조업체 퀄컴은 OpenCL의 상수 메모리와 함께 사용하기에 이상적인 속성을 가진 물리적 메모리를 추가했다. 또한 Adreno의 OpenCL은 이 물리적 상수 메모리와 앞서 언급한 기본 FP16 지원과의 시너지 효과를 통해 OpenGL의 성능을 크게 능가할 수 있다.

마지막으로 텐서플로 라이트 GPU팀에 따르면 MNASNet 1.3 및 SSD MobileNet v3 (대형)과 같은 몇 가지 인기 있는 신경망에서 OpenCL을 사용하는 일부 안드로이드 장치에서 추론 엔진의 성능을 평가했다. 결과적으로 새로운 OpenCL 백엔드는 OpenGL 백엔드 보다 약 두 배 빠른 속도를 보였으며 SD로 주석을 달 때 안드로이드 장치에서 특히 더 좋은 결과를 보였다고 밝혔다.

저작권자 © 인공지능신문 무단전재 및 재배포 금지