새로운 머신러닝 하드웨어 아키텍처
- 이 저장소는 기존의 내적(inner product) 연산을 수행하는 것과 동일한 성능을 달성하면서도, 곱셈 연산의 거의 절반만을 필요로 하는 ML 하드웨어 아키텍처의 소스 코드를 포함함.
- 저비트폭(low-bitwidth) 덧셈을 활용하여 곱셈의 거의 절반을 대체하는 대안적인 내적 알고리즘을 실행하여, ML 가속기의 이론적 처리량과 계산 효율성 한계를 높임.
- 자세한 내용은 IEEE Transactions on Computers 저널에 게재된 논문에서 확인 가능함.
새로운 알고리즘과 하드웨어 아키텍처
- Free-pipeline Fast Inner Product (FFIP)라는 새로운 알고리즘과 하드웨어 아키텍처를 소개함.
- 1968년 Winograd가 제안한 빠른 내적 알고리즘(FIP)을 개선함.
- FIP는 컨볼루셔널(convolutional) 레이어에 적용되는 Winograd 최소 필터링 알고리즘과는 무관하며, 행렬 곱셈으로 주로 분해될 수 있는 모든 ML 모델 레이어에 적용 가능함.
- ML 가속기에서 처음으로 FIP를 구현하고, FIP의 클록 주파수와 그 결과로 나오는 처리량을 개선하는 FFIP 알고리즘과 일반화된 아키텍처를 제시함.
- FIP와 FFIP 알고리즘 및 아키텍처에 대한 ML 특화 최적화를 기여함.
- FFIP는 기존 고정점(fixed-point) systolic array ML 가속기에 원활하게 통합되어, 절반의 곱셈-누산(MAC) 유닛으로 동일한 처리량을 달성하거나, 고정된 하드웨어 예산으로 더 큰 최대 systolic array 크기를 구현할 수 있음.
- 8~16비트 고정점 입력을 사용하는 비희소(non-sparse) ML 모델에 대한 FFIP 구현은 동일한 유형의 컴퓨팅 플랫폼에서 최고 수준의 솔루션보다 더 높은 처리량과 계산 효율성을 달성함.
소스 코드 구조
-
compiler
: 파이썬 모델 설명을 가속기 명령으로 파싱하는 컴파일러를 포함하며, 가속기에서 모델 실행을 시작하고 결과 및 성능 카운터를 읽고 결과의 정확성을 테스트하는 PCIe 드라이버와의 인터페이스 코드도 포함함.
-
rtl
: 합성 가능한 SystemVerilog RTL을 포함함.
-
sim
: 테스트를 위한 시뮬레이션 환경을 설정하는 스크립트를 포함함.
-
tests
: Cocotb를 사용하여 시뮬레이션에서 가속기를 검증하는 UVM 기반의 테스트벤치 소스 코드를 포함함.
-
utils
: 프로젝트에 사용된 추가 파이썬 패키지와 스크립트를 포함하며, 일반 개발 유틸리티와 도움을 위해 저자가 만든 것임.
GN⁺의 의견
- 이 기사는 ML 하드웨어 아키텍처의 혁신적인 발전을 소개하며, 특히 곱셈 연산을 줄이면서도 성능을 유지하는 새로운 알고리즘과 아키텍처에 대해 설명함. 이는 ML 연산의 효율성을 크게 향상시킬 수 있는 중요한 진전임.
- FFIP 알고리즘은 기존의 ML 가속기 설계에 새로운 차원을 추가하며, 하드웨어 리소스를 보다 효율적으로 사용할 수 있는 방법을 제공함. 이는 에너지 효율성과 비용 효율성을 중시하는 현대의 컴퓨팅 환경에서 매우 중요함.
- 하지만 이 기술이 널리 채택되기 위해서는 기존의 ML 가속기와의 호환성, 개발자들의 새로운 아키텍처에 대한 이해도, 그리고 실제 하드웨어에 구현할 때의 성능과 비용 문제 등을 고려해야 함.
- 이와 유사한 기능을 제공하는 다른 프로젝트나 제품으로는 Google의 TPU(Tensor Processing Unit)나 NVIDIA의 CUDA 코어가 있으며, 이들은 이미 시장에서 검증된 ML 가속기 솔루션임.
- 새로운 기술이나 오픈소스를 도입할 때는 기존 시스템과의 호환성, 성능 향상 대비 비용 증가, 그리고 개발 및 유지보수의 복잡성을 고려해야 함. FFIP를 선택함으로써 얻을 수 있는 이점은 처리량과 계산 효율성의 증가이며, 잠재적인 단점으로는 새로운 시스템에 대한 개발자의 학습 곡선과 초기 구현 비용이 있을 수 있음.