작성
·
400
1
안녕하세요, 좋은 강의 감사합니다.
1. MAC을 늘렸을 때 더 빠르게 연산이 된다고 하시면서 M(CO)에 동그라미 치셨는데 MAC과 M의 관계에 대해 직관적으로 연관짓기가 어려워서 어떤 관계인지에 대해 질문드립니다. 그리고 MAC은 연산량이라고 이해했는데, 연산량이 늘면 성능이 더 안좋아지는 것이 아닌가요?! 질문드립니다!
weight 개수를 CO+edge개수 라고 생각하면 될까요?
HW 설계에서 나눗셈이 resource가 왜 많이 드는지 궁금합니다. 단순하게 생각해보면 소수점 처리 때문일까 싶은데, 어떤 컨셉인지 궁금해서 질문드립니다.
알렉스넷처럼 batch가 2 이상인 모델은 병렬 연산을 요함으로 batch 1인 모델보다 많은 자원을 사용한다는 것이고, 이는 성능과 비용의 trade off 라고 이해하면 될까요?
답변 1
0
안녕하세요 :)
A1. 하나의 layer 에서의 MAC 량 = OCH * ICH * KX * KY 임으로 (CO == OCH) 비례관계입니다.
그리고 MAC은 연산량이라고 이해했는데, 연산량이 늘면 성능이 더 안좋아지는 것이 아닌가요?! 질문드립니다!
말장난 답변을 드리면, MAC 을 소화할 수 있는 NPU 의 연산량 이라고 하면, 좋은거고요. MAC 이 늘어남으로 인해서 연산해야하는 양이 늘어난다면 더 많은 연산이 필요함으로, 동일 NPU 에서는 불리합니다.
(당연한거죠)
A2. weight 개수를 CO+edge개수 라고 생각하면 될까요?
하나의 layer 에서의 MAC 량 = OCH * ICH * KX * KY = 하나의 layer 에서의 weight 수 입니다.
A3. 나눗셈을 직접 HW 구현한다 생각해보시면 되겠습니다. ( 설마.. "/" 이 기호를 쓰시진 않겠지요?) 어떻게 구현될까를 고민해보시면 답이 될꺼에요. (구글링 추천드립니다.)
A4.
이는 성능과 비용의 trade off 라고 이해하면 될까요?
어찌보면 적어주신게 맞는 해석 같긴한데, 한번 더 적습니다. 같은 말일 수 있어요.
Batch 는 자원의 양 총 사용량 측면 보다는 동시 계산 (parallel) 에 초점을 두시면 됩니다.
10 이라는 연산량을 두개의 GPU 에서 계산할껀데, batch 가 1 이라면 10 의 시간이 필요하죠.
대신 network 의 dependency 를 끊고 5,5 절반으로 나누었다면 두개의 GPU 상에서 5 의 시간이 필요하죠.
위의 두 case 의 "총 자원 사용 량"은 동일합니다. (계산하기 쉽게 하면, 총 자원 사용량 = 시간*자원사용량)
즐공하세요 :)