Skip to main content
QUICK REVIEW

[논문 리뷰] PyTorrent: A Python Library Corpus for Large-scale Language Models

Mehdi Bahrami, N. C. Shrikanth|arXiv (Cornell University)|2021. 10. 04.
Software Engineering Research참고 문헌 27인용 수 4
한 줄 요약

PyTorrent는 파이썬 패키지 라이브러리 218,814개로 구성된 대규모 공개 코퍼스로, 소프트웨어 공학 작업에서 대규모 언어 모델을 훈련하고 미세조정하기 위해 정제된 것이다. 소스 코드, 자연어 설명, 메타데이터, 그리고 사전 훈련된 DistilBERT 기반 모델을 제공하여 코드 검색, 코드 생성, 결함 예측 작업에 최소한의 인프라 부담으로 직접 활용할 수 있다.

ABSTRACT

A large scale collection of both semantic and natural language resources is essential to leverage active Software Engineering research areas such as code reuse and code comprehensibility. Existing machine learning models ingest data from Open Source repositories (like GitHub projects) and forum discussions (like Stackoverflow.com), whereas, in this showcase, we took a step backward to orchestrate a corpus titled PyTorrent that contains 218,814 Python package libraries from PyPI and Anaconda environment. This is because earlier studies have shown that much of the code is redundant and Python packages from these environments are better in quality and are well-documented. PyTorrent enables users (such as data scientists, students, etc.) to build off the shelf machine learning models directly without spending months of effort on large infrastructure. The dataset, schema and a pretrained language model is available at: https://github.com/fla-sil/PyTorrent

연구 동기 및 목표

  • 소프트웨어 공학 분야에서 대규모 언어 모델을 훈련하기 위한 고품질로 정제된 파이썬 라이브러리 코퍼스의 부족을 해결하기 위해.
  • PyPI와 아나콘다에서 제공하는 고품질로 잘 문서화된 파이썬 패키지의 데이터셋을 제공하여 코드 재사용성과 이해 가능성 향상.
  • 연구자와 실무자가 CodeBERT, CodeXGLUE, GraphCodeBERT와 같은 기존 모델을 훈련하기 위해 광범위한 데이터 준비나 인프라 없이도 쉽게 미세조정할 수 있도록 지원하기 위해.
  • 표준화되고 스키마에 부합하는 데이터셋을 통해 코드 검색, 코드 생성, 자동 프로그램 복구와 같은 후행 작업을 지원하기 위해.
  • 사전 토큰화, 자르기, 최적화된 데이터셋과 사전 훈련된 모델을 제공함으로써 훈련 시간과 계산 비용을 줄이기 위해.

제안 방법

  • 218,814개의 파이썬 패키지를 PyPI와 아나콘다에서 추출하여 소스 코드, 문서 문자열, 메타데이터(예: 패키지 이름, 라이선스, 지원하는 파이썬 버전)를 추출하였다.
  • 기존의 트랜스포머 기반 모델과의 호환성을 확보하기 위해 CodeSearchNet에 부합하는 스키마를 채택하였으며, 자연어 설명(NL), 소스 코드(PL), 함수 이름, 토큰 등의 필드를 포함하였다.
  • 계산 부담을 줄이기 위해 100만 개의 원시 파이썬 스크립트(12.35M LOC)를 기반으로 바이트 수준의 BPE 토크나이저를 훈련하였고, 각 시퀀스를 50개 토큰으로 자르는 방식을 적용하였다.
  • 100만 개의 스크립트를 기반으로 DistilBERT 기반의 마스킹 언어 모델을 새로 훈련하여 사전 훈련된 모델을 생성하였으며, 이를 Hugging Face Hub에 공개하여 PyTorrent(v1)로 출시하였다.
  • 다양한 후행 작업, 특히 코드 검색과 코드 생성을 지원하기 위해 세 가지 증강된 코드 시나리오를 포함하였다.
  • PyTorrent 데이터셋을 사용하여 CodeBERT에 대한 미세조정 실험을 수행하였으며, 다중 라인 코드 생성 작업에서 뛰어난 성능을 입증하였다.

실험 결과

연구 질문

  • RQ1PyPI와 아나콘다에서 추출한 정제된 파이썬 패키지 라이브러리 코퍼스가 코드 검색 및 코드 생성 모델의 성능 향상에 기여할 수 있는가?
  • RQ2패키지 매니저에서 제공하는 고품질로 잘 문서화된 패키지를 사용할 경우, 깃허브 레포지터리에서 추출한 자료와 비교해 모델의 일반화 능력 향상에 얼마나 기여하는가?
  • RQ3PyTorrent에서 훈련한 사전 훈련된 모델이 코드 검색 및 코드 생성과 같은 후행 작업에 얼마나 효과적인가?
  • RQ4PyTorrent 데이터셋이 CodeSearchNet, CodeBERT, GraphCodeBERT와 같은 기존 프레임워크에 쉽게 통합되어 미세조정에 사용될 수 있는가?
  • RQ5간단한 패키지(≤35 LOC, 순환 복잡도 ≤10)를 제거하는 것이 모델 훈련 효율성과 출력 품질에 어떤 영향을 미치는가?

주요 결과

  • PyTorrent는 총 4,058,349개 파일, 65500만 행의 코드, 284만 개의 함수를 포함하고 있어 현재까지 가장 큰 정제된 파이썬 코드 코퍼스 중 하나이다.
  • 모든 218,814개 패키지에 대해 라이선스, 지원하는 파이썬 버전, 패키지 설명 등의 메타데이터를 포함하여 모델의 해석 가능성과 사용 용이성을 향상시켰다.
  • 100만 개의 스크립트를 기반으로 사전 훈련된 DistilBERT 모델(PyTorrent(v1))를 성공적으로 새로 훈련하였으며, Hugging Face Hub에 공개하여 즉시 배포 가능하도록 하였다.
  • PyTorrent 데이터셋을 사용해 CodeBERT를 미세조정한 결과, 다중 라인 코드 생성 작업에서 뛰어난 성능을 보였으며, 이는 복잡한 코드 합성 작업에 있어 데이터셋의 가치를 입증하였다.
  • CodeSearchNet, CodeXGLUE, GraphCodeBERT와 같은 주요 코드 모델링 프레임워크와 호환되어 후행 연구에 즉각 통합 가능한 플러그 앤 플레이 형식의 통합을 가능케 하였다.
  • 56,000개 토큰을 가진 BPE 토크나이저와 50개 토큰으로 시퀀스를 자르는 전략을 통해 계산 비용을 크게 줄였으며, 동시에 모델 성능을 유지하였다.

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

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

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

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