FPGA 빠른 경로를 사용하여 성능과 전력 효율이 높은 에지 AI 응용 제품 구축
DigiKey 북미 편집자 제공
2021-01-12
에지의 추론 프로세서에서 인공 지능(AI) 알고리즘을 구현하는 설계자는 처리 요구가 높아짐에도 불구하고 전력 소비를 낮추고 개발 시간을 줄여야 한다는 압박에 지속적으로 시달리고 있습니다. 필드 프로그래밍이 가능한 게이트 어레이(FPGA)는 에지 AI에 필요한 신경망(NN) 추론 엔진을 구현하기 위해 특히 효과적인 속도와 전력 효율성을 제공합니다. 그러나 FPGA에 익숙하지 않은 개발자의 경우 기존 FPGA 개발 방법이 복잡해 보일 수 있어서 덜 최적화된 솔루션을 선택하는 경우가 많습니다.
이 기사에서는 개발자가 FPGA 및 소프트웨어 개발 키트(SDK)를 사용하여 기존 방식으로 FPGA 개발을 하지 않고도 숙련된 NN을 만들 수 있으며 또는 FPGA 기반 비디오 키트를 사용하여 스마트한 내장형 비전 애플리케이션을 바로 개발할 수 있는 Microchip Technology의 간편해진 접근 방식을 설명합니다.
에지에서 AI를 사용하는 이유는 무엇입니까?
에지 컴퓨팅은 산업 자동화, 보안 시스템, 스마트 홈 등 다양한 부문의 사물 인터넷(IoT) 응용 제품에 많은 이점을 제공합니다. 작업 현장을 대상으로 하는 산업용 IoT(IIoT) 응용 분야에서 에지 컴퓨팅은 클라우드 기반 응용 제품의 왕복 지연을 제거하여 공정 제어 루프의 응답 시간을 크게 개선할 수 있습니다. 마찬가지로 에지 기반 보안 시스템이나 스마트 홈 도어 잠금 장치는 우발적이거나 의도적으로 클라우드 연결이 끊기는 경우에도 계속 작동할 수 있습니다. 많은 경우 이러한 응용 분야에서 에지 컴퓨팅을 사용하면 제품의 클라우드 리소스 의존성을 낮춰 전체 운영 비용을 절감할 수 있습니다. 개발자는 제품 수요가 증가함에 따라 예기치 않게 값비싼 클라우드 리소스를 추가하지 않고 제품에 내장된 로컬 처리 기능을 사용하여 운영 비용을 더 안정적으로 유지할 수 있습니다.
기계 학습(ML) 추론 모델이 빠르게 수용되고 수요가 증가하면서 에지 컴퓨팅의 중요성이 대단히 커지고 있습니다. 개발자는 추론 모델을 로컬 처리함으로써 응답 대기 시간을 줄이고 클라우드 기반 추론에 필요한 클라우드 리소스 비용을 줄일 수 있습니다. 사용자의 입장에서 로컬 추론 모델을 사용하면 간혹 인터넷 연결이 끊기거나 제품 판매업체의 클라우드 기반 서비스가 변경되더라도 제품이 계속 작동하리라는 확신이 커집니다. 또한 보안 및 개인정보 관련 문제로 인해 공용 인터넷을 통해 클라우드로 전송되는 중요한 정보의 양을 제한할 경우 로컬 처리와 추론의 필요성이 더욱 커질 수 있습니다.
시각 기반 물체 감지를 위한 NN 추론 모델을 개발하는 과정은 여러 단계로 이루어지며, 시작 단계인 모델 교육은 대개 TensorFlow와 같은 ML 프레임워크에서 공개적으로 제공되는 레이블 지정 이미지나 맞춤형 레이블 지정 이미지를 사용하여 수행됩니다. 모델 교육은 처리 요구 때문에 일반적으로 클라우드나 다른 고성능 컴퓨팅 플랫폼에서 그래픽 처리 장치(GPU)를 사용하여 수행됩니다. 교육이 완료된 후 모델은 에지 또는 포그(fog) 컴퓨팅 리소스에서 실행할 수 있는 추론 모델로 변환되고 추론 결과를 객체 클래스 확률 집합으로 제공합니다(그림 1).
그림 1: 에지 AI를 위한 추론 모델 구현은 주문 가능 또는 맞춤형 교육 데이터를 사용하여 프레임워크에서 NN을 교육하고 최적화해야 하는 다단계 과정의 마지막에 이루어집니다. (이미지 출처: Microchip Technology)
추론 모델이 계산 면에서 어려운 이유
교육 과정 중 사용되는 모델과 비교하면 NN 추론 모델은 크기와 복잡성이 줄었지만 대량의 계산이 필요하므로 범용 프로세서에서 여전히 계산 문제를 초래할 수 있습니다. 일반적인 형태의 심층 NN 모델은 뉴런 집합의 여러 계층으로 구성됩니다. 완전히 연결된 망의 각 계층 내에서 각 뉴런 nij는 관련 가중치 wij를 사용하여 각 입력의 곱의 합계를 계산해야 합니다(그림 2).
그림 2: NN을 사용한 추론에 필요한 계산 수로 인해 상당한 계산 워크로드가 발생할 수 있습니다. (이미지 출처: Microchip Technology)
그림 2에는 나와 있지 않지만 음수 값은 0에 매핑하고 1보다 큰 값은 1에 매핑하여 각 뉴런의 출력을 수정하는 활성화 함수와 유사 함수로 인해 계산 요건이 추가됩니다. 각 뉴런 nij의 활성화 함수 출력이 다음 계층 i + 1의 입력으로 제공되며, 이러한 방식으로 각 계층에 대해 계속 이루어집니다. 마지막으로 NN 모델의 출력 계층은 원래 입력 벡터(또는 행렬)가 감독 학습 과정 중 사용되는 클래스(또는 레이블) 중 하나와 일치할 확률을 나타내는 출력 벡터를 생성합니다.
효과적인 NN 모델은 위에 나온 대표적인 일반 NN 아키텍처보다 훨씬 크고 복잡한 아키텍처를 기반으로 구축됩니다. 예를 들어 이미지 물체 감지에 사용되는 일반적인 복잡한 NN(CNN)은 이러한 원칙을 구간적으로 적용하여 입력 이미지의 너비, 높이 및 색 농도를 스캐닝하여 일련의 기능 맵을 만들고 최종적으로 출력 예측 벡터를 산출합니다(그림 3).
그림 3: 이미지 물체 감지에 사용되는 CNN은 많은 수의 뉴런이 여러 계층으로 이루어져 계산 플랫폼 관련 요구 사항이 더 많습니다. (이미지 출처: Aphex34 CC BY-SA 4.0)
FPGA를 사용하여 NN 수학 가속화
에지에서 추론 모델을 실행하기 위한 다양한 옵션이 계속 등장하고 있지만, 에지에서 실용적인 고속 추론에 필요한 유연성, 성능 및 전력 효율성을 최적으로 함께 제공하는 대안은 거의 없습니다. 에지 AI에 즉시 사용 가능한 대안 중 FPGA는 계산 집약적인 작업을 하드웨어 기반으로 고성능으로 실행할 수 있으면서도 비교적 적은 전력을 소비하므로 특히 효과적입니다.
이러한 장점에도 불구하고 폭넓은 FPGA 경험이 없는 개발자들에게는 기존 개발 흐름으로 인해 FPGA가 부담이 될 수 있어 간과되기도 합니다. NN 프레임워크로 생성되는 NN 모델의 효과적인 FPGA를 구현하기 위해 개발자는 모델을 레지스터 전송 언어(RTL)로 변환하고, 설계를 합성하고, 최적의 구현을 생성하기 위해 최종 배치 및 배선의 물리적 설계 단계를 관리하는 등 세세한 내용을 이해해야 합니다(그림 4).
그림 4: FPGA에서 NN 모델을 구현하려면 개발자는 지금까지 모델을 RTL로 변환하고 기존 FPGA 흐름을 관리하는 방법을 이해해야 했습니다. (이미지 출처: Microchip Technology)
PolarFire FPGA, 특수 소프트웨어 및 관련 지적 재산(IP)을 보유한 Microchip Technology는 FPGA 경험이 없는 개발자가 에지에서 저전력으로 고성능 추론을 광범위하게 사용할 수 있는 솔루션을 제공합니다.
고급 비휘발성 공정 기술로 제조된 PolarFire FPGA는 유연성과 성능을 극대화하면서도 전력 소비를 최소화하도록 설계되었습니다. 통신과 입/출력(I/O)을 위한 광범위한 고속 인터페이스 어레이와 함께 RISC-V 프로세서, 고급 메모리 컨트롤러, 표준 인터페이스 서브 시스템 등을 비롯한 소프트 IP 코어를 사용하여 고급 기능을 지원할 수 있는 심층 FPGA 패브릭을 제공합니다(그림 5).
그림 5: Microchip Technology PolarFire 아키텍처는 계산 집약적인 추론 모델 구현을 비롯한 고성능 설계 요구 사항을 지원하도록 설계된 심층 패브릭을 제공합니다. (이미지 출처: Microchip Technology)
PolarFire FPGA 패브릭은 MPF100T, MPF200T, MPF300T 및 MPF500T 시리즈를 비롯한 서로 다른 PolarFire FPGA 제품군별로 다양한 용량으로 지원되는 광범위한 논리 소자와 특수 블록을 제공합니다(표 1).
|
표 1: PolarFire 시리즈를 통해 다양한 FPGA 패브릭 기능과 용량을 주문할 수 있습니다. (표 출처: DigiKey, Microchip Technology PolarFire 규격서를 기준으로 작성)
추론 가속화를 위해 특히 관심이 가는 기능 중에 사전 가산기를 통해 18비트 × 18비트 신호 증식 누산기 기능(MAC)을 제공하는 전용 수학 블록이 PolarFire 아키텍처에 포함되어 있습니다. 내장된 내적 모드는 단일 수학 블록을 사용하여 두 개의 8비트 곱셈 연산을 수행하므로 모델 양자화가 정확도에 미치는 무시해도 될 만한 영향을 활용하여 용량을 늘리는 메커니즘을 제공합니다.
수학 연산을 가속화하는 것 외에 PolarFire 아키텍처는 NN 알고리즘 실행 중에 생성된 중간 결과를 저장하기 위한 소형 분산 메모리 등 범용 아키텍처에서 추론 모델을 구현할 때 발생하는 메모리 정체를 완화하는 데에도 도움이 됩니다. 또한 NN 모델의 가중치와 바이어스 값은 수학 블록 근처에 있는 논리 소자로 구축된 16비트 x 18비트 계수 ROM(Read-Only Memory)에 저장할 수 있습니다.
다른 PolarFire FPGA 패브릭 기능과 결합된 수학 블록은 Microchip Technology의 상위 수준 CoreVectorBlox IP를 위한 기반을 제공합니다. CoreVectorBlox IP는 다양한 유형의 NN을 실행할 수 있는 유연한 NN 엔진 역할을 합니다. CoreVectorBlox IP에는 일련의 제어 레지스터와 함께 다음과 같은 세 가지 주요 기능 블록이 포함됩니다.
- 마이크로 컨트롤러: Microchip 펌웨어 BLOB(Binary Large Object) 및 외장 스토리지의 사용자별 NN BLOB 파일을 읽는 간단한 RISC-V 소프트 프로세서입니다. 펌웨어 BLOB의 명령을 실행하여 전체 CoreVectorBlox 작업을 제어합니다.
- 행렬 프로세서(MXP): 8개의 32비트 산술 논리 유닛(ALU)으로 구성되며 필요에 따라 혼합 8비트, 16비트 및 32비트 정밀도를 사용하는 add, sub, xor, shift, mul, dotprod 등을 포함한 요소별 텐서 연산을 사용하여 데이터 벡터의 병렬 연산을 수행하도록 설계된 소프트 프로세서입니다.
- CNN 가속기: 수학 블록을 사용하여 구현되고 8비트 정밀도로 작동하는 MAC 기능의 2차원 어레이를 사용하여 MXP 연산을 가속화합니다.
전체 NN 처리 시스템에는 CoreVectorBlox IP 블록, 메모리, 메모리 컨트롤러 및 Microsoft RISC-V(Mi-V) 소프트웨어 프로세서 코어와 같은 호스트 프로세서가 통합됩니다(그림 6).
그림 6: CoreVectorBlox IP 블록은 Microchip Mi-V RISC-V 마이크로 컨트롤러와 함께 작동하여 NN 추론 모델을 구현합니다. (이미지 출처: Microchip Technology)
비디오 시스템 구현에서는 호스트 프로세서가 시스템 플래시 메모리에서 펌웨어 및 네트워크 BLOB을 로드하고 CoreVectorBlox 블록에서 사용하기 위해 DDR(이중 데이터 전송률) RAM(Random Access Memory)으로 복사합니다. 비디오 프레임이 도달하면 호스트 프로세서는 프레임을 DDR RAM에 쓰고 CoreVectorBlox 블록에 신호를 보내 이미지 처리를 시작하게 합니다. CoreVectorBlox 블록은 네트워크 BLOB에 정의된 추론 모델을 실행한 후 대상 응용 제품에서 사용할 수 있도록 이미지 분류를 포함한 결과를 DDR RAM에 다시 기록합니다.
개발 흐름을 통해 NN FPGA 구현 간소화
Microchip은 개발자가 PolarFire FPGA에서 NN 추론 모델을 구현할 때 겪는 복잡성을 줄여줍니다. NN 모델 개발자는 기존 FPGA 흐름의 세부 사항을 처리하지 않고 평소대로 NN 프레임워크로 작업하고 결과 모델을 Microchip Technology의 VectorBlox Accelerator 소프트웨어 개발 키트(SDK)에 로드합니다. SDK에서는 일반 FPGA 개발 흐름에 필요한 파일을 포함해 필수 파일 집합과 앞서 설명한 펌웨어 및 네트워크 BLOB 파일을 생성합니다(그림 7).
그림 7: VectorBlox Accelerator SDK는 FPGA에서 NN 모델을 구현하는 세부 사항을 관리하여 FPGA 기반 추론 모델을 설계하고 실행하는 데 필요한 파일을 자동으로 생성합니다. (이미지 출처: Microchip Technology)
VectorBlox Accelerator SDK 흐름에서는 NN 설계를 FPGA에 구현된 NN 엔진과 결합하므로 FPGA 설계 합성 흐름을 다시 수행하지 않고도 동일한 FPGA 설계에서 여러 NN을 실행할 수 있습니다. 개발자는 결과 시스템의 C/C++ 코드를 작성하고 시스템 내에서 즉시 모델을 전환하거나 시간 조각화를 사용하여 모델을 동시에 실행할 수 있습니다.
VectorBlox Accelerator SDK에서는 Microchip Technology의 Libero FPGA 설계 제품군을 NN 추론 모델 개발을 위한 포괄적인 기능 세트와 결합합니다. 이 SDK에서는 모델 최적화, 양자화 및 보정 서비스 외에도 개발자가 모델을 FPGA 하드웨어 구현에 사용하기 전에 동일한 BLOB 파일을 사용하여 평가할 수 있는 NN 시뮬레이터도 제공합니다(그림 8).
그림 8: VectorBlox Accelerator SDK에서는 프레임워크 생성 추론 모델의 FPGA 구현을 최적화하기 위해 설계된 포괄적인 서비스를 제공합니다. (이미지 출처: Microchip Technology)
VectorBlox Accelerator SDK는 ONNX(Open Neural Network Exchange) 형식의 모델뿐 아니라 TensorFlow, Caffe, Chainer, PyTorch, MXNET 등을 포함한 여러 프레임워크의 모델도 지원합니다. 지원되는 CNN 아키텍처는 MNIST, MobileNet 버전, ResNet-50, Tiny Yolo V2, Tiny Yolo V3 등입니다. Microchip은 사전 교육된 모델의 오픈 소스 OpenVINO 도구 키트 open model zoo에 있는 Yolo V3, Yolo V4, RetinaNet, SSD-MobileNet 등을 비롯한 대부분의 네트워크를 포함하도록 지원을 확장하기 위해 노력하고 있습니다.
비디오 키트를 통해 FPGA 추론 시연
개발자가 스마트 내장형 비전 애플리케이션 개발로 빠르게 전환하도록 돕기 위해 Microchip Technology에서는 자사의 MPF300-VIDEO-KIT PolarFire FPGA 비디오 및 이미징 키트와 참조 설계에서 실행되도록 설계된 포괄적인 샘플 애플리케이션을 제공합니다.
Microchip MPF300T PolarFire FPGA를 기반으로 하는 이 키트의 기판에는 이중 카메라 센서, DDR4(이중 데이터 전송률 4) RAM, 플래시 메모리, 전력 관리 및 다양한 인터페이스가 통합되어 있습니다(그림 9).
그림 9: MPF300-VIDEO-KIT PolarFire FPGA 비디오 및 이미징 키트와 관련 소프트웨어를 활용하면 개발자가 스마트 내장형 비전 애플리케이션에서 FPGA 기반 추론을 빠르게 시작할 수 있습니다. (이미지 출처: Microchip Technology)
이 키트에는 펌웨어 및 네트워크 BLOB 파일을 생성하는 데 사용되는 완전한 Libero 설계 프로젝트가 함께 제공됩니다. BLOB 파일을 기판 실장형 플래시 메모리로 프로그래밍한 후 개발자는 Libero의 실행 버튼을 클릭하여 카메라 센서의 비디오 이미지를 처리하고 디스플레이에 추론 결과를 표시하는 데모를 시작합니다(그림 10).
그림 10: Microchip Technology의 PolarFire FPGA 비디오 및 이미징 키트는 Microchip CoreVectorBlox NN 엔진을 기반으로 구축된 스마트 내장형 비전 시스템의 FPGA 구현을 설계하고 사용하는 방법을 보여줍니다. (이미지 출처: Microchip Technology)
각 입력 비디오 프레임에 대해 FPGA 기반 시스템은 다음 단계를 실행합니다(단계 번호는 그림 10과 연계됨).
- 카메라에서 프레임을 로드합니다.
- 프레임을 RAM에 저장합니다.
- RAM에서 프레임을 읽습니다.
- 원시 이미지를 RGB, Planer RGB로 변환하고 결과를 RAM에 저장합니다.
- Mi-V 소프트 RISC-V 프로세서가 CoreVectorBlox 엔진을 시작하여 RAM에서 이미지를 검색하고 추론을 수행하고 분류 확률 결과를 다시 RAM에 저장합니다.
- Mi-V가 결과를 사용하여 경계 상자, 분류 결과 및 기타 메타데이터가 있는 오버레이 프레임을 만들고 프레임을 RAM에 저장합니다.
- 원래 프레임이 오버레이 프레임과 혼합되어 HDMI 디스플레이에 기록됩니다.
이 데모에서는 Tiny Yolo V3 및 MobileNet V2 모델의 가속을 지원하지만 개발자가 약간의 코드 변경으로 두 개의 기본 모델이 포함된 기존 목록에 모델 이름과 메타데이터를 추가하면 앞서 설명한 방법을 사용하여 다른 SDK 지원 모델도 실행할 수 있습니다.
결론
NN 모델과 같은 AI 알고리즘에서는 일반적으로 범용 프로세서에서 사용할 수 있는 것보다 더 강력한 계산 리소스가 필요한 계산 집약적인 워크로드가 발생합니다. FPGA는 추론 모델 실행의 성능과 저전력 요구 사항을 충족할 수 있도록 잘 갖추어져 있지만 기존 FPGA 개발 방법이 복잡해 보일 수 있어서 개발자가 차선의 솔루션을 선택해야 하는 경우가 많습니다.
위에서 살펴본 바와 같이 Microchip Technology의 특수 IP 및 소프트웨어를 사용하면 개발자가 FPGA 경험이 없더라도 성능, 전력 및 설계 일정 요구 사항을 더 잘 충족할 수 있는 추론 기반 설계를 구현할 수 있습니다.
면책 조항: 이 웹 사이트에서 여러 작성자 및/또는 포럼 참가자가 명시한 의견, 생각 및 견해는 DigiKey의 의견, 생각 및 견해 또는 DigiKey의 공식 정책과 관련이 없습니다.


