KR20050056124A - 그래픽 처리 유닛을 사용해 기계 학습 기술들의 처리를가속화하고 최적화하는 시스템 및 방법 - Google Patents

그래픽 처리 유닛을 사용해 기계 학습 기술들의 처리를가속화하고 최적화하는 시스템 및 방법 Download PDF

Info

Publication number
KR20050056124A
KR20050056124A KR1020040094065A KR20040094065A KR20050056124A KR 20050056124 A KR20050056124 A KR 20050056124A KR 1020040094065 A KR1020040094065 A KR 1020040094065A KR 20040094065 A KR20040094065 A KR 20040094065A KR 20050056124 A KR20050056124 A KR 20050056124A
Authority
KR
South Korea
Prior art keywords
gpu
machine learning
computer
learning technique
parameters
Prior art date
Application number
KR1020040094065A
Other languages
English (en)
Other versions
KR101137107B1 (ko
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 KR20050056124A publication Critical patent/KR20050056124A/ko
Application granted granted Critical
Publication of KR101137107B1 publication Critical patent/KR101137107B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • G06V10/955Hardware or software architectures specially adapted for image or video understanding using specific electronic processors

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Biophysics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • Image Analysis (AREA)
  • Image Processing (AREA)

Abstract

GPU를 사용해 (신경망과 같은)기계 학습 기술들 및 비-그래픽 애플리케이션들의 처리를 가속화하고 최적화하는 시스템 및 방법이 제공된다. 본 시스템 및 방법은 광범위한 기계 학습 기술들에 사용될 수 있는 아키텍처를 CPU에서 GPU로 전달한다. GPU로의 처리 전달은, GPU 아키텍처의 한계들을 극복하며 GPU 아키텍처의 프레임워크 내에서 양호하게 동작하는 몇가지 신규한 기술들을 사용하여 실현된다. 이러한 한계들이 극복되면, 기계 학습 기술들은 GPU에서의 처리에 특히 적합한데, 통상적으로 GPU가 보통의 CPU보다 훨씬 더 강력하기 때문이다. 또한, 그래픽 처리와 마찬가지로, 기계 학습 기술들의 처리는 비단순 솔루션들 및 다량의 데이터를 가진 문제들과 관련이 있다.

Description

그래픽 처리 유닛을 사용해 기계 학습 기술들의 처리를 가속화하고 최적화하는 시스템 및 방법{SYSTEM AND METHOD FOR ACCELERATING AND OPTIMIZING THE PROCESSING OF MACHINE LEARNING TECHNIQUES USING A GRAPHICS PROCESSING UNIT}
관련 출원의 상호 참조
본 출원은 2003년 12월 9일에 선행 출원된 가특허출원 제 60/528,578호에 대한 우선권을 주장한다.
기술 분야
본 발명은 일반적으로 컴퓨터 처리 기술들에 관한 것으로서, 보다 구체적으로는, GPU(그래픽 처리 유닛;graphics processing unit)를 사용해 (신경망(neural network)과 같은) 기계 학습 기술들 및 다른 비-그래픽 애플리케이션들의 처리를 가속화하고 최적화하는 시스템 및 방법에 관한 것이다.
발명의 배경
GPU는 현대의 퍼스널 컴퓨터(PC)에 통합되어 있는 부분이다. GPU는 사용자에게 디스플레이되는 3차원(3D)의 실시간 그래픽을 가속화하도록 설계된 단일칩 프로세서이다. 초기에는 하이 엔드 그래픽 워크스테이션의 특징이었지만, GPU는, 기존의 CPU가 부적합하거나, 또는 단순히 너무 느렸던 그래픽 함수들의 가속기로서 퍼스널 컴퓨터 버스로 발전해 왔다.
컴퓨터 그래픽은, 일반적으로 오실로스코프의 변형인 캘리그래픽 디스플레이(calligraphic displays)상의 라인 드로잉(line drawings)으로 시작되었다. 이러한 디스플레이를 위한 계산에는, 일반적인 기하학적 변환, 디스플레이 장치의 경계에 따른 클리핑, 및 3D 디스플레이를 위한 투시 변환을 포함하는 벡터 연산이 필요하다. 저가의 상품화된 반도체 메모리의 출현으로, 프레임 버퍼 메모리를 통해 텔레비젼형 디스플레이를 리프레시하는 래스터 그래픽 프로세서(raster graphics processor)에 의한, 라인 드로잉 시스템들의 대체가 촉진되었다. 대다수 애플리케이션들의 경우 사용자들은 일반적으로 라인 드로잉보다는 음영이 고른 면들을 선호하기 때문에, 래스터 그래픽이 라인 드로잉을 빠르게 대체해 왔다. 라인 드로잉에 사용되는 것과 같은 직선 세그먼트 대신에, 래스터 그래픽 시스템에 대한 기하하적 빌딩 블록(또는 프리미티브)은 삼각형들의 어레이로부터 구성된 다면체의 면들이다. 디스플레이 프리미티브들은 프레임 버퍼 메모리에 저장되어 있는 픽셀들의 장방형 어레이이다. 어레이의 로우들은 래스터 스캔 CRT(cathode ray tube) 디스플레이 상의 개별적인 스캔 라인에 대응된다.
그래픽이 라인 드로잉에서 래스터 그래픽으로 발전함에 따라, 더 큰 처리 능력에 대한 필요로 인해 수치 코-프로세서(co-processor)가 PC에 포함되었다. 수치 코-프로세서는, 호스트 CPU의 명령어 스트림을 공유하며 CPU 메모리에 액세스할 수 있는 통합적 부동점 코-프로세서(integral floating point co-processor)이다. 다른 타입의 통합형 코-프로세서로는 MMX(Multimedia Extensions) 또는 SSE(Streaming SIMD Extensions)와 같은 CPU 확장을 들 수 있는데, 이러한 CPU 확장은 병렬 데이터 경로들과 비동기 실행을 가지며, 이 또한 CPU 메모리에 액세스할 수도 있다.
3D 그래픽의 계속적으로 증가하고 있는 보다 높은 품질 및 보다 높은 사실주의에 대한 수요로 인해, 더 높은 그래픽 처리 능력이 필요해졌다. 이러한 필요를 충족시키기 위해, 계산-집약적인 그래픽 태스크를 수행하기 위한 GPU가 도입되었다. 이로써, CPU는 부하를 덜고 자유로워져 다른 처리 태스크들을 수행할 수 있게 되었다. 현재의 구현에서, GPU는 메인 CPU 메모리로의 전용 경로 뿐만 아니라 전용 그래픽 메모리를 가진 PC의 중요 컴포넌트이다. 수치 코-프로세서와 달리, GPU는 자신만의 고유한 명령어 스트림, 데이터 경로, 및 전용 메모리를 가진 독자적인 특수 목적 프로세서이다.
GPU 설계 및 구성의 현재 경향은 더 큰 전용 메모리, 그래픽 메모리로의 더 높은 대역폭, 및 증가된 내부 병렬성을 부여하는 것이다. 또한, 현재의 GPU들은 계속적으로 증가하는 프로그램 가능도(degrees of programmability)를 갖도록 설계된다. 프로그램 가능성의 도입으로 인해, GPU는 비-그래픽 애플리케이션들에 사용될 수 있는 호환성을 획득하게 되었다. 또한, GPU의 데이터 병렬 아키텍처는, CPU와 비교할 때, 계산-집약적 애플리케이션들에 대해 놀라운 성능 이득을 나타낸다. 다른 그래픽 알고리즘들 및 과학적 계산 문제들로의 확장이 많은 경우들에 대해 조사되고 있다.
그러나, (음성 인식 및 필체 인식과 같은) 대화식 용도(interactive use)에 관한 애플리케이션들에는 상대적으로 관심이 적었다. 그 이유들 중의 하나는, GPU에 의한 처리를 위한 이들 알고리즘의 구현이 어려우며 몇가지 한계들을 갖기 때문이다. 범용 컴퓨팅의 경우, GPU는 실질적으로, 한계를 가진 스트림 프로세서이다. 이러한 한계들을 처리하고 극복하기 위해서는 명확하지 않으며 직관적이지도 않은 프로그래밍 및 처리 스타일이 필요하다.
이러한 대화식 용도의 애플리케이션들은 통상적으로 비단순 솔루션들(non-trivial solutions)을 가지며 상당량의 데이터를 취급한다. 이러한 상황에서는, 기계 학습 기술이 바람직한 해결 기술이다. 기계 학습 기술은, 트레이닝 후, 입력이 정확하게 분류되도록, 알고리즘의 파라미터들을 자동적으로 조정하는 것에 의해 동작한다. 예를 들어, "A"의 픽셀 이미지에 정확한 아스키 레이블(ASCII label)을 할당하는 것이 태스크라고 가정한다. 바람직스럽지 않게도, 트레이닝은 수십만개의 (입력, 타깃) 쌍들을 자체적으로 수십만개의 연산들을 가진 알고리즘에 제시하는 것과 관련된다. 따라서, 트레이닝은, 가장 빠른 속도의 머신에서라 할지라도, 상당한 시간이 걸릴 수 있다. 또한, 알고리즘을 실제 조건에서 테스팅하거나 사용하는 것은 상당한 고비용일 수 있다.
따라서, GPU를 사용해 기계 학습 기술을 처리하는 시스템 및 방법이 필요하다. GPU의 한계들을 극복함으로써 기계 학습 기술의 처리를 가속화하고 최적화할 수 있는 시스템 및 방법 또한 필요하다. 이로써, GPU의 전체적인 처리 능력이 기계 학습 기술을 사용하는 (음성 및 필체 인식과 같은) 대화식 용도의 애플리케이션들의 문제를 해결하는데 이용될 수 있다는 것이 보장된다.
여기에 개시되어 있는 발명은 GPU를 사용해 기계 학습 기술들을 처리하는 시스템 및 방법에 관한 것이다. 본 발명은 일부의 CPU 처리를 GPU에 이식함으로써 CPU의 계산 한계를 경감한다. 보다 구체적으로, 본 발명은, 통상적으로 CPU에 의해 핸들링되던 기계 학습 아키텍처를 GPU에 이식한다. GPU는 통상적으로 CPU보다 강력하고 기계 학습 기술들은 비단순 솔루션들을 가지며 데이터 액세스보다 훨씬 많은 계산을 필요로 하는, 음성 및 필체 인식과 같은, 문제들을 해결하는 것과 관련이 있으므로, 기계 학습 기술들은 GPU로의 이식에 특히 적합하다. 이는, 계산에 비해 높은 데이터 액세스를 갖는 메모리 기반 분류 또는 검색과 상반된다. GPU로의 데이터 전달에 너무 많은 시간이 걸린다면, GPU에서 계산을 수행하는 이점이 감소된다. 다시 말해, 계산에 필요하기 때문에 GPU로 전달되는 데이터가 많다면, 데이터 전달에 병목 현상(bottleneck)이 생기며, 어떠한 실질적 향상도 의미가 없어진다.
본 발명의 방법은 GPU에서의 후속 테스팅없이 GPU를 사용해 기계 학습 기술을 트레이닝하는 단계, GPU에서의 선행 트레이닝없이 GPU를 사용해 기계 학습 기술을 테스팅하는 단계, 및 GPU에서 트레이닝하고 테스팅하는 단계를 포함한다. 구체적으로, 여기에 개시되어 있는 발명은 대화식 용도의 컴퓨터 애플리케이션을 처리하는 컴퓨터-구현 방법을 포함한다. 이 방법은 GPU를 사용해 기계 학습 기술을 처리하여 함수에 대한 솔루션을 획득하는 단계, 및 대화식 용도의 컴퓨터 애플리케이션에 의한 사용을 위해 그 솔루션을 출력하는 단계를 포함한다. 본 방법은 GPU를 사용해 기계 학습 기술의 학습가능 파라미터들을 트레이닝하고 트레이닝된 학습가능 파라미터들을 획득하는 단계 및 트레이닝된 학습가능 파라미터들을 사용해 솔루션을 획득하는 단계를 더 포함한다. 대화식 용도의 컴퓨터 애플리케이션은 음성 인식 애플리케이션 및 필체 인식 애플리케이션 중 하나일 수 있다. 또한 기계 학습 기술은 신경망일 수 있다.
본 방법은 학습가능 파라미터들을 CPU에 저장하는 단계 및 적어도 일부의 학습가능 파라미터들을 GPU에 저장하는 단계를 더 포함할 수 있다. 함수에 대한 솔루션을 획득하는 단계는 픽셀 쉐이더(pixel shader)를 사용해 벡터 내적 및 행렬 내적 중 적어도 하나일 수 있는 내적을 계산하는 것에 의해 수행될 수 있다. 본 방법은 내적을 하위-문제들로 분해하는 단계 및 픽셀 쉐이더를 사용해 하위-문제들에 대해 복수의 패스들을 수행하는 단계를 더 포함할 수 있다. 함수에 대한 솔루션을 획득하는 단계는 픽셀 쉐이더를 사용해 외적을 계산하는 것에 의해 실현될 수 있다. 또한, 본 방법은 텍스처 매핑을 사용해 외적을 계산하는 단계도 포함할 수 있다. 함수에 대한 솔루션을 획득하는 단계는 픽셀 쉐이더를 사용해 행렬 전치를 수행하는 것에 의해 이루어질 수 있다. 또한, 본 방법은 텍스처 매핑을 사용해 행렬 전치를 수행하는 단계도 포함할 수 있다.
또한, 여기에 개시되어 있는 발명은 GPU를 사용해 기계 학습 기술을 가속화하고 최적화하는 프로세스도 포함한다. 이 방법은 GPU상의 픽셀 쉐이더들을 사용해 기계 학습 기술의 학습가능 파라미터들을 트레이닝하는 단계, GPU상의 픽셀 쉐이더들과 트레이닝된 학습가능 파라미터들을 사용해 기계 학습 기술로부터 결과들을 획득하는 단계, 및 애플리케이션에 의한 사용을 위해 결과들을 출력하는 단계를 포함한다.
또한, 본 프로세스는 적어도 일부의 학습가능 파라미터들을 GPU에 배치하는 단계, 및 픽셀 쉐이더들을 사용해 (a) 벡터 내적; (b) 행렬 내적; (c) 외적; (d) 행렬 전치 중 적어도 하나를 계산하는 단계를 포함한다. 기계 학습 기술은 신경망일 수 있고, 신경망은 (a) 다중 플레이어, 완전 접속 신경망; (b) 컨벌루션 신경망 중 적어도 하나일 수 있다. 또한, 기계 학습 기술은 EM(Expectation Maximization) 알고리즘과 K-means 기술 및 LVQ(Learning Vector Quantization) 기술을 사용할 수도 있다. 또한, 본 프로세스는 GPU를 사용해 데이터를 선행 처리하는 단계도 포함한다.
또한, 여기에 개시되어 있는 발명은 GPU를 사용해 기계 학습 기술을 처리하는 컴퓨터-실행가능 명령어들을 가진 컴퓨터-판독가능 매체를 포함한다. 본 매체는 GPU에 쉐이더들을 로딩하는 단계, CPU에 질의 데이터를 로딩하는 단계, 쉐이더들을 호출하여, 기계 학습 기술들을 사용하는 GPU에서 트레이닝된 함수를 처리하는 단계, 및 대화식 용도의 애플리케이션에 의한 사용을 위해 결과들을 획득하는 단계를 포함한다.
컴퓨터-판독가능 매체는 적어도 일부의 학습가능 파라미터들을 GPU에 상주시키는 단계, 및 질의 데이터를 선행 처리하여 입력 데이터를 획득하고 GPU에 입력 데이터를 로딩하는 단계를 더 포함한다. 또한, 본 매체는 쉐이더들을 사용해 GPU에서 프리미티브 연산들을 계산하는 단계를 포함한다. 프리미티브 연산들은 (a) 벡터 내적; (b) 행렬 내적; (c) 외적; (d) 행렬 전치 중 적어도 하나를 포함한다.
기계 학습 기술은 신경망 및 기울기 하강 기술(gradient descent technique)일 수 있다. 컴퓨터-판독가능 매체는 기울기 하강 기술의 조정가능 파라미터들 중 적어도 일부를 GPU에 상주시키는 단계를 더 포함한다. 대화식 용도의 애플리케이션은 필체 인식 애플리케이션(handwriting recognition application)일 수 있다. 또한, 기계 학습 기술은 신경망일 수 있으며 신경망을 사용해 분류하는 단계를 더 포함할 수 있다. 또한, 대화식 용도의 애플리케이션은 광 문자 인식 애플리케이션일 수 있고, 기계 학습 기술은 신경망일 수 있으며 신경망을 사용해 분류하는 단계를 더 포함할 수 있다. 기계 학습 기술은 기울기 하강 기술일 수 있고 기울기 하강 파라미터들을 GPU에 저장하는 단계 및 기울기 하강 파라미터들을 배가하는 것에 의해 기울기 하강 파라미터들의 가수부(mantissa)를 확장하는 단계를 포함할 수 있다.
다음의 설명 및 본 발명의 양상들을 도시하는 첨부 도면들을 참조하여 본 발명을 더 잘 이해할 수 있다. 본 발명의 원리들을 일례로써 도시하는 첨부 도면들을 참조하는 본 발명에 대한 다음의 상세한 설명으로부터 다른 특징들 및 이점들을 명백히 알 수 있다.
지금부터, 유사한 참조 번호가 전체적으로 대응되는 부분들을 나타내는 도면들을 참조한다.
발명의 상세한 설명
본 발명에 대한 다음의 설명에서는, 그에 관한 일부를 형성하며, 본 발명이 실시될 수 있는 구체적인 예시로써 도시되어 있는 첨부 도면들을 참조한다. 본 발명의 범위를 벗어나지 않으면서 다른 실시예들이 이용되거나 구조적 변경들이 있을 수 있다는 것을 알 수 있다.
Ⅰ. 도입
GPU는 통상적으로 실시간의 3D 그래픽 디스플레이를 가속화하는데 사용되어 왔다. 그러나, 증가된 처리 능력과 프로그램 능력의 결과로서, GPU 또한 다른 비-그래픽 관련 프로세스들을 효율적으로 처리할 수 있게 되었다. 이러한 프로세스들은 통상적으로, 다른 그래픽 알고리즘들 및, (계산적인 유체 역학과 같이) 다량의 데이터 및 처리와 관련된 과학적 계산 문제들로 한정되어 왔다. 그러나, 음성 및 필체 인식과 같은, 대화식 용도의 애플리케이션들은 GPU 아키텍처의 한계들 및 특징들로 인해 상대적으로 관심을 끌지 못했다.
여기에 설명되어 있는 기계 학습의 GPU 실행 시스템 및 방법은 CPU 처리의 일부 또는 전부를 GPU에 이식함으로써 CPU의 계산 한계들을 경감한다. 보다 구체적으로, 본 시스템 및 방법은 광범위한 기계 학습 기술들에 사용될 수 있는 아키텍처를 CPU에서 GPU로 전달한다. GPU로의 처리 전달은, 한계들을 극복하며 GPU 아키텍처의 프레임워크 내에서 양호하게 동작하는 몇가지 신규한 기술들을 사용해 실현된다. 이러한 한계들이 극복되면, GPU가 통상적인 CPU보다 훨씬 더 강력하기 때문에, 기계 학습 기술들은 GPU상의 처리에 특히 적합하다. 또한, 그래픽 처리와 마찬가지로, 기계 학습 기술들의 처리 또한 비단순 솔루션들 및 다량의 데이터를 가진 문제들과 관련이 있다.
Ⅱ. 예시적 동작 환경
여기에 개시되어 있는 기계 학습 GPU 실행 엔진 및 방법은 컴퓨팅 환경에서 동작하도록 설계되어 있다. 다음의 논의는, 기계 학습 GPU 실행 엔진 및 방법이 구현될 수 있는 적당한 컴퓨팅 환경에 대한 간략하고 일반적인 설명을 제공하려는 것이다.
도 1은, 기계 학습 GPU 실행 엔진 및 방법이 구현될 수 있는 적당한 컴퓨팅 시스템 환경의 일례를 도시한다. 컴퓨팅 시스템 환경(100)은 적당한 컴퓨팅 환경의 일례일 뿐이며, 본 발명의 사용 또는 기능 범위를 한정하려는 것은 아니다. 컴퓨팅 환경(100)은 예시적인 동작 환경(100)에 도시된 컴포넌트들 중의 어느 하나 또는 컴포넌트들의 조합과 관련하여 어떠한 의존성이나 요구사항을 갖는 것으로 해석되어서는 안된다.
본 기계 학습 GPU 실행 엔진 및 방법은 다수의 다른 범용 또는 특수 목적의 컴퓨팅 시스템 환경 또는 구성으로도 동작할 수 있다. 본 기계 학습 GPU 실행 엔진 및 방법에 사용하기에 적당할 수 있는 널리-공지된 컴퓨팅 시스템, 환경, 및/또는 구성의 예로는 퍼스널 컴퓨터, 서버 컴퓨터, 셀폰 및 PDA와 같은 핸드-헬드, 랩탑 또는 모바일 컴퓨터 또는 통신 장치, 멀티-프로세서 시스템, 마이크로프로세서-기반 시스템, 셋톱 박스, 프로그램 가능한 상용 전자제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상기 시스템 또는 장치들 중 하나를 포함하는 분산 컴퓨팅 환경 등을 들 수 있지만, 이에 한정되는 것은 아니다.
본 기계 학습 GPU 실행 엔진 및 방법은 컴퓨터에 의해 실행되는, 프로그램 모듈과 같은, 컴퓨터-실행가능 명령어들의 일반적인 문맥으로 설명될 수 있다. 일반적으로, 프로그램 모듈은 특정한 태스크를 수행하거나 특정한 추상적 데이터형을 구현하는 루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포함한다. 본 기계 학습 GPU 실행 엔진 및 방법 또한, 통신 네트워크를 통해 링크되어 있는 원격 처리 장치들에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈들은 메모리 저장 장치들을 포함하는 로컬 및 원격 메모리 저장 매체 모두에 배치될 수 있다. 도 1을 참조하면, 본 기계 학습 GPU 실행 엔진 및 방법을 구현하기 위한 예시적 시스템은 컴퓨터(110) 형태의 범용 컴퓨팅 장치를 포함한다.
컴퓨터(110)의 컴포넌트로는 (CPU와 같은) 처리 유닛(120), 시스템 메모리(130), 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트들을 처리 유닛(120)에 결합시키는 시스템 버스(121)를 들 수 있지만, 이에 한정되는 것은 아니다. 시스템 버스(121)는 메모리 버스 또는 메모리 컨트롤러, 주변 장치 버스 및 다양한 버스 아키텍처들 중 하나를 사용하는 로컬 버스를 포함하는 몇가지 타입의 버스 구조들 중 하나일 수 있다. 한정이 아닌 일례로써, 이러한 버스 아키텍처로는 ISA(Industry Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standards Association) 로컬 버스, 및 Mezzanine 버스라고도 하는 PCI(peripheral Component Interconnects) 버스를 들 수 있다.
컴퓨터(110)는 통상적으로 다양한 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 컴퓨터(110)에 의해 액세스될 수 있는 이용가능한 임의의 매체일 수 있으며, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체 모두를 포함한다. 한정이 아닌 일례로써, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 구비할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 포함한다.
컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CDROM, DVD 또는 다른 광학 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 다른 자기 저장 장치, 또는 소정 정보를 저장하는데 사용될 수 있으며 컴퓨터(110)에 의해 액세스될 수 있는 임의의 다른 매체를 포함하지만, 이에 한정되는 것은 아니다. 통신 매체는 통상적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 반송파와 같은 변조 데이터 신호나 다른 전송 방식의 다른 데이터를 구현하며 임의의 정보 전달 매체를 포함한다.
"변조 데이터 신호"라는 용어는, 하나 이상의 특징들의 세트를 가지며 정보를 신호로 인코딩하는 방식으로 변경된 신호를 의미한다. 한정이 아닌 일례로써, 통신 매체는 유선 네트워크 또는 직접-유선 접속과 같은 유선 매체 및 음향, RF, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함한다. 상기한 것들의 임의 조합들 또한 컴퓨터 판독가능 매체의 범위내에 포함되어야 한다.
시스템 메모리(130)는 ROM(131) 및 RAM(132)과 같은 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 스타트-업(start-up) 동안과 같은 때에, 컴퓨터(110)내의 요소들 사이에서 정보 전달을 돕는 기본적 루틴을 포함하는 BIOS(basic input/output system;133)는 ROM(131)에 저장된다. RAM(132)은 통상적으로, 처리 유닛(120)으로 즉시 액세스될 수 있거나 그리고/또는 처리 유닛(120)에 의해 현재 연산되고 있는 데이터 및/또는 프로그램 모듈을 포함한다. 한정이 아닌 일례로써, 도 1은 오퍼레이팅 시스템(134), 애플리케이션 프로그램들(135), 다른 프로그램 모듈들(136), 및 프로그램 데이터(137)를 도시한다.
컴퓨터(110)는 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체도 포함할 수 있다. 단지 일례로써, 도 1은 비분리형, 비휘발성 자기 매체로부터 판독하고 그에 기입하는 하드 디스크 드라이브(141), 분리형, 비휘발성 자기 디스크(152)로부터 판독하고 그에 기입하는 자기 디스크 드라이브(151), 및 CD-ROM 또는 다른 광학 매체와 같은, 분리형, 비휘발성 광학 디스크(156)로부터 판독하고 그에 기입하는 광학 디스크 드라이브(155)를 도시한다.
예시적 동작 환경에 사용될 수 있는 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체로는 자기 테이프 카세트, 플래시 메모리 카드, DVD, 디지털 비디오 테이프, 반도체 RAM, 반도체 ROM 등을 들 수 있지만, 이에 한정되는 것은 아니다. 하드 디스크 드라이브(141)는 통상적으로 인터페이스(140)와 같은 비휘발성 메모리 인터페이스를 통해 시스템 버스(121)에 접속되고, 자기 디스크 드라이브(151) 및 광학 디스크 드라이브(155)는 통상적으로 인터페이스(150)와 같은 분리형 메모리 인터페이스에 의해 시스템 버스(121)에 접속된다.
상술되고 도 1에 도시된 드라이브들 및 그들과 관련된 컴퓨터 저장 매체는 컴퓨터(110)에 컴퓨터-실행가능 명령어들, 데이터 구조들, 프로그램 모듈들 및 다른 데이터의 저장을 제공한다. 도 1에는, 예를 들어, 하드 디스크 드라이브(141)가 오퍼레이팅 시스템(144), 애플리케이션 프로그램들(145), 다른 프로그램 모듈들(146), 및 프로그램 데이터(147)를 저장하는 것으로 도시되어 있다. 이들 컴포넌트들은 오퍼레이팅 시스템(134), 애플리케이션 프로그램들(135), 다른 프로그램 모듈들(136), 및 프로그램 데이터(137)와 동일하거나 상이할 수 있다. 여기에서는, 최소한, 이들이 상이한 복사본임을 지시하기 위해, 오퍼레이팅 시스템(144), 애플리케이션 프로그램들(145), 다른 프로그램 모듈들(146), 및 프로그램 데이터(147)에 상이한 번호가 부여되어 있다. 사용자는 키보드(162) 및, 보통 마우스, 트랙볼 또는 터치패드라고 하는, 포인팅 장치(161)와 같은 입력 장치를 통해 명령 및 정보를 컴퓨터(110)에 입력할 수 있다.
(나타내지 않은) 다른 입력 장치로는 마이크로폰, 조이스틱, 게임 패드, 위성 안테나, 스캐너, 라디오 수신기, 또는 텔레비젼 또는 방송 비디오 수신기 등을 들 수 있다. 이들 및 다른 입력 장치들은 대개, 시스템 버스에 결합되어 있는 사용자 입력 인터페이스(160)를 통해 처리 유닛(120)에 접속되지만, 예를 들어, 병렬 포트, 게임 포트 또는 USB(universal serial bus)와 같은 다른 인터페이스 및 버스 구조에 의해 접속될 수도 있다. 모니터(191) 또는 다른 타입의 디스플레이 장치 또한, 비디오 인터페이스(190)와 같은, 인터페이스를 통해 시스템 버스(121)에 접속되어 있다. 모니터 이외에, 컴퓨터는 출력 주변 장치 인터페이스(195)를 통해 접속될 수 있는, 스피커(197) 및 프린터(196)와 같은, 다른 주변 출력 장치들도 포함할 수 있다.
컴퓨터(110)는, 원격 컴퓨터(180)와 같은, 하나 이상의 원격 컴퓨터들로의 논리적 접속을 사용하는 네트워크 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 퍼스널 컴퓨터, 핸드-헬드 장치, 서버, 라우터, 네트워크 PC, 피어 장치 또는 다른 보통의 네트워크 노드일 수 있으며, 통상적으로 컴퓨터(110)와 관련하여 상술한 요소들 중 많은 것을 또는 그 전부를 포함한다. 도 1에 도시된 논리적 접속은 LAN(local area network;171) 및 WAN(wide area network;173)을 포함하지만, 다른 네트워크들을 포함할 수도 있다. 이러한 네트워킹 환경은 사무실, 기업-범위의 컴퓨터 네트워크, 인트라넷 및 인터넷에서 흔히 볼 수 있다.
LAN 네트워킹 환경에서 사용될 경우, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(176)를 통해 LAN(171)에 접속된다. WAN 네트워킹 환경에서 사용될 경우, 컴퓨터(110)는 통상적으로, 인터넷과 같은, WAN(173)에 대해 통신을 확립하기 위한 모뎀(172) 또는 다른 수단을 포함한다. 내장형이거나 외장형일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 다른 적절한 메커니즘을 통해 시스템 버스(121)에 접속될 수 있다. 네트워크 환경에서, 컴퓨터(110)와 관련하여 도시된 프로그램 모듈들 또는 그 일부는 원격 메모리 저장 장치에 저장될 수 있다. 한정이 아닌 일례로써, 도 1은 원격 애플리케이션 프로그램들(185)을 원격 컴퓨터(180)에 상주하는 것으로 도시하고 있다. 나타낸 네트워크 접속은 예시적인 것이며 컴퓨터들간에 통신 링크를 확립하는 다른 수단이 사용될 수도 있다는 것을 알 수 있다.
Ⅲ. 일반적 개요
GPU는 실시간의 3D 그래픽 디스플레이를 가속화하도록 설계된다. 보다 양호한 그래픽에 대한 수요가 증가함에 따라, GPU는 빠르게 보다 강력해지고 있으며 프로그램 능력이 강화되고 있다. GPU의 증가된 프로그램 능력의 결과로서, GPU 또한 다른 많은 타입의 비그래픽 관련 프로세스들을 효율적으로 처리할 수 있다. 여기에 개시되어 있는 기계 학습 GPU 실행 엔진 및 방법은 CPU 처리 일부를 GPU에 이식하는 것에 의해 CPU의 계산 한계들을 경감한다. 보다 구체적으로, 본 발명은, 통상적으로 CPU에 의해 핸들링되던 기계 학습 아키텍처를 GPU에 이식한다. 다음에서 상술하는 바와 같이, 이것은, GPU에 대한 몇가지 한계들을 극복하며 기계 학습 기술들의 GPU 처리를 가속화하고 최적화하기 위한 몇가지 구현 기술들의 사용을 요한다. 범용 컴퓨팅의 경우, GPU가 통상적인 CPU보다 강력하기 때문에, 기계 학습은 GPU로 이식하기에 아주 적합하다.
도 2는 여기에 개시되어 있는 기계 학습 GPU 실행 엔진 및 방법의 예시적 구현을 도시하는 블록도이다. 도 2는, 본 기계 학습 GPU 실행 엔진 및 방법이 구현되고 사용될 수 있는 몇가지 방법들 중 하나일 뿐이라는 것을 알 수 있다. 기계 학습 기술은 트레이닝 단계와 테스팅(또는 사용) 단계의 양자 동안 GPU에 의해 처리될 수 있다. 트레이닝 단계는, 알고리즘의 파라미터들이 트레이닝 데이터를 사용해 조정되는 계산을 의미한다. 테스팅 단계는, 시스템이 입력 데이터 및 트레이닝된 파라미터들의 함수로서 유용한 정보를 계산하는데 사용되는 계산을 의미한다. 트레이닝에는 통상적으로 긴 시간이 걸리지만, 단 한번으로 끝날 수 있다. 채택된 시스템을 사용하는 것을 의미하는 테스팅은 때때로, 예를 들어, 문자 또는 음성 인식에서와 같이, 아주 빠른 응답 시간을 요한다. 트레이닝에는 긴 시간이 걸리지만 최대한의 하드웨어 독립성이 바람직한 애플리케이션들의 경우, 트레이닝은 GPU에서 이루어지지만, 테스팅은 CPU에서 이루어지게 된다. (신경망의 트레이닝 가능한 컨벌루션 계층(convolution layer)과 같이) 테스팅 알고리즘은 간단하지만 트레이닝 알고리즘은 GPU에서 실행하기에 너무 복잡한 경우도 있을 수 있다. 이 경우, 학습 알고리즘을 CPU에서 트레이닝할 수도 있지만, 테스팅 단계 동안 GPU를 사용한다. 물론 일부의 경우에서는, 트레이닝 및 테스팅 모두를 GPU에서 실행하는 것이 바람직할 수도 있다. GPU 구현은, 트레이닝 및 테스팅 모두에 대해, CPU-단독 구현들에 비해 최대 10배(an order of magnitude)만큼, 기계 학습 처리 속도를 증가시킨다. GPU 기술은 새롭고 예전의 CPU 기술보다 빨리 발전하고 있기 때문에, 이 비율은 계속 증가하고 있다.
보다 구체적으로, 도 2에 나타낸 바와 같이, 컴퓨팅 장치(110)는 기계 학습 GPU 실행 엔진(200)을 포함한다. 컴퓨팅 장치는 CPU(120) 및 CPU 메모리(130)를 더 포함한다. CPU는 가속 버스(210)를 통해 비디오 인터페이스(190)와 통신하고 있다. 이 버스(210)는, 3D 그래픽의 처리율 필요를 위해 특별히 설계된 AGP(Accelerated Graphics Port) 또는 새로운 PCI Express인 것이 바람직하다.
비디오 인터페이스(190)는 GPU(220) 및 GPU 메모리(230)를 포함한다. GPU(220)는 버스(210)를 통해 CPU(120)에 데이터를 전달할 수 있다. 기계 학습 GPU 실행 엔진(200) 또한 GPU(220) 및 GPU 메모리(230)와 통신하고 있다. 기계 학습 GPU 실행 엔진(200)은 트레이닝 모듈(240) 및 테스팅 모듈(250)을 포함한다. 트레이닝 모듈(240)은 기계 학습 기술의 트레이닝 단계 동안에 사용되며 GPU를 사용해 본 기술에 대한 파라미터들을 트레이닝하는데 사용된다. 테스팅(또는 사용) 모듈(250)은 트레이닝된 파라미터들 및 입력의 소정 함수를 계산하는데 사용된다. 이 계산의 결과들은, 음성 인식과 같은, 대화식 용도의 애플리케이션들에 사용하기 위해 기계 학습 GPU 실행 엔진(200)으로부터 CPU(120)로 전달된다.
Ⅳ. 시스템 컴포넌트들
도 3은, 일례로서, 기울기 하강 알고리즘을 사용하는 3-계층 학습 기계의 트레이닝 모듈을 도시하는 블록/흐름도이다. 도 3은 일례일 뿐이며 본 발명을 기울기 하강 알고리즘들로 한정하려는 것은 아니다. 이 예에서, 학습 기계의 최적화는 기울기 하강을 사용하여 수행된다. 베이즈망(Bayesian networks) 및 그래픽 모델과 같은, 다른 기계 학습 기술들의 경우에는, 기울기 대신에 확률이 전달될 수 있다. 계층들의 갯수 또는 구성 또한 한정적이지 않으며, 본 발명은 더 많은 계층, 더 적은 계층 또는 계층들의 상이한(비직렬) 구성을 가질 수도 있다. 파라미터들은 W=(W1, W2, W3)로 표시된다. 전체 모듈의 입력은 X이고 출력은 Y=Y 3이다.
각각의 계층은 그에 대한 입력들(Y, X 또는 W)의 함수(G)를 계산한다. 계층에 대한 함수의 관점에서, W 또는 Y는 대칭이며 구별이 불가능하다. 이는, W1, W2, W3 자체가 다른 계층들에 의해 계산될 수 있다는 것을 의미한다. 또한, G는 Y 및 W 보다 많은 입력을 가질 수도 있다. 각각의 계층은 자신의 입력 함수를 계산하고(순방향 패스), 자신의 야코비 전치로써 표시되는 dE/dY의 출력 기울기를 승산함으로써 획득되는 자신의 출력 기울기를 전달하는 것에 의해, 이웃들과 통신한다. 이는 역방향 패스이다. 정의에 의해, G의 야코비 J는 Jki=dYk/dXi의 행렬인데, 여기서, k는 k-번째 출력을 나타내고, i는 함수 G의 i-번째 입력을 나타낸다. 오차 함수 E는 비용 함수(cost function)를 사용해 마지막 계층의 출력을 타깃 T와 비교한다. 상이한 비용 함수들의 예로는 MSE(mean squared error), CE(cross-entropy) 등을 들 수 있다. 비용 함수는 기울기, 또는 각각의 변수가 비용에 어느 정도로 그리고 어떤 방향으로 영향을 미치는지를 각 변수에 대해 제공한다. 이 기울기는 시스템의 각 변수 및 파라미터들에 대해 계산된다. 파라미터들(W)은 비용 함수를 감소시키기 위해 업데이트된다. 도 4는 도 3에 도시된 3-계층 학습 기계의 테스팅 모듈을 나타내는 블록/흐름도이다.
Ⅴ. 동작 개요
여기에 개시되어 있는 기계 학습 GPU 실행 엔진(200)은 기계 학습 GPU 실행 방법을 사용해 기계 학습 기술들의 GPU에 의한 처리를 가능하게 한다. 일반적으로, 본 방법은 GPU를 사용해 기계 학습 기술을 트레이닝하는 트레이닝 단계 및 트레이닝된 함수를 사용해 제시된 문제들을 해결하는 테스팅 단계로 분리될 수 있다. 이제, 이들 단계들 각각을 설명한다.
트레이닝 단계
트레이닝 단계에서는, 기계 학습 GPU 실행 방법을 사용해 기계 학습 기술의 학습가능 파라미터들을 트레이닝한다. 도 5는 기계 학습 GPU 실행 방법의 트레이닝 단계의 연산에 대한 개요를 도시하는 흐름도이다. 도 5는 GPU에서 수행되는 트레이닝 세션의 데이터 흐름 및 제어 구조를 나타낸다. 본 도면이 임의 타입의 기계 학습 기술에 특유한 것은 아니다. (SVM, K-means, LVQ(Learning Vector Quantization), EM(Expectatiom Maximization) 등과 같은) 많은 타입의 기계 학습 기술들도 이러한 아키텍처를 사용할 수 있다. 상기한 기계 학습 기술들은 업계에 널리 공지되어 있으므로 상술하지 않는다. 도 5에 나타낸 바와 같이, CPU는 GPU에 명령어를 전달하며, GPU가 이 명령어들을 완결할 때까지 블로킹한다. 다른 방법으로, CPU와 GPU가 동시에 계산하게 하는 것도 가능할 수 있다.
도 5를 참조하면, 기계 학습 GPU 실행 방법의 트레이닝 단계는 쉐이더 프로그램들(P), 가중치와 같은, 트레이닝 가능한 초기 파라미터들(W), 및 다른 학습 파라미터들(L)을 로딩하는 것으로 시작한다(박스 500). 그 다음, 이 데이터는 CPU에서 GPU로 전달된다(화살표 505). CPU에서 GPU로의 데이터 전달은 비교적 고비용이므로, CPU는 트레이닝 루프로 진입하기 전에 가능한 많은 것을 GPU에 사전 로딩한다. 트레이닝 가능한 파라미터들(W)은 GPU 메모리(230)에 저장된다(박스 510). 바람직한 구현에서, 학습 파라미터들(L)은 신경망 계층들 각각의 가중치들 및 각 유닛의 임계치이다. 학습 파라미터들(L)은 학습율(learning rate)이라고 하는 하나의 스칼라(scalar)이다. 쉐이더 프로그램들(P)은 순방향 및 역방향 전달과 가중치 업데이트들에 사용되는 상이한 타입의 쉐이더들을 위한 것이다.
그 다음, CPU는 트레이닝 데이터(X,T)의 배치(batch)들을 로딩하는 것에 의해 트레이닝 데이터에 대한 루프를 시작하며 트레이닝 데이터의 그룹들을 누적한다(박스 515). X는 픽셀 이미지들을 나타내고 T는 그들의 타깃 레이블들을 나타낸다. 이유 그룹들(또는 배치들)은 CPU와 GPU간의 데이터 전달을 개시하는 비용이 존재하는지를 판정하는데 사용된다. 한번에 몇가지 패턴들의 그룹들로써 데이터를 전달하는 것이 보다 효율적이다.
그 다음, 픽셀 이미지들(X)은, X가 X'으로 변환되도록 선행 처리된다(박스 520). 다음으로, X' 및 T는 GPU로 송신된다(화살표 525). 그 다음, 트레이닝 데이터(X')는 트레이닝 타깃 데이터(T)와 함께 GPU 메모리(230)에 저장된다(박스 535). 선행 처리는, 데이터를 보다 양호한 형태로 만들기 위해 정규화하는 것, 고기능 또는 복잡한 특징들을 추출하는 것, 및 데이터 세트를 강화하기 위해 왜곡들을 생성하는 것과 같은, 많은 상이한 함수들을 가질 수 있다. 이론적으로, 선행 처리는 GPU나 CPU 어디에서든 수행될 수 있다. 그러나, 실제로는, GPU보다는 CPU에서 프로그램하기가 훨씬 더 용이하다. 이는, 선행 처리가 계산적으로 복잡하지 않다면 CPU에서 수행하는 것이 훨씬 용이하다는 것을 의미한다. 일부의 경우에서는, 소정 연산들이 GPU에서는 용이하게, 효율적으로 수행될 수 없거나 전혀 구현될 수 없어, CPU에서 실행되어야만 한다. 일부의 경우에서는, 선행 처리가 트레이닝 단계와 테스팅 단계에서 상이할 수 있다. 예를 들어, 트레이닝 동안, 원래의 데이터로부터 모의 데이터(변환, 회전 등)를 생성할 수 있다. 이러한 프로세스는 테스팅시에 일반화를 향상시키는 것으로 알려져 있다.
트레이닝 가능한 파라미터들을 선행 처리에 포함시킬 수도 있다. 트레이닝 가능한 파라미터들이 전역 최적화(global optimization)의 일부이고, GPU에 상주하는 학습 파라미터들과 함께 트레이닝되는 경우라 하더라도 마찬가지이다. 그러나, CPU에 상주하는 이들 파라미터들을 업데이트하기 위해, 후속 패턴이 업데이트된 선행 처리로부터 도움을 받을 수 있도록, 가능하면 각 패턴 후에, (예를 들어, 오차 기울기들, 네거티브 피드백 등의) 정보가 GPU로부터 CPU로 다시 통신되어야 한다는데 어려움이 있다. 현재, 그래픽 카드들은 통상적으로 데이터를 CPU로 다시 송신하는 것이 아니라 스크린으로 송신하도록 설계되어 있으므로, GPU에서 CPU로의 데이터 흐름은 최적화되어 있지 않다. 따라서, 현재의 아키텍처로는, 트레이닝 가능한 파라미터들을 GPU에 유지하는 것이 바람직하다. 다른 모든 데이터는 CPU에 보존되며 선행 처리는 GPU에서 수행되는 것이 바람직하다. 다른 방법으로, 트레이닝 가능한 파라미터들이 CPU와 GPU 모두에 상주할 수 있다.
트레이닝 데이터(X')가 GPU에 로딩되고 나면, CPU는 기계 학습 기술을 처리하는데 필요한 다양한 쉐이더들을 실행할 것을 GPU에 지시한다(박스 540). 통상적인 기계 학습 기술은 GPU(220)에 배치되어 있는 학습 모듈(545)로써 표시된다. 학습 모듈(545)은 선행 처리된 입력(X') 및 트레이닝 가능한 파라미터들(W)의 함수로서 함수 G(X',W)를 계산하는 학습 기계(550)를 포함한다. 목표는 이 출력을 최대한 타깃 값(T)에 근접시키는 것이다. G(X',W)와 T간의 오차(555)가 계산되며 (W에 대한 기울기와 같은) 오차 신호들은 학습 기계(550)로 다시 송신된다. 그 다음, G(X',W)와 T간의 오차를 감소시키기 위해 가중치들(W)이 업데이트된다.
일례로써, 2-계층 신경망을 트레이닝할 경우, 순방향 및 역방향 전달은 (그들 중 일부는 수차례 호출되는) 약 20개의 상이한 쉐이더들에 대응된다. 물론, 쉐이더들의 갯수와 복잡도는 사용되는 알고리즘에 따라 달라질 수 있다. 쉐이더들은 그룹의 각 패턴에 대해 (일부 경우에서는 500회와 같이) 호출된다. 확률적 기울기 하강(stochastic gradient descent)의 경우, 학습 파라미터들은 그룹의 각 패턴을 처리한 후에 업데이트된다. 배치 기울기 하강(batch gradient descent)의 경우, 학습 파라미터들이 업데이트되기 전에, 수개의 패턴들에 대해 학습 파라미터 기울기들이 누적된다. 확률적 기울기 하강을 사용할 것인지 아니면 배치 기울기 하강을 사용할 것인지의 여부는 애플리케이션 및 학습 알고리즘에 크게 의존한다. SVM과 같은, 일부 학습 알고리즘들의 경우에는, 문제가 발생하지 않는다. 필체 인식 및 신경망의 경우, 확률적 기울기 하강의 기계 학습 기술이 바람직한 기계 학습 기술이다.
CPU가 트레이닝 루프내에서 GPU로부터 피드백을 취할 수 있는 일반화를 위해 다음의 2개 프로세스들이 부가될 수 있다. 예를 들어, 도 5에 나타낸 바와 같이, CPU는 트레이닝 통계치들을 수집할 수 있으며 트레이닝 진행 데이터를 획득할 수 있다(박스 560). 이는, GPU가 업데이트된 트레이닝 가능한 파라미터들(W) 및 오차들을 CPU로 송신하게 함으로써 실현된다(화살표 565). 이 프로세스는 도 5에 점선 박스로 표시되어 있는 옵션이다. 트레이닝 진행 데이터는 학습 파라미터들 또는 심지어 소정 종류의 패턴들을 제시하는 횟수를 조정하는데 사용될 수 있다(박스 570). 예를 들어, 신경망의 경우, 때로는 학습이 진행됨에 따라 학습율을 감소시키는 것이 바람직할 수 있다. "부스팅(boosting)"이라 하는 다른 부류의 알고리즘에서는, 소정 패턴들의 횟수, 또는 그들의 학습 영향이 시스템에 의해 형성된 오차들의 함수로 변경될 수 있다.
선행 처리의 트레이닝 가능한 파라미터들 또한 GPU로부터의 오차 신호들의 함수로 변경될 수 있다. 이는, 오차 신호들이 CPU로 다시 흘러가게 하여 CPU의 학습 파라미터들을 업데이트할 수 있게 함으로써 실현된다. 그에 따라 그룹 사이즈는 변경될 수 있다. 극단적인 경우, 그룹 사이즈는 1이고, 이는 선행 처리 섹션에서 상술한 바와 같이, 오차 신호가 GPU로부터 되돌아 오자 마자, CPU의 트레이닝 파라미터들이 GPU로의 각각의 제시 후에 업데이트 된다는 것을 의미한다.
그 다음, 트레이닝의 완결 여부를 판정한다(박스 575). 이는, 고정된 횟수의 반복 이후에, 트레이닝 데이터의 모든 배치들이 처리되었을 때, 또는 소정의 오차 임계치가 실현되었을 때 판정될 수 있다. 트레이닝이 완결되지 않았다면, 트레이닝 루프는 데이터의 로딩으로 새롭게 시작한다(박스 515). 그렇지 않으면, 최종적으로 트레이닝된 파라미터들(W)이 획득된다(박스 580). 이는, GPU가 파라미터들(W)을 CPU로 전달하는 것에 의해 실현된다(화살표 585). 그 다음, 트레이닝은 완결된다(박스 590).
테스팅 단계
테스팅 단계에서, 기계 학습 GPU 실행 방법은 입력 및 트레이닝 가능한 파라미터들의 함수들을 계산하는데 사용된다. 도 6은 기계 학습 GPU 실행 방법의 테스팅 단계 연산에 대한 개요를 도시하는 흐름도이다. 도 6에 나타낸 바와 같이, 기계 학습 GPU 실행 방법은 일부의 트레이닝 가능한 파라미터들(W) 및 입력(X)의 소정 함수(G)를 계산한다. 트레이닝 가능한 파라미터들은 GPU, CPU, 또는 임의의 다른 수단들을 사용해 계산되었을 수도 있다. 또한, 트레이닝 가능한 파라미터들은 트레이닝의 결과일 수도 있고 그렇지 않을 수도 있다. 이러한 관점에서, 도 6은 도 5에 도시된 트레이닝 가능한 파라미터들의 트레이닝과 무관하다.
도 6에서는, 도 5의 아키텍처와 유사한 아키텍처가 사용된다. 구체적으로, 도 5 및 도 6의 아키텍처는 데이터 구조 및 쉐이더 프로그램들(P)을 공유한다. 그러나, 한가지 중요한 차이점은, 트레이닝이 이미 완결되었으므로, 더 이상 쉐이더들의 역방향 전달은 필요하지 않다는 점이다. 기계 학습 GPU 실행 방법의 테스팅 단계는 쉐이더 프로그램들(P) 및 트레이닝 가능한 파라미터들(W)을 GPU에 로딩하는 것으로 시작된다(박스 600). 트레이닝 단계에서와 같이, 테스팅 단계는 최대한 인식/사용 루프(recognition/usage loop) 밖에서 다운로딩하고 미리 계산하고자 한다. 그 다음, 쉐이더 프로그램들(P) 및 트레이닝 가능한 파라미터들(W)은 GPU로 송신된다(화살표 605). 구체적으로, 쉐이더 프로그램들(P)은 처리를 수행하기 위해 GPU(220)로 송신되고 트레이닝 가능한 파라미터들(W;610)은 GPU 메모리(230)에 저장된다.
다음으로, 함수(G)가 계산되는 패턴들의 그룹(X)이 수집되어 로딩된다(박스 615). CPU와 GPU간에 통신을 개시하기 위한 비용이 존재하는데, 그룹화를 수행하는 것에 의해, 이 비용은 수개 패턴들에 대해 점진적으로 상각될 수 있다. 그 다음, 패턴들(X)은, CPU에서 GPU로 송신되기 전에 X'으로 선행 처리된다(박스 620). 그 다음, X'은 GPU로 송신된다(화살표 625). 입력 데이터(X';630)는 GPU 메모리(230)에 저장된다.
선행 처리는 CPU 또는 GPU에서 수행될 수 있다. 그러나, 계산 비용이 지나치게 비싸지만 않다면, 선행 처리는 CPU에서 수행되는 것이 바람직하다. 선행 처리는 정규화 및 중요 정보의 추출과 같은 특징들과 데이터로부터의 특징들에 유용하다. 선행 처리 후에, 패턴들(X')은 그룹으로서 GPU에 송신된다(화살표 625).
다음으로, CPU는 쉐이더 프로그램들(P)을 사용할 것을 GPU에 지시한다(박스 635). GPU에 상주하는 함수 모듈(640)은 트레이닝된 함수(645)를 포함한다. 트레이닝된 함수(645)는 쉐이더 프로그램들과 함께 함수(Y=G(X',W))를 계산하는데 사용된다. GPU 메모리(230)의 임시 계산 공간(650)이 이 계산을 지원하는데 사용될 수 있다. 이 계산으로부터, 그룹의 패턴들 각각에 대한 결과들(Y;655)이 GPU 메모리(230)에 누적되며 함수 모듈의 출력으로서 송신된다(박스 660). 그 다음, 이 결과들(Y)은 CPU로 다시 전달되며(화살표 665) CPU에서 이 결과들(Y)이 획득된다(박스 670). 마찬가지로, GPU에서 CPU로의 전달은 상당히 고비용이므로, 그룹화하고 Y 사이즈를 최소로 유지하는 것이 바람직하다. 필체 분류의 예에서, Y는 단지 이미지(X)의 분류이므로 상당히 작다. 질의 데이터(X)에 대한 추가 배치들의 존재 여부를 판정한다(박스 675). 그렇다면, 인식/사용 루프는 새롭게 시작된다. 그렇지 않다면, 결과들(Y)이 출력으로서 송신된다(박스 680).
Ⅵ. 연산 세부사항들
기계 학습의 문제 설명
다수의 기계 학습 기술들은 아주 큰 행렬 연산으로 계산될 수 있는 계산을 커널(kernel)로서 포함한다. 특히 관심을 끄는 것은 큰 행렬/벡터 곱들이다. 일례로써, 필체 인식에 사용되는 신경망들은 통상적으로 한 쌍의 계층들을 포함한다. 도 7은 신경망의 한 쌍의 계층들에 대한 세부 도면이다.
도 7을 참조하면, 숨겨진 변수들의 계산이 수학식 1(1 계층에 대한 계산)로서 주어진 매핑 단계를 수반하는 행렬곱으로 계산된다.
여기서, f는 수학식 2의 sigmoid 함수 또는 수학식 3의 tanh 함수이다.
이러한 2개 계층들은 연속되어 결과를 생성한다. 입력들에 대한 벡터 크기는 숨겨지고 출력들은 수천개에 이른다. 도 7 및 상기한 설명들은 신경망들에 기초하고 있지만, 다수의 다른 기계 학습 문제들도 상기한 큰 부동점 벡터들에 대한 반복 연산들의 일반적 모델에 적합하다.
GPU에서의 프리미티브 연산들
바람직하게도, 신경망들과 같은, 많은 기계 학습 기술들, 기대값 최소화, 및 다른 많은 기울기 하강 기반의 알고리즘들은 간단한 프리미티브들(또는 빌딩 블록들)로 이루어져 있다. 이들 프리미티브들은,
ㆍ (벡터들 또는 행렬과 벡터간의) 내적들
ㆍ (벡터들간의) 외적들
ㆍ (벡터들 또는 행렬들에 대한 스칼라 합, 차, 곱과 같은) 선형 대수
ㆍ 벡터 또는 행렬에 적용된 (tanh, sigmoid, thresholding과 같은) 비선형
ㆍ 행렬 전치를 포함한다.
본 기계 학습 GPU 실행 방법은 픽셀 쉐이더들을 사용해 이 연산들 각각을 구현한다. 또한, 본 방법은, 이 연산들 각각이 트레이닝 및 실제 설정에 함께 사용될 수 있게 한다. 본 방법은 신경망들 또는 후술하는 바와 동일한 프리미티브들 또는 그들의 단순한 확장들로 이루어진 임의의 다른 학습 알고리즘들에 사용될 수 있다.
픽셀 쉐이더들을 사용해 GPU 계산하기
본 기계 학습 GPU 실행 방법은 하나 이상의 픽셀 쉐이더들을 사용해 상기 연산들 모두를 구현한다. 픽셀 쉐이더들은 그래픽 처리 파이프라인에 사용된다. 픽셀 쉐이더들은, 픽셀-렌더링 하드웨어에서 실행되는 개개의 프로그램들이다. 구체적으로, 삼각형을 픽셀로 변환하는 프로세스를 "래스터화(rasterization)"라고 한다. 본 하드웨어는 삼각형들을 입력으로 취하며 명령어들로 하여금, 삼각형들이 렌더링되기 전에 로딩될 수 있는 프로그램에 의해 특정된 각 픽셀을 렌더링할 수 있게 한다. 이들 프로그램 가능한 삼각형 렌더러들(renderers)을 "픽셀 쉐이더들"이라 한다. 쉐이더의 프로그램 명령어들은, 각각이 직접적인 하드웨어 구현을 가지므로, 어셈블리 언어에 가깝다. HLSL(High Level Shader Language), Nvidia??로부터의 Cg(C graphics), 및 DirectX와 같이, 쉐이더용으로 경쟁하는 언어들이 존재한다. 픽셀 쉐이더들에 의해 도입된 새로운 호환성으로 인해, 표면들의 자연스러운 렌더링이 가능할 뿐만 아니라, GPU는 범용의 병렬 프로세서에 더 가까와질 수 있다.
본 기계 학습 GPU 실행 방법은 GPU를 범용의 병렬 프로세서로 사용한다. 또한, 본 방법은 픽셀 쉐이더들을 사용하여 기계 학습 기술들에 사용된 다양한 프리미티브 연산들을 구현한다. 특수한 병렬 GPU 하드웨어의 결과로서, 이들 알고리즘들의 트레이닝 및 사용은 CPU보다 GPU에서 10배 더 빠르게 실행된다.
DirectX의 Direct3D 성분에는, 버텍스(vertex) 쉐이더 및 픽셀 쉐이더라고 하는 2개의 요소들이 존재한다. DirectX는, 애플리케이션들이 GPU의 하드웨어 가속 특징들을 이용할 수 있게 하는, Microsoft?? Corporation에 의해 개발된 API들(application program interfaces)의 세트이다. 픽셀 쉐이더의 현 세대는 프로그램 가능성이 높다. 2가지 타입의 쉐이더들 모두 삼각형들(그래픽 오브젝트의 빌딩 블록들)을 출력 장치로 렌더링하는 것과 관련이 있다. 버텍스 쉐이더들은 (그 이름에서 알 수 있는 바와 같이) 삼각형들의 꼭지점들에 대한 공간 변환 및 애니메이션과 같은 태스크들에 사용될 수 있다. 픽셀 쉐이더들은, 하나의 삼각형이 래스터화될 때, 개개 픽셀들을 쉐이딩하는데 (또는 개개 픽셀들의 컬러값들을 계산하는데) 사용된다.
픽쉘 쉐이더는, DirectX에 의해 정의된 한계적이며 하드웨어-의존적인 언어인 DirectX 쉐이더 어셈블리 언어의 일련의 명령어들로 표현된다. 쉐이더의 코드는 렌더링 중인 삼각형의 각 픽셀에 대해 한번씩 실행되며, 그에 따른 유일한 효과는 그 픽셀에 대해 4-벡터의 값들을 설정하는 것이다. 쉐이더 언어의 한계들 및 부작용들의 부재는, GPU가 자유롭게 픽셀들을 임의의 순서로 렌더링할 수 있으며, 아주 높은 성능을 초래하면서, 자신의 하드웨어가 최대한의 병렬성을 사용하는 것을 지원할 수 있다는 것을 의미한다. 픽셀이 4-벡터라는 사실은, 픽셀 쉐이더의 각 실행이 4개의 요소들(예를 들어, 벡터의 인접한 4개 요소들)을 동시에 계산할 수 있다는 또 다른 종류의 병렬성을 발생시킨다.
어셈블리 언어 프로그래밍에 사용된 많은 기능들은 픽셀 쉐이더들 내에서 사용될 수 있다. 이들은 상수들, 레지스터들, 합, 차, 곱, 역, 및 초월 함수들의 작은 세트 등을 포함한다. 그러나, 반복 실행 및 분파(looping and branching)와 같은 유사한 다른 구성들은 일반적으로 이용될 수 없다. 이는, 쉐이더당 명령어들의 갯수가 한정되어 있으며(하나의 일반적 GPU에 96개 명령어들) 쉐이더는 렌더링 중인 픽셀 이외의 메모리를 변경할 수 없기 때문이다. 이러한 한계들은, 일부 알고리즘들은 GPU에 의한 처리에 부적합하며, 조금이나마 이들이 구현될 수 있다면 CPU보다 GPU에서 더 느리게 실행된다는 것을 의미한다. 특정한 기계 학습 알고리즘이 GPU에서 실행될 수 있는지의 여부를 평가하기 위해서는, 알고리즘을 구성하는 개개의 연산들 각각을 조사해야 한다.
단위 연산들의 구현
본 기계 학습 GPU 실행 방법은, 하나 이상의 픽셀 쉐이더들을 사용해 기호화된 프리미티브 연산들 각각을 구현한다. 제1 과제는, 쉐이더가 장방형인 결과를 GPU 메모리에 계산하게 하는 것이다. 다시 말해, 결과들은 부동점 값들(4-벡터들)의 2-차원 행렬이어야 한다. 그러나, 픽셀 쉐이더들은 모든 픽셀들을 소정의 삼각형에 렌더링한다. 이 문제를 해결하기 위해, 본 기계 학습 GPU 실행 방법은 삼각형으로 장방형 보임창(rectangular viewport)을 특정한다. 도 8은 본 기계 학습 GPU 실행 방법에 의해 사용된 장방형 메모리 기술을 도시한다. 구체적으로, 도 8은 렌더링 중인 픽셀들을 포함하는 삼각형(800) 및 삼각형(800) 내의 장방형 보임창(810)을 보여준다. 본 기계 학습 GPU 실행 방법에 따르면, GPU는 보임창(810)과 삼각형(800)의 교차부 내의 픽셀들만을 계산할 것이다. 따라서, 소정의 장방형 영역을 계산하기 위해서는, 그 영역이 보임창(810)으로 특정되어야 하고, 렌더링 타깃이 되는 삼각형(800) 내에 둘러싸여 있어야 한다.
행렬 대신에 벡터가 렌더링되어야 할 경우, 동일한 기술이 적용된다. 유일한 차이점은, 단 하나의 픽셀 높이인 장방형 보임창이 특정된다는 것이다. 마찬가지로, 스칼라 값을 렌더링하기 위해, 1-대-1-픽셀 보임창이 사용될 수 있다.
이러한 기술 및 픽셀 쉐이더 내에서 이용가능한 범용 프로그래밍 기능들을 사용해, 벡터들 및 어레이들에 대한 x=F(x)와 같은 단항 연산들이 구현될 수 있다. 다른 연산자들로부터 판독되어야 하는 연산들의 경우에는, GPU 메모리 구성을 검사해야 한다. 구체적으로, DirectX는 장방형의 메모리 영역이 작업 공간으로 할당될 수 있게 한다. 도 9는 기계 학습 GPU 실행 방법의 GPU 메모리 구성을 도시한다. 도 9에 나타낸 바와 같이, 작업 공간(900)이 GPU 메모리에 생성된다. 현재의 하드웨어에서, 이 작업 공간은 (각각이 4개의 값을 가진) 2048×2048 픽셀들의 장방형 영역에 대한 최소 할당으로부터 생성될 수 있다. 이러한 하위 장방형(910)으로부터, 쉐이더 연산들은 t1(920), t2(930), 및 t3(940)과 같은 다른 하위 장방형들로부터의 연산자들을 렌더링하고 인출할 수 있다. 이러한 인출들은 연산자 판독(950)을 통해 실현된다.
이러한 메모리 구성을 용이하게 하는 DirectX의 메커니즘은 텍스처 매핑이다. 텍스처 매핑은 렌더링 중인 표면에 이미지를 배치해야 할 필요에서 발생한다. 예를 들어, 목성의 표면, 얼룩 무늬, 또는 벽돌 담과 같은 텍스처를 렌더링할 경우, 표면위에 그려진 패턴 뿐만 아니라 명암, 각도, 반사 등도 고려해야 한다. 이러한 연산을 위해, 장방형 룩업 테이블로의 인덱스들은 래스터화된 삼각형의 타깃 영역을 통해 쌍선형으로 보간된다. (렌더링 중인 영역을 제외한) 작업 공간의 장방형 영역들을 텍스처들로 취급함으로써, 이들은 목적지 장방형(destination rectangle)으로 매핑될 수 있다. 따라서, 목적지 장방형의 임의의 x,y 위치에서 픽셀을 계산할 경우, 텍스처 장방형에 기하학적으로 대응되는 픽셀 값들로의 액세스가 존재한다. 예를 들어, a×b 사이즈 픽셀들의 목적지 장방형이 렌더링 중이라면, 그 또한 a×b 픽셀들인 다른 영역도 텍스처-매핑될 수 있다. 이는, 쉐이더 코드 내에, 목적지의 i번째 픽셀에 대응되는 a i b i 에서의 소스-장방형 값들로의 직접적인 액세스를 생성한다. 이러한 기술의 단순한 적용으로 인해, 임의의 행렬, 벡터, 또는 스칼라 값이 작업 공간이 아닌 동일한 사이즈의 행렬, 벡터, 또는 스칼라에 복사될 수 있다. 다른 방법으로, x 픽셀들 ×1 픽셀의 텍스처 영역이 목적지 장방형에 매핑될 수 있다. 이는, 그 값이 렌더링 중인 목적지 픽셀의 y 좌표값이 아닌 x 좌표값에 의존하는 룩업 테이블로의 액세스를 제공할 것이다.
텍스처들의 유용성은 쉐이더 내의 레지스터 값들에 대한 연산을 사용하는 것에 의해 확장될 수 있다. 레지스터들은, 쉐이더가 소정 픽셀을 렌더링하는데 사용할 수 있는 지역 변수들이다. 이들의 값들은 픽셀들간에 공유될 수는 없지만(이로 인해 병렬성 가정이 위반된다) 중간 결과들을 위해 (지역적으로) 사용될 수 있다. 예를 들어, 임의의 어레이 또는 벡터는 그 값들을 새로운 위치에 복사하면서 전치될 수 있다. 왼쪽, 오른쪽, 상부, 및 하부의 좌표값들이 l, r, t, b인 소스 장방형을 가정한다. 그 다음, 좌표값들이 t, b,l, r인 텍스처 장방형을 특정한다. 픽셀 쉐이더 내에서, x 및 y의 텍스처 좌표값들은, 이들을 사용해 소스로부터 값을 인출하고 그것을 목적지에 복사하기 전에 교환된다. 렌더링 종결시에, 목적지는 소스의 전치를 포함할 것이다.
도 10은 텍스처 삼각형을 사용하는 텍스처 매핑의 사용을 도시한다. 도 10에 나타낸 바와 같이, 목적지(1000)의 현재 픽셀에 대한 렌더링은 특정 소스 벡터(1020)의 텍스처 장방형(1010)으로부터 텍스처 좌표값들(15, 7)을 검색한다. 텍스처 값을 인출하기 전에, 행과 열의 좌표값들은 (7, 15)의 위치를 가진 텍스처 장방형(1030)으로부터의 값이 실제로 판독되도록 교환되는데, (7, 15)의 위치를 가진 텍스처 장방형(1030)으로부터의 값은 전치 중인 실제의 진정한 소스 벡터(1040) 내에 위치하고 있다.
DirectX로 인해, 하나 이상의 소스 장방형을 현재의 목적지에 매핑하는데 텍스처 매핑이 사용될 수 있다. 현재 하드웨어의 각 패스에는 8개 이상의 이러한 매핑들이 사용될 수 있다. 다중 소스들로, (벡터 A - 벡터 B -> 벡터 C)와 같은 연산들이 구현될 수 있다. C의 각 픽셀에서, A 및 B로부터의 텍스처-매핑된 값들이 인출되고, 레지스터 값들에 대해 기본적인 연산이 수행되며, 그 결과들이 저장된다.
2개 벡터에서 행렬로의 텍스처-매핑 또한, 외적(벡터 A * 벡터 B -> 행렬 C)을 구현하는 방법을 제공한다. 벡터 A는 1 픽셀 너비의 행 벡터이고 B는 1행 높이의 열 벡터라 하자. 이들에 대한 텍스처 매핑은 장방형들을 행렬 C의 장방형으로 변질시킨다. 그 다음, C의 픽셀(x,y)을 렌더링할 경우, 텍스처 샘플링은, 단지 곱하고 저장하는데 필요한 값들인 A의 y번째 요소 및 B의 x번째 요소를 산출할 것이다.
4개 성분들의 사용
내적의 구현을 논의하기 전에, GPU 작업 공간이 4개의 성분들을 갖는다는 사실의 관점에서, 단위 연산들 각각을 논의할 것이다. 이들 성분들은, 각 픽셀이 x, y, z, 및 w 값들로 이루어져 있기 때문에 발생한다. 여기의 x 및 y 레이블들을 상기한 논의에서 픽셀 좌표값들을 참조하는 x 및 y와 혼동해서는 안된다. 4개의 성분들은 통상적으로 4-차원 오브젝트 공간의 좌표값들을 저장하는데 사용된다. 본 기계 학습 GPU 실행 방법은 GPU 프로그래밍 모델 및 하드웨어의 이 특징을 이용하여 보다 빠른 계산을 수행한다. 이 성분들 중 3개를 무시하고 모든 계산을, 말하자면, x 평면에서 수행할 수도 있겠지만, 그에 따른 프로그래밍 간략화는 높은 성능 비용에 직면하게 될 것이다.
이 성분들을 이용하기 위해, 픽셀 평면들의, 수학적 어레이들 또는 벡터들에서의 위치들로의 매핑이 정의된다. 벡터들의 경우, 가장 간단한 매핑은 다음과 같다.
픽셀 0:x -> 요소 0
픽셀 0:y -> 요소 1
픽셀 0:z -> 요소 2
픽셀 0:w -> 요소 3
픽셀 1:x -> 요소 4
기타 등등
이것을 행렬들로 확장하기 위해서는, 행렬의 각 행(또는 열)이 벡터여야 한다. 상기한 매핑이 각 행(또는 열)에 적용된다. 4개의 성분들이 행 차원으로 또는 열 차원으로 붕괴될 것인지의 여부는 프로그래밍을 간략화하는 방식으로 각 행렬에 대해 개별적으로 이루어질 수 있는 선택이다.
행렬 또는 벡터 요소들로부터 픽셀들 및 성분들로의 매핑이 주어지면, 복사 연산들은 전혀 영향을 받지 않는다는 것을 알 수 있다. 쉐이더는, 다른 많은 것들과 같이, 한번에 하나의 픽셀에 대해 연산하는 texldmov를 지시하는데, 이들은 4개 값들을 텍스처 픽셀로부터의 레지스터로 그리고 레지스터로부터 목적지 픽셀로 각각 이동시킨다.
벡터들에 대한 전치 연산들도 변경이 없다. 성분들은 항상 벡터의 차원으로 붕괴된다. 행렬의 경우, 코드는 변경되지 않지만, 붕괴의 방향은 데이터와 함께 전치된다는 것을 알 수 있다.
수학적 연산들 또한 채택될 수 있다. 값들의 4-벡터에 대해 또는 하나의 값에 대해, 적절한 구문을 가진 많은 쉐이더 명령어들이 사용될 수 있다. 예를 들어, exp r1.x, r0.x는 레지스터 0의 x 평면을 인출하고 그것을 지수화하여 그 결과를 r1의 x 평면에 저장한다.
외적
2개 벡터의 외적은 4개 성분들 모두를 사용해 실현될 수 있지만, 또 하나의 새로운 기술이 도입되어야 한다. 본 기계 학습 GPU 실행 방법에 의해 사용되는 이 기술은 인덱서 텍스처 기술(indexer texture technique)이라 한다. 일반적으로, 이것은 상술한 바와 같은 요소들로 매핑되어 있는 벡터의 4개 성분들 중 단 하나의 값을 선택하는 방법이다.
일례로써, 벡터 A는 사이즈 a의 열 벡터라고 가정한다. 벡터 B는 사이즈 b의 행 벡터라고 가정한다. a의 행 높이와 b의 열 너비를 가진 행렬인 외적 C의 계산이 요구된다. C의 4개 성분들은 열 또는 y 차원으로 붕괴될 것이다. 다시 말해, 픽셀의 관점에서, C에 대한 메모리 장방형은 b개의 열 너비지만, (각각의 픽셀 행이 4개의 행렬 행들을 저장하기 때문에) a/4개의 행 높이일 뿐이다. 이것은 4의 배수여야 한다.
C의 각 픽셀을 계산할 쉐이더 루틴이 필요하다. 텍스처 매핑은 B에 대해서가 아니라 A에 대해 직접적이다. B의 i번째 (픽셀이 아닌) 값으로의 액세스가 C의 i번째 픽셀을 계산할 때 필요하다. 예를 들어, C의 픽셀 (0, 0)의 4개 성분들에서, 다음의 값들이 계산되어야 한다.
이 계산은 하나의 GPU mul(multiply) 명령어로 수행될 수 있다. 이는, (A0-A3를 r2에 그리고 B0를 r3의 w 성분에 저장하는 것과 같이) 어떻게든 값 B0를 레지스터의 w 평면에 배치할 것을 요한다. 그 다음,
또 하나의 단계를 다시 작업하여, 그것의 인접한 내부-픽셀들(B1-B3)로부터 B0 를 구별해 내는 "비트 마스크(bitmask)"가 존재하면, dp4(도트 곱) 명령어가 그 값을 r3의 w 성분으로 추출해 내는데 사용될 수 있다. r5가 (1, 0, 0, 0)을 포함하고 r4가 (B에 대한 텍스처 매핑에 의해 로딩된) B0-B3를 포함한다고 가정한다. 그러면, 다음의 명령어는, r4.x 또는 B0와 동일한 를 계산할 것이다.
행렬 C의 0 열 (0, 1, 0, 0)이 렌더링될 때, 1 열 (0, 0, 1, 0)가 렌더링될 때, 2 열이 렌더링될 때 등에 값(1, 0, 0, 0)이 이용가능하면 내적이 계산될 수 있다. 이것이 인덱서 텍스처 기술의 목적이다. 인덱서 텍스처 기술은, 4개 픽셀 너비 및 1 픽셀 높이의 아주 작은 텍스처를 사용하며 다음의 값들로 초기화된다.
이러한 4개의 픽셀 값들은 방금 설명한 기술을 사용해 벡터 B로부터 개개의 값들을 추출하는데 필요한 모든 "비트 마스크들"을 구비한다. 남은 것은 인덱서 텍스처 기술의 정확한 픽셀이 쉐이더의 각 호출에 이용될 수 있게 하는 방법을 찾는 것이다. 이러한 태스크를 실현하기 위해, 본 기계 학습 GPU 실행 방법은 또 하나의 텍스처 매핑 애플리케이션을 사용한다.
지금까지는, 텍스처 매핑이 텍스처 픽셀들과 목적지 픽셀들간에 1-대-1 매핑을 유지하는 방식으로 사용되었다. 이는, 동일한 갯수의 픽셀들을 포함하는 텍스처-좌표값 장방형들 및 목적지 장방형들을 정의하는 것에 의해 수행되었다. 인덱서 텍스처 기술을 위해, 다음과 같이 (정의에 의해, 1.0 × 1.0 텍스처-좌표값 유닛들인) 인덱서 텍스처 자체 사이즈의 배수인 텍스처-좌표값 장방형이 정의된다. 행렬 C의 너비가 w개 픽셀이면, 텍스처-좌표값 장방형은 그 너비가 w/4(이는 정수여야 함)인 인텍서 텍스처에 대해 특정된다. C의 너비에 걸쳐 각 픽셀에서 쉐이더가 호출됨에 따라, 인덱서 텍스처 좌표값은 0 내지 w/4의 범위가 될 것이다. 다시 말해, C의 매 4개 픽셀들이 횡단됨에 따라, 인덱서 좌표값은 하나의 정수값에서 후속값으로 변할 것이다. 텍스처 좌표값의 분수 부분을 고려하면, C의 매 4개 픽셀에 대해, 이것은 0에서 1로 변할 것이다. 이들은 정확하게, C의 각 픽셀에서 정확한 "비트 마스크"를 취하기 위해 인덱서 텍스처를 샘플링하는데 필요한 값들이다.
frc r3, t3 //인덱서 텍스처 좌표값들의 분수 부분을 레지스터 3에 로딩
texld r4, r3, s1 //레지스터 3의 텍스처 좌표값을 사용해 인덱서 텍스처 샘플링
상기한 기술들을 사용해, 2개 벡터의 외적을 계산하는 픽셀 쉐이더가 형성된다.
내적
내적은 (행렬 A * 벡터 B -> 벡터 C)로서 표현될 수 있는 연산이다. 내적은 몇개의 값들에 대해 반복 실행되는 동안 합이 누적될 것을 요하기 때문에 문제가 된다. 이는, 인접 픽셀들간에 통신이 존재하지 않는다고 가정하는 쉐이더 아키텍처에 상반된다. 이런 이유 때문에, 내적은 하나의 픽셀 쉐이더로서 구현될 수 없다. 그러나, 다음에 나타낸 바와 같이, 내적은 일련의 쉐이더들 및 약간의 추가 메모리를 사용하여 구현될 수 있다.
a행×b열 크기의 행렬 A가 크기 a의 행 벡터 B와 곱해진다. B는 통상적으로 열 벡터로 표현되지만, 행 벡터를 사용하면 GPU 계산이 간략해진다. 벡터들의 전치 복사를 수행하는 것이 본 기계 학습 GPU 실행 방법을 사용해 실현될 수 있다는 것을 상기하면, 이는 장애가 아니다. 결과 C는 높이 b의 열 벡터일 것이다. 행렬 A는 이전과 같이 y(행) 차원으로 붕괴되는 픽셀 당 4개의 성분들을 갖도록 조직되어 있다고 가정한다.
도 11은 내적을 도시하는 블록도이다. 도 11에 대응되는 등식들은 다음의 수학식 4와 같다.
기타 등등
렌더 타깃 C는 1-차원이다. 정의된 어떠한 텍스처 맵도 C에서의 임의의 소정 픽셀 각각에서 하나의 값만을 가질 수 있기 때문에, 이것은 이전의 접근법들에 위배된다. 그러나, C의 값 각각은 B의 값들 및 A의 일 행 값들에 의존한다. 따라서, 쉐이더의 A 및 B로부터의 다수 값들에 액세스하기 위해서는 또 하나의 접근법이 사용되어야 한다. 이 접근법은 복수의 연산자들을 효율적으로 판독하기 위해 먼저 복수의 텍스처 맵들(현재의 하드웨어로는 8개가 적당한 갯수이다)을 사용한다. 다음으로, 추가적 연산자들을 판독하기 위해서는 쉐이더 내에서 어드레스 연산이 사용된다.
이러한 기술들로도, 큰 내적은 하나의 렌더링 패스로 계산될 수 없다. 이는, 픽셀 쉐이더들이 분기 또는 반복 실행을 사용할 수 없기 때문이며 (현재의 일 구현에서의 96개와 같이) 한정된 갯수의 어셈블리 명령어들만을 포함할 수 있기 때문이다. 따라서, 각각의 쉐이더는 명령어 한계에 도달하기 전에 소정량의 계산만을 수행할 수 있다. 다행스럽게도, 내적은 한번에 고려될 A의 열 갯수를 한정하는 것에 의해 하위 문제들의 세트로 분해될 수 있다. 이는 한 세트의 열-벡터 부분 곱들을 발생시킨다. 그 다음, 이들 부분 곱들은, 내적 결과를 포함하는 하나의 열 벡터가 얻어질 때까지 반복적으로 감소될 수 있다.
분해 기술은 다음과 같다. 먼저, A의 12-열 하위 행렬과 B의 12-열 하위 벡터가 곱해질 쉐이더가 생성된다. 8개의 텍스처 맵들이 이용가능하고, A에 6개가 할당되며 B에 2개가 할당된다. A에 대한 6개 맵들은 모두 동일한 사이즈의 소스 장방형을 갖지만, 0개에서 5개 픽셀의 상이한 6개의 수평 오프셋에 있다. (1 픽셀이 수평 방향의 1 열과 같다는 것을 상기하면) 이는, 행렬의 처음 6개 열에 대한 직접적인 액세스를 발생시킨다. B에 대한 2개 맵들 또한, B의 처음 8개 열들에 대한 직접적인 액세스를 제공하도록 1 픽셀만큼 오프셋될 것이다(여기서 1 픽셀은 4개 열과 동일하다).
쉐이더 프로시저는 GPU의 임시(스크래치) 메모리를 사용하는 목적지 장방형을 가진 12-열 부분 곱(12-column partial product)에 대해 실행된다. 한번에 C의 4개 행들(1 픽셀)을 계산하는 쉐이더 프로시저는 다음과 같다.
a) 수평적으로 1 픽셀만큼씩 서로 오프셋되어 있는 4개의 텍스처 맵들로, texld(텍스처 로딩) 명령어를 4번 사용해 A의 처음 4개 픽셀들을 레지스터들에 로딩한다. 각 픽셀은 4개의 로우 값들을 포함한다. 또 하나의 texld를 사용해 B의 1 픽셀(4개 컬럼들)을 로딩한다.
b) mul을 사용해 처음의 4개 곱들을 레지스터 0에 저장한다. 이는, 렌더링된 제1 픽셀에 대해, A0,0*B0, A1,0*B0, A2,0*B 0, 및 A3,0*B0를 계산한다. xxxx라는 표기는 레지스터 1(즉 B0)의 x 성분을 4개의 모든 곱들에 사용하는 것을 의미한다.
c) mad(곱/합)를 사용해 후속의 4개 곱들을 레지스터 0에 누적한다. 이는, (r3를 통해) A의 제2 수평 픽셀을 액세스하여 이전의 결과들에, 곱들 A0,1*B1, A1,1*B1, A2,1*B1, 및 A3,1*B1을 가산한다. B1에 액세스하기 위해 yyyy를 사용한다.
d) 동일한 방법으로 mad를 2번 더 사용해 후속의 8개 곱들을 누적한다.
e) 이제, 5번째 내지 8번째 컬럼들(컬럼 번호 4 내지 7)을 준비한다. 컬럼들(4 및 5)은 A에 할당된 6개 중 나머지 2개의 텍스처 맵들에 의해 이미 액세스 가능한 상태이다. 컬럼들(6 및 7)에 대해서는, 1 픽셀(또는 작업 공간 너비의 1/2048th)과 동일하게 설정되어 있는 컬럼 6의 좌표값들을 취하고, 상수 c0를 2회 가산한다. 컬럼들(6 및 7)에 대한 이들 좌표값들은 추가 레지스터들에 저장된다. 그 다음, 이 값들, 즉, A0,4 내지 A3,7을 레지스터들에 저장하기 위해 4개의 texld 명령어들이 사용된다.
f) 1 픽셀만큼 오프셋되어 있는, B에 대해 할당된 2번째 텍스처 맵을 사용해, B4 내지 B7(1 픽셀에 상당하는 양)에 대한 값들이 로딩된다.
g) (b) 내지 (d) 단계들에서 수행된 바와 같이, 16개의 추가 곱들을 r0에 저장되어 있는 4개의 실행 합계들에 누적하기 위해 4개의 mad 명령어들이 사용된다.
h) 이제, 부분 곱들의 마지막 4개 컬럼들에 대한 준비들이 이루어진다. 이 시점에서는, 모든 텍스처 맵들이 사용되었다. 따라서, 아직 레지스터에 남아 있는 컬럼 7의 어드레스가 획득되고, C0가 연속적으로 4회 이 값에 가산된다. 결과들은 레지스터들에 저장된다. B의 2번째 픽셀 어드레스를 포함하고 있는 레지스터에 C0를 가산하기 위해 동일한 과정이 수행된다. 이는, B8 내지 B11을 액세스할 수 있도록 그것을 1 픽셀만큼 진행시키는 단계를 포함한다. 정확한 좌표값들이 레지스터에 존재하게 되면, A0,8 내지 A3,11 및 B8 내지 B11 값들을 다른 레지스터들에 로딩하기 위해 다시 texld가 사용된다.
i) 마지막 16개 곱들을 r0에 누적하기 위해 4개의 추가 mad 명령어들이 사용된다. 이제, r0는 12-컬럼 부분 내적의 요소들(C0 내지 C3)에 대한 값들을 포함한다. 그 다음, 쉐이더 루틴이 완결된다. 이 쉐이터에서 더 많은 컬럼들이 처리되지 않는 이유는 쉐이더-당 명령어 한계에 도달했기 때문이다.
상기한 것은 12-컬럼 부분 내적을 임시 메모리의 열 벡터로 계산하는 방법이다. 이 방법은 후술하는 바와 같이 12 컬럼보다 넓은 행렬들로 확장될 수 있다. 먼저, 나머지 너비가 12 이상이라면 본 12-컬럼 부분 곱들이 처리된다. 다음으로, 제1 부분 결과에 직접적으로 인접한 이들 패스들의 결과들은 임시 메모리의 연속 블록에 배치된다. 마지막으로, 8 또는 4개 컬럼들이 남아 있다면(행렬 너비는 4의 배수여야 한다는 것을 기억하자), 8 또는 4개 컬럼들에 적합하게 기재된 변형 쉐이더가 사용된다. 이를 위한 기술들은 12-컬럼 쉐이더의 간략화이다.
이는 부분 결과들을 나타내는 하나 이상의 인접 열 벡터들의 블록을 초래한다. 이들은 "감소될" 필요, 즉, 최종적인 내적을 포함하게 될(그리고 "스크래치" 메모리 대신에 다른 루틴들에 의해 액세스될 수 있는 궁극적인 위치에 배치될) 하나의 열 벡터로 합산될 필요가 있다. 효율성을 위해, (레지스터들의 어드레스 계산들과 달리) 텍스처 맵들이 사용되어 감소될 필요가 있는 부분 결과들을 액세스한다. 8개의 텍스처 맵들을 소스들로 사용하여, 8개의 부분 결과들이 한번에 감소될 수 있다. 이를 위한 쉐이더 코드는 texldadd 명령어들로 이루어져 아주 간단하다. 본 프로세스를 간략화하는 한 가지 방법은 최종적인 결과들이 아니라 감소된 결과들에 대한 위치 선택에 의한 것이다. 즉, 감소된 결과들은 기존의 부분 결과의 오른쪽의 다음 열에 놓일 수 있다. 이 방법에서는, 마지막 감소 단계 때까지, 감소될 부분 결과들의 세트가 항상 연속 장방형이다. 이들 기술들 및 충분한 임시 메모리를 사용해, 임의 사이즈의 내적이 계산될 수 있다.
상기한 것은, 본 기계 학습 GPU 실행 방법이 신경망들(및 동일한 연산들로 이루어진 임의의 다른 기계 학습 알고리즘)을 트레이닝하는데 필요한 모든 연산들을 포함한다는 것을 보여준다. 또한, 이들 연산들은 GPU상의 픽셀 쉐이더들로 구현될 수 있으며, 모든 경우들에서, 본 알고리즘들은 높은 병렬도에 적합하다.
Ⅶ. 실시예
여기에 개시되어 있는 기계 학습 GPU 실행 시스템 및 방법을 보다 완전하게 이해하기 위해, 예시적 실시예의 동작 세부 사항을 제시한다. 이러한 실시예는, 본 기계 학습 GPU 실행 시스템 및 방법이 구현될 수 있는 일례일 뿐이다.
이러한 실시예에서, 본 기계 학습 GPU 실행 시스템 및 방법은 ATI?? Radeon 9800 그래픽 카드를 가진 단일 프로세서의 2.8 GHz 펜티엄 4상에서 실행된다. 9800 그래픽 카드는 94개의 명령어 메모리 위치 및 256 MB의 작업 공간을 갖는데, 256 MB의 작업 공간 중 16 MB는 판독/기입 작업 공간으로 사용되고 나머지는 읽기 전용 데이터용으로 사용된다. CPU만을 참조하는 구현들은 이미 펜티엄 4의 SSE SIMD 확장들을 이용하도록 최적화되어 있으므로, 비교는 SIMD-대-SIMD이다. 여전히 GPU 가속화는 테스팅된 예들에 대해 거의 10배이다.
이 실시예는, 수기 문자 인식을 수행하는데 사용되는 기계 학습 GPU 실행 시스템 및 방법을 도시한다. 태스크는 수기 숫자의 픽셀 이미지에 대한 분류('0' 내지 '9')를 찾아내는 것이었다. 트레이닝 데이터베이스는, 각자 정확한 레이블을 가진 60,000개의 트레이닝 이미지들로 이루어져 있다. 이러한 트레이닝 세트를 일부에서는 MNIST라고 하며 웹에서 찾아볼 수 있고, 기계 학습 알고리즘 문헌에 널리 공지되어 있다. 이 태스크를 해결하기 위해, 신경망 접근이 사용되었다. 구체적으로, 신경망은 2-계층의 완전 접속 신경망이다.
역방향 전달에 의한 2-계층 완전 접속 신경망의 트레이닝은 표 1의 패스들로 분해되었다.
여기에서, 순방형 전달은 행렬 W1을 함수 맵(F1(x), 이 경우, F1(x)=tanh)이 수반되는 벡터 I와 곱하여, 벡터들(H)을 계산한다. 이 신경망에는 2개의 계층들이 존재하기 때문에, 동일한 연산들이 W2, H, 및 F2(x)(이 경우, F2(x)=sigmoid)로 반복되어 O를 산출한다. W1 및 W2는 신경망의 각 레벨에 대한 가중치들의 행렬이고, I는 입력 벡터이며, H는 숨겨진 계층 벡터이고, O는 출력 벡터이다. 통상적으로 임계치도 각각의 숨겨진 유닛 및 출력 유닛들에 가산된다. 임계치는 그 값이 항상 1인 유닛을 입력 및 숨겨진 계층에 가산하는 것으로 모방될 수 있다. 상수 유닛을 다른 유닛들에 접속하는 가중치들은 이들 유닛들에 대한 임계치들인 것이 효과적이다. 계층들(I 및 H)이 상수 유닛들에 의해 확대된다면, 상기 등식들은 각각의 숨겨진 계층 및 출력 계층에 대한 임계치들을 정확하게 구현한다. 임계 파라미터들은 W1 및 W2에 포함된다. 오차 계산은 F(x) 함수의 미분(D(x))만큼이 곱해진, 신경망의 타깃 벡터로부터 출력 벡터의 차이이다. F(x) 및 대응되는 D(x)에 대한 공식은 표 2와 같다.
쉐이더 언어는 성분 대 성분으로 벡터에 적용되거나, 쉐이더의 관점에서 픽셀 대 픽셀로 적용될 수 있는 지수 함수들을 가진다.
가중치 업데이트는, 그 계층의 오차 벡터와 입력 벡터의 외적을 수행하는 것에 의해 수행되었다. 획득된 행렬은 학습 계수 만큼 스케일링되어 기존의 가중치 행렬에 가산된다. 오차를 네트워크로 전달하기 위해, 또 하나의 행렬 벡터 곱이 계산되었다. 즉, 오차 벡터를 가진 가중치 행렬의 전치가 계산되어 다시 D(x) 함수에 의해 스케일링되었다.
요약하면, 다음의 연산들이 본 기계 학습 GPU 실행 방법을 사용해 GPU상에 구현되었다.
1. 행렬 * 벡터 -> 벡터 (내적)
2. 벡터의 각 요소에 대한 x=f(x) (여기서, f는 tanh 또는 논리 함수, 또는 이들의 미분)
3. 벡터 A - 벡터 B -> 벡터 C
4. 벡터 * 벡터 -> 행렬 (외적)
5. 행렬 A + 상수 * 행렬 B -> 행렬 A
6. 행렬 전치
7. (행렬 또는 벡터)를 GPU 메모리 내의 새로운 위치에 복사
8. (행렬 또는 벡터)를 CPU 메모리에서 GPU 메모리로 복사, 또는 그 역 (이
것은 DirectX에 의해 직접적으로 지원되며, 단지 완전성을 위해 언급되었
다)
이 연산들 각각은 하나의 패스에서, 또는 상술한 한계들로 인해 하나의 패스에서 연산을 계산할 수 없을 경우에는 복수의 패스들에서 수행된다. GPU에서의 실제 실행은, 패스들의 리스트가 선행 처리에서 생성될 것을 요한다. 이 리스트는 수동으로 또는 자동으로 생성될 수 있다. 또한, 개개의 함수들은 (역시 선행 처리에서) 컴파일되어 GPU로 다운로딩되어야 하며, 입력 및 트레이닝 값들은 그래픽 메모리의 작업 공간에 다운로딩되어야 하고, 그 다음, 삼각형 및 보임창이 다운로딩되어야 하며 각 패스에 대해 함수들이 특정된다. 이 단계들 각각은 D3D(Direct 3D) 그래픽 API로의 호출들을 통해 구현되었다. 삼각형 및 보임창의 다운로딩이 패스의 실행을 개시한다. 상기한 바와 같이, 클리핑된 삼각형을 GPU에 렌더링하는 것은 픽셀당 내포 DO 루프를 구성한다. 각 패스에 대한 소정의 단편 쉐이딩 프로세스가 각 다각형의 속성으로서 코딩되었다. 반복적 트레이닝을 위해, 이 시퀀스가 각각의 루프에 대해 반복되었다. 루프들 전체를 통해, 프로그래머가 진행 과정을 모니터링하고자 하는 경우가 아니라면, 그래픽 메모리에서 CPU로 데이터를 재판독할 필요가 없다. 메모리 전달을 호스트하는 그래픽 메모리가 현재의 하드웨어로는 저속이므로, 프로그래머들은 통상적으로 이러한 동작들을 피한다.
본 발명에 대한 상기 설명은 예시 및 설명의 목적으로 제시되었다. 총망라하거나 정확히 개시된 형태로 본 발명을 한정하려는 것이 아니다. 이러한 관점에서 많은 변경 및 변형이 가능할 수 있다. 본 발명의 범위는 본 발명에 대한 이러한 상세한 설명이 아니라 여기에 첨부되어 있는 청구항들에 의해 한정될 것이다.
따라서, 본 발명에 따르면, GPU를 사용해 기계 학습 기술을 처리하는 시스템 및 방법이 제공된다. 또한, GPU의 한계들을 극복함으로써 기계 학습 기술의 처리를 가속화하고 최적화할 수 있는 시스템 및 방법이 제공된다. 이로써, GPU의 전체적인 처리 능력이 기계 학습 기술을 사용하는 (음성 및 필체 인식과 같은) 대화식 용도의 애플리케이션들의 문제를 해결하는데 이용될 수 있다는 것이 보장된다.
도 1은 기계 학습 GPU 실행 엔진 및 방법이 구현될 수 있는 적당한 컴퓨팅 시스템 환경의 일례를 도시한다.
도 2는 여기에 개시되어 있는 기계 학습 GPU 실행 엔진 및 방법의 예시적 구현을 도시하는 블록도이다.
도 3은, 일례로서, 기울기 하강 알고리즘을 사용하는 3-계층 학습 기계의 트레이닝 모듈을 도시하는 블록/흐름도이다.
도 4는 도 3에 나타낸 3-계층 학습 기계의 테스팅 모듈을 도시하는 블록/흐름도이다.
도 5는 기계 학습 GPU 실행 방법의 트레이닝 단계의 동작에 대한 개요를 도시하는 흐름도이다.
도 6은 기계 학습 GPU 실행 방법의 테스팅 단계의 동작에 대한 개요를 도시하는 흐름도이다.
도 7은 신경망의 한 쌍의 계층들에 대한 상세도이다.
도 8은 기계 학습 GPU 실행 방법에 의해 사용되는 장방형 메모리 기술을 도시한다.
도 9는 기계 학습 GPU 실행 방법의 GPU 메모리 구성을 도시한다.
도 10은 텍스처 삼각형을 사용하는 텍스처 매핑의 사용을 도시한다.
도 11은 내적을 도시하는 블록도이다.
<도면의 주요 부분에 대한 부호의 설명>
110 : 컴퓨팅 장치
120 : CPU
130 : CPU 메모리
190 : 비디오 인터페이스
200 : 기계 학습 GPU 실행 엔진
210 : 가속 버스
220 : GPU
230 : GPU 메모리
240 : 트레이닝 모듈
250 : 테스팅 모듈

Claims (39)

  1. 컴퓨터 애플리케이션을 처리하는 컴퓨터-구현 방법으로서,
    GPU(graphics processing unit)를 사용해 기계 학습 기술을 처리하여, 결과들을 획득하는 단계; 및
    상기 결과들을 사용해, 상기 컴퓨터 애플리케이션에 의한 사용에 솔루션들을 제공하는 단계
    를 포함하는 컴퓨터-구현 방법.
  2. 제1항에 있어서,
    상기 GPU를 사용해 기계 학습 기술을 처리하는 단계는,
    (a) 상기 GPU를 사용해, 상기 기계 학습 기술의 학습가능 파라미터들을 트레이닝하는 단계;
    (b) 상기 GPU를 사용해, 입력 및 트레이닝된 학습가능 파라미터들의 함수들을 테스팅하고 계산하는 단계; 및
    (c) 상기 GPU를 사용해, 학습가능 파라미터들을 트레이닝하고, 입력 및 트레이닝된 학습가능 파라미터들의 함수들을 테스팅하고 계산하는 단계
    중 적어도 하나를 더 포함하는 컴퓨터-구현 방법.
  3. 제1항에 있어서,
    상기 결과들은 트레이닝된 학습가능 파라미터들이고,
    상기 GPU를 사용해 상기 기계 학습 기술의 학습가능 파라미터들을 트레이닝하여, 상기 트레이닝된 학습가능 파라미터들을 획득하는 단계; 및
    상기 트레이닝된 학습가능 파라미터들을 사용해, 상기 솔루션들을 획득하는 단계
    를 더 포함하는 컴퓨터-구현 방법.
  4. 제1항에 있어서,
    CPU를 사용해 트레이닝된 학습가능 파라미터들을 획득하는 단계; 및
    상기 GPU를 사용해, 입력 및 상기 트레이닝된 학습가능 파라미터들의 함수들을 테스팅하고 계산하여 결과들을 획득하는 단계
    를 더 포함하는 컴퓨터-구현 방법.
  5. 제1항에 있어서,
    상기 GPU를 사용해, 상기 기계 학습 기술의 트레이닝된 학습가능 파라미터들을 획득하는 단계; 및
    상기 GPU를 사용해, 입력 및 상기 트레이닝된 학습가능 파라미터들의 함수들을 테스팅하고 계산하는 단계
    를 더 포함하는 컴퓨터-구현 방법.
  6. 제1항에 있어서,
    대화식 용도의 컴퓨터 애플리케이션은 (a) 음성 인식 애플리케이션; (b) 필체 인식 애플리케이션 중 하나인 컴퓨터-구현 방법.
  7. 제1항에 있어서,
    상기 기계 학습 기술은 신경망(neural network)인 컴퓨터-구현 방법.
  8. 제3항에 있어서,
    상기 트레이닝된 학습가능 파라미터들의 적어도 일부를 상기 GPU에 저장하는 단계를 더 포함하는 컴퓨터-구현 방법.
  9. 제1항에 있어서,
    상기 기계 학습 기술을 처리하는 단계는, 픽셀 쉐이더(pixel shader)를 사용해, (a) 벡터 내적; (b) 행렬 내적 중 적어도 하나의 내적을 계산하는 단계를 더 포함하는 컴퓨터-구현 방법.
  10. 제9항에 있어서,
    상기 내적을 하위-문제들로 분해하고, 픽셀 쉐이더들을 사용해 상기 하위-문제들에 대해 복수의 패스들을 수행하는 단계를 더 포함하는 컴퓨터-구현 방법.
  11. 제1항에 있어서,
    상기 기계 학습 기술을 처리하는 단계는, 픽셀 쉐이더를 사용해 외적을 계산하는 단계를 더 포함하는 컴퓨터-구현 방법.
  12. 제11항에 있어서,
    텍스처 매핑을 사용해 상기 외적을 계산하는 단계를 더 포함하는 컴퓨터-구현 방법.
  13. 제1항에 있어서,
    상기 기계 학습 기술을 처리하는 단계는, 픽셀 쉐이더를 사용해 행렬 전치를 수행하는 단계를 더 포함하는 컴퓨터-구현 방법.
  14. 제13항에 있어서,
    텍스처 매핑을 사용해 상기 행렬 전치를 수행하는 단계를 더 포함하는 컴퓨터-구현 방법.
  15. 제1항에 기재된 컴퓨터-구현 방법을 수행하기 위한 컴퓨터-실행가능 명령어들을 가진 컴퓨터-판독가능 매체.
  16. GPU를 사용해 기계 학습 기술을 가속화하고 최적화하는 프로세스로서,
    상기 기계 학습 기술의 학습가능 파라미터들을 트레이닝하여 트레이닝된 학습가능 파라미터들을 획득하는 단계;
    상기 트레이닝된 학습가능 파라미터들을 사용해, 상기 기계 학습 기술로부터의 결과들을 획득하는 단계; 및
    픽셀 쉐이더들을 사용해, (a) 학습가능 파라미터들을 트레이닝하는 단계; (b) 상기 트레이닝된 학습가능 파라미터들을 사용하는 단계; 및 (c) 애플리케이션에 의한 사용을 위해 상기 결과들을 출력하는 단계 중 적어도 하나를 수행하는 단계
    를 포함하는 프로세스.
  17. 제16항에 있어서,
    상기 픽셀 쉐이더들은 그래픽 카드에 상주하는 프로세스.
  18. 제16항에 있어서,
    상기 학습가능 파라미터들의 적어도 일부를 상기 GPU에 배치하는 단계를 더 포함하는 프로세스.
  19. 제16항에 있어서,
    픽셀 쉐이더들을 사용해, (a) 벡터 내적; (b) 행렬 내적; (c) 외적; (d) 행렬 전치 중 적어도 하나를 계산하는 단계를 더 포함하는 프로세스.
  20. 제16항에 있어서,
    상기 기계 학습 기술은 신경망인 프로세스.
  21. 제20항에 있어서,
    상기 신경망은 (a) 다수-계층의 완전 접속 신경망; (b) 컨벌루션 신경망 중 적어도 하나인 프로세스.
  22. 제16항에 있어서,
    상기 기계 학습 기술은 EM(Expectation Maximization) 기술을 사용하는 프로세스.
  23. 제16항에 있어서,
    상기 기계 학습 기술은 (a) K-means 기술; (b) LVQ(Learning Vector Quantization) 기술 중 적어도 하나인 프로세스.
  24. 제16항에 있어서,
    상기 GPU를 사용해, 데이터를 선행 처리하는 단계를 더 포함하는 프로세스.
  25. 제23항에 있어서,
    상기 선행 처리하는 단계는, (a) 데이터를 입력에 보다 적합한 형태로 만들기 위해 정규화하는 단계; (b) 상기 데이터로부터 정보 및 특징들을 추출하는 단계; (c) 입력 데이터를 획득하고 상기 입력 데이터를 상기 GPU에 로딩하는 단계 중 적어도 하나를 포함하는 프로세스.
  26. 하나 이상의 프로세서들에 의해 실행될 경우, 상기 하나 이상의 프로세서들이 제16항의 프로세스를 구현하게 하는 컴퓨터-판독가능 명령어들을 가진 하나 이상의 컴퓨터-판독가능 매체.
  27. GPU를 사용해, 기계 학습 기술을 처리하는 컴퓨터-실행가능 명령어들을 가진 컴퓨터-판독가능 매체로서,
    상기 GPU에 쉐이더들을 로딩하는 단계;
    상기 GPU에 데이터를 로딩하는 단계;
    상기 쉐이더들을 호출해, 상기 기계 학습 기술들을 사용하는 상기 GPU에서 트레이닝된 함수를 처리하는 단계; 및
    대화식 용도의 애플리케이션에 의한 사용을 위해 결과들을 획득하는 단계
    를 포함하는 컴퓨터-판독가능 매체.
  28. 제27항에 있어서,
    학습가능 파라미터들의 적어도 일부를 상기 GPU에 상주시키는 단계를 더 포함하는 컴퓨터-판독가능 매체.
  29. 제27항에 있어서,
    질의 데이터를 선행 처리하여 입력 데이터를 획득하는 단계; 및
    상기 입력 데이터를 상기 GPU에 로딩하는 단계
    를 더 포함하는 컴퓨터-판독가능 매체.
  30. 제27항에 있어서,
    상기 쉐이더들을 사용해, 상기 GPU에서 프리미티브 연산들을 계산하는 단계를 더 포함하는 컴퓨터-판독가능 매체.
  31. 제30항에 있어서,
    상기 프리미티브 연산들은, (a) 벡터 내적; (b) 행렬 내적; (c) 외적; (d) 행렬 전치 중 적어도 하나를 포함하는 컴퓨터-판독가능 매체.
  32. 제27항에 있어서,
    상기 기계 학습 기술은 신경망인 컴퓨터-판독가능 매체.
  33. 제27항에 있어서,
    상기 기계 학습 기술은 경사 하강 기술인 컴퓨터-판독가능 매체.
  34. 제33항에 있어서,
    상기 경사 하강 기술의 조정가능 파라미터들 중 적어도 일부를 상기 GPU에 상주시키는 단계를 더 포함하는 컴퓨터-판독가능 매체.
  35. 제27항에 있어서,
    상기 대화식 용도의 애플리케이션은 필체 인식 애플리케이션인 컴퓨터-판독가능 매체.
  36. 제35항에 있어서,
    상기 기계 학습 기술은 신경망이고,
    상기 신경망을 사용해 분류를 수행하는 단계를 더 포함하는 컴퓨터-판독가능 매체.
  37. 제27항에 있어서,
    상기 대화식 용도의 애플리케이션은 광 문자 인식 애플리케이션인 컴퓨터-판독가능 매체.
  38. 제37항에 있어서,
    상기 기계 학습 기술은 신경망이고,
    상기 신경망을 사용해 분류를 수행하는 단계를 더 포함하는 컴퓨터-판독가능 매체.
  39. 제27항에 있어서,
    상기 상기 기계 학습 기술은 경사 하강 기술이고,
    경사 하강 파라미터들을 상기 GPU에 저장하는 단계; 및
    각각의 파라미터를, 상기 파라미터 값의 더 높은 유효 숫자들을 포함하는 저장 위치와 더 낮은 유효 숫자들을 포함하는 다른 저장 위치의 2개 저장 위치에 저장함으로써, 상기 경사 하강 파라미터들의 정밀도를 확장하는 단계
    를 더 포함하는 컴퓨터-판독가능 매체.
KR1020040094065A 2003-12-09 2004-11-17 그래픽 처리 유닛을 사용해 기계 학습 기술들의 처리를가속화하고 최적화하는 시스템 및 방법 KR101137107B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US52857803P 2003-12-09 2003-12-09
US60/528,578 2003-12-09
US10/837,382 2004-04-30
US10/837,382 US7219085B2 (en) 2003-12-09 2004-04-30 System and method for accelerating and optimizing the processing of machine learning techniques using a graphics processing unit

Publications (2)

Publication Number Publication Date
KR20050056124A true KR20050056124A (ko) 2005-06-14
KR101137107B1 KR101137107B1 (ko) 2012-07-02

Family

ID=34636692

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040094065A KR101137107B1 (ko) 2003-12-09 2004-11-17 그래픽 처리 유닛을 사용해 기계 학습 기술들의 처리를가속화하고 최적화하는 시스템 및 방법

Country Status (5)

Country Link
US (1) US7219085B2 (ko)
EP (2) EP2648132B1 (ko)
JP (1) JP4901097B2 (ko)
KR (1) KR101137107B1 (ko)
CN (1) CN100468320C (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100826740B1 (ko) * 2005-07-12 2008-04-30 가부시키가이샤 소니 컴퓨터 엔터테인먼트 멀티그래픽프로세서시스템, 그래픽프로세서 및묘화처리방법
KR100915329B1 (ko) * 2006-12-02 2009-09-03 한국전자통신연구원 그래픽 프로세서의 범용 계산을 위한 성능 테스트 방법
KR20190088643A (ko) * 2018-01-19 2019-07-29 한국전자통신연구원 Gpu 기반의 적응적 blas 연산 가속화 장치 및 방법
KR102147912B1 (ko) * 2019-08-13 2020-08-25 삼성전자주식회사 프로세서 칩 및 그 제어 방법들
KR102543512B1 (ko) * 2022-10-31 2023-06-13 서울대학교산학협력단 뉴럴 렌더링을 위한 저정밀도 하드웨어 가속기 및 그 동작 방법

Families Citing this family (185)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8471852B1 (en) 2003-05-30 2013-06-25 Nvidia Corporation Method and system for tessellation of subdivision surfaces
US8134561B2 (en) * 2004-04-16 2012-03-13 Apple Inc. System for optimizing graphics operations
US8704837B2 (en) * 2004-04-16 2014-04-22 Apple Inc. High-level program interface for graphics operations
US20050243087A1 (en) * 2004-04-30 2005-11-03 Shmuel Aharon GPU-based Finite Element
US8189002B1 (en) * 2004-10-29 2012-05-29 PME IP Australia Pty, Ltd. Method and apparatus for visualizing three-dimensional and higher-dimensional image data sets
US7598953B2 (en) * 2004-11-05 2009-10-06 Microsoft Corporation Interpreter for simplified programming of graphics processor units in general purpose programming languages
US7733347B2 (en) * 2004-11-05 2010-06-08 Microsoft Corporation Automated construction of shader programs
US7800620B2 (en) * 2004-11-05 2010-09-21 Microsoft Corporation Optimizing automated shader program construction
US7839854B2 (en) * 2005-03-08 2010-11-23 Thomas Alexander System and method for a fast, programmable packet processing system
US7403784B2 (en) * 2005-03-10 2008-07-22 Avaya Technology Corp. Method and apparatus for positioning a set of terminals in an indoor wireless environment
US7747070B2 (en) * 2005-08-31 2010-06-29 Microsoft Corporation Training convolutional neural networks on graphics processing units
US8571346B2 (en) 2005-10-26 2013-10-29 Nvidia Corporation Methods and devices for defective pixel detection
US7750956B2 (en) 2005-11-09 2010-07-06 Nvidia Corporation Using a graphics processing unit to correct video and audio data
US8624909B2 (en) * 2005-11-21 2014-01-07 Vixs Systems Inc. Image processing system and method thereof
US8588542B1 (en) 2005-12-13 2013-11-19 Nvidia Corporation Configurable and compact pixel processing apparatus
US8737832B1 (en) 2006-02-10 2014-05-27 Nvidia Corporation Flicker band automated detection system and method
US7599861B2 (en) 2006-03-02 2009-10-06 Convergys Customer Management Group, Inc. System and method for closed loop decisionmaking in an automated care system
US7809663B1 (en) 2006-05-22 2010-10-05 Convergys Cmg Utah, Inc. System and method for supporting the utilization of machine language
US8379830B1 (en) 2006-05-22 2013-02-19 Convergys Customer Management Delaware Llc System and method for automated customer service with contingent live interaction
ES2395657T3 (es) * 2006-06-20 2013-02-14 Qualcomm Incorporated Receptor para señales de posicionamiento por radio
US8134566B1 (en) * 2006-07-28 2012-03-13 Nvidia Corporation Unified assembly instruction set for graphics processing
US8594441B1 (en) 2006-09-12 2013-11-26 Nvidia Corporation Compressing image-based data using luminance
US8648867B2 (en) * 2006-09-25 2014-02-11 Neurala Llc Graphic processor based accelerator system and method
US7907138B2 (en) * 2006-12-29 2011-03-15 Intel Corporation System co-processor
US8723969B2 (en) 2007-03-20 2014-05-13 Nvidia Corporation Compensating for undesirable camera shakes during video capture
US8724895B2 (en) 2007-07-23 2014-05-13 Nvidia Corporation Techniques for reducing color artifacts in digital images
US8392529B2 (en) 2007-08-27 2013-03-05 Pme Ip Australia Pty Ltd Fast file server methods and systems
US8570634B2 (en) 2007-10-11 2013-10-29 Nvidia Corporation Image processing of an incoming light field using a spatial light modulator
US10311541B2 (en) 2007-11-23 2019-06-04 PME IP Pty Ltd Multi-user multi-GPU render server apparatus and methods
US8548215B2 (en) 2007-11-23 2013-10-01 Pme Ip Australia Pty Ltd Automatic image segmentation of a volume by comparing and correlating slice histograms with an anatomic atlas of average histograms
US9019287B2 (en) 2007-11-23 2015-04-28 Pme Ip Australia Pty Ltd Client-server visualization system with hybrid data processing
US9904969B1 (en) 2007-11-23 2018-02-27 PME IP Pty Ltd Multi-user multi-GPU render server apparatus and methods
US8319781B2 (en) 2007-11-23 2012-11-27 Pme Ip Australia Pty Ltd Multi-user multi-GPU render server apparatus and methods
US9177368B2 (en) 2007-12-17 2015-11-03 Nvidia Corporation Image distortion correction
US8515052B2 (en) 2007-12-17 2013-08-20 Wai Wu Parallel signal processing system and method
US20090172353A1 (en) * 2007-12-28 2009-07-02 Optillel Solutions System and method for architecture-adaptable automatic parallelization of computing code
US8234228B2 (en) * 2008-02-07 2012-07-31 Nec Laboratories America, Inc. Method for training a learning machine having a deep multi-layered network with labeled and unlabeled training data
US8698908B2 (en) 2008-02-11 2014-04-15 Nvidia Corporation Efficient method for reducing noise and blur in a composite still image from a rolling shutter camera
US20090234603A1 (en) * 2008-03-17 2009-09-17 Anritsu Company System and method for accelerating an electrical measurement instrument using a graphical processing unit
US9379156B2 (en) 2008-04-10 2016-06-28 Nvidia Corporation Per-channel image intensity correction
WO2009149236A2 (en) * 2008-06-04 2009-12-10 Nec Laboratories America, Inc. System and method for parallelizing and accelerating learning machine training and classification using a massively parallel accelerator
US8274516B2 (en) * 2008-08-04 2012-09-25 Microsoft Corporation GPU scene composition and animation
US8200594B1 (en) * 2008-09-10 2012-06-12 Nvidia Corporation System, method, and computer program product for accelerating a game artificial intelligence process
US8373718B2 (en) 2008-12-10 2013-02-12 Nvidia Corporation Method and system for color enhancement with color volume adjustment and variable shift along luminance axis
US20100188412A1 (en) * 2009-01-28 2010-07-29 Microsoft Corporation Content based cache for graphics resource management
US8711159B2 (en) 2009-02-23 2014-04-29 Microsoft Corporation VGPU: a real time GPU emulator
US20100223213A1 (en) * 2009-02-27 2010-09-02 Optillel Solutions, Inc. System and method for parallelization of machine learning computing code
US8749662B2 (en) 2009-04-16 2014-06-10 Nvidia Corporation System and method for lens shading image correction
CN101664583B (zh) * 2009-09-09 2012-05-09 深圳市海博科技有限公司 基于cuda的剂量计算优化方法和系统
US8698918B2 (en) 2009-10-27 2014-04-15 Nvidia Corporation Automatic white balancing for photography
US8560466B2 (en) * 2010-02-26 2013-10-15 Trend Micro Incorporated Method and arrangement for automatic charset detection
RU2458384C1 (ru) * 2011-02-17 2012-08-10 Федеральное государственное военное образовательное учреждение высшего профессионального образования "Военный авиационный инженерный университет" (г. Воронеж) Министерства обороны Российской Федерации Устройство для контроля эвм
US8489529B2 (en) * 2011-03-31 2013-07-16 Microsoft Corporation Deep convex network with joint use of nonlinear random projection, Restricted Boltzmann Machine and batch-based parallelizable optimization
US20130054566A1 (en) * 2011-08-31 2013-02-28 Microsoft Corporation Acceleration of ranking algorithms using a graphics processing unit
JP4976578B1 (ja) 2011-09-16 2012-07-18 楽天株式会社 画像検索装置およびプログラム
JP5879899B2 (ja) * 2011-10-12 2016-03-08 ソニー株式会社 情報処理装置、情報処理方法、及びプログラム
TW201322006A (zh) * 2011-11-18 2013-06-01 Ind Tech Res Inst 資料處理方法及其裝置
US20130163195A1 (en) * 2011-12-22 2013-06-27 Nvidia Corporation System, method, and computer program product for performing operations on data utilizing a computation module
US9798698B2 (en) 2012-08-13 2017-10-24 Nvidia Corporation System and method for multi-color dilu preconditioner
CN102841881A (zh) * 2012-08-21 2012-12-26 浪潮电子信息产业股份有限公司 一种基于众核处理器的多重积分计算方法
US9508318B2 (en) 2012-09-13 2016-11-29 Nvidia Corporation Dynamic color profile management for electronic devices
US9307213B2 (en) 2012-11-05 2016-04-05 Nvidia Corporation Robust selection and weighting for gray patch automatic white balancing
US8880446B2 (en) 2012-11-15 2014-11-04 Purepredictive, Inc. Predictive analytics factory
WO2014110167A2 (en) 2013-01-08 2014-07-17 Purepredictive, Inc. Integrated machine learning for a data management product
CN103996069B (zh) * 2013-02-20 2018-04-03 百度在线网络技术(北京)有限公司 一种基于多gpu的bpnn训练方法和装置
US8976190B1 (en) 2013-03-15 2015-03-10 Pme Ip Australia Pty Ltd Method and system for rule based display of sets of images
US9509802B1 (en) 2013-03-15 2016-11-29 PME IP Pty Ltd Method and system FPOR transferring data to improve responsiveness when sending large data sets
US10540803B2 (en) 2013-03-15 2020-01-21 PME IP Pty Ltd Method and system for rule-based display of sets of images
US11244495B2 (en) 2013-03-15 2022-02-08 PME IP Pty Ltd Method and system for rule based display of sets of images using image content derived parameters
US11183292B2 (en) 2013-03-15 2021-11-23 PME IP Pty Ltd Method and system for rule-based anonymized display and data export
US10070839B2 (en) 2013-03-15 2018-09-11 PME IP Pty Ltd Apparatus and system for rule based visualization of digital breast tomosynthesis and other volumetric images
US9218574B2 (en) 2013-05-29 2015-12-22 Purepredictive, Inc. User interface for machine learning
US9646262B2 (en) 2013-06-17 2017-05-09 Purepredictive, Inc. Data intelligence using machine learning
US9826208B2 (en) 2013-06-26 2017-11-21 Nvidia Corporation Method and system for generating weights for use in white balancing an image
US9756222B2 (en) 2013-06-26 2017-09-05 Nvidia Corporation Method and system for performing white balancing operations on captured images
CN104809498B (zh) * 2014-01-24 2018-02-13 清华大学 一种基于神经形态电路的类脑协处理器
CN104809501B (zh) * 2014-01-24 2018-05-01 清华大学 一种基于类脑协处理器的计算机系统
CN104809426B (zh) * 2014-01-27 2019-04-05 日本电气株式会社 卷积神经网络的训练方法、目标识别方法及装置
US20150242741A1 (en) * 2014-02-21 2015-08-27 Qualcomm Incorporated In situ neural network co-processing
US9953646B2 (en) 2014-09-02 2018-04-24 Belleau Technologies Method and system for dynamic speech recognition and tracking of prewritten script
US9563825B2 (en) 2014-11-20 2017-02-07 Adobe Systems Incorporated Convolutional neural network using a binarized convolution layer
US9418319B2 (en) 2014-11-21 2016-08-16 Adobe Systems Incorporated Object detection using cascaded convolutional neural networks
US10540957B2 (en) 2014-12-15 2020-01-21 Baidu Usa Llc Systems and methods for speech transcription
CN104538033A (zh) * 2014-12-29 2015-04-22 江苏科技大学 基于嵌入式gpu系统的并行化语音识别系统及方法
PL3251059T3 (pl) 2015-01-28 2019-05-31 Google Llc Warstwy normalizacji danych wejściowych
CN104915322B (zh) * 2015-06-09 2018-05-01 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法
US9786026B2 (en) 2015-06-15 2017-10-10 Microsoft Technology Licensing, Llc Asynchronous translation of computer program resources in graphics processing unit emulation
US9881351B2 (en) 2015-06-15 2018-01-30 Microsoft Technology Licensing, Llc Remote translation, aggregation and distribution of computer program resources in graphics processing unit emulation
US10540588B2 (en) * 2015-06-29 2020-01-21 Microsoft Technology Licensing, Llc Deep neural network processing on hardware accelerators with stacked memory
US10452971B2 (en) * 2015-06-29 2019-10-22 Microsoft Technology Licensing, Llc Deep neural network partitioning on servers
KR102505279B1 (ko) * 2015-07-24 2023-03-02 삼성전자주식회사 복수의 cpu 및 복수의 gpu를 지원하는 컴퓨팅 환경에서의 연산 방법
US11599672B2 (en) 2015-07-31 2023-03-07 PME IP Pty Ltd Method and apparatus for anonymized display and data export
US9984478B2 (en) 2015-07-28 2018-05-29 PME IP Pty Ltd Apparatus and method for visualizing digital breast tomosynthesis and other volumetric images
US9972063B2 (en) 2015-07-30 2018-05-15 International Business Machines Corporation Pipelined approach to fused kernels for optimization of machine learning workloads on graphical processing units
US10380479B2 (en) * 2015-10-08 2019-08-13 International Business Machines Corporation Acceleration of convolutional neural network training using stochastic perforation
EP3353718B1 (en) * 2015-10-28 2023-07-19 Google LLC Modifying computational graphs
US10332509B2 (en) * 2015-11-25 2019-06-25 Baidu USA, LLC End-to-end speech recognition
US10616314B1 (en) 2015-12-29 2020-04-07 Amazon Technologies, Inc. Dynamic source routing for data transfer
US10482380B2 (en) * 2015-12-30 2019-11-19 Amazon Technologies, Inc. Conditional parallel processing in fully-connected neural networks
CN105631482A (zh) * 2016-03-03 2016-06-01 中国民航大学 一种基于卷积神经网络模型的危险物品图像分类方法
WO2017160776A1 (en) * 2016-03-14 2017-09-21 Catalina Labs, Inc. System and method for generating advice for improving internet and wifi performance in a network using machine-learning techniques
CN107292385A (zh) * 2016-03-31 2017-10-24 阿里巴巴集团控股有限公司 一种类Alexnet网络的模型训练方法和装置
KR102205087B1 (ko) * 2016-06-17 2021-01-20 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. 공유형 머신 러닝 데이터 구조
KR20180012439A (ko) 2016-07-27 2018-02-06 삼성전자주식회사 회선 신경망에서 가속기 및 이의 동작 방법
RU2635902C1 (ru) 2016-08-05 2017-11-16 Общество С Ограниченной Ответственностью "Яндекс" Способ и система отбора обучающих признаков для алгоритма машинного обучения
CN106327564B (zh) * 2016-08-25 2019-01-11 河南理工大学 一种图像处理方法及装置
CN106408618B (zh) * 2016-08-31 2019-05-07 上海交通大学 一种基于机器学习的图像解构方法
WO2018063840A1 (en) * 2016-09-28 2018-04-05 D5A1 Llc; Learning coach for machine learning system
CN106529679B (zh) * 2016-10-14 2020-01-14 腾讯科技(上海)有限公司 一种机器学习方法及系统
US10380222B2 (en) * 2016-10-17 2019-08-13 International Business Machines Corporation Matrix factorization with two-stage data block dispatch associated with graphics processing units
US10623775B1 (en) * 2016-11-04 2020-04-14 Twitter, Inc. End-to-end video and image compression
CN106779057B (zh) * 2016-11-11 2020-04-17 北京旷视科技有限公司 基于gpu的计算二值神经网络卷积的方法及装置
US10360494B2 (en) * 2016-11-30 2019-07-23 Altumview Systems Inc. Convolutional neural network (CNN) system based on resolution-limited small-scale CNN modules
US11010431B2 (en) 2016-12-30 2021-05-18 Samsung Electronics Co., Ltd. Method and apparatus for supporting machine learning algorithms and data pattern matching in ethernet SSD
US10824934B2 (en) 2017-01-12 2020-11-03 Texas Instruments Incorporated Methods and apparatus for matrix processing in a convolutional neural network
CN106951961B (zh) * 2017-02-24 2019-11-26 清华大学 一种粗粒度可重构的卷积神经网络加速器及系统
US11227543B2 (en) 2017-03-10 2022-01-18 Semiconductor Energy Laboratory Co., Ltd. Touch panel system, electronic device, and semiconductor device having a neural network
US10497084B2 (en) 2017-04-24 2019-12-03 Intel Corporation Efficient sharing and compression expansion of data across processing systems
US10186011B2 (en) * 2017-04-28 2019-01-22 Intel Corporation Programmable coarse grained and sparse matrix compute hardware with advanced scheduling
US11138494B2 (en) * 2017-05-02 2021-10-05 International Business Machines Corporation Storage controller acceleration for neural network training and inference
US20180322386A1 (en) * 2017-05-05 2018-11-08 Intel Corporation Fine-grain compute communication execution for deep learning frameworks
US10572773B2 (en) * 2017-05-05 2020-02-25 Intel Corporation On the fly deep learning in machine learning for autonomous machines
KR102258120B1 (ko) 2017-05-17 2021-05-28 구글 엘엘씨 하드웨어에서 매트릭스 곱셈을 수행
TWI769810B (zh) * 2017-05-17 2022-07-01 美商谷歌有限責任公司 特殊用途神經網路訓練晶片
GB2562529B (en) * 2017-05-18 2019-12-11 Samsung Electronics Co Ltd Method and apparatus for stabilising 360 degree video
WO2018212514A1 (ko) * 2017-05-18 2018-11-22 삼성전자 주식회사 360도 영상을 처리하는 방법 및 장치
CN117993454A (zh) 2017-06-21 2024-05-07 株式会社半导体能源研究所 包括神经网络的半导体装置
US20190005377A1 (en) * 2017-06-30 2019-01-03 Advanced Micro Devices, Inc. Artificial neural network reduction to reduce inference computation time
US11157441B2 (en) 2017-07-24 2021-10-26 Tesla, Inc. Computational array microprocessor system using non-consecutive data formatting
US11409692B2 (en) 2017-07-24 2022-08-09 Tesla, Inc. Vector computational unit
US10671349B2 (en) 2017-07-24 2020-06-02 Tesla, Inc. Accelerated mathematical engine
US11157287B2 (en) 2017-07-24 2021-10-26 Tesla, Inc. Computational array microprocessor system with variable latency memory access
US11893393B2 (en) 2017-07-24 2024-02-06 Tesla, Inc. Computational array microprocessor system with hardware arbiter managing memory requests
US10909679B2 (en) 2017-09-24 2021-02-02 PME IP Pty Ltd Method and system for rule based display of sets of images using image content derived parameters
US11694066B2 (en) * 2017-10-17 2023-07-04 Xilinx, Inc. Machine learning runtime library for neural network acceleration
US10599978B2 (en) * 2017-11-03 2020-03-24 International Business Machines Corporation Weighted cascading convolutional neural networks
US11270228B2 (en) * 2017-11-17 2022-03-08 Panasonic Intellectual Property Management Co., Ltd. Information processing method and information processing system
US11710028B2 (en) * 2017-12-30 2023-07-25 Intel Corporation Efficient convolution in machine learning environments
KR102113093B1 (ko) * 2018-01-10 2020-05-20 서울대학교산학협력단 딥 뉴럴 네트워크를 위한 gpu 메모리 관리 방법 및 그를 수행하는 연산 장치
US11561791B2 (en) 2018-02-01 2023-01-24 Tesla, Inc. Vector computational unit receiving data elements in parallel from a last row of a computational array
US11468312B2 (en) * 2018-02-02 2022-10-11 Samsung Electronics Co., Ltd. Memory management for machine learning training on GPU
US10681173B2 (en) 2018-04-03 2020-06-09 International Business Machines Corporation Optimized network traffic patterns for co-located heterogeneous network attached accelerators
EP3776271A4 (en) * 2018-04-05 2022-01-19 Rain Neuromorphics Inc. SYSTEMS AND METHODS FOR EFFICIENT MATRIX MULTIPLICATION
KR20190136431A (ko) 2018-05-30 2019-12-10 삼성전자주식회사 뉴럴 네트워크 시스템, 이를 포함하는 어플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법
US20190378016A1 (en) * 2018-06-07 2019-12-12 International Business Machines Corporation Distributed computing architecture for large model deep learning
CN110766147B (zh) * 2018-07-25 2022-10-11 赛灵思公司 神经网络编译器架构及编译方法
US20210150359A1 (en) * 2018-08-03 2021-05-20 Siemens Aktiengesellschaft Neural logic controllers
CN112585544A (zh) * 2018-08-20 2021-03-30 西门子股份公司 用于人工智能的基于可编程逻辑控制器的模块化加速模块
US11037356B2 (en) 2018-09-24 2021-06-15 Zignal Labs, Inc. System and method for executing non-graphical algorithms on a GPU (graphics processing unit)
KR102277172B1 (ko) * 2018-10-01 2021-07-14 주식회사 한글과컴퓨터 인공 신경망 선택 장치 및 방법
CN109460260B (zh) * 2018-10-24 2021-07-09 瑞芯微电子股份有限公司 一种快速开机的方法和装置
CN109272110A (zh) * 2018-10-31 2019-01-25 上海交通大学 基于光子神经网络芯片的光电融合智能信号处理系统
US11526759B2 (en) 2018-11-05 2022-12-13 International Business Machines Corporation Large model support in deep learning
CN109359120A (zh) * 2018-11-09 2019-02-19 阿里巴巴集团控股有限公司 一种模型训练中的数据更新方法、装置及设备
US11880769B2 (en) * 2018-11-14 2024-01-23 Advanced Micro Devices, Inc. Using multiple functional blocks for training neural networks
US10922790B2 (en) * 2018-12-21 2021-02-16 Intel Corporation Apparatus and method for efficient distributed denoising of a graphics frame
WO2020139835A1 (en) * 2018-12-26 2020-07-02 The Regents Of The University Of California Systems and methods for two-dimensional fluorescence wave propagation onto surfaces using deep learning
US11537936B2 (en) 2019-01-17 2022-12-27 Servicenow, Inc. Data set generation for testing of machine learning pipelines
US11550971B1 (en) 2019-01-18 2023-01-10 X Development Llc Physics simulation on machine-learning accelerated hardware platforms
KR102543413B1 (ko) * 2019-02-12 2023-06-13 에스케이하이닉스 주식회사 웨이트 매트릭스를 포맷하는 방법, 포맷된 데이터를 사용하는 가속기 및 이를 포함하는 시스템
US11170064B2 (en) 2019-03-05 2021-11-09 Corinne David Method and system to filter out unwanted content from incoming social media data
US11151325B2 (en) 2019-03-22 2021-10-19 Servicenow, Inc. Determining semantic similarity of texts based on sub-sections thereof
US10671892B1 (en) 2019-03-31 2020-06-02 Hyper Labs, Inc. Apparatuses, methods, and systems for 3-channel dynamic contextual script recognition using neural network image analytics and 4-tuple machine learning with enhanced templates and context data
US11651032B2 (en) 2019-05-03 2023-05-16 Servicenow, Inc. Determining semantic content of textual clusters
US11595484B2 (en) 2019-05-03 2023-02-28 Servicenow, Inc. Centralized machine learning predictor for a remote network management platform
US11586659B2 (en) 2019-05-03 2023-02-21 Servicenow, Inc. Clustering and dynamic re-clustering of similar textual documents
JP7351641B2 (ja) * 2019-05-29 2023-09-27 理想科学工業株式会社 印刷データ生成装置
US11115432B2 (en) 2019-07-08 2021-09-07 Servicenow, Inc. Multi-application recommendation engine for a remote network management platform
CN110502975B (zh) * 2019-07-09 2023-06-23 平安科技(深圳)有限公司 一种行人重识别的批量处理系统
CN110399222B (zh) * 2019-07-25 2022-01-21 北京邮电大学 Gpu集群深度学习任务并行化方法、装置及电子设备
KR20190096872A (ko) * 2019-07-31 2019-08-20 엘지전자 주식회사 연합학습(Federated learning)을 통한 필기체 인식방법 및 이를 위한 장치
JP7373840B2 (ja) * 2019-10-03 2023-11-06 株式会社 システムスクエア 検査装置
US11450712B2 (en) 2020-02-18 2022-09-20 Rain Neuromorphics Inc. Memristive device
CN111526357B (zh) * 2020-04-14 2021-06-29 艾瑞思检测技术(苏州)有限公司 一种基于pca学习的显卡接口机器测试方法
CN111522771B (zh) * 2020-04-20 2023-08-15 北京百度网讯科技有限公司 眼底图像处理方法、终端设备及存储介质
US20210374563A1 (en) * 2020-05-29 2021-12-02 Joni Jezewski Solution Automation
US11314783B2 (en) 2020-06-05 2022-04-26 Bank Of America Corporation System for implementing cognitive self-healing in knowledge-based deep learning models
US11756290B2 (en) 2020-06-10 2023-09-12 Bank Of America Corporation System for intelligent drift matching for unstructured data in a machine learning environment
US11470107B2 (en) 2020-06-10 2022-10-11 Servicenow, Inc. Matching configuration items with machine learning
US11451573B2 (en) 2020-06-16 2022-09-20 Servicenow, Inc. Merging duplicate items identified by a vulnerability analysis
US11915360B2 (en) 2020-10-20 2024-02-27 The Regents Of The University Of California Volumetric microscopy methods and systems using recurrent neural networks
CN112270413B (zh) * 2020-10-22 2024-02-27 北京百度网讯科技有限公司 算子合并方法、装置、电子设备及存储介质
CN112508188A (zh) * 2020-12-01 2021-03-16 北京奇艺世纪科技有限公司 一种分布式模型训练系统、方法、装置、设备和存储介质
US20220414492A1 (en) * 2021-06-23 2022-12-29 Joni Jezewski Additional Solution Automation & Interface Analysis Implementations
US20230044564A1 (en) * 2021-08-03 2023-02-09 Joni Jezewski Other Solution Automation & Interface Analysis Implementations

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5343537A (en) * 1991-10-31 1994-08-30 International Business Machines Corporation Statistical mixture approach to automatic handwriting recognition
US5592597A (en) 1994-02-14 1997-01-07 Parametric Technology Corporation Real-time image generation system for simulating physical paint, drawing media, and feature modeling with 3-D graphics

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100826740B1 (ko) * 2005-07-12 2008-04-30 가부시키가이샤 소니 컴퓨터 엔터테인먼트 멀티그래픽프로세서시스템, 그래픽프로세서 및묘화처리방법
KR100915329B1 (ko) * 2006-12-02 2009-09-03 한국전자통신연구원 그래픽 프로세서의 범용 계산을 위한 성능 테스트 방법
KR20190088643A (ko) * 2018-01-19 2019-07-29 한국전자통신연구원 Gpu 기반의 적응적 blas 연산 가속화 장치 및 방법
US11151474B2 (en) 2018-01-19 2021-10-19 Electronics And Telecommunications Research Institute GPU-based adaptive BLAS operation acceleration apparatus and method thereof
KR102147912B1 (ko) * 2019-08-13 2020-08-25 삼성전자주식회사 프로세서 칩 및 그 제어 방법들
US11681904B2 (en) 2019-08-13 2023-06-20 Samsung Electronics Co., Ltd. Processor chip and control methods thereof
US11842265B2 (en) 2019-08-13 2023-12-12 Samsung Electronics Co., Ltd. Processor chip and control methods thereof
KR102543512B1 (ko) * 2022-10-31 2023-06-13 서울대학교산학협력단 뉴럴 렌더링을 위한 저정밀도 하드웨어 가속기 및 그 동작 방법

Also Published As

Publication number Publication date
CN100468320C (zh) 2009-03-11
EP2648132A1 (en) 2013-10-09
US20050125369A1 (en) 2005-06-09
EP1569128B1 (en) 2015-06-17
EP1569128A2 (en) 2005-08-31
EP1569128A3 (en) 2011-06-15
JP4901097B2 (ja) 2012-03-21
KR101137107B1 (ko) 2012-07-02
EP2648132B1 (en) 2018-07-11
JP2005182785A (ja) 2005-07-07
CN1627251A (zh) 2005-06-15
US7219085B2 (en) 2007-05-15

Similar Documents

Publication Publication Date Title
KR101137107B1 (ko) 그래픽 처리 유닛을 사용해 기계 학습 기술들의 처리를가속화하고 최적화하는 시스템 및 방법
US7548892B2 (en) Processing machine learning techniques using a graphics processing unit
US7567252B2 (en) Optimizing performance of a graphics processing unit for efficient execution of general matrix operations
US11475542B2 (en) Neural network system with temporal feedback for adaptive sampling and denoising of rendered sequences
US20230410375A1 (en) Temporally stable data reconstruction with an external recurrent neural network
US10922793B2 (en) Guided hallucination for missing image content using a neural network
Steinkraus et al. Using GPUs for machine learning algorithms
US11557022B2 (en) Neural network system with temporal feedback for denoising of rendered sequences
US7483034B2 (en) System and method for GPU-based 3D nonrigid registration
KR101298393B1 (ko) 그래픽 처리 유닛 상에서 콘볼루션 신경망을 트레이닝하는방법
Strzodka et al. Generalized distance transforms and skeletons in graphics hardware
US6384833B1 (en) Method and parallelizing geometric processing in a graphics rendering pipeline
US5844571A (en) Z buffer bandwidth reductions via split transactions
US7400330B2 (en) Magnification of indirection textures
Harris et al. Iterative Solutions using Programmable Graphics Processing Units.
Wang et al. Learning 3D semantic reconstruction on octrees
EP3211598B1 (en) System and method for accelerated rendering of two-dimensional graphics
Ilie Optical character recognition on graphics hardware
US11861811B2 (en) Neural network system with temporal feedback for denoising of rendered sequences
Yuan et al. Runtime shader simplification via instant search in reduced optimization space
Cabido et al. Hardware-accelerated template matching
Ohmer et al. Real-time tracking with non-rigid geometric templates using the gpu
Mišić et al. An analysis of OpenACC programming model: Image processing algorithms as a case study
Heiland Object-oriented parallel polygon rendering
CN111667572A (zh) 一种毫秒级实时的大规模动态地形绘制方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee