본문 바로가기
coursework/CS294: LLM Agents

LEC06: Agents for Software Development w/ Graham Neubig

by 잼민ai 2024. 10. 27.

뭔가 이미 잘 정리된 파워포인트를 가지고 또 내용을 정리하는 건 무의미할 것 같아서.. 그 강의에서 다룬 논문이나 플젝을 살펴보는 것으로 하겠음ㅎ 이번 강의는 code generation을 주로 다루고 있어서, 그 중에서도 SWE-bench에 대해 조금 더 찾아보았어요.

 

아래는 공식 사이트에서 다루고 있는 타임라인입니다.

📣 [10/2024] Introducing SWE-bench Multimodal! Can AI systems "see" bugs and fix them? 👀 💻
📣 [08/2024] SWE-bench x OpenAI = SWE-bench Verified, a human-validated subset of 500 problems reviewed by software engineers!
📣 [06/2024] We've Dockerized SWE-bench for easier, containerized, reproducible evaluation.
📣 [03/2024] Check out our latest work, SWE-agent, which achieves a 12.47% resolve rate on SWE-bench!
📣 [03/2024] We've released SWE-bench Lite! Running all of the SWE-bench can take time. This subset makes it easier!

ICLR 2024에 oral presentation으로 소개된 이후에도 계속 업데이트가 있었던 모양이군요.. 뭐가 많으니깐 (1) 첫 release, (2) SWE-agent, (3) SWE-bench Multimodal 세 개만 살펴보도록 하겠어요~.~

 

SWE-bench: Can Language Models Resolve Real-World GitHub Issues? (Jimenez et al., 2024)

기존의 code generation 벤치마크들은 대체로 몇 줄 안 되는 코드를 생성하는 태스크 위주로 구성이 되어 있었대요. 그런데 실제로는 온갖 에러와 버그들을 해결할 줄 알아야 진짜 코딩이죠. 그래서 연구진들이 깃허브 이슈를 보고 레포 코드를 수정, 이것을 unit test로 평가하는 벤치마크를 제안했어요. 9만 개 내외의 pull request(이하 PR)가 있는 Python 레포를 스크랩해서, merge된 PR 중 깃허브 이슈를 해결한 것 또는 테스트 파일을 수정한 것들 —edge case 등을 다루고 있을 가능성이 있으니까— 위주로 필터링을 한 후, PR의 테스트 부분이 적어도 하나 이상 해결된 경우와 런타임 에러가 나지 않은 경우인 것들만 다시 필터링을 했다고 하네요.*

 

깃허브 이슈들은 정말 '실존하는', 그리고 '어려운' 문제들인 경우도 많기 때문에 complex reasoning을 추구하는 연구와도 잘 맞고, 무엇보다 long input을 다루면서도 수정 범위가 넓은 것과 output 길이가 긴 문제들도 커버할 수 있기 때문에 유의미한 벤치마크라고 할 수 있어요. 또 깃허브 이슈는 업데이트가 빈번하기 때문에 SWE-bench도 그에 맞춰서 업데이트가 가능하다는 점도 큰 장점이고요. 근데 이 작업이 가능했다는 게.. 역시 프린스턴 NLP 답네요..

 

현재 리더보드는 요렇습니다:

 

SWE-agent: Agent-Computer Interfaces Enable Automated Software Engineering

인간컴퓨터상호작용(Human-Computer Interaction)에서 착안한 에이전트컴퓨터인터페이스(Agent-Computer Interface, 이하 ACI)라는 개념을 제시하고 있네요.

그냥 다 에이전트한테 맡기겠다는 말 아닌지?ㅋㅋㅋ 아무튼 이번 SWE-agent는 벤치마크가 아니라 에이전트인데, LM과 ACI로 구성되어 현실적인 SWE 문제들을 해결하는 하나의 시스템이에요. 여기서 ACI란 LM 에이전트와 컴퓨터 사이에 존재하는 abstraction layer라고 합니다. 뭔소린고, 하니…

두 다이어그램이 서로 대응되는 구조에 있다고 보면 돼요. 즉, 사람이 컴퓨터와 상호작용하기 위해 IDE를 이용했다면, LM은 컴퓨터와 상호작용하기 위해, 에이전트가 컴퓨터에게 액션을 수행할 수 있도록 설계된 인터페이스를 이용하는 거죠. Linux의 50가지 커맨드가 가능하게끔 설계되었대요. 자세한 건 논문 참고~

SWE-bench Multimodal: Do AI Systems Generalize to Visual Software Domains?

단순히 '코딩'을 떠나서, 웹/앱 디자인으로의 응용까지 가능한지를 확인하고자 하는 벤치마크라고 할 수 있을 것 같아요. 기존과 다르게 JavaScript 레포로부터 구성된 벤치마크인데, 아래와 같은 시각 효과가 가능한 라이브러리를 사용하는 레포 17개를 선택했다고 해요. PR중 이런 시각자료를 포함한 것들로 문제를 구성했고요. 에러 메시지를 캡쳐해서 이슈를 올리는 사람들도 있는데, 멀티모달 벤치마크답게 이런 것도 포함시켜서 이슈를 잘 해결하는지 확인했다고 합니다.

멀티모달이기 때문에 테스팅이 굉장히 중요한데, 특히 시각효과를 구현하는 문제들에 대해서는 pixel-by-pixel로 모델의 아웃풋과 원하는 아웃풋을 비교하도록 벤치마크를 만들었어요. 

 

여러가지 한계점이 있다고 밝히긴 했지만, 어쨌든 이 일련의 연구들 하나하나가 규모가 매우 큰 연구라는 생각이 드는데.. 프린스턴 대단하네요..

 

아무튼 딥한 리뷰 없이 오늘은 이만총총


*오역이 있을 수 있음[원문: We filter out task instances without at least one test where its status changes from a fail to pass (henceforth referred to as fail-to-pass test). We also filter out instances that result in installation or runtime errors.]


References

  1. Jimenez, C. E., Yang, J., Wettig, A., Yao, S., Pei, K., Press, O., & Narasimhan, K. R. (2024). SWE-bench: Can Language Models Resolve Real-world Github Issues? The Twelfth International Conference on Learning Representations. Retrieved from https://openreview.net/forum?id=VTF8yNQM66 
  2. Yang, J., Jimenez, C. E., Wettig, A., Lieret, K., Yao, S., Narasimhan, K., & Press, O. (2024). SWE-agent: Agent-Computer Interfaces Enable Automated Software Engineering. arXiv [Cs.SE]. Retrieved from http://arxiv.org/abs/2405.15793
  3. Yang, J., Jimenez, C. E., Zhang, A. L., Lieret, K., Yang, J., Wu, X., … Press, O. (2024). SWE-bench Multimodal: Do AI Systems Generalize to Visual Software Domains? arXiv [Cs.CL]. Retrieved from http://arxiv.org/abs/2410.03859

 

728x90