KR102449191B1 - 이더넷 솔리드 스테이트 드라이브에서 데이터 패턴 매칭 및 기계 학습 알고리즘들을 지원하는 장치 및 방법 - Google Patents
이더넷 솔리드 스테이트 드라이브에서 데이터 패턴 매칭 및 기계 학습 알고리즘들을 지원하는 장치 및 방법 Download PDFInfo
- Publication number
- KR102449191B1 KR102449191B1 KR1020170139006A KR20170139006A KR102449191B1 KR 102449191 B1 KR102449191 B1 KR 102449191B1 KR 1020170139006 A KR1020170139006 A KR 1020170139006A KR 20170139006 A KR20170139006 A KR 20170139006A KR 102449191 B1 KR102449191 B1 KR 102449191B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- storage device
- data storage
- memory array
- search query
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/9038—Presentation of query results
-
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/50—Information retrieval; Database structures therefor; File system structures therefor of still image data
- G06F16/58—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
- G06F16/583—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using metadata automatically derived from the content
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
-
- 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/0656—Data buffering arrangements
-
- 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/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/001—Texturing; Colouring; Generation of texture or colour
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Mathematical Physics (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Library & Information Science (AREA)
- Image Analysis (AREA)
- Image Processing (AREA)
- Testing Of Coins (AREA)
Abstract
본 발명에 따른 데이터 스토리지 장치는 데이터를 저장하는 메모리 어레이, 애플리케이션을 구동하는 호스트 컴퓨터와의 접속을 제공하는 호스트 인터페이스, 애플리케이션으로부터 서브미션 큐의 커맨드를 수신하고, 검색 쿼리 커맨드에 응답하여 검색 절차를 개시하도록 구성된 중앙 제어 유닛, 검색 쿼리 커맨드에 포함된 데이터를 기반으로 검색 쿼리 커맨드에 포함된 데이터를 재포맷화하고, 재포맷화된 데이터를 생성하도록 구성된 선-프로세서, 및 재포맷화된 데이터로부터 하나 또는 그 이상의 특징들을 추출하고, 검색 쿼리 커맨드에 응답하여 메모리 어레이에 저장된 데이터에 대한 데이터 동작을 수행하고, 메모리 어레이에 저장된 데이터로부터의 매칭 데이터를 호스트 인터페이스를 통해 애플리케이션으로 전송하도록 구성된 하나 또는 그 이상의 데이터 처리 유닛들을 포함한다.
Description
본 발명은 일반적으로 데이터 저장 장치들에 관한 것으로, 좀 더 상세하게는 데이터 저장 장치에 저장된 데이터에 대한 데이터 매칭 및 기계 학습을 수행할 수 있는 데이터 저장 장치들에 관한 것이다.
패브릭을 통한 불휘발성 메모리 익스프레스(NVMeoF; Non-volatile memory express over Fabrics)는 새로운 산업 표준이다. NVMeoF는 이더넷(Ethernet), 파이버 채널(Fibre Channel), 인피니밴드(InfiniBand), 및 다른 네트워크 패브릭과 같은 광범위한 스토리지 네트워킹 패브릭을 통한 NVME 블록 스토리지 프로토콜을 지원하는 공통 아키텍처를 정의한다. NVMeoF-기반 시스템에 대하여, 마더보드 상의 X86-기반의 중앙 처리 유닛(CPU; central processing unit)은 더 이상 개시자(initiator)(예를 들어, 호스트 소프트웨어) 및 목표 장치(즉, NVMeoF 장치) 사이에서 데이터를 이동할 필요가 없다. 이는 목표 장치가 스스로 데이터를 이동시킬 수 있기 때문이다. 패브릭(fabric)의 용어는 네트워크 노드들이 다양한 상호 연결 프로토콜들, 포트들, 및 스위치들을 통해 서로 데이터를 전달할 수 있는 네트워크 토폴로지를 나타낸다. 예를 들어, 이더넷-부착 SSD들(Ethernet-attached SSDs)은 패브릭에 직접적으로 부착될 수 있고, 이 경우, 패브릭은 이더넷이다.
NVMeoF 장치들의 표준 폼 팩터(standard form factor)는 산업 또는 데이터 센터에서 기존의 랙 시스템들(existing rack systems)에 빠르고 쉽게 배치할 수 있도록 표준 솔리드-스테이트 드라이브(SSD) 및 하드 디스크 드라이브(HDD)와 동일하거나 또는 매우 유사하다. NVMeoF 장치들은 고용량, 낮은 레이턴시 데이터 스토리지 및 산업 또는 데이터 센터 애플리케이션들을 위한 동작 환경을 제공한다.
NVMeoF 장치들은 기계 학습 및 데이터 마이닝 애플리케이션들과 같은 데이터-중심의 애플리케이션들에 최적화되지 않는다. 현재, 패브릭-부착 SSD들(eSSD)을 포함하는 NVMeoF 장치들은 단순히 호스트 컴퓨터에서 구동하는 애플리케이션에 의한 요청에 응답하고, 애플리케이션에 의해 요청된 데이터를 제공하거나 또는 장치들에 저장된 데이터에 대한 기본 동작들(basic operations)만 수행한다. 대부분의 데이터 매칭 또는 기계 학습 기능들은 NVMeoF 외부에 위치한 호스트 컴퓨터 상의 CPU들 및/또는 GPU들(graphic processing units)에 의해 수행된다.
본 발명은 상술된 기술적 과제를 해결하기 위한 것으로써, 본 발명은 본 발명은 데이터 매칭 또는 기계 학습 동작들을 내부적으로 수행할 수 있는 데이터 스토리지 장치를 제공할 수 있다.
일 실시 예에 따르면, 데이터 스토리지 장치는 데이터를 저장하는 메모리 어레이, 애플리케이션을 구동하는 호스트 컴퓨터와의 접속을 제공하는 호스트 인터페이스, 상기 애플리케이션으로부터 서브미션 큐의 커맨드를 수신하고, 검색 쿼리 커맨드에 응답하여 검색 절차를 개시하도록 구성된 중앙 제어 유닛, 상기 검색 쿼리 커맨드에 포함된 데이터를 기반으로 상기 검색 쿼리 커맨드에 포함된 상기 데이터를 재포맷화하고, 재포맷화된 데이터를 생성하도록 구성된 선-프로세서, 및 상기 재포맷화된 데이터로부터 하나 또는 그 이상의 특징들을 추출하고, 상기 검색 쿼리 커맨드에 응답하여 상기 메모리 어레이에 저장된 상기 데이터에 대한 데이터 동작을 수행하고, 상기 메모리 어레이에 저장된 데이터로부터의 매칭 데이터를 상기 호스트 인터페이스를 통해 상기 애플리케이션으로 전송하도록 구성된 하나 또는 그 이상의 데이터 처리 유닛들을 포함한다.
일 실시 예에 따르면, 데이터 스토리지 장치의 동작 방법은 호스트 컴퓨터에서 구동하는 애플리케이션으로부터 서브미션 큐의 커맨드를 수신하는 단계, 검색 쿼리 커맨드에 응답하여 검색 절차를 개시하는 단계, 상기 검색 쿼리 커맨드에 포함된 데이터의 타입을 기반으로 상기 검색 쿼리 커맨드에 포함된 상기 데이터의 포맷을 변경함으로써 재포맷화된 데이터를 생성하는 단계, 상기 재포맷화된 데이터로부터 하나 또는 그 이상의 특징들을 추출하는 단계, 상기 검색 쿼리 커맨드에 응답하여 상기 데이터 스토리지 장치의 메모리 어레이에 저장된 데이터에 대한 데이터 동작을 수행하는 단계, 및 상기 호스트 컴퓨터 및 상기 데이터 스토리지 장치 사이에 설정된 호스트 인터페이스를 통해 매칭 데이터를 상기 메모리 어레이에 저장된 상기 데이터로부터 상기 애플리케이션으로 반환하는 단계를 포함한다.
이벤트들의 조합 및 구성의 다양한 새로운 사항들을 포함하는 상술된 그리고 다른 적절한 특징들은 첨부된 도면들을 참조하여 더욱 상세하게 설명되며, 특허청구범위에서 지칭된다. 본문에서 설명되는 특정한 시스템들 및 방법들은 단순히 설명을 위한 것이며, 한정되지 않도록 도시된다. 당업자에 의해 이해되는 바와 같이, 본문에 기재된 이론들 및 특징들은 본 발명의 사상으로부터의 벗어남 없이 다양하고 많은 실시 예들에 사용될 수 있다.
본 발명은 본 발명은 데이터 매칭 또는 기계 학습 동작들을 내부적으로 수행할 수 있는 데이터 스토리지 장치를 제공할 수 있다. 따라서 본 발명의 실시 예에 따르면, 향상된 성능, 감소된 전력 소모를 갖는 데이터 스토리지 장치가 제공된다.
본 발명의 일부로써 포함되는 첨부 도면들은 상술된 일반적인 설명과 함께 적절한 실시 예들을 도시한다. 이하에서 제공되는 적절한 실시 예들의 상세한 설명은 본문에 기재된 이론들을 교시하고 설명하기 위하여 제공된다.
도 1은 일 실시 예에 따른, 예시적인 데이터 스토리지 장치의 블록도를 보여준다.
도 2는 일 실시 예에 따른, 예시적인 뉴럴 코드 가속기(neural code accelerator)의 행동 관점(behavioral view)의 블록도를 보여준다.
도 3은 일 실시 예에 따른, 하나 또는 그 이상의 컨볼루션 엔진들(CEs; convolution engines)을 실행하도록 구성된 예시적인 GPU를 보여준다.
도 4는 일 실시 예에 따른 XOR 엔진을 포함하는 예시적인 데이터 저장 장치를 보여준다.
도 5는 일 실시 예에 따른, 기계 학습을 위한 GPU를 포함하는 예시적인 데이터 저장 장치를 보여준다.
도 6a 및 도 6b는 일 실시 예에 따른, 예시적인 이미지 탐색 쿼리 및 회수 절차를 위한 순서도를 보여준다.
도면들 전체에 걸쳐 도면의 간결성을 위하여, 도면들은 필수적으로 계측되어 도시되지 않으며, 유사한 구조들 또는 기능들의 요소들은 일반적으로 유사한 참조 번호에 의해 일반적으로 표시된다. 도면들은 오직 본문의 다양한 실시 예들의 설명을 용이하게 하기 위한 것으로 의도된다. 도면들은 본문에 개시된 교시의 모든 사상들을 설명하지 않으며, 특허청구범위를 제한하지 않는다.
도 1은 일 실시 예에 따른, 예시적인 데이터 스토리지 장치의 블록도를 보여준다.
도 2는 일 실시 예에 따른, 예시적인 뉴럴 코드 가속기(neural code accelerator)의 행동 관점(behavioral view)의 블록도를 보여준다.
도 3은 일 실시 예에 따른, 하나 또는 그 이상의 컨볼루션 엔진들(CEs; convolution engines)을 실행하도록 구성된 예시적인 GPU를 보여준다.
도 4는 일 실시 예에 따른 XOR 엔진을 포함하는 예시적인 데이터 저장 장치를 보여준다.
도 5는 일 실시 예에 따른, 기계 학습을 위한 GPU를 포함하는 예시적인 데이터 저장 장치를 보여준다.
도 6a 및 도 6b는 일 실시 예에 따른, 예시적인 이미지 탐색 쿼리 및 회수 절차를 위한 순서도를 보여준다.
도면들 전체에 걸쳐 도면의 간결성을 위하여, 도면들은 필수적으로 계측되어 도시되지 않으며, 유사한 구조들 또는 기능들의 요소들은 일반적으로 유사한 참조 번호에 의해 일반적으로 표시된다. 도면들은 오직 본문의 다양한 실시 예들의 설명을 용이하게 하기 위한 것으로 의도된다. 도면들은 본문에 개시된 교시의 모든 사상들을 설명하지 않으며, 특허청구범위를 제한하지 않는다.
본 명세서의 실시 예에서, 데이터 매칭(data matching) 및 기계 학습(machine learning)을 수행할 수 있는 데이터 저장 장치가 개시된다. 기계 학습은 인공 지능(artificial intelligence)을 포함하는 데이터로부터 학습할 수 있는 알고리즘, 명시적으로 프로그램되지 않고 컴퓨터들을 작동시키는 것, 자동화된 추론, 자동화된 의사 결정, 자동화된 학습, 명시적으로 프로그램되지 않고 컴퓨터가 학습하는 능력, 인공 지능(AI; artificial intelligence), 또는 그것들의 조합을 포함할 수 있다. 기계 학습은 일종의 인공 지능(AI)으로 간주될 수 있다. 기계 학습은 분류(classification), 회귀(regression), 특징 학습(feature learning), 온라인 학습(online learning), 자율 학습(unsupervised learning), 지도 학습(supervised learning), 군집(clustering), 차원 감소(dimensionality reduction), 구조 예측(structured prediction), 비정상 행위 탐지(anomaly detection), 뉴럴 네트워크(neural nets), 또는 그것들의 조합을 포함할 수 있다.
본 발명의 실시 예에서, 학습 시스템(learning system)은 "빅 데이터(big data)"를 처리하고 분석할 수 있는 기계 학습 시스템을 포함할 수 있다. ISC(in-storage-computing)을 구비한 병렬 또는 분산 저장 장치들은 빅 데이터 기계 학습 및 분석을 가속화할 수 있다. 병렬 또는 분산된 학습 시스템은 추가 대역폭을 위해 ISC에 기능들을 오프로드하고, 스토리지 및 호스트 프로세서를 위한 입력/출력(I/O)을 감소시킬 수 있다. 병렬 또는 분산된 학습 시스템은 기계 학습에 ISC를 제공할 수 있다.
본 발명의 실시 예에서, 병렬 또는 분산된 학습 시스템은 ISC(in-storage-computing), 스케줄러, 또는 그것들의 조합으로 구현될 수 있다. ISC는 병렬 또는 분산 학습을 포함하는 학습 시스템에서 상당한 향상을 제공한다. ISC는 기계 학습을 위한 다른 프로세서, 호스트 중앙 처리 유닛을 보조하는 가속기(accelerator), 또는 그것들의 조합, 예를 들어, 탐지된 대역폭 병목현상을 완화하기 위하여 ISC에서 선처리하는 것을 제공할 수 있다. 스케줄러는 데이터(data), 작업들(tasks), 기능들(functions), 동작들(operations), 또는 그것들의 조합을 지능적으로(intelligently) 할당할 수 있다.
이하의 실시 예들은 당업자가 본 발명을 사용하고 구현할 수 있을 정도로 충분히 상세하게 설명된다. 다른 실시 예들은 본 명세서를 기반으로 입증될 수 있으며, 시스템, 절차, 또는 기계적인 변형들이 본 명세서의 실시 예의 사상으로부터의 벗어남 없이 행해질 수 있음이 이해될 것이다.
이하의 설명에서, 다양하게 상세한 설명들은 본 발명의 전반적인 이해를 돕기 위하여 제공된다. 그러나, 본 발명이 이러한 상세한 설명들 없이 구현될 수 있음이 분명할 것이다. 본 발명의 실시 예들의 모호함을 피하기 위하여, 일부 잘 알려진 회로들, 시스템 구조들, 및 절차 단계들은 상세하게 설명되지 않는다.
본 발명의 실시 예들을 보여주는 도면들은 반-도시적(semi-diagrammatic)이며, 계측되지 않는다. 특히, 일부 면적들은 표현의 명확성을 위한 것이며, 도시된 도면에서 확장되어 도시된다. 유사하게, 비록 설명의 편의를 위하여 도면에서의 견해들이 일반적으로 유사한 성향(similar orientations)로 도시되나, 도면들의 설명은 대부분 임의적이다. 일반적으로 본 발명은 어떤 성향으로던지 동작될 수 있다. 실시 예들은 설명의 편의상 제1 실시 예, 제2 실시 예 등으로 번호가 매겨지나, 본 발명의 실시 예들에 대하여 제한을 제공하거나 또는 어떤 다른 의미를 포함하는 것으로 의도되지 않는다.
일 실시 예에 따르면, 호스트 컴퓨터 및 하나 또는 그 이상의 데이터 스토리지 장치들은 데이터 매칭(data matching) 및 기계 학습 동작들을 총괄하여 수행할 수 있다. 사용되는 알고리즘 및 데이터 세트들에 따라, 데이터 매칭 또는 기계 학습 동작들은 호스트 동작들 및 장치 동작들로 구분될 수 있다. 호스트 동작들 및 장치 동작들로 구분하는 것은 특정 사용 모델에서 동작하기 위한 연산 시간(computational time) 및 전력 효율의 최적화에 의존할 수 있다. 서브 시스템(호스트 컴퓨터 또는 데이터 스토리지 장치 중 하나)에 의해 수행되는 데이터 매칭 또는 기계 학습 동작들의 특정 부분이 더 빠르고 더 효율적인 실행을 야기하는 경우, 그러한 동작들의 특정 부분은 대응하는 서브 시스템으로 구분될 수 있다.
예를 들어, 얼굴 인식 동작(facial recognition operation)에서, 트레이닝된 얼굴들의 데이터 세트(dataset)가 데이터 스토리지 장치에 저장될 수 있다. 트레이닝된 얼굴들의 데이터 세트는 트레이닝된 얼굴 이미지들로부터 추출된 바이너리 코드(binary code) 또는 특징 벡터들(feature vectors)을 포함할 수 있다. 새로운 얼굴을 트레이닝하기 위해, 새롭게 트레이닝된 얼굴 데이터 세트 또는 데이터 모델의 부분 또는 전체가 데이터 스토리지 장치로부터 호스트 컴퓨터의 메모리로 복사될 수 있다. 호스트 컴퓨터는 호스트 컴퓨터의 메모리로 복사된 데이터 세트를 사용하여 새로운 얼굴 트레이닝 동작을 수행할 수 있다. 즉, 데이터 스토리지 장치는 새로운 얼굴의 데이터를 수신하고, 대응하는 뉴럴 바이너리 코드들 또는 특징 벡터들을 전송하여 호스트 컴퓨터에 의해 수행되는 새로운 얼굴 트레이닝 동작을 가능하게 할 수 있다. 새로운 얼굴 인식 모델이 완료된 경우, 호스트 컴퓨터는 추가적인 트레이닝을 위하여 새롭게 트레이닝된 얼굴 인식 모델을 호스트 컴퓨터의 메모리에 유지하거나 또는 새롭게 트레이닝된 얼굴 인식 모델을 데이터 스토리지 장치로 복사하여 트레이닝된 얼굴들의 데이터 세트를 갱신할 수 있다. 이러한 절차는 얼굴 데이터 세트를 기반으로 하는 새로운 모델에 대한 트레이닝 및 새롭게 수신된 얼굴 데이터 세트에 대하여 반복할 수 있다.
일 실시 예에 따르면, 호스트 컴퓨터는 데이터 세트를 저장하는 데이터 스토리지 장치와 조정(coordination)을 지원하는 프레임워크에서 데이터 매칭 또는 기계 학습 동작들을 수행할 수 있다. 프레임워크의 성능은 이미지들의 크기, 트레이닝 반복 횟수, 데이터 세트의 크기, 트레이닝 알고리즘, 부동 성능(floating-point performance) 등과 같은 배치 변수(deployment parameters) 및 사용 모델에 매우 의존적일 수 있다. 예를 들어, 얼굴 인식의 경우에서, 트레이닝된 얼굴들의 데이터 세트 크기는 시간이 지남에 따라 커질 수 있다. 호스트 컴퓨터의 메모리가 비싸기 때문에, 데이터 스토리지 장치는 데이터 스토리지 장치에 저장된 데이터 세트를 호스트 컴퓨터의 메모리로 복사하여 데이터 매칭 또는 기계 학습 동작을 호스트 컴퓨터에서 수행하는 것 대신에 얼굴 인식 동작을 부분적으로 또는 전적으로 수행할 수 있다.
일 실시 예에 따르면, 본 발명은 데이터 매칭 또는 기계 학습 동작들을 내부적으로 수행할 수 있는 데이터 스토리지 장치를 제공한다. 데이터 스토리지 장치는 솔리드 스테이트 드라이브(SSD; solid-state drive), 하드 디스크 드라이브(HDD; hard disk drive), NVME 표준과 호환되는 NVME 장치, NVMeoF 표준과 호환되는 NVMeoF 장치, 또는 다른 패브릭-부착 SSD들(eSSDs) 중 일부일 수 있다. 데이터를 저장하고, 데이터 매칭 및 기계 학습을 수행할 수 있는 어떤 형태의 장치들이던지 본 발명의 사상으로부터의 벗어남 없이 사용될 수 있다.
도 1은 일 실시 예에 따른, 예시적인 데이터 스토리지 장치의 블록도를 보여준다. 데이터 스토리지 장치(100)는 중앙 제어 유닛(CCU; central control unit)(111), 선-프로세서(preprocessor)(112), 임베디드 DRAM(embedded DRAM)(113), 시그니쳐 임계처리 엔진(signature thresholding engine)(114), 직접 메모리 액세스(DMA; direct memory access) 엔진(115), 컨트롤러(116), 입력 버퍼(117), 가중치 버퍼(118), 출력 버퍼(119), 하나 또는 그 이상의 처리 유닛들(processing units)(120), 및 메모리 어레이(130)를 포함한다. 다양한 이미지들, 텍스트들, 비디오, 오디오, 또는 다른 데이터는 메모리 어레이(130)에 저장될 수 있다. 비록 메모리 어레이(130)가 데이터 스토리지 장치(120)의 일부인 것으로 도시되나, 메모리 어레이(130)는 이더넷과 같은 패브릭을 통해 데이터 스토리지 장치(100)와 원거리에서 연결될 수 있다. 예를 들어, 메모리 어레이(130)는 다른 NVMeoF 장치에 존재할 수 있는 플래시 어레이일 수 있다. 특히, NVMeoF 표준에 따르면, 메모리 어레이(130)에 저장된 데이터가 NVMeoF 프로토콜들에 의해 액세스 가능한 임의의 호스트 컴퓨터에 의해 액세스될 수 있다는 점에서, 메모리 어레이(130)의 위치 및 물리적 부착은 물리적 제한이 아닐 수 있다. 이런 식으로, 하나의 데이터 스토리지 장치의 컨트롤러(116) 및 하나 또는 그 이상의 데이터 처리 유닛들(120)은 자체 메모리 어레이(130) 또는 패브릭을 통한 다른 데이터 스토리지 장치에 저장된 데이터에 대하여 동작할 수 있다.
일 실시 예에 따르면, 데이터 스토리지 장치(100)는 NVME 및/또는 NVMeoF 표준들과 호환될 수 있는 폼 팩터를 포함하는 집적 회로들(integrated circuits), 집적 회로 코어들, 집적 회로 구성들, MEMS(microelectromechanical system), 수동 소자들, 또는 그것들의 조합일 수 있다. 그러나 데이터 스토리지 장치(100)의 다양한 폼 팩터들이 본 발명의 사상으로부터의 벗어남 없이 사용될 수 있다.
일 실시 예에 따르면, 데이터 스토리지 장치(100)는 NVMeoF 장치이고, 호스트 컴퓨터(미도시) 및 NVMeoF 장치에 부착된 패브릭 사이의 연결은 이더넷 연결(Ethernet connection)이다. 이 경우, 호스트 컴퓨터는 이더넷 연결을 통해 NVMeoF 커맨드들을 NVMeoF 장치로 직접적으로(directly) 전송할 수 있다. 파이버 채널(Fibre Channel), 인피니밴드(InfiniBand), 및 다른 네트워크 패브릭과 같은 다양한 다른 패브릭들은 데이터 스토리지 장치(100) 및 호스트 컴퓨터 사이의 통신을 설정하는데 사용될 수 있다.
데이터 스토리지 장치(100)는 호스트 컴퓨터 상에서 구동하는 애플리케이션으로부터 커맨드(150)를 수신할 수 있다. 일 실시 예에 따르면, 커맨드(150)는 제조사-특정 패브릭 커맨드(vendor-specific fabric command)(예를 들어, NVMeoF 커맨드)일 수 있다. 커맨드(150)는 메모리 어레이(130)에 저장된 데이터에 대해 동작하는 기계 학습 커맨드, 이미지 검색 조회 커맨드(image search inquiry command), 또는 일반 읽기/쓰기 동작 커맨드일 수 있다. 커맨드(150)는 서브미션 큐(SQ; submission queue)에서 수신될 수 있다. 하나의 서브미션 큐는 복수의 커맨드들(150)을 포함할 수 있다. 일부 실시 예들에서, 단일 서브미션 큐(single submission queue)는 동일하거나 또는 유사한 형태의 커맨드들(150), 예를 들어, 읽기/쓰기 동작 커맨드들을 포함할 수 있다. 유사하거나 또는 동일한 커맨드들(150)은 커맨드들(150)의 효율적인 전달 및 처리를 위하여 다른 서브미션 큐들에서 패키징되고, 애플리케이션에 의해 저장될 수 있다.
컨트롤러(116)는 메모리 어레이(130)에 저장된 데이터에 대한 데이터 매칭 및/또는 기계 학습 동작들을 포함하는 다양한 데이터 동작들을 수행하도록 구성된다. 예를 들어, 컨트롤러(116)는 CCU(111)와 함께 데이터 매칭 동작들을 수행하거나 또는 상태 머신을 구동할 수 있다. 데이터 스토리지 장치(100)는 애플리케이션 또는 호스트 컴퓨터와의 대화(interaction) 없이 또는 최소의 대화로 데이터 동작들을 내부적으로 수행할 수 있다. 이러한 경우에서, 호스트 및 데이터 스토리지 장치 사이의 데이터 이동이 적어지기 때문에, 요청된 동작을 완료하기 위한 레이턴시(latency)는 전력 소모를 줄이면서 향상될 수 있다. 요청된 데이터 동작이 완료된 경우, 데이터 스토리지 장치(100)는 매칭 데이터(154)를 호스트 컴퓨터 상에서 구동하는 애플리케이션으로 제공한다.
일 실시 예에 따르면, CCU(111)는 호스트 컴퓨터로부터 수신된 커맨드(150)를 디코딩하고, 내부 및 외부에서 사용을 위한 하나 또는 그 이상의 뉴럴 바이너리 코드들(neural binary code)을 생성할 수 있다. 예를 들어, 이미지 데이터를 포함하는 이미지 검색 쿼리 커맨드에 응답하여, CCU(111)는 수신된 이미지 데이터에 대하여 동작하기 위해 선-프로세서(112)를 초기화한다. 일부 실시 예들에서, 데이터 스토리지 장치(110)는 호스트 컴퓨터로부터 데이터 세트 및 커맨드 모두를 수신하는 대신에 애플리케이션으로부터 오직 커맨드(150)만 수신하여 메모리 어레이(130)에 저장된 데이터 세트에 대한 데이터 동작을 수행할 수 있다. 이러한 데이터의 예들은 이미지 데이터, 텍스트 데이터, 비디오 데이터, 및 오디오 데이터를 포함하나, 이에 한정되지 않는다. 예를 들어, 이미지 데이터에 대하여, 선-프로세서(112)는 이미지 데이터의 포맷을 변환하고, 고정된 크기의 RGB 포맷 데이터(fixed-size RGB format data)를 생성할 수 있다. RGB 포맷으로 변환된 이미지 데이터는 이미지 데이터로부터 다양한 특징을 추출하는 것이 가능하도록 더 확장되거나 또는 축소될 수 있다. 분석 준비된 고정된 크기의 이미지 데이터(analysis-ready fixed-size image data)는 커맨드(150)에 의해 명령된 대로 데이터 동작을 위하여 DRAM(113)에 저장된다.
일 실시 예에 따르면, 데이터 처리 유닛(120)은 뉴럴 코드 가속기(neural code accelerator)이다. 복수의 데이터 처리 유닛들(120)은 수신된 이미지 데이터 각각에 대하여 데이터를 처리하기 위하여 필요할 수 있다. 예를 들어, 10개의 이미지들이 커맨드(150)에 포함되어 애플리케이션으로부터 수신되는 경우, 총 10개의 데이터 처리 유닛들(120)이 CCU(110)에 의해 호출될 수 있다. 호출된 데이터 처리 유닛들(120)의 개수는 수신된 이미지 데이터의 개수와 반드시 일치할 필요는 없다. 데이터 처리 유닛들(120)의 가용성 및 현재 작업 부하에 따라, CCU(111)는 특정 개수의 데이터 처리 유닛들(120)을 호출할 수 있다. 일부 실시 예들에서, 데이터 처리는 데이터 처리 유닛들(120)의 가용성 및 작업 부하에 따라 병렬 또는 직렬로 동작하거나, 구분되거나, 또는 그룹화될 수 있다.
일 실시 예에 따르면, 데이터 처리 유닛들(120) 각각은 하나 또는 그 이상의 컨볼루션 엔진들(CEs; convolution engines)을 포함할 수 있다. 애플리케이션으로부터 수신된 이미지 데이터(예를 들어, 얼굴 이미지)는 여러 묶음으로(in batches) 데이터 처리 유닛들(120)로 입력되고, 컨볼루션 엔진들 각각은 여러 묶음으로 그룹화된 데이터 세트 각각에 대해 특징 세트들(feature sets)을 추출할 수 있다. 병렬로 추출된 특징 세트들은 그것들의 가중치들(weights)을 기반으로 연결될 수 있다. 특징 세트들의 재연결(reconnection) 동안, 각 특징 세트에 대한 컨볼루션 가중치 파라미터들이 가중치 버퍼(118)를 통해 DRAM(113)으로부터 로딩될 수 있다.
데이터 처리 유닛(120)은 덧셈기 트리들(adder trees) 및 선택적 풀링(optional pooling), 및 정류된 선형 유닛(ReLu; rectified linear unit)(121)을 더 포함하여 특징 세트들을 연산하고 연결하여 전-연결 뉴럴 계층들(fully-connected neural layers)을 연산할 수 있다. 본문에서 컨볼루션 뉴럴 네트워크(CNN; convolution neural network) 계층들로써 지칭되는 전-연결 뉴럴 계층들을 사용하여, 데이터 처리 유닛(120)은 특징 벡터(152)를 생성하고, DMA(115)를 통해 특징 벡터(152)를 DRAM(113)으로 전송할 수 있다. 특징 벡터(152)는 바이너리 벡터들로 변환되고, 메모리 어레이(130)에 저장될 수 있다. 특징 벡터(152)는 특징 벡터(152)를 압축하고, 추출된 특징들(예를 들어, 바이너리 코드)을 메모리 어레이(130)에 저장된 데이터베이스 이미지들에 대한 저장된 특징들과 비교하기 위하여 다른 처리 유닛(예를 들어, 시그니쳐 임계처리(114))에 의해 페치될 수 있다. 계층적 데이터 회수(hierarchical data retrieval)를 위하여, 바이너리 및 실제 특징 벡터들 모두가 메모리 어레이(130)에 저장될 수 있다.
일 실시 예에 따르면, 각 데이터 처리 유닛(120)에서 실행되는 정류된 선형 유닛(121)은 연관된 컨볼루션 엔진들로부터 수신된 주어진 입력들에 대한 활성화 함수(activation function)를 사용함으로써 정류기(rectifier)를 제공할 수 있다. 예를 들어, 정류된 선형 유닛들(121)은 심층 뉴럴 네트워크들(deep neural nets)을 사용하는 컴퓨터 비전(computer vision)에 적용될 수 있다.
도 2는 일 실시 예에 따른, 예시적인 뉴럴 코드 가속기(neural code accelerator)의 동작 관점을 보여주는 블록도이다. 뉴럴 코드 가속기(200)는 컨볼루션 및 풀링 필터들(convolution and pooling filters)(203), 전 연결 계층(fully connected layer)(204), 및 시그니쳐 임계처리 유닛(signature thresholding unit)(205)을 포함한다. 뉴럴 코드 가속기(200)는 PCA(principal component analysis) 계층(206)을 선택적으로 포함할 수 있다. 뉴럴 코드 가속기는 도 1에 도시된 데이터 처리 유닛(120)일 수 있다.
뉴럴 코드 가속기(200)는 호스트 컴퓨터 또는 중앙 제어 유닛(예를 들어, 도 1의 CCU(111))로부터의 데이터 버퍼(예를 들어, 서브미션 큐)로부터 입력 데이터(201)를 수신할 수 있다. 선-프로세서(202)(예를 들어, 도 1에 도시된 선-프로세서(112))는 입력 데이터(201)를 수신할 수 있다. 입력 데이터(201)는 텍스트, 이미지, 비디오, 및 오디오 데이터를 포함하나 이에 한정되지 않는 임의의 형태의 데이터일 수 있다. 일부 실시 예들에 따르면, 선-프로세서(202)는 뉴럴 코드 가속기(200)로 집적되거나 또는 일부 일 수 있다. 이미지 데이터에 대하여, 선-프로세서(202)는 입력 데이터(201)의 초기 처리를 수행하여 입력 데이터(201)를 로우 RGB 포맷(raw RGB format)으로 변환하고, 이미지를 고정된 크기(fixed dimension)로 확장 또는 축소할 수 있다. 컨볼루션 및 풀링 필터들(203)은 컨볼루션 필터들의 세트를 사용하여 변환된 및/또는 크기가 조정된 데이터에 대한 데이터 처리를 수행할 수 있다. 컨볼루션 및 풀링 필터들(203)로부터의 출력은 하나 또는 그 이상의 특징들(207)일 수 있다. 특징들(207)은 전 연결 계층(204)로 입력된다. 전 연결 계층(204)은 특징들(207)을 기반으로 특징 벡터(208)를 생성할 수 있고, 특징 벡터(208)를 시그니처 임계 처리 유닛(205)으로 입력하고, PCA 계층(206)으로 선택적으로 입력할 수 있다. 시그니처 임계 처리 유닛(205)은 하나 또는 그 이상의 바이너리 코드들(210)을 생성할 수 있다. 예를 들어, 뉴럴 코드 가속기(200)로 입력된 이미지 데이터에 대하여, 전 연결 계층(204)은 특징 벡터(208)를 생성할 수 있고, 시그니처 임계처리 유닛(205)은 미리 정해진 기준치를 기반으로 특징 벡터(208)의 활성화들을 완결시킴으로써 뉴럴 바이너리 코드들(201)를 생성할 수 있다. 기준치는 사용자, 트레이닝, 또는 기계 학습에 의해 미세-조정될 수 있다. PCA 계층(206)은 출력 특징 벡터(208)를 압축하여 압축된 특징 벡터들(211)을 생성할 수 있다.
일 실시 예에 따르면, 컨볼루션 엔진들은 데이터 스토리지 장치 내에서 데이터 매칭 및/또는 심층 학습 동작들을 내부적으로 수행할 수 있다. 예를 들어, 데이터 스토리지 장치는 복수의 GPU들을 포함할 수 있고, GPU들 각각은 입력 계층(input layer), 히든 계층(hidden layer), 및 출력 계층(output layer)으로 그룹화된 하나 또는 그 이상의 컨볼루션 엔진들을 포함할 수 있다.
도 3은 하나 또는 그 이상의 컨볼루션 엔진들(CEs; convolution engines)을 실행하도록 구성된 예시적인 GPU를 보여준다. GPU(300)는 K-평균 또는 회귀(K-means or regression)와 같은 고정된 알고리즘으로 미리-프로그램된 하나 또는 그 이상의 CE들을 구동할 수 있다. CE들의 제1 그룹은 입력 계층(301)으로써 구현되고, CE들의 제2 그룹은 히든 계층(302)으로써 구현되고, CE들의 제3 그룹은 출력 계층(303)으로써 구현된다. 입력 계층(301)으로부터 히든 계층(302)을 통한 출력 계층(303)까지의 데이터 경로들은 전진 경로(forward path) 또는 추론 경로(inference path)를 제공한다. 출력 계층(303)으로부터 히든 계층(302)을 통한 입력 계층(301)까지의 데이터 경로들은 백워드(backward) 또는 트레이닝 경로를 제공한다. GPU(300)에서 구현된 CE들이 다양한 분석 및 심층 학습에 적용될 수 있는 K-평균 또는 회귀와 같은 알고리즘들로 미리 프로그램되어 있기 때문에, 애플리케이션은 특정 알고리즘을 다운로드할 필요 없이 GPU(300)를 직접적으로 활용할 수 있다. GPU(300)를 실행하는 데이터 스토리지 장치는 기계 학습 기능을 특징으로 갖는 소비자 장치 또는 홈 디바이스일 수 있다.
일 실시 예에 따르면, 데이터 스토리지 장치는 추가적인 데이터 매칭 로직(예를 들어, XOR) 및 DMA 엔진들을 포함한다. 데이터 스토리지 장치는 실시간으로 또는 배경 작업으로 데이터 매칭을 수행할 수 있다. 애플리케이션은 매칭 데이터에 대한 하나 또는 그 이상의 파라미터들(예를 들어, 로우 바이너리 값들)을 데이터 스토리지 장치로 제공할 수 있고, 데이터 스토리지 장치는 데이터에 대한 패턴 매칭을 내부적으로 실행하고 완료할 수 있고, 메모리 어레이에 저장된 매칭 데이터를 애플리케이션으로 반환(return)할 수 있다. 일부 실시 예들에서, 데이터 스토리지 장치는 NAND 어레이의 뱅크/채널 당 하나의 데이터 매칭(XOR) 엔진을 포함할 수 있다. 예를 들어, 데이터 스토리지 장치가 메모리 어레이(예를 들어, NAND 어레이)의 N개의 독립적인 채널들/뱅크들을 사용하는 경우, 총 N개의 XOR 엔진들이 각 NAND 채널로부터의 데이터를 매칭시키는데 사용될 수 있다. 이 때, N은 정수이다.
도 4는 일 실시 예에 따른, XOR 엔진을 포함하는 예시적인 데이터 스토리지 장치를 보여준다. 데이터 스토리지 장치(400)는 호스트 컴퓨터로/로부터 데이터자체를 이동시키고 처리할 수 있는 NVMeoF 장치일 수 있다. 호스트 컴퓨터는 애플리케이션을 구동하고, 패브릭 인터페이스를 통해 스토리지 장치(400)와 통신할 수 있다. 데이터 스토리지 장치(400)는 호스트 인터페이스(401)(예를 들어, U.2 커넥터)를 통해 호스트 컴퓨터와 접속하는 호스트 관리자(402), DRAM 컨트롤러 및 메모리 인터페이스(예를 들어, DDR3 및 DDR4)를 포함하는 버퍼 관리자(403), DMA 엔진(406) 및 XOR 엔진(407)을 포함하는 메모리 관리자(404)(예를 들어, 플래시 관리자), CPU 서브시스템(405), 및 메모리 어레이(410)(예를 들어, 플래시 메모리)를 포함할 수 있다.
XOR 엔진(407)은 애플리케이션으로부터 수신된 데이터 매칭 요청에 응답하여 인-라인 데이터 매칭(in-line data matching)을 수행하도록 구성된다. 인-라인 데이터 매칭 동작을 수행한 이후에, 데이터 스토리지 장치(400)는 커넥터(401)를 통해 요청한 애플리케이션으로 매칭 데이터를 제공할 수 있다. XOR 엔진(407)은 메모리 관리자(404)의 기존 하드웨어 로직에서 구현될 수 있다. 이는 XOR 엔진(407)을 구현하는데 추가적인 하드웨어 로직이 필요하지 않기 때문에 비용 측면에서 효율적이다. DMA 엔진(406)은 요청한 애플리케이션으로 매칭 데이터를 전송하는데 사용될 수 있다.
도 5는 일 실시 예에 따른, 기계 학습을 위한 GPU를 포함하는 예시적인 데이터 스토리지 장치를 보여준다. 데이터 스토리지 장치(500)는 호스트 컴퓨터로/로부터 데이터 자체를 이동시키고 처리할 수 있는 NVMeoF 장치일 수 있다. 호스트 컴퓨터는 데이터 스토리지 장치(500)와의 통신 경로를 제공하는 패브릭을 통해 애플리케이션을 구동할 수 있다. 데이터 스토리지 장치(500)는 CPU 서브 시스템(505), 호스트 인터페이스(501)(예를 들어, U.2 커넥터)를 통해 호스트 컴퓨터와 접속하는 호스트 관리자(502), DRAM 컨트롤러 및 메모리 인터페이스(예를 들어, DDR3 및 DDR4)를 포함하는 버퍼 관리자(503), DMA 엔진(506), XOR 엔진(507), 및 하나 또는 그 이상의 GPU들(508a~508n)을 포함하는 메모리 관리자(504)(예를 들어, 플래시 관리자)를 포함할 수 있다. 메모리 관리자(504)는 DMA 엔진(506), XOR 엔진(507), 및 GPU들(508)을 사용하여 메모리 어레이(510)(예를 들어, 플래시 메모리)로의 액세스를 제어할 수 있다. GPU들은 도 3에 도시된 바와 같은 입력 계층, 히든 계층, 및 출력 계층에서 컨볼루션 엔진(CE; convolution engine)으로서 기능하도록 구성될 수 있다. GPU들을 구현하는 데이터 스토리지 장치는 기계 학습 기능을 특징으로 가질 수 있는 소비자 장치 또는 홈 디바이스일 수 있다.
일 실시 예에 따르면, 본 발명의 데이터 스토리지 장치는 메모리 어레이에 이미지들을 저장할 수 있고, 호스트 컴퓨터로부터의 이미지 회수 요청(image retrieval request)에 응답하여, 이미지 회수 애플리케이션을 내부적으로 실행할 수 있다. 다른 실시 예들에서, 스토리지 장치는 텍스트, 오디오, 또는 비디오 등과 같은 다른 형태의 데이터를 저장할 수 있다. 여기에서, 이미지 데이터가 예시적으로 사용될 것이며, 당업자는 다른 데이터 형태들 또한 본 발명의 기술적 사상에 적용될 수 있음을 이해할 것이다.
일 실시 예에 따르면, 데이터 스토리지 장치는 하나 또는 그 이상의 컨볼루션 뉴럴 네트워크(CNN; convolution neural network) 엔진들을 사용하여 수신된 이미지 데이터로부터 특징들을 추출할 수 있다. 도 1을 참조하면, CNN은 데이터 스토리지 장치(100)에 포함된 컨볼루션 엔진들의 모음을 가리킨다. 데이터 스토리지 장치(100)의 메모리 어레이(130)는 이미지 쿼리 검색 및 회수 절차(retrieval process) 동안, 요청된 이미지 데이터에 대한 해밍 거리(Hamming distances)를 연산하기 위하여 검색 가능한 이미지 디스크립터 인덱스 값들 및 다른 값들을 갖는 이미지들을 포함할 수 있다.
CNN 엔진들은 데이터 스토리지 장치에 저장된 데이터베이스 이미지들에 대한 문의(interrogation) 및/또는 비교(comparison)를 위하여 사용될 수 있는 바이너리 뉴럴 코드(binary neural code)(본문에서 바이너리 키(binary key)로도 지칭됨)를 생성할 수 있다. 일 실시 예에서, 바이너리 뉴럴 코드는 각각의 저장된 이미지 데이터 의 메타 데이터에 저장된 키를 가리킨다. CNN 엔진들은 더 나은 품질의 키를 제공할 수 있다. 일 실시 예에서, 키는 부분적인 결과를 생성하기 위해 다른 곳에서 수행되는 심층 학습에 의해 생성될 수 있다. 심층 학습 또는 이미지 처리가 좀 더 많이 발생할수록, 좀 더 많은 정제된 키들(refined keys)이 생성될 수 있고, 이미지 회수 절차가 좀 더 빠르고 좀 더 효율적으로 처리될 수 있다.
일 실시 예에 따르면, 바이너리 키들의 생성은 입력 데이터의 다양한 형태들, 크기들, 및 타입들을 사용할 수 있다. 예를 들어, 데이터 스토리지 장치의 선-프로세서는 입력 이미지의 포맷을 고정된 크기의 포맷(예를 들어, RGB 256×256 비트맵)로 변환할 수 있다. 다른 타입들의 데이터(예를 들어, 텍스트, 오디오, 또는 비디오 데이터)에 대하여, 다른 재포맷화 또는 일반화 절차(reformatting or normalization process)가 선-프로세서에 의해 수행되어, 데이터 타입에 따라 그리고, 당업자에 의해 인식될 수 있는 바와 같이 입력 데이터를 포맷화할 수 있다. 선-처리된 입력 이미지 (또는 다른 데이터)는 CNN 엔진들로 입력된다. CNN 엔진들은 하나 또는 그 이상의 바이너리 코드들을 추출하면서 입력 이미지를 반복적으로 처리한다. 추출된 바이너리 코드들은 데이터 스토리지 장치에 저장된 매칭 데이터를 검색하고 선택하기 위하여 입력 이미지(또는 다른 데이터)와 연관된 메타 데이터에 위치한다.
일 실시 예에 따르면, 검색 및 선택 절차는 검색 값을 수신하고, 검색 시그니쳐(search signature)를 생성하고, 검색 시그니처와 기존 시그니처를 비교할 수 있다. 일 실시 예에서, 검색 절차는 해밍 거리들을 연산하고, 기준값(threshold value)보다 작은 해밍 거리를 갖는 매칭 데이터를 선택할 수 있다. 해밍 공간(Hamming space)에서 k-최단 이웃 검색(k-nearest neighbor search)을 기반으로 하는 바이너리 검색 및 선택 알고리즘은 이 기술 분야, 예를 들어, "Fast Exact Search in Hamming Space with Multi-Index Hashing"“ IEEE Transactions on Pattern Analysis and Machine Intelligence archive, volume 36 Issue 6, June 2014, page 1107-1119의 논문의 기술 분야에서 잘 알려져 있다.
도 6a 및 도 6b는 일 실시 예에 따른, 예시적인 이미지 검색 쿼리 및 회수 절차의 순서도를 보여준다. 애플리케이션(600)은 샘플 이미지를 데이터 스토리지 장치에 제출한다. 애플리케이션(600)은 이미지 및 연관된 쿼리 정보를 서브미션 큐(SQ; submission queue)에 놓음으로써 검색 요청을 데이터 스토리지 장치로 제출한다.
서브미션 큐는 애플리케이션(600)으로부터 제출된 복수의 검색 요청들을 포함할 수 있고, 애플리케이션(600)은 복수의 서브미션 큐들을 데이터 스토리지 장치로 제출할 수 있다. 서브미션 큐들은 다양한 방식으로 데이터 스토리지 장치로 제출될 수 있다. 예를 들어, 서브미션 큐들은 미리 정해진 구간에서 또는 선착순 방식(first-come first-serve basis)으로 데이터 스토리지 장치에 의해 소모될 수 있다. 다른 예에서, 데이터 스토리지 장치는 애플리케이션(600)으로부터의 메시지를 통해 서브미션 큐들이 전송 준비되었음을 알 수 있고, 데이터 스토리지 장치는 한번에 하나씩 서브 미션 큐들을 제공받을 수 있다. 긴급성(urgency) 또는 우선순위(priority)에 따라, 서브미션 큐들은 재배열될 수 있고, 서브미션 큐의 검색 요청들은 재배열될 수 있다.
애플리케이션(600)으로부터의 서브미션 큐는 서브미션 큐에 포함된 요청과 연관된 커맨드를 포함할 수 있다. 예를 들어, 데이터 스토리지 장치는 NVMeoF 장치이고, NVMeoF 장치는 커맨드가 이미지 검색 쿼리를 위한 NVMeoF 커맨드인것으로 판별한다(601). NVMeoF 장치는 애플리케이션으로부터 다양한 NVMeoF 커맨드들을 수신할 수 있고, NVMeoF 장치는 추가 처리를 위하여 수신된 NVMeoF 커맨드들로부터 이미지 검색 쿼리를 판별할 수 있다.
일 실시 예에 따르면, 데이터 스토리지 장치는 애플리케이션(600)으로부터 수신된 서브미션 큐들 사이를 중재(arbitrate)할 수 있다(602). 일 실시 예에서, 연관된 커맨드의 후속 선택 및 중재는 도 1에 도시된 중앙 제어 유닛(111)에 의해 수행될 수 있다. 데이터 스토리지 장치에 의한 중재(arbitration)는 서브미션 큐들로부터 추출할 서브미션 큐를 판별한다. 서브미션 큐가 중재에 의해 추출된 경우, 데이터 스토리지 장치는 서브미션 큐에 포함된 요청을 처리하기 위한 적절한 I/O 요청 커맨드를 판별한다(603). 서브미션 큐를 처리하기 위한 I/O 요청 커맨드가 이미지 검색 쿼리 커맨드인 경우(604), 데이터 스토리지 장치는 선-처리 절차(606)를 시작하여 이미지 검색 요청과 일치하는 이미지들을 회수한다. 일 실시 예에서, 선-처리 절차(606)는 집적된 선-프로세서, 예를 들어, 도 1에 도시된 선-프로세서(112)에 의해 수행된다. 서브미션 큐를 처리하기 위한 I/O 요청 커맨드가 이미지 검색 쿼리 커맨드, 예를 들어, 데이터 스토리지 장치에 저장된 데이터로의 읽기/쓰기 요청이 아닌 경우, 데이터 스토리지 장치는 서브미션 큐와 연관된 요청을 일반 요청으로 간주하고, 그것을 일반적으로 처리한다(605).
일 실시 예에 따르면, 데이터 스토리지 장치는 처리 준비 단계에서, 이미지 검색 요청을 선-처리하여 서브미션 큐에 수신된 이미지의 크기를 일반화된 포맷(normalized format)으로 감소시킨다. 예를 들어, 데이터 스토리지 장치는 이미지를 YUV 컬러 포맷으로부터 RGB 컬러 포맷으로 변환하고, 변환된 이미지를 256×256 픽셀 이미지로 크기를 더 조정한다(607). 데이터 스토리지 장치는 이러한 중간 이미지(intermediate image)를 단색 비트맵 이미지(monochromatic bitmap image)로 변환하고, 가장자리를 선명하게 하여 일반화된 이미지를 생성할 수 있다(608). 데이터 스토리지 장치는 일반화된 이미지 및 연관된 검색 기준들(search criteria)을 입력 버퍼(609)로 입력하여 특징 추출 절차(610)를 수행한다.
특징 추출 절차(610)는 데이터 스토리지 장치 내부에 있는 CNN 엔진의 활성화와 함께 시작한다(611). 예를 들어, CNN 엔진은 도 1에 도시된 컨볼루션 엔진과 대응한다. CNN 엔진은 일반화된 이미지를 CNN 계층들로 불려지는 하나 또는 그 이상의 절차적 축소 계층들(procedural reduction layers)로 제출하여 일반화된 이미지로부터 특정한 특징들을 추출한다. 각 CNN 계층에 대하여, CNN 엔진은 뉴럴 디스크립터를 연산하고(613), 뉴럴 디스크립터(614)를 압축하고(614), 출력 버퍼에 결과를 저장한다(615). 이러한 절차들(613~615)은 모든 CNN 계층들에 대하여 반복적으로 계속된다.
모든 CNN 계층들이 완료된 경우(612), 데이터 스토리지 장치(예를 들어, 도 1의 처리 유닛(120) 또는 CNN 엔진)은 검색 절차(616)를 개시한다. 검색 절차(616)는 데이터 저장 장치(618)에 저장된 데이터 세트로부터 이미지를 페치하는 것(618)과 함께 시작한다. 이미지를 페치한 이후에, 검색 절차(616)는 페치된 이미지로부터의 메타 데이터를 분석하고(619), 저장된 특징들을 추출한다(620). 페치된 이미지에 대한 저장된 특징들은 추출 절차(610)에 의해 추출된 부분적인 특징들일 수 있다. 검색 절차(616)는 특징 추출 절차(610)에서 추출된 특징들을 쿼리의 연관된 검색 기준과 조합하여 키 값들로서 활용한다.
데이터 스토리지 장치는 데이터 스토리지 장치의 메모리 어레이에 저장된 데이터 세트로부터의 후보 데이터베이스 이미지들을 연속하여 평가할 수 있고, 검색 기준들을 기반으로 후보 데이터베이스 이미지들의 저장된 특징들(예를 들어, 키들)과 특징 추출 절차(610)에서 이미지 데이터의 추출된 특징들을 비교할 수 있고(621), 해밍 거리들을 연산하여 후보 데이터베이스 이미지들 각각에 대한 매칭의 정확성(closeness of match)을 판별할 수 있다(622). 연산된 해밍 거리들은 선택 절차(624)를 위하여 출력 버퍼에 저장된다(623). 이러한 절차들(618-623)은 데이터 스토리지 장치가 매칭의 정확성으로서 해밍 거리들을 사용하여 알고리즘적으로 평가할 수 있는 후보 쿼리 응답들의 리스트를 생성하도록 반복된다.
검색 절차(616)는 데이터 세트의 크기, 반환할 정확한 매칭들의 개수를 포함하나, 이에 한정되지 않는 다양한 파라미터들에 따라 다양한 방식으로 검색 쿼리들을 처리할 수 있다. 일 실시 예에 따르면, 검색 절차(616)는 바이너리 코드들을 검색한다. 예를 들어, 검색 절차(616)는 바이너리 코드 유사성 측정을 위하여 해밍 거리 내의 검색 쿼리의 K-최단 이웃들(K는 최단 이웃들의 수임.)을 사용한다. 바이너리 코드들은 반드시 해밍 공간 상에서 균일하게 분포되는 것은 아니다. 그러므로, 검색 절차(616)는 K개의 매칭 데이터의 탐색을 보장하기 위하여 고정된 해밍 반지름(Hamming radius)을 설정할 수 없을 수 있다. 검색 절차(616)에서 사용되는 최대 해밍 반지름(the maximum Hamming radius)은 K개의 데이터, 바이너리 코드의 길이, 및 이미지 쿼리에 의존할 수 있다. 일반적으로, 바이너리 코드가 길어질수록, 최대 반지름이 커진다.
일 실시 예에 따르면, 검색 절차(616)는 다양한 방식을 사용하여 K개의 데이터의 탐색을 보장할 수 있다. 검색 절차(616)를 설명하면서, 이하의 정의들에 따라 이하의 용어가 사용될 것이다. Q는 바이너리 코드의 길이이고, S는 바이너리 코드의 부분 열(substring)이고, R은 해밍 반지름이고, N은 데이터 세트의 크기이고, K는 검색할 또는 검색될 최단 이웃들의 개수이다.
일 실시 예에 따르면, 검색 절차(616)는 재-등급(re-ranking)과 함께 또는 재-등급 없이 병렬 선형 스캔(parallel linear scan)를 적용한다. 병렬 선행 스캔 동안, 검색 절차(616)는 해밍 반지름(R)보다 작은 K개의 이웃들이 검색될 때까지 모든 바이너리 코드를 비교한다. 예를 들어, 최적 해밍 반지름(R)은 수학식 1에 의해 획득될 수 있다.
그러나 검색 절차(616)는 데이터 세트 및 검색 기준을 기반으로 상수(0.1)를 수정하고 조정할 수 있다. 예를 들어, 바이너리 코드가 64-비트 길이이고, 검색 절차(616)가 10개의 최단 이웃들을 검색하는 경우, 검색 절차(616)는 수학식 2에 의한 값까지의 해밍 반지름을 갖는 데이터를 수집할 수 있다.
다른 실시 예에서, 바이너리 코드가 128-비트 길이이고, 검색 절차(616)가 1000개의 최단 이웃들을 검색할 경우, 검색 절차(616)는 수학식 3에 의한 값까지의 해밍 반지름을 갖는 데이터를 수집할 수 있다.
이 경우에서, 검색 절차(616)가 제1 K 이웃들을 탐색하는 것에 중점을 두기 때문에, 검색 절차(616)는 1000개의 최단 이웃들을 반환하거나 또는 반환하지 않을 수 있다. 비록 이러한 절차가 효율적이지 않을 수 있으나, 이러한 절차는 바이너리 코드들 및 이미지의 주소에 대한 최소의 저장 공간을 갖는 가장 간단한 방식이다. 일 실시 예에서, 검색 절차(616)는 다른 바이너리 코드 청크들에 대한 작업을 위해 복수의 병렬 XOR 엔진들을 사용하여 검색 절차가 매칭 데이터를 효율적이고 빠르게 검색하는 것을 용이하게 할 수 있다.
일 실시 예에 따르면, 검색 절차(616)는 단일 해시 테이블(single hash table)을 사용한다. 짧은 길이의 바이너리 코드(예를 들어, 16~32 비트들)가 사용되는 경우, 그리고 데이터 세트가 큰 경우(예를 들어, 10^9보다 큰 이미지들), 검색 절차(616)는 바이너리 코드 인덱싱을 위하여 단일 해시 테이블을 사용할 수 있다. 검색 절차(616)는 1의 해밍 반지름 및 동일한 바이너리 코드를 포함하는 엔트리들을 검색한다. 이러한 경우, 많은 엔트리들이 비어있을 수 있다.
일 실시 예에 따르면, 검색 절차(616)는 멀티-인덱스 해시 테이블을 사용한다. 이러한 경우에서, 검색 절차(616)는 복수의 작은 해시 테이블들을 생성하고, 바이너리 코드 부분 열들을 기반으로 그것들을 인덱스(index)할 수 있다. 일 실시 예에서, 검색 절차(616)는 바이너리 코드의 Q 비트들을 M개의 공통 원소를 갖지 않는 부분 열들(disjoint substrings)로 구분한다. 부분 열 길이(S)는 수학식 4와 (N)에 의해 선택된다.
검색 쿼리가 도착할 경우, 검색 절차(616)는 모든 M 해시 테이블들과 함께 쿼리 바이너리 코드를 체크한다. 각 해시 테이블에서, 검색 절차(616)는 R'=R/M 거리를 갖는 엔트리들을 체크할 수 있다.
예를 들어, 데이터 세트는 약 200만개의 이미지들을 포함하고, 64-비트 바이너리 코드가 사용되고, 검색 절차(616)는 100개의 최단 이웃들을 검색한다. 이러한 경우, 검색 절차(616)는 바이너리 코드를 21(log2(2M)) 비트 부분 열들로 구분하고, 3개의 해시 테이블들이 요구된다. 최적 R 값은 [R=0.1×64+log10(100) = 9 bits]에 의해 획득될 수 있고, R'은 [9/3=3]일 수 있다. 이러한 경우에서, 쿼리 바이너리 코드는 3개의 조각들로 구분되고, 검색 절차(616)는 각 해시 테이블에서 3의 해밍 반지름을 검색한다.
일 실시 예에 따르면, 데이터 스토리지 시스템은 복수의 데이터 스토리지 장치들을 포함할 수 있다. 프론트-엔드의(front-end) 데이터 스토리지 장치는 캐시와 같이 동작할 수 있고, 해시 테이블을 유지할 수 있다. 해시 테이블들을 검색하는 것으로부터 반환된 데이터를 기반으로, 검색 절차(616)는 이미지 검색 요청과 일치하는 이미지들을 회수하기 위하여 메인 데이터 저장소를 액세스할 수 있다.
데이터 스토리지 장치가 저장된 후보 이미지들 모두를 조사한(617) 이후에, 선택 절차(624)가 시작된다. 선택 절차(624)는 후보 이미지들에 대하여 연산된 해밍 거리들 및 기준 값을 비교한다(626). 선택 절차(624)에서 사용되는 기준 값은 임의 상수(arbitrary constant)이거나 또는 이미지 검색 쿼리와 함께 제공된다. 해밍 거리가 기준 값보다 작은 경우(627), 이미지가 선택되고(628), 선택된 이미지가 출력 버퍼에 저장된다(629). 이러한 절차들(625~629)은 선택된 이미지들의 리스트를 생성하기 위해 반복되고, 데이터 스토리지 장치는 요청한 애플리케이션(600)으로 리스트를 반환한다.
일 실시 예에 따르면, 데이터 스토리지 장치는 데이터를 저장하는 메모리 어레이; 애플리케이션을 구동하는 호스트 컴퓨터와의 접속을 제공하는 호스트 인터페이스; 애플리케이션으로부터 서브미션 큐의 커맨드를 수신하고, 검색 쿼리 커맨드에 응답하여 검색 절차를 개시하도록 구성된 중앙 제어 유닛; 데이터의 타입을 기반으로 검색 쿼리 커맨드에 포함된 데이터를 재포맷화하고, 재포맷화된 데이터를 생성하도록 구성된 선-프로세서; 및 재포맷화된 데이터로부터 하나 또는 그 이상의 특징들을 추출하고, 검색 쿼리 커맨드에 응답하여 메모리 어레이에 저장된 데이터에 대한 데이터 동작을 수행하고, 호스트 인터페이스를 통해 애플리케이션으로 메모리 어레이에 저장된 데이터로부터 매칭 데이터를 반환하도록 구성된 하나 또는 그 이상의 데이터 처리 유닛들을 포함한다.
데이터 스토리지 장치는 패브릭을 통한 불휘발성 메모리 익스프레스(NVMeoF; non-volatile memory express over fabrics) 장치일 수 있다.
검색 쿼리 커맨드는 이더넷 연결을 통해 수신된 NVMeoF 커맨드일 수 있다.
검색 쿼리 커맨드는 이미지 데이터를 포함할 수 있고, 선-프로세서는 RGB 포맷으로 이미지 데이터를 변환하도록 구성될 수 있다.
하나 또는 그 이상의 데이터 처리 유닛들은 하나 또는 그 이상의 추출된 특징들과 대응하는 복수의 바이너리 코드들을 생성하고, 하나 또는 그 이상의 추출된 특징들을 입력 버퍼에 저장하도록 구성될 수 있다.
하나 또는 그 이상의 데이터 처리 유닛들 각각은 하나 또는 그 이상의 컨볼루션 엔진들(CEs; convolution engines)을 포함할 수 있다. 하나 또는 그 이상의 컨볼루션 엔진들 각각은 컨볼루션 뉴럴 네트워크(CNN; convolution neural network) 계층에서 하나 또는 그 이상의 특징들을 추출하도록 구성될 수 있다.
하나 또는 그 이상의 컨볼루션 엔진들 각각은 각 컨볼루션 뉴럴 네트워크(CNN) 계층에 대하여 뉴럴 디스크립터(neural descriptor)를 연산하고, 뉴럴 디스크립터를 압축하고, 하나 또는 그 이상의 추출된 특징들을 출력 버퍼에 저장하도록 구성될 수 있다.
하나 또는 그 이상의 데이터 처리 유닛들은 메모리 어레이에 저장된 데이터에 대한 저장된 특징들을 추출하고, 저장된 특징들과 재포맷화된 데이터의 추출된 특징들을 비교하도록 더 구성될 수 있다.
하나 또는 그 이상의 데이터 처리 유닛들은 메모리 어레이에 저장된 데이터 각각에 대한 해밍 거리(Hamming distance)를 연산하도록 더 구성될 수 있다.
하나 또는 그 이상의 데이터 처리 유닛들은 해밍 거리를 기반으로 메모리 어레이에 저장된 데이터로부터 매칭 데이터를 선택하고, 매칭 데이터를 출력 버퍼에 저장하고, 호스트 인터페이스를 통해 애플리케이션으로 매칭 데이터를 전송하도록 더 구성될 수 있다.
데이터 스토리지 장치는 메모리 어레이에 저장된 데이터에 대한 기계 학습을 수행하도록 구성된 하나 또는 그 이상의 그래픽 처리 유닛들(GPUs; graphic processing units)을 포함하는 메모리 관리자를 더 포함할 수 있다.
데이터 스토리지 장치의 동작 방법은 호스트 컴퓨터에서 구동하는 애플리케이션으로부터 서브미션 큐의 커맨드를 수신하는 단계; 검색 쿼리 커맨드에 응답하여 검색 절차를 개시하는 단계; 데이터의 타입을 기반으로 검색 쿼리 커맨드에 포함된 데이터의 포맷을 변경함으로써 재포맷화된 데이터를 생성하는 단계; 재포맷화된 데이터로부터 하나 또는 그 이상의 특징들을 추출하는 단계; 검색 쿼리 커맨드에 응답하여 데이터 스토리지 장치의 메모리 어레이에 저장된 데이터에 대한 데이터 동작을 수행하는 단계; 호스트 컴퓨터 및 데이터 스토리지 장치 사이에 설정된 호스트 인터페이스를 통해 메모리 어레이에 저장된 데이터로부터 매칭 데이터를 애플리케이션으로 반환하는 단계를 포함한다.
데이터 스토리지 장치는 패브릭을 통한 불휘발성 메모리 익스프레스(NVMeoF; non-volatile memory express over fabrics) 장치일 수 있다.
검색 쿼리 커맨드는 이더넷 연결을 통해 수신된 NVMeoF 커맨드일 수 있다.
방법은 검색 쿼리 커맨드에 포함된 이미지 데이터를 RGB 포맷으로 변환하는 것을 더 포함할 수 있다.
방법은 하나 또는 그 이상의 추출된 특징들과 대응하는 복수의 바이너리 코드들을 생성하는 단계; 및 하나 또는 그 이상의 추출된 특징들을 입력 버퍼에 저장하는 단계를 더 포함할 수 있다.
특징들은 데이터 스토리지 장치의 하나 또는 그 이상의 컨볼루션 엔진들(CEs; convolution engines)을 사용하여 추출될 수 있다. 하나 또는 그 이상의 컨볼루션 엔진들 각각은 컨볼루션 뉴럴 네트워크(CNN; convolution neural network) 계층에서 하나 또는 그 이상의 특징들을 추출할 수 있다.
하나 또는 그 이상의 컨볼루션 엔진들 각각은 각 컨볼루션 뉴럴 네트워크(CNN) 계층에 대하여 뉴럴 디스크립터(neural descriptor)를 연산하고, 뉴럴 디스크립터를 압축하고, 하나 또는 그 이상의 추출된 특징들을 출력 버퍼에 저장하도록 구성될 수 있다.
방법은 메모리 어레이에 저장된 데이터에 대한 저장된 특징들을 추출하는 단계; 및 저장된 특징들과 재포맷화된 데이터의 추출된 특징들을 비교하는 단계를 더 포함할 수 있다.
방법은 메모리 어레이에 저장된 데이터 각각에 대한 해밍 거리(Hamming distance)를 연산하는 단계를 더 포함할 수 있다.
방법은 해밍 거리를 기반으로 메모리 어레이에 저장된 데이터로부터 매칭 데이터를 선택하는 단계; 매칭 데이터를 출력 버퍼에 저장하는 단계; 및 호스트 인터페이스를 통해 애플리케이션으로 매칭 데이터를 전송하는 단계를 더 포함할 수 있다.
데이터 스토리지 장치는 메모리 어레이에 저장된 데이터에 대한 기계 학습을 수행하도록 구성된 하나 또는 그 이상의 그래픽 처리 유닛들(GPUs; graphic processing units)을 포함하는 메모리 관리자를 더 포함할 수 있다.
결과적인 방법, 절차, 장치, 소자, 제품, 및/또는 시스템은 간단하고, 비용 효율이 높고, 복잡하지 않고, 용도가 다양하고, 정확하고, 고감도이고, 효율적일 뿐만 아니라, 준비, 효율, 경제적인 생산, 응용, 및 활용을 위하여 알려진 구성들을 적용함으로써 구현될 수 있다. 본 발명의 실시 예들의 다른 중요한 사상은 비용 절감, 시스템의 단순화, 및 성능 향상의 추세를 유용하게 지원하고 제공할 수 있다는 것이다. 본 발명의 실시 예의 이러한 그리고 다른 가치있는 측면들은 기술적 상태를 적어도 다음 단계로 나아가게 한다.
본 발명이 특정한 최상의 상태와 함께 설명되었으나, 다양한 대안들, 변형들, 및 변화들이 앞서 설명의 관점에서 당업자가 알 수 있음이 이해될 것이다. 따라서, 첨부된 특허청구범위 내에 속하는 모든 대안들, 변형들, 및 변화들을 아우르는 것으로 의도된다. 첨부된 도면들에 개시되거나 본문에 개재된 모든 사항은 예시적이며 비-제한적인 의미로 해석되어야 한다.
Claims (10)
- 데이터 스토리지 장치의 동작 방법에 있어서,
상기 데이터 스토리지 장치에서, 호스트 컴퓨터에서 구동하는 애플리케이션으로부터, 상기 호스트 컴퓨터 및 상기 데이터 스토리지 장치 사이의 데이터 통신 경로를 통해, 서브미션 큐의 커맨드를 수신하는 단계, 상기 데이터 통신 경로는 NVMeoF(non-volatile memory express over fabrics)와 호환되고;
상기 데이터 스토리지 장치에서, 검색 쿼리 커맨드에 응답하여 검색 절차를 개시하는 단계;
상기 데이터 스토리지 장치에서, 상기 검색 쿼리 커맨드에 포함된 데이터의 타입을 기반으로 상기 검색 쿼리 커맨드에 포함된 상기 데이터의 포맷을 변경함으로써 재포맷화된 데이터를 생성하는 단계;
상기 데이터 스토리지 장치에서, 상기 재포맷화된 데이터로부터 하나 또는 그 이상의 특징들을 추출하는 단계;
상기 데이터 스토리지 장치에서, 상기 검색 쿼리 커맨드에 응답하여 상기 데이터 스토리지 장치의 메모리 어레이에 저장된 데이터에 대한 데이터 동작을 수행하는 단계; 및
상기 데이터 스토리지 장치에서, 상기 호스트 컴퓨터 및 상기 데이터 스토리지 장치 사이의 상기 데이터 통신 경로를 통해 상기 메모리 어레이에 저장된 상기 데이터로부터의 매칭 데이터를 상기 애플리케이션으로 반환하는 단계를 포함하는 방법. - 제 1 항에 있어서,
상기 데이터 스토리지 장치는 패브릭을 통한 불휘발성 메모리 익스프레스(NVMeoF; non-volatile memory express over fabrics) 장치인 방법. - 제 2 항에 있어서,
상기 검색 쿼리 커맨드는 이더넷 연결(Ethernet connection)을 통해 수신된 NVMeoF 커맨드인 방법. - 제 1 항에 있어서,
상기 검색 쿼리 커맨드에 포함된 이미지 데이터를 RGB 포맷으로 변환하는 단계를 더 포함하는 방법. - 제 1 항에 있어서,
상기 하나 또는 그 이상의 추출된 특징들과 대응하는 복수의 바이너리 코드들을 생성하는 단계; 및
상기 하나 또는 그 이상의 추출된 특징들을 입력 버퍼에 저장하는 단계를 더 포함하는 방법. - 제 1 항에 있어서,
상기 특징들은 상기 데이터 스토리지 장치의 하나 또는 그 이상의 컨볼루션 엔진들(CEs; convolution engines)을 사용하여 추출되고,
상기 하나 또는 그 이상의 컨볼루션 엔진들 각각은 컨볼루션 뉴럴 네트워크(CNN; convolution neural network) 계층에서 상기 하나 또는 그 이상의 특징들을 추출하는 방법. - 제 6 항에 있어서,
상기 하나 또는 그 이상의 컨볼루션 엔진들 각각은 각 컨볼루션 뉴럴 네트워크(CNN; convolution neural network)에 대하여 뉴럴 디스크립터를 연산하고, 상기 뉴럴 디스크립터를 압축하고, 상기 하나 또는 그 이상의 추출된 특징들을 출력 버퍼에 저장하도록 구성되는 방법. - 제 1 항에 있어서,
상기 메모리 어레이에 저장된 상기 데이터에 대한 저장된 특징들을 추출하는 단계; 및
상기 저장된 특징을상기 재포맷화된 데이터의 상기 하나 또는 그 이상의 추출된 특징들과 비교하는 단계를 더 포함하는 방법. - 제 8 항에 있어서,
상기 메모리 어레이에 저장된 상기 데이터 각각에 대한 해밍 거리(Hamming distance)를 연산하는 단계를 더 포함하는 방법. - 제 9 항에 있어서,
상기 해밍 거리를 기반으로 상기 메모리 어레이에 저장된 상기 데이터로부터 상기 매칭 데이터를 선택하는 단계;
상기 매칭 데이터를 출력 버퍼에 저장하는 단계; 및
상기 데이터 통신 경로를 통해 상기 매칭 데이터를 상기 애플리케이션으로 전송하는 단계를 더 포함하는 방법.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662441073P | 2016-12-30 | 2016-12-30 | |
US62/441,073 | 2016-12-30 | ||
US15/472,061 | 2017-03-28 | ||
US15/472,061 US11010431B2 (en) | 2016-12-30 | 2017-03-28 | Method and apparatus for supporting machine learning algorithms and data pattern matching in ethernet SSD |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20180079168A KR20180079168A (ko) | 2018-07-10 |
KR102449191B1 true KR102449191B1 (ko) | 2022-09-29 |
Family
ID=62711728
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170139006A KR102449191B1 (ko) | 2016-12-30 | 2017-10-25 | 이더넷 솔리드 스테이트 드라이브에서 데이터 패턴 매칭 및 기계 학습 알고리즘들을 지원하는 장치 및 방법 |
Country Status (2)
Country | Link |
---|---|
US (2) | US11010431B2 (ko) |
KR (1) | KR102449191B1 (ko) |
Families Citing this family (131)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104573652B (zh) * | 2015-01-04 | 2017-12-22 | 华为技术有限公司 | 确定人脸图像中人脸的身份标识的方法、装置和终端 |
US11417235B2 (en) * | 2017-05-25 | 2022-08-16 | Baidu Usa Llc | Listen, interact, and talk: learning to speak via interaction |
US10652206B1 (en) | 2017-10-27 | 2020-05-12 | EMC IP Holding Company LLC | Storage system with network-wide configurable device names |
US11436483B2 (en) * | 2018-01-17 | 2022-09-06 | Mediatek Inc. | Neural network engine with tile-based execution |
US10698766B2 (en) * | 2018-04-18 | 2020-06-30 | EMC IP Holding Company LLC | Optimization of checkpoint operations for deep learning computing |
US10757189B2 (en) | 2018-04-30 | 2020-08-25 | EMC IP Holding Company LLC | Service level objection based input-output selection utilizing multi-path layer of host device |
US10210860B1 (en) * | 2018-07-27 | 2019-02-19 | Deepgram, Inc. | Augmented generalized deep learning with special vocabulary |
JP7326667B2 (ja) * | 2018-07-31 | 2023-08-16 | マーベル アジア ピーティーイー、リミテッド | ストレージエッジにおけるメタデータ生成 |
US11050660B2 (en) | 2018-09-28 | 2021-06-29 | EMC IP Holding Company LLC | Host device with multi-path layer implementing path selection based at least in part on fabric identifiers |
US10754572B2 (en) | 2018-10-09 | 2020-08-25 | EMC IP Holding Company LLC | Migrating control of a multi-path logical device from a current MPIO driver to a target MPIO driver |
US11044313B2 (en) | 2018-10-09 | 2021-06-22 | EMC IP Holding Company LLC | Categorizing host IO load pattern and communicating categorization to storage system |
CN111078291B (zh) * | 2018-10-19 | 2021-02-09 | 中科寒武纪科技股份有限公司 | 运算方法、系统及相关产品 |
US10635355B1 (en) * | 2018-11-13 | 2020-04-28 | Western Digital Technologies, Inc. | Bandwidth limiting in solid state drives |
KR20200057475A (ko) | 2018-11-16 | 2020-05-26 | 삼성전자주식회사 | 연산 회로를 포함하는 메모리 장치 및 그것을 포함하는 뉴럴 네트워크 시스템 |
US10880217B2 (en) | 2018-12-24 | 2020-12-29 | EMC IP Holding Company LLC | Host device with multi-path layer configured for detection and resolution of oversubscription conditions |
US10897627B2 (en) | 2019-01-11 | 2021-01-19 | Western Digital Technologies, Inc. | Non-volatile memory system including a partial decoder and event detector for video streams |
US11625487B2 (en) * | 2019-01-24 | 2023-04-11 | International Business Machines Corporation | Framework for certifying a lower bound on a robustness level of convolutional neural networks |
US10754559B1 (en) | 2019-03-08 | 2020-08-25 | EMC IP Holding Company LLC | Active-active storage clustering with clock synchronization |
US11783176B2 (en) * | 2019-03-25 | 2023-10-10 | Western Digital Technologies, Inc. | Enhanced storage device memory architecture for machine learning |
US10929058B2 (en) * | 2019-03-25 | 2021-02-23 | Western Digital Technologies, Inc. | Enhanced memory device architecture for machine learning |
US11157692B2 (en) * | 2019-03-29 | 2021-10-26 | Western Digital Technologies, Inc. | Neural networks using data processing units |
US11080152B2 (en) * | 2019-05-15 | 2021-08-03 | Western Digital Technologies, Inc. | Optimized neural network data organization |
US11615340B2 (en) | 2019-05-23 | 2023-03-28 | EMC IP Holding Company LLC | Methods and apparatus for application prediction through machine learning based analysis of IO patterns |
US11016699B2 (en) | 2019-07-19 | 2021-05-25 | EMC IP Holding Company LLC | Host device with controlled cloning of input-output operations |
US11016783B2 (en) | 2019-07-25 | 2021-05-25 | EMC IP Holding Company LLC | Secure storage access utilizing multi-path layer of host device to identify processes executed on the host device with authorization to access data of a storage system |
US11169737B2 (en) * | 2019-08-13 | 2021-11-09 | Micron Technology, Inc. | Speculation in memory |
US11055003B2 (en) * | 2019-08-20 | 2021-07-06 | Micron Technology, Inc. | Supplemental AI processing in memory |
KR102717019B1 (ko) * | 2019-09-16 | 2024-10-15 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그것의 동작 방법 |
US11086785B2 (en) | 2019-09-24 | 2021-08-10 | EMC IP Holding Company LLC | Host device with storage cache aware processing of input-output operations in multi-path layer |
US10936522B1 (en) | 2019-09-30 | 2021-03-02 | EMC IP Holding Company LLC | Performing input-output multi-pathing from user space |
US12010172B2 (en) | 2019-09-30 | 2024-06-11 | EMC IP Holding Company LLC | Host device with multi-path layer configured for IO control using detected storage port resource availability |
US10884935B1 (en) | 2019-09-30 | 2021-01-05 | EMC IP Holding Company LLC | Cache allocation for controller boards based on prior input-output operations |
US11012510B2 (en) | 2019-09-30 | 2021-05-18 | EMC IP Holding Company LLC | Host device with multi-path layer configured for detecting target failure status and updating path availability |
US11379325B2 (en) | 2019-10-04 | 2022-07-05 | EMC IP Holding Company LLC | Path failure information sharing between host devices connected to a storage system |
US11366590B2 (en) | 2019-10-11 | 2022-06-21 | EMC IP Holding Company LLC | Host device with multi-path layer providing dynamic control of one or more path selection algorithms |
US11064194B2 (en) | 2019-10-31 | 2021-07-13 | Western Digital Technologies, Inc. | Encoding digital videos using controllers of data storage devices |
US11023161B1 (en) | 2019-11-25 | 2021-06-01 | EMC IP Holding Company LLC | Host device with multi-path layer implementing efficient load balancing for active-active configuration |
US11106381B2 (en) | 2019-11-27 | 2021-08-31 | EMC IP Holding Company LLC | Automated seamless migration of logical storage devices |
CN111045732B (zh) * | 2019-12-05 | 2023-06-09 | 腾讯科技(深圳)有限公司 | 数据处理方法、芯片、设备及存储介质 |
US10841645B1 (en) | 2019-12-09 | 2020-11-17 | Western Digital Technologies, Inc. | Storage system and method for video frame segregation to optimize storage |
US11093155B2 (en) | 2019-12-11 | 2021-08-17 | EMC IP Holding Company LLC | Automated seamless migration with signature issue resolution |
US11256421B2 (en) | 2019-12-11 | 2022-02-22 | EMC IP Holding Company LLC | Path selection modification for non-disruptive upgrade of a host device |
US11372951B2 (en) | 2019-12-12 | 2022-06-28 | EMC IP Holding Company LLC | Proxy license server for host-based software licensing |
US11277335B2 (en) | 2019-12-26 | 2022-03-15 | EMC IP Holding Company LLC | Host device with path selection modification responsive to mismatch in initiator-target negotiated rates |
US11099755B2 (en) | 2020-01-06 | 2021-08-24 | EMC IP Holding Company LLC | Multipath device pseudo name to logical volume mapping for host devices |
US11231861B2 (en) | 2020-01-15 | 2022-01-25 | EMC IP Holding Company LLC | Host device with active-active storage aware path selection |
CN113126888B (zh) * | 2020-01-15 | 2024-04-19 | 伊姆西Ip控股有限责任公司 | 用于存储管理的方法、设备和计算机程序产品 |
US11461026B2 (en) | 2020-01-21 | 2022-10-04 | EMC IP Holding Company LLC | Non-disruptive update of host multipath device dependency |
US11520671B2 (en) | 2020-01-29 | 2022-12-06 | EMC IP Holding Company LLC | Fast multipath failover |
US11175840B2 (en) | 2020-01-30 | 2021-11-16 | EMC IP Holding Company LLC | Host-based transfer of input-output operations from kernel space block device to user space block device |
US11050825B1 (en) | 2020-01-30 | 2021-06-29 | EMC IP Holding Company LLC | Storage system port usage information sharing between host devices |
US11562018B2 (en) | 2020-02-04 | 2023-01-24 | Western Digital Technologies, Inc. | Storage system and method for optimized surveillance search |
US11093144B1 (en) | 2020-02-18 | 2021-08-17 | EMC IP Holding Company LLC | Non-disruptive transformation of a logical storage device from a first access protocol to a second access protocol |
US11449257B2 (en) | 2020-02-21 | 2022-09-20 | EMC IP Holding Company LLC | Host device with efficient automated seamless migration of logical storage devices across multiple access protocols |
US11204699B2 (en) | 2020-03-05 | 2021-12-21 | EMC IP Holding Company LLC | Storage system port maintenance information sharing with host device |
US11397589B2 (en) | 2020-03-06 | 2022-07-26 | EMC IP Holding Company LLC | Snapshot transmission from storage array to cloud using multi-path input-output |
US11042327B1 (en) | 2020-03-10 | 2021-06-22 | EMC IP Holding Company LLC | IO operation cloning using change information sharing with a storage system |
US11328511B2 (en) | 2020-03-13 | 2022-05-10 | Western Digital Technologies, Inc. | Storage system and method for improved playback analysis |
US11265261B2 (en) | 2020-03-18 | 2022-03-01 | EMC IP Holding Company LLC | Access path management based on path condition |
US11636291B1 (en) * | 2020-04-06 | 2023-04-25 | Amazon Technologies, Inc. | Content similarity determination |
US11368399B2 (en) | 2020-03-27 | 2022-06-21 | EMC IP Holding Company LLC | Congestion aware multipathing based on network congestion notifications |
US11080215B1 (en) | 2020-03-31 | 2021-08-03 | EMC IP Holding Company LLC | Host device providing automated prediction of change intervals to reduce adverse impacts on applications |
US11169941B2 (en) | 2020-04-09 | 2021-11-09 | EMC IP Holding Company LLC | Host device with automated connectivity provisioning |
US11366756B2 (en) | 2020-04-13 | 2022-06-21 | EMC IP Holding Company LLC | Local cached data coherency in host devices using remote direct memory access |
US11561699B2 (en) | 2020-04-24 | 2023-01-24 | EMC IP Holding Company LLC | Input-output path selection using switch topology information |
US11216200B2 (en) | 2020-05-06 | 2022-01-04 | EMC IP Holding Company LLC | Partition utilization awareness of logical units on storage arrays used for booting |
US11175828B1 (en) | 2020-05-14 | 2021-11-16 | EMC IP Holding Company LLC | Mitigating IO processing performance impacts in automated seamless migration |
US11099754B1 (en) | 2020-05-14 | 2021-08-24 | EMC IP Holding Company LLC | Storage array with dynamic cache memory configuration provisioning based on prediction of input-output operations |
US11012512B1 (en) | 2020-05-20 | 2021-05-18 | EMC IP Holding Company LLC | Host device with automated write throttling responsive to storage system write pressure condition |
US11023134B1 (en) | 2020-05-22 | 2021-06-01 | EMC IP Holding Company LLC | Addition of data services to an operating system running a native multi-path input-output architecture |
US11151071B1 (en) | 2020-05-27 | 2021-10-19 | EMC IP Holding Company LLC | Host device with multi-path layer distribution of input-output operations across storage caches |
US11226851B1 (en) | 2020-07-10 | 2022-01-18 | EMC IP Holding Company LLC | Execution of multipath operation triggered by container application |
US11256446B1 (en) | 2020-08-03 | 2022-02-22 | EMC IP Holding Company LLC | Host bus adaptor (HBA) virtualization aware multi-pathing failover policy |
US11687833B2 (en) * | 2020-08-27 | 2023-06-27 | Google Llc | Data management forecasting from distributed tracing |
US11157432B1 (en) | 2020-08-28 | 2021-10-26 | EMC IP Holding Company LLC | Configuration of block devices based on provisioning of logical volumes in a storage system |
US11916938B2 (en) | 2020-08-28 | 2024-02-27 | EMC IP Holding Company LLC | Anomaly detection and remediation utilizing analysis of storage area network access patterns |
US11586380B2 (en) | 2020-09-09 | 2023-02-21 | Micron Technology, Inc. | Memory systems including examples of calculating hamming distances for neural network and data center applications |
US11636285B2 (en) | 2020-09-09 | 2023-04-25 | Micron Technology, Inc. | Memory including examples of calculating hamming distances for neural network and data center applications |
US11609853B2 (en) * | 2020-09-09 | 2023-03-21 | Micron Technology, Inc. | Memory controllers including examples of calculating hamming distances for neural network and data center applications |
US11392459B2 (en) | 2020-09-14 | 2022-07-19 | EMC IP Holding Company LLC | Virtualization server aware multi-pathing failover policy |
US11320994B2 (en) | 2020-09-18 | 2022-05-03 | EMC IP Holding Company LLC | Dynamic configuration change control in a storage system using multi-path layer notifications |
US11032373B1 (en) | 2020-10-12 | 2021-06-08 | EMC IP Holding Company LLC | Host-based bandwidth control for virtual initiators |
US11397540B2 (en) | 2020-10-12 | 2022-07-26 | EMC IP Holding Company LLC | Write pressure reduction for remote replication |
US11630581B2 (en) | 2020-11-04 | 2023-04-18 | EMC IP Holding Company LLC | Host bus adaptor (HBA) virtualization awareness for effective input-output load balancing |
US11397539B2 (en) | 2020-11-30 | 2022-07-26 | EMC IP Holding Company LLC | Distributed backup using local access |
US11204777B1 (en) | 2020-11-30 | 2021-12-21 | EMC IP Holding Company LLC | Boot from SAN operation support on multi-pathing devices |
US11543971B2 (en) | 2020-11-30 | 2023-01-03 | EMC IP Holding Company LLC | Array driven fabric performance notifications for multi-pathing devices |
US11385824B2 (en) | 2020-11-30 | 2022-07-12 | EMC IP Holding Company LLC | Automated seamless migration across access protocols for a logical storage device |
US11620240B2 (en) | 2020-12-07 | 2023-04-04 | EMC IP Holding Company LLC | Performance-driven access protocol switching for a logical storage device |
US11409460B2 (en) | 2020-12-08 | 2022-08-09 | EMC IP Holding Company LLC | Performance-driven movement of applications between containers utilizing multiple data transmission paths with associated different access protocols |
US11455116B2 (en) | 2020-12-16 | 2022-09-27 | EMC IP Holding Company LLC | Reservation handling in conjunction with switching between storage access protocols |
US11651066B2 (en) | 2021-01-07 | 2023-05-16 | EMC IP Holding Company LLC | Secure token-based communications between a host device and a storage system |
US11308004B1 (en) | 2021-01-18 | 2022-04-19 | EMC IP Holding Company LLC | Multi-path layer configured for detection and mitigation of slow drain issues in a storage area network |
US11449440B2 (en) | 2021-01-19 | 2022-09-20 | EMC IP Holding Company LLC | Data copy offload command support across multiple storage access protocols |
US11494091B2 (en) | 2021-01-19 | 2022-11-08 | EMC IP Holding Company LLC | Using checksums for mining storage device access data |
US11467765B2 (en) | 2021-01-20 | 2022-10-11 | EMC IP Holding Company LLC | Detection and mitigation of slow drain issues using response times and storage-side latency view |
US11386023B1 (en) | 2021-01-21 | 2022-07-12 | EMC IP Holding Company LLC | Retrieval of portions of storage device access data indicating access state changes |
US11640245B2 (en) * | 2021-02-17 | 2023-05-02 | EMC IP Holding Company LLC | Logical storage device access in an encrypted storage environment |
US11755222B2 (en) | 2021-02-26 | 2023-09-12 | EMC IP Holding Company LLC | File based encryption for multi-pathing devices |
US11797312B2 (en) | 2021-02-26 | 2023-10-24 | EMC IP Holding Company LLC | Synchronization of multi-pathing settings across clustered nodes |
US11928365B2 (en) | 2021-03-09 | 2024-03-12 | EMC IP Holding Company LLC | Logical storage device access using datastore-level keys in an encrypted storage environment |
US11294782B1 (en) | 2021-03-22 | 2022-04-05 | EMC IP Holding Company LLC | Failover affinity rule modification based on node health information |
US11782611B2 (en) | 2021-04-13 | 2023-10-10 | EMC IP Holding Company LLC | Logical storage device access using device-specific keys in an encrypted storage environment |
US11422718B1 (en) | 2021-05-03 | 2022-08-23 | EMC IP Holding Company LLC | Multi-path layer configured to provide access authorization for software code of multi-path input-output drivers |
US11550511B2 (en) | 2021-05-21 | 2023-01-10 | EMC IP Holding Company LLC | Write pressure throttling based on service level objectives |
US11822706B2 (en) | 2021-05-26 | 2023-11-21 | EMC IP Holding Company LLC | Logical storage device access using device-specific keys in an encrypted storage environment |
US11625232B2 (en) | 2021-06-07 | 2023-04-11 | EMC IP Holding Company LLC | Software upgrade management for host devices in a data center |
US11526283B1 (en) | 2021-06-08 | 2022-12-13 | EMC IP Holding Company LLC | Logical storage device access using per-VM keys in an encrypted storage environment |
US11762588B2 (en) | 2021-06-11 | 2023-09-19 | EMC IP Holding Company LLC | Multi-path layer configured to access storage-side performance metrics for load balancing policy control |
US11954344B2 (en) | 2021-06-16 | 2024-04-09 | EMC IP Holding Company LLC | Host device comprising layered software architecture with automated tiering of logical storage devices |
US20210318805A1 (en) * | 2021-06-25 | 2021-10-14 | Intel Corporation | Method and apparatus to perform batching and striping in a stochastic associative memory to avoid partition collisions |
US11750457B2 (en) | 2021-07-28 | 2023-09-05 | Dell Products L.P. | Automated zoning set selection triggered by switch fabric notifications |
US11625308B2 (en) | 2021-09-14 | 2023-04-11 | Dell Products L.P. | Management of active-active configuration using multi-pathing software |
US11586356B1 (en) | 2021-09-27 | 2023-02-21 | Dell Products L.P. | Multi-path layer configured for detection and mitigation of link performance issues in a storage area network |
US11656987B2 (en) | 2021-10-18 | 2023-05-23 | Dell Products L.P. | Dynamic chunk size adjustment for cache-aware load balancing |
US11418594B1 (en) | 2021-10-20 | 2022-08-16 | Dell Products L.P. | Multi-path layer configured to provide link availability information to storage system for load rebalancing |
US12001595B2 (en) | 2021-12-03 | 2024-06-04 | Dell Products L.P. | End-to-end encryption of logical storage devices in a Linux native multi-pathing environment |
US11567669B1 (en) | 2021-12-09 | 2023-01-31 | Dell Products L.P. | Dynamic latency management of active-active configurations using multi-pathing software |
US12045480B2 (en) | 2021-12-14 | 2024-07-23 | Dell Products L.P. | Non-disruptive switching of multi-pathing software |
US12001679B2 (en) | 2022-03-31 | 2024-06-04 | Dell Products L.P. | Storage system configured to collaborate with host device to provide fine-grained throttling of input-output operations |
US11620054B1 (en) | 2022-04-21 | 2023-04-04 | Dell Products L.P. | Proactive monitoring and management of storage system input-output operation limits |
US11983432B2 (en) | 2022-04-28 | 2024-05-14 | Dell Products L.P. | Load sharing of copy workloads in device clusters |
US11789624B1 (en) | 2022-05-31 | 2023-10-17 | Dell Products L.P. | Host device with differentiated alerting for single points of failure in distributed storage systems |
US11886711B2 (en) | 2022-06-16 | 2024-01-30 | Dell Products L.P. | Host-assisted IO service levels utilizing false-positive signaling |
US11983429B2 (en) | 2022-06-22 | 2024-05-14 | Dell Products L.P. | Migration processes utilizing mapping entry timestamps for selection of target logical storage devices |
US12001714B2 (en) | 2022-08-16 | 2024-06-04 | Dell Products L.P. | Host device IO selection using buffer availability information obtained from storage system |
US12105956B2 (en) | 2022-09-23 | 2024-10-01 | Dell Products L.P. | Multi-path layer configured with enhanced awareness of link performance issue resolution |
US11934659B1 (en) | 2022-09-28 | 2024-03-19 | Dell Products L.P. | Host background copy process with rate adjustment utilizing input-output processing pressure feedback from storage system |
US12032842B2 (en) | 2022-10-10 | 2024-07-09 | Dell Products L.P. | Host device with multi-path layer configured for alignment to storage system local-remote designations |
US12099733B2 (en) | 2022-10-18 | 2024-09-24 | Dell Products L.P. | Spoofing of device identifiers in non-disruptive data migration |
US11989156B1 (en) | 2023-03-06 | 2024-05-21 | Dell Products L.P. | Host device conversion of configuration information to an intermediate format to facilitate database transitions |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7567252B2 (en) | 2003-12-09 | 2009-07-28 | Microsoft Corporation | Optimizing performance of a graphics processing unit for efficient execution of general matrix operations |
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 |
JP3861157B2 (ja) * | 2004-02-27 | 2006-12-20 | 国立大学法人広島大学 | 参照データ最適化装置とパターン認識システム |
US7401253B2 (en) * | 2005-05-09 | 2008-07-15 | International Business Machines Corporation | Convolution-encoded data storage on a redundant array of independent devices |
KR100939364B1 (ko) * | 2007-03-22 | 2010-01-29 | 한동일 | 이미지 검색시스템 및 그 방법 |
US8850161B2 (en) | 2010-10-13 | 2014-09-30 | Riverbed Technology, Inc. | Method of improving performance of a data storage device |
US9171264B2 (en) | 2010-12-15 | 2015-10-27 | Microsoft Technology Licensing, Llc | Parallel processing machine learning decision tree training |
US9182912B2 (en) | 2011-08-03 | 2015-11-10 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Method to allow storage cache acceleration when the slow tier is on independent controller |
US9158540B1 (en) | 2011-11-14 | 2015-10-13 | Emc Corporation | Method and apparatus for offloading compute resources to a flash co-processing appliance |
KR101329102B1 (ko) * | 2012-02-28 | 2013-11-14 | 주식회사 케이쓰리아이 | 레이아웃 기술자와 이미지 특징점을 이용한 실시간 증강현실 이미지 검색시스템 |
US9053008B1 (en) | 2012-03-26 | 2015-06-09 | Western Digital Technologies, Inc. | Systems and methods for providing inline parameter service in data storage devices |
US9116796B2 (en) | 2012-11-09 | 2015-08-25 | Sandisk Technologies Inc. | Key-value addressed storage drive using NAND flash based content addressable memory |
US8792279B2 (en) | 2012-11-09 | 2014-07-29 | Sandisk Technologies Inc. | Architectures for data analytics using computational NAND memory |
US10229132B2 (en) | 2013-07-15 | 2019-03-12 | International Business Machines Corporation | Optimizing digest based data matching in similarity based deduplication |
US9571125B2 (en) | 2013-10-03 | 2017-02-14 | Futurewei Technologies, Inc. | Systems and methods of vector-DMA cache-XOR for MPCC erasure coding |
US9330143B2 (en) | 2013-10-24 | 2016-05-03 | Western Digital Technologies, Inc. | Data storage device supporting accelerated database operations |
US9619167B2 (en) | 2013-11-27 | 2017-04-11 | Intel Corporation | System and method for computing message digests |
KR102103543B1 (ko) * | 2013-11-28 | 2020-05-29 | 삼성전자 주식회사 | 내부 하드웨어 필터를 포함하는 일체형 데이터 저장 장치, 이의 동작 방법, 및 상기 데이터 저장 장치를 포함하는 시스템 |
IL231862A (en) * | 2014-04-01 | 2015-04-30 | Superfish Ltd | Image representation using a neural network |
US20150317176A1 (en) | 2014-05-02 | 2015-11-05 | Cavium, Inc. | Systems and methods for enabling value added services for extensible storage devices over a network via nvme controller |
US20160170892A1 (en) | 2014-12-11 | 2016-06-16 | HGST Netherlands B.V. | Expression pattern matching in a storage subsystem |
US9766818B2 (en) | 2014-12-31 | 2017-09-19 | Samsung Electronics Co., Ltd. | Electronic system with learning mechanism and method of operation thereof |
US9767416B2 (en) | 2015-02-04 | 2017-09-19 | Oracle International Corporation | Sparse and data-parallel inference method and system for the latent Dirichlet allocation model |
KR102336443B1 (ko) * | 2015-02-04 | 2021-12-08 | 삼성전자주식회사 | 가상화 기능을 지원하는 스토리지 장치 및 사용자 장치 |
US20160259754A1 (en) * | 2015-03-02 | 2016-09-08 | Samsung Electronics Co., Ltd. | Hard disk drive form factor solid state drive multi-card adapter |
US9450606B1 (en) | 2015-10-01 | 2016-09-20 | Seagate Technology Llc | Data matching for hardware data compression |
US10613974B2 (en) * | 2016-10-04 | 2020-04-07 | Pure Storage, Inc. | Peer-to-peer non-volatile random-access memory |
US10841275B2 (en) * | 2016-12-12 | 2020-11-17 | Samsung Electronics Co., Ltd. | Method and apparatus for reducing IP addresses usage of NVME over fabrics devices |
-
2017
- 2017-03-28 US US15/472,061 patent/US11010431B2/en active Active
- 2017-10-25 KR KR1020170139006A patent/KR102449191B1/ko active IP Right Grant
-
2021
- 2021-05-17 US US17/322,601 patent/US20210279285A1/en active Pending
Non-Patent Citations (6)
Title |
---|
Artem Babenko YAndex et al.,(2015.10.26.) 1부.* |
한국공개특허 제10-2006-0118598호(2006.11.23.) 1부.* |
한국공개특허 제10-2008-0086227호(2008.09.25.) 1부.* |
한국공개특허 제10-2013-0098470호(2013.09.05.) 1부.* |
한국공개특허 제10-2016-0096279호(2016.08.16.) 1부.* |
한국공개특허 제10-2016-0106501호(2016.09.12.) 1부.* |
Also Published As
Publication number | Publication date |
---|---|
US11010431B2 (en) | 2021-05-18 |
KR20180079168A (ko) | 2018-07-10 |
US20180189635A1 (en) | 2018-07-05 |
US20210279285A1 (en) | 2021-09-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102449191B1 (ko) | 이더넷 솔리드 스테이트 드라이브에서 데이터 패턴 매칭 및 기계 학습 알고리즘들을 지원하는 장치 및 방법 | |
Wang et al. | Learning to hash for indexing big data—A survey | |
Azizpour et al. | Factors of transferability for a generic convnet representation | |
JP6721681B2 (ja) | 並列検索動作を実行する方法及び装置 | |
Liu et al. | Indexing of the CNN features for the large scale image search | |
WO2013129580A1 (ja) | 近似最近傍探索装置、近似最近傍探索方法およびそのプログラム | |
EP4016331A1 (en) | Neural network dense layer sparsification and matrix compression | |
Dupuis et al. | Sensitivity analysis and compression opportunities in dnns using weight sharing | |
EP3278238A1 (en) | Fast orthogonal projection | |
KR101435010B1 (ko) | 다수의 특징을 이용한 순차적 바이너리 코드 학습 방법 및 학습 장치 | |
CN111083933A (zh) | 数据存储及获取方法和装置 | |
CN110442749B (zh) | 视频帧处理方法及装置 | |
CN115878824B (zh) | 图像检索系统、方法和装置 | |
Zhang et al. | A prior-free weighting scheme for binary code ranking | |
WO2022087785A1 (zh) | 检索装置和检索方法 | |
Sun et al. | Search by detection: Object-level feature for image retrieval | |
US10268912B2 (en) | Offline, hybrid and hybrid with offline image recognition | |
Zhao et al. | Fast covariant vlad for image search | |
KR102590388B1 (ko) | 영상 컨텐츠 추천 장치 및 방법 | |
Yan et al. | Fast approximate matching of binary codes with distinctive bits | |
Hinami et al. | Large-scale r-cnn with classifier adaptive quantization | |
Bouhlel et al. | Semantic-aware framework for mobile image search | |
Prasanth et al. | Big data retrieval using HDFS with LZO compression | |
US20240045861A1 (en) | System for classifying data based on a classification algorithm and method of operating the same | |
Pardede et al. | SVM Relevance Feedback in HSV Quantization for CBIR. |
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 |