KR20220161339A - 기계 학습 작업시 개선된 메모리 압축 전달을 위한 유사도에 기초한 특징 재정렬 - Google Patents
기계 학습 작업시 개선된 메모리 압축 전달을 위한 유사도에 기초한 특징 재정렬 Download PDFInfo
- Publication number
- KR20220161339A KR20220161339A KR1020227034237A KR20227034237A KR20220161339A KR 20220161339 A KR20220161339 A KR 20220161339A KR 1020227034237 A KR1020227034237 A KR 1020227034237A KR 20227034237 A KR20227034237 A KR 20227034237A KR 20220161339 A KR20220161339 A KR 20220161339A
- Authority
- KR
- South Korea
- Prior art keywords
- feature maps
- memory
- input data
- different feature
- machine learning
- Prior art date
Links
- 238000010801 machine learning Methods 0.000 title claims abstract description 38
- 230000006835 compression Effects 0.000 title claims description 19
- 238000007906 compression Methods 0.000 title claims description 19
- 238000013528 artificial neural network Methods 0.000 claims abstract description 23
- 238000012545 processing Methods 0.000 claims abstract description 23
- 238000000034 method Methods 0.000 claims description 36
- 230000008569 process Effects 0.000 claims description 24
- 238000003672 processing method Methods 0.000 claims description 8
- 230000004913 activation Effects 0.000 description 25
- 238000001994 activation Methods 0.000 description 25
- 238000004422 calculation algorithm Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 9
- 238000004364 calculation method Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 238000013527 convolutional neural network Methods 0.000 description 6
- 238000011176 pooling Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 238000012549 training Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 238000013136 deep learning model Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 238000010191 image analysis Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
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/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/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/22—Matching criteria, e.g. proximity measures
-
- 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]
-
- 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
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- 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/08—Learning methods
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3002—Conversion to or from differential modulation
- H03M7/3048—Conversion to or from one-bit differential modulation only, e.g. delta modulation [DM]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- General Physics & Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Neurology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Image Processing (AREA)
- Image Analysis (AREA)
- Complex Calculations (AREA)
Abstract
기계 학습 신경망 동작을 실행하는 처리 장치는 메모리 및 프로세서를 포함한다. 프로세서는 기계 학습 신경망 동작의 한 계층에서 입력 데이터를 수신하고, 입력 데이터에 적용될 복수의 분류된 필터를 수신하고, 복수의 분류된 필터를 입력 데이터에 적용하여 복수의 상이한 특징 맵을 생성하고, 서로에 대한 특징 맵의 유사도에 따라 복수의 상이한 특징 맵을 압축하고, 복수의 상이한 특징 맵을 메모리에 저장하도록 구성된다.
Description
관련 출원의 상호 참조
본 출원은 2020년 3월 31일자로 출원된 미국 정규 특허 출원 제16/836,785호의 이익을 주장하며, 그 내용은 본원에 참조로 포함된다.
기계 학습(예를 들어, 딥 러닝)은 특정 작업(예를 들어, 이미지가 특정 객체를 포함하는지 여부)을 수행하기 위한 예측 또는 결정을 하는 다양한 기술(예를 들어, 이미지 분류)에 널리 사용된다. 컨볼루션 신경망(CNN)은 기계 학습 애플리케이션에서 널리 사용되는 딥 러닝 알고리즘의 한 부류이다. 이러한 네트워크는 보통 다수의 계층을 포함한다. 각 계층에서, 필터 세트가 이전 계층의 출력에 적용되고, 각 계층의 출력들은 활성화 또는 특징 맵들로 알려져 있다. 네트워크에서 첫 번째 및 마지막 계층은 각각 입력 및 출력 계층으로 알려져 있고, 첫 번째 계층 및 마지막 계층 사이의 계층은 보통 은닉 계층으로 알려져 있다.
지도 학습에서 기계 학습 모델들은 특정 작업(예를 들어, 이미지가 특정 객체를 포함하는지 여부)을 수행하기 위한 예측 또는 결정을 하기 위해 학습된다. 학습하는 동안, 모델은 상이한 데이터에 노출된다. 각 계층에서, 모델은 데이터를 변환하고, 그 동작의 정확도에 관한 피드백을 수신한다. 추론 과정에서, 학습된 모델은 테스트 샘플들(예를 들어, 입력 텐서들)에 대한 출력을 추론 또는 예측하는데 사용된다.
첨부된 도면과 함께 예로서 주어진 하기 설명으로부터 보다 상세한 이해가 있을 수 있다.
도 1은 본 개시의 하나 이상의 특징이 구현될 수 있는 예시적인 장치의 블록도이다.
도 2는 추가 세부사항을 도시한, 도 1의 장치의 블록도이다.
도 3은 본 개시의 특징들에 따라 메모리에서 분류되기 전에 NHWC 포맷팅에 따라 예시적인 활성화 텐서 값들의 저장 레이아웃을 도시한 도면이다.
도 4는 분류에 따라 NHWC 포맷팅을 사용한, 특징 맵의 유사도 및 메모리에 저장된 텐서 값들의 예시적인 메모리 레이아웃에 따라 도 3에 도시된 특징 맵들의 예시적인 분류를 도시한다.
도 5는 본 개시의 특징들에 따라 기계 학습 동작을 실행하는 예시적인 방법을 도시하는 흐름도이다.
도 1은 본 개시의 하나 이상의 특징이 구현될 수 있는 예시적인 장치의 블록도이다.
도 2는 추가 세부사항을 도시한, 도 1의 장치의 블록도이다.
도 3은 본 개시의 특징들에 따라 메모리에서 분류되기 전에 NHWC 포맷팅에 따라 예시적인 활성화 텐서 값들의 저장 레이아웃을 도시한 도면이다.
도 4는 분류에 따라 NHWC 포맷팅을 사용한, 특징 맵의 유사도 및 메모리에 저장된 텐서 값들의 예시적인 메모리 레이아웃에 따라 도 3에 도시된 특징 맵들의 예시적인 분류를 도시한다.
도 5는 본 개시의 특징들에 따라 기계 학습 동작을 실행하는 예시적인 방법을 도시하는 흐름도이다.
용어 활성화 및 특징 맵은 본 개시에서 상호 교환적으로 사용된다. CNN은 상이한 유형의 기술 애플리케이션에 사용된다. 단순화된 설명을 위해, 본원에서 설명된 예는 이미지 분석을 위한 CNN을 포함한다.
CNN 모델의 활성화는 특정 애플리케이션에 따라 각 계층, 또는 복수의 계층에 대해 메모리에 (전체 또는 부분적으로) 기록되거나 판독된다. 각 계층의 출력은, 예를 들어, 각각 이미지를 표현하고 높이(H) 및 폭(W)으로 정의된 크기를 각각 갖는 N개의 특징 맵 배치들(즉, 채널들)C로 분할되는 이미지 세트를 포함하는 4차원(4D) 활성화 텐서이다. 활성화 텐서들에 대해 계층에 의해 정의된 동작 (예를 들어, 컨볼루션 커널, 풀링 동작)이 수행되어, 다음 계층에 대한 새로운 활성화 텐서를 생성한다.
딥 러닝 모델은 대체로 상당한 메모리 대역폭을 사용하며, 이는 대역폭 병목, 성능에 부정적인 영향, 전력 소비를 증가시킬 수 있다. 기계 학습 신경망들의 상이한 계층에서 활성화 텐서 데이터를 저장하는 데 사용되는 메모리의 양은 보통, 활성화 텐서 데이터가 애플리케이션에 따라 온-칩 메모리에 저장될 수 없을 만큼 크다. 따라서, 활성화 텐서 데이터를 저장하는 것은 데이터를 오프-칩 메모리에 그리고 이로부터 전달하는 것을 포함한다.
전달될 텐서 데이터는 예를 들어, 순차적인 데이터 사이의 차(델타(deltas)) 형태로 데이터를 저장하거나 전송하는, 델타-기반 압축 알고리즘과 같은 임의의 수의 압축 알고리즘을 사용하여 압축된다. 차이가 작을 때, 델타 기반 압축은 데이터 중복성(redundancy)을 크게 감소시킨다. 그러나, 델타-기반 압축 알고리즘의 효율은 메모리에 저장된 인접 데이터 간의 유사도에 의존한다.
본 출원은 분류된 필터들을 입력 텐서들에 적용함으로써 기계 학습 모델의 추론 과정시 메모리 전달을 위한 텐서들을 효율적으로 압축하는 처리 장치 및 방법들을 제공한다. 필터들은 훈련 과정시 결과적인 특징 맵들의 유사도에 따라 분류되고, 즉, 학습 과정시, 모델은 특징 맵들의 텐서 값들이 서로에 대한 채널들의 유사도에 따라 메모리의 위치들에 저장되는 순서(즉, 분류)를 변경하여 결정된다. 예를 들어, 특징 맵 재정렬(즉, 분류)은 특징 맵들(즉, 채널들의 유사도)의 평균 요소 진폭들(예를 들어, 픽셀 강도들)의 유사도에 기초한다. 그러나, 특징 재정렬은 다른 유형의 파라미터에 따른 유사도에 기초하여 구현될 수 있다. 특징 재정렬은 또한, 예를 들어, 1차원 또는 2차원 이산 구배(gradients) 또는 분산에 기초하여 구현될 수 있다.
텐서 데이터는, 예를 들어 NHWC(즉, 채널 우선) 또는 NCHW(즉, 폭 우선)와 같은 상이한 형식으로 메모리에 기록될 수 있다. NHWC(또는 채널이 우선인 다른 메모리 레이아웃)에서, 공동 위치한 채널들의 공동 위치한 요소들은 메모리에서 인접할 것이다. 메모리 내 인접 요소들의 유사도는 압축 알고리즘의 압축 효율에 영향을 미친다.
한 애플리케이션에서, 텐서 데이터는 델타 기반 압축 알고리즘을 사용하여 압축된다. 그러나, 텐서 데이터의 압축은 사전-기반(dictionary-based) 압축 알고리즘과 같은 다른 유형의 압축 알고리즘을 사용하여 본 개시의 특징에 따라 구현될 수 있다.
메모리 및 프로세서를 포함하고, 기계 학습 신경망 동작을 실행하기 위한 처리 장치가 제공된다. 프로세서는 기계 학습 신경망 동작의 계층에서 입력 데이터를 수신하고, 입력 데이터에 적용될 복수의 분류된 필터를 수신하고, 복수의 분류된 필터를 입력 데이터에 적용하여 복수의 상이한 특징 맵을 생성하고, 서로에 대한 특징 맵의 유사도에 따라 복수의 상이한 특징 맵을 압축하고, 복수의 상이한 특징 맵을 메모리에 저장하도록 구성된다.
기계 학습 처리 방법이 제공되고, 그 방법은 기계 학습 신경망의 한 계층에서 입력 데이터를 수신하는 단계, 입력 데이터에 적용될 복수의 분류된 필터를 수신하는 단계, 복수의 분류된 필터를 입력 데이터에 적용하여 복수의 상이한 특징 맵을 생성하는 단계, 서로에 대한 특징 맵의 유사도에 따라 복수의 상이한 특징 맵을 압축하는 단계, 및 복수의 상이한 특징 맵을 메모리에 저장하는 단계를 포함한다.
컴퓨터가 기계 학습 처리 방법을 실행하게 하는 저장된 명령어들을 포함하는 비일시적인 컴퓨터 판독가능 매체가 제공되고, 기계 학습 처리 방법은 기계 학습 신경망의 한 계층에서 입력 데이터를 수신하는 단계, 입력 데이터에 적용될 복수의 분류된 필터를 수신하는 단계, 복수의 분류된 필터를 입력 데이터에 적용하여 복수의 상이한 특징 맵을 생성하는 단계, 서로에 대한 특징 맵들의 유사도에 따라 복수의 상이한 특징 맵을 압축하는 단계, 및 복수의 상이한 특징 맵을 메모리에 저장하는 단계를 포함한다.
도 1은 본 개시의 하나 이상의 특징이 구현될 수 있는 예시적인 장치(100)의 블록도이다. 장치(100)는, 예를 들어, 컴퓨터, 게임 장치, 핸드헬드(handheld) 장치, 셋톱 박스, 텔레비전, 모바일 폰, 또는 태블릿 컴퓨터를 포함할 수 있다. 장치(100)는 프로세서(102), 메모리(104), 스토리지(106), 하나 이상의 입력 장치(108), 및 하나 이상의 출력 장치(110)를 포함한다. 장치(100)는 또한 선택적으로 입력 드라이버(112) 및 출력 드라이버(114)를 포함한다. 장치(100)는 도 1에 도시되지 않은 추가 구성요소를 포함할 수 있는 것으로 이해된다.
다양한 대안에서, 프로세서(102)는 중앙 처리 유닛(CPU), 그래픽 처리 유닛(GPU), 동일한 다이(die) 상에 위치한 CPU 및 GPU, 또는 하나 이상의 프로세서 코어를 포함하며, 여기서 각각의 프로세서 코어는 CPU 또는 GPU, 또는 독립형(stand-alone) 가속기일 수 있다. 다양한 대안에서, 메모리(104)는 프로세서(102)와 동일한 다이 상에 위치하거나, 프로세서(102)와 별도로 위치한다. 메모리(104)는 휘발성 또는 비휘발성 메모리, 예를 들어, RAM(random access memory), 동적 RAM, 또는 캐시를 포함한다.
스토리지(106)는 고정 또는 착탈식 스토리지, 예를 들어, 하드 디스크 드라이브, 고체 상태 드라이브, 광학 디스크, 또는 플래시 드라이브를 포함한다. 입력 장치(108)는, 제한 없이, 키보드, 키패드, 터치 화면, 터치 패드, 검출기, 마이크, 가속도계, 자이로스코프, 생체인식 스캐너, 또는 네트워크 연결(예를 들어, 무선 IEEE 802 신호의 송신 및/또는 수신을 위한 무선 근거리 통신망 카드)을 포함한다. 출력 장치(110)는, 제한 없이, 디스플레이, 스피커, 프린터, 햅틱 피드백 장치, 하나 이상의 조명, 안테나, 또는 네트워크 연결(예를 들어, 무선 IEEE 802 신호의 송신 및/또는 수신을 위한 무선 근거리 통신망 카드)을 포함한다.
입력 드라이버(112)는 프로세서(102) 및 입력 장치(108)와 통신하고, 프로세서(102)가 입력 장치(108)로부터 입력을 수신할 수 있게 한다. 출력 드라이버(114)는 프로세서(102) 및 출력 장치(110)와 통신하고, 프로세서(102)가 출력 장치(110)에 출력을 송신할 수 있게 한다. 입력 드라이버(112) 및 출력 드라이버(114)는 선택적 구성요소이고, 입력 드라이버(112) 및 출력 드라이버(114)가 존재하지 않는 경우, 장치(100)는 동일한 방식으로 동작할 것이라는 점에 유의한다. 출력 드라이버(116)는 디스플레이 장치(118)에 결합된 APD(accelerated processing device, 116)를 포함한다. APD(116)는 프로세서(102)로부터 계산 명령 및 그래픽 렌더링 명령을 수용하고, 이러한 계산 및 그래픽 렌더링 명령을 처리하고 표시용 디스플레이 장치(118)에 출력을 제공한다. 이하에서 보다 상세히 설명되는 바와 같이, APD(116)는 하나 이상의 병렬 처리 유닛을 포함하여 SIMD(single-instruction-multiple-data) 패러다임에 따라 계산을 수행한다. 따라서, 다양한 기능이 APD(116)에 의해 또는 이와 함께 수행되는 것으로 본원에서 설명되지만, 다양한 대안에서, APD(116)에 의해 수행되는 것으로 설명된 기능은 추가적으로 또는 대안적으로 호스트 프로세서(예를 들어, 프로세서(102))에 의해 구동되지 않은 유사한 능력을 갖는 다른 컴퓨팅 장치에 의해 수행되고, 그래픽 출력을 디스플레이 장치(118)에 제공한다. 예를 들어, SIMD 패러다임에 따라 처리 작업을 수행하는 임의의 처리 시스템은 본원에서 설명된 기능을 수행할 수 있음이 고려된다. 또는, SIMD 패러다임에 따라 처리 작업을 수행하지 않는 컴퓨팅 시스템은 본원에 설명된 기능을 수행하는 것으로 고려된다.
도 2 는, APD(116)에서 처리 작업의 실행과 관련된 추가 세부사항을 도시하는, 장치(100)의 블록도이다. 프로세서(102)는, 시스템 메모리(104)에, 프로세서(102)에 의한 실행을 위한 하나 이상의 제어 로직 모듈을 유지한다. 제어 로직 모듈은 운영 체제(120), 커널 모드 드라이버(122), 및 애플리케이션(126)을 포함한다. 이러한 제어 로직 모듈은 프로세서(102) 및 APD(116)의 동작의 다양한 특징을 제어한다. 예를 들어, 운영 체제(120)는 하드웨어와 직접 통신하고, 프로세서(102) 상에서 실행되는 다른 소프트웨어를 위한 하드웨어에 인터페이스를 제공한다. 커널 모드 드라이버(122)는, 예를 들어, 프로세서(102) 상에서 실행되는 소프트웨어(예를 들어, 애플리케이션(126))에 API(application programming interface)를 제공하여 APD(116)의 다양한 기능에 액세스하는 APD(116)의 동작을 제어한다. 커널 모드 드라이버(122)는 또한 (아래에서 더 상세히 논의되는 SIMD 유닛(138)과 같은) APD(116)의 처리 구성요소로 실행하기 위한 프로그램을 컴파일하는 JIT(just-in-time) 컴파일러를 포함한다.
APD(116)는 병렬 처리에 적합할 수 있는 그래픽 동작 및 비그래픽 동작과 같은 선택된 기능에 대한 명령 및 프로그램을 실행한다. APD(116)는 픽셀 동작, 지오메트리 계산과 같은 그래픽 파이프라인 동작을 실행하고, 프로세서(102)로부터 수신된 명령에 기초하여 이미지를 디스플레이 장치(118)에 렌더링하는 데 사용될 수 있다. APD(116)는 또한, 프로세서(102)로부터 수신된 명령에 기초하여, 비디오, 물리 시뮬레이션, 계산 유체 역학, 또는 다른 작업과 관련된 동작과 같은 그래픽 동작과 직접적으로 관련되지 않은 계산 처리 동작을 실행한다.
APD(116)는 SIMD 패러다임에 따라 병렬 방식으로 프로세서(102)의 요청에 동작을 수행하는 하나 이상의 SIMD 유닛(138)을 포함하는 계산 유닛(132)을 포함한다. SIMD 패러다임은 다수의 프로세싱 요소가 단일 프로그램 제어 흐름 유닛 및 프로그램 카운터를 공유하고, 따라서 동일한 프로그램을 실행하지만, 상이한 데이터로 해당 프로그램을 실행할 수 있는 것이다. 일례에서, 각각의 SIMD 유닛(138)은 16개의 레인을 포함하고, 여기서 각각의 레인은 SIMD 유닛(138)의 다른 레인과 동일한 시간에 동일한 명령어를 실행하지만 상이한 데이터로 해당 명령어를 실행할 수 있다. 모든 레인이 주어진 명령어를 실행할 필요가 없는 경우 예측으로 레인을 끌 수 있다. 예측은 발산 제어 흐름으로 프로그램을 실행하는 데에도 사용될 수 있다. 보다 구체적으로, 제어 흐름이 개별 레인에 의해 수행된 계산에 기초하는 조건부 분기 또는 다른 명령어를 갖는 프로그램에 대해, 현재 실행되지 않은 제어 흐름 경로에 대응하는 레인의 예측, 및 상이한 제어 흐름 경로의 순차 실행이 임의의 제어 흐름을 허용한다.
계산 유닛(132)에서 실행의 기본 단위는 작업-항목이다. 각각의 작업-항목은 특정 레인에서 병렬로 실행될 프로그램의 단일 인스턴스화를 나타낸다. 작업-항목은 단일 SIMD 처리 유닛(138) 상에서 "파면(wavefront)"으로서 동시에 실행될 수 있다. 하나 이상의 파면은 동일한 프로그램을 실행하도록 지정된 작업-항목의 집합을 포함하는 "작업 그룹"에 포함된다. 작업그룹을 구성하는 파면 각각을 실행함으로써 작업그룹은 실행될 수 있다. 대안적으로, 파면은 단일 SIMD 유닛(138) 상에서 순차적으로 또는 상이한 SIMD 유닛(138) 상에서 부분적으로 또는 완전히 병렬로 실행된다. 파면은 단일 SIMD 유닛(138) 상에서 동시에 실행될 수 있는 작업-항목의 가장 큰 집합으로 생각될 수 있다. 따라서, 프로세서(102)로부터 수신된 명령이, 프로그램이 단일 SIMD 유닛(138) 상에서 동시에 실행될 수 없는 정도로 특정 프로그램이 병렬화되어야 함을 표시하는 경우, 해당 프로그램은 2개 이상의 SIMD 유닛(138) 상에 병렬화되거나 동일한 SIMD 유닛(138) 상에 직렬화되는 (또는 필요에 따라 병렬화 및 직렬화 모두) 파면으로 분할된다. 스케줄러(136)는 상이한 계산 유닛(132) 및 SIMD 유닛(138) 상의 다양한 파면을 스케줄링하는 것에 관련된 동작을 수행한다.
계산 유닛(132)에 의해 제공되는 병렬성은 픽셀 값 계산, 정점 변환 및 다른 그래픽 동작과 같은 그래픽 관련 동작에 적합하다. 따라서, 일부 경우에서, 프로세서(102)로부터 그래픽 처리 명령을 수용하는 그래픽 파이프라인(134)은 병렬로 실행하기 위해 계산 유닛(132)에 계산 작업을 제공한다.
계산 유닛(132)은 또한 그래픽과 관련되지 않거나 그래픽 파이프라인(134)의 "정상(normal)" 동작의 일부로서 수행되지 않는 계산 작업(예를 들어, 그래픽 파이프라인(134)의 동작을 위해 수행되는 처리를 보완하기 위해 수행된 커스텀 동작)을 수행하는 데 사용된다. 프로세서(102) 상에서 실행되는 애플리케이션(126) 또는 다른 소프트웨어는 이러한 계산 작업을 정의하는 프로그램을 실행을 위해 APD(116)에 전송한다.
APD(116)는 딥 러닝 모델을 포함하는 기계 학습 모델을 실행하도록 구성된다. APD(116)는 기계 학습 신경망의 상이한 계층들에서 활성화 텐서 데이터를 저장하도록 구성된다. APD(116)는, 각 계층에서 이전 계층의 입력 데이터(예를 들어, 이미지, 활성화 텐서들)에 대한 동작들(예를 들어, 컨볼루션 커널, 풀링 동작)을 수행하고, 입력 데이터에 필터를 적용하여 다음 계층에 대한 텐서 데이터를 제공하도록 구성된다.
전술한 바와 같이, 상이한 신경망 계층에서 활성화 텐서 데이터를 저장하는 데 사용되는 메모리의 양은 보통, 활성화 텐서 데이터가 온-칩 메모리(예를 들어, APD(116)에서의 메모리)에 저장될 수 없을 만큼(예를 들어, 초기 계층에서) 크다. 따라서, 활성화 텐서 데이터를 저장하는 것은 링크(예를 들어, 버스)를 통해 APD(116)와 오프-칩 메모리(예를 들어, 메모리(104)) 사이의 데이터 전달을 포함한다. APD(116)는 데이터를 압축하여 오프-칩 메모리로 전달되도록 (예를 들어, 대역폭을 절약하도록) 구성된다.
APD(116)는, 텐서 값들이 복수의 특징 맵 유사도 파라미터들 중 어느 것에 따라 저장된 순서를, 채널 우선 구성을 갖는 복수의 상이한 메모리 포매팅 타입 중 어느 것 및 복수의 압축 알고리즘 타입 중 어느 것을 사용하여 변경하여 텐서 데이터를 압축하도록 구성된다. 설명을 단순화하기 위해, 본원에서 설명된 예들은 특징 맵의 평균 요소 진폭(예를 들어, 픽셀 강도)의 유사도(즉, 채널들의 유사도들)에 기초한 NHWC(즉, 채널 우선) 포매팅에 따라 텐서 값들이 메모리에 기록되는 순서를 변경하여 4D 텐서 값들을 델타 기반 압축하는 것을 포함한다.
도 3은 본 개시의 특징들에 따라 메모리에서 분류되기 전, NHWC 포맷팅에 따른, 예시적인 4D 활성화 텐서들 값들의 저장 레이아웃을 도시한 도면이다.
NHWC에서, 활성화 텐서들(예를 들어, 4D 활성화 텐서들)은 채널 우선으로 저장된다. 예를 들어, 논리 인덱스(n, h, w, c)를 입력하고 각각의 값이 위치하는 곳에 주소 변위를 반환하는 오프셋 함수를 통해 각 4D 텐서 값을 매핑함으로써 4D 활성화 텐서들이 메모리에 기록된다. 따라서, 메모리에 인접하여 저장된 2개의 텐서 값들은 대부분 동일한 인덱스들 n, h, 및 w를 공유하지만, 상이한 w 인덱스들을 포함한다(예를 들어, 제2 텐서 값의 w 인덱스는 제1 텐서 값과 1만큼 상이하다). 대문자는 활성화 텐서의 4차원(즉, N, H, W 및 C)을 나타내고, 소문자는 각 차원에 대한 인덱스(즉, n, h, w 및 c)를 나타낸다.
예를 들어, NHWC 포맷팅이 사용되어 각각 활성화를 나타내는 복수의 특징 맵의 텐서 값들을 저장하는 경우, 각 특징 맵의 제1 위치(예를 들어, 1행 1열의 값들)의 요소가 메모리에 먼저 저장되고, 이어서 각 특징 맵의 제2 위치(예를 들어, 1행 2열의 값들)에 요소들, 등으로 각 배치에 대한 요소들 각각이 메모리에 저장될 때까지 저장된다.
도 3에 도시된 활성화 텐서들은 8개의 특징 맵(302)(즉, 8개의 채널들)을 포함하고, 각 특징 맵(302)은 2 x 2 행렬의 요소들이다. 도 3에 도시된 특징 맵들의 차원들은 단지 예일 뿐이다. 본 개시의 특징은 도 3에 도시된 것과 상이한 차원(즉, 폭 W의 행들 및 높이 H의 열들)을 갖는 임의의 개수의 특징 맵(즉, 채널들)을 사용하여 구현될 수 있다.
각 특징 맵(302)은 상이한 필터(예를 들어, 가중치)가 적용되는 입력 텐서의 상이한 표현이다. 예를 들어, 입력 텐서에 대해 요소 값들 00, 01. 02 및 03을 포함하는 제1 특징 맵(302, C0)을 생성하는 제1 필터를 사용하여 동작(예를 들어, 컨볼루션 커널, 풀링 동작)이 수행된다. 이어서, 제2 필터를 사용하는 동작이 입력 텐서에 대해 수행되어 요소 값들 04, 05, 06 및 07을 포함하는 제2 피처 맵(302, C1)을 생성한다. 프로세스는 상이한 필터들로 각 특징 맵(302, C0-C7) 을 계속 생성한다.
도 3은 또한, 본 개시의 특징들에 따라 메모리 내 요소 값들 을 분류하지 않고(즉, 재정렬하지 않고), NHWC 포맷팅에 따라, 각 요소 값이 저장되는 메모리부(304)에서 위치들을 도시하는 예시적인 메모리 레이아웃을 보여준다. 도시된 바와 같이, 제1 특징 맵(302, C0) 의 제1 요소 00는 메모리부(304)의 제1 위치에 저장된다. 이어서 제2 특징 맵(302, C1)의 공동 위치한 제1 요소 04는 제1 특징 맵(302, C0)의 제1 요소 00에 인접한 메모리부(304)의 제2 위치에 저장된다.
나머지 특징 맵들(302, C2 내지 C7)의 공동 위치한 제1 요소들(즉, 08, 12, 16, 20, 24 및 28)의 각각이 메모리부(304)의 다음 위치들에 저장된 후, 제1 특징 맵(302, C0)의 (요소 00으로부터 폭 W에 따라) 제2 요소 01 이 저장되고, 이어서 제2 특징 맵(302, C1)의 공동 위치한 제2 요소 05가 저장된다.
나머지 특징 맵들(302, C2 내지 C7)의 공동 위치한 제2 요소들(즉, 09, 13, 17, 21, 25 및 29)의 각각이 메모리부(304)의 다음 위치들에 저장된 후, 제1 특징 맵(302, C0)의 (요소 00으로부터 높이 H를 따라) 요소 02가 저장되고, 이어서 제2 특징 맵(302, C1)의 공동 위치한 요소 06, 이어서 나머지 특징 맵들(302, C2 내지 C7)의 공동 위치한 요소들(즉, 10, 14, 18, 22, 26, 및 30) 각각이 메모리부(304)의 다음 위치에 저장된다.
요소 30이 저장된 후, 제1 특징 맵(304, C0)의 요소 03이 저장되고, 이어서 제2 특징 맵(302, C1)의 공동 위치한 요소 07, 이어서 나머지 공동 위치한 요소(11, 15, 19, 23, 27 및 31)가 메모리부(304)에 저장된다.
전술한 바와 같이, 텐서 값들의 압축(예를 들어, 델타-기반 압축)의 효율은, 예를 들어, 메모리에 저장된 인접한 데이터 간 유사도에 의존한다.
도 4는, 분류에 따라 도 3에 도시된 특징 맵(302)이 특징 맵 유사도 및 NHWC 포맷팅을 사용하여 메모리에 저장된 요소 값의 예시적인 메모리 레이아웃에 따라 학습 과정에서 어떻게 분류되는지에 대한 예를 도시한다. 즉, 채널들은 학습하는 동안 메모리 내 이웃 데이터 요소들이 분류되지 않은 채널들보다 서로 더 유사하도록 분류된다. 채널들이 유사도에 따라 분류되기 때문에, 추론 과정에서 모델을 실행하기 위해 수행되는 메모리 전달들의 횟수가 감소된다(즉, 메모리 대역폭이 감소된다).
도 3 및 도 4에 도시된 각 요소에 대한 비트 수(즉, 4)는 단지 예일뿐이다. 다른 예들에서, 본 개시의 특징들은 상이한 비트 수들로 표현되는 요소들을 사용하여 구현된다. 각 요소는 예에서 4 비트로 표현되기 때문에, 각 요소(예를 들어, 정수 요소)의 진폭을 나타내기 위해 16개의 상이한 진폭(예를 들어, 강도) 레벨(즉, 레벨 0 내지 레벨 15)이 있다.
학습 후 또는 학습하는 동안 (즉, 추론 과정 이전에), 상이한 특징 맵들(302)의 데이터(즉, 채널들)가 검사되어, 특징 맵들(302)의 서로 간의 유사도가 결정된다. 그 결과에 기초하여, (학습하는 동안 또는 그 후) 활성화에 적용된 복수의 필터 각각이 평균 요소 진폭 값에 기초하여 평가될 수 있는 새로운 활성화 텐서를 생성한다고 판단된다.
아래 표 1은 학습 과정에서 결정된 예시적인 필터 정보를 보여주고, 이 필터 정보는 동작(예를 들어, 콘볼루션 커널, 풀링 동작)이 수행될 입력 텐서에 적용되는 8개의 상이한 필터로부터 생성된 상이한 특징 맵들(302, C0 내지 C7)의 평균 요소 진폭들을 포함한다. 예를 들어, 평균 요소 진폭은 입력 텐서에 상이한 필터를 적용하는 단계를 다수 반복할 수 있는 모델을 학습시키는 동안 결정된다.
예를 들어, 표 1에 보여진 바와 같이, 입력 텐서에 적용된 제1 필터는 평균 요소 진폭 값 7을 갖는 제1 특징 맵(C0)을 생성하고, 입력 텐서에 적용된 제2 필터는 평균 요소 진폭 값 10을 갖는 제2 특징 맵(302, C1)을 생성하고, 입력 텐서에 적용된 제3 필터는 평균 요소 진폭 값 14를 갖는 제3 특징 맵(302, C2)을 생성하고, 입력 텐서에 적용된 제4 필터는 평균 요소 진폭 값 8을 갖는 제4 특징 맵(302, C3)을 생성하고, 입력 텐서에 적용된 제5 필터는 평균 요소 진폭 값 11을 갖는 제1 특징 맵(C4)을 생성하고, 입력 텐서에 적용된 제6 필터는 평균 요소 진폭 값 4를 갖는 제2 특징 맵(302, C5)을 생성하고, 입력 텐서에 적용된 제7 필터는 평균 요소 진폭 값 9를 갖는 제3 특징 맵(302, C6)을 생성하고, 및 입력 텐서에 적용된 제8 필터는 평균 요소 진폭 값 13을 갖는 제4 특징 맵(302, C7)을 생성한다.
필터 정보(예를 들어, 표 1에 보여진 정보)에 기초하여, 신경망은 필터를 뒤섞어 출력 채널들을 재정렬(즉, 분류)하여 재구성된다. 예를 들어, 8개의 필터들은, 필터들이 특징 맵들(302)의 유사도(예를 들어, 평균 요소 진폭 유사도)에 따라 재분류되지 않고 NHWC 포맷팅에 의해 적용되는 도 3에 도시된 순서와 다른 순서로 입력 텐서 데이터에 적용된다. 이어서, NHWC 포맷팅을 사용하여, 요소 값들이 메모리에 저장된다.
예를 들어, 필터들은 도 4에 도시된 특징 맵들(302)의 순서와 상이한 순서로 입력 텐서 데이터에 적용된다. 즉, 필터는 표 1에 나타낸 미리 결정된 평균 요소 진폭을 사용하여 특징 맵 유사도에 따라 분류된다. 따라서, 도 4에 도시된 바와 같이, 특징 맵(302, C5)의 제1 요소 20은 메모리부(402)의 제1 위치에 저장된다. 이어서, 특징 맵(302, C0)의 공동 위치한 제1 요소 00은 특징 맵(302, C5)의 제1 요소 20에 인접한 메모리부(402) 의 제2 위치에 저장된다. 나머지 특징 맵들(302, C3, C6, C1, C4, C7, C2)의 공동 위치한 제1 요소들(즉, 12, 24, 04, 16, 28 및 08)의 각각이 메모리부(402)의 다음 위치들에 저장된 후, 특징 맵(302, C5)의 (요소 20으로부터 폭 W에 따른) 제2 요소 21이 저장되고, 이어서 특징 맵(302, C0)의 공동 위치한 제2 요소 01이 저장된다.
나머지 특징 맵들(302, C3, C6, C1, C4, C7, 및 C2)의 공동 위치한 제2 요소들(즉, 13, 25, 05, 17, 29 및 09) 각각이 메모리부(402)의 다음 위치들에 저장된 후, 특징 맵(402, C5)의 (요소 20으로부터 높이 H에 따른) 요소 22가 저장되고, 이어서, 특징 맵(302, C0)의 공동 위치한 요소 02가 저장된다. 나머지 특징 맵들(302, C3, C6, C1, C4, C7, 및 C2)의 공동 위치한 요소들(즉, 14, 26, 06, 18, 30 및 10) 각각은 메모리부(402)의 다음 위치들에 저장된 후, 특징 맵(402, C5)의 요소 23이 저장되고, 이어서, 나머지 특징 맵들(302, C3, C6, C1, C4, C7, 및 C2)의 공동 위치한 요소들 03, 15, 27, 07, 19, 31 및 11이 저장된다.
학습하는 동안 개발된, 상술한 분류된 필터를 포함하는 모델을 사용하여, 기계 학습 모델의 추론 과정에서 분류된 필터가 입력 텐서에 적용된다. 분류된 인접한 데이터 항목들의 유사도로 인해, 텐서 데이터는 모델을 실행하는 추론 과정에서 보다 효율적으로 압축된다. 예를 들어, 메모리 내 이웃(예를 들어, 인접한) 텐서 데이터 간 차이가 감소되는 경우, 데이터 중복성이 감소되기 때문에 데이터는 (예를 들어, 델타 기반 압축을 사용하여) 보다 효율적으로 압축된다.
도 5는 본 개시의 특징들에 따라 기계 학습 동작을 실행하는 추론 과정에서 압축을 개선하는 예시적인 방법을 도시하는 흐름도이다.
502 블록에서, 방법(500)은 입력 텐서들을 수신하는 단계를 포함한다. 예를 들어, 입력 텐서는 추론 과정에서 CNN의 한 계층에서 (예를 들어, 프로세서에 의해) 수신된다.
504 블록에서, 방법(500)은, 추론 과정에서, 입력 텐서들에 적용될 복수의 분류된 필터들을 수신하는 단계를 포함한다. 추론 과정에서 수신된 분류된 필터들은, 예를 들어, 도 4에 도시된 분류된 필터들과 같은, 추론 과정 이전에(예를 들어, 학습하는 동안) 분류되었던 필터들이다.
입력 텐서들이 압축 포맷으로 메모리로부터 판독될 때, 506 블록에서 가상으로 도시된 바와 같이, 입력 텐서들은 압축해제된다. 예를 들어, 한 계층의 입력 텐서들은, 그 텐서들에 대해 다음 계층에 대한 새로운 활성화 텐서들을 생성하는 동작(예를 들어, 컨볼루션 커널, 풀링 동작)이 수행될 수 있도록 프로세서에 의해 압축해제된다. 일부 예들에서, 입력 텐서들은 압축 포맷으로 메모리에 기록되고 비압축된 입력 텐서들은 국소적으로 저장되고(예를 들어, 프로세서에 국소적이고), 기계 학습 신경망의 다음 계층에 대한 다음 입력 데이터로서 사용된다. 입력 텐서들이 메모리에서 압축 포맷으로 판독되지 않을 때, 방법은 508 블록으로 진행한다.
508 블록에서, 방법(500)은 504 블록에서 수신된 입력 텐서들에게 복수의 분류된 필터들을 적용하는 단계를 포함한다. 예를 들어, 복수의 분류된 필터들은 각 특징 맵(302)의 평균 요소 진폭의 유사도에 따라 분류된 필터들이다.
510 블록에서, 방법(500)은 텐서 데이터(예를 들어, 생성된 복수의 특징 맵(302))를 압축하는 단계를 포함한다. 예를 들어, 텐서 데이터는 서로에 대한 특징 맵들의 유사도에 따라 압축되고, 링크(예를 들어, 버스)를 통해 비 국소(non-local) 메모리(예를 들어, 오프-칩 메모리)에 전송된다. 따라서, 분류된 대로 이웃 데이터(예를 들어, 특징 맵들)는 서로에 대해 더 유사하기 때문에, 분류된 데이터는 필터들이 유사도에 따라 분류 없이 적용되는 경우보다 더 효율적으로 압축된다.
512 블록에서, 방법(500)은 텐서 데이터를 저장하는 단계를 포함한다. 예를 들어, 텐서 데이터는 NHWC 포맷팅을 사용하여 메모리에 저장된다. 채널들이 유사도에 따라 분류되기 때문에, 추론 과정에서 모델을 실행하기 위해 수행되는 메모리 전달들의 횟수가 감소된다(즉, 메모리 대역폭이 감소된다).
본원의 개시에 기초하여 많은 변형이 가능하다는 것을 이해해야 한다. 특징 및 요소가 특정 조합으로 위에서 설명되어 있지만, 각각의 특징 또는 요소는 다른 특징 및 요소 없이 단독으로 또는 다른 특징 및 요소와 함께 또는 이것 없이 다양한 조합으로 사용될 수 있다.
도면에 예시되고/거나 본원에 설명된, (프로세서(102), 입력 드라이버(112), 입력 장치(108), 출력 드라이버(114), 출력 장치(110), 가속 처리 장치(116), 스케줄러(136), 그래픽 처리 파이프라인(134), 계산 유닛(132), 및 SIMD 유닛(138)을 포함하지만 그에 제한되지 않는) 다양한 기능 유닛들은 범용 컴퓨터, 프로세서 또는 프로세서 코어로서, 또는 비일시적인 컴퓨터 판독가능 매체 또는 다른 매체에 저장된, 범용 컴퓨터, 프로세서, 또는 프로세서 코어에 의해 실행가능한 프로그램, 소프트웨어 또는 펌웨어로서 구현될 수 있다. 제공된 방법은 범용 컴퓨터, 프로세서, 또는 프로세서 코어에서 구현될 수 있다. 적합한 프로세서는, 예를 들어, 범용 프로세서, 특수 목적 프로세서, 종래의 프로세서, 디지털 신호 프로세서(DSP), 복수의 마이크로프로세서, DSP 코어와 관련된 하나 이상의 마이크로프로세서, 제어기, 마이크로컨트롤러, ASIC(Application Specific Integrated Circuit), FPGA(Field Programmable Gate Array) 회로, 임의의 다른 유형의 IC(integrated circuit) 및/또는 상태 기계를 포함한다. 이러한 프로세서는 처리된 HDL(hardware description language) 명령어의 결과 및 넷리스트(예컨대 컴퓨터 판독가능 매체에 저장될 수 있는 명령어)를 포함하는 다른 중간 데이터를 사용하여 제조 프로세스를 구성함으로써 제조될 수 있다. 이러한 처리의 결과는 본 개시의 특징을 구현하는 프로세서를 제조하기 위해 반도체 제조 공정에서 사용되는 마스크작업일 수 있다.
본원에 제공된 방법 또는 흐름도는 범용 컴퓨터 또는 프로세서에 의한 실행을 위해 비일시적 컴퓨터 판독가능 저장 매체에 통합된 컴퓨터 프로그램, 소프트웨어, 또는 펌웨어에서 구현될 수 있다. 비일시적 컴퓨터 판독가능 저장 매체의 예는 ROM(read only memory), RAM(random access memory), 레지스터, 캐시 메모리, 반도체 메모리 장치, 내부 하드 디스크 및 탈착식 디스크와 같은 자기 매체, 자기 광학 매체, 및 CD-ROM 디스크 및 DVD(digital versatile disk)와 같은 광학 매체를 포함한다.
Claims (20)
- 기계 학습 신경망 동작을 실행하는 처리 장치에 있어서,
메모리; 및
프로세서를 포함하고, 상기 프로세서는:
상기 기계 학습 신경망 동작의 한 계층에서 입력 데이터를 수신하고;
상기 입력 데이터에 적용될 복수의 분류된 필터를 수신하고;
상기 복수의 분류된 필터를 상기 입력 데이터에 적용하여 복수의 상이한 특징 맵을 생성하고;
상기 특징 맵들의 서로에 대한 유사도에 따라 상기 복수의 상이한 특징 맵을 압축하고,
상기 복수의 상이한 특징 맵을 상기 메모리에 저장하도록 구성되는, 처리 장치. - 제1항에 있어서,
상기 기계 학습 신경망 동작은 추론 과정에서 실행되고, 상기 분류된 필터들은 상기 추론 과정에서 상기 기계 학습 신경망 동작을 실행하기 전에 학습하는 동안 분류되는, 처리 장치. - 제1항에 있어서,
상기 프로세서는 NHWC 포맷팅을 사용하여 상기 복수의 상이한 특징 맵을 상기 메모리에 저장하도록 구성되는, 처리 장치. - 제1항에 있어서,
상기 프로세서는 델타-기반 압축을 사용하여 상기 복수의 상이한 특징 맵을 압축하도록 구성되는, 처리 장치. - 제1항에 있어서,
상기 입력 데이터는 텐서인, 처리 장치. - 제5항에 있어서,
상기 상이한 특징 맵들의 유사도는 서로에 대한 상기 상이한 특징 맵들의 평균 요소 진폭의 유사도인, 처리 장치. - 제1항에 있어서,
상기 프로세서는 링크를 통해 상기 압축된 상이한 특징 맵들을 전달함으로써 상기 압축된 상이한 특징 맵들을 상기 유사도에 따라 상기 메모리에 저장하도록 더 구성되고,
상기 분류된 필터들로부터 생성된 상기 압축된 상이한 특징 맵들을 저장하기 위해 사용되는 메모리 전달들의 양은 비분류된 필터들로부터 생성된 상기 압축된 상이한 특징 맵들을 저장하는 데 사용되는 메모리 전달들의 양보다 적은, 처리 장치. - 제1항에 있어서,
상기 프로세서는 상기 입력 데이터가 압축 포맷으로 상기 메모리로부터 판독될 때 상기 입력 데이터를 압축해제하도록 더 구성되는, 처리 장치. - 제8항에 있어서,
상기 프로세서는 상기 압축 포맷으로 상기 메모리에 상기 입력 데이터를 기록하고, 비압축 포맷으로 상기 기계 학습 신경망의 다음 계층에 대한 다음 입력 데이터로서 상기 입력 데이터를 사용하도록 더 구성되는, 처리 장치. - 기계 학습 신경망의 한 계층에서 입력 데이터를 수신하는 단계;
상기 입력 데이터에 적용될 복수의 분류된 필터를 수신하는 단계;
상기 복수의 분류된 필터를 상기 입력 데이터에 적용하여 복수의 상이한 특징 맵을 생성하는 단계;
상기 특징 맵들의 서로에 대한 유사도에 따라 상기 복수의 상이한 특징 맵을 압축하는 단계; 및
상기 복수의 상이한 특징 맵을 메모리에 저장하는 단계를 포함하는, 기계 학습 처리 방법. - 제10항에 있어서,
기계 학습 신경망 동작은 추론 과정에서 실행되고, 상기 분류된 필터들은 상기 추론 과정에서 상기 기계 학습 신경망 동작을 실행하기 전에 학습하는 동안 분류되는, 기계 학습 처리 방법. - 제10항에 있어서,
NHWC 포맷팅을 사용하여 상기 복수의 상이한 특징 맵을 상기 메모리에 저장하는 단계를 더 포함하는, 기계 학습 처리 방법. - 제10항에 있어서,
델타-기반 압축을 사용하여 상기 복수의 상이한 특징 맵을 압축하는 단계를 더 포함하는, 기계 학습 처리 방법. - 제10항에 있어서,
상기 입력 데이터는 텐서인, 기계 학습 처리 방법. - 제14항에 있어서,
각 특징 맵은 상기 텐서의 상이한 표현이고,
상기 상이한 특징 맵들의 유사도는 서로에 대한 상기 상이한 특징 맵들의 평균 요소 진폭의 유사도인, 기계 학습 처리 방법. - 제10항에 있어서,
링크를 통해 상기 압축된 상이한 특징 맵들을 전달함으로써 상기 압축된 상이한 특징 맵들을 상기 유사도에 따라 상기 메모리에 저장하는 단계를 더 포함하고,
상기 분류된 필터들로부터 생성된 상기 압축된 상이한 특징 맵들을 저장하기 위해 사용되는 메모리 전달들의 양은 비분류된 필터들로부터 생성된 상기 압축된 상이한 특징 맵들을 저장하는 데 사용되는 메모리 전달들의 양보다 적은, 기계 학습 처리 방법. - 제10항에 있어서,
상기 입력 데이터가 압축 포맷으로 상기 메모리로부터 판독될 때 상기 입력 데이터를 압축해제하는 단계를 더 포함하는, 기계 학습 처리 방법. - 제17항에 있어서,
상기 압축 포맷으로 상기 메모리에 상기 입력 데이터를 기록하고, 비압축 포맷으로 상기 기계 학습 신경망의 다음 계층에 대한 다음 입력 데이터로서 상기 입력 데이터를 사용하는 단계를 더 포함하는, 기계 학습 처리 방법. - 컴퓨터가 기계 학습 처리 방법을 실행하게 하기 위한 저장된 명령어들을 갖는 비일시적 컴퓨터 판독가능 매체에 있어서, 상기 기계 학습 처리 방법은,
기계 학습 신경망의 한 계층에서 입력 데이터를 수신하는 단계;
상기 입력 데이터에 적용될 복수의 분류된 필터를 수신하는 단계;
상기 입력 데이터를 압축해제하는 단계;
상기 복수의 분류된 필터를 상기 입력 데이터에 적용하여 복수의 상이한 특징 맵을 생성하는 단계;
상기 특징 맵들의 서로에 대한 유사도에 따라 상기 복수의 상이한 특징 맵을 압축하는 단계; 및
상기 복수의 상이한 특징 맵을 메모리에 저장하는 단계를 포함하는, 비일시적 컴퓨터 판독가능 매체. - 제19항에 있어서,
기계 학습 신경망 동작은 추론 과정에서 실행되고, 상기 분류된 필터들은 상기 추론 과정에서 상기 기계 학습 신경망 동작을 실행하기 전에 학습하는 동안 분류되는, 비일시적 컴퓨터 판독가능 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/836,785 | 2020-03-31 | ||
US16/836,785 US11568248B2 (en) | 2020-03-31 | 2020-03-31 | Feature reordering based on similarity for improved memory compression transfers during machine learning jobs |
PCT/IB2021/051882 WO2021198810A1 (en) | 2020-03-31 | 2021-03-05 | Feature reordering based on similarity for improved memory compression transfers during machine learning jobs |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220161339A true KR20220161339A (ko) | 2022-12-06 |
Family
ID=77857242
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227034237A KR20220161339A (ko) | 2020-03-31 | 2021-03-05 | 기계 학습 작업시 개선된 메모리 압축 전달을 위한 유사도에 기초한 특징 재정렬 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11568248B2 (ko) |
EP (1) | EP4128065A4 (ko) |
JP (1) | JP2023519564A (ko) |
KR (1) | KR20220161339A (ko) |
CN (1) | CN115362450A (ko) |
WO (1) | WO2021198810A1 (ko) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11551089B2 (en) * | 2020-03-31 | 2023-01-10 | Ati Technologies Ulc | Feature reordering based on sparsity for improved memory compression transfers during machine learning jobs |
CN113971453A (zh) * | 2020-07-22 | 2022-01-25 | 上海寒武纪信息科技有限公司 | 一种数据归一化处理方法、存储介质和计算机设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10511858B2 (en) * | 2016-07-13 | 2019-12-17 | Ati Technologies Ulc | Bit packing for delta color compression |
KR102301232B1 (ko) | 2017-05-31 | 2021-09-10 | 삼성전자주식회사 | 다채널 특징맵 영상을 처리하는 방법 및 장치 |
WO2019143026A1 (ko) * | 2018-01-16 | 2019-07-25 | 한국과학기술원 | 특징맵 압축을 이용한 이미지 처리 방법 및 장치 |
US11030485B2 (en) * | 2018-03-30 | 2021-06-08 | Arizona Board Of Regents On Behalf Of Arizona State University | Systems and methods for feature transformation, correction and regeneration for robust sensing, transmission, computer vision, recognition and classification |
-
2020
- 2020-03-31 US US16/836,785 patent/US11568248B2/en active Active
-
2021
- 2021-03-05 KR KR1020227034237A patent/KR20220161339A/ko active Search and Examination
- 2021-03-05 EP EP21779305.8A patent/EP4128065A4/en active Pending
- 2021-03-05 JP JP2022556479A patent/JP2023519564A/ja active Pending
- 2021-03-05 CN CN202180026410.1A patent/CN115362450A/zh active Pending
- 2021-03-05 WO PCT/IB2021/051882 patent/WO2021198810A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
US20210303994A1 (en) | 2021-09-30 |
CN115362450A (zh) | 2022-11-18 |
JP2023519564A (ja) | 2023-05-11 |
WO2021198810A1 (en) | 2021-10-07 |
US11568248B2 (en) | 2023-01-31 |
EP4128065A4 (en) | 2024-05-01 |
EP4128065A1 (en) | 2023-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11741350B2 (en) | Efficient utilization of processing element array | |
Catanzaro et al. | Fast support vector machine training and classification on graphics processors | |
US8359281B2 (en) | System and method for parallelizing and accelerating learning machine training and classification using a massively parallel accelerator | |
CN111465943B (zh) | 一种集成电路和用于神经网络处理的方法 | |
Daghero et al. | Energy-efficient deep learning inference on edge devices | |
KR20220162727A (ko) | 기계 학습 작업시 개선된 메모리 압축 전달을 위한 희소성에 기초한 특징 재정렬 | |
US11144291B1 (en) | Loop-oriented neural network compilation | |
US12073199B2 (en) | Reducing computation in neural networks using self-modifying code | |
US12079734B1 (en) | Compilation time reduction for memory and compute bound neural networks | |
US11567778B2 (en) | Neural network operation reordering for parallel execution | |
KR20220161339A (ko) | 기계 학습 작업시 개선된 메모리 압축 전달을 위한 유사도에 기초한 특징 재정렬 | |
JP2022546271A (ja) | カーネルチューニングパラメータを予測するための方法及び装置 | |
Ma et al. | Accelerating deep neural network filter pruning with mask-aware convolutional computations on modern CPUs | |
US20230004385A1 (en) | Accelerated processing device and method of sharing data for machine learning | |
Nere et al. | Simulating cortical networks on heterogeneous multi-GPU systems | |
US12008469B1 (en) | Acceleration of neural networks with stacks of convolutional layers | |
US11782706B1 (en) | Reconfigurable neural network processing based on subgraph recognition | |
US11934876B1 (en) | Compiler-driven storage allocation of runtime values | |
US11809849B1 (en) | Global modulo allocation in neural network compilation | |
US11809981B1 (en) | Performing hardware operator fusion | |
Mustapha et al. | Research Article Evaluation of Parallel Self-organizing Map Using Heterogeneous System Platform | |
US20240303471A1 (en) | Activation function for homomorphically-encrypted neural networks | |
Vasilciuc | Data Visualization for Benchmarking Neural Networks in Different Hardware Platforms | |
Pan et al. | Hardware Acceleration of Explainable AI |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination |