여러 화면에서 작업하는 개발자들

HumanEval이란 무엇인가요?

HumanEval 정의

HumanEval은 벤치마크로, 대규모 언어 모델(LLM)코드 생성 능력을 평가하기 위해 사용됩니다. 이는 OpenAI가 자사의 소프트웨어 엔지니어링 에이전트인 Codex를 구동하는 초기 AI 모델을 평가하기 위해 개발되었습니다.

HumanEval 벤치마크는 Python으로 생성된 코드를 위해 특별히 설계되었습니다. 이 벤치마크는 단순한 문법을 넘어, 생성된 코드가 정확하고 의도한 대로 작동하는지를 검증합니다.

이 벤치마크의 프레임워크는 OpenAI HumanEval GitHub 저장소에서 확인할 수 있습니다. HumanEval에는 리더보드도 있으며, 여기에는 Claude 제품군, Kimi K2, Google Gemma, Gemini, GPT-5, 그리고 이전 모델인 GPT-4o 및 GPT-4, 그리고 IBM Granite 제품군 등 다양한 코드 생성 모델의 성능이 순위로 표시됩니다.

데이터 세트 구조

HumanEval 데이터 세트는 164개의 수작업으로 작성된 프로그래밍 문제와 이에 대응하는 유닛 테스트로 구성되어 있습니다.1 이 문제들은 모델의 언어 이해 능력, 문자열 처리 능력, 검색 및 정렬 능력을 평가합니다. 또한 간단한 수학 문제부터 복잡한 알고리즘에 이르기까지 문제 해결 능력도 평가합니다. 이러한 프로그래밍 과제는 소프트웨어 개발자가 기술 면접에서 수행하는 알고리즘 문제, 코딩 테스트 또는 시스템 설계 과제와 유사합니다.

각 코드 생성 작업은 다음과 같은 구성 요소로 이루어집니다.

  • 함수 시그니처

  • 독스트링

  • 함수 본문

  • 유닛 테스트

함수 시그니처

시그니처는 함수의 이름과 매개변수를 정의합니다. 예를 들어, 두 정수의 곱을 계산하는 함수의 시그니처는 다음과 같습니다.       

def multiply(a, b):

문서 문자열

독스트링은 함수의 예상 동작, 목표, 입력 및 출력에 대한 자연어 설명 또는 프롬프트입니다. 이러한 설명은 함수의 동작을 정의하며, 모델이 Python 코드를 생성할 때 가이드를 제공합니다.

예를 들어 multiply 함수의 독스트링은 다음과 같습니다.

“””Complete the function that takes two integers as inputs
and returns their product as the output.
Assume the inputs are always valid.
Examples:
multiply(8, 2) must return 16
multiply(0, 777) must return 0
multiply(-32,64) must return -2048
“””

함수 본문

이는 모델이 생성한 코드가 들어가는 영역입니다. 이 영역에는 함수 시그니처와 독스트링을 기반으로 문제를 해결한 구현 코드가 포함됩니다.

단위 테스트

이러한 테스트 케이스는 다양한 시나리오에서 생성된 코드의 기능적 정확성을 검증합니다. 각 테스트는 함수에 특정 입력을 제공한 후, 출력이 의도된 결과와 일치하는지 확인합니다.

다음은 multiply 함수에 대한 샘플 유닛 테스트입니다.

def test_multiply():
    assert multiply(89, 0) == 0
    assert multiply(37, -5) == -185
    assert multiply(66, 17) == 1122

평가 지표

많은 코드 LLM 벤치마크는 생성된 코드 샘플을 기준 해답과 비교하는 매칭 기반 지표와 같이 텍스트 생성에 사용되는 방법론을 적용합니다. 그러나 매칭 기반 지표는 하나의 문제를 해결하는 다양한 방법을 고려하지 못하며, 이들 중 상당수는 기준 해답과 기능적으로 동등할 수 있습니다.

이 때문에 HumanEval 벤치마크는 기능적 정확성 기준을 채택했으며, 생성된 코드가 유닛 테스트 세트를 통과하면 정답으로 간주합니다. 이 접근 방식은 개발자가 일련의 유닛 테스트를 실행해 코드가 모두 통과하는지를 확인하는 방식과 동일합니다.

HumanEval은 pass@k 지표를 사용해 기능적 정확성을 측정합니다. 각 문제에 대해 모델은 k개의 코드 샘플을 생성합니다. 이 중 하나라도 유닛 테스트를 통과하면 해당 문제는 올바르게 해결된 것으로 간주됩니다. pass@k 지표는 k개의 샘플 중 최소 하나가 기능적으로 올바를 확률을 추정합니다.

AI 아카데미

비즈니스용 생성형 AI의 부상

역사적인 생성형 AI의 부상과 이것이 비즈니스에 의미하는 바를 살펴봅니다.

HumanEval의 한계

HumanEval은 코드 LLM을 평가하는 여러 벤치마크 중 하나일 뿐입니다. 소프트웨어 개발 팀은 여전히 자체 내부 테스트를 사용해 LLM이 생성한 코드를 평가하고, 모델 성능을 보다 종합적으로 파악하기 위해 여러 지표를 결합해야 합니다. 인공지능이 생성한 코드의 정확성을 보장하고 시간이 지남에 따라 머신러닝 모델을 미세 조정 하고 개선하는 데 있어 인간의 개입이 필수적인 접근 방식입니다.

다음은 HumanEval 벤치마크의 몇 가지 한계입니다.

  • 데이터 오염

  • 현실 세계 복잡성 부족

  • 코딩 역량 평가 지표의 제한

  • 제한된 프로그래밍 언어 지원

오염

데이터 세트에 포함된 프로그래밍 문제는 널리 공개되어 있기 때문에 모델 학습 과정에서 이미 접했을 가능성이 있습니다. 또한 문제 수가 적기 때문에 코드 생성 모델이 이를 모두 암기했을 가능성도 있습니다.

현실 세계의 복잡성 부족

HumanEval의 코드 생성 과제는 일반적으로 쉬운 수준에서 중간 수준에 해당합니다. 반면 실제 프로그래밍 작업은 여러 시스템과의 API 통합, 대규모 코드베이스, 방대한 데이터 세트를 포함하는 등 훨씬 더 복잡한 경우가 많습니다.

또한 이 벤치마크는 실제 소프트웨어 개발 환경과 워크플로의 복잡하게 얽힌 상태를 충분히 반영하지 못합니다: 예를 들어 변화하는 사용 사례, 불완전한 테스트 케이스, 일관되지 않은 요구사항, 레거시 코드, 모호한 사양 등이 있습니다.

코딩 능력에 대한 제한적인 평가 지표

프로그래밍은 단순한 기능적 정확성 이상의 요소를 포함합니다. 예를 들어 HumanEval은 효율성을 고려하지 않습니다. 이는 LLM이 생성한 코드가 정확하고 정상적으로 작동하더라도 성능 측면에서 가장 효율적이고 최적화된 해결책이 아닐 수 있음을 의미합니다.

또한 이 벤치마크는 코딩 규칙, 스타일 표준, 오류 처리, 입력 검증, 보안 코딩과 같은 프로그래밍 모범 사례를 고려하지 않습니다.

제한된 프로그래밍 언어 지원

HumanEval은 오픈소스 Python 프로그래밍 언어에 맞게 설계되었습니다. 다른 언어로 생성된 소스 코드는 별도의 벤치마크를 사용해 평가해야 합니다.

HumanEval 변형

이 벤치마크에는 이러한 한계를 일부 보완하기 위한 몇 가지 버전이 존재합니다

  • HumanEval+
     

  • HumanEval-V
     

  • HumanEval-X
     

  • HumanEvalNext

HumanEval+

HumanEval의 각 프로그래밍 문제에는 평균적으로 약 7~8개의 유닛 테스트가 포함되어 있습니다.1 HumanEval+는 보다 엄격한 평가를 위해 문제당 평균 764개의 테스트로 해당 테스트 범위를 크게 확장합니다.2

HumanEval-V

HumanEval-V는 이전 버전을 기반으로 멀티모달 AI 모델, 특히 비전 언어 모델(VLM)을 위한 벤치마크를 구축합니다. 예를 들어 프로그래밍 컨텍스트에서 차트, 다이어그램, 그래프를 이해하고 추론하는 VLM의 능력을 평가하며, 알고리즘 또는 행렬 변환의 순서도를 기반으로 코드를 생성하는 능력을 측정합니다.

HumanEval-X

HumanEval-X는 기존 벤치마크를 확장하여 C++, Go, Java 및 JavaScript 프로그래밍 언어를 포함합니다. 총 820개의 작업을 통해 코드 생성 및 코드 변환 능력을 평가할 수 있습니다.

HumanEvalNext

HumanEvalNext는 HumanEval을 개선한 버전입니다. 함수 매개변수와 반환값의 데이터 유형을 나타내는 프로그래밍 문법인 타입 애너테이션을 통해 더 많은 컨텍스트를 추가하고, 더 다양한 엣지 케이스를 포함하며, 더 많은 단위 테스트를 도입하고 문제의 난이도를 높입니다.3

작성자

Rina Diane Caballar

Staff Writer

IBM Think

Cole Stryker

Staff Editor, AI Models

IBM Think

관련 솔루션
IBM Bob

안전한 의도 인식 개발을 지원하는 AI 파트너인 Bob으로 소프트웨어 제공을 가속화하세요.

IBM Bob 살펴보기
AI 코딩 솔루션

코드 작성, 디버깅, 코드 리팩토링 또는 코드 완성에 소요되는 시간을 최소화하고, 더 많은 시간을 혁신에 집중할 수 있도록 지원하는 신뢰할 수 있는 AI 기반 도구로 소프트웨어 개발 노력을 최적화하세요.

AI 코딩 솔루션 살펴보기
AI 컨설팅 및 서비스

AI로 핵심 워크플로와 운영을 새롭게 혁신해 경험과 실시간 의사 결정, 비즈니스 가치를 극대화하세요.

AI 컨설팅 서비스 살펴보기
다음 단계 안내

생성형 AI와 고급 자동화를 활용하여 기업 환경에 최적화된 코드를 더 빠르게 생성하세요. Bob 모델은 개발자의 역량을 보완하여 개발 및 현대화 작업을 간소화하고 자동화합니다.

  1. IBM Bob 알아보기
  2. AI 코딩 솔루션 살펴보기