메인 콘텐츠로 건너뛰기
page thumbnail

AI 딥러닝을 위한 인공지능 ROCm 커널, Hugging Face로 쉽고 빠르게 빌드·공유하기

AI와 인공지능 기술이 발전하면서, GPU 등 하드웨어의 효율적인 활용이 무엇보다 중요해졌습니다. 최근 AMD의 ROCm(라데온 오픈 컴퓨트) 생태계를 활용한 딥러닝 최적화 커널이 각광받는 가운데, 커널 제작·공유를 훨씬 쉽게 만들어주는 Hugging Face의 최신 툴과 워크플로우가 주목받고 있습니다. 이 글에서는 ROCm 커널이 무엇인지, 실제로 어떻게 AI 개발자가 쉽고 빠르게 특화 커널을 만들고 활용할 수 있는지, 단계별로 친절하게 안내합니다.

ROCm, 인공지능 GPU의 오픈 혁명

ROCm(라데온 오픈 컴퓨트)은 AMD가 개발한 GPU 프로그래밍을 위한 오픈소스 소프트웨어 스택입니다. NVIDIA CUDA와 비슷한 역할을 담당하지만, 고성능 GPU 컴퓨팅·딥러닝 등에 특화되어 자유롭게 커널을 개발하고 배포할 수 있다는 점이 큰 장점입니다. ROCm은 HIP(Heterogeneous-Compute Interface for Portability)라는 언어를 통해 코드 이식성이 뛰어나며, 실제 대규모 AI 모델 트레이닝에서도 점점 더 많이 채택되고 있습니다.

특히 MI300X와 같은 최신 AMD Instinct GPU에 최적화된 커널을 사용하면, 기존보다 메모리 대역폭과 연산 효율을 극적으로 끌어올릴 수 있습니다.

맞춤형 커널은 왜 AI 성능에 중요할까?

딥러닝 작업에서 큰 모델을 돌리려면, CPU 대신 GPU에서 복잡한 행렬 곱셈 등 연산을 엄청나게 빠르게 처리해야 합니다. 이때 일반적인 연산자(op)만 사용하면 하드웨어 성능을 다 이끌어내기 어렵습니다. 바로 이때 등장하는 것이 커스텀 커널!

대표적으로 GEMM(General Matrix Multiplication)과 같은 행렬 곱셈 커널은 각 AI 모델과 하드웨어 특성에 딱 맞게 설계되면, 속도와 효율에서 엄청난 차이를 만듭니다. 예를 들어, FP8(8비트 부동소수점) 등 저정밀도 포맷을 활용해 메모리 사용량을 줄이면서도 연산량은 극대화할 수 있습니다.

커널 제작의 복잡함, Hugging Face가 해결한다

커널을 만드는 일은 전문가에게도 쉽지 않았습니다. CMake, Nix, 다양한 컴파일 오류, ABI 버전 문제 등 복잡한 빌드 환경 때문에 많은 개발자가 시행착오를 겪곤 했죠.

하지만 이제 Hugging Face에서 제공하는 kernel-builderkernels 라이브러리를 사용하면, 빌드·연동·공유까지 한 번에 해결할 수 있습니다. 모든 과정을 자동화해, 개발자는 성능 개선에만 집중할 수 있습니다.

Hugging Face와 ROCm을 통한 커널 빌드·공유 워크플로우 이미지 출처: huggingface

커널 빌더는 ROCm을 비롯해 CUDA, Metal, XPU 등 다양한 백엔드를 지원합니다. 본 글에서는 ROCm 기반 AMD GPU 특화 커널을 만드는 과정을 집중적으로 다룹니다.

프로젝트 구조: 깔끔하게 시작하는 커널 개발

효율적인 커널 개발을 위해서는 프로젝트 구조가 중요합니다. 아래는 실제 커널 빌더가 인식하는 폴더 구조 예시입니다.

gemm/
├── build.toml
├── gemm
│  └── gemm_kernel.h
├── flake.nix
└── torch-ext
    ├── torch_binding.cpp
    ├── torch_binding.h
    └── gemm
        └── __init__.py
  • build.toml: 프로젝트의 ‘두뇌’로, 빌드 전체를 관리하는 설정 파일입니다.

  • gemm/: 실제 GPU 연산이 들어있는 코드 (HIP, C++ 등).

  • flake.nix: 커널 빌더와 모든 의존성의 버전을 고정, 환경 재현성을 보장합니다.

  • torch-ext/: PyTorch와 커널을 연동하는 Python/C++ 바인딩 및 래퍼 코드.

이 구조 덕분에, 파일 이름만 제대로 정해주면 복잡한 헤더·구현 코드 관리도 아주 쉽습니다.

설정 파일로 빌드 자동화! (build.toml & flake.nix)

커널 빌드의 핵심은 자동화입니다. build.toml 파일에 커널 이름, 백엔드(여기선 ROCm), 지원 GPU 아키텍처 등 주요 정보만 입력하면, 커널 빌더가 알아서 필요한 소스·헤더 파일을 모아서 빌드해 줍니다. 예를 들어, MI300X GPU에 맞춘다면 rocm-archs = ["gfx942"]처럼 설정합니다.

또한 flake.nix 파일이 있으면, Nix(범용 패키지 관리 및 빌드 환경 툴)를 통해 어떤 운영체제에서도 똑같은 환경으로 커널을 빌드할 수 있습니다. 이 두 파일 덕분에, 팀 전체가 같고 일관된 개발환경을 공유할 수 있죠.

PyTorch 연동: 커스텀 커널을 첫번째 클래스 연산자로!

커널을 빌드한 뒤에는 PyTorch에서 바로 쓸 수 있도록 연동합니다. C++로 만든 커널을 PyTorch의 고유(native) 연산자로 등록하면, 마치 PyTorch의 기본 함수처럼 Python에서 바로 활용할 수 있습니다.

예시)

import torch
from kernels import get_kernel
gemm = get_kernel("kernels-community/gemm")
result = gemm.gemm(A_fp8, B_fp8, A_scale, B_scale, C)

이처럼 커널 허브에서 불러온 연산자를 곧바로 쓰는 것만으로, 복잡한 연동 과정 없이 GPU 직행 연산까지 한 번에 해결됩니다.

실제 빌드와 업로드: Nix로 ‘재현 가능한’ 개발, Hugging Face로 즉시 공유

커널 빌더는 Nix 기반으로 동작하므로, 별도 리눅스/맥 환경에서도 손쉽게 빌드 가능합니다. 로컬 환경에서 커널을 빌드하면, Nix가 자동으로 필요한 종속성 설치·환경 구성까지 챙겨줍니다. 빌드 결과물만 골라서 Hugging Face Hub에 올리면, 전세계 개발자와 커널을 곧바로 공유할 수 있습니다.

이 과정은 다음과 같이 이뤄집니다:

  1. nix build . -L로 커널 빌드

  2. 결과물을 정리해서 커널 허브에 업로드

  3. PyTorch 등에서 바로 불러와 활용

모든 빌드 설정과 결과가 명시적으로 기록되기 때문에, 커널 개발 초기부터 배포·사용까지 ‘재현 가능(reproducible)’하게 관리됩니다. 이는 대규모 AI 연구·실험에서 아주 큰 이점입니다.

실전: AMD MI300X에서 FP8 행렬 곱 GEMM 커널 적용 사례

실제 사례로, MI300X GPU에 맞춘 FP8 블록 행렬 곱(GEMM) 커널은 AMD Instinct 하드웨어의 높은 처리량과 낮은 메모리 소모를 극대화합니다. FP8 포맷과 블록 스케일링을 이용하면, AI 모델 트레이닝의 효율이 크게 향상됩니다.

이러한 커널은 실제 MI300X 기반 LLM 학습에서 벤치마킹된 사례도 속속 보고되고 있습니다. 대규모 AI 모델(Billion-scale parameter)도 AMD의 하드웨어와 ROCm 소프트웨어 최적화를 바탕으로 CUDA 못지 않은, 혹은 그 이상의 효율로 돌아갑니다.

빠르고 쉽게: 커널 허브에서 불러오기만 하면 끝!

이젠 커널을 따로 설치하거나 소스 관리를 복잡하게 할 필요가 없습니다. Hugging Face 커널 허브에서 원하는 커널을 get_kernel("kernels-community/gemm")처럼 불러오면, 필요 라이브러리도 자동으로 로드되고 바로 사용할 수 있습니다. AI 생태계 전체가 개방되고 협업도 수월해집니다.

시사점: AI와 GPU 최적화 개발, 누구나 쉽게 시작하세요

AMD ROCm 커널은 딥러닝·AI 모델 개발의 새로운 무기로, 최대의 연산 성능과 개방성을 동시에 제공합니다. Hugging Face의 툴과 허브를 이용하면 복잡한 빌드도 자동화, 커널 공유는 원클릭, PyTorch 연동도 코드 몇 줄로 해결됩니다.

앞으로 인공지능과 하드웨어의 시너지를 극대화하면, 더욱 빠르고 똑똑한 AI, 그리고 더 많은 개발자들의 도전을 기대할 수 있습니다. ROCm과 Hugging Face를 활용해, 나만의 커널로 AI 개발을 혁신해 보세요!

참고

[1] ROCm - Wikipedia - Wikipedia

[2] Training Foundation Models on a Full-Stack AMD Platform: Compute, Networking, and System Design - arXiv

[3] 쉽게 ROCm 커널을 Hugging Face와 함께 구축하고 공유하기 - Hugging Face Blog