KR20160132853A - 병렬 결정 트리 프로세서 아키텍처 - Google Patents

병렬 결정 트리 프로세서 아키텍처 Download PDF

Info

Publication number
KR20160132853A
KR20160132853A KR1020167025570A KR20167025570A KR20160132853A KR 20160132853 A KR20160132853 A KR 20160132853A KR 1020167025570 A KR1020167025570 A KR 1020167025570A KR 20167025570 A KR20167025570 A KR 20167025570A KR 20160132853 A KR20160132853 A KR 20160132853A
Authority
KR
South Korea
Prior art keywords
decision tree
decision
node
feature
score
Prior art date
Application number
KR1020167025570A
Other languages
English (en)
Other versions
KR102376117B1 (ko
Inventor
더글라스 씨 버거
제임스 알 라루스
앤드류 퍼트남
얀 그레이
Original Assignee
마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 filed Critical 마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Publication of KR20160132853A publication Critical patent/KR20160132853A/ko
Application granted granted Critical
Publication of KR102376117B1 publication Critical patent/KR102376117B1/ko

Links

Images

Classifications

    • G06F17/30961
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • G06N5/022Knowledge engineering; Knowledge acquisition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9027Trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F17/30979
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/20Ensemble learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Multi Processors (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Complex Calculations (AREA)

Abstract

결정 트리 다중프로세서 시스템이 본 문서 내에 개시된다. 시스템은 공통 특징 벡터를 액세스하고 공통 특징 벡터에 대해서 하나 이상의 결정 트리를 실행하는 복수의 결정 트리 프로세서를 포함한다.

Description

병렬 결정 트리 프로세서 아키텍처{PARALLEL DECISION TREE PROCESSOR ARCHITECTURE}
결정 트리(decision tree)는 결정 노드(decision node)와 좌측 서브트리(sub-tree) 및/또는 리프(leaf)와 우측 서브트리 및/또는 리프로 이루어진 이진 탐색 트리(binary search tree)이다. 결정 노드는 행해질 결정을 포함한다. 브랜치(branch)는 결정 노드로부터 다른 결정 노드로 또는 리프 노드(leaf node)로 이어지고, 브랜치 중 하나의 선택은 결정 노드에서 행해진 결정에 기반한다. 예시적 결정은 특징 값(feature value)과 임계 값(threshold value)과 같은 두 개의 값의 비교를 포함한다. 만약 특징 값이 임계 값 이하이면, 좌측 서브트리가 선택되고, 만약 특징 값이 임계 값 이하가 아니면, 우측 서브트리가 선택된다. 리프 노드로 이어지는 브랜치가 선택될 때까지, 브랜치는 계속해서 다음 노드로 이어지고, 만약 다음 노드가 결정 노드인 경우, 또 다른 결정이 행해진다. 리프 노드는 결정 트리의 출력(output) 또는 종단점(end-point)이다. 예시적 출력은 결정 트리를 위한 출력 값 또는 스코어(score)이다. 이 프로세스는 결정 트리를 행보하는 것(walking)으로 지칭된다.
특히, 결정 트리는 문서 탐색(document search)에서 문서를 순위화하는(rank) 데에 사용된다. 하나의 예에서, 결정 트리는 특정한 탐색 질의(search query)에 대한 특정한 아이템(item)(가령, 웹 페이지)의 관련성을 계산하는 데에 사용된다. 후보 탐색 결과 문서의 초기 세트가 획득되고, 후보 탐색 결과 문서를 위한 특징 벡터(feature vector)가 산출된다. 특징 벡터는 후보 탐색 결과 문서의 다양한 양상(가령, 문서 통계)을 나타낸다. 특징의 하나의 예는 후보 문서 내에서 탐색 질의 단어가 나타나는 횟수이다. 각각의 결정 트리 노드는 임계(threshold) 및 특징 식별자(feature identifier)를 포함하는데, 이는 후보 탐색 결과 문서를 위해 특징 값을 찾아보는 데에 사용될 수 있다. 결정 트리를 따라 행보가 행해지고, 트리 행보 프로세스(tree-walking process)는 결국 리프 노드에 도달하고 연관된 스코어를 출력한다. 스코어(또는 만약 하나보다 많은 결정 트리가 사용되는 경우 여러 스코어)는 후보 탐색 결과의 관련성을 판정하는 데에 사용된다. 여러 문서의 상대적 스코어는 문서를 순위화하는 데에 사용된다.
탐색 외에, 결정 트리는 다양한 용도를 갖는다. 결정 트리는 제스처 인식(gesture recognition), 음성 인식(voice recognition), 데이터 마이닝(data mining) 및 다른 유형의 계산을 구현하는 데에 사용된다.
이 개요는 상세한 설명에서 추가로 후술되는, 본 개시의 단순화된 개념을 소개하기 위해서 제공된다. 이 개요는 청구된 대상물(claimed subject matter)의 필수적 특징을 식별하도록 의도된 것이 아니며, 청구된 대상물의 범주를 정하는 데에서의 사용을 위해 의도된 것도 아니다.
종래의 소프트웨어 기반 결정 트리 스코어링(decision tree scoring)보다 더 빠른 결정 트리 스코어링을 가능하게 하는 본 설명의 실시예는 결정 트리 스코어링의 하드웨어 구현을 포함한다. 결정 트리 스코어링 시스템의 온칩 아키텍처(on-chip architecture)는 하나 이상의 특수화된(specialized) 또는 프로그램가능한(programmable) 로직 회로(logic circuit) 상에 병렬로 구현된 복수의 결정 트리 프로세서를 포함한다. 온칩 아키텍처의 최상위 레벨(level)에는 업스트림(upstream) 컴퓨팅 시스템 호스트 또는 처리 시스템으로부터 특징 벡터(가령, 특징 값의 세트)를 수신하고, 특징 벡터를 제1 결정 트리 클러스터(Decision Tree Cluster: DTC)에 발신하며, 결정 트리 클러스터들로부터 스코어들을 수신하고, 그 결과를 호스트 또는 다른 다운스트림(downstream) 시스템에 출력하는 결정 트리 스코어러(Decision Tree Scorer: DTS)가 있다. 계층구조(hierarchy)의 다음 레벨에서는, 복수의 결정 트리 클러스터들(Decision Tree Clusters: DTC)이 그 자신들 간에 특징 벡터들을 분배하고(distribute), 스코어들을 처리하여 결정 트리 프로세서들로부터 이웃(neighboring) DTC들로 그리고 DTS로 전파한다(propagate). DTC들은 하나 이상의 결정 트리 프로세서와, 하나 이상의 특징 스토리지 타일(Feature Storage Tile: FST)을 포함한다. 특징 값 및 임계 값 압축이 결정 트리 스코어링 시스템을 위한 대역폭 및 저장 요구사항을 감소시킨다.
상세한 설명은 첨부된 도면을 참조하여 개진된다. 도면에서, 참조 번호의 가장 왼쪽의 숫자(들)는 참조 번호가 처음 나타난 도면을 식별한다. 상이한 도면에서의 동일한 참조 번호의 사용은 유사하거나 동일한 항목을 나타낸다.
도 1은 다양한 실시예에 따라 하나 이상의 하드웨어 구현된(hardware-implemented) 결정 트리 스코어러를 포함하는 예시적 결정 트리 스코어링 시스템의 블록도(block diagram)이다.
도 2는 본 개시의 다양한 실시예에 따라 결정 트리 코딩(decision tree coding)을 보여준다.
도 3은 실수 선(real number line) 상의 고유한 임계 값의 예시적 리스트(list)를 보여준다.
도 4는 다양한 실시예에 따라 결정 트리 스코어러의 예시적 아키텍처를 보여준다.
도 5는 다양한 실시예에 따라 결정 트리 클러스터의 예시적 아키텍처를 보여준다.
도 6은 다양한 실시예에 따라, 결정 트리 프로세서의 다중스테이지 다중쓰레드 파이프라인형 트리 행보 구현(multi-stage, multi-threaded, pipelined tree walking implementation)을 보여준다.
도 7은 다양한 실시예에 따라, 결정 트리 노드(decision tree node)를 실행하는 예시적 프로세스를 도시하는 흐름도(flow graph)를 묘사한다.
도 8은 다양한 실시예에 따라, 결정 트리 스코어러에 의해 특징 벡터들 복수의 결정 트리를 스코어링하는 프로세스를 보여준다.
도 9는 다양한 실시예에 따라, 결정 트리 클러스터에 의해 복수의 결정 트리를 스코어링하는 프로세스를 보여준다.
도 10은 다양한 실시예에 따라 복수의 결정 트리의 임계 값을 코딩하는 프로세스를 보여준다.
도 11은 다양한 실시예에 따라, 특징 값의 세트를 코딩하는 프로세스를 보여준다.
도 12는 본 문서 내에 기술된 다양한 방법을 수행하는 데에 사용가능한 예시적 컴퓨팅 시스템의 블록도이다.
개관
종래의 소프트웨어 기반 결정 트리 스코어링보다 더 빠른 결정 트리 스코어링을 가능하게 하는 본 설명의 실시예는 결정 트리 스코어링의 하드웨어 구현을 포함한다. 하드웨어 구현은, 결정 트리 프로그램을 실행하는, 회로로서 구현된 하나 이상의 결정 트리 프로세서(decision tree processor)를 포함한다. 결정 트리 프로그램은 결정 트리 프로세서에 의해 실행가능한 프로그램 또는 다른 데이터로 변환된 결정 트리이다. 결정 트리 프로그램은 결정 트리 테이블(decision tree table)을 포함하는데, 이는 결정 트리를 위한 다양한 결정 노드, 특징 식별자, 임계 값 및 출력 값을 포함한다. 결정 트리 프로세서의 몇몇 실시예는 다중스테이지(multi-stage) 및/또는 다중쓰레드(multi-threaded) 방식으로 결정 트리를 행보한다(walk). 다중쓰레드 실시예에서, 결정 트리 프로세서의 각각의 스테이지(stage)는 상이한 결정 트리 쓰레드(decision tree thread)를 실행하니, 따라서
Figure pct00001
-스테이지 다중쓰레드 결정 트리 프로세서는 사이클당(per cycle) 최대
Figure pct00002
개의 결정 트리의 부분을 동시에 실행한다(concurrently execute).
실시예는 결정 트리 프로세서 내에서 실행될 결정 트리를 코딩하기(coding), 압축하기(compressing) 및/또는 컴파일하기(compiling) 위한 프로세스, 시스템 및 장치를 포함한다. 다양한 실시예에서, 결정 트리 내에서 브랜치가 사이에 있는 노드들 중 몇몇이 결정 트리 테이블 내의 특정한 노드에 인접하도록 노드들을 배열함으로써 결정 트리에서 포인터(pointer)가 제거된다. 오프셋(offset) 또는 델타(delta) 값들과 같은 다음 노드 데이터(next node data)로써 다른 노드가 식별된다. 리프 값은 별개의 리프 노드 엔트리(entry)의 일부라기보다, 결정 트리 노드 표현의 일부이다.
몇몇 실시예에서, 특정 값 및 임계 값 압축은 결정 트리 스코어링 시스템을 위한 대역폭 및 저장 요구사항을 감소시키되, 또한 실시예가 다룰 수 있는 작업부하(workload)의 크기를 증가시킨다. 본 설명의 몇몇 실시예에서, 정렬된 리스트(sorted list)가 하나 이상의 결정 트리 내에서 특정한 특징과 비교되는 각각의 임계 값을 위해 생성되고, 임계 값 색인(threshold value index)이 임계 값에 할당된다. 가능한 임계의 총 개수가 크지만(가령, 몇몇 실시예에서는 32 비트 부동 소수점(floating point) 수에 의해 표현됨), 복수의 결정 트리 내의 특정한 특징을 위한 실제의 임계의 총 개수는 실제로는 훨씬 더 작아, 대개 (더 많은 개수의 임계가 가능하지만) 255개의 임계에 불과하다. 조밀(dense)하거나 비조밀(non-dense)한 고정 소수점(fixed-point)의 작은 정수 임계 값 색인이 생성된다. 임계 값 색인은 0부터 임계의 총 개수까지의 수일 수 있고, 따라서 4 비트, 8 비트, 또는 다른
Figure pct00003
비트 고정 소수점 값에 의해 표현될 수 있다. 다른 실시예에서, 임계 값 색인은 음수(negative number)일 수 있고, 비인접(noncontiguous) 정수 값, 예를 들어 0, 2, 4, 6, 또는 다른 비인접 정수 값을 포함할 수 있다. 임계 값 색인과 특징 값 색인과의 비교가 원래의 비압축(non-compressed) 임계 값과 원래의 비압축 특징 값과의 비교와 동등하도록, 특징 값이 또한
Figure pct00004
비트 고정 소수점 특징 값 색인으로서 코딩된다.
몇몇 실시예에서, 복수의 결정 트리 프로세서들이 하나 이상의 특수화된 또는 프로그램가능한 로직 회로 상에 병렬로 구현된다. 몇몇 실시예에서, 복수의 결정 트리 프로세서들은 공통 특징 벡터(common feature vector)에 대해 결정 트리들을 실행하거나, 동시에 실행한다. 온칩 아키텍처의 최상위 레벨에는 업스트림 컴퓨팅 시스템 호스트 또는 처리 시스템으로부터 특징 벡터들(가령, 특징 값들의 세트들)을 수신하고, 특징 벡터들을 제1 결정 트리 클러스터(Decision Tree Cluster: DTC)에 발신하며, 결정 트리 클러스터들로부터 스코어들을 수신하고, 그 결과를 호스트 또는 다른 다운스트림 시스템에 출력하는 결정 트리 스코어러(Decision Tree Scorer: DTS)가 있다. 계층구조의 다음 레벨에서는, 복수의 결정 트리 클러스터들(Decision Tree Clusters: DTC)이 그 자신들 간에 특징 벡터들을 분배하고, 스코어들을 결정 트리 프로세서들로부터 이웃 DTC들로 그리고 DTS로 전파한다. 계층구조의 다음 레벨에서, DTC들은 하나 이상의 결정 트리 프로세서와, 하나 이상의 특징 스토리지 타일(Feature Storage Tile: FST)을 포함한다. 결정 트리 프로세서는 공통 특징 벡터에 대해 여러 결정 트리를 동시에 실행하기 위해 다중쓰레드로 될 수 있다. FST는 복수의 결정 트리를 상대로(against) 스코어링될(scored) 특징 벡터를 저장하고, 몇몇 실시예에서는 특징의 다른 세트는 스코어링을 위해 결정 트리 프로세서에 의해 액세스되면서 특징의 하나의 세트는 FST에 기록될 수 있게 하기 위해 이중 버퍼링된다(double-buffered).
본 문서 내에 기술된 실시예는 ASIC과 같은 특수화된 하드웨어(specialized hardware)로의, 또는 FPGA와 같은 프로그램가능 로직 디바이스(programmable logic device)로의 구현이 되게 처리 가능하다. 실시예의 다양한 양상은 또한 다중코어 프로세서(multi-core processor), 시스템 온 칩(System-on-Chip: SoC)(가령, SoC 상의 하나 이상의 결정 트리 스코어링 코어) 및/또는 확장된 명령어 세트(extended instruction set)를 구비한 일반 목적 프로세서(general purpose processor)로의 구현이 되게 처리 가능하고, 따라서 하나 이상의 원자적 프로세서 명령어(atomic processor instruction)에 응답하여 결정 트리를 부분적으로 또는 전적으로 실행하는 것이 가능하다. 본 문서 내에 기술된 디바이스, 프로세스 및 시스템은 다수의 방식으로 구현될 수 있다. 이하의 도면을 참조하여 예시적 구현이 아래에 제공된다.
예시적 결정 트리 스코어링 시스템
도 1은 다양한 실시예에 따라 하나 이상의 하드웨어 구현된 결정 트리 스코어러(102)를 포함하는 예시적 결정 트리 스코어링 시스템(100)의 블록도이다. 호스트(host)(104)는 결정 트리 스코어러(102) 상에서의 실행을 위해 모델 콘텍스트(model context)(108)로 결정 트리를 코딩하는 결정 트리 코더(decision tree coder)(106)를 포함한다. 아래에서 더욱 상세히 기술되는 바와 같이, 결정 트리 코더(106)는 가변 길이(variable-length) 노드를 사용하여 결정 트리를 표현하는데, 인접관계(adjacency)와 오프셋으로써 서브트리 포인터(subtree pointer)가 제거되고, 리프 값이 노드 표현 내에 포함되며, 임계 값이 임계 색인 값으로서 코딩된다. 결정 트리 코더(106)는 결정 트리들의 크기들을, 그것들 중 더 많은 것들이 결정 트리 스코어러(102) 상에 로딩될(loaded) 수 있게 하기 위해 감소시킨다. 결정 트리 코더(106)는 또한 또는 대안적으로, 다른 압축 기법을 사용하여 모델 콘텍스트(108)의 결정 트리 데이터(또는 코딩된 결정 트리 데이터)를 압축할 수 있다. 이들 실시예에서 결정 트리 스코어러(102) 또는 다른 온칩 로직(on-chip logic)은 결정 트리 스코어러(102) 상에서의 스코어링을 위해 압축된 결정 트리 또는 코딩된 결정 트리 데이터를 압축해제하도록(decompress) 구성된다.
호스트(104)는 결정 트리 스코어러(102)의 대역폭 및 저장 요구사항을 감소시키기 위해, 특징 벡터(112)를 코딩된 모델 콘텍스트(108)와 호환가능하게 만들기 위해, 그리고 모델 콘텍스트(108) 및 특징 벡터(112)를 본 문서 내의 다양한 실시예에서 기술된 바와 같은 특수화된 하드웨어에 의해 더 용이하게 처리되는 형태로 두기 위해, 특징 벡터(112) 내의 특징 값을 코딩하는 특징 벡터 코더(feature vector coder)(110)를 또한 포함한다. 이 상세한 설명 내에서 다른 데에서 더욱 상세히 기술되는 바와 같이, 모델 콘텍스트(108) 내의 임계 색인 값과의 특징 색인 값의 비교가 대응하는 특징 값 및 임계 값의 비교와 동등하도록 특징 벡터 코더(110)는 특징을 위한 특징 색인 값을 선택한다.
호스트(104)는 결정 트리 스코어링 작업을 스케줄링하는 결정 트리 스코어링 스케줄러(decision tree scoring scheduler)(114)를 포함한다. 호스트(104)는 특징 벡터(112) 중의 다양한 특징 벡터가 모델 콘텍스트(108) 중의 다양한 모델 콘텍스트를 상대로 스코어링될 것임을 수신하거나 판정한다. 결정 트리 스코어링 작업의 예시적 세트는 다음을 포함한다:
특징 벡터 1 / 모델 콘텍스트 A
특징 벡터 2 / 모델 콘텍스트 B
특징 벡터 3 / 모델 콘텍스트 A
특징 벡터 4 / 모델 콘텍스트 B
새로운 특징 벡터를 결정 트리 스코어러(102) 내에 로딩하는 데에 걸리는 것보다 새로운 모델 콘텍스트를 결정 트리 스코어러(102) 내에 로딩하는 데에 일반적으로 더 많은 시간이 걸리기 때문에, 결정 트리 스코어링 스케줄러(114)는 새로운 모델 콘텍스트(108)가 결정 트리 스코어러(102) 내에 로딩되는 횟수를 감소시키기 위해 결정 스코어링 작업들을 재배열한다. 위의 예를 계속하면, 결정 트리 스코어링 작업들은 다음과 같이 재배열된다:
특징 벡터 1 / 모델 콘텍스트 A
특징 벡터 3 / 모델 콘텍스트 A
특징 벡터 2 / 모델 콘텍스트 B
특징 벡터 4 / 모델 콘텍스트 B
탐색 분야에서, 모델 콘텍스트는 수행되는 탐색의 유형과 연관된 결정 트리의 세트이다. 결정 트리의 상이한 세트를 활용하는 탐색 콘텍스트의 예는 언어(language)(영어 질의에 대한 탐색은 독일어 질의에서 수행되는 탐색과는 상이한 모델 콘텍스트를 사용하여 수행될 수 있음), 이미지 탐색(image search), 뉴스 탐색(news search), 비디오 탐색(video search) 및 기타 등등이다. 다른 탐색 콘텍스트는 별도의 모델 콘텍스트를 요할 수 있다.
호스트(104)는 데이터경로(datapath) 인터페이스, 예를 들어 인터페이스(118 및 120)를 통하여 하나 이상의 특수화된 또는 프로그램가능한 로직 디바이스(116)에 통신가능하게 커플링되도록(communicatively coupled) 구성된다. 인터페이스(118 및 120)는, 다양한 실시예에서, 주변 컴포넌트 인터페이스 익스프레스(Peripheral Component Interfaces Express: PCI-Express) 인터페이스인데, 다만 실시예의 범주로부터 벗어나지 않고서 다른 인터페이스 유형과 사양이 사용될 수는 있다. 인터페이스 유형의 결정은 인터페이스 대역폭 목표에 기반할 수 있는데, 다음으로 이는 결정 트리 스코어링 시스템(100)을 위한 처리량(throughput) 목표에 기반할 수 있다. 목표 처리 속도가 탐색 문서 스코어링당(per search document scoring) 1 마이크로초(microsecond)인 특정한 예에서, 본 문서 내에 기술된 결정 트리 및 특징 압축 기법을 사용하는 것은 특징 벡터당(가령, 후보 탐색 결과 문서당) 대략 2 내지 8 KB, 또는 초당 대략 2 내지 8 GB의 대역폭 목표를 초래한다. PCI-Express는 이 목표에 적합한데, 다만 다른 인터페이스 유형과 사양이 이 목표 또는 다른 목표에 또한 적합할 수 있다. 실시예의 범주로부터 벗어나지 않고서 단일 고속 인터페이스 대신에 여러 인터페이스가 또한 사용될 수 있다.
아래에서 더욱 상세히 기술되는 바와 같이, 호스트(104)는 컴퓨팅 시스템의 하나 이상의 일반 목적 프로세서에 의해 실행가능한 복수의 프로그래밍 명령어로서 구현될 수 있다. 그러나, 호스트(104)의 하나 이상의 양상이 (ASIC 칩 또는 FPGA 칩과 같은) 특수화된 또는 프로그램가능한 로직 회로 상에 구현될 수 있다.
결정 트리 스코어러(102)는 하나 이상의 결정 트리 클러스터(122)를 포함한다. 결정 트리 클러스터들(122)은 모델 콘텍스트(108)와 특징 벡터(112)를 그 자신들 사이에 분배하도록 구성된다. 대안적으로, 또는 추가로, 결정 트리 스코어러(102)는 결정 트리 스코어러(102) 도처에 모델 콘텍스트(108) 및/또는 특징 벡터(112)를 전달하는 상호연결 네트워크(interconnect network)를 포함할 수 있다. 결정 트리 클러스터(122)는 결정 트리 스코어를 이웃 결정 트리 클러스터(122)로부터는 물론, 결정 트리 클러스터(122) 내의 결정 트리 프로세서(124)로부터 처리 및 전파하도록 또한 구성된다. 결정 트리 클러스터(122)는, 이 상세한 설명 내에서 다른 데에서 더욱 상세히 기술될 바와 같이, 결정 트리 프로세서(124) 및 이웃 결정 트리 클러스터로부터 수신된 스코어들을 처리하도록 - 이는 결정 트리 스코어들을 합산하는 것(summing)을 포함할 수 있음 - 그리고 처리된 스코어들(가령, 합산된 스코어들)을 다른 이웃 결정 트리 클러스터(122)로 전파하도록 구성된다. 결정 트리 스코어러(102)는 결정 트리 클러스터(122) 중 하나로부터 결정 트리 스코어링 작업을 위한 최종 스코어(가령, 스칼라(scalar) 또는 벡터 양(vector quantity))를 수신하도록 그리고 그 스코어를 호스트(104) 또는 다른 다운스트림 디바이스에 출력하도록 구성된다.
결정 트리 프로세서(124)는, 구현에 따라, 예를 들어 병렬로 그리고 동시에 특징 벡터(112) 중의 공통 특징 벡터를 상대로, 또는 특징 벡터(112) 중의 상이한 특징 벡터를 상대로, 하나 이상의 모델 콘텍스트(108)의 결정 트리를 실행하는 회로를 포함한다. 특징 스토리지(126) 중의 상이한 것들이 특징 벡터들(112) 중의 공통적인 것이든 또는 특징 벡터들(112) 중의 상이한 것들이든 저장할 수 있다. 각각의 결정 트리 클러스터(122) 내의 특징 스토리지(126)는 특징 벡터(112) 중의 동일한 것 또는 상이한 것을 저장할 수 있다.
본 문서에서 사용되는 바와 같이, 결정 트리 프로세서(124)는 결정 트리를 스코어링하는 회로를 포함한다. 결정 트리 프로세서(124)는 결정 트리도, 그리고 결정 트리 코드 그 자체(결정 트리 테이블로서 실체화되고(embodied) 결정 트리 프로세서(124)가 액세스할 수 있는 어떤 메모리 내에 저장됨)도 스코어링하는 회로를 포함할 수 있다. 하나 이상의 결정 트리 테이블이 결정 트리 프로세서(124) 내에 하드코딩되거나(hard-coded), 결정 트리 프로세서(124) 내의 메모리 상에 저장되거나, 이와 달리 결정 트리 프로세서(124)와 연관되고 이에 통신가능하게 커플링된 메모리 상에 저장될 수 있다. 결정 트리 테이블이 내부에 저장된 메모리는 공유(shared) 또는 전용(dedicated) 스토리지일 수 있고, 랜덤 액세스 메모리(Random-Access Memory: RAM), 플래시 메모리(flash memory), 판독 전용 메모리(Read-Only-Memory: ROM), 또는 다른 메모리 유형일 수 있다. 결정 트리 테이블이 저장된 메모리는 온다이 메모리(on-die memory)와 같이 온다이(on-die)일 수 있거나, 고속 메모리 인터페이스를 통하여 통신가능하게 커플링될 수 있는 것과 같이 부속 메모리(attached memory) 상에서 오프칩(off-chip)일 수 있다. 모델 콘텍스트는 공유 또는 전용 메모리 내에 공동상주(co-resident)할 수 있다. 몇몇 실시예에서 호스트(104)는 결정 트리 스코어러(102)에, 그리고/또는 온칩(on-chip) 또는 부속(attached) 메모리에 모델 콘텍스트(108)를 제공할 수 있다. 호스트(104)는, 작업부하를 스케줄링하는 경우, 결정 트리 프로세서(124)에 의해 로딩되거나 아니면 액세스되고 실행되어야 할 모델 콘텍스트(108)의 표시(indication)를 결정 트리 스코어러(102)에 제공할 수 있다. 몇몇 실시예에서, 결정 트리 테이블을 저장하는 메모리의 두 레벨이 있을 수 있는데, (온칩 또는 부속 메모리일 수 있고, 하나 이상의 결정 트리 프로세서(124)에 전용이거나 공유될 수 있는) 메모리의 제1 레벨은 현재의 작업부하 요구사항에 따라 실행될 특정한 결정 트리 테이블 또는 테이블들과 로딩되거나 로딩가능하다. (온칩이거나 부속 메모리 내, 하나 이상의 결정 트리 프로세서(124)에 전용이거나 공유될 수 있는) 메모리의 제2 레벨은 하나 이상의 공동상주 모델 콘텍스트를 저장할 수 있는데, 이들 전부 또는 부분은 결정 트리 테이블 메모리의 제1 레벨 상으로 로딩가능하다.
호스트(104)는 특징 벡터(112) 중의 공통적인 것을 복수의 특수화된 또는 프로그램가능한 로직 디바이스(116)에 제공하고, 또한 단일 모델 콘텍스트(108)의 결정 트리 테이블을 복수의 특수화된 또는 프로그램가능한 로직 디바이스(116)에 제공할 수 있다. 그러므로, 복수의 특수화된 또는 프로그램가능한 로직 디바이스(116)에 걸친 개개의 결정 트리 클러스터(122) 및 결정 트리 프로세서(124)는 특징 벡터(112) 중의 공통 특징 벡터를 상대로 단일 모델 콘텍스트(108)의 결정 트리를 스코어링할 수 있다. 복수의 특수화된 또는 프로그램가능한 로직 디바이스(116) 각각으로부터의 스코어 데이터(score data)는 이 상세한 설명 내에서 다른 데에서 기술되는 바와 같이 복수의 특수화된 또는 프로그램가능한 로직 디바이스(116) 각각 내에서 전파되고, 또한 호스트(104)로 도로 전달될 수 있다. 몇몇 실시예에서, 스코어 데이터는 제1 특수화된 또는 프로그램가능한 로직 디바이스(116)로부터 다른 특수화된 또는 프로그램가능한 로직 디바이스(116)(이후 이는 특수화된 또는 프로그램가능한 로직 디바이스(116) 양자 모두를 위한 조합된 스코어 데이터(combined score data)를 산출하기 위해 (예를 들어 스코어를 합산하거나 부가함(appending) 또는 스코어의 합을 부가함으로써) 스코어 데이터를 추가로 전파할 수 있음)로 전달될 수 있다.
실시예의 범주로부터 벗어나지 않고서 스코어 데이터를 처리하는 다른 방법이 가능하다. 예컨대, 각각의 결정 트리 스코어러(102)는 스코어들, 또는 스코어들의 합들의 리스트들을 결정 트리 스코어러(102) 내의 결정 트리 프로세서(124) 및/또는 결정 트리 클러스터(122)로부터 수신하고, 최종적인 합산된 값을 호스트(104), 다른 프로그램가능한 로직 디바이스(116)에든 또는 어떤 다른 다운스트림 디바이스에든 제공할 수 있다. 결정 트리 스코어러(102)는 스코어(또는 스코어의 합)의 리스트를 호스트(104), 다른 프로그램가능한 로직 디바이스(116)에 또는 다른 다운스트림 디바이스에 제공할 수 있다. 호스트(104), 다른 프로그램가능한 로직 디바이스(116), 또는 다른 다운스트림 디바이스는, 예를 들어 스코어들을 합산하는 것 또는, 예를 들어 복수의 특수화된 또는 프로그램가능한 로직 디바이스(116) 중 하나 이상으로부터의 스코어 데이터에 기반하여, 특징 벡터(112)를 위한 최종 스코어를 판정하기 위해 어떤 다른 알고리즘을 수행하는 것에 의해, 특징 벡터(112)의 최종 스코어링을 수행할 수 있다.
몇몇 실시예에서, 특수화된 또는 프로그램가능한 로직 디바이스(116)는, 애플리케이션 특정 집적 회로(Application-Specific Integrated Circuit: ASIC), 프로그램가능 로직 디바이스, 예를 들어 필드 프로그램가능 게이트 어레이(Field Programmable Gate Array: FPGA), 시스템 온 칩(System on a Chip: SoC), 결정 트리를 스코어링하는 특수화된 부분을 갖는 일반 목적 프로세서의 일부로서, 어떤 다른 로직 디바이스 또는 위의 것들의 어떤 조합 중 하나 이상이거나 이에 포함될 수 있다.
확장된 명령어 세트를 구비한 일반 목적 프로세서
몇몇 실시예에서, 일반 목적 프로세서의 명령어 세트 아키텍처는 결정 트리 순회(decision tree traversal)와, 스코어링 명령어와, 상태(state)를 포함하도록 확장된다. 몇몇 실시예에서, 확장된 명령어 세트는 결정 트리 내의 하나의 노드를 행보하라는 명령어를 포함한다. 몇몇 실시예에서, 확장된 명령어 세트는 복수의 노드를 행보하라는, 또는 루트(root)(최상위 노드)로부터 리프까지 전체 결정 트리를 행보하라는 명령어를 포함한다.
결정 트리를 순회하기(traverse) 위해 확장된 명령어 세트를 구비한 일반 목적 프로세서에 의해 사용가능한 상태는 특징 벡터 데이터 및 결정 트리 노드의 표현을 포함한다. 결정 트리 노드는 데이터 구조로, 실행가능한 명령어로, 또는 어떤 다른 형태로 표현될 수 있다. 데이터 구조로서, 결정 트리는 하나 이상의 노드를 포함하는 트리로서 표현될 수 있는데, 노드는 특징 식별자와, 임계 값과, 좌측 및 우측 서브트리 데이터(이는 좌측(상응해서 우측) 서브트리 노드 또는 좌측(상응해서 우측) 리프 노드 또는 리프 스코어 값을 식별할 수 있음)를 포함한다. 특정한 노드의 데이터는 인접한 바이트들, 가령 레코드(record) 또는 '구조체'(struct) 또는 '클래스'(class)로 묶일(bundled) 수 있거나, 테이블들에 걸쳐 펼쳐질(spread) 수 있다. 결정 트리 노드가 데이터 구조로서 표현되는 경우에, 트리 노드는 데이터 값, 가령 그 노드의 색인(index) 또는 포인터(pointer)(머신 주소(machine address))에 의해 식별된다. 하나 이상의 노드를 행보하라는 명령어에 응답하여 트리 노드를 순회하는 것은 트리 노드 식별자로 시작하는 것과, 그것이 식별하는 특징을 인출하는 것(retrieving)과, 그것을 노드의 임계 값과 비교하는 것과, 우측 또는 좌측 리프/리프 값, 또는 좌측 또는 우측 서브트리의 트리 노드 식별자를 판정하기 위해 비교 결과를 사용하는 것을 포함한다. 몇몇 실시예에서, 노드를 행보하라는 명령어(본 문서에서 NODEWALK 명령어로 지칭됨)는 두 개의 파라미터, 예컨대 트리 노드에 대한 포인터를 포함하는 레지스터(register) 및 RAM 내의 특징 벡터에 대한 포인터를 포함하는 레지스터를 취할 수 있고, 두 개의 값, 예컨대 (리프 노드가 아닌 경우) 좌측이나 우측 서브트리에 대한 포인터를 포함하거나 (리프 노드인 경우) 출력 값을 포함하는 레지스터는 물론, 만약 NODEWALK가 (트리 행보(tree walk)를 종결시키는) 리프 값에 도달한 경우 설정되는 플래그(flag)를 포함하는 컨디션 코드 레지스터(condition code register)를 산출할 수 있다. 어셈블리(assembly) 언어에서, 트리 행보는 다음을 포함한다:
Figure pct00005
NODEWALK의 다른 실시예는 루프 테스트(loop test) 및 점프(jump)를 하나의 명령어로 묶는다:
Figure pct00006
다른 실시예는 하나의 명령어 내에서 전체 트리를 행보한다:
Figure pct00007
몇몇 실시예에서, 결정 트리는 프로세서에 의해 실행되는 일련의 트리 순회 명령어로서 표현되는데, 이는 결정 트리 순회 명령어를 구현한다. 그 명령어는 결정 트리 내의 하나의 노드에 대응한다. 그 명령어는, 비트 스트링(bit string)으로서 표현되는데, 특징 식별자와, 임계와, 리프 및 리프 값 및/또는 좌측 및 우측 서브트리 노드의 식별자를 포함하는 비트 필드(bit field)들을 포함한다. 이 실시예에서, 트리 노드는 명령어 (머신 코드) 주소로써 식별된다. 따라서 트리 행보는 좌측 또는 우측 서브트리를 위한 코드로 점프하도록 프로그램 제어 흐름을 바꾸는 트리 노드 행보 명령어를 실행하는 것을 포함한다.
예컨대, 만약 결정 트리가 두 개의 노드로 이루어진 경우:
Figure pct00008
이것은 이 프로그램에 의해 표현될 수 있다:
Figure pct00009
여기서 NODE 명령어는 다음을 인코딩한다:
Figure pct00010
# 필드들은 명령어의 '즉시'(immediate) 값 비트 필드들이다.
이 실시예에서 결정 트리는 그것의 제1 NODE 명령어를 실행함으로써 스코어링되는데, 이는 그것이 리프에 도달할 때까지, 다음 좌측 또는 우측 NODE 명령어로 점프하는 등등이다. 루트 NODE 명령어의 비트 필드들은 특징 식별자(10)와, 임계 값(41)과, 좌측 서브트리('left')와, 우측 서브트리(nil(닐))와, 좌측 리프 값(nil)과, 우측 리프 값(c)를 인코딩한다. 이 예에서 만약 식별된 특징이 임계 t1 이하이면, 제어는 주소 'left'에서의 제2 NODE 명령어로 이동한다. 이 명령어의 비트 필드들은 그것의 특징 식별자(20), 임계 값(t2), 좌측 및 우측 서브트리(nil)와, 좌측 및 우측 리프 출력 값(각각 a 및 b)을 인코딩한다. 만약 노드 명령어가 리프로 나아가면, 그것은 명시된 주소(end)로 제어를 넘겨주고 리프 색인 또는 출력 값은 출력 레지스터 내에 획득된다.
다른 실시예에서, 트리 순회 명령어는 특징 벡터 및 리프 노드 주소를 식별하기 위해 묵시적 레지스터(implicit register), 특수 목적 레지스터(special purpose register), 또는 메모리 위치(memory location)를 사용할 수 있다. 특정한 결정 트리 노드를 표현하는 데에 사용되지 않는 (nil 서브트리 필드와 같은) 명령어 비트 필드를 압축하거나 제거하기 위해 다른 실시예는 가변 길이(variable-length) 명령어 인코딩을 이용할 수 있다. 앞에서 기술된 것과 유사한 방식으로 (좌측 또는 우측 서브트리 주소와 같은) 비트 필드를 압축하거나 제거하기 위해 다른 실시예는 메모리 내의 명령어의 인접관계를 이용할 수 있다.
다른 실시예에서, 결정 트리 데이터 구조 메모리 또는 결정 트리 명령어 메모리는, 그것의 외부에 저장된, 일반 목적 프로세서 내에 통합될(integrated) 수 있거나, 메모리 캐시 계층구조(memory cache hierarchy)를 통해 외부 메모리에 커플링될(coupled) 수 있다.
결정 트리 순회, 스코어링 명령어 및 상태를 구비한 일반 목적 프로세서는 또한 특징 스토리지 RAM에 커플링될 수 있다. 몇몇 실시예에서 특징 스토리지 RAM은 이 상세한 개시 내에서 다른 데에서 기술된 바와 같이 특징 벡터 분배 네트워크(feature vector distribution network)에 의해 자동으로 로딩될 수 있다. 특히, 결정 트리를 행보하기 위해 확장된 명령어 세트를 구비한 일반 목적 프로세서에 의한 어떤 명령어의 실행도 요구하지 않고서 특징 벡터 분배 네트워크에 의해 이 RAM 내에 새로운 특징 데이터가 로딩될 수 있다. 이것은 결정 트리를 스코어링하는 데에 요구되는 시간과 에너지를 절약할 수 있다.
결정 트리 순회, 스코어링 명령어 및 상태를 구비한 일반 목적 프로세서는 또한 스코어 집계 시스템(score aggregation system)에 커플링될 수 있다. 이것은, 리프 노드까지 노드를 순회하기 위한 NODEWALK, TREEWALK, 또는 NODE와 같은 명령어로부터 기인하는 리프 출력 값(스코어)을 누적하기(accumulate) 위해, 추가적인 레지스터, 쓰레드 상태(thread state), 또는 가산기 트리 네트워크(adder tree network)를 포함할 수 있다. 이것은 또 결정 트리를 스코어링하는 데에 요구되는 시간과 에너지를 절약할 수 있다.
예시적 결정 트리 코딩
도 2는 본 개시의 다양한 실시예에 따라 결정 트리 코딩을 보여준다. 예시적 결정 트리(200)가 도 2에 예시된다. 그것은 복수의 결정 노드(202) 및 복수의 리프 노드(204)를 포함한다. 결정 노드(202)는 주소(address), 색인 번호(index number), 참조 숫자(reference numeral) 또는 다른 식별자(결정 노드(202)에서 비교되는 특징을 식별함)일 수 있는, 특징 식별자를 포함하여, 다양한 특징을 포함한다. 결정 노드(202)는 (특징 식별자를 통하여 참조되는) 특징 값이 비교되는 임계 값을 또한 포함한다. 결정 노드(202)는 좌측 브랜치 포인터 및 우측 브랜치 포인터를 또한 포함하는데, 이들은 다음 노드가 위치된 위치를 나타낸다. 각각의 결정 노드(202)는 비교를 표현하는데, 예컨대 노드 번호 7은 특징 "F1"으로 식별된 특징 값이 임계 수 10과 비교됨을 보인다. 실시예의 범주로부터 벗어나지 않고서 다른 비교가 가능하다.
본 문서 내에 기술된 실시예는 좌측 브랜치, 우측 브랜치, 좌측 노드, 우측 노드 등등을 언급한다. 그러나 이 용어들은 단지 결정 트리를 기술하기 위하여 사용된다. 일반적으로, 결정 트리 행보 알고리즘은 특정 값 및 임계 값 간의 비교를 수행하고 비교의 결과에 따라 제1 노드나 아니면 제2 노드로 나아간다. 설명의 용이함을 위하여, 이들 다음 노드는 본 문서 내에서 좌측 노드 및 우측 노드로 지칭되나, 이것은 문자적 또는 한정적 의미로 취해져서는 안 된다.
리프 노드(204)는 리프 값을 포함한다. 결정 트리 행보 알고리즘이 리프 노드(204)에 도달하는 경우, 결정 트리를 행보하는 특정한 인스턴스(instance)가 완료되고, 도착된 특정한 리프 노드(204)에 대응하는 리프 값이 출력된다.
결정 트리 코더(106)는 결정 트리(200)를 코딩한다. 결정 트리 코더(106)는 모델 콘텍스트 내의 각각의 결정 트리를 위해 결정 트리 테이블(206)을 생성한다. 결정 트리 테이블(206) 내에서, 인접관계로써 적어도 몇몇 브랜치 포인터가 제거된다. 그러므로, 결정 트리(200) 내의 노드 1은 노드 2 전에 있는 것으로 결정 트리 테이블 내에 코딩된다. 노드 3은 노드 2 다음에 열거되고(listed), 노드 4는 노드 3 다음에 있다. 그러므로, 결정 트리 테이블(206) 내의 노드 1 내지 노드 3의 실행 동안, 결정 트리 프로세서, 예를 들어 결정 트리 프로세서(124) 중 하나는 특징 값과 임계 값과의 비교의 결과에 기반하여, 결정 트리 테이블(206) 내의 뒤따르는 인접 노드든 또는 오프셋 값과 같은 다음 노드 데이터에 의해 나타내어지는 다른 노드든, 결정 트리 프로세서에 의해 실행될 다음 노드로서 선택할 것을 안다. 그러므로, 도 2에 예시된 예시적 인접관계에 기반하면, 좌측 브랜치를 선택할 것을 나타내는, 결정 트리 테이블(206)의 결정 노드를 실행하는 결과는 인접 노드를 다음 노드로서 선택하는 것을 초래한다. 그러므로, 특정한 결정 노드가 다른 결정 노드로 이어지(고 리프 노드로는 이어지지 않)는 좌측 브랜치를 갖는 경우에, 결정 트리 테이블(206) 내의 인접 노드는 다음 좌측 노드이다. 우측 다음 노드는 다음 노드 데이터, 예를 들어 오프셋 값을 사용하여 식별된다. (예컨대 좌측 브랜치가 리프 노드로 이어지기 때문에) 어떤 좌측 결정 노드도 없는 경우에, 우측 다음 노드가 인접하는 것이 가능한데, 그러한 우측 노드는 또한 다음 노드 데이터, 예를 들어 오프셋 값에 의해 식별될 수 있거나, 그것은 인접하는 것으로 가정될 수 있다.
인접관계에 기반하여 결정 트리 테이블(206) 내의 결정 노드(202)를 배열하는 것에 더하여, 결정 트리 코더(106)는 결정 트리 테이블(206) 내의 결정 노드(202)의 표현 내에 리프 노드(204)의 임의의 리프 노드 값을 또한 포함한다. 예컨대, 노드 7은 그것의 표현이 리프 값을 포함하도록 결정 트리 코더(106)에 의해 코딩된다. 노드 7의 실행의 결과에 기반하여(가령, 도 2에 도시된 바와 같이 특징 값과 임계 값 10과의 비교에 기반하여), 결정 트리 프로세서는 처리를 위한 다음 결정 노드로서 노드 8을 선택하거나 아니면 좌측 리프 노드의 값을 출력하기로 선택한다.
결정 노드(202)는 가변 길이 결정 노드(이것을 보여주기 위해 몇몇은 다른 것보다 더 작은 것으로 도시됨)로서 결정 트리 테이블(206) 내에 표현된다. 하나의 예에서, 결정 노드를 코딩하기 위해 결정 트리 코더(106)에 의해 이하의 필드들이 사용된다.
2개 리프: {feat_ad; info; L_Leaf_val; R_Leaf_val} (72 비트)
1개 리프: {feat_ad; info; L_Leaf_val or R_Leaf_val} (48 비트)
0개 리프: {feat_ad; info; delta(optional)} (24 또는 36 비트)
결정 트리 테이블(206) 내의 결정 노드(202)의 모든 표현은 특징 식별자("feat_ad") 및 정보("info") 필드를 포함한다. 특징 식별자는 결정 노드의 실행에서 임계와 비교될 (이 상세한 설명 내에서 다른 데에서 기술된 바와 같은 특징 색인 값일 수 있는) 특징 값이 발견되는 특징 스토리지 내의 위치를 식별한다. 특징 식별자는 결정 트리 프로세서가 특징 스토리지 내에서, 예를 들어 특징 스토리지(126) 내에서 특징 값을 찾아보기 위해 사용하는 주소 또는 다른 식별자일 수 있다. 정보 필드는 아래에서 더욱 상세히 논의되는 다양한 서브필드들을 포함한다.
2개 리프 결정 노드는 좌측 리프 값("L_Leaf_val") 및 우측 리프 값("R_Leaf_val")을 또한 포함한다. 이 값들은 결정 트리(200)의 가능한 결과 또는 출력을 나타낸다. 1개 리프 결정 노드는 좌측 리프 값("L_Leaf_val") 또는 우측 리프 값("R_Leaf_val") 중 하나를 포함한다. 리프 값은 정수, 고정 소수점, 부동 소수점, 또는 색인(결정 트리 테이블 외부에 저장된 고유한 값을 식별함)을 포함하는 다양한 데이터 유형을 포함할 수 있다.
리프가 전혀 없는 결정 노드, 예를 들어 노드 2는 우측 결정 노드가 위치된 곳을 식별하는 선택적(optional) 델타 값을 포함한다. 이 경우에, 좌측 결정 노드는 결정 트리 테이블(206) 내에서 인접한 위치에 위치된다(가령, 노드 2에 대해, "좌측" 결정 노드는 노드 3임). 우측 결정 노드는 델타 값에 의해 식별가능한 결정 트리 테이블(206) 내의 위치에 위치된다. 결정 트리 프로세서는 우측 결정 노드 값을 판정하기 위해 델타 값을 처리한다. 예컨대, 결정 트리 프로세서는 다음 우측 결정 노드의 위치 값(가령, 주소 또는 색인 값)을 획득하기 위해 현재 실행되는 결정 노드의 위치 값(가령, 색인 값 또는 주소)에 델타 값을 부가할 수 있다. 몇몇 사례에서, 델타 값은 아래에서 더욱 상세히 기술되는 바와 같은 정보 필드 내에 포함된다. 이들 사례에서는, 별개의 델타 값이 노드 표현 내에 포함되지 않는다.
예시적 구현에서, feat_ad 필드는 12비트이고, info 필드는 12 비트이며, rdelta 필드는 12 비트이고, 좌측 리프 값은 24 비트이며, 우측 리프 값은 24비트이다.
info 필드는 좌측 리프가 있는지, 우측 리프가 있는지, 임계 값을 식별하는 다양한 서브필드들을 포함하고 다음 우측 노드의 위치를 파악하기 위한 공통 오프셋 또는 델타 값을 인코딩한다. info 필드의 하나의 예는 다음과 같다:
Info: {nyb; x; l_leaf; r_leaf; threshold}
몇몇 실시예에서, nyb 필드는 특징 값이 4 비트 또는 8비트 워드(word)인지(가령, 특징 값이 "니블"(nibble)인지) 식별하는 1 비트이고, x 필드는 1비트이며, l_leaf는 1 비트이고, r_leaf는 1 비트이며, threshold는 8비트인데, 다만 실시예의 범주로부터 벗어나지 않고서 다른 필드 크기가 사용될 수 있다. l_leaf 필드는 노드가 좌측 리프 값을 포함하는지를 나타내고, 마찬가지로, r_leaf 필드는 노드가 우측 리프 값을 포함하는지를 나타낸다. 위에서 지적된 바와 같이, info 필드는 우측 노드 오프셋 또는 델타 값을 코딩하는 데에 사용될 수 있어, 이로써 노드 내의 별개의 델타 필드에 대한 필요성을 제거한다. x=1인 경우에, l_leaf 및 r_leaf 필드는 4개의 공통 오프셋 값을 코딩하는 데에 사용된다. 특정한 예에서, l_leaf 및 r_leaf 필드는 8 워드, 12 워드, 16 워드 및 20 워드(이 특정한 예에서 한 워드 = 12 비트임)의 오프셋을 코딩하는 데에 사용되는데, 다만 실시예의 범주로부터 벗어나지 않고서 다른 오프셋 값이 코딩될 수 있다. 오프셋 값이 info 필드 내의 공통 오프셋 값 중 하나로써 코딩될 수 없는 경우-예컨대 다음 우측 노드가 현재의 노드로부터 공통 오프셋 값 중 하나 떨어진 위치에 있지 않기 때문-에는 선택적인 별도의 오프셋 델타 필드가 사용된다. 몇몇 실시예에서, 결정 트리 테이블 내의 하나 이상의 결정 트리의 위치 및/또는 결정 트리의 개수를 식별하는 적절한 코딩과 함께, 하나의 결정 트리 테이블 내에 여러 결정 트리가 저장된다.
몇몇 실시예에서, 결정 트리 테이블(206)은 DTT 헤더(DTT header)(208)를 또한 포함하는데, 이는 결정 트리 테이블(206)의 다양한 양상, 예를 들어 결정 트리 테이블(206) 내에 포함된 결정 트리의 개수 및 결정 트리 테이블(206) 내의 하나 이상의 결정 트리를 위한 시작 위치를 코딩한다.
예시적 임계 및 특징 압축
주어진 결정 트리 내에서, 또는 예를 들어 모델 콘텍스트(108) 내의 복수의 결정 트리 내에서, 결정 노드는 특징 식별자 및 임계 값을 포함한다. 예시적 결정 트리 노드 실행에서, (특징 식별자 feat_ad에 의해 색인화된(indexed) 위치에서 특징 벡터로부터 판독된) 특징 값이 임계 값과 비교된다. 그 비교는 특징 값이 임계 값 이하인지의 판정일 수 있다. 만일 그렇다면, 좌측 브랜치가 선택되고, 만일 아니라면, 우측 브랜치가 선택된다. 실시예의 범주로부터 벗어나지 않고서 다른 유형의 비교가 가능한데, 예를 들어 미만, 초과, 또는 이상이다. 아래에 기술된 특징 값 및 임계 값 인코딩의 다양한 예는 결정 트리 비교가 특징 값이 임계 값 이하인지를 판정하는 것을 포함한다고 가정하나, 실시예의 범주로부터 벗어나지 않고서 다른 유형의 결정 트리 비교에 기반하여 특징 값 및 임계 값을 위해 유사한 코딩이 수행될 수 있다.
복수의 결정 트리 전체에 걸쳐서, 주어진 특징
Figure pct00011
가 하나 이상의 노드 내에서 참조될 것이다. 주어진 특징
Figure pct00012
를 참조하는 노드는 하나 이상의 임계 값
Figure pct00013
중 하나를 포함할 것이다. 그러므로, 주어진 모델 콘텍스트(가령, 하나 이상의 결정 트리) 내에서, 그리고 특정한 특징
Figure pct00014
에 대하여, 결정 트리 코더(106)는 특정한 특징
Figure pct00015
에 대응하는 특징 값들
Figure pct00016
이 비교되는 임계 값들
Figure pct00017
의 리스트
Figure pct00018
를 판정한다. 특정한 특징
Figure pct00019
와 비교되지 않는 임계 값들은 특정한 특징
Figure pct00020
을 위한 리스트 내에 포함되지 않는(데 다만 그것들은 다른 특징을 위한 다른 리스트 내에 포함될 것이)다. 모델 콘텍스트 내의 특정한 특징
Figure pct00021
을 위한 임계 값
Figure pct00022
을 코딩하기 위하여, 다음의 절차가 사용된다.
각각의 특징
Figure pct00023
에 대하여, 결정 트리 코더(106)는
Figure pct00024
를 또한 참조하는 모델 콘텍스트의 결정 트리 중 임의의 것의 임의의 노드 내에 포함된 모든 고유한 임계 값
Figure pct00025
의 정렬된 리스트
Figure pct00026
를 형성한다. 도 3은 실수 선(300) 상의 고유한 임계 값
Figure pct00027
의 예시적 리스트
Figure pct00028
를 보여준다. 정렬된 리스트
Figure pct00029
는 임계 값
Figure pct00030
중 고유한 것을 포함할 뿐이니, 따라서 특정한 임계
Figure pct00031
는, 설령 그것이 주어진 모델 콘텍스트 내에서
Figure pct00032
를 참조하는 여러 노드 내에 포함된다고 하더라도,
Figure pct00033
내에 단 한 번 나타난다.
Figure pct00034
내의 임계 값
Figure pct00035
을 위한 예시적 코딩(302)이 도 3에 도시된다. 가장 작은
Figure pct00036
는 색인 0을 할당받고 가장 큰
Figure pct00037
Figure pct00038
내의 고유한
Figure pct00039
의 총 개수보다 하나 작은 것과 같은 색인 번호를 할당받도록, 오름 차순으로
Figure pct00040
내의 실수 선(300) 상의 각각의 고유한
Figure pct00041
에 색인 번호
Figure pct00042
가 할당된다. 도 3에 도시된 예에서, 임계 값
Figure pct00043
은 가장 작은
Figure pct00044
이고, 색인 0을 할당받는 반면, 임계 값 t6은 가장 큰
Figure pct00045
이고 임계 색인 값 5를 할당받는다. 임계 값이 큰 수인 경우에, 고정 소수점 정수 색인 값
Figure pct00046
의 할당은 결정 트리 노드 표현 내에 임계를 표현하는 데에 요구되는 비트의 개수를 감소시킨다. 예컨대, 임계 값
Figure pct00047
은 32비트 부동 소수점 수일 수 있(는데 다만 실시예의 범주로부터 벗어나지 않고서 다른 개수의 비트와, 다른 유형의 변수가 사용될 수 있)고, 도 3에 예시된 예에서, 임계 색인 값
Figure pct00048
을 표현하는 데에 3비트 수만큼 작은 것이 사용될 수 있(는데 다만, 아래에서 더욱 상세히 기술되는 바와 같이,
Figure pct00049
와, 특징 색인 값
Figure pct00050
을 표현하는 데에 다른 개수의 비트가 사용될 수 있)다.
Figure pct00051
Figure pct00052
로 코딩하는 것에 더하여, 특징 벡터 코더(110)는 특징 벡터(112) 내의
Figure pct00053
에 대응하는 특징 값
Figure pct00054
을 특징 색인 값
Figure pct00055
으로 코딩하되, 그것이 코딩된 임계 색인 값
Figure pct00056
과 양립할 수 있도록 코딩한다. 각각의 특징 벡터(112)는 각각의
Figure pct00057
에 대한 특징 값
Figure pct00058
의 리스트를 포함한다. 몇몇 실시예에서, 특징 값
Figure pct00059
은 임계 색인 값
Figure pct00060
에 기반하여 특징 색인 값
Figure pct00061
으로 코딩되고, 특히 그것은 임계 색인 값
Figure pct00062
과 특징 색인 값
Figure pct00063
과의 비교의 결과가 임계 값
Figure pct00064
을 특징 값
Figure pct00065
과 비교하는 것의 결과와 동등하도록 코딩된다. 이 방식으로 특징 값을 코딩함으로써, 코딩된 특징 벡터(112)를 상대로 한 모델 콘텍스트(108) 내의 코딩된 결정 트리의 실행의 결과는 원래의 특징 값 및 임계 값에 기반한 결정 트리의 종래의 소프트웨어 기반 실행과 동일한 출력을 산출한다.
도 3에 예시된 예를 계속하면, 모델 콘텍스트(108) 내의 결정 트리의 결정 노드의 실행은 특징 값
Figure pct00066
이 임계 값
Figure pct00067
이하인지를 판정하는 것에 기반한다. 따라서, 이 예에서,
Figure pct00068
이도록 특징 값
Figure pct00069
은 특징 색인 값
Figure pct00070
으로 코딩된다.
더욱 일반적으로,
Figure pct00071
이도록 특징 값
Figure pct00072
은 특징 색인 값
Figure pct00073
으로 코딩되는데 여기서 compare는 결정 트리의 실행 동안 수행되는 비교 함수를 나타낸다(가령, ≤, ≥, <, 또는 > 중 하나). 도 3에 도시된 예에서, 특징 색인 값
Figure pct00074
은,
Figure pct00075
Figure pct00076
이게 되는 가장 큰 정수,
또는 그렇지 않으면 만약
Figure pct00077
인 경우
Figure pct00078
이도록 선택되는데 여기서
Figure pct00079
는 특정한 모델 콘텍스트 내의 특정한 특징
Figure pct00080
와 연관된 임계 값
Figure pct00081
(가령, 특징
Figure pct00082
을 참조하는 노드 내의 모든 임계 값
Figure pct00083
)의 총 개수이다. 환언하면, 특징 색인 값
Figure pct00084
은 (1) 특징 값
Figure pct00085
이상인 임계 값
Figure pct00086
중 가장 작은 것에 대응하는 임계 색인 값
Figure pct00087
이거나, 아니면 만약 모든 임계 값
Figure pct00088
이 특징 값
Figure pct00089
보다 더 작은 경우, (2) 가장 큰 임계 색인 값
Figure pct00090
보다 더 큰 수이도록 선택된다. 위에서 보여진 예에서, 대응하는
Figure pct00091
은 임계 값
Figure pct00092
의 총 개수와 같은 수이도록 선택되되, 이는 가장 큰
Figure pct00093
보다 하나 큰데, 다만 가장 큰
Figure pct00094
보다 큰 임의의 수가 선택될 수 있다.
도 3에 예시된 예에서, 특징 벡터 코더(110)는 예시적 특징 f1 내지 f6을 코딩(304)으로서 코딩한다. 특징 f1에 관해서, t2는 f1 이상인 가장 작은
Figure pct00095
이고, 따라서 f1을 위한 특징 색인 값
Figure pct00096
은 t2를 위한
Figure pct00097
(즉, 1)과 동일하게 설정된다. 특징 f6에 관해서, 어떤
Figure pct00098
도 f6 이상이지 않고, 따라서 f6을 위한
Figure pct00099
은 가장 큰
Figure pct00100
보다 더 큰 수로 설정된다. 도 3에 도시된 예에서, t6을 위한
Figure pct00101
은 6으로 설정되는데, 이는 가장 큰
Figure pct00102
인 5보다 하나 더 크다. 또한, 도 3에 도시된 예에서, f4는 3으로서 코딩된다.
특정한 fi와 연관된
Figure pct00103
Figure pct00104
를 코딩하기 위해 선택된 비트의 개수는, 실시예에서,
Figure pct00105
(
Figure pct00106
를 참조하는 결정 노드와 연관된 고유한
Figure pct00107
의 총 개수)를 수용하기에 충분히 크다. 몇몇 실시예에서,
Figure pct00108
Figure pct00109
를 표현하는 데에 가능한 색인 길이의 세트 중 하나가 사용되는데, 이는
Figure pct00110
Figure pct00111
를 코딩하는 것의 복잡도를 감소시킨다. 하나의 특정한 예에서,
Figure pct00112
Figure pct00113
는 4비트 워드나, 8비트 워드로서, 또는 여러 8비트 워드로서 코딩되는데, 다만 실시예의 범주로부터 벗어나지 않고서 다른 워드 길이가 사용될 수 있다. 특정한 예에서, 색인 워드 길이는
·만약
Figure pct00114
< 4인 경우,
Figure pct00115
Figure pct00116
을 4 비트로 재코딩함(여기서
Figure pct00117
는 밑이 2인 x의 대수(logarithm)임)
·그렇지 않고 만약
Figure pct00118
< 8인 경우,
Figure pct00119
Figure pct00120
을 8 비트로 재코딩함
·그렇지 않으면 임의의
Figure pct00121
Figure pct00122
Figure pct00123
> 255 임계 비교로써 (
Figure pct00124
)/255개의 별개의
Figure pct00125
로서 재코딩함
이도록 선택된다.
Figure pct00126
가 (
Figure pct00127
)/255개의 별개의
Figure pct00128
로 재코딩되는 경우에 결정 노드는 (
Figure pct00129
)/255개의 별개의
Figure pct00130
중 하나를 나타내도록 결정 트리 코더(106)에 의해 재코딩되고, 노드의 대응하는 임계 값
Figure pct00131
은 이에 따라 재코딩된다. 특정 예에서,
Figure pct00132
내에
Figure pct00133
가 총 1259개 있는
Figure pct00134
는 특정한
Figure pct00135
과 연관된 노드가 5개의 상이한 노드(각각의 노드는 별개의
Figure pct00136
및 8비트 임계를 가짐) 중 하나로 재코딩되는 것을 초래한다. 그러므로,
Figure pct00137
=0은 (0, 0, 0, 0, 0)으로서 코딩됨(가령, 본래의
Figure pct00138
가 분할된 별개의
Figure pct00139
전부에 대해 0으로서 코딩됨),
Figure pct00140
=255는 (255, 0, 0, 0, 0)으로서 코딩됨(가령, 별개의
Figure pct00141
중 첫 번째 것에 대해 255이고 별개의
Figure pct00142
중 모든 다른 것에 대해 0임),
Figure pct00143
=256은 (255, 1, 0, 0, 0)으로서 코딩됨(가령, 별개의
Figure pct00144
중 첫 번째 것에 대해 255이고 두 번째 별개의
Figure pct00145
에 대해 1이며, 모든 다른 것에 대해 0임),
Figure pct00146
=1258은 (255, 255, 255, 255, 238)로서 코딩된다. 별개의
Figure pct00147
에 대한 임계 값
Figure pct00148
이 유사한 방식으로 또한 코딩된다.
병렬 아키텍처
도 4는 다양한 실시예에 따라 특수화된 집적 회로 또는 프로그램가능한 집적 회로 상에 구현된 결정 트리 스코어러(102)의 아키텍처(400)를 보여준다. 아키텍처(400)는 그리드(grid) 내에 배열된 복수의 결정 트리 클러스터들(Decision Tree Clusters: DTC)(122)을 포함한다. DTC들(122)은 결정 트리 스코어러(102)로부터 모델 콘텍스트(108) 및 특징 벡터(112)를 수신하도록 구성된다. DTC(122)는 복수의 결정 트리 프로세서(124)의 서브세트 및 특징 스토리지(126)의 서브세트를 포함한다. 결정 트리 프로세서들(124)의 서브세트들은 결정 트리 프로세서들의 다른 서브세트들과 동일하거나 상이한 결정 트리 테이블들과 함께 로딩되고/되거나 로딩가능할 수 있고, 특징 스토리지(126)의 서브세트들은 동일하거나 상이한 특징 벡터들과 함께 로딩되거나 로딩가능할 수 있다(가령, 그것들은 공통 특징 벡터들과 함께 로딩될 수 있음).
DTC들(122)은 제1 이웃 DTC들(122)로부터 특징 벡터들(112)을 수신하고 그것들을 DTC들(122) 중의 제2 이웃 DTC들에 분배할 수 있다. 하나의 예에서, DTC(122-A)는 DTC(122-C)로부터 특징 벡터들(112)을 수신하도록, 그리고 도 4에서 화살표에 의해 예시된 바와 같이 그 특징 벡터들(112)을 DTC들(122-C 및 122-D)에 분배하도록 구성된다.
마찬가지로, DTC들(122)은 제1 이웃 DTC들(122)로부터 스코어 데이터를 수신하고 그것들을 DTC들(122) 중의 제2 이웃 DTC들에 전파할 수 있다. 스코어 데이터는 결정 트리 프로세서들(124) 중의 상이한 것들에 의해 (예를 들어 공통 특징 세트를 상대로) 출력되는 바와 같은 개별 결정 트리 스코어들에 기반할 수 있다. 스코어 데이터는 스코어들의 리스트, 스코어들의 합, 또는 (개별 스코어들의 곱, 또는 스코어들을 처리하기 위한 어떤 다른 알고리즘과 같이) 개별 스코어들에 기반하는 어떤 다른 스코어 데이터일 수 있다. 스코어의 리스트는 개별 결정 트리 결과로부터의 스코어의 리스트, 또는 처리된 스코어의 리스트일 수 있다. 예컨대, 특정한 결정 트리 클러스터(122)로부터의 모든 스코어는 합산되고, 최종 스코어 데이터가 각각의 DTC(122)로부터의 합산된 스코어의 리스트를 포함하도록 모든 DTC(122) 스코어의 리스트에 부가될 수 있다. 다른 예에서, 단일 결정 트리 프로세서(124)에 의해 실행된 결정 트리로부터의 모든 스코어가 합산될 수 있고, 모든 결정 트리 프로세서로부터의 합산된 스코어는 최종 스코어 데이터 내에 열거될 수 있고, 기타 등등이다. 실시예의 범주로부터 벗어나지 않고서 스코어 데이터를 전파하는 다른 방식이 사용될 수 있다. 몇몇 실시예에서, 각각의 DTC(122), DTC(122)의 그룹, 결정 트리 프로세서(124), 결정 트리 프로세서(124)의 그룹, 개별 결정 트리, 결정 트리의 그룹으로부터의 처리된 또는 미처리(raw) 스코어 데이터가 어떤 다른 방식으로(예를 들어 별개의 출력 네트워크 상에서) DTS(400)에 제공되며, 본 문서 내에 기술된 바와 같이 이웃 DTC(122)로 전파되지 않는다.
도 4에 도시된 예에서, DTC(122-E)는 이웃 DTC들(122-F 및 122-G)로부터 스코어 데이터를 수신하도록 구성된다. DTC(122-E)는 DTC(122-E) 내의 (결정 트리 프로세서들(124)과 같은) 결정 트리 프로세서들에 의해 제공되는 스코어 데이터와 더불어 이웃 DTC들(122-F 및 122-G)로부터 스코어 데이터를 수신하고, (예를 들어 스코어들을 합산하는 것, 스코어들을 개별 스코어들의 리스트에 부가하는 것, 또는 어떤 다른 방식으로 스코어 데이터를 처리하는 것에 의해) 조합된 스코어 데이터를 판정하기 위해 스코어 데이터를 처리하며, 조합된 스코어 데이터를 유사한 기능을 수행하는 이웃 DTC(122-H)에 전달하는 등등을 모든 스코어가 DTC(들) 중 최종 DTC(이는 최종 스코어 데이터를 DTS(102)에 전달함)로 전파될 때까지 하도록 구성된다. 더욱 일반적으로, DTC들(122)은 스코어가 이중 셈이 되지(double counted) 않게 스코어 데이터를 전파하도록 구성된다. 예컨대, DTS(102)를 통한 스코어 전파의 특정한 패턴은 DTC들(122) 중 어떤 것도 두 개의 이웃 DTC들(122)(이 안으로 동일한 스코어가 처리되었음)로부터 두 개의 스코어를 수신하지 않게 한다.
몇몇 실시예에서, 모델 콘텍스트를 결정 트리 스코어러 아키텍처(400) 내로 로딩하는 것은, 결정 트리 스코어러 아키텍처(400)의 DTC들(122)의 결정 트리 프로세서들 전부에 걸쳐 분배된 복수의 결정 트리를 포함하여, DTC들(122) 내의 결정 트리 타일들 중 상이한 것들 내로 상이한 결정 트리 테이블들을 로딩하는 것을 포함한다. 이 실시예들에서, DTC들(122) 내로 로딩된 결정 트리들 각각은 공통 특징 벡터에 기반하여 별개의 스코어를 산출한다.
몇몇 실시예에서, 결정 트리 아키텍처(400) 내로 동시에 로딩된 상이한 결정 트리 테이블은 단일 모델 콘텍스트(108)의 일부이거나, 상이한 모델 콘텍스트(108)의 일부일 수 있다. 몇몇 실시예에서, 여러 결정 트리 모델이 단일 모델 콘텍스트로 코딩된다. 하나의 예에서, 두 모델이 유사하나 몇몇 차이를 가질 수 있다. 두 모델을 위한 결정 트리는 모델 1 아니면 모델 2를 선택하는 새로운 결정 노드를 도입하기 위해 약간 수정된다. 추가로, 모델 1 아니면 모델 2를 위해 선택하도록 특징 벡터 내로의 적절한 특징이다.
몇몇 실시예에서, 특징 벡터를 결정 트리 스코어러 아키텍처(400) 내로 로딩하는 것은, DTC들(122)의 특징 스토리지 타일 각각 내로 동일한 특징 벡터 값을 로딩하는 것을 포함한다. 그러므로, 실시예에서 서로 상이한, DTC들의 복수의 결정 트리는, 특징의 동일한 세트를 상대로 스코어링되는데, 모든 스코어가 처리되고(가령, 합산되고) 도로 DTS(102)로 전파된다.
다른 실시예에서, DTC들(122) 중 다양한 DTC가, 그것들이 DTC들(122) 중 다른 것과 동일한 결정 트리를 실행하도록, 동일한 결정 트리와 함께 로딩된다. 상이한 특징 벡터를 상대로 결정 트리가 실행되도록 상이한 특징 벡터가 DTC들 중 상이한 DTC 내로 로딩될 수 있다. 몇몇 실시예에서, DTC들(122)은 상이한 특징 벡터와 함께 로딩되고 동일한 결정 트리 또는 결정 트리의 그룹이 결정 트리 스코어러 아키텍처(400) 내로 로딩된다. 이들 실시예에서, 각각의 DTC(122)는 하나 이상의 특징 벡터의 상이한 그룹과 함께 로딩된다. 결정 트리는 특징 벡터를 상대로 스코어링되고 특징 벡터를 지나 모델 콘텍스트의 모든 결정 트리를 흘러가 실행함에 따라 특징 벡터에 대해 시간에 걸쳐 스코어가 누적된다. 이들 실시예에서, DTC들(122)은 모델 콘텍스트의 모든 결정 트리가 로딩되고 특징 벡터를 상대로 실행될 때까지 특징 벡터를 위한 스코어를 유지하도록 구성될 수 있되, 대안적으로는, 개별 결정 트리 스코어가 호스트(104)에 송신되는데, 이는 특정한 특징 벡터를 위한 스코어를 누적하고 처리한다.
또 다른 실시예에서, DTC들(122)의 상이한 그룹이 상이한 결정 트리 작업(가령, 모델 콘텍스트 및 특징 벡터의 조합)과 함께 로딩된다. 그러므로, 결정 트리 스코어러 아키텍처(400)의 제1 부분은 제1 모델 콘텍스트를 상대로 제1 특징 벡터를 위한 스코어를 판정하고, 결정 트리 스코어러 아키텍처(400)의 제2 부분은 제2 모델 콘텍스트를 상대로 제2 특징 벡터를 위한 스코어를 판정하며, 그 밖에 결정 트리 스코어러 아키텍처(400)의 제N 부분이 제N 모델 콘텍스트를 상대로 제N 특징 벡터를 위한 스코어를 판정하는 등등이다. 이들 실시예에서, 각 부분의 DTC(122)는 모델 콘텍스트의 결정 트리와 함께 로딩되고, 특징 벡터는 스코어링을 위해 그 부분들 내에서 하나씩 분배되거나, 각 부분의 DTC(122)는 상이한 특징 벡터와 함께 로딩되고, 모델 콘텍스트의 결정 트리는 스코어링을 위해 그 부분들 내에서 하나씩 분배된다.
결정 트리 스코어러 아키텍처(400) 내의 DTC(122)의 개수는, 결정 트리 스코어러 아키텍처(400)가 구현된 집적 회로의 크기 및 능력에 따라, 임의로 큰 수까지 확대될(scale up) 수 있다.
몇몇 실시예에서, 하나보다 많은 결정 트리 스코어러 아키텍처(400)가 활용되는데, 각각은 병렬로 실행되는 DTC들(122)로 된 그것 자신의 세트를 구비한다. 이들 실시예에서, 하나 이상의 칩의 DTC(122) 상으로 단일 모델 콘텍스트가 로딩될 수 있고, 특징 벡터가 스코어링을 위해 하나씩 상이한 칩의 DTC(122)로 분배된다. 다른 실시예에서, 상이한 칩의 DTC(122) 상으로 상이한 특징 벡터가 로딩되는데, 모델 콘텍스트의 상이한 결정 트리가 스코어링을 위해 DTC(122) 각각 내로 하나씩 분배된다. 다양한 다른 실시예에서, 조합된 다중 칩(multi-chip) 결정 트리 스코어러 아키텍처(400)의 상이한 부분을 위해 이 접근법들의 조합이 활용될 수 있다.
몇몇 실시예에서, 결정 트리 스코어러 아키텍처(400) 내로 로딩된 모델 콘텍스트를 위한 전체적인 또는 조합된 스코어를 판정하는 것은 결합적 기능(associative function), 예를 들어 덧셈(addition) 또는 곱셈(multiplication)에 기반하는데, 여기서 스코어들이 그룹화되는(grouped) 순서가 결과를 결정하는 것은 아니다. 그러므로, DTC들(122) 중의 DTC들 내의 결정 트리들의 분배는 아키텍처(400) 내로 로딩된 모델 콘텍스트의 결정 트리들을 상대로 특정한 특징 벡터를 위한 올바른 최종 또는 조합된 스코어를 산출하는 데 반드시 중요한 것은 아니다. 다른 실시예에서, 모델 콘텍스트 결정 트리 스코어링 작업 및 특징 벡터를 위한 스코어들의 처리는 결합적이지 않고, 결정 트리 및/또는 특징 벡터가 아키텍처 도처에 분배되는 순서는 특정한 특징 벡터를 위한 최종 또는 조합된 스코어를 판정하는 데에 중요하다.
특수화되거나 프로그램가능한 로직 디바이스(116) 내부의 하나 이상의 네트워크를 통하여 DTC(122) 및/또는 결정 트리 프로세서(124)에 특징 벡터(112), 모델 콘텍스트(108)의 결정 트리 테이블, 그리고/또는 스코어 데이터가 분배될 수 있다. DTC(122), 결정 트리 프로세서(124) 및 다양한 특징 스토리지(126) 중 하나 이상은 패킷 헤더를 통하여 주소지정가능할(addressable) 수 있다. 결정 트리 프로세서들(124)을 위한 공유 또는 전용 스토리지 내로 로딩가능한 결정 트리 테이블들을 위한 분배 방법에 상관없이, 결정 트리 테이블들은 개별적으로 (예를 들어 패킷을 통하여) 송신되고 결정 트리 프로세서들(124) 또는 DTC들(122) 중 몇 개에 주소지정될(addressed) 수 있거나, 결정 트리 테이블들은 함께 분배될 수 있다. 호스트(104) 및/또는 결정 트리 스코어러(102) 내의 로직(logic)은 DTC들(122) 및 결정 트리 프로세서들(124) 간의 개별 결정 트리 테이블들의 분배를 판정할 수 있다. 나아가, DTC들(122)은 결정 트리 프로세서들(124) 중의 개별 결정 트리 프로세서로 결정 트리 테이블들을 분배하는 로직을 포함할 수 있다.
도 4는 온칩 다중 프로세서 시스템의 결정 트리 프로세서로 스코어 및 특징 벡터를 분배하기 위한 네트워크의 일례를 보여준다. 특히, DTC(122)는 스코어 데이터 및 특징 벡터를 집계/처리하기 위한 네트워크 요소로서 작동한다. 다른 실시예에서, 스코어 및/또는 특징 벡터를 결정 트리 프로세서 및/또는 특징 스토리지로 분배하는 데에 다른 네트워크 유형이 이용된다. 이들 다른 실시예에서, 결정 트리 클러스터(122)는 아키텍처의 일부로서 포함될 수 있거나 그렇지 않을 수 있다. 하나의 실시예에서, 결정 프로세서는 결정 트리 프로세서들의 메시(mesh) 내에 배열될 수 있고, 스코어 및/또는 특징 벡터는 결정 트리 프로세서를 통하여 직접적으로, 그리고 궁극적으로는 결정 트리 스코어러 또는 다른 스코어 집계 요소로 분배될 수 있다. 다른 실시예에서, 브로드캐스트 네트워크(broadcast network) - 이는 버스(bus), 메시(mesh), 점대점(point-to-point), 허브 및 스포크(hub-and-spoke), 또는 다른 토폴로지(topology)일 수 있음 - 가 결정 트리 프로세서(그리고/또는 결정 트리 클러스터(122))를, 특징 벡터를 제공하고/하거나 결정 트리 프로세서로부터 스코어를 수신/누적/처리하는 결정 트리 스코어러 또는 다른 요소에 연결할 수 있다. 다른 실시예에서, 네트워크 온 칩(Network On a Chip: NOC)은, 예를 들어 구성 데이터를 FPGA 요소 또는 다른 기능에 분배하기 위한 다른 목적을 가질 수 있는 것인데, 특징 벡터를 분배하고/하거나 스코어 데이터를 결정 트리 프로세서로부터 결정 트리 스코어러 또는 다른 스코어 집계 요소로 제공하는 데에 재사용될 수 있다.
스코어 집계 요소는 결정 트리 프로세서 및/또는 결정 트리 클러스터(122)로부터 스코어 데이터를 수신하고 누적할 수 있다. 스코어 집계 요소는 스코어 데이터를 처리할 수 있는데, 이는 스코어 데이터를 합산하는 것, 스코어 데이터를 스코어의 리스트 또는 벡터에 부가하는 것, 수신된 데이터에 기반하여 스코어를 계산하기 위해 어떤 다른 알고리즘을 수행하는 등등을 포함할 수 있다. 스코어 집계 요소는 스코어 데이터(처리된 것이든 또는 미처리 형태의 것이든)를 호스트 또는 다른 다운스트림 요소에 전달할 수 있다.
실시예는 하나는 스코어 데이터를 위한 것이고 다른 것은 특징 벡터를 위한 것인 별개의 네트워크들을 포함할 수 있다. 그러므로, 상이한 실시예에서, 네트워크는 특징 네트워크(feature network), 스코어 집계 네트워크(score aggregation network), 또는 양자 모두일 수 있다. 몇몇 실시예에서, 결정 트리 클러스터(122)는 특징 네트워크 또는 스코어 네트워크 하나 또는 양자 모두를 위한 네트워크 요소로서 작동할 수 있다. 실시예의 범주로부터 벗어나지 않고서 다른 예가 가능하다.
도 5는 다양한 실시예에 따라 특수화된 집적 회로 또는 프로그램가능한 집적 회로 상에 구현된 결정 트리 클러스터(122)의 아키텍처(500)를 보여준다. 아키텍처(500)는 하나 이상의 결정 트리 프로세서(124) 및 하나 이상의 특징 스토리지(126)를 포함한다. 도 5에 보여진 예시적 아키텍처(500)는 5개의 결정 트리 프로세서(124) 및 하나의 특징 스토리지(126)를 포함하는데, 다만 다양한 다른 실시예에서 다른 개수의 결정 트리 프로세서(124) 및 특징 스토리지(126)가 사용된다.
DTC(122)는 특징 스토리지(126) 내의 저장을 위해 특징 벡터를 수신하는 특징 입력 버스 레지스터(feature input bus register), 예컨대 64비트 특징 입력 버스 레지스터를 포함한다. DTC(122)는 DTC(122)의 이웃 DTC로의 출력을 위해 유지 스코어를 누적하고 출력하는 스코어 출력 레지스터(score output register), 예컨대 33비트 고정 소수점 스코어 출력 레지스터를 포함한다. DTC(122)의 가산기 트리(adder tree)는 결정 트리 프로세서(124)로부터의 그리고 하나 또는 둘 이상의 이웃 DTC(122)로부터의 스코어들을 합한다. 결정 트리 프로세서(124)는 내부에서 실행되는 모든 결정 트리 쓰레드가 완료되고 스코어를 출력한 경우 마침 플래그(done flag)를 출력한다. DTC(122)는 마침 플래그를 누적하고, 가산기 트리가 이웃 DTC(122)로부터의 스코어를 결정 트리 프로세서(124)로부터의 스코어에 더할 때, DTC(122)는 스코어를 하나 이상의 이웃 DTC(122)에 출력한다. 이 시점에서, DTC들(122)은, 예를 들어 이는 특징 벡터, 스코어 데이터 및/또는 결정 트리 테이블 데이터를 분배하기 위한 DTS(102) 내의 상호연결 네트워크와 동일하거나 상이할 수 있는 완료 신호 네트워크(completion signal network)를 통해, 완료 신호들을 그것들의 업스트림 DTC들(122)로 또한 출력한다. 최종 DTC(122)의 경우에, 스코어 및 완료 신호가 DTS(102)로 출력된다. 완료 신호를 수신할 때, DTC들(122) 및 결정 트리 스코어러(102)는 업스트림 DTC들(122)이 그것들의 결정 트리 실행을 완료함 및 모든 이용가능한 스코어들이 입력 버스 상에서 수신됨, 어떤 더 이상의 스코어도 수신되기를 기다리고 있지 않음, 그리고 스코어들이 결정 트리 프로세서들(124)의 스코어들에 가산되고 다운스트림 DTC들(122) 및/또는 결정 트리 스코어러(102)로 전파될 준비가 됨을 판정한다.
특징 스토리지(126)는, 몇몇 실시예에서, 특징의 하나의 세트가 특징 스토리지(126) 내로 로딩될 수 있게 하되 특징의 다른 세트가 결정 트리 프로세서(124)에 의해 판독되도록 이중 버퍼링된다. 하나의 예에서, 특징 스토리지(126)는 32비트 기록 포트(write port) 두 개를 포함하여, 특징 스토리지(126)로 하여금 250 MHz로 특징 데이터의 64 비트를 퇴진시킬(retire) 수 있게 한다. 하나의 예에서, 특징 스토리지(126)는 특징 스토리지(126)로 하여금 사이클당 두 개의 8비트 특징을 수신할 수 있게 하는 두 개의 32 비트 판독 포트를 포함한다. 특징 스토리지(126)는 결정 트리 프로세서(124)로부터 특징 식별자를 수신하고 특징 값, 예컨대 8비트 특징 값과, 플래그로써 응답한다.
몇몇 실시예에서, 특징 스토리지(126) 상의 저장 공간은 특정한 결정 트리 클러스터(122)의 결정 트리 프로세서(124)에 의해 사용되는 특징 벡터의 서브세트의 선택적 포착(selective capture)에 의해 감소된다. 특징 벡터(112) 내의 모든 특징이 특정한 결정 트리 클러스터(122)의 결정 트리에 의해 참조될 것은 아니고, 따라서, 몇몇 실시예에서, 특정한 DTC(122)의 결정 트리 프로세서(124)에 의해 실행되는 결정 트리에 의해 실제로 참조되는 특징 값들을 포착하는 것만으로써, 특징 스토리지(126) 상의 저장 공간은 감소된다. 그러므로, 특정한 특징 스토리지(126)에 의해 저장될 특징 벡터의 부분은 특정한 특징 스토리지(126)가 포함된 DTC(122)로, 또는 특징 스토리지(126)로 주소지정된 패킷 내에 참조될 수 있다. 특징 스토리지(126)에는 선택적으로 저장할 특징 벡터의 부분을 식별하는 (예를 들어 특징 스토리지(126) 또는 DTC(122)로 주소지정된 패킷 내의) 마스크(mask)가 제공될 수 있다.
아래에서 더욱 상세히 기술될 바와 같이, 결정 트리 프로세서들(124)은 복수의 결정 트리들을 실행할 수 있는 다중쓰레드 트리 행보 엔진들이다. 결정 트리는 결정 트리 프로세서(124) 내의 결정 트리 테이블로서 저장된다. 다양한 실시예에서, 결정 트리 테이블은 다양한 메모리 스토리지 유형, 예를 들어 랜덤 액세스 메모리(동적 랜덤 액세스 메모리(Dynamic Random Access Memory: DRAM), 블록 랜덤 액세스 메모리(Block Random Access Memory: BRAM), 정적 랜덤 액세스 메모리(Static Random Access Memory: SRAM) 및 기타 등등을 포함함) 상에 저장된다. 몇몇 실시예에서, 결정 트리 프로세서(124)는 아래에서 더욱 상세히 기술되는 바와 같은 5스테이지 파이프라인(five-stage pipeline)을 포함하고, 따라서, (그 실행이 아직 완료되지 않은 다섯 개의 결정 트리에 대응하는) 적어도 다섯 개의 구동가능한(runnable) 쓰레드가 있는 한, 결정 트리 프로세서(124)는 각각의 클록 사이클(clock cycle) 상에서 결정 트리의 하나의 노드를 행보하는 것을 시작할 수 있다.
다중스테이지 트리 행보 파이프라인
몇몇 실시예에서, 결정 트리 프로세서는 파이프라인형 아키텍처(pipelined architecture)를 포함한다. 도 6은 다양한 실시예에 따라, 결정 트리 프로세서의 다중스테이지 다중쓰레드 파이프라인형 트리 행보 회로(600)를 보여준다. 회로(600)는 결정 트리 프로세서 내의 로직 회로 상에 구현된다. 쓰레드 회로(thread circuit)(또는 쓰레드 스테이지(thread stage))(도 6에서 "TH"로 표기됨)는 NEXT_THDS 테이블(602)로부터 다음 쓰레드 TH_THD를 수신한다. 도 6에 예시된 예에서, NEXT_THDS 테이블(602)은 32 x 5 비트이고, 따라서 최대 32개의 5비트 다음 쓰레드 번호를 저장하며, 따라서 최대 32개의 쓰레드가 회로(600)에 의해 다루어질 수 있다. NEXT_THDS 테이블(602)은 쓰레드들의 링크된 리스트(linked list)인데, 초기에는 모든 쓰레드가 NEXT_THDS 테이블(602) 내에 열거되되, (리프 값을 출력함으로써) 쓰레드가 완료됨에 따라, 쓰레드는 NEXT_THDS 테이블(602)로부터 링크해제된다(de-linked). 일단 모든 쓰레드가 NEXT_THDS 테이블(602)로부터 링크해제되면, 결정 트리 프로세서는 완료 신호를 결정 트리 클러스터에 출력하는데, 이는 그것이 모든 쓰레드와 마무리됨을 나타낸다. 쓰레드 회로는 노드 주소 테이블인 NODE_ADS 테이블(604) 및 리프 테이블인 LEAFS 테이블(606)로부터 다음 쓰레드의 다음 노드 주소에 대한 판독을 발행하기(issue) 위해 NEXT_THDS 테이블(602)로부터 다음 쓰레드 식별자를 사용한다. NODE_ADS 테이블(604)은 32 x 13 비트이고, 따라서 최대 32개의 13비트 다음 노드 주소(각각의 쓰레드에 대해 하나)를 저장한다.
LEAFS 테이블(606)은 리프 출력 플래그를 저장하는데, 여기서 LEAFS 테이블(606) 내의 특정한 쓰레드를 위한 엔트리는 출력 플래그(가령, 1 또는 0)를 저장하고, 리프 값은 결정 트리 클러스터에 출력되며 그 쓰레드는 NEXT_THDS 테이블(602)로부터 링크해제된다.
리프 출력 플래그가 어떤 리프 값도 이전에 선택되지 않음을 나타내는 경우에, 다음 노드 주소는 노드 판독 회로(read node circuit)(또는 판독 스테이지(read stage))(도 6에서 "RN"으로 표기됨)에 전달되고, 현재의 쓰레드에 대응하는 노드 테이블 NTAB(608)로의 판독이 다음 노드 서술자(next node descriptor)를 위해 회로(600)에 의해 발행된다. 실시예에서, NTAB(608)은 결정 트리 프로세서의 회로 내의, 또는 그렇지 않으면 이와 연관된 전용 메모리 상에 저장된다. 다른 실시예에서, NTAB(608)은 결정 트리 프로세서와 별개이고 이에 통신가능하게 커플링된 메모리 내에 저장된다. 몇몇 실시예에서, NTAB(608)은 복수의 결정 트리 프로세서에 의해 공유되는 메모리 내에 저장된다.
노드 서술자의 12비트 특징 주소 F1_FEAT_AD 및 12비트 info 필드 F1_INFO는, 만약 NTAB(608) 내에 존재하는 경우 오프셋 값과 같은 다음 노드 데이터와 더불어, 회로(600)의 F1 특징 회로(또는 F1 특징 스테이지) 내에서 읽어내기가 된다. 예컨대, 다음 좌측 및 우측 노드 주소들과 다음 좌측 및 우측 리프 플래그 값들은 이 스테이지에서 로직(610)에 의해 사전계산되고(pre-computed) 노드 주소, info 필드 및 선택적인 rdelta 오프셋 필드의 함수이다. info 필드는 노드 1개, 2개 또는 0개의 다음 서브트리 노드인지, 그리고 1개, 2개 또는 0개의 리프 값이 있는지 판정한다. 이 상세한 설명 내에서 다른 데에서 기술된 바와 같이, 다음 좌측 및 우측 다음 노드 주소는 NTAB(608) 내의 인접관계에 기반하여, 만약 존재한다면, F1_RDELTA 값, 또는 info 필드 내의 오프셋 값의 코딩으로부터 사전계산된다. 몇몇 실시예에서, 현재의 노드가 좌측 서브트리 노드를 갖는 경우, 다음 좌측 노드 주소는 현재의 노드에 인접한(바로 후속하는) 노드의 주소이고, 다음 좌측 리프 플래그는 거짓(false)이다. 그렇지 않으면 현재의 노드는 좌측 리프 출력 값을 갖고, 다음 좌측 노드 주소는 좌측 리프 값을 포함하는 현재의 노드 내의 워드(들)의 주소이고, 다음 좌측 리프 플래그는 참(true)이다. 사전계산은 다음 우측 노드 주소 및 다음 우측 리프 플래그에 대해 유사하다. 현재의 노드가 우측 서브트리 노드를 갖지만 좌측 서브트리 노드는 전혀 갖지 않는 경우, 다음 우측 노드 주소는 현재의 노드에 인접한(바로 후속하는) 노드의 주소이고, 다음 우측 리프 플래그는 거짓이다. 현재의 노드가 좌측 서브트리 노드 및 우측 서브트리 노드 양자 모두를 갖는 경우, 다음 우측 노드 주소는 현재 노드 주소 및 오프셋(그것의 값은 info 필드 내에 인코딩되거나, 선택적인 rdelta 오프셋 필드 내에 명시적으로 표현됨)을 더함으로써 판정되고, 다음 우측 리프 플래그는 거짓이다. 그렇지 않으면 현재의 노드는 우측 리프 출력 값을 갖고, 다음 우측 노드 주소는 우측 리프 값을 포함하는 현재의 노드 내의 워드(들)의 주소이고, 다음 우측 리프 플래그는 참이다.
회로(600)의 F2 특징 회로(또는 F2 특징 스테이지)에서, F1_FEAT_AD와 연관된 특징 값이 특징 스토리지(612)(가령, 특징 스토리지(126))로부터 판독된다. FST(126)는, 실시예에서, 두 개의 상이한 결정 트리 프로세서에 의해 판독되도록 구성되고, 따라서 특징 스토리지(612)는 두 개의 입력 및 두 개의 출력을 갖는 것으로 도시된다.
회로(600)의 실행 회로(execution circuit)(또는 실행 스테이지(execution stage))(도 6에서 "EX"로 표기됨)에서, 특징 스토리지(612)로부터 판독된 특징 값("EX_FEAT")이 로직(614)에 의해 현재 실행 중인 노드의 임계 값(EX_TH)과 비교된다. 임계 값 EX_TH 및 특징 값 EX_FEAT은 이 상세한 설명 내에서 다른 데에서 기술된 바와 같은 임계 색인 값 및 특징 색인 값일 수 있거나, 그것들은 압축되지 않은 임계 값 및 특징 값일 수 있다. 본 개시의 실시예는 어느 한쪽의 사용에 한정되지 않는다. 로직(614)에 의해 출력된 비교의 결과에 기반하여, 다음 좌측 노드 주소나 아니면 다음 우측 노드 주소가 NODE_ADS 테이블(604) 내에 있는 쓰레드의 엔트리에 기록된다. 로직(614)에 의해 출력된 비교의 결과에 또한 기반하여, 다음 좌측 리프 플래그나 아니면 다음 우측 리프 플래그가 LEAFS 테이블(606) 내에 있는 쓰레드의 엔트리에 기록된다.
일단 실행 회로가 특정한 쓰레드를 위해 리프 값을 선택하고 리프 플래그를 설정하면, 다음에 쓰레드가 파이프라인 내로 발행될 때, 리프 플래그는 판독되고 NODE_ADS 테이블(604) 내의 노드 주소는 노드의 주소가 아니라 오히려 NTAB(608) 내의 이전의 노드 내의 리프 값 워드의 주소이다. RN 회로에서, 이들 리프 값 워드가 NTAB(608)로부터 판독되고, 이로써 특징 주소 및 info 필드 대신에 특정한 쓰레드를 위해 리프 값의 스코어(620)를 획득한다. 스코어(620)는 이 상세한 설명 내에서 다른 데에서 기술된 바와 같은 결정 트리 클러스터에 출력될 수 있다. 추가로, 리프 플래그가 참인 경우, 쓰레드는 그것이 파이프라인에 의해 다시 페치되지(fetched) 않도록 NEXT_THDS 테이블(602)로부터 링크해소가 된다(unlinked).
회로(600)의 부분들 각각(TH, RN, F1, F2 및 EX)은 쓰레드들 중 상이한 것들을 동시에 처리한다. 그러므로, 임의의 한 시간에, 회로(600)는 최대 다섯 개의 상이한 쓰레드의 어떤 부분을 처리하는데, 이는 매 클록 사이클에, 동시에 최대 다섯 개의 상이한 결정 트리의 어떤 부분을 처리하는 것에 대응한다.
예시적 프로세스
도 7은 다양한 실시예에 따라, 결정 트리를 실행하는 예시적 프로세스(700)를 도시하는 흐름도를 묘사한다. 702에서, 결정 트리 프로세서, 가령 결정 트리 프로세서 파이프라인의 쓰레드 회로 또는 스테이지는, 프로세서의 의해 실행될 다음 쓰레드를 판정하고 다음 쓰레드의 다음 노드 주소를 판정하기 위해 노드 테이블로의 판독을 발행한다.
704에서, 결정 트리 프로세서, 가령 결정 트리 프로세서 파이프라인의 노드 판독 회로 또는 스테이지는, 적어도 특징 지시자(feature indicator) 및 임계 값을 포함하는, 결정 트리 노드 워드와 같은 결정 트리 노드 데이터를, 결정 트리 프로세서 내에 저장될 수 있는 결정 트리 노드 테이블로부터 인출한다. 결정 트리 노드의 서브세트는 다음 노드 데이터, 예를 들어 다음 노드 오프셋 값을 또한 포함한다.
결정 트리 노드 실행의 최종 결과는 결정 트리 행보 쓰레드의 출력으로서 리프 값의 출력을 초래하는데, 예를 들어 좌측 리프 또는 우측 리프 값을 선택하는 것을 결정 트리 노드 실행이 초래하는 경우에서다. 706에서, 결정 트리 프로세서, 가령 결정 트리 프로세서의 판독 회로 또는 스테이지는, 특정한 쓰레드에 대해 리프 플래그가 설정되어 있는지를, 예를 들어 파이프라인을 거치는 쓰레드의 이전의 통과 동안에, 판정한다. 리프 플래그가 설정된 경우에, 708에서 특정한 쓰레드는 쓰레드 테이블로부터 링크해소된다. 710에서, 결정 트리 노드의 리프 값 데이터, 예를 들어 하나 이상의 리프 값 워드가, 결정 트리 프로세서 파이프라인의 노드 판독 회로 또는 스테이지에 의해 판독되고 결정 트리 클러스터에, 또는 어떤 다른 출력 네트워크에 출력된다.
712에서, 리프 플래그 값이 설정되지 않은 경우에, 결정 트리 프로세서, 가령 결정 트리 프로세서 파이프라인의 특징 회로 또는 스테이지는, 특정 스토리지로부터 특징 지시자에 의해 식별된 특징 값을 판독한다.
714에서, 결정 트리 프로세서, 가령 결정 트리 프로세서 파이프라인의 특징 회로 또는 스테이지는, 현재 실행 중인 노드에 인접한 다음 결정 트리 노드 및 오프셋 값과 같은 다음 노드 데이터에 기반하여 가능한 다음 결정 트리 노드 주소를 사전계산한다. 결정 트리 프로세서, 가령 결정 트리 프로세서 파이프라인의 특징 회로 또는 스테이지는, 또한 또는 대안적으로 현재의 결정 트리 노드의 우측 또는 좌측 리프 워드 또는 값과 같은 우측 또는 좌측 리프 데이터를 위한 주소를 사전계산한다. 이 상세한 설명 내에서 다른 데에서 지적된 바와 같이, 결정 트리 노드 테이블의 노드들의 서브세트는 하나 이상의 리프 값을 포함한다. 리프 노드의 존재는, 다음에 쓰레드가 파이프라인을 거쳐 지나갈 때 리프 값을 출력하기로 선택하는 것이 결정 노드의 실행의 가능한 결과임을 나타낸다. 그러므로, 결정 트리 프로세서는 좌측 리프 데이터 주소 또는 좌측 다음 노드 주소 중 하나, 그리고 우측 리프 데이터 주소 또는 우측 다음 노드 주소 중 하나를, 좌측 리프 또는 좌측 다음 노드가 있는지에 따라, 그리고 실행되는 특정한 결정 노드 내에 우측 리프 값 또는 우측 다음 노드가 있는지에 기반하여 사전계산한다. 714에서의 사전계산은 결정 트리 프로세서에 의한 결정 노드의 실행 전에 일어난다.
몇몇 실시예에서는, 결정 트리 노드의 오프셋 값과 같은 다음 노드 데이터를 처리함으로써, 예를 들어 다음 노드의 위치에 도달하기 위해 현재의 노드의 위치에 오프셋 값을 가산함으로써, 다음 노드 주소들 중 일부의 사전계산이 수행된다. 오프셋 값과 같은 다음 노드 데이터는 결정 노드 내에 제공되는, 오프셋 값과 같은 별개의 다음 노드 데이터이거나, 아니면 이 상세한 설명 내에서 다른 데에서 기술된 바와 같이, 결정 노드의 info 필드에 의해 코딩된다. 다음 노드 주소를 사전계산하는 것은 다음 노드 주소들 중 일부를 위한 인접관계에 또한 기반한다.
716에서, 결정 트리 프로세서, 가령 결정 트리 프로세서 파이프라인의 실행 회로 또는 스테이지는, 결정 트리 노드를 실행한다. 결정 트리 노드를 실행하는 것은 결정 트리 노드의 임계 값을 특징 스토리지로부터 인출된 특징 값과 비교하는 것을 포함한다. 이 상세한 설명 내에서 다른 데에서 기술된 바와 같이, 임계 값은 임계 색인 값일 수 있고, 특징 값은 특징 색인 값일 수 있다.
718에서, 결정 트리 프로세서, 가령 결정 트리 프로세서 파이프라인의 실행 회로 또는 스테이지는, 쓰레드가 인출되고 실행되기 위한 다음 결정 트리 노드 및/또는 다음에 쓰레드가 파이프라인 내로 페치될 때 출력될 리프 값을 포함하는 리프 데이터의 주소를 판정한다. 다음 결정 트리 노드 또는 리프 데이터의 주소의 선택은 결정 트리 노드를 실행하는 것의 결과에 기반하여 판정된다. 그 비교의 몇몇 결과는(예를 들어 특징 값이 임계 값 이하인 경우) 다음 노드 오프셋 값과 같은 다음 노드 데이터에 기반하여 다음 결정 트리 노드를 판정하는 것을 초래한다. 그 비교의 다른 결과는(예를 들어 특징 값이 임계 값 이하이지 않은 경우) 결정 트리 프로세서 내의 결정 트리와 연관된 결정 트리 테이블 내의 현재 실행 중인 노드에 인접하는 다음 결정 트리 노드를 판정하는 것을 초래한다.
720에서, 모든 쓰레드가 퇴진(retired)되었는지 판정이 결정 트리 프로세서에 의해, 가령 결정 트리 프로세서의 쓰레드 회로 또는 스테이지에 의해 행해진다. 쓰레드가 710에서 리프 값을 출력하고 완료될 때, 그것은 결정 트리 쓰레드의 링크된 리스트로부터 708에서 링크해제된다. 모든 쓰레드가 링크해제되는 경우, 이 결정 트리 프로세서(124) 내의 결정 트리 실행은 완료된다. 각각의 쓰레드는 단일 결정 트리에 대응하니, 따라서 일단 모든 쓰레드가 완료되면, 결정 트리 프로세서는 완료 신호를 출력하고 결정 트리 실행으로부터 하나 이상의 스코어를 출력한다.
도 8은 다양한 실시예에 따라, 결정 트리 스코어러에 의해 복수의 결정 트리를 스코어링하는 프로세스(800)를 보여준다. 802에서, 결정 트리 스코어러(102)는 호스트(104) 또는 다른 업스트림 처리 시스템으로부터 모델 콘텍스트(108)를 수신한다. 804에서, 결정 트리 스코어러(102)는 모델 콘텍스트(108)를 복수의 결정 트리 클러스터(122) 상으로 로딩한다.
806에서, 결정 트리 스코어러(102)는 호스트(104)로부터 또는 업스트림 처리 시스템으로부터 특징 벡터(112)를 수신한다. 808에서, 결정 트리 스코어러(102)는 특징 벡터(112)를 결정 트리 클러스터들(122) 중의 제1 결정 트리 클러스터에 제공한다. 그러므로, 몇몇 실시예에서, 공통 특징 벡터가 결정 트리 클러스터들(122)과 결정 트리 프로세서들(124)에 제공된다.
810에서, 결정 트리 스코어러(102)는 결정 트리 클러스터들(122) 중 하나로부터 최종 스코어 및 완료 신호를 수신하는데, 결정 트리 클러스터들이 복수의 결정 트리로써 특징 벡터의 스코어링을 완료하였음을 나타낸다. 812에서, 결정 트리 스코어러(102)는 최종 스코어를 호스트(104) 또는 다운스트림 처리 시스템에 제공하는데, 이는 몇몇 실시예에서 다른 결정 트리 스코어러 또는 다른 시스템을 포함할 수 있다.
도 9는 다양한 실시예에 따라, 결정 트리 클러스터에 의해 복수의 결정 트리를 스코어링하는 프로세스(900)를 보여준다. 902에서, 결정 트리 클러스터(DTC)들(122)은 (공통 특징 벡터와 같은) 특징 벡터를 결정 트리 스코어러(102)로부터 또는 이웃 DTC(122)로부터 수신한다. 904에서, DTC(122)는 다른 이웃 DTC(122)에 특징 벡터를 제공한다. 이 방식으로, 특징 벡터는 결정 트리 스코어러 내의 모든 DTC에 분배된다.
906에서, 결정 트리 클러스터들(122)은 복수의 DTC(122) 내의 복수의 결정 트리 프로세서(124)로 하여금 DTC(122) 상으로 로딩된 모델 콘텍스트들 내의 복수의 결정 트리의 실행을 시작하게 한다. 복수의 결정 트리의 실행은 동시적일 수 있고, 다중쓰레드 다중스테이지 파이프라인형 결정 트리 프로세서에 의해 수행될 수 있다. 결정 트리의 실행은, 무엇보다도, 공통 특징 벡터의 특징 값(또는 특징 색인 값)과의 임계 값(또는 임계 색인 값)의 비교와, 그 비교에 기반한 다음 노드 및/또는 출력 값의 선택을 포함한다. 결정 트리의 실행은 복수의 결정 트리 중의 결정 트리를 위한 대응하는 스코어를 초래한다.
908에서, DTC(122)는 결정 트리 프로세서(124) 상에서의 결정 트리의 실행으로부터 야기되는 대응하는 스코어 및 완료 신호를 결정 트리 프로세서(124)로부터 수신한다. 910에서, DTC(122)는 이웃 DTC(122)로부터 스코어 및 완료 신호를 수신한다.
912에서, 완료 신호 및 스코어의 수신에 기반하여, DTC(122)는 DTC(122) 내의 결정 트리 프로세서(124)로부터의 스코어를 이웃 DTC(122)로부터의 스코어와 함께 처리한다. 예컨대, DTC(122)는 누적된 스코어를 산출하기 위해 스코어들을 합산할 수 있다. 다른 예에서, DTC(122)는 DTC(122) 내의 결정 트리 프로세서(124)로부터 스코어들, 또는 스코어들의 합을 이웃 DTC(122)로부터 수신된 스코어 데이터에 부가할 수 있다.
914에서, DTC(122)는 누적된 스코어 및 완료 신호를 이웃 DTC(122)로 전파하는데, 결국에는 DTC(122) 중의 최종 DTC(이는 결정 트리 스코어러(102)에 최종 스코어를 제공함)에 도달한다. 이 방식으로, DTC(122) 각각 내의 결정 트리 프로세서(124) 상에서 실행되는 결정 트리 각각으로부터의 개별 스코어는 최종 스코어 데이터, 예를 들어 결정 트리 프로세서들 중의 개별 결정 트리 프로세서들로부터의 스코어들의 최종 합이나 리스트 또는 세트로 누적되고 결정 트리 스코어러(102)에 전파된다.
도 10은 다양한 실시예에 따라 복수의 결정 트리의 임계 값을 코딩하는 프로세스(1000)를 보여준다. 1002에서, 결정 트리 코더(106)는 특정한 특징에 대응하는 - 모델 콘텍스트(1008) 내의 것들과 같은 - 복수의 결정 트리의 모든 결정 노드 내에서 참조된 모든 임계 값을 식별한다.
1004에서, 결정 트리 코더(106)는 하나 이상의 결정 트리 내의 특정한 특징과 연관된 고유한 임계 값의 리스트를 판정한다. 몇몇 실시예에서, 그 리스트는 예를 들어 오름차순 또는 내림차순으로 정렬된다. 1006에서, 결정 트리 코더(106)는 하나 이상의 결정 트리 내의 특정한 특징과 연관된 고유한 임계 값의 정렬된 리스트 내의 다수의 값에 적어도 부분적으로 기반하여 임계 값을 위한 임계 색인 값을 표현하는 데에 사용될 다수의 비트를 판정한다.
하나의 특정한 예에서, 특정한 특징과 연관된 임계 값의 총 개수의, 밑이 2인 대수(base-2-logarithm)가 4보다 작은 경우에, 임계 색인은 4비트 워드로서 코딩되고, 특정한 특징과 연관된 임계 값의 총 개수의, 밑이 2인 대수가 8보다 작은 경우에, 임계 색인은 8비트 워드로서 코딩된다. 특정한 특징과 연관된 임계 값의 총 개수의, 밑이 2인 대수가 8보다 큰 경우에, 이 상세한 설명 내에서 다른 데에서 기술된 바와 같이,
Figure pct00149
이 특정한 특징과 연관된 임계 값의 총 개수와 같은 경우, 특정한 특징을 표현하기 위한 특징의 개수가
Figure pct00150
/255에 의해 판정되도록, 코딩된 결정 트리 내에 특정한 특징을 표현하는 데에 여러 특징이 사용된다. 이들 여러 특징을 위한 임계 값들을 표현하는 데에 8비트 워드가 사용된다. 다른 실시예에서, 결정 트리는 사전결정된 값을 초과하는 고유한 임계가 다수 있는 하나의 노드 대신에 여러 결정 노드를 포함하도록 수정된다. 실시예의 범주로부터 벗어나지 않고서 다른 예가 가능하다.
1008에서, 결정 트리 코더(106)는 고유한 임계 값의 리스트를 위해 복수의 임계 색인 값을 판정한다. 몇몇 실시예에서, 더 작은 임계 값과 연관된 임계 색인 값이 더 큰 임계 값과 연관된 임계 색인 값보다 더 작도록, 정렬된 리스트에 색인 값이 할당되는데, 다만 다른 실시예에서는 더 작은 임계 값에 더 큰 색인 값이 할당된다. 하나의 특정한 예에서, 고유한 임계 값 중 가장 작은 것은 0의 임계 색인 값을 할당받고, 가장 큰 것은 고유한 임계 값의 총 개수 빼기 1과 같은 임계 색인 값을 할당받는다. 실시예의 범주로부터 벗어나지 않고서 다른 예가 가능하다.
1010에서, 결정 트리 코더(106)는 특정한 특징과 연관된 하나 이상의 결정 트리의 결정 노드가 임계 색인 값을 포함하도록 하나 이상의 결정 트리를 표현한다. 프로세스(100)는 복수의 결정 트리 내의 모든 임계 값이 임계 색인 값으로써 코딩될 때까지 복수의 결정 트리의 적어도 하나의 결정 노드 내에서 참조된 각각의 특징에 대해 반복된다.
도 11은 다양한 실시예에 따라, 특징 값의 벡터를 코딩하는 프로세스(1100)를 보여준다. 도 10에 관해서 위에서 기술된 바와 같이, 각각의 특징을 위한 임계 값이 코딩된다. 코딩된 결정 트리의 세트를 상대로 스코어링될 특징 벡터를 위한 특징 값은 특징 값이 코딩된 임계 값과 양립할 수 있도록 코딩된다. 1102에서, 특징 벡터 코더(110)는 복수의 결정 트리에 의해 스코어링될 특징 벡터(112)를 수신한다.
1104에서, 특징 벡터 코더(110)는 특정한 특징과 연관된 특징 값을 특정한 특징에 대응하는 임계 값과(가령, 위에서 기술된 리스트
Figure pct00151
와) 비교한다. 1106에서, 특징 벡터 내에서 특정한 특징에 대응하는 특징 값이 복수의 결정 트리 내에서 특정한 특징과 연관된 임계 값의 세트 내의 가장 큰 임계 값보다 더 큰지에 대하여 특징 벡터 코더(110)에 의해 판정이 행해진다.
1108에서, 특징 값이 가장 큰 임계 값보다 더 크지 않음을 판정할 때("아니요" 경로), 특징 벡터 코더(110)는 특징 값 이상인, 고유한 임계 값의 리스트 중의 가장 작은 임계 값을 식별한다.
1110에서, 특징 벡터 코더(110)는 정렬된 임계 색인 값들 중의 특정한 것(고유한 임계 값들의 정렬된 리스트의 가장 작은 임계 값에 대응하는 것임)과 동일한 코딩된 특징 값(가령, 특징 색인 값)을 산출하기 위해 특징 값을 코딩한다.
1112에서, 특징 값이 가장 큰 임계 값보다 더 큼을 판정할 때("예" 경로), 특징 벡터 코더(110)는 특징 색인 값을 가장 큰 임계 색인 값보다 더 크도록 설정한다. 하나의 특정한 예에서, 특징 색인 값은 특징과 연관된 고유한 임계 값의 총 개수와 같도록 설정되지만, 가장 큰 임계 색인 값보다 더 큰 임의의 수가 사용될 수 있다. 이 방식으로, (예를 들어 결정 트리 프로세서(124)에 의한) 결정 트리 실행 동안의 대응하는 특징 색인 값과의 임계 색인 값의 비교의 결과가 대응하는 특징 값과의 대응하는 임계 값의 비교의 결과와 동등하도록 특징 색인 값은 설정된다.
도 7 내지 도 11의 예시적 프로세스들의 동작들은 개별 블록들 내에 예시되고 그 블록들을 참조하여 요약된다. 동작들이 기술된 순서는 한정으로서 해석되도록 의도되지 않으며, 임의의 개수의 기술된 동작이 임의의 순서로 조합되고/되거나, 하위동작으로 분리되고/되거나, 병렬로 수행되어 프로세스를 구현할 수 있다. 본 개시의 다양한 실시예에 따른 프로세스는 논리적인 흐름도 내에 묘사된 동작들 중 단지 일부를 또는 전부를 포함할 수 있다.
예시적 컴퓨팅 시스템
도 12는 본 문서 내에 기술된 다양한 방법을 수행하는 데에 사용가능한 예시적 컴퓨팅 시스템(1200)의 블록도이다. 컴퓨팅 시스템(1200)은 호스트(104)와 같은 결정 트리 스코어링 시스템의 전부 또는 일부를 구현하는 것이 가능한 임의의 적합한 컴퓨팅 디바이스로서 구성될 수 있다. 다양한 비한정적인 예에 따르면, 적합한 컴퓨팅 디바이스는 개인용 컴퓨터(Personal Computer: PC), 핸드헬드 디바이스(handheld device), 착용가능 스마트 디바이스(wearable smart device), 스마트폰(smartphone), 태블릿 컴퓨터(tablet computer), 랩톱 컴퓨터(laptop computer), 데스크톱 컴퓨터(desktop computer), 게이밍 시스템(gaming system), 전자 미디어 플레이어(electronic media player)(예를 들어 mp3 플레이어 및 이북 리더(e-book reader)), 서버(server), 서버 팜(server farm), 데이터센터(datacenter), 특수 목적 컴퓨터(special purpose computer), 이들의 조합, 또는 본 문서 내에 기술된 결정 트리 스코어링 시스템의 전부 또는 일부를 저장하고 실행하는 것이 가능한 임의의 다른 컴퓨팅 디바이스(들)를 포함할 수 있다.
하나의 예시적 구성에서, 컴퓨팅 시스템(1200)은 하나 이상의 프로세서(1202) 및 메모리(1204)를 포함한다. 컴퓨팅 시스템(1200)은 다양한 다른 시스템과의 통신을 허용하는 통신 연결(들)(1206)을 또한 포함할 수 있다. 컴퓨팅 시스템(1200)은 하나 이상의 입력 디바이스(1208), 예를 들어 키보드, 마우스, 펜, 음성 입력 디바이스, 터치 입력 디바이스 등등과, 하나 이상의 출력 디바이스(1210), 예를 들어 프로세서(들)(1202) 및 메모리(1204)에 통신가능하게 커플링된 디스플레이, 스피커, 프린터 등등을 또한 포함할 수 있다.
메모리(1204)는 프로세서(들)(1202) 상에서 로딩가능하고 실행가능한 프로그램 명령어는 물론, 이들 프로그램의 실행 동안에 생성되고/되거나 이들 프로그램과 함께 사용가능한 데이터를 저장할 수 있다. 예시된 예에서, 메모리(1204)는 컴퓨팅 시스템(1200)의 기본적인 시스템 기능을 제공하고, 다른 무엇보다도, 컴퓨팅 시스템(1200)의 다른 프로그램 및 프로그램 모듈의 동작을 가능케 하는 운영 체제(operating system)(1212)를 저장한다.
컴퓨터 판독가능 매체
사용되는 컴퓨팅 디바이스의 구성 및 유형에 따라서, 도 12 내의 컴퓨팅 시스템(1200)의 메모리(1204)는 (랜덤 액세스 메모리(Random Access Memory: RAM)과 같은) 휘발성 메모리 및/또는 (판독 전용 메모리(Read-Only Memory: ROM), 플래시 메모리 등등과 같은) 비휘발성 메모리를 포함할 수 있다. 메모리(1204)는, 컴퓨팅 시스템(1200)을 위한 컴퓨터 판독가능(computer-readable) 명령어, 데이터 구조, 프로그램 모듈 및 다른 데이터의 비휘발성 저장을 제공할 수 있는 플래시 메모리, 자기 스토리지(magnetic storage), 광학 스토리지(optical storage) 및/또는 테이프 스토리지(tape storage)를 포함하나 이에 한정되지 않는 추가적인 탈착가능(removable) 스토리지 및/또는 비탈착가능(non-removable) 스토리지를 또한 포함할 수 있다.
메모리(1204)는 컴퓨터 판독가능 매체의 일례이다. 컴퓨터 판독가능 매체는 적어도 두 개의 유형의 컴퓨터 판독가능 매체, 즉 컴퓨터 저장 매체 및 통신 매체를 포함한다. 컴퓨터 저장 매체들은 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 프로세스 또는 기술로 구현된 휘발성 및 비휘발성, 탈착가능 및 비탈착가능 매체들을 포함한다. 컴퓨터 저장 매체는, 위상 변화 메모리(Phase Change Memory: PRAM), 정적 랜덤 액세스 메모리(Static Random-Access Memory: SRAM), 동적 랜덤 액세스 메모리(Dynamic Random-Access Memory: DRAM), 다른 유형의 랜덤 액세스 메모리(Random-Access Memory: RAM), 판독 전용 메모리(Read-Only Memory: ROM), 전기적 소거가능 프로그램가능 판독 전용 메모리(Electrically Erasable Programmable Read-Only Memory: EEPROM), 플래시 메모리 또는 다른 메모리 기술, 콤팩트 디스크 판독 전용 메모리(Compact Disk Read-Only Memory: CD-ROM), 디지털 다기능 디스크(Digital Versatile Disk: DVD) 또는 다른 광학 스토리지, 자기 카세트, 자기 테이프, 자기 디스크 스토리지 또는 다른 자기 저장 디바이스, 또는 컴퓨팅 디바이스에 의한 액세스를 위한 정보를 저장하는 데에 사용될 수 있는 임의의 다른 비송신 매체(non-transmission medium)를 포함하나 이에 한정되지 않는다. 대조적으로, 통신 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 다른 데이터를 변조된 데이터 신호(modulated data signal), 예를 들어 반송파(carrier wave) 또는 다른 송신 메커니즘(transmission mechanism) 내에 실체화할 수 있다. 본 문서 내에 정의된 바와 같이, 컴퓨터 저장 매체는 통신 매체를 포함하지 않는다.
결론
구조적 특징 및/또는 방법론적 행위에 특정한 말을 개시가 사용하나, 발명은 기술된 특정 특징 또는 행위에 한정되지 않는다. 오히려, 특정 특징 및 행위는 발명을 구현하는 예시적인 형태로서 개시된다.

Claims (10)

  1. 온칩 결정 트리 스코어링 하드웨어 시스템(on-chip decision tree scoring hardware system)으로서,
    공통 특징 벡터(common feature vector)를 액세스하고 상기 공통 특징 벡터에 대해 하나 이상의 결정 트리를 실행하기 위해 칩 상의 회로로서 구현된 복수의 결정 트리 프로세서들을 포함하는
    온칩 결정 트리 스코어링 하드웨어 시스템.
  2. 제1항에 있어서,
    상기 복수의 결정 트리 프로세서들 중의 제1 결정 트리 프로세서는 상기 결정 트리 프로세서들 중의 제2 결정 트리 프로세서가 상기 공통 특징 벡터에 대해 상기 결정 트리 중의 제2 결정 트리를 실행하는 것과 동시에 상기 공통 특징 벡터에 대해 상기 결정 트리 중의 제1 결정 트리를 또한 실행하는,
    온칩 결정 트리 스코어링 하드웨어 시스템.
  3. 제1항에 있어서,
    복수의 결정 트리 클러스터들을 더 포함하되, 상기 결정 트리 클러스터들 중의 결정 트리 클러스터는 상기 결정 트리 프로세서들의 서브세트를 포함하고, 상기 결정 트리 프로세서들의 상기 서브세트는 상기 하나 이상의 결정 트리의 실행의 결과에 기반하여 스코어를 출력하며, 상기 결정 트리 클러스터들 중의 제1 결정 트리 클러스터는 상기 결정 트리 클러스터들 중의 상기 제1 결정 트리 클러스터 내의 상기 결정 트리 프로세서들의 제1 서브세트로부터 제1 스코어를 수취하고, 상기 복수의 결정 트리 클러스터들 중의 제2 결정 트리 클러스터로부터 적어도 제2 스코어 데이터를 수취하며, 상기 제1 스코어 및 상기 적어도 제2 스코어 데이터를 처리하여 조합된 스코어 데이터(combined score data)를 산출하는,
    온칩 결정 트리 스코어링 하드웨어 시스템.
  4. 제3항에 있어서,
    상기 결정 트리 클러스터들 중의 상기 제1 결정 트리 클러스터는 또한,
    상기 조합된 스코어 데이터를 산출하기 위해 상기 제1 스코어 또는 상기 제1 스코어의 합을 상기 제2 스코어 데이터에 부가하는 것, 및
    상기 조합된 스코어 데이터를 산출하기 위해 상기 제1 스코어를 상기 제2 스코어 데이터와 합산하는 것
    중 하나에 의해 상기 제1 스코어 및 상기 제2 스코어 데이터를 처리하는,
    온칩 결정 트리 스코어링 하드웨어 시스템.
  5. 제1항에 있어서,
    상기 결정 트리 프로세서들 중의 결정 트리 프로세서는 상기 하나 이상의 결정 트리의 실행의 결과에 기반하여 스코어를 출력하되, 상기 결정 트리 스코어링 하드웨어 시스템은
    상기 결정 트리 프로세서에 의해 출력된 상기 스코어를 수집하는 스코어 집계 네트워크(score aggregation network)를 더 포함하는,
    온칩 결정 트리 스코어링 하드웨어 시스템.
  6. 제1항에 있어서,
    결정 트리 프로세서의 서브세트를 포함하는 복수의 결정 트리 클러스터들 - 상기 복수의 결정 트리 클러스터들 중의 제1 결정 트리 클러스터는 상기 결정 트리 클러스터들 중의 제2 결정 트리 클러스터로부터 특징의 공통 세트를 수신하고 특징의 상기 공통 세트를 상기 결정 트리 클러스터들 중의 제3 결정 트리 클러스터에 전파함 - 과,
    특징의 상기 공통 세트를 상기 결정 트리 프로세서들에 제공하기 위해 상기 결정 트리 프로세서들에 커플링된 특징 네트워크(feature network)
    중 하나 이상을 더 포함하는
    온칩 결정 트리 스코어링 하드웨어 시스템.
  7. 온칩 결정 트리 스코어링 시스템 내의 회로로서 구현된 복수의 결정 트리 프로세서들에 공통 특징 벡터를 제공하는 단계와,
    상기 복수의 결정 트리 프로세서들에 의해, 상기 공통 특징 벡터를 참조하여 복수의 결정 트리들을 실행하는 단계를 포함하는
    방법.
  8. 제7항에 있어서,
    상기 복수의 결정 트리들을 실행하는 것의 결과에 기반하여 상기 복수의 결정 트리들 중의 결정 트리를 위한 스코어를 스코어 집계 네트워크 내로 출력하는 단계를 더 포함하는
    방법.
  9. 제7항에 있어서,
    상기 공통 특징 벡터는 특징 스토리지(feature storage) 상에 저장되되, 상기 방법은 동시에,
    다른 특징 벡터를 상기 특징 스토리지 내에 로딩하는 단계와,
    상기 결정 트리 프로세서들 중 적어도 하나에 의해, 상기 복수의 결정 트리들 중 적어도 하나를 실행하는 단계를 더 포함하되, 상기 실행하는 단계는 상기 특징 스토리지로부터 상기 공통 특징 벡터의 하나 이상의 특징을 판독하는 단계를 포함하는,
    방법.
  10. 제7항에 있어서,
    복수의 결정 트리 클러스터들 전부에 걸쳐 상기 공통 특징 벡터를 전파하는 단계를 더 포함하되, 상기 전파하는 단계는 제1 이웃 결정 트리 클러스터로부터 상기 공통 특징 벡터를 수신하는 단계와, 상기 복수의 결정 트리 클러스터들 중의 결정 트리 클러스터에 의해 상기 특징 벡터를 제2 이웃 결정 트리 클러스터에 전달하는 단계를 포함하는,
    방법.
KR1020167025570A 2014-03-17 2015-03-12 병렬 결정 트리 프로세서 아키텍처 KR102376117B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/216,990 2014-03-17
US14/216,990 US10332008B2 (en) 2014-03-17 2014-03-17 Parallel decision tree processor architecture
PCT/US2015/020050 WO2015142595A1 (en) 2014-03-17 2015-03-12 Parallel decision tree processor architecture

Publications (2)

Publication Number Publication Date
KR20160132853A true KR20160132853A (ko) 2016-11-21
KR102376117B1 KR102376117B1 (ko) 2022-03-17

Family

ID=52774572

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167025570A KR102376117B1 (ko) 2014-03-17 2015-03-12 병렬 결정 트리 프로세서 아키텍처

Country Status (14)

Country Link
US (1) US10332008B2 (ko)
EP (1) EP3120262A1 (ko)
JP (1) JP6605573B2 (ko)
KR (1) KR102376117B1 (ko)
CN (1) CN106133721B (ko)
AU (1) AU2015231828A1 (ko)
CA (1) CA2939959A1 (ko)
CL (1) CL2016002294A1 (ko)
IL (1) IL247166A0 (ko)
MX (1) MX2016011670A (ko)
PH (1) PH12016501639A1 (ko)
RU (1) RU2016136985A (ko)
SG (1) SG11201607431XA (ko)
WO (1) WO2015142595A1 (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150262062A1 (en) * 2014-03-17 2015-09-17 Microsoft Corporation Decision tree threshold coding
US20170004455A1 (en) * 2015-06-30 2017-01-05 Linkedin Corporation Nonlinear featurization of decision trees for linear regression modeling
US10699213B2 (en) 2016-03-07 2020-06-30 Micron Technology, Inc. Space efficient random decision forest models implementation utilizing automata processors
CN108319991B (zh) * 2017-01-16 2021-02-09 航天信息股份有限公司 一种节点工程布线图确定方法及装置
CN106971528A (zh) * 2017-03-31 2017-07-21 上海智觅智能科技有限公司 一种压缩红外空调遥控码库的算法
EP3422245B1 (en) * 2017-06-28 2022-02-16 NXP USA, Inc. Methods, processing engines, and microprocessors for classifying data according to decision trees
US11216431B2 (en) * 2017-09-12 2022-01-04 Apple Inc. Providing a compact representation of tree structures
CN108170769A (zh) * 2017-12-26 2018-06-15 上海大学 一种基于决策树算法的装配制造质量数据处理方法
JP7069898B2 (ja) * 2018-03-16 2022-05-18 株式会社リコー 学習識別装置および学習識別方法
WO2019183868A1 (en) * 2018-03-29 2019-10-03 Intel Corporation Methods, systems, articles of manufacture and apparatus to improve resource utilization for binary tree structures
CN109086815B (zh) * 2018-07-24 2021-08-31 中国人民解放军国防科技大学 基于fpga的决策树模型中的浮点数离散化方法
US10602207B2 (en) * 2018-08-03 2020-03-24 Facebook, Inc. Neural network based content distribution in an online system
JP7095479B2 (ja) * 2018-08-10 2022-07-05 株式会社リコー 学習装置および学習方法
CN109376590A (zh) * 2018-09-07 2019-02-22 百度在线网络技术(北京)有限公司 基于无人车的障碍物分类方法、装置、设备以及存储介质
JP7176359B2 (ja) * 2018-11-05 2022-11-22 株式会社リコー 学習装置および学習方法
JP7196542B2 (ja) * 2018-11-05 2022-12-27 株式会社リコー 学習装置および学習方法
US20200160450A1 (en) * 2018-11-19 2020-05-21 Jpmorgan Chase Bank, N.A. Systems and methods for decision tree-based management of market risk stress scenarios
US11206287B2 (en) * 2019-01-29 2021-12-21 Battelle Memorial Institute Evaluating cyber-risk in synchrophasor systems
US10657603B1 (en) * 2019-04-03 2020-05-19 Progressive Casualty Insurance Company Intelligent routing control
CN111027435B (zh) * 2019-12-02 2022-12-02 清华大学 一种基于梯度提升决策树的识别系统、装置和方法
WO2021255171A1 (en) * 2020-06-19 2021-12-23 Albert-Ludwigs-Universität Freiburg Architecture for classification of a decision tree ensemble and method
US11615827B2 (en) * 2020-10-15 2023-03-28 Hewlett Packard Enterprise Development Lp Hardware accelerator with analog-content addressable memory (a-CAM) for decision tree computation

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030229630A1 (en) * 2002-06-11 2003-12-11 The Regents Of The University Of California Creating ensembles of decision trees through sampling

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5020059A (en) 1989-03-31 1991-05-28 At&T Bell Laboratories Reconfigurable signal processor
US5146540A (en) 1990-02-22 1992-09-08 International Business Machines Corp. Processor allocation method and apparatus for multiprocessor execution of a constraint satisfaction search
US6212628B1 (en) * 1998-04-09 2001-04-03 Teranex, Inc. Mesh connected computer
US6571210B2 (en) 1998-11-13 2003-05-27 Microsoft Corporation Confidence measure system using a near-miss pattern
US8195705B2 (en) 2001-12-11 2012-06-05 International Business Machines Corporation Hybrid search memory for network processor and computer systems
US7246102B2 (en) 2001-12-21 2007-07-17 Agere Systems Inc. Method of improving the lookup performance of three-type knowledge base searches
US8117137B2 (en) 2007-04-19 2012-02-14 Microsoft Corporation Field-programmable gate array based accelerator system
US8650144B2 (en) 2008-02-14 2014-02-11 Yahoo! Inc. Apparatus and methods for lossless compression of numerical attributes in rule based systems
US7877724B2 (en) 2008-05-09 2011-01-25 Lsi Corporation Decision tree representation of a function
US8533129B2 (en) 2008-09-16 2013-09-10 Yahoo! Inc. Efficient data layout techniques for fast machine learning-based document ranking
US8687893B2 (en) 2011-03-31 2014-04-01 Microsoft Corporation Classification algorithm optimization
US9384278B2 (en) 2011-04-07 2016-07-05 Ebay Inc. Methods and systems for assessing excessive accessory listings in search results
US8879831B2 (en) 2011-12-15 2014-11-04 Microsoft Corporation Using high-level attributes to guide image processing
US9292767B2 (en) * 2012-01-05 2016-03-22 Microsoft Technology Licensing, Llc Decision tree computation in hardware utilizing a physically distinct integrated circuit with on-chip memory and a reordering of data to be grouped
US10152674B2 (en) * 2012-01-16 2018-12-11 Texas Instruments Incorporated Accelerated decision tree execution
CN103532908B (zh) 2012-07-02 2017-06-16 清华大学 一种基于二级决策树的p2p协议识别方法
CN102902871A (zh) 2012-07-03 2013-01-30 成都中医药大学 针灸临床循证决策支持系统及其应用方法
CN103546441B (zh) 2012-07-16 2016-12-21 清华大学 基于多级决策树的协议识别方法
EP2746991A1 (en) 2012-12-21 2014-06-25 Nederlandse Organisatie voor toegepast -natuurwetenschappelijk onderzoek TNO Image pattern recognition system and method
US20150262063A1 (en) 2014-03-17 2015-09-17 Microsoft Corporation Decision tree processors
US20150262062A1 (en) 2014-03-17 2015-09-17 Microsoft Corporation Decision tree threshold coding

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030229630A1 (en) * 2002-06-11 2003-12-11 The Regents Of The University Of California Creating ensembles of decision trees through sampling

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Yanhong et al, Network traffic on-lind classification using decision tree fast parallel processing strategy.(2012.09.21.) *

Also Published As

Publication number Publication date
US10332008B2 (en) 2019-06-25
CL2016002294A1 (es) 2017-03-24
SG11201607431XA (en) 2016-10-28
RU2016136985A (ru) 2018-03-20
PH12016501639A1 (en) 2016-10-03
RU2016136985A3 (ko) 2018-10-24
AU2015231828A1 (en) 2016-09-08
EP3120262A1 (en) 2017-01-25
IL247166A0 (en) 2016-09-29
JP2017517082A (ja) 2017-06-22
CN106133721A (zh) 2016-11-16
WO2015142595A1 (en) 2015-09-24
US20150262064A1 (en) 2015-09-17
CN106133721B (zh) 2019-10-01
CA2939959A1 (en) 2015-09-24
JP6605573B2 (ja) 2019-11-13
KR102376117B1 (ko) 2022-03-17
MX2016011670A (es) 2016-11-07

Similar Documents

Publication Publication Date Title
KR102376117B1 (ko) 병렬 결정 트리 프로세서 아키텍처
US20150262062A1 (en) Decision tree threshold coding
US10915450B2 (en) Methods and systems for padding data received by a state machine engine
US20150262063A1 (en) Decision tree processors
KR101840905B1 (ko) 상태 기계 격자에서의 카운터 동작
US9703565B2 (en) Combined branch target and predicate prediction
Mitchell et al. Xgboost: Scalable GPU accelerated learning
CN104011723B (zh) 状态机晶格中的布尔逻辑
CN103999035B (zh) 用于状态机中的数据分析的方法及系统
US10007605B2 (en) Hardware-based array compression
WO2016062251A1 (en) Parallel history search and encoding for dictionary-based compression
CN105989015B (zh) 一种数据库扩容方法和装置以及访问数据库的方法和装置
Li et al. An application-oblivious memory scheduling system for DNN accelerators
JP2023503034A (ja) パターンベースのキャッシュブロック圧縮
Arya Fastbit-radix sort: Optimized version of radix sort
JP7156376B2 (ja) 観測事象判定装置、観測事象判定方法、及びプログラム
US20240152516A1 (en) Method and apparatus for executing structural query language instruction in solid-state storage device
JP6555259B2 (ja) 情報処理装置、データ格納方法、及び、プログラム
Kim Energy-Efficient Accelerator Design for Emerging Applications
Keckler et al. Combined branch target and predicate prediction
Osipov Algorithm Engineering for fundamental Sorting and Graph Problems.
JP2014225200A (ja) 半導体装置の設計装置、設計方法、設計プログラム

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant