KR20220025482A - 텐서를 메모리 노드들에 배치하는 방법 및 상기 방법을 수행하는 장치 - Google Patents

텐서를 메모리 노드들에 배치하는 방법 및 상기 방법을 수행하는 장치 Download PDF

Info

Publication number
KR20220025482A
KR20220025482A KR1020200106235A KR20200106235A KR20220025482A KR 20220025482 A KR20220025482 A KR 20220025482A KR 1020200106235 A KR1020200106235 A KR 1020200106235A KR 20200106235 A KR20200106235 A KR 20200106235A KR 20220025482 A KR20220025482 A KR 20220025482A
Authority
KR
South Korea
Prior art keywords
tensor
bundle
memory
tensors
nodes
Prior art date
Application number
KR1020200106235A
Other languages
English (en)
Other versions
KR102400971B1 (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 울산과학기술원
Priority to KR1020200106235A priority Critical patent/KR102400971B1/ko
Publication of KR20220025482A publication Critical patent/KR20220025482A/ko
Application granted granted Critical
Publication of KR102400971B1 publication Critical patent/KR102400971B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1678Details of memory controller using bus width
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Artificial Intelligence (AREA)
  • Memory System (AREA)

Abstract

본 발명의 일 실시예에 따른 텐서를 메모리에 배치하는 방법은, 복수의 노드들을 포함하는 기계학습 모델을 입력받는 단계; 상기 복수의 노드들이 출력하는 복수의 텐서들 각각을 수신하는 노드들의 개수를 이용하여 상기 복수의 텐서들 각각의 접근 빈도(Hotness)를 결정하는 단계; 상기 복수의 텐서들 중에서 동일한 메모리 버퍼를 사용하는 하나 이상의 텐서를 결합하여 텐서 묶음을 생성하는 단계; 상기 텐서 묶음의 접근 빈도, 상기 텐서 묶음의 크기 및 상기 텐서 묶음의 배치 정책에 기초하여, 상기 텐서 묶음의 텐서 값 및 텐서 용량을 결정하는 단계; 및 상기 텐서 값 및 상기 텐서 용량에 기초하여, 상기 텐서 묶음을 복수의 메모리 노드들 중에서 어느 하나로 배치하는 단계를 포함할 수 있다.

Description

텐서를 메모리 노드들에 배치하는 방법 및 상기 방법을 수행하는 장치 {METHOD OF PLACING TENSOR IN MEMORY NODES AND DEVICE PERFORMING METHOD}
본 발명은 텐서를 복수의 메모리 노드들 중에서 어느 하나에 배치하는 방법 및 상기 방법을 수행하는 장치에 관한 것이다.
이종 메모리 시스템은 서로 다른 특성들(예컨대, 용량, 대역폭, 액세스 레이턴시, 전력 소비 등)을 갖는 둘 이상의 메모리 노드를 포함하는 프로세서-기반 시스템의 메모리 시스템이다.
이종 메모리 시스템은 종래 크기의 통신 레인들을 제공하는 DRAM(dynamic random access memory)과 함께, 보다 넓은 통신 레인들을 제공하는 HBM(high-bandwidth memory)를 포함할 수 있다.
한편, 기계학습은 다양한 컴퓨팅 분야에서 사용되는 대표적인 워크로드로서, 이종 메모리 시스템에서 또한 기계학습을 이용한 애플리케이션을 구동시킬 수 있다.
다만, 이종 메모리 시스템은 서로 다른 특성들을 갖는 둘 이상의 메모리 노드를 포함하므로, 기계학습에서 사용되는 텐서들을 어떤 메모리 노드에 배치하느냐에 따라 성능의 차이가 발생할 수 있어, 텐서들을 메모리 노드에 배치하는 방법이 문제될 수 있다.
본 발명이 해결하고자 하는 과제는, 전술한 문제를 해결하기 위하여, 텐서를 복수의 메모리 노드들 중에서 어느 하나에 배치하는 방법을 제공하는 것이다.
다만, 본 발명이 해결하고자 하는 과제는 이상에서 언급한 것으로 제한되지 않으며, 언급되지 않은 또 다른 해결하고자 하는 과제는 아래의 기재로부터 본 발명이 속하는 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 발명의 일 실시예에 따른 텐서를 메모리에 배치하는 방법은, 복수의 노드들을 포함하는 기계학습 모델을 입력받는 단계; 상기 복수의 노드들이 출력하는 복수의 텐서들 각각을 수신하는 노드들의 개수를 이용하여 상기 복수의 텐서들 각각의 접근 빈도(Hotness)를 결정하는 단계; 상기 복수의 텐서들 중에서 동일한 메모리 버퍼를 사용하는 하나 이상의 텐서를 결합하여 텐서 묶음을 생성하는 단계; 상기 텐서 묶음의 접근 빈도, 상기 텐서 묶음의 크기 및 상기 텐서 묶음의 배치 정책에 기초하여, 상기 텐서 묶음의 텐서 값 및 텐서 용량을 결정하는 단계; 및 상기 텐서 값 및 상기 텐서 용량에 기초하여, 상기 텐서 묶음을 복수의 메모리 노드들 중에서 어느 하나로 배치하는 단계를 포함할 수 있다.
상기 텐서 묶음을 복수의 메모리 노드들 중에서 어느 하나로 배치하는 단계는, 상기 텐서 용량 대비 상기 텐서 값이 높은 순서대로 상기 텐서 묶음을 상기 복수의 메모리 노드들 중에서 고대역 메모리로 배치할 수 있다.
상기 텐서 묶음의 접근 빈도는 상기 텐서 묶음에 포함된 상기 하나 이상의 텐서의 접근 빈도를 더하여 결정될 수 있다.
상기 복수의 텐서들 각각의 실행 시간에 기초하여 상기 텐서 묶음의 수명(Lifetime)을 결정하는 단계를 더 포함하고, 상기 텐서 묶음을 복수의 메모리 노드들 중에서 어느 하나로 배치하는 단계는, 상기 텐서 묶음의 수명에 더 기초하여, 상기 텐서 묶음을 복수의 메모리 노드들 중에서 어느 하나로 배치할 수 있다.
상기 텐서 묶음의 수명은, 상기 복수의 텐서들 각각을 출력하는 할당 시간(Allocation time)과 상기 복수의 텐서들 각각을 마지막으로 실행하는 할당해제 시간(Deallocation time)을 이용하여 결정될 수 있다.
상기 텐서 묶음의 텐서 값 및 텐서 용량을 결정하는 단계는, 상기 텐서 묶음의 배치 정책에 따라 결정된 상기 텐서 묶음의 대역폭을 이용하여, 상기 텐서 묶음의 텐서 값을 결정할 수 있다.
상기 텐서 묶음의 텐서 값 및 텐서 용량을 결정하는 단계는, 상기 텐서 묶음의 배치 정책에 따라 결정되는 상기 복수의 메모리 노드들 중에서 고대역 메모리에 배치되는 상기 텐서 묶음의 크기를 이용하여, 상기 텐서 묶음의 텐서 용량을 결정할 수 있다.
상기 텐서 묶음은 제1 슬라이스와 제2 슬라이스로 분할되고, 상기 텐서 묶음을 복수의 메모리 노드들 중에서 어느 하나로 배치하는 단계는, 상기 제1 슬라이스는 상기 복수의 메모리 노드들 중에서 고대역 메모리로 배치하고, 상기 제2 슬라이스는 상기 복수의 메모리 노드들 중에서 저대역 메모리로 배치할 수 있다.
상기 복수의 메모리 노드들 중에서 어느 하나로 기 배치된 텐서 묶음의 텐서 값을 재결정하는 단계; 및 상기 재결정된 텐서 묶음의 텐서 값에 기초하여 상기 기 배치된 텐서 묶음을 상기 복수의 메모리 노드들 중에서 다른 하나로 이주시킬지 여부를 결정하는 단계를 더 포함할 수 있다.
상기 재결정된 텐서 묶음의 텐서 값 및 상기 기 배치된 텐서 묶음의 크기에 따라 텐서의 이주 비용과 이주 이득을 결정하는 단계; 및 상기 텐서의 이주 비용과 이주 이득에 기초하여, 상기 기 배치된 텐서 묶음 전체를 상기 복수의 메모리 노드들 중에서 다른 하나로 이주시킬지 또는 상기 기 배치된 텐서 묶음에 포함된 슬라이스들 중에서 하나만 상기 복수의 메모리 노드들 중에서 다른 하나로 이주시킬지 여부를 결정하는 단계를 더 포함할 수 있다.
본 발명의 다른 실시예에 따른 텐서를 메모리에 배치하는 텐서 배치 장치는, 복수의 노드들을 포함하는 기계학습 모델을 입력받는 입출력기; 복수의 메모리 노드들을 포함하는 메모리부; 및 상기 입출력기 및 상기 메모리부를 제어하는 프로세서를 포함하고, 상기 프로세서는, 상기 복수의 노드들이 출력하는 복수의 텐서들을 수신하는 노드들의 개수를 이용하여 상기 복수의 텐서들 각각의 접근 빈도(Hotness)를 결정하고, 상기 복수의 텐서들 중에서 동일한 메모리 버퍼를 사용하는 하나 이상의 텐서를 결합하여 텐서 묶음을 생성하고, 상기 텐서 묶음의 접근 빈도, 상기 텐서 묶음의 크기 및 상기 텐서 묶음의 배치 정책에 기초하여, 상기 텐서 묶음의 텐서 값 및 텐서 용량을 결정하고, 상기 텐서 값 및 상기 텐서 용량에 기초하여, 상기 텐서 묶음을 상기 복수의 메모리 노드들 중에서 어느 하나로 배치할 수 있다.
본 발명의 실시예에 의하면, 이종 메모리 노드들을 포함하는 장치에서 텐서를 메모리 노드에 효과적으로 배치하는 방법을 제안함으로써, 기계학습 모델을 수행하는 시간을 감소시킬 수 있다.
도 1은 본 발명의 일 실시예에 따라 기계학습 모델의 텐서를 각 메모리 노드에 배치하는 텐서 배치 장치의 블록도이다.
도 2는 본 발명의 일 실시예에 따른 텐서 배치 모델의 기능을 개념적으로 나타내는 블록도이다.
도 3은 본 발명의 일 실시예에 따른 텐서 분석부의 기능을 개념적으로 나타내는 블록도이다.
도 4는 본 발명의 일 실시예에 따라 텐서 분석부가 텐서의 접근 빈도와 수명을 결정하는 방법을 나타낸다.
도 5는 본 발명의 일 실시예에 따른 텐서 배치 모델을 이용하여 텐서를 메모리 노드에 배치하였을 때와 종래의 기술들을 이용하여 텐서를 메모리 노드에 배치하였을 때의 정규화된 수행 시간을 비교하는 일 예시를 나타낸다.
도 6은 본 발명의 일 실시예에 따른 텐서 배치 모델을 이용하여 텐서를 메모리 노드에 배치하는 방법을 나타내는 순서도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
본 발명의 실시예들을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명의 실시예에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
도 1은 본 발명의 일 실시예에 따라 기계학습 모델의 텐서를 각 메모리 노드에 배치하는 텐서 배치 장치의 블록도이다.
도 1을 참조하면, 텐서 배치 장치(100)는 프로세서(110), 입출력기(120) 및 메모리부(130)를 포함할 수 있다.
프로세서(110)는 텐서 배치 장치(100)의 동작을 전반적으로 제어할 수 있다.
프로세서(110)는 입출력기(120)를 제어하여, 기계학습 모델 또는 기계학습 모델을 이용하는 프로그램을 입력받을 수 있다. 또는, 도 1에 도시된 바와는 다르게, 프로세서(110)는 입출력기(120)가 아닌 송수신기(120)를 통해 기계학습 모델 또는 기계학습 모델을 이용하는 프로그램을 수신할 수 있다. 본 명세서에서는, 설명의 편의를 위하여 기계학습 모델을 입력받는 경우에 대해서만 설명하지만, 기계학습 모델을 이용하는 프로그램(애플리케이션)을 수신하는 경우 또한 본 명세서에서 설명하는 방법이 동일하게 적용될 수 있다.
메모리부(130)는 텐서 배치 모델(200) 및 텐서 배치 모델(200)의 실행에 필요한 정보를 저장할 수 있다.
프로세서(110)는 텐서 배치 모델(200)을 실행하기 위하여 메모리부(130)로부터 텐서 배치 모델(200) 및 텐서 배치 모델(200)의 실행에 필요한 정보를 로드할 수 있다.
본 명세서에서 텐서 배치 모델(200)은 입력된 기계학습 모델에 포함된 복수의 노드들로부터 출력되는 텐서(tensor)들 각각(또는 그 일부 또는 텐서 묶음들)을 복수의 메모리 노드들 중에서 어느 하나로 배치(placement)하거나, 복수의 메모리 노드들 중에서 어느 하나에 배치된 텐서(또는 그 일부 또는 텐서 묶음들)를 복수의 메모리 노드들 중에서 다른 어느 하나로 이주(migration)하는 소프트웨어(컴퓨터 프로그램 코드)를 의미할 수 있다.
프로세서(110)는, 텐서 배치 모델(200)을 실행하여, 입력된 기계학습 모델에 포함된 복수의 노드들로부터 출력되는 텐서들 각각(또는 그 일부 또는 텐서 묶음들)을 메모리부(130)에 포함된 복수의 메모리 노드들 중에서 어느 하나로 배치하거나, 상기 복수의 메모리 노드들 중에서 어느 하나에 배치된 텐서(또는 그 일부 또는 텐서 묶음들)를 복수의 메모리 노드들 중에서 다른 어느 하나로 이주시킬 수 있다.
도 2는 본 발명의 일 실시예에 따른 텐서 배치 모델의 기능을 개념적으로 나타내는 블록도이고, 도 3은 본 발명의 일 실시예에 따른 텐서 분석부의 기능을 개념적으로 나타내는 블록도이고, 도 4는 본 발명의 일 실시예에 따라 텐서 분석부가 텐서의 접근 빈도와 수명을 결정하는 방법을 나타낸다.
도 2를 참조하면, 텐서 배치 모델(200)은 텐서 분석부(210), 텐서 결합부(220) 및 텐서 매니저(230)를 포함할 수 있다.
도 2에 도시된 텐서 분석부(210), 텐서 결합부(220) 및 텐서 매니저(230)는 텐서 배치 모델(200)의 기능을 쉽게 설명하기 위하여 텐서 배치 모델(200)의 기능을 개념적으로 나눈 것으로서, 이에 한정되지 않는다. 실시예들에 따라, 텐서 분석부(210), 텐서 결합부(220) 및 텐서 매니저(230)는 하나의 프로그램에 포함된 일련의 명령어들로 구현될 수도 있다.
텐서 분석부(210)는 각각이 수학적 계산(numeric operation), 데이터의 입출력, 생성, 수정, 저장, 및/또는 삭제 등의 일종의 기능(operation)을 수행하는 복수의 노드들(레이어들, 예컨대, convolution layer, pooling layer, relu layer 등)을 포함하는 기계학습 모델을 입력받고, 상기 복수의 노드들 간의 데이터의 입출력을 나타내는 복수의 텐서들 각각의 접근 빈도와 수명을 결정할 수 있다.
도 3을 더 참조하면, 텐서 분석부(210)는 접근 빈도 분석부(310) 및 수명 분석부(320)를 포함할 수 있다.
접근 빈도 분석부(310)는, 아래의 수학식 1에 기초하여, 복수의 텐서들 각각의 접근 빈도(Hotness)를 결정할 수 있다.
Figure pat00001
여기서, Nc는 특정 노드에서 출력된 텐서가 전송되는 노드들의 수를 나타내고, Np는 텐서를 출력한 노드의 수로서, 1에 해당할 수 있다. 즉, 상기 텐서의 접근 빈도는 특정 텐서를 출력한 노드와 수신한 노드의 수로서, 특정 노드에서 출력된 텐서를 이용하는 노드의 수를 의미할 수 있다.
수명 분석부(320)는, 아래의 수학식 2에 기초하여, 복수의 텐서들 각각의 수명(Lifetime)을 결정할 수 있다.
Figure pat00002
여기서, 할당해제 시간(Deallocation time)은, 데이터 플로우 그래프 상에서, 특정 노드에서 출력된 텐서가 전송된 노드들 중에서 가장 마지막에 수행되는 노드의 실행 순서를 나타내고, 할당 시간(Allocation time)은, 데이터 플로우 그래프 상에서, 텐서를 출력한 특정 노드의 실행 순서를 나타낼 수 있다. 즉, 상기 텐서의 수명은 특정 노드에서 출력된 텐서가 전송된 노드들 중에서 가장 마지막에 수행되는 노드의 실행 순서와 상기 특정 노드의 실행 순서의 차로서, 출력된 텐서가 실행되는 시간을 의미할 수 있다.
예컨대, 도 4를 더 참조하면, 제1 노드(N1)에서 생성한 제1 텐서(T1)는 제1 노드(N1)에서 출력되어 제2 노드(N2), 제3 노드(N3) 및 제4 노드(N4)로 전송되므로, 제1 텐서(T1)의 접근 빈도는 4(=3+1)이고, 제1 텐서(T1)의 수명은 3(=4-1)일 수 있다.
동일하게, 제2 노드(N2)에서 생성한 제2 텐서(T2)는 제2 노드(N2)에서 출력되어 제4 노드(N4)로 전송되므로, 제2 텐서(T2)의 접근 빈도는 2(=1+1)이고, 제2 텐서(T2)의 수명은 2(=4-2)일 수 있다. 또한, 제3 노드(N3)에서 생성한 제3 텐서(T3)는 제3 노드(N3)에서 출력되어 제4 노드(N4)로 전송되므로, 제3 텐서(T3)의 접근 빈도는 2(=1+1)이고, 제3 텐서(T3)의 수명은 1(=4-3)일 수 있다.
다시 도 2를 참조하면, 텐서 결합부(220)는 텐서 분석부(210)에서 결정한 복수의 텐서들 각각의 접근 빈도 및 수명을 수신하고, 복수의 텐서들 중에서 동일한 메모리 버퍼를 사용하는 텐서들을 결합하여 텐서 묶음을 생성하고, 하나의 텐서 묶음에 포함된 하나 이상의 텐서의 접근 빈도와 수명을 결합하여 텐서 묶음의 접근 빈도와 수명을 산출할 수 있다. 이는 텐서플로우(TensorFlow)에서 특정 노드들은 입력 텐서에 사용되는 메모리 버퍼를 성능 최적화를 위해 출력 텐서에도 동일하게 사용하기 때문이다.
우선, 접근 빈도의 결합에 있어서, 텐서 결합부(220)는 동일한 메모리 버퍼를 사용하는 텐서 묶음에 포함된 텐서들의 접근 빈도를 합하여 텐서 묶음의 접근 빈도를 산출할 수 있다.
또한, 수명에 있어서, 텐서 결합부(220)는 텐서 묶음의 수명을 계산하는데 사용되는 할당해제 시간(Deallocation time)을 텐서 묶음 중에서 가장 늦게 할당해제 되는 텐서를 기준으로 가장 마지막에 수행되는 노드의 실행 순서로 결정하고, 텐서 묶음의 수명을 계산하는데 사용되는 할당 시간(Allocation time)을 텐서 묶음 중에서 가장 먼저 할당되는 텐서를 기준으로 텐서를 출력한 노드의 실행 순서로 결정할 수 있다.
예컨대, 도 4를 다시 참조하면, 제1 텐서(T1) 내지 제3 텐서(T3)이 모두 동일한 메모리 버퍼를 사용한다고 가정하면, 접근 빈도는 제1 텐서(T1) 내지 제3 텐서(T3)의 접근 빈도를 모두 합한 8(=4+2+2)로 결정될 수 있다.
또한, 제1 텐서(T1) 내지 제3 텐서(T3)는 할당해제 되는 순서(즉, 가장 마지막에 수행되는 노드의 실행 순서)가 제4 노드(N4)로 동일하고, 가장 먼저 할당되는 텐서(제1 텐서(T1))를 출력한 노드는 제1 노드(N1)이므로, 수명은 3(=4-1)로 결정될 수 있다.
텐서 결합부(220)는 동일한 메모리 버퍼를 사용하는 하나 이상의 텐서를 포함하는 텐서 묶음의 접근 빈도와 수명을 텐서 매니저(230)로 전송할 수 있다.
텐서 매니저(230)는, 복수의 텐서 묶음들 각각의 텐서 값(vt,P) 및 텐서 용량(wt,p)에 기초하여, 복수의 텐서 묶음들 각각을 복수의 메모리 노드들 각각으로 배치할 수 있고, 복수의 메모리 노드들 중에서 어느 하나에 기 배치된 텐서를 복수의 메모리 노드들 중에서 다른 하나로 이주시킬 수 있다.
텐서 매니저(230)는, 복수의 텐서 묶음들 각각의 크기, 복수의 메모리 노드들 각각의 대역폭 및 복수의 텐서 묶음들 각각의 접근 빈도를 이용하여, 텐서 묶음(t)이 LBM(Low Bandwidth Memory)에 할당되었을 때에 비하여 감소하는 데이터 전송 시간을 나타내는 텐서 값(vt,P) 및 텐서 묶음(t) 중에서 HBM에 할당된 용량을 나타내는 텐서 용량(wt,p)을 결정할 수 있다.
텐서 매니저(230)는, 아래의 수학식 3에 기초하여, 복수의 텐서 묶음들 각각의 텐서 값(vt,P)을 결정할 수 있다.
Figure pat00003
여기서, t는 텐서의 인덱스를 나타내고, st는 텐서 묶음(t)의 크기를 나타내고, ht는 텐서 묶음(t)의 접근 빈도를 나타내고, BP는 텐서 묶음이 배치 정책(P)에 기초하여 메모리 노드에 할당되었을 때의 대역폭을 나타내고, vt,p는 텐서 값을 나타낼 수 있다.
또한, 여기서, HBM-Only는 텐서 묶음(t) 전체가 HBM(High Bandwidth Memory)에 할당되도록 배치 정책(P)이 설정된 경우를 나타내고, interleave는 텐서 묶음(t)의 절반은 HBM에, 텐서 묶음(t)의 나머지 절반은 LBM에 할당되도록 배치 정책(P)이 설정된 경우를 나타내고, LBM-Only는 텐서 묶음(t) 전체가 LBM에 할당되도록 배치 정책(P)이 설정된 경우를 나타낼 수 있다.
HBM는 상대적으로 대역폭이 큰 메모리 노드로서, 예컨대, 480GB/s의 대역폭을 가질 수 있고, LBM은 상대적으로 대역폭이 작은 메모리 노드로서, 예컨대, 80GB/s의 대역폭을 가질 수 있다. Interleave는 상대적으로 중간 정도의 대역폭을 갖는 경우로서, 예컨대, 160GB/s의 대역폭을 가질 수 있다.
텐서 매니저(230)는, 아래의 수학식 4에 기초하여, 복수의 텐서 묶음들 각각의 텐서 용량(wt,p)을 결정할 수 있다.
Figure pat00004
여기서, wt,P는 텐서 묶음(t)을 배치 정책(P)에 기초하여 메모리 노드에 할당하였을 때의 HBM에 차지하는 텐서 묶음(t)의 텐서 용량을 나타낼 수 있다.
텐서 매니저(230)는, 텐서 값(vt,P)과 텐서 용량(wt,p)에 기초하여, 복수의 텐서 묶음들 각각을 복수의 메모리 노드들 각각으로 배치할 수 있다. 보다 자세하게는, 텐서 매니저(230)는, 텐서 값(vt,P)과 텐서 용량(wt,p)의 비율에 기초하여, 복수의 텐서 묶음들 각각을 복수의 메모리 노드들 각각으로 배치할 수 있다.
일 실시예에 따라, 각각의 텐서 묶음은 두 개의 슬라이스(slice)로 구성되며, 텐서 매니저(230)는, 탐욕 알고리즘(Greedy Algorithm)에 기초하여, 텐서 용량(wt,p) 대비 텐서 값(vt,P)(즉,
Figure pat00005
)이 큰 순서대로 복수의 텐서 묶음들 각각에 포함된 슬라이스들을 HBM에 할당할 수 있다.
이때, 텐서 매니저(230)는 수명 분석부(320)에서 결정한 복수의 텐서들 각각의 수명을 이용하여 텐서 묶음을 HBM에 할당할지 여부를 결정할 수 있다. 보다 자세하게는, 텐서 매니저(230)는, 텐서 묶음의 수명(할당 시간과 할당해제 시간)동안의 HBM의 가용 용량이 텐서 묶음의 크기 이상인지 여부에 기초하여, 텐서 묶음을 HBM에 할당할지 여부를 결정할 수 있다.
예컨대, HBM의 용량이 16GB이고, 복수의 텐서들(T1, T2, T3) 각각의 수명, 크기 및 용량(wt,p) 대비 텐서 값(vt,P)이 아래와 같을 경우, 텐서 매니저(230)는 탐욕 알고리즘에 기초하여 텐서 용량 대비 텐서 값이 가장 큰 제1 텐서(T1)를 가장 먼저 HBM에 할당할 수 있다.
- 제1 텐서(T1): allocation time = 1, deallocation time = 5, 크기 = 8 GB, 텐서 용량 대비 텐서 값 = 10
- 제2 텐서(T2): allocation time = 2, deallocation time = 8, 크기 = 10 GB, 텐서 용량 대비 텐서 값 = 5
- 제3 텐서(T3): allocation time = 3, deallocation time = 4, 크기 = 4 GB, 텐서 용량 대비 텐서 값 = 1
이때, 제1 탠서(T1)의 할당 시간은 1(예컨대, 첫 번째 노드)이고, 할당해제 시간은 5(예컨대, 다섯 번째 노드)이므로, 첫 번째 노드부터 다섯 번째 노드까지가 실행되는 동안, HBM의 사용량은 8 GB일 수 있다.
제1 텐서(T1)의 배치 이후, 텐서 매니저(230)는 텐서 용량 대비 텐서 값이 제1 텐서(T1) 다음으로 큰 제2 텐서(T2)에 대한 할당을 결정할 수 있다. 이때, 제2 텐서(T2)의 수명 동안(2~8)의 HBM의 가용 용량(8 GB = 16 GB - 8 GB)이 제2 텐서(T2)의 크기(10 GB)보다 작으므로, 텐서 매니저(230)는 제2 텐서(T2)를 HBM에 할당하지 않기로 결정할 수 있다.
이후, 텐서 매니저(230)는 텐서 용량 대비 텐서 값이 가장 작은 제3 텐서(T3)에 대한 할당을 결정하는데, 제3 텐서(T3)의 수명 동안(3~4)의 HBM의 가용 용량(8 GB = 16 GB - 8 GB)이 제3 텐서(T3)의 크기(4 GB)보다 크므로, 텐서 매니저(230)는 제3 텐서(T3)를 HBM에 할당하기로 결정할 수 있다.
또한, 텐서들은 노드에서의 실행이 완료됨에 따라 접근 빈도가 감소하므로, 텐서 묶음들의 텐서 값 또한 감소할 수 있다. 따라서, 시간이 지남에 따라, 텐서 용량(wt,p) 대비 텐서 값(vt,P)이 감소하게 되므로, 텐서 묶음이 복수의 메모리 노드 중에 어느 하나에 배치되었음에도 불구하고, 기 배치된 텐서 묶음을 복수의 메모리 노드들 중에서 다른 하나로 이주(migration)시킬 수 있다.
이를 위해, 텐서 매니저(230)는 수명 분석부(320)에서 결정한 복수의 텐서들 각각의 수명에 기초하여 결정된 각 텐서 묶음들의 할당 시점(즉, 할당 시간)에 HBM에 기 할당된 텐서 묶음들의 텐서 값(vt,P)을 계산하고, HBM에 할당된 복수의 텐서 묶음들을 텐서 값(vt,P)(또는 텐서 용량(wt,p) 대비 텐서 값(vt,P))이 낮은 순서로 정렬할 수 있다. 텐서 매니저(230)는 텐서 값(vt,P)(또는 텐서 용량(wt,p) 대비 텐서 값(vt,P))이 가장 낮은 텐서 묶음을 HBM에서 LBM으로 이주시킬 수 있다.
일 실시예에 따라, 텐서 매니저(230)는 텐서 값(vt,P)(또는 텐서 용량(wt,p) 대비 텐서 값(vt,P))이 가장 낮은 텐서 묶음 전체를 LBM으로 이주시키지 않고, 텐서 묶음에 포함된 슬라이스들 중에서 하나만 LBM으로 이주시킬 수 있다.
텐서 매니저(230)는 텐서의 이주 이득과 이주 비용에 기초하여 텐서 묶음 전체를 LBM으로 이주시킬지, 텐서 묶음에 포함된 슬라이스들 중에서 하나의 슬라이스만 LBM으로 이주시킬지, 또는 텐서 묶음을 이주시키지 않을지 여부 및 이주시킬 텐서 묶음을 결정할 수 있다.
보다 자세하게는, 텐서의 이주 이득이 이주 비용보다 큰 경우, 텐서 매니저(230)는 이주 이득과 이주 비용의 차이가 가장 큰 텐서 묶음을 결정하고, 텐서 묶음 전체를 LBM으로 이주시키는 방법과 텐서 묶음에 포함된 슬라이스들 중에서 하나만 LBM으로 이주시키는 방법 중에서 이주 이득과 이주 비용의 차이가 더 큰 방법을 이주 방법으로서 결정할 수 있다. 결과적으로, 텐서 매니저(230)는 결정된 이주 방법을 이용하여 결정된 텐서 묶음을 LBM으로 이주시킬 수 있다.
또한, 텐서 매니저(230)는 텐서의 이주 이득이 이주 비용보다 작은 경우 HBM에 기 할당된 텐서 묶음을 LBM으로 이주시키지 않을 수 있다.
여기서, 텐서의 이주 비용은 텐서 묶음을 LBM으로 이주시키는데 쓰이는 전송 시간을 의미할 수 있다. 텐서 묶음 전체를 LBM으로 이주시키는 경우, 텐서의 이주 비용은 텐서 묶음 전체의 크기를 LBM의 대역폭으로 나눈 값으로 결정되고, 텐서 묶음에 포함된 슬라이스들 중에서 하나만 LBM으로 이주시키는 경우, 텐서의 이주 비용은 텐서 묶음의 크기의 절반을 LBM의 대역폭으로 나눈 값으로 결정될 수 있다.
또한, 텐서의 이주 이득은 낮은 텐서 값을 갖는 텐서 묶음을 LBM으로 이주시키고, 높은 텐서 값을 갖는 텐서 묶음을 HBM에 할당함으로써 감소하는 데이터 전송 시간을 의미할 수 있다. 텐서의 이주 이득은 HBM으로 이주되는 텐서 묶음의 텐서 값과 LBM으로 이주되는 텐서 묶음의 텐서 값의 차이로 결정될 수 있다.
텐서 묶음 전체를 LBM으로 이주시키는 경우, 텐서의 이주 이득은 HBM에 새로 할당되는 텐서 묶음의 텐서 값으로 결정되고, 텐서 묶음에 포함된 슬라이스들 중에서 하나만 LBM으로 이주시키는 경우, 텐서의 이주 이득은 HBM에 새로 할당되는 텐서 묶음의 텐서 값 및 텐서 묶음에 포함된 슬라이스들 중에서 HBM에 남아있는 텐서 묶음의 텐서 값의 합으로 결정될 수 있다.
도 5는 본 발명의 일 실시예에 따른 텐서 배치 모델을 이용하여 텐서를 메모리 노드에 배치하였을 때와 종래의 기술들을 이용하여 텐서를 메모리 노드에 배치하였을 때의 정규화된 수행 시간을 비교하는 일 예시를 나타낸다.
도 5를 참조하면, LBM(LBM-Preferred)은 텐서 묶음들을 가능한 LBM에 먼저 할당하는 설정을 나타내고, HBM(HBM-Preferred)은 텐서 묶음들을 가능한 HBM에 먼저 할당하는 설정을 나타내고, IL(Interleave)은 텐서 묶음들을 LBM과 HBM에 라운드-로빈(round-robin) 방식으로 할당하는 설정을 나타내고, BWA(Bandwidth-aware)는 대역폭을 최대화 하는 최적 비율로 텐서 묶음들을 LBM과 HBM에 할당하는 설정을 나타내고, HC(Hardware cache)는 HBM을 Last-Level Cache(LLC)로 사용하는 설정을 나타내고, IDEAL(Ideal case with infinite HBM)은 HBM이 무한하다고 가정한 이상적인 상황을 나타내고, HALO는 본 명세서에서 설명한 방법에 따라 텐서 묶음들을 메모리 노드에 배치하는 설정을 나타낼 수 있다.
도 5에 나타난 바와 같이, HALO는 LBM, HBM, IL, BWA 및 HC와 비교하여 각각 36.9%, 28.2%, 27.7%, 28.7% 및 30.4% 만큼 수행시간이 감소하였음을 알 수 있다.
즉, BWA는 애플리케이션의 메모리 사용량이 HBM 용량을 넘는 경우 최적 할당 비율을 유지하지 못하므로, HALO는 BWA에 비하여 28.7% 더 높은 성능을 달성할 수 있음을 알 수 있고, HC는 텐서 묶음의 접근 빈도와 수명을 고려하지 않으므로, HALO는 HC에 비하여 30.4% 더 높은 성능을 달성할 수 있음을 알 수 있다.
또한, HALO는 IDEAL에 비하여 4.2% 만큼 낮은 성능을 보임으로서, 이상적인 경우와 성능이 크게 차이가 나지 않음을 알 수 있다.
도 6은 본 발명의 일 실시예에 따른 텐서 배치 모델을 이용하여 텐서를 메모리 노드에 배치하는 방법을 나타내는 순서도이다.
도 2, 도 3 및 도 6를 참조하면, 접근 빈도 분석부(310)는 기계학습 모델에 포함된 특정 노드에서 출력되는 텐서가 전송되는 노드의 수를 이용하여 상기 텐서의 접근 빈도(Hotness)를 결정할 수 있다(S600).
수명 분석부(320)는, 텐서가 전송되는 노드들의 실행 순서를 이용하여, 텐서가 실행되는 시간을 나타내는 텐서의 수명을 결정할 수 있다(S610).
텐서 결합부(220)는 텐서 분석부(210)로부터 복수의 텐서들 각각의 접근 빈도 및 수명을 수신하고, 복수의 텐서들 중에서 동일한 메모리 버퍼를 사용하는 텐서들을 결합하여 텐서 묶음을 생성하고, 하나의 텐서 묶음에 포함된 하나 이상의 텐서의 접근 빈도와 수명을 결합하여 텐서 묶음의 접근 빈도와 수명을 산출할 수 있다(S620).
텐서 매니저(230)는, 복수의 텐서 묶음들 각각의 텐서 값 및 텐서 용량에 기초하여, 복수의 텐서 묶음들 각각을 복수의 메모리 노드들 각각으로 배치할 수 있고, 복수의 메모리 노드들 중에서 어느 하나에 기 배치된 텐서를 복수의 메모리 노드들 중에서 다른 하나로 이주시킬 수 있다(S630).
본 발명에 첨부된 블록도의 각 블록과 흐름도의 각 단계의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수도 있다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 인코딩 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 인코딩 프로세서를 통해 수행되는 그 인스트럭션들이 블록도의 각 블록 또는 흐름도의 각 단계에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방법으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 블록도의 각 블록 또는 흐름도 각 단계에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 블록도의 각 블록 및 흐름도의 각 단계에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록 또는 각 단계는 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실시예들에서는 블록들 또는 단계들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들 또는 단계들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들 또는 단계들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 품질에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 균등한 범위 내에 있는 모든 기술사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
100: 텐서 배치 장치
200: 텐서 배치 모델
210: 텐서 분석부
220: 텐서 결합부
230: 텐서 매니저
310: 접근 빈도 분석부
320: 수명 분석부

Claims (22)

  1. 복수의 노드들을 포함하는 기계학습 모델을 입력받는 단계;
    상기 복수의 노드들이 출력하는 복수의 텐서들 각각을 수신하는 노드들의 개수를 이용하여 상기 복수의 텐서들 각각의 접근 빈도(Hotness)를 결정하는 단계;
    상기 복수의 텐서들 중에서 동일한 메모리 버퍼를 사용하는 하나 이상의 텐서를 결합하여 텐서 묶음을 생성하는 단계;
    상기 텐서 묶음의 접근 빈도, 상기 텐서 묶음의 크기 및 상기 텐서 묶음의 배치 정책에 기초하여, 상기 텐서 묶음의 텐서 값 및 텐서 용량을 결정하는 단계; 및
    상기 텐서 값 및 상기 텐서 용량에 기초하여, 상기 텐서 묶음을 복수의 메모리 노드들 중에서 어느 하나로 배치하는 단계를 포함하는
    텐서를 메모리에 배치하는 방법.
  2. 제1 항에 있어서,
    상기 텐서 묶음을 복수의 메모리 노드들 중에서 어느 하나로 배치하는 단계는,
    상기 텐서 용량 대비 상기 텐서 값이 높은 순서대로 상기 텐서 묶음을 상기 복수의 메모리 노드들 중에서 고대역 메모리로 배치하는
    텐서를 메모리에 배치하는 방법.
  3. 제1 항에 있어서,
    상기 텐서 묶음의 접근 빈도는 상기 텐서 묶음에 포함된 상기 하나 이상의 텐서의 접근 빈도를 더하여 결정되는
    텐서를 메모리에 배치하는 방법.
  4. 제1 항에 있어서,
    상기 복수의 텐서들 각각의 실행 시간에 기초하여 상기 텐서 묶음의 수명(Lifetime)을 결정하는 단계를 더 포함하고,
    상기 텐서 묶음을 복수의 메모리 노드들 중에서 어느 하나로 배치하는 단계는,
    상기 텐서 묶음의 수명에 더 기초하여, 상기 텐서 묶음을 복수의 메모리 노드들 중에서 어느 하나로 배치하는
    텐서를 메모리에 배치하는 방법.
  5. 제4 항에 있어서,
    상기 텐서 묶음의 수명은,
    상기 복수의 텐서들 각각을 출력하는 할당 시간(Allocation time)과 상기 복수의 텐서들 각각을 마지막으로 실행하는 할당해제 시간(Deallocation time)을 이용하여 결정되는
    텐서를 메모리에 배치하는 방법.
  6. 제1 항에 있어서,
    상기 텐서 묶음의 텐서 값 및 텐서 용량을 결정하는 단계는,
    상기 텐서 묶음의 배치 정책에 따라 결정된 상기 텐서 묶음의 대역폭을 이용하여, 상기 텐서 묶음의 텐서 값을 결정하는
    텐서를 메모리에 배치하는 방법.
  7. 제1 항에 있어서,
    상기 텐서 묶음의 텐서 값 및 텐서 용량을 결정하는 단계는,
    상기 텐서 묶음의 배치 정책에 따라 결정되는 상기 복수의 메모리 노드들 중에서 고대역 메모리에 배치되는 상기 텐서 묶음의 크기를 이용하여, 상기 텐서 묶음의 텐서 용량을 결정하는
    텐서를 메모리에 배치하는 방법.
  8. 제1 항에 있어서,
    상기 텐서 묶음은 제1 슬라이스와 제2 슬라이스로 분할되고,
    상기 텐서 묶음을 복수의 메모리 노드들 중에서 어느 하나로 배치하는 단계는,
    상기 제1 슬라이스는 상기 복수의 메모리 노드들 중에서 고대역 메모리로 배치하고, 상기 제2 슬라이스는 상기 복수의 메모리 노드들 중에서 저대역 메모리로 배치하는
    텐서를 메모리에 배치하는 방법.
  9. 제1 항에 있어서,
    상기 복수의 메모리 노드들 중에서 어느 하나로 기 배치된 텐서 묶음의 텐서 값을 재결정하는 단계; 및
    상기 재결정된 텐서 묶음의 텐서 값에 기초하여 상기 기 배치된 텐서 묶음을 상기 복수의 메모리 노드들 중에서 다른 하나로 이주시킬지 여부를 결정하는 단계를 더 포함하는
    텐서를 메모리에 배치하는 방법.
  10. 제9 항에 있어서,
    상기 재결정된 텐서 묶음의 텐서 값 및 상기 기 배치된 텐서 묶음의 크기에 따라 텐서의 이주 비용과 이주 이득을 결정하는 단계; 및
    상기 텐서의 이주 비용과 이주 이득에 기초하여, 상기 기 배치된 텐서 묶음 전체를 상기 복수의 메모리 노드들 중에서 다른 하나로 이주시킬지 또는 상기 기 배치된 텐서 묶음에 포함된 슬라이스들 중에서 하나만 상기 복수의 메모리 노드들 중에서 다른 하나로 이주시킬지 여부를 결정하는 단계를 더 포함하는
    텐서를 메모리에 배치하는 방법.
  11. 텐서를 메모리에 배치하는 텐서 배치 장치에 있어서,
    복수의 노드들을 포함하는 기계학습 모델을 입력받는 입출력기;
    복수의 메모리 노드들을 포함하는 메모리부; 및
    상기 입출력기 및 상기 메모리부를 제어하는 프로세서를 포함하고,
    상기 프로세서는,
    상기 복수의 노드들이 출력하는 복수의 텐서들을 수신하는 노드들의 개수를 이용하여 상기 복수의 텐서들 각각의 접근 빈도(Hotness)를 결정하고,
    상기 복수의 텐서들 중에서 동일한 메모리 버퍼를 사용하는 하나 이상의 텐서를 결합하여 텐서 묶음을 생성하고,
    상기 텐서 묶음의 접근 빈도, 상기 텐서 묶음의 크기 및 상기 텐서 묶음의 배치 정책에 기초하여, 상기 텐서 묶음의 텐서 값 및 텐서 용량을 결정하고,
    상기 텐서 값 및 상기 텐서 용량에 기초하여, 상기 텐서 묶음을 상기 복수의 메모리 노드들 중에서 어느 하나로 배치하는
    텐서 배치 장치.
  12. 제11 항에 있어서,
    상기 프로세서는,
    상기 텐서 용량 대비 상기 텐서 값이 높은 순서대로 상기 텐서 묶음을 상기 복수의 메모리 노드들 중에서 고대역 메모리로 배치하는
    텐서 배치 장치.
  13. 제11 항에 있어서,
    상기 텐서 묶음의 접근 빈도는 상기 텐서 묶음에 포함된 상기 하나 이상의 텐서의 접근 빈도를 더하여 결정되는
    텐서 배치 장치.
  14. 제11 항에 있어서,
    상기 프로세서는,
    상기 복수의 텐서들 각각의 실행 시간에 기초하여 상기 텐서 묶음의 수명(Lifetime)을 결정하고,
    상기 텐서 묶음의 수명에 더 기초하여, 상기 텐서 묶음을 복수의 메모리 노드들 중에서 어느 하나로 배치하는
    텐서 배치 장치.
  15. 제14 항에 있어서,
    상기 텐서 묶음의 수명은,
    상기 복수의 텐서들 각각을 출력하는 할당 시간(Allocation time)과 상기 복수의 텐서들 각각을 마지막으로 실행하는 할당해제 시간(Deallocation time)을 이용하여 결정되는
    텐서를 메모리에 배치하는 방법.
  16. 제11 항에 있어서,
    상기 프로세서는,
    상기 텐서 묶음의 배치 정책에 따라 결정된 상기 텐서 묶음의 대역폭을 이용하여, 상기 텐서 묶음의 텐서 값을 결정하는
    텐서 배치 장치.
  17. 제11 항에 있어서,
    상기 프로세서는,
    상기 텐서 묶음의 배치 정책에 따라 결정되는 상기 복수의 메모리 노드들 중에서 고대역 메모리에 배치되는 상기 텐서 묶음의 크기를 이용하여, 상기 텐서 묶음의 텐서 용량을 결정하는
    텐서 배치 장치.
  18. 제11 항에 있어서,
    상기 텐서 묶음은 제1 슬라이스와 제2 슬라이스로 분할되고,
    상기 프로세서는,
    상기 제1 슬라이스는 상기 복수의 메모리 노드들 중에서 고대역 메모리로 배치하고, 상기 제2 슬라이스는 상기 복수의 메모리 노드들 중에서 저대역 메모리로 배치하는
    텐서 배치 장치.
  19. 제11 항에 있어서,
    상기 프로세서는,
    상기 텐서 묶음이 상기 복수의 메모리 노드들 중에서 어느 하나로 배치된 후 특정 시점에서의 상기 텐서 묶음의 텐서 값을 재결정하고,
    재결정된 상기 텐서 묶음의 텐서 값에 기초하여 상기 텐서 묶음을 상기 복수의 메모리 노드들 중에서 다른 하나로 이주시킬지 여부를 결정하는
    텐서 배치 장치.
  20. 제19 항에 있어서,
    상기 프로세서는,
    재결정된 상기 텐서 묶음의 텐서 값 및 상기 텐서 묶음의 크기에 따라 텐서의 이주 비용과 이주 이득을 결정하고,
    상기 텐서의 이주 비용과 이주 이득에 기초하여, 상기 텐서 묶음 전체를 상기 복수의 메모리 노드들 중에서 다른 하나로 이주시킬지 또는 상기 텐서 묶음에 포함된 슬라이스들 중에서 하나만 상기 복수의 메모리 노드들 중에서 다른 하나로 이주시킬지 여부를 결정하는
    텐서 배치 장치.
  21. 컴퓨터 프로그램을 저장하고 있는 컴퓨터 판독 가능 기록매체로서,
    상기 컴퓨터 프로그램은,
    제1 항 내지 제10 항 중 어느 한 항에 따른 방법을 프로세서가 수행하도록 하기 위한 명령어를 포함하는
    컴퓨터 판독 가능한 기록매체.
  22. 컴퓨터 판독 가능한 기록매체에 저장되어 있는 컴퓨터 프로그램으로서,
    상기 컴퓨터 프로그램은,
    제1 항 내지 제10 항 중 어느 한 항에 따른 방법을 프로세서가 수행하도록 하기 위한 명령어를 포함하는
    컴퓨터 프로그램.
KR1020200106235A 2020-08-24 2020-08-24 텐서를 메모리 노드들에 배치하는 방법 및 상기 방법을 수행하는 장치 KR102400971B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200106235A KR102400971B1 (ko) 2020-08-24 2020-08-24 텐서를 메모리 노드들에 배치하는 방법 및 상기 방법을 수행하는 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200106235A KR102400971B1 (ko) 2020-08-24 2020-08-24 텐서를 메모리 노드들에 배치하는 방법 및 상기 방법을 수행하는 장치

Publications (2)

Publication Number Publication Date
KR20220025482A true KR20220025482A (ko) 2022-03-03
KR102400971B1 KR102400971B1 (ko) 2022-05-23

Family

ID=80818855

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200106235A KR102400971B1 (ko) 2020-08-24 2020-08-24 텐서를 메모리 노드들에 배치하는 방법 및 상기 방법을 수행하는 장치

Country Status (1)

Country Link
KR (1) KR102400971B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20240063305A (ko) 2022-11-02 2024-05-10 한국생산기술연구원 표면 및 파괴 거동 분석 장치

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030059425A (ko) * 2001-12-29 2003-07-10 삼성테크윈 주식회사 고주기 피로 수명 해석 방법
KR20110102452A (ko) * 2009-01-05 2011-09-16 마벨 월드 트레이드 리미티드 Mimo 통신 시스템을 위한 프리코딩 코드북들
KR20160008509A (ko) * 2013-03-18 2016-01-22 더 트러스티스 오브 컬럼비아 유니버시티 인 더 시티 오브 뉴욕 하드웨어 특징들을 사용한 이상 프로세스들의 비감시된 검출
KR101893475B1 (ko) * 2018-03-14 2018-10-04 마인드서프 주식회사 멀티레이어 시각화 표현을 위한 인공지능 기반의 네트워크 모니터링 방법
KR20190078478A (ko) * 2017-12-26 2019-07-04 삼성전자주식회사 고대역폭 메모리 시스템에서 호스트-기반 및 클라이언트-기반 명령어 스케줄링

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030059425A (ko) * 2001-12-29 2003-07-10 삼성테크윈 주식회사 고주기 피로 수명 해석 방법
KR20110102452A (ko) * 2009-01-05 2011-09-16 마벨 월드 트레이드 리미티드 Mimo 통신 시스템을 위한 프리코딩 코드북들
KR20160008509A (ko) * 2013-03-18 2016-01-22 더 트러스티스 오브 컬럼비아 유니버시티 인 더 시티 오브 뉴욕 하드웨어 특징들을 사용한 이상 프로세스들의 비감시된 검출
KR20190078478A (ko) * 2017-12-26 2019-07-04 삼성전자주식회사 고대역폭 메모리 시스템에서 호스트-기반 및 클라이언트-기반 명령어 스케줄링
KR101893475B1 (ko) * 2018-03-14 2018-10-04 마인드서프 주식회사 멀티레이어 시각화 표현을 위한 인공지능 기반의 네트워크 모니터링 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20240063305A (ko) 2022-11-02 2024-05-10 한국생산기술연구원 표면 및 파괴 거동 분석 장치

Also Published As

Publication number Publication date
KR102400971B1 (ko) 2022-05-23

Similar Documents

Publication Publication Date Title
Viswanathan et al. {CLARINET}:{WAN-Aware} Optimization for Analytics Queries
US8893148B2 (en) Performing setup operations for receiving different amounts of data while processors are performing message passing interface tasks
KR102184280B1 (ko) 동적 파티셔닝을 이용한 데이터 프로세싱
JP6669961B2 (ja) プロセッサ、再構成可能回路の制御方法及びプログラム
KR101471749B1 (ko) 클라우드 서비스의 가상자원 할당을 위한 퍼지 로직 기반의 자원평가 장치 및 방법
KR20150075499A (ko) 멀티코어 시스템의 시스템 성능 최적화 장치 및 방법
US20200201763A1 (en) Memory hierarchy-aware processing
KR102110812B1 (ko) 멀티 코어 시스템 및 멀티 코어 시스템의 작업 스케줄링 방법
KR20140134190A (ko) 멀티 코어 시스템 및 멀티 코어 시스템의 작업 스케줄링 방법
KR102594657B1 (ko) 비순차적 리소스 할당을 구현하는 방법 및 장치
CN107273200B (zh) 一种针对异构存储的任务调度方法
KR20200091789A (ko) Gpu 연산의 동시 실행을 위한 플랫폼
JP2015149038A (ja) 演算制御装置及び演算制御方法並びにプログラム、OpenCLデバイス
CN112463390A (zh) 一种分布式任务调度方法、装置、终端设备及存储介质
KR102400971B1 (ko) 텐서를 메모리 노드들에 배치하는 방법 및 상기 방법을 수행하는 장치
JPWO2012127641A1 (ja) 情報処理システム
CN111352735A (zh) 数据加速方法、装置、存储介质及设备
Liu et al. Funcpipe: A pipelined serverless framework for fast and cost-efficient training of deep learning models
US20210390405A1 (en) Microservice-based training systems in heterogeneous graphic processor unit (gpu) cluster and operating method thereof
WO2021115082A1 (zh) 作业调度方法以及作业调度装置
WO2011078162A1 (ja) スケジューリング装置、スケジューリング方法及びプログラム
US20180246806A1 (en) Memory management in multi-processor environments
WO2024022142A1 (zh) 资源使用方法和装置
KR20210103393A (ko) 낮은-지역성 데이터에서 높은-지역성 데이터로의 변환을 관리하기 위한 시스템 및 방법
US8090762B2 (en) Efficient super cluster implementation for solving connected problems in a distributed environment

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant