▲ [source=alibaba damo academi]
인공지능(AI) 시스템의 핵심설계 영역은 머신러닝(ML) 알고리즘의 설계다. 이를 하드웨어에서 가속시켜 전력 및 성능 목표를 달성할 수 있다. 이러한 알고리즘을 개발하는 팀들은 기존의 RTL 설계 플로우로는 구현 일정에 맞출 수 없다는 사실을 곧바로 알게 된다.

알고리즘은 빈번하게 수정되기도 하며, 성능 사양이 변경될 수도 있고, 목표 플랫폼에 대한 통합이 설계 주기 후반에 가서 바뀔 수도 있다.

설상가상으로 설계 팀은 전력과 성능, 면적 간의 절충을 모색하기 위해 RTL을 재코딩 해야 한다. 그것이 요건의 변경 때문이든 혹은 설계 분야의 모색 때문이든, 소스 디자인이 변경되면 설계 및 검증 프로세스 전체를 다시 시작해야 하므로 생산 일정에 허용 불가한 지연이 발생하거나 보다 나은 하드웨어를 모색하고 개발할 수 있는 기회를 놓치게 된다(그림 1).
▲ 그림 1. 변경은 RTL 플로우에 지연을 가져온다.
그래서 이들 팀은 Catapult HLS 플랫폼에서 제공하는 것과 같은 상위수준 합성 플로우를 활용하여 ML 가속기를 설계 및 검증하고 이를 시스템에 연결시킨다. 이 플랫폼은 C++로부터 생성되는 전력 및 프로세스 기술에 최적화된 RTL에 이르기까지 완전한 설계와 검증 플로우을 제공한다.

AI 가속기(AI accelerator) 생태계의 도입

Catapult HLS 플랫폼은 IC디자이너들에게 입증된 툴 플로우을 제공한다. 하지만 멘토는 여기에서 한참 더 나아가 AI 가속기 생태계(그림 2)를 제공하고 있는데, 이것은 AI 디자이너들에게 프로젝트 시작을 도와줄 수 있는 환경을 제공한다.

▲ 그림 2. 인공지능(AI) 가속기 생태계

특수 데이터 유형을 기반으로 구축된 IP라이브러리
이 생태계에는 풍부한 IP라이브러리가 포함되어 있다. 라이브러리는 FPGA나 eFPGA 또는 ASIC 기술로 합성할 수 있는 이해하기 쉬운 고품질의 기본 빌딩블록을 제공하므로 하드웨어 가속화를 보다 빠르게 실행할 수 있다.

해당 라이브러리는 임의 길이 정수, 고정 소수점, 부동 소수점 및 복소수의 특수 데이터 유형을 토대로 구축되어 있어, 이를 통해 코드를 C++ 모델과 동일한 비트별 동작을 갖는 하드웨어로 합성할 수 있다. 이 IP 라이브러리에는 다음 사항들이 포함된다:

- 알고리즘 C 수학 라이브러리: 표준 C++ math.h 헤더는 물론 C++ 매트릭스 클래스와 선형 대수함수에서도 일반적으로 볼 수 있는 수학 연산자를 위한 합성 가능한 C++ 함수를 정의한다.

- 알고리즘 C DSP 라이브러리: 필터 및 고속 푸리에 변환(FFT: Fast Fourier Transforms)과 같이 DSP 디자이너가 일반적으로 필요로 하는 합성 가능한 C++ 함수를 정의한다.

- 알고리즘 C 이미지 프로세싱 라이브러리: 일반적인 픽셀 포맷 유형의 정의 몇 가지로 시작한다. 이러한 유형들은 C++ 템플릿 매개변수를 이용하여 색상 심도와 포맷(RGB, YUV)을 구성한다. 이어서 라이브러리는 색상 변환, 경계 처리, 2차원 컨벌루션(2-D convolution)용 윈도잉 클래스 등과 같이 이미지 프로세싱에 유용한 다양한 함수 블록들을 제공한다.

툴킷
AI 가속기 생태계가 제공하는 툴킷은 가속기 기반 레퍼런스 디자인의 실제적이고 테스트된 예제로서, 개발 팀은 이를 학습하고 수정 및 복사하여 프로젝트 시작을 도울 수 있다. 이러한 키트에는 구성 가능한 C++/SystemC IP 소스코드, 문서, 테스트벤치 및 스크립트가 포함되어 있어 디자인을 HLS 합성 및 검증 플로우를 따라 진행할 수 있다.

해당 툴킷이 제공하는 다양한 접근법과 코딩 기법을 통해 성능(대기시간), 프레임률, 면적 및 전력 간의 절충을 실험해볼 수 있다. 현재 사용 가능한 툴킷들은 다음과 같다:

▲픽셀파이프 비디오 프로세싱 툴킷: 픽셀-파이프 가속기를 이용한 실시간 이미지 프로세싱 애플리케이션을 보여준다. 블록은 이미지를 축소(downscale)하고 컬러에서 흑백으로 변환하여 가장자리를 탐지해낸 뒤 다시 확대(upscale)한다.

▲2-Convolution 툴킷: C++에서 Eyeriss 처리요소(PE) 어레이를 코딩하는 방법을 보여준다. 이는 2차원 컨벌루션(2-D convolution)을 구현하여 이미지 향상 기능(선명화, 블러링, 가장자리 탐지)을 수행한다. 처리 요소는 3×1 곱셈누적(컨볼루션) 연산을 수행할 수 있다.

처리 요소를 수직으로 쌓으면 3×3 컨벌루션을 얻을 수 있는데, 이 경우 수행되는 이미지 향상 정도는 커널 가중치에 의해 결정된다.

▲tinyYOLO 객체 분류 툴킷: 2-D Eyeriss 툴킷의 PE 배열로 구현된 컨벌루션 가속기 엔진을 사용하여 객체 분류 애플리케이션을 시연한다. tinyYOLO(“You Only Look Once”) 신경망 아키텍처를 토대로 하며, 객체 분류를 실행하기 전에 이미지 크기를 조정하기 위한 비디오 전처리 블록을 포함하고 있다.


이 툴킷은 AXI4 인터커넥트를 통해 고속 데이터 라우팅을 달성하는 방법을 보여주며, 고성능 메모리 아키텍처를 정의하는 방법도 보여준다. C++로 구현된 네트워크 계층의 추론 테스트를 위해 TensorFlow 통합 기능을 제공한다.

시스템 통합
가속기 블록은 고립된 상태에서 기능하는 것이 아니라 시스템에 연결되어야 한다. Catapult HLS는 Interface Synthesis를 제공함으로써 시간제한 프로토콜을 시간 무제한 C++ 함수 인터페이스 변수에 추가한다.

디자이너는 단지 Catapult GUI에서 이 프로토콜에 대한 구조적 제약조건을 설정하기만 하면 된다. 이 툴은 AXI4 비디오 스트림, 요청/승인 핸드셰이킹 및 메모리 인터페이스와 같은 일반적인 프로토콜을 지원한다. 이를 통해 디자이너는 C++ 소스를 변경하지 않고도 인터페이스 프로토콜들을 모색해볼 수 있다.

AI 가속기 생태계는 시스템 통합을 지원하기 위해 다음과 같이 완전히 기능하는 일련의 설계 예제들을 제공한다:

◆AXI 예제: Catapult HLS가 생성하는 AXI 인터페이스 IP를 이용해 AXI SoC 서브시스템 내에서 하나 이상의 가속기 구성요소를 인스턴스화 하는 방법을 보여준다. 마스터, 슬레이브 및 스트리밍 예제를 사용할 수 있다.

◆기본 프로세서 예제: ML 가속기를 완전한 프로세서 기반 시스템에 연결하는 방법을 보여준다. 이것은 AXI 예제를 이용한다. 이 예제에서 ML 가속기는 2차원 컨벌루션과 맥스 풀링(max pooling)을 이용하는 단순한 곱셈누적 연산(MAC) 아키텍처를 채택하고 있다. 여러 써드파티 프로세서 IP 모델이 지원되며, 베어메탈 프로그래밍을 위한 소프트웨어 플로우가 (관련 데이터와 함께) 포함된다.


아울러 설계 팀은 프로젝트에 도움이 필요할 수 있는데, 생태계에서 여러 가지 방식으로 도움을 줄 수 있다. 그 몇 가지 예는 다음과 같다:

- 온디맨드 교육: 툴의 효율적인 사용 방법을 배울 수 있도록 체계적이며 자기 진도에 따라 학습할 수 있는 온라인 교육 경험을 제공한다.

- 세미나: 전 세계에 생중계 된 뒤에 동영상으로 녹화되어 언제라도 온라인으로 시청할 수 있다.

- 컨설팅: 툴 플로우를 팀의 환경에 통합시킬 수 있도록 현장 도움말을 제공하며, 최적의 합성을 위해 C++ 알고리즘의 설계도 지원한다.


AI 가속기 생태계와 상위수준 합성의 결합을 통해 팀들의 AI 프로젝트를 시작할 수 있다. 이 생태계에서 제공하는 광범위한 기능 덕분에 팀은 그 경험 수준에 관계없이 프로젝트를 보다 빨리 출시하기 위해 필요한 사항들을 선택할 수 있다.


글 : 데이빗 버넷(David Burnette) / 엔지니어링 디렉터 / 멘토, 지멘스비즈니스

관련기사

저작권자 © IT비즈뉴스(ITBizNews) 무단전재 및 재배포 금지