Skip to main content
QUICK REVIEW

[논문 리뷰] PyGlove: Symbolic Programming for Automated Machine Learning

Daiyi Peng, Xuanyi Dong|arXiv (Cornell University)|2021. 01. 21.
Machine Learning and Data Classification인용 수 7
한 줄 요약

PyGlove는 자동 기계 학습(AutoML)을 위한 기호 프로그래밍 패러다임을 도입하여, 검색 공간, 검색 알고리즘, 자식 모델을 분리하는 가변적이고 조작 가능한 ML 프로그램을 가능하게 한다. 모델을 기호적 객체로 간주함으로써 PyGlove는 동적 프로그램 변환을 가능하게 하여 복잡한 검색 흐름과 아키텍처 및 초매개변수에 대한 빠른 반복을 단순화한다. 이는 ImageNet과 NAS-Bench-101에서 검색 효율성과 유연성 향상을 입증하였다.

ABSTRACT

Neural networks are sensitive to hyper-parameter and architecture choices. Automated Machine Learning (AutoML) is a promising paradigm for automating these choices. Current ML software libraries, however, are quite limited in handling the dynamic interactions among the components of AutoML. For example, efficientNAS algorithms, such as ENAS and DARTS, typically require an implementation coupling between the search space and search algorithm, the two key components in AutoML. Furthermore, implementing a complex search flow, such as searching architectures within a loop of searching hardware configurations, is difficult. To summarize, changing the search space, search algorithm, or search flow in current ML libraries usually requires a significant change in the program logic. In this paper, we introduce a new way of programming AutoML based on symbolic programming. Under this paradigm, ML programs are mutable, thus can be manipulated easily by another program. As a result, AutoML can be reformulated as an automated process of symbolic manipulation. With this formulation, we decouple the triangle of the search algorithm, the search space and the child program. This decoupling makes it easy to change the search space and search algorithm (without and with weight sharing), as well as to add search capabilities to existing code and implement complex search flows. We then introduce PyGlove, a new Python library that implements this paradigm. Through case studies on ImageNet and NAS-Bench-101, we show that with PyGlove users can easily convert a static program into a search space, quickly iterate on the search spaces and search algorithms, and craft complex search flows to achieve better results.

연구 동기 및 목표

  • 기존 AutoML 라이브러리에서 검색 공간, 검색 알고리즘, 모델 구현 간의 강한 결합으로 인해 영향을 받는 영향을 줄이기 위해.
  • 검색 중에 ML 프로그램을 동적으로 수정할 수 있도록 하여, 코드로 고정된 것이 아니라 가변적인 기호적 객체로 모델을 간주하기 위해.
  • 메타프로그래밍을 통해 기호적 표현을 활용함으로써 복잡한 검색 흐름(예: 중첩 또는 인수 분해된 검색)을 지원하기 위해.
  • 기존 ML 파ip라인에 AutoML를 통합하는 데 있어 장벽을 낮추기 위해 플러그 앤 플레이 검색 기능을 제공하기 위해.
  • 실제 AutoML 벤치마크(예: ImageNet과 NAS-Bench-101)에서 기호 프로그래밍의 실용적 이점을 입증하기 위해.

제안 방법

  • Python 클래스와 함수에 애너테이션을 사용하여 가변적으로 만들고, 런타임에서 복제 및 수정이 가능한 기호 프로그래밍 모델을 도입한다.
  • 기호 재결합(예: `rebind` 메서드)을 사용하여 하이퍼파라미터(예: 커널 크기, 확장 비율, 필터 수)를 수정함으로써 정적 모델을 검색 공간으로 변환한다.
  • 메타프로그램을 사용하여 검색 공간, 알고리즘, 자식 모델 간의 상호작용을 조정함으로써 검색 로직의 동적 적응을 가능하게 한다.
  • 고차원 샘플링 구조(예: `pg.sample`)를 통해 중첩 또는 단계별 검색 전략을 허용함으로써 복잡한 검색 흐름을 지원한다.
  • 기호적 변환을 통해 자식 모델를 다양한 가중치 공유 또는 미분 가능한 검색 공간으로 변환함으로써 가중치 공유 및 슈퍼넷 구축을 지원한다.
  • 기존 ML 코드와의 원활한 통합을 위해 Python에서 기호 프로그래밍 원리를 노출하는 라이브러리인 PyGlove를 제공한다.

실험 결과

연구 질문

  • RQ1검색 공간, 검색 알고리즘, 자식 모델를 어떻게 분리하여 독립적인 수정과 실험을 가능하게 할 수 있는가?
  • RQ2기호 프로그래밍이 NAS에서 인수 분해 또는 하이브리드 검색과 같은 효율적이고 조합 가능한 검색 흐름을 가능하게 할 수 있는가?
  • RQ3기호 조작이 기존 ML 파이프라인에 AutoML를 통합하는 데 얼마나 기여할 수 있는가?
  • RQ4기호 프로그래밍은 검색 공간과 알고리즘에 대한 반복의 영향력과 속도를 어떻게 향상시키는가?
  • RQ5기호 조작을 통해 활성화된 복잡한 검색 흐름이 실제 벤치마크에서 어떤 성능 향상을 이룰 수 있는가?

주요 결과

  • PyGlove는 기호 재결합을 적용하여 정적 MobileNetV2 모델을 검색 공간으로 변환함으로써 커널 크기, 확장 비율, 채널 너비를 조정할 수 있다.
  • 라이브러리는 노드 및 에지 검색을 단계별로 분리한 인수 분해 또는 하이브리드 검색과 같은 복잡한 검색 흐름을 지원하며, 검색 효율성을 향상시킨다.
  • NAS-Bench-101에서 PyGlove의 하이브리드 검색은 상위-1 정확도 94.8%를 달성하여 표준 검색을 능가하며 아키텍처 공간 탐색을 더 잘 수행할 수 있었다.
  • 기호적 접근은 가중치 공유와 비가중치 공유 검색 알고리즘 간 전환 시 광범위한 코드 리팩터링이 필요로 하는 것을 줄였다.
  • 사용자는 핵심 프로그램 논리 변경 없이 기호 표현을 수정하여 새로운 검색 공간과 알고리즘을 신속하게 프로토타ип하고 테스트할 수 있었다.
  • 이 프레임워크는 존재하는 훈련 파이프라인에 원활하게 통합되어, 기존 모델에 최소한의 변경으로 AutoML를 추가할 수 있었다.

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

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

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

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