KR20210042992A - 딥러닝 모델을 트레이닝하는 방법 및 장치 - Google Patents

딥러닝 모델을 트레이닝하는 방법 및 장치 Download PDF

Info

Publication number
KR20210042992A
KR20210042992A KR1020217009428A KR20217009428A KR20210042992A KR 20210042992 A KR20210042992 A KR 20210042992A KR 1020217009428 A KR1020217009428 A KR 1020217009428A KR 20217009428 A KR20217009428 A KR 20217009428A KR 20210042992 A KR20210042992 A KR 20210042992A
Authority
KR
South Korea
Prior art keywords
training
deep learning
section
description information
model description
Prior art date
Application number
KR1020217009428A
Other languages
English (en)
Other versions
KR102702130B1 (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
Priority claimed from CN201911162586.0A external-priority patent/CN110889492B/zh
Application filed by 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. filed Critical 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디.
Publication of KR20210042992A publication Critical patent/KR20210042992A/ko
Application granted granted Critical
Publication of KR102702130B1 publication Critical patent/KR102702130B1/ko

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • G06N3/0481

Landscapes

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

Abstract

본 개시의 실시예는 딥러닝 모델을 트레이닝하는 방법 및 장치를 개시한다. 당해 방법의 한 구체적인 실시예는 딥러닝 모델의 모델 설명 정보 및 구성 정보를 획득하는 단계; 구성 정보 내의 스플릿 포인트 변수에 따라 모델 설명 정보를 적어도 2개의 섹션으로 나누고 모델 설명 정보를 대응되는 리소스에 로딩하여 실행하는 단계; 일 배치의 트레이닝 샘플을 제1 섹션의 모델 설명 정보에 대응되는 리소스에 입력한 후, 트레이닝을 시작하고 획득한 컨텍스트 정보를 다음 섹션의 모델 설명 정보에 대응되는 리소스의 입력으로 하고, 마지막 섹션의 모델 설명 정보에 대응되는 리소스의 실행 결과를 획득할 때까지 이와 같이 유추하고, 트레이닝 완성 조건이 충족되는 경우, 트레이닝이 완성된 딥러닝 모델을 출력하는 단계; 및 아닌 경우, 계속하여 다음 배치의 트레이닝 샘플을 획득하여 트레이닝 완성 조건을 충족시킬 때까지 상기 트레이닝 단계를 수행하는 것을 포함한다. 당해 실시예는 이종 기기의 자유 조합을 구현하고 다양한 계산 기기의 계산 능력을 충분히 발휘시키고 트레이닝 속도를 향상시킨다.

Description

딥러닝 모델을 트레이닝하는 방법 및 장치
본 특허출원은 2019년 11월 25일에 제출한 출원번호가 201911162586.0이고 출원인이 "베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디."이고 발명의 명칭이 "딥러닝 모델을 트레이닝하는 방법 및 장치"인 중국특허출원의 우선권을 주장하며, 당해 출원의 전체 내용은 본 출원에 원용된다.
본 개시의 실시예는 컴퓨터 기술분야에 관한 것으로, 구체적으로 딥러닝 모델을 트레이닝하는 방법 및 장치에 관한 것이다.
현재 딥러닝 모델이 더욱 심층적이고, 더욱 넓은 표현 및 더욱 복잡한 구조 등 다양한 방향으로 발전함에 따라, 고효율 계산능력을 구비한 GPU(Graphics Processing Unit, 그래픽 처리 장치)는 이미 해당 분야에서 없어서는 안될 계산 리소스로 되고있다. 흔히 알려진 병렬 방안은 모델 병렬과 데이터 병렬 2 가지로 나뉜다.
모델 병렬의 기술방안은 모든 모델 파라미터를 서로 다른 기기에 할당하여 계산하고, 각각의 기기는 일부분 파라미터를 유지관리한다. 서로 다른 기기의 계산이 그 전 기기의 계산 컨텍스트(context)에 의존하므로 계산 기기(예를 들면 GPU)의 이용률을 향상시키기 위해 모델 병렬 파이프라인은 하나의 큰 배치의 데이터를 복수의 작은 배치로 해체함으로써 서로 다른 작은 배치 데이터의 계산이 복수의 계산 기기에서 병행 수행될 수 있도록 한다. 모델 병렬 파이프라인은 동기 계산과 비동기 계산 2가지 유형으로 더 세분화될 수 있다. 동기 계산 모드에서는, 모든 계산 기기는 모든 작은 배치의 순방향 계산 태스크를 완성한 후, 모두 역방향 계산에 필요한 컨텍스트를 블록 대기하거나 또는 모든 역방향 계산이 완성된 후 파라미터의 동기 업데이트를 대기하는바, 이로 인해 계산 기기가 충분히 이용될 수 없다. 비동기 계산에서는 서로 다른 큰 배치의 계산이 같은 시각에 진행될 수 있는 동시에, 서로 다른 작은 배치 역방향 계산 및 파라미터 업데이트를 가능한 앞당길 수 있다. 그러나 당해 방안은 각 절차에서의 계산 능력이 불균등한 조건에서는 계산 능력이 상대적으로 높은 기기를 충분히 이용할 수 없게 된다.
데이터 병렬은 다른 한가지 병렬 방안이다. 데이터 병렬 파이프라인은 계산 기기를 서로 다른 배치의 데이터에 할당하는바, 기기간 계산이 자연적으로 병행 특성을 가지게 되고, 기기 이용률이 보다 높다. 그러나, 당해 방안은 이종 기기를 충분히 이용하지 못하는바, 즉, 서로 다른 기기 계산 리소스의 배정 비율를 지원하는 것은 막론하고, 모든 데이터 흐름은 단일 종류의 기기에서 실행되어야 한다.
본 개시의 실시예는 딥러닝 모델을 트레이닝하는 방법 및 장치를 제공한다.
첫 번째 측면으로, 본 개시의 실시예는 딥러닝 모델을 트레이닝하는 방법을 제공하는바, 이는, 딥러닝 모델의 모델 설명 정보 및 구성 정보를 획득하는 단계 - 여기서, 모델 설명 정보는 변수 및 조작을 포함하고 구성 정보는 스플릿 포인트 변수 및 각 섹션에 할당되는 리소스의 명칭을 포함함 - ; 구성 정보 내의 스플릿 포인트 변수에 따라 모델 설명 정보를 적어도 2개의 섹션으로 나누고 각 섹션에 할당되는 리소스의 명칭에 따라 모델 설명 정보를 대응되는 리소스에 로딩하여 실행하는 단계; 일 배치의 트레이닝 샘플을 획득하고 당해 배치의 트레이닝 샘플을 제1 섹션의 모델 설명 정보에 대응되는 리소스에 입력함으로써 트레이닝을 시작하여 획득한 중간 결과를 제1 컨텍스트 정보에 저장하는 것; 제1 컨텍스트 정보를 다음 섹션의 모델 설명 정보에 대응되는 리소스에 입력하여 제2 컨텍스트 정보를 획득하는 것; 마지막 섹션의 모델 설명 정보에 대응되는 리소스의 실행 결과를 획득할 때까지 이와 같이 유추하는 것; 및 트레이닝 완성 조건이 충족되는 경우, 트레이닝이 완성된 딥러닝 모델을 출력하는 것; 을 포함하는 트레이닝 단계를 수행하거나, 아닌 경우, 계속하여 다음 배치의 트레이닝 샘플을 획득하여 트레이닝 완성 조건을 충족시킬 때까지 상기 트레이닝 단계를 수행하는 것을 특징으로 한다.
일부 실시예에서, 구성 정보는 각 섹션에 할당되는 리소스의 비율를 더 포함하고, 각 섹션에 할당되는 리소스의 명칭에 따라 모델 설명 정보를 대응되는 리소스에 로딩하여 실행하는 단계는, 각 섹션에 할당되는 리소스의 비율에 따라 각 할당될 리소스의 수량을 계산하는 단계; 및 각 섹션에 할당되는 리소스의 명칭 및 수량에 따라 모델 설명 정보를 대응되는 리소스에 로딩하여 실행하는 단계;를 포함한다.
일부 실시예에서, 구성 정보 내의 스플릿 포인트 변수에 따라 모델 설명 정보를 적어도 2개의 섹션으로 나누는 단계는, 스플릿 포인트 변수를 종점으로 하는 순방향 부분을 제1 섹션으로 결정하는 단계; 스플릿 포인트 변수에서 시작하는 나머지 순방향 부분에 손실 부분으로부터 스플릿 포인트 변수에 대응되는 그래디언트 변수까지를 추가하여 제2 섹션으로 결정하는 단계; 및 스플릿 포인트 변수에 대응되는 그래디언트 변수에서 시작하는 나머지 역방향 부분을 제3 섹션으로 결정하는 단계;를 포함한다.
일부 실시예에서, 딥러닝 모델의 모델 설명 정보 및 구성 정보를 획득하는 단계는, 모델 설명 정보의 조작에 따라 메모리 인터랙션이 빈번한 조작과 계산 밀집형 조작 간의 변환 변수를 결정하여 스플릿 포인트 변수로 하는 단계; 메모리 인터랙션이 빈번한 조작을 CPU에 할당하여 실행하는 단계; 및 계산 밀집형 조작을 CPU에 할당하여 실행하는 단계;를 포함한다.
일부 실시예에서, 당해 방법은, 트레이닝 샘플을 소정의 몫으로 분할하는 단계; 각 몫의 트레이닝 샘플을 사용하여 트레이닝하여 일 세트의 딥러닝 모델의 파라미터를 획득하는 단계; 및 일정한 회차 간격으로 각 그룹의 딥러닝 모델의 파라미터를 한번씩 동기화하는 단계;를 더 포함한다.
일부 실시예에서, 컨텍스트 정보는 큐를 통해 전송된다.
두 번째 측면으로, 본 개시의 실시예는 딥러닝 모델을 트레이닝하는 장치를 제공하는바, 이는, 딥러닝 모델의 모델 설명 정보 및 구성 정보를 획득하도록 구성되는 획득 유닛 - 여기서, 모델 설명 정보는 변수 및 조작을 포함하고 구성 정보는 스플릿 포인트 변수 및 각 섹션에 할당되는 리소스의 명칭을 포함함 - ; 구성 정보 내의 스플릿 포인트 변수에 따라 모델 설명 정보를 적어도 2개의 섹션으로 나누고 각 섹션에 할당되는 리소스의 명칭에 따라 모델 설명 정보를 대응되는 리소스에 로딩하여 실행하도록 구성되는 스플릿 유닛; 일 배치의 트레이닝 샘플을 획득하고 당해 배치의 트레이닝 샘플을 제1 섹션의 모델 설명 정보에 대응되는 리소스에 입력함으로써 트레이닝을 시작하여 획득한 중간 결과를 제1 컨텍스트 정보에 저장하는 것; 제1 컨텍스트 정보를 다음 섹션의 모델 설명 정보에 대응되는 리소스에 입력하여 제2 컨텍스트 정보를 획득하는 것; 마지막 섹션의 모델 설명 정보에 대응되는 리소스의 실행 결과를 획득할 때까지 이와 같이 유추하는 것; 및 트레이닝 완성 조건이 충족되는 경우, 트레이닝이 완성된 딥러닝 모델을 출력하는 것;을 포함하는 트레이닝 단계를 수행하도록 구성되는 트레이닝 유닛; 및 트레이닝 완성 조건을 충족하지 않는 경우, 계속하여 다음 배치의 트레이닝 샘플을 획득하여 트레이닝 완성 조건을 충족시킬 때까지 상기 트레이닝 단계를 수행하도록 구성되는 반복 유닛;을 포함한다.
일부 실시예에서, 구성 정보는 각 섹션에 할당되는 리소스의 비율를 더 포함하고, 스플릿 유닛은 나아가, 각 섹션에 할당되는 리소스의 비율에 따라 각 할당될 리소스의 수량을 계산하고, 각 섹션에 할당되는 리소스의 명칭 및 수량에 따라 모델 설명 정보를 대응되는 리소스에 로딩하여 실행하도록 구성된다.
일부 실시예에서, 스플릿 유닛은 나아가, 스플릿 포인트 변수를 종점으로 하는 순방향 부분을 제1 섹션으로 결정하고, 스플릿 포인트 변수에서 시작하는 나머지 순방향 부분에 손실 부분으로부터 스플릿 포인트 변수에 대응되는 그래디언트 변수까지를 추가하여 제2 섹션으로 결정하고, 스플릿 포인트 변수에 대응되는 그래디언트 변수에서 시작하는 나머지 역방향 부분을 제3 섹션으로 결정하도록 구성된다.
일부 실시예에서, 획득 유닛은 나아가, 모델 설명 정보의 조작에 따라 메모리 인터랙션이 빈번한 조작과 계산 밀집형 조작 간의 변환 변수를 결정하여 스플릿 포인트 변수로 하고, 메모리 인터랙션이 빈번한 조작을 CPU에 할당하여 실행하고, 계산 밀집형 조작을 CPU에 할당하여 실행하도록 구성된다.
일부 실시예에서, 당해 장치는 트레이닝 샘플을 소정의 몫으로 분할하고, 각 몫의 트레이닝 샘플을 사용하여 트레이닝하여 일 세트의 딥러닝 모델의 파라미터를 획득하고, 일정한 회차 간격으로 각 그룹의 딥러닝 모델의 파라미터를 한번씩 동기화하도록 구성되는 병합 유닛을 더 포함한다.
일부 실시예에서, 컨텍스트 정보는 큐를 통해 전송된다.
세 번째 측면으로, 본 개시의 실시예는 전자 기기를 제공하는바, 이는, 하나 또는 복수의 프로세서; 및 하나 또는 복수의 프로그램이 저장되어 있는 저장 장치를 포함하고, 하나 또는 복수의 프로그램이 하나 또는 복수의 프로세서에 의해 실행되는 경우, 하나 또는 복수의 프로세서가 첫 번째 측면에 따른 어느 한 방법을 구현하도록 한다.
네 번째 측면으로, 본 개시의 실시예는 컴퓨터 프로그램이 저장되는 컴퓨터 판독 가능한 매체를 제공하는바, 여기서, 프로그램이 프로세서에 의해 실행되는 경우, 첫 번째 측면에 따른 어느 한 방법이 구현된다.
본 개시의 실시예에 의해 제공되는 딥러닝 모델을 트레이닝하는 방법 및 장치는, 비동기 파이프라인 프레임워크를 제시하여 이종 계산 기기의 자유 조합(CPU, GPU 및 네트워크 카드 등에 한정되지 않고, 구체적인 계산은 조작에 의해 지원이 제공됨)을 구현함으로써, 서로 다른 기기의 특징점을 충분히 활용하는 바 예를 들면 메모리 인터랙선 속도가 더욱 빠른 CPU에서 임베딩 룩업(Embedding Lookup)의 계산과 업데이트 조작을 수행하고 연산 속도가 더욱 빠른 GPU에서 행렬곱셈과 같은 계산 밀집형 조작을 수행한다. 또한, 서로 다른 특징점의 조작에 대하여 서로 다른 비율의 계산 리소스를 할당하고 비동기 병행으로 수행함으로써, 다양한 계산 기기의 연산 능력을 충분히 활용하고 전반적인 스루풋(Throughput)을 향상시킬 수 있다.
아래 첨부 도면을 참조한 일 비한정적 실시예에 대한 상세한 설명을 통해 본 개시의 다른 특징, 목적 및 이점이 더욱 뚜렷해질 것이다.
도 1은 본 개시의 일 실시예가 적용 가능한 예시적인 시스템 아키텍처의 도면이다.
도 2는 본 개시에 따른 딥러닝 모델을 트레이닝하는 방법의 일 실시예의 흐름도이다.
도 3a, 도 3b는 본 개시에 따른 딥러닝 모델을 트레이닝하는 방법의 일 응용 시나리오의 개략도이다.
도 4는 본 개시에 따른 딥러닝 모델을 트레이닝하는 방법의 다른 일 실시예의 흐름도이다.
도 5는 본 개시에 따른 딥러닝 모델을 트레이닝하는 방법의 다른 일 응용 시나리오의 개략도이다.
도 6는 본 개시에 따른 딥러닝 모델을 트레이닝하는 장치의 일 실시예의 구조 개략도이다.
도 7은 본 개시의 실시예를 구현하기에 적합한 전자 기기의 컴퓨터 시스템의 구조 개략도이다.
아래 첨부 도면 및 실시예를 결부하여 본 개시를 나아가 상세히 설명하고자 한다. 여기서 설명하는 구체 실시예는 단지 관련 발명을 해석하기 위한 것일 뿐, 당해 발명에 대한 한정이 아니라는 것을 이해할 수 있다. 따로 더 부연하면, 설명의 편의를 위하여, 첨부 도면에는 관련 발명과 상관되는 부분만을 도시하였다.
부연하면, 모순되지 않는 한, 본 개시에서의 실시예 및 실시예에서의 특징은 상호 조합될 수 있다. 아래 첨부 도면을 참조하고 실시예를 결부하여 본 개시를 상세히 설명하고자 한다.
도 1 은 본 개시의 딥러닝 모델을 트레이닝하는 방법 또는 딥러닝 모델을 트레이닝하는 장치의 실시예가 적용 가능한 예시적인 시스템 아키텍처(100)이다.
도 1에 도시한 바와 같이, 시스템 아키텍처(100)는 단말 장치(101, 102, 103), 네트워크(104) 및 서버(105)를 포함할 수 있다. 네트워크(104)는 단말 장치(101, 102, 103)와 서버(105) 사이에서 통신링크를 제공하는 매체로 사용된다. 네트워크(104)는 다양한 연결 유형, 예를 들면 유선, 무선 통신 링크 또는 광섬유 케이블 등을 포함할 수 있다.
사용자는 단말 장치(101, 102, 103)를 사용하여 네트워크(104)를 통해 서버(105)와 인터랙트함으로써 메세지 등을 수신 또는 송신할 수 있다. 단말 장치(101, 102, 103)에는 다양한 통신 클라이언트 애플리케이션, 예를 들면 모델 트레이닝 애플리케이션, 웹페이지 브라우저 애플리케이션, 쇼핑 애플리케이션, 검색 애플리케이션, 인스턴트 메시징 툴, 메일박스 클라이언트, 소셜 플랫폼 소프트웨어 등이 설치되어 있을 수 있다.
단말 장치(101, 102, 103)는 하드웨어일 수도 있고 소프트웨어일 수도 있다. 단말 장치(101, 102, 103)가 하드웨어인 경우, 트레이닝 샘플의 업로드를 지원하는 다양한 전자 기기일 수 있는바, 스마트폰, 태블릿 컴퓨터, 전자책 리더, MP3플레이어(Moving Picture Experts Group Audio Layer III), MP4(Moving Picture Experts Group Audio Layer IV) 플레이어, 랩톱 휴대형 컴퓨터 및 데스크톱 컴퓨터 등을 포함하나 이에 제한되지 않는다. 단말 장치(101, 102, 103)가 소프트웨어인 경우, 상기 나열한 전자 기기에 설치할 수 있다. 이는 복수의 소프트웨어 또는 소프트웨어 모듈(예를 들면 분산 서비스를 제공함)로 구현될 수도 있고 단일 소프트웨어 또는 소프트웨어 모듈로 구현될 수도 있다. 이에 대해 구체적으로 제한하지 않는다.
서버(105)는 다양한 서비스를 제공할 수 있는 서버로, 예를 들면 단말 장치(101, 102, 103)에서 사용되는 딥러닝 모델에 지원을 제공하는 백스테이지 트레이닝 서버이다. 백스테이지 트레이닝 서버는 수신된 트레이닝 샘플을 포함하는 트레이닝 요청 등 데이터에 대해 분석하는 등의 처리를 하고 처리 결과(예를 들면 트레이닝이 완성된 딥러닝 모델)를 단말 장치에 피드백할 수 있다.
서버(105)의 계산 유닛은 일반적으로 CPU(central processing unit, 중앙 처리 장치), GPU 및 네트워크 카드(설명의 편의를 위해, 네트워크 카드 간의 통신도 계산으로 간주함) 세 부분으로 구성된다. 이러한 세 부분은 서로 다른 기능 및 특징점을 가지므로 하나의 시스템에서, 우리는 통상적으로 이에 대해 다음과 같이 분업한다.
CPU는 기능적인 범용성을 가지므로 흐름 제어 및 논리 처리에 능한바, 특히 불규칙적인 데이터 구조 또는 예측불가능한 저장 구조에 대한 처리 능력이 강하다. 딥러닝 태스크에서, CPU는 일반적으로 데이터의 로딩, 사전 처리 및 덤프(dump), GPU에서의 데이터 전송 및 함수 호출을 시작하는 것, 네트워크 전송을 시작하는 것 등을 담당하고;
GPU는 코어가 많으므로 데이터 병렬 계산에 더욱 능한바, 특히 규칙적인 데이터 구조, 예측가능한 저장 모드에 대하여 막대한 속도 우세를 갖는다. 그러므로 딥러닝 태스크에서, GPU는 일반적으로 계산을 담당하며, 딥러닝에서 가장 핵심적인 요소이고;
네트워크 카드는 데이터 및 모델의 업로드 및 다운로드, 분산 트레이닝에서의 통신을 담당하고;
GPU의 이용률을 향상시키기 위해, 한편, GPU 이용률이 보다 낮은 조작을 CPU로 옮겨 실행하여야 하고, 다른 한편, 각 계산 기기 간의 계산을 병행으로 수행하여야 하는바, 따라서 CPU, GPU 및 네트워크 카드 삼자의 계산의 직렬로 인한 GPU 아이들(idle)을 회피하여야 한다는 것은 자명하다.
부연하면, 서버는 하드웨어일 수도 있고 소프트웨어일 수도 있다. 서버가 하드웨어인 경우, 복수의 서버로 구성된 분산 서버 클러스터로 구현할 수도 있고 단일 서버로 구현될 수도 있다. 서버가 소프트웨어인 경우, 복수의 소프트웨어 또는 소프트웨어 모듈(예를 들면 분산 서비스를 제공하는 복수의 소프트웨어 또는 소프트웨어 모듈)로 구현할 수도 있고 단일 소프트웨어 또는 소프트웨어 모듈로 구현할 수도 있다. 이에 대해 구체적으로 제한하지 않는다.
부연하면, 본 개시의 실시예에 의해 제공되는 딥러닝 모델을 트레이닝하는 방법은 일반적으로 서버(105)에 의해 실행되고, 따라서, 딥러닝 모델을 트레이닝하는 장치는 일반적으로 서버(105)에 설치된다.
도 1에서의 단말 장치, 네트워크 및 서버의 수량은 단지 예시적인 것일 뿐임을 이해하여야 한다. 구현의 필요에 따라, 임의 수량의 단말 장치, 네트워크 및 서버를 구비할 수 있다.
계속하여 도 2를 참조하면, 본 개시의 딥러닝 모델을 트레이닝하는 방법의 일 실시예에 따른 흐름(200)을 도시한다. 당해 딥러닝 모델을 트레이닝하는 방법은 하기 단계들을 포함한다.
단계201, 딥러닝 모델의 모델 설명 정보 및 구성 정보를 획득한다.
본 실시예에서, 딥러닝 모델을 트레이닝하는 방법의 수행주체(예를 들면 도 1에 도시한 서버)는 유선 연결방식 또는 무선 연결방식을 통해 사용자가 모델 트레이닝을 위해 이용하는 단말로부터 트레이닝 요청을 수신할 수 있다. 여기서, 트레이닝 요청은 딥러닝 모델의 모델 설명 정보 및 구성 정보를 포함할 수 있다. 트레이닝 요청은 트레이닝 샘플을 더 포함할 수 있다. 모델 설명 정보는 변수 및 조작을 포함하고 구성 정보는 스플릿 포인트 변수 및 각 섹션에 할당되는 리소스의 명칭을 포함한다. 우선 몇몇 명사를 정한다. 하나의 완전한 딥러닝 모델은 Program(모델 설명 정보)을 통해 설명되며, 여기에는 주로 조작(즉, OP)과 변수(Variable) 두가지 엔티티가 포함된다. 예컨대, 완전 연결 조작, 룩업 임베딩(Lookup Embedding) 조작은 모두 OP로 볼 수 있다. 네트워크의 파라미터 및 다양한 데이터의 중간 표현은 모두 Variable를 통해 설명된다. Python 언어로 작성된 모델을 사용하여 정보를 설명할 수 있다. 백엔드는 실행 가능한 C++프로그램으로 전환됨으로써 지정된 리소스(CPU 또는 GPU)에서 실행된다.
단계202, 구성 정보 내의 스플릿 포인트 변수에 따라 모델 설명 정보를 적어도 2개의 섹션으로 나누고 각 섹션에 할당되는 리소스의 명칭에 따라 모델 설명 정보를 대응되는 리소스에 로딩하여 실행한다.
본 실시예에서, 구성 정보는 스플릿 포인트 변수 및 각 섹션에 할당되는 리소스의 명칭을 포함한다. 사용자는 구성 정보를 통해 어디에서 스플릿을 진행하는 지, 및 스플릿된 각 섹션의 모델 설명 정보는 어느 기기에서 실행되는 지를 설정한다. 스플릿 포인트 변수는 수동으로 선별될 수도 있고, 프로그램을 통해 순방향 계산과 손실 값 계산이 만나는 위치에서의 변수를 판단하여 스플릿 포인트 변수로 할 수도 있다. 일반적인 트레이닝에서는 하나의 Program 전체가 어느 한 기기(예를 들면 GPU 또는 CPU)에서 실행된다. 그러나 파이프라인 병렬은 Program을 적어도 2개의 섹션(Section)으로 스플릿하는 것을 지원하고 각 Section은 그가 실행될 기기를 지정할 수 있다. 이 또한 모델 병행 사상의 연장이다. 구체적으로, 사용자는 자체 정의 순방향의 Program에서 파이프라인 스플릿 포인트(스플릿 포인트는 모두 Variable 또는 Variable의 리스트인바, 즉, 복수의 스플릿 포인트 변수를 가질 수 있음)를 지정할 수 있고, 서버는 이에 따라 순방향, 역방향 및 최적화를 포함하는 완전한 Program을 복수의 Section으로 스플릿하고, 스플릿하여 획득한 Section의 Program으로 각자의 계산을 설명할 수 있다. 순방향 부분은 신경망 트레이닝의 순방향 전파 과정에 관한 것이고, 역방향 부분은 역방향 부분으로도 지칭되며 신경망 트레이닝의 역방향 전파에 관한 것이다. 또 일부분은 손실 값을 계산하기 위한 것이다. 스플릿 포인트 변수에 따라 직접 스플릿할 수도 있고 스플릿 포인트 변수에 대응되는 그래디언트 변수를 다른 스플릿 포인트 변수로 자동으로 설정하여 스플릿할 수도 있다. 다시말해, 하나의 스플릿 포인트 변수를 설치함으로써 3개의 섹션을 스플릿해낼 수 있다. K개의 스플릿 포인트 변수를 설정한 경우에는 2K+1개의 섹션을 스플릿해낼 수 있다.
도 3a은 하나의 완전한 예를 설명한다. 하나의 완전한 Program은 순방향(좌)과 역방향(우) 두 부분을 포함한다. 사용자가 cut_var이라는 이러한 Variable를 스플릿 포인트로 지정하면 파이프라인 프레임워크는 전체 Program을 세 부분으로 스플릿한다.
1. cut_var를 종점으로 하는 순방향 부분(도에서의 section0).
2. cut_var에서 시작하는 나머지 순방향 부분에 loss에서 시작하여 cut_var@GRAD까지를 추가한 역방향 부분(도에서의 section1). 여기서, cut_var@GRAD는 역방향 네트워크에서의 cut_var에 대응되는 그래디언트 변수임을 유의하여야 한다.
3. cut_var@GRAD에서 시작하는 나머지 역방향 부분(도에서의 section2).
상술한 Program에 대한 스플릿이 완성된 후, 구성 정보는 각 Section에 그가 실행될 기기를 지정할 수 있다. 예를 들면 section0은 CPU에서 실행되도록 지정하고 section1은 GPU에서 실행되도록 지정하는 등이 있다. 당해 기능에 의하면 파이프라인 병렬 프레임워크를 이용하여 트레이닝할 수 있고 한 대의 기계에 의해 제공되는 각 기기를 충분히 이용할 수 있다. 할당의 원칙은 데이터의 로딩, 사전 처리 및 덤프, GPU에서의 데이터 전송 및 함수 참조를 시작하는 것, 네트워크 전송을 시작하는 것 등과 같이 메모리와 빈번하게 인터렉트하는 모델의 설명 정보를 CPU에 지정하여 실행하는 것이다. 밀집형 계산에 관련되는 모델 설명 정보를 GPU에 할당하여 실행한다. 예를 들면 메모리 인터랙선 속도가 더욱 빠른 CPU에서 임베딩 룩업(Embedding Lookup)의 계산과 업데이트 조작을 수행하고 연산 속도가 더욱 빠른 GPU에서 행렬곱셈과 같은 계산 밀집형 조작을 수행한다. 또한, 서로 다른 특징점의 조작에 대하여 서로 다른 비율의 계산 리소스를 할당하고 비동기 병행으로 수행함으로써, 다양한 계산 기기의 연산 능력을 충분히 발휘시킬 수 있고 전반적인 스루풋(throughput)을 향상시킬 수 있다.
모델 설명 정보는 Python 언어로 작성될 수 있고 그 다음 C++등의 실행가능한 프로그램으로 전환된 후, 할당된 리소스에서 실행될 수 있다.
단계203, 일 배치의 트레이닝 샘플을 획득하고 당해 배치의 트레이닝 샘플을 제1 섹션의 모델 설명 정보에 대응되는 리소스에 입력함으로써 트레이닝을 시작하여 획득한 중간 결과를 제1 컨텍스트 정보에 저장하고, 제1 컨텍스트 정보를 다음 섹션의 모델 설명 정보에 대응되는 리소스에 입력하여 제2 컨텍스트 정보를 획득하고, 마지막 섹션의 모델 설명 정보에 대응되는 리소스의 실행 결과를 획득할 때까지 이와 같이 유추한다.
본 실시예에서, Paddle 딥러닝 프레임워크의 범용성을 고려하여 Paddle 프레임워크의 기본 개념을 그대로 사용하고 여기서의 일부 엔티티를 간단하게 변경 및 확장시켜 본 기능을 구현한다. 사용자가 Python측에서 네트워크를 설명하는 경우에 지정된 Program 스플릿 포인트, 각 Section에 의해 실행되는 기기 종류 및 병렬도 등의 구성 정보는 proto 포맷으로 백엔드(C++) 트레이닝 엔진에 입력됨으로써 백엔드가 실행 중에 다양한 구성 정보를 획득하여 후속의 초기화 및 계산 등의 일련의 조작을 할 수 있도록 한다.
우선 아래에서 빈번히 사용될 개념인 Scope를 간단히 소개하도록 한다. Scope는 Paddle에서의 중요한 일반 개념인바, 배치 샘플 계산 과정에서의 컨텍스트 정보를 저장하기 위한 것으로, 예를 들면 중간 변수 등이 있다. 동일한 Program이 복수의 서로 다른 Scope에서 실행되는 경우, 서로 다른 Scope에 의해 변수가 격리되어 상호 간섭이 없게 된다. 그러나 파이프라인 병렬의 설계에서는, Scope가 인접한 Section간의 통신 엔티티로서, 전송을 수행하고, 전체 프로그램 실행 초기에 통일적으로 구축되고 수행 과정에 순서에 따라 Section에서 순차로 전송된다. 아래의 ScopeQueue가 바로 Scope를 저장하는 큐이다.
Paddle 프레임워크는 어느 한 Section에서의 계산의 전체 과정을 관리하기 위한 컴포넌트(클래스) SectionWorker(섹션 실행자)를 포함한다. 주요 작업은 다음과 같은 절차를 포함한다.
1. 초기화 단계에서는 입력된 proto 구성 정보에 따라 당해 Section에서의 OP를 구축한다.
2. 수행 단계에서는 대기를 저해하고, Queue에서 Scope 리소스를 획득하고; 현재 Scope에 기반하여 Program에서의 설명의 계산을 완성하고; 계산 결과를 포함하는 Scope를 출력 Queue에 넣는다.
Paddle 프레임워크는 복수의 SectionWorker의 라이프사이클을 관리하기 위한 컴포넌트(클래스) PipelineTrainer(파이프라인 트레이닝기)를 포함한다. 주요 작업은 다음과 같은 절차를 포함한다.
1. 전역 리소스의 스페이스 개척 및 초기화 작업을 하는 것: 예를 들면 SectionWorker의 구축에 있어서, 각 SectionWorker에 대하여 OP리스트를 생성하고 인접 Section 간의 Scope큐 등의 엔티티를 구축하는 등이 있다.
2. 파이프라인 병렬의 스타트 및 필요한 스케줄링 등의 작업을 구현한다. 예를 들면 각 SectionWorker에 대하여 하나의 실행 스레드 및 스레드 간의 동기화 등 논리를 구축한다.
짚고 넘어가야 할 점으로는, 계산 Scope에서 신청한 저장 리소스를 멀티플렉싱하고자 PipelineTrainer는 초기화될 때 1회성으로 충분량의 Scope를 구축하고 트레이닝이 종료된 후 폐기한다.
상술한 내용에 대한 한 직관적인 구현은 도 3b에 도시한 바와 같다.
단계204, 트레이닝 완성 조건을 충족시키는 경우, 트레이닝이 완성된 딥러닝 모델을 출력한다.
본 실시예에서, 트레이닝 완성 조건은 손실 값이 미리 결정된 값보다 작은 것 또는 트레이닝 횟수가 상한에 달하는 것 등을 포함할 수 있다. 트레이닝이 완성되는 경우, 딥러닝 모델을 출력한다. 단말 장치에 반환할 수도 있고 발급 서버에 송신하여 다른 사용자한테 발급하여 사용하도록 할 수도 있다. 트레이닝이 완성되지 않은 경우, 다음 배치의 트레이닝 샘플을 업데이트하고, 계속하여 단계203을 수행한다.
나아가 도 4를 참조하면, 이는 딥러닝 모델을 트레이닝하는 방법의 또 일 실시예의 흐름(400)을 도시한다. 당해 딥러닝 모델을 트레이닝하는 방법의 흐름(400)은 하기 단계들을 포함한다.
단계401, 딥러닝 모델의 모델 설명 정보 및 구성 정보를 획득한다.
단계401은 단계201과 기본적으로 동일하므로, 상세한 설명을 생략하기로 한다.
단계402, 구성 정보 내의 스플릿 포인트 변수에 따라 모델 설명 정보를 적어도 2개의 섹션으로 나누고 각 섹션에 할당되는 리소스의 비율에 따라 각 할당될 리소스의 수량을 계산한다.
단계202와 대체로 동일하나, 차이로는 구성 정보가 각 섹션에 할당되는 리소스의 비율, 즉, 각 section의 병렬도를 포함하는 데 있다. 예를 들면 在CPU에서 실행되는 section0은 몇 개의 스레드를 사용하여 트레이닝하고 GPU에서 실행되는 section1은 몇 개의 GPU 카드를 사용하여 트레이닝하는 등이다. 이러한 계산 리소스를 비율로 배분하는 것을 지원하는 방식은 서로 다른 기기에 의한 계산 속도가 서로 다름으로 인한 대시 시간을 충분히 보완할 수 있다. 예를 들면 상술한 네트워크에서, section1의 계산 시간이 section2의 5배인 경우, section1과 section2의 계산 리소스를 5:1로 배분하여 2개의 section의 실행 시간이 근접하도록 함으로써 각 기기의 계산 리소스를 충분히 활용할 수 있다.
단계403, 각 섹션에 할당되는 리소스의 명칭 및 수량에 따라 모델 설명 정보를 대응되는 리소스에 로딩하여 실행한다.
단계404, 일 배치의 트레이닝 샘플을 획득하고 당해 배치의 트레이닝 샘플을 제1 섹션의 모델 설명 정보에 대응되는 리소스에 입력함으로써 트레이닝을 시작하여 획득한 중간 결과를 제1 컨텍스트 정보에 저장하고, 제1 컨텍스트 정보를 다음 섹션의 모델 설명 정보에 대응되는 리소스에 입력하여 제2 컨텍스트 정보를 획득하고, 마지막 섹션의 모델 설명 정보에 대응되는 리소스의 실행 결과를 획득할 때까지 이와 같이 유추한다.
단계405, 트레이닝 완성 조건을 충족시키는 경우, 트레이닝이 완성된 딥러닝 모델을 출력한다.
단계403 내지 단계405는 단계202 내지 204와 기본적으로 같으므로, 상세한 설명을 생략하기로 한다.
도 4로부터 보아낼 수 있는바, 도 2에 대응되는 실시예에 비하면, 본 실시예에서의 딥러닝 모델을 트레이닝하는 방법의 흐름(400)은 이종 기기의 특성을 진보적으로 이용하는바, 계산 리소스를 비율로 배분하는 것을 지원함으로써 높은 스루풋(throughput)의 계산 기기를 최대화로 이용하는바, 따라서 시스템의 전체적인 성능을 최대화시키고, 도 5에 도시한 바와 같이, 가로 무늬:무(無) 무늬:세로 무늬 리소스의 사용 비율를 2:1:2로 배정함으로써 모든 기기의 이용률을 충분히 채우게끔 할 수 있다. 여기서, 1-4, a-d는 각각 처리할 데이터를 나타낸다. 가로 무늬 및 세로 무늬는 2개의 CPU 처리를 나타내고, 무(無) 무늬는 하나의 GPU 처리를 나타낸다. GPU는 CPU보다 처리속도가 빠르므로 가로 방향으로 점용되는 시간적 너비가 작다.
본 발명은 상술한 창의성 특징저 외에도, 또한 데이터 병렬 확장을 자연적으로 지원한다. 즉, 상기 변경을 거친 Program을 완전하게 복수 개 카피한 후, 데이터를 대응되는 개수로 분할하여, 동시에 트레이닝하는 것이다.
본 발명은 모델 병렬 및 데이터 병렬의 능력을 동시에 겸비한다는 것을 보아낼 수 있다. 양자의 능력이 통합되는 동시에, 또한 이종 기기를 지원하면서 서로 다른 기기의 계산 리소스 비율의 배정을 지원하는 기능이 추가되는바, 트레이닝 모드를 더 풍부히할 수 있다.
나아가 도 6을 참조하면, 상술한 각 도면에 도시한 방법에 대한 구현으로, 본 개시는 딥러닝 모델을 트레이닝하는 장치의 일 실시예를 제공하는바, 당해 장치 실시예는 도 2에 도시한 방법 실시예에 대응되는 것으로, 당해 장치는 구체적으로 다양한 전자 기기에 응용될 수 있다.
도 6에 도시한 바와 같이, 본 실시예의 딥러닝 모델을 트레이닝하는 장치(600)는 획득 유닛(601), 스플릿 유닛(602), 트레이닝 유닛(603), 반복 유닛(604)을 포함한다. 여기서, 획득 유닛(601)은 딥러닝 모델의 모델 설명 정보 및 구성 정보를 획득하도록 구성되고 - 여기서, 모델 설명 정보는 변수 및 조작을 포함하고 구성 정보는 스플릿 포인트 변수 및 각 섹션에 할당되는 리소스의 명칭을 포함함 - ; 스플릿 유닛(602)은 구성 정보 내의 스플릿 포인트 변수에 따라 모델 설명 정보를 적어도 2개의 섹션으로 나누고 각 섹션에 할당되는 리소스의 명칭에 따라 모델 설명 정보를 대응되는 리소스에 로딩하여 실행하도록 구성되고; 트레이닝 유닛(603)은 일 배치의 트레이닝 샘플을 획득하고 당해 배치의 트레이닝 샘플을 제1 섹션의 모델 설명 정보에 대응되는 리소스에 입력함으로써 트레이닝을 시작하여 획득한 중간 결과를 제1 컨텍스트 정보에 저장하는 것; 제1 컨텍스트 정보를 다음 섹션의 모델 설명 정보에 대응되는 리소스에 입력하여 제2 컨텍스트 정보를 획득하는 것; 마지막 섹션의 모델 설명 정보에 대응되는 리소스의 실행 결과를 획득할 때까지 이와 같이 유추하는 것; 및 트레이닝 완성 조건이 충족되는 경우, 트레이닝이 완성된 딥러닝 모델을 출력하는 것;을 포함하는 트레이닝 단계를 수행하도록 구성되고; 반복 유닛(604)은 트레이닝 완성 조건을 충족하지 않는 경우, 계속하여 다음 배치의 트레이닝 샘플을 획득하여 트레이닝 완성 조건을 충족시킬 때까지 상기 트레이닝 단계를 수행하도록 구성된다.
본 실시예에서, 딥러닝 모델을 트레이닝하는 장치(600)의 획득 유닛(601), 스플릿 유닛(602), 트레이닝 유닛(603), 반복 유닛(604)의 구체적인 처리는 도 2의 대응되는 실시예에서의 단계201, 단계202, 단계203, 단계204를 참조할 수 있다.
본 실시예의 일부 선택적인 구현 방식에서, 구성 정보는 각 섹션에 할당되는 리소스의 비율를 더 포함하고, 스플릿 유닛(602)은 나아가 각 섹션에 할당되는 리소스의 비율에 따라 각 할당될 리소스의 수량을 계산하고, 각 섹션에 할당되는 리소스의 명칭 및 수량에 따라 모델 설명 정보를 대응되는 리소스에 로딩하여 실행하도록 구성된다.
본 실시예의 일부 선택적인 구현 방식에서, 스플릿 유닛(602)은 나아가 스플릿 포인트 변수를 종점으로 하는 순방향 부분을 제1 섹션으로 결정하고, 스플릿 포인트 변수에서 시작하는 나머지 순방향 부분에 손실 부분으로부터 스플릿 포인트 변수에 대응되는 그래디언트 변수까지를 추가하여 제2 섹션으로 결정하고, 스플릿 포인트 변수에 대응되는 그래디언트 변수에서 시작하는 나머지 역방향 부분을 제3 섹션으로 결정하도록 구성된다.
본 실시예의 일부 선택적인 구현 방식에서, 획득 유닛(601)은 나아가 모델 설명 정보의 조작에 따라 메모리 인터랙션이 빈번한 조작과 계산 밀집형 조작 간의 변환 변수를 결정하여 스플릿 포인트 변수로 하고, 메모리 인터랙션이 빈번한 조작을 CPU에 할당하여 실행하고, 계산 밀집형 조작을 CPU에 할당하여 실행하도록 구성된다.
본 실시예의 일부 선택적인 구현 방식에서, 장치(600)는, 트레이닝 샘플을 소정의 몫으로 분할하고 각 몫의 트레이닝 샘플을 사용하여 트레이닝하여 일 세트의 딥러닝 모델의 파라미터를 획득하고 일정한 회차 간격으로 각 그룹의 딥러닝 모델의 파라미터를 한번씩 동기화하도록 구성되는 병합 유닛(미도시)을 더 포함한다. 예를 들면, 각 그룹의 딥러닝 모델의 파라미터의 평균값을 단계적인 딥러닝 모델의 파라미터로 결정하여 동기화한다.
본 실시예의 일부 선택적인 구현 방식에서, 컨텍스트 정보는 큐를 통해 전송된다.
아래 도 7을 참조하면, 이는 본 개시의 실시예를 구현하기에 적합한 전자 기기(700; 예를 들면 도 1에서의 서버 또는 단말 장치)의 구조 개략도를 도시한다. 본 개시의 실시예에서의 단말 장치는 모바일 폰, 랩톱 컴퓨터, 디지털 방송 수신기, 개인 정보 단말기(PDA), 태블릿 컴퓨터(PAD), 휴대용 멀티미디어 플레이어(PMP), 차량 탑재형 단말(예를 들면 차량 탑재형 내비게이션 단말) 등과 같은 이동 단말 및 디지털 TV, 데스크톱 컴퓨터 등과 같은 고정 단말을 포함하나 이에 제한되지 않는다. 도 7에 도시한 단말 장치/서버는 단지 하나의 예시일 뿐, 본 개시의 실시예의 기능 및 사용 범위에 대하여 어떠한 제한을 하고자 하는 것이 아니다.
도 7에 도시한 바와 같이, 전자 기기(700)는 처리 장치(701; 예를 들면 중앙 처리 장치, 그래픽 처리 장치 등)를 포함할 수 있고, 이는 읽기 전용 메모리(702; ROM)에 저장된 프로그램 또는 저장 장치(708)로부터 랜덤 액세스 메모리(703; RAM)에 로딩된 프로그램에 따라 다양한 적당한 동작 및 처리를 수행할 수 있다. RAM(703)에는 전자 기기(700) 조작에 필요한 다양한 프로그램 및 데이터가 더 저장되어 있다. 처리 장치(701), ROM(702) 및 RAM(703)은 버스(704)를 통해 서로 연결된다. 입력/출력(I/O) 인터페이스(705)도 버스(704)에 연결된다.
통상적으로, 아래 장치는 I/O 인터페이스(705); 예를 들어 터치 스크린, 터치 패널, 키보드, 마우스, 카메라, 마이크로폰, 가속도계, 자이로스코프 등을 포함하는 입력장치(706); 예를 들어 액정 디스플레이(LCD), 스피커, 바이브레이터 등을 포함하는 출력장치707; 예를 들어 자기 테이프, 하드 디스크 등을 포함하는 저장 장치(708); 및 통신 장치(709)에 연결될 수 있다. 통신 장치(709)는 전자 기기(700)가 다른 기기와 무선 또는 유선 통신하여 데이터를 교환하도록 허용할 수 있다. 비록 도 7에 다양한 장치를 구비한 전자 기기(700)를 도시하였으나, 도시한 모든 장치를 실시하거나 또는 구비하도록 요구되는 것이 아님을 이해하여야 한다. 대체하여 실시되거나 또는 더 많거나 더 적은 장치를 구비할 수 있다. 도 7에 도시한 각 블록은 하나의 장치를 나타낼 수도 있고 필요에 따라 복수의 장치를 나타낼 수도 있다.
특히, 본 개시의 실시예에 따르면, 상술한 흐름도를 참조하여 설명한 과정은 컴퓨터 소프트웨어 프로그램으로 구현될 수 있다. 예를 들면, 본 개시의 실시예는 컴퓨터 프로그램 제품을 포함할 수 있고, 이는 컴퓨터 판독 가능한 매체에 탑재된 컴퓨터 프로그램을 포함하고, 당해 컴퓨터 프로그램은 흐름도에 도시한 방법을 수행하기 위한 프로그램 코드를 포함한ㄷ나. 이러한 실시예에서, 당해 컴퓨터 프로그램은 통신 장치(709)를 통해 네트워크로부터 다운로드되어 설치될 수 있고, 또는 저장 장치(708)로부터 설치될 수 있고, 또는 ROM(702)으로부터 설치될 수 있다. 당해 컴퓨터 프로그램이 처리 장치(701)에 의해 실행되는 경우, 본 개시의 실시예의 방법에서 한정한 상술한 기능이 실행된다. 부연하면, 본 개시의 실시예에 따른 컴퓨터 판독 가능한 매체는 컴퓨터 판독 가능한 신호 매체 또는 컴퓨터 판독 가능한 저장 매체 또는 상술한 양자의 임의 조합일 수 있다. 컴퓨터 판독 가능한 저장 매체는 예를 들면 전기, 자기, 광, 전자기, 적외선, 또는 반도체의 시스템, 장치 또는 디바이스, 또는 상술한 것의 임의 조합일 수 있으나 이에 제한되지 않는다. 컴퓨터 판독 가능한 저장 매체의 더 구체적인 예는 하나 또는 복수의 도선을 가지는 전기적 연결, 휴대용 컴퓨터 자기 디스크, 하드 디스크, 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM), 소거 및 프로그램 가능한 읽기 전용 메모리(EPROM 또는 플래시 메모리), 광섬유, 휴대용 콤팩트 디스크 읽기 전용 메모리(CD-ROM), 광학 저장 디바이스, 자기 저장 디바이스, 또는 상술한 것의 임의의 적합한 조합을 포함하나 이에 제한되지 않는다. 본 개시의 실시예에서, 컴퓨터 판독 가능한 저장 매체는 프로그램을 포함하거나 저장하는, 임의의 유형 매체일 수 있고, 당해 프로그램은 명령 실행 시스템, 장치 또는 디바이스에 의해 사용되거나 또는 이들과 결합되어 사용될 수 있다. 본 개시의 실시예에서, 컴퓨터 판독 가능한 신호 매체는 기저대역에서 또는 반송파의 일부분으로 전파되는 데이터 신호를 포함할 수 있고, 컴퓨터 판독 가능 프로그램 코드가 그 중에 탑재되어 있다. 이렇게 전파되는 데이터 신호는 복수 가지 형식을 적용할 수 있는바, 이는 전자기 신호, 광 신호 또는 상술한 것의 임의의 적합한 조합을 포함하나 이에 제한되지 않는다. 컴퓨터 판독 가능한 신호 매체는 또한 컴퓨터 판독 가능한 저장 매체 이외의 임의의 컴퓨터 판독 가능한 매체일 수 있고, 당해 컴퓨터 판독 가능한 매체는 명령 실행 시스템, 장치 또는 디바이스에 의해 사용되거나 또는 이들과 결합되어 사용되는 프로그램을 송신, 전파, 또는 전송할 수 있다. 컴퓨터 판독 가능한 매체에 포함되는 프로그램 코드는 임의의 적당한 매체를 사용하여 전송할 수 있는바, 이는 무선, 전선, 광케이블, RF 등, 또는 상술한 임의의 적합한 조합을 포함하나 이에 제한되지 않는다.
상술한 컴퓨터 판독 가능한 매체는 상술한 전자 기기에 포함될 수도 있고 당해 전자 기기에 장착되지 않은 채 단독으로 존재할 수도 있다. 상술한 컴퓨터 판독 가능한 매체에는 하나의 또는 복수의 프로그램이 탑재되어 있고, 상술한 하나의 또는 복수의 프로그램이 당해 전자 기기에 의해 실행되는 경우, 당해 전자 기기로 하여금, 딥러닝 모델의 모델 설명 정보 및 구성 정보를 획득하고 - 여기서, 모델 설명 정보는 변수 및 조작을 포함하고 구성 정보는 스플릿 포인트 변수 및 각 섹션에 할당되는 리소스의 명칭을 포함함 - ; 구성 정보 내의 스플릿 포인트 변수에 따라 모델 설명 정보를 적어도 2개의 섹션으로 나누고 각 섹션에 할당되는 리소스의 명칭에 따라 모델 설명 정보를 대응되는 리소스에 로딩하여 실행하고; 다음과 같은 트레이닝 단계인, 일 배치의 트레이닝 샘플을 획득하고 당해 배치의 트레이닝 샘플을 제1 섹션의 모델 설명 정보에 대응되는 리소스에 입력함으로써 트레이닝을 시작하여 획득한 중간 결과를 제1 컨텍스트 정보에 저장하는 단계, 제1 컨텍스트 정보를 다음 섹션의 모델 설명 정보에 대응되는 리소스에 입력하여 제2 컨텍스트 정보를 획득하는 단계, 마지막 섹션의 모델 설명 정보에 대응되는 리소스의 실행 결과를 획득할 때까지 이와 같이 유추하는 단계, 및 트레이닝 완성 조건이 충족되는 경우, 트레이닝이 완성된 딥러닝 모델을 출력하는 단계를 수행하고; 아닌 경우, 계속하여 다음 배치의 트레이닝 샘플을 획득하여 트레이닝 완성 조건을 충족시킬 때까지 상기 트레이닝 단계를 수행하도록 한다.
한가지 또는 복수 가지 프로그램 설계 언어 또는 그 조합으로 본 발명의 조작을 실행하기 위한 컴퓨터 프로그램 코드를 작성할 수 있고, 상기 프로그램 설계 언어는 Java, Smalltalk, C++와 같은 객체 지향 프로그램 설계 언어를 포함하고, 또한 'C' 언어 또는 이와 유사한 프로그램 설계 언어와 같은 종래의 절차 지향 프로그램 설계 언어도 포함한다. 프로그램 코드는 사용자 컴퓨터에서 전부 실행되거나, 사용자 컴퓨터에서 일부 실행되거나, 하나의 독립적인 소프트웨어 패키지로서 실행되어 일부는 사용자 컴퓨터에서, 일부는 원격 컴퓨터에서 실행되거나, 혹은 원격 컴퓨터에서 또는 서버에서 전부 실행될 수 있다. 원격 컴퓨터와 관련되는 상황에서, 원격 컴퓨터는 근거리 통신망(LAN) 및 광역 통신망(WAN)을 포함하는 임의 유형의 네트워크를 통해 사용자 컴퓨터에 연결되거나 외부 컴퓨터에 연결될 수 있다(예컨대, 인터넷 서비스 제공자를 이용하여 인터넷을 통해 연결된다).
첨부 도면에서의 흐름도 및 블록도는 본 개시의 다양한 실시예에 따른 시스템, 방법 및 컴퓨터 프로그램 제품의 구현 가능한 체계 아키텍처, 기능 및 조작을 도시한다. 이러한 점에서, 흐름도 또는 블록도에서의 각 블록은 하나의 모듈, 프로그램 세그먼트, 또는 코드의 일부분을 나타낼 수 있고, 당해 모듈, 프로그램 세그먼트, 또는 코드의 일부분은 하나 또는 복수의 규정된 논리 기능을 구현하기 위한 실행가능한 명령을 포함한다. 일부 대체적인 구현에서, 블록에 표기된 기능은 첨부 도면에 표기된 순서와 다르게 발생될 수도 있다는 점도 유의하여야 한다. 예를 들면, 2개의 연속되게 표시된 블록은 실제로는 기본적으로 병렬로 수행될 수 있고, 이들은 때때로 상반되는 순서로 수행될 수도 있는바, 이는 관련되는 기능에 따라 결정된다. 블록도 및/또는 흐름도에서의 각 블록, 및 블록도 및/또는 흐름도에서의 블록의 조합은, 규정된 기능 또는 조작을 수행하는, 전용적인, 하드웨어에 기반하는 시스템을 사용하여 구현하거나, 또는 하드웨어와 컴퓨터 명령의 조합을 사용하여 구현할 수 있다는 점도 유의하여야 한다.
본 개시에서 설명되는 실시예에 관한 유닛은 소프트웨어의 방식으로 구현될 수도 있고 하드웨어의 방식으로 구현될 수도 있다. 설명된 유닛들은 프로세서에 설치될 수도 있는바, 예를 들면, 프로세서가 획득 유닛, 스플릿 유닛, 트레이닝 유닛, 반복 유닛을 포함한다고 설명할 수 도 있다. 여기서, 이러한 유닛의 명칭은 어떠한 상황에서는 당해 유닛 자체에 대한 한정이 되지 않는바, 예를 들면, 획득 유닛은 또한 "딥러닝 모델의 모델 설명 정보 및 구성 정보를 획득하는 유닛"으로 설명될 수도 있다.
이상의 설명은 단지 본 개시의 바람직한 실시예 및 활용한 기술 원리에 대한 설명일 뿐이다. 당업자라면, 본 개시에 관한 발명의 범위는 상술한 기술 특징의 특정 조합으로 이루어지는 기술방안에 한정되지 않으며, 동시에 상기 발명 사상을 벗어나지 않으면서 상술한 기술 특징 또는 그 등가 특징을 임의로 조합하여 이루어지는 다른 기술방안을 포함하기도 하여야 한다는 것을 이해하여야 한다. 예를 들면 상술한 특징을 본 개시에 개시된(그러나 이에 한하지 않음) 유사 기능을 가지는 기술 특징과 상호 치환하여 이루어지는 기술방안이 있다.

Claims (14)

  1. 딥러닝 모델을 트레이닝하는 방법으로,
    딥러닝 모델의 모델 설명 정보 및 구성 정보를 획득하는 단계 - 여기서, 상기 모델 설명 정보는 변수 및 조작을 포함하고 상기 구성 정보는 스플릿 포인트 변수 및 각 섹션에 할당되는 리소스의 명칭을 포함함 - ;
    상기 구성 정보 내의 스플릿 포인트 변수에 따라 모델 설명 정보를 적어도 2개의 섹션으로 나누고 각 섹션에 할당되는 리소스의 명칭에 따라 모델 설명 정보를 대응되는 리소스에 로딩하여 실행하는 단계; 및
    일 배치의 트레이닝 샘플을 획득하고 당해 배치의 트레이닝 샘플을 제1 섹션의 모델 설명 정보에 대응되는 리소스에 입력함으로써 트레이닝을 시작하여 획득한 중간 결과를 제1 컨텍스트 정보에 저장하는 것; 상기 제1 컨텍스트 정보를 다음 섹션의 모델 설명 정보에 대응되는 리소스에 입력하여 제2 컨텍스트 정보를 획득하는 것; 마지막 섹션의 모델 설명 정보에 대응되는 리소스의 실행 결과를 획득할 때까지 이와 같이 유추하는 것; 및 트레이닝 완성 조건이 충족되는 경우, 트레이닝이 완성된 딥러닝 모델을 출력하는 것;을 포함하는 트레이닝 단계; 를 수행하거나
    아닌 경우, 계속하여 다음 배치의 트레이닝 샘플을 획득하여 트레이닝 완성 조건을 충족시킬 때까지 상기 트레이닝 단계를 수행하는 것을 특징으로 하는 딥러닝 모델을 트레이닝하는 방법.
  2. 제1항에 있어서,
    상기 구성 정보는 각 섹션에 할당되는 리소스의 비율를 더 포함하고,
    상기 각 섹션에 할당되는 리소스의 명칭에 따라 모델 설명 정보를 대응되는 리소스에 로딩하여 실행하는 단계는,
    각 섹션에 할당되는 리소스의 비율에 따라 각 할당될 리소스의 수량을 계산하는 단계; 및
    각 섹션에 할당되는 리소스의 명칭 및 수량에 따라 모델 설명 정보를 대응되는 리소스에 로딩하여 실행하는 단계;를 포함하는 딥러닝 모델을 트레이닝하는 방법.
  3. 제1항에 있어서,
    상기 구성 정보 내의 스플릿 포인트 변수에 따라 모델 설명 정보를 적어도 2개의 섹션으로 나누는 단계는,
    스플릿 포인트 변수를 종점으로 하는 순방향 부분을 제1 섹션으로 결정하는 단계;
    스플릿 포인트 변수에서 시작하는 나머지 순방향 부분에 손실 부분으로부터 상기 스플릿 포인트 변수에 대응되는 그래디언트 변수까지를 추가하여 제2 섹션으로 결정하는 단계; 및
    상기 스플릿 포인트 변수에 대응되는 그래디언트 변수에서 시작하는 나머지 역방향 부분을 제3 섹션으로 결정하는 단계;를 포함하는 딥러닝 모델을 트레이닝하는 방법.
  4. 제1항에 있어서,
    상기 딥러닝 모델의 모델 설명 정보 및 구성 정보를 획득하는 단계는,
    상기 모델 설명 정보의 조작에 따라 메모리 인터랙션이 빈번한 조작과 계산 밀집형 조작 간의 변환 변수를 결정하여 스플릿 포인트 변수로 하는 단계;
    메모리 인터랙션이 빈번한 조작을 CPU에 할당하여 실행하는 단계; 및
    계산 밀집형 조작을 CPU에 할당하여 실행하는 단계;를 포함하는 딥러닝 모델을 트레이닝하는 방법.
  5. 제1항에 있어서,
    상기 방법은,
    트레이닝 샘플을 소정의 몫으로 분할하는 단계;
    각 몫의 트레이닝 샘플을 사용하여 트레이닝하여 일 세트의 딥러닝 모델의 파라미터를 획득하는 단계; 및
    일정한 회차 간격으로 각 그룹의 딥러닝 모델의 파라미터를 한번씩 동기화하는 단계;를 더 포함하는 딥러닝 모델을 트레이닝하는 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    컨텍스트 정보는 큐를 통해 전송되는 딥러닝 모델을 트레이닝하는 방법.
  7. 딥러닝 모델을 트레이닝하는 장치로서,
    딥러닝 모델의 모델 설명 정보 및 구성 정보를 획득하도록 구성되는 획득 유닛 - 여기서, 상기 모델 설명 정보는 변수 및 조작을 포함하고 상기 구성 정보는 스플릿 포인트 변수 및 각 섹션에 할당되는 리소스의 명칭을 포함함 - ;
    상기 구성 정보 내의 스플릿 포인트 변수에 따라 모델 설명 정보를 적어도 2개의 섹션으로 나누고 각 섹션에 할당되는 리소스의 명칭에 따라 모델 설명 정보를 대응되는 리소스에 로딩하여 실행하도록 구성되는 스플릿 유닛;
    일 배치의 트레이닝 샘플을 획득하고 당해 배치의 트레이닝 샘플을 제1 섹션의 모델 설명 정보에 대응되는 리소스에 입력함으로써 트레이닝을 시작하여 획득한 중간 결과를 제1 컨텍스트 정보에 저장하는 것; 상기 제1 컨텍스트 정보를 다음 섹션의 모델 설명 정보에 대응되는 리소스에 입력하여 제2 컨텍스트 정보를 획득하는 것; 마지막 섹션의 모델 설명 정보에 대응되는 리소스의 실행 결과를 획득할 때까지 이와 같이 유추하는 것; 및 트레이닝 완성 조건이 충족되는 경우, 트레이닝이 완성된 딥러닝 모델을 출력하는 것;을 포함하는 트레이닝 단계를 수행하도록 구성되는 트레이닝 유닛; 및
    트레이닝 완성 조건을 충족하지 않는 경우, 계속하여 다음 배치의 트레이닝 샘플을 획득하여 트레이닝 완성 조건을 충족시킬 때까지 상기 트레이닝 단계를 수행하도록 구성되는 반복 유닛;을 포함하는 딥러닝 모델을 트레이닝하는 장치.
  8. 제7항에 있어서,
    상기 구성 정보는 각 섹션에 할당되는 리소스의 비율를 더 포함하고,
    상기 스플릿 유닛은 나아가,
    각 섹션에 할당되는 리소스의 비율에 따라 각 할당될 리소스의 수량을 계산하고,
    각 섹션에 할당되는 리소스의 명칭 및 수량에 따라 모델 설명 정보를 대응되는 리소스에 로딩하여 실행하도록 구성되는 딥러닝 모델을 트레이닝하는 장치.
  9. 제7항에 있어서,
    상기 스플릿 유닛은 나아가,
    스플릿 포인트 변수를 종점으로 하는 순방향 부분을 제1 섹션으로 결정하고,
    스플릿 포인트 변수에서 시작하는 나머지 순방향 부분에 손실 부분으로부터 상기 스플릿 포인트 변수에 대응되는 그래디언트 변수까지를 추가하여 제2 섹션으로 결정하고,
    상기 스플릿 포인트 변수에 대응되는 그래디언트 변수에서 시작하는 나머지 역방향 부분을 제3 섹션으로 결정하도록 구성되는 딥러닝 모델을 트레이닝하는 장치.
  10. 제7항에 있어서,
    상기 획득 유닛은 나아가
    상기 모델 설명 정보의 조작에 따라 메모리 인터랙션이 빈번한 조작과 계산 밀집형 조작 간의 변환 변수를 결정하여 스플릿 포인트 변수로 하고,
    메모리 인터랙션이 빈번한 조작을 CPU에 할당하여 실행하고,
    계산 밀집형 조작을 CPU에 할당하여 실행하도록 구성되는 딥러닝 모델을 트레이닝하는 장치.
  11. 제7항에 있어서,
    상기 장치는,
    트레이닝 샘플을 소정의 몫으로 분할하고,
    각 몫의 트레이닝 샘플을 사용하여 트레이닝하여 일 세트의 딥러닝 모델의 파라미터를 획득하고,
    일정한 회차 간격으로 각 그룹의 딥러닝 모델의 파라미터를 한번씩 동기화하도록 구성되는 병합 유닛을 더 포함하는 딥러닝 모델을 트레이닝하는 장치.
  12. 제7항 내지 제11항 중 어느 한 항에 있어서,
    컨텍스트 정보는 큐를 통해 전송되는 딥러닝 모델을 트레이닝하는 장치.
  13. 전자 기기로서,
    하나 또는 복수의 프로세서; 및
    하나 또는 복수의 프로그램이 저장되는 저장 장치를 포함하고,
    상기 하나 또는 복수의 프로그램이 상기 하나 또는 복수의 프로세서에 의해 실행될 경우, 상기 하나 또는 복수의 프로세서가 제1항 내지 제6항 중 어느 한 항의 방법을 구현하도록 하는 전자 기기.
  14. 컴퓨터 프로그램이 저장되어 있는 컴퓨터 판독 가능한 매체로서,
    상기 프로그램이 프로세서에 의해 실행될 경우, 제1항 내지 제6항 중 어느 한 항의 방법을 구현하는 컴퓨터 판독 가능한 매체.
KR1020217009428A 2019-11-25 2020-06-09 딥러닝 모델을 트레이닝하는 방법 및 장치 KR102702130B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201911162586.0 2019-11-25
CN201911162586.0A CN110889492B (zh) 2019-11-25 2019-11-25 用于训练深度学习模型的方法和装置
PCT/CN2020/095192 WO2021103479A1 (zh) 2019-11-25 2020-06-09 用于训练深度学习模型的方法和装置

Publications (2)

Publication Number Publication Date
KR20210042992A true KR20210042992A (ko) 2021-04-20
KR102702130B1 KR102702130B1 (ko) 2024-09-02

Family

ID=75744446

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217009428A KR102702130B1 (ko) 2019-11-25 2020-06-09 딥러닝 모델을 트레이닝하는 방법 및 장치

Country Status (1)

Country Link
KR (1) KR102702130B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114461400A (zh) * 2022-02-14 2022-05-10 北京百度网讯科技有限公司 数据处理的方法、装置、电子设备和存储介质
KR20220163575A (ko) * 2021-06-03 2022-12-12 연세대학교 산학협력단 신경망 연산 장치, 신경망 연산 방법 및 신경망 연산 방법을 실행시키도록 기록매체에 저장된 컴퓨터 프로그램

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107766148A (zh) * 2017-08-31 2018-03-06 北京百度网讯科技有限公司 一种异构集群及任务处理方法和装置
CN109976903A (zh) * 2019-02-22 2019-07-05 华中科技大学 一种基于层宽内存分配的深度学习异构计算方法和系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107766148A (zh) * 2017-08-31 2018-03-06 北京百度网讯科技有限公司 一种异构集群及任务处理方法和装置
CN109976903A (zh) * 2019-02-22 2019-07-05 华中科技大学 一种基于层宽内存分配的深度学习异构计算方法和系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220163575A (ko) * 2021-06-03 2022-12-12 연세대학교 산학협력단 신경망 연산 장치, 신경망 연산 방법 및 신경망 연산 방법을 실행시키도록 기록매체에 저장된 컴퓨터 프로그램
CN114461400A (zh) * 2022-02-14 2022-05-10 北京百度网讯科技有限公司 数据处理的方法、装置、电子设备和存储介质

Also Published As

Publication number Publication date
KR102702130B1 (ko) 2024-09-02

Similar Documents

Publication Publication Date Title
JP7029554B2 (ja) 深層学習モデルをトレーニングするための方法及び装置、電子機器、コンピュータ可読記憶媒体並びにコンピュータプログラム
CN111475235B (zh) 函数计算冷启动的加速方法、装置、设备及存储介质
CN114020470B (zh) 资源分配方法、装置、可读介质及电子设备
CN107832143B (zh) 一种物理机资源的处理方法和装置
CN113886019B (zh) 虚拟机创建方法、装置、系统、介质和设备
KR20210042992A (ko) 딥러닝 모델을 트레이닝하는 방법 및 장치
CN111427706A (zh) 数据处理方法、多服务器系统、数据库、电子设备及存储介质
CN111324376A (zh) 功能配置方法、装置、电子设备及计算机可读介质
CN111813541B (zh) 一种任务调度方法、装置、介质和设备
CN112835703A (zh) 任务处理方法、装置、设备及存储介质
CN109951737B (zh) 视频处理方法、装置、电子设备和计算机可读存储介质
WO2023125463A1 (zh) 基于异构计算框架的处理方法、装置、设备及介质
CN115775199B (zh) 数据处理方法和装置、电子设备和计算机可读存储介质
CN115378937B (zh) 任务的分布式并发方法、装置、设备和可读存储介质
CN110489219A (zh) 一种调度功能对象的方法、装置、介质和电子设备
CN114116220B (zh) 一种gpu共享控制方法、gpu共享控制装置及存储介质
CN113792869B (zh) 基于神经网络芯片的视频处理方法、装置和电子设备
CN112148448B (zh) 资源分配方法、装置、设备和计算机可读介质
US12019633B2 (en) Providing multi-tier query execution options in a serverless query environment
CN110704782A (zh) 页面响应方法、装置、电子设备及存储介质
CN114153620B (zh) Hudi运行环境资源优化分配方法及装置
WO2023093474A1 (zh) 一种多媒体处理方法、装置、设备及介质
CN116755889B (zh) 应用于服务器集群数据交互的数据加速方法、装置与设备
CN115309410B (zh) 边缘计算场景的边缘集群应用发布方法、装置和电子设备
CN116977468A (zh) 图像帧的绘制处理方法、装置、设备及介质

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