작성
·
26
1
안녕하세요, 강의를 수강하다가 궁금한 점이 있어서 질문드립니다.
강의에서 사용한 Data는 기본 integer를 사용하여 MAC연산을 rtl로 구현 시 +, * 연산자들을 이용하여 구현을 하셨는데 만약 입력으로 들어오는 feature, 학습이 완료된 weight들이 Floating point 32, Brain Floating16 등의 형태를 가지고 있다면 해당 데이터형에 알맞은 ALU 를 따로 설계 후 instance해오는 방식으로 Core를 설계하는지, 그리고 실제 일반적인 AI 가속기 구현 시 주로 어떤 형태의 Data형을 더 많이 사용하는지 궁금합니다!
==================
답변 1
0
안녕하세요 🙂
입력 데이터가 FP32, BP16 등과 같은 부동소수점 데이터일 경우, 해당 데이터형을 지원하는 연산 장치(ALU)를 설계하거나 외부에서 가져와 사용하게 됩니다. 설계 방안은 다음과 같습니다:
부동소수점 데이터의 경우 IEEE 754 표준에 따라 덧셈/곱셈 연산기를 설계해야 합니다.
이를 위해 정밀도와 연산 속도 요구 사항에 맞는 가감산기 및 곱셈기 등을 RTL로 직접 설계하거나, 오픈소스 IP 또는 상용 IP를 사용하는 방식을 고려합니다.
예를 들어, BF16을 사용하는 경우 FP32보다 간소화된 연산기를 설계할 수 있어 전력과 면적을 절감할 수 있습니다.
말씀해주신 full FP 를 쓰는 방법도 있지만, 정확도를 최대한 유지하면서 Int 를 가져가는게 PPA 측면에서 유리하기 때문에, Mixed precision 방식을 많이 사용하는 것 같습니다.
즐공하세요 🙂