병렬처리를 위한 CNN 타일링 관련 논문 찾아서 읽기
서버 관리를 위해 도커 사용법을 다시 익힌다.
특정한 크기의 행렬에서 동작할 수 있는 가속기와 병렬적으로 연산을 할 수 있는 하드웨어의 특징을 효율적으로 활용하기 위해서는 이런 특성에 맞게 연산을 할 필요가 있다. 이중에서도 특정 크기의 행렬을 가속하기 위해서 입력으로 주어지는 행렬의 크기를 특정한 크기로 잘라서 연산하는 것을 고민하였다. 특정한 크기로 행렬을 자르게 되면 그 외의 submatrix에서는 크기가 맞지 않을 수도 있다. 그런 크기로 나눠진 것도 한번에 연산을 진행하는 것이 아니라 잘라서 연산을 하는 식으로 한다면 하드웨어의 특징을 최대한 사용할 수 있을 것이다. 위와 같이 생각을 한 후에 가속기 외에서 병렬적으로 연산을 하기 위해서 행렬을 잘라서 하는 것은 어떨지 고민을 해보았지만 쉽게 답이 나오지 않아서 관련 논문으로는 어떤 것이 있..
다양한 크기의 matrix를 sub matrix들로 나눠서 연산하는 것을 고민한다.
Convolution 연산을 사용하는 곳은 AI가 부상하면서 영상처리에만 국한된 것이 아니라 범용적 사용으로 범위가 넓어졌다. 이에 Convolution 연산을 정리해보았다. Convolution은 Input으로 들어온 행렬에 Kernel을 이동시키면서 연산하는 것을 의미한다. 아래와 같은 예시가 존재한다고 하자. 그럴 경우 Kernel을 좌측 상단부터 시작해서 이동하면서 내부의 값을 곱하기 시작한다. 아래 그림들과 같이 좌측부터 우측으로 이동하고, 끝까지 도달한다면 다시 아래로 내려서 다시 옆으로 이동하면서 연산을 한다. 그림 2의 연산을 수행한다고 하 0*0 + 1*1 + 2*2 + 5*3 + 6*4 + 7*5 + 0*6 + 1*7 + 2*8 = 0 + 1 + 4 +15 + 24 + 35 + 0 + ..
Convolution 연산 정리