KR20230148088A - 기계 학습 추론을 위한 그래픽 프로세싱 최적화를 위한 시스템 및 방법 - Google Patents

기계 학습 추론을 위한 그래픽 프로세싱 최적화를 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20230148088A
KR20230148088A KR1020220187084A KR20220187084A KR20230148088A KR 20230148088 A KR20230148088 A KR 20230148088A KR 1020220187084 A KR1020220187084 A KR 1020220187084A KR 20220187084 A KR20220187084 A KR 20220187084A KR 20230148088 A KR20230148088 A KR 20230148088A
Authority
KR
South Korea
Prior art keywords
machine learning
learning model
computing system
textures
shaders
Prior art date
Application number
KR1020220187084A
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 KR20230148088A publication Critical patent/KR20230148088A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/14Systems for two-way working
    • H04N7/15Conference systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Signal Processing (AREA)
  • Medical Informatics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Multimedia (AREA)
  • Computational Linguistics (AREA)
  • Image Analysis (AREA)
  • Image Processing (AREA)
  • Image Generation (AREA)

Abstract

본 발명의 시스템 및 방법은 기계 학습 추론 작업을 위한 그래픽 프로세서의 활용을 최적화하기 위한 방법에 관한 것이다. 상기 방법은 하나 이상의 컴퓨팅 디바이스를 포함하는 컴퓨팅 시스템에 의해, 기계 학습 모델에 대한 입력으로부터 복수의 텍스처들을 동시에 렌더링하는 단계를 포함한다. 상기 방법은 상기 컴퓨팅 시스템에 의해, 복수의 텍스처들의 레이아웃에 적어도 부분적으로 기초하여 복수의 셰이더들을 생성하는 단계를 포함하며, 상기 복수의 셰이더들 각각은 기계 학습 모델의 복수의 오퍼레이터들 중 적어도 하나의 오퍼레이터에 대응한다. 상기 방법은 상기 컴퓨팅 시스템에 의해, 상기 기계 학습 모델에 대한 기계 학습 출력을 획득하기 위해 그래픽 프로세싱 유닛(GPU)을 상기 컴퓨팅 시스템에 의해 사용하여 상기 복수의 셰이더들로 상기 복수의 텍스처들을 프로세싱하는 단계를 포함한다.

Description

기계 학습 추론을 위한 그래픽 프로세싱 최적화를 위한 시스템 및 방법{SYSTEMS AND METHODS FOR OPTIMIZATION OF GRAPHICS PROCESSING FOR MACHINE LEARNING INFERENCE}
관련 출원
본 출원은 2022년 4월 15일에 출원된 미국 특허 가출원 제63/331,593호에 대한 우선권을 주장한다. 미국 특허 가출원 제63/331,593호의 전체 개시 내용은 그 전체가 본 명세서에 참조로서 통합된다.
본 발명은 일반적으로 시스템 리소스의 활용을 최적화하는 것에 관한 것이다. 특히, 본 발명은 기계 학습 추론을 위한 애플리케이션 프로그래밍 인터페이스를 통해 그래픽 프로세싱 하드웨어의 사용을 최적화하는 것에 관한 것이다.
최근, 많은 애플리케이션에서 기계 학습을 활용하여 다양한 작업(예: 화상 회의, 이미지 인식 서비스 등)의 성능을 크게 최적화하기 시작했다. 그러나, 웹 브라우저와 같은 특정 실행 환경에서, 이러한 애플리케이션은 일반적으로 기계 학습 추론 작업을 프로세싱하기 위해 특수 하드웨어(예: 그래픽 프로세싱 유닛)의 대역폭을 효율적으로 활용하는 능력이 부족하다.
본 발명의 실시예의 양태들 및 이점들이 후술하는 설명에서 부분적으로 기술될 것이며, 또는 설명으로부터 학습될 수 있거나 또는 실시예의 실시를 통해 학습될 수 있다.
본 발명의 하나의 예시적 양태는 기계 학습 추론 작업을 위한 그래픽 프로세서의 활용을 최적화하기 위한 컴퓨팅 시스템에 관한 것이다. 컴퓨팅 시스템은 하나 이상의 프로세서들을 포함하며, 상기 하나 이상의 프로세서들은 그래픽 프로세싱 유닛(GPU)를 포함한다. 컴퓨팅 시스템은 명령어를 집합적으로 저장하는 하나 이상의 비일시적 컴퓨터 판독가능 매체를 포함하며, 상기 명령어는 상기 하나 이상의 프로세서에 의해 실행될 때, 상기 컴퓨터 시스템으로 하여금 동작들을 수행하게 한다. 상기 동작들은 기계 학습 모델에 대한 입력으로부터 복수의 텍스처들을 동시에 렌더링하는 동작을 포함한다. 상기 동작들은 복수의 텍스처들의 레이아웃에 적어도 부분적으로 기초하여 복수의 셰이더들을 생성하는 동작을 포함하며, 상기 복수의 셰이더들 각각은 기계 학습 모델의 복수의 오퍼레이터들 중 적어도 하나의 오퍼레이터에 대응한다. 상기 동작들은 상기 기계 학습 모델에 대한 기계 학습 출력을 획득하기 위해 상기 GPU를 사용하여 상기 복수의 셰이더들로 상기 복수의 텍스처들을 프로세싱하는 동작을 포함한다.
본 발명의 다른 예시적 양태는 기계 학습 추론 작업을 위한 그래픽 프로세서의 활용을 최적화하기 위한 방법에 관한 것이다. 상기 방법은 하나 이상의 컴퓨팅 디바이스를 포함하는 컴퓨팅 시스템에 의해, 기계 학습 모델에 대한 입력으로부터 복수의 텍스처들을 동시에 렌더링하는 단계를 포함한다. 상기 방법은 상기 컴퓨팅 시스템에 의해, 복수의 텍스처들의 레이아웃에 적어도 부분적으로 기초하여 복수의 셰이더들을 생성하는 단계를 포함하며, 상기 복수의 셰이더들 각각은 기계 학습 모델의 복수의 오퍼레이터들 중 적어도 하나의 오퍼레이터에 대응한다. 상기 방법은 상기 컴퓨팅 시스템에 의해, 상기 기계 학습 모델에 대한 기계 학습 출력을 획득하기 위해 그래픽 프로세싱 유닛(GPU)을 상기 컴퓨팅 시스템에 의해 사용하여 상기 복수의 셰이더들로 상기 복수의 텍스처들을 프로세싱하는 단계를 포함한다.
본 개시의 다른 예시적 양태는 하나 이상의 프로세서들에 의해 실행될 때 컴퓨팅 시스템으로 하여금 동작들을 수행하게 하는 명령어들을 집합적으로 저장하는 하나 이상의 비일시적 컴퓨터 판독가능 매체에 관한 것이다. 상기 동작들은 기계 학습 모델에 대한 입력으로부터 복수의 텍스처들을 동시에 렌더링하는 동작을 포함한다. 상기 동작들은 복수의 텍스처들의 레이아웃에 적어도 부분적으로 기초하여 복수의 셰이더들을 생성하는 동작을 포함하며, 상기 복수의 셰이더들 각각은 기계 학습 모델의 복수의 오퍼레이터들 중 적어도 하나의 오퍼레이터에 대응한다. 상기 동작들은 상기 기계 학습 모델에 대한 기계 학습 출력을 획득하기 위해 상기 GPU를 사용하여 상기 복수의 셰이더들로 상기 복수의 텍스처들을 프로세싱하는 동작을 포함한다.
본 발명의 다른 양태는 다양한 시스템, 디바이스, 비일시적 컴퓨터 판독가능 매체, 사용자 인터페이스 및 전자 디바이스에 관한 것이다.
본 발명의 다양한 실시예의 이들 및 다른 구성들, 양태들 및 이점들은 후술하는 설명 및 첨부된 청구항들을 참조하여 보다 잘 이해될 것이다. 본 명세서에 통합되고 본 명세서의 일부를 구성하는 첨부 도면들은 설명과 함께 본 발명의 실시예를 도시하며, 관련된 원리들을 설명하기 위해 제공된다.
통상의 기술자 중 누군가를 위한 실시예의 상세한 논의가 첨부된 도면들을 참조하는 명세서에서 기술된다.
도 1a는 본 발명의 예시적 실시예에 따른 기계 학습 추론 작업을 위한 그래픽 프로세서의 활용을 최적화하는 예시적 컴퓨팅 시스템의 블록도를 도시한다.
도 1b는 본 발명의 예시적 실시예에 따른 기계 학습 추론 작업을 위한 그래픽 프로세서의 활용을 수행하는 예시적 컴퓨팅 디바이스의 블록도를 도시한다.
도 1c는 본 발명의 예시적 실시예에 따른 기계 학습 추론 작업을 위한 그래픽 프로세서의 활용을 수행하는 예시적 컴퓨팅 시스템의 블록도를 도시한다.
도 2는 본 발명의 예시적 실시예에 따른 기계 학습 추론 작업을 위한 그래픽 프로세서의 활용을 최적화하기 위한 데이터 흐름도를 도시한다.
도 3은 본 발명의 예시적 실시예에 따라 구현된 디코더 블록에 대한 데이터 흐름도를 도시한다.
도 4a는 본 발명의 일부 실시예에 따른 애플리케이션 프로그래밍 인터페이스의 다양한 구현예에 대한 고품질 세그먼트화에 대한 추론 레이턴시에 대한 결과를 도시한다.
도 4b는 본 발명의 일부 실시예에 따른 고품질 세그먼트화 모델의 평가 결과를 도시한다.
도 5a는 본 발명의 일부 실시예에 따라 프로세싱된 2개의 모델을 활용한 이미지 세그먼트화 결과를 도시한다.
도 5b는 본 발명의 일부 실시예에 따라 프로세싱된 2개의 모델을 활용하는 고품질 세그먼트화 결과를 도시한다.
도 6은 본 발명의 일부 실시예에 따라 기계 학습 추론을 위한 그래픽 프로세싱을 최적화하기 위한 방법에 대한 데이터 흐름도이다.
복수의 도면들에 걸쳐 반복되는 참조 번호는 다양한 구현예에서 동일한 구성을 식별하도록 의도되었다.
개요
일반적으로, 본 발명은 시스템 리소스의 활용을 최적화하는 것에 관한 것이다. 특히, 본 발명은 기계 학습 추론을 위한 애플리케이션 프로그래밍 인터페이스를 통해 그래픽 프로세싱 하드웨어의 사용을 최적화하는 것에 관한 것이다. 구체적으로, 예를 들어, 웹 브라우저 내에서 실행되는 애플리케이션(예를 들어, 화상 회의 애플리케이션 등)에 의해 활용되는 트레이닝된 기계 학습 모델에 대해 입력(예를 들어, 이미지 세그먼트화 작업 등을 위한 이미지 입력 데이터)이 획득될 수 있다. 고품질 결과를 획득하기 위해, 애플리케이션은 애플리케이션 프로그래밍 인터페이스를 통해 기계 학습 모델을 프로세싱하기 위해 그래픽 프로세싱 유닛(GPU)과 같은 특수 하드웨어를 활용할 수 있다. 그러나 일부 기존 API(Application Programming Interface)는 GPU(예: WebGL API 등)의 대역폭을 최적으로 활용하는 능력이 부족하다.
따라서, 본 발명의 시스템 및 방법은 기계 학습 추론 작업을 위한 그래픽 프로세서의 활용을 최적화할 것을 제안한다. 예를 들어, 입력을 획득한 후, (예를 들어, WebGL API의 MRT(Multi-Render Targets) 프로세스 등을 통해) 기계 학습 모델에 대한 입력으로부터 복수의 텍스처들이 동시에 렌더링될 수 있다. 다음, 복수의 텍스처의 레이아웃(예를 들어, 텍스처의 수, 텍스처의 치수 등)에 적어도 부분적으로 기초하여 복수의 셰이더들(예를 들어, 프래그먼트 셰이더들 등)이 생성될 수 있다. 복수의 셰이더들 각각은 기계 학습 모델의 복수의 오퍼레이터들 중 적어도 하나의 오퍼레이터에 대응할 수 있다. GPU를 활용하여, 기계 학습 모델에 대한 기계 학습 출력을 획득하기 위해 복수의 텍스처들이 복수의 셰이더들로 프로세싱될 수 있다.
본 발명의 시스템 및 방법은 다수의 기술적 효과 및 이점을 제공한다. 기술적 효과 및 이점의 한 예로서, GPU에 의해 수행되는 셰이더 연산은 어느 정도의 오버헤드를 발생시킨다. GPU가 많이 병렬화되기 때문에, 셰이더 연산의 복잡성이 오버헤드보다 적을 때 비효율성이 발생할 수 있다. 따라서, WebGL의 MRT 피처와 같은 특정 API의 기존 피처를 활용함으로써, 본 발명의 실시예는 모델 입력을 복수의 텍스처들로 변환함으로써 셰이더 연산을 복잡하게 할 수 있으며, 따라서 GPU 대역폭의 활용을 실질적으로 증가시킨다(예를 들어, 병렬화 등). 차례로, GPU 대역폭 활용을 증가시킴으로써, 본 발명의 실시예는 보다 효율적인 모델 활용 및 더 높은 품질의 모델 출력의 제공을 용이하게 하는 한편, GPU에서의 임의의 프로세싱 병목 현상을 줄이거나 제거한다(따라서 병목 현상과 연관된 전력 사용, 컴퓨팅 사이클, 메모리 사용량 감소).
이제 도면들을 참조하여, 본 발명의 예시적 실시예들이 더 자세히 논의될 것이다.
예시적 디바이스 및 시스템
도 1a는 본 발명의 예시적 실시예에 따른 기계 학습 추론 작업의 그래픽 프로세서의 활용을 최적화하는 예시적 컴퓨팅 시스템(100)의 블록도를 도시한다. 시스템(100)은 네트워크(180)를 통해 통신적으로 연결된 사용자 컴퓨팅 디바이스(102), 서버 컴퓨팅 시스템(130) 및 트레이닝 컴퓨팅 시스템(150)을 포함한다.
사용자 컴퓨팅 디바이스(102)는 예를 들어 개인 컴퓨팅 디바이스(예: 랩톱 또는 데스크톱), 모바일 컴퓨팅 디바이스(예: 스마트폰 또는 태블릿), 게임 콘솔 또는 컨트롤러, 웨어러블 컴퓨팅 디바이스, 임베디드 컴퓨팅 디바이스 또는 임의의 다른 유형의 컴퓨팅 디바이스와 같은 임의의 유형의 컴퓨팅 디바이스일 수 있다.
사용자 디바이스(102)는 하나 이상의 프로세서들(112) 및 메모리(114)를 포함한다. 하나 이상의 프로세서들(112)은 임의의 적절한 프로세싱 디바이스(예를 들어, 프로세서 코어, 마이크로 프로세서, ASIC, FPGA, 제어기, 마이크로 컨트롤러 등)일 수 있고, 하나의 프로세서 또는 동작적으로 연결된 하나 이상의 프로세서 또는 복수의 프로세서들일 수 있다. 예를 들어, 프로세서(들)(112)는 하나 이상의 GPU(Graphics Processing Unit)를 포함할 수 있다. 이들 GPU는 사용자 컴퓨팅 디바이스(102) 및/또는 다른 컴퓨팅 디바이스(예를 들어, 서버 컴퓨팅 시스템(130) 등)에 의해 실행되는 애플리케이션에 의해 액세스되는 애플리케이션 프로그래밍 인터페이스(API)를 통해 활용될 수 있다. 메모리(114)는 RAM, ROM, EEPROM, EPROM, 플래시 메모리 디바이스, 자기 디스크 등과 같은 하나 이상의 비일시적 컴퓨터 판독가능 저장 매체 및 이들의 조합을 포함할 수 있다. 메모리(114)는 사용자 컴퓨팅 디바이스(102)가 동작을 수행하게 하기 위한 프로세서(112)에 의해 실행되는 데이터(116) 및 명령어들(118)을 저장할 수 있다.
일부 구현예에서, 사용자 컴퓨팅 디바이스(102)는 하나 이상의 모델들(120)을 저장 또는 포함할 수 있다. 예를 들면, 모델(120)은 신경 네트워크들(예: 딥 신경 네트워크)과 같은 다양한 기계 학습 모델들 또는 비선형 모델 및/또는 선형 모델을 포함하는 다른 유형의 기계 학습 모델들일 수 있거나 또는 이들을 포함할 수 있다. 신경 네트워크는 피드-포워드 신경 네트워크들(feed-forward neural networks), 순환 신경 네트워크(예: 장단기 메모리 순환 신경 네트워크들), 컨벌루션 신경 네트워크 또는 다른 형태의 신경 네트워크들을 포함할 수 있다. 기계 학습 모델의 일부 예시는 셀프 어텐션과 같은 어텐션 메커니즘을 활용할 수 있다. 예를 들어, 일부 예시적 기계 학습 모델은 멀티 헤드 셀프 어텐션 모델(예: 트랜스포머 모델)을 포함할 수 있다.
일부 구현예에서, 하나 이상의 모델(120)은 네트워크(180)를 통해 서버 컴퓨팅 시스템(130)으로부터 수신되고, 사용자 컴퓨팅 디바이스 메모리(114)에 저장되며, 하나 이상의 프로세서(112)에 의해 사용되거나 이와 달리 구현될 수 있다. 일부 구현예에서, 사용자 컴퓨팅 디바이스(102)는 (예를 들어, 모델의 다수의 인스턴스들에 대해 병렬 프로세싱을 수행하기 위해) 단일 모델(120)의 다수의 병렬 인스턴스를 구현할 수 있다.
추가적으로 또는 대안적으로, 하나 이상의 모델(140)은 클라이언트-서버 관계에 따라 사용자 컴퓨팅 디바이스(102)와 통신하는 서버 컴퓨팅 시스템(130)에 포함되거나 이와 달리 저장되고 구현될 수 있다. 예를 들어, 모델(140)은 서버 컴퓨팅 디바이스(140)에 의해 웹서비스(예: 이미지 세그먼트화 서비스, 이미지 인식 서비스 등)의 일부로서 구현될 수 있다. 따라서, 하나 이상의 모델(120)은 사용자 컴퓨팅 디바이스(102)에 저장되고 구현될 수 있고 및/또는 하나 이상의 모델(140)은 서버 컴퓨팅 시스템(130)에 저장되고 구현될 수 있다.
또한 사용자 컴퓨팅 디바이스(102)는 사용자 입력을 수신하는 하나 이상의 사용자 입력 컴포넌트(122)를 포함할 수 있다. 예를 들어, 사용자 입력 컴포넌트(122)는 사용자 입력 객체(예를 들어, 손가락 또는 스타일러스)의 터치에 감응하는 터치 감지 컴포넌트(예를 들어, 터치 감지 디스플레이 스크린 또는 터치 패드)일 수 있다. 터치 감지 컴포넌트는 가상 키보드를 구현하는데 사용할 수 있다. 다른 예시적 사용자 입력 컴포넌트는 마이크로폰, 전통적 키보드 또는 사용자가 사용자 입력을 제공할 수 있는 다른 수단들을 포함한다.
서버 컴퓨팅 시스템(130)은 하나 이상의 프로세서들(132) 및 메모리(134)를 포함한다. 하나 이상의 프로세서들(132)은 임의의 적절한 프로세싱 디바이스(예를 들어, 프로세서 코어, 마이크로 프로세서, ASIC, FPGA, 제어기, 마이크로 컨트롤러 등)일 수 있고, 하나의 프로세서 또는 동작적으로 연결된 하나 이상의 프로세서 또는 복수의 프로세서들일 수 있다. 메모리(134)는 RAM, ROM, EEPROM, EPROM, 플래시 메모리 디바이스, 자기 디스크 등과 같은 하나 이상의 비일시적 컴퓨터 판독가능 저장 매체 및 이들의 조합을 포함할 수 있다. 메모리(134)는 서버 컴퓨팅 시스템(130)이 동작을 수행하게 하기 위한 프로세서(132)에 의해 실행되는 데이터(136) 및 명령어들(138)을 저장할 수 있다.
일부 구현예에서, 서버 컴퓨팅 시스템(130)은 하나 이상의 서버 컴퓨팅 디바이스들을 포함하거나 이와 달리 그에 의해 구현된다. 서버 컴퓨팅 시스템(130)이 복수의 서버 컴퓨팅 디바이스들을 포함하는 경우에, 그러한 서버 컴퓨팅 디바이스들은 순차적 컴퓨팅 아키텍처, 병렬 컴퓨팅 아키텍처 또는 이들의 조합에 따라 동작할 수 있다.
상기 기술된 바와 같이, 서버 컴퓨팅 시스템(130)은 하나 이상의 모델(140)을 저장하거나 또는 포함할 수 있다. 예를 들어, 모델(140)은 다양한 기계 학습 모델일 수 있거나 이를 포함할 수 있다. 기계 학습 모델의 예는 신경 네트워크 또는 기타 멀티 레이어 비선형 모델을 포함한다. 예시적 신경 네트워크는 피드 포워드 신경 네트워크, 딥 신경 네트워크, 순환 신경 네트워크 및 컨벌루션 신경 네트워크를 포함한다. 기계 학습 모델의 일부 예시는 셀프 어텐션과 같은 어텐션 메커니즘을 활용할 수 있다. 예를 들어, 일부 예시적 기계 학습 모델은 멀티 헤드 셀프 어텐션 모델(예: 트랜스포머 모델)을 포함할 수 있다.
사용자 컴퓨팅 디바이스(102) 및/또는 서버 컴퓨팅 시스템(130)은 네트워크(180)를 통해 통신적으로 연결된 트레이닝 컴퓨팅 시스템(150)과의 인터렉션을 통해 모델(120 및/또는 140)을 트레이닝할 수 있다. 트레이닝 컴퓨팅 시스템(150)은 서버 컴퓨팅 시스템(130)과 별개이거나 서버 컴퓨팅 시스템(130)의 일부일 수 있다.
트레이닝 컴퓨팅 시스템(150)은 하나 이상의 프로세서들(152) 및 메모리(154)를 포함한다. 하나 이상의 프로세서들(152)은 임의의 적절한 프로세싱 디바이스(예를 들어, 프로세서 코어, 마이크로 프로세서, ASIC, FPGA, 제어기, 마이크로 컨트롤러 등)일 수 있고, 하나의 프로세서 또는 동작적으로 연결된 하나 이상의 프로세서 또는 복수의 프로세서들일 수 있다. 메모리(154)는 RAM, ROM, EEPROM, EPROM, 플래시 메모리 디바이스, 자기 디스크 등과 같은 하나 이상의 비일시적 컴퓨터 판독가능 저장 매체 및 이들의 조합을 포함할 수 있다. 메모리(154)는 트레이닝 컴퓨팅 시스템(150)이 동작을 수행하게 하기 위한 프로세서(152)에 의해 실행되는 데이터(156) 및 명령어들(158)을 저장할 수 있다. 일부 구현예에서, 트레이닝 컴퓨팅 시스템(150)은 하나 이상의 서버 컴퓨팅 디바이스들을 포함하거나 이와 달리 그에 의해 구현된다.
트레이닝 컴퓨팅 시스템(150)은, 예를 들어 에러의 역방향 전파와 같은 다양한 트레이닝 또는 학습 기법을 사용하여, 사용자 컴퓨팅 디바이스(102) 및/또는 서버 컴퓨팅 시스템(130)에 저장된 기계 학습 모델(120 및/또는 140)을 트레이닝하는 모델 트레이너(160)를 포함할 수 있다. 예를 들어, 손실 함수는 (예를 들어, 손실 함수의 기울기에 기초하여) 모델(들)의 하나 이상의 파라미터를 업데이트하기 위해 모델(들)을 통해 역전파될 수 있다. 평균 제곱 오차, 우도 손실, 교차 엔트로피 손실, 힌지 손실 및/또는 다양한 기타 손실 함수와 같은 다양한 손실 함수가 사용될 수 있다. 경사 하강법을 사용하여 여러 트레이닝 반복에 걸쳐 파라미터를 반복적으로 업데이트할 수 있다.
일부 구현예에서, 에러의 역방향 전파를 수행하는 것은 시간을 통한 잘린 역 전파(truncated backpropagation through time)를 수행하는 것을 포함할 수 있다. 모델 트레이너(160)는 트레이닝되는 모델의 일반화 능력을 향상시키기 위해 다수의 일반화 기법들(예를 들어, 가중치 감소, 드롭 아웃 등)을 수행할 수 있다.
일부 구현예에서, 사용자가 동의를 제공하면, 트레이닝 예시들은 사용자 컴퓨팅 디바이스(102)에 의해 제공될 수 있다. 따라서, 이러한 구현예에서, 사용자 컴퓨팅 디바이스(102)에 제공되는 모델(120)은 사용자 컴퓨팅 디바이스(102)로부터 수신된 사용자 특정 데이터에 대한 트레이닝 컴퓨팅 시스템(150)에 의해 트레이닝될 수 있다. 일부 경우에, 이 프로세스를 모델 개인화로 지칭될 수 있다.
모델 트레이너(160)는 원하는 기능을 제공하기 위해 활용되는 컴퓨터 로직을 포함한다. 모델 트레이너(160)는 범용 프로세서를 제어하는 하드웨어, 펌웨어 및/또는 소프트웨어로 구현될 수 있다. 예를 들어, 일부 구현예에서, 모델 트레이너(160)는 저장 디바이스에 저장된 프로그램 파일을 포함하고, 메모리에 로딩되고 하나 이상의 프로세서에 의해 실행된다. 다른 구현예에서, 모델 트레이너(160)는 RAM 하드 디스크 또는 광학 또는 자기적 매체와 같은 유형적 컴퓨터 판독가능 저장 매체에 저장된 컴퓨터 실행가능 명령어들의 하나 이상의 세트들을 포함한다.
네트워크(180)는 근거리 네트워크(예를 들어, 인트라넷), 광역 네트워크(예를 들어, 인터넷) 또는 그들의 조합과 같은 임의의 유형의 통신 네트워크일 수 있고, 임의의 수의 유선 또는 무선 링크들을 포함할 수 있다. 일반적으로, 네트워크(180)를 통한 통신은 임의의 유형의 유선 및/또는 무선 연결을 사용하여, 다양한 통신 프로토콜들(예를 들어, TCP/IP, HTTP, SMTP, FTP), 인코딩 또는 포맷들(예를 들어, HTML, XML), 및/또는 보호 스키마(예를 들어, VPN, 시큐어 HTTP, SSL)를 통해 수행될 수 있다.
본 명세서에 설명된 기계 학습 모델은 다양한 작업, 애플리케이션 및/또는 사용 사례에서 사용될 수 있다.
일부 구현예에서, 본 발명의 기계 학습 모델(들)에 대한 입력은 이미지 데이터일 수 있다. 기계 학습 모델(들)은 이미지 데이터를 프로세싱하여 출력을 생성할 수 있다. 예를 들어, 기계 학습 모델(들)은 이미지 데이터를 프로세싱하여 이미지 인식 출력(예를 들어, 이미지 데이터의 인식, 이미지 데이터의 잠재 임베딩, 이미지 데이터의 인코딩된 표현, 이미지 데이터의 해시 등)을 생성할 수 있다. 다른 예로서, 기계 학습 모델(들)은 이미지 데이터를 프로세싱하여 이미지 분할 출력을 생성할 수 있다. 다른 예로서, 기계 학습 모델(들)은 이미지 데이터를 프로세싱하여 이미지 분류 출력을 생성할 수 있다. 다른 예로서, 기계 학습 모델(들)은 이미지 데이터를 프로세싱하여 이미지 데이터 수정 출력(예를 들어, 이미지 데이터의 변경 등)을 생성할 수 있다. 다른 예로서, 기계 학습 모델(들)은 이미지 데이터를 프로세싱하여 인코딩된 이미지 데이터 출력(예를 들어, 이미지 데이터의 인코딩된 및/또는 압축된 표현 등)을 생성할 수 있다. 다른 예로서, 기계 학습 모델(들)은 이미지 데이터를 프로세싱하여 업스케일링된 이미지 데이터 출력을 생성할 수 있다. 다른 예로서, 기계 학습 모델(들)은 이미지 데이터를 프로세싱하여 예측 출력을 생성할 수 있다.
일부 구현예에서, 본 발명의 기계 학습 모델(들)에 대한 입력은 텍스트 또는 자연어 데이터일 수 있다. 기계 학습 모델(들)은 텍스트 또는 자연어 데이터를 프로세싱하여 출력을 생성할 수 있다. 일 예시로서, 기계 학습 모델(들)은 자연어 데이터를 프로세싱하여 언어 인코딩 출력을 생성할 수 있다. 다른 예로서, 기계 학습 모델(들)은 텍스트 또는 자연어 데이터를 프로세싱하여 잠재 텍스트 임베딩 출력을 생성할 수 있다. 다른 예로서, 기계 학습 모델(들)은 텍스트 또는 자연어 데이터를 프로세싱하여 번역 출력을 생성할 수 있다. 다른 예로서, 기계 학습 모델(들)은 텍스트 또는 자연어 데이터를 프로세싱하여 분류 출력을 생성할 수 있다. 또 다른 예로서, 기계 학습 모델(들)은 텍스트 또는 자연어 데이터를 프로세싱하여 텍스트 세그먼트 출력을 생성할 수 있다. 또 다른 예로서, 기계 학습 모델(들)은 텍스트 또는 자연어 데이터를 프로세싱하여 시맨틱 의도 출력을 생성할 수 있다. 다른 예로서, 기계 학습 모델(들)은 텍스트 또는 자연어 데이터를 프로세싱하여, 업스케일된 텍스트 또는 자연어 출력(예: 입력 텍스트 또는 자연어 등보다 품질이 높은 텍스트 또는 자연어 데이터 등)을 생성할 수 있다. 다른 예로서, 기계 학습 모델(들)은 텍스트 또는 자연어 데이터를 프로세싱하여 예측 출력을 생성할 수 있다.
일부 구현예에서, 본 발명의 기계 학습 모델(들)에 대한 입력은 스피치 데이터일 수 있다. 기계 학습 모델(들)은 스피치 데이터를 프로세싱하여 출력을 생성할 수 있다. 일 예시로서, 기계 학습 모델(들)은 스피치 데이터를 프로세싱하여 스피치 인식 출력을 생성할 수 있다. 또 다른 예로서, 기계 학습 모델(들)은 스피치 데이터를 프로세싱하여 스피치 번역 출력을 생성할 수 있다. 다른 예로서, 기계 학습 모델(들)은 스피치 데이터를 프로세싱하여 잠재 임베딩 출력을 생성할 수 있다. 다른 예로서, 기계 학습 모델(들)은 스피치 데이터를 프로세싱하여 인코딩된 스피치 데이터 출력(예를 들어, 스피치 데이터의 인코딩된 및/또는 압축된 표현 등)을 생성할 수 있다. 다른 예로서, 기계 학습 모델(들)은 스피치 데이터를 프로세싱하여 업스케일링된 스피치 출력(예를 들어, 입력 스피치 데이터보다 높은 품질인 스피치 데이터 등)을 생성할 수 있다. 다른 예로서, 기계 학습 모델(들)은 스피치 데이터를 프로세싱하여 텍스트 표현 출력(예를 들어, 입력 스피치 데이터의 텍스트 표현 등)을 생성할 수 있다. 다른 예로서, 기계 학습 모델(들)은 스피치 데이터를 프로세싱하여 예측 출력을 생성할 수 있다.
일부 구현예에서, 본 발명의 기계 학습 모델(들)에 대한 입력은 잠재 인코딩 데이터일 수 있다(예: 입력의 잠재 공간 표현 등). 기계 학습 모델(들)은 잠재 인코딩 데이터를 프로세싱하여 출력을 생성할 수 있다. 일 예로서, 기계 학습 모델(들)은 잠재 인코딩 데이터를 프로세싱하여 인식 출력을 생성할 수 있다. 다른 예로서, 기계 학습 모델(들)은 잠재 인코딩 데이터를 프로세싱하여 재구성 출력을 생성할 수 있다. 다른 예로서, 기계 학습 모델(들)은 잠재 인코딩 데이터를 프로세싱하여 잠재 인코딩 데이터를 프로세싱할 수 있다. 또 다른 예로서, 기계 학습 모델(들)은 잠재 인코딩 데이터를 프로세싱하여 재클러스터링 출력을 생성할 수 있다. 다른 예로서, 기계 학습 모델(들)은 잠재 인코딩 데이터를 프로세싱하여 예측 출력을 생성할 수 있다.
일부 구현예에서, 본 발명의 기계 학습 모델(들)에 대한 입력은 통계 데이터일 수 있다. 통계 데이터는 일부 다른 데이터 소스에서 계산 및/또는 계산된 데이터를 나타내거나 포함할 수 있다. 기계 학습 모델(들)은 통계 데이터를 프로세싱하여 출력을 생성할 수 있다. 일 예로서, 기계 학습 모델(들)은 통계 데이터를 프로세싱하여 인식 출력을 생성할 수 있다. 다른 예로서, 기계 학습 모델(들)은 통계 데이터를 프로세싱하여 예측 출력을 생성할 수 있다. 다른 예로서, 기계 학습 모델(들)은 통계 데이터를 프로세싱하여 분류 출력을 생성할 수 있다. 다른 예로서, 기계 학습 모델(들)은 통계 데이터를 프로세싱하여 분할 출력을 생성할 수 있다. 또 다른 예로서, 기계 학습 모델(들)은 통계 데이터를 프로세싱하여 시각화 출력을 생성할 수 있다. 다른 예로서, 기계 학습 모델(들)은 통계 데이터를 프로세싱하여 진단 출력을 생성할 수 있다.
일부 구현예에서, 본 발명의 기계 학습 모델(들)에 대한 입력은 센서 데이터일 수 있다. 기계 학습 모델은 센서 데이터를 프로세싱하여 출력을 생성할 수 있다. 일 예시로서, 기계 학습 모델(들)은 센서 데이터를 프로세싱하여 인식 출력을 생성할 수 있다. 다른 예로서, 기계 학습 모델(들)은 센서 데이터를 프로세싱하여 예측 출력을 생성할 수 있다. 다른 예로서, 기계 학습 모델(들)은 센서 데이터를 프로세싱하여 분류 출력을 생성할 수 있다. 또 다른 예로서, 기계 학습 모델(들)은 센서 데이터를 프로세싱하여 분할 출력을 생성할 수 있다. 또 다른 예로서, 기계 학습 모델(들)은 센서 데이터를 프로세싱하여 시각화 출력을 생성할 수 있다. 또 다른 예로서, 기계 학습 모델(들)은 센서 데이터를 프로세싱하여 진단 출력을 생성할 수 있다. 또 다른 예로서, 기계 학습 모델(들)은 센서 데이터를 프로세싱하여 검출 출력을 생성할 수 있다.
일부 경우에, 기계 학습 모델(들)은 신뢰할 수 있고/있거나 효율적인 전송 또는 저장(및/또는 대응 디코딩)을 위해 입력 데이터를 인코딩하는 것을 포함하는 작업을 수행하도록 구성될 수 있다. 예를 들어, 작업은 오디오 압축 작업일 수 있다. 입력은 오디오 데이터를 포함할 수 있고, 출력은 압축된 오디오 데이터를 포함할 수 있다. 다른 예에서, 입력은 시각적 데이터(예를 들어, 하나 이상의 이미지 또는 비디오)를 포함하고, 출력은 압축된 시각적 데이터를 포함하며, 작업은 시각적 데이터 압축 작업이다. 다른 예에서, 작업은 입력 데이터(예를 들어, 입력 오디오 또는 시각적 데이터)에 대한 임베딩을 생성하는 것을 포함할 수 있다.
일부 경우에, 입력은 시각적 데이터를 포함하며, 작업은 컴퓨터 비전 작업이다. 일부 경우에, 입력은 하나 이상의 이미지에 대한 픽셀 데이터를 포함하며 작업은 이미지 프로세싱 작업이다. 예를 들어, 이미지 프로세싱 작업은 이미지 분류일 수 있으며, 여기서 출력은 점수들의 세트이며, 각 점수는 상이한 객체 클래스에 대응하고, 하나 이상의 이미지가 객체 클래스에 속하는 객체를 묘사할 가능성을 나타낸다. 이미지 프로세싱 작업은 객체 검출일 수 있으며, 여기서 이미지 프로세싱 출력은 하나 이상의 이미지에서 하나 이상의 영역을 식별하고, 각 영역에 대해 해당 영역이 관심 객체를 나타낼 가능성을 식별한다. 또 다른 예로서, 이미지 프로세싱 작업은 이미지 세그먼트화일 수 있으며, 여기서 이미지 프로세싱 출력은 하나 이상의 이미지의 각 픽셀에 대해, 사전 결정된 카테고리 세트의 각 카테고리에 대한 각각의 가능성을 정의한다. 예를 들어 카테고리 세트는 전경 및 배경일 수 있다. 또 다른 예로 카테고리 세트는 객체 클래스일 수 있다. 다른 예로서, 이미지 프로세싱 작업은 깊이 추정일 수 있으며, 여기서 이미지 프로세싱 출력은 하나 이상의 이미지의 각 픽셀에 대한 각각의 깊이 값을 정의한다. 다른 예로서, 이미지 프로세싱 작업은 모션 추정일 수 있으며, 네트워크 입력은 다수의 이미지를 포함하고, 이미지 프로세싱 출력은 입력 이미지 중 하나의 각 픽셀에 대해, 네트워크 입력에서 이미지들 사이의 픽셀에 묘사된 장면의 모션을 정의한다.
일부 경우에 입력은 음성 발화를 나타내는 오디오 데이터를 포함하며, 작업은 스피치 인식 작업이다. 출력은 음성 발화에 매핑되는 텍스트 출력을 포함할 수 있다. 일부 경우에, 작업은 입력 데이터를 암호화하거나 복호화하는 것을 포함한다. 일부 경우에, 작업은 분기 예측 또는 메모리 주소 변환과 같은 마이크로프로세서 수행 작업을 포함한다.
도 1a는 본 발명을 구현하는데 사용될 수 있는 하나의 예시적 컴퓨팅 시스템을 도시한다. 다른 컴퓨팅 시스템도 사용될 수 있다. 예를 들어, 일부 구현예에서, 사용자 컴퓨팅 디바이스(102)는 모델 트레이너(160) 및 트레이닝 데이터 세트(162)를 포함할 수 있다. 이러한 구현예에서, 모델(120)은 사용자 컴퓨팅 디바이스(102)에서 로컬적으로 트레이닝되고 사용될 수 있다. 이러한 구현예 중 일부에서, 사용자 컴퓨팅 디바이스(102)는 사용자 특정 데이터에 기초하여 모델(120)을 개인화하기 위해 모델 트레이너(160)를 구현할 수 있다.
도 1b는 본 발명의 예시적 실시예에 따라 수행하는 예시적 컴퓨팅 디바이스(10)의 블록도를 도시한다. 컴퓨팅 디바이스(10)는 사용자 컴퓨팅 디바이스 또는 서버 컴퓨팅 디바이스일 수 있다.
컴퓨팅 디바이스(10)는 다수의 애플리케이션(예를 들어, 애플리케이션 1 내지 애플리케이션 N)을 포함한다. 각 애플리케이션은 자체적 기계 학습 라이브러리 및 기계 학습 모델(들)을 포함한다. 예를 들어, 각 애플리케이션은 기계 학습 모델을 포함할 수 있다. 예시적 애플리케이션은 텍스트 메시징 애플리케이션, 이메일 애플리케이션, 받아쓰기 애플리케이션, 가상 키보드 애플리케이션, 브라우저 애플리케이션 등을 포함한다.
도 1b에 도시된 바와 같이, 각 애플리케이션은 예를 들어, 하나 이상의 센서, 컨텍스트 관리자, 디바이스 상태 컴포넌트 및/또는 추가 컴포넌트들과 같은 컴퓨팅 디바이스의 다수의 다른 컴포넌트들과 통신할 수 있다. 일부 구현예에서, 각 애플리케이션은 API(예를 들어, 퍼블릭 API)를 사용하여 각 디바이스 컴포넌트와 통신할 수 있다. 일부 구현예에서 각 애플리케이션에 의해 사용되는 API는 해당 애플리케이션에 대해 특정적이다.
도 1c는 본 발명의 예시적 실시예에 따라 수행하는 예시적 컴퓨팅 디바이스(50)의 블록도를 도시한다. 컴퓨팅 디바이스(50)는 사용자 컴퓨팅 디바이스 또는 서버 컴퓨팅 디바이스일 수 있다.
컴퓨팅 디바이스(50)는 다수의 애플리케이션(예를 들어, 애플리케이션 1 내지 애플리케이션 N)을 포함한다. 각 애플리케이션은 중앙 인텔리전스 레이어와 통신한다. 예시적 애플리케이션은 문자 메시지 애플리케이션, 이메일 애플리케이션, 받아쓰기 애플리케이션, 가상 키보드 애플리케이션, 브라우저 애플리케이션 등을 포함한다. 일부 구현예에서, 각 애플리케이션은 API(예: 모든 애플리케이션에 걸쳐 공통 API)를 사용하여 중앙 인텔리전스 레이어(및 그 안에 저장된 모델)과 통신할 수 있다.
중앙 인텔리전스 레이어는 다수의 기계 학습 모델들을 포함한다. 예를 들어,도 1c에 도시된 바와 같이, 각각의 기계 학습 모델은 각 애플리케이션에 대해 제공될 수 있고, 중앙 인텔리전스 레이어에 의해 관리될 수 있다. 다른 구현예에서, 2개 이상의 애플리케이션들은 단일의 기계 학습 모델을 공유할 수 있다. 예를 들어, 일부 구현예에서, 중앙 인텔리전스 레이어는 모든 애플리케이션에 대해 단일 모델을 제공할 수 있다. 일부 구현예에서, 중앙 인텔리전스 레이어는 컴퓨팅 디바이스(50)의 운영 체제 내에 포함되거나 이와 다르게 구현될 수 있다.
중앙 인텔리전스 레이어는 중앙 디바이스 데이터 레이어와 통신할 수 있다. 중앙 디바이스 데이터 레이어는 컴퓨팅 디바이스(50)에 대한 중앙 집중식 데이터 저장소일 수 있다. 도 1c에 도시된 바와 같이, 중앙 디바이스 데이터 레이어는 예를 들어, 하나 이상의 센서, 컨텍스트 관리자, 디바이스 상태 컴포넌트 및/또는 추가 컴포넌트들과 같은 컴퓨팅 디바이스의 다수의 다른 컴포넌트들과 통신할 수 있다. 일부 구현예에서, 중앙 디바이스 데이터 레이어는 API(예를 들어, 사설 API)를 사용하여 각 디바이스 컴포넌트와 통신할 수 있다.
도 2는 본 발명의 예시적 실시예에 따른 기계 학습 추론 작업을 위한 그래픽 프로세서의 활용을 최적화하기 위한 데이터 흐름도를 도시한다. 특히, 앞서 설명한 바와 같이, 화상 회의와 같은 특정 애플리케이션의 중요성은 최근 몇 년 동안 원격 참가자와 가상으로 개최되는 회의 수가 증가함에 따라 증가했다. 화상 회의 애플리케이션의 경우, 이 설정에서 점점 더 중요해진 한 가지 기능은 일반적으로 전경/배경 분할을 통해 달성되는 배경 교체 또는 흐림이다. 기존의 고품질(HQ) 세그먼트 네트워크에서, 모델 용량은 일반적으로 중앙 프로세싱 유닛(CPU) 추론이 제공할 수 있는 것 이상의 중요한 제한 사항이다. 따라서, 본 발명의 실시예는 더 무거운 네트워크의 실시간 모델 추론을 위해 GPU를 활용한다. 그러나 WebGL 가속을 특징으로 하는 JavaScript 추론 엔진과 같은 기존 엔진 및/또는 애플리케이션 프로그래밍 인터페이스(API)는 네이티브 앱의 OpenGL 추론과 같은 다른 엔진과 비교할 때 상당한 성능 차이를 보인다.
최대 성능을 달성하기 위해, 본 발명의 일부 실시예는 모델(예를 들어, 신경 네트워크) 추론을 통한 입력(202)의 획득(예를 들어, 이미지 획득 등)으로부터 출력(210)(예: 화면상에 세그먼트화된 결과를 렌더링)을 제공하는 것이 GPU에서 완전히 실행된다.
기존에 GPU 가속 신경 네트워크 추론 엔진의 기본 아키텍처는 신경 네트워크 오퍼레이터를 GPU 셰이더 형태로 구현했다. 추론 루프는 본질적으로 이러한 셰이더 프로그램을 비동기 실행을 위해 신경 네트워크의 위상적으로 정렬된 순서로 GPU 명령 대기열에 넣는다. 컴퓨팅 셰이더를 지원하는 최신 GPU API를 사용하면 이러한 커널 구현을 작성하는 것이 비교적 간단한다. 그러나 WebGL과 같은 일부 기존 API는 컴퓨팅 셰이더에 대한 지원이 부족하다. 따라서, 일부 실시예에서, WebGL 추론 엔진에 대한 커널 구현은 프래그먼트 셰이더의 형태로 작성될 수 있다.
도 2를 참조하면, 기계 학습 모델에 대한 입력(202)(예를 들어, 이미지 입력)이 획득될 수 있다. 다음으로, 일부 실시예에서, 논리 객체와 GPU 객체는 분리될 수 있다. 논리 객체는 텐서, 텐서 버퍼, 공간 텐서, 가중치 텐서 등과 같은 모델(예: 신경 네트워크) 객체를 지칭한다. GPU 객체는 2D 텍스처, 2D 텍스처 배열, 프레임 버퍼와 같은 API(예: WebGL)에서 사용할 수 있는 스토리지 유형을 지칭한다. 이러한 두 유형의 객체를 분리하면 프로그래머는 특정 상황에 가장 빠른 GPU 빌딩 블록을 사용할 수 있으며 특정 GPU 객체에 구속되지 않는다.
다음으로, 렌더러(204)는 복수의 텍스처들(206)을 렌더링하기 위해 API의 기능을 활용하면서 입력(202)을 프로세싱한다. 예를 들어, 렌더러(204)는 멀티 렌더 타겟(MRT)과 같은 WebGL 기능을 활용할 수 있다. MRT는 이미지를 한 번에 여러 텍스처들로 렌더링할 수 있는 최신 GPU의 기능이다. 프로그래머가 각 렌더링 타겟에 대한 출력 값을 반환하는 셰이더를 작성할 때 셰이더는 단일 그리기 호출로 모든 렌더링 타겟에 렌더링하여 여러 그리기 호출의 오버헤드를 크게 절약한다. 이러한 방식으로, 입력(202)은 텍스처들(206)을 생성하기 위해 MRT를 통해 렌더러(204)에 의해 렌더링될 수 있다.
셰이더(208)는 복수의 텍스처들(206)에 적어도 부분적으로 기초하여 생성될 수 있다. 구체적으로, 일부 실시예에서, 유연한 텐서 레이아웃 및 셰이더 코드 생성이 셰이더들(208)을 생성하는데 활용될 수 있다. 예를 들어, 가장 원시적 형태에서, 모양 [H,W,C]의 텐서는 일반적으로 크기 [H,(W×C)/4]의 4채널 2D 텍스처에 매핑될 수 있다. 그러나, 워크로드의 병렬화 및 해당 메모리 액세스 패턴에 따라, x축과 y축이 교체된 다른 레이아웃이 원시적 매핑보다 더 효율적일 수 있다. 다양한 사용 사례를 최적화할 수 있도록, 본 개시 내용의 실시예는 사용자에 의해 지정되거나 실시간으로 결정될 수 있는 유연한 텐서 레이아웃을 용이하게 한다. 이것은 상이한 축 레이아웃을 수용할 수 있는 다수의 셰이더 구현들을 수반해야 하므로, 본 발명의 실시예는 셰이더들(208)을 생성하기 위해 활성 레이아웃에 대해 즉각적인 셰이더 코드 생성을 지원한다. 셰이더들(208)은 기계 학습 출력(210)을 얻기 위해 텍스처들(206)을 프로세싱할 수 있다.
이러한 방식으로, 멀티 타겟 렌더링을 활용하여 추론을 위한 GPU 프로세싱 효율성을 크게 높일 수 있다. 예시를 제공하기 위해, 32x32x1에서 32x32x1까지 컨볼루션을 수행할 수 있다. 기존 기술을 사용하면 32x32(1024) 스레드들이 실행되어야 한다. 예를 들어, 소스 텐서에서 입력 값을 읽으면 스레드당 1 플로트(총 1024 플로트)가 발생하고, 가중치 텐서에서 가중치 값을 읽으면 스레드당 1 플로트(총 1024 플로트)가 발생하며, 출력 값을 목적지 텐서에 쓰면 스레드당 1 플로트(총 1024 플로트)가 발생한다. 그러나, 본 발명의 실시예를 사용하면, 각 스레드가 4x 값을 프로세싱하는 16x16 스레드(256)가 실행될 수 있다. 예를 들어, 소스 텐서에서 입력 값을 읽으면 스레드당 4개의 플로트(총 1024개의 플로트)가 발생하고, 가중치 텐서에서 가중치 값을 읽으면 스레드당 1개의 플로트(총 256개)가 발생하고, 출력 값을 목적지 텐서에 쓰면 MRT를 통해 스레드당 4개의 플로트(총 1024 플로트)가 발생한다. 따라서, 1024개의 요청을 총 256개의 요청으로 줄일 수 있다.
보다 구체적으로, 기존의 접근 방식에서는 텐서와 같은 논리 객체가 GPU 객체(예: 텍스처, 버퍼 등)와 일대일 방식으로 매핑된다. 예를 들어, 모양이 [H, W, 3]인 3차원 텐서(예: 논리 객체)는 크기가 [H,W]인 GL 텍스처(예: webGL 등), 깊이 4인 GL 텍스처로 표현될 수 있다. 따라서, 텐서를 텍스처로 표현하는 작업은 하드 코딩된 방식으로 수행된다.
역으로, 본 발명의 실시예는 논리 객체와 GPU 객체 사이의 분리를 제공하고, 따라서 하드 코딩된 일대일 방식 외부에서 논리 객체와 GPU 객체의 매핑을 용이하게 한다. 예를 들어, 입력 텐서(202)는 4개의 GL 텍스처들(206)로 표현될 수 있다. 이와 같이, 논리 객체와 물리 객체를 분리함으로써, 셰이더들(208)의 실행은 (예를 들어, MRT 등을 통해) 입력을 나타내는 다수의 텍스처들을 읽을 수 있다. 렌더링할 때, 컴파일러는 논리 객체의 특성을 완전히 인식하고, 자동으로 GPU 객체(예: 텍스처 등)로 변환할 수 있다. 따라서, ML 연산(예: 컨볼루션)의 단일 소스 표현은 텐서를 입력으로 사용하고 텐서를 출력으로 사용할 수 있다. 그러나 이러한 텐서의 저장/레이아웃은 나중에 다른 요구 사항(예: 성능, 메모리 소비, 초기화 시간, GPU 능력 등)에 따라 결정될 수 있다.
예를 들어, 기계 학습 모델에 대한 추론 시간 프로세싱은 애플리케이션 프로그래밍 인터페이스를 요청할 수 있다. 모델 프로세싱은 입력(512x512x3) > conv1 > relu1 > depth_wise_conv > conv2 > relu2 > resize > 출력(512x512x1) 연산을 포함할 수 있다. 입력(202)는 gpu_texture(512x512x3)(예: 너비 x 높이 x RGB 채널)일 수 있다. 초기화 단계에 대해, conv1 + relu1, depth_wise_conv, conv2 + relu2 및 resize에 대한 GPU 프로그램을 생성할 수 있다. 일부 실시예에서, relu1은 메모리 대역폭을 절약하기 위해 컨볼루션과 함께 단일 패스로 수행될 수 있다.
이전 예시를 따르기 위해, GPU 객체 tensor1(256x256x16), tensor2(256x256x16), tensor3(128x128x1) 및 tensor 4(512x512x1)가 생성될 수 있다. 일부 실시예에서, 텐서는 메모리를 재사용할 수 있다. 입력부터 시작하여 tensor0(input) > conv1+relu1 > tensor1 > depth_wise_conv > tensor2 > conv2+relu2 > tensor3 > resize > tensor4(output)의 프로세싱이 발생할 수 있다. 이 예에서, 텐서 1은 conv1+relu1 연산에서 MRT를 완전히 활용하기 위해 레이아웃/저장에 4개의 텍스처를 활용할 수 있다. 텐서 2는 1개의 텍스처를 활용하여 conv2+relu2의 성능을 최적화할 수 있다. 텐서 3은 conv2+relu2 연산에서 MRT 활용을 용이하게 하기 위해 4개의 텍스처를 포함할 수 있으며, 텐서 4는 gpu_texture(512x512x1)의 출력을 위한 추가 변환을 제외하기 위해 1개의 텍스처를 포함할 수 있다. 특히, 텐서 2는 conv2+relu2 연산의 입력이고, 텐서 3은 해당 연산의 출력이므로, 최상의 성능을 가진 조합은 텐서 표현에 사용되는 텍스처들의 수에서 비대칭일 수 있다.
예를 들어, 입력(202)은 5차원의 텐서일 수 있다. 텍스처(206)는 렌더러(204)에서 입력 텐서(202)를 나타내도록 렌더링되는 4개의 텍스처를 포함할 수 있다.
본 개시내용의 실시예는 단지 상기 실시예의 기능을 예시하기 위해 WebGL API와 관련하여 설명된다는 점에 유의해야 한다. 구체적으로 이미지 세그먼트화는 CPU 추론이 높은 프레임 레이트에서 고용량 이미지 세그먼트화 네트워크를 실행하기에 충분하지 않기 때문에, 특정 API(예: WebGL)를 통해 사용 가능한 하드웨어 가속기를 사용하여 추론을 수행해야 한다. 디지털 신호 프로세서(DSP) 및 신경 프로세싱 유닛(NPU)와 같은 최신 가속기는 단편화되어 있고 웹 표준이 없지만, 그래픽 프로세싱 유닛(GPU)은 보편적으로 사용될 수 있으며. 웹용으로 잘 확립된 API를 가지고 있어서, 예시하기 위해 자연스러운 선택이게 한다.
마찬가지로, WebGL은 웹브라우저 내에서 실행되고 모든 주요 웹 브라우저에서 지원되는 애플리케이션용 GPU 렌더링을 위한 표준 API이다. TensorFlow 및 ONNX 런타임 웹과 같은 WebGL 가속을 사용하는 웹용 ML 추론 엔진은 소수이지만, 기존 솔루션의 WebGL 가속 성능은 기본 성능보다 3~4배 느려 기대에 미치지 못했다. 따라서, 본 발명의 예는 WebGL 가속을 통해 설명된다.
본 발명의 일부 양태는 텐서 흐름과 같은 종래의 엔진에 기초한다. 그러나, WebGL이 계산 셰이더를 지원하지 않기 때문에, 본 발명의 모델(예를 들어, 신경 네트워크) 연산은 셰이더(예를 들어, 프래그먼트 셰이더)를 통해 구현된다. MRT는 이러한 작업을 렌더링 언어로 다시 표현하는데 사용된다. MRT를 사용하면 단일 그리기 명령으로 한 번에 여러 텍스처에 이미지를 렌더링할 수 있으므로 여러 그리기 호출의 오버헤드가 크게 감소된다. 일부 실시예에서, MRT를 활용하기 위해 TFLite GPU와 같은 기존 엔진 청사진에 수정이 적용된다. 첫째, 논리적 텐서와 물리적 GPU 객체가 분리된다(예: TFLite GPU에서 1:1 대응을 가짐). 그런 다음 텐서는 MRT를 효율적으로 사용하기 위해 하드 코딩된 레이아웃 대신 유연한 모양을 취할 수 있다.
도 3은 본 발명의 예시적 실시예에 따라 구현된 디코더 블록에 대한 데이터 흐름도를 도시한다. 구체적으로, 도 3은 1x1 컨볼루션, 배치 정규화 및 활성화 레이어가 생략된 세그먼트화 헤드에 대한 디코더 블록을 도시한다. 도시된 바와 같이, 디코더 블록(300)은 저해상도 세그먼트화 결과 및 고해상도 건너뛰기 연결을 취하고 고해상도 결과를 다음 레벨에 출력한다. 채널별 어텐션을 통해 건너뛰기 연결로부터 피처를 추출하고, 그 피처를 이전 레벨의 세그먼트화 결과에 추가한다. 농축 세그먼트화는 일부 컨볼루션 레이어로 더욱 세분화된다. 전경/배경 세그먼트화의 경우 헤드는 1채널 마스크만 출력하면 된다. 디코더 블록(300)을 포함하는 세그먼트화 헤드의 효율성을 설명하기 위해, 2개의 모델이 동일한 백본(MobileNetV3-Small) 및 트레이닝 구성으로 트레이닝되지만 다른 헤드(LR-ASPP 및 도 3에 도시된 헤드)로도 트레이닝된다. 다음 표에 도시된 바와 같이, 도 3의 세그먼트화 헤드는 IOU(Intersection-over-union) 및 경계 F-점수의 품질 메트릭을 크게 향상시키면서 파라미터를 8%만 더 추가한다:
도 4a는 본 발명의 일부 실시예에 따른 애플리케이션 프로그래밍 인터페이스의 다양한 구현예에 대한 고품질 세그먼트화에 대한 추론 레이턴시에 대한 결과를 도시한다. 구체적으로, 본 발명의 실시예를 평가하기 위해, ML 솔루션이 온-디바이스 GPU에 직접 액세스하지 않고 샌드박스 환경에서 실행되는 웹 기반 화상 회의 및 AR 효과와 같은 브라우저 내 애플리케이션에 초점을 둔다. 도 4a는 TensorFlow.js(TF.js) WebAssembly(Wasm) 및 WebGL과 같은 다른 추론 엔진과 비교하여 본 발명의 실시예(예를 들어, ML Drift)를 이용하는 추론 시간을 도시한다. Wasm 백엔드는 SIMD 명령으로 가속화되고, TF.js WebGL 백엔드는 GPU를 활용하여 모델 추론을 가속화하며, 비슷한 성능을 가진 다른 엔진에서도 유사한 구현을 사용할 수 있다.
도 4b는 본 발명의 일부 실시예에 따른 고품질 세그먼트화 모델의 평가 결과를 도시한다. 구체적으로, 본 발명의 실시예를 이용하여, HQ 모델은 브라우저에서 더 큰 용량 및 이미지 크기로 실행될 수 있다. 평가를 위해 본 발명의 일부 실시예에 따라 세그먼트화 모델의 두 그룹: HQ-MS, HQ-ML 및 HQ-E0∼E4가 트레이닝된다. 처음 두 개는 MobileNetV3의 소형 및 대형 버전에 기초한다. 나머지 5개는 모델 크기가 증가하는 EfficientNet-Lite에 기초한다. 모든 모델은 세그먼트화 헤드가 장착되어 있으며 동일한 데이터와 하이퍼파라미터로 트레이닝된다. 입력 이미지 크기는 512×288이다.
도 3에서 도시된 바와 같이, HQ-MS 모델은 비슷한 모델 크기로 HQ-E0보다 높은 품질을 보여준다. 이것은 소형 모델에 대한 SE의 효율성을 보여준다. 모델 크기가 증가함에 따라 HQ 모델의 두 그룹은 유사한 품질 지표 값을 나타낸다. 추론 시간이 비슷한 모델의 경우 HQ-E 모델이 HQ-M 모델보다 지속적으로 높은 품질을 보이며 눈에 띄는 마진을 갖는다. 이것은 GPU 가속에 도전적인 squeeze-and-excite 레이어의 글로벌 풀링 때문이다.
도 5a는 본 발명의 일부 실시예에 따라 프로세싱된 2개의 모델을 활용한 이미지 세그먼트화 결과를 도시한다. 특히, 도 5a는 기존 기법에 비해 이미지 세그먼트화의 개선을 보여준다. 예를 들어, 이미지(502)는 특정 입력 크기(예를 들어, 512 x 288 픽셀 등)의 이미지이다. 이미지 세그먼트화 결과(504)는 종래의 CPU 기반 이미지 세그먼트화 모델의 출력이다. 도시된 바와 같이 세분화 결과는 세부 사항의 상당한 손실을 보여준다. 이미지 분할 결과(506 및 508)는 본 발명의 2가지 특정 구현예에 따라 구성된 2가지 기계 학습 모델의 출력이다. 도시된 바와 같이, 종래의 모델을 사용하여 생성된 이미지 세그먼트화 결과(504)와 달리, 이미지 세그먼트화 결과(506 및 508)는 실질적으로 더 많은 세부사항을 유지한다.
도 5b는 본 발명의 일부 실시예에 따라 프로세싱된 2개의 모델을 활용하는 고품질 세그먼트화 결과를 도시한다.
도 6은 본 발명의 예시적 실시예에 따라 수행하기 위한 예시적 방법의 흐름도를 도시한다. 도 6은 도시 및 설명을 위해 특정한 순서로 수행된 동작들을 도시하고 있지만, 본 발명의 방법은 특별히 설명된 순서 또는 구성에 한정되지 않는다. 방법(600)의 다양한 동작들은 본 발명의 범위를 벗어나지 않고 다양한 방식으로 생략, 재배열, 결합 및/또는 구성될 수 있다.
동작(602)에서, 컴퓨팅 시스템은 GPU(Graphics Processing Unit)를 포함할 수 있다. 컴퓨팅 시스템은 기계 학습 모델에 대한 입력으로부터 복수의 텍스처들을 동시에 렌더링할 수 있다. 예를 들어, 컴퓨팅 시스템은 WebGL API(Application Programming Interface)의 MRT(Multi-Render Target) 프로세스를 통해 텍스처를 렌더링할 수 있다. 기계 학습 모델은 WebGL API를 사용하는 애플리케이션과 연관될 수 있다. 예를 들어 애플리케이션은 WebGL API를 사용하여 텍스처를 렌더링하는 게임 애플리케이션일 수 있으며, 기계 학습 모델은 게임 애플리케이션과 연관된 모델일 수 있다. 일부 구현예에서, 애플리케이션은 웹 브라우저에서 실행될 수 있다. 추가적으로 또는 대안적으로, 일부 구현예에서, 애플리케이션은 화상 회의 애플리케이션일 수 있다.
일부 구현예에서, 복수의 텍스처들은 GPU를 사용하여 컴퓨팅 시스템에 의해 동시에 렌더링될 수 있다. 예를 들어 기계 학습 모델에 대한 입력은 이미지일 수 있다. 컴퓨팅 시스템은 이미지를 나타내는 텍스처를 동시에 렌더링하기 위해 GPU의 렌더링 소프트웨어 및/또는 하드웨어를 활용할 수 있다. 다시 말해, 컴퓨팅 시스템은 일부 구현예에서, 기계 학습 모델을 나타내는 복수의 텍스처들(예를 들어, 이미지 입력 또는 입력 이미지로부터 도출된 텐서를 집합적으로 나타내는 복수의 텍스처들 등)을 동시에 렌더링할 수 있다.
보다 구체적으로, MRT 프로세스는 이미지와 같은 입력을 한 번에 여러 텍스처들로 렌더링할 수 있는 WebGL API의 기능이다. 이것은 일반적으로 렌더링에 사용되지만 기계 학습 추론에도 사용될 수 있다. 예를 들어, 이미지 세그먼트화 작업의 경우, 세그먼트화될 이미지로부터 동시에 복수의 텍스처들이 렌더링될 수 있다. 그런 다음 텍스처들은 셰이더(예: 프래그먼트 셰이더)로 표현되는 기계 학습 모델 객체로 프로세싱될 수 있다. 이를 통해 중앙 프로세서가 아닌 GPU를 사용할 수 있으며 병렬 프로세싱을 용이하게 하여 기계 학습 모델의 성능, 효율성 및 정확도를 크게 높일 수 있다.
일부 구현예에서, 복수의 텍스처들을 동시에 렌더링하기 전에, 컴퓨팅 시스템은 기계 학습 모델에 대한 입력을 획득할 수 있다. 기계 학습 모델은 입력과 연관된 작업을 수행하도록 트레이닝될 수 있다. 예를 들어, 기계 학습 모델에 대한 입력은 이미지 데이터일 수 있거나 이를 포함할 수 있으며, 기계 학습 모델이 수행하도록 트레이닝된 작업은 이미지 세그먼트화 작업일 수 있다.
동작(604)에서, 컴퓨팅 시스템은 복수의 텍스처들의 레이아웃에 적어도 부분적으로 기초하여 복수의 셰이더들을 생성할 수 있다. 복수의 셰이더들 각각은 기계 학습 모델의 복수의 오퍼레이터들 중 적어도 하나의 오퍼레이터에 대응할 수 있다. 예를 들어, 복수의 셰이더들은 복수의 프래그먼트 셰이더들일 수 있다.
일부 구현예에서, 복수의 셰이더들을 생성하기 전에, 컴퓨팅 시스템은 GPU의 가용 프로세싱 능력을 나타내는 복수의 GPU 객체들을 결정할 수 있다. 컴퓨팅 시스템은 복수의 GPU 객체들에 적어도 부분적으로 기초하여 복수의 텍스처들의 레이아웃을 결정할 수 있다. 즉, GPU의 프로세싱 능력에 기초하여 복수의 텍스처들의 레이아웃이 결정될 수 있다. 일부 구현예에서, 텍스처들의 레이아웃은 사용자가 지정할 수 있다.
동작(606)에서, 컴퓨팅 시스템은 기계 학습 모델에 대한 기계 학습 출력을 얻기 위해 복수의 셰이더들로 복수의 텍스처들을 프로세싱할 수 있다. 일부 구현예에서 셰이더들을 프로세싱하기 위해 컴퓨팅 시스템은 중간 표현에서 기계 학습 출력을 추출할 수 있다. 예를 들어, 기계 학습 출력은 기계 학습 출력을 나타내는 중간 텍스처 출력이거나 이를 포함할 수 있다. 컴퓨팅 시스템은 중간 텍스처 출력으로부터 기계 학습 출력을 추출할 수 있다.
추가 개시
본 명세서에 논의된 기술은 서버, 데이터베이스, 소프트웨어 애플리케이션들 및 다른 컴퓨터 기반 시스템들 뿐만 아니라 취해진 액션들 및 상기 시스템으로 전송되거나 그로부터 전송된 정보를 참조할 수 있다. 컴퓨터 기반 시스템들의 내재적 유연성은 광범위한 가능한 구성들, 조합들 및 작업의 분할 및 컴포넌트들 간의 및 그로부터의 기능성을 허용함을 인식할 것이다. 예를 들어, 본 명세서에서 논의된 프로세스들은 단일의 디바이스 또는 컴포넌트 또는 조합으로 작동하는 다수의 디바이스들 또는 컴포넌트들을 사용하여 구현될 수 있다. 데이터베이스 및 애플리케이션들은 단일 시스템 또는 다수의 시스템들에 걸쳐 분산된 시스템에서 구현될 수 있다. 분산 컴포넌트들은 순차적으로 또는 병렬로 동작할 수 있다.
본 발명의 주제가 그 다양한 특정 예시적 실시예와 관련하여 상세히 설명되었지만, 각 예시는 본 발명의 설명을 위한 것이지 본 발명의 한정을 위한 것은 아니다. 통상의 기술자는 전술한 내용을 이해할 때 상기 실시예에 대한 변형, 변형 및 균등물을 용이하게 생성할 수 있다. 따라서, 본 발명은 통상의 기술자에게 쉽게 명백해질 수 있는 상기 수정, 변형 및/또는 본 발명에 대한 추가의 포함을 배제하지 않는다. 예를 들어, 일 실시예의 일부로서 도시되거나 기술된 구성들은 여전히 추가적 실시예를 만들어내기 위해 다른 실시예와 함께 사용될 수 있다. 따라서, 본 발명은 상기 수정들 및 변형들을 커버하도록 의도되었다.

Claims (20)

  1. 기계 학습 추론 작업을 위한 그래픽 프로세서의 활용을 최적화하기 위한 컴퓨팅 시스템으로서,
    하나 이상의 프로세서들, 상기 하나 이상의 프로세서들은 그래픽 프로세싱 유닛(GPU)를 포함하며;
    명령어들을 집합적으로 저장하는 하나 이상의 비일시적 컴퓨터 판독가능 매체를 포함하며, 상기 명령어들은 상기 하나 이상의 프로세서들에 의해 실행될 때, 컴퓨팅 시스템으로 하여금 동작들을 수행하게 하며, 상기 동작들은:
    기계 학습 모델에 대한 입력으로부터 복수의 텍스처들을 동시에 렌더링하는 동작;
    복수의 텍스처들의 레이아웃에 적어도 부분적으로 기초하여 복수의 셰이더들을 생성하는 동작, 상기 복수의 셰이더들 각각은 기계 학습 모델의 복수의 오퍼레이터들 중 적어도 하나의 오퍼레이터에 대응하며; 및
    상기 기계 학습 모델에 대한 기계 학습 출력을 획득하기 위해 상기 GPU를 사용하여 상기 복수의 셰이더들로 상기 복수의 텍스처들을 프로세싱하는 동작을 포함하는, 컴퓨팅 시스템.
  2. 청구항 1에 있어서,
    상기 복수의 텍스처들을 동시에 렌더링하는 동작은 상기 컴퓨팅 시스템에 의해, WebGL 애플리케이션 프로그래밍 인터페이스의 멀티 렌더링 타겟 프로세스를 통해, 상기 기계 학습 모델에 대한 입력으로부터 상기 복수의 텍스처들을 동시에 렌더링하는 것을 포함하는, 컴퓨팅 시스템.
  3. 청구항 2에 있어서,
    상기 기계 학습 모델은 WebGL 애플리케이션 프로그래밍 인터페이스를 활용하는 애플리케이션과 연관되는, 컴퓨팅 시스템.
  4. 청구항 3에 있어서,
    상기 애플리케이션은 웹브라우저에서 실행되는, 컴퓨팅 시스템.
  5. 청구항 4에 있어서,
    상기 애플리케이션은 비디오 회의 애플리케이션인, 컴퓨팅 시스템.
  6. 청구항 1에 있어서,
    상기 복수의 텍스처들은 상기 GPU를 사용하여 동시에 렌더링되는, 컴퓨팅 시스템.
  7. 청구항 1에 있어서,
    상기 복수의 텍스처들은 상기 기계 학습 모델에 대한 입력을 나타내는, 컴퓨팅 시스템.
  8. 청구항 1에 있어서,
    상기 복수의 셰이더들을 생성하기 전에, 상기 동작들은,
    상기 컴퓨팅 시스템에 의해, 상기 GPU의 가용 프로세싱 능력을 나타내는 복수의 GPU 객체들을 결정하는 동작; 및
    상기 컴퓨팅 시스템에 의해, 상기 복수의 GPU 객체들에 적어도 부분적으로 기초하여 상기 복수의 텍스처들의 레이아웃을 결정하는 동작을 포함하는, 컴퓨팅 시스템.
  9. 청구항 1에 있어서,
    상기 복수의 텍스처들의 레이아웃은 사용자에 의해 지정되는, 컴퓨팅 시스템.
  10. 청구항 1에 있어서,
    상기 복수의 셰이더들은 복수의 프래그먼트 셰이더들을 포함하는, 컴퓨팅 시스템.
  11. 청구항 1에 있어서,
    상기 기계 학습 모델에 대한 입력은:
    이미지; 또는
    상기 이미지로부터 도출된 텐서를 포함하는, 컴퓨팅 시스템.
  12. 청구항 1에 있어서,
    상기 기계 학습 출력은 상기 기계 학습 출력을 나타내는 중간 텍스처 출력을 포함하고, 상기 복수의 셰이더들을 프로세싱하는 동작은 상기 컴퓨팅 시스템에 의해, 상기 중간 텍스처 출력으로부터 상기 기계 학습 출력을 추출하는 것을 더 포함하는, 컴퓨팅 시스템.
  13. 청구항 12에 있어서,
    상기 복수의 텍스처들을 동시에 렌더링하기 전에, 상기 동작들은 상기 컴퓨팅 시스템에 의해, 상기 기계 학습 모델에 대한 입력을 획득하는 것을 포함하고, 상기 기계 학습 모델은 상기 입력에 연관된 작업을 수행하도록 트레이닝되는, 컴퓨팅 시스템.
  14. 청구항 13에 있어서,
    상기 기계 학습 모델에 대한 입력은 이미지 데이터를 포함하고, 상기 기계 학습 모델이 수행하도록 트레이닝되는 상기 작업은 이미지 세그먼트화 작업을 포함하는, 컴퓨팅 시스템.
  15. 기계 학습 추론 작업을 위한 그래픽 프로세서의 활용을 최적화하기 위한 컴퓨터로 구현되는 방법으로서,
    하나 이상의 컴퓨팅 디바이스를 포함하는 컴퓨팅 시스템에 의해, 기계 학습 모델에 대한 입력으로부터 복수의 텍스처들을 동시에 렌더링하는 단계;
    상기 컴퓨팅 시스템에 의해, 복수의 텍스처들의 레이아웃에 적어도 부분적으로 기초하여 복수의 셰이더들을 생성하는 단계, 상기 복수의 셰이더들 각각은 기계 학습 모델의 복수의 오퍼레이터들 중 적어도 하나의 오퍼레이터에 대응하며; 및
    상기 컴퓨팅 시스템에 의해, 상기 기계 학습 모델에 대한 기계 학습 출력을 획득하기 위해 그래픽 프로세싱 유닛(GPU)을 상기 컴퓨팅 시스템에 의해 사용하여 상기 복수의 셰이더들로 상기 복수의 텍스처들을 프로세싱하는 단계를 포함하는, 컴퓨터로 구현되는 방법.
  16. 청구항 15에 있어서,
    상기 복수의 텍스처들을 동시에 렌더링하는 단계는 상기 컴퓨팅 시스템에 의해, WebGL 애플리케이션 프로그래밍 인터페이스의 멀티 렌더링 타겟 프로세스를 통해, 상기 기계 학습 모델에 대한 입력으로부터 상기 복수의 텍스처들을 동시에 렌더링하는 것을 포함하는, 컴퓨터로 구현되는 방법.
  17. 청구항 16에 있어서,
    상기 기계 학습 모델은 WebGL 애플리케이션 프로그래밍 인터페이스를 활용하는 애플리케이션과 연관되는, 컴퓨터로 구현되는 방법.
  18. 청구항 17에 있어서,
    상기 애플리케이션은 웹브라우저에서 실행되는, 컴퓨터로 구현되는 방법.
  19. 청구항 18에 있어서,
    상기 애플리케이션은 비디오 회의 애플리케이션인, 컴퓨터로 구현되는 방법.
  20. 명령어들을 집합적으로 저장하는 하나 이상의 비일시적 컴퓨터 판독가능 매체로서, 상기 명령어들은 하나 이상의 프로세서들에 의해 실행될 때 상기 하나 이상의 프로세서들로 하여금 동작들을 수행하게 하며, 상기 동작들은:
    기계 학습 모델에 대한 입력으로부터 복수의 텍스처들을 동시에 렌더링하는 동작;
    복수의 텍스처들의 레이아웃에 적어도 부분적으로 기초하여 복수의 셰이더들을 생성하는 동작, 상기 복수의 셰이더들 각각은 기계 학습 모델의 복수의 오퍼레이터들 중 적어도 하나의 오퍼레이터에 대응하며; 및
    상기 기계 학습 모델에 대한 기계 학습 출력을 획득하기 위해 그래픽 프로세싱 유닛(GPU)을 상기 컴퓨팅 시스템에 의해 사용하여 상기 복수의 셰이더들로 상기 복수의 텍스처들을 프로세싱하는 단계를 포함하는, 하나 이상의 비일시적 컴퓨터 판독가능 매체.
KR1020220187084A 2022-04-15 2022-12-28 기계 학습 추론을 위한 그래픽 프로세싱 최적화를 위한 시스템 및 방법 KR20230148088A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US202263331593P 2022-04-15 2022-04-15
US63/331,593 2022-04-15

Publications (1)

Publication Number Publication Date
KR20230148088A true KR20230148088A (ko) 2023-10-24

Family

ID=84888566

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220187084A KR20230148088A (ko) 2022-04-15 2022-12-28 기계 학습 추론을 위한 그래픽 프로세싱 최적화를 위한 시스템 및 방법

Country Status (5)

Country Link
US (1) US20230334747A1 (ko)
EP (1) EP4261769A1 (ko)
JP (1) JP2023157833A (ko)
KR (1) KR20230148088A (ko)
CN (1) CN115829824A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116739090B (zh) * 2023-05-12 2023-11-28 北京大学 基于Web浏览器的深度神经网络推理度量方法和装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10339443B1 (en) * 2017-02-24 2019-07-02 Gopro, Inc. Systems and methods for processing convolutional neural network operations using textures

Also Published As

Publication number Publication date
JP2023157833A (ja) 2023-10-26
EP4261769A1 (en) 2023-10-18
US20230334747A1 (en) 2023-10-19
CN115829824A (zh) 2023-03-21

Similar Documents

Publication Publication Date Title
US10922793B2 (en) Guided hallucination for missing image content using a neural network
US10970816B2 (en) Motion blur and depth of field reconstruction through temporally stable neural networks
US10169084B2 (en) Deep learning via dynamic root solvers
US20190147296A1 (en) Creating an image utilizing a map representing different classes of pixels
US11082720B2 (en) Using residual video data resulting from a compression of original video data to improve a decompression of the original video data
US11941752B2 (en) Streaming a compressed light field
US20150279092A1 (en) Bounding Volume Hierarchy Generation Using a Heterogeneous Architecture
US20210287096A1 (en) Microtraining for iterative few-shot refinement of a neural network
US11954830B2 (en) High dynamic range support for legacy applications
US11734890B2 (en) Three-dimensional model recovery from two-dimensional images
US11615602B2 (en) Appearance-driven automatic three-dimensional modeling
JP2020102195A (ja) グラフィックスフレームの効率的な分散型ノイズ除去のための装置及び方法
US11501467B2 (en) Streaming a light field compressed utilizing lossless or lossy compression
CN106662999A (zh) 用于simd结构化分支的方法和装置
CN113762461A (zh) 使用可逆增强算子采用有限数据训练神经网络
KR20230148088A (ko) 기계 학습 추론을 위한 그래픽 프로세싱 최적화를 위한 시스템 및 방법
US20230062503A1 (en) Pruning and accelerating neural networks with hierarchical fine-grained structured sparsity
US11475549B1 (en) High dynamic range image generation from tone mapped standard dynamic range images
CN115226408A (zh) 用于会话式ai应用的说话者自适应语音结束检测
CN114529443A (zh) 以目标采样率的自适应采样
KR20230010672A (ko) 데이터 압축의 방법 및 장치
US20230298243A1 (en) 3d digital avatar generation from a single or few portrait images
JP7325775B2 (ja) 画像処理システム、方法、及びプログラム
US11908064B2 (en) Accelerated processing via a physically based rendering engine
US20240161749A1 (en) Scene-aware speech recognition using vision-language models