어떤 레벨이든 모델은 사용하고자하는 목적, 의도에 맞게 만들면 된다. 모델이 모든 것을 설명하고 실물의 특성을 한땀 한땀 다 담고 있어야 한다는 생각은 답답하기 그지없다.
장인정신을 발휘하고 싶다면 다른 일을 찾아보자.
반도체의 실물과 가장 가까운 모델이라 여겨지는 TCAD 모델이 있다. 전자 하나, 광원 하나 모두 중요한 요소인 공정 시뮬레이션용 모델이다. 그 모델의 시뮬레이션 속도를 생각하면 현대의 50억개 트랜지스터가 들어가는 cpu는 우주가 소멸될 때까지 시뮬레이션 하고 있을 것이다. TCAD 모델은 트랜지스터 하나 만들고 특성을 보는데만 일주일이 걸린다.
엔지니어라면 항상 자원의 유한함을 염두에 두고 모델이 사용되는 환경을 생각해서 최적화하는 방향이 옳다.
딥러닝 모델의 복잡도와 에러 그리고 실행 시간
위 그림은 딥러닝 모델의 복잡도를 가지고 트레이드 오프를 설명한다. 물론 레이어도 많고 파라미터가 많을수록 오차는 줄어들겠지만 시간은 오래 걸릴 수 밖에 없다. 너무나도 중요한 기초 중에 기초인데 그걸 염두에 두는 사람이 드문 것 같다.
한정된 자원을 가지고 최대한 정확한 모델을 구성하는 것이 목적지다.
그걸 잊어버리고 모델을 만들다보면 모델이 산으로 간다.
아래 그림처럼 다양하고 멋진 기능이 많지만, 도무지 사용되지 않을 것 같은 전시용 기술들이 사용되고 칭찬받는다. 면적을 잡아먹든 말든. (회사 생활은 정치도 잘 해야 된다 ㅎㅎ)
회로 설계에서도 PPA의 트레이드 오프를 생각하지 않고 작업하는 사람은 없을 것이다.(그렇게 믿고 있다.) 어차피 constraint 로 주어져야 하는 값들이기 때문에 무시할 수 없다.
또 하나 과적합의 문제도 이야기 하고 싶다.
역시 딥러닝 모델이지만, 위 그래프를 보면 모델이 복잡할수록, 즉, 학습 데이터에 바이어스가 걸릴수록 전체 에러, 정합성이 떨어짐을 볼 수 있다.
반도체처럼 대량 생산하는 제품도 같은 공정이라도 찍어내는 설비에 따라, 같은 웨이퍼 내에서도 각 다이(칩)마다 또 다이 내부의 트랜지스터마다 특성의 편차가 생기게 된다.
그런데 우리가 모델을 만들 때 사용되는 데이터는 특정 공정의 특정 설비에서 나온 데이터 일부이다.
그 작고 소중한 데이터가 어떻게 전체를 대변하는지 알 수 없기 때문에 무조건 그 데이터에 딱 맞게 모델을 만들면 이후 설계 과정에서 실제로 일어날 수 있는 오류를 검증하지 못하는 결과를 낳을 수 있다.
그게 오늘날 지나치게 분업화된 이 업계의 폐해같다. 개인적으로 HW부터 SW까지 full stack 개발자가 필요하다고 생각한다.