KR102573644B1 - 실행 엔진 최적화 방법, 실행 엔진 최적화 장치, 및 실행 엔진 최적화 시스템 - Google Patents
실행 엔진 최적화 방법, 실행 엔진 최적화 장치, 및 실행 엔진 최적화 시스템 Download PDFInfo
- Publication number
- KR102573644B1 KR102573644B1 KR1020220052708A KR20220052708A KR102573644B1 KR 102573644 B1 KR102573644 B1 KR 102573644B1 KR 1020220052708 A KR1020220052708 A KR 1020220052708A KR 20220052708 A KR20220052708 A KR 20220052708A KR 102573644 B1 KR102573644 B1 KR 102573644B1
- Authority
- KR
- South Korea
- Prior art keywords
- neural network
- network model
- information
- data
- execution
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Neurology (AREA)
- Combined Controls Of Internal Combustion Engines (AREA)
Abstract
본 출원의 일 실시예에 따른 실행 엔진 최적화 방법은, 학습이 완료된 신경망 모델의 바이너리 데이터를 획득하는 단계; 상기 바이너리 데이터로부터 상기 신경망 모델의 실행 데이터를 추출하는 단계-상기 실행 데이터는 상기 신경망 모델의 실행 순서 데이터 및 상기 신경망 모델의 구조 데이터 중 적어도 하나와 관련됨-; 상기 임베디드 장치의 컴퓨팅 환경 정보를 획득하는 단계-상기 컴퓨팅 환경 정보는 상기 임베디드 장치의 메모리 정보 및 프로세서 정보 중 적어도 하나를 포함함-; 상기 실행 데이터 및 상기 컴퓨팅 환경 정보에 기초하여 상기 임베디드 장치에서의 상기 신경망 모델의 동작(operation)을 예측하고 상기 실행 엔진의 최적화를 수행하는 단계; 상기 최적화 결과에 기초하여 상기 실행 엔진에 이용될 최적 코드 정보를 획득하는 단계; 및 상기 최적 코드 정보를 송신하는 단계;를 포함한다.
Description
본 출원은 실행 엔진 최적화 방법, 실행 엔진 최적화 장치, 및 실행 엔진 최적화 시스템에 관한 것이다. 구체적으로 본 출원은 임베디드 장치에 사용되는 실행 엔진을 최적화하는 실행 엔진 최적화 방법, 실행 엔진 최적화 장치, 및 실행 엔진 최적화 시스템에 관한 것이다.
인공지능 기술이 발전하면서 다양한 산업 분야에서 활용되는 임베디드 시스템이 내재된 임베디드 장치에 인공지능 기술이 접목되는 것이 요구되고 있다. 이에 따라 경량화 기술들이 개발되었고 저성능, 저사양인 임베디드 장치들에 인공지능 기술이 접목될 수 있게 되었다. 특히, 미리 학습이 완료된 인공지능 모델을 임베디드 장치에 최대한 효율적으로 실행시키도록 개발된 소프트웨어인 실행 엔진(Inference Engine) 기술을 통하여 임베디드 장치에 인공지능 기술이 접목될 수 있게 되었다.
종래의 임베디드용 인공지능 실행 엔진은 임베디드 장치에서 모델의 실행에 대한 정보를 획득하고, 모델 실행에 필요한 메모리를 할당하여 모델을 실행하는 방식을 채택하고 있었다. 이러한 방식을 채택하는 대표적인 실행 엔진의 예로는 텐서플로우 라이트 마이크로(Tensorflow Lite Micro)가 존재한다. 이러한 방식은 모델 실행 중 모델이 바뀌었을 때에도 유연하게 모델의 구조를 분석하고 메모리 할당을 조절할 수 있다는 장점이 존재한다.
다만, 임베디드 장치의 경우에는 모델 실행 중 업데이트를 진행하는 경우가 거의 없어 기존의 방식의 장점을 활용하지 못할 가능성이 높다. 또한, 컴퓨팅 환경에 제약이 존재하는 임베디드 장치에서 모델의 구조를 분석하고 메모리를 할당하는 것을 결정하는 것은 임베디드 장치의 메모리에 부하로 작용할 우려가 존재한다. 추가적으로, 임베디드 장치는 컴퓨팅 사양에 제약이 존재하기에 모델의 구조를 분석하고 메모리 할당을 결정하기 위하여 보다 복잡하고 효율적인 알고리즘을 사용하는 것에 한계가 존재한다.
이에, 임베디드 장치의 컴퓨팅 환경 또는 컴퓨팅 사양을 고려하여 효율적이고 연산 속도가 향상된 실행 엔진을 구현하기 위한 실행 엔진 최적화 방법, 장치 및 시스템의 개발이 요구된다.
본 발명이 해결하고자 하는 일 과제는, 임베디드 장치의 컴퓨팅 환경을 고려하여 실행 엔진을 최적화하는 실행 엔진 최적화 방법, 실행 엔진 최적화 장치 및 실행 엔진 최적화 시스템을 제공하는 것이다.
본 발명이 해결하고자 하는 과제가 상술한 과제로 제한되는 것은 아니며, 언급되지 아니한 과제들은 본 명세서 및 첨부된 도면으로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 출원의 일 실시예에 따른 실행 엔진 최적화 방법은, 학습이 완료된 신경망 모델의 바이너리 데이터를 획득하는 단계; 상기 바이너리 데이터로부터 상기 신경망 모델의 실행 데이터를 추출하는 단계-상기 실행 데이터는 상기 신경망 모델의 실행 순서 데이터 및 상기 신경망 모델의 구조 데이터 중 적어도 하나와 관련됨-; 상기 임베디드 장치의 컴퓨팅 환경 정보를 획득하는 단계-상기 컴퓨팅 환경 정보는 상기 임베디드 장치의 메모리 정보 및 프로세서 정보 중 적어도 하나를 포함함-; 상기 실행 데이터 및 상기 컴퓨팅 환경 정보에 기초하여 상기 임베디드 장치에서의 상기 신경망 모델의 동작(operation)을 예측하고 상기 실행 엔진의 최적화를 수행하는 단계; 상기 최적화 결과에 기초하여 상기 실행 엔진에 이용될 최적 코드 정보를 획득하는 단계; 및 상기 최적 코드 정보를 송신하는 단계;를 포함할 수 있다.
본 출원의 일 실시예에 따른 실행 엔진 최적화 시스템은, 학습이 완료된 신경망 모델의 데이터에 기초하여 임베디드 장치에서 사용될 실행 엔진을 최적화하는 최적 코드를 생성하는 프로세서; 및 임베디드 장치와 통신하는 송수신부;를 포함하는 서버; 및 상기 최적 코드를 획득하고 상기 최적 코드를 실행하는 임베디드 장치;를 포함하되, 상기 프로세서는, 학습이 완료된 신경망 모델의 바이너리 데이터를 획득하고, 상기 바이너리 데이터로부터 상기 신경망 모델의 실행 데이터-상기 실행 데이터는 상기 신경망 모델의 실행 순서 정보 및 상기 신경망 모델의 구조 데이터 중 적어도 하나와 관련됨-를 추출하고, 상기 임베디드 장치의 컴퓨팅 환경 정보-상기 컴퓨팅 환경 정보는 상기 임베디드 장치의 메모리 정보 및 프로세서 정보 중 적어도 하나를 포함함-를 획득하고, 상기 실행 데이터 및 상기 컴퓨팅 환경 정보에 기초하여 상기 임베디드 장치에서의 상기 신경망 모델의 동작(operation)을 예측하고 상기 실행 엔진의 최적화를 수행하고, 상기 최적화 결과에 기초하여, 상기 실행 엔진에 이용될 최적 코드 정보를 획득하고, 상기 최적 코드 정보를 상기 송수신부를 통하여 상기 임베디드 장치로 송신하도록 구성될 수 있다.
본 발명의 과제의 해결 수단이 상술한 해결 수단들로 제한되는 것은 아니며, 언급되지 아니한 해결 수단들은 본 명세서 및 첨부된 도면으로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 출원의 실시예에 따른 실행 엔진 최적화 방법, 실행 엔진 최적화 장치, 및 실행 엔진 최적화 시스템에 의하면, 임베디드 장치에서의 신경망 모델의 실행 능력이 향상될 수 있다.
본 출원의 실시예에 따른 실행 엔진 최적화 방법, 실행 엔진 최적화 장치, 및 실행 엔진 최적화 시스템에 의하면, 임베디드 장치에서의 전력 사용량이 감소될 수 있다.
본 발명의 효과가 상술한 효과들로 제한되는 것은 아니며, 언급되지 아니한 효과들은 본 명세서 및 첨부된 도면으로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확히 이해될 수 있을 것이다.
도 1은 본 출원의 일 실시예에 따른 실행 엔진 최적화 시스템의 개략도이다.
도 2는 본 출원의 일 실시예에 따른 실행 엔진 최적화 시스템의 동작들을 나타낸 도면이다.
도 3은 본 출원의 일 실시예에 따른 실행 엔진을 최적화하는 방법을 나타낸 순서도이다.
도 4는 본 출원의 일 실시예에 따른 실행 엔진의 최적화를 수행하는 단계를 구체화한 순서도이다.
도 5는 본 출원의 일 실시예에 따른 신경망 모델의 대상 구조 정보를 획득하는 단계를 구체화한 순서도이다.
도 6은 본 출원의 일 실시예에 따른 제1 최적 코드를 생성하는 방법의 일 양상을 나타낸 도면이다.
도 7은 본 출원의 다른 실시예에 따른 실행 엔진의 최적화를 수행하는 단계를 구체화한 순서도이다.
도 8은 본 출원의 일 실시예에 따른 제2 최적 코드를 생성하는 단계를 구체화한 순서도이다.
도 9는 본 출원의 또 다른 실시예에 실행 엔진의 최적화를 수행하는 단계를 구체화한 순서도이다.
도 2는 본 출원의 일 실시예에 따른 실행 엔진 최적화 시스템의 동작들을 나타낸 도면이다.
도 3은 본 출원의 일 실시예에 따른 실행 엔진을 최적화하는 방법을 나타낸 순서도이다.
도 4는 본 출원의 일 실시예에 따른 실행 엔진의 최적화를 수행하는 단계를 구체화한 순서도이다.
도 5는 본 출원의 일 실시예에 따른 신경망 모델의 대상 구조 정보를 획득하는 단계를 구체화한 순서도이다.
도 6은 본 출원의 일 실시예에 따른 제1 최적 코드를 생성하는 방법의 일 양상을 나타낸 도면이다.
도 7은 본 출원의 다른 실시예에 따른 실행 엔진의 최적화를 수행하는 단계를 구체화한 순서도이다.
도 8은 본 출원의 일 실시예에 따른 제2 최적 코드를 생성하는 단계를 구체화한 순서도이다.
도 9는 본 출원의 또 다른 실시예에 실행 엔진의 최적화를 수행하는 단계를 구체화한 순서도이다.
본 출원의 상술한 목적, 특징들 및 장점은 첨부된 도면과 관련된 다음의 상세한 설명을 통해 보다 분명해질 것이다. 다만, 본 출원은 다양한 변경을 가할 수 있고 여러 가지 실시예들을 가질 수 있는 바, 이하에서는 특정 실시예들을 도면에 예시하고 이를 상세히 설명하고자 한다.
명세서 전체에 걸쳐서 동일한 참조번호들은 원칙적으로 동일한 구성요소들을 나타낸다. 또한, 각 실시예의 도면에 나타나는 동일한 사상의 범위 내의 기능이 동일한 구성요소는 동일한 참조부호를 사용하여 설명하며, 이에 대한 중복되는 설명은 생략하기로 한다.
본 출원과 관련된 공지 기능 혹은 구성에 대한 구체적인 설명이 본 출원의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 본 명세서의 설명 과정에서 이용되는 숫자(예를 들어, 제1, 제2 등)는 하나의 구성요소를 다른 구성요소와 구분하기 위한 식별기호에 불과하다.
또한, 이하의 실시예에서 사용되는 구성요소에 대한 접미사 "모듈" 및 "부"는 명세서 작성의 용이함만이 고려되어 부여되거나 혼용되는 것으로서, 그 자체로 서로 구별되는 의미 또는 역할을 갖는 것은 아니다.
이하의 실시예에서, 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다.
이하의 실시예에서, 포함하다 또는 가지다 등의 용어는 명세서상에 기재된 특징, 또는 구성요소가 존재함을 의미하는 것이고, 하나 이상의 다른 특징들 또는 구성요소가 부가될 가능성을 미리 배제하는 것은 아니다.
도면에서는 설명의 편의를 위하여 구성 요소들이 그 크기가 과장 또는 축소될 수 있다. 예컨대, 도면에서 나타난 각 구성의 크기 및 두께는 설명의 편의를 위해 임의로 나타낸 것으로, 본 발명이 반드시 도시된 바에 한정되지 않는다.
어떤 실시예가 달리 구현 가능한 경우에 특정한 프로세스의 순서는 설명되는 순서와 다르게 수행될 수도 있다. 예를 들어, 연속하여 설명되는 두 프로세스가 실질적으로 동시에 수행될 수도 있고, 설명되는 순서와 반대의 순서로 진행될 수 있다.
이하의 실시예에서, 구성 요소 등이 연결되었다고 할 때, 구성 요소들이 직접적으로 연결된 경우뿐만 아니라 구성요소들 중간에 구성 요소들이 개재되어 간접적으로 연결된 경우도 포함한다.
예컨대, 본 명세서에서 구성 요소 등이 전기적으로 연결되었다고 할 때, 구성 요소 등이 직접 전기적으로 연결된 경우뿐만 아니라, 그 중간에 구성 요소 등이 개재되어 간접적으로 전기적 연결된 경우도 포함한다.
본 출원의 일 실시예에 따른 실행 엔진 최적화 방법은, 학습이 완료된 신경망 모델의 바이너리 데이터를 획득하는 단계; 상기 바이너리 데이터로부터 상기 신경망 모델의 실행 데이터를 추출하는 단계-상기 실행 데이터는 상기 신경망 모델의 실행 순서 데이터 및 상기 신경망 모델의 구조 데이터 중 적어도 하나와 관련됨-; 상기 임베디드 장치의 컴퓨팅 환경 정보를 획득하는 단계-상기 컴퓨팅 환경 정보는 상기 임베디드 장치의 메모리 정보 및 프로세서 정보 중 적어도 하나를 포함함-; 상기 실행 데이터 및 상기 컴퓨팅 환경 정보에 기초하여 상기 임베디드 장치에서의 상기 신경망 모델의 동작(operation)을 예측하고 상기 실행 엔진의 최적화를 수행하는 단계; 상기 최적화 결과에 기초하여 상기 실행 엔진에 이용될 최적 코드 정보를 획득하는 단계; 및 상기 최적 코드 정보를 송신하는 단계;를 포함할 수 있다.
본 출원의 일 실시예에 따르면, 상기 실행 엔진의 최적화를 수행하는 단계는, 상기 실행 데이터로부터 상기 신경망 모델의 상기 구조 데이터를 획득하는 단계; 상기 구조 데이터로부터 상기 신경망 모델의 대상 구조 정보를 획득하는 단계; 및 상기 대상 구조 정보에 포함된 관심 데이터 세트와 관련된 연산들을 병합(merge)시키는 제1 최적 코드를 생성하는 단계;를 포함할 수 있다.
본 출원의 일 실시예에 따르면, 상기 대상 구조 정보를 획득하는 단계는, 미리 설정된 상기 신경망 모델의 관심 구조 정보를 획득하는 단계; 상기 구조 데이터로부터 상기 관심 구조 정보에 대응되는 상기 관심 데이터 세트를 검출하는 단계; 및 상기 관심 데이터 세트에 기초하여 상기 신경망 모델의 상기 대상 구조 정보를 획득하는 단계;를 포함할 수 있다.
본 출원의 일 실시예에 따르면, 상기 실행 엔진의 최적화를 수행하는 단계는, 상기 실행 데이터 및 상기 컴퓨팅 환경 정보에 기초하여 상기 신경망 모델이 상기 임베디드 장치의 컴퓨팅 환경에서 동작될 경우의 예상되는 메모리 사용량을 연산하는 단계; 및 상기 메모리 사용량에 기초하여 메모리 할당량을 결정하는 제2 최적 코드를 생성하는 단계;를 포함할 수 있다.
본 출원의 일 실시예에 따르면, 상기 제2 최적 코드를 생성하는 단계는, 상기 컴퓨팅 환경 정보의 상기 메모리 정보로부터 메모리 블록의 위치 정보를 획득하는 단계; 상기 메모리 사용량 및 상기 메모리 할당량에 기초하여 메모리 효율성을 평가하는 단계; 및 상기 메모리 블록의 위치 정보 및 상기 메모리 효율성에 기초하여 상기 메모리 블록을 재배열하는 코드를 생성하는 단계;를 포함할 수 있다.
본 출원의 일 실시예에 따르면, 상기 실행 엔진의 최적화를 수행하는 단계는, 상기 메모리 사용량과 상기 메모리 할당량을 비교하는 단계; 및 상기 메모리 할당량과 상기 메모리 사용량의 비교 결과에 기초하여 상기 메모리 사용량을 조절하는 코드를 생성하는 단계;를 포함할 수 있다.
본 출원의 일 실시예에 따르면, 상기 메모리 사용량을 조절하는 코드는 Im2Col 변환 코드와 관련될 수 있다.
본 출원의 일 실시예에 따르면, 상기 제2 최적 코드를 생성하는 단계는, 상기 컴퓨팅 환경 정보의 상기 메모리 정보로부터 메모리 블록의 위치 정보를 획득하는 단계; 상기 메모리 사용량 및 상기 메모리 할당량에 기초하여 메모리 효율성을 평가하는 단계; 및 상기 메모리 블록의 위치 정보 및 상기 메모리 효율성에 기초하여 상기 메모리 블록을 재배열하는 코드를 생성하는 단계;를 포함할 수 있다.
본 출원의 일 실시예에 따르면, 상기 실행 엔진 최적화 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체가 제공될 수 있다.
본 출원의 일 실시예에 따른 실행 엔진 최적화 시스템은, 학습이 완료된 신경망 모델의 데이터에 기초하여 임베디드 장치에서 사용될 실행 엔진을 최적화하는 최적 코드를 생성하는 프로세서; 및 임베디드 장치와 통신하는 송수신부;를 포함하는 서버; 및 상기 최적 코드를 획득하고 상기 최적 코드를 실행하는 임베디드 장치;를 포함하되, 상기 프로세서는, 학습이 완료된 신경망 모델의 바이너리 데이터를 획득하고, 상기 바이너리 데이터로부터 상기 신경망 모델의 실행 데이터-상기 실행 데이터는 상기 신경망 모델의 실행 순서 정보 및 상기 신경망 모델의 구조 데이터 중 적어도 하나와 관련됨-를 추출하고, 상기 임베디드 장치의 컴퓨팅 환경 정보-상기 컴퓨팅 환경 정보는 상기 임베디드 장치의 메모리 정보 및 프로세서 정보 중 적어도 하나를 포함함-를 획득하고, 상기 실행 데이터 및 상기 컴퓨팅 환경 정보에 기초하여 상기 임베디드 장치에서의 상기 신경망 모델의 동작(operation)을 예측하고 상기 실행 엔진의 최적화를 수행하고, 상기 최적화 결과에 기초하여, 상기 실행 엔진에 이용될 최적 코드 정보를 획득하고, 상기 최적 코드 정보를 상기 송수신부를 통하여 상기 임베디드 장치로 송신하도록 구성될 수 있다.
이하에서는 도 1 내지 도 9를 참고하여 본 출원의 실행 엔진 최적화 방법, 실행 엔진 최적화 장치 및 실행 엔진 최적화 시스템에 관하여 설명한다.
도 1은 본 출원의 일 실시예에 따른 실행 엔진 최적화 시스템의 개략도이다.
본 출원의 일 실시예에 따른 실행 엔진 최적화 시스템(10)은 임베디드 장치(100) 및 서버(1000, 혹은 실행 엔진 최적화 장치)를 포함할 수 있다.
서버(1000)는 임베디드 장치(100)의 성능보다는 뛰어난 성능을 나타내는 컴퓨팅 환경을 가질 수 있다. 구체적으로, 임베디드 장치(100)는 제1 성능을 나타내는 제1 컴퓨팅 환경을 가질 수 있다. 반면, 서버(1000)는 제1 성능보다 뛰어난 제2 성능을 나타내는 제2 컴퓨팅 환경을 가질 수 있다. 여기서 성능이란, 메모리의 용량, 프로세서의 사양, 실행 속도, 전력량 등을 컴퓨팅 환경과 관련된 임의의 정보를 포괄하는 의미일 수 있다.
본 출원의 일 실시예에 따른 실행 엔진 최적화 시스템(10)의 서버(1000)는 학습이 완료된 신경망 모델에 대한 데이터와 신경망 모델이 실제로 수행될 임베디드 장치(100)의 컴퓨팅 환경 정보에 기초하여, 신경망 모델의 실행 엔진을 최적화하는 동작을 수행할 수 있다. 본 출원의 일 실시예에 따른 실행 엔진 최적화 시스템(10)은 성능에 제약이 존재하는 임베디드 장치(100)가 아닌, 성능이 상대적으로 뛰어난 서버(1000, 혹은 실행 엔진 최적화 장치)에서 실행 엔진의 최적화를 수행함으로써, 임베디드 장치(100)의 컴퓨팅 환경에 최적이면서, 신경망 모델이 실행될 수 있는 실행 엔진(Inference engine)을 효율적으로 빠르게 획득할 수 있다.
본 출원의 일 실시예에 따른 서버(1000)는 송수신부(1100), 메모리(1200), 및 프로세서(1300)를 포함할 수 있다.
서버(1000)의 송수신부(1100)는 임베디드 장치(100)를 포함하여 임의의 외부 기기와 통신을 수행할 수 있다. 예컨대, 서버(1000)는, 송수신부(1100)를 통해, 실행 엔진의 최적화를 수행함으로써 획득한 최적 코드 정보를 임베디드 장치(100)로 송신할 수 있다. 또한, 서버(1000)는, 송수신부(1100)를 통해, 임베디드 장치(100) 혹은 임의의 외부 장치로부터 임베디드 장치(100)의 컴퓨팅 환경 정보를 수신할 수 있다.
서버(1000)는, 송수신부(1100)를 통해, 네트워크에 접속하여 각종 데이터를 송수신할 수 있다. 송수신부는 크게 유선 타입과 무선 타입을 포함할 수 있다. 유선 타입과 무선 타입은 각각의 장단점을 가지므로, 경우에 따라서 서버(1000)에는 유선 타입과 무선 타입이 동시에 마련될 수도 있다. 여기서, 무선 타입의 경우에는 주로 와이파이(Wi-Fi) 같은 WLAN(Wireless Local Area Network) 계열의 통신 방식을 이용할 수 있다. 또는, 무선 타입의 경우에는 셀룰러 통신, 예컨대, LTE, 5G 계열의 통신 방식을 이용할 수 있다. 다만, 무선 통신 프로토콜이 상술한 예시에 제한되는 것은 아니며, 임의의 적절한 무선 타입의 통신 방식을 이용하는 것도 가능하다. 유선 타입의 경우에는 LAN(Local Area Network)이나 USB(Universal Serial Bus) 통신이 대표적인 예이며 그 외의 다른 방식도 가능하다.
서버(1000)의 메모리(1200)는 각종 정보를 저장할 수 있다. 메모리(1200)에는 각종 데이터가 임시적으로 또는 반영구적으로 저장될 수 있다. 메모리의 예로는 하드 디스크(HDD: Hard Disk Drive), SSD(Solid State Drive), 플래쉬 메모리(flash memory), 롬(ROM: Read-Only Memory), 램(RAM: Random Access Memory) 등이 있을 수 있다. 메모리(1200)는 서버(1000)에 내장되는 형태나 탈부착 가능한 형태로 제공될 수 있다. 메모리(1200)에는 서버(1000)를 구동하기 위한 운용 프로그램(OS: Operating System)이나 서버(1000)의 각 구성을 동작시키기 위한 프로그램을 비롯해 서버(1000)의 동작에 필요한 각종 데이터가 저장될 수 있다.
프로세서(1300)는 서버(1000)의 전반적인 동작을 제어할 수 있다. 예컨대, 프로세서(1300)는 후술할 학습이 완료된 신경망 모델의 바이너리 데이터를 획득하는 동작, 바이너리 데이터로부터 실행 데이터를 추출하는 동작, 임베디드 장치의 컴퓨팅 환경 정보를 획득하는 동작, 실행 데이터 및 컴퓨팅 환경 정보에 기초하여 실행 엔진의 최적화를 수행하는 동작, 최적화 결과에 기초하여 최적 코드 정보를 획득하는 동작, 최적 코드 정보를 송신하는 동작 등 서버(1000)의 전반적인 동작을 제어할 수 있다. 구체적으로 프로세서(1300)는 메모리(1200)로부터 서버(1000)의 전반적인 동작을 위한 프로그램을 로딩하여 실행할 수 있다. 프로세서(1300)는 하드웨어나 소프트웨어 또는 이들의 조합에 따라 AP(Application Processor), CPU(Central Processing Unit), MCU(Microcontroller Unit)나 이와 유사한 장치로 구현될 수 있다. 이때, 하드웨어적으로는 전기적 신호를 처리하여 제어 기능을 수행하는 전자 회로 형태로 제공될 수 있으며, 소프트웨어적으로는 하드웨어적 회로를 구동시키는 프로그램이나 코드 형태로 제공될 수 있다.
임베디드 장치(100)는 특정 목적(혹은 특정 기능)을 가지고 만들어진 프로그래밍이 가능한 임의의 임베디드 시스템(Embedded system)이 내재된 장치를 포괄하는 의미일 수 있다.
임베디드 장치(100)는 프로세서 및/또는 메모리를 포함하는 하드웨어를 포함할 수 있다. 또한, 임베디드 장치(100)는 하드웨어를 제어하기 위한 펌웨어(Firmware)를 포함할 수 있다. 또한, 임베디드 장치(100)는 인공지능 실행 엔진을 포함하여 임의의 소프트웨어를 펌웨어에 입력하여 인공지능 모델을 실행하도록 구성될 수 있다.
여기서, 인공지능 실행 엔진(Inference Engine)은 미리 학습된 인공지능 모델을 임베디드 장치(100)에 최대한 효율적으로 실행시키기 위한 소프트웨어로서, 인공지능 실사용에 목적을 둔 기술이며 탑재되는 장치의 환경에 효율성을 높이는 기능을 수행한다. 예컨대, 모바일 기기의 경우, 모바일 기기의 컴퓨팅 환경인 느린 연산속도 및 저전력 사양에 맞춰 실행엔진이 구현될 수 있다. 다른 예로, 컴퓨팅 성능이 상대적으로 높은 PC 서버의 경우에는 고성능 병렬처리 능력을 극대화시키도록 실행 엔진이 구현될 수 있다.
본 출원의 일 실시예에 따른 임베디드 장치(100)는 서버(1000)로부터 임베디드 장치(100)의 컴퓨팅 환경에 최적화된 코드 정보를 획득하고, 최적화된 코드 정보를 펌웨어에 추가(혹은 입력)할 수 있다. 후술할 바와 같이, 최적화된 코드 정보는 학습이 완료된 신경망 모델의 내부 구조를 분석하여 생성될 수 있다. 또한, 최적화된 코드 정보는 임베디드 장치(100)의 메모리 사양 및/또는 프로세서 사양 등을 포함한 컴퓨팅 환경을 고려하여 생성될 수 있다.
본 출원의 일 실시예에 따른 임베디드 장치(100)는 서버(1000)로부터 생성된 최적 코드 정보를 펌웨어에 추가하고, 신경망 모델의 실행을 수행할 수 있다.
이하에서는 도 2 내지 도 9를 참고하여, 본 출원의 일 실시예에 따른 실행 엔진 최적화 시스템(10)의 동작을 구체적으로 서술한다.
본 출원의 일 실시예에 따른 실행 엔진 최적화 시스템(10)의 서버(1000)는, 임베디드 장치(100)에 이용될 실행 엔진의 최적화를 수행할 수 있다. 구체적으로, 실행 엔진 최적화 시스템(10)의 서버(1000)는, 학습이 완료된 신경망 모델에 대한 데이터와 신경망 모델이 실제로 수행될 임베디드 장치(100)의 컴퓨팅 환경 정보에 기초하여, 신경망 모델의 실행 엔진을 최적화하는 동작을 수행하여 최적 코드 정보를 획득할 수 있다.
도 2는 본 출원의 일 실시예에 따른 실행 엔진 최적화 시스템(10)의 동작들을 나타낸 도면이다.
본 출원의 일 실시예에 따른 서버(1000)는 임베디드 장치(100)로부터 임베디드 장치(100)의 컴퓨팅 환경 정보를 획득할 수 있다. 일 예로, 컴퓨팅 환경 정보는 임베디드 장치(100)의 메모리 정보, 프로세서 정보 및/또는 성능 정보 중 적어도 하나를 포함할 수 있다. 다만, 이는 예시에 불과하며 컴퓨팅 환경 정보는 임베디드 장치(100)의 컴퓨팅 환경(혹은 컴퓨팅 사양)과 관련된 임의의 적절한 정보를 포괄하는 의미일 수 있다.
본 출원의 일 실시예에 따른 서버(1000)는 학습이 완료된 신경망 모델의 데이터를 획득할 수 있다. 여기서 학습이 완료된 신경망 모델의 데이터는 신경망 모델의 정보와 관련된 임의의 데이터일 수 있다. 또한, 학습이 완료된 신경망 모델의 데이터는 바이너리 형태의 데이터일 수 있다.
신경망 모델은 본 출원의 일 실시예에 따른 서버(1000)에서 학습이 수행되어 획득된 모델일 수 있다. 또는, 신경망 모델은 서버(1000)의 외부 장치에서 학습이 수행되어 획득된 모델일 수 있다. 예컨대, 보다 정교한 신경망 모델의 학습을 위하여 서버(1000)보다 성능이 뛰어난 외부 서버에서 신경망 모델이 학습될 수 있다. 이때, 서버(1000)는, 송수신부(1100)를 통하여, 외부 서버(혹은 외부 장치)로부터 학습된 신경망 모델의 바이너리 데이터를 획득할 수 있다.
본 출원의 일 실시예에 따른 서버(1000)는 바이너리 데이터로부터 신경망 모델의 실행 데이터를 추출할 수 있다. 구체적으로 서버(1000)는 이진화된 바이너리 데이터로부터, 신경망 모델의 실행 순서 데이터 및 신경망 모델의 구조 데이터 중 적어도 하나와 관련된 실행 데이터를 추출할 수 있다.
본 출원의 일 실시예에 따른 서버(1000)는, 임베디드 장치(100)에 이용될 실행 엔진의 최적화를 수행할 수 있다. 구체적으로 서버(1000)는 임베디드 장치(100)의 컴퓨팅 환경 정보 및 실행 데이터에 기초하여 실행 엔진의 최적화를 수행할 수 있다. 예컨대, 서버(1000)는 신경망 모델의 실행 데이터와 임베디드 장치(100)의 컴퓨팅 환경 정보를 이용하여 신경망 모델의 임베디드 장치(100)에서의 동작을 예측하고, 예측 결과에 기초하여 실행 엔진의 최적화를 수행할 수 있다.
본 출원의 일 실시예에 따른 서버(1000)는 실행 엔진의 최적화 결과에 기초하여 실행 엔진에 이용될 최적 코드 정보를 획득할 수 있다. 구체적으로 서버(1000)는 신경망 모델의 연산을 병합시키는 코드 혹은 메모리 관리와 관련된 코드를 생성할 수 있다. 최적 코드 정보를 획득하는 내용과 관련해서는, 도 3 내지 도 9에서 보다 구체적으로 서술한다.
본 출원의 일 실시예에 따른 서버(1000)는, 송수신부(1100)를 통하여, 최적 코드 정보를 임베디드 장치(100)로 송신할 수 있다.
본 출원의 일 실시예에 따른 임베디드 장치(100)는 임의의 적절한 송수신부를 통하여, 최적 코드 정보를 획득할 수 있다. 또한, 임베디드 장치(100)는 최적 코드 정보를 실행할 수 있다. 구체적으로 임베디드 장치(100)는 최적 코드 정보를 펌웨어에 추가하여 임베디드 장치(100)의 컴퓨팅 환경에 최적화된 신경망 모델을 실행할 수 있다.
도 3을 참고한다. 도 3은 본 출원의 일 실시예에 따른 실행 엔진을 최적화하는 방법을 나타낸 순서도이다.
본 출원의 일 실시예에 따른 실행 엔진 최적화 방법은, 학습이 완료된 신경망 모델의 바이너리 데이터를 획득하는 단계(S1000), 실행 데이터를 추출하는 단계(S2000), 임베디드 장치(100)의 컴퓨팅 환경 정보를 획득하는 단계(S3000), 실행 엔진의 최적화를 수행하는 단계(S4000) 및 최적 코드 정보를 획득하는 단계(S5000)를 포함할 수 있다.
학습이 완료된 신경망 모델의 바이너리 데이터를 획득하는 단계(S1000)에서는, 서버(1000)는 학습이 완료된 신경망 모델의 바이너리 데이터를 획득할 수 있다. 이때, 바이너리 데이터는 학습이 완료된 신경망 모델의 임의의 정보 파일을 포괄하는 의미일 수 있다. 한편, 바이너리 데이터는 학습이 완료된 신경망 모델의 임의의 정보 파일들이 이진화된 형태의 데이터일 수 있다.
일 예로, 신경망 모델은 본 출원의 일 실시예에 따른 서버(1000)에서 학습될 수 있다.
다른 예로, 신경망 모델은 본 출원의 일 실시예에 따른 서버(1000)의 외부 서버로부터 학습될 수 있다. 예컨대, 서버(1000)의 컴퓨팅 환경보다 성능이 뛰어난 컴퓨팅 환경을 가지는 외부 서버로부터 신경망 모델이 학습될 수 있다. 이 경우, 보다 많은 학습 데이터를 이용하여 신경망 모델이 학습될 수 있어 보다 정교한 신경망 모델이 획득될 수 있다. 이때, 서버(1000)는, 임의의 송수신부를 통하여, 외부 서버로부터 신경망 모델의 바이너리 데이터를 획득하도록 구현될 수 있다.
실행 데이터를 추출하는 단계(S2000)에서는, 서버(1000)는 신경망 모델의 바이너리 데이터로부터 신경망 모델의 실행 데이터를 추출할 수 있다. 구체적으로 신경망 모델의 바이너리 데이터는 신경망 모델의 실행 순서와 관련된 정보 또는 신경망 모델의 내부 구조와 관련된 정보를 포함하여 신경망 모델을 실행하는 데 필요한 임의의 정보들이 이진화되어 있는 형태일 수 있다. 따라서, 본 출원의 일 실시예에 따른 서버(1000)는 신경망 모델의 바이너리 데이터로부터 신경망 모델의 실행에 필요한 실행 데이터를 추출할 수 있다.
임베디드 장치(100)의 컴퓨팅 환경 정보를 획득하는 단계(S3000)에서는, 서버(1000)는, 송수신부(1100)를 통하여, 임베디드 장치(100)의 컴퓨팅 환경 정보를 획득할 수 있다. 여기서 컴퓨팅 환경 정보란 전술한 바와 같이, 임베디드 장치(100)의 메모리 정보 또는 프로세서 정보를 포함하여 임베디드 장치(100)의 컴퓨팅 환경(또는 컴퓨팅 사양)과 관련된 임의의 정보를 포괄하는 의미일 수 있다.
실행 엔진의 최적화를 수행하는 단계(S4000)에서는, 서버(1000)는 신경망 모델의 실행 데이터 및 임베디드 장치(100)의 컴퓨팅 환경 정보에 기초하여 실행 엔진의 최적화를 수행할 수 있다. 구체적으로 서버(1000)는 신경망 모델의 실행 데이터 및 임베디드 장치(100)의 컴퓨팅 환경 정보를 이용하여 임베디드 장치에서의 신경망 모델의 동작을 예측하고, 이에 기초하여 신경망 모델의 실행과 관련된 소프트웨어인 실행 엔진의 최적화를 수행할 수 있다.
일 예로, 서버(1000)는 신경망 모델의 실행 데이터로부터 신경망 모델의 구조 데이터를 획득하고, 구조 데이터로부터 신경망 모델의 대상 구조 정보를 검출할 수 있다. 여기서 대상 구조 정보란 신경망 모델의 연산 구조와 관련하여 일반적으로 이용되는 구조와 관련된 임의의 정보일 수 있다. 이때, 대상 구조 정보에 포함된 연산 구조들을 병합하여 연산을 수행하도록 구현하는 것이 효율적일 수 있다. 따라서 본 출원의 일 실시예에 따른 서버(1000)는 대상 구조 정보에 포함된 연산 구조들을 병합시키는 코드를 생성하여 실행 엔진의 최적화를 수행할 수 있다. 이와 관련하여는 도 4 내지 도 6에서 구체적으로 서술한다.
다른 예로, 서버(1000)는 신경망 모델의 실행 데이터 및 임베디드 장치(100)의 컴퓨팅 환경 정보를 이용하여, 메모리 관리와 관련된 코드를 생성하도록 구현될 수 있다. 구체적으로 서버(1000)는 신경망 모델의 실행 데이터 및 임베디드 장치(100)의 컴퓨팅 환경 정보(예, 메모리 정보 및 프로세서 정보 등)을 이용하여, 신경망 모델이 임베디드 장치(100)의 컴퓨팅 환경에서 동작될 때의 예상되는 메모리 사용량을 연산하고, 연산된 메모리 사용량에 기초하여 메모리 관리와 관련된 코드를 생성함으로써, 실행 엔진의 최적화를 수행할 수 있다. 예컨대, 서버(1000)는 메모리 사용량에 기초하여 메모리 할당량을 결정하는 코드를 생성할 수 있다. 다른 예를 들어, 서버(1000)는 할당된 메모리를 최대한 활용하기 위하여 메모리 사용량을 조절하는 코드를 생성할 수 있다. 이와 관련하여는 도 7 내지 도 9에서 구체적으로 서술한다.
또 다른 예로, 서버(1000)는 신경망 모델의 실행 데이터 및 임베디드 장치(100)의 컴퓨팅 환경 정보를 이용하여, 메모리 블록을 재배열하는 코드를 생성할 수 있다. 구체적으로, 서버(1000)는 임베디드 장치(100)의 컴퓨팅 환경 정보(예, 메모리 정보)로부터 임베디드 장치(100)의 메모리 블록의 위치 정보를 획득할 수 있다. 또한, 서버(1000)는 전술한 메모리 연산량과 메모리 할당량에 기초하여 메모리 효율성을 예측하거나 평가할 수 있다. 또한, 서버(1000)는 메모리 블록의 위치 정보 및 메모리 효율성에 기초하여 메모리 블록을 재배열하는 코드를 생성할 수 있다. 이와 관련하여는 도 8에서 구체적으로 서술한다.
최적 코드 정보를 획득하는 단계(S5000)에서는, 서버(1000)는 최적화 결과에 기초하여 실행 엔진에 이용될 최적 코드 정보를 획득할 수 있다. 예컨대, 최적 코드 정보는 전술한 바와 같이 신경망 모델의 연산 구조를 병합하는 코드 정보, 메모리 관리와 관련된 코드 정보 및/또는 메모리 블록을 재배열하는 코드 정보를 포함할 수 있다.
한편, 도 3에서는 도시하지 않았으나, 본 출원의 일 실시예에 따른 실행 엔진 최적화 방법은, 최적 코드 정보를 송신하는 단계를 더 포함할 수 있다. 구체적으로 최적 코드 정보를 송신하는 단계에서는, 서버(1000)는 송수신부(1100)를 통하여, 최적 코드 정보를 임베디드 장치(100)로 송신할 수 있다.
이하에서는 도 4 내지 도 9를 참고하여 본 출원의 실시예들에 따른 실행 엔진의 최적화를 수행하는 방법에 대하여 구체적으로 서술한다. 도 4 내지 도 6에서는 신경망 모델의 연산 구조를 병합하는 최적화 동작에 대하여 구체적으로 서술한다. 도 7 내지 도 9에서는 메모리 관리를 위한 최적화 동작에 대하여 구체적으로 서술한다.
도 4를 참고한다. 도 4는 본 출원의 일 실시예에 따른 실행 엔진의 최적화를 수행하는 단계를 구체화한 순서도이다.
본 출원의 일 실시예에 따른 실행 엔진의 최적화를 수행하는 단계(S4000)는 신경망 모델의 구조 데이터를 획득하는 단계(S4110), 구조 데이터로부터 신경망 모델의 대상 구조 정보를 획득하는 단계(S4120) 및 대상 구조 정보에 포함된 관심 데이터 세트와 관련된 연산들을 병합시키는 제1 최적 코드를 생성하는 단계(S4130)를 포함할 수 있다.
신경망 모델의 구조 데이터를 획득하는 단계(S4110)에서는, 서버(1000)는 신경망 모델의 실행 데이터로부터 신경망 모델의 내부 구조를 나타내는 구조 데이터를 획득할 수 있다.
구조 데이터로부터 신경망 모델의 대상 구조 정보를 획득하는 단계(S4120)에서는, 서버(1000)는 신경망 모델의 구조 데이터로부터 대상 구조 정보를 획득할 수 있다. 구체적으로 신경망 모델의 유형별로 일반적으로 사용되는 신경망 모델의 구조가 존재할 수 있다. 예컨대, 특정 네트워크 스페이스에서는 컨볼루션(Convolution) 연산을 수행하고, 뎁스와이스 컨볼루션(Depthwise convolution) 연산을 수행하고, 액티베이션(Activation) 연산을 수행하는 구조가 일반적으로 이용될 수 있다.
일 실시예에 따르면, 서버(1000)는 전술한 바와 같이 일반적으로 이용되는 구조와 관련된 관심 구조 정보를 획득하고, 구조 데이터로부터 관심 구조 정보에 대응되는 관심 데이터 세트를 검출하는 동작을 수행할 수 있다. 또한, 서버(1000)는 검출된 관심 데이터 세트에 기초하여 신경망 모델의 대상 구조 정보를 획득할 수 있다.
도 5 내지 도 6을 참고한다. 도 5는 본 출원의 일 실시예에 따른 신경망 모델의 대상 구조 정보를 획득하는 단계를 구체화한 순서도이다. 도 6은 본 출원의 일 실시예에 따른 제1 최적 코드를 생성하는 방법의 일 양상을 나타낸 도면이다.
본 출원의 일 실시예에 따른 신경망 모델의 대상 구조 정보를 획득하는 단계(S4120)는 관심 구조 정보를 획득하는 단계(S4122), 구조 데이터로부터 관심 구조 정보에 대응되는 관심 데이터 세트(data set of interest)를 검출하는 단계(S4124) 및 데이터 세트에 기초하여 신경망 모델의 대상 구조 정보를 획득하는 단계(S4126)를 포함할 수 있다.
관심 구조 정보를 획득하는 단계(S4122)에서는, 서버(1000)는 신경망 모델과 관련된 관심 구조 정보를 획득할 수 있다.
전술한 바와 같이, 신경망 모델의 유형별로 일반적으로 사용되는 연산 구조가 신경망 모델을 구성할 수 있다. 구체적으로 제1 연산(O1)을 수행하고 제1 연산(O1)으로부터 출력되는 출력값에 기초하여 제2 연산(O2)를 수행하는 구조가 특정 네트워크 스페이스를 가지는 신경망 모델에서 일반적으로 이용될 수 있다. 예컨대, 제1 모델에서는, 컨볼루션(Convolution) 연산을 수행하고, 뎁스와이스 컨볼루션(Depthwise convolution) 연산과 액티베이션(Activation) 연산을 순차적으로 수행하는 구조가 일반적으로 이용될 수 있다. 다른 예를 들어, 제2 모델은, 이미지의 색상과 관련된 채널별로 필터를 적용하여 채널별로 데이터를 압축하는 뎁스와이스 컨볼루션(Depthwise convolution) 연산을 수행하여 중간 결과값을 획득하고, 중간결과 값에 기초하여 포인트와이스(Pointwise) 연산을 수행하는 구조를 포함할 수 있다.
이때 서버(1000)는 제1 연산(O1)과 제2 연산(O2)을 수행하는 구조와 관련된 관심 구조 정보를 획득할 수 있다. 일 예로, 관심 구조 정보는 사용자에 의해 미리 입력될 수 있다. 서버(1000)는 사용자의 입력을 통하여 관심 구조 정보를 획득할 수 있다. 다만, 이는 예시에 불과하며 임의의 적절한 방법으로 신경망 모델과 관련된 관심 구조 정보를 획득하고, 관심 구조 정보에 기초하여 대상 구조 정보를 획득하도록 구현될 수 있을 것이다.
구조 데이터로부터 관심 구조 정보에 대응되는 관심 데이터 세트를 검출하는 단계(S4124)에서는, 서버(1000)는 관심 구조 정보에 기초하여, 구조 데이터에 포함된 데이터 세트 중 관심 구조 정보에 대응되는 연산 구조를 가지는 관심 데이터 세트를 검출하도록 구현될 수 있다. 구체적으로 관심 구조 정보가 제1 연산(O1)과 제2 연산(O2)을 수행하는 구조에 대한 정보를 포함하고 있다면, 서버(1000)는 구조 데이터에 포함된 데이터 세트 중 관심 구조 정보에 대응되는 연산 구조와 관련된 제1 대상연산(TO1)과 제2 대상연산(TO2)을 검출할 수 있다.
관심 데이터 세트에 기초하여 신경망 모델의 대상 구조 정보를 획득하는 단계(S4126)에서는, 서버(1000)는 관심 구조 정보에 대응되는 관심 데이터 세트에 기초하여 신경망 모델의 대상 구조 정보를 획득할 수 있다. 예컨대, 제1 대상연산(TO1)을 수행하고 순차적으로 제2 대상연산(TO2)을 수행하는 구조와 관련된 관심 데이터 세트에 기초하여 신경망 모델의 대상 구조 정보를 획득할 수 있다.
다시 도 4를 참고하면, 본 출원의 일 실시예에 따른 실행 엔진 최적화 방법은 대상 구조 정보에 포함된 관심 데이터 세트와 관련된 연산들을 병합시키는 제1 최적 코드를 생성하는 단계(S4130)를 포함할 수 있다. 구체적으로 서버(1000)는 대상 구조 정보와 관련된 제1 대상연산(TO1)과 제2 대상연산(TO2)를 병합(merge)하여 연산하도록 구성된 제1 최적 코드를 생성할 수 있다. 이때, 제1 최적 코드는 연산 퓨전(Operation Fusion) 기법을 활용하여 생성될 수 있다. 이러한 연산 구조를 병합하는 최적화 과정을 통하여, 각각의 연산별로 소요되는 메모리 사용량(혹은 메모리할당량)을 감소시킬 수 있으며, 연산 속도를 높일 수 있다.
이하에서는 도 7 및 도 8을 참고하여 본 출원의 다른 실시예에 따른 실행 엔진의 최적화를 수행하는 내용을 구체적으로 서술한다.
도 7은 본 출원의 다른 실시예에 따른 실행 엔진의 최적화를 수행하는 단계(S4000)를 구체화한 순서도이다. 구체적으로 도 7은 본 출원의 다른 실시예에 따른 메모리 할당량을 최적화하는 방법을 도시한 순서도이다.
본 출원의 다른 실시예에 따른 실행 엔진의 최적화를 수행하는 단계(S4000)는 신경망 모델이 임베디드 장치의 컴퓨팅 환경에서 동작될 경우에 예상되는 메모리 사용량을 연산하는 단계(S4210) 및 메모리 사용량에 기초하여 메모리 할당량을 결정하는 제2 최적 코드를 생성하는 단계(S4220)를 포함할 수 있다.
신경망 모델이 임베디드 장치의 컴퓨팅 환경에서 동작될 경우에 예상되는 메모리 사용량을 연산하는 단계(S4210)에서는, 서버(1000)는 신경망 모델의 실행 데이터 및 임베디드 장치(100)의 컴퓨팅 환경 정보에 기초하여 신경망 모델이 임베디드 장치(100)의 컴퓨팅 환경에서 동작될 때의 예상되는 메모리 사용량을 연산할 수 있다.
메모리 사용량에 기초하여 메모리 할당량을 결정하는 제2 최적 코드를 생성하는 단계(S4220)에서는, 서버(1000)는, 메모리 사용량을 이용하여 메모리 할당량을 결정하거나 조절하는 제2 최적 코드를 생성함으로써, 실행 엔진의 최적화를 수행할 수 있다.
도 8은 본 출원의 일 실시예에 따른 제2 최적 코드를 생성하는 단계를 구체화한 순서도이다. 구체적으로 도 8은 본 출원의 일 실시예에 따른 메모리 블록을 최적화하는 방법을 도시한 순서도이다.
본 출원의 다른 실시예에 따른 제2 최적 코드를 생성하는 단계(S4220)는 메모리 블록의 위치 정보를 획득하는 단계(S4230), 메모리 효율성을 평가하는 단계(S4240) 및 메모리 블록을 재배열하는 코드를 생성하는 단계(S4250)를 포함할 수 있다.
메모리 블록의 위치 정보를 획득하는 단계(S4230)에서는, 서버(1000)는 임베디드 장치(100)의 컴퓨팅 환경 정보의 메모리 정보로부터 메모리 블록의 위치 정보를 획득할 수 있다.
메모리 효율성을 평가하는 단계(S4240)에서는, 서버(1000)는 신경망 모델이 임베디드 장치(100)의 컴퓨팅 환경에서 동작될 경우의 예상되는 메모리 사용량과 메모리 할당량을 이용하여 메모리 효율성을 계산할 수 있다. 이때, 메모리 블록이 특정 위치에 배정된 경우에는 메모리 효율을 방해할 수 있다. 이때, 본 출원의 일 실시예에 따른 서버(1000)는 후술할 바와 같이, 메모리 블록의 위치 정보 및 메모리 효율성에 기초하여 메모리 블록을 재배열할 수 있다.
메모리 블록을 재배열하는 코드를 생성하는 단계(S4250)에서는, 서버(1000)는 메모리 블록의 위치 정보 및 메모리 효율성에 기초하여 메모리 블록을 재배열하는 코드를 생성할 수 있다. 구체적으로 서버(1000)는, 메모리 효율이 미리 설정된 임계 효율값보다 낮은 경우, 메모리 블록의 위치 정보를 이용하여 메모리 블록을 재배열하는 코드를 생성할 수 있다. 이러한 메모리 블록의 위치의 최적화 과정을 통하여 본 출원의 일 실시예에 따른 실행 엔진 최적화 시스템(10)은 임베디드 장치(100)의 컴퓨팅 환경(혹은 컴퓨팅 사양)에 대하여 최적의 메모리를 할당할 수 있다.
이하에서는 도 9를 참고하여 본 출원의 또 다른 실시예에 따른 실행 엔진의 최적화를 수행하는 내용을 구체적으로 서술한다.
도 9는 본 출원의 또 다른 실시예에 따른 실행 엔진의 최적화를 수행하는 단계를 구체화한 순서도이다.
본 출원의 일 실시예에 따른 실행 엔진의 최적화를 수행하는 단계(S4000)는, 메모리 사용량과 메모리 할당량을 비교하는 단계(S4310) 및 비교 결과에 기초하여 메모리 사용량을 조절하는 코드를 생성하는 단계(S4320)를 포함할 수 있다.
메모리 사용량과 메모리 할당량을 비교하는 단계(S4230)에서는, 서버(1000)는 신경망 모델이 임베디드 장치(100)에서 동작될 때 예상되는 메모리 사용량과 메모리 사용량에 기초하여 결정된 메모리 할당량을 비교할 수 있다.
비교 결과에 기초하여 메모리 사용량을 조절하는 코드를 생성하는 단계(S4320)에서는, 서버(1000)는 메모리 사용량과 메모리 할당량을 비교하여 메모리 사용량을 조절하는 코드를 생성할 수 있다.
일 예로, 계산된 메모리 사용량이 메모리 할당량보다 적은 경우, 서버(1000)는 메모리 사용량을 높이도록 조절하는 코드를 생성할 수 있다. 구체적으로 서버(1000)는 Im2Col 확장 기법을 활용하여 메모리 사용량을 증가시켜 캐시 히트 비율(cache hit ratio)을 높여 임베디드 장치(100)에서의 신경망 모델의 성능을 향상시키도록 구현될 수 있다. 좀 더 구체적으로 Im2Col 확장 기법을 활용하는 경우, 메모리 사용량이 증가하는 대신 캐시 히트 비율이 높아져 실행 속도의 향상을 기대할 수 있다. 본 출원의 일 실시예에 따른 서버(1000)는 신경망 모델이 임베디드 장치(100)에서 동작될 때 예상되는 메모리 사용량이 메모리 할당량에 비해 적은 경우, Im2Col 확장 기법을 활용하여 메모리를 최대한 활용하면서도 임베디드 장치(100)에서의 신경망 모델의 실행 속도를 향상시키도록 실행 엔진을 최적화시킬 수 있다.
다른 예로, 계산된 메모리 사용량이 메모리 할당량보다 큰 경우, 서버(1000)는 메모리 사용량을 낮추도록 조절하는 코드를 생성할 수 있다.
본 출원의 일 실시예에 따른 실행 엔진 최적화 시스템(10)의 임베디드 장치(100)는 임베디드 장치(100)의 컴퓨팅 사양보다 뛰어난 서버(1000)에서 최적화된 실행 엔진을 이용하여, 모델의 구조를 분석하거나 메모리 할당을 결정하지 않고 신경망 모델을 곧바로 실행할 수 있다.
특히 본 출원의 일 실시예에 따른 실행 엔진 최적화 시스템(10)에 의하면, 모델의 구조를 분석하여 특정 구조에 대한 연산을 병합시키는 알고리즘을 실행 엔진에 적용할 수 있다. 또한, 본 출원의 일 실시예에 따른 실행 엔진 최적화 시스템(10)에 의하면, 임베디드 장치(100)의 컴퓨팅 사양을 고려하여 복잡하고 개선된 메모리 할당 알고리즘 또는 메모리 블록 재배열 알고리즘 등을 실행 엔진에 적용할 수 있다. 따라서, 임베디드 장치(100)에서의 신경망 모델의 실행 능력이 향상될 수 있다.
또한, 본 출원의 일 실시예에 따른 실행 엔진 최적화 시스템(10)에 의하면, 전술한 모델의 구조를 분석하거나 메모리 할당을 결정하는 동작이 컴퓨팅 환경에 제약이 존재하는 임베디드 장치(100)에서 수행되지 않고, 컴퓨팅 환경이 상대적으로 뛰어난 서버(1000)에서 수행되게 된다. 따라서, 임베디드 장치(100)에서 모델 실행 시 임베디드 장치(100)의 메모리를 효율적으로 활용하고 임베디드 장치의 전력 사용량이 감소될 수 있다.
상술한 서버(1000)의 다양한 동작들은 서버(1000)의 메모리(1200)에 저장될 수 있으며, 서버(1000)의 프로세서(1300)는 메모리(1200)에 저장된 동작들을 수행하도록 제공될 수 있다.
본 출원에 개시된 실행 엔진 최적화 방법, 실행 엔진 최적화 장치 및 실행 엔진 최적화 시스템은 가전 제품, 차량용 센서, 유아 혹은 노인의 안전을 위한 제품 및 스마트 워치 등을 포함하여 다양한 임베디드 시스템에서의 인공지능 모델의 효율적인 실행을 위하여 이용될 수 있다.
이상에서 실시 형태들에 설명된 특징, 구조, 효과 등은 본 발명의 적어도 하나의 실시 형태에 포함되며, 반드시 하나의 실시 형태에만 한정되는 것은 아니다. 나아가, 각 실시 형태에서 예시된 특징, 구조, 효과 등은 실시 형태들이 속하는 분야의 통상의 지식을 가지는 자에 의해 다른 실시 형태들에 대해서도 조합 또는 변형되어 실시 가능하다. 따라서 이러한 조합과 변형에 관계된 내용들은 본 발명의 범위에 포함되는 것으로 해석되어야 할 것이다.
또한, 이상에서 실시 형태를 중심으로 설명하였으나 이는 단지 예시일 뿐 본 발명을 한정하는 것이 아니며, 본 발명이 속하는 분야의 통상의 지식을 가진 자라면 본 실시 형태의 본질적인 특성을 벗어나지 않는 범위에서 이상에 예시되지 않은 여러 가지의 변형과 응용이 가능함을 알 수 있을 것이다. 즉, 실시 형태에 구체적으로 나타난 각 구성 요소는 변형하여 실시할 수 있는 것이다. 그리고 이러한 변형과 응용에 관계된 차이점들은 첨부된 청구 범위에서 규정하는 본 발명의 범위에 포함되는 것으로 해석되어야 할 것이다.
10: 실행 엔진 최적화 시스템
100: 임베디드 장치
1000: 서버
100: 임베디드 장치
1000: 서버
Claims (8)
- 제1 성능을 나타내는 임베디드 장치에서 사용될 실행 엔진(Inference engine)을, 상기 제1 성능보다 뛰어난 제2 성능을 나타내는 서버가 상기 임베디드 장치의 컴퓨팅 환경을 고려하여 최적화하는 방법에 있어서, 상기 방법은,
학습이 완료된 신경망 모델의 실행 데이터를 획득하는 단계-상기 실행 데이터는 상기 신경망 모델의 실행 순서 데이터 및 상기 신경망 모델의 구조 데이터 중 적어도 하나와 관련됨-;
상기 임베디드 장치의 컴퓨팅 환경 정보를 획득하는 단계-상기 컴퓨팅 환경 정보는 상기 임베디드 장치의 메모리 정보 및 프로세서 정보 중 적어도 하나를 포함함-; 및
상기 실행 데이터 및 상기 컴퓨팅 환경 정보에 기초하여 상기 실행 엔진의 최적화를 수행하는 단계;를 포함하되,
상기 실행 엔진의 최적화를 수행하는 단계는,
상기 실행 데이터로부터 상기 신경망 모델의 상기 구조 데이터를 획득하는 단계;
미리 설정된 상기 신경망 모델의 관심 구조 정보를 획득하는 단계-상기 관심 구조 정보는 제1 연산과 관련된 제1 구조 정보 및 상기 제1 연산과 연결된 제2 연산과 관련된 제2 구조 정보를 포함함-;
상기 신경망 모델의 상기 구조 데이터로부터 상기 제1 연산에 대응되는 제1 대상연산과 관련된 제1 대상구조 및 상기 제2 연산에 대응되는 제2 대상연산과 관련된 제2 대상구조를 포함하는 관심 데이터 세트를 검출하는 단계;
상기 관심 데이터 세트에 포함된 상기 제1 대상연산과 상기 제2 대상연산을 병합시키는 제1 최적 코드를 생성하는 단계;를 더 포함하는,
실행 엔진 최적화 방법. - 제1 항에 있어서,
상기 실행 데이터를 획득하는 단계는.
학습이 완료된 신경망 모델의 바이너리 데이터를 획득하는 단계; 및
상기 바이너리 데이터로부터 상기 신경망 모델의 실행 데이터를 추출하는 단계;를 더 포함하는,
실행 엔진 최적화 방법. - 제1 항에 있어서,
상기 실행 엔진의 최적화를 수행하는 단계는,
상기 실행 데이터 및 상기 컴퓨팅 환경 정보에 기초하여 상기 신경망 모델이 상기 임베디드 장치의 컴퓨팅 환경에서 동작될 경우의 예상되는 메모리 사용량을 연산하는 단계; 및
상기 메모리 사용량에 기초하여 메모리 할당량을 결정하는 제2 최적 코드를 생성하는 단계;를 포함하는,
실행 엔진 최적화 방법. - 제3 항에 있어서,
상기 제2 최적 코드를 생성하는 단계는,
상기 컴퓨팅 환경 정보의 상기 메모리 정보로부터 메모리 블록의 위치 정보를 획득하는 단계;
상기 메모리 사용량 및 상기 메모리 할당량에 기초하여 메모리 효율성을 평가하는 단계; 및
상기 메모리 블록의 위치 정보 및 상기 메모리 효율성에 기초하여 상기 메모리 블록을 재배열하는 코드를 생성하는 단계;를 포함하는,
실행 엔진 최적화 방법. - 제3 항에 있어서,
상기 실행 엔진의 최적화를 수행하는 단계는,
상기 메모리 사용량과 상기 메모리 할당량을 비교하는 단계; 및
상기 메모리 할당량과 상기 메모리 사용량의 비교 결과에 기초하여 상기 메모리 사용량을 조절하는 코드를 생성하는 단계;를 포함하는,
실행 엔진 최적화 방법. - 제5 항에 있어서,
상기 메모리 사용량을 조절하는 코드는 Im2Col 변환 코드와 관련되는,
실행 엔진 최적화 방법. - 컴퓨터에 제1 항 내지 제6 항 중 어느 하나의 항에 따른 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
- 임베디드 장치의 컴퓨팅 환경을 고려하여 임베디드 장치에서 사용될 실행 엔진(Inference engine)을 최적화하는 서버에 있어서,
학습이 완료된 신경망 모델의 데이터에 기초하여 임베디드 장치에서 사용될 실행 엔진을 최적화하는 최적 코드를 생성하는 프로세서; 및 임베디드 장치와 통신하는 송수신부;를 포함하되,
상기 프로세서는,
학습이 완료된 신경망 모델의 실행 데이터-상기 실행 데이터는 상기 신경망 모델의 실행 순서 데이터 및 상기 신경망 모델의 구조 데이터 중 적어도 하나와 관련됨-를 획득하고, 상기 임베디드 장치의 컴퓨팅 환경 정보-상기 컴퓨팅 환경 정보는 상기 임베디드 장치의 메모리 정보 및 프로세서 정보 중 적어도 하나를 포함함-를 획득하고, 상기 실행 데이터 및 상기 컴퓨팅 환경 정보에 기초하여 상기 실행 엔진의 최적화를 수행하도록 구성되되,
상기 프로세서는,
상기 실행 데이터로부터 상기 신경망 모델의 상기 구조 데이터를 획득하고, 미리 설정된 상기 신경망 모델의 관심 구조 정보-상기 관심 구조 정보는 제1 연산과 관련된 제1 구조 정보 및 상기 제1 연산과 연결된 제2 연산과 관련된 제2 구조 정보를 포함함-를 획득하고, 상기 신경망 모델의 상기 구조 데이터로부터 상기 제1 연산에 대응되는 제1 대상연산과 관련된 제1 대상구조 및 상기 제2 연산에 대응되는 제2 대상연산과 관련된 제2 대상구조를 포함하는 관심 데이터 세트를 검출하고, 상기 관심 데이터 세트에 포함된 상기 제1 대상연산과 상기 제2 대상연산을 병합시키는 제1 최적 코드를 생성하여 상기 실행 엔진의 최적화를 수행하도록 구성되는,
서버.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020220052708A KR102573644B1 (ko) | 2021-08-24 | 2022-04-28 | 실행 엔진 최적화 방법, 실행 엔진 최적화 장치, 및 실행 엔진 최적화 시스템 |
PCT/KR2022/011390 WO2023027368A1 (ko) | 2021-08-24 | 2022-08-02 | 실행 엔진 최적화 방법, 실행 엔진 최적화 장치, 및 실행 엔진 최적화 시스템 |
KR1020230113433A KR102581614B1 (ko) | 2022-04-28 | 2023-08-29 | 실행 엔진 최적화 방법, 실행 엔진 최적화 장치, 및 실행 엔진 최적화 시스템 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210111338A KR102393767B1 (ko) | 2021-08-24 | 2021-08-24 | 실행 엔진 최적화 방법, 실행 엔진 최적화 장치, 및 실행 엔진 최적화 시스템 |
KR1020220052708A KR102573644B1 (ko) | 2021-08-24 | 2022-04-28 | 실행 엔진 최적화 방법, 실행 엔진 최적화 장치, 및 실행 엔진 최적화 시스템 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210111338A Division KR102393767B1 (ko) | 2021-08-24 | 2021-08-24 | 실행 엔진 최적화 방법, 실행 엔진 최적화 장치, 및 실행 엔진 최적화 시스템 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020230113433A Division KR102581614B1 (ko) | 2022-04-28 | 2023-08-29 | 실행 엔진 최적화 방법, 실행 엔진 최적화 장치, 및 실행 엔진 최적화 시스템 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20230029494A KR20230029494A (ko) | 2023-03-03 |
KR102573644B1 true KR102573644B1 (ko) | 2023-09-01 |
Family
ID=85323506
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020220052708A KR102573644B1 (ko) | 2021-08-24 | 2022-04-28 | 실행 엔진 최적화 방법, 실행 엔진 최적화 장치, 및 실행 엔진 최적화 시스템 |
Country Status (2)
Country | Link |
---|---|
KR (1) | KR102573644B1 (ko) |
WO (1) | WO2023027368A1 (ko) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130086449A (ko) * | 2012-01-25 | 2013-08-02 | 전자부품연구원 | 계층별 볼륨의 이용량에 따라 데이터 블럭을 재배치하는 볼륨 관리 방법 |
EP3559868A1 (en) * | 2017-03-24 | 2019-10-30 | Google LLC | Device placement optimization with reinforcement learning |
KR102192325B1 (ko) * | 2019-06-04 | 2020-12-28 | (주)딥엑스 | 인공신경망의 데이터 로컬리티 기반의 데이터 캐슁을 이용하여 고속의 인공신경망 오퍼레이션을 지원하는 데이터 관리 장치 |
KR102641240B1 (ko) * | 2019-10-08 | 2024-02-29 | 한국전자통신연구원 | 인공 지능 추론 장치 및 방법 |
KR20200131722A (ko) * | 2019-10-15 | 2020-11-24 | 주식회사 뷰노 | 훈련된 심층 신경망 모델의 재현 성능을 개선하는 방법 및 이를 이용한 장치 |
KR20210090349A (ko) * | 2020-01-10 | 2021-07-20 | 주식회사 소이넷 | 인공지능 모델 구동 가속 장치 및 방법 |
KR102257028B1 (ko) * | 2020-10-06 | 2021-05-27 | 주식회사 딥이티 | 컴퓨팅 플랫폼 기반의 적응형 딥러닝 작업 할당 장치 및 방법 |
KR102393767B1 (ko) * | 2021-08-24 | 2022-05-04 | 주식회사 에너자이(ENERZAi) | 실행 엔진 최적화 방법, 실행 엔진 최적화 장치, 및 실행 엔진 최적화 시스템 |
-
2022
- 2022-04-28 KR KR1020220052708A patent/KR102573644B1/ko active IP Right Grant
- 2022-08-02 WO PCT/KR2022/011390 patent/WO2023027368A1/ko unknown
Also Published As
Publication number | Publication date |
---|---|
WO2023027368A1 (ko) | 2023-03-02 |
KR20230029494A (ko) | 2023-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101768005B1 (ko) | 신축적 컴퓨팅 시스템 및 환경을 포함하는 컴퓨팅 시스템 및 환경에 대한 실행 할당 비용 평가 | |
CN108089814B (zh) | 一种数据存储方法及装置 | |
Tong et al. | Application-aware traffic scheduling for workload offloading in mobile clouds | |
CN105528330A (zh) | 负载均衡的方法、装置、丛集和众核处理器 | |
US20170351546A1 (en) | Resource predictors indicative of predicted resource usage | |
CN103092526A (zh) | 在存储设备间进行数据迁移的方法和装置 | |
KR20190043419A (ko) | 조기 중단에 기반한 심층 신경망의 연산 제어 방법 및 시스템 | |
CN107479944B (zh) | 混合云模式下的虚拟机内存自适应热迁移调度方法及*** | |
EP2633419A1 (en) | Method and apparatus for providing efficient context classification | |
KR102462001B1 (ko) | 임베디드 장치에서 실행될 신경망 모델 최적화 방법, 신경망 모델 최적화 장치, 및 신경망 모델 최적화 시스템 | |
CN112954707B (zh) | 基站的节能方法、装置、基站和计算机可读存储介质 | |
KR102393767B1 (ko) | 실행 엔진 최적화 방법, 실행 엔진 최적화 장치, 및 실행 엔진 최적화 시스템 | |
WO2021147620A1 (zh) | 一种基于模型训练的通信方法、装置及*** | |
CN110601872A (zh) | 一种传输方法及装置、存储介质 | |
KR20230071060A (ko) | 신경망 모델의 경량화 방법, 신경망 모델의 경량화 장치, 및 신경망 모델의 경량화 시스템 | |
US9442750B2 (en) | Systems and methods for colocating virtual machines on one or more physical infrastructure | |
KR102573644B1 (ko) | 실행 엔진 최적화 방법, 실행 엔진 최적화 장치, 및 실행 엔진 최적화 시스템 | |
US10289958B1 (en) | Storage system with machine learning based skew prediction | |
KR102581614B1 (ko) | 실행 엔진 최적화 방법, 실행 엔진 최적화 장치, 및 실행 엔진 최적화 시스템 | |
CN105242955A (zh) | 一种虚拟机磁盘输入输出调度方法及*** | |
WO2019127926A1 (zh) | 一种稀疏神经网络的计算方法及计算装置、电子装置、计算机可读存储介质以及计算机程序产品 | |
CN103810694A (zh) | 图片压缩中质量因子的获取方法及装置 | |
US9232222B2 (en) | Lossless color image compression adaptively using spatial prediction or inter-component prediction | |
CN104516821A (zh) | 存储器管理方法及存储器管理装置 | |
KR20230071059A (ko) | 신경망 모델의 경량화 방법, 신경망 모델의 경량화 장치, 및 신경망 모델의 경량화 시스템 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
A107 | Divisional application of patent | ||
GRNT | Written decision to grant |