Skip to main content
QUICK REVIEW

[논문 리뷰] Comparing Llama-2 and GPT-3 LLMs for HPC kernels generation

Pedro Valero‐Lara, Alexis Huante|arXiv (Cornell University)|2023. 09. 12.
Parallel Computing and Optimization Techniques참고 문헌 16인용 수 5
한 줄 요약

이 논문은 Meta의 Llama-2 LLM을 OpenAI의 Codex(기본으로 GitHub Copilot 사용)와 대비하여 C++、、Fortran、Python、Julia에서 다양한 병렬 프로그래밍 모델을 활용해 고성능 계산(HPC) 커널을 생성하는 데 평가한다. Llama-2는 Copilot보다 더 최적화된 코드를 생성하지만 신뢰도는 낮으며, 테스트 케이스의 33–66%에서 정확한 출력을 내는 데에 그치고, Copilot의 66–83%에 못 미친다. GPU 문법 오류가 존재하나, 행렬 연산에서 뚜렷한 최적화 성과를 보였다.

ABSTRACT

We evaluate the use of the open-source Llama-2 model for generating well-known, high-performance computing kernels (e.g., AXPY, GEMV, GEMM) on different parallel programming models and languages (e.g., C++: OpenMP, OpenMP Offload, OpenACC, CUDA, HIP; Fortran: OpenMP, OpenMP Offload, OpenACC; Python: numpy, Numba, pyCUDA, cuPy; and Julia: Threads, CUDA.jl, AMDGPU.jl). We built upon our previous work that is based on the OpenAI Codex, which is a descendant of GPT-3, to generate similar kernels with simple prompts via GitHub Copilot. Our goal is to compare the accuracy of Llama-2 and our original GPT-3 baseline by using a similar metric. Llama-2 has a simplified model that shows competitive or even superior accuracy. We also report on the differences between these foundational large language models as generative AI continues to redefine human-computer interactions. Overall, Copilot generates codes that are more reliable but less optimized, whereas codes generated by Llama-2 are less reliable but more optimized when correct.

연구 동기 및 목표

  • 다양한 프로그래밍 언어와 병렬 모델을 대상으로 Llama-2의 HPC 커널 생성 효과성을 평가하기 위해.
  • GPT-3 기반의 GitHub Copilot(Codex) 기준과 대비하여 Llama-2의 코드 생성 정확도 및 최적화 품질을 비교하기 위해.
  • 모델 선택이 CPU 및 GPU용 최적화된 HPC 커널 생성 시 신뢰성과 성능에 미치는 영향을 평가하기 위해.
  • OpenMP, CUDA, HIP, OpenACC 및 Numba, cuPy 등 언어별 라이브러리와 같은 다양한 HPC 스택에서 LLM의 행동 패턴을 파악하기 위해.
  • 개방형과 전문적 LLM 간의 상호 교환에서 코드 신뢰성과 최적화 간의 상충 관계를 이해하기 위해.

제안 방법

  • Hugging Chat(하이퍼프레즈 기반 인터페이스)를 통해 Llama-2를 사용해 HPC 커널(AXPY, GEMV, GEMM)을 생성하였으며, 단순한 자연어 프롬프트를 사용하였다.
  • C++、Fortran、Python、Julia 4개 언어에서 144개의 고유한 조합(커널, 언어, 프로그래밍 모델 조합)을 대상으로 생성된 코드를 평가하였다.
  • 각 타겟 모델(예: OpenMP, CUDA, OpenACC, Numba, cuPy, CUDA.jl)에 대해 표준 컴파일러와 런타임 환경을 사용해 정확성과 성능을 테스트하였다.
  • 공정한 비교를 위해 Llama-2와 Copilot 간에 동일한 프롬프트를 적용하였으며, Fortran 및 Python에서 유리한 경우 키워드 보강을 실시하였다.
  • 성공 기준은 각 테스트 케이스에서 적어도 하나의 정확하고 컴iles가 가능하며 기능적으로 올바른 커널이 존재하는 것으로 정의하였다.
  • 특히 GPU 전용 문법 오류(예: cuPy에서 __shared__와 __device__의 잘못된 사용)에 대한 오류 패턴을 분석하였다.
Figure 1: Hugging Chat website interface.
Figure 1: Hugging Chat website interface.

실험 결과

연구 질문

  • RQ1Llama-2의 정확도가 C++、Fortran、Python、Julia 등 다양한 프로그래밍 언어와 모델에서 GitHub Copilot의 GPT-3 기반 Codex와 비교해 어떻게 다른가?
  • RQ2특히 행렬 곱셈 커널에서 Llama-2와 Copilot는 코드 최적화 전략에서 어떤 점에서 다를까?
  • RQ3왜 일부 GPU 프로그래밍 모델(예: HIP, AMDGPU.jl)은 두 모델 모두에서 일관되게 낮은 성공률을 보이는가?
  • RQ4언어별 기능(예: Julia의 Base.Threads.jl, Python의 Numba)이 LLM 기반 코드 생성의 신뢰성과 정확성에 어떤 영향을 미치는가?
  • RQ5LLM 기반 HPC 코드 생성에서 가장 흔한 오류 패턴은 무엇이며, Llama-2와 Copilot 간에 어떤 차이가 있는가?

주요 결과

  • Llama-2는 C++ 케이스의 40%에서, Fortran 케이스의 66%에서, Julia 케이스의 22%에서, Python 케이스의 33%에서 적어도 하나의 정확한 커널을 생성하였다.
  • GitHub Copilot는 C++ 케이스의 80%에서, Fortran 케이스의 100%에서, Julia 케이스의 66%에서, Python 케이스의 83%에서 적어도 하나의 정확한 코드를 생성하여 더 높은 신뢰도를 보였다.
  • Llama-2는 정확한 경우에 Copilot보다 더 최적화된 코드를 생성하였으며, 특히 Numba와 numpy를 사용한 행렬 커널에서 타일링 및 스트라이드 액세스와 같은 기법을 적용하였다.
  • Llama-2의 cuPy 생성 코드에서 반복적으로 발생하는 오류는 __shared__ 데코레이터를 __device__로 잘못 사용하는 것이었으며, 이는 논리적으로는 올바르나 GPU 컴파일을 실패하게 했다.
  • AXPY 커널의 경우, Llama-2는 C++、Fortran、Python에서 모두 정확한 코드를 생성하지 못했고, Copilot는 대부분의 경우 성공하였다.
  • Llama-2는 C++ 및 Fortran에서 모든 커널에 대해 정확한 OpenMP 코드를 생성하여 CPU 병렬 처리에 대해 더 강한 지원을 보였다.
Figure 2: Results for C++ kernels (left) and programming models (right).
Figure 2: Results for C++ kernels (left) and programming models (right).

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.