2024-08-14
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
기계 심장 보고서
편집자: Zhang Qian, Xiaozhou
누군가가 "우리는 딸기를 기대했는데 케일을 출시했습니다."라고 말했습니다. 이 "케일"이 어떤 용도로 사용되는지 봅시다.
대형 모델의 프로그래밍 능력은 늘 많은 주목을 받아왔고, 초강력 AI 프로그래머 데빈(Devin)의 등장으로 'AI가 프로그래머를 대체할 수 있는가'라는 주제가 부각됐다. 최근 데빈은 스타트업 회사인 코사인(Cosine)이 출시한 독립 AI 프로그래머라는 새로운 상대를 맞이하기도 했습니다.요정. 회사는 Genie가 타사 벤치마크 SWE 벤치에서 30%를 기록하며 Devin을 쉽게 능가한 반면 Devin은 13.8%에 불과하다고 밝혔습니다.
이 SWE-Bench는 GitHub에서 실제 소프트웨어 문제를 해결하는 LLM의 능력을 평가하는 데 사용되는 벤치마크 데이터 세트입니다. 12개의 인기 있는 Python 리포지토리에서 2,294개의 Issue-Pull 요청 쌍을 수집합니다. 테스트 중에 LLM은 코드 베이스와 문제 설명을 얻은 다음 문제에 설명된 문제를 해결하기 위한 패치를 생성합니다. 이 데이터 세트는 AI 프로그래밍 능력 평가에 널리 사용되었습니다.
AI 프로그래밍 기능이 발전함에 따라 이 벤치마크도 발전합니다. 오늘 이른 아침, 온라인에 보고된 OpenAI "Strawberry" 모델이 다시 지연되었지만 OpenAI는 SWE-Bench - SWE-bench Verified의 개선된 버전인 새로운 것을 출시했습니다.
OpenAI는 원래 SWE-벤치에 모델의 자율 소프트웨어 엔지니어링 기능이 과소평가될 수 있는 몇 가지 문제가 있음을 지적했습니다. 따라서 개선 과정에서 SWE-Bench의 원저자와 협력하여 수동 스크리닝 및 개선을 수행하여 단위 테스트의 범위가 적절하고 문제 설명이 명확한지 확인했습니다.
SWE-bench Verified에서 수행된 새로운 테스트에서 많은 AI 프로그래밍 에이전트가 이전보다 더 높은 점수를 받았습니다. 그 중 UIUC의 Agentless 솔루션은 점수를 두 배로 높였습니다. OpenAI는 이것이 이전 벤치마크가 AI 프로그래밍 능력을 과소평가하는 결점을 가지고 있음을 증명한다고 믿습니다.
하지만 '딸기'를 시청하고 있는 전 세계 네티즌들에게 이번 공개는 아직 너무 형식적이다. 어떤 사람은 "딸기를 기대했는데 케일이 나왔다"고 하더군요.
SWE-벤치에 대한 배경 지식
SWE-벤치 테스트 세트의 각 예는 GitHub의 12개 오픈 소스 Python 코드 저장소에서 해결된 GitHub 문제를 통해 생성되었습니다. 각 샘플에는 코드의 정확성을 확인하기 위한 솔루션 코드와 단위 테스트가 포함된 관련 끌어오기 요청(PR)이 있습니다. 이러한 단위 테스트는 PR의 솔루션 코드가 추가되기 전에 실패하고 추가된 후에 통과하기 때문에 FAIL_TO_PASS 테스트라고 합니다. 또한 각 샘플에는 PR이 병합되기 전과 후에 통과하여 PR이 문제와 관련되지 않은 코드 베이스의 다른 기능을 중단하는지 확인하는 PASS_TO_PASS 테스트도 포함되어 있습니다.
SWE-bench에서 AI 에이전트는 문제 설명문인 GitHub 이슈에서 원본 텍스트를 가져와 코드 베이스에 접근할 수 있습니다. 이 정보가 주어지면 에이전트는 문제를 해결하기 위해 코드 베이스의 파일을 편집해야 합니다.
AI 에이전트가 제공한 편집 내용은 FAIL_TO_PASS 및 PASS_TO_PASS 테스트를 실행하여 평가됩니다. FAIL_TO_PASS 테스트를 통과하면 편집자가 문제를 해결했다는 의미입니다. PASS_TO_PASS 테스트가 통과되면 편집으로 인해 코드 베이스의 불필요한 부분이 손상되지 않았음을 의미합니다. 원래 GitHub 문제를 완전히 해결하려면 두 테스트 세트를 모두 통과해야 합니다.
SWE-벤치의 견고성과 신뢰성 향상을 위한 세 가지 개선 방향
SWE-bench의 견고성과 신뢰성을 향상시키기 위해. 개발팀은 개선을 위한 세 가지 주요 방향을 확인했습니다.
SWE-bench 검증됨
이러한 문제를 해결하기 위해 OpenAI는 전문 소프트웨어 개발자의 수동 주석 캠페인을 시작하여 SWE 벤치 테스트 세트의 각 샘플을 검사하여 단위 테스트의 범위가 적절하고 문제 설명이 명확하고 모호하지 않은지 확인했습니다.
SWE-bench 작성자와 함께 SWE-bench Verified를 출시했습니다. SWE-bench 원본 테스트 세트의 하위 집합으로, 인간 주석자가 검증한 500개 샘플이 포함되어 있습니다. 이 버전은 원래 SWE-bench 및 SWE-bench Lite 테스트 세트를 대체합니다. 또한 모든 SWE 벤치 테스트 샘플에 대한 인간 주석을 공개하고 있습니다.
또한 SWE-bench 작성자와 협력하여 컨테이너화된 Docker 환경을 사용하여 SWE-bench를 더 쉽고 안정적으로 평가할 수 있는 SWE-bench용 새로운 평가 도구를 개발했습니다.
개선방법
OpenAI는 Python 경험이 있는 93명의 소프트웨어 개발자와 협력하여 SWE-bench 샘플을 수동으로 선별하고 SWE-bench 테스트 세트에서 1699개의 무작위 샘플에 주석을 달고 최종적으로 SWE-bench Verified를 획득했습니다.
그들의 접근 방식은 테스트의 공정성과 정확성을 보장하기 위해 SWE-벤치 테스트 세트의 샘플에 주석을 다는 것입니다. 구체적으로 두 가지 핵심 사항에 중점을 둡니다. 첫째, 지나치게 모호한 설명으로 인해 불공정한 테스트가 발생하는 것을 방지할 만큼 문제 설명이 충분히 상세한지 평가하고, 둘째, FAIL_TO_PASS 단위 테스트가 유효한 솔루션을 잘못 필터링하는지 확인합니다.
각 주석 기준에는 심각도가 증가함에 따라 [0, 1, 2, 3] 범위의 레이블이 있습니다. 라벨 0과 1은 경미하고, 라벨 2와 3은 심각하여 샘플이 어떤 면에서 부적절하므로 폐기해야 함을 나타냅니다.
또한 OpenAI는 샘플에 문제가 없다는 가정 하에 개발자가 솔루션을 결정하고 구현하는 데 걸리는 시간을 추정하도록 주석자에게 요청하여 각 샘플의 난이도를 평가합니다. 마지막으로 OpenAI는 샘플과 관련된 다른 주요 문제를 표시할 수 있는 자유 형식 입력 옵션을 제공합니다.
SWE-bench Verified를 구축하기 위해 OpenAI는 문제 설명 또는 FAIL_TO_PASS 단위 테스트 심각도가 2 이상인 원본 테스트 세트에서 모든 샘플을 필터링하고 다른 심각한 문제로 표시된 샘플도 필터링합니다.
결과에 주석 달기
새로운 표준에 따르면 원래 SWE 벤치에 있는 샘플의 상당 부분이 적합하지 않습니다. 그림에 표시된 대로 샘플의 38.3%는 문제 설명이 충분히 명확하지 않아 플래그가 지정되었으며, 61.1%는 단위 테스트에서 유효한 솔루션이 잘못된 것으로 부당하게 잘못된 플래그를 지정할 수 있기 때문에 플래그가 지정되었습니다(심각도 2, 3 두 수준의 합산). . 전반적으로 주석 처리 과정에서 불분명한 문제 설명, 불공정한 단위 테스트 또는 기타 문제로 인해 SWE 벤치 샘플의 68.3%가 필터링되었습니다.
아래 그림은 원래 SWE-벤치 데이터세트와 새로운 SWE-벤치 검증 데이터세트의 난이도 분포를 비교합니다. 그들은 1699개 샘플의 무작위 하위 집합을 기반으로 SWE-벤치의 난이도 분포를 추정합니다.
그림에서 볼 수 있듯이 원본 SWE-벤치 데이터 세트에서 대부분(77.8%) 샘플의 예상 완료 시간은 숙련된 소프트웨어 엔지니어의 작업 시간 1시간 미만입니다. SWE-bench Lite와 새로운 SWE-bench 검증 데이터 세트는 이 비율을 더욱 증가시키며, 해결하는 데 1시간 이상이 걸릴 것으로 예상되는 문제는 10% 미만입니다. 그러나 이 변경의 이면에 있는 메커니즘은 상당히 다릅니다. SWE-bench Lite는 벤치마킹을 더 쉽게 하기 위해 원본 데이터세트를 하위 샘플링하는 반면, SWE-bench Verified는 데이터세트 샘플에서 실행 불가능한 기능을 제거하려고 시도합니다.
SWE-벤치에서 각 에이전트의 성능이 확인되었습니다.
새로운 SWE-bench 검증 데이터세트에서 개발팀은 원래 SWE-bench 순위표에서 좋은 성능을 보인 여러 오픈 소스 스캐폴드를 사용하여 GPT-4o의 성능을 테스트했습니다.
최고 성능의 스캐폴드에서 GPT-4o의 성능은 SWE-bench Verified에서 33.2%에 도달한 것으로 나타났습니다. 이는 원래 SWE-bench의 16% 점수보다 두 배 이상 높은 수치입니다. 전반적으로 이는 원래 SWE 벤치가 에이전트의 기능을 과소평가했다는 OpenAI의 초기 의심을 확인시켜 줍니다.
필터링 후 SWE-bench Lite가 이미 전체 데이터 세트보다 쉽기 때문에 SWE-bench Lite에서 SWE-bench Verified로의 전환이 그다지 명확하지 않다는 점은 주목할 가치가 있습니다.
난이도에 따라 계층화된 성능 분석
SWE-bench Verified에서 평가할 때 성능 향상은 부분적으로 테스트 샘플의 분포가 더 간단한 샘플 쪽으로 치우쳐 있기 때문일 수 있습니다.
OpenAI는 난이도에 따라 계층화된 성능을 플로팅하여 이를 조사했습니다. 새 데이터 세트가 더 쉬운 샘플을 포함하도록 난이도 분포를 변경하는 경우 원래 SWE-bench에서 SWE-bench Lite로의 경우처럼 각 범주 내의 계층화된 성능은 변경되지 않습니다.
이와 대조적으로 OpenAI는 SWE-bench Verified로 이동할 때 난이도 범주 전체에서 에이전트의 성능이 향상되는 것을 관찰했는데, 이는 단순히 어려운 샘플 제거로 이동하는 것이 아니라 모든 범주에서 불가능한 샘플을 제거하는 예상 효과와 일치합니다.
참조 링크: https://openai.com/index/introducing-swe-bench-verified/