TorchX와 Ax 통합: 더욱 효율적인 다목적 신경망 아키텍처 검색

NAS의 목표는 신경망에 가장 적합한 아키텍처를 발견하는 것입니다. Torch와 Ax를 통합하면 신경 구조의 다목적 탐색에 도움이 됩니다. 이 글에서는 다목적 베이지안 NAS를 사용하여 완전 자동화된 신경망 구조 검색을 실행하는 방법을 보여드리겠습니다.
AX의 다중 목적 최적화 (다중 목적 최적화)는 신경 구조 탐색을 효과적으로 탐색할 수 있습니다. 신경망 구조 검색 트레이드오프 예를 들어, 모델 성능과 모델 크기 또는 지연 시간 간의 상충 관계와 같은 것입니다.
이러한 접근 방식은 Meta에서 On-Device AI를 포함한 다양한 제품에 성공적으로 사용되었습니다.
이 문서에서는 TorchX 사용에 도움이 되는 종단 간 튜토리얼을 제공합니다.
도끼 소개
신경망은 크기와 복잡성 면에서 계속해서 성장하고 있습니다.최첨단 아키텍처를 개발하는 것은 종종 지루하고 시간이 많이 걸리는 과정으로, 해당 분야의 전문 지식과 광범위한 엔지니어링 노력이 필요합니다.
이러한 과제를 극복하기 위해 여러 가지 신경 구조 탐색(NAS) 방법이 제안되었습니다.HITL(인간 참여 루프)이 필요 없이 성능이 우수한 아키텍처를 자동으로 설계합니다.
샘플 효율성은 낮지만,하지만 랜덤 탐색과 그리드 탐색 같은 단순한 방법은 여전히 하이퍼파라미터 최적화와 NAS에 인기가 있습니다. NeurIPS 2019와 ICLR 2020에서 수행된 연구에 따르면 NeurIPS 논문의 80%와 ICLR 논문의 88%는 ML 모델 하이퍼파라미터를 조정하기 위해 수동 튜닝, 무작위 검색 또는 그리드 검색을 사용한 것으로 나타났습니다.
모델 학습에는 종종 시간이 많이 걸리고 많은 컴퓨팅 리소스가 필요할 수 있으므로그러므로 평가되는 구성의 수를 최소화하는 것이 매우 중요합니다.
Ax는 사용자가 대규모 검색 공간을 탐색하는 동안 베이지안 최적화와 같은 최첨단 알고리즘을 샘플 효율적인 방식으로 사용할 수 있게 해주는 블랙박스 최적화를 위한 일반 도구입니다.
Meta는 다양한 분야에서 Ax를 사용합니다.하이퍼파라미터 튜닝, NAS, 대규모 A/B 테스트를 통한 최적의 제품 설정 결정, 인프라 최적화, 최첨단 AR/VR 하드웨어 설계 등의 분야입니다.
많은 NAS 애플리케이션에서 관심 있는 여러 지표 간에는 자연스러운 상충 관계가 존재합니다.예를 들어, 장치에 모델을 배포할 때 배포 제약 조건을 충족하기 위해 전력 소비, 추론 지연 시간 또는 모델 크기와 같은 경쟁 지표를 최소화하면서 모델 성능(정확도 등)을 극대화하려고 할 것입니다.
많은 경우, 모델 성능이 약간 저하되는 것은 계산 요구 사항이나 예측 지연 시간이 크게 줄어드는 대가로 허용됩니다(어떤 경우에는 정확도가 향상되고 지연 시간도 줄어들 수 있습니다!).
지속 가능한 AI를 실현하는 핵심 요소는 이러한 상충 관계의 의미를 효과적으로 탐구하는 원칙적인 접근 방식입니다.
Meta는 Ax에서 다목적 베이지안 NAS를 사용하여 이러한 상충 관계를 성공적으로 탐구합니다.그리고 이 방법은 이미 AR/VR 장치에서 ML 모델을 최적화하는 데 일상적으로 사용되고 있습니다.
Meta는 NAS 애플리케이션 외에도 AR 광학 시스템의 고차원 다목적 최적화 방법인 MORBO도 개발했습니다.
Ax의 다목적 베이지안 NAS:
Ax를 사용하여 완전 자동 다목적 Nas 구현
Ax의 스케줄러를 사용하면 폐쇄 루프 방식으로 비동기적으로 실험을 실행할 수 있습니다.이는 외부 시스템에 지속적으로 실험을 배포하고, 결과를 폴링하고, 수집된 데이터를 사용하여 더 많은 실험을 생성하고, 중지 조건이 충족될 때까지 프로세스를 반복함으로써 수행됩니다. 인간의 개입이나 감독이 필요하지 않습니다. 이 스케줄러의 기능은 다음과 같습니다.
- 병렬 처리, 내결함성 및 기타 여러 설정을 사용자 정의할 수 있습니다.
- 최첨단 최적화 알고리즘을 다양하게 제공합니다.
- 진행 중인 실험(SQL DB 또는 JSON)을 저장하고 저장소에서 실험을 복원합니다.
- 원격으로 시험 평가를 실행하기 위해 새로운 백엔드로 쉽게 확장할 수 있습니다.
아래는 Ax 스케줄러 튜토리얼의 그림으로, Sceduler가 시험 평가를 실행하는 데 사용되는 외부 시스템과 상호 작용하는 방식을 요약한 것입니다.
Axe sceduler 튜토리얼:
https://ax.dev/tutorials/scheduler.html

Scheduler를 사용하여 자동 NAS를 실행하려면 다음과 같은 준비가 필요합니다.
- 러너를 정의하세요.우리가 선택한 플랫폼에서 학습할 특정 아키텍처를 갖춘 모델을 보내는 일을 담당합니다. (예를 들어, Kubernetes는 단순히 로컬 Docker 이미지일 수 있습니다.) 다음 튜토리얼에서는 TorchX를 사용하여 교육 작업의 배포를 처리합니다.
- 측정항목을 정의합니다.훈련 작업에서 객관적인 측정 항목(정확도, 모델 크기, 지연 시간 등)을 얻는 역할을 담당합니다. 다음 튜토리얼에서는 Tensorboard를 사용하여 데이터를 기록하므로 Ax와 함께 제공되는 Tensorboard 메트릭을 사용할 수 있습니다.
지도 시간
인기 있는 MNIST 데이터세트를 기반으로 간단한 신경망 모델에 대한 다목적 NAS를 실행하기 위해 Ax를 사용하는 방법을 보여주는 튜토리얼입니다.
기본 방법론은 보다 복잡한 모델과 더 큰 데이터 세트에 사용할 수 있지만, 노트북에서 쉽게 실행하고 1시간 이내에 처음부터 끝까지 완료할 수 있는 튜토리얼을 선택했습니다.
이 예에서 우리는 두 개의 숨겨진 계층의 너비, 학습률, 중단 확률, 배치 크기, 학습 반복 횟수를 조정합니다.목표는 다중 목적 베이지안 최적화를 사용하여 성능을 균형 있게 유지하는 것입니다.(검증 세트의 정확도) 및 모델 크기(모델 매개변수 수).
이 튜토리얼에서는 다음 PyTorch 라이브러리를 사용합니다.
- PyTorch Lightnig(모델 및 학습 루프 지정용)
https://github.com/Lightning-AI/lightning
- TorchX(원격/비동기적으로 훈련 작업을 실행하기 위한)
https://github.com/pytorch/torchx
- BoTorch(Ax 알고리즘을 구동하는 베이지안 최적화 라이브러리)
https://github.com/pytorch/botorch
실행 가능한 전체 예제는 다음을 참조하세요.
https://pytorch.org/tutorials/intermediate/ax_multiobjective_nas_tutorial.html
결과
튜토리얼에서 수행한 NAS 최적화의 최종 결과는 아래의 트레이드오프 플롯에서 확인할 수 있습니다.여기서 각 점은 시행의 결과에 해당하고, 색상은 반복 횟수를 나타내며, 별은 목표에 부과된 임계값에 의해 정의된 기준점을 나타냅니다.
이 방법을 사용하면 검증 정확도와 매개변수 수 간의 균형을 성공적으로 탐색할 수 있음을 알 수 있습니다.높은 검증 정확도를 가진 대형 모델과 낮은 검증 정확도를 가진 소형 모델을 모두 찾을 수 있습니다.
의사 결정권자는 성능 요구 사항과 모델 크기 제약에 따라 어떤 모델을 사용하거나 추가 분석할지 선택할 수 있습니다.

심상
Ax는 실험 결과를 분석하고 이해하는 데 도움이 되는 몇 가지 시각화 도구를 제공합니다.우리는 알려지지 않은 타겟을 모델링하기 위한 가우시안 프로세스 모델의 성능에 초점을 맞추고 있으며, 이를 통해 유망한 구성을 보다 빠르게 발견하는 데 도움이 될 수 있습니다.
Ax는 단일 데이터 교차 검증을 통해 이러한 모델의 정확도와 보이지 않는 데이터에 대한 성능을 더 잘 이해하는 데 도움이 됩니다.
아래 그림에서 우리는 모델이 꽤 잘 맞는다는 것을 알 수 있습니다. 예측이 실제 결과와 거의 일치합니다.예측된 95% 신뢰 구간은 실제 결과를 잘 반영합니다.
또한, 모델 사이즈도 확인 가능합니다 (매개변수 개수) 지수 비율 검증 정확도 (발행_계산) 지표는 모델링하기가 더 쉽습니다.

Ax 요약
- Ax를 사용하여 완전 자동화된 다목적 신경망 구조 탐색을 실행하는 방법을 보여주는 튜토리얼입니다.
- Ax 스케줄러를 사용하면 완전 비동기 방식으로 최적화를 자동으로 실행할 수 있습니다(로컬에서 수행 가능) 또는 클러스터에 원격으로 실험을 배포할 수 있습니다(TorchX 스케줄러 구성만 변경).
- Ax에서 제공되는 최첨단 다목적 베이지안 최적화 알고리즘은 검증 정확도와 모델 크기 간의 상충 관계를 효과적으로 탐색하는 데 도움이 됩니다.
고급 기능
Ax에는 위 튜토리얼에서 설명하지 않은 몇 가지 다른 고급 기능이 있습니다. 다음이 포함됩니다.
조기 중단
새로운 후보 구성을 평가할 때 NN 학습 작업이 실행되는 동안 부분적인 학습 곡선을 얻을 수 있는 경우가 많습니다.
부분 곡선에 포함된 정보는 성과가 좋지 않은 시험을 식별하여 조기에 중단하고, 더 유망한 후보에 컴퓨팅 리소스를 할당하는 데 사용됩니다. 위의 튜토리얼에서는 설명하지 않았지만, Axe는 기본적으로 Early Stopping을 지원합니다.
https://ax.dev/versions/latest/tutorials/early_stopping/early_stopping.html
고차원 검색 공간
이 튜토리얼에서는 실행 시간을 짧게 유지하기 위해 표준 가우시안 프로세스를 사용한 베이지안 최적화를 사용합니다.
하지만 이러한 모델은 일반적으로 10~20개의 조정 가능한 매개변수로만 확장됩니다. 새로운 SAASBO 방법은 표본 효율성이 매우 뛰어나고 수백 개의 매개변수를 조정할 수 있습니다. 을 통해 선택_세대_전략 옮기다 use_saasbo=참 SAASBO는 쉽게 활성화할 수 있습니다.
위의 내용은 TorchX에 대한 소개입니다. PyTorch 개발자 커뮤니티는 그래프 변환을 사용하여 프로덕션 PyTorch 모델의 성능을 최적화하는 데 계속 집중할 것입니다.
Hyperai01을 검색하고 " 파이토치PyTorch 기술 교류 그룹에 참여하여 PyTorch의 최신 개발 사항과 모범 사례에 대해 알아보세요!