KR102205087B1 - 공유형 머신 러닝 데이터 구조 - Google Patents

공유형 머신 러닝 데이터 구조 Download PDF

Info

Publication number
KR102205087B1
KR102205087B1 KR1020187031723A KR20187031723A KR102205087B1 KR 102205087 B1 KR102205087 B1 KR 102205087B1 KR 1020187031723 A KR1020187031723 A KR 1020187031723A KR 20187031723 A KR20187031723 A KR 20187031723A KR 102205087 B1 KR102205087 B1 KR 102205087B1
Authority
KR
South Korea
Prior art keywords
machine learning
processing resource
real
model
processing
Prior art date
Application number
KR1020187031723A
Other languages
English (en)
Other versions
KR20180122741A (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 KR20180122741A publication Critical patent/KR20180122741A/ko
Application granted granted Critical
Publication of KR102205087B1 publication Critical patent/KR102205087B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • 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
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Image Analysis (AREA)
  • Advance Control (AREA)
  • Memory System (AREA)
  • Storing Facsimile Image Data (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

예는 머신 러닝 데이터 구조를 저장하기 위한 비 휘발성 메모리를 포함하는 시스템을 구비한다. 예는 제 1 프로세싱 리소스를 이용하여 머신 러닝 데이터 구조에 액세스하고, 예는 적어도 하나의 그래픽 프로세싱 코어를 구비한 제 2 프로세싱 리소스를 이용하여 머신 러닝 데이터 구조에 액세스하여, 머신 러닝 데이터 구조가 제 1 프로세싱 리소스 및 제 2 프로세싱 리소스의 공유 메모리 공간이 된다.

Description

공유형 머신 러닝 데이터 구조
일부 데이터 프로세싱 시스템은 데이터세트(datasets)에 대해 머신 러닝(machine learning)을 수행하여 결과를 생성할 수 있다. 머신 러닝의 예는 분류, 회귀, 클러스터링, 밀도 추정, 차원 축소, 및/또는 다른 타입의 분석을 포함할 수 있다. 이러한 예에서, 데이터 프로세싱 시스템은 머신 러닝 모델에 기반하여 데이터세트를 분석할 수 있다.
도 1a는 본 발명을 이용할 수 있는 일 예의 시스템의 일부 컴포넌트의 블록도이다.
도 1b는 본 발명을 이용할 수 있는 일 예의 시스템의 일부 컴포넌트의 블록도이다.
도 2는 본 발명을 이용할 수 있는 일 예의 시스템의 일부 컴포넌트의 블록도이다.
도 3은 일 예의 시스템의 일부 컴포넌트의 블록도이다.
도 4는 일 예의 시스템에 의해 수행될 수 있는 일 예의 동작의 시퀀스를 나타내는 흐름도이다.
도 5는 일 예의 시스템에 의해 수행될 수 있는 일 예의 동작의 시퀀스를 나타내는 흐름도이다.
도 6은 일 예의 시스템에 의해 수행될 수 있는 일 예의 동작의 시퀀스를 나타내는 흐름도이다.
도 7은 일 예의 시스템에 의해 수행될 수 있는 일 예의 동작의 시퀀스를 나타내는 흐름도이다.
도면 전체에 걸쳐서, 동일한 참조 번호는 유사하지만 반드시 동일하지는 않은 요소를 나타낸다. 또한, 도면은 설명과 일치하는 예 및/또는 구현예를 제공하지만, 그 설명은 도면에 제공된 예 및/또는 구현예에 제한되지 않는다.
예시적인 데이터 프로세싱 시스템은 머신 러닝 데이터 구조를 저장하기 위한 비 휘발성 메모리를 포함할 수 있다. 머신 러닝 데이터 구조는 제 1 프로세싱 리소스 및 제 2 프로세싱 리소스의 공유 메모리 공간에 대응할 수 있고, 제 2 프로세싱 리소스는 적어도 하나의 그래픽 프로세싱 코어를 포함할 수 있다. 일부 예에서, 비 휘발성 메모리는, 제 1 프로세싱 리소스 및 제 2 프로세싱 리소스가 머신 러닝 메모리 구조에서 직접 명령어 및 데이터를 프로세싱할 수 있는 액세스 속도를 가질 수 있다. 본원에 사용되는 바와 같은 데이터 프로세싱 시스템은, 예를 들어, 퍼스널 컴퓨터, 휴대용 컴퓨팅 장치(예컨대, 랩탑, 태블릿 컴퓨터, 스마트 폰), 서버, 서버의 블레이드, 서버의 프로세싱 노드, SOC(system-on-a-chip) 컴퓨팅 장치, SOC 장치의 프로세싱 노드, 및/또는 다른 이러한 데이터 프로세싱 장치/시스템을 포함할 수 있다. 본원에 사용되는 바와 같이, 데이터 프로세싱 시스템은 컴퓨팅 시스템 또는 간단히 시스템으로 지칭될 수 있다.
본원의 예는 머신 러닝이 수행될 수 있는 데이터 프로세싱 시스템에 대해 프로세싱 효율의 향상, 리소스 이용의 감소, 및/또는 계산 복잡도의 증가를 가능하게 할 수 있다. 본원에 기술되는 예는 머신 러닝 데이터 구조를 저장하기 위한 비 휘발성 메모리를 포함할 수 있다. 머신 러닝 데이터 구조는 적어도 하나의 머신 러닝 모델을 포함할 수 있다. 머신 러닝 모델은 데이터세트에 대한 모델 결과를 생성하기 위해, 머신 러닝 모델의 모델 파라미터에 적어도 부분적으로 기초하여 데이터세트에 대해 수행될 복수의 동작을 포함할 수 있다.
머신 러닝 모델의 예는 회귀 기반 모델, 인스턴스 기반 모델, 정규화 기반 모델, 의사 결정 트리 기반 모델, 베이지안 네트워크 기반 모델, 클러스터링 기반 모델, 연관 규칙 러닝 모델, 인공 신경망 기반 모델, 차원 축소 기반 모델, 앙상블 기반 모델, 및/또는 다른 타입의 머신 러닝 모델을 포함할 수 있다. 이해되는 바와 같이, 일부 예에서, 머신 러닝 데이터 구조는 복수의 타입의 머신 러닝 모델을 저장할 수 있다. 논의된 바와 같이, 각 머신 러닝 모델은 모델 파라미터의 세트를 포함할 수 있다. 일부 예는, 러닝 데이터세트에 대해 머신 러닝 모델의 동작을 수행하고, 그 러닝 데이터세트로부터 생성된 모델 결과에 기초하여 모델 파라미터를 업데이트함으로써, 모델 파라미터를 조정(tune)할 수 있다.
비 휘발성 메모리(NVM)의 예는 ROM(예를 들어, 마스크 ROM, PROM, EPROM, EEPROM 등), 플래시 메모리, 고체 상태 메모리, 비 휘발성 상태 RAM (nvSRAM), 배터리 후원형(battery-backed) 정적 RAM, 강유전성 RAM (FRAM), 자기 저항성 RAM (MRAM), 상 변화 메모리(PCM), 자기 테이프, 광 드라이브, 하드디스크 드라이브, 3D 크로스 포인트 메모리(3D XPoint), 프로그래밍가능 금속화 셀(programmable metallization cell: PMC) 메모리, 실리콘-산화물-질화물-산화물-실리콘(SONOS) 메모리, 저항성 RAM (RRAM), 도메인-월 메모리(DWM), nano-RAM, 플로팅 접합 게이트 RAM (FJG RAM), 멤리스터 메모리, 스핀 전달 토크(spin-transfer torque) RAM (STT-RAM) 뿐만 아니라, 전원 사이클(예를 들어, 오프/온)에 걸쳐 저장된 정보를 유지하는 다른 메모리 장치/모듈을 포함할 수 있다. 전원 사이클에 걸쳐 데이터를 저장하는 비 휘발성 메모리는 또한 영구 데이터 메모리라고 지칭될 수도 있다. 본원에 사용된 바와 같이, 비 휘발성 메모리 리소스는 하나의 장치 및/또는 모듈 또는 조합된 장치 및/또는 모듈을 포함할 수 있다.
일부 예에서, 비 휘발성 메모리 리소스는 저장 클래스 메모리(SCM)로 지칭되는 비 휘발성 메모리의 클래스에 대응할 수 있다. 이러한 예에서, SCM 비 휘발성 메모리는 바이트-어드레싱가능하고, 프로세싱 리소스와 동기되며, 프로세싱 리소스 일관성 도메인(processing resource coherent domain) 상태에 있다. 또한, SCM 비 휘발성 메모리는 하드드라이브 또는 자기 테이프 메모리 장치와 같은 다른 타입의 비 휘발성 메모리와 비교하여 상대적으로 높은 판독/기록 속도를 갖는 메모리 타입을 포함할 수 있다. SCM 비 휘발성 메모리의 예는, 일부 타입의 플래시 메모리, RRAM, 멤리스터, PCM, MRAM, STT-RAM 뿐만 아니라, 다른 타입의 보다 높은 판독/기록 속도의 영구 데이터 메모리 장치를 포함할 수 있다. 이해되는 바와 같이, 스핀 디스크 하드드라이브, NAND 플래시, 자기 테이프 드라이브와 같은 일부 타입의 비 휘발성 메모리의 비교적 낮은 판독 및 기록 속도 때문에, 프로세싱 리소스는 이러한 타입의 비 휘발성 메모리에 대해 직접 명령어 및 데이터를 프로세싱할 수 없다. 그러나, 프로세싱 리소스는 SCM 비 휘발성 메모리에 대해 직접 명령어 및 데이터를 프로세싱할 수 있다.
또한, 예는 비 휘발성 메모리 리소스에 결합된 프로세싱 리소스를 포함할 수 있다. 특히, 일 예의 시스템은, 비 휘발성 메모리에 결합되어 머신 러닝 데이터 구조에 액세스하는 제 1 프로세싱 리소스를 포함할 수 있고, 그 예의 시스템은, 비 휘발성 메모리에 결합되어 머신 러닝 데이터 구조에 액세스하는 제 2 프로세싱 리소스를 포함할 수 있다. 따라서, 비 휘발성 메모리 리소스의 머신 러닝 데이터 구조는 제 1 프로세싱 리소스 및 제 2 프로세싱 리소스의 공유 메모리 공간이다. 본원에 기술된 일부 예에서, 공유 메모리 공간은 제 1 프로세싱 리소스 및 제 2 프로세싱 리소스가 머신 러닝 데이터 구조로/로부터 데이터를 직접 기록/판독할 수 있음을 나타낸다. 또한, 공유 메모리 공간에 대해, 제 1 프로세싱 리소스 및 제 2 프로세싱 리소스가 머신 러닝 데이터 구조에 동시에 액세스(예를 들어, 머신 러닝 데이터 구조로/로부터 데이터를 기록/판독)할 수 있다는 것이 이해될 것이다.
예시적인 데이터 프로세싱 시스템에서, 제 1 프로세싱 리소스는 복수의 프로세싱 리소스를 포함할 수 있고, 마찬가지로, 제 2 프로세싱 리소스는 복수의 프로세싱 리소스를 포함할 수 있다. 일부 예에서, 제 1 프로세싱 리소스는 적어도 하나의 프로세싱 코어를 구비한 중앙 프로세싱 유닛(CPU)과 같은 범용 데이터 프로세서에 대응할 수 있다. 일부 예에서, 제 1 프로세싱 리소스는 주문형 집적 회로(ASIC) 및/또는 데이터 프로세싱을 위한 다른 구성의 로직 컴포넌트를 포함할 수 있다. 일부 예에서, 제 1 프로세싱 리소스는 명령어를 병렬로, 동기적으로, 동시에, 인터리빙된 방식으로, 및/또는 다른 그러한 명령 실행 배열로 프로세싱/실행할 수 있는 복수의 프로세싱 코어를 포함할 수 있다. 일부 예에서, 각각의 프로세싱 코어는 하나 초과의 명령어 스레드(종종 멀티-스레드 코어라고도 함)를 실행할 수 있다.
제 2 프로세싱 리소스는 전용 그래픽 프로세싱 코어로 지칭될 수 있는 적어도 하나의 그래픽 프로세싱 코어를 포함할 수 있다. 일부 예에서, 제 2 프로세싱 리소스는 그래픽 프로세싱 유닛(GPU)에 대응할 수 있다. 이러한 예에서, 그래픽 프로세싱 코어는 이미지/비디오 및/또는 디지털 신호 기반 데이터를 프로세싱하기 위한 특수 회로 및 로직을 포함할 수 있다. 일부 예에서, 제 2 프로세싱 리소스는 큰 블록의 데이터를 병렬로 프로세싱할 수 있는 복수의 그래픽 프로세싱 코어를 포함할 수 있다. 일부 예에서, 제 2 프로세싱 리소스는 특수한 그래픽 프로세싱 코어로 스트림 및/또는 벡터 프로세싱을 수행할 수 있다. 이해되는 바와 같이, 일부 예에서, 제 2 프로세싱 리소스 및 그의 적어도 하나의 그래픽 프로세싱 코어는 (종종 GPU 상의 범용 컴퓨팅 동작으로 지칭되기도 하는) 그래픽 기반 동작에 대응하지 않을 수 있는 다양한 타입의 동작을 실행하는 데 사용될 수 있다. 일부 예에서, 비 휘발성 메모리의 머신 러닝 데이터 구조에 저장된 적어도 하나의 머신 러닝 모델의 동작은 제 2 프로세싱 리소스의 적어도 하나의 그래픽 프로세싱 코어를 사용하여 데이터세트에 대해 수행될 수 있다.
도면, 특히 도 1a 및 도 1b를 참조하면, 이들 도면은 시스템(100)의 예를 도시하는 블록도를 제공한다. 본원에 개시된 시스템의 예는 퍼스널 컴퓨터, 휴대용 전자 장치(예를 들어, 스마트 폰, 태블릿, 랩탑, 웨어러블 장치 등), 워크스테이션, 스마트 장치, 서버, 서버의 프로세싱 노드, 복수의 서버를 포함한 데이터 센터, 및/또는 임의의 다른 그러한 데이터 프로세싱 장치를 포함한다. 도 1a 및 도 1b의 예에서, 시스템(100)은 제 1 프로세싱 리소스(102), 제 2 프로세싱 리소스(104), 및 제 1 및 제 2 프로세싱 리소스(102, 104)에 결합된 비 휘발성 메모리(108)를 포함한다.
도시된 바와 같이, 제 1 프로세싱 리소스(102)는 적어도 하나의 프로세싱 코어(110)를 포함하고, 제 2 프로세싱 리소스(104)는 적어도 하나의 그래픽 프로세싱 코어(112)를 포함한다. 비 휘발성 메모리(108)는 적어도 하나의 머신 러닝 모델(116)을 포함할 수 있는 머신 러닝 데이터 구조(114)를 저장할 수 있다. 본원에 기술된 예에서, 제 1 프로세싱 리소스(102)는 적어도 하나의 하드웨어 기반 프로세서를 포함할 수 있다. 또한, 프로세싱 리소스(102)는 하나의 프로세서 또는 다수의 프로세서를 포함할 수 있으며, 프로세서는 단일 시스템(100)에서 구성될 수 있거나 또는 로컬 및/또는 원격으로 접속된 다수의 시스템에 걸쳐 분산될 수 있다.
전술한 바와 같이, 제 2 프로세싱 리소스(104)는 적어도 하나의 그래픽 프로세싱 코어(112)를 포함할 수 있다. 일부 예에서, 제 2 프로세싱 리소스(104)는 멀티-코어 그래픽 프로세싱 유닛(GPU)을 포함할 수 있다. 일부 예에서, 그래픽 프로세싱 코어는 (부동 소수점 유닛으로 종종 지칭되기도 하는) 부동 소수점 동작을 수행하기 위한 실행 파이프라인 및 그래픽 프로세싱 코어를 포함할 수 있다.
도 1b에 제공된 예에 더 도시된 바와 같이, 시스템(100)은 프로세싱 엔진(117)을 더 포함할 수 있다. 이러한 예에서, 프로세싱 엔진(117)은 제 1 프로세싱 리소스(102)를 통해 적어도 하나의 러닝 모델(116)의 실행을 조정할 수 있다. 그러한 조정과 동시에, 프로세싱 엔진(117)은 제 2 프로세싱 리소스(104)의 적어도 하나의 그래픽 프로세싱 코어(112)를 이용하여 적어도 하나의 머신 러닝 모델(116)의 동작을 실행할 수 있다. 따라서, 제 1 프로세싱 리소스(102)는 제 2 프로세싱 리소스(104)의 그래픽 프로세싱 코어(112)에 의한 실행을 위해 머신 러닝 모델(116)과 관련된 명령어 발행을 조정할 수 있다. 일부 예에서, 제 1 프로세싱 리소스를 이용하여 적어도 하나의 머신 러닝 모델(116)의 실행을 조정하는 것은 제 2 프로세싱 리소스(104)의 적어도 하나의 그래픽 프로세싱 코어(112)에서 적어도 두 개의 머신 러닝 모델(116)의 실행의 전환을 유발하는 것을 포함할 수 있다.
도 1b의 예시적인 시스템에서, 머신 러닝 데이터 구조(114)는 적어도 하나의 데이터세트(118)를 더 포함할 수 있으며, 적어도 하나의 데이터세트(118)는 적어도 하나의 데이터 서브세트(120)를 포함할 수 있다. 이해되는 바와 같이, 데이터세트는 일반적으로 관련 정보의 집합체를 나타내며, 데이터 서브세트는 일반적으로 그러한 데이터세트의 개별 요소를 나타낸다. 데이터세트는 다양한 타입의 데이터 또는 데이터 타입의 조합에 대응할 수 있다.
예를 들어, 데이터세트는, 비디오 카메라 주변 장치로 캡처되고 머신 러닝 데이터 구조(114)에 저장된 비디오 데이터를 포함할 수 있다. 이 예에서, 그러한 비디오 데이터의 데이터 서브세트는 그러한 비디오 데이터의 타임 슬라이스(time slice)를 포함할 수 있으며, 타임 슬라이스는 비디오 데이터의 시구간의 증분일 수 있다. 예를 들어, 비디오 데이터에 대한 데이터 서브세트는 10 초, 1 초, 500 밀리초(ms), 10 ms, 1 ms 등의 지속 시간을 갖는 타임 슬라이스일 수 있다. 다른 예에서, 데이터세트는 비디오 및 오디오 데이터의 조합과 같은 멀티미디어 데이터에 대응할 수 있다. 이 예에서, 데이터 서브세트는 멀티미디어 데이터와 같은 타임 슬라이스에 대응할 수 있다. 다른 예에서 데이터세트는 다양한 타입의 센서(예를 들어, 온도 센서, 압력 센서 등)로 검출되는 시간 경과에 따른 다양한 환경 측정값(예를 들어, 온도, 압력 등)에 대응할 수 있다. 다른 예에서, 데이터세트는 다양한 타입의 센서(예를 들어, 광 센서, 전파 센서, 자외선 센서 등)로 검출되는 시간 경과에 따른 다양한 타입의 전자기 방사선의 측정값에 대응할 수 있다. 이해되는 바와 같이, 데이터세트는 다양한 다른 타입의 센서 및/또는 장치로 수집되는 다양한 다른 타입의 데이터에 대응할 수 있다.
또한, 비 휘발성 메모리(108)는 머신 러닝 데이터 구조(114)에 저장된 다양한 타입의 데이터를 가리키는 데 사용될 수 있는 머신 러닝 데이터 인덱스(122)를 포함할 수 있어서, 제 1 프로세싱 리소스(102) 및/또는 제 2 프로세싱 리소스(104)는 머신 러닝 데이터 구조(114)에서 데이터의 판독 및/또는 기록을 조정할 수 있다. 이 예에서, 머신 러닝 데이터 인덱스(122)는 머신 러닝 데이터 구조(114) 내에 저장되는 것으로 도시되어 있으나, 다른 예에서, 머신 러닝 데이터 인덱스(122)는 비 휘발성 메모리(108)의 다른 위치에 저장될 수 있다. 이해되는 바와 같이, 일부 예에서, 머신 러닝 데이터 인덱스(122)는 영구 구조 인덱스 및/또는 영구 객체 인덱스일 수 있다. 일부 예에서, 프로세싱 리소스(102, 104) 및 비 휘발성 메모리(108)에 대해 가상 어드레싱 방식이 구현될 수 있음이 이해될 것이다. 이러한 예에서, 머신 러닝 데이터 인덱스(122)는 비 휘발성 메모리(108)의 물리적 메모리 어드레스에 대한 가상 어드레스 변환을 가능하게 할 수 있다.
도 1b에서, 예시적인 시스템(100)은 데이터 입력부(124)를 포함하며, 이 데이터 입력부(124)를 통해 센서, 이미지/비디오 캡처 장치, 오디오 캡처 장치 및/또는 다른 주변 장치 입력 장치와 같은 주변 장치로부터 데이터를 수신할 수 있다. 일부 예에서, 데이터 입력부(124)는 실시간 데이터 스트림의 캡처 및 저장을 가능하게 할 수 있다. 이러한 예에서, 실시간 데이터 스트림은 제 1 프로세싱 리소스(102)에 의해 머신 러닝 데이터 구조(114)에 데이터세트(118)로서 저장될 수 있다. 이러한 실시간 데이터 스트림을 제 1 프로세싱 리소스(102)를 이용하여 저장하는 것과 동시에, 제 2 프로세싱 리소스(104)는 적어도 하나의 그래픽 프로세싱 코어(112)를 이용하여 실시간 데이터의 데이터세트(118)의 데이터 서브세트(120)에 대해 적어도 하나의 머신 러닝 모델(116)의 동작을 실행할 수 있다. 따라서 일부 예는 적어도 하나의 머신 러닝 모델을 이용하여 실시간 데이터 스트림의 실시간 프로세싱을 가능하게 할 수 있다. 이해되는 바와 같이, 실시간 머신 러닝 프로세싱은 다양한 타입의 데이터 프로세싱 동작을 가능하게 할 수 있다. 예를 들어, 머신 러닝 모델은 객체 인식에 대응할 수 있고, 비디오 데이터 스트림은 객체 인식 머신 러닝 모델을 이용하여 분석될 수 있다.
도 1b에 도시된 바와 같이, 비 휘발성 메모리(108)는 내부에 저장된 시스템 메모리(126), 판독 전용 메모리(ROM)(128), 및/또는 저장 장치(130)를 더 포함할 수 있다. 이해되는 바와 같이, 비 휘발성 메모리(108)에서의 이러한 메모리(126-130)의 추가 할당은 제 1 프로세싱 리소스(102) 및 제 2 프로세싱 리소스(104)에 의해 액세스(즉, 공유)될 수 있다. 그러나, 일부 예에서, 메모리(126-130)의 추가 할당은 제 1 프로세싱 리소스(102)와 제 2 프로세싱 리소스(104) 사이에 공유되지 않을 수 있다. 예를 들어, 시스템 메모리(126)는 오직 제 1 프로세싱 리소스(102)에 의해서만 액세스될 수 있다. 이해되는 바와 같이, 비 휘발성 메모리(108)의 다른 예시적인 할당은 다른 예에서 구현될 수 있다.
또한, 시스템(100)은 휘발성 메모리(132)를 포함할 수 있다. 이해되는 바와 같이, 휘발성 메모리(132)는 전원 사이클에 걸쳐 데이터를 유지하지 않는 랜덤 액세스 메모리(RAM) 또는 다른 그러한 메모리를 포함할 수 있다. 도 1b의 예가 비 휘발성 메모리(108)에 저장된 바와 같은 시스템 메모리(126), ROM(128) 및 저장 장치(130)를 도시하지만, 다른 예에서, 그러한 데이터는 휘발성 메모리(132)에 저장될 수 있다. 일부 예에서, 휘발성 메모리는 제 1 프로세싱 리소스(102) 및 제 2 프로세싱 리소스(104)에 의해 액세스 가능한 공유 메모리 부분을 포함할 수 있다. 일부 예에서, 비 휘발성 메모리(108) 및/또는 휘발성 메모리(132)는 제 1 프로세싱 리소스(102) 및 제 2 프로세싱 리소스(104)에 의해 공유되지 않는 메모리 부분을 포함할 수 있다.
도 1a 및 도 1b에 도시되지 않았지만, 사용자 또는 조작자와의 인터페이스를 위해, 일부 예시적인 시스템은 하나 이상의 사용자 입력/출력 장치, 예컨대, 하나 이상의 버튼, 디스플레이, 터치스크린, 스피커 등을 통합하는 사용자 인터페이스를 포함할 수 있다. 따라서, 사용자 인터페이스는 프로세싱 리소스에 데이터를 전달할 수 있고 프로세싱 리소스로부터 데이터를 수신할 수 있다. 예를 들어, 사용자는 사용자 인터페이스를 통해 하나 이상의 선택을 입력할 수 있고, 프로세싱 리소스는 데이터가 사용자 인터페이스의 스크린 또는 다른 출력 장치 상에 출력되게 할 수 있다. 또한, 시스템은 네트워크 인터페이스 장치를 포함할 수 있다. 이해되는 바와 같이, 네트워크 인터페이스 장치는 네트워크 인터페이스 카드와 같은 하나 이상의 통신 네트워크를 통해 데이터를 통신하기 위한 하나 이상의 하드웨어 장치를 포함한다.
또한, 도 1a 및 도 1b의 예시적인 시스템과 같은 예시적인 시스템은 엔진을 포함할 수 있고, 이러한 엔진(예컨대, 프로세싱 엔진(117))은 각각의 엔진의 기능을 구현하기 위한 하드웨어 및 프로그래밍의 임의의 조합일 수 있다. 본원에 기술된 일부 예에서, 하드웨어와 프로그래밍의 조합은 다수의 상이한 방식으로 구현될 수 있다. 예를 들어, 엔진에 대한 프로그래밍은 비 일시적 머신 판독가능 저장 매체에 저장된 프로세서 실행가능한 명령어일 수 있고, 엔진에 대한 하드웨어는 그 명령어를 프로세싱 및 실행하기 위한 프로세싱 리소스를 포함할 수 있다.
일부 예에서, 이러한 엔진을 구현하는 시스템은 명령어를 저장하는 머신 판독가능 저장 매체와 명령어를 프로세싱하는 프로세싱 리소스를 포함할 수 있거나, 또는 머신 판독가능 저장 매체는 시스템 및 프로세싱 리소스에 의해 개별적으로 저장되고 액세스될 수 있다. 일부 예에서, 엔진은 회로로 구현될 수 있다. 또한, 엔진을 구현하는 데 사용되는 프로세싱 리소스는 적어도 하나의 중앙 프로세싱 유닛(CPU), 그래픽 프로세싱 유닛(GPU), 주문형 집적 회로(ASIC), 특수 제어기(예를 들어, 메모리 제어기), 및/또는 데이터 프로세싱을 위해 구현될 수 있는 다른 타입의 로직 컴포넌트를 포함할 수 있다.
도 2는 예시적인 시스템(200)을 도시하는 블록도를 제공한다. 이 예에서, 시스템(200)은 적어도 하나의 프로세싱 리소스(202) 및 머신 판독가능 저장 매체(204)를 포함한다. 머신 판독가능 저장 매체(204)는 예시적인 시스템(100)의 메인 저장 장치뿐만 아니라, 임의의 보충적인 레벨의 메모리, 가령, 캐시 메모리, 비 휘발성 또는 백업 메모리(예컨대, 프로그램가능 메모리 또는 플래시 메모리), 판독 전용 메모리 등을 포함하는 랜덤 액세스 메모리(RAM) 장치를 나타낼 수 있다. 또한, 머신 판독가능 저장 매체(204)는 다른 곳에 물리적으로 위치한 메모리 저장 장치, 예를 들어, 마이크로프로세서 내의 임의의 캐시 메모리뿐만 아니라, 가상 메모리로서 사용되는, 예를 들어, 대용량 저장 장치 상에 저장되거나 또는 예시적인 시스템(200)과 통신하는 다른 시스템 상에 저장되는 임의의 저장 장치 용량을 포함하는 것으로 간주될 수 있다. 또한, 머신 판독가능 저장 매체(204)는 비 일시적일 수 있다. 일부 예에서, 프로세싱 리소스(202) 및 머신 판독가능 저장 매체(204)는 적어도 하나의 서버에 배치된 프로세싱 유닛 및 메모리 장치에 대응할 수 있다. 다른 예에서, 프로세싱 리소스(202) 및 머신 판독가능 저장 매체는 시스템 온 칩(system-on-a-chip) 장치에 배치될 수 있다.
또한, 머신 판독가능 저장 매체(204)는 프로세싱 리소스(202)에 의해 실행가능한 것일 수 있는 명령어가 인코딩될 수 있고/있거나 그 명령어를 저장할 수 있으며, 이 매체에서 명령어의 실행은 프로세싱 리소스(202) 및/또는 시스템(200)이 본원에 기술된 기능, 프로세스, 및/또는 동작의 시퀀스를 수행하게 할 수 있다. 도 2의 예에서, 머신 판독가능 저장 매체(204)는 제 1 프로세싱 리소스를 이용하여 머신 러닝 데이터 구조에 액세스하기 위한 명령어(206)를 포함한다. 또한, 머신 판독가능 저장 매체(204)는 제 1 프로세싱 리소스를 이용하여 머신 러닝 데이터 구조에 저장된 데이터세트에 대해 실행될, 머신 러닝 데이터 구조에 저장된 머신 러닝 모델의 세트를 결정하기 위한 명령어(208)를 포함한다. 또한, 머신 판독가능 저장 매체(204)는 적어도 하나의 그래픽 프로세싱 코어를 구비한 제 2 프로세싱 리소스를 이용하여 머신 러닝 데이터 구조에 액세스하기 위한 명령어(210)를 포함한다. 머신 판독가능 저장 매체(204)는 또한 제 2 프로세싱 리소스의 적어도 하나의 그래픽 프로세싱 코어를 이용하여 머신 러닝 데이터 구조에 저장된 데이터세트에 대해 머신 러닝 모델의 세트의 동작을 실행하여, 그 세트의 각각의 머신 러닝 모델에 대한 제각기의 모델 결과를 생성하기 위한 명령어(212)를 포함한다.
도 3은 예시적인 시스템(300)의 일부 컴포넌트를 도시하는 블록도를 제공한다. 전술한 바와 같이, 일부 예에서, 프로세싱 리소스는 중앙 프로세싱 유닛(CPU)을 포함하며, 이 예에서, 시스템(300)은 적어도 하나의 코어(304)를 구비한 CPU(302)를 포함한다. 일부 예에서, CPU(302)는 하나의 코어(304)를 포함할 수 있고, 다른 예에서 CPU(302)는 (듀얼 코어 구성으로 지칭되는) 2 개의 코어(304), (4 중 코어 구성으로 지칭되는) 4 개의 코어 등을 포함할 수 있다. 또한, 시스템(300)은 적어도 하나의 그래픽 프로세싱 코어(308)를 구비한 그래픽 프로세싱 유닛(GPU)(306)을 포함한다. 이해되는 바와 같이, 일부 예에서, GPU(306)는 2 개의 그래픽 프로세싱 코어, 4 개의 그래픽 프로세싱 코어, 8 개의 그래픽 프로세싱 코어, 16 개의 그래픽 프로세싱 코어 등을 포함할 수 있다. 이 예에서 CPU(302) 및 GPU(306)는 별개의 컴포넌트로서 도시되어 있지만, 일부 예에서 CPU의 범용 프로세싱 코어 및 GPU의 그래픽 프로세싱 코어가 단일 컴포넌트에 통합될 수 있음이 이해될 것이다. 따라서, 이들 예에서, 제 1 프로세싱 리소스는 범용 프로세싱 코어를 나타낼 수 있고, 제 2 프로세싱 리소스는 단일 컴포넌트의 그래픽 프로세싱 코어를 나타낼 수 있다.
전술한 바와 같이, 그래픽 프로세싱 코어는 부동 소수점 동작을 실행하기 위한 로직 및 관련 회로를 포함할 수 있다. 또한, 그래픽 프로세싱 유닛(306)은 복수의 그래픽 프로세싱 코어 및 관련 명령어 실행 파이프라인을 포함할 수 있어서, 그래픽 프로세싱 유닛(306)은 복수의 동작을 병렬로 실행할 수 있다. 병렬 프로세싱 아키텍처의 예는 SIMD(single instruction multiple data) 프로세싱 아키텍처 또는 MIMD (multiple instruction multiple data) 프로세싱 아키텍처를 구비한다. 일부 예에서, GPU(306)는 다수의 상이한 데이터 소스에 대해 부동 소수점 동작을 동시에 수행하는 데 사용될 수 있는 벡터 프로세싱을 수행할 수 있는 복수의 그래픽 프로세싱 코어를 포함할 수 있다.
도시된 바와 같이, CPU(302) 및 GPU(306)는 캐시 메모리(310)를 더 포함할 수 있다. 이해되는 바와 같이, CPU(302) 및 GPU(306)에 도시된 캐시 메모리는 전용 메모리(즉, 공유되지 않은 메모리)일 수 있으며, 이러한 캐시 메모리(310)는 명령어 캐시, 데이터 캐시, 및/또는 변환 룩어사이드 버퍼(translation look aside buffer)를 포함할 수 있다. 또한, CPU(302) 및 GPU(306)가 공유 캐시 메모리(312)에 직접 접속될 수 있어서, CPU(302) 및 GPU는 공유 캐시 메모리(312)에 동시에 액세스할 수 있다. 이해되는 바와 같이, 일부 예에서, CPU(302)는 GPU가 머신 러닝 모델의 동작을 실행하는 것과 동시에 머신 러닝 모델의 동작과 관련된 명령 및 데이터를 인출(fetch)할 수 있다. 따라서, 일부 예에서, 머신 러닝 모델의 실행을 조정하는 것은 GPU(306)가 머신 러닝 모델의 동작을 실행하는 동안 CPU(302)를 이용하여 머신 러닝 모델에 대응하는 명령어 및/또는 데이터를 인출하는 것을 포함할 수 있다.
또한, CPU(302) 및 GPU(306)는 메모리 버스(316) 및 메모리 제어기(318)를 통해 비 휘발성 메모리(314)에 접속된다. 이해되는 바와 같이, 메모리 제어기(318)는 비 휘발성 메모리(314)에 대한 데이터의 판독 및 기록을 가능하게 할 수 있다. 이 예에서, 메모리 제어기(318)는 별개의 컴포넌트로 도시되어 있지만, 일부 예에서, 메모리 제어기(318)는 비 휘발성 메모리 모듈 상에 위치할 수 있거나 또는 심지어는 다른 로직 컴포넌트, 예컨대, CPU(302) 및/또는 GPU(306) 내에 통합될 수 있다. 도시된 바와 같이, 비 휘발성 메모리는 CPU(302) 및 GPU(306)에 대한 공유 메모리 공간인 머신 러닝 데이터 구조(320)를 포함할 수 있다. 도시되지는 않았지만, 비 휘발성 메모리(314)는 내부에 저장된 다른 데이터 구조를 가질 수 있으며, 여기서 그러한 다른 데이터 구조는 CPU(302) 및 GPU(306)에 대한 공유 메모리 공간일 수 있고 및/또는 그러한 다른 데이터 구조는 CPU(302) 또는 GPU(306)에 대한 전용 메모리 공간일 수 있다.
또한, 일부 예에서, CPU(302) 및 GPU(306)는 추가의 메모리 제어기(324) 및 메모리 버스(316)를 통해 추가의 메모리 리소스(322)(예를 들어, RAM, 하드드라이브 등)에 접속될 수 있다. 이해되는 바와 같이, 추가 메모리 리소스(322)는 CPU(302) 또는 GPU(306)에 대한 전용 메모리 공간뿐만 아니라, CPU(302) 및 GPU(306)에 대한 다른 공유 메모리 공간을 가질 수 있다.
이해되는 바와 같이, CPU(302)의 코어(304) 및 GPU(306)의 그래픽 프로세싱 코어(308)는 인출-디코딩-실행 사이클이라고 지칭될 수도 있는 명령어 사이클을 구현하기 위한 동작을 수행할 수 있다. 본원에 사용되는 바와 같이, 프로세싱 명령어는 명령어의 인출, 디코딩 및 실행을 수행하는 것을 나타낼 수 있다. 유사하게, 실행 동작은 명령어의 인출, 디코딩 및 실행을 수행하는 것을 나타낼 수 있다. 예를 들어, 그래픽 프로세싱 코어(308)는 그래픽 프로세싱 코어(308)가 데이터세트에 대한 머신 러닝 모델에 대응하는 명령어를 인출, 디코딩 및 실행하는 경우, 머신 러닝 모델의 동작을 실행하는 것으로 기술될 수 있다.
도 4 내지 도 7은 예시적인 프로세스 및 방법을 수행하기 위한 예시적인 시스템 및/또는 그의 프로세싱 리소스에 의해 수행될 수 있는 예시적인 동작 시퀀스를 제공하는 흐름도를 제공한다. 일부 예에서, 흐름도에 포함된 동작은 (예컨대, 도 2의 예시적인 머신 판독가능 저장 매체(204)와 같은) 메모리 리소스에서, 시스템(예컨대, 도 1a 및 도 1b의 시스템(100), 도 2의 시스템(200), 도 3의 시스템(300))으로 하여금 명령어에 대응하는 동작을 수행하게 하도록 프로세싱 리소스에 의해 실행가능한 것일 수 있는 명령어의 형태로 구현될 수 있다. 또한, 도 4 내지 도 7에 제공된 예는 시스템, 머신 판독가능 저장 매체, 프로세스 및/또는 방법에서 구현될 수 있다. 일부 예에서, 도 4-7의 흐름도에 개시된 예시적인 프로세스 및/또는 방법은 시스템에서 구현된 하나 이상의 엔진에 의해 수행될 수 있다.
이제, 도 4를 참조하면, 도 4는 일 예의 시스템에 의해 수행될 수 있는 일 예의 동작의 시퀀스를 나타내는 흐름도(400)를 제공한다. 도시된 바와 같이, 시스템은 제 1 프로세싱 리소스를 이용하여 비 휘발성 메모리의 공유 메모리 공간에 저장된 머신 러닝 데이터 구조에 액세스할 수 있다(블록(402)). 또한, 시스템은 적어도 하나의 그래픽 프로세싱 코어를 구비한 제 2 프로세싱 리소스를 이용하여 공유 메모리 공간에 저장된 머신 러닝 데이터 구조에 액세스할 수 있다(블록(404)). 시스템은 제 2 프로세싱 리소스의 적어도 하나의 그래픽 프로세싱 코어를 이용하여 머신 러닝 데이터 구조에 저장된 데이터세트에 대해 머신 러닝 데이터 구조에 저장된 적어도 하나의 머신 러닝 모델의 동작을 실행할 수 있다(블록(406)).
따라서, 도 4의 예에 의해 도시된 바와 같이, 머신 러닝 데이터 구조의 공유 메모리 공간은 제 1 프로세싱 리소스 및 제 2 프로세싱 리소스에 의한 그것의 동시적인 액세스를 가능하게 할 수 있다. 또한, 제 2 프로세싱 리소스의 적어도 하나의 그래픽 프로세싱 코어를 이용하여 머신 러닝 모델의 동작을 실행할 수 있으며, 이는 CPU 코어와 같은 범용 프로세싱 코어를 이용한 실행과 비교할 때 향상된 프로세싱 효율을 가능하게 할 수 있다. 또한, 머신 러닝 모델에 대한 공유 액세스와 함께 비 휘발성 메모리에 머신 러닝 모델을 저장하는 것은, 저장 위치에 머신 러닝 모델을 저장하고 프로세싱을 위해 그러한 머신 러닝 모델을 휘발성 메모리로 로딩하는 것과 비교할 때, 프로세싱 효율을 향상시킬 수 있다.
도 5는 일 예의 시스템에 의해 수행될 수 있는 일 예의 동작의 시퀀스를 나타내는 흐름도(450)를 제공한다. 이 예에서, 시스템은 제 1 프로세싱 리소스를 이용하여 비 휘발성 메모리에 저장된 머신 러닝 데이터 구조에 저장된 데이터세트에 대해 실행될 머신 러닝 모델의 세트를 결정할 수 있다(블록(452)). 일부 예에서, 비 휘발성 메모리의 머신 러닝 데이터 구조는 복수의 머신 러닝 모델을 저장할 수 있다. 이러한 예에서, 시스템은 분석될 데이터세트에 대해 실행될 적어도 하나의 머신 러닝 모델의 세트를 결정할 수 있다. 예를 들어, 시스템은 데이터세트의 데이터의 타입에 적어도 부분적으로 기초하여 실행될 머신 러닝 모델의 세트를 결정할 수 있다. 예를 들어, 데이터세트가 멀티미디어 데이터(예컨대, 비디오 데이터 및 오디오 데이터)에 대응하는 경우, 시스템은 특정의 머신 러닝 모델의 세트를 선택할 수 있다. 또 다른 예로, 데이터세트가 센서 데이터(예컨대, 측정된 온도, 측정된 전자기 방사선의 강도 등)에 대응하는 경우, 시스템은 특정의 머신 러닝 모델의 세트를 선택할 수 있다. 이해되는 바와 같이, 시스템은 머신 러닝 분석을 위해 시스템이 수신할 수 있는 각 타입의 데이터에 대한 적어도 하나의 머신 러닝 모델을 저장할 수 있다.
데이터세트의 경우, 시스템은 제 2 프로세싱 리소스의 적어도 하나의 그래픽 프로세싱 코어를 이용하여 머신 러닝 데이터 구조에 저장된 데이터세트에 대해 머신 러닝 모델의 세트 중 각각의 머신 러닝 모델의 동작을 실행하여, 그 세트의 각 머신 러닝 모델에 대한 각각의 모델 결과를 생성할 수 있다(블록(454)). 이들 예에서, 머신 러닝 모델의 세트가 하나 초과의 머신 러닝 모델을 포함하면, 제 2 프로세싱 리소스의 그래픽 프로세싱 코어는 그 세트 내의 머신 러닝 모델 사이에서 실행을 전환할 수 있다는 것이 이해될 것이다. 그 세트의 각 머신 러닝 모델에 대한 각각의 모델 결과에 기초하여, 시스템은 머신 러닝 데이터 구조에 저장된 적어도 하나의 머신 러닝 모델을 업데이트할 수 있다(블록(456)).
따라서, 도 5에 제공된 예와 유사한 일부 예에서, 머신 러닝 모델은 특정 데이터세트의 분석으로부터 생성된 모델 결과에 기초하여 업데이트될 수 있다. 이해되는 바와 같이, 특정 데이터세트가 트레이닝 데이터세트에 대응하는 경우, 일부 머신 러닝 모델은 조정될 수 있고, 그에 따라, 그러한 조정된 머신 러닝 모델의 파라미터는 더욱 개선되어 머신 러닝 모델의 실행에서 개선된 정확성 및 효율성을 가능하게 할 수 있다.
도 6은 일 예의 시스템에 의해 수행될 수 있는 일 예의 동작의 시퀀스를 나타내는 흐름도(500)를 제공한다. 데이터세트에 대해 실행될 머신 러닝 모델의 세트(블록(502))에 대해, 시스템은 제 2 프로세싱 리소스의 그래픽 프로세싱 코어를 이용하여 데이터세트의 각각의 데이터 서브세트에 대해 그 세트의 각각의 머신 러닝 모델을 실행하여, 각각의 데이터 서브세트에 대한 모델 결과를 생성할 수 있다(블록(504)). 각각의 데이터 서브세트에 대한 각각의 머신 러닝 모델의 실행 후에, 시스템은 제 1 프로세싱 리소스를 이용하여 실행될 임의의 추가의 머신 러닝 모델이 남아 있는지 여부를 결정할 수 있다(블록(506)). 그 세트의 추가적인 머신 러닝 모델이 각각의 데이터 서브세트에 대해 실행될 것이라는 것을 결정하는 것에 응답하여(블록(506)의 "Y" 분기), 시스템은 그 세트 중 실행될 다음 머신 러닝 모델로 전환하고(블록(508)), 각각의 머신 러닝 모델로서 그 세트 중 다음 머신 러닝 모델의 실행을 진행한다(블록(506)).
시스템이 제 1 프로세싱 리소스를 이용하여, 그 세트의 모든 머신 러닝 모델이 각각의 데이터 서브세트에 대해 실행되었다고 결정하면(블록(506)의 "N" 분기), 시스템은 제 1 프로세싱 리소스를 이용하여, 머신 러닝 모델의 세트를 이용한 분석을 위한 임의의 데이터 서브세트가 남아 있는지 여부를 결정한다(블록(510)). 데이터세트에 대해 데이터의 서브세트가 남아 있는 경우, 시스템은 머신 러닝 모델의 세트를 이용하여 데이터의 다음 서브세트를 분석하는 것으로 진행한다(블록(512)). 일부 예에서, 시스템은 제 1 프로세싱 리소스를 이용하여 데이터의 각각의 서브세트에 대해 생성된 각각의 모델 결과를 프로세싱할 수 있다(블록(514)).
이들 예에서, 시스템은 CPU와 같은 제 1 프로세싱 리소스 및 그래픽 프로세싱 코어를 구비한 제 2 프로세싱 리소스를 포함할 수 있다는 것이 이해될 것이다. 따라서, 실행될 머신 러닝 모델의 세트에 대해, 제 1 프로세싱 리소스는 각각의 데이터 서브세트에 대해 그 세트의 실행을 조정할 수 있다. 이러한 예에서, 제 1 프로세싱 리소스는 제 2 프로세싱 리소스의 그래픽 프로세싱 코어를 이용하여 그 세트의 각 머신 러닝 모델의 실행으로 전환하는 것을 가능하게 할 수 있다.
예를 들어, 머신 러닝 모델의 세트는 제 1 머신 러닝 모델, 제 2 머신 러닝 모델, 및 제 3 머신 러닝 모델을 포함한다. 이 예에서, 데이터세트는 제 1 데이터 서브세트, 제 2 데이터 서브세트, 및 제 3 데이터 서브세트를 포함할 수 있다. 이해되는 바와 같이, 데이터세트 및 머신 러닝 모델의 세트는 비 휘발성 메모리에 저장된 머신 러닝 데이터 구조에 저장될 수 있으며, 머신 러닝 데이터 구조는 제 1 프로세싱 리소스 및 제 2 프로세싱 리소스의 공유 메모리 공간이다. 제 2 프로세싱 리소스는 복수의 그래픽 프로세싱 코어를 포함할 수 있다. 이러한 예에서, 제 1 프로세싱 리소스는 제 2 프로세싱 리소스의 그래픽 프로세싱 코어를 이용하여 제 1 머신 러닝 모델의 동작의 실행을 조정할 수 있다. 그래픽 프로세싱 코어는 제 1 데이터 서브세트에 대해 제 1 머신 러닝 모델의 동작을 실행하여, 제 1 데이터 서브세트에 대한 제 1 모델 결과를 생성할 수 있다. 제 1 데이터 서브세트에 대한 제 1 모델 결과는 제 2 프로세싱 리소스에 의해 머신 러닝 데이터 구조에 저장될 수 있다.
제 1 머신 러닝 모델의 실행이 완료되면, 제 1 프로세싱 리소스는 제 2 머신 러닝 모델의 실행 전환으로 그래픽 프로세싱 코어를 조정할 수 있다. 제 2 프로세싱 리소스의 그래픽 프로세싱 코어는 제 1 데이터 서브세트에 대해 제 2 머신 러닝 모델의 동작을 실행하여, 제 1 데이터 서브세트에 대한 제 2 모델 결과를 생성할 수 있다. 제 1 데이터 서브세트에 대한 제 2 모델 결과는 제 2 프로세싱 리소스에 의해 머신 러닝 데이터 구조에 저장될 수 있다. 제 2 머신 러닝 모델의 실행이 완료되면, 제 1 프로세싱 리소스는 제 3 머신 러닝 모델로의 실행 전환을 조정할 수 있다. 제 2 프로세싱 리소스의 그래픽 프로세싱 코어는 제 1 데이터 서브세트에 대해 제 3 머신 러닝 모델의 동작을 실행하여, 제 1 데이터 서브세트에 대한 제 3 모델 결과를 생성할 수 있다. 제 1 데이터 서브세트에 대한 제 3 모델 결과는 제 2 프로세싱 리소스에 의해 머신 러닝 데이터 구조에 저장될 수 있다.
제 1 데이터 서브세트에 대해 제 3 머신 러닝 모델의 실행이 완료되면, 제 1 프로세싱 리소스는 제 2 데이터 서브세트에 대한 제 1 머신 러닝 모델로의 실행 전환을 조정할 수 있다. 제 2 프로세싱 리소스의 그래픽 프로세싱 코어는 제 2 데이터 서브세트에 대해 제 1 머신 러닝 모델의 동작을 실행하여, 제 2 데이터 서브세트에 대한 제 1 모델 결과를 생성할 수 있다. 제 2 데이터 서브세트에 대한 제 1 모델 결과는 머신 러닝 데이터 구조에 저장될 수 있다. 이해되는 바와 같이, 본 예와 관련하여 기술된 동작은 나머지 머신 러닝 모델 및 제 3 데이터 서브세트에 대해 수행될 수 있다.
이 예는, 머신 러닝 모델 간 전환이 실행 중 그래픽 프로세싱 코어의 전용 메모리 공간 내로의 각 머신 러닝 모델의 로딩을 필요로 할 수 있는 시스템과 비교할 때, 머신 러닝 구조의 공유 메모리 공간이 상이한 머신 러닝 모델 실행 간 전환에서 낮은 대기 시간을 가능하게 한다는 것을 나타낸다. 또한, 비 휘발성 메모리는 비 휘발성 메모리(예를 들어, 저장 클래스 메모리)에서 직접 명령어 및 데이터의 프로세싱을 가능하게 하기에 충분히 높은 판독/기록 속도를 가질 수 있기 때문에, 예는, 실행될 각 모델을 휘발성 메모리에 대해 순차적으로 로딩/언로딩할 수 있는 시스템과 비교할 때, 실행될 머신 러닝 모델 간의 전환과 관련된 시간을 감소시킬 수 있다. 또한, 비 휘발성 메모리는 전원 사이클에 걸쳐 데이터를 지속시키기 때문에, 머신 러닝 모델 및 관련 파라미터는 비 휘발성 메모리에 저장될 수 있다.
따라서, 일부 예에서, 데이터 및 명령어의 직접 프로세싱을 지원하지 않는 판독/기록 속도를 갖는 저장 메모리에 각 모델이 저장되는 시스템과 비교할 때, 머신 러닝 모델에 대한 액세스 및 실행 속도가 증가될 수 있다. 이러한 시스템에서, 각 모델은 RAM과 같은 CPU에 의해 직접 액세스될 수 있는 메모리에 로딩되고, CPU에 의해 액세스가능한 메모리에 로딩한 후, 그 모델은 그래픽 프로세싱 코어가 액세스할 수 있는 전용 메모리에 로딩될 수 있다. 따라서, 이해되는 바와 같이, 고속 액세스의 비 휘발성 메모리에서 머신 러닝 데이터 구조의 직접 및 공유 액세스 능력은 머신 러닝 모델을 실행하는 것과 관련된 로딩 및 액세스 시간을 감소시킨다. 복수의 머신 러닝 모델이 전환될 수 있는 예에서, 고속 액세스의 비 휘발성 메모리에서 머신 러닝 데이터 구조의 직접 및 공유 액세스 능력은 머신 러닝 모델 간의 전환과 관련된 시간을 더 감소시킬 수 있다. 결과적으로, 머신 러닝 모델 실행과 관련된 전력 소비가 감소될 수 있다.
이해되는 바와 같이, 감소된 프로세싱 시간 및 증가된 프로세싱 효율은 머신 러닝 모델을 이용하여 실시간 데이터의 프로세싱을 가능하게 할 수 있으며, 이러한 프로세싱으로부터의 모델 결과는 동시에 추가로 프로세싱될 수 있다. 도 7은 일 예의 시스템에 의해 수행될 수 있는 일 예의 동작의 시퀀스를 나타내는 흐름도(550)를 제공한다. 이 예에서, 시스템은 실시간 데이터 스트림을 시스템의 비 휘발성 메모리의 머신 러닝 데이터 구조에 저장할 수 있다(블록(552)). 이 예에서, 머신 러닝 데이터 구조는 제 1 프로세싱 리소스 및 제 2 프로세싱 리소스에 대한 공유 메모리 공간일 수 있으며, 제 2 프로세싱 리소스는 적어도 하나의 그래픽 프로세싱 코어를 포함할 수 있다. 또한, 제 1 프로세싱 리소스 및 제 2 프로세싱 리소스는 명령어 및 데이터를 비 휘발성 메모리를 이용하여 직접 프로세싱할 수 있다. 예를 들어, 비 휘발성 메모리는 저장 클래스 메모리의 비 휘발성 메모리일 수 있다. 또한, 제 1 프로세싱 리소스는 시스템이 본원에 기술된 추가적인 동작을 수행하는 것과 동시에, 머신 러닝 데이터 구조에 실시간 데이터 스트림을 지속적으로 저장한다는 것이 이해될 것이다.
이 예에서, 시스템은 제 2 프로세싱 리소스의 그래픽 프로세싱 코어를 이용하여, 데이터 스트림의 각각의 타임 슬라이스에 대해 머신 러닝 모델의 세트 중 제 1 머신 러닝 모델의 동작을 실행하여, 각각의 타임 슬라이스에 대한 제 1 모델 결과를 생성한다(블록(554)). 전술한 바와 같이, 머신 러닝 모델의 동작은 제 1 프로세싱 리소스를 이용하여 실시간 데이터 스트림의 저장과 동시에, 제 2 프로세싱 리소스의 그래픽 프로세싱 코어에 의해 실행될 수 있다. 데이터 스트림의 각각의 타임 슬라이스에 대해 제 1 머신 러닝 모델의 실행이 완료되면, 시스템은 제 1 프로세싱 리소스를 이용하여, 실행될 제 2 머신 러닝 모델로의 전환을 조정할 수 있다(블록(556)). 이 시스템은 제 2 프로세싱 리소스의 그래픽 프로세싱 코어를 이용하여, 데이터 스트림의 각각의 타임 슬라이스에 대해 머신 러닝 모델의 세트 중 제 2 머신 러닝 모델의 동작을 실행하여, 데이터의 각각의 타임 슬라이스에 대한 제 2 모델 결과를 생성한다(블록(558)).
이 예에서, 시스템은 제 1 및 제 2 머신 러닝 모델을 이용하여 실시간 데이터를 지속적으로 프로세싱할 수 있다. 따라서, 데이터 스트림의 각각의 타임 슬라이스에 대해 제 2 머신 러닝 모델의 동작을 실행한 후에, 시스템은 다음의 각각의 타임 슬라이스로 전환하고(블록(560)), 시스템은 블록(554)과 관련하여 기술된 동작을 데이터 스트림의 다음의 각각의 타임 슬라이스에 대해 반복한다.
따라서, 이 예에서 기술된 바와 같이, 제 1 프로세싱 리소스 및 제 2 프로세싱 리소스는 머신 러닝 데이터 구조의 공유 메모리 공간에 동시에 액세스할 수 있다. 도시된 바와 같이, 제 1 프로세싱 리소스는, 제 2 프로세싱 리소스가 머신 러닝 모델의 세트을 이용하여 실시간 데이터 스트림을 프로세싱하는 것과 동시에, 머신 러닝 데이터 구조에 실시간 데이터 스트림의 데이터를 기록할 수 있다.
도 7에 도시된 예와 유사한 예에서, 데이터 스트림의 타임 슬라이스에 대해 생성된 모델 결과에 적어도 부분적으로 기초하여 시스템에 의해 추가 동작이 수행될 수 있음이 이해될 것이다. 예를 들어, 실시간 데이터 스트림을 프로세싱할 수 있는 머신 러닝 모델은 실시간 비디오 스트림에서의 객체 인식에 대응할 수 있다. 이러한 예에서, 모델 결과에 기초하여, 시스템은 모델 결과에 적어도 부분적으로 기초하여 실시간 비디오 스트림을 출력할 수 있다. 예를 들어, 머신 러닝 모델은 얼굴 인식 및/또는 실시간 비디오 스트림의 분석에 대응할 수 있다. 이러한 예에서, 시스템은, 출력 중에 얼굴이 강조될 수 있도록, 모델 결과에 기초하여 출력 중에 실시간 비디오 스트림을 변경할 수 있다. 다른 예에서, 시스템은 모델 결과에 기초하여 입력 주변 장치를 제어할 수 있다. 예를 들어, 시스템은 접속된 비디오 캡처 장치로 하여금 실시간 비디오 스트림에서 식별된 객체의 움직임에 적어도 부분적으로 기초하여 이동하게 할 수 있다. 다른 예로서, 시스템은 이동 가능한 장치일 수 있고, 이동 가능한 장치는 모델 결과에 적어도 부분적으로 기초하여 (장치의 이동을 제어하기 위해) 모터를 작동시킬 수 있다.
따라서, 본원에 기술된 비 일시적인 머신 판독가능 저장 매체에 저장된 실행가능한 명령어로 구현되는 시스템, 프로세스, 방법, 및/또는 컴퓨터 프로그램 제품의 예는 머신 러닝 모델을 이용하여 데이터의 프로세싱을 가능하게 할 수 있다. 본원에 기술된 예에서, 머신 러닝 데이터 구조는 비 휘발성 메모리에 구현될 수 있으며, 비 휘발성 메모리는 명령어 및 데이터의 직접 프로세싱을 지원하는 액세스 속도를 가질 수 있으며, 머신 러닝 데이터 구조는 (CPU와 같은) 제 1 프로세싱 리소스 및 (GPU와 같은) 적어도 하나의 그래픽 프로세싱 코어를 갖는 제 2 프로세싱 리소스에 대한 공유 메모리 공간일 수 있다.
머신 러닝 모델이 비 휘발성 메모리의 공유 메모리 공간에 직접 저장되고 실행되는 예에서, 머신 러닝 모델의 로딩 및 실행 전환과 관련된 프로세싱 비효율이 감소될 수 있다. 또한, 그래픽 프로세싱 코어를 이용하여 비 휘발성 메모리에서 머신 러닝 모델을 직접 실행하면, 범용 프로세싱 코어를 이용하여 실행하는 것과 비교하여 머신 러닝 모델을 실행하는 것과 관련된 프로세싱 속도가 향상될 수 있다. 또한, 공유 메모리 공간에서의 머신 러닝 모델의 직접 실행은, 상이한 프로세싱 리소스(예를 들어, 제 1 프로세싱 리소스 및 제 2 프로세싱 리소스) 사이의 프로세싱 일관성을 개선하여 프로세싱 시간을 감소시킬 수 있다. 또한, 저전력 프로세싱 시스템에서, 비 휘발성 메모리의 공유 메모리 공간에서 머신 러닝 모델을 이용하여 데이터를 직접 프로세싱하면, 머신 러닝 모델이 저장 장치로부터 메인 메모리(예를 들어, 휘발성 RAM)에 로딩되고 그 후 메인 메모리로부터 전용 메모리로 로딩되는 시스템과 비교하여 전력 소비가 감소될 수 있다.
또한, 본원에 다양한 예가 기술되지만, 요소 및/또는 요소의 조합은 본원에 의해 고려되는 다양한 예를 위해 결합 및/또는 제거될 수 있다. 예를 들어, 도 4-7의 흐름도에 제공되는 예시적인 동작은 순차적으로, 동시에, 또는 다른 순서로 수행될 수 있다. 또한, 흐름도의 일부 예시적인 동작은 다른 흐름도에 추가될 수 있고, 및/또는 일부 예시적인 동작은 흐름도에서 제거될 수 있다. 또한, 일부 예에서, 도 1a 내지 도 3의 예시적인 시스템의 다양한 컴포넌트가 제거될 수 있고/있거나 다른 컴포넌트가 추가될 수 있다. 마찬가지로, 일부 예에서, 도 2의 예시적인 메모리 및/또는 머신 판독가능 저장 매체의 다양한 명령어가 제거될 수 있고/있거나, (도 4-7의 예시적인 동작에 대응하는 명령어와 같은) 다른 명령어가 추가될 수 있다.
전술한 설명은 기술된 원리의 예를 설명하고 기술하기 위해 제시되었다. 이 설명은 배타적이거나 공개된 정확한 형태로 예를 국한할려는 의도는 아니다. 이 설명에 비추어 많은 변경 및 변형이 가능하다.

Claims (16)

  1. 시스템으로서,
    적어도 하나의 머신 러닝 모델을 포함하는 머신 러닝 데이터 구조를 저장하는 비 휘발성 메모리와;
    상기 비 휘발성 메모리에 결합되어, 상기 머신 러닝 데이터 구조에 액세스하는 제 1 프로세싱 리소스와;
    적어도 하나의 그래픽 프로세싱 코어를 구비한 제 2 프로세싱 리소스와;
    프로세싱 엔진
    을 포함하되,
    상기 제 2 프로세싱 리소스는 상기 비 휘발성 메모리에 결합되어 상기 머신 러닝 데이터 구조에 액세스함으로써, 상기 머신 러닝 데이터 구조는 상기 제 1 프로세싱 리소스 및 상기 제 2 프로세싱 리소스의 공유 메모리 공간이 되고,
    상기 프로세싱 엔진은,
    상기 제 2 프로세싱 리소스의 상기 적어도 하나의 그래픽 프로세싱 코어를 이용하여, 상기 적어도 하나의 머신 러닝 모델의 동작을 실행하는 동안, 상기 제 1 프로세싱 리소스를 이용하여, 상기 적어도 하나의 머신 러닝 모델에 대응하는 명령 및 데이터 중 하나 이상을 인출함으로써 상기 적어도 하나의 머신 러닝 모델의 실행을 조정(coordinate)하는
    시스템.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 제 1 프로세싱 리소스에 결합된 실시간 데이터 입력부를 더 포함하되,
    상기 프로세싱 엔진은 또한,
    상기 제 1 프로세싱 리소스를 이용하여, 상기 비 휘발성 메모리의 상기 머신 러닝 데이터 구조에 상기 실시간 데이터 입력부로부터 수신된 실시간 데이터 스트림을 저장하고,
    상기 적어도 하나의 그래픽 프로세싱 코어를 이용하여, 상기 실시간 데이터 스트림의 서브세트에 대해 상기 적어도 하나의 머신 러닝 모델의 동작을 실행하여, 상기 실시간 데이터 스트림에 대한 모델 결과를 생성하는
    시스템.
  4. 제 3 항에 있어서,
    상기 실시간 데이터 스트림은 실시간 비디오 데이터 스트림이고, 상기 실시간 데이터 스트림의 상기 서브세트는 상기 실시간 비디오 데이터 스트림의 타임 슬라이스에 대응하고, 상기 적어도 하나의 머신 러닝 모델은 객체 인식 머신 러닝 모델을 포함하는
    시스템.
  5. 제 1 항에 있어서,
    상기 머신 러닝 데이터 구조는 적어도 두 개의 머신 러닝 모델을 구비하고,
    상기 프로세싱 엔진은 또한,
    상기 제 2 프로세싱 리소스 상에서 상기 적어도 하나의 그래픽 프로세싱 코어를 이용한 상기 적어도 두 개의 머신 러닝 모델의 실행 및 전환을 상기 제 1 프로세싱 리소스를 이용하여 조정하는
    시스템.
  6. 제 1 항에 있어서,
    상기 머신 러닝 데이터 구조는 머신 러닝 모델의 세트를 저장하고,
    상기 프로세싱 엔진은 또한,
    상기 제 1 프로세싱 리소스를 이용하여, 상기 머신 러닝 데이터 구조에 실시간 데이터 스트림을 저장하고;
    상기 제 1 프로세싱 리소스를 이용하여 그리고 상기 머신 러닝 모델의 세트로부터, 실시간 데이터와 관련된 데이터의 타입에 적어도 부분적으로 기초하여 실행될 적어도 제 1 머신 러닝 모델 및 제 2 머신 러닝 모델을 결정하고;
    상기 실시간 데이터의 각각의 서브세트에 대해, 그리고 상기 머신 러닝 구조에 상기 실시간 데이터를 저장하는 것과 동시에:
    제 1 프로세싱 리소스를 이용하여, 상기 실시간 데이터의 각각의 서브세트에 대한 제 1 머신 러닝 모델의 실행을 조정하고,
    상기 제 2 프로세싱 리소스의 상기 적어도 하나의 그래픽 프로세싱 코어를 이용하여, 상기 실시간 데이터의 각각의 서브세트에 대해 상기 제 1 머신 러닝 모델의 동작을 실행하여, 상기 실시간 데이터의 각각의 서브세트에 대한 각각의 제 1 모델 결과를 생성하며,
    상기 제 1 머신 러닝 모델의 실행 후, 상기 제 2 머신 러닝 모델의 실행으로의 전환을 조정하고,
    제 2 프로세싱 리소스의 상기 적어도 하나의 그래픽 프로세싱 코어를 이용하여, 상기 실시간 데이터의 각각의 서브세트에 대해 상기 제 2 머신 러닝 모델의 동작을 실행하여, 상기 실시간 데이터의 각각의 서브세트에 대한 각각의 제 2 모델 결과를 생성하는
    시스템.
  7. 제 6 항에 있어서,
    상기 프로세싱 엔진은 또한,
    상기 제 1 프로세싱 리소스를 이용하여, 상기 실시간 데이터의 각각의 서브세트에 대응하는 상기 각각의 제 1 모델 결과 및 상기 제 2 모델 결과를 프로세싱하는
    시스템.
  8. 제 1 항에 있어서,
    상기 머신 러닝 데이터 구조는 머신 러닝 데이터 인덱스를 저장하고, 상기 제 1 프로세싱 리소스는 상기 머신 러닝 데이터 인덱스에 적어도 부분적으로 기초하여 상기 머신 러닝 데이터 구조에 액세스하고, 제 2 프로세싱 리소스는 상기 머신 러닝 데이터 인덱스에 적어도 부분적으로 기초하여 상기 머신 러닝 데이터 구조에 액세스하는
    시스템.
  9. 방법으로서,
    비 휘발성 메모리에 결합된 제 1 프로세싱 리소스를 이용하여, 상기 비 휘발성 메모리의 공유 메모리 공간에 저장된 머신 러닝 데이터 구조에 액세스하는 것과;
    상기 비 휘발성 메모리에 결합된 적어도 하나의 그래픽 프로세싱 코어를 구비한 제 2 프로세싱 리소스를 이용하여, 상기 머신 러닝 데이터 구조에 액세스하는 것과;
    상기 제 2 프로세싱 리소스의 상기 적어도 하나의 그래픽 프로세싱 코어를 이용하여, 상기 머신 러닝 데이터 구조에 저장된 데이터세트에 대해 상기 머신 러닝 데이터 구조에 저장된 적어도 두 개의 머신 러닝 모델의 동작을 실행하는 동안 상기 머신 러닝 모델에 대응하는 명령 및 데이터 중 하나 이상을 인출하는 것을 포함하는
    방법.
  10. 제 9 항에 있어서,
    상기 적어도 두 개의 머신 러닝 모델의 동작을 실행하는 것은,
    상기 데이터세트에 대해 제 1 머신 러닝 모델의 동작을 실행하여, 제 1 모델 결과를 생성하는 것과;
    상기 제 1 머신 러닝 모델의 동작을 실행한 후, 상기 데이터세트에 대해 제 2 머신 러닝 모델의 동작을 실행하는 것으로 전환하여, 제 2 모델 결과를 생성하는 것을 포함하는
    방법.
  11. 제 10 항에 있어서,
    상기 제 1 모델 결과에 적어도 부분적으로 기초하여 상기 제 1 머신 러닝 모델을 업데이트하는 것과;
    상기 제 2 모델 결과에 적어도 부분적으로 기초하여 상기 제 2 머신 러닝 모델을 업데이트하는 것과;
    상기 제 1 머신 러닝 모델 및 상기 제 2 머신 러닝 모델을 업데이트한 후, 상기 데이터세트에 대해 상기 제 1 머신 러닝 모델 및 상기 제 2 머신 러닝 모델의 동작을 실행하여, 업데이트된 제 1 모델 결과 및 업데이트된 제 2 모델 결과를 생성하는 것을 포함하는
    방법.
  12. 제 9 항에 있어서,
    상기 데이터세트는 실시간 데이터 스트림이고, 상기 제 1 프로세싱 리소스를 이용하여 상기 머신 러닝 데이터 구조에 액세스하는 것은 상기 제 1 프로세싱 리소스를 이용하여 상기 실시간 데이터 스트림을 상기 머신 러닝 데이터 구조에 저장하는 것을 포함하고, 상기 실시간 데이터 스트림에 대한 저장된 상기 적어도 두 개의 머신 러닝 모델의 동작은, 상기 제 1 프로세싱 리소스를 이용하여 상기 실시간 데이터 스트림을 상기 머신 러닝 데이터 구조에 저장하는 것과 동시에, 상기 적어도 하나의 그래픽 프로세싱 코어를 이용하여 실행되는
    방법.
  13. 제 10 항에 있어서,
    상기 머신 러닝 데이터 구조는 머신 러닝 모델의 세트를 저장하고,
    상기 방법은,
    상기 데이터세트의 데이터 타입에 적어도 부분적으로 기초하여 상기 데이터세트에 대해 실행될 상기 적어도 두 개의 머신 러닝 모델을 결정하는 것을 더 포함하는
    방법.
  14. 시스템으로 하여금 아래의 동작을 수행하게 하기 위해 상기 시스템의 프로세싱 리소스에 의해 실행가능한 명령어를 포함하는 비 일시적 머신 판독가능 저장 매체로서, 상기 동작은,
    상기 시스템의 제 1 프로세싱 리소스를 이용하여 상기 시스템의 비 휘발성 메모리의 공유 메모리 공간에 저장된 머신 러닝 데이터 구조에 액세스하는 것과;
    상기 제 1 프로세싱 리소스를 이용하여 상기 머신 러닝 데이터 구조에 저장된 데이터세트에 대해 실행될, 상기 머신 러닝 데이터 구조에 저장된 머신 러닝 모델의 세트를 결정하는 것과;
    적어도 하나의 그래픽 프로세싱 코어를 구비한 상기 시스템의 제 2 프로세싱 리소스를 이용하여 상기 머신 러닝 데이터 구조에 액세스하는 것과;
    상기 제 2 프로세싱 리소스의 상기 적어도 하나의 그래픽 프로세싱 코어를 이용하여 상기 데이터세트에 대해 머신 러닝 모델의 세트의 동작을 실행하여, 상기 머신 러닝 모델의 세트의 각각의 머신 러닝 모델에 대한 모델 결과를 생성하는 동안, 상기 제 1 프로세싱 리소스로 상기 머신 러닝 모델의 세트에 대응하는 명령 및 데이터 중 하나 이상을 인출하는 것을 포함하는
    비 일시적 머신 판독가능 저장 매체.
  15. 제 14 항에 있어서,
    상기 적어도 하나의 그래픽 프로세싱 코어를 이용하여 상기 데이터세트에 대해 머신 러닝 모델의 세트의 동작을 실행하기 위한 명령어는 상기 시스템으로 하여금,
    상기 데이터세트의 각각의 데이터 서브세트에 대해, 그리고 상기 머신 러닝 모델의 세트의 각각의 머신 러닝 모델의 동작을 실행한 후에, 상기 제 2 프로세싱 리소스의 상기 적어도 하나의 그래픽 프로세싱 코어를 이용하여 상기 세트의 다음의 각각의 머신 러닝 모델의 동작의 실행으로 전환하게 하는 명령어를 포함하는
    비 일시적 머신 판독가능 저장 매체.
  16. 제 14 항에 있어서,
    상기 데이터세트는 실시간 데이터 스트림이고,
    상기 머신 판독가능 저장 매체는 상기 시스템으로 하여금,
    상기 제 1 프로세싱 리소스를 이용하여 상기 실시간 데이터 스트림을 상기 비 휘발성 메모리의 머신 러닝 데이터 구조에 저장하게 하는 명령어를 더 포함하고,
    상기 시스템은 상기 머신 러닝 데이터 구조에 상기 실시간 데이터 스트림의 저장과 동시에, 상기 제 2 프로세싱 리소스의 상기 적어도 하나의 그래픽 프로세싱 코어를 이용하여 상기 실시간 데이터 스트림에 대해 상기 머신 러닝 모델의 세트의 동작을 실행하는 것인
    비 일시적 머신 판독가능 저장 매체.
KR1020187031723A 2016-06-17 2016-06-17 공유형 머신 러닝 데이터 구조 KR102205087B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2016/038128 WO2017218009A1 (en) 2016-06-17 2016-06-17 Shared machine-learning data structure

Publications (2)

Publication Number Publication Date
KR20180122741A KR20180122741A (ko) 2018-11-13
KR102205087B1 true KR102205087B1 (ko) 2021-01-20

Family

ID=60664580

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187031723A KR102205087B1 (ko) 2016-06-17 2016-06-17 공유형 머신 러닝 데이터 구조

Country Status (7)

Country Link
US (1) US11797459B2 (ko)
EP (1) EP3436929A4 (ko)
JP (1) JP6928616B2 (ko)
KR (1) KR102205087B1 (ko)
CN (1) CN109416636B (ko)
BR (1) BR112018072407A2 (ko)
WO (1) WO2017218009A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10803941B2 (en) * 2014-12-22 2020-10-13 Mohammad A. Mazed System on chip (SoC) based on neural processor or microprocessor
US10241921B2 (en) * 2017-04-17 2019-03-26 Intel Corporation Avoid cache lookup for cold cache
US11562288B2 (en) 2018-09-28 2023-01-24 Amazon Technologies, Inc. Pre-warming scheme to load machine learning models
US11436524B2 (en) * 2018-09-28 2022-09-06 Amazon Technologies, Inc. Hosting machine learning models
KR102167643B1 (ko) * 2019-01-25 2020-10-19 서울대학교산학협력단 머신러닝 기반의 비정상 분기 탐지 장치 및 그 방법
US11176493B2 (en) * 2019-04-29 2021-11-16 Google Llc Virtualizing external memory as local to a machine learning accelerator
US11175958B2 (en) * 2019-05-01 2021-11-16 International Business Machines Corporation Determine a load balancing mechanism for allocation of shared resources in a storage system using a machine learning module based on number of I/O operations
US11371148B2 (en) * 2020-08-24 2022-06-28 Applied Materials, Inc. Fabricating a recursive flow gas distribution stack using multiple layers
WO2023010302A1 (en) * 2021-08-04 2023-02-09 Qualcomm Incorporated Machine learning group switching
CN113722319A (zh) * 2021-08-05 2021-11-30 平凯星辰(北京)科技有限公司 基于学习索引的数据存储方法
KR20240024485A (ko) * 2022-08-17 2024-02-26 삼성전자주식회사 모델들에 의하여 공통으로 이용되는 정보에 기반하여 모델들을 구동하기 위한 전자 장치 및 그 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140198116A1 (en) * 2011-12-28 2014-07-17 Bryan E. Veal A method and device to augment volatile memory in a graphics subsystem with non-volatile memory
WO2016094635A1 (en) * 2014-12-12 2016-06-16 Behavioral Recognition Systems, Inc. Perceptual associative memory for a neuro-linguistic behavior recognition system

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5829013A (en) * 1995-12-26 1998-10-27 Intel Corporation Memory manager to allow non-volatile memory to be used to supplement main memory
US7219085B2 (en) 2003-12-09 2007-05-15 Microsoft Corporation System and method for accelerating and optimizing the processing of machine learning techniques using a graphics processing unit
JP4912028B2 (ja) * 2006-05-01 2012-04-04 日本電信電話株式会社 逐次学習式非定常映像検出装置,逐次学習式非定常映像検出方法及びその方法を実装したプログラム
BRPI0806968B1 (pt) * 2007-02-08 2018-09-18 Behavioral Recognition Sys Inc método para processar fluxo de quadros de vídeo e sistema associado
US8189905B2 (en) * 2007-07-11 2012-05-29 Behavioral Recognition Systems, Inc. Cognitive model for a machine-learning engine in a video analysis system
GB2462860B (en) * 2008-08-22 2012-05-16 Advanced Risc Mach Ltd Apparatus and method for communicating between a central processing unit and a graphics processing unit
US8311115B2 (en) * 2009-01-29 2012-11-13 Microsoft Corporation Video encoding using previously calculated motion information
US9177486B2 (en) 2009-09-29 2015-11-03 Advanced Training System Llc Shifter force detection
US8538741B2 (en) * 2009-12-15 2013-09-17 Ati Technologies Ulc Apparatus and method for partitioning a display surface into a plurality of virtual display areas
US8669990B2 (en) * 2009-12-31 2014-03-11 Intel Corporation Sharing resources between a CPU and GPU
CN102004671B (zh) * 2010-11-15 2013-03-13 北京航空航天大学 一种云计算环境下数据中心基于统计模型的资源管理方法
JP5369079B2 (ja) * 2010-12-03 2013-12-18 日本電信電話株式会社 音響モデル作成方法とその装置とプログラム
US9171264B2 (en) 2010-12-15 2015-10-27 Microsoft Technology Licensing, Llc Parallel processing machine learning decision tree training
US8762298B1 (en) * 2011-01-05 2014-06-24 Narus, Inc. Machine learning based botnet detection using real-time connectivity graph based traffic features
US8364613B1 (en) * 2011-07-14 2013-01-29 Google Inc. Hosting predictive models
CN104137080A (zh) * 2011-12-30 2014-11-05 英特尔公司 用于存储类存储器的写机制
US9378572B2 (en) * 2012-08-17 2016-06-28 Intel Corporation Shared virtual memory
US20140223284A1 (en) * 2013-02-01 2014-08-07 Brokersavant, Inc. Machine learning data annotation apparatuses, methods and systems
US9171478B2 (en) * 2013-03-15 2015-10-27 International Business Machines Corporation Learning model for dynamic component utilization in a question answering system
US9626732B2 (en) * 2013-10-10 2017-04-18 Intel Corporation Supporting atomic operations as post-synchronization operations in graphics processing architectures
JP6201792B2 (ja) * 2014-02-06 2017-09-27 富士ゼロックス株式会社 情報処理装置及び情報処理プログラム
CN104035751B (zh) 2014-06-20 2016-10-12 深圳市腾讯计算机系统有限公司 基于多图形处理器的数据并行处理方法及装置
CN104036451B (zh) 2014-06-20 2018-12-11 深圳市腾讯计算机系统有限公司 基于多图形处理器的模型并行处理方法及装置
US10102480B2 (en) * 2014-06-30 2018-10-16 Amazon Technologies, Inc. Machine learning service
US10325219B2 (en) 2014-07-18 2019-06-18 Facebook, Inc. Parallel retrieval of training data from multiple producers for machine learning systems
US10387794B2 (en) * 2015-01-22 2019-08-20 Preferred Networks, Inc. Machine learning with model filtering and model mixing for edge devices in a heterogeneous environment
CN105094985A (zh) * 2015-07-15 2015-11-25 上海新储集成电路有限公司 一种共享内存池的低功耗数据中心及其工作方法
CN105227669A (zh) 2015-10-15 2016-01-06 浪潮(北京)电子信息产业有限公司 一种面向深度学习的cpu与gpu混合的集群架构系统
US11087234B2 (en) * 2016-01-29 2021-08-10 Verizon Media Inc. Method and system for distributed deep machine learning
CN105912500B (zh) * 2016-03-30 2017-11-14 百度在线网络技术(北京)有限公司 机器学习模型生成方法和装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140198116A1 (en) * 2011-12-28 2014-07-17 Bryan E. Veal A method and device to augment volatile memory in a graphics subsystem with non-volatile memory
WO2016094635A1 (en) * 2014-12-12 2016-06-16 Behavioral Recognition Systems, Inc. Perceptual associative memory for a neuro-linguistic behavior recognition system

Also Published As

Publication number Publication date
US11797459B2 (en) 2023-10-24
CN109416636B (zh) 2023-05-26
KR20180122741A (ko) 2018-11-13
EP3436929A1 (en) 2019-02-06
EP3436929A4 (en) 2019-10-16
JP6928616B2 (ja) 2021-09-01
US20190130300A1 (en) 2019-05-02
WO2017218009A1 (en) 2017-12-21
CN109416636A (zh) 2019-03-01
BR112018072407A2 (pt) 2019-02-19
JP2019525277A (ja) 2019-09-05

Similar Documents

Publication Publication Date Title
KR102205087B1 (ko) 공유형 머신 러닝 데이터 구조
US11237808B2 (en) Target architecture determination
US20230236752A1 (en) Apparatuses and methods for data movement
US10884957B2 (en) Pipeline circuit architecture to provide in-memory computation functionality
US10725680B2 (en) Apparatuses and methods to change data category values
US10379772B2 (en) Apparatuses and methods for operations using compressed and decompressed data
KR102526619B1 (ko) 지속적인 컴퓨팅을 위한 저 전력 및 저 대기시간 gpu 코프로세서
CN114391135A (zh) 用于对连续分配数据执行存储器内处理操作的方法及相关存储器装置和系统
KR102625762B1 (ko) 다중-태스크 순환 신경망
KR102487616B1 (ko) 비휘발성 메모리 디바이스의 열화에 대한 동적 보상
US10846363B2 (en) Compression-encoding scheduled inputs for matrix computations
US11493985B2 (en) Selectively controlling memory power for scheduled computations
US20210319821A1 (en) Integrated Circuit Device with Deep Learning Accelerator and Random Access Memory
CN111752530A (zh) 对块稀疏度的机器学习架构支持
JP7268063B2 (ja) 低電力のリアルタイムオブジェクト検出用のシステム及び方法
Vokorokos et al. A multicore architecture focused on accelerating computer vision computations
US10997497B2 (en) Calculation device for and calculation method of performing convolution
WO2015199734A1 (en) Buffer-based update of state data
WO2022098505A1 (en) Discovery of hardware characteristics of deep learning accelerators for optimization via compiler
US9658976B2 (en) Data writing system and method for DMA
JP7335952B2 (ja) ベクトル述語要約の生成
US20220147809A1 (en) Deep learning accelerators with configurable hardware options optimizable via compiler
US20240086257A1 (en) Direct dataflow compute-in-memory accelerator interface and architecture
US20230418782A1 (en) Enabling accelerated processing units to perform dataflow execution
Lin Memory-Centric Architectures for Big Data Applications

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