머신러닝을 배우면 정확도를 높이는 방법을 익히게 됩니다. 하지만 그 모델을 실제 칩에 올리려는 순간, 아무도 알려주지 않았던 질문이 남게 됩니다. 이 모델은 곱셈을 몇 번 수행합니까? 무엇을 얼마나 기억하고 있어야 합니까? 현재 목표로 하는 칩 스펙이 그 요구사항을 감당할 수 있습니까?
머신러닝 교재는 정확도를 다루고 반도체 교재는 회로를 다루지만, 그 사이를 잇는 자료는 드뭅니다. 저는 RISC-V CPU와 NPU를 FPGA로 구현하면서 이 간극을 반복해서 마주쳤습니다. 정확도가 가장 높은 모델이 정작 보드에는 들어가지 않는 상황 말입니다.
본 과정에서는 여섯 개의 알고리즘을 파이썬으로 직접 만들어보면서, 만들 때마다 곱셈, 비교, 메모리 사용량, 정확도를 측정합니다. 그리고 그 값을 실제 FPGA 보드의 자원으로 환산합니다. '곱셈 몇 번'이라는 표현만으로는 그 크기를 가늠하기 어렵지만, '보드의 몇 퍼센트'라고 하면 판단이 서기 때문입니다.
아홉 개의 Lab을 거쳐 여섯 개의 모델을 한 표에 모아보면 예상과 다른 그림이 드러납니다. 곱셈을 세는 데 아홉 편을 할애했지만, 정작 발목을 잡는 것은 곱셈이 아니었습니다. 이후 실수를 정수로 낮추고, 자릿수를 관리하며, 회로를 채점할 기준까지 마련합니다.
FPGA 보드는 필요하지 않습니다. 파이썬만으로 진행하며, 보드는 측정값을 환산하는 기준으로만 사용됩니다.