AgentKernelArena (AKA): GPU 커널 에이전트를 위한 A/B 테스트 및 강화학습(RL) 준비 환경
요약
AgentKernelArena는 GPU 커널 최적화 작업을 수행하는 AI 에이전트를 위한 통제되고 재현 가능한 실험 플랫폼입니다. 이 시스템은 A/B 테스트를 통해 모델, 프롬프트, 도구 등의 변경 사항을 측정하고, 강화학습(RL)의 보상으로 사용될 수 있는 객관적인 성능 신호를 제공합니다.
핵심 포인트
- A/B 테스트 기반: 모델, 프롬프트 등 다양한 요소를 비교할 수 있습니다.
- RL 준비 환경: 컴파일, 정확성, 속도 향상 등의 객관적 보상을 생성합니다.
- 실제 GPU 작업 지원: HIP, Triton 등 실제 커널 최적화 작업을 처리합니다.
- 재현 가능성 및 격리: 모든 실험은 재현 가능한 워크스페이스와 로깅을 제공합니다.
AgentKernelArena (AKA): GPU 커널 에이전트를 위한 A/B 테스트 및 강화학습(RL) 준비 환경
AgentKernelArena는 실제 GPU 커널 최적화 작업을 수행하는 AI 에이전트 개발을 위한 통제된 실험 플랫폼입니다. 이 플랫폼은 모델, 프롬프트, 도구, 에이전트 정책 전반에 걸쳐 재현 가능한 A/B 테스트를 가능하게 하며, 에이전트 강화학습(RL)의 보상으로 사용될 수 있는 객관적인 컴파일, 정확성 및 성능 신호를 제공합니다.
개요
AgentKernelArena는 에이전트의 변경 사항을 측정 가능하게 만듭니다. 기준선(baseline)과 처리(treatment)—예를 들어, 다른 모델, 프롬프트, MCP 서버, 스킬, 도구, 메모리 전략 또는 정책—를 사용하여 동일한 작업 세트를 실행하고, 동일한 실행 및 채점 파이프라인 하에서 결과를 비교할 수 있습니다.
이 플랫폼은 다음을 제공합니다:
-
통제된 A/B 실험: 작업을 고정하고 하드웨어, 환경 및 평가 규칙을 일정하게 유지하면서 반복 실행을 레이블링하고 비교합니다.
-
RL 준비 피드백: 외부 강화학습 시스템에서 보상으로 소비될 수 있는 작업별 컴파일, 정확성, 런타임, 속도 향상(speedup) 및 점수 신호를 생성합니다.
-
다중 에이전트 통합: 공유 인터페이스를 통해 Cursor Agent, Claude Code, Codex, DeepSeek Harness, GEAK 기반 에이전트 또는 사용자 정의 에이전트를 실행할 수 있습니다.
-
실제 GPU 작업 환경: HIP, Triton, FlyDSL, PyTorch-to-kernel 변환, 명령어(instruction)-to-kernel 생성 및 이미지 기반 커널 최적화 작업을 처리합니다.
-
격리되고 재현 가능한 실행: 모든 작업에 자체 타임스탬프 워크스페이스를 할당하고 로그, 수정된 소스 및 구조화된 결과를 보존합니다.
-
고정 워크로드 서비스 작업: 고정된 설정과 신선한 쌍별 측정(paired measurements)을 통해 모델 처리량으로 커널 변경 사항을 평가할 수 있습니다. e2e 가이드를 참조하세요.
-
중앙 집중식 평가: 최적화 에이전트와 독립적으로 컴파일, 정확성 및 GPU 성능을 측정합니다.
-
다중 GPU 스케줄링: 각 GPU당 하나의 격리된 Docker 워커를 시작하고 공유 큐에서 동적으로 작업을 가져옵니다.
-
Slurm/Spur 로그인 노드 워크플로우: MI355X GPU를 1개 또는 8개 할당한 다음, 할당된 컴퓨팅 노드에서 동일한 Docker 런타임을 실행합니다.
-
재개 가능한 실험(Resumable experiments): 프레임워크 완료 및 소스 증거가 유효한 작업은 반복하지 않고 실행을 재개할 수 있습니다.
-
홀드아웃 평가(Held-out evaluation): 최적화된 커널을 보지 못한 형태(unseen shapes)에서 테스트하고 일반화 격차(generalization gap)를 측정합니다.
-
작업 검증 및 시각화: 전용 에이전트를 사용하여 작업 품질을 검증하고 대시보드에서 로컬 실행 보고서를 비교할 수 있습니다.
-
SIKL 작업 작성:
sikl_task_builder를 사용하여 데이터셋 폴더에서 표준 Arena 작업을 생성, 수정 및 검증합니다.
AgentKernelArena는 환경과 목표 보상 신호(objective reward signals)를 제공할 뿐이며, 현재 RL 트레이너, 리플레이 버퍼 또는 정책 업데이트 루프(policy-update loop)는 포함하고 있지 않습니다. 이 시스템의 작업별 워크스페이스는 보안 샌드박스가 아니라 재현성 및 동시 실행 분리(concurrent-run separation)를 제공합니다: 에이전트 프로세스는 특권 컨테이너 내부에서 허용적으로 실행되며 마운트된 레포지토리와 인증 상태에 접근할 수 있습니다.
A/B 테스트 워크플로우
서로 다른 접미사(suffix)를 사용하여 동일한 구성을 두 번 실행합니다. 이때 테스트하는 기능(capability under test)만 두 실행 간에 변경합니다.
# 실험의 양쪽 모두에 사용되는 실행 구성을 선택합니다.
CONFIG_PATH=example_configs/quickstart_claude_mi300.yaml
...
생성된 보고서를 직접 비교합니다:
python3 src/tools/compare_runs.py \
workspace_MI300_claude_code/run_<timestamp>_baseline \
workspace_MI300_claude_code/run_<timestamp>_treatment
시각적 비교를 위해 visualization module README에 설명된 대로 로컬 대시보드를 구축합니다.
확률론적 에이전트(stochastic agents)의 경우, 일치하는 baseline/treatment 쌍을 반복하고 관찰된 델타(deltas)를 실행 간 분산(run-to-run variance)과 함께 해석해야 합니다.
아키텍처
핵심 구성 요소
AgentKernelArena/
├── main.py # 오케스트레이션 실행, 재개 및 병렬 큐
├── example_configs/ # 빠른 시작 및 선별된 벤치마크 실행 설정
...
실행 흐름 (Execution Flow)
- 실행 구성(run configuration)과 선택된 에이전트를 로드합니다.
- 구성된 셀렉터와 일치하는 태스크
config.yaml파일을 발견합니다. - 격리된 태스크 작업 공간을 생성하고 선언된 소스를 구체화(materialize)합니다.
- 태스크를 검증하고, 독립적인 기준선(baseline)을 설정하며, 존재하는 경우 초기 후보를 확인합니다. 생성 대상은 구현되지 않은 상태에서 시작할 수 있습니다.
- 태스크 프롬프트를 구성하고 작업 공간 내부에서 선택된 에이전트를 실행합니다.
- 에이전트의 수정된 구현체를 독립적으로 컴파일, 검사 및 시간 측정합니다.
- 보상 신호와 점수를 포함하는 구조화된
task_result.yaml을 작성한 다음, 승인된 후보에 대해 모든 태스크 선언 내보내기(export)를 실행합니다. - 모든 태스크 결과를 실행 수준의 CSV, JSON 및 텍스트 보고서로 취합합니다.
task_validator는 검증 전용 경로를 따르며 커널을 최적화하고 점수 매기는 대신 validation_report.yaml을 작성합니다.
다중 GPU 실행의 경우, 호스트 측 Docker 러너가 실행 디렉터리 아래에 공유된 .parallel/ 큐를 생성합니다. 각 장기 실행 워커는 하나의 논리적 GPU를 보고하며, 한 번에 하나의 태스크를 원자적으로(atomically) 할당받고, 큐가 빌 때까지 더 많은 작업을 위해 반환됩니다. 최종 취합은 모든 워커가 완료된 후에 단 한 번 실행됩니다.
지원되는 에이전트 (Supported Agents)
각 실행은 하나의 agent.template을 선택합니다. 반복적인 실행을 통해 서로 다른 에이전트나 동일한 에이전트의 다른 구성을 비교할 수 있습니다.
| Template | 목적 |
|---|---|
cursor | Cursor Agent CLI 통합 |
| ... | |
레지스트리는 호환성 이름 geak_v4를 geak으로, 그리고 forge_operator2flydsl을 forge로 매핑합니다. 각각은 표준 런처(canonical launcher), 기본값 및 후처리 과정을 사용하며, 별도의 레거시 에이전트 디렉토리는 없습니다. 선택 가능한 이름은 src/module_registration.py를 참조하고, 공유된 v2 인터페이스와 런타임 요구 사항에 대한 GEAK 및 Forge 가이드를 참고하십시오. |
에이전트별 기본값은 agents/<agent_name>/agent_config.yaml 또는 선택된 에이전트 CLI에서 찾을 수 있습니다. 지원되는 런(run) 레벨 오버라이드는 에이전트 로컬 기본값보다 우선합니다. 특수화된 에이전트는 추가 설정이 필요할 수 있으니, 해당 디렉토리와 존재하는 경우의 에이전트별 README 파일을 확인하십시오.
테스트된 CLI/모델 버전, 런 레벨 오버라이드 및 라이브 검사의 범위는 CLI 에이전트 기본값 및 검증를 참조하십시오.
태스크 환경 (Task Environments)
| 태스크 유형 | 목표 |
|---|---|
hip2hip | 기존 HIP 구현 최적화 |
| ... | |
이 이름들은 태스크 선택을 구성합니다. 후보(candidate) 및 평가(evaluation) 선언이 동작을 결정합니다. 보존된 모든 스위트(suite)는 태스크 정의, 스키마 및 작성의 통합 태스크 계약(unified task contract)을 사용합니다. 프롬프트 시스템은 cuda2hip도 인식하지만, 현재 번들링된 태스크 트리는 cuda2hip/ 스위트를 포함하지 않습니다. |
설치 (Installation)
필수 조건 (Prerequisites)
- AMDGPU 커널 드라이버가 지원되는 Linux 호스트:
/dev/kfd와/dev/dri가 존재해야 함 - Docker Engine; 현재 사용자가
sudo없이 Docker 데몬에 접근할 수 있어야 함 - Git
- Node.js 22+ 및 npm (Claude Code의 대체 npm 설치 또는 다른 npm으로 설치된 에이전트 CLI를 사용하는 경우): DeepSeek Harness는 설정 가이드에 설명된 전용 Node.js 24 접두사를 사용함
- MI300/MI355X의 경우, GPU별 SGLang 이미지를 사용:
gfx942는lmsysorg/sglang:v0.5.12-rocm720-mi30x를 사용하고;gfx950은lmsysorg/sglang-rocm:v0.5.14-rocm720-mi35x-20260705를 사용함 - RDNA4
gfx1201의 경우, 러너가 누락된 기본 핀드(pinned) RDNA4 런타임을 처음 사용할 때 자동으로 빌드함. - 호스트에 설치되어 로그인된 지원되는 에이전트 CLI 또는 특수화된 에이전트가 요구하는 종속성
설정 (Setup)
git clone https://github.com/AMD-AGI/AgentKernelArena.git
cd AgentKernelArena
...
에이전트 CLI를 설치하는 것만으로는 충분하지 않음: docker-check-agents 또는 실험을 실행하기 전에 호스트에서 인증해야 함. Docker 러너는 Claude Code가 권장하는 네이티브 설치와 그 대체 npm 설치를 모두 지원함. npm 경로는 Node.js 22+ 및 npm을 요구함. 현재 대체 옵션은 공식 Claude Code 설정 가이드를 참조하세요.
다음 구성은 지원되는 런타임에 대한 시작점을 제공합니다:
| 구성 (Configuration) | 목적 (Purpose) |
|---|---|
example_configs/quickstart_claude_mi300.yaml | MI300/MI300X에서의 Claude Code GELU 작업 (gfx942); MI300 시리즈 하드웨어에서 첫 실행에 사용함. |
| ... |
CONFIG 없이 make docker-run을 실행하면 MI300/MI300X의 Claude 퀵스타트를 사용합니다. 다른 GPU에서는 일치하는 구성을 명시적으로 전달하세요. 예를 들어, MI355X에서는 CONFIG=example_configs/quickstart_claude_mi355x.yaml을 사용하세요.
FlyDSL 작업은 컨테이너 내에 FlyDSL을 필요로 합니다. 고정된 이미지(pinned image)가 이미 이를 제공할 수도 있으므로, 그렇지 않다면 다음 명령어를 실행하세요:
make docker-setup-flydsl
성능 측정 도우미(Performance timing helpers)는 src/tools/perf/에 유지 관리되며 실행 작업 공간으로 구현됩니다. 작업 타이밍 코드를 변경하기 전에 src/tools/perf/README.md를 참조하세요.
자세한 설치 및 호환성 정보는 docs/install/install.md와 docs/reference/compatibility-matrix.md를 참고하세요.
사용법 (Usage)
실험 구성하기 (Configure an Experiment)
설치한 물리적 GPU 및 에이전트에 맞는 예제부터 시작합니다.
실험 사전 점검(Experiment preflight)은 설정된 GPU 아키텍처와 감지된 GPU 아키텍처가 다를 경우 의도적으로 실패합니다. 사용자 지정 실험을 만들려면, 예제를 복사하여 수정하세요:
cp example_configs/quickstart_claude_mi300.yaml config_experiment.yaml
이 로컬 config_*.yaml 사본은 추적되지 않도록 유지하세요. 저장소는 해당 패턴을 무시합니다. 재사용 가능한 예제는 저장소 정리 확인(repository cleanliness checks) 후에만 커밋하세요.
Codex와 Claude Code의 경우, 실행 구성(run config)의 agent 매핑은 선택된 에이전트의 agent_config.yaml에 있는 model, effort, max_iterations, 및 timeout_seconds를 덮어쓸 수 있습니다. Cursor는 독립적인 effort만 제외하고 동일한 덮어쓰기를 허용합니다. 정확한 의미론(semantics)은 실행 레벨 덮어쓰기(run-level overrides)를 참조하세요. 다른 통합 기능들은 자체적으로 지원하는 설정을 정의합니다.
Cursor, Claude Code, Codex 또는 task-validator 구성의 경우, 선택된 첫 번째 클래스 호스트 CLI(검증기(validator)는 설정된 백엔드로 해결됨)만 확인하면 됩니다:
CONFIG_PATH=config_experiment.yaml
make docker-check-agents CONFIG="$CONFIG_PATH"
명시적으로 특정 하위 집합을 확인하려면 AGENTS=claude_code,codex를 사용하고, Cursor, Claude Code, Codex를 모두 함께 확인하려면 AGENTS=all을 사용합니다. Forge나 레거시 mini-swe와 같은 전문 통합 기능은 자체적인 종속성 검사를 수행합니다. GEAK 및 그 v2 별칭은 이 CLI 검사에서 Claude Code로 해결되며, 일반 실행 시에는 추가적으로 고정된(pinned) GEAK 엔진과 SDK를 확인합니다.
DeepSeek Harness 역시 설정 선택형 docker-check-agents 또는 명시적인 AGENTS=deepseek_harness를 지원합니다. 이는 API 키와 작업별 격리된 상태를 사용하므로 설정 가이드를 참조하십시오. AGENTS=all은 원래의 세 가지 CLI를 계속해서 확인합니다.
직렬 실행 (Run Serially)
make docker-run CONFIG="$CONFIG_PATH"
make docker-run CONFIG="$CONFIG_PATH" RUN_ARGS="--run-suffix experiment_name"
다중 GPU에 걸쳐 실행 (Run Across Multiple GPUs)
# 호스트 GPU ID 명시
make docker-parallel-run CONFIG="$CONFIG_PATH" GPU_IDS=0,1,2,3
...
Docker 병렬 경로는 cursor, claude_code, codex, 그리고 task_validator에 대해 검증됩니다. 전문 GEAK 통합 기능은 격리된 워커와 함께 사용되기 전에 자체 종속성 및 GPU-ID 구성이 필요합니다.
Slurm/Spur 로그인 노드에서 실행 (Run From a Slurm/Spur Login Node)
로그인 노드에 GPU나 Docker 데몬이 없는 경우, 기존 Docker 워크플로우에 진입하기 전에 컴퓨트 노드를 할당해야 합니다:
# 단일 GPU 개발 스모크/실행
make slurm-smoke
make slurm-run CONFIG=config_codex_mi355x_spur.yaml
...
동기식(synchronous), 배치(batch), 대화형(interactive), 리소스 재정의(resource-override), 인증, 로깅 세부 정보는 Slurm/Spur GPU 노드에서 실행을 참조하십시오.
실행 재개 (Resume a Run)
make docker-run CONFIG="$CONFIG_PATH" RUN_ARGS="--resume-latest"
make docker-run CONFIG="$CONFIG_PATH" RUN_ARGS="--resume-run run_20260702_041903_experiment"
...
작업 그룹 선택 (Select Task Groups)
작업 선택기는 tasks/을 기준으로 하는 경로입니다. 선택기는 하나의 작업을 지정하거나 모든 상위 디렉토리를 지정할 수 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub GameDev의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기