3P by neo 8달전 | favorite | 댓글 1개

새로운 머신러닝 하드웨어 아키텍처

  • 이 저장소는 기존의 내적(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를 선택함으로써 얻을 수 있는 이점은 처리량과 계산 효율성의 증가이며, 잠재적인 단점으로는 새로운 시스템에 대한 개발자의 학습 곡선과 초기 구현 비용이 있을 수 있음.
Hacker News 의견
  • 이 기술이 멋져 보이지만, 왜 이미 가속기에 구현되지 않았는지, 단순히 잊혀진 알고리즘인지, 아니면 가속기를 구축하는 데 비용이나 다른 영향을 미치는지 궁금함.
  • 이 논문은 하드웨어에서 행렬 곱셈 파이프라인을 합성하는 것에 대해 이야기하고 있으며, FPGA나 ASIC과 같은 하드웨어에서 유용할 수 있음. CPU나 GPU에서는 곱셈과 덧셈이 일반적으로 같은 시간이 걸리지만, 곱셈 유닛은 더 많은 트랜지스터를 차지하기 때문에 회로 복잡성을 줄이면 속도와 병렬 처리량을 높이고 전력 및 라우팅 복잡성을 줄일 수 있음.
  • 행렬 곱셈에서 곱셈을 제거하는 또 다른 방법은 다양한 세미링(semiring)을 사용하는 것임. 예를 들어, 열대 세미링(Tropical Semiring)은 곱셈 대신 덧셈을, 덧셈 대신 최소값(또는 최대값)을 사용함. 이는 여전히 행렬 곱셈이지만, 이진 연산이 대체됨. 열대 대수(Tropical Algebra) 분야의 연구는 최적화 문제와 신경망 최적화 연구에 사용되며 현재 활발하고 풍부함.
  • 로그 세미링(Log Semiring)을 사용하는 것도 곱셈을 효율적으로 제거하는 방법임. 확률의 연쇄를 곱해야 할 때(예: 마르코프 체인), 숫자가 매우 작아져서 부동 소수점이 정확도를 잃게 됨. 숫자를 로그로 스케일링하면 곱셈이 덧셈이 되고, 덧셈은 x + log1p(exp(y - x))가 됨.
  • 곱셈과 덧셈을 사용할지 결정하는 것이 단순히 곱셈을 사용하는 것보다 느릴 수 있기 때문에, 이 방법이 실제로 작동한다는 것이 놀랍음. 특히 병렬로 대량의 작업이 이루어질 때.
  • 이 프로세스가 1968년에 발명되었고 지금까지 이 목적으로 사용되지 않았다는 사실이 매우 흥미로움.
  • 2018년에 비슷한 개념을 시도했지만, 박사과정 지원이 모두 거절되어 포기했음. 여기서의 개념은 외부 네트워크로 역전파를 복제하려고 시도하며, 이것이 아마도 뇌가 실제로 하는 일일 것이라고 주장함.
  • 행렬 곱셈에 대한 서브큐빅(sub-cubic) 알고리즘의 수학적 이론에 관심이 있다면, 이곳에서 시작할 수 있음. 모든 ( n \times n ) 행렬을 ( O(n^{2+j}) ) 단계로 곱할 수 있는 숫자 ( n )이 존재한다고 추측함 (이제 ( 2+j = w = 2.3728596 ) 또는 ( j > 0.3728596 )에 대해 증명됨).
  • 이 readme는 개선 사항이 무엇인지 또는 곱셈을 절반으로 줄이는 방법을 설명하는 데 있어 매우 부족함. Big O 실행 시간은 어떻게 되는지, 알려진 최적의 경계를 변경하는지 여부도 불분명함. 다이어그램은 혼란스럽고 이 접근 방식이 빠르고 좋은 이유에 대해 설명하지 않음. 결과적으로 PDF를 클릭하기조차 꺼려짐. 프로젝트의 신뢰성을 높이려면 실제로 무슨 일이 일어나고 있는지에 대해 솔직하고 명확한 설명과 일러스트레이션을 제공하는 것을 고려해야 함.