RBLN NPU 아키텍처¶
Rebel100™은 ATOM™을 잇는 차세대 RBLN NPU 아키텍처입니다. Rebel100™은 칩렛 기반 SoC로, 동일한 구조의 컴퓨트 칩렛 4개를 하나의 패키지에 집적하고 UCIe-Advanced 다이 간(die-to-die) 링크로 연결하여 4개의 다이가 하나의 디바이스로 동작합니다. 각 칩렛에는 전용 HBM3E 스택이 연결되어 있으며, 디바이스 전체로는 144GB의 HBM3E와 4.8TB/s의 메모리 대역폭을 제공합니다. Rebel100™ 카드의 SKU는 RBLN-CRxx 형식을 따릅니다.
각 칩렛 내부에서 뉴럴 코어, DMA 엔진, 동기화 유닛은 온칩 메시(mesh) 인터커넥트를 통해 통신하며, 이 메시는 다이 간 링크를 거쳐 칩렛 경계 밖으로 확장됩니다. 소프트웨어로 구성 가능한 DMA 엔진은 로컬 HBM3E, 다른 칩렛에 연결된 HBM3E, 온칩 공유 메모리의 데이터를 태스크 단위 QoS 제어와 함께 전송합니다. 각 칩렛의 하드웨어 동기화 매니저가 칩렛 내부와 칩렛 간의 의존성을 모두 해소하므로, 4개의 칩렛이 하나의 디바이스로서 워크로드를 실행합니다.
자세한 내용은 리벨리온이 제공하는 다음 백서에 정리되어 있습니다:
명령어¶
명령어는 RBLN 컴파일러가 생성한 명령어 스트림의 단위이며, RBLN 프로파일러가 디바이스에서 측정하는 대상입니다. RBLN 프로파일러는 다음 명령어들을 기록합니다. [Host, Neural Engine Clusters, Neural DMA, Task DMA, External HDMA, Device HDMA, Device Sync, General Compute Engine]. 각 명령어는 연산, 하드웨어 구성 요소들 간 데이터 및 신호 전송 등을 나타냅니다.
RBLN 프로파일러는 이러한 명령어들을 시간 순서대로 기록하고, 이 결과를 Perfetto를 통해 시각화하는 기능을 제공합니다. Perfetto에 대한 더 자세한 설명은 Perfetto 소개 문서에서 확인할 수 있습니다. 각 명령어는 이를 실행한 칩렛의 트랙에 표시되며, 트랙이 묶이는 방식은 트레이스 구조에서 설명합니다. 다음 그림은 Rebel100™의 하드웨어 구성 요소와 앞에서 설명한 명령어의 연결을 보여 줍니다. 프로파일링 결과를 분석할 때 이 그림을 함께 참고하는 것을 권합니다.
Host¶
Host 명령어는, RBLN NPU에서 실행하는 것보다 호스트 CPU에서 실행하는 것이 더 유리한 작업들 혹은 NPU에서 지원하지 않는 작업들에 대해 호스트 CPU로 오프로드된 작업들을 의미합니다. 또한 RBLN NPU에서의 효율적인 추론을 위해 입력의 형태를 맞춰주는 작업들도 Host 명령어에 포함됩니다.
Neural Engine Clusters¶
Neural Engine Clusters 명령어는 칩렛의 뉴럴 코어에서 실행되는 작업들을 의미합니다. 뉴럴 코어에서 지원되는 연산 작업들은 지원하는 연산 문서에서 확인할 수 있습니다.
Neural DMA¶
Neural DMA 명령어는 HBM3E와 뉴럴 코어의 스크래치패드 메모리 사이의 데이터 전송을 의미하며, 프로그램 바이너리, 입력 텐서 데이터, 커널 가중치 등을 포함합니다. Neural DMA 명령어는 다른 명령어들과 동시에 수행될 수 있기 때문에, RBLN 컴파일러가 명령어들 사이에 필요한 의존성을 생성하여 올바른 실행을 보장하며, 이 의존성은 Neural Engine의 Task Manager를 통해 관리됩니다.
Task DMA¶
Task DMA 명령어는 HBM3E와 온칩 공유 메모리 사이의 데이터 전송을 의미하며, 입력 텐서 데이터, 중간 텐서 데이터, 커널 가중치 등을 포함합니다. RBLN 컴파일러는 Task DMA 및 Neural DMA 두 종류의 DMA 작업을 활용하여 타겟 워크로드의 최적의 성능을 달성할 수 있습니다.
External/Device HDMA¶
External HDMA 명령어는 호스트 DRAM과 디바이스 HBM3E 사이의 데이터 전송을 의미하며, Device HDMA 명령어는 서로 다른 디바이스의 HBM3E 사이의 데이터 전송을 의미합니다.
Device Sync¶
Device Sync 명령어는 서로 다른 디바이스 사이의 동기화를 의미합니다. RBLN 컴파일러는 디바이스 간 통신 부하를 최소화하면서 여러 디바이스 간의 올바른 동기화를 보장하며, Device Sync 명령어는 Command Processor에 의해 관리되어 데이터 통신이 성공적으로 완료되었는지 검증합니다.
General Compute Engine¶
General Compute Engine 명령어는 데이터 전송의 파라미터나 분기의 조건을 계산하는 등, 실행 시점에 결정되는 동작을 처리하기 위해 Command Processor가 실행하는 프로그램을 나타냅니다.
트레이스 구조¶
이 절에서는 위의 명령어들이 Perfetto에서 어떻게 묶이는지와, 명령어가 아닌 트랙과 슬라이스를 설명합니다. 각 Rebel100™ 디바이스는 최상위 그룹 하나로 표시되며, 그 안은 다음과 같이 구성됩니다.
Host,Device Workload,CCL Workload: 디바이스 레벨의 호스트 측 트랙입니다.CCL: 디바이스 간 집합 통신(collective communication) 그룹으로,CCL Command트랙을 포함합니다.CCL Workload트랙과 함께 모델이 집합 통신을 사용하는 경우에만 나타납니다.Chiplet 0~Chiplet 3: 칩렛별 그룹으로, 각각 해당 칩렛의 명령어 트랙(Neural Engine Clusters,Neural DMA,Task DMA,External HDMA,Device HDMA,Device Sync,General Compute Engine)을 포함합니다.
비동기로 실행되거나 동시에 진행되는 작업은 실행 구간이 서로 중첩될 수 있습니다. Perfetto는 중첩된 슬라이스를 하나의 트랙 안에서 여러 행으로 나누어 표시하므로, Device Workload, CCL Workload, Task DMA 트랙은 중첩이 발생하는 구간에서 여러 행으로 확장됩니다.
Chiplet¶
명령어는 이를 실행한 칩렛의 트랙에 표시되므로, 하나의 레이어가 여러 칩렛에 분산되면 같은 이름의 명령어가 여러 Chiplet 그룹에 나타날 수 있습니다.
Note
ATOM™은 단일 다이 SoC이므로 ATOM™ 트레이스에는 Chiplet 그룹이 없습니다.
Device Workload¶
Device Workload 슬라이스는 런타임 호출 한 건의 디바이스 측 실행 구간, 즉 디바이스에서 첫 명령어가 시작된 시점부터 마지막 명령어가 완료된 시점까지를 나타냅니다. Rebel100™은 런타임 호출을 비동기로 실행하므로 연속된 호출의 실행 구간이 서로 중첩될 수 있으며, 중첩된 구간은 트랙 안에서 여러 행으로 표시됩니다. Host를 제외한 모든 명령어 이름에는 W{workload_index} 토큰이 포함되며(Chiplet, Workload, CCL 트랙에 대한 이해 참고), 해당 명령어가 속한 구간이 Device Workload_{workload_index}입니다.
CCL¶
CCL 트랙은 RBLN vLLM의 텐서 병렬 서빙처럼 집합 통신(CCL)을 사용하여 모델을 여러 Rebel100™ 디바이스에서 실행할 때 발생하는 집합 통신 연산을 나타냅니다. 집합 통신을 사용하지 않는 실행에서는 이 트랙이 생성되지 않습니다. CCL Workload 슬라이스는 집합 통신 한 건의 전체 실행 구간을, 같은 이름의 CCL Command 슬라이스는 그중 해당 집합 통신의 명령어 스트림이 실행되는 구간을 나타냅니다.
프로파일링 오버헤드¶
Host 트랙에는 Profile Wait, Profile Readback, Profile Workload 슬라이스가 표시됩니다. 이 슬라이스들은 RBLN 프로파일러가 런타임 호출의 완료를 기다리고 디바이스에서 카운터를 읽어 오는 데 쓴 시간을 나타냅니다. 프로파일링을 비활성화하면 존재하지 않는 프로파일링 오버헤드이므로, 모델 성능을 평가할 때는 이 구간을 제외해야 합니다.
ATOM™은 인공신경망을 실행하는 데 필요한 모든 핵심 구성 요소들을 단일 칩으로 집적한 멀티코어 시스템 온 칩(System-on-Chip, SoC)입니다. ATOM™은 Neural Engines, Command Processor, 온칩 로컬/글로벌 스크래치패드 메모리 계층, 네트워크 온 칩(Network-on-Chip, NoC) 버스, PCIe 5.0 및 GDDR6 고속 입출력 인터페이스 등으로 구성되어 있습니다. ATOM™의 각 Neural Engine은 4MB의 로컬 SRAM(Scratch Pad)을 포함하고 있으며, ATOM™은 모든 Neural Engine이 공유할 수 있는 32MB의 글로벌 SRAM(Shared Memory)과 16GB의 오프칩 GDDR6 DRAM을 포함하고 있습니다. 이러한 온칩 및 오프칩 메모리 계층 구조는 메모리 접근으로 인해 소모되는 에너지를 최소화하면서 실행 성능을 최적화할 수 있도록 설계되었습니다.
16GB 이상의 메모리가 요구되는 대형 언어 모델(LLMs)과 같은 대규모 모델의 경우, 전체 모델을 단일 ATOM™ 디바이스로 실행할 수 없는데, 이 경우 리벨리온의 Rebellions Scalable Design(RSD) 아키텍처를 통해, 대규모 모델을 다수의 ATOM™ 디바이스에 분할하여 병렬적으로 처리할 수 있습니다. 이 과정에서 ATOM™ 디바이스 간의 데이터 통신 및 동기화가 필요하고, 이를 통해 적절한 작동을 보장할 수 있습니다.
자세한 내용은 리벨리온이 제공하는 다음 백서에 정리되어 있습니다:
명령어¶
명령어는 RBLN 컴파일러가 생성한 명령어 스트림의 단위이며, RBLN 프로파일러가 디바이스에서 측정하는 대상입니다. RBLN 프로파일러는 다음과 같은 총 8개의 명령어를 기록합니다. [Host, Neural Engine Clusters, Neural DMA, Task DMA, External HDMA, Device HDMA, Device Sync, General Compute Engine]. 각 명령어는 연산, ATOM™ 구성 요소들 간 데이터 및 신호 전송 등을 나타냅니다.
RBLN 프로파일러는 이러한 명령어들을 시간 순서대로 기록하고, 이 결과를 Perfetto를 통해 시각화하는 기능을 제공합니다. Perfetto에 대한 더 자세한 설명은 Perfetto 소개 문서에서 확인할 수 있습니다. 다음 그림은 ATOM™의 하드웨어 구성 요소와 앞에서 설명한 명령어의 연결을 보여 줍니다. 프로파일링 결과를 분석할 때 이 그림을 함께 참고하는 것을 권합니다.
Host¶
Host 명령어는, RBLN NPU에서 실행하는 것보다 호스트 CPU에서 실행하는 것이 더 유리한 작업들 혹은 NPU에서 지원하지 않는 작업들에 대해 호스트 CPU로 오프로드된 작업들을 의미합니다. 또한 RBLN NPU에서의 효율적인 추론을 위해 입력의 형태를 맞춰주는 작업들도 Host 명령어에 포함됩니다.
Neural Engine Clusters¶
Neural Engine Clusters 명령어는 Neural Engine에서 실행되는 작업들을 의미합니다. Neural Engine은 낮은 지연 시간, 높은 자원 효율, 유연함 등에 초점을 맞춰 설계되어 다양한 연산 작업을 효율적으로 처리할 수 있습니다. Neural Engine에서 지원되는 연산 작업들은 지원하는 연산 문서에서 확인할 수 있습니다.
Neural DMA¶
Neural DMA 명령어는 디바이스 DRAM과 Neural Engine의 Scratch Pad 사이의 데이터 전송을 의미하며, 프로그램 바이너리(Neural Engine 작동을 위한 프로그램 명령어 집합), 입력 텐서 데이터, 커널 가중치 등을 포함합니다. Neural DMA 명령어는 다른 명령어들과 동시에 수행될 수 있기 때문에, 필요에 따라 RBLN 컴파일러가 명령어들 사이에 의존성 신호를 생성하여 올바른 실행을 보장할 수 있도록 하고, 이러한 의존성 신호는 Neural Engine의 Task Manager를 통해 관리됩니다.
Task DMA¶
Task DMA 명령어는 디바이스 DRAM과 Shared Memory 사이의 데이터 전송을 의미하며, 입력 텐서 데이터, 중간 텐서 데이터, 커널 가중치 등을 포함합니다. RBLN 컴파일러는 Task DMA 및 Neural DMA 두 종류의 DMA 작업을 활용하여 타겟 워크로드의 최적의 성능을 달성할 수 있습니다.
External/Device HDMA¶
External HDMA 명령어는 호스트 DRAM과 디바이스 DRAM 사이의 데이터 전송을 의미하며, Device HDMA 명령어는 RSD 구성하에서의 서로 다른 디바이스 DRAM 사이 혹은 Shared Memory 사이의 데이터 전송을 의미합니다.
Device Sync¶
Device Sync 명령어는 RSD 구성하에서의 서로 다른 디바이스 사이의 동기화를 의미합니다. RBLN 컴파일러는 서로 다른 디바이스 간의 올바른 동기화를 보장하며, 이 과정에서 데이터 통신 부하를 최소화하고, 메모리 대역폭을 효율적으로 사용할 수 있도록 스케줄링합니다. RBLN 컴파일러에 의해 생성된 Device Sync 명령어들은 Command Processor에 의해 관리되며, 데이터 통신이 성공적으로 완료되었는지 검증하고 이후의 연속된 명령어들을 즉시 실행할 수 있도록 합니다.
General Compute Engine¶
General Compute Engine 명령어는 데이터 전송의 파라미터나 분기의 조건을 계산하는 등, 실행 시점에 결정되는 동작을 처리하기 위해 Command Processor가 실행하는 프로그램을 나타냅니다.
트레이스 구조¶
이 절에서는 위의 명령어들이 Perfetto에서 어떻게 묶이는지와, 명령어가 아닌 슬라이스를 설명합니다. ATOM™ 트레이스는 평면 구조로, 각 ATOM™ 디바이스가 최상위 그룹 하나로 표시되고 그 바로 아래에 Host 트랙과 명령어별 트랙이 있습니다. 명령어 이름은 {sequence_index}_{layer_name}_{command_index} 형식입니다. 자세한 내용은 분석 방법에서 확인할 수 있습니다.
Device Workload¶
Host 트랙에는 런타임 호출당 하나의 Device Workload_{n} 슬라이스가 표시되며, 해당 호출의 디바이스 측 실행 구간을 나타냅니다.
Profiling Overhead¶
Host 트랙에는 런타임 호출당 하나의 Profiling Overhead 슬라이스도 표시됩니다. 이 슬라이스는 RBLN 프로파일러가 해당 호출의 카운터를 디바이스에서 읽어 오는 데 쓴 시간을 나타냅니다. 프로파일링을 비활성화하면 존재하지 않는 프로파일링 오버헤드이므로, 모델 성능을 평가할 때는 이 구간을 제외해야 합니다.

