Kaizen: LLM으로 번역된 HPC 애플리케이션을 위한 변형 퍼징(Metamorphic Fuzzing) 및 차분
요약
LLM을 이용한 HPC(고성능 컴퓨팅) 코드 번역의 정확성을 검증하기 위한 새로운 프레임워크 Kaizen을 제안합니다. 변형 퍼징과 차분 테스트를 결합하여 컴파일 성공 여부만으로는 잡아낼 수 없는 의미론적 오류를 탐지합니다.
핵심 포인트
- 컴파일 성공이 코드의 동작 정확성을 보장하지 않음
- 변형 퍼징과 차분 테스트를 통한 의미론적 차이 탐지
- 커널 및 전체 프로그램 수준의 체계적 오류 패턴 발견
- 전체 프로그램 번역이 커널 수준보다 난이도가 높음
대규모 언어 모델(LLMs)은 CUDA를 OpenMP, OpenACC, Kokkos 또는 SYCL로 번역하는 것과 같이, 이기종 고성능 컴퓨팅(HPC) 프로그래밍 모델 간에 과학 코드를 이식하는 데 점점 더 많이 사용되고 있습니다. 그러나 현재의 평가 방식은 컴파일 성공 여부, 토큰 수준의 유사성, 또는 정적 벤치마크에서 개발자가 작성한 테스트를 사용하는데, 이는 동작의 정확성(behavioral correctness)을 신뢰성 있게 보장할 수 없습니다. 우리는 LLM으로 번역된 HPC 코드의 정확성을 평가하기 위한 변형 퍼징(metamorphic fuzzing) 및 차분 테스트(differential testing) 프레임워크인 Kaizen을 제시합니다. Kaizen은 소스 코드 변이(source-code mutation)를 통한 변형 퍼징을 사용하여 의미론적으로 동일한 프로그램을 생성하고, 문법 기반 입력 퍼징(grammar-based input fuzzing)을 통해 동작의 다양성을 탐색하며, 컴파일이 성공하고 개발자가 작성한 테스트를 통과하지만 잘못된 과학적 결과를 생성하는 원본 애플리케이션과 번역된 애플리케이션 사이의 의미론적 차이(semantic divergences)를 드러내기 위해 차분 테스트를 사용합니다. 우리는 커널 수준(kernel-level) 및 전체 프로그램(full-program) 입도(granularity)에서 세 가지 미세 조정된(fine-tuned) LLM을 사용하여 7개 도메인의 16개 과학 애플리케이션에 대한 CUDA-to-OpenMP 번역에 대해 Kaizen을 평가합니다. 우리의 평가 결과는 다음과 같습니다: (1) 컴파일 성공은 정확성을 나타내는 불충분한 지표입니다; (2) LLM으로 번역된 프로그램은 체계적인 컴파일 타임 오류 패턴을 보이며, 커널 수준 번역의 경우 9개 범주, 전체 프로그램 번역의 경우 27개 범주가 나타납니다; (3) 컴파일을 통과하는 의미론적 오류는 종종 입력에 의존적이며, 이를 드러내기 위해서는 차분 테스트가 필요합니다; (4) 전체 프로그램 번역은 커널 수준 번역보다 실질적으로 더 어렵습니다. 이러한 발견은 LLM 지원 HPC 코드 번역에 대한 정확성 중심의 평가가 필요함을 강조합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 arXiv cs.PL (Programming Languages)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기