EvoGP: GPU 네이티브 트리 기반 유전 프로그래밍 프레임워크, 피크 성능 10^11 GPops/s

img

유전 프로그래밍은 구조 탐색과 해석 가능성을 겸비한 진화적 방법으로, 기호 회귀, 분류, 제어 등의 작업에서 독특한 이점을 제공한다. 매개변수를 최적화할 뿐만 아니라 분석 가능한 프로그램 표현식을 직접 탐색하고 생성할 수 있다. 그러나 개체 구조의 이질성과 불규칙한 실행 경로로 인해 기존 유전 프로그래밍 구현의 대부분은 CPU 기반 실행에 머물러 있으며, 오랫동안 GPU에 진정으로 적응하는 데 어려움을 겪어 왔다. 이는 계산 효율 향상을 직접적으로 제한하며, 현대 애플리케이션에서 대규모 데이터셋이나 복잡한 시뮬레이션 환경을 처리하기 어렵게 만든다.

이 과제에 대응하기 위해 우리는 EvoGP 프레임워크를 제안하여 트리 표현, 유전 연산자 로직, 병렬 실행 메커니즘을 근본부터 재설계했다. 실험 결과에 따르면 EvoGP는 피크 계산 처리량 10^11 GPops/s를 초과하며, 50만 개체 규모의 개체군을 1초 이내에 빠르게 평가할 수 있고, 기존 GPU 구현 대비 최대 304배 빠르다. 이 이정표는 유전 프로그래밍이 하드웨어 적응 장벽을 확실히 돌파하고 GPU 가속 고성능 컴퓨팅 시대에 진입했음을 의미한다.

유전 프로그래밍의 GPU 적응 과제

최근 GPU는 대규모 병렬성과 높은 처리량 덕분에 고성능 지능 컴퓨팅의 핵심 인프라가 되었다. 그럼에도 유전 프로그래밍은 이 하드웨어 이점을 충분히 활용하지 못해 왔다. 핵심 장애물은 현대 하드웨어 아키텍처에 맞는 표현 및 실행 방식의 부재에 있다. GPU의 Single Instruction, Multiple Threads(SIMT) 실행 모델은 규칙적이고 균일하며 배치 가능한 데이터 처리에 탁월하다. 반면 유전 프로그래밍 개체는 트리 크기, 토폴로지, 평가 로직이 다양한 등 뚜렷한 구조적 이질성을 보인다. 이러한 구조를 GPU에 올리면 비연속 메모리 접근, 비효율적인 동적 메모리 할당, 심각한 스레드 분기 등의 문제가 즉시 드러난다.

동시에 GPU 연산 능력을 진정으로 끌어내려면 개체 트리 내부의 데이터 수준 병렬과 개체군 수준의 개체 간 병렬을 모두 처리해야 한다. 단일 스케줄링 전략 아래에서 이 두 모드를 통합하고, 메모리 레이아웃을 최적화하며, 리소스 경합을 방지하는 것은 매우 어려운 시스템 공학 과제이다. 과거 많은 구현은 근본적인 설계 결함으로 데이터 수준 병렬만 활용하여 GPU의 동시 처리 능력 대부분이 유휴 상태에 놓였다. EvoGP가 해결하는 것이 바로 이 근본 문제이다. 유전 프로그래밍을 GPU에서 겨우 실행하는 것이 아니라, GPU 시대에 진정으로 준비된 계산 프레임워크가 되도록 전용 기반 아키텍처를 제공한다.

트리 구조의 텐서화 표현

유전 프로그래밍을 GPU 시대로 이끌려면 먼저 개체 구조의 이질성 장벽을 제거해야 한다. 전통적인 포인터 기반 또는 연결 리스트 트리 구조는 매우 불규칙한 메모리 레이아웃을 생성하여 GPU 배치 실행을 완전히 차단한다. 이를 위해 EvoGP는 혁신적인 텐서화 표현을 도입하여, 선형 접두사 인코딩 방식으로 트리 구조를 노드 유형, 노드 값, 부분 트리 크기를 포함하는 연속 배열로 인코딩한다.

크기가 다른 트리를 처리하기 위해 EvoGP는 최대 허용 길이 제약을 도입하고 NaN 값으로 패딩 정렬을 수행한다. 이 변환을 통해 EvoGP는 개체군 내 형태가 다양한 개체를 고정 형태의 메모리 정렬된 텐서 행렬로 성공적으로 통일한다. 이 텐서화는 동적 메모리 할당 오버헤드와 불규칙 인덱싱을 제거하여, GPU가 균일한 메모리 접근과 고처리량 동시 계산을 수행할 수 있는 기반을 형성한다——프레임워크 전체가 GPU 시대에 진입하는 토대이다.

img

그림 1: 트리 구조의 텐서화 표현. EvoGP는 트리를 통일된 배치 표현으로 인코딩하여, 구조가 다양한 프로그램 개체를 GPU에서 효율적으로 처리할 수 있게 한다.

유전 연산자의 통합 리팩터링

트리 구조의 텐서화 표현을 완료한 후, EvoGP는 유전 연산자를 최하위 수준에서 추가로 리팩터링하여 GPU 아키텍처에 맞춘다. 전통적인 트리 표현에서는 교차나 돌연변이 같은 구조 변경에 부분 트리 경계를 결정하기 위한 반복적 시퀀스 파싱이 필요하여 O(n) 시간 복잡도를 유발하고 GPU 실행 효율을 크게 떨어뜨린다. 텐서화 인코딩에서 명시적으로 보존된 부분 트리 크기 배열 덕분에, 시스템은 이제 O(1) 시간에 부분 트리 경계에 직접 접근할 수 있어 비용이 큰 구조 파싱을 완전히 제거한다.

이 이점을 바탕으로 EvoGP는 일점 교차, 부분 트리 돌연변이 등 다양한 트리 기반 유전 연산자의 구조적 공통점을 추출하여 단일 핵심 계산 원시 연산인 부분 트리 교환으로 통일한다. 이를 통해 복잡한 구조 진화가 고도로 규칙적인 메모리 슬라이싱 및 텐서 연결 연산으로 변환된다. 이 리팩터링은 병렬 실행 중 제어 흐름 오버헤드를 크게 줄여, 유전 프로그래밍의 핵심 진화 과정을 현대 고처리량 하드웨어에 적합한 계산 형태로 만든다.

img

그림 2: 통합 교차/돌연변이 연산. EvoGP는 여러 트리 기반 유전 연산자를 단일 기반 메커니즘 아래에 통일하여, 핵심 진화 과정을 GPU 병렬 실행에 더 적합하게 한다.

병렬 전략의 적응적 전환

GPU 시대에 번영하려면 알고리즘이 하드웨어 연산 능력을 최대한 끌어내야 한다. 작업마다 데이터 규모는 극적으로 다르며, 단일 병렬 전략으로는 안정적인 장치 활용률을 유지할 수 없다. 이를 위해 EvoGP는 적응적 병렬 전략을 설계·구현하여, 데이터셋 크기에 따라 개체 내 및 개체 간 병렬을 동적으로 결합한다.

중소규모 데이터셋을 처리할 때 시스템은 하이브리드 병렬 모드를 채택하여 단일 컴퓨트 커널 내에서 데이터 수준과 개체군 수준 병렬을 결합한다——개체 워크로드가 부족할 때 개체군 수준 동시성이 유휴 GPU 코어를 채운다. 대규모 데이터셋에서는 단일 평가 작업이 하드웨어를 포화시키고, 시스템은 자동으로 순수 데이터 병렬 모드로 전환하여 각 개체의 평가에 독립적인 컴퓨트 커널을 시작하고 트리 구조를 읽기 전용 상수 메모리에 로드한다——메모리 브로드캐스트 효율을 극대화하고 메모리 접근 처리량을 크게 향상시킨다. 이 적응 메커니즘은 시스템이 다양한 워크로드 전반에서 극히 높은 계산 효율을 유지하도록 보장하며, GPU 가속 프레임워크의 핵심 보장이다.

img

그림 3: 적응적 병렬 메커니즘. EvoGP는 작업 규모에 따라 다른 병렬 모드를 자동 전환하여 더 높은 계산 효율을 유지한다.

고성능과 사용 편의성의 통합

고성능 컴퓨팅 프레임워크의 생명력은 기반 속도뿐만 아니라 생태계 호환성과 사용 편의성에도 있다. 많은 실용 애플리케이션이 OpenAI Gym, MuJoCo, Brax, Genesis 등 Python 기반 생태계에 배포된다. 극한의 GPU 가속을 추구하면서 EvoGP는 PyTorch 런타임 내에 커스텀 고성능 CUDA 컴퓨트 커널을 커스텀 연산자로 임베드하여 기존 개발 생태계와 원활하게 통합한다.

또한 GPU 아키텍처 이점을 최대한 활용하기 위해 EvoGP는 완전 GPU 상주 모델을 채택하여 개체군 데이터와 평가 컨텍스트를 GPU에 완전히 유지한다——기존 프레임워크에서 흔한 고비용 호스트-장치 데이터 전송 오버헤드를 완전히 제거한다. 이 제로 카피 설계 철학으로 EvoGP는 현대 GPU 가속 강화 학습 환경과 자연스럽고 효율적으로 통합되어, 극한 성능과 높은 확장성의 균형을 이룬 완전한 시스템으로 엔드투엔드 효율적 병렬 시뮬레이션 능력을 제공한다.

img

그림 4: 전체 아키텍처. EvoGP는 고립된 가속 모듈이 아니라, 기반 성능과 상위 계층 사용 편의성의 균형을 이룬 완전한 프레임워크이다.

대규모 개체군에서 성능 해방

계산 병목 돌파는 진화 알고리즘의 탐색 경계를 직접 확장하여, 유전 프로그래밍이 GPU 시대의 혜택을 진정으로 누리게 한다. 과거에는 초대규모 개체군 설정이 계산 비용 때문에 실용적이지 않은 경우가 많았다. EvoGP의 극히 높은 처리량의 개체군 수준 병렬 메커니즘 아래에서는 방대한 수의 개체 처리가 실무에서 진정으로 가능해졌다.

핵심 벤치마크 테스트에 따르면 EvoGP의 피크 처리량은 10^11 GPops/s를 초과하며, 대규모 동시 처리에서 놀라운 속도를 보인다——최대 50만 개체 규모 개체군의 포괄적 평가를 단 1초 만에 완료한다. 실행 시간에서 기존 GPU 구현에 대해 결정적 우위를 확립한다. 더 중요한 것은 대규모 개체군 테스트에서 알고리즘이 우수한 확장성을 보인다는 점이다. 기호 회귀 오차 수렴, 분류 정확도 향상, 로봇 제어 작업의 누적 보상에서 더 큰 개체군이 일관되게 더 나은 최종 성능을 제공한다. 이는 EvoGP가 해방하는 것이 계산 속도뿐만 아니라는 것을 증명한다——더 큰 개체군이 더 짧은 벽시계 시간에 더 높은 품질의 해에 도달할 수 있어, 유전 프로그래밍 방법의 탐색 잠재력과 능력 상한을 근본적으로 높인다.

img

그림 5: 전체 성능 비교. EvoGP는 여러 작업 설정에서 현저한 성능 우위를 달성하면서 안정적인 결과 품질을 유지한다.

img

그림 6: 다양한 개체군 규모에서의 성능. EvoGP는 더 큰 개체군 규모를 허용 가능한 시간 내에 실질적으로 사용 가능하게 하고 더 강한 탐색 잠재력을 해방한다.

결론

EvoGP 프레임워크는 유전 프로그래밍이 현대 GPU 아키텍처를 어떻게 효과적으로 활용할 수 있는지에 대한 질문에 체계적으로 답한다. 이는 기존 구현에 대한 단순한 패치가 아니라, 텐서화 표현, 연산자 리팩터링, 적응적 병렬성을 통해 기반 설계에서 근본적 혁신을 달성하여——유전 프로그래밍이 고성능 컴퓨팅 시스템에 진입하는 길을 완전히 연다. 본 연구는 고전적 진화 방법이 컴퓨팅 시대에도 지속적인 활력을 지님을 보여줄 뿐만 아니라, 해석 가능한 기계 학습과 자율 에이전트 의사결정에 고도로 확장 가능한 시스템 수준 솔루션을 제공하여——유전 프로그래밍이 GPU 가속 시대에 진정으로 진입했음을 표시한다.

오픈 소스 / 커뮤니티

📄 논문:

https://ieeexplore.ieee.org/document/11390710

🔗 GitHub:

https://github.com/EMI-Group/evogp

🔼 상위 프로젝트(EvoX):

https://github.com/EMI-Group/evox

🌐 QQ 그룹: 297969717

img

QQ 그룹 | Evolutionary Machine Intelligence