SWE-bench (benchmark) (VI)

From Systems analysis Wiki
Jump to navigation Jump to search

SWE-bench — đây là một benchmark quy mô lớn (bộ bài kiểm tra) dùng để đánh giá khả năng của các mô hình ngôn ngữ lớn (LLM) trong lĩnh vực tự động hóa phát triểngỡ lỗi phần mềm[1]. Bộ benchmark này được phát triển bởi một nhóm các nhà nghiên cứu từ Đại học Princeton và các tổ chức khác, và được giới thiệu tại hội nghị ICLR 2024[2]. SWE-bench khác biệt so với các benchmark mã nguồn truyền thống ở chỗ sử dụng các bài toán thực tế từ thực tiễn phát triển phần mềm: bộ kiểm tra bao gồm 2294 bài toán dựa trên các vấn đề (issues) đã được đóng và các bản vá tương ứng (pull request) từ 12 kho lưu trữ Python mã nguồn mở phổ biến trên GitHub[1][3]. Mỗi bài toán chứa mô tả vấn đề (issue) và cung cấp cho mô hình quyền truy cập vào mã nguồn của dự án tương ứng; mục tiêu của mô hình là tạo ra các thay đổi tối thiểu trong codebase (patch) để khắc phục vấn đề được chỉ ra[1][3].

Phương pháp và đặc điểm đánh giá

SWE-bench mô phỏng quy trình phát triển phần mềm thực tế. Đối với mỗi bài toán, mô hình được cung cấp nội dung GitHub issue gốc (mô tả vấn đề) và snapshot mã nguồn của kho lưu trữ tại phiên bản trước khi áp dụng bản vá[4]. Mô hình (hoặc agent dựa trên mô hình) cần phân tích mã nguồn, hiểu bản chất của lỗi hoặc thay đổi cần thiết, và thực hiện chỉnh sửa trong các tệp mã tương ứng để giải quyết vấn đề[4][5]. Việc xác nhận giải pháp được tự động hóa: mỗi bài toán được gắn với các bài kiểm thử đơn vị thực tế từ pull request đã đóng vấn đề đó. Trong số đó có cả các bài kiểm thử «fail-to-pass» (không vượt qua trên mã gốc, nhưng phải vượt qua sau khi áp dụng bản vá đúng) lẫn các bài kiểm thử hồi quy (pass-to-pass, vốn đã vượt qua và phải tiếp tục vượt qua sau khi thực hiện thay đổi)[3]. Patch do mô hình đề xuất được áp dụng vào mã nguồn, sau đó các bài kiểm thử tương ứng được chạy: nếu tất cả các bài kiểm thử fail-to-pass bắt đầu vượt qua và các bài kiểm thử pass-to-pass không bị vi phạm, bài toán được coi là giải đúng[3]. Cách tiếp cận đánh giá này cho phép kiểm tra không chỉ khả năng tạo ra mã cú pháp đúng của mô hình, mà còn khả năng thực sự giải quyết bài toán đặt ra mà không làm hỏng chức năng hiện có. Đồng thời, mô hình phải xử lý ngữ cảnh lớn (toàn bộ kho lưu trữ mã), hiểu mối liên hệ giữa các thành phần và điều phối các thay đổi trong nhiều tệp cùng lúc[1] — tất cả những điều này phức tạp hơn đáng kể so với các bài toán điển hình về viết hàm theo mô tả.

Trong các đánh giá SWE-bench, thông thường không phải bản thân LLM tham gia, mà là các hệ thống agent bao bọc mô hình bằng các công cụ hỗ trợ (ví dụ: để điều hướng tệp, thực thi mã, sử dụng trình gỡ lỗi, v.v.)[4][6]. Hệ thống như vậy mô phỏng vòng lặp phát triển thực tế: mô hình có thể lần lượt duyệt qua các tệp, chạy các bài kiểm thử hoặc script và cải thiện giải pháp từng bước cho đến khi đạt được kết quả thành công[4]. Điều đáng chú ý là hiệu quả giải quyết các bài toán SWE-bench phụ thuộc phần lớn vào chất lượng của «scaffolding» này (cơ sở hạ tầng của agent): cùng một mô hình nền có thể cho kết quả khác nhau tùy thuộc vào cách tổ chức tương tác với kho lưu trữ và các công cụ[4][7]. Như vậy, SWE-bench đóng vai trò thước đo khả năng của tổ hợp mô hình và chiến lược giải quyết bài toán, đưa việc đánh giá gần hơn với điều kiện làm việc thực tế của một nhà phát triển AI tự trị[4][7].

Các biến thể của bộ bài toán

Các tác giả SWE-bench và cộng đồng sau đó đã giới thiệu một số bộ dữ liệu phái sinh cho các mục đích đánh giá khác nhau:

  • SWE-bench Lite — phiên bản rút gọn của benchmark, bao gồm ~300 bài toán[8], được chọn lọc để giảm độ phức tạp và chi phí tính toán khi kiểm tra mô hình. Bộ con này được tạo ra để thử nghiệm nhanh với các mô hình và loại trừ các bài kiểm định tốn nhiều công nhất, đồng thời vẫn duy trì tính đại diện của các vấn đề chính[7]. Về bản chất, Lite chứa các bài toán sửa lỗi đơn giản và ngắn hơn, và kết quả của mô hình trên Lite thường cao hơn trên bộ đầy đủ do loại bỏ các trường hợp khó nhất[7].
  • SWE-bench Verified — bộ con được lọc bằng kiểm tra thủ công, được giới thiệu vào tháng 8 năm 2024 cùng với OpenAI[7]. Các nhà nghiên cứu đã huy động 93 nhà phát triển chuyên nghiệp để phân tích từng bài toán của benchmark gốc và loại bỏ các trường hợp mà mô tả vấn đề gốc quá mơ hồ hoặc hành vi mà các bài kiểm thử yêu cầu không xuất phát rõ ràng từ điều kiện bài toán[7]. Các bài toán không thể giải quyết được trong thực tế do sự cố môi trường hoặc các bài kiểm thử không đúng cũng đã được loại bỏ[7]. Kết quả là một bộ gồm 500 bài toán được đảm bảo giải được và được phát biểu chính xác[7]. SWE-bench Verified nhằm mục đích cung cấp đánh giá đáng tin cậy hơn về khả năng của các mô hình, loại bỏ các trường hợp mà ngay cả giải pháp đúng cũng bị từ chối do các bài kiểm thử hoặc đề bài không phù hợp[7]. Bộ này đã thay thế các mẫu kiểm tra SWE-bench gốc (đầy đủ và Lite) làm điểm tham chiếu chính để so sánh các mô hình[7]. Ngoài ra, cùng với Verified, các đánh giá độ khó của bài toán cũng được công bố (ví dụ: xác định các bài toán «dễ» có thể giải trong <15 phút với người và «khó» đòi hỏi >1 giờ)[7], và một khung công cụ mới dựa trên Docker cũng được phát hành để chạy kiểm thử ổn định và có thể tái tạo hơn[7].
  • SWE-bench Multimodal — phần mở rộng của benchmark được giới thiệu vào tháng 1 năm 2025, bao gồm các bài toán trong đó mô tả vấn đề chứa không chỉ văn bản mà còn cả các yếu tố trực quan (ví dụ: hình ảnh giao diện, ảnh chụp màn hình lỗi, v.v.)[8]. Bộ này (517 bài toán[8]) kiểm tra khả năng của các mô hình và agent trong việc hiểu và sử dụng thông tin trực quan khi giải quyết các bài toán lập trình. Việc đánh giá trên bộ đa phương thức được tổ chức tương tự, nhưng yêu cầu mô hình có khả năng đa phương thức (ví dụ: nhận dạng văn bản trong hình ảnh). Phần kiểm tra của SWE-bench Multimodal được giữ kín (ẩn) để ngăn chặn việc điều chỉnh giải pháp theo các câu trả lời đã biết; các nhà phát triển có thể gửi giải pháp lên leaderboard từ xa để đánh giá mô hình của họ trên các bài toán này[2].

Ngoài các biến thể chính này, một hệ sinh thái công cụ đã hình thành xung quanh SWE-bench: SWE-agent — một «agent» phần mềm mã nguồn mở dùng để giải quyết bài toán, thể hiện kết quả hàng đầu trên benchmark[2]; SWE-smith — framework để huấn luyện các mô hình nhà phát triển riêng; SWE-REX — công cụ để trích xuất và xử lý thông tin nâng cao từ các kho lưu trữ, v.v. Các dự án này nhằm mục đích đơn giản hóa việc tái tạo kết quả và thúc đẩy nghiên cứu trong lĩnh vực các hệ thống lập trình tự trị.

Kết quả và tiến bộ của các mô hình

Khi SWE-bench lần đầu xuất hiện, nó đã bộc lộ khoảng cách đáng kể giữa các LLM hiện đại và kỹ năng của các lập trình viên có kinh nghiệm. Các tác giả cho biết ngay cả các mô hình mạnh nhất đầu năm 2023 cũng chỉ giải quyết được vài phần trăm bài toán: ví dụ, mô hình Claude 2 của công ty Anthropic chỉ giải thành công dưới 2% các bài toán trong bộ đầy đủ[1]. Mô hình được các tác giả benchmark huấn luyện riêng (dựa trên LLaMA, có tên là SWE-Llama) và các mô hình độc quyền như GPT-4 chủ yếu chỉ có thể giải quyết các lỗi đơn giản nhất[1]. Các chỉ số thấp ban đầu này đã nhấn mạnh độ khó của SWE-bench và thúc đẩy sự phát triển của các phương pháp tiếp cận mới.

Trong suốt năm 2024, khi các mô hình tiên tiến hơn và các sơ đồ agent xuất hiện, kết quả đã được cải thiện đáng kể. Các nhà nghiên cứu từ Princeton đã giới thiệu hệ thống SWE-agent, kết hợp GPT-4 với tìm kiếm mã, lập kế hoạch và các công cụ khác; nó đạt khoảng 12,5% bài toán được giải trên bộ đầy đủ, thiết lập điểm chuẩn mới cho các mô hình học thuật[5]. Đến giữa năm 2024, trên leaderboard chính thức của SWE-bench, các giải pháp tốt nhất (bao gồm cả độc quyền) đạt khoảng 20% giải thành công trên benchmark đầy đủ và tới 43% trên bộ Lite rút gọn[7]. Sự tăng trưởng này liên quan đến việc cải thiện các mô hình (ví dụ: sự xuất hiện của GPT-4, Claude 2 và 3) và đặc biệt là sự phát triển của «scaffolding» — các chiến lược bên ngoài cho phép mô hình hiệu quả chia nhỏ bài toán thành các bước, đọc tài liệu, chạy các phiên gỡ lỗi, v.v.[7]

Sau khi giới thiệu bộ Verified vào cuối năm 2024 (đã được làm sạch khỏi các bài toán không đúng), hiệu suất đo lường được tăng cao hơn nữa. Mô hình GPT-4 (biến thể GPT-4o) ngay lập tức cho thấy khoảng 33% giải thành công trên Verified so với ~16% trước đó trên bộ gốc[7]. Các framework agent mã nguồn mở tốt nhất (ví dụ: Agentless) đã tăng gấp đôi kết quả của mình từ ~16% lên 32% trên Verified[7]. Điều này xác nhận giả thuyết rằng benchmark gốc đã phần nào đánh giá thấp các chỉ số do sự hiện diện của các trường hợp không thể giải được[7]. Đồng thời, sự cải thiện kết quả trên Verified so với Lite không quá đáng kể (các mô hình tốt nhất đã đạt ~43% trên Lite), điều này hợp lý: Lite ban đầu chọn lọc các ví dụ dễ hơn, còn Verified loại bỏ các trường hợp không thể thực hiện được, nhưng vẫn giữ lại các bài toán khó[7]. Điều quan trọng cần lưu ý là sự tăng trưởng chỉ số khi chuyển sang Verified xảy ra trong tất cả các danh mục độ khó của bài toán, không chỉ do loại bỏ những bài khó nhất — tức là việc lọc đã giúp bộ dữ liệu thoát khỏi cả những trường hợp không thể thực hiện được một cách ngầm trong số các bài toán tương đối đơn giản[7].

Vào đầu năm 2025, các hệ thống AI dẫn đầu đã thể hiện hiệu suất gần với mức con người trên bộ bài toán đã được xác minh, mặc dù mức trần 100% vẫn còn xa vời. Vào tháng 1 năm 2025, công ty Anthropic thông báo rằng mô hình Claude 3.5 Sonnet mới của họ kết hợp với agent được cải tiến đã giải quyết 49% bài toán SWE-bench Verified[4], tạm thời vươn lên vị trí đầu bảng. Các công ty công nghệ lớn và các nhóm độc lập cũng tích cực tham gia vào các cuộc thi không chính thức trên benchmark này. Như vậy, nhóm CodeStory đã phát triển cách tiếp cận đa mô hình với phương pháp thử nhiều phương án («Midwit Agent»), đạt mức kỷ lục 62,2% bài toán được giải trên Verified (dữ liệu đầu năm 2025)[5][9]. Người ta ghi nhận rằng để đạt được điều này, cần phải tăng đáng kể chi phí tài nguyên tính toán ở giai đoạn suy luận của mô hình (gọi là inference time scaling), chạy nhiều lần thử giải và chọn kết quả tốt nhất[5]. Về phần mình, trong các tài liệu của OpenAI có đề cập đến hệ thống thử nghiệm GPT-o3, mà với đủ mức độ mở rộng tính toán được cho là đã vượt qua ngưỡng 70% trên Verified (dữ liệu không chính thức)[5]. Tuy nhiên, việc xác minh độc lập các kết quả này chưa được thực hiện, và chỉ số cao như vậy vẫn là định hướng cho nghiên cứu trong tương lai hơn là một cột mốc đã đạt được.

Theo nghiên cứu của Microsoft Research (2025), ngay cả các mô hình mới nhất khi được trang bị các công cụ gỡ lỗi vẫn chưa vượt qua được ngưỡng 50% các lỗi sửa thành công từ SWE-bench Lite[6]. Trong thử nghiệm này, Claude 3.7 Sonnet cho kết quả tốt nhất với ~48,4% bài toán được giải, trong khi hệ thống dựa trên GPT-4 (OpenAI o1) giải khoảng 30%, còn mô hình nhẹ hơn o3-mini chỉ giải được 22%[6]. Những kết quả này nhấn mạnh rằng, mặc dù tiến bộ nhanh chóng, các AI hiện đại vẫn thua kém các lập trình viên có kinh nghiệm: đối với con người, việc giải quyết các bài toán như vậy (với sự hiểu biết về mã) không gặp khó khăn, trong khi mô hình thường không biết cách sử dụng hiệu quả các công cụ gỡ lỗi hoặc thiếu dữ liệu huấn luyện phản ánh quy trình sửa lỗi nhiều bước[6].

Hạn chế và triển vọng

SWE-bench đã trở thành nền tảng chuẩn hóa để đánh giá các agent mã thông minh, tuy nhiên các nghiên cứu cũng đã phát hiện ra một số hạn chế của nó. Vấn đề chính là sự không đầy đủ của việc kiểm thử: bộ bài kiểm thử xác minh cho mỗi bài toán được lấy từ một pull request cụ thể và thường chỉ bao gồm các bài kiểm thử đơn vị đã được thay đổi khi sửa lỗi[3]. Như phân tích của nhóm các nhà khoa học từ Đại học Chiết Giang và Đại học Stuttgart cho thấy (Wang et al. 2025), việc bỏ qua các bài kiểm thử khác của dự án có thể che giấu sự không chính xác của một số giải pháp[3]. Việc kiểm tra lại các giải pháp trên toàn bộ bộ kiểm thử của kho lưu trữ cho thấy trung bình 7,8% các patch được đánh dấu là thành công trong SWE-bench thực ra không vượt qua các bài kiểm thử khác trong dự án[3]. Điều này dẫn đến việc phóng đại chỉ số «bài toán đã giải» khoảng 4-6 điểm phần trăm[3]. Trường hợp tinh tế hơn là khi patch được tạo ra vượt qua tất cả các bài kiểm thử gốc, nhưng lại không tương đương với giải pháp của nhà phát triển và thay đổi hành vi của chương trình không như mong đợi. Bằng cách tạo ra các trường hợp kiểm thử bổ sung (phương pháp PatchDiff), các nhà nghiên cứu phát hiện rằng gần 30% các bản vá do AI đề xuất hoạt động khác với các patch tham chiếu, và khoảng 11% — rõ ràng là sai, mặc dù không bị phát hiện bởi các bài kiểm thử hiện có[3]. Do đó, khả năng thực sự của các mô hình có thể bị đánh giá quá cao nếu chỉ dựa vào việc vượt qua bộ bài kiểm thử hạn chế. Những người tạo ra SWE-bench thừa nhận điểm yếu này và nhấn mạnh rằng benchmark phải phát triển theo thời gian: cải thiện độ bao phủ kiểm thử, thêm kiểm tra sự vắng mặt của các tác dụng phụ không mong muốn, mở rộng bộ các loại bài toán[7]. Việc phát triển các công cụ đánh giá như vậy là một phần quan trọng trong quá trình chuẩn bị cho sự xuất hiện của các nhà phát triển AI ngày càng tự trị và mạnh mẽ hơn, và kinh nghiệm với SWE-bench cho thấy sự cần thiết phải chú ý cẩn thận đến chất lượng của các benchmark[7].

SWE-bench, dù chỉ là một bộ bài toán tĩnh, không bao phủ hoàn toàn tất cả các khía cạnh của lập trình, nhưng đã trở thành tiêu chuẩn de facto để phân tích so sánh các mô hình mã[3]. Nó được sử dụng trong các công trình khoa học để trình bày các phương pháp và thuật toán mới, cũng như bởi các nhóm nghiên cứu công nghiệp để đánh giá tiềm năng của các hệ thống được thiết kế để tự động hóa lập trình[3]. Sự tăng trưởng liên tục của kết quả trên SWE-bench trong giai đoạn 2023-2025 minh họa rõ ràng sự cải thiện nhanh chóng khả năng của LLM trong việc giải quyết các bài toán phát triển thực tế. Đồng thời, nó đóng vai trò là thước đo độ phức tạp: ngay cả khi tiến gần đến 50-60% bài toán được giải, các mô hình vẫn còn xa mới thay thế hoàn toàn con người, đặc biệt trong điều kiện thông tin hạn chế và cần sự hiểu biết tinh tế về yêu cầu[4][7]. Tuy nhiên, tiến bộ không dừng lại — nhờ các sáng kiến như SWE-bench, cộng đồng thấy rõ mục tiêu và giới hạn của mình, và tiếp tục hướng tới việc tạo ra một nhà phát triển AI đầy đủ, có khả năng tự trị hiểu và sửa mã chương trình ở mức độ của một chuyên gia con người[4][7].

Tham khảo

  • SWE-bench trên GitHub
  • Leaderboard chính thức của SWE-bench

Tài liệu

  • Liang, P. et al. (2022). Holistic Evaluation of Language Models (HELM). arXiv:2211.09110.
  • Chang, Y. et al. (2023). A Survey on Evaluation of Large Language Models. arXiv:2307.03109.
  • Ni, S. et al. (2025). A Survey on Large Language Model Benchmarks. arXiv:2508.15361.
  • Biderman, S. et al. (2024). The Language Model Evaluation Harness (lm-eval): Guidance and Lessons Learned. arXiv:2405.14782.
  • Kiela, D. et al. (2021). Dynabench: Rethinking Benchmarking in NLP. arXiv:2104.14337.
  • Ma, Z. et al. (2021). Dynaboard: An Evaluation‑As‑A‑Service Platform for Holistic Next‑Generation Benchmarking. arXiv:2106.06052.
  • Goel, K. et al. (2021). Robustness Gym: Unifying the NLP Evaluation Landscape. arXiv:2101.04840.
  • Xu, C. et al. (2024). Benchmark Data Contamination of Large Language Models: A Survey. arXiv:2406.04244.
  • Liu, S. et al. (2025). A Comprehensive Survey on Safety Evaluation of LLMs. arXiv:2506.11094.
  • Chiang, W.-L. et al. (2024). Chatbot Arena: An Open Platform for Evaluating LLMs by Human Preference. arXiv:2403.04132.
  • Boubdir, M. et al. (2023). Elo Uncovered: Robustness and Best Practices in Language Model Evaluation. arXiv:2311.17295.
  • Huang, L. et al. (2023). A Survey on Hallucination in Large Language Models. arXiv:2311.05232.

Ghi chú

  1. 1.0 1.1 1.2 1.3 1.4 1.5 Jimenez, Carlos E. et al. «SWE-bench: Can Language Models Resolve Real-World GitHub Issues?». arXiv. [1]
  2. 2.0 2.1 2.2 «SWE-bench/SWE-bench». GitHub. [2]
  3. 3.00 3.01 3.02 3.03 3.04 3.05 3.06 3.07 3.08 3.09 3.10 Wang, Shuyang et al. «Are "Solved Issues" in SWE-bench Really Solved Correctly? An Empirical Study». arXiv. [3]
  4. 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 «Claude SWE-Bench Performance». Anthropic. [4]
  5. 5.0 5.1 5.2 5.3 5.4 Jain, Sulbha. «SWE Benchmark: LLM evaluation in Software Engineering Setting». Medium. [5]
  6. 6.0 6.1 6.2 6.3 Hatmaker, Taylor. «AI models still struggle to debug software, Microsoft study shows». TechCrunch. [6]
  7. 7.00 7.01 7.02 7.03 7.04 7.05 7.06 7.07 7.08 7.09 7.10 7.11 7.12 7.13 7.14 7.15 7.16 7.17 7.18 7.19 7.20 7.21 7.22 «Introducing SWE-bench Verified». OpenAI. [7]
  8. 8.0 8.1 8.2 «SWE-bench Leaderboard». [8]
  9. «SOTA on swebench-verified: relearning the bitter lesson». Hacker News (Y Combinator). [9]