KR20220153001A - 심층 신경망들의 배치를 위한 저정밀도 추론 모델들의 최적화 - Google Patents
심층 신경망들의 배치를 위한 저정밀도 추론 모델들의 최적화 Download PDFInfo
- Publication number
- KR20220153001A KR20220153001A KR1020227027451A KR20227027451A KR20220153001A KR 20220153001 A KR20220153001 A KR 20220153001A KR 1020227027451 A KR1020227027451 A KR 1020227027451A KR 20227027451 A KR20227027451 A KR 20227027451A KR 20220153001 A KR20220153001 A KR 20220153001A
- Authority
- KR
- South Korea
- Prior art keywords
- neural network
- accumulation table
- weight accumulation
- quantized
- values
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0495—Quantised networks; Sparse networks; Compressed networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
- G06N20/10—Machine learning using kernel methods, e.g. support vector machines [SVM]
-
- G06N3/0454—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- General Physics & Mathematics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Neurology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Image Processing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Complex Calculations (AREA)
Abstract
시스템들, 장치들 및 방법들은 양자화된 신경망을 생성하고 - 신경망의 모델 가중치들은 부호 있는 정수 값들로서 양자화되고, 신경망의 입력 계층은 입력 값들을 부호 없는 정수 값들로서 양자화하도록 구성됨 - , 양자화된 모델 가중치들 및 신경망에 대한 커널 크기에 기초하여 가중치 누적 테이블을 생성하고, 가중치 누적 테이블 및 커널 크기에 기초하여 신경망의 출력 계층에 대한 출력 복원 함수를 생성함으로써 비대칭 양자화를 수행하는 추론 신경망 모델을 최적화하기 위한 기술을 제공할 수 있다. 이 기술은 또한 입력 채널별 양자화를 수행할 수 있다. 이 기술은 또한 혼합 정밀도 자동 튜닝을 수행할 수 있다.
Description
실시예들은 일반적으로 기계 학습에 관한 것이다. 보다 구체적으로, 실시예들은 산업, 상업 및 소비자 애플리케이션들에서의 배치(deployment)를 위해 신경망 기술을 최적화하는 것에 관한 것이다.
기계 학습(machine learning)(ML) 기술, 특히 신경망들의 최근 발전은 광범위한 계산 작업들에 적용할 가능성을 보여주었다. 심층 신경망들과 같은 신경망들은 복잡한 행렬 기반 곱셈 및 컨볼루션 연산들을 포함할 수 있다. 일단 훈련되면, 신경망들은 추론 신경망 모델로서 배치될 수 있다. 그러나, 심층 신경망들(및 다른 신경망들)의 높은 계산 복잡성으로 인해, 산업, 상업 및/또는 소비자 애플리케이션들에 추론 모델들을 배치하는 데 어려움을 제공한다. 저정밀도 추론 모델들이 고려되었지만, 적절한 정확도가 부족하고/하거나 과도한 메모리 또는 대역폭 요건들을 갖는다.
실시예들의 다양한 이점들은 이하의 명세서 및 첨부된 청구항들을 읽고 이하의 도면들을 참조함으로써 본 기술분야의 통상의 기술자에게 명백해질 것이다.
도 1은 하나 이상의 실시예에 따른 추론 신경망 모델을 최적화하기 위한 시스템을 도시하는 도면을 제공한다.
도 2a - 도 2c는 하나 이상의 실시예에 따른 비대칭 양자화의 양태들을 도시하는 도면들을 제공한다.
도 3a - 도 3b는 하나 이상의 실시예에 따른 입력 채널별 양자화(per-input channel quantization)의 양태들을 도시하는 도면들을 제공한다.
도 4는 하나 이상의 실시예에 따른 추론 신경망 모델을 최적화하기 위한 시스템을 도시하는 도면을 제공한다.
도 5는 하나 이상의 실시예에 따른 추론 신경망 모델을 튜닝하기 위한 프로세스를 도시하는 흐름도를 제공한다.
도 6a - 도 6b는 하나 이상의 실시예에 따른 추론 신경망 모델을 최적화하기 위한 시스템을 도시하는 도면들을 제공한다.
도 7은 하나 이상의 실시예에 따른 추론 신경망 모델을 최적화하기 위한 프로세스를 도시하는 흐름도를 제공한다.
도 8은 하나 이상의 실시예에 따른 추론 신경망 모델을 최적화하기 위한 예시적인 시스템을 도시하는 블록도를 제공한다.
도 9는 하나 이상의 실시예에 따른 추론 신경망 모델을 최적화하기 위한 예시적인 반도체 장치를 도시하는 블록도이다.
도 10은 하나 이상의 실시예에 따른 예시적인 프로세서를 도시하는 블록도이다.
도 11은 하나 이상의 실시예에 따른 멀티프로세서 기반 컴퓨팅 시스템의 예를 도시하는 블록도이다.
도 1은 하나 이상의 실시예에 따른 추론 신경망 모델을 최적화하기 위한 시스템을 도시하는 도면을 제공한다.
도 2a - 도 2c는 하나 이상의 실시예에 따른 비대칭 양자화의 양태들을 도시하는 도면들을 제공한다.
도 3a - 도 3b는 하나 이상의 실시예에 따른 입력 채널별 양자화(per-input channel quantization)의 양태들을 도시하는 도면들을 제공한다.
도 4는 하나 이상의 실시예에 따른 추론 신경망 모델을 최적화하기 위한 시스템을 도시하는 도면을 제공한다.
도 5는 하나 이상의 실시예에 따른 추론 신경망 모델을 튜닝하기 위한 프로세스를 도시하는 흐름도를 제공한다.
도 6a - 도 6b는 하나 이상의 실시예에 따른 추론 신경망 모델을 최적화하기 위한 시스템을 도시하는 도면들을 제공한다.
도 7은 하나 이상의 실시예에 따른 추론 신경망 모델을 최적화하기 위한 프로세스를 도시하는 흐름도를 제공한다.
도 8은 하나 이상의 실시예에 따른 추론 신경망 모델을 최적화하기 위한 예시적인 시스템을 도시하는 블록도를 제공한다.
도 9는 하나 이상의 실시예에 따른 추론 신경망 모델을 최적화하기 위한 예시적인 반도체 장치를 도시하는 블록도이다.
도 10은 하나 이상의 실시예에 따른 예시적인 프로세서를 도시하는 블록도이다.
도 11은 하나 이상의 실시예에 따른 멀티프로세서 기반 컴퓨팅 시스템의 예를 도시하는 블록도이다.
이미지 인식 및 자연어 프로세싱(natural language processing)(NLP)과 같은 애플리케이션들은 인공 지능(AI) 기계 학습의 서브세트인 딥 러닝 기술을 사용할 수 있고, 여기서 심층 신경망(deep neural network)(DNN)과 같은 신경망은 입력 데이터에 복잡한 연산들을 수행하기 위한 복수의 중간 계층을 포함한다. 심층 신경망들에 수반되는 비교적 많은 양의 데이터로 인해, 데이터는 전형적으로 n차원 어레이들(예를 들어, 텐서들)로서 조직되고 프로세싱될 수 있으며, 이는 행렬들로 더 분할될 수 있다. 그러한 경우에, 공통 행렬 연산들은 행렬 곱셈 연산(예를 들어, 일반 행렬 곱셈(General Matrix Multiply)/GEMM 커널을 통한 "matmul"), (예를 들어, 컨볼루션 커널을 통한) 컨볼루션 연산들 등을 포함할 수 있다. 추론 신경망 모델은 아래에서 논의되는 바와 같이 저정밀도 양자화를 포함할 수 있으며 배치를 위해 적절하게 최적화된 성능을 제공할 수 있다.
도 1은 도면들 및 연관된 설명을 포함하지만 이에 제한되지 않는 본 명세서에 설명된 컴포넌트들 및 특징들을 참조하여, 하나 이상의 실시예에 따른 비대칭 양자화를 사용하여 추론 신경망 모델을 최적화하기 위한 예시적인 시스템(110)의 블록도를 도시한다. 시스템(110)은 훈련된 신경망 모델(112), 비대칭 양자화 모듈(114), 및 추론 신경망 엔진(116)을 포함할 수 있다. 훈련된 신경망 모델(112)은 심층 신경망일 수 있고, 본 기술분야의 통상의 기술자에게 공지된 신경망 훈련 절차들에 따라 훈련될 수 있다. 훈련된 신경망 모델(112)은 전형적으로 입력 텐서들 또는 다른 입력 데이터를 처리하기 위한 입력 계층 또는 스테이지, 예를 들어, 컨볼루션 연산들 또는 행렬 곱셈 연산들과 같은 계산 연산들을 위한 가중치들을 포함하는 중간 계층들, 및 출력 데이터를 처리 또는 제시하기 위한 출력 계층 또는 스테이지를 포함할 수 있다.
비대칭 양자화 모듈(114)은 훈련된 신경망 모델(112)에 기초하여 추론 신경망 엔진(116)에 구현된 추론 모델과 같은 추론 신경망 모델을 최적화하기 위한 하나 이상의 프로세스를 수행할 수 있다. 추론 신경망 엔진(116)은 입력 텐서들 또는 다른 입력 데이터(132)를 수신하고, (훈련된 모델에 기초한) 추론 모델에 따라 계산들 또는 다른 동작들을 수행하고, 출력 텐서들 또는 다른 출력 데이터(136)를 제공할 수 있다. 추론 신경망 엔진(116)은 입력 계층 양자화(122), 모델 가중치 양자화(124) 및 출력 계층 복원(126)을 포함할 수 있다. 입력 텐서들 또는 다른 입력 데이터(132)는 비교적 고정밀도의 값들(예를 들어, 부동 소수점 값들 또는 고정밀도 정수 값들)로서 수신될 수 있다. 마찬가지로, 출력 텐서들 또는 다른 출력 데이터(136)는 비교적 고정밀도의 값들(예를 들어, 부동 소수점 값들 또는 고정밀도 정수 값들)일 수 있다. 부동 소수점 값들은 예를 들어 64비트 부동 소수점 값들(fp64) 또는 32비트 부동 소수점 값들(fp32)일 수 있고; 고정밀도 정수 값들은 예를 들어 64비트 또는 32비트 정수 값들(int64 또는 int32)일 수 있다.
비교적 고정밀도의 값들로서 수신된 입력 텐서들 또는 다른 입력 데이터(132)는 입력 계층 양자화(122)에 의해 예를 들어 8비트 정수 값들(int8)과 같은 저정밀도 정수 값들로서 양자화될 수 있다. 추론 모델은 행렬 곱셈 연산들 및/또는 컨볼루션 연산들과 같은 계산들 또는 다른 동작들을 수행할 수 있고, 여기서 적용가능한 커널(예컨대, GEMM 또는 컨볼루션 커널)에 대한 가중치들은 모델 가중치 양자화(124)를 통해 예를 들어 8비트 정수 값들(int8)과 같은 저정밀도 가중치들로 양자화된다. 출력 계층 복원(126)은 더 낮은 정밀도의 정수 출력 값들을 고정밀도(예를 들어, 부동 소수점) 출력 값들로 다시 변환하는 것을 다룬다.
비대칭 양자화 모듈(114)은 입력 계층 양자화(122), 모델 가중치 양자화(124), 및 출력 계층 복원(126)이 구현 또는 수행되는 방법을 제어한다. 입력 계층 양자화(122)는 비대칭 양자화를 사용하여 입력 값들을 양자화함으로써 구현될 수 있고, 그에 의해 각각의 고정밀도 입력 값(예를 들어, fp32)이 이하의 공식에 따라 부호 없는 정수 값(예를 들어, uint8)으로서 양자화된다:
여기서, 은 양자화된 정수 입력 값, 는 입력 스케일 팩터, 는 부동 소수점 입력 값, z는 바이어스 또는 오프셋이다. 가장 가까운 정수 값으로 라운드 업 또는 다운하기 위해 라운딩 함수가 적용될 수 있다. 예를 들어, 양자화된 uint8 값들이 0 내지 255 범위에 맞도록, 입력 스케일 팩터 및 바이어스 z는 입력 값들 의 동적 범위에 기초하여 설정될 수 있다:
모델 가중치 양자화(124)는 이하의 공식에 따라, 각각의 고정밀도 가중치(예를 들어, fp32)가 부호 있는 정수 값(예를 들어, int8)으로 양자화되도록, 대칭 양자화를 사용하여 부동 소수점 가중치들을 양자화함으로써 구현될 수 있다:
여기서, 는 양자화된 정수 가중치, 는 가중치 스케일 팩터, 는 부동 소수점 가중치이다. 가장 가까운 정수 값으로 라운드 업 또는 다운하기 위해 라운딩 함수가 적용될 수 있다. 예를 들어, 양자화된 int8 값들이 -128 내지 +127 범위에 맞도록, 가중치 스케일 팩터 는 가중치들 의 동적 범위에 기초하여 설정될 수 있다. 모델 가중치 양자화(124)는 추론 모델이 확립될 때 한 번 수행될 수 있다.
출력 값들은 추론 모델에 따라 계산될 수 있다. 예를 들어, 추론 모델은 이하의 공식에 따라 컨볼루션 커널 W를 통해 컨볼루션 연산들을 수행할 수 있다:
여기서, (예를 들어, 32비트 정수)는 정수 출력 값이고, conv(x, W)는 입력 값들 x 및 커널 가중치 W를 수반하는 컨볼루션 연산을 나타낸다. 예를 들어, 입력 값들 x는 2차원(2D) 데이터 세트(예를 들어, 이미지)를 나타낼 수 있고, 커널 W는 2차원(2D) 가중치 세트를 나타낼 수 있다.
비대칭 양자화의 양태들에 관한 추가 세부사항들은 도 2a 내지 도 2c에 도시되고 그를 참조하여 이하에 설명된다. 도 2a에서는 도면들 및 연관된 설명을 포함하지만 이에 제한되지 않는 본 명세서에 설명된 컴포넌트들 및 특징들을 참조하여, 하나 이상의 실시예에 따른 컨볼루션 연산들에서 사용되는 패딩을 도시하는 도면이 도시된다. 컨볼루션 연산들에 대해, 입력 데이터 세트는 외부 경계들을 따라 입력 값들에 대한 커널을 수반하는 컨볼루션 연산들을 수용하기 위해 값들로 (예를 들어, 외부 경계들 주위에) 패딩될 수 있다. 도 2a는 예를 들어 이미지를 나타낼 수 있는 2차원 입력 데이터 세트(212)를 도시한다. 데이터 세트(212)는 설명을 위해 16 x 16 세트의 데이터 값들(예를 들어, 픽셀들)로서 도시되지만, 데이터 세트의 차원들은 임의의 크기일 수 있다(그리고 차원들은 동일한 크기여야 하는 것이 아니라, 예를 들어 32 x 64일 수 있다). 박스(214)는 컨볼루션 연산들에서 사용될 수 있는 커널에 대한 윤곽을 보여주고; 커널 크기는 설명을 위해 3 x 3 커널로서 도시되지만, 커널은 임의의 크기일 수 있다(그리고 커널 차원들은 동일한 크기여야 하는 것이 아니라, 예를 들어 5 x 7일 수 있다).
도 2a에 도시된 바와 같이, 커널의 중심이 상부 좌측 상단 데이터 값에 맞춰질 때, 임의의 입력 값들과 중첩되지 않는 커널 값들이 존재한다. 따라서, 컨볼루션 연산들을 수행하기 위해, 이러한 값들은 패딩(216)을 갖는 2차원 입력 데이터를 도시하는 도 2a에 도시된 바와 같이 "패딩"으로서 추가된다. 패딩된 데이터 세트(216)는 데이터 세트(212)의 외부 경계 행들 및 열들을 둘러싸는 일련의 추가 데이터 요소들(예를 들어, 픽셀들)로서 도시된다. 패딩되는 행들 및 열들의 수는 커널의 크기에 의존한다. 3 x 3 커널의 예에 대해, 2차원 데이터 세트(212)의 상단과 하단에 단일의 패딩된 행이 추가되고, 2차원 데이터 세트(212)의 각각의 측면에 단일의 패딩된 열이 추가된다. 패딩되는 값들은 제로로 설정될 수 있거나 상수 값으로 설정될 수 있는 등이다. 본 명세서에 설명된 바와 같은 추론 엔진에 대해, 패딩되는 값들은 전형적으로 제로로 설정될 수 있다. 3 x 3 커널이 패딩된 데이터 세트(216)를 오버레이할 수 있는 방법의 예들이 도 2a에서 일련의 박스들(218a-218i)로서 도시된다. 더 일반적으로, 입력의 각각의 경계를 따라 패딩으로서 추가될 행들 또는 열들의 수는 trunc(K/2)와 동일하고, 여기서 K는 커널 크기이고, trunc()는 결과의 절단(truncation)을 나타낸다(예를 들어, 3x3 커널에 대해, K=3).
추론 모델에 대한 모든 컨볼루션 및/또는 다른 계산 연산들이 완료되면, 출력 값들은 고정밀도(예를 들어, 부동 소수점) 값들로 복원하기 위해 변환(즉, 역-양자화)될 수 있다. 비대칭 양자화 모듈(114)을 통해, 출력 계층 복원(126)은 이하의 공식에 따라 정수 출력 값들을 고정밀도 출력 값들(예를 들어, fp32)로 변환함으로써 복원 함수로서 구현될 수 있다:
여기서, 는 고정밀도 부동 소수점 출력 값, 는 추론 모델로부터 출력되는 정수 값, 및 는 각각 입력 및 가중치 스케일링 팩터, 는 가중치 누적 테이블이다. 가중치 누적 테이블 은 다음과 같이 정의된다:
도 2b는 도면들 및 연관된 설명을 포함하지만 이에 제한되지 않는 본 명세서에 설명된 컴포넌트들 및 특징들을 참조하여, 하나 이상의 실시예에 따른 가중치 누적 테이블(Wacc)(222)을 도시한다. 도시된 바와 같이, 가중치 누적 테이블(222)은 예로서 3 x 3 커널, 단위 스트라이드에 대응하며, 여기서 (예를 들어 도 2a에서 패딩된 데이터 세트(216)로서 도시된 바와 같이) 패딩의 단일 행이 입력 데이터 세트의 경계 행들/열들 주위에 추가된다. 단위 스트라이드는 컨볼루션 동안 커널이 한 번에 단일 인덱스 값만큼 시프트됨을 의미한다.
도 2b에 도시된 바와 같이, Wacc(222)의 상부 좌측 요소 wacc[0,0]은 도 2a의 박스(218a)를 통해 오버레이된 커널에 대응한다. 오른쪽으로 이동하면, Wacc(222)의 다음 요소인 wacc[0,1]은 박스(218b)를 통해 오버레이된 커널에 대응하고 Wacc(222)의 다음 요소인 wacc[0,2]는 박스(218c)를 통해 오버레이된 커널에 대응한다. 마찬가지로, Wacc(222)의 요소 wacc[1,0]은 박스(218d)를 통해 오버레이된 커널에 대응하고, 요소 wacc[1,1]은 박스(218e)를 통해 오버레이된 커널에 대응하고, 요소 wacc[1,2]는 박스(218f)를 통해 오버레이된 커널에 대응하고, 가중치 누적 테이블의 맨 아래로 이동하면, 요소 wacc[2,0]은 박스(218g)를 통해 오버레이된 커널에 대응하고, 요소 wacc[2,1]은 박스(218h)를 통해 오버레이된 커널에 대응하고, 요소 wacc[2,2]는 박스(218i)를 통해 오버레이된 커널에 대응한다. Wacc 값들 wacc[0,0], wacc[0,2], wacc[2,0] 및 wacc[2,2]은 각각 컨볼루션 내의 단일 포인트에 대응하며, 여기서 커널의 중심은 각각의 코너 입력 값들 중 하나에 맞춰진다는 것이 이해될 것이다. Wacc 값 wacc[0,1]은 커널의 중심이 맨 위 행의 (코너 값이 아닌) 입력 값들에 맞춰지는 컨볼루션 내의 포인트들에 대응하고, wacc[2,1]은 커널의 중심이 맨 아래 행의 (코너 값이 아닌) 입력 값들에 맞춰지는 컨볼루션 내의 포인트들에 대응하고, wacc[1,0]은 커널의 중심이 제일 왼쪽 열의 (코너 값이 아닌) 입력 값들에 맞춰지는 컨볼루션 내의 포인트들에 대응하고, wacc[1,2]는 커널의 중심이 제일 오른쪽 열의 (코너 값이 아닌) 입력 값들에 맞춰지는 컨볼루션 내의 포인트들에 대응한다는 것이 추가로 이해될 것이다. 마지막으로, Wacc 값 wacc[1,1]은 커널의 중심이 경계 값 이외의 입력 값들 중 임의의 것에 맞춰지는 컨볼루션 내의 포인트들에 대응한다는 것이 추가로 이해될 것이다. 출력 계층의 좌표들은 패딩이 없는 입력 계층의 좌표들(즉, 입력 데이터 세트)에 대응할 수 있다. 수학식 5에 따른 고정밀도 출력 값들 의 신속한 계산을 가능하게 하기 위해, 출력 데이터 세트의 커널 크기, 스트라이드 및 크기(예를 들어, 차원들)에 기초하여, (예를 들어, 위에서 설명된 바와 같이 데이터 세트의 좌표들에 대한 가중치 누적 테이블의 값의 적용을 반영하기 위해) 가중치 누적 테이블의 인덱스들에 대한 출력 계층의 출력 좌표들의 매핑이 생성될 수 있다. 가중치 누적 테이블(222)의 값들의 배열이 테이블(224)에 보여지고, 여기서 개별 테이블 요소들의 위치는 대략적으로 각각의 출력 좌표들에 대한 매핑에 대응한다. 도 2b 참조하여 위에서 설명된 바와 같은 가중치 누적 테이블을 사용하면, 패딩된 데이터 요소들을 수반하는 계산들이 실질적으로 무시될 수 있고, 이는 계산들을 수행하는 데 있어서 추가적인 효율성과 속도를 가져온다.
위의 수학식 6에 따라, 가중치 누적 테이블(222) 내의 각각의 엔트리는 회색으로 표시된 Wacc(222)의 각각의 요소의 개별 박스들에 대응하는 개별 커널 가중치들의 합으로서 계산된다. 예를 들어, wacc[0,0]은 회색으로 표시된 4개의 커널 가중치의 합이고, wacc[0,1]은 회색으로 표시된 6개의 커널 가중치의 합이고, wacc[1,1]은 회색으로 표시된 9개의 커널 가중치 전부의 합인 등이다. 도 2c는 1 내지 5 범위의 가중치들을 갖는 예시적인 3 x 3 커널(232)에 대한 가중치 누적 테이블(234)의 예를 도시하고, 가중치 누적 테이블(234)에 대한 대응하는 값들은 커널(232)의 값들에 기초하여 계산된다. 예를 들어, 값 wacc[1,1]은 대응하는 가중치 누적 테이블(234)(중심 값은 wacc[1,1]임)에 도시된 바와 같이, 커널 내의 모든 가중치의 합이고, 이는 예시적인 커널(232)에 대해 17이다.
도 2a - 도 2c를 참조하여 위에서 설명된 도면들 및 예들에 의해 나타난 바와 같이, 3 x 3 커널 크기는 9개의 요소를 갖는 가중치 누적 테이블을 야기한다. 예를 들어, 커널 크기가 5 x 5인 경우, 대응하는 가중치 누적 테이블은 25개의 요소를 포함한다. 스트라이드가 단위 스트라이드보다 긴 경우들에서, 가중치 누적 테이블 값들, 및 출력 좌표들로부터 가중치 누적 테이블의 인덱스들로의 매핑이 그에 따라 조절될 수 있다.
일부 실시예들에서, 추론 모델은 예를 들어 복수의 컨볼루션 레벨과 같은 복수의 내부 레벨을 가질 수 있고, 여기서 각각의 레벨에 대해 상이한 커널이 사용된다. 그러한 경우들에서, 각각의 레벨은 별개의 레벨별 가중치 누적 테이블을 가질 수 있으며, (출력 값들을 계산하기 위해 사용될) 집계된 가중치 누적 테이블은 레벨별 가중치 누적 테이블들 각각의 개별 요소들을 추가함으로써 구성될 수 있다. 예를 들어, 집계된 가중치 누적 테이블의 요소들은 다음과 같이 계산될 수 있다:
여기서, 은 레벨 n에 대한 레벨별 가중치 누적 테이블, L은 내부 레벨들의 총 개수, (i,j)는 레벨별 가중치 누적 테이블들 각각에 대한 인덱스들이다. 각각의 레벨별 가중치 누적 테이블 은 예를 들어 위의 수학식 6A에 제시된 바와 같이 계산될 수 있다.
더 일반적으로, 입력이 복수의 채널을 갖는 텐서인 경우, 대응하는 가중치 누적 테이블은 추가 차원을 갖고, 그에 의해 가중치 누적 테이블은 추가 차원에서 확장되는 티어들 내의 엔트리들의 세트를 갖게 되고, 여기서 하나의 티어는 각각의 채널에 대응한다. 예를 들어, 입력 텐서가 적색 채널, 녹색 채널 및 청색 채널과 같은 3개의 채널을 갖는 색상 값들을 갖는 이미지이고, 커널 크기가 5 x 5(단위 스트라이드)인 경우, 대응하는 가중치 누적 테이블은 5 x 5 x 3 행렬일 것이고, 그에 의해 가중치 누적 테이블은 추가 행렬 차원(여기서는 제3 차원)에서 5 x 5 엔트리들의 3개의 세트(또는 티어)를 가지며, 여기서 5 x 5 엔트리들의 하나의 세트(또는 티어)가 각각의 채널에 대응한다.
입력이 멀티-채널 텐서인 경우, 일부 실시예들에서, 추론 엔진의 추가 최적화는 각각의 채널에 대한 입력 값들의 상대적인 동적 범위를 채널별로 고려함으로써 수행될 수 있다. 도 3a에는 2개의 입력 채널 C1(라벨(312) 및 C2(라벨(316))를 갖는 예시적인 텐서에 대해, 각각의 입력 채널에 대한 값들의 범위를 도시하는 그래프가 나타나 있다. 예에서 나타난 바와 같이, 입력 채널 C1에 대한 입력 값들은 -8.0(레이블(314)) 내지 +1.0(레이블(315)) 범위이고, 입력 채널 C2에 대한 입력 값들은 -1.0(레이블(318)) 내지 +1.0(레이블(319)) 범위이다. 도 1, 도 2a - 도 2c를 참조하여 위에서 설명된 입력 양자화가 사용되는 경우, 두 채널에는 동일한 스케일 팩터 및 동일한 바이어스가 적용될 것이고, 그에 의해, 채널들 중 하나에 대한 양자화가 다른 채널에 비해 압축되거나 불균형해질 수 있다. 그러나, 각각의 채널의 동적 범위는 입력 채널별 양자화를 수행함으로써 고려될 수 있고, 여기서 양자화는 각각의 입력 채널에 대해 개별적으로 계산되어 정밀도의 증가를 야기한다.
도 4는 도면들 및 연관된 설명을 포함하지만 이에 제한되지 않는 본 명세서에 설명된 컴포넌트들 및 특징들을 참조하여, 하나 이상의 실시예에 따른 입력 채널별 양자화와 결합된 비대칭 양자화를 사용하여 추론 신경망 모델을 최적화하기 위한 예시적인 시스템(410)의 블록도를 도시한다. 시스템(410)은 훈련된 신경망 모델(112)(위에서 설명됨), 비대칭 양자화 모듈(114)(위에서 설명됨), 입력 채널별 양자화 모듈(415), 및 추론 신경망 엔진(416)을 포함할 수 있다. 입력 채널별 양자화 모듈(415)은 비대칭 양자화 모듈(114)과 조합하여, 훈련된 신경망 모델(112)에 기초하여 추론 신경망 엔진(416)에서 구현된 추론 모델과 같은 추론 신경망 모델을 최적화하기 위한 하나 이상의 프로세스를 수행할 수 있다. 추론 신경망 엔진(416)은 멀티-채널 입력 텐서들 또는 다른 멀티-채널 입력 데이터(432)를 수신할 수 있고, (훈련된 모델에 기초한) 추론 모델에 따라 계산들 또는 다른 동작들을 수행할 수 있고, 출력 텐서들 또는 다른 출력 데이터(436)를 제공할 수 있다. 추론 신경망 엔진(416)은 입력 계층 양자화(422), 모델 가중치 양자화(424) 및 출력 계층 복원(426)을 포함할 수 있다. 입력 텐서들 또는 다른 입력 데이터(432)는 비교적 고정밀도의 값들(예를 들어, 부동 소수점 값들 또는 고정밀도 정수 값들)로서 수신될 수 있다. 마찬가지로, 출력 텐서들 또는 다른 출력 데이터(436)는 비교적 고정밀도의 값들(예를 들어, 부동 소수점 값들 또는 고정밀도 정수 값들)일 수 있다. 부동 소수점 값들은 예를 들어 64비트 부동 소수점 값들(fp64) 또는 32비트 부동 소수점 값들(fp32)일 수 있고; 고정밀도 정수 값들은 예를 들어 64비트 또는 32비트 정수 값들(int64 또는 int32)일 수 있다.
비교적 고정밀도의 값들로서 수신된 입력 텐서들 또는 다른 입력 데이터(432)는 입력 계층 양자화(422)에 의해 예를 들어 8비트 정수 값들(int8)과 같은 저정밀도 정수 값들로서 채널별로 양자화될 수 있다. 추론 모델은 행렬 곱셈 연산들 및/또는 컨볼루션 연산들과 같은 계산들 또는 다른 동작들을 수행할 수 있고, 여기서 적용가능한 커널(예컨대, GEMM 또는 컨볼루션 커널)에 대한 가중치들은 모델 가중치 양자화(424)를 통해 예를 들어 8비트 정수 값들(int8)과 같은 저정밀도 가중치들로 양자화된다. 출력 계층 복원(426)은 더 낮은 정밀도의 정수 출력 값들을 고정밀도(예를 들어, 부동 소수점) 출력 값들(예를 들어, 부동 소수점)로 다시 변환하는 것을 다룬다.
비대칭 양자화 모듈(114)은 입력 채널별 양자화 모듈(415)과 결합하여, 입력 계층 양자화(422), 모델 가중치 양자화(424), 및 출력 계층 복원(426)이 구현 또는 수행되는 방법을 제어한다. 입력 계층 양자화(422)는 비대칭 양자화를 사용하여 채널별로 입력 값들을 양자화함으로써 구현될 수 있고, 그에 의해 각각의 고정밀도 입력 값(예를 들어, fp32)이 이하의 공식에 따라 부호 없는 정수 값(예를 들어, uint8)으로서 양자화된다:
여기서, 은 입력 채널 c에 대한 양자화된 정수 입력 값, 는 입력 채널 c에 대한 입력 스케일 팩터, 는 입력 채널 c에 대한 부동 소수점 입력 값, 는 입력 채널 c에 대한 바이어스 또는 오프셋이다. 가장 가까운 정수 값으로 라운드 업 또는 다운하기 위해 라운딩 함수가 적용될 수 있다. 각각의 입력 채널 c에 대해, 양자화된 uint8 값들이 0 - 255 범위에 맞도록, 입력 스케일 팩터 및 바이어스 는 입력에 대한 입력 값들 의 동적 범위에 기초하여 설정될 수 있다:
여기서, 및 는 각각 입력 채널 c에 대한 최소 및 최대 입력(부동 소수점) 값들이다. 일부 실시예들에서, 채널별 최소 및 최대 입력 값 및 는 훈련된 신경망 모델(112)을 훈련시키기 위해 사용되는 데이터일 수 있는 훈련 입력 데이터(420)에 기초하여 결정될 수 있다.
예로서, 도 3b는 도 3a에서 반영된 입력 값들에 대해 위의 수학식들 7 및 8의 공식들을 이용하여 채널별로 계산된 양자화된 입력 값들을 나타낸다. 채널 1(C1)에 대해, 도 3a에 도시된 바와 같이, 최소값(314)은 (-8.0)이고 최대값(315)은 +1.0이다. 채널 C1에 대해, 스케일 팩터, 바이어스 및 양자화된 값들이 도 3b에 도시된다(차트(322)). Xfp 열(레이블(324))은 부동 소수점 입력 값들을 보여주고, Xuint8 열(레이블(328))은 0 내지 255 범위의 대응하는 양자화된 값들을 보여준다. 차트(322)에 나타난 바와 같이, 채널 C1에 대해, 입력 값 0.0은 227로서 양자화된다. 채널 2(C2)에 대해, 도 3a에 도시된 바와 같이, 최소값(318)은 (-1.0)이고 최대값(319)은 +1.0이다. 채널 C2에 대해, 스케일 팩터, 바이어스 및 양자화된 값들이 도 3b에 도시된다(차트(332)). Xfp 열(레이블(334))은 부동 소수점 입력 값들을 보여주고, Xuint8 열(레이블(338))은 0 내지 255 범위의 대응하는 양자화된 값들을 보여준다. 차트(332)에 나타난 바와 같이, 채널 C2에 대해, 입력 값 0.0은 128로서 양자화된다.
도 4로 되돌아가면, 모델 가중치 양자화(424)는 이하의 공식에 따라, 각각의 고정밀도 가중치(예를 들어, fp32)가 부호 있는 정수 값(예를 들어, int8)으로 양자화되도록, 대칭 양자화를 사용하여 채널별로 부동 소수점 가중치들을 양자화함으로써 구현될 수 있다:
여기서, 는 입력 채널 c에 대한 양자화된 정수 가중치, 는 입력 채널 c에 대한 가중치 스케일 팩터, 는 입력 채널 c에 대한 부동 소수점 가중치이다. 가장 가까운 정수 값으로 라운드 업 또는 다운하기 위해 라운딩 함수가 적용될 수 있다. 채널별 가중치 스케일 팩터 는 다음에 의해 결정될 수 있다:
여기서,
따라서, 채널별 가중치 스케일 팩터 는 곱셈의 결과가 입력 채널을 따라 누적될 수 있고 결과의 스케일이 일 것을 보장하는 방식으로 계산될 수 있다. 수학식 11은 가 텐서-방식 스케일(tensor-wise scale) 보다 작지 않으므로 더 최적이라는 것을 보여준다. 모델 가중치 양자화(424)는 추론 모델이 확립될 때 한 번 수행될 수 있다.
도 1을 참조하여 위에서 설명된 바와 같이, 출력 값들은 추론 모델에 따라 계산될 수 있다. 예를 들어, 각각의 입력 채널에 대해, 추론 모델은 이하의 공식에 따라 컨볼루션 커널 W를 통해 컨볼루션 연산들을 수행할 수 있다:
여기서, (예를 들어, 32비트 정수)는 정수 출력 값이고 conv(x, W)는 채널 c에 대한 입력 값들 x 및 커널 가중치들 W를 수반하는 컨볼루션 연산을 나타낸다. 추론 모델에 대한 모든 컨볼루션 및/또는 다른 계산 연산들이 완료되면, 출력 값들은 고정밀도(예를 들어, 부동 소수점) 값들로 복원하기 위해 변환(즉, 역-양자화)될 수 있다. 비대칭 양자화 모듈(114) 및 입력 채널별 양자화 모듈(415)을 통해, 출력 계층 복원(426)은 이하의 공식에 따라 정수 출력 값들을 고정밀도 출력 값들(예를 들어, fp32)로 변환함으로써 복원 함수로서 구현될 수 있다:
여기서, 는 고정밀도 부동 소수점 출력 값, 는 추론 모델로부터 출력되는 정수 값, 및 는 각각 입력 및 가중치 스케일링 팩터, 는 위에서 설명된 바와 같이 채널당 하나의 티어를 갖는 다차원 가중치 누적 테이블이다.
일부 실시예들에서, 추론 모델의 추가적인 최적화는 혼합 정밀도 자동 튜닝을 통해 달성될 수 있다. 도 5는 도면들 및 연관된 설명을 포함하지만 이에 제한되지 않는 본 명세서에 설명된 컴포넌트들 및 특징들을 참조하여, 하나 이상의 실시예에 따른 추론 신경망 모델을 튜닝하기 위한 프로세스(510)를 도시하는 흐름도를 제공한다. 혼합 정밀도 자동 튜닝은 추론 엔진(116)(도 1) 또는 추론 엔진(416)(도 4)에서 구현되는 추론 모델에 적용될 수 있다. 튜닝 프로세스는 모델 정확도가 양자화에 사용되는 정밀도를 변경함으로써 개선될 수 있는지를 결정하기 위해 모델의 일련의 테스트 실행을 완료하는 것을 포함할 수 있다. 프로세스는 추론 모델의 현재 상태로 시작한다(블록(512)). 블록(514)에서, 추론 모델이 실행되고, 결과들의 정확도에 대한 결정이 얻어진다. 블록(516)에서, 결과들은 정확도 기준과 비교된다. 정확도 기준은 예를 들어 민 에버리지 프리시젼(mean average precision)(mAP)을 포함할 수 있다. 블록(516)의 정확도 테스트를 위해, 예를 들어 아래에서 설명되는 최적 평균 제곱 오차(OMSE) 프로세스와 같은 다른 정확도 기준이 사용될 수 있다. 결과들의 정확도가 정확도 기준 평가를 통과하면, 프로세스는 블록(530)(이하에 설명됨)에서 계속된다. 결과들의 정확도가 블록(516)의 정확도 기준 평가를 통과하지 못하면, 프로세스는 블록(518)으로 진행한다.
블록(518)에서, 입력들 및/또는 가중치들에 대한 다른 정밀도가 선택에 이용가능한지가 결정된다. 예를 들어, int16 양자화는 int8 양자화에 대한 대안으로서 선택될 수 있다. 또 다른 예를 들면, 정밀도는 대안적인 선택으로서 부동 소수점(예를 들어, fp32 또는 fp16)으로 되돌려질 수 있다. 블록(518)에서 선택을 위해 다른 정밀도가 이용가능한 경우, 프로세스는 블록(520)으로 진행하고, 여기서 추론 모델에 대한 정밀도는 대안적인 선택으로 조절되고, 프로세스는 블록(514)으로 되돌아가며, 여기서 조절된 정밀도가 적용된 모델이 다시 실행된다. 블록(518)에서 다른 정밀도가 선택을 위해 이용가능하지 않다면(예를 들어, 모든 가능한 대안 정밀도가 시도됨), 프로세스는 블록(522)으로 진행한다. 일부 실시예들에서, 이용가능한 정밀도들의 결정(블록(518)) 및 정밀도들의 조절(블록(520))은 추론 모델에 대해 알고리즘별로 수행될 수 있고; 그러한 경우들에서, 특정 알고리즘에 대해 모든 이용가능한 정밀도 조절들이 이루어지고 나면, 프로세스는 블록(522)으로 진행한다.
블록(522)에서, (예를 들어, 추론 모델의 특정 계층에 대한) 모든 알고리즘이 적용되었는지가 결정된다. 그렇다면, 프로세스는 블록(524)으로 진행하고, 여기서 다른 계층이 선택되고 그 계층에 대한 정밀도가 조절되며, 프로세스는 조절된 정밀도가 적용된 모델이 다시 실행되는 블록(514)으로 되돌아간다. 일부 실시예들에서, 튜닝 프로세스는 마지막 계층에서 시작될 수 있고, 해당 계층에 대한 모든 알고리즘이 적용되고 나면, 프로세스는 이전 계층으로 "폴백(fall back)"할 수 있고, 정밀도는 예를 들어 fp32로 조절될 수 있다. 블록(522)에서 모든 알고리즘이 적용되지 않은 것으로 결정되고 나면, 프로세스는 블록(526)으로 진행한다.
블록(526)에서, 텐서 데이터가 분석되고 새로운 알고리즘이 적용될 수 있다. 적용될 새로운 알고리즘은 커널 구현에 기초할 수 있거나 신경망 모델에 대한 대안적인 알고리즘일 수 있다. 다음으로, 프로세스는 새로운 알고리즘이 적용된 모델이 다시 실행되는 블록(514)으로 되돌아간다.
블록(530)에서, 프로세스는 정확성 기준 평가가 통과된 블록(516)으로부터 계속되었다. 이루어진 임의의 조절들(예를 들어, 블록(520)에서의 정밀도에 대한 조절들)은 추론 엔진에서 구현될 수 있는 업데이트된 추론 모델에 통합될 수 있고, 튜닝 프로세스(510)가 종료된다.
도 6a - 도 6b는 혼합 정밀도 자동 튜닝을 통합하는 추론 신경망 모델 최적화를 위한 대안적인 시스템들을 도시한다. 도 6a는 도면들 및 연관된 설명을 포함하지만 이에 제한되지 않는 본 명세서에 설명된 컴포넌트들 및 특징들을 참조하여, 하나 이상의 실시예에 따른 비대칭 양자화 및 자동 튜닝을 사용하여 추론 신경망 모델을 최적화하기 위한 예시적인 시스템(610)의 블록도를 도시한다. 도 6a는 도 1에 도시되고 그를 참조하여 위에서 설명된 바와 같은 최적화 시스템을 포함하고, 자동 튜닝 모듈(616)을 포함할 수 있다. 자동 튜닝 모듈(616)은 도 5를 참조하여 위에서 설명된 자동 튜닝 프로세스를 수행할 수 있다. 자동 튜닝 모듈(616)은 추론 엔진(116)으로부터 데이터를 수신할 수 있고, 비대칭 양자화 모듈(114)과 결합하여, 테스트들을 실행할 때, 및 테스트들이 완료되면 모델 업데이트들을 적용할 때 대안적인 정밀도 등을 적용하도록 동작할 수 있다.
도 6b는 도면들 및 연관된 설명을 포함하지만 이에 제한되지 않는 본 명세서에 설명된 컴포넌트들 및 특징들을 참조하여, 하나 이상의 실시예에 따른 입력 채널별 양자화 및 자동 튜닝과 결합된 비대칭 양자화를 사용하여 추론 신경망 모델을 최적화하기 위한 예시적인 시스템(620)의 블록도를 도시한다. 도 6b는 도 4에 도시되고 그를 참조하여 위에서 설명된 바와 같은 최적화 시스템을 포함하고, 자동 튜닝 모듈(626)을 포함할 수 있다. 자동 튜닝 모듈(626)은 도 5를 참조하여 위에서 설명된 자동 튜닝 프로세스를 수행할 수 있다. 자동 튜닝 모듈(626)은 추론 엔진(416)으로부터 데이터를 수신할 수 있고, 비대칭 양자화 모듈(414) 및 입력 채널별 양자화 모듈(415)과 결합하여, 테스트들을 실행할 때, 및 테스트들이 완료된 후 모델 업데이트들을 적용할 때 대안적인 정밀도 등을 적용하도록 동작할 수 있다.
양자화 메트릭은 예를 들어 정확도 평가를 통해 추론 모델 또는 추론 엔진의 성능을 결정하기 위해 사용될 수 있다. 예를 들어, 양자화 메트릭은 위에서 설명된 혼합 정밀도 자동 튜닝 프로세스의 일부로서 통합될 수 있다. 설계(예를 들어, 훈련 후) 위상에서, 검증 데이터세트는 추론 신경망 모델의 평가 또는 테스트의 일부로서 사용될 수 있다. 그러나, 생산 또는 배치에서, 검증 데이터세트는 추론 모델의 평가 또는 테스트의 일부로서 이용가능하지 않을 수 있다. 따라서, 다른 메트릭인 최적 평균 제곱 오차(OMSE)가 생산 또는 배치에서 추론 모델을 평가하거나 테스트하기 위해 사용될 수 있으며 설계 프로세스 동안에도 사용될 수 있다. OMSE는 위에서 설명된 바와 같이 정수 양자화(예를 들어, 부호 있는/부호 없는 int8)와 부동 소수점 표현(예를 들어, fp32) 사이의 차이들을 나타내기 위해 계산될 수 있다.
데이터 분포는 DNN들과 같은 신경망들에서의 전형적인 정규 분포인 라플라스 분포를 따른다고 가정되거나 이해될 수 있다. x를 확률 밀도 함수 f(x)를 갖는 fp32 정밀도 확률 변수라고 하기로 한다. 일반성을 잃지 않고서, 텐서의 평균 값이 제로이도록 프리포제싱(prepossessing) 단계가 수행되었다고 가정되거나 이해될 수 있는데, 예를 들면 다음과 같다:
int8 양자화에 대해, 텐서 값들은 0 내지 255의 256개의 이산 값으로 균일하게 양자화될 수 있다. fp32 텐서에 대한 최적화된 최대 α는 양자화 알고리즘에 의해 계산될 수 있다. 임의의 에 대해, 클리핑 함수 는 다음과 같이 정의될 수 있다:
두 개의 인접한 양자화된 값 사이의 양자화 스텝 △는 △=2α/256으로서 설정될 수 있고, x와 그것의 양자화된 버전 Q(x) 사이의 OMSE는 이하의 공식에 따라 결정될 수 있다:
OMSE에 대한 이러한 공식은 민 에버리지 프리시젼(mAP)에 대해 평가되었으며, 결과들의 아래의 표 1에 정리되어 있다. OMSE 평가를 위해, DNN 모델인 (성능 벤치마크인 MLPerf 추론 트랙으로부터의) SSD-MobileNetV1이 사용되었다. 위에서 설명된 바와 같이 양자화가 적용되었고, 위에서 설명된 바와 같은 튜닝 프로세스가 사용되어, 일련의 샘플 테스트 실행들을 제공했다. 결과들은 아래의 표 1에 요약되어 있다:
표 1: 양자화 평가 메트릭으로서의 OMSE 대 mAP
표 1에는 아래의 표제들과 함께 숫자들의 세트가 나와있다.
· # - 샘플 테스트 실행 번호를 나타낸다(1 내지 30의 범위).
· mAP - 검증 데이터세트를 사용한 mAP 기준에 따른 평가를 나타낸다.
· omse - 보정 이미지들을 입력 데이터 세트로서 사용한, 위에서 설명된 OMSE 프로세스에 따른 평가를 나타낸다.
더 높은 mAP %(점수)가 더 나은 성능을 나타내는 반면, 더 낮은 OMSE 값(점수)이 더 나은 성능을 나타낸다. 예를 들어, 테스트 실행 번호 1은 mAP = 70.88% 및 OMSE = 0.098의 평가 결과들을 가졌고; 테스트 실행 번호 2는 mAP = 71.65% 및 OMSE = 0.094의 평가 결과들을 가졌고; 테스트 실행 번호 3은 mAP = 71.09% 및 OMSE = 0.099의 평가 결과들을 가졌다. OMSE에 대한 평가 결과들은 mAP에 대한 결과들을 대략적으로 추적했고, 그에 의해, 더 나은 OMSE 성능을 갖는 테스트 실행들은 또한 (전부는 아니지만) 많은 경우들에서 더 나은 mAP 성능을 가졌다. 예를 들어, 테스트 실행 번호 2는 mAP 및 OMSE 메트릭 둘 다에서 최고의 성능을 가졌다. 따라서, 결과들은 위에서 설명된 OMSE 평가 프로세스가 양자화된 추론 신경망 모델의 성능을 평가하는 효과적인 방법임을 보여준다.
도 7은 도면들 및 연관된 설명을 포함하지만 이에 제한되지 않는 본 명세서에 설명된 컴포넌트들 및 특징들을 참조하여, 하나 이상의 실시예에 따른 추론 신경망 모델을 최적화하기 위한 방법(710)을 도시하는 흐름도이다.
블록(712)에서, 양자화된 신경망이 생성될 수 있고, 여기서 신경망의 모델 가중치들은 부호 있는 정수 값들로서 양자화될 수 있고, 신경망의 입력 계층은 입력 값들을 부호 없는 정수 값들로서 양자화하도록 구성될 수 있다.
블록(714)에서, 가중치 누적 테이블은 양자화된 모델 가중치들, 및 신경망에 대한 커널 크기에 기초하여 생성될 수 있다.
블록(716)에서, 가중치 누적 테이블 및 커널 크기에 기초하여 출력 복원 함수가 생성될 수 있다.
일부 실시예들에서, 블록(722)에서, 출력 계층에 대한 출력 좌표들과 가중치 누적 테이블에 대한 인덱스들 사이의 매핑이 생성될 수 있다. 매핑은 도 2a - 도 2c를 참조하여 위에서 설명된 바와 같이 결정될 수 있다.
일부 실시예들에서, 방법(710)은 도 3a - 도 3b 및 도 4를 참조하여 위에서 설명된 입력 채널별 양자화의 양태들을 추가적으로 또는 대안적으로 구현할 수 있다. 블록(732)에서, 입력 값들은 채널별로 양자화될 수 있고, 이는 신경망의 입력 계층을 구성하는 것을 통해 구현될 수 있다. 블록(734)에서, 신경망의 모델 가중치들은 채널별로 양자화될 수 있다.
일부 실시예들에서, 블록(742)에서, 시스템은 추가적으로 또는 대안적으로 자동 튜닝 절차를 수행할 수 있다. 자동 튜닝 절차는 도 5 및 도 6a - 도 6b를 참조하여 위에서 설명된 혼합 정밀도 자동 튜닝의 일부 또는 모든 양태를 포함할 수 있다.
도 1 - 도 7(모두 포함)을 참조하여 위에서 설명된 시스템들 및 방법들은 소프트웨어 명령어들을 실행하는 (예를 들어, 프로세서와 같은) 하드웨어를 포함하는 임의의 수의 방식으로 구현될 수 있다. 일례로서, 하나 이상의 실시예에서, 도 1 - 도 7(모두 포함)을 참조하여 위에서 설명된 시스템들 및 방법들은 소프트웨어 명령어들을 실행하는 하나 이상의 Intel® Xeon® 확장가능 프로세서를 통해 구현될 수 있다. Intel® Xeon® 확장가능 프로세서들은 Intel® 딥 러닝(Deep Learning)(DL) 부스트(Boost)(정수 연산들을 위한 확장 명령어 세트를 포함함)를 갖는 하드웨어 가속 지원을 포함할 수 있다.
도 8은 도면들 및 연관된 설명을 포함하지만 이에 제한되지 않는 본 명세서에 설명된 컴포넌트들 및 특징들을 참조하여, 하나 이상의 실시예에 따른 추론 신경망 모델을 최적화하기 위한 예시적인 컴퓨팅 시스템(10)의 블록도를 도시한다. 시스템(10)은 일반적으로 컴퓨팅 및/또는 통신 기능(예를 들어, 서버, 클라우드 인프라구조 컨트롤러, 데이터베이스 컨트롤러, 노트북 컴퓨터, 데스크톱 컴퓨터, 휴대용 개인 단말/PDA, 태블릿 컴퓨터, 컨버터블 태블릿, 스마트 폰 등), 이미징 기능(예를 들어, 카메라, 캠코더), 미디어 재생 기능(예를 들어, 스마트 텔레비전/TV), 웨어러블 기능(예를 들어, 시계, 아이웨어, 헤드웨어, 풋웨어, 쥬얼리), 차량 기능(예를 들어, 자동차, 트럭, 오토바이), 로봇 기능(예를 들어, 자율 로봇) 등, 또는 이들의 임의의 조합을 갖는 전자 디바이스/플랫폼의 일부일 수 있다. 도시된 예에서, 시스템(10)은 시스템 메모리(20)에 결합될 수 있는 통합 메모리 컨트롤러(IMC)(14)를 갖는 호스트 프로세서(12)(예를 들어, 중앙 프로세싱 유닛/CPU)를 포함할 수 있다. 호스트 프로세서(12)는 예를 들어, 마이크로컨트롤러, 마이크로프로세서, RISC 프로세서, ASIC 등과 같은 임의의 유형의 프로세싱 디바이스를 연관된 프로세싱 모듈들 또는 회로와 함께 포함할 수 있다. 시스템 메모리(20)는 RAM, ROM, PROM, EEPROM, 펌웨어, 플래시 메모리 등과 같은 임의의 비-일시적 기계 또는 컴퓨터 판독가능한 저장 매체, 예를 들어 PLA, FPGA, CPLD, 예를 들어 ASIC, CMOS 또는 TTL 기술과 같은 회로 기술을 사용하는 고정 기능 하드웨어 로직과 같은 구성가능한 로직, 또는 명령어들(28)을 저장하기에 적합한 이들의 임의의 조합을 포함할 수 있다.
시스템(10)은 또한 입출력(I/O) 서브시스템(16)을 포함할 수 있다. I/O 서브시스템(16)은 예를 들어 하나 이상의 입출력(I/O) 디바이스(18), 네트워크 컨트롤러(24)(예를 들어, 유선 및/또는 무선 NIC) 및 저장소(22)와 통신할 수 있다. 저장소(22)는 임의의 적절한 비-일시적 기계 또는 컴퓨터 판독가능한 메모리 유형(예를 들어, 플래시 메모리, DRAM, SRAM(정적 랜덤 액세스 메모리), 솔리드 스테이트 드라이브(SSD), 하드 디스크 드라이브(HDD), 광 디스크 등)으로 이루어질 수 있다. 저장소(22)는 대용량 저장소를 포함할 수 있다. 일부 실시예들에서, 호스트 프로세서(12) 및/또는 I/O 서브시스템(16)은 네트워크 컨트롤러(24)를 통해 저장소(22)(그것의 전부 또는 일부)와 통신할 수 있다. 일부 실시예들에서, 시스템(10)은 또한 그래픽 프로세서(26)를 포함할 수 있다.
호스트 프로세서(12), I/O 서브시스템(16) 및/또는 그래픽 프로세서(26)는 도 1 및 도 2a - 도 2c를 참조하여 본 명세서에 설명된 비대칭 양자화를 위한 프로세스들, 도 3a - 도 3b 및 도 4를 참조하여 본 명세서에 설명된 입력 채널별 양자화를 위한 프로세스들, 및 도 5 및 도 6a - 도 6b를 참조하여 본 명세서에 설명된 혼합 정밀도 자동 튜닝을 위한 프로세스들을 포함하여, 위에서 설명된 프로세스들의 하나 이상의 양태를 수행하기 위해, 시스템 메모리(20) 및/또는 저장소(22)로부터 검색된 프로그램 명령어들(28)을 실행할 수 있다. 호스트 프로세서(12) 및/또는 I/O 서브시스템(16)은 도 7을 참조하여 본 명세서에 설명된 추론 신경망 모델을 최적화하기 위한 프로세스들의 하나 이상의 양태를 수행하기 위해, 시스템 메모리(20) 및/또는 저장소(22)로부터 검색된 프로그램 명령어들(28)을 실행할 수 있다.
위에서 설명된 프로세스들을 수행하기 위한 컴퓨터 프로그램 코드는 JAVA, JAVASCRIPT, PYTHON, SMALLTALK, C++ 또는 그와 유사한 것과 같은 객체 지향 프로그래밍 언어, 및/또는 "C" 프로그래밍 언어 또는 유사한 프로그래밍 언어들과 같은 종래의 절차적 프로그래밍 언어들을 포함하는, 하나 이상의 프로그래밍 언어의 임의의 조합으로 작성될 수 있고, 프로그램 명령어들(28)로서 구현될 수 있다. 추가로, 프로그램 명령어들(28)은 어셈블러 명령어들, 명령어 세트 아키텍처(ISA) 명령어들, 머신 명령어들, 머신 종속 명령어들, 마이크로코드, 상태 설정 데이터, 집적 회로에 대한 구성 데이터, 전자 회로 및/또는 하드웨어(예를 들어, 호스트 프로세서, 중앙 프로세싱 유닛/CPU, 마이크로컨트롤러, 마이크로프로세서 등)에 고유한 다른 구조적 컴포넌트들을 개인화하는 상태 정보를 포함할 수 있다.
호스트 프로세서(12) 및 I/O 서브시스템(16)은 실선으로 둘러싸여 도시된 시스템 온 칩(SoC)(11)으로서 반도체 다이 상에서 함께 구현될 수 있다. 따라서, SoC(11)는 추론 모델을 최적화하기 위한 컴퓨팅 장치로서 동작할 수 있다. 일부 실시예들에서, SoC(11)는 또한 시스템 메모리(20), 네트워크 컨트롤러(24), 및/또는 그래픽 프로세서(26) 중 하나 이상을 포함할 수 있다(점선으로 둘러싸여 도시됨).
I/O 디바이스들(18)은 터치 스크린, 키보드, 마우스, 커서 컨트롤 디바이스, 터치 스크린, 마이크로폰, 디지털 카메라, 비디오 레코더, 캠코더, 생체 인식 스캐너 및/또는 센서와 같은 입력 디바이스들 중 하나 이상을 포함할 수 있고; 입력 디바이스들은 정보를 입력하고 시스템(10) 및/또는 다른 디바이스들과 상호작용하기 위해 사용될 수 있다. I/O 디바이스들(18)은 또한 디스플레이(예를 들어, 터치 스크린, 액정 디스플레이/LCD, 발광 다이오드/LED 디스플레이, 플라즈마 패널 등), 스피커 및/또는 다른 시각 또는 오디오 출력 디바이스와 같은 출력 디바이스들 중 하나 이상을 포함할 수 있다. 입력 및/또는 출력 디바이스들은 예를 들어 사용자 인터페이스를 제공하기 위해 사용될 수 있다.
도 9는 도면들 및 연관된 설명을 포함하지만 이에 제한되지 않는 본 명세서에 설명된 컴포넌트들 및 특징들을 참조하여, 하나 이상의 실시예에 따른 추론 신경망 모델을 최적화하기 위한 예시적인 반도체 장치(30)를 도시하는 블록도를 보여준다. 반도체 장치(30)는 예를 들어 칩, 다이, 또는 다른 반도체 패키지로서 구현될 수 있다. 반도체 장치(30)는 예를 들어, 실리콘, 사파이어, 갈륨 비소 등으로 이루어진 하나 이상의 기판(32)을 포함할 수 있다. 반도체 장치(30)는 또한 예를 들어 기판(들)(32)에 결합된 트랜지스터 어레이(들) 및 다른 집적 회로(IC) 컴포넌트들로 이루어진 로직(34)을 포함할 수 있다. 로직(34)은 도 8을 참조하여 위에서 설명된 시스템 온 칩(SoC)(11)을 구현할 수 있다. 로직(34)은 도 1 및 도 2a - 도 2c를 참조하여 본 명세서에 설명된 비대칭 양자화를 위한 프로세스들, 도 3a - 도 3b 및 도 4를 참조하여 본 명세서에 설명된 입력 채널별 양자화를 위한 프로세스들, 및 도 5 및 도 6a - 도 6b를 참조하여 본 명세서에 설명된 혼합 정밀도 자동 튜닝을 위한 프로세스들을 포함하여, 위에서 설명된 프로세스들의 하나 이상의 양태를 구현할 수 있다. 로직(34)은 도 7을 참조하여 본 명세서에 설명된 추론 신경망 모델을 최적화하기 위한 프로세스들의 하나 이상의 양태를 구현할 수 있다.
반도체 장치(30)는 임의의 적절한 반도체 제조 프로세스들 또는 기술들을 사용하여 구성될 수 있다. 로직(34)은 구성가능한 로직 또는 고정 기능 하드웨어 로직으로 적어도 부분적으로 구현될 수 있다. 예를 들어, 로직(34)은 기판(들)(32) 내에 위치된(예를 들어, 내장된) 트랜지스터 채널 영역들을 포함할 수 있다. 따라서, 로직(34)과 기판(들)(32) 사이의 인터페이스는 계단 접합(abrupt junction)이 아닐 수 있다. 로직(34)은 또한 기판(들)(34)의 초기 웨이퍼 상에서 성장되는 에피택셜 층을 포함하는 것으로 간주될 수 있다.
도 10은 도면들 및 연관된 설명을 포함하지만 이에 제한되지 않는 본 명세서에 설명된 컴포넌트들 및 특징들을 참조하여, 하나 이상의 실시예에 따른 예시적인 프로세서 코어(40)를 도시하는 블록도이다. 프로세서 코어(40)는 마이크로프로세서, 임베디드 프로세서, 디지털 신호 프로세서(DSP), 네트워크 프로세서, 또는 코드를 실행하기 위한 다른 디바이스와 같은 임의의 유형의 프로세서를 위한 코어일 수 있다. 단 하나의 프로세서 코어(40)가 도 10에 도시되어 있지만, 프로세싱 요소는 대안적으로 도 10에 도시된 프로세서 코어(40)를 하나보다 많이 포함할 수 있다. 프로세서 코어(40)는 단일 스레드 코어일 수 있고, 또는 적어도 하나의 실시예에 대해, 프로세서 코어(40)는 코어 당 하나보다 많은 하드웨어 스레드 컨텍스트(또는 "논리적 프로세서")를 포함할 수 있다는 점에서 멀티스레딩될 수 있다.
도 10은 또한 프로세서 코어(40)에 결합된 메모리(41)를 도시한다. 메모리(41)는 본 기술분야의 통상의 기술자들에게 공지되거나 다르게 이용가능한 여러 다양한 메모리(메모리 계층구조의 다양한 계층들을 포함함) 중 임의의 것일 수 있다. 메모리(41)는 프로세서 코어(40)에 의해 실행될 하나 이상의 코드(42) 명령어(들)를 포함할 수 있다. 코드(42)는 도 1 및 도 2a - 도 2c를 참조하여 본 명세서에 설명된 비대칭 양자화를 위한 프로세스들, 도 3a - 도 3b 및 도 4를 참조하여 본 명세서에 설명된 입력 채널별 양자화를 위한 프로세스들, 및 도 5 및 도 6a - 도 6b를 참조하여 본 명세서에 설명된 혼합 정밀도 자동 튜닝을 위한 프로세스들을 포함하여, 위에서 설명된 프로세스들의 하나 이상의 양태를 구현할 수 있다. 코드(42)는 도 7을 참조하여 본 명세서에 설명된 추론 신경망 모델을 최적화하기 위한 프로세스들의 하나 이상의 양태를 구현할 수 있다. 프로세서 코어(40)는 코드(42)에 의해 표시된 명령어들의 프로그램 시퀀스를 따른다. 각각의 명령어는 프론트엔드 부분(43)에 입력되고, 하나 이상의 디코더(44)에 의해 프로세싱될 수 있다. 디코더(44)는 미리 정의된 포맷의 고정 폭 마이크로 연산과 같은 마이크로 연산을 그것의 출력으로서 생성할 수 있거나, 원본 코드 명령어를 반영하는 다른 명령어들, 마이크로 명령어들 또는 컨트롤 신호들을 생성할 수 있다. 도시된 프론트엔드 부분(43)은 또한 레지스터 재명명 로직(46) 및 스케줄링 로직(48)을 포함하며, 이는 일반적으로 리소스들을 할당하고 실행을 위해 변환 명령어에 대응하는 동작을 큐잉한다.
실행 유닛들(55-1 내지 55-N)의 세트를 갖는 실행 로직(50)을 포함하는 프로세서 코어(40)가 도시된다. 일부 실시예들은 특정 기능들 또는 기능 세트들에 전용인 다수의 실행 유닛을 포함할 수 있다. 다른 실시예들은 특정 기능을 수행할 수 있는 하나의 실행 유닛 또는 단 하나의 실행 유닛을 포함할 수 있다. 도시된 실행 로직(50)은 코드 명령어들에 의해 지정된 동작들을 수행한다.
코드 명령어들에 의해 지정된 동작들의 실행을 완료한 후, 백엔드 로직(58)은 코드(42)의 명령어들을 폐기(retire)한다. 일 실시예에서, 프로세서 코어(40)는 비순차적 실행을 허용하지만 명령어들의 순차적 폐기를 필요로 한다. 폐기 로직(59)은 본 기술분야의 통상의 기술자에게 알려진 다양한 형태(예를 들어, 재정렬 버퍼 또는 그와 유사한 것)를 취할 수 있다. 이러한 방식으로, 프로세서 코어(40)는 적어도, 디코더에 의해 생성되는 출력, 레지스터 재명명 로직(46)에 의해 이용되는 하드웨어 레지스터들 및 테이블들, 및 실행 로직(50)에 의해 수정되는 임의의 레지스터들(도시되지 않음)의 측면에서, 코드(42)의 실행 동안 변환된다.
비록 도 10에는 도시되지 않았지만, 프로세싱 요소는 프로세서 코어(40)와 함께 칩 상의 다른 요소들을 포함할 수 있다. 예를 들어, 프로세싱 요소는 프로세서 코어(40)와 함께 메모리 컨트롤 로직을 포함할 수 있다. 프로세싱 요소는 I/O 컨트롤 로직을 포함할 수 있고/있거나, 메모리 컨트롤 로직과 통합된 I/O 컨트롤 로직을 포함할 수 있다. 프로세싱 요소는 또한 하나 이상의 캐시를 포함할 수 있다.
도 11은 도면들 및 연관된 설명을 포함하지만 이에 제한되지 않는 본 명세서에 설명된 컴포넌트들 및 특징들을 참조하여, 하나 이상의 실시예에 따른 예시적인 멀티 프로세서 기반 컴퓨팅 시스템(60)의 예를 도시하는 블록도이다. 멀티프로세서 시스템(60)은 제1 프로세싱 요소(70) 및 제2 프로세싱 요소(80)를 포함한다. 2개의 프로세싱 요소(70 및 80)가 도시되어 있지만, 시스템(60)의 실시예는 또한 그러한 프로세싱 요소를 단 하나만 포함할 수 있음이 이해되어야 한다.
시스템(60)은 포인트-투-포인트 상호접속 시스템으로서 도시되며, 여기서 제1 프로세싱 요소(70) 및 제2 프로세싱 요소(80)는 포인트-투-포인트 상호접속부(point-to-point interconnect)(71)를 통해 결합된다. 도 11에 도시된 상호접속부들 중 임의의 것 또는 전부는 포인트-투-포인트 상호접속부보다는 멀티-드롭 버스로서 구현될 수 있다는 것이 이해되어야 한다.
도 11에 도시된 바와 같이, 프로세싱 요소들(70 및 80) 각각은 제1 및 제2 프로세서 코어(즉, 프로세서 코어들(74a 및 74b) 및 프로세서 코어들(84a 및 84b))를 포함하는 멀티코어 프로세서일 수 있다. 이러한 코어들(74a, 74b, 84a, 84b)은 도 10과 관련하여 위에서 논의된 것과 유사한 방식으로 명령어 코드를 실행하도록 구성될 수 있다.
각각의 프로세싱 요소(70, 80)는 적어도 하나의 공유 캐시(99a, 99b)를 포함할 수 있다. 공유 캐시(99a, 99b)는 각각 코어들(74a, 74b 및 84a, 84b)과 같은 프로세서의 하나 이상의 컴포넌트에 의해 이용되는 데이터(예를 들어, 명령어들)를 저장할 수 있다. 예를 들어, 공유 캐시(99a, 99b)는 프로세서의 컴포넌트들에 의한 더 빠른 액세스를 위해 메모리(62, 63)에 저장된 데이터를 로컬로 캐시할 수 있다. 하나 이상의 실시예에서, 공유 캐시(99a, 99b)는 레벨 2(L2), 레벨 3(L3), 레벨 4(L4), 또는 다른 레벨의 캐시, 최종 레벨 캐시(LLC) 및/또는 이들의 조합과 같은 하나 이상의 중간 레벨 캐시를 포함할 수 있다.
단 2개의 프로세싱 요소(70, 80)로 도시되었지만, 실시예들의 범위는 그렇게 제한되지 않는다는 것이 이해되어야 한다. 다른 실시예들에서, 하나 이상의 추가 프로세싱 요소가 주어진 프로세서에 존재할 수 있다. 대안적으로, 프로세싱 요소들(70, 80) 중 하나 이상은 가속기 또는 필드 프로그래밍가능한 게이트 어레이와 같은, 프로세서 이외의 요소일 수 있다. 예를 들어, 추가 프로세싱 요소(들)는 제1 프로세서(70)와 동일한 추가 프로세서(들), 제1 프로세서(70)와 같은 프로세서에 대해 이종 또는 비대칭인 추가 프로세서(들), (예를 들어, 그래픽 가속기들 또는 디지털 신호 처리(DSP) 유닛들과 같은) 가속기들, 필드 프로그래밍가능한 게이트 어레이들, 또는 임의의 다른 프로세싱 요소를 포함할 수 있다. 아키텍처, 마이크로 아키텍처, 열, 전력 소비 특성 및 그와 유사한 것을 포함하는 다양한 장점 메트릭(a spectrum of metrics of merit)의 측면에서, 프로세싱 요소들(70, 80) 사이에는 다양한 차이가 있을 수 있다. 이러한 차이들은 실질적으로 그 자체가 프로세싱 요소들(70, 80) 사이의 비대칭성 및 이질성(heterogeneity)으로서 나타날 수 있다. 적어도 하나의 실시예에 대해, 다양한 프로세싱 요소들(70, 80)은 동일한 다이 패키지에 상주할 수 있다.
제1 프로세싱 요소(70)는 메모리 컨트롤러 로직(MC)(72), 및 포인트-투-포인트(P-P) 인터페이스들(76 및 78)을 더 포함할 수 있다. 마찬가지로, 제2 프로세싱 요소(80)는 MC(82) 및 P-P 인터페이스들(86 및 88)을 포함할 수 있다. 도 11에 도시된 바와 같이, MC들(72 및 82)은 프로세서들을 각각의 메모리들, 즉 메모리(62) 및 메모리(63)에 결합하며, 이들은 각각의 프로세서들에 로컬로 부착된 메인 메모리의 일부일 수 있다. MC(72 및 82)가 프로세싱 요소들(70, 80)에 통합된 것으로 도시되어 있지만, 대안적인 실시예들에 대해, MC 로직은 내부에 통합되기보다는 프로세싱 요소들(70, 80) 외부의 이산 로직일 수 있다.
제1 프로세싱 요소(70) 및 제2 프로세싱 요소(80)는 각각 P-P 상호접속부들(76, 86)을 통해 I/O 서브시스템(90)에 결합될 수 있다. 도 11에 도시된 바와 같이, I/O 서브시스템(90)은 P-P 인터페이스들(94 및 98)을 포함한다. 또한, I/O 서브시스템(90)은 I/O 서브시스템(90)을 고성능 그래픽 엔진(64)과 결합하기 위한 인터페이스(92)를 포함한다. 일 실시예에서, 그래픽 엔진(64)을 I/O 서브시스템(90)에 결합하기 위해, 버스(73)가 사용될 수 있다. 대안적으로, 포인트-투-포인트 상호접속부는 이러한 컴포넌트들을 결합할 수 있다.
차례로, I/O 서브시스템(90)은 인터페이스(96)를 통해 제1 버스(65)에 결합될 수 있다. 일 실시예에서, 제1 버스(65)는 주변 컴포넌트 상호접속(Peripheral Component Interconnect)(PCI) 버스, 또는 PCI 익스프레스 버스 또는 다른 3세대 I/O 상호접속 버스와 같은 버스일 수 있지만, 실시예들의 범위는 그렇게 제한되지는 않는다.
도 11에 도시된 바와 같이, 다양한 I/O 디바이스들(65a)(예를 들어, 생체 인식 스캐너들, 스피커들, 카메라들, 센서들)은 제1 버스(65)를 제2 버스(67)에 결합할 수 있는 버스 브리지(66)와 함께 제1 버스(65)에 결합될 수 있다. 일 실시예에서, 제2 버스(67)는 로우 핀 카운트(low pin count)(LPC) 버스일 수 있다. 일 실시예에서, 예를 들어, 키보드/마우스(67a), 통신 디바이스(들)(67b), 및 코드(69)를 포함할 수 있는 디스크 드라이브 또는 다른 대용량 저장 디바이스와 같은 데이터 저장 유닛(68)을 포함하는 다양한 디바이스들이 제2 버스(67)에 결합될 수 있다. 도시된 코드(69)는 도 1 및 도 2a - 도 2c를 참조하여 본 명세서에 설명된 비대칭 양자화를 위한 프로세스들, 도 3a - 도 3b 및 도 4를 참조하여 본 명세서에 설명된 입력 채널별 양자화를 위한 프로세스들, 및 도 5 및 도 6a - 도 6b를 참조하여 본 명세서에 설명된 혼합 정밀도 자동 튜닝을 위한 프로세스들을 포함하여, 위에서 설명된 프로세스들의 하나 이상의 양태를 구현할 수 있다. 코드(69)는 도 7을 참조하여 본 명세서에 설명된 추론 신경망 모델을 최적화하기 위한 프로세스들의 하나 이상의 양태를 구현할 수 있다. 도시된 코드(69)는 앞에서 논의된 코드(42)(도 10)와 유사할 수 있다. 또한, 오디오 I/O(67c)는 제2 버스(67)에 결합될 수 있고, 배터리(61)는 컴퓨팅 시스템(60)에 전력을 공급할 수 있다.
다른 실시예들이 고려된다는 점에 유의해야 한다. 예를 들어, 도 11의 포인트-투-포인트 아키텍처를 대신하여, 시스템은 멀티-드롭 버스 또는 다른 그러한 통신 토폴로지를 구현할 수 있다. 또한, 도 11의 요소들은 대안적으로 도 11에 도시된 것보다 더 많거나 더 적은 통합 칩을 사용하여 분할될 수 있다.
추론 신경망 모델을 최적화하기 위한 위에서 설명된 각각의 시스템들 및 방법들, 그리고 그들의 실시예들(구현들을 포함함) 각각은 적어도, 추론 신경망 모델이 본 명세서에 설명된 바와 같이 낮은 정밀도의 비대칭 양자화를 포함할 수 있고, 제한된 계산 및/또는 메모리 능력을 갖는 것들을 포함하여 임의의 가능한 수의 환경에서의 배치를 위해 적절하게 최적화된 성능을 제공할 수 있는 정도로 성능 향상된 것으로 고려될 수 있다. 본 명세서에 설명된 기술의 장점들은 증가된 계산 효율성(예를 들어, 더 많은 초당 연산 수), 감소된 메모리 액세스 및 감소된 메모리 요건, 개선된 메모리 캐시 사용을 포함하며, 이들 모두는 결과적으로 더 높은 처리량 및 더 낮은 대기 시간을 초래한다.
추가 참고 사항 및 예:
예 1은 프로세서 및 프로세서에 결합된 메모리를 포함하는, 추론 신경망 모델을 최적화하기 위한 컴퓨팅 시스템을 포함하고, 메모리는, 프로세서에 의해 실행될 때, 컴퓨팅 시스템으로 하여금: 양자화된 신경망을 생성하게 하고 - 여기서, 신경망의 모델 가중치들은 부호 있는 정수 값들로서 양자화되고, 신경망의 입력 계층은 입력 값들을 부호 없는 정수 값들로서 양자화하도록 구성됨 - ; 양자화된 모델 가중치들 및 신경망에 대한 커널 크기에 기초하여 가중치 누적 테이블을 생성하게 하고; 가중치 누적 테이블 및 커널 크기에 기초하여 신경망의 출력 계층에 대한 출력 복원 함수를 생성하게 하는 명령어들의 세트를 포함한다.
예 2는 예 1의 컴퓨팅 시스템을 포함하고, 여기서 출력 복원 함수를 생성하기 위해, 명령어들은 실행될 때, 컴퓨팅 시스템으로 하여금 신경망의 출력 계층에 대한 출력 좌표들과 가중치 누적 테이블에 대한 인덱스들 사이의 매핑을 생성하게 한다.
예 3은 예 1의 컴퓨팅 시스템을 포함하고, 여기서 신경망의 입력 계층은 입력 값들을 채널별로 양자화하도록 구성되고, 신경망의 모델 가중치들은 채널별로 양자화된다.
예 4는 예 3의 컴퓨팅 시스템을 포함하고, 여기서 가중치 누적 테이블은 제3 차원을 포함하고, 제3 차원의 각각의 개별 티어의 값들은 각각의 개별 채널에 대응한다.
예 5는 예 1의 컴퓨팅 시스템을 포함하고, 여기서 신경망은 복수의 내부 계층을 포함하고, 가중치 누적 테이블은 복수의 계층별 가중치 누적 테이블에 기초하여 생성되고, 각각의 계층별 가중치 누적 테이블은 신경망의 복수의 내부 계층 중 하나에 대응한다.
예 6은 예 1 내지 예 5 중 어느 하나의 컴퓨팅 시스템을 포함하고, 여기서 명령어들은 실행될 때, 추가로, 컴퓨팅 시스템으로 하여금 양자화 메트릭을 포함하는 자동 튜닝 절차를 수행하게 한다.
예 7은 하나 이상의 기판, 및 하나 이상의 기판에 결합된 로직을 포함하는, 추론 신경망 모델을 최적화하기 위한 반도체 장치를 포함하고, 로직은 구성가능한 로직 또는 고정 기능 하드웨어 로직 중 하나 이상에서 적어도 부분적으로 구현되고, 로직은 하나 이상의 기판에 결합되어: 양자화된 신경망을 생성하고 - 신경망의 모델 가중치들은 부호 있는 정수 값들로서 양자화되고, 신경망의 입력 계층은 입력 값들을 부호 없는 정수 값들로서 양자화하도록 구성됨 - ; 양자화된 모델 가중치들 및 신경망에 대한 커널 크기에 기초하여 가중치 누적 테이블을 생성하고; 가중치 누적 테이블 및 커널 크기에 기초하여 신경망의 출력 계층에 대한 출력 복원 함수를 생성한다.
예 8은 예 7의 반도체 장치를 포함하고, 여기서 출력 복원 함수를 생성하기 위해, 하나 이상의 기판에 결합된 로직은 신경망의 출력 계층에 대한 출력 좌표들과 가중치 누적 테이블에 대한 인덱스들 사이의 매핑을 생성하는 것이다.
예 9는 예 7의 반도체 장치를 포함하고, 여기서 신경망의 입력 계층은 입력 값들을 채널별로 양자화하도록 구성되고, 신경망의 모델 가중치들은 채널별로 양자화된다.
예 10은 예 9의 반도체 장치를 포함하고, 여기서 가중치 누적 테이블은 제3 차원을 포함하고, 제3 차원의 각각의 개별 티어의 값들은 각각의 개별 채널에 대응한다.
예 11은 예 7의 반도체 장치를 포함하고, 여기서 신경망은 복수의 내부 계층을 포함하고, 가중치 누적 테이블은 복수의 계층별 가중치 누적 테이블에 기초하여 생성되고, 각각의 계층별 가중치 누적 테이블은 신경망의 복수의 내부 계층 중 하나에 대응한다.
예 12는 예 7 내지 예 11 중 어느 하나의 반도체 장치를 포함하고, 여기서 하나 이상의 기판에 결합된 로직은 양자화 메트릭을 포함하는 자동 튜닝 절차를 추가로 수행한다.
예 13은 추론 신경망 모델을 최적화하기 위한 명령어들의 세트를 포함하는 적어도 하나의 비-일시적 컴퓨터 판독가능한 저장 매체를 포함하고, 명령어들은 컴퓨팅 시스템에 의해 실행될 때, 컴퓨팅 시스템으로 하여금: 양자화된 신경망을 생성하게 하고 - 신경망의 모델 가중치들은 부호 있는 정수 값들로서 양자화되고, 신경망의 입력 계층은 입력 값들을 부호 없는 정수 값들로서 양자화하도록 구성됨 - ; 양자화된 모델 가중치들 및 신경망에 대한 커널 크기에 기초하여 가중치 누적 테이블을 생성하게 하고; 가중치 누적 테이블 및 커널 크기에 기초하여 신경망의 출력 계층에 대한 출력 복원 함수를 생성하게 한다.
예 14는 예 13의 적어도 하나의 비-일시적 컴퓨터 판독가능한 저장 매체를 포함하고, 여기서 출력 복원 함수를 생성하기 위해, 명령어들은 실행될 때, 컴퓨팅 시스템으로 하여금 신경망의 출력 계층에 대한 출력 좌표들과 가중치 누적 테이블에 대한 인덱스들 사이의 매핑을 생성하게 한다.
예 15는 예 14의 적어도 하나의 비-일시적 컴퓨터 판독가능한 저장 매체를 포함하고, 여기서 신경망의 입력 계층은 입력 값들을 채널별로 양자화하도록 구성되고, 신경망의 모델 가중치들은 채널별로 양자화된다.
예 16은 예 15의 적어도 하나의 비-일시적 컴퓨터 판독가능한 저장 매체를 포함하고, 여기서 가중치 누적 테이블은 제3 차원을 포함하고, 제3 차원의 각각의 개별 티어의 값들은 각각의 개별 채널에 대응한다.
예 17은 예 13의 적어도 하나의 비-일시적 컴퓨터 판독가능한 저장 매체를 포함하고, 여기서 신경망은 복수의 내부 계층을 포함하고, 가중치 누적 테이블은 복수의 계층별 가중치 누적 테이블에 기초하여 생성되고, 각각의 계층별 가중치 누적 테이블은 신경망의 복수의 내부 계층 중 하나에 대응한다.
예 18은 예 13 내지 예 17 중 어느 하나의 적어도 하나의 비-일시적 컴퓨터 판독가능한 저장 매체를 포함하고, 여기서 명령어들은 실행될 때, 추가로, 컴퓨팅 시스템으로 하여금 양자화 메트릭을 포함하는 자동 튜닝 절차를 수행하게 한다.
예 19는 추론 신경망 모델을 최적화하기 위한 컴퓨팅 장치를 동작시키는 방법을 포함하고, 방법은 양자화된 신경망을 생성하는 단계 - 신경망의 모델 가중치들은 부호 있는 정수 값들로서 양자화되고, 신경망의 입력 계층은 입력 값들을 부호 없는 정수 값들로서 양자화하도록 구성됨 - ; 양자화된 모델 가중치들 및 신경망에 대한 커널 크기에 기초하여 가중치 누적 테이블을 생성하는 단계; 및 가중치 누적 테이블 및 커널 크기에 기초하여 신경망의 출력 계층에 대한 출력 복원 함수를 생성하는 단계를 포함한다.
예 20은 예 19의 방법을 포함하고, 여기서 출력 복원 함수를 생성하는 단계는 신경망의 출력 계층에 대한 출력 좌표들과 가중치 누적 테이블에 대한 인덱스들 사이의 매핑을 생성하는 단계를 포함한다.
예 21은 예 20의 방법을 포함하고, 여기서 신경망의 입력 계층은 입력 값들을 채널별로 양자화하도록 구성되고, 신경망의 모델 가중치들은 채널별로 양자화된다.
예 22는 예 21의 방법을 포함하고, 여기서 가중치 누적 테이블은 제3 차원을 포함하고, 제3 차원의 각각의 개별 티어의 값들은 각각의 개별 채널에 대응한다.
예 23은 예 19의 방법을 포함하고, 여기서 신경망은 복수의 내부 계층을 포함하고, 가중치 누적 테이블은 복수의 계층별 가중치 누적 테이블에 기초하여 생성되고, 각각의 계층별 가중치 누적 테이블은 신경망의 복수의 내부 계층 중 하나에 대응한다.
예 24는 예 19 내지 예 23 중 어느 하나의 방법을 포함하고, 여기서 방법은 양자화 메트릭을 포함하는 자동 튜닝 절차를 수행하는 단계를 더 포함한다.
예 25는 예 19 내지 예 24 중 어느 하나의 방법을 수행하기 위한 수단을 포함하는 장치를 포함한다.
따라서, 본 명세서에 설명된 기술은 양자화된 신경망을 생성하고 - 신경망의 모델 가중치들은 부호 있는 정수 값들로서 양자화되고, 신경망의 입력 계층은 입력 값들을 부호 없는 정수 값들로서 양자화하도록 구성됨 - , 양자화된 모델 가중치들 및 신경망에 대한 커널 크기에 기초하여 가중치 누적 테이블을 생성하고, 가중치 누적 테이블 및 커널 크기에 기초하여 신경망의 출력 계층에 대한 출력 복원 함수를 생성함으로써 비대칭 양자화를 수행하는 추론 신경망 모델을 최적화하기 위한 기술을 제공할 수 있다. 이 기술은 또한 입력 채널별 양자화를 수행할 수 있고, 또한 혼합 정밀도 자동 튜닝을 수행할 수 있다. 본 명세서에 설명된 기술은 서버, 클라우드 컴퓨팅, 브라우저, 및/또는 배치된 추론 신경망을 갖는 임의의 환경을 포함하는 임의의 수의 컴퓨팅 환경에 적용가능할 수 있다.
실시예들은 모든 유형의 반도체 집적 회로("IC") 칩과 함께 사용하기 위해 적용가능하다. 이러한 IC 칩들의 예들은 프로세서들, 컨트롤러들, 칩셋 컴포넌트들, 프로그래밍가능한 로직 어레이들(PLA), 메모리 칩들, 네트워크 칩들, 시스템 온 칩들(system on chip)(SoC), SSD/NAND 컨트롤러 ASIC들, 및 그와 유사한 것을 포함하지만 이에 제한되지는 않는다. 추가로, 도면들 중 일부에서 신호 전도체 라인들은 라인들로 표현된다. 일부는 더 많은 구성 신호 경로들을 나타내기 위해 상이할 수 있거나, 다수의 구성 신호 경로를 나타내기 위해 숫자 레이블을 가질 수 있거나, 및/또는 주 정보 흐름 방향을 나타내기 위해 하나 이상의 끝에 화살표들을 가질 수 있다. 그러나, 이것은 제한적인 방식으로 해석되어서는 안 된다. 오히려, 그러한 추가된 세부사항은 회로의 더 쉬운 이해를 용이하게 하기 위해 하나 이상의 예시적인 실시예와 관련하여 사용될 수 있다. 추가 정보를 갖는지 여부에 관계없이, 임의의 표현된 신호 라인들은 실제로 복수의 방향으로 이동할 수 있는 하나 이상의 신호를 포함할 수 있으며, 임의의 적절한 유형의 신호 체계, 예를 들어, 차동 쌍들로 구현된 디지털 또는 아날로그 라인들, 광섬유 라인들 및/또는 단일 종단 라인들로 구현될 수 있다.
예시적인 크기들/모델들/값들/범위들이 주어졌을 수 있지만, 실시예들은 그러한 것으로 제한되지 않는다. 제조 기술들(예를 들어, 포토리소그래피)이 시간의 경과에 따라 발전함에 따라, 더 작은 크기의 디바이스들이 제조될 수 있을 것으로 예상된다. 추가로, IC 칩들 및 다른 컴포넌트들에 대한 잘 알려진 전력/접지 접속들은 도시 및 논의의 단순화를 위해, 그리고 실시예들의 특정 양태들을 모호하게 하지 않도록, 도면들 내에 도시되거나 도시되지 않을 수 있다. 또한, 실시예들을 모호하게 하는 것을 피하기 위해, 또한 그러한 블록도 배열들의 구현에 관한 세부 사항이 실시예가 구현될 플랫폼에 크게 의존한다는 사실, 즉, 그러한 세부사항들이 충분히 기술분야의 통상의 기술자의 이해의 범위 내에 있어야 한다는 사실을 고려하여, 배열들이 블록도 형태로 도시될 수 있다. 예시적인 실시예들을 설명하기 위해 특정 세부사항들(예를 들어, 회로들)이 제시된 경우, 본 기술분야의 통상의 기술자에게는 실시예들이 이러한 특정 세부사항들 없이 또는 그것들의 변형들과 함께 실시될 수 있다는 것이 명백해야 한다. 따라서, 설명은 제한적인 것 대신에 예시적인 것으로 간주되어야 한다.
용어 "결합된"은 본 명세서에서 해당 컴포넌트들 사이의 직접 또는 간접적인 임의의 유형의 관계를 지칭하기 위해 사용될 수 있고, 전기적, 기계적, 유체, 광학적, 전자기적, 전기기계적 또는 다른 접속들에 적용될 수 있다. 추가로, 본 명세서에서 "제1", "제2" 등의 용어는 논의를 용이하게 하기 위해서만 사용될 수 있고, 다르게 표시되지 않는 한, 특정한 시간적 또는 연대적 중요성은 지니지 않을 수 있다.
본 출원 및 청구항들에서 사용될 때, 용어 "~ 중 하나 이상"에 의해 결합되는 항목들의 목록은 나열된 용어들의 임의의 조합을 의미할 수 있다. 예를 들어, 문구 "A, B 또는 C 중 하나 이상"은 A; B; C; A 및 B; A 및 C; B 및 C; 또는 A, B 및 C를 의미할 수 있다.
본 기술분야의 통상의 기술자들은 상술한 설명으로부터, 실시예들의 폭넓은 기술들이 다양한 형태로 구현될 수 있음을 알 것이다. 그러므로, 실시예들이 그 특정 예들에 관련하여 설명되었지만, 도면들, 명세서 및 이하의 청구항들을 숙지하면 숙련된 실무자에게 다른 수정들이 명백해질 것이므로, 실시예들의 진정한 범위는 그렇게 제한되지 않아야 한다.
Claims (25)
- 신경망을 최적화하기 위한 컴퓨팅 시스템으로서,
프로세서; 및
상기 프로세서에 결합된 메모리
를 포함하고, 상기 메모리는, 상기 프로세서에 의해 실행될 때, 상기 컴퓨팅 시스템으로 하여금:
양자화된 신경망을 생성하게 하고 - 상기 신경망의 모델 가중치들은 부호 있는 정수 값들로서 양자화되고, 상기 신경망의 입력 계층은 입력 값들을 부호 없는 정수 값들로서 양자화하도록 구성됨 - ;
양자화된 모델 가중치들 및 상기 신경망에 대한 커널 크기에 기초하여 가중치 누적 테이블을 생성하게 하고;
상기 가중치 누적 테이블 및 상기 커널 크기에 기초하여 상기 신경망의 출력 계층에 대한 출력 복원 함수를 생성하게 하는
명령어들의 세트를 포함하는, 컴퓨팅 시스템. - 제1항에 있어서, 상기 출력 복원 함수를 생성하기 위해, 상기 명령어들은 실행될 때, 상기 컴퓨팅 시스템으로 하여금 상기 신경망의 상기 출력 계층에 대한 출력 좌표들과 상기 가중치 누적 테이블에 대한 인덱스들 사이의 매핑을 생성하게 하는, 컴퓨팅 시스템.
- 제1항에 있어서,
상기 신경망의 상기 입력 계층은 입력 값들을 채널별로 양자화하도록 구성되고,
상기 신경망의 상기 모델 가중치들은 채널별로 양자화되는, 컴퓨팅 시스템. - 제3항에 있어서, 상기 가중치 누적 테이블은 제3 차원을 포함하고, 상기 제3 차원의 각각의 개별 티어의 값들은 각각의 개별 채널에 대응하는, 컴퓨팅 시스템.
- 제1항에 있어서, 상기 신경망은 복수의 내부 계층을 포함하고, 상기 가중치 누적 테이블은 복수의 계층별 가중치 누적 테이블에 기초하여 생성되고, 각각의 계층별 가중치 누적 테이블은 상기 신경망의 상기 복수의 내부 계층 중 하나에 대응하는, 컴퓨팅 시스템.
- 제1항 내지 제5항 중 어느 한 항에 있어서, 상기 명령어들은 실행될 때, 추가로, 상기 컴퓨팅 시스템으로 하여금 양자화 메트릭을 포함하는 자동 튜닝 절차를 수행하게 하는, 컴퓨팅 시스템.
- 런타임 컴퓨팅 환경을 관리하기 위한 반도체 장치로서,
하나 이상의 기판; 및
상기 하나 이상의 기판에 결합된 로직
을 포함하고, 상기 로직은 구성가능한 로직 또는 고정 기능 하드웨어 로직 중 하나 이상에서 적어도 부분적으로 구현되고, 상기 로직은 상기 하나 이상의 기판에 결합되어:
양자화된 신경망을 생성하고 - 상기 신경망의 모델 가중치들은 부호 있는 정수 값들로서 양자화되고, 상기 신경망의 입력 계층은 입력 값들을 부호 없는 정수 값들로서 양자화하도록 구성됨 - ;
양자화된 모델 가중치들 및 상기 신경망에 대한 커널 크기에 기초하여 가중치 누적 테이블을 생성하고;
상기 가중치 누적 테이블 및 상기 커널 크기에 기초하여 상기 신경망의 출력 계층에 대한 출력 복원 함수를 생성하는,
반도체 장치. - 제7항에 있어서, 상기 출력 복원 함수를 생성하기 위해, 상기 하나 이상의 기판에 결합된 로직은 상기 신경망의 상기 출력 계층에 대한 출력 좌표들과 상기 가중치 누적 테이블에 대한 인덱스들 사이의 매핑을 생성하는 것인, 반도체 장치.
- 제7항에 있어서,
상기 신경망의 상기 입력 계층은 입력 값들을 채널별로 양자화하도록 구성되고,
상기 신경망의 상기 모델 가중치들은 채널별로 양자화되는, 반도체 장치. - 제9항에 있어서, 상기 가중치 누적 테이블은 제3 차원을 포함하고, 상기 제3 차원의 각각의 개별 티어의 값들은 각각의 개별 채널에 대응하는, 반도체 장치.
- 제7항에 있어서, 상기 신경망은 복수의 내부 계층을 포함하고, 상기 가중치 누적 테이블은 복수의 계층별 가중치 누적 테이블에 기초하여 생성되고, 각각의 계층별 가중치 누적 테이블은 상기 신경망의 상기 복수의 내부 계층 중 하나에 대응하는, 반도체 장치.
- 제7항 내지 제11항 중 어느 한 항에 있어서, 상기 하나 이상의 기판에 결합된 로직은 양자화 메트릭을 포함하는 자동 튜닝 절차를 추가로 수행하는, 반도체 장치.
- 런타임 컴퓨팅 환경을 관리하기 위한 명령어들의 세트를 포함하는 적어도 하나의 비-일시적 컴퓨터 판독가능한 저장 매체로서,
상기 명령어들은 컴퓨팅 시스템에 의해 실행될 때, 상기 컴퓨팅 시스템으로 하여금:
양자화된 신경망을 생성하게 하고 - 상기 신경망의 모델 가중치들은 부호 있는 정수 값들로서 양자화되고, 상기 신경망의 입력 계층은 입력 값들을 부호 없는 정수 값들로서 양자화하도록 구성됨 - ;
양자화된 모델 가중치들 및 상기 신경망에 대한 커널 크기에 기초하여 가중치 누적 테이블을 생성하게 하고;
상기 가중치 누적 테이블 및 상기 커널 크기에 기초하여 상기 신경망의 출력 계층에 대한 출력 복원 함수를 생성하게 하는,
적어도 하나의 비-일시적 컴퓨터 판독가능한 저장 매체. - 제13항에 있어서, 상기 출력 복원 함수를 생성하기 위해, 상기 명령어들은 실행될 때, 상기 컴퓨팅 시스템으로 하여금 상기 신경망의 상기 출력 계층에 대한 출력 좌표들과 상기 가중치 누적 테이블에 대한 인덱스들 사이의 매핑을 생성하게 하는, 적어도 하나의 비-일시적 컴퓨터 판독가능한 저장 매체.
- 제13항에 있어서,
상기 신경망의 상기 입력 계층은 입력 값들을 채널별로 양자화하도록 구성되고,
상기 신경망의 상기 모델 가중치들은 채널별로 양자화되는, 적어도 하나의 비-일시적 컴퓨터 판독가능한 저장 매체. - 제15항에 있어서, 상기 가중치 누적 테이블은 제3 차원을 포함하고, 상기 제3 차원의 각각의 개별 티어의 값들은 각각의 개별 채널에 대응하는, 적어도 하나의 비-일시적 컴퓨터 판독가능한 저장 매체.
- 제13항에 있어서, 상기 신경망은 복수의 내부 계층을 포함하고, 상기 가중치 누적 테이블은 복수의 계층별 가중치 누적 테이블에 기초하여 생성되고, 각각의 계층별 가중치 누적 테이블은 상기 신경망의 상기 복수의 내부 계층 중 하나에 대응하는, 적어도 하나의 비-일시적 컴퓨터 판독가능한 저장 매체.
- 제13항 내지 제17항 중 어느 한 항에 있어서, 상기 명령어들은 실행될 때, 추가로, 상기 컴퓨팅 시스템으로 하여금 양자화 메트릭을 포함하는 자동 튜닝 절차를 수행하게 하는, 적어도 하나의 비-일시적 컴퓨터 판독가능한 저장 매체.
- 런타임 컴퓨팅 환경을 관리하기 위한 컴퓨팅 장치를 동작시키는 방법으로서,
양자화된 신경망을 생성하는 단계 - 상기 신경망의 모델 가중치들은 부호 있는 정수 값들로서 양자화되고, 상기 신경망의 입력 계층은 입력 값들을 부호 없는 정수 값들로서 양자화하도록 구성됨 - ;
양자화된 모델 가중치들 및 상기 신경망에 대한 커널 크기에 기초하여 가중치 누적 테이블을 생성하는 단계; 및
상기 가중치 누적 테이블 및 상기 커널 크기에 기초하여 상기 신경망의 출력 계층에 대한 출력 복원 함수를 생성하는 단계
를 포함하는, 방법. - 제19항에 있어서, 상기 출력 복원 함수를 생성하는 단계는 상기 신경망의 상기 출력 계층에 대한 출력 좌표들과 상기 가중치 누적 테이블에 대한 인덱스들 사이의 매핑을 생성하는 단계를 포함하는, 방법.
- 제19항에 있어서,
상기 신경망의 상기 입력 계층은 입력 값들을 채널별로 양자화하도록 구성되고,
상기 신경망의 상기 모델 가중치들은 채널별로 양자화되는, 방법. - 제21항에 있어서, 상기 가중치 누적 테이블은 제3 차원을 포함하고, 상기 제3 차원의 각각의 개별 티어의 값들은 각각의 개별 채널에 대응하는, 방법.
- 제19항에 있어서, 상기 신경망은 복수의 내부 계층을 포함하고, 상기 가중치 누적 테이블은 복수의 계층별 가중치 누적 테이블에 기초하여 생성되고, 각각의 계층별 가중치 누적 테이블은 상기 신경망의 상기 복수의 내부 계층 중 하나에 대응하는, 방법.
- 제19항 내지 제23항 중 어느 한 항에 있어서,
양자화 메트릭을 포함하는 자동 튜닝 절차를 수행하는 단계
를 더 포함하는, 방법. - 장치로서,
제19항 내지 제23항 중 어느 한 항의 방법을 수행하기 위한 수단을 포함하는 장치.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2020/079161 WO2021179281A1 (en) | 2020-03-13 | 2020-03-13 | Optimizing low precision inference models for deployment of deep neural networks |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220153001A true KR20220153001A (ko) | 2022-11-17 |
Family
ID=77670393
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227027451A KR20220153001A (ko) | 2020-03-13 | 2020-03-13 | 심층 신경망들의 배치를 위한 저정밀도 추론 모델들의 최적화 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230118802A1 (ko) |
KR (1) | KR20220153001A (ko) |
CN (1) | CN115053230A (ko) |
WO (1) | WO2021179281A1 (ko) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12015526B2 (en) * | 2020-05-26 | 2024-06-18 | Synopsys, Inc. | Mixed-precision neural networks |
CN114741269B (zh) * | 2022-04-14 | 2022-09-23 | 网思科技股份有限公司 | 一种推理系统业务性能评估的方法 |
CN115018076B (zh) * | 2022-08-09 | 2022-11-08 | 聚时科技(深圳)有限公司 | 一种用于智能伺服驱动器的ai芯片推理量化方法 |
WO2024056219A1 (en) * | 2022-09-15 | 2024-03-21 | Nokia Technologies Oy | A method, an apparatus and a computer program product for video encoding and video decoding |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107292382A (zh) * | 2016-03-30 | 2017-10-24 | 中国科学院声学研究所 | 一种神经网络声学模型激活函数定点量化方法 |
EP3596660A1 (en) * | 2017-03-24 | 2020-01-22 | Huawei Technologies Co., Ltd. | Neural network data processing apparatus and method |
KR102601604B1 (ko) * | 2017-08-04 | 2023-11-13 | 삼성전자주식회사 | 뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치 |
CN107657314A (zh) * | 2017-09-26 | 2018-02-02 | 济南浪潮高新科技投资发展有限公司 | 一种基于区间算法的神经网络卷积层设计方法 |
CN110503182A (zh) * | 2018-05-18 | 2019-11-26 | 杭州海康威视数字技术股份有限公司 | 深度神经网络中的网络层运算方法及装置 |
CN109508784B (zh) * | 2018-12-28 | 2021-07-27 | 四川那智科技有限公司 | 一种神经网络激活函数的设计方法 |
-
2020
- 2020-03-13 US US17/929,023 patent/US20230118802A1/en active Pending
- 2020-03-13 KR KR1020227027451A patent/KR20220153001A/ko unknown
- 2020-03-13 CN CN202080095767.0A patent/CN115053230A/zh active Pending
- 2020-03-13 WO PCT/CN2020/079161 patent/WO2021179281A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
US20230118802A1 (en) | 2023-04-20 |
CN115053230A (zh) | 2022-09-13 |
WO2021179281A1 (en) | 2021-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20220153001A (ko) | 심층 신경망들의 배치를 위한 저정밀도 추론 모델들의 최적화 | |
JP7329533B2 (ja) | 演算を加速するための方法および加速器装置 | |
US11640295B2 (en) | System to analyze and enhance software based on graph attention networks | |
US20210390460A1 (en) | Compute and memory based artificial intelligence model partitioning using intermediate representation | |
US11169776B2 (en) | Decomposed floating point multiplication | |
US20210027166A1 (en) | Dynamic pruning of neurons on-the-fly to accelerate neural network inferences | |
CN114595221A (zh) | 用于稀疏数据的基于瓦片的稀疏度感知数据流优化 | |
US20210319298A1 (en) | Compute-based subgraph partitioning of deep learning models for framework integration | |
US20210365804A1 (en) | Dynamic ai model transfer reconfiguration to minimize performance, accuracy and latency disruptions | |
US20240037378A1 (en) | Accelerated scale-out performance of deep learning training workload with embedding tables | |
US11520501B2 (en) | Automated learning technology to partition computer applications for heterogeneous systems | |
US20220350863A1 (en) | Technology to minimize the negative impact of cache conflicts caused by incompatible leading dimensions in matrix multiplication and convolution kernels without dimension padding | |
US20210319369A1 (en) | Multi-level caching for dynamic deep learning models | |
US20210406777A1 (en) | Autonomous allocation of deep neural network inference requests in a cluster with heterogeneous devices | |
US20210374554A1 (en) | Graph context-based operator checks to improve graph clustering and execution in ai accelerator framework integration | |
US11663056B2 (en) | Unified programming interface for regrained tile execution | |
US20220075555A1 (en) | Multi-scale convolutional kernels for adaptive grids | |
WO2023035221A1 (en) | Sample-adaptive cross-layer norm calibration and relay neural network | |
US11704601B2 (en) | Poisson distribution based approach for bootstrap aggregation in a random forest | |
US20220335277A1 (en) | Deformable Fractional Filters | |
WO2023060459A1 (en) | Sample-adaptive 3d feature calibration and association agent | |
WO2023102722A1 (en) | Interleaved data loading system to overlap computation and data storing for operations | |
US20220382514A1 (en) | Control logic for configurable and scalable multi-precision operation |