1 / 24 · 개념
추론과 학습의 범위
같은 입력에서 출력 채널만 3에서 6으로 늘리면 MAC 수와 바이어스 저장량은 어떻게 바뀌나요?
내용은 무료로 볼 수 있습니다. 수강 신청하면 학습 기록을 저장할 수 있어요.
무엇을 계산하는 회로인가
CNN 가속기를 설계할 때 먼저 정할 것은 곱셈기의 개수가 아니라 입력과 출력의 의미입니다. 추론은 이미 정해진 가중치로 입력을 순방향 계산해 결과를 만듭니다. 학습은 이 결과로 손실을 구한 뒤 기울기를 계산하고 가중치를 갱신합니다. 따라서 순방향 합성곱을 만들었다는 사실만으로 학습 가속기를 완성했다고 말할 수 없습니다. 이 과정의 목표는 작은 정수 CNN 추론 경로입니다. 기울기, 옵티마이저, 학습 정확도와 모델 파일 자동 가져오기는 실습 범위에 포함되지 않습니다.
입력 사진의 내용과 가중치는 달라도 회로에 필요한 약속은 구체적이어야 합니다. 배치 수 N, 입력 채널 C, 높이 H와 너비 W를 적고 출력 채널 M, 커널 크기 R과 S를 적습니다. 메모리의 순서는 여기서 NCHW로 고정합니다. 한 출력의 곱셈 횟수는 일반 합성곱에서 C×R×S입니다. 출력 모양이 N×M×Ho×Wo라면 총 MAC 수는 N×M×Ho×Wo×C×R×S입니다. 한 MAC은 곱하고 누적하는 한 쌍의 동작으로 셉니다. FLOP 수와 비교할 때는 곱셈·덧셈을 각각 세는 규칙인지 확인해야 합니다.
계산 예제
N=1, C=2, H=W=5, M=3, R=S=3인 입력에 패딩 없이 stride 1을 적용합니다. 출력의 공간 모양은 3×3이며 출력 원소는 1×3×3×3=27개입니다. 각 원소에 2×3×3=18개의 곱을 누적하므로 총 486 MAC이 필요합니다. 바이어스는 각 출력 채널마다 하나씩 저장하지만 공간 위치마다 더합니다. 따라서 바이어스 저장 값은 3개, 덧셈을 수행할 위치는 27개입니다. 이것을 486 MAC에 포함하는지 별도로 보고해야 비교가 공정합니다.
계산 계약에는 값뿐 아니라 순서도 들어갑니다. 입력 주소를 채널 우선으로 읽었는데 가중치를 공간 우선으로 묶으면 합법적인 숫자를 잘못된 항끼리 곱하게 됩니다. 출력 채널 번호와 공간 좌표를 함께 기록한 기준 결과를 준비하면 이러한 오류를 구별할 수 있습니다. 초기 실습은 배치 1에서 시작해 입력, 가중치, 바이어스, 출력 파일의 의미를 명시하고, 더 큰 배치로 확장하기 전에 이 계약을 고정합니다.
설계 기록
가속기가 받아들이는 모양과 stride, 패딩, 정수 범위, 반올림 방법을 표로 적어 보세요. 지원하지 않는 모양은 오류로 거부해야 합니다. 실습 프로그램이 임의 크기의 배열을 다룬다고 해서 RTL도 모든 모양을 지원한다는 뜻은 아닙니다. 주파수, 전력과 분류 정확도도 프로그램의 출력만으로 측정할 수 없습니다. 이후 단원에서는 계산 결과의 일치와 일정 모델의 MAC·사이클 수를 별도로 확인합니다. 학습의 순방향·역방향·갱신 단계는 PyTorch 공식 학습 설명을 참고하세요.
직접 생각해 보기
같은 입력에서 출력 채널만 3에서 6으로 늘리면 MAC 수와 바이어스 저장량은 어떻게 바뀌나요?
해설 보기
출력 원소가 54개가 되어 MAC 수는 54×18=972입니다. 바이어스 저장량은 6개입니다. 입력 텐서의 크기는 그대로이며 가중치 저장량은 두 배가 됩니다.