[논문 리뷰] HPC-Coder: Modeling Parallel Programs using Large Language Models
이 논문은 HPC 전용 코드와 성능 데이터로 미세튜닝된 대규모 언어 모델인 HPC-Coder를 소개한다. 이 모델은 정확도 97%로 OpenMP pragma를 정확하게 레이블링하고, 상대적 성능 변화를 최대 88%의 정확도로 예측할 수 있어, 고성능 컴퓨팅 워크로드에 도메인 특화된 대규모 언어 모델의 가치를 입증한다.
Parallel programs in high performance computing (HPC) continue to grow in complexity and scale in the exascale era. The diversity in hardware and parallel programming models make developing, optimizing, and maintaining parallel software even more burdensome for developers. One way to alleviate some of these burdens is with automated development and analysis tools. Such tools can perform complex and/or remedial tasks for developers that increase their productivity and decrease the chance for error. Until recently, such tools for code development and performance analysis have been limited in the complexity of tasks they can perform, especially for parallel programs. However, with recent advancements in language modeling, and the availability of large amounts of open-source code related data, these tools have started to utilize predictive language models to automate more complex tasks. In this paper, we show how large language models (LLMs) can be applied to tasks specific to high performance and scientific codes. We introduce a new dataset of HPC and scientific codes and use it to fine-tune several pre-trained models. We compare several pre-trained LLMs on HPC-related tasks and introduce a new model, HPC-Coder, fine-tuned on parallel codes. In our experiments, we show that this model can auto-complete HPC functions where generic models cannot, decorate for loops with OpenMP pragmas, and model performance changes in scientific application repositories as well as programming competition solutions.
연구 동기 및 목표
- HPC와 과학 계산 코드의 복잡도 증가에 대응하여 개발자가 병렬 프로그램을 작성하고 최적화하며 유지보수하는 데 도움이 되는 자동화된 도구를 개발한다.
- 하드웨어, 입력 데이터, 환경적 요인에 의존하는 바탕으로 대규모 정확한 성능 측정 데이터 확보가 어려운 점을 감안해, HPC 코드의 성능 모델링에서의 데이터 부족 문제를 해결한다.
- 일반 목적 모델에 의존하는 대신, 도메인 특화된 코드와 성능 데이터로 대규모 언어 모델을 미세튜닝하여 HPC 애플리케이션의 코드 생성 및 성능 예측을 향상시킨다.
- 코드 최적화된 LLM에서의 전이 학습이 소량의 성능 데이터로도 효과적인 성능 모델링을 가능하게 하여 광범위한 데이터 수집의 필요성을 줄일 수 있음을 입증한다.
- 코드 완성, 병렬화, 성능 분석과 같은 실제 HPC 개발 작업을 지원하는 실용적이고 오픈소스 모델(HPC-Coder)을 개발한다.
제안 방법
- 함수 수준의 코드 스니펫과 관련된 성능 측정값을 포함한 정제된 HPC 및 과학 계산 코드 데이터셋으로 사전 학습된 대규모 언어 모델을 미세튜닝한다.
- 소스 코드의 구조와 실행 행동 간의 관계를 학습하기 위해 코드 및 성능 데이터의 조합을 사용하여 모델을 훈련한다.
- 코드 최적화된 LLM(예: PolyCoder)을 초기화하여 전이 학습을 적용하고, 코드 생성 및 pragma 삽입과 같은 HPC 전용 작업에 대해 미세튜닝한다.
- 소량의 프롬프트와 미세튜닝을 통해 코드 내 구문적 및 의미적 신호를 활용하여 루프에 OpenMP pragma를 삽입할 위치를 고정밀도로 예측한다.
- 미세튜닝된 코드 표현을 기반으로 높은 해상도의 통합적 코드 표현을 사용하여 LLM 상단에 성능 예측 헤드를 훈련시켜 두 코드 버전 간의 상대적 성능 변화를 예측한다.
- 실제 과학 계산 코드베이스(예: PETSc, Hypre)를 사용하여 HPC 전용 벤치마크에서 코드 생성, pragma 레이블링, 성능 예측을 평가한다.
실험 결과
연구 질문
- RQ1HPC 전용 코드와 성능 데이터로 미세튜닝된 대규모 언어 모델은 일반 목적 LLM보다 기능적으로 올바른 병렬 코드 생성에서 뛰어난 성능을 보일 수 있는가?
- RQ2LLM은 HPC 코드 내 for 루프에 OpenMP pragma를 삽입할 위치를 어느 정도 정확하게 예측할 수 있는가?
- RQ3소량의 성능 데이터만으로도 미세튜닝된 LLM이 두 버전의 HPC 코드 간의 상대적 성능 변화를 고정밀도로 예측할 수 있는가?
- RQ4코드 최적화된 LLM에서의 전이 학습은 제한된 레이블이 부여된 성능 데이터로도 HPC에서 성능 모델링 작업을 효과적으로 가능하게 하는가?
- RQ5모델은 다양한 HPC 애플리케이션 리포지터리 간에 일반화되어 복수 프로젝트에 걸친 성능 분석 및 코드 생성을 지원할 수 있는가?
주요 결과
- HPC-Coder는 HPC 전용 코드 생성 작업에서 다른 모델보다 53% 높은 통과율을 기록하여, 정확하고 맥락에 적합한 병렬 코드 생성 능력이 뛰어나다는 것을 입증한다.
- 모델은 OpenMP pragma를 루프에 레이블링하는 데 97%의 정확도를 기록하여, 이 HPC 전용 병렬화 작업에서 일반 목적 LLM보다 뚜렷이 뛰어난 성능을 보인다.
- HPC-Coder는 코드 버전 간의 상대적 성능 변화를 최대 88%의 정확도로 예측하여, LLM이 막대한 성능 데이터셋이 없이도 성능 관련 코드 의미를 학습할 수 있음을 보여준다.
- 최신 일반 모델보다 HPC 코드에서 더 높은 언어 모델링 점수를 기록하여, 도메인 특화된 문법적 및 의미적 패턴을 효과적으로 포착하고 있음을 확인한다.
- 미세튜닝된 LLM을 사용할 경우 소량의 데이터로도 성능 예측이 가능하며, 전이 학습을 통해 코드 구조와 성능 행동 간의 상관관계를 모델이 학습함으로써 가능하다.
- 코드 생성과 성능 모델링 양 측면에서 성공을 거둔 점은, 고성능 컴퓨팅 소프트웨어 엔지니어링 도구에 도메인 특화 미세튜닝이 필수적임을 시사한다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.