누군가가 "딸기를 기대했는데 케일을 출시했다"고 했어요. 이 "케일"이 어떤 용도로 사용되는지 볼까요?
대형 모델의 프로그래밍 능력은 늘 많은 주목을 받아왔고, 초강력 AI 프로그래머 데빈의 등장으로 'AI가 프로그래머를 대체할 수 있을까'라는 주제가 전면에 부각됐다. 최근 Devin은 스타트업 Cosine이 출시한 자율 AI 프로그래머 Genie라는 새로운 상대도 맞이했습니다. 회사는 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-bench 테스트 세트의 각 예제는 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-bench의 견고성과 신뢰성을 향상시키기 위한 세 가지 개선 방향SWE-bench의 견고성과 신뢰성을 향상시키기 위한 것입니다. 개발팀은 개선을 위한 세 가지 주요 방향을 식별했습니다.
- 솔루션의 정확성을 평가하는 데 사용되는 단위 테스트는 종종 너무 구체적이고 때로는 문제와 관련이 없습니다. 이로 인해 올바른 솔루션이 거부될 수 있습니다.
- 많은 샘플의 문제 설명이 명확하지 않아 문제가 무엇인지, 어떻게 해결해야 하는지 모호해집니다.
- 에이전트에 대한 SWE-벤치 개발 환경을 안정적으로 설정하기 어려운 경우가 있는데, 이로 인해 솔루션에 관계없이 단위 테스트가 실수로 실패할 수 있습니다. 이 경우 완벽하게 유효한 솔루션이 잘못된 것으로 평가될 수 있습니다.
이러한 문제를 해결하기 위해 OpenAI는 SWE-bench 테스트 세트의 모든 샘플에 대해 전문 소프트웨어 개발자가 인간 주석 캠페인을 시작했습니다. 단위 테스트를 보장하기 위한 스크리닝이 수행됩니다. 범위가 적절하고 문제 설명이 명확하고 모호하지 않습니다. SWE-bench 작성자와 함께 SWE-bench Verified를 출시했습니다. SWE-bench의 원래 테스트 세트의 하위 집합으로 인간 주석자가 검증한 500개의 샘플이 포함되어 있습니다. 이 버전은 원래 SWE-bench 및 SWE-bench Lite 테스트 제품군을 대체합니다. 또한 모든 SWE 벤치 테스트 샘플에 대한 인간 주석을 공개하고 있습니다. 또한 SWE-bench 작성자와 협력하여 컨테이너화된 Docker 환경을 사용하여 SWE-bench에서 더 쉽게 평가할 수 있는 새로운 SWE-bench용 평가 도구를 개발했습니다. - 도구 주소: https://github.com/princeton-nlp/SWE-bench/tree/main/docs/20240627_docker
오픈AI 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-bench 데이터 세트와 새로운 SWE-bench 검증 데이터 세트의 난이도 분포를 비교합니다. 그들은 1699개 샘플의 무작위 하위 집합을 기반으로 SWE-벤치의 난이도 분포를 추정합니다. 그림에서 볼 수 있듯이 원래 SWE-bench 데이터 세트에서 대부분(77.8%) 샘플의 예상 완료 시간은 숙련된 소프트웨어 엔지니어의 작업 시간이 1시간 미만입니다. SWE-bench Lite와 새로운 SWE-bench 검증 데이터 세트는 이 비율을 더욱 증가시키며, 문제 해결에 1시간 이상이 걸릴 것으로 예상되는 문제는 10% 미만입니다. 그러나 이 변경의 이면에 있는 메커니즘은 상당히 다릅니다. SWE-bench Lite는 벤치마킹을 더 쉽게 하기 위해 원본 데이터세트를 하위 샘플링하는 반면, SWE-bench Verified는 데이터세트 샘플에서 실행 불가능한 기능을 제거하려고 시도합니다.
SWE-bench 검증에서 각 에이전트의 성능 새로운 SWE-bench 검증 데이터 세트에서 개발 팀은 원래 SWE-bench 순위에서 좋은 성능을 보인 여러 에이전트를 사용했습니다. 오픈 소스 비계는 GPT-4o의 성능을 테스트합니다. 최고 성능의 비계에서 GPT-4o의 성능은 SWE-bench Verified에서 33.2%에 도달한 것으로 나타났습니다. 이는 원래 SWE-bench의 16% 점수보다 두 배 이상 높은 수치입니다. 전반적으로 이는 원래 SWE 벤치가 에이전트의 기능을 과소평가했다는 OpenAI의 초기 의심을 확인시켜 줍니다. SWE-bench Lite에서 SWE-bench Verified로의 전환은 필터링 후 SWE-bench Lite가 이미 전체 데이터 세트보다 쉽기 때문에 눈에 띄지 않는다는 점에 주목할 가치가 있습니다.
SWE-bench Verified에서 평가할 때 성능 향상은 부분적으로 테스트 샘플의 분포가 더 간단한 샘플로 치우쳐 있기 때문일 수 있습니다. OpenAI는 난이도에 따라 계층화된 성능을 플롯하여 이를 조사했습니다. 새 데이터 세트가 더 쉬운 샘플을 포함하도록 난이도 분포를 변경하는 경우 원래 SWE-bench에서 SWE-bench Lite로의 경우처럼 각 범주 내의 계층화된 성능은 변경되지 않습니다. 반대로, OpenAI는 SWE-bench Verified로 전환할 때 난이도 범주 전체에서 에이전트 성능이 향상되는 것을 관찰했는데, 이는 단순히 어려운 샘플을 제거하는 것이 아니라 모든 범주에서 불가능한 샘플을 제거하는 예상 효과와 일치합니다.
참조 링크: https://openai.com/index/introducing-swe-bench-verified/위 내용은 OpenAI '스트로베리' 모델이 또 연기됐는데요, 새벽에 출시된 SWE-bench Verified란 무엇일까요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!