Skip to main content
QUICK REVIEW

[논문 리뷰] Sionnx: Automatic Unit Test Generator for ONNX Conformance

Xinli Cai, Peng Zhou|arXiv (Cornell University)|2019. 06. 12.
Adversarial Robustness in Machine Learning참고 문헌 22인용 수 5
한 줄 요약

Sionnx는 ONNX 호환성에 대한 첫 번째 자동 단위 테스트 생성기로, 새로운 연산자 사양 언어(ОСL)와 세 단계 랜덤화 전략(TDBc-gen)을 사용하여 데이터 유형, 차원, 경계 조건을 체계적으로 탐색함으로써 고도의 커버리지 테스트를 생성한다. 이는 최소한의 수동 작업으로 ONNX 프레임워크 간에 확장 가능하고 정확하며 효율적인 호환성 테스트를 가능하게 한다.

ABSTRACT

Open Neural Network Exchange (ONNX) is an open format to represent AI models and is supported by many machine learning frameworks. While ONNX defines unified and portable computation operators across various frameworks, the conformance tests for those operators are insufficient, which makes it difficult to verify if an operator's behavior in an ONNX backend implementation complies with the ONNX standard. In this paper, we present the first automatic unit test generator named Sionnx for verifying the compliance of ONNX implementation. First, we propose a compact yet complete set of rules to describe the operator's attributes and the properties of its operands. Second, we design an Operator Specification Language (OSL) to provide a high-level description for the operator's syntax. Finally, through this easy-to-use specification language, we are able to build a full testing specification which leverages LLVM TableGen to automatically generate unit tests for ONNX operators with much large coverage. Sionnx is lightweight and flexible to support cross-framework verification. The Sionnx framework is open-sourced in the github repository (https://github.com/alibaba/Sionnx).

연구 동기 및 목표

  • 수작업 테스트 케이스에 의존함으로써 ONNX 연산자에 대한 종합적이고 자동화된 호환성 테스트의 부족을 해결하기 위해.
  • 특히 LSTM과 같이 계산적으로 집약적인 연산자들에 대해 복잡한 참조 알고리즘을 수작업으로 작성하는 데 드는 부담을 줄이기 위해.
  • 다양한 프레임워크 간 ONNX 연산자 구현을 검증할 수 있도록 경량이고 유연한 프레임워크를 설계하기 위해.
  • 데이터 유형 조합, 차원 변화, 경계 조건과 같이 행동적으로 중요한 테스트 포인트에 집중하여 최소한의 테스트 케이스로 높은 테스트 커버리지를 달성하기 위해.

제안 방법

  • 연산자 속성과 피연산자 제약 조건을 기술하기 위한 컴act한 규칙 기반 시스템을 제안하여 유효한 입력을 정밀하게 사양할 수 있도록 한다.
  • ONNX 연산자 구문 및 의미를 기술하기 위한 고수준의 인간이 읽을 수 있는 언어인 연산자 사양 언어(OSL)를 도입한다.
  • OSL 사양을 실행 가능한 테스트 생성 코드로 컴iles하기 위해 LLVM TableGen을 활용한다.
  • 모든 유형 조합, 차원 범위, 경계 조건을 커버하는 세 단계 랜덤화 전략(TDBc-gen)을 설계한다.
  • 유형 조합과 차원 범위에 걸쳐 테스트 케이스를 균일하게 분포시키기 위해 가중치 기반 샘플링 접근법을 사용한다.
  • 기존 Numpy 기반 알고리즘을 재사용하여 참조 결과를 생성함으로써 맞춤형 구현이 필요 없도록 한다.

실험 결과

연구 질문

  • RQ1어떻게 ONNX 호환성 테스트를 자동화하여 수작업 테스트 케이스에 대한 의존도를 줄일 수 있는가?
  • RQ2어떤 체계적인 접근 방식이 테스트 케이스 수를 최소화하면서도 높은 커버리지를 확보할 수 있는가?
  • RQ3복잡한 ONNX 연산자에 대한 참조 결과를 신뢰성 있고 효율적으로 생성하는 방법은 무엇인가?
  • RQ4어떤 가장 중요한 입력 변형(예: 데이터 유형, 차원, 경계 값)이 다양한 연산자 행동을 유도하는가?
  • RQ5다양한 ONNX 프레임워크 간에 재사용 가능하고 민첩한 사양 언어와 랜덤화 전략을 설계할 수 있는가?

주요 결과

  • Sionnx는 경량이고 규칙 기반의 접근 방식을 통해 데이터 유형, 차원, 경계 조건의 전면적인 커버리지를 확보한 단위 테스트를 성공적으로 생성한다.
  • TDBc-gen 랜덤화 전략은 모든 유형 조합과 차원 범위에 걸쳐 테스트 케이스가 균일하게 분포되도록 보장하여 테스트 다양성을 향상시킨다.
  • 기존 Numpy 기반 구현을 재사용함으로써 참조 알고리즘의 수작업 구현 필요성을 줄였다.
  • Sionnx는 '스모크'와 '풀' 두 가지 테스트 프로파일을 지원하여 피연산자 또는 피연산자와 속성을 모두 대상으로 한 타겟 테스트를 가능하게 한다.
  • 시스템은 오픈소스로 공개되었으며 LLVM TableGen에 통합되어 기존 ONNX 테스트 파이프라인에 원활하게 통합될 수 있다.
  • 평가 결과, Sionnx가 생성한 테스트는 전통적인 수작업 테스트 세트에 비해 특히 극단 케이스와 복잡한 연산자에서 훨씬 높은 커버리지를 달성함을 보였다.

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

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

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

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