KR20190094079A - 머신 러닝 시스템에서 직렬화된 키 값 접근을 방지하기 위한 시스템 및 방법 - Google Patents
머신 러닝 시스템에서 직렬화된 키 값 접근을 방지하기 위한 시스템 및 방법 Download PDFInfo
- Publication number
- KR20190094079A KR20190094079A KR1020180120769A KR20180120769A KR20190094079A KR 20190094079 A KR20190094079 A KR 20190094079A KR 1020180120769 A KR1020180120769 A KR 1020180120769A KR 20180120769 A KR20180120769 A KR 20180120769A KR 20190094079 A KR20190094079 A KR 20190094079A
- Authority
- KR
- South Korea
- Prior art keywords
- key value
- key
- storage device
- memory
- value
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/102—Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
머신 러닝을 위한 시스템 및 방법에서, 시스템은 GPU 메모리를 갖는 GPU, 및 GPU 메모리에 연결된 키 값 스토리지 장치를 포함한다. 방법은 GPU에 의해, 키를 포함하는 키 값 요청을 GPU 메모리의 입력-출력 영역 내 키 값 요청 큐에 쓰는 단계를 포함한다. 방법은 키 값 스토리지 장치에 의해, 키 값 요청을 키 값 요청 큐로부터 읽는 단계, 및 키 값 스토리지 장치에 의해, 키 값 요청에 응답하여, 키 값 요청의 키에 대응하는 값을 GPU 메모리의 입력-출력 영역에 쓰는 단계를 더 포함한다.
Description
본 발명에 따른 실시 예들의 하나 이상의 양상들은 머신 러닝에 관한 것으로, 좀 더 구체적으로 머신 러닝 시스템에서 직렬화된 키 값 접근을 방지하기 위한 시스템 및 방법에 관한 것이다.
블록 인터페이스를 갖는 일부 종래 기술의 SSD(solid state drive)들에서, SSD에 저장된 데이터에 대한 키 값 접근(access)은 CPU(central processing unit)를 포함하여 전체 트레이닝 데이터의 부분 집합을 랜덤하게(randomly) 샘플링하는 확률적(stochastic) 머신 러닝 동안 키 값 인터페이스를 제공하는 것을 요구한다. 호스트 CPU는 파일 인덱스 검색(lookup) 및 파일 시스템 접근을 수행하여 데이터의 위치를 식별하고, 이것은 직렬화된 키 값 접근으로 이어진다. 이러한 직렬화된 키 값 접근은 성능을 제한할 수 있다.
따라서, 데이터에 대한 키 값 접근을 포함하는 머신 러닝을 수행하기 위한 개선된 시스템 및 방법이 필요하다.
본 발명은 상술한 기술적 과제를 해결하기 위한 것으로, 본 발명은 머신 러닝 시스템에서 직렬화된 키 값 접근을 방지하기 위한 시스템 및 방법을 제공할 수 있다.
본 발명의 실시 예에 따라 머신 러닝을 위한 방법이 제공되고, 방법은: 제 1 그래픽 프로세싱 유닛에 의해, 키를 포함하는 제 1 키 값 요청을 제 1 그래픽 프로세싱 유닛에 연결된 제 1 메모리의 제 1 입력-출력 영역 내 키 값 요청 큐에 쓰는 단계; 제 1 메모리에 연결된 제 1 키 값 스토리지 장치에 의해, 제 1 키 값 요청을 키 값 요청 큐로부터 읽는 단계, 및 제 1 키 값 스토리지 장치에 의해, 제 1 키 값 요청에 응답하여, 제 1 키 값 요청의 키에 대응하는 제 1 값을 제 1 메모리의 제 1 입력-출력 영역에 쓰는 단계를 포함한다.
일 실시 예에 있어서, 방법은 제 1 키 값 스토리지 장치에 의해, 제 1 키 값 스토리지 장치에서, 키 검색을 수행하여 제 1 값을 회수하는 단계를 포함한다.
일 실시 예에 있어서, 제 1 키 값 요청은 제 1 값에 할당된 영역인 리턴-값 영역을 포함한다.
일 실시 예에 있어서, 제 1 값을 제 1 메모리의 제 1 입력-출력 영역에 쓰는 단계는 제 1 값을 리턴-값 영역에 쓰는 단계를 포함한다.
일 실시 예에 있어서, 제 1 값을 제 1 메모리의 제 1 입력-출력 영역에 쓰는 단계는 제 1 값을 제 1 메모리의 제 1 입력-출력 영역 내 리턴-값 큐에 쓰는 단계를 포함한다.
일 실시 예에 있어서, 방법은 제 1 키 값 스토리지 장치 및 제 1 그래픽 프로세싱 유닛에 연결된 호스트에 의해: 제 1 키 값 스토리지 장치는 제 1 메모리의 제 1 입력-출력 영역을 접근하고, 키 값 요청들을 수신하고, 그리고 키 값 요청들에 응답하여 값들을 쓰고; 그리고 제 1 그래픽 프로세싱 유닛은 제 1 메모리의 제 1 입력-출력 영역 내 키 값 요청들을 저장하고 그리고 제 1 메모리의 제 1 입력-출력 영역으로부터 값들을 읽도록 구성하는 단계를 포함한다.
일 실시 예에 있어서, 방법은 호스트에 연결된 제 2 그래픽 프로세싱 유닛에 의해, 키를 포함하는 제 2 키 값 요청을 제 2 그래픽 프로세싱 유닛에 연결된 제 2 메모리의 입력-출력 영역 내 키 값 요청 큐에 쓰는 단계; 호스트 및 제 2 메모리에 연결된 제 2 키 값 스토리지 장치에 의해, 제 2 키 값 요청을 키 값 요청 큐로부터 읽는 단계, 및 제 2 키 값 스토리지 장치에 의해, 제 2 키 값 요청에 응답하여, 제 2 키 값 요청의 키에 대응하는 제 2 값을 제 2 메모리의 입력-출력 영역에 쓰는 단계를 포함한다.
일 실시 예에 있어서, 방법은: 제 1 키 값 스토리지 장치에 의해, 제 1 키 값 스토리지 장치에서, 키 검색을 수행하여 제 1 값을 회수하는 단계; 및 제 1 키 값 스토리지 장치에 의한 키 값 검색을 수행하는 단계와 동시에, 제 2 키 값 스토리지 장치에 의해, 제 2 키 값 스토리지 장치에서, 키 검색을 수행하여 제 2 값을 회수하는 단계를 포함한다.
일 실시 예에 있어서, 제 1 키 값 스토리지 장치에 의해, 제 1 키 값 요청을 읽는 단계는 P2P(peer-to-peer) DMA(direct memory access)를 통해 제 1 키 값 요청을 읽는 단계를 포함한다.
일 실시 예에 있어서, 제 1 키 값 스토리지 장치에 의해, 제 1 값을 쓰는 단계는 P2P(peer-to-peer) DMA(direct memory access)를 통해 제 1 값을 쓰는 단계를 포함한다.
일 실시 예에 있어서, 제 1 키 값 스토리지 장치는 PCI(peripheral component interconnect) 연결에 의해 제 1 그래픽 프로세싱 유닛에 연결된다.
일 실시 예에 있어서, 방법은 제 1 그래픽 프로세싱 유닛에 의해, 제 1 키 값 요청을 쓰는 단계 이후 그리고 제 1 키 값 스토리지 장치에 의해, 쓰기 단계에 의해, 제 1 값을 쓰는 단계 이전에, 제 1 그래픽 프로세싱 유닛에 의해, 제 2 키 값 요청을 키 값 요청 큐에 쓰는 단계를 포함한다.
일 실시 예에 있어서, 방법은: 제 1 그래픽 프로세싱 유닛에 의해, 키를 포함하는 제 2 키 값 요청을 제 1 메모리의 제 2 입력-출력 영역 내 키 값 요청 큐에 쓰는 단계; 제 1 메모리에 연결된 제 2 키 값 스토리지 장치에 의해, 제 2 키 값 요청을 제 1 메모리의 제 2 입력-출력 영역의 키 값 요청 큐로부터 읽는 단계, 및 제 2 키 값 스토리지 장치에 의해, 제 2 키 값 요청에 응답하여, 제 2 키 값 요청의 키에 대응하는 제 2 값을 제 1 메모리의 제 2 입력-출력 영역에 쓰는 단계를 포함한다.
일 실시 예에 있어서, 방법은: 제 1 키 값 스토리지 장치에 의해, 제 1 키 값 스토리지 장치에서, 키 검색을 수행하여 제 1 값을 회수하는 단계, 및 제 1 키 값 스토리지 장치에 의한 키 값 검색을 수행하는 단계와 동시에, 제 2 키 값 스토리지 장치에 의해, 제 2 키 값 스토리지 장치에서, 키 검색을 수행하여 제 2 값을 회수하는 단계를 포함한다.
본 발명의 실시 예에 따라 머신 러닝을 위한 시스템이 제공되고, 시스템은: 그래픽 프로세싱 유닛; 그래픽 프로세싱 유닛에 연결된 메모리; 및 키 값 스토리지 장치를 포함하고; 키 값 스토리지 장치는 PCI(peripheral component interconnect) 연결에 의해 그래픽 프로세싱 유닛에 연결되고; 그래픽 프로세싱 유닛은 메모리의 입력-출력 영역 내 메모리가 매핑(mapping)된 입력 및 출력 동작들을 수행하고, 그리고 하나 이상의 키 값 요청들을 입력-출력 영역 내 키 값 요청 큐에 쓰도록 구성되고; 키 값 스토리지 장치는: 입력-출력 영역에서 메모리가 매핑된 입력 및 출력 동작들을 수행하고; 하나 이상의 키 값 요청들을 키 값 요청 큐로부터 읽고; 그리고 하나 이상의 키 값 요청들의 키 값 요청에 응답하여, 키 값 요청의 키에 대응하는 값을 메모리의 입력-출력 영역에 쓰도록 구성된다.
일 실시 예에 있어서, 키 값 요청은 값에 할당된 영역인 리턴-값 영역을 포함한다.
일 실시 예에 있어서, 값을 메모리의 입력-출력 영역에 쓰는 단계는 값을 리턴-값 영역에 쓰는 단계를 포함한다.
일 실시 예에 있어서, 값을 메모리의 입력-출력 영역에 쓰는 단계는 값을 메모리의 입력-출력 영역 내 리턴-값 큐에 쓰는 단계를 포함한다.
본 발명의 실시 예에 따라 머신 러닝을 위한 시스템이 제공되고, 시스템은: 그래픽 프로세싱 유닛; 키 값 스토리지 장치; 및 그래픽 프로세싱 유닛과 키 값 스토리지 장치 간의 통신을 위한 공유된 메모리 수단을 포함하고; 그래픽 프로세싱 유닛은 통신을 위한 공유된 메모리 수단을 통해 하나 이상의 키 값 요청들을 키 값 스토리지 장치로 전송하도록 구성되고, 키 값 스토리지 장치는: 하나 이상의 키 값 요청들을 수신하고; 그리고 하나 이상의 키 값 요청들의 키 값 요청에 응답하여, 키 값 요청의 키에 대응하는 값을 통신을 위한 공유된 메모리 수단을 통해 그래픽 프로세싱 유닛에 전송하도록 구성된다.
일 실시 예에 있어서, 통신을 위한 공유된 메모리 수단은 그래픽 프로세싱 유닛에 연결된 메모리를 포함하고, PCI(peripheral component interconnect) 연결을 통한 P2P(peer-to-peer) DMA(direct memory access)를 통해 키 값 스토리지 장치에 의해 접근되도록 구성된다.
본 발명의 실시 예에 따르면, 호스트 어플리케이션에 의해 수행되는 작업(task)은 단지 GPU와 SSD 간의 통신을 위한 경로를 설정하는 것을 포함하고, GPU 계산의 직렬화가 방지될 수 있다. 따라서 본 발명의 실시 예들은 규모 확장(scale out) 다수의 GPU들을 가능하게 할 수 있어 머신 러닝 트레이닝을 가속화한다.
본 발명의 이들 및 다른 특징들 및 이점들은 발명을 실시하기 위한 구체적인 내용, 청구 범위, 및 첨부 도면을 참조하여 인식되고 이해될 것이다:
도 1은 머신 러닝을 위한 시스템의 기능적 블록도이다;
도 2는 본 발명의 실시 예에 따른, 온보드 SSD를 갖춘 그래픽 카드의 블록도이다;
도 3은 본 발명의 실시 예에 따른, 데이터 흐름도이다;
도 4는 본 발명의 실시 예에 따른, 타이밍도이다; 그리고
도 5는 본 발명의 실시 예에 따른, 타이밍도이다.
도 1은 머신 러닝을 위한 시스템의 기능적 블록도이다;
도 2는 본 발명의 실시 예에 따른, 온보드 SSD를 갖춘 그래픽 카드의 블록도이다;
도 3은 본 발명의 실시 예에 따른, 데이터 흐름도이다;
도 4는 본 발명의 실시 예에 따른, 타이밍도이다; 그리고
도 5는 본 발명의 실시 예에 따른, 타이밍도이다.
첨부된 도면들과 관련되어 이하에서 제공되는 상세한 설명은 본 발명에 따라 제공되는 데이터에 대한 키 값 접근을 포함하는 머신 러닝을 수행하기 위한 시스템 및 방법의 예시적인 실시 예들의 설명으로서 의도되고 본 발명이 구성될 수 있거나 활용될 수 있는 유일한 형태들을 나타내는 것으로 의도되지 않는다. 설명은 도시된 실시 예들과 관련된 본 발명의 특징들을 제공한다. 그러나, 동일하거나 동등한 기능들 및 구조들은 본 발명의 범위 내에 포함되는 것으로도 의도되는 다른 실시 예들에 의해 달성될 수 있다. 본문의 다른 곳에서도 표시된 바와 같이, 유사한 구성 요소 번호들은 유사한 구성 요소들 또는 특징들을 나타내는 것으로 의도된다.
종래 기술의 머신 러닝(machine learning) 플랫폼(platform)들은 전체 트레이닝(training) 데이터의 부분 집합을 랜덤하게(randomly) 샘플링하는 확률적(stochastic) 머신 러닝 트레이닝에 이용되는 경우에 단점을 갖는다. 이러한 머신 러닝 플랫폼들은 확률적 머신 러닝 트레이닝 동안 키 값 접근으로 인한 낮은 GPU(graphics processing unit; 그래픽 프로세싱 유닛) 활용으로 문제를 겪을 수 있고, 이는 CPU(central processing unit)를 포함하여 PCIe(peripheral component interconnect express) 버스를 가로질러(traversing) 키 값 인터페이스 및 데이터 전송을 제공하는 것을 요구하기 때문이다. 전술한대로, 일부 종래 기술의 시스템들에서, 호스트 CPU는 파일 인덱스 검색(lookup) 및 파일 시스템 접근을 수행하여 데이터의 위치를 식별하고, 이것은 직렬화된 키 값 접근으로 이어진다. 반면에, 일부 실시 예들에서, CPU가 온보드(onboard) SSD(solid state drive)에 저장된 데이터에 대한 키 값 접근에서는 관여하지 않으므로 성능은 향상된다. GPU는 온보드 키 값 스토리지 장치(예를 들어, 온보드 키 값 SSD), 예를 들어, 비동기(asynchronous) 키 값 접근을 가능하게 하여 접근 대기 시간(latency)의 효과를 줄이는, GPU 및 온보드 키 값 SSD를 포함하는 온 그래픽 카드(on a graphics card)로 키 값 명령들을 직접 전송한다. 본문에서 사용되는 것으로서, “키 값 스토리지 장치”는 각 이러한 요청에 응답하여 요청에 포함된 키에 대응하는 값을 되돌려줌으로써 키 값 요청들(각각은 키를 포함)에 응답하도록 구성되는 (SSD와 같은) 영구 스토리지 장치이다.
도 1은 GPU 머신 러닝 트레이닝 동안, 소프트웨어 키 값 저장을 이용하여, 블록 인터페이스를 갖는 SSD 상에 저장된 데이터에 대한 키 값 접근의 전체적인 흐름을 도시한다. 먼저, 호스트 어플리케이션(105)은 “GET“ 요청(혹은 얻기 요청)을 소프트웨어 키 값 저장(110; S/W KV Store, 소프트웨어 키 값 저장소로도 지칭될 수 있음)으로 전송함으로써 키 값 접근을 시작한다. 어떤 키에 대한 데이터의 위치를 식별하기 위해, 소프트웨어 키 값 저장(110)은 지정된(specified) 키에 대응하는 데이터의 파일 오프셋(offset)을 저장하는 인덱스 표에 접근한다. 그러면 소프트웨어 키 값 저장(110)은 파일 오프셋을 갖는 파일 시스템(115)에 접근하고, 그리고 파일 시스템(115)은 블록 인터페이스(120)를 갖는 SSD에 접근하고 지정된 키에 대응하는 데이터를 페치(fetch)한다. 일단 값이 호스트 어플리케이션에게 사용할 수 있게 되면, 호스트 어플리케이션은 GPU 계산을 위한 GPU 메모리(125)로 값을 전송하고 GPU 커널(kernel)을 시작한다(launch). 블록 인터페이스를 갖는 종래 기술의 SSD를 갖는 소프트웨어 키 값 저장을 위해, 모든 이들 동작들은 순차적으로(sequentially) 수행된다.
도 1에서 도시된 바와 같이, 블록 인터페이스를 갖는 SSD에 대한 키 값 접근은 지정된 키에 대응하는 데이터의 위치를 식별하기 위해 호스트 상에서 실행되는 몇몇의 계산 단계들을 포함한다. GPU는 소프트웨어 키 값 저장의 계산들이 끝난 이후에만 해당 계산을 수행할 수 있다. GPU들이 다른 GPU들로부터의 키 값 접근들의 완료를 기다려야 하고 이는 GPU 계산들의 직렬화로 이어지기 때문에 더 많은 GPU들이 시스템에서 사용되는 경우 키 값 접근의 대기 시간은 증가한다. 결과적으로, 블록 인터페이스를 갖는 종래 기술의 SSD들에 대한 키 값 접근은 시스템에서 생산적으로 사용될 수 있는 GPU들의 개수를 제한한다.
일부 실시 예들에서, 키 값 인터페이스(또는 “키 값 SSD”)를 갖는 온보드 SSD를 갖는 그래픽 카드가 종래 기술의 시스템들의 단점의 일부를 극복하는데 사용된다. 도 2는 이러한 장치를 갖는 예시적인 시스템을 도시한다. 스토리지 및 GPU 간의 데이터 이동이 글로벌 PCIe 버스를 가로지르는 데이터 전송을 요구하고, 이는 GPU로부터의 데이터 접근들의 대기 시간을 증가시키는, 종래 기술의 시스템과 달리, 온보드 키 값 SSD(205)를 갖는 그래픽 카드는 온보드 키 값 SSD(205) 및 GPU(210) 간의 P2P(peer to peer) DMA(direct memory access)를 이용함으로써 오버헤드(overhead)를 줄일 수 있고 완전한 P2P DMA 제어를 GPU(210)에게 준다. 일부 실시 예들에서, 온보드 키 값 SSD(205)는 비표준적인(non-standard) 명령들로서 키 값 명령들을 제공한다. 예를 들어, 키 값 요청 큐(queue, 이하에서 더 상세하게 설명됨)는 NVMe(nonvolatile memory express) 명령 큐로서 구현될 수 있고, NVMe 명령들은, SSD(205)의 펌웨어(firmware)에서 그리고 GPU 상의 드라이버 소프트웨어에서, 정의된 공급업체별(vendor-specific) 명령들이며, 키 값 명령들, 즉, SSD(205)로부터, 명령의 일부로서 제공되는 키에 대응하는 값을 요청하는데 사용되는 명령들에 대응한다.
일부 실시 예들에서, 이러한 시스템은 온보드 키 값 SSD에서 비동기 키 값 접근을 제공하는데 사용될 수 있고, 일부 실시 예들은 트레이닝 데이터의 랜덤 샘플링을 위해 그래픽 카드 내에서 키 값 SSD를 활용한다. 도 3은 일부 실시 예들에서, 머신 러닝 트레이닝 동안 키 값 접근의 흐름을 도시한다. 이러한 실시 예와 일부 종래 기술의 시스템들 간의 중요한 차이는 이러한 실시 예에서 GPU는 키 값 명령들을 키 값 SSD(205)로 직접 전송한다는 것이다. 먼저, 호스트 어플리케이션의 실행의 초기 단계에서, 호스트 어플리케이션은 특정한 GPU 장치의 메모리를 PCI(peripheral component interconnect) BAR(base address registers) 메모리 영역으로 매핑(mapping)하여 키 값 SSD(205) 및 GPU 간의 직접적인 통신을 설정(establish)한다. 이 과정에 의해, 키 값 SSD(205) 및 GPU 간의 통신(예를 들어, 메모리가 매핑(mapping)된 입력 출력에 의해)에 할당된 GPU 메모리의 영역은 GPU 메모리의 “입력-출력 영역”으로서 본문에서 지칭될 수 있다. GPU 및 키 값 SSD(205) 모두에 의해 직접적으로 접근 가능한, GPU 메모리의 입력-출력 영역은 공유된 메모리로서 기능적으로 동작할 수 있다. GPU 어플리케이션(305)은 키 값 SSD(205) 상에서 메모리가 매핑된 IO(입력-출력)를 수행하고 노출된 GPU 메모리의 버스 어드레스를 공급함으로써 키 값 SSD(205)로 GET 요청을 발행한다. 키 값 SSD(205) 내에서 펌웨어는 키 검색을 수행하여 키에 대응하는 값을 회수한 이후에, 호스트 어플리케이션(105)의 중재(intermediation) 없이 그 값을 매핑된 GPU 장치 메모리에 (즉, GPU 메모리의 입력-출력 영역에) 쓴다.
일부 실시 예들에서, GPU가 두 번째, 다음의 요청을 만들기 전에 첫 번째 요청에 대한 응답을 기다릴 필요가 없다는 의미에서, 키 값 요청 큐(key value request queue; KVRQ, 310)가 사용되고, 키 값 접근은 비차단적(non-blocking)이다. 대신에, GPU는 키 값 요청들을 키 값 요청 큐(310)에 배치하고, 그리고 요청들은 키 값 SSD(205)에 의해 차례로 처리된다. 이와 같이, GPU 어플리케이션이 요청을 키 값 요청 큐(310)에 넣으면 요청 동작이 완료된다. 키 값 요청 큐(310)의 엔트리들의 개수가 키 값 요청들의 개수이도록 키 값 요청 큐(310)는 완료되지 않은 요청들을 가지고 있다(hold). SSD(205) 내의 펌웨어는 값이 GPU 메모리로 전송되는 경우 지정된 키에 대응하는 키 값 요청 큐 엔트리를 방출한다(release).
각 GPU에 대한 분리된 키 값 접근은 다수의 GPU들로부터의 키 값 접근을 겹치게 하는(중첩하는) 것을(또는 GPU들로부터의 오버래핑(overlapping) 키 값 접근을) 가능하게 한다. 예를 들어, 두 개의 GPU들을 갖는 시스템에서, 각 GPU는 각각의 키 값 SSD에 연결되고, 두 개의 GPU들은 동시에 요청들을 발행하고, 그리고 그들 각각의 키 값 SSD들은 동시에 응답할 수 있다. 도 4는 각각의 키 값 SSD에 각각 연결된 두 개의 GPU들을 포함하는 이러한 예시의 동작을 도시한다. 도 4는 또한 GPU 계산이 직렬화된 종래 기술의 접근 방법과 비교하여, 키 값 접근들을 겹치게 하는 것이 두 개의 GPU들로 수행되는, 이러한 실시 예에서, 시스템으로 절약된 시간을 도시한다. 일부 실시 예들에서, 3개 이상의 (예를 들면, 임의의 개수) GPU들은 각각의 키 값 SSD에 각각 연결될 수 있고 키 값 동작들을 (예를 들면, 동시에) 겹치게 하는 것을 수행한다.
일부 실시 예들에서, 키 값 접근을 위한 요청 및 응답의 분리는 비동기 키 값 접근을 가능하게 하고, 예를 들어, GPU로부터 다수의 요청들의 배칭(batching)이 가능하다. 도 5는 두 개 키 값 명령들을 배칭하는 경우 비동기 키 값 접근들의 예시를 도시한다. GPU 계산 및 SSD 장치 접근이 직렬화되는 동기 키 값 접근과 비교하여, 일부 실시 예들의 비동기 키 값 접근은 GPU 계산을 갖는 다수의 키 값 명령들의 겹침(오버래핑)을 가능하게 한다. 이 예시에서, GPU는 이전 요청의 완료를 위해, 그 때마다, 기다리는 것 대신에 GET 요청들을 연속적으로 발행한다. 일부 실시 예들에서, 3개 이상의 (예를 들면, 임의의 개수) GPU들은 각각의 키 값 SSD에 각각 연결될 수 있고 키 값 동작들을 (예를 들면, 동시에) 겹치게 하는 것을 수행한다.
일부 실시 예들에서, 키 값 SSD가 키 값 요청에 응답하여 값을 회수하는 경우, 그것은 키 값 요청 큐에, 즉 이 목적으로 키 값 요청 내에 할당된 메모리의 영역(또는 “리턴-값(return-value) 영역”)에 다시 회수된 값을 쓴다. 다른 실시 예들에서, 키 값 SSD는 GPU 메모리의 입력-출력 영역에 할당된, 분리된 큐 (또는 “리턴 값 큐”) 에 회수된 값을 대신 쓴다. 일부 실시 예들에서, 각 GPU가 그것이 키-값 요청들을 전송하는 하나의 전용의 키 값 SSD를 갖는 것 대신에, 하나의 GPU는 여러 키 값 SSD들을 가질 수 있다. 이러한 실시 예에서, 여러 키 값 요청 큐들은 각각의 키 값 SSD에 대해 각각 GPU 메모리 내에 할당될 수 있다. 다른 실시 예들에서, 여러 GPU들은 하나의 키 값 SSD에 연결될 수 있고, 하나의 키 값 SSD는, 예를 들어, 라운드-로빈(round-robin) 방식으로, GPU들의 각각의 키 값 요청 큐들에서, 키 값 요청들을 제공할 수 있다.
일부 실시 예들에서, 호스트 어플리케이션에 의해 수행되는 작업(task)은 단지 GPU와 SSD 간의 통신을 위한 경로를 설정하는 것을 포함하고, GPU 계산의 직렬화를 방지함으로써 이들 실시 예들의 확장성(scalability)을 향상시키고 GPU 계산의 직렬화가 방지되지 않으면 CPU 상의 호스트 어플리케이션에 의해 수행되는 키 값 접근 동작들이 발생할 수 있다. 이와 같이, 이들 실시 예들은 규모 확장(scale out) 다수의 GPU들이 머신 러닝 트레이닝을 가속화하게 할 수 있다. 복잡한 키 값 소프트웨어를 간단한 장치 인터페이스로 교체함으로써, 일부 실시 예들은 또한, 그렇지 않으면 호스트 상에 부과될 수 있는, CPU 코어들의 개수에 대한 요구를 포함하는 자원 요구들을 줄인다. 이러한 요구를 방지하는 것은 더 나은 에너지 효율을 야기할 수 있다.
일부 실시 예들은 하나 이상의 프로세싱 회로들을 이용하여 구성될 수 있다. 본문에서 사용된 ”프로세싱 회로” 용어는 데이터 또는 디지털 신호들을 처리하기 위해 이용되는, 하드웨어, 펌웨어, 및 소프트웨어의 임의의 조합을 의미한다. 프로세싱 회로 하드웨어는 예를 들어, ASICs(application specific integrated circuits), 일반적인 목적의 또는 특수한 목적의 CPUs(central processing units), DSPs(digital signal processors), GPUs(graphics processing units), 및 FPGAs(field programmable gate arrays)와 같은 프로그래머블(programmable) 로직 장치들을 포함할 수 있다. 프로세싱 회로에서, 본문에서 사용된 바와 같이, 각 기능은 기능을 수행하기 위해 구성된 하드웨어(즉, 하드웨어에 내장(hard-wired)), 또는 비일시적(non-transitory) 저장 매체에 저장된 명령들을 실행하도록 구성된, CPU와 같은, 좀 더 일반적인 목적의 하드웨어 중 어느 하나에 의해 수행된다. 프로세싱 회로는 하나의 PCB(printed circuit board) 상에서 제조될 수 있거나 또는 상호 연결된 여러 PCB들에 걸쳐 분산될 수 있다. 프로세싱 회로는 다른 프로세싱 회로들을 포함할 수 있다; 예를 들어, 프로세싱 회로는 PCB 상에 상호 연결된, 두 개의 프로세싱 회로들, FPGA, 및 CPU를 포함할 수 있다.
다양한 구성 요소들, 성분들, 영역들, 계층들, 및/또는 섹션들을 설명하기 위해 “제 1”, “제 2”, “제 3”, 등이 본문에서 사용될 수 있지만, 이들 구성 요소들, 성분들, 계층들, 및/또는 섹션들은 이들 용어들에 의해 제한되지 않는 것으로 이해될 것이다. 이들 용어들은 단지 하나의 구성 요소, 성분, 영역, 계층, 또는 섹션을 다른 구성 요소, 성분, 영역, 계층, 또는 섹션으로부터 구별하기 위해 사용된다. 따라서, 본문에서 논의된 제 1 구성 요소, 성분, 영역, 계층, 또는 섹션은 본 발명의 사상 및 범위를 벗어나지 않고 제 2 구성 요소, 성분, 영역, 계층, 또는 섹션으로 지칭될 수 있다.
본문에서 사용된 용어들은 특정한 실시 예들을 설명하기 위한 것이고 본 발명을 제한하려고 의도된 것이 아니다. 본문에서 사용된 바와 같이, “실질적으로”, “약” 용어들 및 유사한 용어들은 근사치의 용어들로서 사용되고 정도의 용어들로서 사용되지 않고, 당업자에 의해 식별되는 측정된 또는 계산된 값들의 고유한 변동들을 고려하기 위한 것이다. 본문에서 사용된 바와 같이, “주(major) 성분” 용어는 조성물, 중합체, 또는 조성물 또는 생성물의 임의의 다른 하나의 성분의 양보다 큰 양의 생성물에 존재하는 성분을 지칭한다. 반면에, “주(primary) 성분” 용어는 조성물, 중합체, 또는 생성물의 중량의 적어도 50% 이상을 구성하는 성분을 나타낸다. 본문에서 사용된 바와 같이, “주 부분” 용어는 복수의 항목들에 적용될 때, 항목들의 적어도 절반을 의미한다.
본문에서 사용된 바와 같이, 문맥상 명백하게 다르게 나타내지 않는 한, 단수 표현들은 복수의 형태들도 포함하는 것으로 의도된다.”포함” 및/또는 “포함하는” 용어들은, 본 명세서에서 사용되는 경우, 기술된 특징들, 숫자들, 단계들, 동작들, 구성 요소들, 및/또는 성분들의 존재를 명시하지만 하나 이상의 다른 특징들, 숫자들, 단계들, 동작들, 구성 요소들, 성분들, 및/또는 이들의 그룹들의 존재 또는 부가를 배제하지 않는 것으로 더 이해될 것이다. 본문에서 사용된 바와 같이, 용어 “및/또는”은 관련된 열거된 항목들의 하나 이상의 임의의 그리고 모든 조합들을 포함한다.”적어도 하나의”와 같은 표현들은, 요소들의 리스트에 앞서는 경우, 요소들의 전체 리스트를 수정하고 리스트의 개별 요소들을 수정하지 않는다. 또한, “할 수 있는”의 사용은 본 발명의 실시 예들을 설명하는 경우 본 발명의 하나 이상의 실시 예들”을 지칭한다. 또한, “예시적인” 용어는 예시 또는 도시를 지칭하는 것으로 의도된다. 본문에서 사용된 바와 같이, “이용”, “이용하는”, 및 “이용된” 용어들은 “활용”, “활용하는”, 및 “활용된' 용어들과 같은 것을 의미하는 것으로 간주될 수 있다.
구성 요소 또는 계층이 다른 구성 요소 또는 계층 “상의”, “연결된”, 또는 “인접한”으로서 지칭되는 경우, 그것은 직접적으로 다른 구성 요소 또는 계층 상의, 연결된, 또는 인접한 것일 수 있거나, 하나 이상의 중간 구성 요소들 또는 계층들이 존재할 수 있음이 이해될 것이다. 반면에, 구성 요소 또는 계층이 다른 구성 요소 또는 계층 “에 직접적으로”, “에 직접적으로 연결된”, “의 바로 인접하여”로서 지칭되는 경우, 중간 요소들 또는 계층들은 존재하지 않는다.
데이터로의 키 값 접근을 포함하는 머신 러닝을 수행하기 위한 시스템 및 방법의 예시적인 실시 예들이 구체적으로 설명되었고 본문에서 도시되었으나, 많은 수정들 및 변형들은 당업자에게 분명할 것이다. 따라서, 본 발명의 원리들에 따라 구성된 데이터로의 키 값 접근을 포함하는 머신 러닝을 수행하기 위한 시스템 및 방법은 구체적으로 본문에서 설명된 것과 달리 구현될 수 있다. 본 발명은 다음의 청구 범위, 및 그것의 균등물에서 또한 정의된다.
105: 호스트 어플리케이션;
110: 소프트웨어 키 값 저장;
115: 파일 시스템; 120: 블록 인터페이스;
125: GPU 메모리; 205: 온보드 키 값 SSD;
210: GPU; 305: GPU 어플리케이션;
310: 키 값 요청 큐;
115: 파일 시스템; 120: 블록 인터페이스;
125: GPU 메모리; 205: 온보드 키 값 SSD;
210: GPU; 305: GPU 어플리케이션;
310: 키 값 요청 큐;
Claims (20)
- 제 1 그래픽 프로세싱 유닛에 의해, 키를 포함하는 제 1 키 값 요청을 상기 제 1 그래픽 프로세싱 유닛에 연결된 제 1 메모리의 제 1 입력-출력 영역 내 키 값 요청 큐에 쓰는 단계;
상기 제 1 메모리에 연결된 제 1 키 값 스토리지 장치에 의해, 상기 제 1 키 값 요청을 상기 키 값 요청 큐로부터 읽는 단계, 및
상기 제 1 키 값 스토리지 장치에 의해, 상기 제 1 키 값 요청에 응답하여, 상기 제 1 키 값 요청의 상기 키에 대응하는 제 1 값을 상기 제 1 메모리의 상기 제 1 입력-출력 영역에 쓰는 단계를 포함하는 머신 러닝(machine learning)을 위한 방법. - 제 1 항에 있어서,
상기 제 1 키 값 스토리지 장치에 의해, 상기 제 1 키 값 스토리지 장치에서, 키 검색을 수행하여 상기 제 1 값을 회수하는 단계를 더 포함하는 머신 러닝을 위한 방법. - 제 1 항에 있어서,
상기 제 1 키 값 요청은 상기 제 1 값에 할당된 영역인 리턴-값(return-value) 영역을 포함하는 머신 러닝을 위한 방법. - 제 3 항에 있어서,
상기 제 1 값을 상기 제 1 메모리의 상기 제 1 입력-출력 영역에 쓰는 단계는 상기 제 1 값을 상기 리턴-값 영역에 쓰는 단계를 포함하는 머신 러닝을 위한 방법. - 제 1 항에 있어서,
상기 제 1 값을 상기 제 1 메모리의 상기 제 1 입력-출력 영역에 쓰는 단계는 상기 제 1 값을 상기 제 1 메모리의 상기 제 1 입력-출력 영역 내 리턴-값 큐에 쓰는 단계를 포함하는 머신 러닝을 위한 방법. - 제 1 항에 있어서,
상기 제 1 키 값 스토리지 장치 및 상기 제 1 그래픽 프로세싱 유닛에 연결된 호스트에 의해:
키 값 요청들을 수신하기 위해 상기 제 1 메모리의 상기 제 1 입력-출력 영역을 접근하고 그리고 상기 키 값 요청들에 응답하여 값들을 쓰는 상기 제 1 키 값 스토리지 장치; 그리고
상기 제 1 메모리의 상기 제 1 입력-출력 영역 내 키 값 요청들을 저장하고 그리고 상기 제 1 메모리의 상기 제 1 입력-출력 영역으로부터 값들을 읽는 상기 제 1 그래픽 프로세싱 유닛을 구성하는 단계를 더 포함하는 머신 러닝을 위한 방법. - 제 6 항에 있어서,
상기 호스트에 연결된 제 2 그래픽 프로세싱 유닛에 의해, 키를 포함하는 제 2 키 값 요청을 상기 제 2 그래픽 프로세싱 유닛에 연결된 제 2 메모리의 입력-출력 영역 내 키 값 요청 큐에 쓰는 단계;
상기 호스트 및 상기 제 2 메모리에 연결된 제 2 키 값 스토리지 장치에 의해, 상기 제 2 키 값 요청을 상기 키 값 요청 큐로부터 읽는 단계, 및
상기 제 2 키 값 스토리지 장치에 의해, 상기 제 2 키 값 요청에 응답하여, 상기 제 2 키 값 요청의 상기 키에 대응하는 제 2 값을 상기 제 2 메모리의 상기 입력-출력 영역에 쓰는 단계를 더 포함하는 머신 러닝을 위한 방법. - 제 7 항에 있어서,
상기 제 1 키 값 스토리지 장치에 의해, 상기 제 1 키 값 스토리지 장치에서, 키 검색을 수행하여 상기 제 1 값을 회수하는 단계; 및
상기 제 1 키 값 스토리지 장치에 의한 상기 키 값 검색을 수행하는 단계와 동시에, 상기 제 2 키 값 스토리지 장치에 의해, 상기 제 2 키 값 스토리지 장치에서, 키 검색을 수행하여 상기 제 2 값을 회수하는 단계를 더 포함하는 머신 러닝을 위한 방법. - 제 1 항에 있어서,
상기 제 1 키 값 스토리지 장치에 의해, 상기 제 1 키 값 요청을 읽는 단계는 P2P(peer-to-peer) DMA(direct memory access)를 통해 상기 제 1 키 값 요청을 읽는 단계를 포함하는 머신 러닝을 위한 방법. - 제 1 항에 있어서,
상기 제 1 키 값 스토리지 장치에 의해, 상기 제 1 값을 쓰는 단계는 P2P(peer-to-peer) DMA(direct memory access)를 통해 상기 제 1 값을 쓰는 단계를 포함하는 머신 러닝을 위한 방법. - 제 10 항에 있어서,
상기 제 1 키 값 스토리지 장치는 PCI(peripheral component interconnect) 연결에 의해 상기 제 1 그래픽 프로세싱 유닛에 연결되는 머신 러닝을 위한 방법. - 제 1 항에 있어서,
상기 제 1 그래픽 프로세싱 유닛에 의해, 상기 제 1 키 값 요청을 쓰는 단계 이후 그리고 상기 제 1 키 값 스토리지 장치에 의해, 상기 쓰기 단계에 의해, 상기 제 1 값을 쓰는 단계 이전에, 상기 제 1 그래픽 프로세싱 유닛에 의해, 제 2 키 값 요청을 상기 키 값 요청 큐에 쓰는 단계를 더 포함하는 머신 러닝을 위한 방법. - 제 1 항에 있어서,
상기 제 1 그래픽 프로세싱 유닛에 의해, 키를 포함하는 제 2 키 값 요청을 상기 제 1 메모리의 제 2 입력-출력 영역 내 키 값 요청 큐에 쓰는 단계;
상기 제 1 메모리에 연결된 제 2 키 값 스토리지 장치에 의해, 상기 제 2 키 값 요청을 상기 제 1 메모리의 상기 제 2 입력-출력 영역의 상기 키 값 요청 큐로부터 읽는 단계, 및
상기 제 2 키 값 스토리지 장치에 의해, 상기 제 2 키 값 요청에 응답하여, 상기 제 2 키 값 요청의 상기 키에 대응하는 제 2 값을 상기 제 1 메모리의 상기 제 2 입력-출력 영역에 쓰는 단계를 포함하는 머신 러닝을 위한 방법. - 제 13 항에 있어서,
상기 제 1 키 값 스토리지 장치에 의해, 상기 제 1 키 값 스토리지 장치에서, 키 검색을 수행하여 상기 제 1 값을 회수하는 단계, 및
상기 제 1 키 값 스토리지 장치에 의한 상기 키 값 검색을 수행하는 단계와 동시에, 상기 제 2 키 값 스토리지 장치에 의해, 상기 제 2 키 값 스토리지 장치에서, 키 검색을 수행하여 상기 제 2 값을 회수하는 단계를 더 포함하는 머신 러닝을 위한 방법. - 그래픽 프로세싱 유닛;
상기 그래픽 프로세싱 유닛에 연결된 메모리; 및
키 값 스토리지 장치를 포함하되,
상기 키 값 스토리지 장치는 PCI(peripheral component interconnect) 연결에 의해 상기 그래픽 프로세싱 유닛에 연결되고;
상기 그래픽 프로세싱 유닛은 상기 메모리의 입력-출력 영역 내 메모리가 매핑(mapping)된 입력 및 출력 동작들을 수행하고, 그리고 하나 이상의 키 값 요청들을 상기 입력-출력 영역 내 키 값 요청 큐에 쓰도록 구성되고,
상기 키 값 스토리지 장치는:
상기 입력-출력 영역에서 메모리가 매핑된 입력 및 출력 동작들을 수행하고;
상기 하나 이상의 키 값 요청들을 상기 키 값 요청 큐로부터 읽고; 그리고
상기 하나 이상의 키 값 요청들의 키 값 요청에 응답하여, 상기 키 값 요청의 키에 대응하는 값을 상기 메모리의 상기 입력-출력 영역에 쓰도록 구성되는 머신 러닝(machine learning)을 위한 시스템. - 제 15 항에 있어서,
상기 키 값 요청은 상기 값에 할당된 영역인 리턴-값(return-value) 영역을 포함하는 머신 러닝을 위한 시스템. - 제 16 항에 있어서,
상기 값을 상기 메모리의 상기 입력-출력 영역에 쓰는 단계는 상기 값을 상기 리턴-값 영역에 쓰는 단계를 포함하는 머신 러닝을 위한 시스템. - 제 15 항에 있어서,
상기 값을 상기 메모리의 상기 입력-출력 영역에 쓰는 단계는 상기 값을 상기 메모리의 상기 입력-출력 영역 내 리턴-값 큐에 쓰는 단계를 포함하는 머신 러닝을 위한 시스템. - 그래픽 프로세싱 유닛;
키 값 스토리지 장치; 및
상기 그래픽 프로세싱 유닛과 상기 키 값 스토리지 장치 간의 통신을 위한 공유된 메모리 수단을 포함하되;
상기 그래픽 프로세싱 유닛은 통신을 위한 상기 공유된 메모리 수단을 통해 하나 이상의 키 값 요청들을 상기 키 값 스토리지 장치로 전송하도록 구성되고,
상기 키 값 스토리지 장치는:
상기 하나 이상의 키 값 요청들을 수신하고; 그리고
상기 하나 이상의 키 값 요청들의 키 값 요청에 응답하여, 상기 키 값 요청의 키에 대응하는 값을 통신을 위한 상기 공유된 메모리 수단을 통해 상기 그래픽 프로세싱 유닛에 전송하도록 구성되는 머신 러닝을 위한 시스템. - 제 19 항에 있어서,
통신을 위한 상기 공유된 메모리 수단은 상기 그래픽 프로세싱 유닛에 연결된 메모리를 포함하고, PCI(peripheral component interconnect) 연결을 통한 P2P(peer-to-peer) DMA(direct memory access)를 통해 상기 키 값 스토리지 장치에 의해 접근되도록 구성되는 머신 러닝을 위한 시스템.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862625532P | 2018-02-02 | 2018-02-02 | |
US62/625,532 | 2018-02-02 | ||
US15/942,218 | 2018-03-30 | ||
US15/942,218 US11182694B2 (en) | 2018-02-02 | 2018-03-30 | Data path for GPU machine learning training with key value SSD |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190094079A true KR20190094079A (ko) | 2019-08-12 |
KR102442682B1 KR102442682B1 (ko) | 2022-09-13 |
Family
ID=67475620
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180120769A KR102442682B1 (ko) | 2018-02-02 | 2018-10-10 | 머신 러닝 시스템에서 직렬화된 키 값 접근을 방지하기 위한 시스템 및 방법 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11182694B2 (ko) |
JP (1) | JP2019133662A (ko) |
KR (1) | KR102442682B1 (ko) |
CN (1) | CN110135589A (ko) |
TW (1) | TWI778160B (ko) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
LU101360B1 (en) * | 2019-08-26 | 2021-03-11 | Microsoft Technology Licensing Llc | Pinned physical memory supporting direct memory access for virtual memory backed containers |
KR20210093531A (ko) * | 2020-01-20 | 2021-07-28 | 에스케이하이닉스 주식회사 | 응용 프로세서와 데이터를 제공하는 데이터 저장 장치를 포함하는 시스템 |
US11243694B2 (en) * | 2020-01-29 | 2022-02-08 | Samsung Electronics Co., Ltd. | Grouping key value object IOs to improve IO performance for key-value storage devices |
US11972361B2 (en) | 2020-01-29 | 2024-04-30 | Samsung Electronics Co., Ltd. | Performance optimization of object grouping schema in a network key-value storage device using adaptive regression |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8095694B2 (en) * | 2007-06-28 | 2012-01-10 | Apple Inc. | Enhancements to data-driven media management within an electronic device |
US20130271380A1 (en) * | 2010-12-28 | 2013-10-17 | Volvo Construction Equipment Ab | Display integrated control systems and display integrated input device |
US20170169358A1 (en) * | 2015-12-09 | 2017-06-15 | Samsung Electronics Co., Ltd. | In-storage computing apparatus and method for decentralized machine learning |
US20180357234A1 (en) * | 2017-06-13 | 2018-12-13 | Western Digital Technologies, Inc. | Memory efficient persistent key-value store for non-volatile memories |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6009148A (en) * | 1998-06-16 | 1999-12-28 | Reeves; Michael | Phone-activated emergency visual signaling system with low power consumption signal light |
EP2528550A2 (en) | 2010-01-25 | 2012-12-05 | The Board of Governors for Higher Education, State of Rhode Island and Providence Plantations | Systems and methods for providing a neural-machine interface for artificial legs |
US9058675B2 (en) * | 2010-05-29 | 2015-06-16 | Intel Corporation | Non-volatile storage for graphics hardware |
JP5524144B2 (ja) * | 2011-08-08 | 2014-06-18 | 株式会社東芝 | key−valueストア方式を有するメモリシステム |
KR101921902B1 (ko) * | 2012-02-09 | 2018-11-26 | 삼성전자주식회사 | 메모 기능을 가지는 모바일 장치 및 메모 기능 수행 방법 |
WO2013147821A1 (en) | 2012-03-29 | 2013-10-03 | Empire Technology Development, Llc | Determining user key-value storage needs from example queries |
US9075710B2 (en) * | 2012-04-17 | 2015-07-07 | SanDisk Technologies, Inc. | Non-volatile key-value store |
US9519647B2 (en) * | 2012-04-17 | 2016-12-13 | Sandisk Technologies Llc | Data expiry in a non-volatile device |
US8996781B2 (en) | 2012-11-06 | 2015-03-31 | OCZ Storage Solutions Inc. | Integrated storage/processing devices, systems and methods for performing big data analytics |
CN103902632B (zh) | 2012-12-31 | 2018-01-02 | 华为技术有限公司 | 键值存储系统中构建文件系统的方法、装置及电子设备 |
US9607177B2 (en) * | 2013-09-30 | 2017-03-28 | Qualcomm Incorporated | Method for securing content in dynamically allocated memory using different domain-specific keys |
US20170039269A1 (en) | 2014-03-26 | 2017-02-09 | Microsoft Technology Licensing, Llc | Client intent in an integrated search environment |
US9304690B2 (en) * | 2014-05-07 | 2016-04-05 | HGST Netherlands B.V. | System and method for peer-to-peer PCIe storage transfers |
WO2015188275A1 (en) | 2014-06-10 | 2015-12-17 | Sightline Innovation Inc. | System and method for network based application development and implementation |
US10127270B1 (en) * | 2014-06-23 | 2018-11-13 | Amazon Technologies, Inc. | Transaction processing using a key-value store |
US9438426B2 (en) | 2014-10-03 | 2016-09-06 | Seagate Technology Llc | Key-value data storage device with hybrid architecture |
KR102398213B1 (ko) * | 2015-03-09 | 2022-05-17 | 삼성전자주식회사 | 저장 장치, 그것을 포함하는 호스트 시스템, 및 그것의 맵 테이블 업데이트 방법 |
US20160283156A1 (en) | 2015-03-23 | 2016-09-29 | Kabushiki Kaisha Toshiba | Key-value drive hardware |
US10452995B2 (en) * | 2015-06-29 | 2019-10-22 | Microsoft Technology Licensing, Llc | Machine learning classification on hardware accelerators with stacked memory |
US20160379686A1 (en) * | 2015-06-29 | 2016-12-29 | Microsoft Technology Licensing, Llc | Server systems with hardware accelerators including stacked memory |
US9927984B2 (en) | 2015-10-14 | 2018-03-27 | Samsung Electronics Co., Ltd. | Electronic system with interface control mechanism and method of operation thereof |
US10204046B1 (en) * | 2015-11-19 | 2019-02-12 | Netronome Systems, Inc. | High-speed and memory-efficient flow cache for network flow processors |
US10216419B2 (en) * | 2015-11-19 | 2019-02-26 | HGST Netherlands B.V. | Direct interface between graphics processing unit and data storage unit |
US10332509B2 (en) | 2015-11-25 | 2019-06-25 | Baidu USA, LLC | End-to-end speech recognition |
KR101936950B1 (ko) * | 2016-02-15 | 2019-01-11 | 주식회사 맴레이 | 컴퓨팅 디바이스, 코프로세서와 비휘발성 메모리 사이의 데이터 이동 방법 및 이를 포함하는 프로그램 |
US11301422B2 (en) * | 2016-02-23 | 2022-04-12 | Samsung Electronics Co., Ltd. | System and methods for providing fast cacheable access to a key-value device through a filesystem interface |
US10466907B2 (en) * | 2016-03-22 | 2019-11-05 | Toshiba Memory Corporation | Method to efficiently store object data of an object storage service on a magnetic disk drive and magnetic SMR disk drive |
US9965382B2 (en) | 2016-04-04 | 2018-05-08 | Omni Ai, Inc. | Data composite for efficient memory transfer in a behavioral recognition system |
US10387302B2 (en) * | 2016-04-18 | 2019-08-20 | Samsung Electronics Co., Ltd. | Managing database index by leveraging key-value solid state device |
US10515566B2 (en) * | 2016-05-29 | 2019-12-24 | Jang Suk Moon | Electronic system and method for martial arts movement-based language character symbolization and education |
US10261913B2 (en) * | 2017-04-20 | 2019-04-16 | Alibaba Group Holding Limited | Persistent memory for key-value storage |
US11468312B2 (en) * | 2018-02-02 | 2022-10-11 | Samsung Electronics Co., Ltd. | Memory management for machine learning training on GPU |
-
2018
- 2018-03-30 US US15/942,218 patent/US11182694B2/en active Active
- 2018-10-10 KR KR1020180120769A patent/KR102442682B1/ko active IP Right Grant
- 2018-10-29 TW TW107138106A patent/TWI778160B/zh active
-
2019
- 2019-01-21 CN CN201910054704.XA patent/CN110135589A/zh active Pending
- 2019-01-30 JP JP2019013888A patent/JP2019133662A/ja active Pending
-
2021
- 2021-11-22 US US17/533,059 patent/US11907814B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8095694B2 (en) * | 2007-06-28 | 2012-01-10 | Apple Inc. | Enhancements to data-driven media management within an electronic device |
US20130271380A1 (en) * | 2010-12-28 | 2013-10-17 | Volvo Construction Equipment Ab | Display integrated control systems and display integrated input device |
US20170169358A1 (en) * | 2015-12-09 | 2017-06-15 | Samsung Electronics Co., Ltd. | In-storage computing apparatus and method for decentralized machine learning |
US20180357234A1 (en) * | 2017-06-13 | 2018-12-13 | Western Digital Technologies, Inc. | Memory efficient persistent key-value store for non-volatile memories |
Also Published As
Publication number | Publication date |
---|---|
US20220164708A1 (en) | 2022-05-26 |
TWI778160B (zh) | 2022-09-21 |
CN110135589A (zh) | 2019-08-16 |
KR102442682B1 (ko) | 2022-09-13 |
US20190244140A1 (en) | 2019-08-08 |
JP2019133662A (ja) | 2019-08-08 |
US11907814B2 (en) | 2024-02-20 |
US11182694B2 (en) | 2021-11-23 |
TW201935224A (zh) | 2019-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11907814B2 (en) | Data path for GPU machine learning training with key value SSD | |
US10379745B2 (en) | Simultaneous kernel mode and user mode access to a device using the NVMe interface | |
KR102387932B1 (ko) | 멀티 포트, 멀티 펑션 PCIe 장치의 호스트 명령어의 QoS 유지 방법 및 그 시스템 | |
US20160350260A1 (en) | Dynamic Non-Uniform Memory Architecture (NUMA) Locality for Remote Direct Memory Access (RDMA) Applications | |
US10983833B2 (en) | Virtualized and synchronous access to hardware accelerators | |
KR20200108774A (ko) | 순환 큐 기반의 명령어 메모리를 포함하는 메모리 장치 및 그 동작방법 | |
US20170212706A1 (en) | Use efficiency of platform memory resources through firmware managed i/o translation table paging | |
US10503410B2 (en) | Apparatus and method for enforcing timing requirements for a memory device | |
US20140258643A1 (en) | Method and system for maintaining release consistency in shared memory programming | |
US10459662B1 (en) | Write failure handling for a memory controller to non-volatile memory | |
EP2548129A1 (en) | Masked register write method and apparatus | |
JP2022507707A (ja) | 集積回路中の算出ユニットをプログラムおよび制御すること | |
US8424014B2 (en) | Method for pushing work request-associated contexts into an IO device | |
KR20220116566A (ko) | 확장 메모리 통신 | |
US10831684B1 (en) | Kernal driver extension system and method | |
KR20210151250A (ko) | 확장 메모리 인터페이스 | |
WO2021093249A1 (zh) | 外部设备访问计算机内存的方法 | |
US20140136796A1 (en) | Arithmetic processing device and method for controlling the same | |
KR20210134048A (ko) | 확장 메모리 연산 | |
US10379776B2 (en) | Operation interlocking in an address-sliced cache system | |
CN113227956A (zh) | 计算瓦片 | |
KR20210108487A (ko) | 저장 디바이스 동작 오케스트레이션 | |
US9652296B1 (en) | Efficient chained post-copy virtual machine migration | |
US20230359392A1 (en) | Non-volatile memory-based storage device, device controller and method thereof | |
US20220137998A1 (en) | Storage virtualization device supporting virtual machine, operation method thereof, and operation method of system having the same |
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 |