KR102372423B1 - 파라미터 공유 장치 및 방법 - Google Patents

파라미터 공유 장치 및 방법 Download PDF

Info

Publication number
KR102372423B1
KR102372423B1 KR1020170060400A KR20170060400A KR102372423B1 KR 102372423 B1 KR102372423 B1 KR 102372423B1 KR 1020170060400 A KR1020170060400 A KR 1020170060400A KR 20170060400 A KR20170060400 A KR 20170060400A KR 102372423 B1 KR102372423 B1 KR 102372423B1
Authority
KR
South Korea
Prior art keywords
parameter
memory
mapping table
memory box
box
Prior art date
Application number
KR1020170060400A
Other languages
English (en)
Other versions
KR20180125734A (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 KR1020170060400A priority Critical patent/KR102372423B1/ko
Priority to US15/979,169 priority patent/US10585726B2/en
Publication of KR20180125734A publication Critical patent/KR20180125734A/ko
Application granted granted Critical
Publication of KR102372423B1 publication Critical patent/KR102372423B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Biomedical Technology (AREA)
  • Computer Hardware Design (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Medical Informatics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Neurology (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

파라미터 공유 장치 및 방법이 개시된다. 본 발명의 일실시예에 따른 파라미터 공유 장치는 메모리 박스에 파라미터가 저장될 메모리 영역의 할당 관리를 수행하고, 상기 메모리 영역의 할당 관리에 따라 상기 메모리 박스에 저장된 매핑 테이블을 업데이트 하는 메모리 할당부 및 상기 파라미터가 저장될 메모리 영역의 할당 관리를 위한 파라미터 정보를 상기 메모리 할당부에 제공하고, 상기 메모리 박스에 저장된 파라미터를 공유하는 연산 처리부를 포함한다.

Description

파라미터 공유 장치 및 방법 {APPARATUS FOR SHARING PARAMETER AND METHOD FOR USING THE SAME}
본 발명은 파라미터 기술에 관한 것으로, 보다 상세하게는 분산 딥러닝을 위한 워커 장치들이 딥러닝 모델 파라미터를 공유하기 위한 기술에 관한 것이다.
최근 이미지 인식, 음성 인식, 자연어 처리의 발전에 기여하며 주목 받고 있는 딥러닝 모델은 사람의 신경세포(Biological Neuron)를 모사하여 기계가 학습하도록 하는 인공신경망 (Artificial Neural Network) 기반의 기계 학습법이다.
최근 딥러닝 모델들은 응용의 인식 성능을 높이기 위해 모델의 계층이 깊어지고(Deep), 특징(피쳐)이 많아지는 대규모 모델로 진화하고 있다. 딥러닝 모델의 규모가 커지고 입력 데이터의 양이 많아질수록 학습할 파라미터가 많아지고 계산량도 늘어난다. 이에 따라 많은 컴퓨터가 필요하며 분산 시스템에서 병렬적으로 연산하면 학습을 가속화 할 수 있다.
딥러닝 학습의 분산 병렬 처리 시에 매 학습과정이 반복될 때마다 각 분산 컴퓨터 장치(워커 장치)들이 계산한 파라미터를 서로 공유할 수 있다. 많은 분산 딥러닝 시스템에서는 중앙 집중형 파라미터 서버를 이용하여 파라미터를 공유한다. 파라미터 서버는 매 학습과정 마다 각 워커 장치에서 학습된 파라미터를 수집하고 종합하여 다시 워커 장치들에게 나누어주는 역할을 한다.
분산 학습된 파라미터를 업데이트하는 시점에 따라서 동기식 방식과 비동기식 방식으로 나눌 수 있다. 동기식 업데이트의 경우는 모든 워커 장치가 한 학습과정을 마친 시점에 파라미터 서버와 통신하여 파라미터를 업데이트 하는 방식으로써, 여러 워커 장치들 중에서 연산 속도가 가장 느린 워커 장치에 의해서 전체 학습 성능이 결정되게 된다. 비동기식 업데이트 방식은 파라미터 서버가 컴퓨터들로부터 늦거나 빨리 도착하는 파라미터들의 동기를 맞추지 않고 학습을 진행하는 방식이다. 비동기식 방식은 동기식 방식에 비해 정확성을 크게 희생시키지 않으면서 빠르게 트레이닝 할 수 있는 장점이 있어서, 최근 분산 딥러닝 학습에서는 비동기식 방식을 많이 채택하고 있다.
분산 딥러닝 학습에서 워커 장치가 많아질수록 병렬도가 높아지므로 연산 속도는 빨라지지만 연산된 결과를 파라미터 서버와 통신하는데 걸리는 시간이 상대적으로 늘어나게 된다. 파라미터 서버와의 통신 속도가 느릴 경우에 전체 학습 성능이 저하될 수 있다. 따라서 분산 병렬 환경에서 딥러닝 모델을 학습할 때 파라미터 교환 시간이 중요한 요소라고 볼 수 있다.
한편, 한국공개특허 제 10-2012-0140104 호"메모리의 데이터 저장 방법"는 메모리의 데이터 저장 방법에 관한 것으로서, 더욱 상세하게는 차량의 제어기 등에서 각 변수 조건에 따라 연산된 학습치를 메모리 영역에 효율적으로 저장할 수 있는 메모리의 데이터 저장 방법에 관하여 개시하고 있다.
그러나, 한국공개특허 제 10-2012-0140104 호는 학습치(파라미터)를 메모리에 효율적으로 저장하기 위한 것으로, 메모리에 저장된 파라미터를 다수의 워커 장치들이 효과적으로 공유하는 측면에 대해서는 침묵하고 있다.
본 발명은 분산 딥러닝 학습에서 다수의 워커 장치들 간의 파라미터 공유를 위해서 파라미터 서버를 사용하는 대신에, 공유 메모리 장치인 메모리 박스의 공유 메모리를 통해서 파라미터를 공유하도록 하여 딥러닝 학습을 가속화하는 것을 목적으로 한다.
파라미터 서버와 워커들은 컴퓨터 간의 통신 네트워크(예를 들어, 이더넷(Ethernet))를 통해서 요청-응답(request-response) 방식으로 파라미터를 송수신한다. 다시 말해서, 워커가 파라미터 값을 필요로 할 때는, 파라미터 서버에게 파라미터 값에 대한 요청 메시지를 전송하고, 파라미터 서버는 자신의 메인 메모리로부터 파라미터 값을 읽어와서 요청에 대한 응답으로 워커에게 전송한다. 반대로, 워커가 파라미터 값을 업데이트하고자 할 때는, 파라미터 차분값 또는 파라미터 수정값을 포함한 파라미터 업데이트 요청 메시지를 파라미터 서버에게 전송하고, 파라미터 서버는 받은 값을 이용하여 메인 메모리에 저장된 파라미터의 값을 업데이트하고 워커에게 응답 메시지를 전송한다.
분산 딥러닝 학습을 수행할 때 다수의 분산 워커 간에 대규모 파라미터 송수신이 빈번하게 발생하는데, 상기에서 기술한 방식대로 파라미터 서버를 이용하면 네트워크를 통한 통신 오버헤드가 크게 발생하고, 워커와 파라미터 서버에서 메시지 처리 시간도 크게 나타날 수 있다. 따라서, 이보다 개선된 방식이 필요하다.
그에 반해서 메모리 박스는 독립적인(stand-alone) 컴퓨터가 아니고, 컴퓨터에 장착하여 사용 할 수 있는 하나의 장치(device)이다. 메모리 박스는 대용량의 메모리를 보유하고 PCIe와 같은 시스템 버스를 통해서 컴퓨터에 연결된다. 따라서, 파라미터 서버에 비해서 매우 빠른 속도로 데이터를 제공할 수 있다. 또한, 메모리 박스는 다수의 연결 커넥터를 보유하고 있어서, 동시에 다수의 워커와 연결되어 그들로부터 공유될 수 있다. 메모리 박스가 보유한 대규모 메모리는 다수의 워커들이 공유 메모리로 사용할 수 있다.
파라미터 서버와 메모리 박스는 이러한 차이점으로 인해서 사용 방법이 크게 다르다. 메모리 박스는 컴퓨터 장치이므로 이를 사용할 때 워커가 주도적(active)으로 동작한다. 다시 말해서, 워커가 메모리 박스로부터 데이터를 리드(read)하여 파라미터 값을 가져 가고, 반대로 메모리 박스에 데이터를 라이트(write)하여 파라미터 값을 저장할 수 있다. 또한, 분산 워커들이 공유 메모리를 활용하여 딥러닝 파라미터를 공유하기 위해서는 새로운 파라미터 공유 방법이 필요하다.
이러한 특징들로 인하여 기존의 파라미터 서버를 사용하던 분산 딥러닝 프레임워크로는 메모리 박스를 이용할 수 없다. 메모리 박스를 이용하여 파라미터를 공유하면 메모리 박스의 빠른 접근 속도로 인해서 딥러닝 학습을 가속화 할 수 있다. 그러나, 메모리 박스를 이용하기 위해서는 분산 딥러닝 프레임워크가 메모리 박스를 통하여 파라미터를 공유하도록 수정되어야 한다.
따라서, 상기와 같은 이유로 인해서 본 발명의 목적은, 분산 딥러닝 학습에서 다수의 워커 장치들이 메모리 박스의 공유 메모리를 통해서 파라미터를 공유할 수 있는, 파라미터 공유 장치 및 방법을 제공하는데 있다.
또한, 본 발명은 분산 딥러닝 학습에서 파라미터 서버를 메모리 박스로 대체 지원함에 있어서 딥러닝 프레임워크가 가진 원래의 기능과 사용자가 사용하는 딥러닝 모델 개발 및 학습 인터페이스에 수정을 가하지 않고, 다수의 워커 장치가 투명하게 메모리 박스를 통해 파라미터를 공유하는 것을 목적으로 한다.
상기한 목적을 달성하기 위한 본 발명의 일실시예에 따른 파라미터 공유 방법은 파라미터 공유 장치를 이용하는 방법에 있어서, 메모리 박스에 저장될 파라미터의 메모리 영역을 할당하기 위한 파라미터 정보를 수신하는 단계; 상기 메모리 박스의 매핑 테이블에 잠금을 걸고, 매핑 테이블을 읽어오는 단계; 상기 파라미터 정보에 기반하여 상기 매핑 테이블에서 상기 메모리 박스에 파라미터를 저장할 메모리 영역의 할당 여부를 확인하는 단계; 상기 메모리 영역의 할당 여부에 따라 매핑 정보를 수정한 매핑 테이블을 상기 메모리 박스에 쓰고, 상기 매핑 테이블의 잠금을 해제하는 단계 및 상기 메모리 영역을 할당한 메모리 주소를 고려하여 상기 파라미터를 공유하는 단계를 포함한다.
이 때, 상기 수신하는 단계는 상기 파라미터의 파라미터 식별자 및 파라미터 크기 중 적어도 하나를 포함하는 파라미터 정보를 수신할 수 있다.
이 때, 파라미터 크기는 파라미터를 저장하기 위해 필요한 메모리 크기일 수 있다.
이 때, 상기 매핑 테이블은 각각의 엔트리에 파라미터의 식별자, 메모리 영역에 대한 메모리 주소 및 참조 카운트를 포함하는 매핑 정보가 기록될 수 있다.
이 때, 상기 할당 여부를 확인하는 단계는 상기 매핑 테이블의 엔트리를 확인하여 상기 메모리 박스에 상기 파라미터의 메모리 영역이 기 할당되어 있는 경우, 상기 매핑 테이블에 상기 파라미터에 상응하는 엔트리에 참조 카운트를 증가시켜 상기 매핑 테이블을 업데이트 할 수 있다.
이 때, 상기 할당 여부를 확인하는 단계는 상기 매핑 테이블의 엔트리를 확인하여 상기 메모리 박스에 상기 파라미터의 메모리 영역이 할당되지 않은 경우, 상기 파라미터 크기만큼 상기 메모리 박스에 메모리 영역을 할당하고, 상기 메모리 영역이 할당된 파라미터에 대한 매핑 정보를 상기 매핑 테이블의 새로운 엔트리에 추가하여 상기 매핑 테이블을 업데이트 할 수 있다.
이 때, 상기 매핑 테이블의 잠금을 해제하는 단계는 상기 메모리 영역이 할당된 파라미터에 대한 상기 메모리 박스의 메모리 주소를 상기 파라미터 공유 장치에 기록할 수 있다.
이 때, 상기 공유하는 단계는 상기 파라미터 공유 장치에 기록된 메모리 주소를 참조하여 상기 메모리 박스에 저장된 파라미터 값을 읽어오는(read) 단계; 모델 알고리즘을 이용하여 상기 메모리 박스의 파라미터 값에 상응하는 파라미터 차분 값을 계산하는 단계 및 상기 파라미터 차분 값을 이용하여 상기 메모리 박스의 파라미터 값을 수정하는 단계를 포함할 수 있다.
이 때, 상기 파라미터 값을 수정하는 단계는 상기 메모리 박스가 합저장 기능 수행이 가능한 경우, 상기 파라미터 차분 값을 이용하여 상기 메모리 박스의 합저장 기능을 통해 상기 메모리 박스의 파라미터 값을 수정할 수 있다.
이 때, 상기 파라미터 값을 수정하는 단계는 상기 메모리 박스가 합저장 기능 수행이 불가능한 경우, 상기 메모리 박스로부터 파라미터 값을 다시 읽어오고(read), 상기 파라미터 차분 값과 다시 읽어온 파라미터 값을 이용하여 산출한 파라미터 수정 값을 상기 메모리 박스에 쓸 수 있다(write).
또한, 상기한 목적을 달성하기 위한 본 발명의 일실시예에 따른 파라미터 공유 방법은 파라미터 공유 장치를 이용하는 방법에 있어서, 메모리 박스에 파라미터가 저장된 메모리 영역을 해제하기 위한 파라미터 정보를 수신하는 단계; 상기 메모리 박스의 매핑 테이블에 잠금을 걸고, 매핑 테이블을 읽어오는 단계; 상기 매핑 테이블에 기반하여 상기 메모리 박스에 상기 파라미터가 할당된 메모리 영역의 해제 여부를 확인하는 단계; 상기 메모리 영역의 해제 여부에 따라 매핑 정보를 수정한 매핑 테이블을 상기 메모리 박스에 쓰고, 상기 매핑 테이블의 잠금을 해제하는 단계 및 상기 메모리 영역을 해제한 메모리 주소를 고려하여 상기 파라미터를 공유하는 단계를 포함한다.
이 때, 상기 수신하는 단계는 상기 파라미터의 파라미터 식별자 및 상기 파라미터가 저장된 메모리 영역에 대한 메모리 주소 중 적어도 하나를 포함하는 파라미터 정보를 수신할 수 있다.
이 때, 상기 매핑 테이블은 각각의 엔트리에 파라미터의 식별자, 메모리 영역에 대한 메모리 주소 및 참조 카운트를 포함하는 매핑 정보가 기록될 수 있다.
이 때, 상기 읽어오는 단계는 상기 매핑 테이블에 상기 파라미터에 상응하는 엔트리에 참조 카운트를 감소시켜 상기 매핑 테이블을 업데이트 하는 단계 및 상기 파라미터 공유 장치에 기록된 상기 파라미터에 상응하는 메모리 주소를 삭제하는 단계를 포함할 수 있다.
이 때, 상기 해제 여부를 확인하는 단계는 상기 매핑 테이블의 참조 카운트가 최소값인 경우, 상기 메모리 박스에 할당된 메모리 영역을 해제하고, 상기 메모리 영역에 상응하는 매핑 테이블의 엔트리를 삭제할 수 있다.
이 때, 상기 공유하는 단계는 상기 파라미터 공유 장치에 기록된 메모리 주소를 참조하여 상기 메모리 박스에 저장된 파라미터 값을 읽어오는(read) 단계; 모델 알고리즘을 이용하여 상기 메모리 박스의 파라미터 값에 상응하는 파라미터 차분 값을 계산하는 단계 및 상기 파라미터 차분 값을 이용하여 상기 메모리 박스의 파라미터 값을 수정하는 단계를 포함할 수 있다.
이 때, 상기 파라미터 값을 수정하는 단계는 상기 메모리 박스가 합저장 기능 수행이 가능한 경우, 상기 파라미터 차분 값을 이용하여 상기 메모리 박스의 합저장 기능을 통해 상기 메모리 박스의 파라미터 값을 수정할 수 있다.
이 때, 상기 파라미터 값을 수정하는 단계는 상기 메모리 박스가 합저장 기능 수행이 불가능한 경우, 상기 메모리 박스로부터 파라미터 값을 다시 읽어오고(read), 상기 파라미터 차분 값과 다시 읽어온 파라미터 값을 이용하여 산출한 파라미터 수정 값을 상기 메모리 박스에 쓸 수 있다(write).
또한, 상기한 목적을 달성하기 위한 본 발명의 일실시예에 따른 파라미터 공유 장치는 메모리 박스에 파라미터가 저장될 메모리 영역의 할당 관리를 수행하고, 상기 메모리 영역의 할당 관리에 따라 상기 메모리 박스에 저장된 매핑 테이블을 업데이트 하는 메모리 할당부 및 상기 파라미터가 저장될 메모리 영역의 할당 관리를 위한 파라미터 정보를 상기 메모리 할당부에 제공하고, 상기 메모리 박스에 저장된 파라미터를 공유하는 연산 처리부를 포함한다.
이 때, 상기 메모리 할당부는 상기 연산 처리부로부터 상기 메모리 영역의 할당 관리를 위한 상기 파라미터 정보를 수신하는 파라미터 정보 수신부; 상기 메모리 박스의 잠금을 관리하고, 상기 매핑 테이블을 업데이트하는 매핑 테이블 관리부 및 상기 매핑 테이블의 참조 카운트를 수정하여, 상기 메모리 영역의 할당 관리를 수행하는 공유 메모리 관리부를 포함할 수 있다.
이 때, 상기 메모리 할당부는 상기 참조 카운트에 따라 상기 메모리 영역에서 파라미터를 공유 중인 다른 파라미터 공유 장치의 개수를 확인할 수 있다.
이 때, 상기 메모리 박스는 상기 연산 처리부의 파라미터 값 수정 요청에 따라 합저장 기능을 이용하여 상기 메모리 박스에 저장된 파라미터 값을 업데이트할 수 있다.
본 발명은 분산 딥러닝 학습에서 다수의 워커 장치들이 파라미터를 공유하기 위해서 파라미터 서버를 사용하는 대신에, 공유 메모리 장치인 메모리 박스에서 제공하는 공유 메모리를 통해서 파라미터를 공유할 수 있다.
또한, 본 발명은 통신 메시지 형태가 아니라 로컬 메모리 접근 방식으로 파라미터를 송수신 함으로써 통신 오버헤드 경감 및 메시지 처리 시간 감축을 통해서 딥러닝 학습을 가속화할 수 있다.
또한, 본 발명은 분산 딥러닝 학습에서 파라미터 서버를 메모리 박스로 대체 지원함에 있어서 딥러닝 프레임워크가 가진 원래의 기능과 사용자가 사용하는 딥러닝 모델 개발 및 학습 인터페이스에 수정을 가하지 않고, 다수의 워커 장치가 투명하게 메모리 박스를 통해 파라미터를 공유할 수 있다.
도 1은 본 발명의 일실시예에 따른 분산 딥러닝 프레임워크를 나타낸 블록도이다.
도 2는 도 1에 도시된 메모리 박스의 일 예를 세부적으로 나타낸 블록도이다.
도 3은 본 발명의 일실시예에 따른 파라미터 공유 장치를 나타낸 블록도이다.
도 4는 도 3에 도시된 메모리 박스 접근부의 일 예를 세부적으로 나타낸 블록도이다.
도 5는 도 2 및 도 4에 도시된 메모리 박스 접근부와 메모리 박스의 일 예를 세부적으로 나타낸 블록도이다.
도 6은 본 발명의 일실시예에 따른 분산 딥러닝 프레임워크에서 파라미터 공유를 나타낸 도면이다.
도 7은 본 발명의 일실시예에 따른 메모리 영역 할당을 위한 파라미터 공유 방법을 나타낸 동작흐름도이다.
도 8은 본 발명의 일실시예에 따른 메모리 영역 해제를 위한 파라미터 공유 방법을 나타낸 동작흐름도이다.
도 9는 본 발명의 일실시예에 따른 메모리 박스가 합저장 기능 수행이 가능한 경우, 합저장 기능을 이용한 파라미터 공유 방법을 나타낸 시퀀스 다이어그램이다.
도 10은 본 발명의 일실시예에 따른 메모리 박스가 합저장 기능 수행이 불가능한 경우, 파라미터 공유 방법을 나타낸 시퀀스 다이어그램이다.
본 발명을 첨부된 도면을 참조하여 상세히 설명하면 다음과 같다. 여기서, 반복되는 설명, 본 발명의 요지를 불필요하게 흐릴 수 있는 공지 기능, 및 구성에 대한 상세한 설명은 생략한다. 본 발명의 실시형태는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위해서 제공되는 것이다. 따라서, 도면에서의 요소들의 형상 및 크기 등은 보다 명확한 설명을 위해 과장될 수 있다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성 요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
이하, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 본 발명의 일실시예에 따른 분산 딥러닝 프레임워크를 나타낸 블록도이다. 도 2는 도 1에 도시된 메모리 박스의 일 예를 세부적으로 나타낸 블록도이다. 도 3은 본 발명의 일실시예에 따른 파라미터 공유 장치를 나타낸 블록도이다. 도 4는 도 3에 도시된 메모리 박스 접근부의 일 예를 세부적으로 나타낸 블록도이다.
도 1을 참조하면, 본 발명의 일실시예에 따른 분산 딥러닝 프레임워크는 복수개의 파라미터 공유 장치(10, 20, 30)들과 메모리 박스(1)로 구성된다.
파라미터 공유 장치(10, 20, 30)들은 분산 딥러닝의 워커 장치라 불리는 독립적인 컴퓨터 장치에 상응할 수 있다.
이 때, 파라미터 공유 장치(10, 20, 30)들은 메모리 박스(1)에 딥러닝 파라미터를 저장하고, 메모리 박스(1)에 저장된 딥러닝 파라미터를 공유하여 서로 협력적으로 학습할 수 있다.
메모리 박스(1)는 전용 하드웨어로 구현된 공유 메모리 장치(device)에 상응할 수 있으며, 보다 빠르게 데이터를 저장하고 공유할 수 있다. 메모리 박스(1)는 다중 머신 간에 데이터를 저지연, 고속으로 공유 가능하게 하는 FPGA 통신 가속 공유 메모리 장치에 상응할 수 있다.
메모리 박스(1)는 각 머신에 연결 가능한 PCIe 기반의 다수의 연결 커넥터를 보유하고 있어서, 각 머신에서 로컬 디바이스처럼 접근할 수 있으며 다중 머신에서 동시에 접근 할 수 있고, 대용량의 메모리를 가질 수 있다.
또한, 메모리 박스(1)는 일반적인 네트워크보다 빠른 속도로 데이터를 리드(read)하거나 라이트(write)할 수 있다. 컴퓨터 노드에서는 DMA나 PIO 방식을 통해서 메모리 박스에 데이터를 읽거나 쓸 수 있다. 응용 프로그램은 메모리 박스의 디바이스 드라이버와 그 상위에 위치한 라이브러리를 통해서 메모리 박스(1)를 사용할 수 있다. 딥러닝 모델의 분산 병렬 학습에 있어서 메모리 박스(1)를 이용하면 워커 장치들 간에 파라미터를 저지연, 고속으로 공유할 수 있다.
또한, 메모리 박스(1)는 데이터의 합저장(AssignAdd) 기능을 보유할 수도 있어서 딥러닝 파라미터를 효과적으로 업데이트 할 수 있다.
도 2를 참조하면, 본 발명의 일실시예에 따른 메모리 박스(1)는 매핑 테이블 저장부(1a)와 파라미터 저장부(1b)를 포함한다.
메모리 박스(1)는 매핑 테이블 저장부(1a)와 파라미터 저장부(1b)를 통해서 공유 메모리에 매핑 테이블과 딥러닝 파라미터를 저장할 수 있다.
매핑 테이블은 각각의 엔트리에 파라미터의 식별자, 메모리 영역에 대한 메모리 주소 및 참조 카운트를 포함하는 매핑 정보가 기록될 수 있다.
이 때, 매핑 테이블 저장부(1a)는 메모리 박스(1)와 파라미터를 공유하는 파라미터 공유 장치들(10, 20, 30)에 상응하는 각각의 매핑 정보를 기록할 수도 있다.
도 3을 참조하면, 본 발명의 일실시예에 따른 파라미터 공유 장치 1(10)는 딥러닝 모델 복제부(11), 분산 딥러닝 학습 엔진부(12), CPU 장치 접근부(13), GPU 장치 접근부(14) 및 메모리 박스 접근부(100)를 포함할 수 있다.
딥러닝 모델 복제부(11)는 파라미터를 학습할 수 있다.
분산 딥러닝 학습 엔진부(12)는 딥러닝 모델 복제부(11)를 실행시키는 하부 엔진으로서, 메모리 박스(1)를 로컬에 위치한 독립적인 장치로 인식하여 메모리 박스 접근부(100)를 통해 메모리 박스(1)에 파라미터를 저장하거나, 메모리 박스(1)로부터 파라미터를 읽어와서 학습을 진행할 수 있다.
CPU 장치 접근부(13)는 CPU 에 접근할 수 있다.
GPU 장치 접근부(14)는 GPU 에 접근할 수 있다.
메모리 박스 접근부(100)는 메모리 박스(1)에 접근할 수 있다.
CPU와 GPU는 계산 연산을 실행하는데 반해서 메모리 박스(1)는 계산 연산이 아니라 파라미터를 저장하기 위한 용도로 사용될 수 있다.
메모리 박스 접근부(100)는 메모리 박스 장치 드라이버 또는 장치 드라이버의 상위에 위치한 메모리 박스 장치 라이브러리에서 제공하는 인터페이스를 통해서 메모리 박스(1)가 제공하는 기능을 이용할 수 있다.
다시 말해서, 메모리 박스 접근부(100)는 메모리 박스(1)에서 제공하는 공유 메모리에 읽기, 쓰기, 잠금 걸기, 잠금 해제, 합저장 등의 기능을 이용할 수 있다.
CPU, GPU는 각 워커 장치들이 포함하는 구성이지만, 메모리 박스(1)는 여러 워커 장치들이 공유할 수 있다. 이 때, 메모리 박스 접근부(100)는 워커 장치들이 동일한 파라미터에 접근하는 경우, 동일한 메모리 주소에 접근하도록 하여 파라미터를 공유할 수 있다.
이 때, 메모리 박스 접근부(100)는 모듈화되어 메모리 박스(1)와의 파라미터 공유를 위하여 기존의 워커 장치에 연결시켜 사용될 수 있다.
즉, 메모리 박스 접근부(100)는 워커 장치에 연결시켜 메모리 박스(1)기반 분산형 딥러닝 파라미터를 공유하기 위한 파라미터 공유 장치 1(10)에 상응할 수도 있다.
도 4를 참조하면, 본 발명의 일실시예에 따른 메모리 박스 접근부(100)는 메모리 할당부(110) 및 연산 처리부(120)를 포함할 수 있다.
메모리 할당부(110)는 메모리 박스(1)에 파라미터가 저장될 메모리 영역의 할당 관리를 수행할 수 있고, 메모리 영역의 할당 관리에 따라 상기 메모리 박스에 저장된 매핑 테이블을 업데이트 할 수 있다.
이 때, 메모리 할당부(113)는 참조 카운트에 따라 상기 메모리 영역에서 파라미터를 공유 중인 파라미터 공유 장치의 개수를 확인할 수 있고, 상기 참조 카운트가 최소값이 되는 경우, 상기 연산 처리부의 메모리 영역에 대한 메모리 주소를 삭제하고 상기 메모리 박스에서 상기 메모리 영역을 해제할 수 있다.
연산 처리부(120)는 파라미터가 저장될 메모리 영역의 할당 관리를 위한 파라미터 정보를 메모리 할당부(110)에 제공하고, 메모리 박스(1)에 저장된 파라미터를 공유할 수 있다.
이 때, 연산 처리부(120)는 메모리 박스(1)의 합저장 기능을 이용하여 메모리 박스(1)에 저장된 메모리 박스의 파라미터 값을 업데이트 할 수 있다.
도 5는 도 2 및 도 4에 도시된 메모리 박스 접근부와 메모리 박스의 일 예를 세부적으로 나타낸 블록도이다.
도 5를 참조하면, 메모리 할당부(110)는 파라미터 정보 수신부(111), 매핑 테이블 관리부(112) 및 공유 메모리 관리부(113)를 포함할 수 있다.
연산 처리부(120)는 파라미터 객체부(121) 및 파라미터 처리부(122)를 포함할 수 있다.
파라미터 정보 수신부(111)는 메모리 박스(1)에 파라미터를 저장할 메모리를 할당하거나 할당된 메모리를 해제하기 위해 필요한 파라미터에 관한 정보를 파라미터 객체부(121)로부터 수신할 수 있다.
이 때, 파라미터 정보 수신부(111)는 파라미터의 파라미터 식별자, 파라미터 크기 및 파라미터가 저장된 메모리 영역에 대한 메모리 주소 중 적어도 하나를 포함하는 파라미터 정보를 파라미터 객체부(121)로부터 수신할 수 있다.
매핑 테이블 관리부(112)는 메모리 박스(1)의 공유 메모리로부터 매핑 테이블을 읽어올 수 있다. 매핑 테이블은 파라미터와 파라미터가 저장된 공유 메모리 주소의 매핑 정보를 관리하는 테이블에 상응할 수 있다. 매핑 테이블의 각 엔트리에는 파라미터 식별자, 공유 메모리 주소, 그리고 참조 카운트를 포함할 수 있다.
공유 메모리 관리부(113)는 메모리 박스(1)에 파라미터의 메모리 영역을 할당할 수 있다.
공유 메모리 관리부(113)는 매핑 테이블 관리부(112)에서 읽어온 매핑 테이블을 검색하여 메모리 박스(1)에 상기 파라미터를 저장할 메모리 영역의 할당 여부를 판단할 수 있다.
이 때, 공유 메모리 관리부(113)는 매핑 테이블에서 파라미터를 검색하여 파라미터의 메모리 영역이 할당 되었는지 여부를 확인하고, 메모리가 할당되어 있는 경우, 매핑 테이블의 엔트리에 참조 카운트를 증가시키고 메모리 주소를 파라미터 객체부(121)에 기록할 수 있다.
이 때, 공유 메모리 관리부(113)는 메모리가 아직 할당되지 않은 경우, 메모리 박스(1)에 상기 파라미터를 저장할 메모리 영역을 할당하고 매핑 테이블에 새로운 엔트리를 추가하며, 할당한 메모리 주소를 파라미터 객체부(121)에 기록할 수 있다. 매핑 테이블 관리부(112)는 수정된 매핑 테이블을 메모리 박스(1)에 쓸 수 있다(write). 이 때, 매핑 테이블 관리부(112)는 메모리 박스(1)의 메모리 영역에 대해 잠금을 걸거나 잠금을 해제할 수 있다.
이 때, 매핑 테이블 관리부(112)는 매핑 테이블을 읽어오기 전에 메모리 박스(1)의 매핑 테이블이 저장된 메모리 영역에 잠금을 걸고, 메모리 박스(1)에 수정된 매핑 테이블을 쓴 후에 상기 잠금을 해제할 수 있다.
메모리 주소는 메모리 박스(1)의 메모리 영역 전체에서 특정한 메모리 위치를 지정한 것에 상응할 수 있다. 메모리 주소는 메모리 박스의 디바이스 드라이버 및 접근 라이브러리에서 제공하는 방식에 따르며, 디바이스 메모리 주소 또는 이와 매핑된 가상 주소 또는 디바이스 메모리 주소에 매핑된 식별자 등에 상응할 수 있다.
또한, 공유 메모리 관리부(113)는 메모리 박스(1)에 할당된 파라미터의 메모리 영역을 해제할 수 있다.
공유 메모리 관리부(113)는 매핑 테이블 관리부(112)가 읽어온 매핑 테이블을 검색하여 메모리 박스(1)에서 파라미터가 할당된 메모리 영역의 해제 여부를 판단할 수 있다.
이 때, 공유 메모리 관리부(113)는 매핑 테이블에서 파라미터 식별자 또는 메모리 주소를 이용하여 메모리 영역을 해제할 파라미터에 관한 엔트리를 검색한 후, 해당 엔트리의 참조 카운트를 감소시킬 수 있다.
이 때, 공유 메모리 관리부(113)는 참조 카운트값에 따라서 메모리 영역의 해제 여부를 판단할 수 있다. 이 때, 공유 메모리 관리부(113)는 참조 카운트가 최소값(예를 들어, 0)이면 메모리 영역을 해제할 수 있고, 참조 카운트가 최소값이 아닌 경우, 메모리 영역의 해제를 수행하지 않을 수 있다.
이 때, 공유 메모리 관리부(113)는 메모리 영역을 해제하도록 결정한 경우, 메모리 박스(1)에서 파라미터의 메모리 영역을 해제하고, 매핑 테이블에서 해당 엔트리를 삭제할 수 있다. 매핑 테이블 관리부(112)는 수정된 매핑 테이블을 메모리 박스에 쓸 수 있다(write). 매핑 테이블 관리부(112)는 메모리 박스(1)의 메모리 영역에 대해 잠금을 걸거나 잠금을 해제할 수 있다. 매핑 테이블 관리부(112)는 매핑 테이블을 읽어오기 전에 메모리 박스(1)의 매핑 테이블이 저장된 메모리 영역에 잠금을 걸고, 메모리 박스(1)에 매핑 테이블을 쓴 후에 잠금을 해제할 수 있다.
파라미터 객체부(121)는 파라미터의 메모리 영역에 대한 메모리 주소를 파라미터 정보 수신부(111)에 파라미터 정보로 제공할 수 있다.
파라미터 처리부(122)는 파라미터 객체(121)에 기록된 메모리 주소를 통해서 메모리 박스(1)에 파라미터 값을 쓰기(write), 읽기(read) 및 메모리 박스(1)에서 제공하는 합저장(AssignAdd) 기능을 이용하여 학습한 파라미터를 수정(업데이트)할 수 있다.
이 때, 파라미터 처리부(122)는 메모리 박스(1)에 저장된 메모리 박스의 파라미터 값을 읽고(read), 모델 알고리즘을 이용하여 상기 메모리 박스의 파라미터 값에 상응하는 파라미터 차분 값을 계산할 수 있다.
이 때, 모델 알고리즘은 확률적 경사 하강 법(Stochastic Gradient Descent) 알고리즘이 사용될 수 있으며, 이외에도 파라미터 차분 값을 계산하기 위한 다양한 알고리즘이 사용될 수 있다.
이 때, 파라미터 처리부(122)는 메모리 박스(1)의 합저장 기능 수행 가능 여부에 따라서, 메모리 박스(1)가 합저장 기능 수행이 가능한 경우, 상기 합저장 기능을 통해 상기 파라미터 차분 값을 이용하여 상기 메모리 박스의 파라미터 값을 수정할 수 있다.
이 때, 파라미터 처리부(122)는 메모리 박스(1)의 합저장 기능 수행 가능 여부에 따라서, 메모리 박스(1)가 합저장 기능 수행이 불가능한 경우, 상기 파라미터 차분 값과 상기 메모리 박스의 파라미터 값에 대한 파라미터 수정 값을 산출하여 상기 메모리 박스에 쓸 수 있다(write).
도 6은 본 발명의 일실시예에 따른 분산 딥러닝 프레임워크에서 파라미터 공유를 나타낸 도면이다.
도 6을 참조하면, 본 발명의 일실시예에 따른 분산 딥러닝 프레임워크에서 파라미터 공유 기법은 파라미터 공유 장치들(10, 20, 30)은 메모리 박스 접근부(100, 200, 300)을 통해 각자 독립적으로 복수개의 파라미터들을 학습할 수 있다.
이 때, 파라미터 공유 장치들(10, 20, 30)은 메모리 박스 접근부(100, 200, 300)를 통해서 메모리 박스(1)에 복수개의 파라미터들을 저장하고 학습을 수행할 수 있다. 메모리 박스 접근부(100, 200, 300)는 파라미터 공유 장치들(10, 20, 30)이 메모리 박스(1)의 동일한 파라미터에 접근하는 경우에는 동일한 메모리 주소에 접근하여 동일한 파라미터를 공유할 수 있다.
이 때, 파라미터 공유 장치들(10, 20, 30)은 동일한 메모리 주소에 파라미터를 업데이트하고, 업데이트한 파라미터를 읽어갈 수 있다. 따라서, 파라미터 공유 장치들(10, 20, 30)는 복수개의 파라미터들을 서로 협력적으로 학습할 수 있다.
본 발명의 일실시예에 따른 파라미터 공유 방법은 메모리 영역 할당을 위한 파라미터 공유 방법과 할당된 메모리 영역의 해제를 위한 파라미터 공유 방법을 나눠서 설명한다.
도 7은 본 발명의 일실시예에 따른 메모리 영역 할당을 위한 파라미터 공유 방법을 나타낸 동작흐름도이다.
도 7을 참조하면, 본 발명의 일실시예에 따른 메모리 영역 할당을 위한 파라미터 공유 방법은 먼저 파라미터 정보를 수신할 수 있다(S210).
즉, 단계(S210)는 메모리 박스(1)에 파라미터의 메모리 영역을 할당하기 위한 파라미터 정보를 수신할 수 있다.
이 때, 단계(S210)는 파라미터의 파라미터 식별자 및 파라미터 크기 중 적어도 하나를 포함하는 파라미터 정보를 수신할 수 있다.
이 때, 파라미터 크기는 파라미터를 저장하기 위해 필요한 메모리 크기일 수 있다.
이 때, 매핑 테이블은 각각의 엔트리에 파라미터의 식별자, 메모리 영역에 대한 메모리 주소 및 참조 카운트를 포함하는 매핑 정보가 기록될 수 있다.
이 때, 매핑 테이블은 메모리 박스(1)와 파라미터를 공유하는 파라미터 공유 장치들(10, 20, 30)에 상응하는 각각의 매핑 정보가 기록될 수도 있다.
즉, 매핑 테이블은 메모리 박스(1)와 파라미터를 공유하는 파라미터 공유 장치들(10, 20, 30)에 관한 정보를 사전에 더 포함할 수도 있다.
또한, 본 발명의 일실시예에 따른 메모리 영역 할당을 위한 파라미터 공유 방법은 매핑 테이블의 잠금 및 읽기를 수행할 수 있다(S220).
즉, 단계(S220)는 메모리 박스(1)의 매핑 테이블에 잠금을 걸고, 매핑 테이블을 읽어올 수 있다.
또한, 본 발명의 일실시예에 따른 메모리 영역 할당을 위한 파라미터 공유 방법은 메모리 영역의 할당 여부를 확인할 수 있다(S230).
즉, 단계(S230)는 매핑 테이블의 엔트리를 확인하여 메모리 박스에 파라미터의 메모리 영역이 할당되지 않은 경우, 메모리 영역을 할당할 수 있다(S240).
이 때, 단계(S240)는 파라미터 크기만큼 상기 메모리 박스에 메모리 영역을 할당할 수 있다.
또한, 본 발명의 일실시예에 따른 메모리 영역 할당을 위한 파라미터 공유 방법은 매핑 테이블에 매핑 정보를 추가할 수 있다(S250).
즉, 단계(S250)는 매핑 테이블의 엔트리를 확인하여 메모리 박스에 파라미터의 메모리 영역이 할당되지 않은 경우, 메모리 영역이 할당된 파라미터에 대한 매핑 정보를 매핑 테이블의 새로운 엔트리에 추가하여 매핑 테이블을 업데이트 할 수 있다.
또한, 단계(S230)는 매핑 테이블의 엔트리를 확인하여 메모리 박스에 파라미터의 메모리 영역이 기 할당되어 있는 경우, 매핑 테이블의 참조 카운트를 증가시킬 수 있다(S260).
즉, 단계(S260)는 매핑 테이블에 파라미터에 상응하는 엔트리에 참조 카운트를 증가시켜 매핑 테이블을 업데이트 할 수 있다.
이 때, 단계(S260)는 참조 카운트를 '1'씩 증가 시킬 수 있다.
또한, 본 발명의 일실시예에 따른 메모리 영역 할당을 위한 파라미터 공유 방법은 매핑 테이블의 쓰기 및 잠금 해제를 수행할 수 있다(S270).
즉, 단계(S270)는 메모리 영역의 할당 여부에 따라 매핑 정보를 수정한 매핑 테이블을 메모리 박스(1)에 쓰고, 매핑 테이블의 잠금을 해제할 수 있다.
이 때, 단계(S270)는 메모리 영역이 할당된 파라미터에 대한 메모리 박스의 메모리 주소를 파라미터 공유 장치에 기록할 수 있다.
또한, 본 발명의 일실시예에 따른 메모리 영역 할당을 위한 파라미터 공유 방법은 파라미터를 공유할 수 있다(S280).
즉, 단계(S280)는 메모리 영역을 할당한 메모리 주소를 고려하여 파라미터를 공유할 수 있다.
이 때, 단계(S280)는 파라미터 공유 장치들(10, 20, 30)에 메모리 영역을 할당한 메모리 주소가 추가된 것으로 기록된 메모리 영역의 메모리 주소를 참조하여 메모리 박스(1)에 저장된 파라미터를 공유할 수 있다.
이 때, 단계(S280)는 메모리 박스(1)의 매핑 테이블에 기록된 파라미터 공유 장치들(10, 20, 30)에 상응하는 메모리 주소를 참조하여 메모리 박스(1)에 저장된 파라미터를 공유할 수도 있다.
이 때, 단계(S280)는 파라미터 공유 장치들(10, 20, 30)이 메모리 박스(1)에 저장된 파라미터 값을 읽어 올 수 있다(read).
이 때, 단계(S280)는 모델 알고리즘을 이용하여 메모리 박스(1)의 파라미터 값에 상응하는 파라미터 차분 값을 계산할 수 있다.
이 때, 모델 알고리즘은 확률적 경사 하강 법(Stochastic Gradient Descent) 알고리즘이 사용될 수 있으며, 이외에도 파라미터 차분 값을 계산하기 위한 다양한 알고리즘이 사용될 수 있다.
이 때, 단계(S280)는 파라미터 차분 값을 이용하여 메모리 박스(1)의 파라미터 값을 수정할 수 있다.
이 때, 단계(S280)는 메모리 박스(1)가 합저장 기능 수행이 가능한 경우, 메모리 박스(1)의 합저장 기능을 통해 상기 파라미터 차분 값을 이용하여 상기 메모리 박스(1)의 파라미터 값을 수정할 수 있다.
이 때, 단계(S280)는 파라미터 공유 장치들(10, 20, 30)이 메모리 박스(1)의 합저장 기능 수행 가능 여부를 미리 확인해둘 수 있다.
또한, 단계(S280)는 메모리 박스(1)가 합저장 기능 수행이 불가능한 경우, 메모리 박스(1)로부터 파라미터 값을 다시 읽어오고(read), 파라미터 차분 값과 다시 읽어온 파라미터 값을 이용하여 산출한 파라미터 수정 값을 메모리 박스(1)에 쓸 수 있다(write).
이 때, 단계(S280)는 한 번 또는 그 이상 반복적으로 실행될 수 있다.
즉, 단계(S280)는 메모리 박스(1)가 공유하는 파라미터를 이용하여 학습을 진행할 수 있다.
이 때, 단계(S280)는 파라미터 공유 장치들(10, 20, 30)이 동일한 파라미터를 접근하는 경우에는 동일한 메모리 주소에 접근하도록 하여 동일한 파라미터가 공유될 수 있다.
이 때, 단계(S280)는 파라미터 공유 장치들(10, 20, 30)이 동일한 메모리 주소에서 파라미터를 읽어가고, 업데이트를 하고, 업데이트된 파라미터를 다시 읽어가서 파라미터 공유 장치들(10, 20, 30)이 서로 협력적으로 학습할 수 있다.
나아가, 단계(S280)에서 파라미터를 공유하는 과정은 도 9 및 도 10에 대한 설명을 일 예로 하여 아래에서 상세하게 설명한다.
도 8은 본 발명의 일실시예에 따른 메모리 영역 해제를 위한 파라미터 공유 방법을 나타낸 동작흐름도이다.
본 발명의 일실시예에 따른 메모리 영역 해제를 위한 파라미터 공유 방법은 먼저 파라미터 정보를 수신할 수 있다(S310).
즉, 단계(S310)는 메모리 박스(1)에 파라미터의 메모리 영역을 해제하기 위한 파라미터 정보를 수신할 수 있다.
이 때, 단계(S310)는 파라미터의 파라미터 식별자 및 파라미터가 저장된 메모리 영역에 대한 메모리 주소 중 적어도 하나를 포함하는 파라미터 정보를 수신할 수 있다.
이 때, 매핑 테이블은 각각의 엔트리에 파라미터의 식별자, 메모리 영역에 대한 메모리 주소 및 참조 카운트를 포함하는 매핑 정보가 기록될 수 있다.
이 때, 매핑 테이블은 메모리 박스(1)와 파라미터를 공유하는 파라미터 공유 장치들(10, 20, 30)에 상응하는 각각의 매핑 정보가 기록될 수도 있다.
즉, 매핑 테이블은 메모리 박스(1)와 파라미터를 공유하는 파라미터 공유 장치들(10, 20, 30)에 관한 정보를 사전에 더 포함할 수도 있다.
또한, 본 발명의 일실시예에 따른 메모리 영역 해제를 위한 파라미터 공유 방법은 매핑 테이블의 잠금 및 읽기를 수행할 수 있다(S320).
즉, 단계(S320)는 메모리 박스(1)의 매핑 테이블에 잠금을 걸고, 매핑 테이블을 읽어올 수 있다.
또한, 본 발명의 일실시예에 따른 메모리 영역 해제를 위한 파라미터 공유 방법은 참조 카운트를 감소시킬 수 있다(S330).
즉, 단계(S330)는 매핑 테이블에 파라미터에 상응하는 엔트리에 참조 카운트를 감소시켜 매핑 테이블을 업데이트 할 수 있다.
이 때, 단계(S330)는 참조 카운트를 '1'씩 감소 시킬 수 있다.
또한, 본 발명의 일실시예에 따른 메모리 영역 해제를 위한 파라미터 공유 방법은 메모리 주소를 삭제할 수 있다(S340).
즉, 단계(S340)는 파라미터 공유 장치에 기록된 파라미터에 상응하는 메모리 주소를 삭제할 수 있다.
또한, 본 발명의 일실시예에 따른 메모리 영역 해제를 위한 파라미터 공유 방법은 참조 카운트가 최소값(예를 들어, '0')인지 여부를 확인할 수 있다(S350).
즉, 단계(S350)는 매핑 테이블의 참조 카운트가 최소값인 경우, 메모리 박스(1)에 할당된 메모리 영역을 해제하고(S360), 매핑 테이블의 매핑 정보를 삭제할 수 있다(S370).
즉, 단계(S370)는 메모리 영역에 상응하는 매핑 테이블의 엔트리를 삭제할 수 있다.
또한, 단계(S350)는 매핑 테이블의 참조 카운트가 최소값이 아닌 경우, 메모리 영역을 해제 하지 않고, 참조 카운트가 수정된 매핑 테이블을 업데이트 할 수 있다.
또한, 본 발명의 일실시예에 따른 메모리 영역 해제를 위한 파라미터 공유 방법은 매핑 테이블 쓰기 및 잠금 해제를 수행할 수 있다(S380).
즉, 단계(S380)는 메모리 영역의 해제 여부에 따라 매핑 정보를 수정한 매핑 테이블을 메모리 박스(1)에 쓰고, 매핑 테이블의 잠금을 해제할 수 있다.
또한, 본 발명의 일실시예에 따른 메모리 영역 해제를 위한 파라미터 공유 방법은 파라미터를 공유할 수 있다(S390).
즉, 단계(S390)는 메모리 영역을 해제한 메모리 주소를 고려하여 파라미터를 공유할 수 있다.
이 때, 단계(S390)는 파라미터 공유 장치들(10, 20, 30)에 메모리 영역을 해제한 메모리 주소가 삭제된 것으로 기록된 나머지 메모리 영역에 대한 메모리 주소를 참조하여 메모리 박스(1)에 저장된 파라미터를 공유할 수 있다.
이 때, 단계(S390)는 메모리 박스(1)의 매핑 테이블에 기록된 파라미터 공유 장치들(10, 20, 30)에 상응하는 메모리 주소를 참조하여 메모리 박스(1)에 저장된 파라미터를 공유할 수도 있다.
이 때, 단계(S390)는 파라미터 공유 장치에 기록된 메모리 주소를 참조하여 메모리 박스(1)에 저장된 파라미터 값을 읽어 올 수 있다(read).
이 때, 단계(S390)는 모델 알고리즘을 이용하여 메모리 박스의 파라미터 값에 상응하는 파라미터 차분 값을 계산할 수 있다.
이 때, 모델 알고리즘은 확률적 경사 하강 법(Stochastic Gradient Descent) 알고리즘이 사용될 수 있으며, 이외에도 파라미터 차분 값을 계산하기 위한 다양한 알고리즘이 사용될 수 있다.
이 때, 단계(S390)는 파라미터 차분 값을 이용하여 상기 메모리 박스의 파라미터 값을 수정할 수 있다.
이 때, 단계(S390)는 상기 메모리 박스가 합저장 기능 수행이 가능한 경우, 상기 파라미터 차분 값을 이용하여 상기 메모리 박스의 합저장 기능을 통해 상기 메모리 박스의 파라미터 값을 수정할 수 있다.
이 때, 단계(S390)는 파라미터 공유 장치들(10, 20, 30)이 메모리 박스(1)의 합저장 기능 수행 가능 여부를 미리 확인해둘 수 있다.
이 때, 단계(S390)는 상기 메모리 박스가 합저장 기능 수행이 불가능한 경우, 상기 메모리 박스로부터 파라미터 값을 다시 읽어오고(read), 상기 파라미터 차분 값과 다시 읽어온 파라미터 값을 이용하여 산출한 파라미터 수정 값을 상기 메모리 박스에 쓸 수 있다(write).
이 때, 단계(S390)는 한 번 또는 그 이상 반복적으로 실행될 수 있다.
즉, 단계(S390)는 메모리 박스(1)가 공유하는 파라미터를 이용하여 학습을 진행할 수 있다.
이 때, 단계(S390)는 파라미터 공유 장치들(10, 20, 30)이 동일한 파라미터를 접근하는 경우에는 동일한 메모리 주소에 접근하도록 하여 동일한 파라미터가 공유될 수 있다.
이 때, 단계(S390)는 파라미터 공유 장치들(10, 20, 30)이 동일한 메모리 주소에서 파라미터를 읽어가고, 업데이트를 하고, 업데이트된 파라미터를 다시 읽어가서 파라미터 공유 장치들(10, 20, 30)이 서로 협력적으로 학습할 수 있다.
나아가, 단계(S390)에서 파라미터를 공유하는 과정은 도 9 및 도 10에 대한 설명을 일 예로 하여 아래에서 상세하게 설명한다.
도 9는 본 발명의 일실시예에 따른 메모리 박스가 합저장 기능 수행이 가능한 경우, 합저장 기능을 이용한 파라미터 공유 방법을 나타낸 시퀀스 다이어그램이다.
도 9를 참조하면, 본 발명의 일실시예에 따른 메모리 박스가 합저장 기능 수행이 가능한 경우, 합저장 기능을 이용한 파라미터 공유 방법은 먼저 파라미터 공유 장치 1(10)이 파라미터를 읽어올 수 있다(S410).
즉, 단계(S410)는 파라미터 공유 장치 1(10)이 메모리 박스(1)로부터 제1 메모리 박스의 파라미터 값을 읽어올 수 있다.
또한, 본 발명의 일실시예에 따른 합저장 기능을 이용한 파라미터 공유 방법은 파라미터 차분 값을 계산할 수 있다(S420).
즉, 단계(S420)는 파라미터 공유 장치 1(10)이 모델 알고리즘을 이용하여 제1 파라미터 차분 값을 계산할 수 있다.
이 때, 모델 알고리즘은 확률적 경사 하강 법(Stochastic Gradient Descent) 알고리즘이 사용될 수 있으며, 이외에도 파라미터 차분 값을 계산하기 위한 다양한 알고리즘이 사용될 수 있다.
또한, 본 발명의 일실시예에 따른 합저장 기능을 이용한 파라미터 공유 방법은 합저장 기능을 이용하여 파라미터를 수정할 수 있다(S430).
즉, 단계(S430)는 메모리 박스(1)의 합저장(AssignAdd) 기능을 통해 제1 파라미터 차분 값을 이용하여 제1 메모리 박스의 파라미터 값을 수정(업데이트)하여 제2 메모리 박스의 파라미터 값을 생성할 수 있다.
Figure 112017046322874-pat00001
예를 들어, 수학식 1은 합저장 기능의 일 예를 수학식으로 나타낸 것을 알 수 있다.
이 때, 단계(S430)는 수학식 1과 같이, 제1 메모리 박스의 파라미터 값(Wt)에서 제1 파라미터 차분값(ΔWt)을 합산하여 제2 메모리 박스의 파라미터 값(Wt+1)을 생성할 수 있다.
또한, 본 발명의 일실시예에 따른 합저장 기능을 이용한 파라미터 공유 방법은 파라미터 공유 장치 2(20)가 파라미터를 읽어올 수 있다(S440).
즉, 단계(S440)는 파라미터 공유 장치 2(20)가 메모리 박스(1)로부터 제2 메모리 박스의 파라미터 값을 읽어올 수 있다.
이 때, 단계(S440)는 파라미터 공유 장치 1(10)과 파라미터 공유 장치(2)가 비동기적으로 파라미터 공유를 수행하게 되므로, 도 9에 도시된 바와 같이 반드시 단계(S430) 이후에 수행되는 것이 아니라, 파라미터 공유 장치(1)의 파라미터 업데이트 과정과 무관하게 단계(S410) 내지 단계(S430) 중 어느 단계에서도 함께 수행될 수도 있다.
따라서, 단계(S440)는 합저장 기능을 통해 제1 파라미터 차분 값이 업데이트 되지 않은 제1 메모리 박스의 파라미터 값을 읽어 올 수도 있다.
그러나, 이하에서는 업데이트가 완료된 제2 메모리 박스의 파라미터 값을 읽어 오는 것으로 설명한다.
이러한 비동기적 파라미터 공유 방법에서, 파라미터 값의 업데이트 과정 중에는 메모리 박스의 파라미터 값의 업데이트가 정확한 계산 값으로 반영되지 않을 수 있지만, 파라미터 공유가 완료되는 시점에서는 결과적으로 높은 속도로 파라미터 공유를 완료할 수 있다.
또한, 본 발명의 일실시예에 따른 합저장 기능을 이용한 파라미터 공유 방법은 파라미터 차분 값을 계산할 수 있다(S450).
즉, 단계(S450)는 파라미터 공유 장치 2(20)가 모델 알고리즘을 이용하여 제2 파라미터 차분 값을 계산할 수 있다.
이 때, 모델 알고리즘은 확률적 경사 하강 법(Stochastic Gradient Descent) 알고리즘이 사용될 수 있으며, 이외에도 파라미터 차분 값을 계산하기 위한 다양한 알고리즘이 사용될 수 있다.
또한, 본 발명의 일실시예에 따른 합저장 기능을 이용한 파라미터 공유 방법은 합저장 기능을 이용하여 파라미터를 수정할 수 있다(S460).
즉, 단계(S460)는 메모리 박스(1)의 합저장(AssignAdd) 기능을 통해 제2 파라미터 차분 값을 이용하여 제2 메모리 박스의 파라미터 값을 수정(업데이트)하여 제3 메모리 박스의 파라미터 값을 생성할 수 있다.
이 때, 단계(S460)는 수학식 1과 같이, 제2 메모리 박스의 파라미터 값(Wt)에서 제2 파라미터 차분값(ΔWt)을 합산하여 제3 메모리 박스의 파라미터 값(Wt+1)을 생성할 수 있다.
이러한 과정을 통해, 복수개의 파라미터 공유 장치들(워커)이 비동기적으로 메모리 박스(1)로부터 파라미터 값을 읽어(read) 나가면서 합저장(AssignAdd) 기능을 이용하여 메모리 박스(1)의 파라미터 값을 업데이트 할 수 있다.
도 10는 본 발명의 일실시예에 따른 메모리 박스가 합저장 기능 수행이 불가능한 경우, 파라미터 공유 방법을 나타낸 시퀀스 다이어그램이다.
도 10을 참조하면, 본 발명의 일실시예에 따른 메모리 박스가 합저장 기능 수행이 불가능한 경우, 파라미터 공유 방법은 먼저 파라미터 공유 장치 1(10)이 파라미터를 읽어올 수 있다(S510).
즉, 단계(S510)는 파라미터 공유 장치 1(10)이 메모리 박스(1)로부터 제1 메모리 박스의 파라미터 값을 읽어올 수 있다(read).
또한, 본 발명의 일실시예에 따른 메모리 박스가 합저장 기능 수행이 불가능한 경우, 파라미터 공유 방법은 파라미터 차분 값을 계산할 수 있다(S520).
즉, 단계(S520)는 파라미터 공유 장치 1(10)이 모델 알고리즘을 이용하여 제1 파라미터 차분 값을 계산할 수 있다.
이 때, 모델 알고리즘은 확률적 경사 하강 법(Stochastic Gradient Descent) 알고리즘이 사용될 수 있으며, 이외에도 파라미터 차분 값을 계산하기 위한 다양한 알고리즘이 사용될 수 있다.
또한, 본 발명의 일실시예에 따른 메모리 박스가 합저장 기능 수행이 불가능한 경우, 파라미터 공유 방법은 파라미터 값을 읽어올 수 있다(S530).
즉, 단계(S530)는 단계(S520)의 파라미터 차분 값 계산 과정 동안 다른 파라미터 공유 장치에 의하여 메모리 박스(1)의 파라미터 값이 수정될 수 있으므로, 메모리 박스(1)의 파라미터 값을 다시 읽어올 수 있다.
이 때, 단계(S530)는 단계(S520)의 파라미터 차분 값의 계산이 기설정된 시간을 초과할 때까지 계산되지 않은 경우에만, 제1 메모리 박스의 파라미터 값을 다시 읽어 올 수 있다.
또한, 본 발명의 일실시예에 따른 메모리 박스가 합저장 기능 수행이 불가능한 경우, 파라미터 공유 방법은 파라미터 수정 값을 산출할 수 있다(S540).
즉, 단계(S540)는 계산된 제1 파라미터 차분 값과 메모리 박스(1)에서 읽어온 제1 메모리 박스의 파라미터 값을 이용하여 제1 파라미터 수정 값을 산출 할 수 있다.
이 때, 단계(S540)는 단계(S520)에서 기설정된 시간 이내에 파라미터 차분 값이 계산된 경우, 단계(S510)에서 읽어온 제1 메모리 박스의 파라미터 값을 이용하여 제1 파라미터 수정 값을 산출할 수 있다.
또한, 단계(S540)는 단계(S520)에서 기설정된 시간을 초과하여 파라미터 차분 값이 계산된 경우, 단계(S530)에서 다시 읽어온 제1 메모리 박스의 파라미터 값을 이용하여 제1 파라미터 수정 값을 산출할 수 있다.
Figure 112017046322874-pat00002
예를 들어, 수학식 2는 파라미터 값을 업데이트하는 일 예를 수학식으로 나타낸 것을 알 수 있다.
이 때, 단계(S540)는 상기 수학식 2와 같이, 제1 메모리 박스의 파라미터 값(Wt')에서 제1 파라미터 차분값(ΔWt)을 합산하여 제1 파라미터 수정 값(Wt+1)을 생성할 수 있다.
또한, 본 발명의 일실시예에 따른 메모리 박스가 합저장 기능 수행이 불가능한 경우, 파라미터 공유 방법은 파라미터 수정 값을 쓸 수 있다(S550).
즉, 단계(S550)는 산출된 제1 파라미터 수정 값을 메모리 박스(1)에 쓰는(write) 것으로 메모리 박스(1)의 파라미터 값을 수정(업데이트)할 수 있다.
이 때, 단계(S550)는 제1 메모리 박스의 파라미터 값에 제1 파라미터 수정 값을 쓰는 것으로, 제2 메모리 박스의 파라미터 값을 생성할 수 있다.
또한, 본 발명의 일실시예에 따른 메모리 박스가 합저장 기능 수행이 불가능한 경우, 파라미터 공유 방법은 파라미터 공유 장치 2(20)가 파라미터를 읽어올 수 있다(S560).
즉, 단계(S560)는 파라미터 공유 장치 2(10)가 메모리 박스(1)로부터 제2 메모리 박스의 파라미터 값을 읽어올 수 있다(read).
이 때, 단계(S560)는 파라미터 공유 장치 1(10)과 파라미터 공유 장치(2)가 비동기적으로 파라미터 공유를 수행하게 되므로, 도 10에 도시된 바와 같이 반드시 단계(S530) 이후에 수행되는 것이 아니라, 파라미터 공유 장치(1)의 파라미터 업데이트 과정과 무관하게 단계(S510) 내지 단계(S550) 중 어느 단계에서도 수행될 수도 있다.
따라서, 단계(S560)는 도 10에 도시된 바와 같이 제1 파라미터 수정 값이 업데이트 되지 않은 제1 메모리 박스의 파라미터 값을 읽어 올 수도 있다.
그러나, 이하에서는 업데이트가 완료된 제2 메모리 박스의 파라미터 값을 읽어 오는 것으로 설명한다.
이러한 비동기적 파라미터 공유 방법에서, 파라미터 값의 업데이트 과정 중에는 메모리 박스의 파라미터 값의 업데이트가 정확한 계산값으로 반영되지 않을 수 있지만, 파라미터 공유가 완료되는 시점에서는 결과적으로 높은 속도로 파라미터 공유를 완료할 수 있다.
또한, 본 발명의 일실시예에 따른 메모리 박스가 합저장 기능 수행이 불가능한 경우, 파라미터 공유 방법은 파라미터 차분 값을 계산할 수 있다(S570).
즉, 단계(S570)는 파라미터 공유 장치 2(20)가 모델 알고리즘을 이용하여 제2 파라미터 차분 값을 계산할 수 있다.
이 때, 모델 알고리즘은 확률적 경사 하강 법(Stochastic Gradient Descent) 알고리즘이 사용될 수 있으며, 이외에도 파라미터 차분 값을 계산하기 위한 다양한 알고리즘이 사용될 수 있다.
또한, 본 발명의 일실시예에 따른 메모리 박스가 합저장 기능 수행이 불가능한 경우, 파라미터 공유 방법은 파라미터 값을 읽어올 수 있다(S580).
즉, 단계(S580)는 단계(S570)의 파라미터 차분 값 계산 과정 동안 다른 파라미터 공유 장치에 의하여 메모리 박스(1)의 파라미터 값이 수정될 수 있으므로, 메모리 박스(1)의 파라미터 값을 다시 읽어올 수 있다.
이 때, 단계(S580)는 단계(S570)의 파라미터 차분 값이 계산이 기설정된 시간을 초과할 때까지 계산되지 않은 경우에만, 제2 메모리 박스의 파라미터 값을 다시 읽어 올 수 있다.
또한, 본 발명의 일실시예에 따른 메모리 박스가 합저장 기능 수행이 불가능한 경우, 파라미터 공유 방법은 파라미터 수정 값을 산출할 수 있다(S590).
즉, 단계(S590)는 계산된 제2 파라미터 차분 값과 메모리 박스(1)에서 읽어온 제2 메모리 박스의 파라미터 값을 이용하여 제2 파라미터 수정 값을 산출 할 수 있다.
이 때, 단계(S590)는 단계(S570)에서 기설정된 시간 이내에 파라미터 차분 값이 계산된 경우, 단계(S560)에서 읽어온 제2 메모리 박스의 파라미터 값을 이용하여 제2 파라미터 수정 값을 산출할 수 있다.
또한, 단계(S590)는 단계(S570)에서 기설정된 시간을 초과하여 파라미터 차분 값이 계산된 경우, 단계(S580)에서 다시 읽어온 제2 메모리 박스의 파라미터 값을 이용하여 제2 파라미터 수정 값을 산출할 수 있다.
이 때, 단계(S590)는 상기 수학식 2와 같이, 제2 메모리 박스의 파라미터 값(Wt')에서 제2 파라미터 차분값(ΔWt)을 합산하여 제2 파라미터 수정 값(Wt+1)을 생성할 수 있다.
또한, 본 발명의 일실시예에 따른 메모리 박스가 합저장 기능 수행이 불가능한 경우, 파라미터 공유 방법은 파라미터 수정 값을 쓸 수 있다(S600).
즉, 단계(S600)는 산출된 제2 파라미터 값을 메모리 박스(1)에 쓰는(write) 것으로 메모리 박스(1)의 파라미터 값을 수정(업데이트)할 수 있다.
이 때, 단계(S600)는 제2 메모리 박스의 파라미터 값에 제2 파라미터 수정 값을 쓰는 것으로, 제3 메모리 박스의 파라미터 값을 생성할 수 있다.
이러한 과정을 통해, 메모리 박스(1)가 합저장 기능 수행이 불가능한 경우에도, 복수개의 파라미터 공유 장치들(워커)이 비동기적으로 메모리 박스(1)로부터 파라미터 값을 읽어(read) 나가면서 산출된 파라미터 수정 값을 쓰는(write) 것으로, 메모리 박스(1)의 파라미터 값을 업데이트 할 수 있다.
이상에서와 같이 본 발명에 따른 파라미터 공유 장치 및 방법은 상기한 바와 같이 설명된 실시예들의 구성과 방법이 한정되게 적용될 수 있는 것이 아니라, 상기 실시예들은 다양한 변형이 이루어질 수 있도록 각 실시예들의 전부 또는 일부가 선택적으로 조합되어 구성될 수도 있다.
1: 메모리 박스 1a: 매핑 테이블 저장부
1b: 파라미터 저장부 10, 20, 30: 파라미터 공유 장치
11: 딥러닝 모델 복제부 12: 분산 딥러닝 학습 엔진부
13: CPU 장치 접근부 14: GPU 장치 접근부
100,200, 300: 메모리 박스 접근부 110: 메모리 할당부
111: 파라미터 정보 수신부 112: 매핑 테이블 관리부
113: 공유 메모리 관리부 120: 연산 처리부
121: 파라미터 객체부 122: 파라미터 처리부

Claims (20)

  1. 파라미터 공유 장치를 이용하는 방법에 있어서,
    메모리 박스에 저장될 파라미터의 메모리 영역을 할당하기 위한 파라미터 정보를 수신하는 단계;
    상기 메모리 박스의 매핑 테이블에 잠금을 걸고, 매핑 테이블을 읽어오는 단계;
    상기 파라미터 정보에 기반하여 상기 매핑 테이블에서 상기 메모리 박스에 상기 파라미터를 저장할 메모리 영역의 할당 여부를 확인하는 단계;
    상기 메모리 영역의 할당 여부에 따라 매핑 정보를 수정한 매핑 테이블을 상기 메모리 박스에 쓰고, 상기 매핑 테이블의 잠금을 해제하는 단계; 및
    상기 메모리 영역을 할당한 메모리 위치 정보를 고려하여 상기 파라미터를 공유하는 단계를 포함하고,
    상기 매핑 테이블은
    상기 파라미터의 식별자 및 상기 파라미터에 상응하는 메모리 위치 정보를 포함하는 매핑 정보가 기록된 것을 특징으로 하는 파라미터 공유 방법.
  2. 청구항 1에 있어서,
    상기 수신하는 단계는
    상기 파라미터의 파라미터 식별자 및 상기 파라미터 크기 중 적어도 하나를 포함하는 파라미터 정보를 수신하는 것을 특징으로 하는 파라미터 공유 방법.
  3. 청구항 2에 있어서,
    상기 매핑 정보는
    상기 파라미터에 상응하는 참조카운트를 더 포함하는 것을 특징으로 하는 파라미터 공유 방법.
  4. 청구항 3에 있어서,
    상기 할당 여부를 확인하는 단계는
    상기 매핑 테이블의 엔트리를 확인하여 상기 메모리 박스에 상기 파라미터의 메모리 영역이 할당되어 있는 경우,
    상기 매핑 테이블에 상기 파라미터에 상응하는 엔트리에 참조 카운트를 증가시켜 상기 매핑 테이블을 업데이트 하는 것을 특징으로 하는 파라미터 공유 방법.
  5. 청구항 4에 있어서,
    상기 할당 여부를 확인하는 단계는
    상기 매핑 테이블의 엔트리를 확인하여 상기 메모리 박스에 상기 파라미터의 메모리 영역이 할당되지 않은 경우,
    상기 파라미터 크기만큼 상기 메모리 박스에 메모리 영역을 할당하고, 상기 메모리 영역이 할당된 파라미터에 대한 매핑 정보를 상기 매핑 테이블의 새로운 엔트리에 추가하여 상기 매핑 테이블을 업데이트하는 것을 특징으로 하는 파라미터 공유 방법.
  6. 청구항 5에 있어서,
    상기 매핑 테이블의 잠금을 해제하는 단계는
    상기 메모리 영역이 할당된 파라미터에 대한 상기 메모리 박스의 메모리 위치 정보를 상기 파라미터 공유 장치에 기록하는 것을 특징으로 하는 파라미터 공유 방법.
  7. 청구항 6에 있어서,
    상기 공유하는 단계는
    상기 파라미터 공유 장치에 기록된 메모리 위치 정보를 참조하여 상기 메모리 박스에 저장된 파라미터 값을 읽어오는(read) 단계;
    모델 알고리즘을 이용하여 상기 메모리 박스의 파라미터 값에 상응하는 파라미터 차분 값을 계산하는 단계; 및
    상기 파라미터 차분 값을 이용하여 상기 메모리 박스의 파라미터 값을 수정하는 단계;
    를 포함하는 것을 특징으로 하는 파라미터 공유 방법.
  8. 청구항 7에 있어서,
    상기 파라미터 값을 수정하는 단계는
    상기 메모리 박스가 합저장 기능 수행이 가능한 경우,
    상기 파라미터 차분 값을 이용하여 상기 메모리 박스의 합저장 기능을 통해 상기 메모리 박스의 파라미터 값을 수정하는 것을 특징으로 하는 파라미터 공유 방법.
  9. 청구항 7에 있어서,
    상기 파라미터 값을 수정하는 단계는
    상기 메모리 박스가 합저장 기능 수행이 불가능한 경우,
    상기 메모리 박스로부터 파라미터 값을 다시 읽어오고(read), 상기 파라미터 차분 값과 다시 읽어온 파라미터 값을 이용하여 산출한 파라미터 수정 값을 상기 메모리 박스에 쓰는(write) 것을 특징으로 하는 파라미터 공유 방법.
  10. 파라미터 공유 장치를 이용하는 방법에 있어서,
    메모리 박스에 파라미터가 저장된 메모리 영역을 해제하기 위한 파라미터 정보를 수신하는 단계;
    상기 메모리 박스의 매핑 테이블에 잠금을 걸고, 매핑 테이블을 읽어오는 단계;
    상기 매핑 테이블에 기반하여 상기 메모리 박스에 상기 파라미터가 할당된 메모리 영역의 해제 여부를 확인하는 단계;
    상기 메모리 영역의 해제 여부에 따라 매핑 정보를 수정한 매핑 테이블을 상기 메모리 박스에 쓰고, 상기 매핑 테이블의 잠금을 해제하는 단계; 및
    상기 메모리 영역을 해제한 메모리 위치 정보를 고려하여 상기 파라미터를 공유하는 단계를 포함하고,
    상기 매핑 테이블은
    상기 파라미터의 식별자 및 상기 파라미터에 상응하는 메모리 위치 정보를 포함하는 매핑 정보가 기록된 것을 특징으로 하는 파라미터 공유 방법.
  11. 청구항 10에 있어서,
    상기 수신하는 단계는
    상기 파라미터의 파라미터 식별자 및 상기 파라미터가 저장된 메모리 영역에 대한 메모리 위치 정보 중 적어도 하나를 포함하는 파라미터 정보를 수신하는 것을 특징으로 하는 파라미터 공유 방법.
  12. 청구항 11에 있어서,
    상기 읽어오는 단계는
    상기 매핑 테이블에 상기 파라미터에 상응하는 엔트리에 참조 카운트를 감소시켜 상기 매핑 테이블을 업데이트 하는 단계; 및
    상기 파라미터 공유 장치에 기록된 상기 파라미터에 상응하는 메모리 위치 정보를 삭제하는 단계를 포함하는 파라미터 공유 방법.
  13. 청구항 12에 있어서,
    상기 해제 여부를 확인하는 단계는
    상기 매핑 테이블의 참조 카운트가 기설정된 값에 상응하는 경우, 상기 메모리 박스에 할당된 메모리 영역을 해제하고, 상기 메모리 영역에 상응하는 매핑 테이블의 엔트리를 삭제하는 것을 특징으로 하는 파라미터 공유 방법.
  14. 청구항 13에 있어서,
    상기 공유하는 단계는
    상기 파라미터 공유 장치에 기록된 메모리 위치 정보를 참조하여 상기 메모리 박스에 저장된 파라미터 값을 읽어오는(read) 단계;
    모델 알고리즘을 이용하여 상기 메모리 박스의 파라미터 값에 상응하는 파라미터 차분 값을 계산하는 단계; 및
    상기 파라미터 차분 값을 이용하여 상기 메모리 박스의 파라미터 값을 수정하는 단계;
    를 포함하는 것을 특징으로 하는 파라미터 공유 방법.
  15. 청구항 14에 있어서,
    상기 파라미터 값을 수정하는 단계는
    상기 메모리 박스가 합저장 기능 수행이 가능한 경우,
    상기 파라미터 차분 값을 이용하여 상기 메모리 박스의 합저장 기능을 통해 상기 메모리 박스의 파라미터 값을 수정하는 것을 특징으로 하는 파라미터 공유 방법.
  16. 청구항 14에 있어서,
    상기 파라미터 값을 수정하는 단계는
    상기 메모리 박스가 합저장 기능 수행이 불가능한 경우,
    상기 메모리 박스로부터 파라미터 값을 다시 읽어오고(read), 상기 파라미터 차분 값과 다시 읽어온 파라미터 값을 이용하여 산출한 파라미터 수정 값을 상기 메모리 박스에 쓰는(write) 것을 특징으로 하는 파라미터 공유 방법.
  17. 메모리 박스에 파라미터가 저장될 메모리 영역의 할당 관리를 수행하고, 상기 메모리 영역의 할당 관리에 따라 상기 메모리 박스에 저장된 매핑 테이블을 업데이트 하는 메모리 할당부; 및
    상기 파라미터가 저장될 메모리 영역의 할당 관리를 위한 파라미터 정보를 상기 메모리 할당부에 제공하고, 상기 메모리 박스에 저장된 파라미터를 공유하는 연산 처리부를 포함하고,
    상기 메모리 할당부는
    상기 메모리 박스에 저장된 매핑 테이블의 잠금을 관리하고, 상기 매핑 테이블을 업데이트하는 매핑 테이블 관리부를 포함하고,
    상기 매핑 테이블은
    상기 파라미터의 식별자 및 상기 파라미터에 상응하는 메모리 위치 정보를 포함하는 매핑 정보가 기록된 것을 특징으로 하는 파라미터 공유 장치.
  18. 청구항 17에 있어서,
    상기 메모리 할당부는
    상기 연산 처리부로부터 상기 메모리 영역의 할당 관리를 위한 상기 파라미터 정보를 수신하는 파라미터 정보 수신부; 및
    상기 매핑 테이블의 참조 카운트를 수정하여, 상기 메모리 영역의 할당 관리를 수행하는 공유 메모리 관리부;
    를 더 포함하는 것을 특징으로 하는 파라미터 공유 장치.
  19. 청구항 18에 있어서,
    상기 메모리 할당부는
    상기 참조 카운트에 따라 상기 메모리 영역에서 파라미터를 공유 중인 다른 파라미터 공유 장치의 개수를 확인하는 것을 특징으로 하는 파라미터 공유 장치.
  20. 청구항 19에 있어서,
    상기 메모리 박스는
    상기 연산 처리부의 파라미터 값 수정 요청에 따라 합저장 기능을 이용하여 상기 메모리 박스에 저장된 파라미터 값을 업데이트하는 것을 특징으로 하는 파라미터 공유 장치.
KR1020170060400A 2017-05-16 2017-05-16 파라미터 공유 장치 및 방법 KR102372423B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020170060400A KR102372423B1 (ko) 2017-05-16 2017-05-16 파라미터 공유 장치 및 방법
US15/979,169 US10585726B2 (en) 2017-05-16 2018-05-14 Parameter-sharing apparatus and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170060400A KR102372423B1 (ko) 2017-05-16 2017-05-16 파라미터 공유 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20180125734A KR20180125734A (ko) 2018-11-26
KR102372423B1 true KR102372423B1 (ko) 2022-03-10

Family

ID=64269802

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170060400A KR102372423B1 (ko) 2017-05-16 2017-05-16 파라미터 공유 장치 및 방법

Country Status (2)

Country Link
US (1) US10585726B2 (ko)
KR (1) KR102372423B1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE202017007517U1 (de) * 2016-08-11 2022-05-03 Twitter, Inc. Aggregatmerkmale für maschinelles Lernen
KR102197247B1 (ko) 2017-06-01 2020-12-31 한국전자통신연구원 파라미터 서버 및 그것에 의해 수행되는 분산 딥러닝 파라미터 공유 방법
US11816549B2 (en) * 2018-11-29 2023-11-14 International Business Machines Corporation Asynchronous gradient weight compression
KR102376155B1 (ko) * 2018-12-05 2022-03-21 한국전자통신연구원 병렬계산 가속기 할당률 결정 장치 및 방법
US11175960B2 (en) 2018-12-05 2021-11-16 Electronics And Telecommunications Research Institute Worker-scheduling method in cloud-computing system and apparatus for the same
US10983835B2 (en) 2018-12-05 2021-04-20 Electronics And Telecommunications Research Institute Apparatus and method for setting allocation rate of parallel-computing accelerator
KR20200113744A (ko) 2019-03-26 2020-10-07 한국전자통신연구원 심층 신경망 분할 방법 및 장치
KR20200119164A (ko) 2019-04-09 2020-10-19 한국전자통신연구원 정보 처리 장치 및 그것에 포함된 신경망 연산 장치의 동작 방법
US11663139B2 (en) 2019-04-22 2023-05-30 SK Hynix Inc. Apparatus for transmitting map information in memory system
CN113487019A (zh) * 2021-07-06 2021-10-08 湖南第一师范学院 电路故障诊断方法、装置、计算机设备和存储介质

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09297706A (ja) * 1996-04-30 1997-11-18 Ricoh Co Ltd データ処理装置及びデータ処理装置における共有メモリの排他制御方法
US6438586B1 (en) * 1996-09-30 2002-08-20 Emc Corporation File transfer utility which employs an intermediate data storage system
US8116243B2 (en) 2006-10-05 2012-02-14 Electronics And Telecommunications Research Institute Wireless sensor network and adaptive method for monitoring the security thereof
KR100918114B1 (ko) 2007-10-17 2009-09-22 한국전자통신연구원 이동단말기의 프레임워크 장치 및 컴포넌트의 상호 운용성보장 방법
KR20120140104A (ko) 2011-06-20 2012-12-28 현대자동차주식회사 메모리의 데이터 저장 방법
KR20130049360A (ko) * 2011-11-04 2013-05-14 텔코웨어 주식회사 장애 발생시의 db 연결 관리 방법
US9218573B1 (en) 2012-05-22 2015-12-22 Google Inc. Training a model using parameter server shards
US9047333B2 (en) * 2012-09-20 2015-06-02 Cray Inc Dynamic updates to a semantic database using fine-grain locking
KR20150016089A (ko) * 2013-08-02 2015-02-11 안병익 신경망 컴퓨팅 장치 및 시스템과 그 방법
GB201320770D0 (en) * 2013-11-25 2014-01-08 Microsoft Corp Communication system architecture
US9672464B2 (en) * 2014-02-28 2017-06-06 Qualcomm Incorporated Method and apparatus for efficient implementation of common neuron models
US20150324690A1 (en) 2014-05-08 2015-11-12 Microsoft Corporation Deep Learning Training System
FR3027176B1 (fr) * 2014-10-13 2016-12-09 Oberthur Technologies Rejeu d'un batch de commandes securisees dans un canal securise
US10417555B2 (en) 2015-05-29 2019-09-17 Samsung Electronics Co., Ltd. Data-optimized neural network traversal
FR3048526B1 (fr) * 2016-03-07 2023-01-06 Kalray Instruction atomique de portee limitee a un niveau de cache intermediaire
US10248693B2 (en) * 2016-04-27 2019-04-02 Sap Se Multi-layered row mapping data structure in a database system
US10754761B2 (en) * 2016-11-11 2020-08-25 Atlassian Pty Ltd Systems and methods for testing source code

Also Published As

Publication number Publication date
US10585726B2 (en) 2020-03-10
US20180336076A1 (en) 2018-11-22
KR20180125734A (ko) 2018-11-26

Similar Documents

Publication Publication Date Title
KR102372423B1 (ko) 파라미터 공유 장치 및 방법
US11487698B2 (en) Parameter server and method for sharing distributed deep learning parameter using the same
CN112153085B (zh) 一种数据处理方法、节点及区块链系统
US20220382460A1 (en) Distributed storage system and data processing method
US20190378016A1 (en) Distributed computing architecture for large model deep learning
WO2021008105A1 (zh) Tee系统中的数据传输方法和装置
US20110265098A1 (en) Message Passing with Queues and Channels
CN111105006B (zh) 一种深度学习网络训练系统及方法
KR102372424B1 (ko) 원격 직접 메모리 접근을 통한 분산 처리 장치 및 그 방법
US20180196603A1 (en) Memory Management Method, Apparatus, and System
CN107193503B (zh) 一种数据重删方法及存储设备
US20100057647A1 (en) Accommodating learned clauses in reconfigurable hardware accelerator for boolean satisfiability solver
US11144538B2 (en) Predictive database index modification
US11210228B2 (en) Method, device and computer program product for cache management
CN111104224B (zh) 一种基于fpga的动态图处理方法
US20230359628A1 (en) Blockchain-based data processing method and apparatus, device, and storage medium
CN112087471A (zh) 一种数据传输方法及fpga云平台
CN117707991B (zh) 一种数据读写方法、系统、设备及存储介质
CN109597903A (zh) 图像文件处理装置和方法、文件存储系统及存储介质
CN109460406A (zh) 一种数据处理方法及装置
CN104102725A (zh) 一种hdfs中热点数据文件的动态副本创建方法和系统
CN116893904A (zh) 神经网络模型的内存管理方法、装置、设备、介质及产品
CN109416621A (zh) 利用支持共享对象的计算机存储系统来恢复非易失性存储中的空闲空间
US20110246582A1 (en) Message Passing with Queues and Channels
CN110162395B (zh) 一种内存分配的方法及装置

Legal Events

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