
Tenstorrent의 액셀러레이터로 개발하기: TT-Metalium을 이용한 개발 환경 구축
요약
Tenstorrent의 오픈 소스 저수준 AI 하드웨어 SDK인 TT-Metalium을 사용하여 개발 환경을 구축하는 방법을 설명합니다. Docker를 활용해 의존성을 관리하고, 커스텀 커널 개발 및 범용 계산기로서의 활용을 위한 최적화 설정을 다룹니다.
핵심 포인트
- TT-Metalium은 하드웨어에 직접 접근 가능한 저수준 SDK임
- Docker/Podman을 이용한 격리된 개발 환경 구축 권장
- 주소 변환 병목 방지를 위해 Hugepages 사용 권장
- 커스텀 OP 작성 및 머신러닝 외 코드 실행 가능
하드웨어 셋업
TT-Metalium™은 Tenstorrent의 오픈 소스(open source) 저수준(low level) AI 하드웨어 SDK로, 커스텀 커널(custom kernel) 개발, 실험 등을 위해 가능한 한 하드웨어(metal)에 가깝게 접근할 수 있도록 해줍니다. 블랙박스, 암호화된 API 또는 숨겨진 기능은 없습니다.
TT-Metalium™은 모델을 커스터마이징하거나, 새로운 모델을 작성하거나, 심지어 머신러닝 이외의 코드를 실행하고자 하는 개발 고객에게 매우 유용합니다.
TT-Metalium을 통해 새로운 모델을 작성하거나, Custom-OP를 작성하여 TT-NN에서 호출하거나, 머신러닝 이외의 코드를 작성할 수도 있습니다. 따라서 "범용 계산기"로서 다룰 수도 있다는 뜻입니다.
향후 개발을 TT-Metalium에서 진행하기 위해, 의존성 및 파괴 시의 복구를 고려하여 Docker(Podman도 가능)로 개발 환경을 구축합니다.
액셀러레이터는 다른 PCIe 디바이스와 마찬가지로 DMA를 사용하여 호스트 시스템의 메모리와 데이터를 주고받지만, 페이지 크기(page size)가 4KB 정도라면 주소 변환이 병목 현상(bottleneck)이 될 수 있으므로 Hugepages 사용이 권장됩니다.
기본적으로 tt-installer 실행 시 Hugepages가 설치되지만, 만약을 위해 확인해 둡니다.
0 이상이면 설정되어 있는 것입니다.
$ cat /sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepages
4
작업 시작에 앞서, 다음 파일들을 준비합니다.
└── tt-metal-container
├── Dockerfile
├── docker-compose.yml
...
먼저 적당한 이름의 디렉터리를 만들고(여기서는 tt-metal-container), 그 아래에 Dockerfile, docker-compose.yml, share 디렉터리를 생성합니다.
GitHub에 공식 리포지토리(repository)가 있으므로 (호스트 측에서) clone 해옵니다.
~/tt-metal-container/share$ git clone github.com/tenstorrent/tt-metal
Metalium을 빌드하기 위한 패키지들을 넣고 싶으므로 기술합니다.
VS Code 서버 등을 넣어두면 컨테이너 내부의 파일을 편집하기 편리하므로 작성해 둡니다.
FROM ghcr.io/tenstorrent/tt-metal/tt-metalium-ubuntu-22.04-release-amd64:latest-rc
RUN rm -f /etc/apt/sources.list.d/kitware*.list && \
apt-get update && apt-get install -y --no-install-recommends \
...
Tenstorrent 디바이스는 /dev/tenstorrent를 통해 액세스 가능하므로, 이를 Docker 컨테이너에서 투명하게 다룰 수 있도록 설정하면 Docker 상의 Metalium 환경에서 프로그램을 실행할 수 있게 됩니다.
services:
tt-metal-dev:
image: localhost/tt-metal-webtop:latest
...
빌드하여 컨테이너로 들어갑니다.
$ docker compose build
podman-compose version: 1.0.6
['podman', '--version', '']
...
권장 도구를 이용하여 스크립트로 빌드할 수도 있고, CMake와 ninja를 직접 실행하여 플래그(flag)나 컴파일러(compiler)를 수동으로 지정하여 빌드할 수도 있습니다.
스크립트
./install_dependencies.sh
./build_metal.sh --build-programming-examples
수동
cmake -B build -S . -DCMAKE_CXX_COMPILER=g++
cd build
ninja
...
clang++ 또는 g++로 빌드할 수 있지만, 컴파일러는 C++20 표준을 준수해야 합니다.
여기서는 DRAM Loopback을 테스트합니다.
./build_Release/programming_examples/metal_example_loopback
"Test Passed"라고 표시되면 성공입니다.
..
2026-06-12 00:55:11.329 | info | Metal | DPRINT Server attached device 0 (dprint_server.cpp:1103)
2026-06-12 00:55:11.488 | info | Metal | DPRINT: dispatch DRAM aggregation running on device 0 (dprint_server.cpp:648)
...
커스텀 커널 (Custom Kernel) 기술 그 첫 번째를 예정하고 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기