KR20240042505A - 신경망의 뱅크 균형 잡힌 희소 활성화 및 공동-활성화-가중치-희소 훈련을 위한 시스템 및 방법 - Google Patents

신경망의 뱅크 균형 잡힌 희소 활성화 및 공동-활성화-가중치-희소 훈련을 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20240042505A
KR20240042505A KR1020247007848A KR20247007848A KR20240042505A KR 20240042505 A KR20240042505 A KR 20240042505A KR 1020247007848 A KR1020247007848 A KR 1020247007848A KR 20247007848 A KR20247007848 A KR 20247007848A KR 20240042505 A KR20240042505 A KR 20240042505A
Authority
KR
South Korea
Prior art keywords
tensor
sparse
differential
weight
dense
Prior art date
Application number
KR1020247007848A
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 KR20240042505A publication Critical patent/KR20240042505A/ko

Links

Classifications

    • 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/0495Quantised networks; Sparse networks; Compressed networks
    • 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/048Activation functions
    • 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/0499Feedforward networks
    • 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
    • G06N3/084Backpropagation, e.g. using gradient descent

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Complex Calculations (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Measuring Volume Flow (AREA)
  • Measuring Pulse, Heart Rate, Blood Pressure Or Blood Flow (AREA)
  • Rehabilitation Tools (AREA)

Abstract

컴퓨터 저장 매체에 인코딩된 컴퓨터 프로그램을 포함하여 신경망 훈련을 최적화하기 위한 방법, 시스템 및 장치가 설명된다. 방법은 신경망의 현재 계층에서 순방향 전파 동안, 현재 계층의 희소 가중치 텐서와 희소 입력 텐서에 기초하여 조밀 출력 텐서를 생성하는 단계, 및 조밀 출력 텐서를 희소화하여 희소 출력 텐서를 획득하는 단계; 신경망의 현재 계층에서 역방향 전파 동안, 희소 출력 텐서에 기초하여 제1 희소 미분 텐서를 결정하는 단계, 현재 계층의 희소 가중치 텐서와 제1 희소 미분 텐서에 기초하여 조밀 미분 텐서를 획득하는 단계, 및 조밀 미분 텐서를 희소화하여 제2 희소 미분 텐서를 획득하는 단계; 및 제1 희소 미분 텐서와 제2 희소 미분 텐서에 기초하여 신경망의 가중치 텐서를 훈련하는 단계를 포함할 수 있다.

Description

신경망의 뱅크 균형 잡힌 희소 활성화 및 공동-활성화-가중치-희소 훈련을 위한 시스템 및 방법
본 발명은 일반적으로 인공 지능(AI) 모델을 훈련시키는 것에 관한 것으로, 보다 상세하게는 뱅크 균형 잡힌 신경망(bank-balanced neural network)(NN)의 공동-활성화-가중치-희소(이하 공동-A-W-희소라고 함) 훈련에 관한 것이다.
신경망(NN)은 현재 이미지 및 비디오 인식, 추천 시스템, 분류, 의료 이미지 분석, 및 자연어 처리와 같은 많은 현대 인공 지능(AI) 응용의 기초이다. 추론을 위해 NN을 전개하기 전에 먼저 훈련하여야 한다. NN 모델을 훈련하는 것은 훈련 데이터 세트를 사용하여 모델 가중치를 반복적으로 업데이트하여 입력과 출력의 정확한 매핑을 만드는 것을 포함한다. 오늘날의 NN 훈련 프로세스는 일반적으로 순방향 전파(forward propagation)와 역방향 전파(backward propagation)의 수많은 반복을 포함한다. 계산될 (예를 들어, CNN에서 컨볼루션될) 엄청난 양의 훈련 데이터와, 각 훈련 반복 동안 훈련/업데이트될 가중치의 수로 인해 NN 모델을 훈련하는 것은 계산 집약적이어서 비용이 많이 든다.
최근에 훈련된 NN 모델의 크기와, 추론을 위해 계산될 데이터의 양을 줄이기 위해 NN의 가중치 텐서를 프루닝(pruning)하는 것과 같이 NN에 희소성(sparsity)을 도입하여 NN의 효율성을 향상시키기 위한 다양한 접근 방식이 개발되었다. 그러나 NN의 훈련 속도를 높이기 위해 희소성을 완전히 이용하지 않았다. 본 발명은 NN 훈련 프로세스의 효율성을 향상시키기 위해 순방향 전파와 역방향 전파 동안 희소성을 도입하는 새로운 솔루션을 설명한다. 또한, 가중치 텐서와 활성화 텐서에 도입된 희소성은 하드웨어 효율성을 최적화하기 위해 뱅크 균형을 이루도록 조정된다.
본 명세서의 다양한 실시형태는 신경망 훈련을 최적화하기 위한 시스템, 방법 및 비일시적 컴퓨터 판독 가능 매체를 포함할 수 있다.
일 양태에 따르면, 방법은, 신경망의 현재 계층(current layer)에서 순방향 전파 동안, 현재 계층의 희소 가중치 텐서(sparse weight tensor)와 희소 입력 텐서에 기초하여 조밀 출력 텐서(dense output tensor)를 생성하는 단계, 및 조밀 출력 텐서를 희소화하여 희소 출력 텐서를 획득하는 단계; 신경망의 현재 계층에서 역방향 전파 동안, 희소 출력 텐서에 기초하여 제1 희소 미분 텐서(sparse derivative tensor)를 결정하는 단계, 현재 계층의 희소 가중치 텐서와 제1 희소 미분 텐서에 기초하여 조밀 미분 텐서를 획득하는 단계, 및 조밀 미분 텐서를 희소화하여 제2 희소 미분 텐서를 획득하는 단계; 및 제1 희소 미분 텐서와 제2 희소 미분 텐서에 기초하여 신경망의 가중치 텐서를 훈련하는 단계를 포함할 수 있다.
일부 실시형태에서, 조밀 출력 텐서는 현재 계층의 희소 가중치 텐서와 희소 입력 텐서의 텐서 곱을 포함하고; 조밀 미분 텐서는 현재 계층의 희소 가중치 텐서와 제1 희소 미분 텐서의 텐서 곱(tensor product)을 포함한다.
일부 실시형태에서, 신경망의 가중치 텐서를 훈련하는 단계는 제2 희소 미분 텐서에 기초하여 이전 계층에 대한 새로운 희소 가중치 텐서를 결정하는 단계를 포함한다.
일부 실시형태에서, 신경망의 가중치 텐서를 훈련하는 단계는 제1 희소 미분 텐서와 희소 입력 텐서에 기초하여 현재 계층에 대한 새로운 희소 가중치 텐서를 결정하는 단계를 포함한다.
일부 실시형태에서, 신경망의 현재 계층은 가중치 텐서 마스크에 대응하고, 현재 계층에 대한 새로운 희소 가중치 텐서를 결정하는 단계는 희소 입력 텐서의 전치(transpose)와 제1 희소 미분 텐서의 텐서 곱에 기초하여 조밀 미분 가중치 텐서를 획득하는 단계; 및 조밀 미분 가중치 텐서에 가중치 텐서 마스크를 적용하여 조밀 미분 가중치 텐서에서 하나 이상의 가중치를 비활성화함으로써 현재 계층에 대한 새로운 희소 가중치 텐서를 획득하는 단계를 포함한다.
일부 실시형태에서, 조밀 미분 가중치 텐서는 신경망의 현재 계층에서 복수의 가중치 매개변수에 대응하는 복수의 구배를 포함한다.
일부 실시형태에서, 현재 계층에 대한 새로운 희소 가중치 텐서를 결정하는 단계는 희소 입력 텐서의 전치와 제1 희소 미분 텐서의 텐서 곱에 기초하여 조밀 미분 가중치 텐서를 획득하는 단계; 및 조밀 미분 가중치 텐서에 상위-K 활성화 함수(top-K activation function)를 적용하여 현재 계층에 대한 새로운 희소 가중치 텐서를 획득하는 단계를 포함한다.
[일부 실시형태에서, 상위-K 활성화 함수를 적용하는 것은 조밀 미분 가중치 텐서의 각 행 또는 열을 프로세서의 메모리 뱅크에 대응하는 복수의 뱅크로 분할하는 것; 및 복수의 뱅크 각각에 대해, 뱅크의 상위-K 가중치를 결정하고, 상위-K 가중치가 아닌 뱅크의 가중치를 비활성화하는 것을 포함한다.
일부 실시형태에서, 조밀 출력 텐서를 희소화하여 희소 출력 텐서를 획득하는 단계는 조밀 출력 텐서에 상위-K 활성화 함수를 적용하여 희소 출력 텐서를 획득하는 단계를 포함하고; 조밀 미분 텐서를 희소화하여 제2 희소 미분 텐서를 획득하는 단계는 조밀 미분 텐서에 상위-K 활성화 함수를 적용하여 제2 희소 미분 텐서를 획득하는 단계를 포함한다.
일부 실시형태에서, 신경망의 현재 계층은 조밀 가중치 텐서를 포함하고, 가중치 텐서 마스크에 대응하고, 현재 계층의 희소 가중치 텐서는, 조밀 가중치 텐서에 가중치 텐서 마스크를 적용하여 조밀 가중치 텐서에서 하나 이상의 가중치를 비활성화함으로써 희소 가중치 텐서를 획득하는 것에 의해 획득된다.
다른 양태에 따르면, 신경망 훈련을 최적화하기 위한 시스템이 설명된다. 시스템은 하나 이상의 프로세서와, 하나 이상의 프로세서에 결합되고 하나 이상의 프로세서에 의해 실행 가능한 명령어로 구성된 하나 이상의 비일시적 컴퓨터 판독 가능 메모리를 포함할 수 있고, 명령어는, 시스템으로 하여금, 신경망의 현재 계층에서 순방향 전파 동안, 현재 계층의 희소 가중치 텐서와 희소 입력 텐서에 기초하여 조밀 출력 텐서를 생성하는 단계; 및 조밀 출력 텐서를 희소화하여 희소 출력 텐서를 획득하는 단계; 신경망의 현재 계층에서 역방향 전파 동안, 희소 출력 텐서에 기초하여 제1 희소 미분 텐서를 결정하는 단계; 현재 계층의 희소 가중치 텐서와 제1 희소 미분 텐서에 기초하여 조밀 미분 텐서를 획득하는 단계; 및 조밀 미분 텐서를 희소화하여 제2 희소 미분 텐서를 획득하는 단계; 및 제1 희소 미분 텐서와 제2 희소 미분 텐서에 기초하여 신경망의 가중치 텐서를 훈련하는 단계를 포함하는 동작을 수행하게 할 수 있다.
또 다른 양태에 따르면, 신경망 훈련을 최적화하기 위한 비일시적 컴퓨터 판독 가능 저장 매체가 설명된다. 비일시적 컴퓨터 판독 가능 저장 매체는 하나 이상의 프로세서에 의해 실행 가능한 명령어로 구성될 수 있고, 명령어는, 하나 이상의 프로세서로 하여금, 신경망의 현재 계층에서 순방향 전파 동안 현재 계층의 희소 가중치 텐서와 희소 입력 텐서에 기초하여 조밀 출력 텐서를 생성하는 단계; 및 조밀 출력 텐서를 희소화하여 희소 출력 텐서를 획득하는 단계; 신경망의 현재 계층에서 역방향 전파 동안, 희소 출력 텐서에 기초하여 제1 희소 미분 텐서를 결정하는 단계; 현재 계층의 희소 가중치 텐서와 제1 희소 미분 텐서에 기초하여 조밀 미분 텐서를 획득하는 단계; 및 조밀 미분 텐서를 희소화하여 제2 희소 미분 텐서를 획득하는 단계; 및 제1 희소 미분 텐서와 제2 희소 미분 텐서에 기초하여 신경망의 가중치 텐서를 훈련하는 단계를 포함하는 동작을 수행하게 할 수 있다.
본 명세서에 개시된 시스템, 방법, 비일시적 컴퓨터 판독 가능 매체의 이러한 특징 및 다른 특징뿐만 아니라 관련 구조 요소의 동작 방법과 기능, 및 부품의 조합과 제조 경제성은, 동일한 참조 부호가 다양한 도면에서 대응하는 부분을 나타내는, 모두 본 명세서의 일부를 형성하는 첨부된 도면을 참조하여 이후 설명 및 첨부된 청구범위를 고려할 때, 더욱 명백해질 것이다. 그러나 도면은 단지 예시적인 것이고 설명을 위한 것일 뿐, 본 발명의 한계를 한정하려고 의도된 것이 아닌 것으로 명백히 이해되어야 한다.
도 1은 다양한 실시형태에 따른 신경망(NN)의 예시적인 훈련 프로세스를 도시한다.
도 2는 다양한 실시형태에 따른 NN의 예시적인 공동-AW-희소 훈련을 도시한다.
도 3은 다양한 실시형태에 따른 NN의 공동-AW-희소 훈련에서 예시적인 순방향 전파를 도시한다.
도 4는 다양한 실시형태에 따른 NN의 공동-AW-희소 훈련에서 예시적인 역방향 전파를 도시한다.
도 5a는 다양한 실시형태에 따른 뱅크 균형 잡힌 NN의 공동-AW-희소 훈련에서 예시적인 가중치 구배 업데이트 프로세스를 도시한다.
도 5b는 다양한 실시형태에 따른 뱅크 균형 잡힌 NN의 공동-AW-희소 훈련에서 가중치 구배를 업데이트하는 예시적인 방법을 도시한다.
도 5c는 다양한 실시형태에 따른 뱅크 균형 잡힌 NN의 공동-AW-희소 훈련에서 가중치 구배를 업데이트하는 또 다른 예시적인 방법을 도시한다.
도 6a는 다양한 실시형태에 따른 뱅크 균형 잡힌 희소화된 텐서를 생성하기 위한 예시적인 2D 희소화를 도시한다.
도 6b는 다양한 실시형태에 따른 뱅크 균형 잡힌 희소화된 텐서를 생성하기 위한 예시적인 3D 희소화를 도시한다.
도 7은 다양한 실시형태에 따른 뱅크 균형 잡힌 NN의 공동-AW-희소 훈련을 위한 예시적인 방법을 도시한다.
도 8은 본 명세서에 설명된 임의의 실시형태가 구현될 수 있는 예시적인 컴퓨터 시스템을 도시한다.
본 명세서에 설명된 실시형태는 뱅크 균형 잡힌 NN의 공동-활성화-가중치-희소(이하 공동-A-W-희소라고 함) 훈련을 위한 방법, 시스템, 장치를 제공한다. 이하의 설명에서는, 본 발명의 구체적이고 비제한적인 실시형태가 도면을 참조하여 설명될 것이다. 본 명세서에 개시된 임의의 실시형태의 특정 특징 및 양태는 본 명세서에 개시된 임의의 다른 실시형태의 특정 특징 및 양태와 함께 사용되고/되거나 결합될 수 있다. 또한 이러한 실시형태는 예시에 불과하며 본 발명의 범위 내에 있는 소수의 실시형태를 단지 예시하는 것임을 이해해야 한다. 본 발명이 속하는 기술 분야의 당업자에게 명백한 다양한 변경 및 수정은 첨부된 청구범위에 추가로 한정된 바와 같은 본 발명의 사상, 범위 및 고려 사항 내에 있는 것으로 간주된다.
도 1은 다양한 실시형태에 따른 신경망(NN)의 예시적인 훈련 프로세스(100)를 도시한다. 본 명세서에 설명된 실시형태는 훈련 효율성을 향상시키기 위해 도 1의 예시적인 훈련 프로세스 또는 다른 적합한 NN 훈련 방법의 일부로서 구현될 수 있다.
도 1에 도시된 바와 같이, 예시적인 NN은 복수의 계층(130), 예를 들어, 계층(1, 2, 3, ..., L) 등을 포함한다. 각 계층(130)은 가중치 텐서, 바이어스 텐서 등과 같은 복수의 매개변수를 포함할 수 있다. "텐서"는 랭크-1 텐서(벡터), 랭크-2 텐서(행렬), 및 상위 랭크 텐서를 포함하여 딥러닝 영역의 기본 데이터 구조를 의미한다.
예시적인 훈련 프로세스(100)는 NN의 매개변수를 훈련하기 위해 복수의 반복을 포함한다. 각 반복은 순방향 전파(또는 순방향 전달)(110) 및 역방향 전파(또는 역방향 전달)(120)를 포함할 수 있다. 순방향 전파(110)는 입력 계층으로부터 출력 계층으로 순서대로 신경망에 대한 중간 변수(출력 포함)의 계산 및 저장을 포함한다. 역방향 전파(120)는 NN의 매개변수를 업데이트하기 위한 기초로서 사용될 수 있는 NN 매개변수의 구배를 계산하는 것을 포함한다.
예시를 위해, 도 1의 계층(L)은 순방향 전파(110) 및 역방향 전파(120)와 관련된 동작을 설명하기 위한 예로서 선택된 것이다. 이전 L-1 계층의 입력 텐서는 이고, 계층(L)은 가중치 항(예를 들어, 가중치 텐서)()과 바이어스 항(예를 들어, 바이어스 텐서)()을 가진다고 가정한다. 중간 변수는 로 계산되고 표시될 수 있고, 여기서 는 모두 텐서이고, 의 텐서 곱이다. 활성화 함수()를 통해 중간 변수()를 실행한 후 활성화 텐서는 로 획득될 수 있다. 이 활성화 텐서()는 L+1 (다음) 계층에서 순방향 전파를 위한 입력으로 사용될 수 있다. 일부 경우에, z[L]은 역방향 전파(120) 동안 계산을 위한 중간 변수로서 캐시에 저장(예를 들어, 반복 계산 방지)될 수 있다. 또한, 역방향 전파(120) 동안 불필요한 외부 메모리 액세스를 피하기 위해 가중치 텐서()와 바이어스 텐서()도 또한 캐시에 저장될 수 있다. 순방향 전파 프로세스는 NN의 출력 계층으로 계속된다. 출력 계층의 출력 텐서는 손실(예를 들어, 현재 매개변수를 사용하여 정량화된 NN의 성능)을 결정하기 위해 훈련 데이터의 훈련 라벨(들)과 함께 손실 함수에 공급될 수 있다. 그런 다음 손실을 정규화 항(예를 들어, L2 정규화)과 결합하여 목적 함수를 결정할 수 있다.
역방향 전파(120)의 목적은 구배를 계산하는 것이다. 그런 다음 구배를 사용하여 NN의 대응하는 가중치 매개변수를 업데이트하여 손실을 최소화하거나 목적 함수를 최대화할 수 있다. 역방향 전파(120) 동안, 활성화 텐서의 미분은 모든 계층을 통해 반복적으로 계산될 수 있다. 예를 들어, NN의 L번째 계층에서 L번째 계층에 대한 활성화 텐서의 미분은 로 획득될 수 있다. L번째 계층의 가중치 텐서()에 을 곱하여 (L-1)번째 계층에 대한 활성화 텐서의 미분을 획득할 수 있다. 이 프로세스는 NN의 제1 계층까지 계속될 수 있다. 여기서 곱셈은 두 텐서의 텐서 곱을 획득하는 연산을 의미할 수 있다. 계층(L)에서 입력 텐서()의 전치와 미분()의 텐서 곱은 로 표시되는 L번째 계층의 가중치 텐서의 미분으로 계산될 수 있다. 에 기초하여 L번째 계층의 가중치 매개변수는 이에 따라 훈련 데이터에 맞게 업데이트될 수 있다. 위에서 설명한 미분은 대응하는 변수의 구배라고 지칭될 수도 있음에 유의해야 한다.
일부 실시형태에서는, 순방향 전파, 역방향 전파 및 가중치 구배 계산을 포함하는 전술한 각 단계에 희소성을 도입하여 훈련 효율을 향상시킬 수 있다. 기존의 희소화 기반 NN 훈련 방법은 일반적으로 (예를 들어, 순방향 전달에서 텐서를 프루닝함으로써) 순방향 전파에 중점을 두지만 역방향 전파는 무시한다. 아래에 설명된 실시형태에서는 미분 텐서를 포함한 모든 텐서를 순방향 전파와 역방향 전파 모두에서 프루닝하여 훈련 효율성을 최적화하는 방법 및 시스템을 설명한다. 또한, 역방향 전파의 각 라운드 후 각 계층에서 업데이트된 가중치 텐서는 결과적인 훈련된 NN이 프로세서(예를 들어, GPU, TPU, NPU)의 메모리 뱅크와 정렬되는 것과 같이 기본 하드웨어 아키텍처에 대해 최적화되도록 뱅크 균형 잡힌 방식으로 프루닝된다. 뱅크 균형 잡힌 NN은 멀티 코어 시스템을 사용하여 균형 잡힌 병렬 처리(코어의 로드 균형)를 지원하고, 뱅크 충돌을 최소화하여 추론 동안 메모리 액세스를 최적화(일부 뱅크에 대한 액세스 정체 방지)할 수 있다. 뱅크에 정보를 저장하는 메모리 종류의 경우, 동일한 뱅크에 랜덤 주소로 연속적으로 액세스하면 뱅크 충돌이 발생할 수 있다. 예를 들어, 동일한 뱅크의 서로 다른 행에 두 번의 연속 액세스가 있는 경우 이 두 액세스는 동시에 수행되지 않을 수 있다. 실제로 많은 유형의 메모리(예를 들어, DDR)의 경우 동일한 뱅크의 각 메모리 액세스 간에 다수의 사이클의 지연이 있을 수 있다. 예를 들어, 다음 메모리 액세스가 동일한 뱅크의 다른 행에 있는 경우, 다음 메모리 액세스는 액세스가 완료되기 전에 12 사이클을 기다려야 할 수 있다. 그 결과 뱅크 충돌로 인해 시스템이 크게 지연될 수 있다.
도 2는 다양한 실시형태에 따른 NN의 예시적인 공동-AW-희소 훈련을 도시한다. 도 2에 도시된 훈련 프로세스는 하나의 NN 계층에서 발생한 순방향 전파(110), 역방향 전파(120) 및 가중치 구배 업데이트(130)를 포함한다. 도 2에 사용된 인덱스(index)는 예시를 위한 것이고, 단지 계층의 상대 위치를 나타내기 위한 것일 뿐, 이는 NN의 다른 계층으로 일반화될 수 있다.
순방향 전파(110) 동안, 입력 활성화 텐서는 이전 계층으로부터 수신될 수 있다. 일부 실시형태에서, 이 입력 활성화 텐서는 도 2에서 로 표시된 희소 입력 텐서로 프루닝될 수 있고, 여기서 인덱스(1)는 현재 계층이 계층(1)임을 나타낸다. 그런 다음 텐서 곱셈을 사용하여 희소 입력 텐서를 계층(1)의 가중치 텐서와 곱하여 다음 계층에 대한 출력 텐서를 획득할 수 있다. 일부 실시형태에서, 현재 계층(1)의 가중치 텐서는 로 표시되는 희소 가중치 텐서로 프루닝되어, NN의 크기와, 처리될 데이터의 양을 줄일 수 있다. 도 2에 도시된 바와 같이, 두 개의 희소 텐서, 즉 에 기초하여 생성된 텐서 곱()은 텐서 곱셈의 특성으로 인해 조밀할 수 있다.
일부 실시형태에서, 이 조밀 텐서 곱()은 0이 아닌 값을 줄이고 로 표시된 희소 출력 텐서를 획득하기 위해 활성화 동작 및/또는 상위-K 샘플링을 거칠 수 있고, 여기서 인덱스(2)는 가 순방향 전파 프로세스(110)에서 다음 계층에 대한 입력 텐서로 사용될 것이다. 활성화 동작은 NN에 비선형성을 도입하는 비선형 활성화 함수를 포함할 수 있다. 예시적인 비선형 활성화 함수에는 시그모이드(sigmoid), 쌍곡선 탄젠트 및 정류된 선형 단위(ReLU)가 포함된다. ReLU 함수는 요소별 활성화 함수를 적용하여 조밀 텐서 곱()의 일부 출력(활성화)을 필터링할 수 있다. ReLU 함수는 출력 활성화 텐서의 크기를 변경할 수 없지만 활성 뉴런의 수를 제한하여 이후 계층의 계산 효율성을 향상시킬 수 있다. 상위-K 샘플링은 그 값을 유지하기 위해 가장 큰 크기를 갖는 조밀 텐서 곱() 내의 각 뱅크에서 K 값을 선택하고, 뱅크의 다른 값을 0으로 설정하는 것을 포함할 수 있다. 이러한 활성화 및/또는 상위-k 동작은 절대값이 작은 중요하지 않은 값/특징만이 0으로 설정되거나 프루닝되므로 정확도를 희생하지 않고 훈련 동안 텐서의 공간(footprint)을 효과적으로 줄인다.
전술한 순방향 전파(110)는 계속되어 NN의 마지막 계층(예를 들어, 출력 계층)에서 종료된다. 이후, 역방향 전파(120)는 NN의 가중치 및/또는 다른 매개변수를 업데이트하기 위해 구배를 계산하기 위해 역방향으로 (예를 들어, NN의 마지막 계층으로부터 제1 계층으로) 수행될 수 있다. 일부 실시형태에서, 도 2에서 NN의 계층(1)에서 역방향 전파(120)는 희소 출력 텐서()에 기초하여 로 표시된 미분 텐서를 계산하는 것으로 시작할 수 있다. 는 희소하므로 미분 텐서()도 희소하다. 여기서, 미분 텐서는 희소 출력 텐서()에서 0이 아닌 값들 각각에 대해 미분 연산을 수행함으로써 획득될 수 있다. 일부 실시형태에서, 이 미분 텐서()는 두 가지 방식으로 사용될 수 있다.
먼저, 이것은 역방향 전파(120)를 위한 중간값으로 사용될 수 있다. 예를 들어, 계층(1)의 희소 가중치 텐서의 텐서 곱은 희소 미분 텐서()와 곱해져 희소 입력 텐서()의 미분 버전이 획득될 수 있고, 이는 로 표시될 수 있다. 위에서 설명한 바와 같이 두 희소 텐서, 예를 들어, 의 곱은 조밀할 수 있다. 일부 실시형태에서, 활성화 및/또는 상위-K 샘플링이 적용되어 을 프루닝하여 이전 계층(예를 들어, 계층 0)에 대한 희소 미분 텐서()를 획득할 수 있다. 희소 미분 텐서()는 역방향 전파(120)의 다음 단계에 사용될 수 있다.
둘째, 은 계층(1)의 가중치 구배(130)를 업데이트하는 데 사용될 수 있다. 예를 들어, 도 2에 도시된 바와 같이, 계층(1)의 희소 입력 텐서()과 계층(1)의 희소 미분 텐서()의 텐서 곱은 로 표시된, 가중치 매개변수의 구배를 나타내는 조밀 텐서일 수 있다. 가중치 매개변수의 구배()는 가중치 매개변수를 업데이트하기 위해 희소 구배 텐서로 추가로 프루닝될 수 있다.
도시된 바와 같이, NN의 전술한 공동-AW-희소 훈련은 순방향 전파(110)의 단계(예를 들어, 로 프루닝하는 활성화 및/또는 상위-K 동작)와, 역방향 전파(120)(예를 들어, 으로 프루닝하는 활성화 및/또는 상위-K 동작)의 단계를 포함하여 훈련의 모든 단계에서 희소성을 활용한다. 도 5는 가중치 구배 업데이트 프로세스(130)를 업데이트할 때 희소성을 도입하는 방법을 추가로 설명한다.
도 3은 다양한 실시형태에 따른 NN의 공동-AW-희소 훈련에서 예시적인 순방향 전파를 도시한다. 도 3에 도시된 프로세스는 도 2의 순방향 전파(110)에 대한 보다 상세한 사항을 제공한다. 도 3의 값과 표기는 예시를 위한 것이다.
도 3에서, 희소 입력 텐서()는 NN의 현재 계층에서 현재 계층의 가중치 텐서()와 계산(예를 들어, 행렬 곱셈)을 수행하기 위해 수신된다. 도 3은 텐서()를 모두 2D 행렬로 보여준다. 일부 실시형태에서, 가중치 텐서()는 가중치 텐서의 가중치 중 일부를 가리는 희소 가중치 텐서 마스크를 적용함으로써 프루닝될 수 있다. 가려지는 가중치는 0으로 설정되거나 비활성화된 것으로 간주될 수 있다. 일부 실시형태에서, NN의 각 계층은 하나의 대응하는 희소 가중치 텐서 마스크를 가질 수 있다. 희소 가중치 텐서 마스크는 가중치 텐서의 가중치의 크기에 기초하여 결정될 수 있으며, 이 경우 크기가 작은 가중치는 0으로 가려질 가능성이 더 높다.
일부 실시형태에서, 희소()와 희소()는 조밀 텐서()로 곱해질 수 있고, 그런 다음 조밀 텐서는 활성화 함수, 상위-K 샘플링, 또는 이 둘 모두를 통해 프루닝되어 희소 텐서()를 획득할 수 있다.
도 4는 다양한 실시형태에 따른 NN의 공동-AW-희소 훈련에서 예시적인 역방향 전파를 도시한다. 도 3에 도시된 프로세스는 도 2의 역방향 전파(120)에 대한 보다 상세한 사항을 제공한다. 도 4의 값과 표기는 예시를 위한 것이다.
도 4에서, 미분 텐서()는 도 2 및 도 3의 희소 출력 텐서()에 기초하여 생성될 수 있다. 는 희소하고 미분 연산은 0 값을 변화시키지 않으므로 결과적인 미분 텐서()도 또한 희소하다. NN의 현재 계층에 있는 가중치 텐서()는 도 3에 설명된 희소 가중치 텐서 마스크를 사용하여 프루닝될 수 있다. 두 희소 텐서()의 생성은 로 표시되는 조밀 텐서일 수 있고, 조밀 텐서는 활성화, 상위-K 샘플링 또는 이 둘 다를 통해 추가로 프루닝되어 희소 텐서()를 획득할 수 있다. 희소 텐서()는 이전 계층(예를 들어, 계층 0)의 가중치 텐서를 업데이트하는 데 사용될 수도 있고, 이는 도 5a에서 설명된다.
도 5a는 다양한 실시형태에 따른 뱅크 균형 잡힌 NN의 공동-AW-희소 훈련에서 예시적인 가중치 구배 업데이트 프로세스를 도시한다. 도 2 내지 도 4에 설명된 순방향 전파와 역방향 전파를 사용하여 희소 미분 텐서()가 NN의 각 계층에 대해 획득될 수 있으며, 여기서 는 계층의 인덱스를 나타낸다. 도 5a에서는 이 획득된 것으로 가정된다.
도 5a에 도시된 바와 같이, 희소 입력 텐서()의 전치와 희소 미분 텐서()의 텐서 곱은 로 표시되는 조밀 미분 텐서일 수 있다. 일부 실시형태에서, 조밀 미분 텐서()는 다양한 방식으로 프루닝될 수 있다.
예를 들어, 도 5a의 옵션 1에서 도 3에 설명된 희소 가중치 텐서 마스크는 조밀 미분 텐서()에 적용되어 희소 미분 텐서()를 획득할 수 있다. 희소 가중치 텐서 마스크는 가중치 중 일부를 현재 계층에서 중요하지 않은 것으로 식별하고, 이러한 가중치를 0으로 설정할 수 있다(예를 들어, 이러한 가중치 또는 이러한 가중치에 대응하는 활성화를 비활성화할 수 있다). 도 5b는 다양한 실시형태에 따라 뱅크 균형 잡힌 NN의 공동-AW-희소 훈련에서 가중치 구배를 업데이트하기 위한 옵션 1을 보여주는 다이어그램을 도시한다. 도 5b에 도시된 바와 같이, 조밀 미분 텐서()에 기존의 희소 마스크(520)를 적용하여 희소 미분 텐서를 획득한다. 기존의 희소 마스크(520)는 조밀 미분 텐서()의 대응하는 가중치를 가리기 위해 복수의 0 값을 포함한다.
또 다른 예로서, 도 5a의 옵션 2에서, 조밀 미분 텐서()는 동일한 크기의 복수의 뱅크로 분할될 수 있다. 도 5c는 다양한 실시형태에 따른 뱅크 균형 잡힌 NN의 공동-AW-희소 훈련에서 가중치 구배를 업데이트하기 위한 옵션 2를 보여주는 다이어그램을 도시한다. 도 5c의 뱅크(530)는 구현에 따라 다른 방식으로 정해질 수 있다. 예를 들어, 뱅크(530)는 조밀 미분 텐서() 내의 열 또는 행일 수 있다. 각 뱅크(530)에서 상위-K 샘플링을 수행하여 가장 큰 크기(가장 큰 양수 값 및 음수 값)를 갖는 K개의 가중치를 식별하고, 뱅크(530) 내의 다른 가중치를 0으로 설정하여 희소 미분 텐서()를 생성할 수 있다. 이러한 상위-K 샘플링 기반 프루닝 방법을 사용하여 생성된 는 뱅크 균형을 이룰 수 있고, 즉, 각 뱅크(530)는 동일한 수의 0이 아닌 값을 포함한다. 실제 응용에서, 텐서의 각 뱅크(530)는 기본 하드웨어의 로컬 메모리(예를 들어, NN 훈련 가속기의 캐시, 외부 메모리)의 세그먼트에 대응할 (예를 들어, 저장될) 수 있다. 따라서 뱅크 균형 잡힌 텐서는 로컬 메모리의 여러 세그먼트에 0이 아닌 값을 균등 분배할 수 있고, 이는 훈련 및 추론을 위한 보다 균형 잡힌 병렬 처리 방식을 촉진할 수 있다. 이하 설명에서는 뱅크 균형 잡힌 희소화된 텐서를 생성하는 다양한 방법이 도 6a 및 도 6b에 설명되어 있다.
도 6a는 다양한 실시형태에 따른 뱅크 균형 잡힌 희소화된 텐서를 생성하기 위한 예시적인 2D 희소화를 도시한다. 도 6a에서 프루닝될 텐서는 2D 행렬이다. 예를 들어, 입력 텐서 또는 가중치 텐서가 3D 텐서라고 가정하면, 이를 3차원 중 하나, 예를 들어, 채널 차원과 함께 분할하여 복수의 2D 행렬을 획득할 수 있다. 도 6a에 도시된 예시적인 2D 희소화 방법은 복수의 2D 행렬 각각에 적용될 수 있다. 도 6a의 텐서는 NN의 맥락에서 가중치 텐서 또는 활성화 텐서를 의미할 수 있다.
도시된 바와 같이, 로 표시된 2D 조밀 행렬은 수많은 0이 아닌 값을 가질 수 있다. 뱅크 균형 잡힌 및 희소화된 버전의 행렬을 생성하는 방식에는 행 방향 희소화(610)와 열 방향 희소화(620)의 두 가지 방식이 있다. 예를 들어, 행 방향 희소화(610)에서는 2D 조밀 행렬의 각 행이 동일한 크기의 복수의 뱅크로 분할될 수 있다. 각 뱅크에서 상위-K 샘플링을 수행하여 가장 큰 크기를 갖는 0이 아닌 K개의 값을 유지하고, 다른 값을 0으로 설정한다. 도 6a에서 2D 행렬의 각 행은 두 개의 뱅크로 분할되고, 각 뱅크에 상위 2개의 샘플링을 적용하여 0이 아닌 2개의 값을 유지한다. 또 다른 예로서, 열 방향 희소화(620)에서는 2D 조밀 행렬의 각 열이 동일한 크기의 복수의 뱅크로 분할될 수 있다. 각 뱅크에서 상위-K 샘플링을 수행하여 가장 큰 크기를 갖는 0이 아닌 K개의 값을 유지하고, 다른 값을 0으로 설정한다. 도 6a에서, 2D 조밀 행렬의 각 열은 2개의 뱅크로 분할되고, 각 뱅크에는 상위 1개의 샘플링을 적용하여 여기에 0이 아닌 1개의 값을 유지한다.
일부 실시형태에서, 전술한 공동-AW-희소 훈련 프로세스 동안, 행 방향 희소화 또는 열 방향 희소화가 NN의 서로 다른 계층에 적용될 수 있다. 예를 들어, 도 5a에 도시된 가중치 구배 업데이트 단계 동안, 조밀 가중치 구배 텐서()는 행 방향 또는 열 방향 희소화를 사용하여 프루닝되어 희소 가중치 구배 텐서()를 획득할 수 있다. 최적의 성능을 달성하기 위해 다양한 계층이 다양한 희소화 방법을 전개할 수 있다.
도 6b는 다양한 실시형태에 따른 뱅크 균형 잡힌 희소화된 텐서를 생성하기 위한 예시적인 3D 희소화를 도시한다. 도 6b에서 프루닝될 텐서는 NN의 하나의 계층에서 획득된 활성화 텐서이거나 가중치 텐서일 수 있는 3D 행렬이라고 가정된다. 도 6b에 도시된 예로서, 활성화 텐서()는 입력 텐서(), 가중치 텐서(), 및 바이어스 텐서()에 기초하여 획득될 수 있다. 활성화 텐서()는 높이 차원, 폭 차원, 및 채널 차원의 3개의 차원을 가질 수 있다.
도 6b에 도시된 참조 부호 630 내지 650과 같은 3D 조밀 행렬에 기초하여 뱅크 균형 잡힌 및 희소화된 텐서를 생성하는 여러 가지 접근 방식이 있다. 이러한 접근 방식은 뱅크를 한정하는 방식에 따라 다르다. 예를 들어, 접근 방식(630)에서 하나의 채널은 뱅크로 간주되며, 예를 들어, 전방 평면/표면은 뱅크로 간주될 수 있다. 다른 예로서, 접근 방식(640)에서, 각 채널은 동일한 크기의 복수의 뱅크로 분할될 수 있다. 또 다른 예로서, 접근 방식(650)에서 다수의 채널은 하나의 뱅크로 간주될 수 있다. 뱅크가 정해진 후, 각 뱅크에 상위-K 샘플링을 수행하여 가장 큰 크기를 갖는 0이 아닌 K개의 값을 유지하고, 다른 값을 0으로 설정할 수 있다. 일부 실시형태에서, 뱅크를 분할하는 다양한 방식은 각 뱅크 내의 데이터가 메모리에서 물리적으로 같은 위치에 위치될 수 있도록 다양한 저장 방식을 요구할 수 있다. 각 뱅크를 연속적으로 저장하면 순차적 판독이 촉진되고(메모리 액세스의 횟수 감소) 0이 아닌 데이터를 균등 분배하여 더 나은 병렬 처리를 할 수 있다.
도 6a에 설명된 2D 희소화 접근 방식에 비해 3D 희소화는 더 많은 차원에 걸쳐 고유한 가중치 관계를 보존할 수 있는 반면, 2D 희소화는 구현하기 더 쉬울 수 있다. 사용 사례 및 선호도에 따라 희소화 접근 방식 중 하나를 전개하여 뱅크 균형 잡힌 및 희소 텐서를 생성할 수 있다.
도 7은 다양한 실시형태에 따른 뱅크 균형 잡힌 NN의 공동-AW-희소 훈련을 위한 예시적인 방법을 도시한다. 방법(700)은 자원 할당을 최적화하기 위한 디바이스, 장치 또는 시스템에 의해 수행될 수 있다. 아래 제시된 방법(700)의 동작은 예시를 위한 것이다. 구현에 따라, 방법(700)은 다양한 순서로 또는 병렬로 수행되는 추가 단계, 더 적은 수의 단계 또는 대안적인 단계를 포함할 수 있다.
블록(710)은 신경망의 현재 계층에서 순방향 전파 동안, 현재 계층의 희소 가중치 텐서와 희소 입력 텐서에 기초하여 조밀 출력 텐서를 생성하는 단계; 및 조밀 출력 텐서를 희소화하여 희소 출력 텐서를 획득하는 단계를 포함한다. 일부 실시형태에서, 조밀 출력 텐서는 현재 계층의 희소 가중치 텐서와 희소 입력 텐서의 텐서 곱을 포함하고, 조밀 미분 텐서는 현재 계층의 희소 가중치 텐서와 제1 희소 미분 텐서의 텐서 곱을 포함한다. 일부 실시형태에서, 조밀 출력 텐서를 희소화하여 희소 출력 텐서를 획득하는 단계는 조밀 출력 텐서에 상위-K 활성화 함수를 적용하여 희소 출력 텐서를 획득하는 단계를 포함하고; 조밀 미분 텐서를 희소화하여 제2 희소 미분 텐서를 획득하는 단계는 조밀 미분 텐서에 상위-K 활성화 함수를 적용하여 제2 희소 미분 텐서를 획득하는 단계를 포함한다. 일부 실시형태에서, 신경망의 현재 계층은 조밀 가중치 텐서를 포함하고, 가중치 텐서 마스크에 대응하며, 현재 계층의 희소 가중치 텐서는 조밀 가중치 텐서에 가중치 텐서 마스크를 적용하여 조밀 가중치 텐서에서 하나 이상의 가중치를 비활성화함으로써 희소 가중치 텐서를 획득하는 것에 의해 획득된다.
블록(720)은 신경망의 현재 계층에서 역방향 전파 동안, 희소 출력 텐서에 기초하여 제1 희소 미분 텐서를 결정하는 단계; 현재 계층의 희소 가중치 텐서와 제1 희소 미분 텐서에 기초하여 조밀 미분 텐서를 획득하는 단계; 및 조밀 미분 텐서를 희소화하여 제2 희소 미분 텐서를 획득하는 단계를 포함한다.
블록(730)은 제1 희소 미분 텐서와 제2 희소 미분 텐서에 기초하여 신경망의 가중치 텐서를 훈련하는 단계를 포함한다. 일부 실시형태에서, 신경망의 가중치 텐서를 훈련하는 단계는 제2 희소 미분 텐서에 기초하여 이전 계층에 대한 새로운 희소 가중치 텐서를 결정하는 단계를 포함한다. 일부 실시형태에서, 신경망의 가중치 텐서를 훈련하는 단계는 제1 희소 미분 텐서와 희소 입력 텐서에 기초하여 현재 계층에 대한 새로운 희소 가중치 텐서를 결정하는 단계를 포함한다.
일부 실시형태에서, 신경망의 현재 계층은 가중치 텐서 마스크에 대응하고, 현재 계층에 대한 새로운 희소 가중치 텐서를 결정하는 단계는 희소 입력 텐서의 전치와 제1 희소 미분 텐서의 텐서 곱에 기초하여 조밀 미분 가중치 텐서를 획득하는 단계; 및 조밀 미분 가중치 텐서에 가중치 텐서 마스크를 적용하여 조밀 미분 가중치 텐서에서 하나 이상의 가중치를 비활성화함으로써 현재 계층에 대한 새로운 희소 가중치 텐서를 획득하는 단계를 포함한다.
일부 실시형태에서, 조밀 미분 가중치 텐서는 신경망의 현재 계층에서 복수의 가중치 매개변수에 대응하는 복수의 구배를 포함한다. 일부 실시형태에서, 현재 계층에 대한 새로운 희소 가중치 텐서를 결정하는 단계는 희소 입력 텐서의 전치와 제1 희소 미분 텐서의 텐서 곱에 기초하여 조밀 미분 가중치 텐서를 획득하는 단계; 및 조밀 미분 가중치 텐서에 상위-K 활성화 함수를 적용하여 현재 계층에 대한 새로운 희소 가중치 텐서를 획득하는 단계를 포함한다.
일부 실시형태에서, 상위-K 활성화 함수를 적용하는 것은 조밀 미분 가중치 텐서의 각 행 또는 열을 프로세서의 메모리 뱅크에 대응하는 복수의 뱅크로 분할하는 것; 및 복수의 뱅크 각각에 대해, 뱅크의 상위-K 가중치를 결정하고, 상위-K 가중치가 아닌 뱅크의 가중치를 비활성화하는 것을 포함한다.
도 8은 본 명세서에 설명된 임의의 실시형태가 구현될 수 있는 예시적인 컴퓨팅 디바이스를 도시한다. 컴퓨팅 디바이스는 도 1 내지 도 7에 도시된 시스템 및 방법의 하나 이상의 구성요소를 구현하는 데 사용될 수 있다. 컴퓨팅 디바이스(800)는 정보를 전달하기 위한 버스(802) 또는 다른 통신 메커니즘, 및 정보를 처리하기 위해 버스(802)와 결합된 하나 이상의 하드웨어 프로세서(804)를 포함할 수 있다. 하드웨어 프로세서(들)(804)는 예를 들어 하나 이상의 범용 마이크로프로세서일 수 있다.
컴퓨팅 디바이스(800)는 또한 프로세서(들)(804)에 의해 실행될 명령어 및 정보를 저장하기 위해 버스(802)에 결합된 랜덤 액세스 메모리(RAM), 캐시 및/또는 다른 동적 저장 디바이스와 같은 주 메모리(807)를 포함할 수 있다. 주 메모리(807)는 또한 프로세서(들)(804)에 의해 실행될 명령어를 실행하는 동안 임시 변수 또는 다른 중간 정보를 저장하는 데 사용될 수 있다. 이러한 명령어는 프로세서(들)(804)에 액세스 가능한 저장 매체에 저장될 때 컴퓨팅 디바이스(800)를 명령어에 제시된 동작을 수행하도록 맞춤화된 특수 목적 기계로 렌더링할 수 있다. 주 메모리(807)는 비휘발성 매체 및/또는 휘발성 매체를 포함할 수 있다. 비휘발성 매체에는 예를 들어 광학 디스크 또는 자기 디스크가 포함될 수 있다. 휘발성 매체에는 동적 메모리가 포함될 수 있다. 일반적인 형태의 매체에는 예를 들어 플로피 디스크, 플렉시블 디스크, 하드 디스크, 솔리드 스테이트 드라이브, 자기 테이프 또는 임의의 다른 자기 데이터 저장 매체, CD-ROM, 임의의 다른 광학 데이터 저장 매체, 구멍 패턴이 있는 임의의 물리적 매체, RAM, DRAM, PROM 및 EPROM, FLASH-EPROM, NVRAM, 임의의 다른 메모리 칩 또는 카트리지 또는 이들이 네트워크로 연결된 버전이 포함될 수 있다.
컴퓨팅 디바이스(800)는 컴퓨팅 디바이스와 함께 컴퓨팅 디바이스(800)를 특수 목적 기계로 만들거나 프로그래밍할 수 있는 맞춤화된 하드 와이어드 로직, 하나 이상의 ASIC 또는 FPGA, 펌웨어 및/또는 프로그램 로직을 사용하여 본 명세서에 설명된 기술을 구현할 수 있다. 일 실시형태에 따르면, 본 발명의 기술은 프로세서(들)(804)가 주 메모리(807)에 포함된 하나 이상의 명령어의 하나 이상의 시퀀스를 실행하는 것에 응답하여 컴퓨팅 디바이스(800)에 의해 수행된다. 이러한 명령어는 저장 디바이스(809)와 같은 다른 저장 매체로부터 주 메모리(807)로 판독될 수 있다. 주 메모리(807)에 포함된 명령어 시퀀스의 실행은 프로세서(들)(804)로 하여금 본 명세서에 설명된 프로세스 단계를 수행하게 할 수 있다. 예를 들어, 본 명세서에 개시된 프로세스/방법은 주 메모리(807)에 저장된 컴퓨터 프로그램 명령어에 의해 구현될 수 있다. 이러한 명령어가 프로세서(들)(804)에 의해 실행될 때, 이 명령어는 대응하는 도면에 도시되고 위에 설명된 단계를 수행할 수 있다. 대안적인 실시형태에서, 하드 와이어드 회로는 소프트웨어 명령어 대신에 또는 소프트웨어 명령어와 함께 사용될 수 있다.
컴퓨팅 디바이스(800)는 또한 버스(802)에 결합된 통신 인터페이스(810)를 포함한다. 통신 인터페이스(810)는 하나 이상의 네트워크에 연결된 하나 이상의 네트워크 링크에 결합된 양방향 데이터 통신을 제공할 수 있다. 다른 예로서, 통신 인터페이스(810)는 호환 가능한 LAN(또는 WAN과 통신하기 위한 WAN 구성요소)에 대한 데이터 통신 연결을 제공하기 위한 근거리 통신망(LAN) 카드일 수 있다. 무선 링크도 또한 구현될 수 있다.
특정 동작의 수행은 단일 기계 내에 상주하는 프로세서뿐만 아니라 다수의 기계에 걸쳐 전개된 프로세서 간에 분산될 수 있다. 일부 예시적인 실시형태에서, 프로세서 또는 프로세서 구현 엔진은 단일 지리적 위치에 (예를 들어, 가정 환경, 사무실 환경 또는 서버 팜 내에) 위치될 수 있다. 다른 예시적인 실시형태에서, 프로세서 또는 프로세서 구현 엔진은 다수의 지리적 위치에 걸쳐 분산될 수 있다.
이전 절에 설명된 프로세스, 방법 및 알고리즘 각각은 컴퓨터 하드웨어를 포함하는 하나 이상의 컴퓨터 시스템 또는 컴퓨터 프로세서에 의해 실행되는 코드 모듈로 구현되고 완전히 또는 부분적으로 이 모드 모듈에 의해 자동화될 수 있다. 프로세스와 알고리즘은 특정 응용 회로에서 부분적으로 또는 전체적으로 구현될 수 있다.
본 명세서에 개시된 기능이 소프트웨어 기능 유닛의 형태로 구현되어 독립적인 제품으로 판매되거나 사용되는 경우, 이 기능은 프로세서 실행 가능한 비휘발성 컴퓨터 판독 가능 저장 매체에 저장될 수 있다. 현재 기술에 기여하는 본 명세서에 (전체적으로 또는 부분적으로) 개시된 특정 기술 솔루션 또는 양태는 소프트웨어 제품의 형태로 구현될 수 있다. 컴퓨팅 디바이스(개인용 컴퓨터, 서버, 네트워크 디바이스 등일 수 있음)로 하여금 본 발명의 실시형태의 방법의 모든 또는 일부 단계를 실행하게 하는 다수의 명령어를 포함하는 소프트웨어 제품은 저장 매체에 저장될 수 있다. 저장 매체는 플래시 드라이브, 휴대용 하드 드라이브, ROM, RAM, 자기 디스크, 광 디스크, 프로그램 코드를 저장하도록 동작 가능한 다른 매체, 또는 이들의 임의의 조합을 포함할 수 있다.
특정 실시형태는 프로세서와, 이 프로세서에 의해 실행 가능한 명령어를 저장하는 비일시적 컴퓨터 판독 가능 저장 매체를 포함하는 시스템으로서, 명령어는 시스템으로 하여금 위에 개시된 실시형태의 임의의 방법의 단계에 대응하는 동작을 수행하게 하는, 시스템을 추가로 제공한다. 특정 실시형태는 하나 이상의 프로세서로 하여금 위에 개시된 실시형태의 임의의 방법의 단계에 대응하는 동작을 수행하게 하기 위해 하나 이상의 프로세서에 의해 실행 가능한 명령어로 구성된 비일시적 컴퓨터 판독 가능 저장 매체를 추가로 제공한다.
본 명세서에 개시된 실시형태는 클라이언트와 상호 작용하는 클라우드 플랫폼, 서버 또는 서버 그룹(이하, 총칭하여 "서비스 시스템")을 통해 구현될 수 있다. 클라이언트는 단말 디바이스일 수도 있고, 또는 사용자가 플랫폼에 등록한 클라이언트일 수도 있으며, 단말 디바이스는 모바일 단말, 개인용 컴퓨터(PC), 및 플랫폼 응용 프로그램이 설치될 수 있는 임의의 디바이스일 수 있다.
위에 설명된 다양한 특징과 프로세스는 서로 독립적으로 사용될 수 있고 또는 다양한 방식으로 결합될 수 있다. 모든 가능한 조합 및 하위 조합은 본 발명의 범위 내에 속하도록 의도된다. 또한, 일부 구현예에서는 특정 방법이나 프로세스 블록이 생략될 수 있다. 본 명세서에 설명된 방법 및 프로세스는 또한 임의의 특정 순서로 제한되지 않으며, 이와 관련된 블록 또는 상태는 적절한 다른 순서로 수행될 수 있다. 예를 들어, 설명된 블록 또는 상태는 구체적으로 개시된 순서와는 다른 순서로 수행될 수 있고, 또는 다수의 블록 또는 상태는 단일 블록 또는 상태로 결합될 수 있다. 예시적인 블록 또는 상태는 직렬, 병렬 또는 일부 다른 방식으로 수행될 수 있다. 블록이나 상태는 개시된 예시적인 실시형태에 추가되거나 제거될 수 있다. 본 명세서에 설명된 예시적인 시스템 및 구성요소는 설명된 것과 다르게 구성될 수 있다. 예를 들어, 요소는 개시된 예시적인 실시형태에 추가되거나, 예시적인 실시형태로부터 제거되거나, 예시적인 실시형태에 대해 재배열될 수 있다.
본 명세서에 설명된 예시적인 방법의 다양한 동작은 적어도 부분적으로 알고리즘에 의해 수행될 수 있다. 알고리즘은 메모리(예를 들어, 위에서 설명된 비일시적 컴퓨터 판독 가능 저장 매체)에 저장된 프로그램 코드 또는 명령어에 포함될 수 있다. 이러한 알고리즘은 기계 학습 알고리즘을 포함할 수 있다. 일부 실시형태에서, 기계 학습 알고리즘은 기능을 수행하도록 컴퓨터를 명시적으로 프로그래밍하지 않을 수 있지만 기능을 수행하는 예측 모델을 만들도록 훈련 데이터로부터 학습할 수 있다.
본 명세서에 설명된 예시적인 방법의 다양한 동작은 관련 동작을 수행하도록 (예를 들어, 소프트웨어에 의해) 일시적으로 구성되거나 영구적으로 구성된 하나 이상의 프로세서에 의해 적어도 부분적으로 수행될 수 있다. 일시적으로 구성되든 또는 영구적으로 구성되든, 이러한 프로세서는 본 명세서에 설명된 하나 이상의 동작 또는 기능을 수행하도록 동작하는 프로세서 구현 엔진을 구성할 수 있다.
유사하게, 본 명세서에 설명된 방법은 적어도 부분적으로 프로세서로 구현될 수 있으며, 특정 프로세서 또는 프로세서들은 하드웨어의 일례이다. 예를 들어, 방법의 동작 중 적어도 일부는 하나 이상의 프로세서 또는 프로세서 구현 엔진에 의해 수행될 수 있다. 더욱이, 하나 이상의 프로세서는 또한 "클라우드 컴퓨팅" 환경에서 또는 "서비스로서의 소프트웨어"(SaaS)로서 관련 동작의 수행을 지원하도록 동작할 수 있다. 예를 들어, 동작 중 적어도 일부는 컴퓨터 그룹(프로세서를 포함하는 기계의 예)에 의해 수행될 수 있으며, 이러한 동작은 네트워크(예를 들어, 인터넷)와 하나 이상의 적절한 인터페이스(예를 들어, 응용 프로그램 인터페이스(API))를 통해 액세스될 수 있다.
특정 동작의 수행은 단일 기계 내에 상주하는 프로세서뿐만 아니라 다수의 기계에 걸쳐 전개된 프로세서 간에 분산될 수 있다. 일부 예시적인 실시형태에서, 프로세서 또는 프로세서 구현 엔진은 단일 지리적 위치에 (예를 들어, 가정 환경, 사무실 환경 또는 서버 팜 내에) 위치될 수 있다. 다른 예시적인 실시형태에서, 프로세서 또는 프로세서 구현 엔진은 다수의 지리적 위치에 걸쳐 분산될 수 있다.
본 명세서 전반에 걸쳐 복수의 인스턴스가 하나의 인스턴스로 설명된 구성요소, 동작, 구조를 구현할 수 있다. 하나 이상의 방법의 개별 동작이 별도의 동작으로 예시되고 설명되었더라도, 개별 동작 중 하나 이상은 동시에 수행될 수 있고, 동작이 예시된 순서로 수행될 필요는 없다. 예시적인 구성에서 별도의 구성요소로 제시된 구조와 기능은 결합된 구조 또는 구성요소로 구현될 수 있다. 마찬가지로, 단일 구성요소로 제시된 구조와 기능은 별도의 구성요소로 구현될 수 있다. 이들 및 다른 변형, 수정, 추가 및 개선은 본 발명의 주제 범위 내에 속한다.
본 명세서에 사용된 "또는"은 명백히 달리 지시되거나 문맥상 달리 지시되지 않는 한, 포괄적이며 비배타적이다. 따라서, 본 명세서에서 "A, B 또는 C"는 명백히 달리 지시되거나 문맥상 달리 지시되지 않는 한, "A, B, A 및 B, A 및 C, B 및 C, 또는 A, B 및 C"를 의미한다. 더욱이, "및"은 명백히 달리 지시되거나 문맥상 달리 지시되지 않는 한, 공동으로 및 개별적으로 모두를 의미한다. 따라서, 본 명세서에서 "A 및 B"는 명백히 달리 지시되거나 문맥상 달리 지시되지 않는 한, "공동으로 또는 개별적으로 A와 B"를 의미한다. 더욱이, 본 명세서에 단일 인스턴스로 설명된 자원, 동작, 구조에 대해 복수의 인스턴스가 제공될 수도 있다. 추가적으로 다양한 자원, 동작, 엔진 및 데이터 저장소 간의 경계는 다소 임의적이며, 특정 동작은 특정 예시적인 구성의 맥락에서 설명된다. 기능의 다른 할당이 구상되고, 본 발명의 다양한 실시형태의 범위 내에 속할 수 있다. 일반적으로, 예시적인 구성에서 별도의 자원으로 제시된 구조와 기능은 결합된 구조 또는 자원으로 구현될 수 있다. 유사하게, 단일 자원으로 제시된 구조와 기능은 별도의 자원으로 구현될 수 있다. 이들 및 다른 변형, 수정, 추가 및 개선은 첨부된 청구범위에 표현된 본 발명의 실시형태의 범위 내에 속한다. 따라서, 본 명세서와 도면은 본 발명을 제한하는 것이 아니라 본 발명을 예시적인 것으로 간주되어야 한다.
"구비하는" 또는 "포함하는"이라는 용어는 이후에 선언되는 특징부의 존재를 나타내는 데 사용되지만, 이는 다른 특징이 추가되는 것을 배제하는 것이 아니다. 달리 구체적으로 언급되거나 사용된 문맥 내에서 달리 이해되지 않는 한, 특히 "할 능력이 있는", "할 능력이 있을 수 있는", "할 가능성이 있는" 또는 "할 수 있는"과 같은 조건부 언어는 일반적으로 특정 실시형태에서는 특정 특징, 요소 및/또는 단계를 포함하는 반면, 다른 실시형태에서는 이 특정 특징, 요소 및/또는 단계를 포함하지 않는 것을 전달하려고 의도된 것이다. 따라서, 이러한 조건부 언어는 일반적으로 특징, 요소 및/또는 단계가 하나 이상의 실시형태에 어떤 방식으로든 필요하다는 것을 의미하거나, 하나 이상의 실시형태가 사용자 입력 또는 프롬프트와 함께 또는 없이 이러한 특징, 요소 및/또는 단계가 임의의 특정 실시형태에 포함되거나 수행되어야 하는지 여부를 결정하기 위한 논리를 반드시 포함하는 것을 의미하는 것으로 의도된 것이 아니다.
특정 예시적인 실시형태를 참조하여 본 주제의 개요를 설명했지만, 본 발명의 실시형태의 넓은 범위를 벗어나지 않고 이러한 실시형태에 다양한 수정과 변경이 이루어질 수 있다. 본 주제의 이러한 실시형태, 실제로 둘 이상이 개시된 경우 본 출원의 범위를 임의의 하나의 개시 내용 또는 개념으로 자발적으로 제한하려는 의도 없이 단지 편의를 위해 본 명세서에서 개별적으로 또는 총칭적으로 "발명"이라는 용어로 언급될 수 있다.
본 명세서에 예시된 실시형태는 당업자가 개시된 내용을 실시할 수 있도록 충분히 상세하게 설명되었다. 본 발명의 범위를 벗어나지 않고 구조적 및 논리적 치환 및 변경이 이루어질 수 있도록 다른 실시형태가 사용되고 이로부터 유도될 수 있다. 그러므로 본 상세한 설명은 본 발명을 제한하는 의미로 받아들여져서는 안 되고, 다양한 실시형태의 범위는 첨부된 청구범위와 이러한 청구범위에 부여된 등가물의 전체 범위에 의해서만 한정된다.

Claims (20)

  1. 신경망 훈련을 최적화하기 위한 컴퓨터 구현 방법으로서,
    신경망의 현재 계층에서 순방향 전파 동안,
    상기 현재 계층의 희소 가중치 텐서(sparse weight tensor)와 희소 입력 텐서(sparse input tensor)에 기초하여 조밀 출력 텐서(dense output tensor)를 생성하는 단계, 및
    상기 조밀 출력 텐서를 희소화하여 희소 출력 텐서를 획득하는 단계;
    상기 신경망의 현재 계층에서 역방향 전파 동안,
    상기 희소 출력 텐서에 기초하여 제1 희소 미분 텐서를 결정하는 단계,
    상기 현재 계층의 희소 가중치 텐서와 상기 제1 희소 미분 텐서에 기초하여 조밀 미분 텐서를 획득하는 단계, 및
    상기 조밀 미분 텐서를 희소화하여 제2 희소 미분 텐서를 획득하는 단계; 및
    상기 제1 희소 미분 텐서와 상기 제2 희소 미분 텐서에 기초하여 상기 신경망의 가중치 텐서를 훈련하는 단계
    를 포함하는, 컴퓨터 구현 방법.
  2. 제1항에 있어서, 상기 조밀 출력 텐서는 상기 현재 계층의 희소 가중치 텐서와 상기 희소 입력 텐서의 텐서 곱(tensor product)을 포함하고;
    상기 조밀 미분 텐서는 상기 현재 계층의 희소 가중치 텐서와 상기 제1 희소 미분 텐서의 텐서 곱을 포함하는, 컴퓨터 구현 방법.
  3. 제1항에 있어서, 상기 신경망의 가중치 텐서를 훈련하는 단계는,
    상기 제2 희소 미분 텐서에 기초하여 이전 계층에 대한 새로운 희소 가중치 텐서를 결정하는 단계를 포함하는, 컴퓨터 구현 방법.
  4. 제1항에 있어서, 상기 신경망의 가중치 텐서를 훈련하는 단계는,
    상기 제1 희소 미분 텐서와 상기 희소 입력 텐서에 기초하여 상기 현재 계층에 대한 새로운 희소 가중치 텐서를 결정하는 단계를 포함하는, 컴퓨터 구현 방법.
  5. 제4항에 있어서, 상기 신경망의 현재 계층은 가중치 텐서 마스크에 대응하고,
    상기 현재 계층에 대한 새로운 희소 가중치 텐서를 결정하는 단계는,
    상기 희소 입력 텐서의 전치(transpose)와 상기 제1 희소 미분 텐서의 텐서 곱에 기초하여 조밀 미분 가중치 텐서를 획득하는 단계; 및
    상기 조밀 미분 가중치 텐서에 상기 가중치 텐서 마스크를 적용하여 상기 조밀 미분 가중치 텐서에서 하나 이상의 가중치를 비활성화함으로써 상기 현재 계층에 대한 새로운 희소 가중치 텐서를 획득하는 단계
    를 포함하는, 컴퓨터 구현 방법.
  6. 제5항에 있어서, 상기 조밀 미분 가중치 텐서는 상기 신경망의 현재 계층에서 복수의 가중치 매개변수에 대응하는 복수의 구배를 포함하는, 컴퓨터 구현 방법.
  7. 제4항에 있어서, 상기 현재 계층에 대한 새로운 희소 가중치 텐서를 결정하는 단계는,
    상기 희소 입력 텐서의 전치와 상기 제1 희소 미분 텐서의 텐서 곱에 기초하여 조밀 미분 가중치 텐서를 획득하는 단계; 및
    상기 조밀 미분 가중치 텐서에 상위-K 활성화 함수를 적용하여 상기 현재 계층에 대한 새로운 희소 가중치 텐서를 획득하는 단계
    를 포함하는, 컴퓨터 구현 방법.
  8. 제7항에 있어서, 상기 상위-K 활성화 함수를 적용하는 것은,
    상기 조밀 미분 가중치 텐서의 각 행 또는 열을 프로세서의 메모리 뱅크에 대응하는 복수의 뱅크로 분할하는 것; 및
    상기 복수의 뱅크 각각에 대해, 상기 뱅크의 상위-K 가중치를 결정하고, 상기 상위-K 가중치가 아닌 상기 뱅크의 가중치를 비활성화하는 것
    을 포함하는, 컴퓨터 구현 방법.
  9. 제1항에 있어서, 상기 조밀 출력 텐서를 희소화하여 희소 출력 텐서를 획득하는 단계는,
    상기 조밀 출력 텐서에 상위-K 활성화 함수를 적용하여 상기 희소 출력 텐서를 획득하는 단계를 포함하고;
    상기 조밀 미분 텐서를 희소화하여 제2 희소 미분 텐서를 획득하는 단계는,
    상기 조밀 미분 텐서에 상기 상위-K 활성화 함수를 적용하여 상기 제2 희소 미분 텐서를 획득하는 단계를 포함하는, 컴퓨터 구현 방법.
  10. 제1항에 있어서, 상기 신경망의 현재 계층은 조밀 가중치 텐서를 포함하고, 가중치 텐서 마스크에 대응하고, 상기 현재 계층의 희소 가중치 텐서는,
    상기 조밀 가중치 텐서에 상기 가중치 텐서 마스크를 적용하여 상기 조밀 가중치 텐서에서 하나 이상의 가중치를 비활성화함으로써 상기 희소 가중치 텐서를 획득하는 것에 의해 획득되는, 컴퓨터 구현 방법.
  11. 시스템으로서,
    하나 이상의 프로세서와, 상기 하나 이상의 프로세서에 결합되고 상기 하나 이상의 프로세서에 의해 실행 가능한 명령어로 구성된 하나 이상의 비일시적 컴퓨터 판독 가능 메모리를 포함하고, 상기 명령어는, 상기 시스템으로 하여금,
    신경망의 현재 계층에서 순방향 전파 동안,
    상기 현재 계층의 희소 가중치 텐서와 희소 입력 텐서에 기초하여 조밀 출력 텐서를 생성하는 단계, 및
    상기 조밀 출력 텐서를 희소화하여 희소 출력 텐서를 획득하는 단계;
    상기 신경망의 현재 계층에서 역방향 전파 동안,
    상기 희소 출력 텐서에 기초하여 제1 희소 미분 텐서를 결정하는 단계,
    상기 현재 계층의 희소 가중치 텐서와 상기 제1 희소 미분 텐서에 기초하여 조밀 미분 텐서를 획득하는 단계, 및
    상기 조밀 미분 텐서를 희소화하여 제2 희소 미분 텐서를 획득하는 단계; 및
    상기 제1 희소 미분 텐서와 상기 제2 희소 미분 텐서에 기초하여 상기 신경망의 가중치 텐서를 훈련하는 단계
    를 포함하는 동작을 수행하게 하는, 시스템.
  12. 제11항에 있어서, 상기 신경망의 가중치 텐서를 훈련하는 단계는,
    상기 제1 희소 미분 텐서와 상기 희소 입력 텐서에 기초하여 상기 현재 계층에 대한 새로운 희소 가중치 텐서를 결정하는 단계를 포함하는, 시스템.
  13. 제12항에 있어서, 상기 신경망의 현재 계층은 가중치 텐서 마스크에 대응하고,
    상기 현재 계층에 대한 새로운 희소 가중치 텐서를 결정하는 단계는,
    상기 희소 입력 텐서의 전치와 상기 제1 희소 미분 텐서의 텐서 곱에 기초하여 조밀 미분 가중치 텐서를 획득하는 단계; 및
    상기 조밀 미분 가중치 텐서에 상기 가중치 텐서 마스크를 적용하여 상기 조밀 미분 가중치 텐서에서 하나 이상의 가중치를 비활성화함으로써 상기 현재 계층에 대한 새로운 희소 가중치 텐서를 획득하는 단계
    를 포함하는, 시스템.
  14. 제12항에 있어서, 상기 신경망의 현재 계층은 가중치 텐서 마스크에 대응하고,
    상기 현재 계층에 대한 새로운 희소 가중치 텐서를 결정하는 단계는,
    상기 희소 입력 텐서의 전치와 상기 제1 희소 미분 텐서의 텐서 곱에 기초하여 조밀 미분 가중치 텐서를 획득하는 단계; 및
    상기 조밀 미분 가중치 텐서에 상기 가중치 텐서 마스크를 적용하여 상기 조밀 미분 가중치 텐서에서 하나 이상의 가중치를 비활성화함으로써 상기 현재 계층에 대한 새로운 희소 가중치 텐서를 획득하는 단계
    를 포함하는, 시스템.
  15. 제1항에 있어서, 상기 조밀 출력 텐서를 희소화하여 희소 출력 텐서를 획득하는 단계는,
    상기 조밀 출력 텐서에 상위-K 활성화 함수를 적용하여 상기 희소 출력 텐서를 획득하는 단계를 포함하고;
    상기 조밀 미분 텐서를 희소화하여 제2 희소 미분 텐서를 획득하는 단계는,
    상기 조밀 미분 텐서에 상기 상위-K 활성화 함수를 적용하여 상기 제2 희소 미분 텐서를 획득하는 단계를 포함하는, 시스템.
  16. 하나 이상의 프로세서에 의해 실행 가능한 명령어로 구성된 비일시적 컴퓨터 판독 가능 저장 매체로서, 상기 명령어는, 상기 하나 이상의 프로세서로 하여금,
    신경망의 현재 계층에서 순방향 전파 동안,
    상기 현재 계층의 희소 가중치 텐서와 희소 입력 텐서에 기초하여 조밀 출력 텐서를 생성하는 단계; 및
    상기 조밀 출력 텐서를 희소화하여 희소 출력 텐서를 획득하는 단계;
    상기 신경망의 현재 계층에서 역방향 전파 동안,
    상기 희소 출력 텐서에 기초하여 제1 희소 미분 텐서를 결정하는 단계,
    상기 현재 계층의 희소 가중치 텐서와 상기 제1 희소 미분 텐서에 기초하여 조밀 미분 텐서를 획득하는 단계, 및
    상기 조밀 미분 텐서를 희소화하여 제2 희소 미분 텐서를 획득하는 단계; 및
    상기 제1 희소 미분 텐서와 상기 제2 희소 미분 텐서에 기초하여 상기 신경망의 가중치 텐서를 훈련하는 단계
    를 포함하는 동작을 수행하게 하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  17. 제16항에 있어서, 상기 신경망의 가중치 텐서를 훈련하는 단계는,
    상기 제1 희소 미분 텐서와 상기 희소 입력 텐서에 기초하여 상기 현재 계층에 대한 새로운 희소 가중치 텐서를 결정하는 단계를 포함하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  18. 제17항에 있어서, 상기 신경망의 현재 계층은 가중치 텐서 마스크에 대응하고,
    상기 현재 계층에 대한 새로운 희소 가중치 텐서를 결정하는 단계는,
    상기 희소 입력 텐서의 전치와 상기 제1 희소 미분 텐서의 텐서 곱에 기초하여 조밀 미분 가중치 텐서를 획득하는 단계; 및
    상기 조밀 미분 가중치 텐서에 상기 가중치 텐서 마스크를 적용하여 상기 조밀 미분 가중치 텐서에서 하나 이상의 가중치를 비활성화함으로써 상기 현재 계층에 대한 새로운 희소 가중치 텐서를 획득하는 단계
    를 포함하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  19. 제17항에 있어서, 상기 신경망의 현재 계층은 가중치 텐서 마스크에 대응하고,
    상기 현재 계층에 대한 새로운 희소 가중치 텐서를 결정하는 단계는,
    상기 희소 입력 텐서의 전치와 상기 제1 희소 미분 텐서의 텐서 곱에 기초하여 조밀 미분 가중치 텐서를 획득하는 단계; 및
    상기 조밀 미분 가중치 텐서에 상기 가중치 텐서 마스크를 적용하여 상기 조밀 미분 가중치 텐서에서 하나 이상의 가중치를 비활성화함으로써 상기 현재 계층에 대한 새로운 희소 가중치 텐서를 획득하는 단계
    를 포함하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  20. 제16항에 있어서, 상기 조밀 출력 텐서를 희소화하여 희소 출력 텐서를 획득하는 단계는,
    상기 조밀 출력 텐서에 상위-K 활성화 함수를 적용하여 상기 희소 출력 텐서를 획득하는 단계를 포함하고;
    상기 조밀 미분 텐서를 희소화하여 제2 희소 미분 텐서를 획득하는 단계는,
    상기 조밀 미분 텐서에 상기 상위-K 활성화 함수를 적용하여 상기 제2 희소 미분 텐서를 획득하는 단계를 포함하는, 비일시적 컴퓨터 판독 가능 저장 매체.
KR1020247007848A 2021-08-16 2022-08-15 신경망의 뱅크 균형 잡힌 희소 활성화 및 공동-활성화-가중치-희소 훈련을 위한 시스템 및 방법 KR20240042505A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/403,668 US11429864B1 (en) 2021-08-16 2021-08-16 System and method for bank-balanced sparse activation and joint-activation-weight-sparse training of neural networks
US17/403,668 2021-08-16
PCT/CN2022/112435 WO2023020419A1 (en) 2021-08-16 2022-08-15 System and method for bank-balanced sparse activation and joint-activation-weight-sparse training of neural networks

Publications (1)

Publication Number Publication Date
KR20240042505A true KR20240042505A (ko) 2024-04-02

Family

ID=83007777

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020247007848A KR20240042505A (ko) 2021-08-16 2022-08-15 신경망의 뱅크 균형 잡힌 희소 활성화 및 공동-활성화-가중치-희소 훈련을 위한 시스템 및 방법

Country Status (6)

Country Link
US (1) US11429864B1 (ko)
EP (1) EP4388455A1 (ko)
KR (1) KR20240042505A (ko)
CN (1) CN116157808B (ko)
TW (1) TWI813414B (ko)
WO (1) WO2023020419A1 (ko)

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10997496B2 (en) * 2016-08-11 2021-05-04 Nvidia Corporation Sparse convolutional neural network accelerator
US11544545B2 (en) * 2017-04-04 2023-01-03 Hailo Technologies Ltd. Structured activation based sparsity in an artificial neural network
US10366322B2 (en) * 2017-10-06 2019-07-30 DeepCube LTD. System and method for compact and efficient sparse neural networks
CN107832847A (zh) * 2017-10-26 2018-03-23 北京大学 一种基于稀疏化后向传播训练的神经网络模型压缩方法
US11461628B2 (en) * 2017-11-03 2022-10-04 Samsung Electronics Co., Ltd. Method for optimizing neural networks
US10832139B2 (en) * 2018-06-22 2020-11-10 Moffett Technologies Co. Limited Neural network acceleration and embedding compression systems and methods with activation sparsification
US11586417B2 (en) * 2018-09-28 2023-02-21 Qualcomm Incorporated Exploiting activation sparsity in deep neural networks
US11914606B2 (en) * 2019-03-04 2024-02-27 Walmart Apollo, Llc Systems and methods for a machine learning framework
EP3745314A1 (en) * 2019-05-27 2020-12-02 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Method, apparatus and computer program for training deep networks
EP3748545A1 (en) * 2019-06-07 2020-12-09 Tata Consultancy Services Limited Sparsity constraints and knowledge distillation based learning of sparser and compressed neural networks
CN112508190A (zh) * 2020-12-10 2021-03-16 上海燧原科技有限公司 结构化稀疏参数的处理方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN116157808B (zh) 2024-02-02
US11429864B1 (en) 2022-08-30
TWI813414B (zh) 2023-08-21
TW202312040A (zh) 2023-03-16
EP4388455A1 (en) 2024-06-26
CN116157808A (zh) 2023-05-23
WO2023020419A1 (en) 2023-02-23

Similar Documents

Publication Publication Date Title
US11568258B2 (en) Operation method
US11645529B2 (en) Sparsifying neural network models
KR101959376B1 (ko) 멀티 코어 최적화된 순환 신경망을 위한 시스템 및 방법
US20180260709A1 (en) Calculating device and method for a sparsely connected artificial neural network
WO2017116924A1 (en) Neural network training performance optimization framework
CN113168559A (zh) 机器学习模型的自动化生成
KR20240023241A (ko) 계층적 가중치 희소 컨볼루션 프로세싱을 위한 방법 및 시스템
US11775832B2 (en) Device and method for artificial neural network operation
US11657285B2 (en) Methods, systems, and media for random semi-structured row-wise pruning in neural networks
US11995552B2 (en) Apparatus and method for multi-phase pruning for neural network with multi-sparsity levels
US20230316080A1 (en) Sparsity masking methods for neural network training
WO2022040575A1 (en) Tabular convolution and acceleration
CN113469354A (zh) 受存储器限制的神经网络训练
JP7150651B2 (ja) ニューラルネットワークのモデル縮約装置
WO2022095984A1 (en) Method and system for convolution with workload-balanced activation sparsity
CN116384471A (zh) 模型剪枝方法、装置、计算机设备、存储介质和程序产品
KR20240042505A (ko) 신경망의 뱅크 균형 잡힌 희소 활성화 및 공동-활성화-가중치-희소 훈련을 위한 시스템 및 방법
CN116457794A (zh) 用于神经网络模型的组平衡式稀疏激活特征图
KR20220078819A (ko) 딥러닝 연산 수행 방법 및 장치
CN115461754A (zh) 深度过参数化
Chang et al. Deep unitary convolutional neural networks
US20240086719A1 (en) Sparse encoding and decoding at mixture-of-experts layer
Ahn et al. Incremental Learning With Adaptive Model Search and a Nominal Loss Model
US20230385374A1 (en) Systems and methods for sparse matrix multiplication
CN117576737A (zh) 基于多连接生成对抗网络的掌纹图像扩充方法与装置