KR20220134627A - 하드웨어-최적화된 신경 아키텍처 검색 - Google Patents

하드웨어-최적화된 신경 아키텍처 검색 Download PDF

Info

Publication number
KR20220134627A
KR20220134627A KR1020227030225A KR20227030225A KR20220134627A KR 20220134627 A KR20220134627 A KR 20220134627A KR 1020227030225 A KR1020227030225 A KR 1020227030225A KR 20227030225 A KR20227030225 A KR 20227030225A KR 20220134627 A KR20220134627 A KR 20220134627A
Authority
KR
South Korea
Prior art keywords
neural network
architecture
task
hardware resources
target set
Prior art date
Application number
KR1020227030225A
Other languages
English (en)
Inventor
셍 리
노먼 폴 주피
쿠옥 브이. 레
밍싱 탄
루오밍 팡
리쿤 쳉
앤드류 리
Original Assignee
구글 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 엘엘씨 filed Critical 구글 엘엘씨
Publication of KR20220134627A publication Critical patent/KR20220134627A/ko

Links

Images

Classifications

    • G06N3/0454
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

하드웨어 자원들의 타깃 세트 상에서 특정 머신 학습 태스크를 수행하도록 구성되는 태스크 신경망에 대한 아키텍처를 결정하기 위한, 컴퓨터 저장 매체들 상에 인코딩된 컴퓨터 프로그램들을 포함하는 방법, 시스템 및 장치가 개시된다. 데이터 센터 가속기들의 집합과 같은 하드웨어의 타깃 세트 상에서 전개될 때, 태스크 신경망은 향상된 정확도 및 속도로 특정 머신 학습 태스크를 수행할 수 있을 수 있다.

Description

하드웨어-최적화된 신경 아키텍처 검색
본 출원은, 2020년 9월 30일에 출원된 미국 출원 번호 제17/039,178호를 우선권으로 주장하며, 이는 2020년 7월 16일에 출원된 미국 가출원 번호 제63/052,927호를 우선권으로 주장한다. 선행 출원들 각각의 개시내용은 본 출원의 개시내용의 일부로 간주되고 인용에 의해 포함된다.
본 명세서는 신경망 아키텍처들을 수정하는 것에 관한 것이다.
신경망들은 수신된 입력에 대한 출력을 예측하기 위해 하나 이상의 비선형 유닛 층들을 사용하는 머신 학습 모델들이다. 일부 신경망들은 출력 층 외에도, 하나 이상의 은닉 층(hidden layer)들을 포함한다. 각각의 은닉 층의 출력은 네트워크 내 다음 층, 즉 다음 은닉 층 또는 출력 층에 대한 입력으로 사용된다. 네트워크의 각각의 층은 파라미터들의 각각의 세트의 현재 값들에 따라, 수신된 입력으로부터 출력을 생성한다.
일부 신경망들은 순환 신경망(recurrent neural network)들이다. 순환 신경망은 입력 시퀀스를 수신하고 입력 시퀀스로부터 출력 시퀀스를 생성하는 신경망이다. 특히, 순환 신경망은 현재 시간 단계의 출력을 컴퓨팅할 때 이전 시간 단계로부터의 네트워크 내부 상태의 일부 또는 전부를 사용할 수 있다. 순환 신경망의 예는 하나 이상의 LSTM(long short term) 메모리 블록들을 포함하는 LSTM 신경망이다. 각각의 LSTM 메모리 블록은 입력 게이트, 망각(forget) 게이트 및 출력 게이트를 각각 포함하는 하나 이상의 셀들을 포함할 수 있으며, 이는 셀이 예컨대, 현재 활성화를 생성하는 데 사용하거나 LSTM 신경망의 다른 컴포넌트들에 제공되기 위해 셀에 대한 이전 상태들을 저장하도록 허용한다.
본 명세서는 하나 이상의 로케이션들 내 하나 이상의 컴퓨터들 상에서 컴퓨터 프로그램들로서 구현된 시스템이 특정 신경망 태스크(neural network task)를 수행하도록 구성된 신경망의 아키텍처를 어떻게 결정할 수 있는지를 설명한다.
본 명세서에 설명된 청구 대상의 특정한 실시예들은 다음의 이점들 중 하나 이상을 실현하기 위해 구현될 수 있다.
NAS(Neural Architecture Search) 시스템은 효과적으로 그리고 자동으로 즉 사용자 개입 없이, 특정 태스크에 대해 고성능 신경망이 되게 하는 신경망 아키텍처를 선택할 수 있다. 그렇게 하기 위해, 이러한 시스템들은 강화 학습, 진화적 검색, 차별 가능 검색 등에 기반한 검색 기술들을 포함하는 다양한 상이한 검색 기술들 중 임의의 것을 사용할 수 있다. NAS 시스템들은 특정 태스크에 대해 적응된 새로운 신경망 아키텍처들을 효과적으로 결정할 수 있어, 결과적인 신경망이 태스크에 대해 개선된 성능을 갖도록 허용한다. 일반적으로, 이러한 시스템들은 특정 태스크에 대해 적응된 신경망에 대한 아키텍처를 식별하기 위해 가능한 아키텍처들의 넓은 공간을 효과적으로 탐색할 수 있다.
이러한 시스템들은 비교적 높은 정확도로 특정 태스크들을 수행하는 신경망 아키텍처들을 산출할 수 있지만, 이러한 아키텍처들은 하드웨어 자원들의 타깃 세트 상에서 전개될 때 항상 이러한 태스크들을 비교적 고속으로 수행하거나 그렇지 않고 태스크들을 효율적으로 수행할 수 있는 것은 아니다. 따라서 NAS 시스템들에 의해 생성된 신경망 아키텍처들은 몹시 정확도하더라도, 그의 의도된 애플리케이션에 대해 항상 충분하진 않을 수 있다. 일부 상황들에서, 이는 적어도 부분적으로 이러한 신경망 아키텍처들의 설계들이 실행될 하드웨어 자원들의 타깃 세트에 최적화되지 않은 것에 기인할 수 있다.
예컨대, 일부 예들에서, 하드웨어 자원들의 그러한 타깃 세트는 하나 이상의 TPU(tensor processing unit)들, 하나 이상의 GPU(graphics processing unit)들, 또는 이들의 조합을 포함하는 하나 이상의 데이터센터 가속기들에 대응할 수 있다. TPU들 및 GPU들을 포함하는 최근에 생겨난 데이터 센터 가속기들은 신경망들과 같은 머신 학습 모델들로부터의 컴퓨팅 전력에 대한 계속 증가하는 요구에 따라가기 위해 혁신적인 하드웨어 아키텍처들을 사용한다. 이러한 가속기들은 신경망들에서 핵심 연산으로 간주될 수 있는 행렬-곱셈을 수행하도록 구성된 행렬 곱셈 및 누산 유닛(matrix-multiply-and-accumulate unit)들 또는 "행렬 유닛들"을 포함하기 때문에 머신 학습 애플리케이션들에 대해 특히 적합할 수 있다. 신경망 아키텍처들은 CPU(central processing unit)와 같은 일부 다른 유형들의 하드웨어 자원들 상에서 달성할 수 있는 것보다 이러한 가속기들(예컨대, TPU들 및 GPU들) 상에서 훨씬 더 높은 컴퓨테이션 레이트들(Ops/sec 또는 FLOPs/sec)을 달성할 수 있다. 그러나 이러한 가속기들 상에서 피크 컴퓨테이션 레이트들을 달성하기 위해, 신경망의 연산 강도(Ops/Byte, 또는 보다 구체적으로 메모리의 유닛 크기에 액세스할 때 수행되는 연산들의 평균 수, 예컨대, 액세스되는 메모리 바이트당 FLOPs)는 다른 유형들의 하드웨어 자원들(예컨대, CPU들) 상에서 피크 컴퓨테이션 레이트들을 달성하기 위해 필요한 것보다 훨씬 높아야 한다. 이러한 가속기들은 또한 다른 유형들의 하드웨어 자원들(예컨대, CPU들)보다 높은 실행 효율성을 달성하기 위해 신경망 아키텍처로부터 훨씬 더 높은 정도의 병렬성(parallelism)을 요구하는데, 그 이유는 신경망 아키텍처 내 곱셈 및 덧셈 연산들이 순차적으로 실행되거나 사이클 당 곱셈 및 덧셈 연산들이 너무 적은 경우, 이러한 가속기들의 행렬 유닛들은 유휴 상태(idle)가 될 것이기 때문이다. 따라서 CPU들 상에서 비교적 고속으로 태스크들을 수행할 수 있는 신경망 아키텍처들이 반드시 TPU들 또는 GPU들 상에서 비교적 고속으로 동일한 태스크들을 수행할 수 있는 것은 아니며 그 반대의 경우도 마찬가지다.
일부 구현들에서, 본원에서 설명된 NAS 시스템들 및 기술들 중 하나 이상은 이들이 실행될 하드웨어 자원들의 타깃 세트에 대해 최적화된 신경망 아키텍처들을 선택하고자 할 수 있다. 그렇게 하기 위해, 본원에서 설명된 시스템들 및 기술들은 신경망 아키텍처들을 선택할 때 정확도 및 레이턴시 둘 모두 고려하는 다중-목표 성능 메트릭들 및 하드웨어 자원들의 특정 세트에 특유한 연산들로 증강된 검색 공간을 사용할 수 있다. 하드웨어 자원들의 타깃 세트가 하나 이상의 TPU들 및/또는 GPU들을 포함하는 하나 이상의 데이터 센터 가속기들에 대응하는 예들에 대해, 본원에서 설명된 NAS 시스템들 및 기술들 중 하나 이상에 의해 활용되는 검색 공간은 향상된 연산 강도, 병렬성 및/또는 실행 효율성을 갖는 신경망 아키텍처들을 제공할 수 있는 하나 이상의 "가속기-친화적" 연산들을 포함할 수 있다. 예컨대, 깊이별 컨볼루션(depthwise convolution)들은 더 낮은 연산 강도에 시달리기 때문에, 일부 구현들에서, 본원에서 설명된 NAS 시스템들 및 기술들 중 하나 이상에 의해 활용되는 검색 공간은 깊이별 컨볼루션을 인접한 1x1 컨볼루션과 융합하여 연산 강도를 개선하기 위한 하나 이상의 연산들을 포함할 수 있다. 더욱이, 더 큰 입력 및 출력 깊이들은 데이터 센터 가속기들(예컨대, TPU들 및/또는 GPU들)에서 더 높은 정도의 병렬성을 제공할 수 있기 때문에, 일부 구현들에서, 본원에서 설명된 NAS 시스템들 및 기술들 중 하나 이상에 의해 활용되는 검색 공간은 병렬성을 개선하도록 입력 텐서(tensor)를 재성형하기 위해, nxn 커널들을 갖는 컨볼루션들을 사용하는 하나 이상의 연산들을 포함할 수 있으며, 여기서 n은 1보다 큰 정수 값(예컨대, n = 2)을 표현한다. 일부 예들에서, 이러한 연산들 중 하나 이상은 스트라이드-2 2x2 컨볼루션들과 같은 스트라이드-n nxn 컨볼루션들을 사용한다. 이러한 컨볼루션 연산들은 또한 신경망 아키텍처들의 용량 및 정확도에 유익하게 하는 역할을 할 수 있다. 또한, 일부 구현들에서, 본원에서 설명된 NAS 시스템들 및 기술들 중 하나 이상에 의해 활용되는 검색 공간은 데이터센터 가속기들(예컨대, TPU들 및/또는 GPU들)에서 향상된 병렬성을 제공하는 활성화 기능들을 포함할 수 있다.
신경망 아키텍처에서 요구되는 컴퓨테이션들의 총 수(FLOPS)는 신경망 아키텍처의 속도에 비례하고, 이에 따라 더 적은 컴퓨테이션들은 더 빠른 신경망 아키텍처들로 이어진다는 일반적인 믿음이 있지만, 본원에서 설명된 NAS 시스템들 및 기술들의 개발 시에, 신경망 아키텍처들이 데이터 센터 가속기들(예컨대, TPU들 및/또는 GPU들) 상에서 실행될 때 그 반대가 사실인 것으로 밝혀졌다. 따라서, 신경망 아키텍처에서 요구되는 컴퓨테이션들의 총 수(FLOPS)만으로는 이러한 가속기들 상에서 전개될 때 신경망 아키텍처의 성능에 대한 완전한(full) 또는 정확한 그림을 그릴 수 없을 수 있다. 적어도 이러한 이유로, 하드웨어 자원들의 타깃 세트 상에서 전개될 때 각각의 후보 신경망 아키텍처의 속도의 실제 측정들은 본원에서 설명된 시스템들 및 기술들 중 하나 이상에서 결정되고 활용되는 다중-목표 성능 메트릭들에 요인으로 반영될 수 있다. 예컨대, 일부 구현들에서, 본원에서 설명된 시스템들 및 기술들은 후보 신경망 아키텍처들이 태스크들을 수행하는 정확도의 측정들을 획득하고, 하드웨어 자원들의 타깃 세트(예컨대, 하나 이상의 TPU들 및 /또는 GPU들) 상에서 전개될 때 후보 신경망들이 태스크들을 수행하는 속도(예컨대, 레이턴시) 및/또는 이러한 태스크들의 성능(예컨대, 연산 강도, 실행 효율성 등)의 실제 측정들을 획득하도록 하드웨어 자원들의 타깃 세트 상에서 후보 신경망 아키텍처들을 실행하고 그러한 측정들에 적어도 부분적으로 기초하여 최종 신경망 아키텍처들을 선택하도록 동작할 수 있다. 이러한 방식으로, 본원에서 설명된 시스템들 및 기술들은 비교적 높은 레벨의 정확도 및 비교적 빠른 속도들로 태스크들을 수행하도록 구성된 최종 신경망 아키텍처들의 선택을 제공할 수 있다. 이는 이러한 신경망 아키텍처들의 최종 사용자들에 유익할 뿐만 아니라, 이러한 신경망 아키텍처들이 실행되는 하드웨어 자원들의 타깃 세트의 소유자들 및/또는 운영자들에 대한 상당한 비용 절감들을 제공할 수 있다.
본 명세서에 설명된 청구대상의 하나 이상의 실시예들의 세부사항들은 첨부한 도면들 및 아래의 설명에서 기재된다. 본 청구 대상의 다른 특징들, 양상들, 및 이점들은 설명, 도면들, 및 청구항들로부터 명백해질 것이다.
도 1은 예시적인 신경 아키텍처 검색 시스템을 도시한다.
도 2는 예시적인 신경망 아키텍처의 다이어그램이다.
도 3은 하드웨어 자원들의 타깃 세트 상에서 전개될 때 특정 머신 학습 태스크를 수행하도록 구성되는 태스크 신경망에 대한 아키텍처를 결정하기 위한 예시적인 프로세스의 흐름도이다.
도 4는 하나 이상의 후보 신경망 아키텍처들을 식별하기 위해 후보 신경망 아키텍처들의 공간을 통해 검색을 수행하기 위한 프로세스의 반복을 나타내는 예시적인 프로세스의 흐름도이다.
도 5는 특정 머신 학습 태스크에 대한 네트워크 입력에 대한 출력을 생성하기 위해 태스크 신경망을 사용하기 위한 예시적인 프로세스의 흐름도이다.
다양한 도면들 내의 유사한 참조 번호들 및 지정들은 유사한 엘리먼트들을 표시한다.
본 명세서는 하드웨어 자원들의 타깃 세트 상에서 특정 머신 학습 태스크를 수행하도록 구성되는 태스크 신경망에 대한 아키텍처를 결정하는, 하나 이상의 로케이션들 내 하나 이상의 컴퓨터들 상에서 컴퓨터 프로그램들로서 구현된 시스템을 설명한다.
태스크 신경망은 임의의 종류의 디지털 데이터 입력을 수신하고 입력에 기초하여 임의의 종류의 스코어, 분류 또는 회귀 출력을 생성하도록 구성될 수 있다. 다시 말해서, 태스크 신경망이 수행하도록 구성된 특정 머신 학습 태스크는 스코어링, 분류 및/또는 회귀 태스크들을 포함하는 다양한 상이한 태스크들 중 임의의 것에 대응할 수 있다. 아래에서 설명되는 바와 같이, 이러한 태스크들은 이미지들, 텍스트, 스피치 및 다른 데이터의 프로세싱을 수반하는 애플리케이션들과 같이 광범위한 애플리케이션들에서 유용할 수 있다.
예컨대, 태스크 신경망에 대한 입력들이 이미지들 또는 이미지들로부터 추출된 특징들인 경우, 주어진 이미지에 대해 태스크 신경망에 의해 생성된 출력은 일 세트의 오브젝트 카테고리들 각각에 대한 스코어들일 수 있으며, 각각의 스코어는 이미지가 카테고리에 속하는 오브젝트의 이미지를 포함할 추정된 가능성을 표현한다.
다른 예로서, 태스크 신경망에 대한 입력들이 인터넷 자원들(예컨대, 웹 페이지들), 문서들 또는 문서들의 일부들 또는 문서들 또는 인터넷 자원들, 문서들 또는 문서들의 일부들로부터 추출된 특징들인 경우, 주어진 인터넷 자원들, 문서 또는 문서의 일부에 대해 태스크 신경망에 의해 생성된 출력은 일 세트의 토픽들 각각에 대한 스코어일 수 있으며, 각각의 스코어는 인터넷 자원, 문서 또는 문서의 일부가 토픽에 대한 것일 추정된 가능성을 표현한다.
다른 예로서, 태스크 신경망에 대한 입력들이 특정 광고에 대한 인상 맥락(impression context)의 특징들인 경우, 태스크 신경망에 의해 생성된 출력은 특정 광고가 클릭될 추정된 가능성을 표현하는 스코어일 수 있다.
다른 예로서, 태스크 신경망에 대한 입력들이 사용자에 대한 개인화된 추천의 특징들, 예컨대, 추천에 대한 맥락을 특징화하는 특징들, 예컨대, 사용자에 의해 취해진 이전 액션을 특징화하는 특징들인 경우, 태스크 신경망에 의해 생성된 출력은 일 세트의 콘텐츠 아이템들 각각에 대한 스코어일 수 있으며, 각각의 스코어는 사용자가 콘텐츠 아이템이 추천되는 것에 대해 호의적으로 반응할 추정된 가능성을 표현한다.
다른 예로서, 태스크 신경망에 대한 입력들이 하나의 언어의 텍스트의 시퀀스인 경우, 태스크 신경망에 의해 생성된 출력은 다른 언어의 일 세트의 텍스트 조각들 각각에 대한 스코어일 수 있으며, 각각의 스코어는 다른 언어의 텍스트 조각이 다른 언어로의 입력 텍스트의 적절한 번역일 추정된 가능성을 표현한다.
다른 예로서, 태스크 신경망에 대한 입력이 발화를 표현하는 시퀀스인 경우, 태스크 신경망에 의해 생성된 출력은 일 세트의 텍스트 조각들 각각에 대한 스코어일 수 있으며, 각각의 스코어는 텍스트 조각은 발화에 대한 올바른 전사인 추정된 가능성을 표현한다.
일부 예들에서, 태스크 신경망에 대한 아키텍처를 결정하는 시스템은 도 1을 참조하여 아래에서 더 상세히 설명되는 바와 같은 시스템(100)에 대응할 수 있다. 유사하게, 일부 예들에서, 태스크 신경망의 아키텍처는 각각 도 1 및 도 2를 참조하여 아래에서 더 상세히 설명되는 바와 같이 신경망 아키텍처들(150 및 200) 중 하나 또는 둘 모두에 대응할 수 있다.
도 1은 예시적인 NAS(neural architecture search) 시스템(100)을 도시한다. 신경 아키텍처 검색 시스템(100)은 아래에서 설명되는 시스템들, 컴포넌트들 및 기술들이 구현될 수 있는 하나 이상의 로케이션들 내 하나 이상의 컴퓨터들 상의 컴퓨터 프로그램들로서 구현되는 시스템의 예이다.
신경 아키텍처 검색 시스템(100)은 하드웨어 자원들의 타깃 세트 상에서 특정 머신 학습 태스크를 수행하도록 구성되는 태스크 신경망에 대한 아키텍처를 결정하는 시스템이다. 아키텍처는 신경망 내 층들의 수, 층들 각각에 의해 수행되는 연산들, 신경망 내 층들 간 연결, 즉 어느 층들이 신경망 내 어느 다른 층들로부터 입력들을 수신하는지를 정의한다. 위에서 언급된 바와 같이, 태스크 신경망은 디지털 데이터 입력을 수신하고 입력에 기초하여 출력을 생성하기 위해 특정 머신 학습 태스크(예컨대, 스코어링, 분류, 회귀 등) 수행하도록 구성될 수 있다. 시스템(100)에 의해 결정되는 아키텍처는 신경망 내 층들의 수, 층들 각각에 의해 수행되는 연산들, 신경망 내 층들 간 연결, 즉 어느 층들이 신경망 내 어느 다른 층들로부터 입력들을 수신하는지를 정의한다.
신경 아키텍처 검색 시스템(100)은 제어기(110), 트레이닝 엔진(120), 타깃 하드웨어 전개 엔진(130) 및 성능 측정 엔진(140)을 포함한다. 간략하게, 그리고 아래에서 더 상세히 설명되는 바와 같이, 제어기(110)는 이전에 선택된 후보 신경망 아키텍처들의 성능 측정들(예컨대, 다중- 목표 성능 메트릭(142))에 기초하여 후보 아키텍처 검색 공간(111)으로부터 후보 신경망 아키텍처들을 반복적으로 선택한다. 트레이닝 엔진(120)은 트레이닝 데이터(102) 및 검증 세트(104)를 사용하여 특정 머신 학습 태스크를 수행하도록 제어기(110)에 의해 선택된 각각의 후보 신경망 아키텍처를 트레이닝하고, 특정 머신 학습 태스크에 대한 개개의 트레이닝된 후보 신경망 아키텍처의 성능에 기초하여 각각의 트레이닝된 후보 신경망 아키텍처에 대한 제1 성능 메트릭(122)을 결정한다. 타깃 하드웨어 전개 엔진(130)은 하드웨어 자원들의 타깃 세트(예컨대, 데이터 센터 내 집합 하드웨어 가속기들) 상에서 각각의 트레이닝된 후보 신경망 아키텍처를 실행하고, 하드웨어 자원들의 타깃 세트 상에서 전개될 때 개개의 트레이닝된 후보 신경망 아키텍처의 성능에 기초하여 각각의 트레이닝된 후보 신경망 아키텍처에 대한 제2 성능 메트릭(132)을 결정한다. 성능 측정 엔진(140)은 개개의 트레이닝된 후보 신경망 아키텍처에 대해 결정된 제1 성능 메트릭(122) 및 제2 성능 메트릭(132)에 기초하여 각각의 트레이닝된 후보 신경망 아키텍처에 대한 다중-목표 성능 메트릭(142)을 결정한다. 일부 예들에서, 성능 측정 엔진(140)은 추가로, 각각의 트레이닝된 후보 신경망 아키텍처에 대해 결정된 다중-목표 성능 메트릭(142)을 제어기(110)에 제공하며, 이 제어기(110)는 차례로 상기 다중-목표 성능 메트릭(142)에 적어도 부분적으로 기초하여 후보 아키텍처 검색 공간(111)으로부터 하나 이상의 부가적인 후보 신경망 아키텍처들을 선택한다.
예로서, 제어기(110)는 하나 이상의 이전에 선택된 후보 신경망 아키텍처들에 대해 결정된 다중-목표 성능 메트릭(142)에 적어도 부분적으로 기초하여 후보 아키텍처 검색 공간(111)으로부터 k번째 후보 신경망 아키텍처를 선택할 수 있다. 예컨대, k번째 후보 신경망 아키텍처의 선택은 제어기(110)에 의해 선택된 (k-1)번째 후보 신경망 아키텍처에 대해 결정된 다중-목표 성능 메트릭(142), 제어기(110)에 의해 선택된 (k-2)번째 후보 신경망 아키텍처에 대해 결정된 다중-목표 성능 메트릭(142) 등에 적어도 부분적으로 기초한다. (다중-목적 성능 메트릭(142)은 아래에서 더 자세히 설명될 것이다.) 이 예에서, 트레이닝 엔진(120)은 그 후 트레이닝 데이터(102) 및 검증 세트(104)를 사용하여 특정 머신 학습 태스크를 수행하도록 제어기(110)에 의해 선택된 k번째 후보 신경망 아키텍처의 인스턴스를 트레이닝하고, 특정 머신 학습 태스크의 그의 성능에 기초하여 k번째 후보 신경망 아키텍처의 트레이닝된 인스턴스에 대한 제1 성능 메트릭(122)을 결정한다. 또한, 이 예에서, 타깃 하드웨어 전개 엔진(130)은 하드웨어 자원들의 타깃 세트(예컨대, 데이터 센터 내 집합 하드웨어 가속기들) 상에서 k번째 후보 신경망 아키텍처의 트레이닝된 인스턴스를 실행하고 하드웨어 자원들의 타깃 세트 상에서 전개될 때 그의 성능에 기초하여 k번째 후보 신경망 아키텍처의 트레이닝된 인스턴스에 대한 제2 성능 메트릭(132)을 결정한다. 그 후, 성능 측정 엔진(140)은 이 예에서, 트레이닝 엔진(120)에 의해 결정된 제1 성능 메트릭(122) 및 제2 성능 메트릭(132) 및 k번째 후보 신경망 아키텍처의 트레이닝된 인스턴스에 대한 타깃 하드웨어 전개 엔진(130)에 기초하여 제어기(110)에 의해 선택된 k번째 후보 신경망 아키텍처에 대한 다중-목표 성능 메트릭(142)을 결정할 수 있다. 이 예에서, 성능 측정 엔진(140)은 제어기(110)에 의해 선택된 k번째 후보 신경망 아키텍처에 대해 결정된 다중-목표 성능 메트릭(142)을 제공할 수 있으며, 이 제어기(110)는 그 후, 차례로 제어기(110)에 의해 선택된 k번째 후보 신경망 아키텍처에 대해 결정된 다중-목표 성능 메트릭(142), 제어기(110)에 의해 선택된 (k-1)번째 후보 신경망 아키텍처에 대해 결정된 다중-목표 성능 메트릭(142), 제어기(110)에 의해 선택된 (k-2)번째 후보 신경망 아키텍처에 대해 결정된 다중-목표 성능 메트릭(142) 등에 적어도 부분적으로 기초하여 후보 아키텍처 검색 공간(111)으로부터 (k+1)번째 후보 신경망 아키텍처를 선택할 수 있다.
일반적으로, 트레이닝 데이터(102) 및 검증 세트(104) 둘 모두는 신경망 입력들의 세트 및, 각각의 네트워크 입력에 대해, 특정 태스크를 수행하도록 신경망에 의해 생성되어야 하는 개개의 타깃 출력을 포함한다. 예컨대, 트레이닝 데이터의 더 큰 세트는 트레이닝 데이터(102) 및 검증 세트(104)를 생성하기 위해 랜덤으로 파티셔닝되었을 수 있다.
시스템(100)은 임의의 다양한 방식들로 트레이닝 데이터(102) 및 검증 세트(104)를 수신할 수 있다. 예컨대, 시스템(100)은, 예컨대, 시스템(100)에 의해 이용 가능하게 만들어진 API(application programming interface)를 사용하여 데이터 통신 네트워크를 통해 시스템의 원격 사용자로부터 업로드로서 트레이닝 데이터를 수신하고, 업로드된 데이터를 트레이닝 데이터(102) 및 검증 세트(104)로 랜덤으로 분할할 수 있다. 다른 예로서, 시스템(100)은 시스템(100)에 의해 이미 유지되는 어떤 데이터가 신경망을 트레이닝하는 데 사용되어야 하는지를 지정하는 사용자로부터의 입력을 수신하고, 그 후 지정된 데이터를 트레이닝 데이터(102)와 검증 세트(104)로 분할할 수 있다.
제어기(110)는 후보 아키텍처 검색 공간(111)으로부터 후보 신경망 아키텍처들을 선택하고, 선택된 후보 신경망 아키텍처들을 정의하는 출력(112)을 생성하도록 구성된다. 후보 아키텍처 검색 공간(111)은 후보 신경망 아키텍처들의 컴포넌트들에 의해 수행될 수 있는 연산들의 세트 또는 목록을 포함할 수 있다. 후보 아키텍처 검색 공간(111)에 반영된 연산들은 시스템(100)이 후보 신경망 아키텍처들을 구성하고, 설계하거나 또는 다른 방식으로 개발할 수 있는 빌딩 블록들로서 보여질 수 있다. 일부 예들에서, 후보 아키텍처 검색 공간(111)으로부터 각각의 후보 신경망 아키텍처를 선택하기 위해, 제어기(110)는 각각의 후보 신경망 아키텍처의 하나 이상의 컴포넌트들 각각에 대해, 후보 아키텍처 검색 공간(111)에 반영된 연산들의 세트 또는 목록으로부터 컴포넌트에 의해 수행될 연산을 선택하도록 구성된다.
일부 구현들에서, 후보 아키텍처 검색 공간(111)에 반영된 연산들의 세트 또는 목록은 하드웨어 자원들의 타깃 세트의 특정 속성들을 이용하기 위해 후보 신경망 아키텍처들이 실행되거나 다른 방식으로 역할을 하도록 의도된 하드웨어 자원들의 타깃 세트에 특유한 연산들을 포함할 수 있다. 따라서, 하드웨어 자원들의 타깃 세트가 하나 이상의 TPU들 및/또는 GPU들에 대응하는 예들에 대해, 후보 아키텍처 검색 공간(111)에 반영된 연산들의 세트 또는 목록은 개선된 연산 강도, 병렬성 및/또는 실행 효율성을 촉진하는 연산들을 포함할 수 있다. 이러한 방식으로, 후보 아키텍처 검색 공간(111)을 사용하여 제어기(110)에 의해 선택된 후보 신경망 아키텍처들은 하드웨어 자원들의 타깃 세트 상에서 전개될 때 비교적 고속으로 특정 태스크를 수행할 수 있을 가능성이 더 높을 수 있다. 특히, 하드웨어 자원들의 타깃 세트가 하나 이상의 TPU들 및/또는 GPU들에 대응하는 예들에 대해, 후보 아키텍처 검색 공간(111)에 반영된 연산들의 세트 또는 목록은 깊이별 컨볼루션들을 인접한 1x1 컨볼루션들과 융합하기 위한 하나 이상의 연산들, 입력 텐서의 공간적 범위를 감소시키면서 입력 텐서의 깊이를 증가시킴으로써 입력 텐서들을 재성형하는 하나 이상의 공간-깊이 컨볼루션 연산들(예컨대, 2X2 컨볼루션들) 또는 이들의 조합을 포함할 수 있다. 일부 구현들에서, 후보 아키텍처 검색 공간(111)에 반영된 연산들의 세트 또는 목록에 포함된 하나 이상의 공간-깊이 연산들은 스트라이드-n nxn 컨볼루션들을 사용하는 하나 이상의 연산들(예컨대, nxn 커널들과의 컨볼루션들을 사용하는 연산들)을 포함할 수 있으며, 여기서 n은 1보다 큰 정수 값(예컨대, 2 또는 4)을 표현하고, H×W×C 텐서 입력을
Figure pct00001
텐서로 재성형하는 역할을 할 수 있다. 일부 예들에서, 후보 아키텍처 검색 공간(111)에 반영된 연산들의 세트 또는 목록은 하나 이상의 다른 유형들의 컨볼루션 연산들 및/또는 하드웨어 자원들의 타깃 세트의 하나 이상의 메모리들에서 하나 이상의 메모리 연산들을 수행함으로써 입력 텐서의 형상을 각각 수정하는 하나 이상의 재성형 연산들을 포함하는 하나 이상의 부가적인 연산들을 더 포함할 수 있다. 예컨대, 후보 아키텍처 검색 공간(111) 검색 공간은 텐서의 엘리먼트들을 메모리 내 상이한 메모리 로케이션들로 이동시켜, 엘리먼트들을 하나의 메모리 로케이션으로부터 다른 메모리 로케이션으로 또는 둘 모두로 복사함으로써 입력 텐서를 재성형하는 연산(예컨대, 공간-배치(space-to-batch) 연산)을 포함할 수 있다. 특정 예로서, 연산은 공간 데이터의 블록들을 깊이로 재배열하는 연산일 수 있다. 보다 구체적으로 말하면, 이 연산은 높이 및 폭 차원들로부터의 값들이 깊이 차원으로 이동되는 입력 텐서의 사본을 출력한다. 일부 구현들에서 이 연산은 공간-배치 연산에 대응한다.
일부 예들에서, 제어기(110)는 제어기(110)의 연산을 지배하는 파라미터들(본원에서 "제어기 파라미터들"로서 지칭됨)에 따라 출력(112)을 생성하도록 구성된다. 일부 구현들에서, 제어기(110)는 시스템(100)의 성능 측정 엔진(140) 및/또는 시스템(100) 내에서 생성된 다른 피드백을 참조하여 아래에서 더 상세히 설명되는 바와 같이 다중-목표 성능 메트릭들(142)에 적어도 부분적으로 기초하여 후보 아키텍처 검색 공간(111)으로부터 적어도 일부 후보 신경망 아키텍처들을 선택하도록 구성된다. 위에서 언급된 구현들 중 적어도 일부에서, 제어기(110)의 제어기 파라미터들 중 하나 이상은 다중-목표 성능 메트릭들(142) 및/또는 시스템(100) 내에서 생성된 다른 피드백에 적어도 부분적으로 기초하여 조정되거나 튜닝될 수 있다. 제어기(110)는 강화 학습, 진화적 검색, 차별 가능 검색 등에 기초한 NAS 기술들과 같은 다양한 상이한 NAS 기술들 중 임의의 것을 사용하여 후보 신경망 아키텍처들을 선택하고 그리고/또는 이러한 후보 신경망 아키텍처들을 지정하는 출력(112)을 생성할 수 있다. 일부 예들에서, 제어기(110)는 제어기 파라미터들에 따라 출력 시퀀스들을 생성하도록 구성된 신경망 이를테면, RNN(recurrent neural network)을 포함하거나 이를 표현한다. 일반적으로, 이러한 예들에서, 시스템(100)은 제어기 파라미터들의 값들을 조정하도록 제어기(110)를 트레이닝함으로써 신경망에 대한 아키텍처를 결정한다.
제어기(110)에 의해 선택되고 제어기(110)에 의해 생성된 출력(112)에 표현된 각각의 후보 신경망 아키텍처에 대해, 트레이닝 엔진(120)은 트레이닝 데이터(102) 상에서 출력(112)에 의해 정의된 아키텍처를 갖는 신경망의 인스턴스를 트레이닝하고 검증 세트(104)에 대해 트레이닝된 인스턴스의 성능(예컨대, 정확도)을 평가한다. 일부 구현들에서, 출력(112)에 의해 정의된 아키텍처를 갖는 신경망의 트레이닝된 인스턴스의 성능을 평가하기 위해, 트레이닝 엔진(120)은 특정 머신 학습 태스크에 대한 트레이닝된 인스턴스의 성능의 측정 또는 제1 성능 메트릭(122)을 결정한다. 일부 예들에서, 주어진 후보 신경망 아키텍처에 대해 결정된 제1 성능 메트릭(122)은 후보 신경망 아키텍처가 특정 머신 학습 태스크를 수행할 수 있을 수 있는 정확도의 레벨을 나타낼 수 있다.
트레이닝 엔진(120)은 추가 평가를 위해 제어기(110)에 의해 선택된 후보 신경망 아키텍처에 대해 결정된 제1 성능 메트릭(122)을 성능 측정 엔진(140)에 제공할 수 있다. 게다가, 트레이닝 엔진(120)은 또한 제어기(110)에 의해 선택된 후보 신경망 아키텍처들의 트레이닝된 인스턴스들(124)을 타깃 하드웨어 전개 엔진(130)에 제공할 수도있다.
타깃 하드웨어 전개 엔진(130)은 하드웨어 자원들의 타깃 세트 상에서 전개될 때 제어기(110)에 의해 선택된(그리고 출력(112)에 의해 정의된) 각각의 신경망 아키텍처의 각각의 트레이닝된 인스턴스의 성능의 측정 또는 제2 성능 메트릭(132)을 결정하기 위해 하나 이상의 연산들을 수행한다. 일부 예들에서, 주어진 후보 신경망 아키텍처에 대해 결정된 제2 성능 메트릭(132)은 하드웨어 자원들의 타깃 세트 상에서 전개될 때 후보 신경망 아키텍처가 특정 머신 학습 태스크를 수행할 수 있을 수 있는 속도 또는 레이턴시의 레벨을 나타낼 수 있다. 주어진 후보 신경망 아키텍처에 대한 제2 성능 메트릭(132)을 결정하기 위해, 타깃 하드웨어 전개 엔진(130)은 하드웨어 자원들의 타깃 세트 상에서 후보 신경망 아키텍처를 실행하기 위한 하나 이상의 연산들을 수행할 수 있다.
위에서 언급된 바와 같이, 일부 구현들에서, 하드웨어 자원들의 타깃 세트는 하나 이상의 TPU들 및/또는 GPU들에 대응할 수 있다. 일부 예들에서, 하드웨어 자원들의 타깃 세트는 하나 이상의 TPU들, GPU들, 다른 유형의 행렬 머신들 및/또는 벡터 머신들, 또는 이들의 조합을 포함할 수 있는 데이터 센터 내 하드웨어 가속기들의 집합에 대응할 수 있다. 하나 이상의 TPU들 및/또는 GPU들을 참조하여 주로 설명되었지만, 일부 예들에서 하드웨어 자원들의 타깃 세트는 하나 이상의 CPU들, 에지 또는 모바일 컴퓨팅 디바이스들, 또는 다른 컴퓨팅 유닛들에 대응할 수 있다는 것이 이해될 것이다. 그러한 예들에서, 후보 아키텍처 검색 공간(111)에 반영된 연산들의 세트 또는 목록은 하드웨어 자원들의 타깃 세트에 특유하거나 하드웨어 자원들의 타깃 세트의 특정 속성들을 이용하기 위해 다른 방식으로 역할을 하도록 의도된 연산들을 포함할 수 있다. 일부 구현들에서, 하드웨어 자원들의 타깃 세트는 위에서 언급된 유형들의 하드웨어 자원들(예컨대, TPU들, GPU들, CPU들, 에지 또는 모바일 컴퓨팅 디바이스들 등) 중 둘 이상의 조합에 대응할 수 있다.
일부 예들에서, 하드웨어 자원들의 타깃 세트는 시스템(100)의 일부로서 포함될 수 있지만, 타깃 하드웨어 전개 엔진(130)과 연관된 연산들을 수행하기 위해 예약될 수 있다. 다른 예들에서, 하드웨어 자원들의 타깃 세트는 타깃 하드웨어 전개 엔진(130) 및/또는 시스템(100)의 하나 이상의 다른 컴포넌트들에 통신 가능하게 커플링될 수 있다. 어느 경우든, 타깃 하드웨어 전개 엔진(130)은 하드웨어 자원들의 타깃 세트 상에서 제어기(110)에 의해 선택된 후보 신경망 아키텍처들의 트레이닝된 인스턴스들을 전개하고 이에 기초하여 제2 성능 메트릭들(132)을 결정하도록 구성된다.
보다 구체적으로, 하드웨어 자원들의 타깃 세트 상에서 주어진 후보 신경망의 트레이닝된 인스턴스의 전개 시에, 타깃 하드웨어 전개 엔진(130)은(i) 하드웨어 자원들의 타깃 세트 상에서 전개될 때 후보 신경망을 사용하여 출력을 생성하는 레이턴시, (ii) 하드웨어 자원들의 타깃 세트 상에서 전개될 때 후보 신경망의 연산 강도, 및/또는 (iii) 하드웨어 자원들의 타깃 세트 상에서 전개될 때 후보 신경망의 실행 효율성을 측정하거나 결정할 수 있다. 일부 구현들에서, 제2 성능 메트릭(132)은 위에서 언급된 파라미터들 (i), (ii), 및 (iii) 중 하나 이상에 적어도 부분적으로 기초한다. 일부 구현들에서, 타깃 하드웨어 전개 엔진(130)은 위에서 언급된 파라미터들 (i), (ii), 및 (iii) 중 하나 이상에 적어도 부분적으로 기초하여 후보 신경망 아키텍처에 대한 제2 성능 메트릭(132)을 결정할 수 있다. 이들 구현들 중 적어도 일부에서, 타깃 하드웨어 전개 엔진(130)은 후보 신경망에 대한 제2 성능 메트릭(132)으로서 위에서 언급된 파라미터들 (i), (ii), 및 (iii) 중 하나 이상을 사용할 수 있다. 일부 예들에서, 위에서 언급된 파라미터들 (i), (ii), 및 (iii) 각각은 제2 성능 메트릭(132)에서 직접적으로 또는 간접적으로 반영된다. 다른 구성들이 가능하다.
일부 구현들에서, 하드웨어 자원들의 타깃 세트는 시스템(100)의 일부로서 포함되고 타깃 하드웨어 전개 엔진(130)에 추가로, 시스템(100)의 하나 이상의 컴포넌트들과 연관된 연산들을 수행하기 위해 활용될 수 있다. 일부 그러한 구현들에서, 타깃 하드웨어 전개 엔진(130)의 기능성의 일부 또는 전부는 트레이닝 엔진(120)에 통합될 수 있고, 그 반대도 마찬가지이다. 예컨대, 일부 그러한 구현들에서, 시스템(100)은 동시적 또는 거의 동시적 방식으로 제1 성능 메트릭들(122) 및 제2 성능 메트릭들(132)을 결정할 수 있다. 또한, 일부 예들에서, 타깃 하드웨어 전개 엔진(130)은 후보 신경망 아키텍처에 대한 제2 성능 메트릭(132)을 결정하기 위해 하드웨어 자원들의 타깃 세트 상에서 제어기(110)에 의해 선택된 후보 신경망 아키텍처들의 트레이닝된 인스턴스들을 반드시 전개할 필요는 없을 수 있고 오히려, 제2 성능 메트릭(132)을 근사화하거나 예측하기 위해 하나 이상의 연산들을 대신 수행할 수 있다. 예컨대, 그러한 일부 예들에서, 타깃 하드웨어 전개 엔진(130)은 하드웨어 자원들의 타깃 세트 상에서 전개될 때 주어진 후보 신경망의 성능을 시뮬레이팅하거나 제2 성능 메트릭(132)을 계산하고 그의 하나 이상의 측정들을 획득하기 위해 하나 이상의 모델들과 함께 하드웨어 자원들의 타깃 세트의 알려진 또는 미리 결정된 파라미터들을 활용할 수 있다. 다른 구성들이 가능하다.
일부 구현들에서, 본원에서 설명된 바와 같이, 레이턴시(latency), 연산 강도 및 실행 효율성은 다음과 같이 정의될 수 있다:
Figure pct00002
여기서 W(FLOP 단위)는 신경망 아키텍처에 요구되는 컴퓨테이션의 양이고, Q(바이트 단위)는 신경망 아키텍처 실행 동안 초래된 메모리 트래픽(메모리 전달의 바이트들)이고, I는 신경망 아키텍처의 연산 강도이고, C(FLOP/sec 단위)는 신경망 아키텍처에 의해 달성된 컴퓨테이션 레이트이고, CIdeal은 신경망 아키텍처에 의해 달성된 이상적인 컴퓨테이션 레이트이고, E는 신경망의 실행 효율성이고, b는 하드웨어 자원들의 타깃 세트의 메모리 대역폭이고, CMax는 하드웨어 자원들의 타깃 세트 상에서 달성 가능한 피크 컴퓨테이션 레이트이고, R은 하드웨어 자원들의 타깃 세트 상에서 피크 컴퓨테이션 레이트를 달성하기 위해 신경망 아키텍처의 요구되는 "릿지 포인트(ridge point)" 또는 최소 연산 강도이다. 위의 수학식들에서 알 수 있는 바와 같이, C는 CIdeal 및 E(예컨대, E는 C/CIdeal로서 정의됨)에 의해 결정되고 CIdeal은 I, b, CMax 및 R에 의해 결정된다. 파라미터들 b, CMax, R은 하드웨어 자원들의 타깃 세트와 연관된 상수 값들일 수 있다. 실제로, 신경망 아키텍처의 단대단 추론 레이턴시는 W, I 및 E의 함수이다. 따라서, 데이터센터 가속기들(예컨대, TPU들, GPU들 등) 상에서 레이턴시를 최적화하기 위해, 시스템(100)은 W(FLOP들)를 감소시키려고만 시도하는 대신 W, I 및 E를 전체적으로 그리고 동시에 최적화하려고 노력할 수 있다. 시스템(100)은 I 및 E를 고려하지 않고 W(FLOP들)를 감소시키는 것은 C 하여금, W보다 훨씬 더 신속하게 하락하게 할 수 있고, 이는 레이턴시의 저하를 야기할 수 있기 때문에 이러한 방식으로 동작하도록 구성될 수 있다.
트레이닝 엔진(120)과 매우 유사하게, 타깃 하드웨어 전개 엔진(130)은 추가 평가를 위해 제어기(110)에 의해 선택된 후보 신경망 아키텍처에 대해 결정된 제2 성능 메트릭(132)을 성능 측정 엔진(140)에 제공할 수 있다. 그 후, 성능 측정 엔진(140)은 제1 성능 메트릭들(122) 및 제2 성능 메트릭들(132)을 사용하여 다중-목표 성능 메트릭들(142)을 결정한다. 주어진 후보 신경망 아키텍처에 대한 성능 측정 엔진(140)에 의해 결정되는 다중-목표 성능 메트릭(142)은 후보 신경망 아키텍처에 대한 트레이닝 엔진(120)에 의해 결정된 제1 성능 메트릭(122)을 후보 신경망 아키텍처에 대한 타깃 하드웨어 전개 엔진(130)에 의해 결정된 제2 성능 메트릭(132)과 결합할 수 있다. 예로서, 주어진 후보 신경망 아키텍처가 특정 머신 학습 태스크를 수행할 수 있을 수 있는 정확도 레벨을 제1 성능 메트릭(122)이 나타내고 하드웨어 자원들의 타깃 세트 상에서 전개될 때 후보 신경망 아키텍처에 의해 특정 머신 학습 태스크를 수행하는 레이턴시를 제2 성능 메트릭(132)이 나타내는 일부 구현들에 대해, 제어기(110)에 의해 선택된 m번째 후보 신경망 아키텍처에 대해 결정되는 다중-목표 성능 메트릭(142)은 다음과 같이 정확도 및 레이턴시를 결합할 수 있다:
Figure pct00003
여기서 ACCURACY(m)은 m번째 후보 신경망 아키텍처에 대해 트레이닝 엔진(120)에 의해 결정된 제1 성능 메트릭(122)에 의해 표시된 바와 같이 m번째 후보 신경망 아키텍처가 특정 머신 학습 태스크를 수행할 수 있는 정확도의 측정된 레벨이고, LATENCYActual(m)은 m번째 후보 신경망 아키텍처에 대한 타깃 하드웨어 전개 엔진(130)에 의해 결정된 제2 성능 메트릭(132)에 의해 표시된 바와 같이 하드웨어 자원들의 타깃 세트 상에서 전개될 때 m번째 후보 신경망 아키텍처에 의해 특정 머신 학습 태스크를 수행하는 측정된 레이턴시이고, LATENCYTarget(m)은 하드웨어 자원들의 타깃 세트의 알려진 또는 근사된 속성들, 신경망 아키텍처를 검색하는 사용자에 의해 제공된 입력(예컨대, 사용자에 의해 지정된 타깃 레이턴시) 및/또는 현재 연산 조건들에 기초하여 결정된 바와 같이 하드웨어 자원들의 타깃 세트 상에서 전개될 때 m번째 후보 신경망 아키텍처에 의해 특정 머신 학습 태스크를 수행하는 타깃 또는 이상적인 레이턴시이고, ω는 다중-목표 성능 메트릭(142)에서 레이턴시 성능이 주어지는 가중치를 결정하는 데 사용되는 팩터이다. 일부 예들에서, ω의 값은 조정 가능할 수 있다. 예컨대, 이러한 예들 중 일부에서, ω의 값은 신경망 아키텍처를 검색하는 사용자에 의해 제공되는 입력에 기초하여 결정될 수 있다.
유사하게, 제1 및 제2 성능 메트릭들(122, 132)이 위에서 언급된 예에서와 거의 동일한 방식으로 정확도 및 레이턴시를 각각 표시하고, 제2 성능 메트릭(132)이 하드웨어 자원들의 타깃 세트 상에서 전개될 때 주어진 후보 신경망 아키텍처의 연산 강도 및 하드웨어 자원들의 타깃 세트 상에서 전개될 때 후보 신경망 아키텍처의 실행 효율성을 추가로 표시하는 일부 구현들에 대해, 제어기(110)에 의해 선택된 m번째 후보 신경망 아키텍처에 대해 결정되는 다중-목표 성능 메트릭(142)은 다음과 같이 정확도, 레이턴시, 연산 강도 및 실행 효율성을 결합할 수 있다:
Figure pct00004
여기서 IActual(m)은 m번째 후보 신경망 아키텍처에 대한 타깃 하드웨어 전개 엔진(130)에 의해 결정된 제2 성능 메트릭(132)에 의해 표시된 바와 같이 하드웨어 자원들의 타깃 세트 상에서 전개될 때 m번째 후보 신경망 아키텍처의 측정된 연산 강도이고, ITarget(m)은 하드웨어 자원들의 타깃 세트의 알려진 또는 근사된 속성들, 신경망 아키텍처를 검색하는 사용자에 의해 제공된 입력(예컨대, 사용자에 의해 지정된 타깃 연산 강도) 및/또는 현재 연산 조건들에 기초하여 결정된 바와 같이 하드웨어 자원들의 타깃 세트 상에서 전개될 때 m번째 후보 신경망 아키텍처의 타깃 또는 이상적인 연산 강도이고, θ는 다중-목표 성능 메트릭(142)에서 연산 강도가 주어지는 가중치를 결정하는 데 사용되는 팩터이고, EActual(m)은 m번째 후보 신경망 아키텍처에 대한 타깃 하드웨어 전개 엔진(130)에 의해 결정된 제2 성능 메트릭(132)에 의해 표시된 바와 같이 하드웨어 자원들의 타깃 세트 상에서 전개될 때 m번째 후보 신경망 아키텍처의 실행 효율성이고, ETarget(m)은 하드웨어 자원들의 타깃 세트의 알려진 또는 근사된 속성들, 신경망 아키텍처를 검색하는 사용자에 의해 제공된 입력(예컨대, 사용자에 의해 지정된 타깃 연산 강도) 및/또는 현재 연산 조건들에 기초하여 결정된 바와 같이 하드웨어 자원들의 타깃 세트 상에서 전개될 때 m번째 후보 신경망 아키텍처의 타깃 또는 이상적인 실행 효율성이고, γ는 다중-목표 성능 메트릭(142)에서 실행 효율성이 주어지는 가중치를 결정하는 데 사용되는 팩터이다. ω의 값과 매우 유사하게, 일부 예들에서, θ의 값 및 γ의 값 중 하나 또는 둘 모두는 조정 가능할 수 있다. 예컨대, 이들 예들 중 일부에서, θ의 값 및 γ의 값 중 하나 또는 둘 모두는 신경망 아키텍처를 검색하는 사용자에 의해 제공되는 입력에 기초하여 결정될 수 있다. 제2 성능 메트릭(132)에 의해 표시되거나 표시되지 않은 파라미터들에 의존하여 필요에 따라 위의 수학식으로부터 항들이 삽입되거나 제거될 수 있다는 것이 이해될 것이다. 예컨대, 다중-목표 성능 메트릭(142)을 지배하는 수학식은 제2 성능 메트릭(132)이 실행 효율성에 기초하여(그러나 또한 레이턴시 및 연산 강도에 기초하진 않음) 결정되는 상황들에서 레이턴시 및 연산 강도 항들을 생략할 수 있다. 다중-목표 성능 메트릭(142)에 대한 다른 구성들이 가능하다. 보다 구체적으로, ω, γ, θ의 값들은 개개의 검색 요건들에 따라 개개의 값들로서 결정될 수 있다. 다중-목표 성능 메트릭(142) 내 하나 이상의 팩터들(예컨대, 레이턴시, 연산 강도, 및 실행 효율성)는 ω, γ, θ의 하나 이상의 값들이 0이 되도록 튜닝함으로써 생략될 수 있다.
위에서 언급한 바와 같이, 일부 구현들에서, 다중-목표 성능 메트릭들(142)은 제어기(110)에 제공될 수 있고, 일부 그러한 구현들에서 부가적인 후보 신경망 아키텍처들을 선택하도록 제어기(110)에 의해 활용될 수 있다. 일부 예들에서, 시스템(100)은 태스크에 대해 제어기(110)에 의해 생성된 출력들(112)에 의해 정의된 아키텍처의 예상된 성능을 개선하기 위해 제어기 파라미터들의 현재 값들을 업데이트하기 위해 다중-목표 성능 메트릭들(142)을 사용한다. 예컨대, 시스템(100)은 (예컨대, PRO(Proximal Policy Optimization)를 사용하여) 다중-목표 메트릭(142)의 값을 최대화하도록 하는 방식으로 제어기 파라미터들을 업데이트할 수 있다. 제어기(110)가 신경망을 포함하는 구현들에 대해, 다중-목표 성능 메트릭들(142)은 제어기(110)의 신경망을 트레이닝하는 데 사용되는 "보상"으로서 효과적으로 역할을 할 수 있다. 이러한 방식으로, 제어기 파라미터들의 값들을 반복적으로 업데이트함으로써, 시스템(100)은 특정 태스크에 대한 증가된 성능, 즉 제어기(110)에 의해 제안된 아키텍처들의 검증 세트(104)에 대한 예상된 정확도를 최대화할 뿐만 아니라, 하드웨어 자원들의 타깃 세트 상에서 전개될 때 증가된 성능 즉, 특정 태스크가 수행될 것으로 예상되는 속도를 최대화하는 신경망들을 초래하는 출력들(112)을 궁극적으로 생성하도록 제어기(110)를 트레이닝하거나 다른 방식으로 이를 야기할 수 있다.
제어기(110)가 트레이닝되고(예컨대, 제어기 파라미터들이 수렴되고), 후보 아키텍처 검색 공간(111)을 소진하고, 최대 수의 후보 신경망 아키텍처들을 생성하고, 하나 이상의 기준 세트들(예컨대, 하나 이상의 임계 값들)을 만족하는 다중 목표 성능 메트릭들(142)을 갖는 하나 이상의 후보 신경망 아키텍처들을 생성하고 그리고/또는 일부 다른 종결 기준들이 만족되면, 시스템(100)은 신경망에 대한 최종 아키텍처를 선택할 수 있다. 최종 아키텍처를 선택하기 위해, 시스템(100)은 제어기 파라미터들의 트레이닝된 값들에 따라 새로운 출력(112)을 생성하고 신경망의 최종 아키텍처로서 새로운 출력(112)에 의해 정의된 아키텍처를 사용할 수 있거나 트레이닝된 값들에 따라 다수의 새로운 출력들(112)을 생성하고 그 후 다수의 새로운 출력들(112)에 의해 정의된 다수의 후보 신경망 아키텍처들 중 하나를 선택할 수 있다. 일부 예들에서, 하나 이상의 최종 아키텍처를 선택하기 위해, 시스템(100)은 가장 큰 제1 성능 메트릭(122), 제2 성능 메트릭(132), 및/또는 다중-목표 성능 메트릭(142)을 산출한 하나 이상의 후보 신경망 아키텍처들을 선택할 수 있다. 다수의 새로운 출력들(112)이 생성되는 구현들에서, 시스템(100)은 검증 세트(104)에 대해 각각의 새로운 출력(112)에 의해 정의된 아키텍처의 성능을 평가하고 그 후, 최종 아키텍처로서 최고-성능 아키텍처(예컨대, 시스템(100)에 의해 고려되는 모든 다른 후보 신경망 아키텍처들의 것보다 값이 더 큰 다중-목표 성능 메트릭(142)을 산출하는 후보 신경망 아키텍처)를 선택한다. 대안적으로, 시스템(100)은 각각의 선택된 아키텍처를 추가로 트레이닝하고 그 후 추가 트레이닝 후에 아키텍처들 각각의 성능을 평가할 수 있다.
신경망 검색 시스템(100)은 그 후 신경망의 최종 아키텍처를 지정하는 아키텍처 데이터(150), 즉 신경망의 일부인 층들, 층들 간의 연결, 및 층들에 의해 수행되는 연산들을 지정하는 데이터를 출력할 수 있다. 예컨대, 신경망 검색 시스템(100)은 트레이닝 데이터를 제출한 사용자에게 아키텍처 데이터(150)를 출력할 수 있다. 일부 경우들에서, 데이터(150)는 또한 아키텍처를 가졌던 신경망의 트레이닝된 인스턴스의 트레이닝으로부터의 신경망의 파라미터들의 트레이닝된 값들을 포함한다.
일부 구현들에서, 아키텍처 데이터(150)를 출력하는 대신에 또는 이에 더하여, 시스템(100)은 예컨대, 아키텍처를 갖는 신경망의 인스턴스를 트레이닝한 결과로서 생성된 파라미터 값들을 미세 튜닝하기 위해 또는 처음부터, 결정된 아키텍처를 갖는 신경망의 인스턴스를 트레이닝하고, 그 후 트레이닝된 신경망을 사용하여 예컨대, 시스템에 의해 제공되는 API를 통해 사용자들에 의해 수신된 요청들을 프로세싱한다. 즉, 시스템(100)은 프로세싱될 입력들을 수신하고, 트레이닝된 신경망을 사용하여 입력들을 프로세싱하고, 수신된 입력들에 대한 응답으로, 생성된 출력들로부터 도출된 데이터 또는 트레이닝된 신경망에 의해 생성된 출력들을 제공할 수 있다. 일부 예들에서, 시스템(100)은 위에서 설명된 기술들 중 하나 이상을 사용하여 최종 아키텍처를 선택하고, 그 후 데이터(150)에서 지정된 최종 아키텍처를 생성하기 위해 모델 스케일링 기술을 사용하여 아키텍처의 크기를 스케일 업(scale up)할 수 있다. 다른 예들에서, 하나 이상의 시스템들은 시스템(100)으로부터 데이터(150)를 수신하고 이러한 모델 스케일링 기술을 사용하여 데이터(150)에서 지정된 아키텍처의 크기를 스케일 업할 수 있다.
제어기(110)가 RNN과 같은 신경망을 포함하는 일부 구현들에 대해, 시스템(100)은 분산된 방식으로 제어기(110)의 신경망을 트레이닝할 수 있다. 즉, 시스템(100)은 제어기(110)의 신경망의 다수의 복제물들을 포함한다. 트레이닝이 분산되는 이러한 구현들 중 일부에서, 각각의 복제물들은 복제물에 의해 출력된 출력들의 배치(batch of outputs)(112)들에 대한 성능 메트릭들을 생성하는 전용 트레이닝 엔진 및 성능 메트릭들을 사용하여 제어기 파라미터에 대한 업데이트들을 결정하는 전용 제어기 파라미터 업데이트 엔진을 갖는다. 제어기 파라미터 업데이트 엔진이 업데이트를 결정하면, 제어기 파라미터 업데이트 엔진은 모든 제어기 파라미터 업데이트 엔진들이 액세스 가능한 중앙 파라미터 업데이트 서버에 업데이트를 송신할 수 있다. 중앙 파라미터 업데이트 서버는 서버에 의해 유지되는 제어기 파라미터들의 값들을 업데이트하고 업데이트된 값들을 제어기 파라미터 업데이트 엔진에 전송할 수 있다. 일부 경우들에서, 다수의 복제물들 각각 및 그의 대응하는 트레이닝 엔진들 및 파라미터 업데이트 엔진들은 트레이닝 엔진들 및 파라미터 업데이트 엔진들의 서로의 세트로부터 비동기적으로 동작할 수 있다.
일부 예들에서, 시스템(100)에 의해 신경망에 대해 선택되고 신경망 검색 시스템(100)에 의해 출력되는 아키텍처 데이터(150)에 의해 지정되는 최종 아키텍처는 도 2를 참조하여 아래에서 더 상세히 설명되는 바와 같이, 신경망 아키텍처(200)의 것과 유사하거나 동등할 수 있다. 신경망에 대한 이러한 최종 아키텍처는 특히, 하나 이상의 TPU들 및/또는 GPU들 상의 전개에 매우 적합할 수 있다.
도 2는 예시적인 신경망 아키텍처(200)를 예시한다. 보다 구체적으로, 신경망 아키텍처(200)는 초기 컨볼루션 서브-네트워크(210), 공간-깊이 컨볼루션 서브-네트워크(220), 및 하나 이상의 부가적인 서브-네트워크들(230)을 포함한다. 위에서 언급된 바와 같이, 일부 예들에서, 신경망 아키텍처(200)는 도 1을 참조하여 위에서 설명된 바와 같이 시스템(100)에 의해 선택되는 최종 신경망 아키텍처에 대응할 수 있다.
신경망 아키텍처(200)는 하나 이상의 TPU들, 하나 이상의 GPU들, 및/또는 하나 이상의 다른 행렬 또는 벡터 머신들 상에서 전개될 때 최적화된 성능을 위해 설계된다. 따라서, 시스템(100)은 시스템(100)과 연관된 하드웨어 자원들의 타깃 세트가 하나 이상의 TPU들 및/또는 GPU들을 포함하는 상황들에서 신경망 아키텍처(200)와 유사하거나 동등한 최종 신경망 아키텍처를 선택할 가능성이 매우 높을 수 있다. 신경망 아키텍처(200)가 시스템(100)에 의해 선택된 최종 신경망 아키텍처에 대응할 수 있다는 점을 감안할 때, 신경망 아키텍처(200)의 컴포넌트들은 도 1을 참조하여 위에서 설명된 바와 같이 후보 아키텍처 검색 공간(111)에 반영된 연산들의 세트 또는 목록으로부터의 연산들을 수행하도록 구성될 수 있다는 결론에 이르게 된다. 간략하게, 그리고 아래에서 더 상세히 설명되는 바와 같이, 신경망 아키텍처(200)는 특정 머신 학습 태스크를 위한 네트워크 입력(202)에 대한 네트워크 출력(232)을 생성하기 위해 네트워크 입력(202)을 수신 및 프로세싱하도록 구성된다. 예컨대, 신경망 아키텍처(200)가 수행하도록 구성된 특정 머신 학습 태스크는 이미지 프로세싱 태스크일 수 있다. 이 예에서, 네트워크 입력(202)은 하나 이상의 이미지들, 즉 이미지의 픽셀들의 강도 값들을 표현하는 데이터에 대응할 수 있다. 이미지 프로세싱 태스크들의 예들은 이미지 분류, 오브젝트 검출, 이미지 세그먼테이션 등을 포함한다.
신경망 아키텍처(200)의 초기 컨볼루션 서브-네트워크(210)는 네트워크 입력(202)을 수신하고 네트워크 입력(202)의 초기 특징 표현(212)을 생성하도록 구성된 하나 이상의 컨볼루션 층들을 포함할 수 있다. 초기 컨볼루션 서브-네트워크(210)에 의해 생성된 네트워크 입력(202)의 초기 특징 표현(212)은 제1 공간 범위 및 제1 수의 깊이 채널을 갖는다. 초기 컨볼루션 서브-네트워크(210)는 네트워크 입력(202)의 초기 특징 표현(212)을 공간-깊이 컨볼루션 서브-네트워크(220)로 출력하도록 구성될 수 있다.
신경망 아키텍처(200)의 공간-깊이 컨볼루션 서브-네트워크(220)는 초기 컨볼루션 서브-네트워크(210)로부터 초기 특징 표현(212)을 수신하고 네트워크 입력(202)의 제2 특징 표현(222)을 생성하기 위해 초기 특징 표현(212)에 대해 공간-심도 컨볼루션 연산을 수행하도록 구성된 하나 이상의 컨볼루션 층들을 포함할 수 있다. 공간-깊이 컨볼루션 서브-네트워크(220)에 의해 생성된 네트워크 입력(202)의 제2 특징 표현(222)은 제1 공간 범위보다 작은 제2 공간 범위 및 제1 수의 깊이 채널들보다 큰 제2 수의 깊이 채널들을 갖는다. 즉, 공간-깊이 컨볼루션 서브-네트워크(220)가 수행하는 공간-깊이 컨볼루션 연산은 입력 텐서의 공간적 범위를 감소시키면서 입력 텐서의 깊이를 증가시키는 연산이다. 이러한 방식으로 컨볼루션들의 입력 텐서들을 재성형함으로써, 이 연산은 가속기들(예컨대, TPU들 및/또는 GPU들)의 병렬성을 개선하는 역할을 할 수 있다. 게다가, 이 연산은 또한 신경망 아키텍처들의 용량 및 정확도에 유익하게 하는 역할을 할 수 있다. 이러한 연산은 도 1을 참조하여 위에서 설명된 바와 같이 후보 아키텍처 검색 공간(111)에 반영된 연산들의 세트 또는 목록으로부터의 연산(예컨대, "가속기-친화적" 연산)을 표현할 수 있다.
일부 구현들에서, 공간-깊이 컨볼루션 서브-네트워크(220)가 수행하는 공간-깊이 컨볼루션 연산은 스트라이드-n nxn 컨볼루션(예컨대, nxn 커널들을 갖는 컨볼루션)이며, 여기서 n은 1보다 큰 정수 값 이를테면, 2 또는 4를 표현한다. 이러한 연산은 H×W×C 텐서 입력을
Figure pct00005
텐서로 재성형하는 역할을 할 수 있다. 중요하게, 이 연산은 전체 텐서 볼륨을 변경하지 않고 깊이를 증가시켜서, 정확도를 손상시키지 않고 전체 속도가 개선될 수 있다. 입력 텐서들은 하나 이상의 메모리 연산들을 수행함으로써 입력 텐서의 형상을 수정하는 공간-배치(space-to-batch) 연산 또는 재성형 연산을 사용하여 유사한 방식으로 재성형될 수 있지만, 공간-깊이 컨볼루션 서브-네트워크(220)가 수행하는 공간-깊이 컨볼루션 연산은 다음 2개의 이점들을 갖는다: (i) 컨볼루션은 비교적 높은 연산 강도 및 실행 효율성과 연관되고, 이에 따라 TPU들 및/또는 GPU들 상의 전개로 유리하게 치환되고, (ii) 연산 강도 및 실행 효율성을 개선하기 위해 입력 텐서를 재성형하는 것 외에도, 스트라이드-n nxn 컨볼루션은 또한 대응하는 신경망의 용량에 기여하도록 트레이닝될 수 있다. 이 연산은 하나 이상의 메모리 연산들을 수행함으로써 입력 텐서의 형상을 수정하는 공간-배치 연산 또는 다른 재성형 연산의 거동을 모방하도록 트레이닝될 수 있고, 병렬성을 증가시킴으로써 신경망 아키텍처의 속도를 개선하면서, 신경망 아키텍처의 정확도를 개선하도록 추가로 트레이닝될 수 있다.
공간-깊이 컨볼루션 서브-네트워크(220)는 신경망 아키텍처(200)의 하나 이상의 부가적인 서브-네트워크들(230)에 네트워크 입력(202)의 제2 특징 표현(222)을 출력하도록 구성될 수 있다. 신경망 아키텍처(200)의 하나 이상의 서브-네트워크들(230)은 공간-깊이 컨볼루션 서브-네트워크(220)로부터 제2 특징 표현(222)을 수신하고 네트워크 입력(202)에 대한 네트워크 출력(232)을 생성하도록 구성된 하나 이상의 층들(예컨대, 컨볼루션 층들)을 포함할 수 있다.
도 3은 하드웨어 자원들의 타깃 세트 상에서 전개될 때 특정 머신 학습 태스크를 수행하도록 구성되는 태스크 신경망에 대한 아키텍처를 결정하기 위한 예시적인 프로세스(300)의 흐름도이다. 편의상, 프로세스(300)는 하나 이상의 위치들에 위치되고 하나 이상의 컴퓨터들의 시스템에 의해 수행되는 것으로 설명될 것이다. 예컨대, 본 명세서에 따라 적절히 프로그래밍된, 신경 아키텍처 검색 시스템, 예컨대, 도 1의 신경 아키텍처 검색 시스템(100)은 프로세스(300)를 수행할 수 있다.
시스템은 특정 머신 학습 태스크를 수행하기 위한 트레이닝 데이터를 수신한다(단계 302). 예컨대, 이는 도 1을 참조하여 위에서 설명된 바와 같이 시스템(100)이 트레이닝 데이터(102) 및/또는 검증 세트(104)를 수신하는 것에 대응할 수 있다. 일부 예들에서, 특정 머신 학습 태스크는 이미지 프로세싱 태스크에 대응할 수 있다.
시스템은 트레이닝 데이터를 사용하여, 하나 이상의 후보 신경망 아키텍처들을 식별하기 위해 후보 신경망 아키텍처들의 공간에 걸친 검색을 수행한다(단계 304). 예컨대, 이는 도 1을 참조하여 위에서 설명된 바와 같이 시스템(100)의 제어기(110)가 후보 아키텍처 검색 공간(111)을 통해 검색을 수행하는 것에 대응할 수 있다. 위에서 언급된 바와 같이, 후보 신경망 아키텍처들을 선택하고 그리고/또는 이러한 후보 신경망 아키텍처들을 지정하는 출력을 생성하기 위해, 제어기(110)는 강화 학습, 진화적 검색, 차별 가능 검색 등에 기초한 NAS 기술들과 같은 다양한 상이한 NAS 기술들 중 임의의 것을 사용할 수 있다. 일부 구현들에서, 단계(304)의 동작들을 수행하기 위해, 시스템은 도 4를 참조하여 아래에서 더 상세히 설명되는 바와 같이 프로세스(400)를 반복적으로 수행한다.
도 4는 하나 이상의 후보 신경망 아키텍처들을 식별하기 위해 후보 신경망 아키텍처들의 공간을 통해 검색을 수행하기 위한 프로세스의 반복을 나타내는 예시적인 프로세스(400)의 흐름도이다. 편의상, 프로세스(400)는 하나 이상의 로케이션들에 로케이팅되고 하나 이상의 컴퓨터들의 시스템에 의해 수행되는 것으로 설명될 것이다. 예컨대, 본 명세서에 따라 적절히 프로그래밍된, 신경 아키텍처 검색 시스템, 예컨대, 도 1의 신경 아키텍처 검색 시스템(100)은 프로세스(400)를 수행할 수 있다. 위에서 언급된 바와 같이, 일부 구현들에서, 시스템은 프로세스(300)의 단계(304)의 일부로서 프로세스(400)를 반복적으로 수행한다.
시스템은 후보 신경망 아키텍처들의 공간으로부터 후보 신경망 아키텍처를 선택한다(단계 402). 예컨대, 이는 도 1을 참조하여 위에서 설명된 바와 같이, 시스템(100)의 제어기(110)가 후보 아키텍처 검색 공간(111)으로부터 후보 신경망 아키텍처를 선택하는 것에 대응할 수 있다. 보다 구체적으로, 단계(402)에서, 시스템은 후보 신경망 아키텍처의 하나 이상의 컴포넌트들 각각에 대해, 공간-깊이 컨볼루션 연산을 포함하는 연산들의 세트로부터 컴포넌트에 의해 수행될 연산을 선택한다. 연산들의 세트에 포함된 공간-깊이 컨볼루션 연산은 입력 텐서의 공간적 범위를 감소시키면서, 입력 텐서의 깊이를 증가시키는 연산일 수 있다. 또한, 연산들의 세트는 하나 이상의 다른 유형들의 컨볼루션 연산들을 더 포함할 수 있다. 예컨대, 연산들의 세트는 도 1을 참조하여 위에서 설명된 바와 같이, 후보 아키텍처 검색 공간(111)에 반영된 연산들에 대응할 수 있으며, 이는 하드웨어 자원들의 타깃 세트의 특정 속성들을 이용하기 위해 후보 신경망 아키텍처들이 실행되거나 다른 방식으로 역할을 하도록 의도된 하드웨어 자원들의 타깃 세트에 특유한 연산들을 포함할 수 있다. 일부 예들에서, 공간-깊이 컨볼루션 연산은 하나의 그러한 연산의 예를 표현할 수 있다. 일부 구현들에서, 공간-깊이 컨볼루션은 스트라이드-n(stride-n) nxn 컨볼루션일 수 있으며, 여기서 n은 1보다 큰 정수 값이다. 예컨대, 일부 그러한 구현들에서, 공간-깊이 컨볼루션 연산은 스트라이드-2 2x2 컨볼루션일 수 있다. 위에서 언급된 바와 같이, 이 연산은 입력 텐서의 형상을 수정하기 위해 하드웨어 가속기들 상에서 유리하게 전개될 수 있다. 채널 깊이를 증가시키기 위한 재성형 연산들은 컨볼루션들에 대한 더 빠른 컴퓨테이션 레이트(Ops/sec)로 이어질 수 있으며 이러한 재성형 연산들은 컴퓨테이션 정확도에 영향을 주지 않고 컴퓨테이션 속도를 개선할 수 있다는 것이 잘 알려져 있다. 재성형 연산들의 대안으로서 스트라이드-2 2x2 컨볼루션을 사용하는 접근법은 컨볼루션들이 TPU들에서 높은 연산 강도로 효율적으로 컴퓨팅될 수 있기 때문에 유리하다. 게다가, 시스템은 또한 모델 용량을 개선하기 위해 트레이닝 세트를 감안하여 스트라이드-2 2x2 컨볼루션을 트레이닝하고 실질적으로 동일한 텐서 재성형 연산들을 모방할 수 있다. 일부 구현들에서, 연산들의 세트는 하드웨어 자원들의 타깃 세트의 하나 이상의 메모리들에서 하나 이상의 메모리 연산들을 수행함으로써 입력 텐서의 형상을 각각 수정하는 하나 이상의 재성형 연산들을 더 포함할 수 있다. 예컨대, 이러한 하나 이상의 메모리 연산들(예컨대, 공간-배치 연산들)은 입력 텐서의 엘리먼트들을 하드웨어 자원들의 타깃 세트의 하나 이상의 메모리들 내 상이한 메모리 로케이션들로 이동시켜, 엘리먼트들을 하나의 메모리 로케이션으로부터 다른 메모리 로케이션으로, 또는 둘 모두로 복사함으로써 입력 텐서를 각각 재성형하는 하나 이상의 연산들을 포함할 수 있다. 특정 예로서, 이들 하나 이상의 연산들은 공간 데이터의 블록들을 깊이로 재배열하는 하나 이상의 연산들을 포함할 수 있다. 보다 구체적으로, 이러한 하나 이상의 연산들 각각은 높이 및 폭 차원들로부터의 값들이 깊이 차원으로 이동되는 입력 텐서의 사본을 출력할 수 있다.
일부 예들에서, 시스템은 하나 이상의 이전에 선택된 후보 신경망 아키텍처들에 대해 결정된 성능의 측정에 적어도 부분적으로 기초하여 후보 신경망 아키텍처들의 공간으로부터 후보 신경망 아키텍처를 선택한다(단계 402). 예컨대, 예컨대, 이는 도 1을 참조하여 위에서 설명된 바와 같이 제어기(110)가 제어기(110)에 의해 선택된 (k-1)번째 후보 신경망 아키텍처에 대해 결정된 다중-목표 성능 메트릭(142), 제어기(110)에 의해 선택된 (k-2)번째 후보 신경망 아키텍처에 대해 결정된 다중-목표 성능 메트릭(142) 등에 적어도 부분적으로 기초하여 후보 아키텍처 검색 공간(111)으로부터 k번째 후보 신경망 아키텍처를 선택하는 것에 대응할 수 있다.
시스템은, (i) 특정 머신 학습 태스크에 대한 그의 성능 및 (ii) 하드웨어 자원들의 타깃 세트 상에서 전개될 때의 그의 성능에 기초하여 선택된 후보 신경망 아키텍처의 성능의 측정을 결정한다(단계 404). 예컨대, 이는 도 1을 참조하여 위에서 설명된 바와 같이, 성능 측정 엔진(140)이 제어기(110)에 의해 선택된 후보 신경망 아키텍처에 대한 다중-목표 메트릭(142)을 결정하는 것에 대응할 수 있다.
또한, 일부 예들에서, (i) 특정 머신 학습 태스크에 대한 선택된 후보 신경망의 성능은 선택된 후보 신경망 아키텍처에 대한 트레이닝 엔진(120)에 의해 결정된 제1 성능 메트릭(122)에 반영되는 선택된 후보 신경망 아키텍처의 성능에 대응할 수 있다. 따라서, 일부 구현들에서, 프로세스(400)는 시스템이 트레이닝 데이터를 사용하여 후보 신경망을 트레이닝하는 하나 이상의 부가적인 단계들을 포함한다. 예컨대, 이는 도 1을 참조하여 위에서 설명된 바와 같이, 트레이닝 엔진(120)이 선택된 후보 신경망 아키텍처의 인스턴스를 트레이닝하기 위해 트레이닝 데이터(102) 및/또는 검증 세트(104)를 사용하는 것에 대응할 수 있다. 일부 예들에서, 그러한 하나 이상의 부가적인 단계들은 단계(402) 이후에, 그러나 단계(404) 이전에 수행될 수 있다.
유사하게, 일부 예들에서, (ii) 하드웨어 자원들의 타깃 세트 상에서 전개될 때 선택된 후보 신경망의 성능은 선택된 후보 신경망 아키텍처에 대한 타깃 하드웨어 전개 엔진(130)에 의해 결정된 제2 성능 메트릭(132)에 반영되는 선택된 후보 신경망 아키텍처의 성능에 대응할 수 있다. 따라서, 일부 구현들에서, 프로세스(400)는 시스템이 하드웨어 자원들의 타깃 세트 상에서 후보 신경망의 트레이닝된 인스턴스를 실행하는 하나 이상의 부가적인 단계들을 포함한다. 예컨대, 이는 도 1을 참조하여 위에서 설명된 바와 같이, 타깃 하드웨어 전개 엔진(130)이 시스템(100)과 연관된 하드웨어 자원들의 타깃 세트 상에서 후보 신경망의 트레이닝된 인스턴스를 실행하는 것에 대응할 수 있다. 일부 구현들에서, 하드웨어 자원들의 타깃 세트는 하나 이상의 TPU들, GPU들, 다른 행렬 머신들 또는 벡터 머신들, 또는 이들의 조합에 대응할 수 있다.
일부 구현들에서, (ii) 하드웨어 자원들의 타깃 세트 상에서 전개될 때 선택된 후보 신경망 아키텍처의 성능은 하드웨어 자원들의 타깃 세트 상에서 전개될 때 선택된 후보 신경망 아키텍처를 사용하여 출력을 생성하는 레이턴시에 적어도 부분적으로 기초한다. 예컨대, 이러한 레이턴시는 타깃 하드웨어 전개 엔진(130)이 하드웨어 자원들의 타깃 세트 상에서 선택된 후보 신경망 아키텍처를 실행할 때 타깃 하드웨어 전개 엔진(130)에 의해 측정되고, 선택된 후보 신경망 아키텍처에 대해 타깃 하드웨어 배치 엔진(130)에 의해 결정된 제2 성능 메트릭(132)에 반영되는 선택된 후보 신경망 아키텍처의 레이턴시에 대응할 수 있다.
일부 구현들에서, (ii) 하드웨어 자원들의 타깃 세트 상에서 전개될 때 선택된 후보 신경망 아키텍처의 성능은 하드웨어 자원들의 타깃 세트 상에서 전개될 때 선택된 후보 신경망 아키텍처의 연산 강도(operational intensity)에 적어도 부분적으로 기초한다. 예컨대, 이러한 연산 강도는 타깃 하드웨어 전개 엔진(130)이 하드웨어 자원들의 타깃 세트 상에서 선택된 후보 신경망 아키텍처를 실행할 때 타깃 하드웨어 전개 엔진(130)에 의해 측정되고, 선택된 후보 신경망 아키텍처에 대해 타깃 하드웨어 배치 엔진(130)에 의해 결정된 제2 성능 메트릭(132)에 반영되는 선택된 후보 신경망 아키텍처의 연산 강도에 대응할 수 있다. 일부 예들에서, 그러한 연산 강도는 도 1을 참조하여 위에서 설명된 바와 같이, "I" 파라미터에 대응한다.
일부 구현들에서, (ii) 하드웨어 자원들의 타깃 세트 상에서 전개될 때 선택된 후보 신경망 아키텍처의 성능은 하드웨어 자원들의 타깃 세트 상에서 전개될 때 선택된 후보 신경망 아키텍처의 실행 효율성에 적어도 부분적으로 기초한다. 예컨대, 이러한 실행 효율성은 타깃 하드웨어 전개 엔진(130)이 하드웨어 자원들의 타깃 세트 상에서 선택된 후보 신경망 아키텍처를 실행할 때 타깃 하드웨어 전개 엔진(130)에 의해 측정되고, 선택된 후보 신경망 아키텍처에 대해 타깃 하드웨어 배치 엔진(130)에 의해 결정된 제2 성능 메트릭(132)에 반영되는 선택된 후보 신경망 아키텍처의 실행 효율성에 대응할 수 있다. 일부 예들에서, 이러한 실행 효율성은 도 1을 참조하여 위에서 설명된 바와 같이, "E" 파라미터에 대응한다.
도 3을 다시 한번 참조하면, 단계(306)에서, 시스템은 식별된 후보 신경망 아키텍처들을 사용하여 특정 태스크를 수행하도록 구성되는 태스크 신경망에 대한 아키텍처를 생성한다. 예컨대, 이는 도 1을 참조하여 위에서 설명된 바와 같이, 시스템(100)이 출력을 위한 데이터(150)를 생성하는 것에 대응할 수 있다. 일부 예들에서, 이는 시스템(100) 또는 시스템(100)과 통신하는 다른 시스템이 태스크 신경망에 대한 아키텍처를 생성하기 위해 모델 스케일링 기술을 사용하여 선택된 최종 아키텍처의 크기를 스케일 업하는 것에 대응할 수 있다.
일부 구현들에서, 프로세스(300)는 시스템이 생성된 아키텍처를 갖는 태스크 신경망을 사용하여 새로운 입력들에 대해 특정 머신 학습 태스크를 수행하는 하나 이상의 부가적인 단계들을 포함한다. 예컨대, 이는 하나 이상의 시스템이 도 1을 참조하여 위에서 설명된 바와 같이, 데이터(150)에 반영된 신경망을 사용하거나 특정 머신 학습 태스크를 수행하기 위해 도 2를 참조하여 위에서 설명된 바와 같이, 신경망 아키텍처(200)와 유사하거나 동등한 아키텍처를 갖는 신경망을 사용하는 것에 대응할 수 있다. 예컨대, 이러한 태스크는 이미지 프로세싱 태스크에 대응할 수 있다.
일부 구현들에서, 프로세스(300)는 시스템이 특정 머신 학습 태스크를 수행하는 데 사용하기 위해 생성된 아키텍처를 지정하는 데이터를 제공하는 하나 이상의 부가적인 단계들을 포함한다. 예컨대, 이는 도 1을 참조하여 위에서 설명된 바와 같이, 시스템(100)이 출력을 위한 데이터(150)를 제공하는 것에 대응할 수 있다.
도 5는 특정 머신 학습 태스크에 대한 네트워크 입력에 대한 출력을 생성하기 위해 태스크 신경망을 사용하기 위한 예시적인 프로세스(500)의 흐름도이다. 편의상, 프로세스(500)는 하나 이상의 로케이션들에 로케이팅되고 하나 이상의 컴퓨터들의 시스템에 의해 수행되는 것으로 설명될 것이다. 편의상, 프로세스(500)는 하나 이상의 로케이션들에 로케이팅되고 하나 이상의 컴퓨터들의 시스템에 의해 수행되는 것으로 설명될 것이다. 예컨대, 도 1의 신경망 아키텍처(150) 및/또는 도 2의 신경망 아키텍처(200)와 유사하거나 동등한 아키텍처를 갖는 신경망이 전개되는, 본 명세서에 따라 적절하게 프로그래밍된 시스템이 프로세스(500)를 수행할 수 있다.
시스템은 네트워크 입력을 수신한다(단계 502). 예컨대, 이는 도 2를 참조하여 위에서 설명된 바와 같이, 시스템이 네트워크 입력(202)을 수신하는 것에 대응할 수 있다. 시스템은 특정 머신 학습 태스크에 대한 네트워크 입력에 대한 출력을 생성하기 위해 태스크 신경망을 사용하여 네트워크 입력을 프로세싱한다(단계들 504-508). 예컨대, 이는 시스템이 네트워크 입력(202)에 대한 네트워크 출력(232)을 생성하기 위해 도 2를 참조하여 위에서 설명된 바와 같이, 신경망 아키텍처(200)와 유사하거나 동등한 아키텍처를 갖는 태스크 신경망을 사용하는 것에 대응할 수 있다.
보다 구체적으로, 단계(504)에서, 시스템은 네트워크 입력의 초기 특징 표현을 생성하기 위해 태스크 신경망을 사용한다. 예컨대, 이는 초기 컨볼루션 서브-네트워크(210)가 도 2를 참조하여 위에서 설명된 바와 같이, 네트워크 입력(202)의 초기 특징 표현(212)을 생성하기 위해 사용되는 것에 대응할 수 있다.
단계(506)에서, 시스템은 네트워크 입력의 제2 특징 표현을 생성하도록 초기 특징 표현에 대해 공간-깊이 연산을 수행하기 위해 태스크 신경망을 사용한다. 예컨대, 이는 공간-깊이 컨볼루션 서브-네트워크(220)가 도 2를 참조하여 위에서 설명된 바와 같이, 초기 특징 표현(212)에 기초하여 네트워크 입력(202)의 제2 특징 표현(222)을 생성하기 위해 사용되는 것에 대응할 수 있다. 일부 구현들에서, 공간-깊이 컨볼루션은 스트라이드-n(stride-n) nxn 컨볼루션일 수 있으며, 여기서 n은 1보다 큰 정수 값이다. 예컨대, 일부 그러한 구현들에서, 공간-깊이 컨볼루션 연산은 스트라이드-2 2x2 컨볼루션일 수 있다. 위에서 언급된 바와 같이, 이 연산은 입력 텐서의 형상을 수정하기 위해 하드웨어 가속기들 상에서 유리하게 전개될 수 있다.
그 후, 단계(508)에서, 시스템은 네트워크 입력에 대한 출력을 생성하도록 제2 특징 표현을 프로세싱하기 위해 태스크 신경망을 사용한다. 예컨대, 이는 하나 이상의 부가적인 서브-네트워크들(230)이 도 2를 참조하여 위에서 설명된 바와 같이, 제2 특징 표현(222)에 기초하여 네트워크 출력(232)을 생성하기 위해 사용되는 것에 대응할 수 있다.
일부 예들에서, 하나 이상의 부가적인 서브-네트워크들은 하나 이상의 컨볼루션 층들을 포함할 수 있다. 일부 구현들에서, 태스크 신경망을 사용하여 네트워크 입력을 프로세싱하는 것은 태스크 신경망을 사용하여 네트워크 입력을 프로세싱하기 위해 하나 이상의 하드웨어 가속기들의 세트를 사용하는 것을 포함한다. 이들 구현들 중 적어도 일부에서, 하나 이상의 하드웨어의 세트는 하나 이상의 TPU(tensor processing unit)들, 하나 이상의 GPU(graphics processing unit)들, 또는 이들의 조합을 포함할 수 있다.
본 명세서는 시스템들 및 컴퓨터 프로그램 컴포넌트들과 관련하여 "구성된"이라는 용어를 사용한다. 하나 이상의 컴퓨터들의 시스템이 특정 동작들 또는 액션들을 수행하도록 구성된다는 것은, 시스템에는, 동작 시에 시스템이 동작들 또는 액션들을 수행하게 하는 소프트웨어, 펌웨어, 하드웨어 또는 이들의 조합이 설치되어 있음을 의미한다. 하나 이상의 컴퓨터 프로그램들이 특정 동작들 또는 액션들을 수행하도록 구성된다는 것은, 하나 이상의 프로그램들이, 데이터 프로세싱 장치에 의해 실행될 때, 장치로 하여금 동작들 또는 액션들을 수행하게 하는 명령들을 포함한다는 것을 의미한다.
본 명세서에서 설명된 청구 대상 및 기능적 동작들의 실시예들은, 본 명세서에서 개시된 구조들 및 이들의 구조적 등가물들을 포함하는 디지털 전자 회로로, 실체가 있게 구체화되는 컴퓨터 소프트웨어로 또는 펌웨어로, 컴퓨터 하드웨어로, 또는 이들 중 하나 이상의 조합들로 구현될 수 있다. 본 명세서에서 설명된 청구 대상의 실시예들은, 데이터 프로세싱 장치에 의한 실행을 위해, 또는 데이터 프로세싱 장치의 동작을 제어하기 위해 실체가 있는 비-일시적 저장 매체 상에서 인코딩된 하나 이상의 컴퓨터 프로그램들, 즉 컴퓨터 프로그램 명령들의 하나 이상의 모듈들로서 구현될 수 있다. 컴퓨터 저장 매체는, 머신-판독 가능 저장 디바이스, 머신-판독 가능 저장 기판, 랜덤 또는 직렬 액세스 메모리 디바이스, 또는 이들 중 하나 이상의 조합일 수 있다. 대안적으로 또는 부가적으로, 프로그램 명령들은, 데이터 프로세싱 장치에 의한 실행을 위해 적합한 수신기 장치로의 송신을 위한 정보를 인코딩하도록 생성되는 인위적으로 생성된 전파된 신호, 예컨대, 머신-생성 전기, 광학, 또는 전자기 신호 상에서 인코딩될 수 있다.
"데이터 프로세싱 장치"라는 용어는 데이터 프로세싱 하드웨어를 지칭하며, 예로서, 프로그래밍 가능 프로세서, 컴퓨터, 또는 다수의 프로세서들 또는 컴퓨터들을 포함해서, 데이터를 프로세싱하기 위한 모든 종류의 장치, 디바이스들 및 머신들을 포함한다. 장치는 또한, 특수 목적 로직 회로, 예컨대, FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit)일 수 있거나 이들을 더 포함할 수 있다. 장치는 선택적으로, 하드웨어 외에도, 컴퓨터 프로그램들에 대한 실행 환경을 생성하는 코드, 예컨대, 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 또는 이들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다.
프로그램, 소프트웨어, 소프트웨어 애플리케이션, 앱, 모듈, 소프트웨어 모듈, 스크립트, 또는 코드로서 또한 지칭되거나 설명될 수 있는 컴퓨터 프로그램은 컴파일되거나 인터프리팅된 언어들, 선언형 또는 절차형 언어들을 포함한 임의의 형태의 프로그래밍 언어로 작성될 수 있으며, 그것은 자립형 프로그램 또는 모듈, 컴포넌트, 서브루틴 또는 컴퓨팅 환경에서 사용하기에 적합한 다른 유닛을 포함한 임의의 형태로 전개될 수 있다. 프로그램은 파일 시스템의 파일에 대응할 수 있지만 반드시 대응할 필요는 없을 수 있다. 프로그램은, 다른 프로그램들 또는 데이터 예컨대, 마크업 언어 문서에 저장되는 하나 이상의 스크립트들을 보유하는 파일의 부분에, 문제의 프로그램에 전용된 단일 파일에, 또는 다수의 편성된 파일들 예컨대, 하나 이상의 모듈들, 서브-프로그램 또는 코드의 부분들을 저장하는 파일들에 저장될 수 있다. 컴퓨터 프로그램은 하나의 사이트에 로케이팅되거나 다수의 사이트들에 걸쳐 분산되어 데이터 통신 네트워크에 의해 상호연결되는 다수의 컴퓨터들 상에서 실행되거나 또는 하나의 컴퓨터 상에서 실행되도록 전개될 수 있다.
본 명세서에서, "데이터베이스"라는 용어는 데이터의 임의의 집합을 지칭하도록 광범위하게 사용되고: 데이터는 임의의 특정한 방식으로 구조화될 필요가 없거나 전혀 구조화될 필요가 없고, 하나 이상의 저장 로케이션들 내 저장 디바이스들 상에 저장될 수 있다. 따라서 예컨대, 인덱스 데이터베이스는 각각이 상이하게 조직되고 액세스될 수 있는 데이터의 다수의 집합들을 포함할 수 있다.
유사하게, 본 명세서에서 "엔진"이라는 용어는 하나 이상의 특정 기능들을 수행하도록 프로그래밍된 소프트웨어-기반 시스템, 서브시스템 또는 프로세스를 지칭하기 위해 광범위하게 사용된다. 일반적으로, 엔진은 하나 이상의 로케이션들 내 하나 이상의 컴퓨터들 상에 설치된 하나 이상의 소프트웨어 모듈들 또는 컴포넌트들로서 구현될 것이다. 일부 경우들에서, 하나 이상의 컴퓨터들은 특정 엔진에 전용될 것이며, 다른 경우들에서, 다수의 엔진들이 동일한 컴퓨터 또는 컴퓨터들 상에 설치 및 실행될 수 있다.
본 명세서에서 설명된 프로세스들 및 로직 흐름들은 입력 데이터를 조작하고 출력을 생성함으로써 기능들을 수행하도록 하나 이상의 컴퓨터 프로그램들을 실행하는 하나 이상의 프로그래밍 가능 컴퓨터들에 의해 수행될 수 있다. 프로세스 및 로직 흐름들은 또한 특수-목적 로직 회로, 예컨대, FPGA 또는 ASIC, 또는 특수-목적 로직 회로 및 하나 이상의 프로그래밍된 컴퓨터들의 조합에 의해 수행될 수 있다.
컴퓨터 프로그램의 실행에 적합한 컴퓨터들은 범용 또는 특수 목적 마이크로프로세서들, 또는 둘 모두 또는 임의의 다른 종류의 중앙 처리 장치에 기초할 수 있다. 일반적으로, 중앙 처리 장치는 판독전용 메모리 또는 랜덤 액세스 메모리 또는 둘 모두로부터 명령들 및/또는 데이터를 수신할 것이다. 컴퓨터의 본질적인 엘리먼트들은 명령들을 수행 또는 실행하기 위한 중앙 처리 장치, 및 명령들 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스들이다. 중앙 처리 장치 및 메모리는 특수-목적 로직 회로에 의해 보완되거나 또는 거기에 통합될 수 있다. 일반적으로, 컴퓨터는 또한 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스들, 예컨대, 자기, 광자기 디스크들 또는 광학 디스크들로부터 데이터를 수신하거나 또는 이들에 데이터를 전달하거나, 또는 둘 모두를 수행하도록 동작 가능하게 커플링되거나, 또는 이들을 포함할 것이다. 그러나 컴퓨터는 이러한 디바이스들을 가질 필요가 없다. 또한, 컴퓨터는 다른 디바이스, 예컨대, 몇 개만 언급하면, 모바일 전화, PDA(personal digital assistant), 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, GPS(Global Positioning System) 수신기 또는 휴대용 저장 디바이스, 예컨대, USB(universal serial bus) 플래시 드라이브에 임베딩될 수 있다.
컴퓨터 프로그램 명령들 및/또는 데이터를 저장하기에 적합한 컴퓨터 판독 가능 매체들은, 예로써, 반도체 메모리 디바이스들, 예컨대, EPROM, EEPROM 및 플래시 메모리 디바이스들, 자기 디스크들, 예컨대, 내부 하드 디스크들 또는 제거 가능 디스크들, 광-자기 디스크들 및 CD-ROM 및 DVD-ROM 디스크들을 포함하는 모든 형태들의 비-휘발성 메모리, 매체 및 메모리 디바이스들을 포함한다.
사용자와의 상호작용을 제공하기 위해, 본 명세서에서 설명된 청구 대상의 실시예들은, 사용자에게 정보를 디스플레이하기 위한 디스플레이 디바이스, 예컨대, CRT(cathode ray tube) 또는 LCD(liquid crystal display) 모니터, 및 사용자가 입력을 컴퓨터에 제공할 수 있게 하는 키보드 및 포인팅 디바이스, 예컨대, 마우스 또는 트랙볼을 갖는 컴퓨터 상에서 구현될 수 있다. 다른 종류들의 디바이스들은 또한, 사용자와의 상호작용을 제공하기 위해 사용될 수 있으며, 예컨대, 사용자에게 제공된 피드백은 임의의 형태의 감각 피드백 예컨대, 시각 피드백, 청각 피드백, 또는 촉각 피드백일 수 있고; 사용자로부터의 입력은 음향, 스피치, 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다. 게다가, 컴퓨터는 사용자에 의해 사용되는 디바이스에 문서들을 전송하고 이 디바이스로부터 문서들을 수신함으로써, 예컨대, 웹 브라우저로부터 수신된 요청들에 대한 응답으로 사용자의 디바이스 상의 웹 브라우저에 웹 페이지들을 전송함으로써, 사용자와 상호작용할 수 있다. 또한, 컴퓨터는 텍스트 메시지 또는 다른 형태들의 메시지를 개인용 디바이스, 예컨대, 메시징 애플리케이션을 실행하는 스마트 폰에 전송하고 답신으로 사용자로부터 응답 메시지를 수신함으로써 사용자와 상호작용할 수 있다.
머신 학습 모델들을 구현하기 위한 데이터 프로세싱 장치는 또한 예컨대, 머신 학습 트레이닝 또는 생산, 즉 추론, 워크로드들의 공통적 및 컴퓨팅-집약적 부분들을 프로세싱하기 위한 특수-목적 하드웨어 가속기 유닛들을 포함할 수 있다.
머신 학습 모델은 머신 학습 프레임워크 예컨대, TensorFlow 프레임워크, Microsoft Cognitive Toolkit 프레임워크, Apache Singa 프레임워크 또는 Apache MXNet 프레임워크를 사용하여 구현 및 전개될 수 있다.
본 명세서에서 설명된 청구 대상의 실시예들은, 예컨대, 데이터 서버로서 백 엔드 컴포넌트를 포함하거나, 또는 미들웨어 컴포넌트, 예컨대, 애플리케이션 서버를 포함하거나, 또는 프론트 엔드 컴포넌트, 예컨대, 사용자가 본 명세서에서 설명된 청구 대상의 구현과 상호작용할 수 있게 하는 그래픽 사용자 인터페이스, 웹 브라우저, 또는 앱을 갖는 클라이언트 컴퓨터를 포함하거나, 또는 하나 이상의 그러한 백 엔드, 미들웨어, 또는 프론트 엔드 컴포넌트들의 임의의 조합을 포함하는 컴퓨팅 시스템에서 구현될 수 있다. 시스템의 컴포넌트들은, 임의의 형태 또는 매체의 디지털 데이터 통신, 예컨대, 통신 네트워크에 의해 상호연결될 수 있다. 통신 네트워크들의 예들은 LAN(local area network) 및 WAN(wide area network), 예컨대, 인터넷을 포함한다.
컴퓨팅 시스템은 클라이언트들 및 서버들을 포함할 수 있다. 클라이언트 및 서버는 일반적으로 서로 떨어져 있으며, 통상적으로 통신 네트워크를 통해 상호작용할 수 있다. 클라이언트 및 서버의 관계는, 각각의 컴퓨터들 상에서 실행되고 서로에 대해 클라이언트-서버 관계를 갖는 컴퓨터 프로그램들에 의해 발생한다. 일부 실시예들에서, 서버는 예컨대, 데이터를 디스플레이하고 클라이언트로서 작용하는 디바이스와 상호작용하는 사용자로부터 사용자 입력을 수신하기 위해 데이터, 예컨대, HTML 페이지를 사용자 디바이스에 송신한다. 사용자 디바이스에서 생성된 데이터, 예컨대, 사용자 상호작용의 결과는 디바이스로부터 서버에서 수신될 수 있다.
본 명세서가 많은 특정한 구현 세부사항들을 포함하지만, 이들은 임의의 발명 또는 청구될 수 있는 범위에 대한 제한들로서 해석되는 것이 아니라 오히려, 특정 발명들의 특정 실시예들에 특유할 수 있는 특징들의 설명들로서 해석되어야 한다. 별개의 실시예들의 맥락에서 본 명세서에서 설명된 소정의 특징들은 또한, 단일 실시예에서 조합하여 구현될 수 있다. 대조적으로, 단일 실시예의 맥락에서 설명된 다양한 특징들은 또한, 다수의 실시예들에서 개별적으로 또는 임의의 적합한 서브조합으로 구현될 수 있다. 더욱이, 특징들이 소정의 조합들로 작용하는 것으로 위에서 설명되고 심지어 초기에 이와 같이 청구될 수 있지만, 일부 경우들에서, 청구된 조합으로부터의 하나 이상의 특징들은 그 조합으로부터 제거될 수 있고, 청구된 조합은 서브조합 또는 서브조합의 변동에 관련될 수 있다.
유사하게, 동작들이 특정한 순서로 도면들에 도시되고 청구항들에서 나열되지만, 이것은, 바람직한 결과들을 달성하기 위해, 그러한 동작들이 도시된 특정 순서 또는 순차적인 순서로 수행되거나, 모든 예시된 동작들이 수행될 것을 요구하는 것으로서 이해되지는 않아야 한다. 특정 환경들에서, 멀티태스킹 및 병렬 프로세싱이 유리할 수 있다. 또한, 위에서 설명된 실시예들에서의 다양한 시스템 모듈들 및 컴포넌트들의 분리는 모든 실시예들에서 그러한 분리를 요구하는 것으로서 이해되지는 않아야 하고, 그리고 설명된 프로그램 컴포넌트들 및 시스템들이 일반적으로, 단일 소프트웨어 제품으로 함께 통합되거나 다수의 소프트웨어 제품들로 패키징될 수 있다는 것이 이해되어야 한다.
청구 대상의 특정 실시예들이 설명되었다. 다른 실시예들은 다음의 청구항들의 범위 내에 있다. 예컨대, 청구항들에서 열거된 액션들은, 상이한 순서로 수행될 수 있으며, 그럼에도 불구하고 바람직한 결과들을 달성할 수 있다. 일 예로서, 첨부한 도면들에 도시된 프로세스들은 바람직한 결과들을 달성하기 위해, 도시된 특정한 순서 또는 순차적인 순서를 반드시 요구하지는 않는다. 일부 경우들에서, 멀티태스킹 및 병렬 프로세싱이 유리할 수 있다.

Claims (20)

  1. 하드웨어 자원들의 타깃 세트 상에서 전개될 때 특정 머신 학습 태스크를 수행하도록 구성되는 태스크 신경망에 대한 아키텍처를 결정하는 방법으로서,
    상기 특정 머신 학습 태스크를 수행하기 위한 트레이닝 데이터를 수신하는 단계;
    상기 트레이닝 데이터를 사용하여, 하나 이상의 후보 신경망 아키텍처들을 식별하기 위해 후보 신경망 아키텍처들의 공간에 걸친 검색을 수행하는 단계;
    상기 식별된 후보 신경망 아키텍처들을 사용하여 상기 태스크 신경망에 대한 아키텍처를 생성하는 단계를 포함하고,
    상기 검색을 수행하는 단계는,
    상기 공간으로부터 후보 신경망 아키텍처를 선택하는 단계 ― 상기 후보 신경망 아키텍처를 선택하는 단계는 상기 후보 신경망 아키텍처의 하나 이상의 컴포넌트들 각각에 대해, (1) 입력 텐서(tensor)의 공간적 범위(spatial extent)를 감소시키면서 상기 입력 텐서의 깊이를 증가시키는 공간-깊이 컨볼루션 연산(space-to-depth convolution operation) 및 (2) 하나 이상의 다른 유형들의 컨볼루션 연산들을 포함하는 연산들의 세트로부터 상기 컴포넌트에 의해 수행될 연산을 선택하는 단계를 포함함 ― ; 및
    (i) 상기 특정 머신 학습 태스크에 대한 선택된 후보 신경망 아키텍처의 성능 및 (ii) 상기 하드웨어 자원들의 타깃 세트 상에서 전개될 때 상기 선택된 후보 신경망 아키텍처의 성능에 기초하여 상기 선택된 후보 신경망 아키텍처의 성능의 측정(measure)을 결정하는 단계를 반복적으로 수행하는 단계를 포함하는,
    하드웨어 자원들의 타깃 세트 상에서 전개될 때 특정 머신 학습 태스크를 수행하도록 구성되는 태스크 신경망에 대한 아키텍처를 결정하는 방법.
  2. 제1 항에 있어서,
    상기 생성된 아키텍처를 갖는 태스크 신경망을 사용하여 새로운 입력들 상에서 상기 특정 머신 학습 태스크를 수행하는 단계를 더 포함하는,
    하드웨어 자원들의 타깃 세트 상에서 전개될 때 특정 머신 학습 태스크를 수행하도록 구성되는 태스크 신경망에 대한 아키텍처를 결정하는 방법.
  3. 제1 항에 있어서,
    상기 특정 머신 학습 태스크를 수행하는 데 사용하기 위해 상기 생성된 아키텍처를 지정하는 데이터를 제공하는 단계를 더 포함하는,
    하드웨어 자원들의 타깃 세트 상에서 전개될 때 특정 머신 학습 태스크를 수행하도록 구성되는 태스크 신경망에 대한 아키텍처를 결정하는 방법.
  4. 제1 항에 있어서,
    상기 공간-깊이 컨볼루션은 스트라이드-n(stride-n) nxn 컨볼루션이고, n은 1보다 큰 정수 값인,
    하드웨어 자원들의 타깃 세트 상에서 전개될 때 특정 머신 학습 태스크를 수행하도록 구성되는 태스크 신경망에 대한 아키텍처를 결정하는 방법.
  5. 제1 항에 있어서,
    상기 연산들은 상기 하드웨어 자원들의 타깃 세트의 하나 이상의 메모리들에서 하나 이상의 메모리 연산들을 수행함으로써 입력 텐서의 형상을 각각 수정하는 하나 이상의 재성형 연산들을 더 포함하는,
    하드웨어 자원들의 타깃 세트 상에서 전개될 때 특정 머신 학습 태스크를 수행하도록 구성되는 태스크 신경망에 대한 아키텍처를 결정하는 방법.
  6. 제1 항에 있어서,
    상기 하드웨어 자원들의 타깃 세트 상에서 전개될 때 상기 선택된 후보 신경망 아키텍처의 성능은 상기 하드웨어 자원들의 타깃 세트 상에서 전개될 때 상기 선택된 후보 신경망 아키텍처를 사용하여 출력을 생성하는 레이턴시에 적어도 부분적으로 기초하는,
    하드웨어 자원들의 타깃 세트 상에서 전개될 때 특정 머신 학습 태스크를 수행하도록 구성되는 태스크 신경망에 대한 아키텍처를 결정하는 방법.
  7. 제1 항에 있어서,
    상기 하드웨어 자원들의 타깃 세트 상에서 전개될 때 상기 선택된 후보 신경망 아키텍처의 성능은 상기 하드웨어 자원들의 타깃 세트 상에서 전개될 때 상기 선택된 후보 신경망 아키텍처의 연산 강도(operational intensity)에 적어도 부분적으로 기초하는,
    하드웨어 자원들의 타깃 세트 상에서 전개될 때 특정 머신 학습 태스크를 수행하도록 구성되는 태스크 신경망에 대한 아키텍처를 결정하는 방법.
  8. 제1 항에 있어서,
    상기 하드웨어 자원들의 타깃 세트 상에서 전개될 때 상기 선택된 후보 신경망 아키텍처의 성능은 상기 하드웨어 자원들의 타깃 세트 상에서 전개될 때 상기 선택된 후보 신경망 아키텍처의 실행 효율성에 적어도 부분적으로 기초하는,
    하드웨어 자원들의 타깃 세트 상에서 전개될 때 특정 머신 학습 태스크를 수행하도록 구성되는 태스크 신경망에 대한 아키텍처를 결정하는 방법.
  9. 제1 항에 있어서,
    상기 자원들의 타깃 세트는 하나 이상의 행렬 머신들, 하나 이상의 벡터 머신들, 또는 이들의 조합을 포함하는 컴퓨팅 디바이스들의 세트를 포함하는,
    하드웨어 자원들의 타깃 세트 상에서 전개될 때 특정 머신 학습 태스크를 수행하도록 구성되는 태스크 신경망에 대한 아키텍처를 결정하는 방법.
  10. 제1 항에 있어서,
    상기 자원들의 타깃 세트는 데이터 센터 내 하나 이상의 하드웨어 가속기들의 집합(collection)을 포함하는,
    하드웨어 자원들의 타깃 세트 상에서 전개될 때 특정 머신 학습 태스크를 수행하도록 구성되는 태스크 신경망에 대한 아키텍처를 결정하는 방법.
  11. 제10 항에 있어서,
    상기 하나 이상의 하드웨어 가속기들은 하나 이상의 TPU(tensor processing unit)들, 하나 이상의 GPU(graphics processing unit)들, 또는 이들의 조합을 포함하는,
    하드웨어 자원들의 타깃 세트 상에서 전개될 때 특정 머신 학습 태스크를 수행하도록 구성되는 태스크 신경망에 대한 아키텍처를 결정하는 방법.
  12. 제1 항에 있어서,
    상기 공간으로부터 상기 후보 신경망 아키텍처를 선택한 후, 상기 선택된 후보 신경망 아키텍처의 인스턴스를 트레이닝하기 위해 상기 트레이닝 데이터를 사용하는 단계를 더 포함하고,
    상기 선택된 후보 신경망 아키텍처의 성능의 측정을 결정하는 단계는,
    상기 선택된 후보 신경망 아키텍처의 트레이닝된 인스턴스의 성능의 측정을 결정하는 단계를 포함하는,
    하드웨어 자원들의 타깃 세트 상에서 전개될 때 특정 머신 학습 태스크를 수행하도록 구성되는 태스크 신경망에 대한 아키텍처를 결정하는 방법.
  13. 제12 항에 있어서,
    상기 하드웨어 자원들의 타깃 세트 상에서 상기 선택된 후보 신경망 아키텍처의 트레이닝된 인스턴스를 실행하는 단계를 더 포함하고,
    상기 하드웨어 자원들의 타깃 세트 상에서 전개될 때 상기 선택된 후보 신경망 아키텍처의 성능은 상기 하드웨어 자원들의 타깃 세트 상에서 실행될 때 상기 하드웨어 자원들의 타깃 세트 상에서 상기 선택된 후보 신경망 아키텍처의 트레이닝된 인스턴스의 성능을 포함하는,
    하드웨어 자원들의 타깃 세트 상에서 전개될 때 특정 머신 학습 태스크를 수행하도록 구성되는 태스크 신경망에 대한 아키텍처를 결정하는 방법.
  14. 제1 항에 있어서,
    상기 공간으로부터 상기 후보 신경망 아키텍처를 선택하는 단계는,
    하나 이상의 이전-선택된 후보 신경망 아키텍처들의 성능의 하나 이상의 성능 측정들에 각각 적어도 부분적으로 기초하여 상기 공간으로부터 후보 신경망 아키텍처를 선택하는 단계를 포함하는,
    하드웨어 자원들의 타깃 세트 상에서 전개될 때 특정 머신 학습 태스크를 수행하도록 구성되는 태스크 신경망에 대한 아키텍처를 결정하는 방법.
  15. 하나 이상의 컴퓨터들에 의해 실행될 때, 상기 하나 이상의 컴퓨터들로 하여금, 하드웨어 자원들의 타깃 세트 상에서 전개될 때 특정 머신 학습 태스크를 수행하도록 구성되는 태스크 신경망에 대한 아키텍처를 결정하기 위한 동작들을 수행하게 하는 명령들을 저장하는 하나 이상의 비-일시적 저장 매체들로서,
    상기 동작들은,
    상기 특정 머신 학습 태스크를 수행하기 위한 트레이닝 데이터를 수신하는 동작;
    상기 트레이닝 데이터를 사용하여, 하나 이상의 후보 신경망 아키텍처들을 식별하기 위해 후보 신경망 아키텍처들의 공간에 걸친 검색을 수행하는 동작;
    상기 식별된 후보 신경망 아키텍처들을 사용하여 상기 태스크 신경망에 대한 아키텍처를 생성하는 동작을 포함하고,
    상기 검색을 수행하는 동작은,
    상기 공간으로부터 후보 신경망 아키텍처를 선택하는 동작 ― 상기 후보 신경망 아키텍처를 선택하는 단계는 상기 후보 신경망 아키텍처의 하나 이상의 컴포넌트들 각각에 대해, (1) 입력 텐서의 공간적 범위를 감소시키면서 상기 입력 텐서의 깊이를 증가시키는 공간-깊이 컨볼루션 연산 및 (2) 하나 이상의 다른 유형들의 컨볼루션 연산들을 포함하는 연산들의 세트로부터 상기 컴포넌트에 의해 수행될 연산을 선택하는 동작을 포함함 ― ; 및
    (i) 상기 특정 머신 학습 태스크에 대한 선택된 후보 신경망 아키텍처의 성능 및 (ii) 상기 하드웨어 자원들의 타깃 세트 상에서 전개될 때 상기 선택된 후보 신경망 아키텍처의 성능에 기초하여 상기 선택된 후보 신경망 아키텍처의 성능의 측정을 결정하는 동작을 반복적으로 수행하는 동작을 포함하는,
    하나 이상의 비-일시적 저장 매체들.
  16. 방법으로서,
    네트워크 입력을 수신하는 단계; 및
    특정 머신 학습 태스크에 대한 네트워크 입력에 대한 출력을 생성하기 위해 태스크 신경망을 사용하여 상기 네트워크 입력을 프로세싱하는 단계를 포함하고,
    상기 태스크 신경망을 사용하여 상기 네트워크 입력을 프로세싱하는 단계는,
    하나 이상의 컨볼루션 층들을 포함하고 제1 공간 범위 및 제1 수의 깊이 채널들을 갖는 상기 네트워크 입력의 초기 특징 표현을 생성하도록 구성된 초기 컨볼루션 신경망 서브-네트워크를 사용하여 상기 네트워크 입력을 프로세싱하는 단계;
    (i) 상기 제1 공간 범위보다 작은 제2 공간 범위 및 (ii) 상기 제1 수보다 큰 제2 수의 깊이 채널들을 갖는 제2 특징 표현을 생성하도록 상기 네트워크 입력의 초기 특징 표현에 대해 공간-깊이 컨볼루션 연산을 수행하는 단계; 및
    상기 네트워크 입력에 대한 출력을 생성하기 위해 하나 이상의 부가적인 서브-네트워크들을 사용하여 상기 제2 특징 표현을 프로세싱하는 단계를 포함하는,
    방법.
  17. 제16 항에 있어서,
    상기 공간-깊이 컨볼루션은 스트라이드-n nxn 컨볼루션이고, n은 1보다 큰 정수 값인,
    방법.
  18. 제16 항에 있어서,
    상기 하나 이상의 부가적인 서브-네트워크들은 하나 이상의 컨볼루션 층들을 포함하는,
    방법.
  19. 제16 항에 있어서,
    상기 태스크 신경망을 사용하여 상기 네트워크 입력을 프로세싱하는 단계는,
    상기 태스크 신경망을 사용하여 상기 네트워크 입력을 프로세싱하기 위해 하나 이상의 하드웨어 가속기들의 세트를 사용하는 단계를 포함하는,
    방법.
  20. 제19 항에 있어서,
    상기 하나 이상의 하드웨어 가속기들의 세트는 하나 이상의 TPU(tensor processing unit)들, 하나 이상의 GPU(graphics processing unit)들, 또는 이들의 조합을 포함하는,
    방법.
KR1020227030225A 2020-07-16 2021-04-28 하드웨어-최적화된 신경 아키텍처 검색 KR20220134627A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202063052927P 2020-07-16 2020-07-16
US63/052,927 2020-07-16
US17/039,178 2020-09-30
US17/039,178 US20220019869A1 (en) 2020-07-16 2020-09-30 Hardware-optimized neural architecture search
PCT/US2021/029619 WO2022015390A1 (en) 2020-07-16 2021-04-28 Hardware-optimized neural architecture search

Publications (1)

Publication Number Publication Date
KR20220134627A true KR20220134627A (ko) 2022-10-05

Family

ID=79292628

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227030225A KR20220134627A (ko) 2020-07-16 2021-04-28 하드웨어-최적화된 신경 아키텍처 검색

Country Status (6)

Country Link
US (1) US20220019869A1 (ko)
EP (1) EP4182850A1 (ko)
JP (1) JP2023533631A (ko)
KR (1) KR20220134627A (ko)
CN (1) CN115210717A (ko)
WO (1) WO2022015390A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220147680A1 (en) * 2020-11-12 2022-05-12 Samsung Electronics Co., Ltd. Method for co-design of hardware and neural network architectures using coarse-to-fine search, two-phased block distillation and neural hardware predictor

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10438117B1 (en) * 2015-05-21 2019-10-08 Google Llc Computing convolutions using a neural network processor
US11741342B2 (en) * 2018-05-18 2023-08-29 Baidu Usa Llc Resource-efficient neural architects
US11531861B2 (en) * 2018-11-06 2022-12-20 Google Llc Neural architecture search with factorized hierarchical search space
US11610117B2 (en) * 2018-12-27 2023-03-21 Tesla, Inc. System and method for adapting a neural network model on a hardware platform
US11494616B2 (en) * 2019-05-09 2022-11-08 Shenzhen Malong Technologies Co., Ltd. Decoupling category-wise independence and relevance with self-attention for multi-label image classification
US11153762B1 (en) * 2020-05-11 2021-10-19 At&T Mobility Ii Llc Spectrum access optimization including for 5G or other next generation user equipment

Also Published As

Publication number Publication date
EP4182850A1 (en) 2023-05-24
WO2022015390A1 (en) 2022-01-20
CN115210717A (zh) 2022-10-18
US20220019869A1 (en) 2022-01-20
JP2023533631A (ja) 2023-08-04

Similar Documents

Publication Publication Date Title
US20230252327A1 (en) Neural architecture search for convolutional neural networks
US11669744B2 (en) Regularized neural network architecture search
JP7157154B2 (ja) 性能予測ニューラルネットワークを使用したニューラルアーキテクチャ探索
US10984319B2 (en) Neural architecture search
EP3602419B1 (en) Neural network optimizer search
US11797839B2 (en) Training neural networks using priority queues
CN111652378B (zh) 学习来选择类别特征的词汇
US11720796B2 (en) Neural episodic control
CN115335830A (zh) 利用权重共享的神经架构搜索
US20220383119A1 (en) Granular neural network architecture search over low-level primitives
KR20220134627A (ko) 하드웨어-최적화된 신경 아키텍처 검색