eTOPS가 뭐지?
TOPS는 머신러닝 관련 프로세서의 성능을 측정하는 중요한 파라미터입니다. 그런데 eTOPS라는 단어를 발견하고 이건 뭘까 궁금하던 차에, ~에 해당하는 equivalent 첫 글자 'e'인 것을 알았습니다. 오호라~ 이게 참 뭐라하긴 그렇지만, 개발자들은 요 의미를 잘 생각해야 합니다. 순진한게 100eTOPS라고 하면 앞에 숫자 100만 보이니까 제법 성능이 나올 것이라 생각하지만, 이 숫자를 만들기 위해서는 엄청나게 최적화된 조건에서 나온 숫자라는 것으로 예측할 수 있어야 합니다. 그런 최적화 조건은 일반적인 상용제품에서는 만들기 어렵기 때문에, 실제 숫자는 이 페이퍼에서 나온 숫자보다 훨~씬 더 떨어진다 것을 각오하고 벤치마킹을 해야 합니다.
왜 그럴까요?
제가 그동안 경험한 것을 바탕으로 설명을 드리면, 실제 이 페이퍼 숫자를 만들 때는 메모리구조가 최적화 되어 있을 가능성이 높습니다.
메모리구조가 최적화 되었다는 것은, 성능을 측정할 때 왠만하면 외부 DDR 메모리를 안쓰고, 가능한 내부 메모리나 캐쉬같은 것을 최대한 쓰도록 해서 측정할 가능성이 높습니다.
일단 외부 DDR 메모리를 쓰면, 그냥 골짜기에 쑥 빠지는 것 같은 레이턴시가 발생하기 때문에, 프로세서는 그동안 놀고자빠져 있을 가능성이 매우 높습니다.
게다가 실제 시스템은 이런 프로세서뿐만 아니라, 비디오 데이터를 외부 DDR 메모리에 쓰고 읽는 작업이 반복적으로 이루어지고 있기 때문에, 프로세서는 빈둥빈둥 놀 가능성이 높아집니다.
즉 eTOPS같은 것은 프로세서가 노는 시간 없이, 최대한으로 동작할 때 나오는 숫자이기 때문에, 감안하고 설계하시는 것이 좋습니다.
반면 FPGA같은 경우에는 기본적으로 그런 TOPS 숫자를 만들기에는 클럭주파수가 너무 낮습니다. 최대 500Mhz까지 돌리면 거의 최대치로 돌린다고 생각하면 됩니다. (최근에 나온 Versal 디바이스는 순수 FPGA가 아니고, 내부에 AIE 라는 것이 있어서, 좀더 ASIC에 근접한 성능을 낼 수 있습니다)하지만 알고리즘을 하드웨어에 맞춰서 프로그램하는 다른 일반적인 프로세서 보다는, 알고리즘에 하드웨어를 맞출 수 있는 FPGA는 페이퍼 숫자에 매우 근접한 성능을 낼 수 있습니다.
문제는 그렇게 알고리즘에 하드웨어를 맞출 수 있는 엔지니어가 부족하다는 것이죠.