Skip to main content
QUICK REVIEW

[논문 리뷰] An Empirical Study of Self-Admitted Technical Debt in Machine Learning Software

Aaditya Bhatia, Foutse Khomh|arXiv (Cornell University)|2023. 11. 20.
Software Engineering Research인용 수 6
한 줄 요약

이 연구는 318개의 오픈소스 ML 및 비-ML 프로젝트를 분석하여 기계학습(ML) 소프트웨어에서 자가인정 기술 부채(SATD)를 조사한다. 연구 결과, ML 프로젝트는 중앙값 기준으로 비-ML 프로젝트의 두 배에 달하는 SATD 비율을 보이며, 더 이르게 부채를 유발하고, 데이터 전처리 및 모델 생성과 연관된 고유한 부채 패턴을 보이며, 장기 부채는 일반적으로 저복잡도의 다중 파일 변경에서 유래하는 것으로 나타났다.

ABSTRACT

The emergence of open-source ML libraries such as TensorFlow and Google Auto ML has enabled developers to harness state-of-the-art ML algorithms with minimal overhead. However, during this accelerated ML development process, said developers may often make sub-optimal design and implementation decisions, leading to the introduction of technical debt that, if not addressed promptly, can have a significant impact on the quality of the ML-based software. Developers frequently acknowledge these sub-optimal design and development choices through code comments during software development. These comments, which often highlight areas requiring additional work or refinement in the future, are known as self-admitted technical debt (SATD). This paper aims to investigate SATD in ML code by analyzing 318 open-source ML projects across five domains, along with 318 non-ML projects. We detected SATD in source code comments throughout the different project snapshots, conducted a manual analysis of the identified SATD sample to comprehend the nature of technical debt in the ML code, and performed a survival analysis of the SATD to understand the evolution of such debts. We observed: i) Machine learning projects have a median percentage of SATD that is twice the median percentage of SATD in non-machine learning projects. ii) ML pipeline components for data preprocessing and model generation logic are more susceptible to debt than model validation and deployment components. iii) SATDs appear in ML projects earlier in the development process compared to non-ML projects. iv) Long-lasting SATDs are typically introduced during extensive code changes that span multiple files exhibiting low complexity.

연구 동기 및 목표

  • 기계학습(ML) 소프트웨어에서 자가인정 기술 부채(SATD)의 보편성과 특성을 비-ML 소프트웨어와 비교하여 조사하기.
  • 데이터 전처리, 모델 학습, 배포와 같은 ML 파이프라인의 다양한 구성 요소에 걸쳐 SATD의 성격과 분포를 이해하기.
  • SATD의 시간적 동역학, 즉 유입 및 해소 속도를 분석하고, 장기 부채를 유도하는 요인을 특정하기.
  • 기존 SATD 분류 체계를 확장하여 '부적절한 테스팅'과 '설정' 부채와 같은 ML 전용 부채 유형을 식별하기.
  • 생존 분석과 기계학습 해석 기법을 활용하여 소프트웨어 메트릭과 ML 코드 내 SATD 지속성 간의 관계 탐색하기.

제안 방법

  • 키워드 기반 히우리스틱을 사용해 소스 코드 주석을 분석하여 SATD를 탐지하는 방식으로, ML 및 비-ML 오픈소스 프로젝트 총 318개를 수집하고 분석함.
  • 대표적인 SATD 주석 샘플에 대한 수작업 분석을 통해 ML 전용 기술 부채 유형의 분류 체계를 수립하고 개선함.
  • 생존 분석을 적용하여 카프산-마이어 추정기(Kaplan-Meier estimator)를 사용해 SATD의 해소 시간을 모델링하고, 케이스가 제한된 데이터를 고려해 부채 수명을 추정함.
  • 통계 모델링 및 특성 중요도 분석(예: SHAP)을 활용해 ML 프로젝트에서 장기 부채를 유발하는 코드 수준의 특성 식별함.
  • SATD를 포함한 파일의 소프트웨어 메트릭(예: 코드 복잡도, 파일 크기, 변경 빈도)을 측정하여 부채 지속성과의 상관관계 분석함.
  • 버전 제어 이력의 시계열 분석을 통해 ML 및 비-ML 프로젝트 간의 SATD 유입 및 제거 속도 비교함.

실험 결과

연구 질문

  • RQ1RQ1: ML 코드에서의 SATD 유병률은 비-ML 코드에 비해 어떻게 다른가?
  • RQ2RQ2: ML 코드에서 지배적인 SATD 유형과 유형은 무엇이며, 전통적 소프트웨어와 어떻게 다를까?
  • RQ3RQ3: ML 파이프라인의 어떤 구성 요소(예: 데이터 전처리, 모델 학습)에서 SATD가 가장 높은가?
  • RQ4RQ4: ML 프로젝트에서 SATD는 비-ML 프로젝트에 비해 얼마나 빨리 유입되고 해소되는가?
  • RQ5RQ5: ML 프로젝트에서 장기 부채를 유발하는 코드 수준의 특성은 무엇인가?

주요 결과

  • ML 프로젝트의 중앙값 SATD 비율은 비-ML 프로젝트의 두 배이며, 비-ML 코드의 2%가 SATD를 포함함.
  • SATD는 데이터 전처리 및 모델 생성 구성 요소에서 가장 높은 비율을 보이며, 검증 및 배포 구성 요소는 낮은 부채 비율을 보임.
  • ML 프로젝트에서 SATD는 비-ML 프로젝트보다 140배 더 빠르게 유입되며, 개발 과정에서 기술 부채가 급격히 축적됨을 시사함.
  • ML 프로젝트에서 SATD는 비-ML 프로젝트보다 3.7배 더 빠르게 해소되며, 부채 항목의 순환율이 높음을 시사함.
  • ML 코드에서 장기 부채는 일반적으로 저복잡도의 다중 파일 변경 시기에 유입됨.
  • 순환 복잡도가 낮은 파일은 장기간 지속되는 SATD를 포함할 가능성이 더 높으며, 이는 소규모 파일이 고위험 영역임을 시사함.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.