인공지능 가속기 하드웨어 디자인의 체계적 접근 방법
목차 (Table of Contents)
- 인공지능 하드웨어의 발전
- 모의 법칙과 하드웨어 개선
- 가속기 아키텍처의 특징
- 텐서 연산과 텐서의 개념
- 텐서의 표현과 구조
- 희소성과 이점
- 텐서 연산과 연산의 표기법
- 공유 인덱스와 교차 연산
- 텐서 연산을 통한 설계 개선
- 가속기 디자인의 명확하고 완전한 설명
인공지능 하드웨어: 성능 향상과 함께 발전하는 기술
🔍 인공지능 기술의 발전을 관찰하는 것은 확실히 흥미로운 일이다. 다양한 AI 알고리즘의 놀라운 성능과 능력에 열광하다 보면 속도와 정확성을 가능케 해주는 하드웨어의 개선 역할을 간과하기 쉽다. 이러한 개선은 모의 법칙(Mo's law)이라고 불리는 것에서 주로 비롯된다. 하지만 최근에는 모의 법칙이 점차 퇴화되고 있다는 증거가 있다. 모의 법칙은 경제 법칙이었고 특히 트랜지스터의 가격이 기하급수적으로 감소한다는 것을 다루었다. 실제 트랜지스터 가격은 대체로 비밀로 유지되는 경향이 있지만 이 같은 증거들을 통해 가격이 하락하지 않고 있다는 것을 알 수 있다.
💡 하드웨어의 개선에는 컴퓨터 아키텍쳐 엔지니어들이 특화를 활용해 더 효율적인 가속기 아키텍쳐를 구축하는 노력을 기울이고 있다. 지금까지 다양한 가속기 디자인에 참여해왔으며 그 중 일부를 소개하겠다. 각각은 독특한 특성과 기능을 가지고 있지만 대부분은 그림으로 설명되고 있는데, 이러한 그림은 이해하기 어려우며 자연스러운 언어로 된 설명은 부족하거나 구조가 불분명하여 전체 그림을 세분화하여 이해하기 어렵게 만든다.
인공지능 하드웨어의 발전
인공지능 하드웨어는 향상된 성능과 효율성을 제공하기 위해 지속적으로 발전하고 있다. 특히 가속기 아키텍처의 개발은 이러한 발전에 큰 역할을 한다. 이번 장에서는 가속기 아키텍처의 특징과 텐서 연산에 대해 자세히 알아보도록 하자.
1. 모의 법칙과 하드웨어 개선
✅ 모의 법칙은 경제 법칙으로, 트랜지스터의 가격이 기하급수적으로 감소한다는 원칙이다. 그러나 실제 트랜지스터 가격은 비밀로 보호되고 있다. 최근 증거들은 모의 법칙의 효력이 약화되었음을 시사한다. 이로 인해 컴퓨터 아키텍트들은 가속기 아키텍처의 특수화에 주력하고 있다.
✅ 가속기 아키텍처는 AI 알고리즘의 성능을 향상시키기 위해 고안된 특수화된 하드웨어다. 여러 가속기 디자인들이 이미 개발되었고, 각각은 독특한 특성과 기능을 가지고 있다. 그러나 이러한 디자인들은 보통 그림으로 설명되어 있어 이해하기 어렵다.
2. 텐서 연산과 텐서의 개념
✅ 텐서란 여러 값들이 다차원 구조로 구성된 데이터를 말한다. 텐서는 행렬, 배열 등의 형태로 표현될 수 있으며 차원은 랭크라고 부른다. 텐서는 다양한 연산에 활용되며, 특히 텐서 연산은 인공지능 알고리즘에서 핵심적인 역할을 한다.
✅ 텐서를 표현하는 방식 중 가장 효과적인 방법은 텐서 플로우라고 부르는 개념을 활용하는 것이다. 텐서 플로우는 텐서를 트리 구조로 표현하며, 각 레벨은 랭크에 해당한다. 각 플로우 상에서의 행 또는 열은 파이버(fiber)라고 불리며, 각 파이버는 좌표로 인덱싱된다. 이러한 텐서 표현 방식은 희소(sparse)한 텐서에 대해 효과적으로 변환할 수 있다.
3. 텐서의 표현과 구조
✅ 텐서는 표현 방식에 따라 다양한 형태가 있지만, 여기서는 하나의 추상적인 개념인 피버 트리(fiber tree)를 사용한다. 피버 트리는 텐서를 표현하는 방법 중 하나로, 각 레벨은 텐서의 랭크에 대응한다. 각 줄 또는 열은 피버로 표시되며, 각 피버는 좌표에 의해 색인된다. 텐서의 각 지점은 피버 트리의 좌표 경로를 통해 식별된다.
✅ 일반적으로 표현할 때, 텐서는 밀집한(dense) 형태가 아닌 희소한(sparse) 형태를 가지는 경우가 많다. 이는 많은 영점(zero value)을 포함하고 있음을 의미하는데, 이러한 희소성은 저장 공간을 줄이는 데에 유용하며 실행 시간과 에너지 소비를 절약할 수 있다.
4. 희소성과 이점
✅ 텐서에서 희소성의 존재는 많은 이점을 가져다준다. 희소한 텐서는 압축이 가능하므로 메모리 공간을 절약할 수 있다. 또한, 행렬 연산에 있어서 영점(zero value)는 실제로 아무런 연산이 필요하지 않음을 의미하기 때문에, 실행 시간과 에너지 소비를 줄일 수 있다.
5. 텐서 연산과 연산의 표기법
✨ 아인슈타인 합은 100년 가까이 전에 알버트 아인슈타인이 발표한 논문에서 처음 소개된 표기법이다. 이 표기법은 행렬 곱셈 등의 다양한 연산을 간결하게 나타낼 수 있다. 이 연산 표기법을 통해 계산의 본질을 명확하게 표현할 수 있다.
✅ 아인슈타인 합은 연산 과정에서 반복 공간(iteration space)에서 유효한 값들을 순회하는 것을 의미한다. 각 점에서 연산 결과 값은 왼쪽 상단의 요소에 할당되며, 이미 값이 할당된 경우에는 왼쪽 상단의 요소와 현재 값과의 연산이 수행된다. 이러한 아인슈타인 합은 연산의 계산 방법은 알려주지만, 순회 방법은 명시하지 않는다.
6. 공유 인덱스와 교차 연산
✏️ 각종 텐서 연산 과정에서는 두 개 이상의 희소한 피버가 공유 인덱스를 가질 수 있다. 이러한 공유 인덱스를 가지는 연산은 교차(cross) 연산으로 알려져 있다. 공유 인덱스가 있는 경우, 해당 인덱스의 값이 모두 존재해야만 연산이 가능하다. 이러한 교차 연산은 피버 트리 상에서의 파이버 연산을 통해 실현할 수 있다.
7. 텐서 연산을 통한 설계 개선
💡 텐서 연산을 활용한 디자인은 상세하고 명확한 사양을 제공한다. 이러한 사양을 기반으로 성능 모델을 만들 수 있다. 성능 모델은 인공지능 가속기의 속도, 면적 및 에너지 사용량을 예측하는 데에 활용된다. 또한, 이러한 접근 방식은 디자인 개선에도 도움을 준다. 이전에 발표된 가속기 디자인 중 한 디자인을 살펴보면, 논문의 그림과 자연어 설명만으로는 이해하기 어려운 부분이 있었다. 하지만 사양을 완전하고 간결하게 작성한 후, 최적화 가능한 부분을 찾아 성능을 향상시킬 수 있었다.
결론
이러한 방법론을 적용하면 실행에 독립적인 텐서 연산을 쉽게 표현할 수 있다. 또한, 처리 작업을 포맷과는 무관하게 명확하고 간결하게 설명할 수 있으며, 디자인을 분리할 수 있다. 이를 통해 효율적인 성능 모델의 작성과 세부적인 디자인 개선이 가능해진다. 더 나아가 앞으로 필요한 새로운 아키텍처를 탐구하는 길을 열어준다.
📌 자료 출처: