KR20220028096A - 신경망 모델들을 관리하는 방법 및 장치 - Google Patents

신경망 모델들을 관리하는 방법 및 장치 Download PDF

Info

Publication number
KR20220028096A
KR20220028096A KR1020227003589A KR20227003589A KR20220028096A KR 20220028096 A KR20220028096 A KR 20220028096A KR 1020227003589 A KR1020227003589 A KR 1020227003589A KR 20227003589 A KR20227003589 A KR 20227003589A KR 20220028096 A KR20220028096 A KR 20220028096A
Authority
KR
South Korea
Prior art keywords
dnn
models
dnn models
model
layers
Prior art date
Application number
KR1020227003589A
Other languages
English (en)
Inventor
아런 아브라함
아크샤이 파라샤르
수하스 피 케이
비크람 넬보이 라젠디란
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20220028096A publication Critical patent/KR20220028096A/ko

Links

Images

Classifications

    • G06N3/0454
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • 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/045Combinations of networks
    • 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)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Stored Programmes (AREA)

Abstract

장치에 DNN(Deep Neural Network) 모델들을 관리하는 방법이 제공된다. 상기 방법은 복수의 DNN 모델들 각각과 연관된 정보를 추출하는 단계, 상기 복수의 DNN 모델들에 걸쳐 공통된 공통 정보를 상기 정보로부터 식별하는 단계, 상기 공통 정보를 상기 장치내의 지정된 위치에 분리하여 저장하는 단계 및 상기 복수의 DNN 모델들 중 적어도 하나의 DNN 모델이 상기 공통 정보에 접근하도록 제어하는 단계를 포함한다.

Description

신경망 모델들을 관리하는 방법 및 장치
본 개시는 일 장치에서 신경망들의 배치(deployment) 또는 관리에 관한 것으로, 특히 신경망 모델들의 구조들에서의 리던던시(redundancy)에 기초하여 상기 신경망 모델들을 관리하는 방법들 및 장치들에 관한 것이다.
딥러닝 (deep learning) 방법들을 요구/이용하는 애플리케이션들은 (스마트 폰, IoT (Internet of Things) 장치, 개인용 컴퓨터 (PC), 태블릿 등과 같으나 이에 한정되지 않는) 임베디드 장치에 널리 퍼져 있다. 애플리케이션의 명령어들을 실행하기 위한 딥러닝 방법들을 이용하기 위해, DNN(Deep Neural Network) 모델들이 임베디드 장치들에서 배치될 필요가 있다. DNN 모델들의 이러한 배치는 사용자가 개인용 장치들에서 애플리케이션들을 설치할 수 있도록 한다.
현재, 하나의 장치에 복수의 DNN 모델들이 배치될 수 있다. 상기 복수의 DNN 모델들은 상기 장치에 설치된 상이한 애플리케이션들에 의해 실행될 수 있다. 상기 장치에 설치된 애플리케이션들의 수가 증가하면서, 상기 장치에 더 많은 수의 DNN 모델들이 배치될 필요가 있다. 애플리케이션이 런칭되거나 애플리케이션에 관한 명령어가 실행될 필요가 있는 경우, DNN 모델은 중앙 처리 장치(CPU: Central Processing Unit)나 상기 장치 내의 다른 프로세싱 유닛들에 로딩된다. 상기 실행이 완료되면, 상기 DNN 모델은 상기 CPU나 다른 프로세싱 유닛들로부터 언로딩된다. 상기 장치가 다수의 동작 모드들로 동작할 수 있는 애플리케이션을 갖고 있는 경우, 모드 스위치 시 상이한 DNN 모델들이 로딩/언로딩된다.
애플리케이션 런칭 또는 모드 스위치 중에 DNN 모델들을 로딩 및 언로딩하는 프로세스들은 시간을 소비하여, 상기 장치의 레이턴시 성능을 저하시킨다.
상기와 같은 기술적 과제를 해결하기 위하여, 장치 상에 DNN(Deep Neural Network) 모델을 관리하는 방법이 제공된다. 상기 방법은 복수의 DNN 모델들 각각과 연관된 정보를 추출하는 단계, 상기 복수의 DNN 모델들에 걸쳐 공통된 공통 정보를 상기 정보로부터 식별하는 단계, 상기 공통 정보를 상기 장치내의 지정된 위치에 분리하여 저장하는 단계 및 상기 복수의 DNN 모델들 중 적어도 하나의 DNN 모델이 상기 공통 정보에 접근하도록 제어하는 단계를 포함한다.
애플리케이션 런칭 또는 모드 전환 동안 DNN 모델들을 로딩 및 언로딩하는 프로세스들은 리던던시 시간을 소비하지 않고 수행될 수 있으므로, 제안된 개시는 상기 장치에서 애플리케이션들을 런칭하거나 스위칭할 때 상기 장치의 성능을 향상시킨다.
본 명세서에서의 실시예들은 첨부 도면들에서 예시되며, 그 전반에 걸쳐 동일한 참조 문자들은 다양한 도면들에서 대응하는 부분들을 나타낸다. 본 명세서의 실시예들은 도면들을 참조하여 이하의 설명으로부터 더 잘 이해될 것이다.
도 1 은 카메라 애플리케이션의 런칭 및 모드 스위칭 동안 DNN(Deep Neural Network) 모델들의 로딩 및 언로딩을 도시하는 예시적인 시나리오이다.
도 2는 본 개시의 실시예들에 따라, DNN 모델들의 구조들에 있어서의 리던던시 및 DNN 모델들 간의 의존성에 기초하여 장치에 DNN 모델들을 배치하도록 구성된 장치의 다양한 유닛들을 도시한다.
도 3a는 본 개시의 실시예들에 따라, DNN 모델들의 구조들에 있어서의 리던던시 및 DNN 모델들 간의 의존성에 기초하여, 장치에 DNN 모델들을 배치하는 방법을 묘사한 흐름도이다.
도 3B는 본 개시의 실시예들에 따라, DNN 모델들을 관리하기 위한 방법을 묘사한 흐름도(310) 이다.
도 4는 본 개시의 실시예들에 따라, 2개의 DNN 모델들에서의 리던던시의 식별을 도시한 예이다.
도 5는 본 개시의 실시예들에 따라, 장치에 설치된 카메라 애플리케이션에 의해 이용되는 DNN 모델들 내의 리던던트 및 넌리던던트(non-redundant) 레이어들을 표시하는, 최적화된 모델 데이터의 생성을 도시한 예이다.
도 6 은 본 개시의 실시예들에 따라, 장치의 상이한 프로세싱 유닛들에서 DNN 모델들의 로딩을 도시한 예이다.
도 7 은 본 개시의 실시예들에 따라, 장치에 설치된 카메라 애플리케이션에 의해 이용되는 4개의 DNN 모델들 사이의 의존성들을 표시하는, 모델 의존성 그래프의 생성을 도시한 예이다.
도 8 은 본 개시의 실시예들에 따라, 카메라 애플리케이션에 의해 캡쳐된 미디어의 관심영역(ROI: Region of Interest)에서 객체들을 검출하고 검출된 객체들을 분류하기 위한, 검출기 DNN 모델 및 분류기 DNN 모델의 순차적 실행을 도시하는 사용 케이스 시나리오이다.
도 9는 본 개시의 실시예들에 따라, 모델 프리로더에 의한 장치의 상이한 프로세싱 유닛들에서의 DNN 모델들의 프리로딩을 묘사한 예이다.
도 10a 및 도 10b는 본 개시의 실시예들에 따라, 모델 의존성 그래프 및 최적화된 모델 데이터에 기초하여 카메라 애플리케이션에 의해 사용되는 DNN 모델들의 프리로딩/로딩/언로딩을 도시한 사용 케이스 시나리오이다.
상기와 같은 기술적 과제를 해결하기 위하여, 장치 상에 DNN(Deep Neural Network) 모델을 관리하는 방법이 제공된다. 상기 방법은 복수의 DNN 모델들 각각과 연관된 정보를 추출하는 단계, 상기 복수의 DNN 모델들에 걸쳐 공통된 공통 정보를 상기 정보로부터 식별하는 단계, 상기 공통 정보를 상기 장치내의 지정된 위치에 분리하여 저장하는 단계 및 상기 복수의 DNN 모델들 중 적어도 하나의 DNN 모델이 상기 공통 정보에 접근하도록 제어하는 단계를 포함한다.
따라서, 실시예들은 DNN 모델들의 구조들에서의 리던던시와 DNN 모델들 간의 의존성에 기초하여 장치에 DNN 모델들을 배치하기 위한 방법들 및 시스템들을 제공한다. 상기 실시예들은 DNN 모델들 각각을 다른 DNN 모델들과 비교하여, DNN 모델들의 구조들에서의 리던던시를 식별하는 것을 포함한다. 상기 실시예들은 상기 DNN 모델들 각각의 각 레이어에 관한 기준 카운트를 결정하는 것을 포함한다. 상기 실시예들은 DNN 모델들의 각각의 레이어들을 횡단하고 횡단 중에 각 레이어의 기준 카운트 값을 초기화하는 것을 포함한다. DNN 모델의 레이어가 다른 DNN 모델에도 존재하는 것으로 결정되면, 기준 카운트가 증가될 수 있다. DNN 모델의 레이어에 대응하는 기준 카운트가 증가되면, DNN 모델의 레이어가 DNN 모델의 구조에 있어 리던던시에 기여하는 것으로 식별될 수 있고, 이는 레이어가 적어도 2개의 DNN 모델들에 존재하는 것을 의미한다. 기준 카운트 값들이 증가되지 않은 DNN 모델들의 레이어들은 고유한 것으로 간주된다. 고유한 레이어들이 속하는 DNN 모델의 구조의 부분은 특정 영역으로 카테고리화(categorization)될 수 있다.
실시예들은 DNN 모델들 간의 의존성들을 결정하는 것을 포함하며, 상기 의존성들은 복수의 애플리케이션들에 걸치거나 하나의 애플리케이션 내의 DNN 모델들의 실행 순서를 나타낸다. 적어도 2개의 DNN 모델들 간의 의존성들은 적어도 하나의 애플리케이션이 병렬적, 독립적 또는 순차적으로 적어도 2개의 DNN 모델들을 실행하는지를 확인하여 결정될 수 있다. 장치의 DNN 모델들의 넌리던던트 레이어들의 로딩 및 언로딩은 복수의 애플리케이션들에 걸친 또는 애플리케이션 내의 DNN 모델들 사이의 의존성과 장치의 이용 가능한 메모리에 기초하여 관리될 수 있다. DNN 모델들이 순차적으로 실행되고 DNN 모델들의 구조들에 리던던시가 존재하는 경우, DNN 모델들의 특정 영역의 레이어들은 순차적으로 로딩될 수 있다. 유사하게, DNN 모델들이 순차적으로 실행되고 DNN 모델들의 구조들에 리던던시가 존재하는 경우, DNN 모델들의 특정 영역의 레이어들은 동시에 로딩될 수 있다. 상기 DNN 모델들이 서로 독립적으로 실행되면, 상기 DNN 모델들 간에 의존성이 없다. 따라서, DNN 모델들의 레이어들의 로딩 및 언로딩은 독립적으로 수행된다. 본 명세서의 실시예들은 DNN 모델들의 리던던시 및 복수의 애플리케이션들에 걸친 또는 애플리케이션 내의 DNN 모델들의 의존성에 기초하여, DNN 모델들의 레이어들을 프리로딩하는 것을 포함한다.
본 개시의 원리들의 이해를 돕기 위해, 도면들에 예시된 실시예를 참조하고 이를 설명하기 위해 특정 언어가 사용될 것이다. 그럼에도 불구하고, 본 개시의 범위에 대한 제한이 의도되지 않으며, 예시된 시스템 내의 그러한 변경들 및 추가적인 수정들과, 예시된 바와 같은 본 개시의 원리들의 추가적인 애플리케이션들은 본 개시가 연관된 기술분야에서 통상의 지식을 가진 자에게 통상적으로 일어나는 것으로 생각된다. 달리 정의되지 않는 한, 본 명세서에서 사용되는 모든 기술적 및 과학적 용어들은 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자에 의해 통상적으로 이해되는 것과 동일한 의미를 갖는다. 본 명세서에서 제공되는 시스템, 방법들 및 예들은 예시적인 것일 뿐, 제한적인 것으로 의도되지 않는다.
본 명세서에서 사용되는 용어 "일부(some)"는 "없음(none), 또는 하나 이상, 또는 모두(all)"로서 정의된다. 따라서, 용어 "없음", "하나", "하나 이상(more than one)", "하나 이상이나 모두는 아닌(more than one, but not all)", 또는 "모두(all)"는 모두 "일부"의 정의에 속한다. "일부 실시예들" 이라는 용어는 어떤 실시예들도 아님을 나타내거나, 하나의 실시예, 몇몇 실시예들 또는 모든 실시예들을 의미할 수 있다. 따라서, "일부 실시예들"이라는 용어는 "어떤 실시예도 아니거나, 일 실시예, 또는 하나 이상의 실시예, 또는 모든 실시예들"로 정의된다.
본 명세서에서 사용되는 용어 및 구조는 일부 실시예들 및 이들의 구체적인 특징들 및 요소들을 설명, 교시 및 예시하기 위한 것이며, 청구항들이나 이들의 등가물들의 범위를 한정, 제한 또는 감소시키지 않는다.
보다 구체적으로, "포함한다(includes)", "포함한다(comprises)", "가지다(has)", "구성되다(consists)"와 같지만 이에 제한되지 않는 용어들과 이들의 문법적 변형들은, 달리 언급되지 않는 한, 정확한 한정 또는 제한을 특정하지 않고, 하나 이상의 특징들 또는 요소들의 가능한 추가를 배제하지 않고, 또한 한정하는 언어 "반드시(MUST) 포함한다" 또는 "포함할 필요가 있다(NEED TO)"로 달리 언급되지 않는 한, 나열된 특징들 및 요소들 중 하나 이상의 가능한 제거를 배제하기 위해 취해지지 말아야 한다.
어떤 특징 또는 요소가 한 번만 사용되는 것으로 제한되는지 제한되지 않는지 여부는, 어느 쪽이든, "하나 이상의 특징들" 또는 "하나 이상의 요소들" 또는 "적어도 하나의 특징" 또는 "적어도 하나의 요소"로서 지칭될 수 있다. 또한, "하나 이상의" 또는 "적어도 하나의" 특징 또는 요소의 사용은, "하나 이상이 있을 필요가 있다(NEEDS)" 또는 "하나 이상의 요소가 요구된다(REQUIRED)"와 같은 한정하는 언어에 의해 달리 명시되지 않는 한, 그러한 특징 또는 요소 중 어느 것도 없다는 것을 배제하지 않는다.
달리 정의되지 않는 한, 본 명세서에서 사용되는 모든 용어들, 특히 임의의 기술적 및/또는 과학적 용어들은 당해 기술분야에서 통상의 지식을 가진 자에 의해 통상적으로 이해되는 것과 동일한 의미를 갖도록 취해질 수 있다.
본 명세서에서는 일부 "실시예들"을 참조한다. 일 실시예는 첨부된 청구항들에 제시된 임의의 특징들 및/또는 요소들의 가능한 구현의 일례임을 이해해야 한다. 일부 실시예들은 첨부된 청구항들의 특정 특징들 및/또는 요소들이 고유성(uniqueness), 유용성 및 비자명성(non-obviousness)의 요건들을 충족하는 잠재적 방식들 중 하나 이상을 명확하게 하기 위한 목적으로 기술되었다.
"제 1 실시예", "추가 실시예", "대안적인 실시예", "하나의 실시예", "일 실시예", "다수의 실시예들", "일부 실시예들", "다른 실시예들", "추가 실시예", "추가적인 실시예", "부가 실시예" 또는 이들의 변형들과 같은 어구들 및/또는 용어들의 사용은 반드시 동일한 실시예들을 지칭하는 것은 아니다. 달리 명시되지 않는 한, 하나 이상의 실시예들과 관련하여 설명된 하나 이상의 특정 특징들 및/또는 요소들이 일 실시예에서 발견될 수 있거나, 하나 이상의 실시예에서 발견될 수 있거나, 모든 실시예들에서 발견될 수 있거나, 어떤 실시예들에서도 발견되지 않을 수 있다. 하나 이상의 특징들 및/또는 요소들이 단지 하나의 실시예의 맥락에서, 또는 대안적으로 하나 이상의 실시예의 맥락에서, 또는 대안적으로 모든 실시예들의 맥락에서 설명될 수 있으나, 상기 특징들 및/또는 요소들은 대신에 개별적으로 또는 임의의 적절한 조합으로 제공되거나, 또는 전혀 제공되지 않을 수도 있다. 반대로, 개별적인 실시예들의 맥락에서 설명된 임의의 특징들 및/또는 요소들은 대안적으로 단일 실시예의 맥락에서 함께 존재하는 것으로 구현될 수 있다.
본 명세서에서 설명된 임의의 특정 및 모든 세부사항들은 일부 실시예들의 맥락에서 사용되므로, 첨부된 청구항들에 대한 제한 요인들로서 반드시 취해질 필요는 없다. 첨부된 청구항들 및 그들의 법적 등가물들은 이하의 설명에서 예시적인 예들로서 사용된 것들과 다른 실시예들의 맥락에서 실현될 수 있다.
이하, 첨부된 도면들을 참조하여 본 개시의 실시예들을 상세히 설명한다.
애플리케이션 런칭 또는 모드 스위치 중에 DNN 모델들을 로딩 및 언로딩하는 프로세스들은 시간을 소비하여, 상기 장치의 레이턴시 성능을 저하시킨다. DNN 모델들의 로딩 및 언로딩은, DNN 모델들이 CPU/다른 프로세싱 유닛들의 메모리에 프리로딩되면 스킵될 수 있다. 많은 수의 DNN 모델들이 장치에 설치된 애플리케이션들에 의해 사용되고, CPU/다른 프로세싱 유닛들에 DNN 모델들을 프리로딩된 채로 유지하기 위한 메모리 요건이 높은 경우, 상기 프리로딩은 장치에 의해 제한될 수도 있다.
애플리케이션 런칭, 애플리케이션 출구들, 및 애플리케이션 내의 모드 스위치들을 동안 복수의 DNN 모델들의 로딩 및 언로딩의 프로세스들은 장치의 성능을 저하시킬 수 있다. 복잡한 DNN 모델들의 상당한 메모리 요건들로 인해 모든 요구되는 DNN 모델들을 프리로드하는 것이 가능하지 않을 수도 있다. 현재, 각 DNN 모델에 의한 메모리 사용을 최적화하기 위해 사용되는 방법들이 존재한다. 그러나, 다수의 DNN 모델들이 사용될 때, 메모리의 특정 부분은 DNN 모델들 각각을 저장하기 위해 예약될 필요가 있다. 이는 장치에서 사용될 수 있는 DNN 모델들의 수를 제한할 수 있다. CPU와는 별도로, GPU(Graphical Processing Unit), DSP(Digital Signal Processor), NPU(Neural Processing Unit) 등과 같은 장치 내의 다른 프로세싱 유닛들은, 장치 내의 애플리케이션들에 의해 사용되는 모든 DNN 모델들을 프리로딩하기에 충분한 메모리를 갖지 않을 수 있다. 따라서, 메모리/성능 제약들로 인해, 애플리케이션들의 개발자들/설계자들은 더 간단한 모델들을 배치할 수 있는데, 이는 모든 애플리케이션들의 모든 특징들을 이용한다는 점에서 장치의 성능을 향상시키지 못할 수 있다.
현재, 새로운 DNN 모델들을 개발 또는 생성하기 위해서 (기계 학습(machine learning)에 기초한) 전이 학습(transfer learning)이 사용된다. 전이 학습에서, 제1 태스크를 수행하기 위해 개발된 DNN 모델은 제2 태스크를 수행하기 위해 재사용될 수 있다. DNN의 원래 구조는 또한 새로운 DNN 모델을 "생성" 하기 위한 변화를 거친다. 초기에(전이 학습 동안), 높은 정확성, 낮은 복잡성 및 작은 크기를 가진 사전 훈련된(pre-trained) DNN 모델이 식별된다. 상기 사전 훈련된 DNN 모델은 상기 제1 태스크를 수행하도록 구성될 수 있다. 그 후, 상기 사전 훈련된 모델은 새로운 데이터 세트를 사용하여 훈련되는데, 여기서 새로운 데이터 세트와 DNN 모델을 사전 훈련하는데 사용되는 데이터 세트 사이에 작은 차이가 존재한다. 일단 새로운 데이터 세트를 이용한 훈련이 완료되면, DNN 모델은 제2 태스크를 수행할 수 있다. 상기 DNN 모델의 구조는 전이 학습으로 인해 변화를 거친다. 미리 확보된(pre-detained) DNN 모델을 훈련시키기 위해 상이한 데이터 세트들을 사용하면, 상이한 새로운 DNN 모델들을 얻을 수 있다. 상기 새로운 DNN 모델들은 이들 각각의 구조들에서 유사성을 가질 수 있다. 따라서, 장치 내에 배치된 복수의 DNN 모델들이 존재하고, DNN 모델들 각각이 다른 DNN 모델들과 구조적 유사성을 갖는 경우, 불필요한 메모리 사용이 있을 것이다.
도 1 은 본 개시의 일 실시예에 따른 카메라 애플리케이션의 런칭 및 모드 스위칭 동안 DNN 모델들의 로딩 및 언로딩을 도시하는 예시적인 시나리오이다. . 상기 카메라 애플리케이션은 2개의 동작 모드, 즉 제1 모드 및 제2 모드를 갖는 것으로 간주한다. 도 1에 도시된 바와 같이, 카메라 애플리케이션이 사용자에 의해 런칭될 때 제1 모드가 사용되는 것으로 고려한다. 제1 모드에서 동작하는 동안, 2개의 DNN 모델들은 카메라 애플리케이션에 의해 사용된다. DNN 모델들은 제1 분류기 및 제1 검출기인 것으로 간주한다. 상기 제1 검출기는 카메라 프리뷰에서 객체들을 검출할 수 있고, 제1 분류기는 상기 검출된 객체들을 분류할 수 있다.
상기 카메라 애플리케이션이 제1 모드로 동작할 때, 상기 제1 분류기와 상기 제1 검출기가 하나의 프로세싱 유닛들(예: GPU)에 로딩된다. 일 예에서, 제1 분류기와 제1 검출기를 GPU에 로딩하는데 걸리는 시간은 대략 2.7초이다. 모드 스위치가 있는 경우, 카메라 애플리케이션은 (상기 제1 모드로부터 스위칭된 후) 상기 제2 모드로 동작하기 시작한다. (제1 모드로부터 제2 모드로) 모드 스위치 후에, 제1 분류기와 제1 검출기는 GPU로부터 언로딩되고, 제2 분류기(DNN 모델)와 제2 검출기(DNN 모델)이 로딩된다. 상기 제2 분류기와 상기 제2 검출기를 로딩하고 상기 제1 분류기와 상기 제1 검출기를 언로딩하는데 걸리는 시간은 2.7초일 수 있다. 상기 모드가 제2 모드로부터 제1 모드로 스위칭될 때, 제1 분류기와 제1 검출기는, 제2 분류기와 제2 검출기를 언로딩한 후에 로딩된다. 따라서, 분류기들과 검출기들을 로딩하고 언로딩하는 프로세스에 걸리는 시간(약 2.7초)이 장치의 성능을 저하시킨다.
레이턴시 성능 저하(latency performance degradation)는 DNN 모델들의 프리로딩을 제한하고 또한 빈번한 로딩 및 언로딩을 요구하는 프로세싱 유닛들의 메모리 제약으로 인한 것이다. 일 예에서, 상기 모델들은 장치 부트 시간에 로딩될 수 있다. 프로세싱 유닛들에 각 모델이 로딩된 채로 유지하기 위해, 상당한 양의 메모리가 신속하게 처리될 필요가 있고, 이는 장치의 또 다른 제약(constraint) 이다. 장치들이 발전하면서, 장치들 내에 배치된 모델들의 수가 증가하고 있다. 상기 모델들의 대부분은 더 빠른 GPU들, DSP들, 및 NPU들 상에서 실행되어야 한다. 상기 장치들의 RAM(Random Access Memory) 크기들이 상당히 증가하였지만, 프로세싱 유닛들 상에 DNN 모델들을 프리로딩된 채로 유지하기 위해 요구되는 메모리의 양은 충분하지 않을 수 있다.
알 수 있는 바와 같이, 임베디드 장치들 바로 위의 DNN 모델들은 상당한 계산 복잡성과 메모리 요건들을 활용하므로 새로운 어려움들을 나타낼 수 있다.
본 명세서에서의 실시예들 및 이들의 다양한 특징들과 이로운 세부사항들은 첨부된 도면들에서 예시되고 이하의 설명에서 상세히 설명되는 비제한적인 실시예들을 참조하여 보다 완전하게 설명된다. 잘 알려진 구성요소들 및 프로세싱 기술들에 대한 설명은 본 명세서의 실시예들을 불필요하게 모호하게 하지 않도록 생략된다. 본 명세서에서 사용되는 예들은 단지 본 명세서의 실시예들이 실시될 수 있는 방식들의 이해를 용이하게 하고 당업자가 본 명세서의 실시예들을 실시할 수 있게 하기 위함일 뿐이다. 따라서, 상기 예들은 본 명세서의 실시예들의 범위를 제한하는 것으로 해석되지 않아야 한다.
본 명세서의 실시예들은, 장치 내의 DNN 모델들의 구조들 내의 리던던시를 식별하고, 장치 내의 DNN 모델들 간의 의존성에 기초한 DNN 모델들의 레이어들의 효율적인 프리로딩/로딩/언로딩을 통해 장치에서 DNN 모델들을 배치하는 방법들 및 시스템들을 개시한다. 상기 실시예들은 다수의 DNN 모델들에 존재하는 레이어들을 결정함으로써, DNN 모델들의 구조들에서의 리던던시를 식별하는 것을 포함한다. 상기 실시예들은 모든 DNN 모델들의 모든 레이어들에 관한 기준 카운트 값을 결정하는 것을 포함한다. 상기 실시예들은 각 DNN 모델의 각 레이어를 횡단하고 각 레이어에 관한 기준 카운트 값을 초기화하는 것을 포함한다. 상기 실시예들은, DNN의 일 레이어에 관한 기준 카운트 값을, 그 레이어가 (다른 DNN 모델에서) 한 번 이상 횡단하는 경우, 증가시키는 것을 포함한다. 상기 실시예들은 레이어에 관한 기준 카운트 값이 증가된 경우, 상기 레이어를 리던던시의 요인(contributor)으로 식별하는 것을 포함한다.
상기 실시예들은 애플리케이션 내의 또는 복수의 애플리케이션들에 걸친 DNN 모델들 사이의 의존성을 결정하는 것을 포함한다. 적어도 2 개의 DNN 모델들 사이의 존재하는 의존성은 상기 적어도 2개의 DNNS 모델들이 동시에, 독립적으로 또는 순차적으로 적어도 하나의 애플리케이션에 의해 실행되는지 여부를 확인하여 결정될 수 있다. 본 명세서의 실시예들은 DNN 모델들의 리던던시 및 복수의 애플리케이션들에 걸친 또는 애플리케이션 내의 DNN 모델들의 의존성에 기초하여, DNN 모델들의 상이한 레이어들을 프리로딩하는 것을 포함한다.
이제 도면들, 특히 유사한 참조 문자들이 도면들에 걸쳐 해당 특징들을 일관적으로 나타내는 도 2 내지 도 10을 참조하여, 바람직한 실시예들이 도시되어 있다.
도 2는 본 개시의 실시예들에 따라, DNN 모델들의 구조들에 있어서의 리던던시 및 DNN 모델들 간의 의존성에 기초하여 장치(200)에 DNN 모델들을 배치하도록 구성된 장치(200)의 다양한 유닛들을 도시한다. 도 2에 도시된 바와 같이, 상기 장치(200)는 모델 리던던시 분석기(201), 모델 의존성 분석기(202), 모델 프리로더(203), 적어도 하나의 프로세싱 유닛들(204), 메모리(205) 및 디스플레이(206)를 포함한다. 상기 장치(200)의 예들은 스마트폰, 태블릿, 노트북, 착용가능한 장치, 개인용 컴퓨터(PC), IoT(Internet of Things) 장치 또는 임의의 다른 임베디드 장치를 포함하지만 이에 한정되지는 않는다. 일 실시예에서, 상기 모델 리던던시 분석기(201), 상기 모델 의존성 분석기(202), 상기 모델 프리로더(203) 및 상기 적어도 하나의 프로세싱 유닛(204)은 적어도 하나의 하드웨어 프로세서로 구현될 수 있다.
상기 적어도 하나의 프로세싱 유닛(204)은 적어도 하나의 CPU, GPU, DSP 및 NPU 중 적어도 하나를 포함한다. 상기 메모리(205)는 적어도 하나의 프로세싱 유닛(204)에 로딩되거나 그로부터 언로딩되는 DNN 모델들을 저장할 수 있다. 상기 메모리(205)는 DNN 모델들의 레이어들의 세부사항들, DNN 모델들의 구조들, 상기 적어도 하나의 프로세싱 유닛(204)에서 이용 가능한 메모리, DNN 모델들 간의 리던던시 및 DNN 모델들 사이의 의존성 중 적어도 하나에 관한 정보를 저장할 수 있다. 상기 정보는 상기 모델 리던던시 분석기(201), 상기 모델 의존성 분석기(202) 및 상기 모델 프리로더(203) 중 적어도 하나에 의해 검색되어, 상기 적어도 하나의 프로세싱 유닛(204)에서 DNN 모델들의 배치를 관리할 수 있다.
복수의 애플리케이션들은 상기 장치(300)에 설치될 수 있고, 하나 이상의 애플리케이션들은 적어도 하나의 DNN 모델을 이용하여 상기 애플리케이션들에 관한 동작들을 수행할 수 있다. 각 DNN 모델은 다중 레이어들을 포함한다. DNN 모델들의 배치는 장치(200)에 DNN 모델들을 로딩/프리로딩하고 장치(200)로부터 DNN 모델들을 언 로딩하는 것을 포함한다. 효율적인 로딩, 언로딩 및 프리로딩은 장치(200)의 메모리 사용 효율 및 레이턴시를 향상시킬 수 있다.
상기 모델 리던던시 분석기(201)는 DNN 모델들의 구조들(아키텍처들)에서 리던던시를 식별할 수 있다. 일 실시예에서, 상기 모델 리던던시 분석기(201)는 각 DNN 모델을 다른 DNN 모델들과 비교하여 DNN 모델들의 구조들(아키텍처들)에서 리던던시를 식별할 수 있다. 예를 들어, 장치(200)가 5개의 DNN 모델들을 포함하는 경우, 상기 모델 리던던시 분석기(201)는 각 DNN 모델을 다른 4개의 DNN 모델들과 비교할 수 있다. 상기 비교는 DNN 모델들 각각의 각 레이어에 관한 기준 카운트를 결정하는 것과 연관된다. 상기 모델 리던던시 분석기(201)는 DNN 모델들 각각의 각 레이어를 횡단할 수 있다. DNN 모델의 레이어가 처음으로 횡단될 때, 상기 모델 리던던시 분석기(201)가 DNN 모델의 레이어에 관한 기준 카운트 값을 초기화할 수 있다.
제1 DNN 모델을 횡단하는 동안, 상기 모델 리던던시 분석기(201)가 상기 제1 DNN 모델의 레이어가 이미 횡단되었다고 결정한 경우(예: 제2 DNN 모델), 상기 모델 리던던시 분석기(201)는 상기 제1 DNN 모델의 레이어에 관한 기준 카운트 값을 증가시킨다. 일 실시예에서, 상기 모델 리던던시 분석기(201)는 DNN 모델의 레이어가 횡단되었는지를, 해당 레이어의 세부사항들을 기준으로 결정한다. 일 예에서, 상기 세부사항들은 컨벌루션(convolution)과 같은 레이어 타입과, 커널 크기, 스트라이드(strides), 패딩(padding) 등과 같은 다른 파라미터들을 포함한다.
상기 제1 DNN 모델의 레이어의 세부사항들이 고유하고 이미 횡단된 다른 DNN 모델의 다른 레이어의 세부사항들과 일치하지 않으면, 레이어는 고유한 것으로 간주된다. 반면, 제1 DNN 모델의 레이어의 세부사항들이 제2 DNN 모델 또는 이미 횡단된 어느 다른 DNN 모델의 레이어의 세부사항들과 일치하는 경우, 제1 및 제2 DNN 모델들 및 다른 DNN 모델(들)의 레이어가 제1 DNN 모델, 제2 DNN 모델 및 다른 DNN 모델(들)의 구조들에서 리던던시에 대한 요인으로 간주된다. 상기 모델 리던던시 분석기(201)는 리던던시에 기여하는 레이어들에 관한 기준 카운트 값을 증가시킬 수 있다.
일 실시예에서, 레이어의 세부사항들은 연산들(operations) 내의 학습된 가중치들과 바이어스 값들일 수 있는, 레이어에 관한 파라미터들을 포함한다. DNN 모델들의 구조들은 네트워크들에서 연산들(operations)의 조합을 나타내거나 포함할 수 있다. 일례에서, 구조는 제1 ReLU (Rectified Linear Unit) 동작 블록이 그 뒤에 따르는 3x3 컨볼루션 블록을 포함한다. 상기 제1 ReLU 동작 블록은 1x1 컨볼루션 블록 및 제2 ReLU 동작 블록이 그 뒤에 따른다.
일단 모든 DNN 모델들의 모든 레이어들에 관한 기준 카운트 값들이 결정되면, DNN 모델들 각각의 구조들은 카테고리들, 즉 공통 영역과 특정 영역으로 나뉜다. DNN 모델에서, 적어도 하나의 DNN 모델이 그 구조에 레이어를 포함하는 경우, 레이어는 DNN 모델의 공통 영역에 속하는 것으로 간주된다. 마찬가지로 레이어가 DNN 모델의 고유한 레이어 인 경우, 레이어는 DNN 모델의 특정 영역에 속한다. 카테고리화를 통해 DNN 모델들의 구조들에서 리던던시의 요인들을 결정할 수 있다. 상기 모델 리던던시 분석기(201)는 트리(tree)인 최적화된 모델 데이터를 생성할 수 있으며, 루트 노드는 최대 기준 카운트를 갖는 레이어들을 포함한다. 이어지는 레벨들의 레이어들은 더 작은 기준 카운트 값들을 갖는다. 리프 노드들은 최저 기준 카운트 값들을 갖는 레이어들을 포함하고, 각각의 DNN 모델들의 구조들의 특정 영역들에 속하는 DNN 모델들의 고유 레이어들을 나타낸다.
상기 모델 의존성 분석기(202)는 장치(200)내에 배치될 DNN 모델들 간의 의존성을 결정할 수 있다. 의존성은 DNN 모델들이 애플리케이션(들)에 의해 수행되는 순서와 DNN 모델들의 상이한 레이어들 (특히 각 DNN 모델들의 특정 영역들의 레이어들)이 실행을 위해 프로세싱 유닛(204)에 로딩되거나 그로부터 언로딩되는 순서를 나타낸다.
DNN 모델들 간의 의존성은 애플리케이션 내에 존재할 수 있으며, 적어도 2개의 DNN 모델들이 애플리케이션에 의해 순차적으로 또는 병렬적으로 실행된다. 상기 의존성은 하나 이상의 애플리케이션들에 걸칠 수 있으며, 적어도 2개의 DNN 모델들이 각각의 애플리케이션들에 의해 동시에 또는 병렬로 실행된다. 상기 적어도 2개의 DNN 모델들이 독립적으로 실행되면, 상기 상이한 DNN 모델들 간에 의존성이 없다.
상기 모델 의존성 분석기(202)는 상기 DNN 모델들 간의 의존성을 묘사하기 위한 모델 의존성 그래프를 생성한다. 일 실시예에서, 의존성은 DNN 모델들을 실행하는 애플리케이션들에 의해 제공되는 정보를 이용하여 결정될 수 있다. 상기 정보는 상기 DNN 모델들이 순차적인지, 병렬적인지, 또는 독립적인지 여부를 특정한다. 상기 모델 의존성 그래프의 노드들은 DNN 모델들을 나타내고, 노드들을 연결하는 에지들은 DNN 모델들이 애플리케이션(들)에 의해 실행되는 순서를 나타낸다. 상기 모델 의존성 그래프의 노드들을 연결하는 에지들의 타입들은 DNN 모델들이 어플리케이션(들)에 의해 실행되는 순서를 특정한다. 에지들의 타입들은 DNN 모델들이 동시에 또는 순차적으로 로딩될 것인지 여부를 특정한다. 일 실시예에서, 2개의 DNN 모델들을 연결하는 디렉티드(directed) 에지가 있는 경우, (상기 디렉티드 에지가 출발한) 소스 노드를 나타내는 DNN 모델이 우선 실행되고, 목적지 노드를 나타내는 DNN 모델이 두 번째로 실행된다. 따라서, 디렉티드 에지는 DNN 모델들이 순차적으로 실행되도록 특정한다. 다른 실시예에서, 2개의 DNN 모델들 사이에 디렉티드 에지가 존재하는 경우, 언디렉티드 에지(undirected edge)에 의해 연결된 DNN 모델들은 병렬적으로 실행된다. 또 다른 실시예에서, 2개의 DNN 모델들 사이에 에지가 존재하지 않는 경우, DNN 모델들은 서로 독립적으로 실행된다. 상기 모델 의존성 그래프는 프리로딩될 필요가 있는 DNN 모델들의 레이어들을 결정하기 위해 상기 모델 프리로더(203)에 의해 이용될 수 있다.
상기 모델 프리로더(203)는 DNN 모델들의 구조들에 있어서의 리던던시 및 복수의 애플리케이션들에 걸친 또는 애플리케이션 내의 DNN 모델들의 의존성에 기초하여, DNN 모델들의 레이어들을 프리로딩한다. 상기 모델 프리로더(203)는 최적화된 모델 데이터와 모델 의존성 그래프, 그리고 DNN 모델들의 레이어들을 프리로딩하기 위해 적어도 하나의 프로세싱 유닛(204)에서 이용가능한 메모리를 검색한다. 상기 프리로딩은 레이턴시를 줄인다. 상기 모델 프리로더(203)는 공통 영역들의 레이어들이 여러 번 프리로딩되지 않도록 한다.
일 실시예에서, 리던던시에 기여하는 DNN 모델들의 레이어들이 프리로딩될 수 있다. 리던던시에 기여하는 DNN 모델들의 레이어들은 레이어들에 관한 기준 카운트 값들에 기초하여 우선순위들을 할당 받을 수 있다. DNN 모델의 레이어에 관한 기준 카운트 값이 높으면, 할당된 우선순위가 높다. DNN 모델의 레이어에 관한 기준 카운트 값이 낮으면, 할당된 우선순위가 낮다. 리던던시에 기여하는 DNN 모델들의 레이어들의 우선순위들에 기초하여, DNN 모델들은 적어도 하나의 프로세싱 유닛(204)에 프리로딩될 수 있다.
상기 모델 의존성 그래프, 최적화된 모델 데이터 및 적어도 하나의 프로세싱 유닛(204)의 이용 가능한 메모리에 기반하여, 상기 모델 프리로더(203)는 상기 적어도 하나의 프로세싱 유닛(204)에서 이용 가능한 메모리에 기초하여 로딩되거나 언로딩될 DNN 모델들의 레이어들을 결정할 수 있다. 상기 모델 프리로더(203)는 상기 적어도 하나의 프로세싱 유닛(204)의 메모리에 DNN 모델들의 구조들의 부분들(공통 영역들 및/또는 특정 영역)을 로딩/언로딩할 수 있다. 상기 모델 프리로더(203)는 적어도 하나의 프로세싱 유닛(204)에 의해 공유되는 메모리에 기초하여 DNN 모델이 언로딩되거나 로딩될 때, 로딩/언로딩된 채로 유지될 DNN 모델들의 구조물들의 부분들을 결정할 수 있다.
도 2는 장치(200)의 예시적인 단위들을 도시하지만, 다른 실시예들이 이에 제한되지 않는다는 것을 이해할 것이다. 다른 실시예들에서, 장치(200)는 더 적거나 많은 수의 단위들을 포함할 수 있다. 또한, 유닛들의 라벨들 또는 명칭들은 예시적인 목적으로 만 사용되며, 실시예들의 범위를 제한하지 않는다. 하나 이상의 구성요소들이 함께 결합되어 장치(200)에서 동일하거나 실질적으로 유사한 기능을 수행할 수 있다.
도 3a는 본 개시의 실시예들에 따라, DNN 모델들의 구조들에 있어서의 리던던시 및 DNN 모델들 간의 의존성에 기초하여, 장치(200)에 DNN 모델들을 배치하는 방법을 묘사한 흐름도(300)이다. 301 단계에서, 상기 방법은 장치(200)내의 상이한 DNN 모델들의 동일한 레이어들의 존재에 기초하여 DNN 모델들 각각의 구조들에서의 리던던시를 식별하는 것을 포함한다. 일 실시예에서, 각 DNN 모델은, DNN 모델들 각각의 모든 레이어들에 관한 기준 카운트 값을 결정하고 이 기준 카운트 값들을 비교하여, 다른 DNN 모델들과 비교될 수 있다.
상기 실시예들은 DNN 모델들의 층들을 횡단하고, DNN 모델들의 레이어들이 처음으로 횡단될 때 DNN 모델들의 층들에 관한 기준 카운트 값들을 초기화하는 것을 포함한다. 상이한 DNN 모델들을 횡단하는 동안 DNN 모델들의 레이어들이 이전에 횡단된 적이 있다고 결정되면, 상기 DNN 모델들의 레이어들에 관한 상기 기준 카운트 값들은 증가된다. 상기 실시예들은 DNN 모델의 레이어가, 그의 세부사항들에 기초하여, 이미 횡단되었는지를 판단하는 것을 포함한다. 상기 실시예들은 상기 DNN 모델들의 레이어들에 관한 기준 카운트 값이 증가되면, 상기 DNN 모델들의 레이어들이 리던던시에 기여한다고 식별하는 것을 포함한다.
모든 DNN 모델들의 모든 레이어들에 관한 기준 카운트 값들에 기초하여, 상기 실시예들은 DNN 모델들의 구조들을 2개의 카테고리들, 즉 공통 영역과 특정 영역으로 카테고리화하는 것을 포함한다. DNN 모델의 공통 영역에 속하는 레이어들은 리던던시에 기여한다. DNN 모델들의 공통 영역에 속하는 레이어들은 DNN 모델에 고유하다. 상기 실시예들은 상이한 DNN 모델들의 레이어들의 기준 카운트 값들을 묘사하는 최적화된 모델 데이터를 생성하 것을 포함한다. 일 실시예에서, 상기 최적화된 모델 데이터는 트리이고, 여기서 루트 노드의 레이어들은 최대(highest) 기준 카운트를 갖는다. 상기 트리의 리프 노드들은 최저 기준 카운트 값들을 갖는 레이어들로 구성되고, 각각의 DNN 모델들에서 고유 레이어들을 나타낸다.
302 단계에서, 상기 방법은 하나의 어플리케이션 또는 복수의 어플리케이션들에 의해 수행되는 순서에 있어, DNN 모델들 사이의 의존성을 결정하는 것을 포함한다. 상기 실시예들은 특정 DNN 모델들이 상기 애플리케이션/복수의 애플리케이션들에 의해 실행되는 순서를 확인하기 위해 DNN 모델들 간의 의존성을 결정하는 것을 포함한다. 상기 순서는 DNN 모델들의 상이한 레이어들이 상기 적어도 하나의 프로세싱 유닛(204)에 의해 실행을 위해 로딩되는 순서와 실행이 완료된 후 상기 DNN 모델들의 상이한 레이어들이 상기 적어도 하나의 프로세싱 유닛(204)으로부터 언로딩되는 순서를 특정한다.
상기 DNN 모델들 간의 의존성에 기초하여, 상기 실시예들은 적어도 2개의 DNN 모델들이 애플리케이션에 의해 순차적으로 실행될 지 병렬적으로 실행되는지를 결정하는 것을 포함한다. 상기 적어도 2개의 DNN 모델들이 순차적으로 실행되면, 상기 적어도 2개의 DNN 모델들의 로딩(상기 적어도 하나의 프로세싱 유닛(204)에서 충분한 메모리가 이용가능하지 않은 경우에는 언로딩)이 실행 순서 뒤에 온다. 상기 적어도 2개의 DNN 모델들이 병렬적으로 실행되면, 상기 적어도 2개의 DNN 모델들은 동시에 로딩되고, 상기 적어도 2개의 DNN 레이어들의 공통 영역들의 레이어들의 다수의 로딩을 회피한다. 상기 적어도 2개의 DNN 모델들이 독립적으로 실행되면, 상기 상이한 DNN 모델들 간에 의존성이 없다.
상기 실시예들은 상기 DNN 모델들 간의 의존성을 묘사하는 모델 의존성 그래프를 생성하는 것을 포함한다. 상기 모델 의존성 그래프의 노드들은 DNN 모델들을 나타내고, 상기 노드들을 연결하는 에지들은 DNN 모델들이 실행되는 순서를 나타낸다. 상기 모델 의존성 그래프의 노드들을 연결하는 에지들의 타입들은 DNN 모델들이 실행되는 순서를 특정한다. 2개의 DNN 모델들을 연결하는 디렉티드 에지가 있는 경우, 상기 소스 노드를 나타내는 DNN 모델이 먼저 실행되고, 목적지 노드를 나타내는 DNN 모델이 두 번째로 실행된다. 상기 2개의 DNN 모델들 사이에 디렉티드 에지가 있는 경우, 디렉티드 에지에 의해 연결된 DNN 모델들이 병렬적으로 실행된다.
303 단계에서, 상기 방법은, DNN 모델들의 구조들에서의 식별된 리던던시와 DNN 모델들 간의 의존성에 기초하여 DNN 모델들의 레이어들을 프리로딩, 로딩 및 언로딩하는 것을 포함한다. 상기 실시예들은 상기 DNN 모델들의 레이어들에 관한 기준 카운트 값들에 기초하여, 리던던시에 기여한 DNN 모델들의 레이어들에 우선권들을 할당하는 것을 포함한다. 상기 DNN 모델들의 레이어들에 할당된 우선권들은 하나의 DNN 모델에서 레이어들에 관한 기준 카운트 값들에 직접 비례한다. 상시 실시예들은 적어도 하나의 프로세싱 유닛(204)에 DNN 모델들의 레이어들을 프리로딩하는 것을 포함하며, 상기 프리로딩된 레이어들은 할당된 우선순위들에 기초하여 DNN 모델들의 구조들의 리던던시에 기여한다. 상기 적어도 하나의 프로세싱 유닛(204)이 항상 모든 DNN 모델들의 모든 레이어들이 프리로딩된 채로 유지하는데 충분한 메모리를 갖지 않을 수 있으므로, 상기 실시예들은 우선순위들을 설정한다.
상기 실시예들은 이용 가능한(상기 적어도 하나의 프로세싱 유닛(204)에 의해 결정된 메모리의 용량의 이용 가능성) 메모리에 기초하여 로딩되거나 프리로딩될 DNN 모델들의 레이어들을 결정하는 것을 포함한다. 상기 실시예들은 상기 적어도 하나의 프로세싱 유닛(204)의 메모리에 DNN 모델들의 구조들의 공통 영역들 및/또는 특정 영역들에 레이어들을 로딩하는 것을 포함한다. 상기 실시예들은, 상기 적어도 하나의 프로세싱 유닛(204)의 메모리가 충분하지 않은 경우, 상기 DNN 모델들의 구조들의 공통 영역들 및/또는 특정 영역들에 레이어들을 언로딩하는 것을 포함한다. 상기 실시예들은, DNN 모델이 상기 적어도 하나의 프로세싱 유닛(204)에 의해 공유된 메모리에 기초하여 언로딩/로딩될 때, 로딩/언로딩된 채로 유지될 DNN 모델들의 구조물들의 부분들을 결정하는 것을 포함한다.
일 실시예에서, 전술한 방법은 상기 장치(200)의 프로세싱 유닛(204)에 의해 수행될 수 있다.
상기 흐름도(300)의 다양한 동작들은 제시된 순서, 다른 순서, 또는 동시에 수행될 수 있다. 또한, 일부 실시예들에서, 도 3에 나열된 일부 동작들은 생략될 수 있다.
도 3B는 본 개시의 실시예들에 따라, DNN 모델들을 관리하기 위한 방법을 묘사한 흐름도(310) 이다.
도 3B를 참조하면, 311 단계에서, 상기 프로세싱 유닛(204)은 복수의 DNN 모델들 각각과 연관된 정보를 추출할 수 있다. 상기 복수의 DNN 모델들 각각과 연관된 정보는 상기 복수의 DNN 모델들 각각의 파라미터들과 구조들을 포함할 수 있다. 레이어에 연관된 파라미터들은 장치 내에서 수행되는 연산들 내의 학습된 가중치들과 바이어스 값들일 수 있다.
313 단계에서, 상기 프로세싱 유닛(204)은 상기 정보로부터 상기 복수의 DNN 모델들에 걸쳐 공통된 공통 정보를 식별할 수 있다.
315 단계에서, 상기 프로세싱 유닛(204)은 상기 공통 정보를 장치 내의 지정된 위치로 분리하여 저장한다.
317 단계에서, 상기 프로세싱 유닛(204)은 복수의 DNN 모델들 중 적어도 하나의 DNN 모델이 상기 공통 정보에 접근하도록 제어할 수 있다. 일 실시예에서, 상기 프로세싱 유닛(204)은 상기 장치의 프리로딩된 메모리 용량에 기초하여 공통 정보의 서브셋을 프리로딩할 수 있다.
일 실시예에서, 상기 프로세싱 유닛(204)은 상기 복수의 DNN 모델들 중 상기 장치에 설치된 각 애플리케이션과 연관된 의존 모델들을 결정할 수 있다. 상기 의존 모델들은 상기 복수의 DNN 모델들 중 다른 모델과 동시에 실행되도록 요구되는 모델과 상기 복수의 DNN 모델들 중 다른 모델과 연관하여 고정된 실행 순서를 갖는 모델 중 적어도 하나를 포함할 수 있다. 상기 복수의 DNN 모델들 중 다른 모델과 연관하여 고정된 실행 순서를 갖는 모델은, 상기 복수의 DNN 모델들 중 다른 모델과 연관하여 직렬로 수행될 모델과 복수의 DNN 모델들 중 다른 모델과 병렬로 수행될 모델 중 적어도 하나를 포함할 수 있다.
도 4는 본 개시의 실시예들에 따라, 2개의 DNN 모델들에서의 리던던시의 식별을 도시한 예이다. 도 4에 묘사된 바와 같이, 장치(200) 상에 배치될 2개의 DNN들, 즉 네트워크 1과 네트워크 2가 존재하는 것으로 간주한다. 네트워크 1과 네트워크 2가 전이 학습을 통해 획득되었으며, DNN 모델들, 즉 네트워크 1과 네트워크 2를 획득하기 위해 상이한 데이터 세트들을 이용하여 미리 훈련된 DNN 모델이 훈련된다고 간주한다. 따라서, 네트워크 1과 네트워크 2는 네트워크 1과 네트워크 2의 구조들의 리던던시에 기여하는 구조적 유사성을 가질 가능성이 있다. 네트워크 1과 네트워크 2의 노드들은 DNN 모델들의 레이어들을 나타낸다.
상기 모델 리던던시 분석기(201)는 네트워크 1과 네트워크 2의 레이어들을 횡단하여 양 DNN들, 즉 네트워크 1과 네트워크 2에 존재하는 레이어들을 결정할 수 있다. 네트워크 1과 네트워크 2 모두(의 일부)에 존재하는 레이어들은 리던던시에 기여하는 것으로 식별된다. 상기 모델 리던던시 분석기(201)가 우선 네트워크 1의 레이어들을 횡단하고, 그 다음은 네트워크 2의 레이어들인 것으로 간주한다. 특정 레이어가 처음으로 횡단될 때, 상기 모델 리던던시 분석기(201)가 상기 특정 레이어에 관한 기준 카운트 값을 초기화한다. 상기 모델 리던던시 분석기(201)는 우선 네트워크 1을 횡단하고, 네트워크 1의 모든 레이어들이 횡단 중에 초기화된다고 간주한다.
일단 네트워크 1의 횡단이 완료되면, 상기 모델 리던던시 분석기(201)는 네트워크 2의 레이어들을 횡단하기 시작할 수 있다. 상기 모델 리던던시 분석기(201)는 네트워크 1과 네트워크 2 모두에 존재하는 그러한 레이어들에 관한 기준 카운트 값들을 증가시킬 수 있다. 상기 모델 리던던시 분석기(201)는 레이어들에 관한 파라미터들과 레이어들의 가중치에 기초하여, 그러한 레이어들이 동일하다고 결정하면, 기준 카운트 값들을 증가시킬 수 있다. 네트워크 2의 레이어들의 나머지에 관한 상기 기준 카운트 값들은 초기화된다. 관련된 기준 카운트가 증가된 레이어들은 (녹색으로 표시된) 리던던시에 기여하는 것으로 식별된다.
따라서, 상기 기준 카운트 값들에 기초하여, 네트워크 1과 네트워크 2의 구조들은 카테고리화되어 최적화된 모델 데이터를 생성한다. 상기 구조들은 (리던던시에 기여하는) 공통 영역과 (넌리던던트한) 특정 영역들로 카테고리화된다. 네트워크들(DNN 모델들)의 구조를 공통 영역과 특정 영역 중 하나로 분류하는 것은 장치(200)의 저장소를 최적으로 활용할 수 있도록 한다. 상기 실시예들은 데이터의 리던던트한 저장 및 특정 칩셋 또는 프로세서로부터의 독립을 방지한다. 상기 모델 리던던시 분석기(201)는 네트워크들이 칩셋 또는 프로세싱 유닛에 배치되도록 한다.
도 5는 본 개시의 실시예들에 따라, 장치(200)에 설치된 카메라 애플리케이션에 의해 이용되는 DNN 모델들 내의 리던던트 및 넌리던던트(non-redundant) 레이어들을 표시하는, 최적화된 모델 데이터의 생성을 도시한 예이다. 상기 카메라 애플리케이션은 2가지 모드들, 즉 제1 모드와 버전 모드로 동작할 수 있다. 상기 카메라 애플리케이션이 제1 모드로 동작할 때, 제1 분류기와 상기 제1 검출기가 실행된다. 상기 카메라 애플리케이션이 제2 모드로 동작할 때, 제2 분류기와 제2 검출기가 실행된다. 사용자는 상기 카메라 애플리케이션을 이용하는 동안 동작 모드들을 스위칭할 수 있고, 그 결과 연관된 분류기와 검출기가 실행된다.
상기 모델 리던던시 분석기(201)는 제1 분류기, 제1 검출기, 제2 분류기와 제2 검출기의 레이어들을 횡단하여, 모든 4개의 DNN 모델들에 존재하는 레이어들을 결정할 수 있다. 적어도 2개의 DNN 모델들에 존재하는 레이어들은 제1 분류기, 제1 검출기, 제2 분류기 및 제2 검출기의 구조들에서 리던던시에 기여하는 것으로 간주될 수 있다. 상기 제1 분류기, 제1 검출기, 제2 분류기 및 제2 검출기의 구조들의 특정 영역들에 속하는 레이어들은 고유 레이어들이다.
도 5에 묘사된 바와 같이, 상기 제1 분류기, 제1 검출기, 제2 분류기 및 제2 검출기에 242개의 레이어들이 존재한다. 상기 최적화된 모델 데이터는 트리로 대표되고, 더 높은 기준 카운트를 갖는 레이어들이 더 낮은 기준 카운트(들)을 갖는 레이어들에 대해 페어런트(parent)의 역할을 한다. 리프 노드들의 레이어들은 각 DNN 모델들에서 고유 레이어들이다.
제1 분류기, 제1 검출기, 제2 분류기 및 제2 검출기에 레이어들 0 - 158이 존재하는 것으로 간주한다. 이러한 레이어들은 4개의 DNN들의 구조들에서 리던던시에 기여한다. 레이어들 0 - 158이 제1 분류기, 제1 검출기, 제2 분류기 및 제2 검출기에 존재하므로, 이들 각각이 4의 기준 카운트를 갖는다. 레이어들 159 - 217은 제1 분류기와 제2 분류기에 존재한다. 레이어들 159 - 217은 2의 기준 카운트를 갖는다. 레이어들 159 - 189은 제1 검출기와 제2 검출기에 존재한다. 레이어들 159 - 189은 2의 기준 카운트를 갖는다. 나머지 레이어들은 넌리던던트하고 각 DNN 모델들에 고유하다. 레이어들 218 - 219는 제1 분류기에 고유하고, 레이어들 218 - 219는 제2 분류기에 고유하고, 레이어들 190 - 235는 제2 검출기에 고유하고, 레이어들 190 - 242는 제1 검출기에 고유하다. 고유한 레이어들은 1의 기준 카운트를 가지며 리프 노드들이다.
제1 분류기, 제1 검출기, 제2 분류기 및 제2 검출기에 레이어들 159 - 189가 존재하는 것에 주목할 수 있다. 레이어들 218 - 219는 제1 분류기와 제2 분류기에 존재한다. 레이어들 190 - 235은 제1 검출기와 제2 검출기에 존재한다. 그러나, 이러한 레이어들의 내용은 다르므로, 동일하다고 간주되지 않는다. 이러한 레이어들이 동일한 것으로 간주되면, 이러한 레이어들에 관한 기준 카운트 값들이 증가되어 (현재 레벨에 대한) 페어런트 레벨 노드에 배치될 수 있다.
공통 영역에 레이어들이 존재하므로, 제1 분류기, 제1 검출기, 제2 분류기 및 제2 검출기는 따라서 각 구조들을 공유한다. 제1 분류기와 제2 분류기는 90% 구조를 공유하며, 즉, 제1 분류기의 레이어들의 90%는 제2 분류기에 존재한다. 제1 검출기와 제2 검출기는 70% 구조를 공유하며, 즉, 제1 검출기의 레이어들의 70%는 제2 분류기에 존재한다. 상기 모델 리던던시 분석기(201)는 새로운 데이터세트로 구조를 재훈련시킬 수 있도록 한다. 상기 제1 분류기의 레이어들이 로딩되고 사용자가 상기 제2 분류기의 로딩을 요구하는 모드 스위치를 수행한 경우, 상시 실시예들은 제2 분류기의 전체 구조를 로딩할 필요가 없다. 상기 제2 분류기에 고유한 레이어들의 10% 만 로딩될 필요가 있다. 따라서, 공통 영역의 레이어들(리프 노드들에 존재하지 않는 레이어들)은 DNN 모델이 실행될 때 로딩될 필요가 없다. 이전에 로딩된 DNN 모델이 현재 실행된 DNN 모델과 구조를 공유하는 경우에는, DNN 모델의 고유 레이어들만 로딩될 필요가 있다. 따라서, 상기 최적화된 모델 데이터는 효율적인 프리로딩에 이용될 수 있는 DNN 모델들의 구조들에서 리던던시를 시각화할 수 있도록 한다.
도 6 은 본 개시의 실시예들에 따라, 장치(200)의 상이한 프로세싱 유닛들에서 DNN 모델들의 로딩을 도시한 예이다. 4개의 DNN 모델들, 즉 모델 1, 모델 2, 모델 3 및 모델 4가 장치(200)에 설치된 3개의 애플리케이션들(애플리케이션 1, 애플리케이션 2 및 애플리케이션 3)에 의해 실행되는 것으로 간주한다. 애플리케이션 1은 모델들 1 및 2를 실행하고, 애플리케이션 2는 모델 3을 실행하고, 애플리케이션 3은 모델 4를 실행한다. 상기 장치(200)는 4개의 프로세싱 유닛들, 즉 DSP, NPU, CPU 및 GPU를 포함한다. 상기 DNN 모델들의 4개의 프로세싱 유닛들의 메모리들로의 로딩은 모델 의존성 그래프에 더 기초한다.
상기 모델 의존성 그래프는 상기 모델 의존성 그래프의 노드들(DNN 모델들)을 연결하는 에지들의 타입에 기초하여 DNN 모델들 간의 의존성을 묘사한다. 상기 모델 의존성 그래프의 에지들은 DNN 모델들이 병렬적으로 혹은 순차적으로 로딩될 것인지를 특정한다. 상기 2개의 DNN 모델들 사이에 디렉티드 에지가 있는 경우, DNN 모델들은 순차적으로 실행된다. 도 6의 예에 묘사된 바와 같이, 모델 1과 모델 2 사이에 디렉티드 에지가 있고, 모델 1은 소스 노드의 역할을 하고 모델 2는 목적지 노드의 역할을 한다. 모델 2의 실행은 모델 1의 실행을 따른다.
모델 1과 모델 2는 모델 3과 모델 4와 독립적이다. 모델 3은 모델 1, 모델 2 및 모델 4와 독립적이다. 모델 4은 모델 1, 모델 2 및 모델 3과 독립적이다. 따라서, 모델 1과 모델 3, 모델 1과 모델 4, 모델 2와 모델 3, 모델 2와 모델 4, 모델 3과 모델 4 사이에는 에지들이 존재하지 않는다. 모델 의존성 그래프는 프로세싱 유닛들에서 DNN 모델들의 로딩/언로딩을 관리하는 데 이용된다.
도 7 은 본 개시의 실시예들에 따라, 장치(200)에 설치된 카메라 애플리케이션에 의해 이용되는 4개의 DNN 모델들 사이의 의존성들을 표시하는, 모델 의존성 그래프의 생성을 도시한 예이다. 상기 카메라 애플리케이션은 제1 모드와 버전 모드로 동작할 수 있다. 제1 모드로 동작할 때, 제1 분류기와 제1 검출기가 실행된다. 제2 모드로 동작할 때, 제2 분류기와 제2 검출기가 실행된다. 모드 스위치가 있는 경우, 관련 분류기와 검출기가 실행된다.
상기 모델 의존성 분석기(202)는 제1 분류기, 제1 검출기, 제2 분류기와 제2 검출기 사이의 의존성을 결정할 수 있다. DNN 모델들 간의 의존성은 카메라 애플리케이션에 의해 실행된다. 제1 검출기와 제1 분류기는 순차적으로 실행된다. 제1 모드에서, 제1 검출기가 먼저 실행되고, 후에 제1 분류기가 실행된다. 상기 모델 의존성 그래프의 에지들은 DNN 모델들이 로딩되는 순서를 특정한다. 제1 검출기와 제1 분류기가 순차적으로 실행되면서, 제1 분류기는 제1 검출기가 로딩된 후에 로딩된다. 따라서, 제1 검출기와 제1 분류기 사이에 디렉티드 에지가 존재하고, 제1 검출기는 소스 노드를 나타내고 제1 분류기는 목적지 노드를 나타낸다.
제1 모드로부터 제2 모드로 모드 스위치가 있는 경우, 제2 검출기와 제2 분류기가 실행된다. 상기 제2 검출기와 상기 제2 분류기는 순차적으로 실행되며, 즉, 제2 검출기가 먼저 실행되고 제2 분류기가 두 번째로 실행된다. 상기 제2 검출기와 상기 제2 분류기가 순차적으로 실행되면서, 제2 검출기가 먼저 로딩되고 제2 분류기가 두 번째로 로딩된다. 따라서, 제2 검출기와 제2 분류기 사이에 디렉티드 에지가 존재하고, 제2 검출기는 소스 노드를 나타내고 제2 분류기는 목적지 노드를 나타낸다.
제1 검출기와 제1 분류기는 제2 검출기와 제2 분류기와는 독립적으로 실행된다. 따라서, 제1 검출기와 제2 검출기 및 제2 분류기 중 하나 사이에 의존성이 없다. 마찬가지로, 제1 분류기와 제2 검출기 및 제2 분류기 중 하나 사이에 의존성이 없다. 따라서, 상기 모델 의존성 그래프는 2개의 모델 의존성 서브 그래프들로 구성된다.
도 8 은 본 개시의 실시예들에 따라, 카메라 애플리케이션에 의해 캡쳐된 미디어의 ROI (Region of Interest)에서 객체들을 검출하고 검출된 객체들을 분류하기 위한, 검출기 DNN 모델 및 분류기 DNN 모델의 순차적 실행을 도시하는 사용 케이스 시나리오이다. 프레임은 카메라 애플리케이션을 이용하여 캡쳐되는 것으로 간주한다. 카메라 애플리케이션의 양자 모드들, 즉 장면(scene) 검출기 모드와 빅스비(Bixby) 제2 모드에서, 검출기 모델(제1 또는 제2)이 프레임에서 실행되어 프레임에서 적어도 하나의 ROI를 획득한다. 3개의 ROI들이 획득되고, 각 ROI는 적어도 하나의 검출된 객체를 포함하는 것으로 간주한다. ROI들을 검출한 후, 분류기 모델(제1 또는 제2)이 ROI들 각각에서 실행되어 3개의 ROI들 각각에서 객체들을 분류한다.
프레임에 대한 DNN 인퍼런스들의 시퀀스가 획득될 수 있다. 단일 검출기 인퍼런스 뒤에는 3개의 분류기 인퍼런스들(각 ROI 당 하나)이 따른다. 제1 분류기는 제1 검출기에 의존하고, 제1 검출기 모델이 로딩된 후에 로딩될 필요가 있다. 마찬가지로, 제2 분류기는 제2 검출기에 의존하고, 제2 검출기 모델이 로딩된 후에 로딩될 필요가 있다. 위에 더하여, 상기 실시예들은 분류기들와 검출기들이 실행될 순서에 관한 정보를 수집하는 것을 포함한다.
상시 실시예들은, 분류기 모델의 실행을 위해, 검출기 모델들의 실행에 이전에 이용되었던 입력/출력(IO) 및 내부 메모리의 재사용을 가능하게 한다. 상기 재사용은 모델 의존성 그래프를 사용하여 획득한 정보 덕분에 가능하다. 예를 들어, 모델 의존성 그래프를 이용하여, 실시예들은 검출기를 실행한 후에 분류기가 실행되는 것으로 결정할 수 있다. 따라서, 검출기와 분류기 모델들은 동시에 로딩되지 않고, 검출기와 분류기 모델들의 구조들에서 리던던시가 있는 경우, 분류기의 넌리던던트 부분이 로딩된다. 이를 통해, 장치(200)의 메모리 사용 효율성과 레이턴시가 향상된다. 검출기와 분류기가 동시에 추가될 수 있지만, 검출기와 분류기가 순차적으로 실행되므로, 메모리가 재사용될 수 있음에 주의해야 한다.
도 9는 본 개시의 실시예들에 따라, 모델 프리로더(203)에 의한 장치(200)의 상이한 프로세싱 유닛들에서의 DNN 모델들의 프리로딩을 묘사한 예이다. 도 9에 묘사된 바와 같이, 상기 모델 프리로더(203)는 모델 의존성 그래프와 최적화된 모델 데이터를 획득한다. 상기 모델 프리로더(203)는 각 프로세싱 유닛(204)에서 이용 가능한 메모리를 결정한다. 상기 모델 의존성 그래프, 최적화된 모델 데이터 및 이용 가능한 메모리에 기초하여, 상기 모델 프리로더(203)는 프리로딩될 필요가 있는 DNN 모델들의 레이어들을 선택할 수 있다. 상기 모델 프리로더(203)는 상기 프로세싱 유닛들(204) 각각의 메모리들에서 DNN 모델들의 구조들의 부분들을 로딩/언로딩할지를 결정하는데, DNN 모델이 언로딩/로딩될 때 로딩/언로딩된 채로 유지될 DNN 모델들의 구조들의 부분들과 상기 프로세싱 유닛들(204)의 메모리에 로딩된 DNN 모델들 사이의 메모리 공유를 결정한다.
도 10a 및 도 10b는 본 개시의 실시예들에 따라, 모델 의존성 그래프 및 최적화된 모델 데이터에 기초하여 카메라 애플리케이션에 의해 사용되는 DNN 모델들의 프리로딩/로딩/언로딩을 도시한 사용 케이스 시나리오이다. 카메라 애플리케이션의 동작의 모드들은 제1 모드 및 제2 모드이다. 도 10a와 도 10b에 묘사된 바와 같이, 카메라 애플리케이션에 의한 DNN 모델들의 실행에 관한 모델 의존성 그래프와 최적화된 모델 데이터는 모델이 실행될 때 로딩될 레이어들, 모델의 실행이 완료될 때 언로딩될 레이어들 및 모델의 실행이 완료된 후 로딩된 채로 유지될 필요가 있는 모델의 레이어들을 결정하는데 이용된다. (B로 표시된) 회색 블록들은 이들 로딩된 채로 유지되기 위해 이용 가능한 충분한 메모리가 있는 경우에는 언로딩될 필요가 없다. 그렇지 않으면, 블록들은 메모리를 절약하기 위해 제거되거나 언로딩되어, 다른 요구되는 블록들이 로딩될 수 있다.
NPU와 DSP는 각각의 내부 메모리를 공유한다고 간주한다. 초기에는 제2 모드가 이용되었다고 간주한다. 따라서, 제2 검출기와 제2 분류기는 DSP와 NPU에/로부터 로딩되거나 언로딩될 수 있다. 제2 검출기는 우선 DSP에 로딩되고, 최적화된 모델 데이터를 이용하여 식별된 리던던시에 기초하여, 제2 분류기의 구조의 특정 영역(넌리던던트 레이어들을 포함)은 제2 검출기의 실행 후에 NPU에 로딩된다. 제2 검출기와 제2 분류기는 공통 영역(레이어들 0 - 158)을 공유한다. NPU와 DSP가 각각의 메모리들을 공유하므로, 리던던트한 레이어들은 다시 로딩될 필요가 없다.
다른 시나리오에서, 제2 검출기는 DSP에 프리로딩될 수 있고, 카메라 애플리케이션이 제2 모드로 스위칭될 때, 제2 분류기의 특정 영역은, 제2 검출기가 실행된 (제2 검출기가 카메라에 의해 캡쳐된 객체들을 검출한)후 NPU에 로딩될 수 있다. 메모리 DSP 및/또는 NPU에 충분한 공간이 이용 가능한 경우, 제2 분류기의 특정 영역의 로딩 중에, 제2 검출기의 특정 영역이 언로딩될 필요가 없다.
또 다른 시나리오에서, 제2 분류기는 NPU에 프리로딩될 수 있고, 카메라 애플리케이션이 제2 모드로 스위칭될 때, 제2 검출기의 특정 영역이 DSP에 로딩될 수 있다. 메모리 DSP 및/또는 NPU에 충분한 공간이 이용 가능한 경우, 제2 검출기의 특정 영역의 로딩 중에, 제2 분류기의 특정 영역이 언로딩될 필요가 없다.
제1 모드가 이용될 때, 제1 검출기와 제1 분류기는 DSP와 NPU에/로부터 로딩되거나 언로딩될 수 있다. 제1 검출기는 우선 DSP에 로딩되고, 최적화된 모델 데이터를 이용하여 식별된 리던던시에 기초하여, 제1 분류기의 구조의 특정 영역(넌리던던트 레이어들을 포함)은 제1 검출기의 실행 후에 NPU에 로딩된다. 최적화된 모델 데이터에 기초하여, 제1 검출기의 특정 영역이 추가된다. 이는 제2 분류기와 제1 검출기가 공통 영역(레이어들 0 - 217)을 공유하기 때문이다.
다른 시나리오에서, 제1 검출기는 DSP에 프리로딩될 수 있고, 카메라 애플리케이션이 제2 모드로 스위칭될 때, 제1 분류기의 특정 영역은, 제1 검출기가 실행된 후 NPU에 로딩될 수 있다. 메모리 DSP 및/또는 NPU에 충분한 공간이 이용 가능한 경우, NPU에 제1 분류기의 특정 영역의 로딩 중에, 제1 검출기의 특정 영역이 DSP로부터 언로딩될 필요가 없다. 제1 검출기와 제1 분류기는 공통 영역(레이어들 0 - 158)을 공유하는 것에 유의한다.
또 다른 시나리오에서, 제1 분류기는 NPU에 프리로딩될 수 있고, 카메라 애플리케이션이 제1 모드로 스위칭될 때, 제1 검출기의 특정 영역이 DSP에 로딩될 수 있다. 메모리 DSP 및/또는 NPU에 충분한 공간이 이용 가능한 경우, DSP에 제1 검출기의 특정 영역의 로딩 중에, 제1 분류기의 특정 영역이 NPU로부터 언로딩될 필요가 없다.
실시예들은 프리로딩 중에 향상된 메모리 이용을 가능하게 한다. 실시예들은 단일한 DNN 모델을 로딩하기 위해 필요한 바대로 약간 더 높은 메모리를 이용하면서 다수의 DNN 모델들을 용이하게 프리로딩한다.
본 명세서에서 개시된 실시예들은 적어도 하나의 하드웨어 장치에서 실행되고 네트워크 요소들을 제어하기 위해 네트워크 관리 기능들을 수행하는 적어도 하나의 소프트웨어 프로그램을 통해 구현될 수 있다. 도 2에 도시된 네트워크 요소들은 하드웨어 장치나 하드웨어 장치 및 소프트웨어 모듈의 조합 중 적어도 하나가 될 수 있는 블록들을 포함한다.
본 명세서에서 개시된 실시예들은 상이한 DNN 모델들의 리던던트 레이어들과 DNN 모델들 간의 의존성에 기초하여 장치에 DNN 모델들을 배치하기 위한 방법들 및 시스템들을 설명한다. 따라서, 보호의 범위가 그러한 프로그램으로 확장되고, 메세지가 포함된 컴퓨터로 독출가능한 수단에 더하여, 그러한 컴퓨터로 독출가능한 저장 수단들은, 프로그램이 서버, 이동 장치, 또는 기타 적절한 프로그램 가능한 장치 상에서 실행될 때, 상기 방법의 하나 또는 그 이상의 단계들의 구현을 위한 프로그램 코드 수단을 포함한다. 상기 방법은 일 예로, VHDL(Very high speed integrated circuit Hardware Description Language)로 작성된 소프트웨어 프로그램이나 다른 프로그래밍 언어를 통하거나 이와 함께 바람직한 실시예에서 구현되거나, 적어도 하나의 하드웨어 장치에서 실행되는 하나 이상의 VHDL 또는 몇몇 소프트웨어 모듈들에 의해 구현된다. 상기 하드웨어 장치는 프로그래밍될 수 있는 모든 종류의 휴대용 장치일 수 있다. 상기 장치는 예를 들면 ASIC(Application-specific Integrated Circuit)와 같은 하드웨어 수단일 수 있는 수단이나 ASIC과 FPGA(Field Programmable Gate Array)와 같은 하드웨어와 소프트웨어 수단들의 조합, 또는 적어도 하나의 마이크로프로세서와, 소프트웨어 모듈들이 내부에 위치한 적어도 하나의 메모리를 포함할 수 있다. 본 명세서에서 설명한 상기 방법 실시예들은 부분적으로 하드웨어, 부분적으로는 소프트웨어로 구현될 수 있다. 또는, 본 개시는 상이한 하드웨어 장치들, 예를 들어 복수의 CPU들을 이용하여 구현될 수 있다.
상기 도면들 및 상기 설명은 실시예들의 예를 제공한다. 당업자는 상기 설명된 요소들 중 하나 또는 그 이상이 단일의 기능적 요소로 잘 결합될 수 있음을 인식할 것이다. 또는, 특정 요소들은 다수의 기능적 요소들로 분할될 수 있다. 일 실시예로부터의 요소들은 다른 실시예에 추가될 수 있다. 예를 들어, 본 명세서에 기술된 프로세스들의 순서들이 변경될 수 있고, 본 명세서에서 기술된 방식으로 제한되지 않는다.
또한, 모든 흐름도의 동작들은 도시된 순서로 구현될 필요가 없으며, 모든 동작들이 수행될 필요도 없다. 또한, 다른 동작들에 의존하지 않는 동작들은 그러한 다른 동작들과 병렬적으로 수행될 수 있다. 실시예들의 범위는 이러한 구체적 예들에 의해 결코 제한되지 않는다. 구조, 치수 및 재료의 사용에 있어서의 차이들과 같은 많은 변형들은 본 명에서에서 명시적으로 제공되었는지와 관계없이 가능하다. 실시예들의 범위는 적어도 하기의 청구항들에 의해 주어진 만큼 광범위하다.
혜택들, 다른 이점들 및 문제들에 대한 해결책들이 특정 실시예들과 관련하여 상기에서 설명되었다. 그러나, 혜택들, 이점들, 문제점들에 대한 해결책들 및 혜택, 이점, 또는 해결책이 발생하도록 하거나 더욱 두드러지게하는 모든 구성요소(들)은 어떤 또는 모든 청구항들의 중요한, 요구되는 또는 필수적인 특성 또는 구성요소로 해석되어서는 안된다.
본 요지를 설명하기 위해 특정 언어가 사용되었지만, 그에 따라 발생하는 제한은 의도되지 않는다. 당업자에게 명백한 바와 같이, 여기에 교시된 바와 같은 발명적 개념을 구현하기 위해 방법에 다양한 작업 수정이 이루어질 수 있다. 도면 및 전술한 설명은 실시예들의 예를 제공한다. 당업자는 상기 설명된 요소들 중 하나 또는 그 이상이 단일의 기능적 요소로 잘 결합될 수 있음을 인식할 것이다. 또는, 특정 요소들은 다수의 기능적 요소들로 분할될 수 있다. 일 실시예로부터의 요소들은 다른 실시예에 추가될 수 있다.
200; 장치
201; 모델 리던던시 분석기
202; 모델 의존성 분석기
203; 모델 프리로더
204; 프로세싱 유닛(들)
205; 메모리

Claims (15)

  1. 장치에 DNN(Deep Neural Network) 모델들을 관리하는 방법에 있어,
    복수의 DNN 모델들 각각과 연관된 정보를 추출하는 단계;
    상기 복수의 DNN 모델들에 걸쳐 공통된 공통 정보를 상기 정보로부터 식별하는 단계;
    상기 공통 정보를 상기 장치내의 지정된 위치에 분리하여 저장하는 단계; 및
    상기 복수의 DNN 모델들 중 적어도 하나의 DNN 모델이 상기 공통 정보에 접근하도록 제어하는 단계를 포함하는 방법.
  2. 제1 항에 있어서, 상기 복수의 DNN 모델들 각각과 연관된 상기 정보는 상기 복수의 DNN 모델들 각각의 파라미터들과 구조들을 포함하는 방법.
  3. 제1 항에 있어서, 상기 장치의 프리로딩 가능한 메모리 용량에 기초하여 상기 공통 정보의 서브셋을 프리로딩하는 단계를 더 포함하는 방법.
  4. 제3 항에 있어서, 상기 복수의 DNN 모델들 중, 상기 장치에 설치된 각 애플리케이션과 연관된 의존 모델들을 결정하는 단계를 포함하되,
    상기 의존 모델들은 상기 복수의 DNN 모델들 중 다른 모델과 동시에 실행되도록 요구되는 모델과 상기 복수의 DNN 모델들 중 다른 모델과 연관하여 고정된 실행 순서를 갖는 모델 중 적어도 하나를 포함하는 방법.
  5. 제4 항에 있어서, 상기 복수의 DNN 모델들 중 다른 모델과 연관하여 고정된 실행 순서를 갖는 모델은,
    상기 복수의 DNN 모델들 중 다른 모델과 연관하여 직렬로 수행될 모델; 및
    상기 복수의 DNN 모델들 중 다른 모델과 병렬로 수행될 모델 중 적어도 하나를 포함하는 방법.
  6. DNN(Deep Neural Network) 모델들을 관리하는 장치에 있어서,
    메모리; 및
    프로세서를 포함하되, 상기 프로세서는,
    상기 적어도 2개의 DNN 모델들에서 적어도 하나의 레이어의 존재에 기초하여 상기 적어도 2개의 DNN 모델들의 구조들에서 리던던시를 식별하고,
    상기 적어도 2개의 DNN 모델들 중에서, 상기 적어도 2개의 DNN 모델들을 실행하는 패턴을 특정하는 의존성을 결정하고,
    상기 적어도 2개의 DNN 모델들의 리던던시와 의존성에 기초하여 적어도 2개의 DNN 모델들을 배치하도록 구성된 장치.
  7. 제6 항에 있어서, 상기 적어도 2개의 DNN 모델들의 배치는 상기 메모리의 용량의 이용 가능성에 더 기초하여 수행되는 장치.
  8. 제6 항에 있어서, 상기 적어도 2개의 DNN 모델들의 상기 적어도 하나의 레이어의 존재는, 상기 적어도 2개의 DNN 모델들의 구조들에서 상기 적어도 하나의 레이어와 연관된 적어도 하나의 기준 카운트 값에 기초하여 검출되고,
    상기 기준 카운트는 상기 적어도 2개의 DNN 모델들의 구조들의 초기 횡단 동안 초기화되는 장치.
  9. 제8 항에 있어서, 상기 적어도 하나의 레이어와 연관된 상기 적어도 하나의 기준 카운트 값은, 상기 적어도 하나의 레이어가 상기 적어도 2개의 DNN 모델들에서 횡단될 때 증가되고, 상기 적어도 2개의 DNN 모델들의 상기 적어도 하나의 레이어는 적어도 2개의 DNN 모델들의 구조들에서 리던던시에 기여하는 장치.
  10. 제9 항에 있어서, 상기 프로세서는, 상기 레이어와 연관된 상기 기준 카운트 값이 증가될 때 레이어가 상기 구조들에서 리던던시에 기여하는 것으로 결정하도록 구성된 장치.
  11. 제9 항에 있어서, 상기 프로세서는, 상기 적어도 2개의 DNN 모델들의 실행 이전에, 리던던시에 기여하는 적어도 하나의 레이어를 프리로딩하도록 구성된 장치.
  12. 제6 항에 있어서, 상기 적어도 2개의 DNN 모델들을 실행하는 패턴은,
    애플리케이션에 의해 상기 적어도 2개의 DNN 모델들을 순차적으로 실행하는 것; 및
    애플리케이션에 의해 상기 적어도 2개의 DNN 모델들을 병렬적으로 실행하는 것을 포함하는 장치.
  13. 제6 항에 있어서, 상기 프로세서는 상기 적어도 2개의 DNN 모델들의 리던던시와 의존성에 기초하여, 상기 적어도 2개의 DNN 모델들의 레이어들을 프리로딩하도록 구성된 장치.
  14. 제13 항에 있어, 상기 프로세서는 상기 적어도 2개의 DNN 모델들의 레이어들과 연관된 기준 카운트 값들에 기초하여 상기 적어도 2개의 DNN 모델들의 레이어들 각각에 우선순위들을 할당하도록 구성되고, 상기 적어도 2개의 DNN 모델들의 프리로딩은 상기 할당된 우선순위들에 더 기초하는 장치.
  15. 제6 항에 있어, 상기 프로세서는 상기 적어도 2개의 DNN 모델들의 모든 레이어들과 연관된 기준 카운트 값들을 결정하고 상기 기준 카운트 값들에 기초하여 상기 적어도 2개의 DNN 모델들 각각을 비교하도록 구성된 장치.
KR1020227003589A 2019-06-28 2020-06-29 신경망 모델들을 관리하는 방법 및 장치 KR20220028096A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
IN201941025814(???) 2019-06-28
IN201941025814 2019-06-28
IN201941025814 2020-06-28
PCT/KR2020/008486 WO2020263065A1 (en) 2019-06-28 2020-06-29 Method and apparatus for managing neural network models

Publications (1)

Publication Number Publication Date
KR20220028096A true KR20220028096A (ko) 2022-03-08

Family

ID=74062113

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227003589A KR20220028096A (ko) 2019-06-28 2020-06-29 신경망 모델들을 관리하는 방법 및 장치

Country Status (5)

Country Link
US (1) US20220076102A1 (ko)
EP (1) EP3959663A4 (ko)
KR (1) KR20220028096A (ko)
CN (1) CN113994388A (ko)
WO (1) WO2020263065A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4165828A4 (en) 2020-09-03 2023-11-29 Samsung Electronics Co., Ltd. METHOD AND WIRELESS COMMUNICATION NETWORKS FOR HANDLING A DATA-DRIVEN MODEL

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2122542B1 (en) * 2006-12-08 2017-11-01 Medhat Moussa Architecture, system and method for artificial neural network implementation
US9665823B2 (en) * 2013-12-06 2017-05-30 International Business Machines Corporation Method and system for joint training of hybrid neural networks for acoustic modeling in automatic speech recognition
US10686869B2 (en) * 2014-09-29 2020-06-16 Microsoft Technology Licensing, Llc Tool for investigating the performance of a distributed processing system
KR101803409B1 (ko) * 2015-08-24 2017-12-28 (주)뉴로컴즈 다중 계층 신경망 컴퓨팅 장치 및 방법
US10235994B2 (en) * 2016-03-04 2019-03-19 Microsoft Technology Licensing, Llc Modular deep learning model
GB2549554A (en) * 2016-04-21 2017-10-25 Ramot At Tel-Aviv Univ Ltd Method and system for detecting an object in an image
AU2016203619A1 (en) * 2016-05-31 2017-12-14 Canon Kabushiki Kaisha Layer-based operations scheduling to optimise memory for CNN applications
US10656962B2 (en) * 2016-10-21 2020-05-19 International Business Machines Corporation Accelerate deep neural network in an FPGA
WO2019031858A1 (en) 2017-08-08 2019-02-14 Samsung Electronics Co., Ltd. METHOD AND APPARATUS FOR DETERMINING MEMORY NEEDS IN A NETWORK

Also Published As

Publication number Publication date
CN113994388A (zh) 2022-01-28
US20220076102A1 (en) 2022-03-10
EP3959663A4 (en) 2022-11-09
EP3959663A1 (en) 2022-03-02
WO2020263065A1 (en) 2020-12-30

Similar Documents

Publication Publication Date Title
US11100390B2 (en) Power-efficient deep neural network module configured for layer and operation fencing and dependency management
US11704553B2 (en) Neural network system for single processing common operation group of neural network models, application processor including the same, and operation method of neural network system
US11556778B2 (en) Automated generation of machine learning models
US11816568B2 (en) Optimizing execution of a neural network based on operational performance parameters
US20180082212A1 (en) Optimizing machine learning running time
KR102598173B1 (ko) 최적화된 딥 네트워크 처리를 위한 그래프 매칭
ES2964906T3 (es) Representación semántica del contenido de una imagen
CN111104120B (zh) 神经网络编译方法、系统及相应异构计算平台
US20230385631A1 (en) Method and system for constructing neural network architecture search framework, device, and medium
US11747888B2 (en) Object detection using multiple neural network configurations
US11481584B2 (en) Efficient machine learning (ML) model for classification
US20210406568A1 (en) Utilizing multiple stacked machine learning models to detect deepfake content
CN108764374B (zh) 图像分类方法、系统、介质和电子设备
CN113360910A (zh) 恶意应用的检测方法、装置、服务器和可读存储介质
US20220066829A1 (en) Method and system for predicting and optimizing resource utilization of ai applications in an embedded computing system
KR20220028096A (ko) 신경망 모델들을 관리하는 방법 및 장치
Oro et al. Work-efficient parallel non-maximum suppression kernels
CN114117423A (zh) 仿冒应用信息获取方法、装置和设备
US20230185625A1 (en) Workload characterization-based capacity planning for cost-effective and high-performance serverless execution environment
CN113204664B (zh) 一种图像聚类方法及装置
US11288097B2 (en) Automated hardware resource optimization
US11651195B2 (en) Systems and methods for utilizing a machine learning model combining episodic and semantic information to process a new class of data without loss of semantic knowledge
CN112822425B (zh) 一种用于生成高动态范围图像的方法与设备
US20230043584A1 (en) Optimization of memory use for efficient neural network execution
US11188302B1 (en) Top value computation on an integrated circuit device