KR102371701B1 - 인공지능 장치의 소프트웨어 디버깅 방법 및 장치 - Google Patents
인공지능 장치의 소프트웨어 디버깅 방법 및 장치 Download PDFInfo
- Publication number
- KR102371701B1 KR102371701B1 KR1020190144182A KR20190144182A KR102371701B1 KR 102371701 B1 KR102371701 B1 KR 102371701B1 KR 1020190144182 A KR1020190144182 A KR 1020190144182A KR 20190144182 A KR20190144182 A KR 20190144182A KR 102371701 B1 KR102371701 B1 KR 102371701B1
- Authority
- KR
- South Korea
- Prior art keywords
- artificial intelligence
- neural network
- network accelerator
- intelligence device
- debugging
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 29
- 238000013528 artificial neural network Methods 0.000 claims abstract description 81
- 238000013473 artificial intelligence Methods 0.000 claims abstract description 75
- 230000007704 transition Effects 0.000 claims description 9
- 238000004088 simulation Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000005226 mechanical processes and functions Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3624—Software debugging by performing operations on the source code, e.g. via a compiler
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3696—Methods or tools to render software testable
-
- 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/43—Checking; Contextual analysis
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Mathematical Physics (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Debugging And Monitoring (AREA)
Abstract
본 발명은, 인공지능을 동작시키기 위한 준비 및 관리를 담당하는 관리 루틴을 작성하고 생성하는 호스트 툴체인과, 상기 관리 루틴을 에뮬레이션하는 호스트 에뮬레이터와, 인공지능이 동작되는 신경망 가속기의 주요 동작을 모사하는 신경망 가속기 시뮬레이터와, 실제의 인공지능 장치와 연결하는 연계 에뮬레이터를 포함하는 인공지능 장치 통합 개발 환경을 제공한다.
Description
본 발명은 인공지능 장치의 소프트웨어 개발 방법 및 장치에 관한 것으로서, 구체적으로는 인공지능을 처리하는 신경망 가속기의 디버깅 방법 및 장치에 관한 것이다.
인공지능이 탑재된 장치에서 동작하는 소프트웨어는, 인공적으로 지능을 구현한 부분(루틴 또는 모듈; 이하, 인공지능 루틴으로 약칭)과 이를 동작시키기 위한 준비 및 관리를 위한 부분(이하, 관리 루틴으로 약칭)으로 나누어지며, 인공지능 장치의 동작속도를 향상시키기 위해 이들은 각각 독립된 프로세서에서 구동된다. 따라서, 인공지능 루틴과 관리 루틴은 자신이 실행되는 프로세서의 아키텍처에 맞게 개발되어야 하며, 통상적으로는 GPU상의 범용 계산방법으로 대표되는 이기종 컴퓨팅 기술에서의 소프트웨어 개발방법론을 차용하고 있다.
한편, 단순한 사칙 연산을 수행하는 대량의 연산기를 동시에 이용하여 대량의 데이터에 대한 계산을 처리하는 인공지능 구현 부분의 특성상, 인공지능의 실행을 위해 신경망 가속기에 보내진 연산 명령어는 가속기에 보내진 이후 중단할 수 없으며, 명령어의 처리가 완료될 때까지 가속기의 내부 상태에 대한 확인이 불가능하다. 그런데, 이러한 면은 단순한 연산기를 대량으로 결합하는 과정에서 각 연산기의 제어 로직을 제거함으로서 종래의 프로세서 아키텍처에서는 불가능한 수준의 연산 능력을 확보하고, 이럼으로써 인공신경망 계산을 획기적으로 가속할 수 있는 신경망 가속기만의 고유한 장점과는 절대적으로 대치된다.
정리하면, 종래의 이기종 컴퓨팅 기술용 소프트웨어 개발 방법으로는 인공지능 장치용 소프트웨어 개발 과정에서 인공지능 루틴에 대한 연산 중간 과정과 연산 중 신경망 가속기의 내부 상태를 확인할 수 없으며, 이는 인공지능 소프트웨어의 디버깅 및 개발을 어렵게 하는 원인이 된다.
전술한 문제점을 해결하기 위하여, 본 발명은 인공신경망 가속기 장치에 대한 소프트웨어 개발 및 디버깅 방법과 이를 수행하는 장치, 및 통합 개발 환경을 제시하는 것을 목적으로 한다.
또한, 인공신경망 가속기 장치의 명령어 제어 방법을 제시고자 한다.
전술한 과제를 이루기 위하여, 본 발명의 바람직한 일 실시예에 따른 인공지능 장치 통합 개발 환경은, 인공지능을 동작시키기 위한 준비 및 관리를 담당하는 관리 루틴을 작성하고 생성하는 호스트 툴체인과, 상기 관리 루틴을 에뮬레이션하는 호스트 에뮬레이터와, 인공지능이 동작되는 신경망 가속기의 주요 동작을 모사하는 신경망 가속기 시뮬레이터와, 실제의 인공지능 장치와 연결하는 연계 에뮬레이터를 포함한다.
호스트 툴체인은, 원시 코드를 컴파일하여 목적 코드를 생성하고, 생성된 목적 코드와 툴체인에 포함된 라이브러리 일부를 링킹하여 관리 루틴이 신경망 가속기가 포함된 인공지능 장치에서 동작할 수 있는 형태의 실행 파일을 생성하는 것이고, 상기 호스트 에뮬레이터는, 인공지능 소프트웨어를 에뮬레이션 하는 호스트 코어 에뮬레이터와, 상기 신경망 가속기 시뮬레이터와의 인터페이스를 위한 신경망 인터페이스를 포함하는 것이다.
신경망 가속기 시뮬레이터는, 상기 신경망 가속기의 동작을 모두 모사하는 가속기 시뮬레이터 및 명령어의 실행 과정에 따른 상기 신경망 가속기의 주요 상태만을 모사하는 가속기 에뮬레이터 중 하나일 수 있다.
연계 에뮬레이터는, 호스트 프로세서에서 실행되는 관리 루틴의 명령어들과 신경망 가속기에서 실행되는 인공지능 루틴 명령어들을 단일 개발 환경에서 디버깅되도록 하는 것인데, JTAG 표준을 따르는 것일 수 있다.
연계 에뮬레이터는, 호스트 프로세서 및 신경망 가속기에 대한 디버깅 명령어를 조합한 후, 상기 인공지능 장치로 명령어를 전송하며, 인공지능 장치로부터 상기 호스트 프로세서 및 상기 신경망 가속기의 사이클 진행 및 상태를 취합한 결과를 수신하고, 상기 호스트 에뮬레이터 및 상기 신경망 가속기 시뮬레이터의 상태를 상기 디버깅 명령어 사이클 수만큼 천이시키며, 해당 명령어의 결과를 반영시키고, 상기 호스트 에뮬레이터 및 상기 신경망 가속기 시뮬레이터 천이 상태와 상기 취합한 결과를 토대로 상기 인공지능 장치의 내부 상태를 확인한다.
본 발명의 다른 면에 따라, 디버깅 명령어를 조합하는 단계와, 인공지능 장치로 상기 디버깅 명령어를 전송하는 단계와, 신경망 가속기 시뮬레이터의 상태를 명령어 사이클 수만큼 천이시키는 단계와, 상기 인공지능 장치로부터 상기 디버깅 명령어에 대한 실행 결과를 수신하는 단계와, 신경망 가속기 시뮬레이터의 천이 상태 및 결과와, 상기 실행 결과를 확인하고, 이들을 고려하여 상기 인공지능 장치의 내부 상태를 확인하는 단계를 포함하는 인공지능 장치의 디버깅 방법이 제공된다.
이 때, 디버깅 명령어의 조합은 신경망 가속기에 대한 디버깅 명령어를 조합하거나 또는 호스트 프로세서에 대한 디버깅 명령어를 조합할 수 있고, 호스트 프로세서에 대한 디버깅 명령어를 함께 조합하여 전송하는 경우에는 호스트 코어 에뮬레이터의 상태를 천이시키는 단계를 포함하고, 상기 호스트 코어 에뮬레이터의 상태 및 명령어 실행 결과를 더 고려하여 상기 인공지능 장치의 내부 상태를 확인한다.
본 발명에 따르면, 인공신경망 가속기의 내부 상태를 언제든지 구체적으로 확인할 수 있다.
또한, 본 발명에서 제안하는 방법을 통해 인공신경망 가속기의 동작을 명령어 단위로 세분화하여 제어할 수 있다.
결과적으로, 인공지능 루틴의 실행 중 가속기 내부 상태를 확인할 수 있으므로, 인공신경망 가속기를 사용하는 인공지능 장치의 소프트웨어 개발에 소요되는 시간과 노력을 줄일 수 있게 된다.
도 1은 본 발명에 따른 호스트 개발 환경 및 신경망 가속기 개발 환경의 구성을 도시한 구성도.
도 2는 도 1의 도면에서, 본 발명에 따른 통합 개발 환경에 속하는 기본 구성을 도시한 구성도.
도 3은 본 발명에 따른 통합 개발 환경의 구성도.
도 4는 본 발명에 따른 통합 개발 환경과 실제의 인공지능 장치와의 연결을 나타내는 구성도.
도 5는 인공지능 장치의 구성도.
도 6은 본 발명에 따른 통합 개발 환경의 디버깅 방법을 도시한 순서도.
도 2는 도 1의 도면에서, 본 발명에 따른 통합 개발 환경에 속하는 기본 구성을 도시한 구성도.
도 3은 본 발명에 따른 통합 개발 환경의 구성도.
도 4는 본 발명에 따른 통합 개발 환경과 실제의 인공지능 장치와의 연결을 나타내는 구성도.
도 5는 인공지능 장치의 구성도.
도 6은 본 발명에 따른 통합 개발 환경의 디버깅 방법을 도시한 순서도.
본 발명의 목적 및 효과는 이상에서 언급한 것으로 제한되지 않으며, 본 발명의 목적 및 효과, 그리고 그것들을 달성하기 위한 기술적 구성들은 첨부 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다.
본 발명을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략한다. 또한, 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있다. 이하의 각 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며 본 발명의 범위를 제한하고자 하는 것이 아니다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함" 또는 "구비"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 또한, 명세서에 기재된 "...유닛", "...장치", "...디바이스", "...부" 또는 "...모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
한편, 본 발명의 각 실시예에 있어서, 각 구성요소들, 기능 블록들 또는 수단들은 하나 또는 그 이상의 하부 구성요소로 구성될 수 있으며, 각 구성요소들이 수행하는 전기, 전자, 기계적 기능들은 전자회로, 집적회로, ASIC(Application Specific Integrated Circuit) 등 공지된 다양한 소자들 또는 기계적 요소들로 구현될 수 있으며, 각각 별개로 구현되거나 2 이상이 하나로 통합되어 구현될 수도 있다.
이하, 첨부 도면을 참조하여 본 발명의 구성에 대하여 상세히 설명한다.
우선, 도 1 및 2를 참조하여 본 발명의 기본 기술 사상에 대해서 설명한다.
본 발명이 제안하는 개발 방법은, 도 1에 도시된 바와 같이, 인공지능 루틴과 관리 루틴이 서로 독립된 프로세서에서 동작하고 각각의 아키텍처에 맞게 개발될 것을 가정하여, 아래 그림과 같이 관리 루틴을 개발할 호스트 개발 환경(100)과, 인공지능 루틴을 개발할 신경망 가속기 개발 환경(200)으로 분리한다.
한편, 특허청구범위를 포함하는 본 명세서 전반에 걸쳐서, '환경'이라는 용어는 추상적이거나 관념적인 어떤 것이 아니라, 하나의 장치 또는 복수의 장치가 연계된 시스템과 같이 물건을 칭하거나 또는 장치나 시스템의 내외부 메모리와 같은 기억매체에 저장되고 장치나 시스템에서 동작하는 소프트웨어를 칭하는 것임을 명확히 밝힌다.
호스트 개발 환경(100)은 관리 루틴을 컴파일하는 호스트 툴체인(110)을 포함하며, 툴체인(110)은 원시 코드를 컴파일하여 목적 코드를 생성하고, 생성된 목적 코드와 툴체인에 포함된 라이브러리 일부를 링킹하여 관리 루틴이 신경망 가속기가 포함된 인공지능 장치에서 동작할 수 있는 형태의 실행 파일을 생성한다.
툴체인(110)의 종류는 컴파일러, 링커, 그리고 디버거를 포함하는 GNU 크로스 툴체인(Cross Toolchain)을 포함할 수 있으나 이에 국한하지는 않으며, GNU 툴체인과 호환되는 상용 툴체인도 포함할 수 있다.
신경망 가속기 개발 환경(200)은 신경망 가속기의 주요 동작을 모사하는 가속기 시뮬레이터(또는 에뮬레이터)(210)와 인공지능의 구현 방법을 편집하는 신경망 편집기(220)로 구성된다.
가속기 개발 환경(200)에서, 신경망 가속기의 동작을 소프트웨어로 모사하는 정도에 따라 신경망 가속기의 동작을 모두 모사하는 가속기 시뮬레이터와 명령어의 실행 과정에 따른 주요 상태만을 모사하는 가속기 에뮬레이터를 취사 선택할 수 있으며, 선택에 따라 시뮬레이터를 통한 정밀한 모사 또는 에뮬레이터를 통한 명령어 처리에 대한 차이가 있다.
본 발명의 바람직한 실시예에서는, 도 2에 도시된 바와 같이, 관리 루틴의 원시 코드를 편집하기 위한 소프트웨어 툴(110)을 포함하는 호스트 개발 환경(100)에 신경망 가속기 개발 환경(200)의 일부분인 가속기 시뮬레이터(또는 에뮬레이터)(210)를 통합하여 통합 개발 환경(IDE: Integrated Development Environment, 300)을 구축함으로써, 호스트 프로세서에서 실행되는 관리 루틴의 명령어들과 신경망 가속기에서 실행되는 인공지능 루틴 명령어들을 단일 개발 환경에서 디버깅되도록 한다.
이를 위한 통합 개발 환경(300)의 한 예로서, GNU 디버거 프론트엔드(frontend) 기능을 포함하는 Eclipse IDE를 기반으로 하며, 신경망 가속기 시뮬레이터 또는 에뮬레이터 소프트웨어는 Eclipse의 확장 기능으로서 동작하도록 작성될 수 있다.
사용자 관점에서는, 위에서 기술한 호스트 개발 환경(100)과 신경망 가속기 개발 환경(200)을 통합한 통합 개발 환경(300)만으로 기존의 일반적인 소프트웨어 개발 환경과 동일한 환경에서 인공지능 장치용 소프트웨어의 작성과 디버깅이 가능해진다. 본 발명에 따른 디버깅 방법 및 통합 개발 환경(300)의 사용자는 신경망 가속기를 위해 기 제작된 신경망 편집기(220)를 사용하여 인공지능 핵심 기능을 수행하는 신경망 구조를 작성하고, 통합 개발 환경(300)에서는 작성된 신경망을 사용하여 신경망 가속기를 학습시키고, 학습된 네트워크를 사용하여 분류 동작을 수행하거나 기 학습된 파라미터의 편집 등의 작업을 할 수 있다.
구체적으로는 아래 그림과 같이, 통합 개발 환경(300)에서 신경망 응용프로그램과 이를 실행시킬 수 있는 호스트 환경(호스트용 시스템 소프트웨어와 호스트용 운영체제)을 합한 형태의 인공지능 소프트웨어를 앞서 기술한 호스트 툴체인(110)을 사용하여 생성 및 컴파일하고, 신경망 가속기 시뮬레이터(210)를 외부 프로그램 또는 내부 루틴으로 포함하는 호스트 에뮬레이터에 탑재하여 인공지능 소프트웨어를 동작시킨다.
이를 위하여, 본 발명에 따른 통합 개발 환경(300)은, 도 3과 같이, 호스트용 시스템 소프트웨어와 호스트용 운영체제를 합한 인공지능 소프트웨어를 생성 및 컴파일하는 호스트 툴체인(110)과, 인공지능 소프트웨어를 에뮬레이션 하는 호스트 코어 에뮬레이터(310)를 포함하는 호스트 에뮬레이터(미도시)를 일 구성요소로 가진다. 신경망 가속기를 시뮬레이션하는 신경망 가속기 시뮬레이터(210)는 호스트 에뮬레이터의 내부 루틴으로 구성될 수도 있는데, 도 3에 도시된 실시예와 같이 호스트 에뮬레이터 외부의 프로그램일 수 있다. 이 경우 호스트 에뮬레이터는 신경망 가속기 시뮬레이터(210)과 연계할 수 있도록 신경망 인터페이스(330)을 포함한다.
즉, 본 발명에 따른 통합 개발 환경(300)은, 호스트 프로그램을 작성하고 생성하는 호스트 툴체인(110)뿐 아니라, 호스트 코어 에뮬레이터(310) 및 신경망 가속기 시뮬레이터(210)을 포함하여 인공지능 장치 시뮬레이터 기능을 수행한다.
한편, 통합 개발 환경(300)은 실제의 인공지능 장치와 연계할 수 있도록 JTAG 에뮬레이터(320)을 더 포함한다.
이하에서는 도 4를 참조하여, 실제의 인공지능 장치(400)와의 연계에 대하여 설명한다.
바람직한 일 실시예에서, 통합 개발 환경(300)이 실행되고 있는 컴퓨터와 개발 대상 인공지능 장치(400)와의 연결은 JTAG 표준에 따르며, 이를 위해 도 4와 같이 인공지능 장치(400)에는 JTAG 인터페이스(410)를 두고 JTAG 에뮬레이터(320)를 사용하여 개발 환경과 연결한다. 물론 JTAG 이외의 다른 표준에 따를 수 있음은 물론이며, 다만 본 실시예에서는 설명의 편의와 이해의 증진을 위하여 JTAG를 예시로 하여 설명하는 것 뿐이다.
인공지능 장치(400)의 JTAG 인터페이스(410)는 JTAG 에뮬레이터(320)를 통해 수신한 명령어를 분석하여 호스트 프로세서용 명령어와 신경망 가속기 명령어로 구분하여 해당되는 장치인 호스트 프로세서(420) 및 신경망 가속기(430)에 명령어를 전송하고, 실행된 결과를 취합하여 JTAG 에뮬레이터(320)로 전달한다.
즉, 통합 개발 환경(300)은 인공지능 장치(400)로 명령어를 전송하기 위해 호스트 프로세서 및/또는 신경망 가속기에 대한 DEBUG 명령어를 조합한 후 JTAG 인터페이스(410)을 통해 인공지능 장치(400)로 해당 명령어를 전송하며, 인공지능 장치(400)에서는 이를 수신하여 가속기 사이클 진행, 상태 취합 및 결과를 전송한다.
통합 개발 환경(300)은 확장 기능으로 포함한 가속기 시뮬레이터 및/또는 호스트 코어 에뮬레이터(210, 310)의 상태를 디버깅 명령어 사이클 수만큼 천이시키며, 해당 명령어의 가속기 시뮬레이터 및/또는 호스트 코어 에뮬레이터(210, 310)의 실행 결과를 확인하고 반영시킨다. 인공지능 장치(400)로부터 전송받은 결과로 명령어 결과를 확인하고, 신경망 시뮬레이터 및/또는 에뮬레이터(210, 310)의 천이 상태 및 실행 결과를 종합하여 호스트 프로세서(420) 및/또는 신경망 가속기(430)의 내부 상태를 간접적으로 확인한다.
전술한 디버깅 명령어의 조합, 전송, 가속기 시뮬레이터 및/또는 에뮬레이터(210, 310) 상태 천이, 호스트 프로세서(420) 및/또는 신경망 가속기(430) 내부 상태 확인의 작업은 JTAG 에뮬레이터(320)이 수행할 수도 있고, 일부만을 JTAG 에뮬레이터(320)가 수행하고 다른 부분은 통합 개발 환경(300) 내의 별도의 제어부(미도시)가 수행할 수도 있다.
이와 같이, 본 발명에 따른 통합 개발 환경(300)은 호스트 프로그램을 작성하고 생성하며, 신경망 가속기 시뮬레이터(210) 및 호스트 코어 에뮬레이터(310)를 통해 인공지능 장치(400)의 동작을 모사하며, 또한 인공지능 장치(400)의 처리 결과와 신경망 가속기 시뮬레이터(210)의 천이 상태 및 결과를 고려하여 신경망 가속기(430)의 상태를 확인할 수 있다.
따라서, 본 발명에 따른 통합 개발 환경(300)은 호스트 프로세서에서 실행되는 관리 루틴의 명령어들과 신경망 가속기에서 실행되는 인공지능 루틴 명령어들을 단일 개발 환경에서 디버깅할 수 있으며, 이에 대한 주된 역할을 JTAG 에뮬레이터(320)가 수행하도록 구현할 수 있다.
이하, 도 6을 참조하여 인공지능 장치(400)의 상태를 확인하는 디버깅 방법에 대하여 설명한다.
도시된 바와 같이, 통합 개발 환경(300)은 디버깅용 명령어를 조합한다(S610),
그 다음 단계에서는, 인공지능 장치(400)로 명령어를 전송하며(S620), 또한 신경망 가속기 시뮬레이터(210) 및/또는 호스트 코어 에뮬레이터(210, 310)의 상태를 명령어 사이클 수만큼 천이시킨다(S630).
인공지능 장치(400)에서는 신경망 가속기(430)를 통해 해당 명령어를 실행하고 그 실행 결과를 취합하면(S640), 통합 개발 환경(300)이 이를 수신하며(S650) 또한 신경망 가속기 시뮬레이터(210) 및/또는 호스트 코어 에뮬레이터(210, 310)의 천이 상태 및 시뮬레이션 및/또는 에뮬레이션 결과를 확인하고(S670), 이들을 모두 고려하여 신경망 가속기(430)의 내부 상태를 확인한다(S680).
이상 본 발명의 구성에 대하여 바람직한 몇 실시예를 들어 상세히 설명하였으나, 이는 이해를 돕기 위한 예시에 불과한 것으로 본 발명의 보호범위가 각 실시예의 구성에 한정되는 것은 아니다. 본 발명의 기술적 사상의 범주 내에서 전술한 실시예의 다양한 변형 및 변경이 가능함은 물론이다. 예컨대, 본 발명의 통합 개발 환경은 하나의 프로세서에 구현될 수도 있고, 둘 이상의 상이한 프로세서에 구현될 수도 있다. 같은 측면으로, 통합 개발 환경의 각 구성 모듈은 하나의 프로세서에서 동작될 수도 있고 복수의 프로세서에서 분산되어 설치되고 동작될 수 있다.
따라서, 본 발명의 보호범위는 이하의 특허청구범위의 기재에 의하여 정해져야 할 것이다.
Claims (10)
- 인공지능을 동작시키기 위한 준비 및 관리를 담당하는 관리 루틴을 작성하고 생성하는 호스트 툴체인과,
인공지능이 동작되는 신경망 가속기의 주요 동작을 모사하는 신경망 가속기 시뮬레이터와,
실제의 인공지능 장치와 연결하는 연계 에뮬레이터를 포함하되,
상기 연계 에뮬레이터는,
호스트 프로세서 및 신경망 가속기에 대한 디버깅 명령어를 조합한 후, 상기 인공지능 장치로 명령어를 전송하며, 인공지능 장치로부터 상기 호스트 프로세서 및 상기 신경망 가속기의 사이클 진행 및 상태를 취합한 결과를 수신하고, 상기 신경망 가속기 시뮬레이터의 상태를 상기 디버깅 명령어 사이클 수만큼 천이시키며 해당 명령어의 결과를 반영시키고, 상기 신경망 가속기 시뮬레이터 천이 상태와 상기 인공지능 장치로부터 취합한 결과를 토대로 상기 인공지능 장치의 내부 상태를 간접적으로 확인하는 것
인 포함하는 인공지능 장치 통합 개발 환경.
- 제1항에 있어서, 상기 호스트 툴체인은,
원시 코드를 컴파일하여 목적 코드를 생성하고, 생성된 목적 코드와 툴체인에 포함된 라이브러리 일부를 링킹하여 관리 루틴이 신경망 가속기가 포함된 인공지능 장치에서 동작할 수 있는 형태의 실행 파일을 생성하는 것인 인공지능 장치 통합 개발 환경.
- 삭제
- 제1항에 있어서, 상기 신경망 가속기 시뮬레이터는,
상기 신경망 가속기의 동작을 모두 모사하는 가속기 시뮬레이터 및 명령어의 실행 과정에 따른 상기 신경망 가속기의 주요 상태만을 모사하는 가속기 에뮬레이터 중 하나인 것인 인공지능 장치 통합 개발 환경.
- 제1항에 있어서, 상기 연계 에뮬레이터는,
호스트 프로세서에서 실행되는 관리 루틴의 명령어들과 신경망 가속기에서 실행되는 인공지능 루틴 명령어들을 단일 개발 환경에서 디버깅되도록 하는 것인 인공지능 장치 통합 개발 환경.
- 제1항에 있어서, 상기 연계 에뮬레이터는,
JTAG 표준을 따르는 것인 인공지능 장치 통합 개발 환경.
- 제1항에 있어서, 상기 연계 에뮬레이터는,
호스트 프로세서 및 신경망 가속기에 대한 디버깅 명령어를 조합한 후, 상기 인공지능 장치로 명령어를 전송하며, 인공지능 장치로부터 상기 호스트 프로세서 및 상기 신경망 가속기의 사이클 진행 및 상태를 취합한 결과를 수신하는 것인 인공지능 장치 통합 개발 환경.
- 삭제
- 인공지능 장치의 통합개발환경이 수행하는 디버깅 방법으로서,
디버깅 명령어를 조합하는 단계와,
인공지능 장치로 상기 디버깅 명령어를 전송하는 단계와,
상기 인공지능 장치로부터 상기 디버깅 명령어에 대한 실행 결과를 수신하는 단계와,
상기 디버깅 명령어와 동일한 디버깅 명령어를 이용하여, 신경망 가속기 시뮬레이터의 상태를 상기 디버깅 명령어 사이클 수만큼 천이시키며 상기 디버깅 명령어에 의한 시뮬레이션 결과를 확인하는 단계와,
신경망 가속기 시뮬레이터의 천이 상태 및 결과와, 상기 실행 결과를 확인하고, 이들을 고려하여 상기 인공지능 장치의 내부 상태를 간접적으로 확인하는 단계
를 포함하는 인공지능 장치의 디버깅 방법.
- 제9항에 있어서, 상기 디버깅 명령어를 조합하는 단계는,
신경망 가속기 시뮬레이터 및 호스트 코어 에뮬레이터에 대한 디버깅 명령어를 조합하는 것인 인공지능 장치의 디버깅 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190144182A KR102371701B1 (ko) | 2019-11-12 | 2019-11-12 | 인공지능 장치의 소프트웨어 디버깅 방법 및 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190144182A KR102371701B1 (ko) | 2019-11-12 | 2019-11-12 | 인공지능 장치의 소프트웨어 디버깅 방법 및 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20210057431A KR20210057431A (ko) | 2021-05-21 |
KR102371701B1 true KR102371701B1 (ko) | 2022-03-08 |
Family
ID=76157634
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190144182A KR102371701B1 (ko) | 2019-11-12 | 2019-11-12 | 인공지능 장치의 소프트웨어 디버깅 방법 및 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102371701B1 (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102672641B1 (ko) * | 2023-06-16 | 2024-06-10 | 주식회사 하이퍼엑셀 | 인공지능을 위한 하드웨어의 동작 및 데이터 정밀도를 검증하기 위한 방법 및 시스템 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017536247A (ja) | 2014-09-02 | 2017-12-07 | エムビーエル リミテッド | 電子小規模操作ライブラリを用いて計装環境内でドメイン特定アプリケーションを実行するためのロボット操作方法及びシステム |
KR101928208B1 (ko) | 2017-08-21 | 2018-12-11 | 재단법인대구경북과학기술원 | 뉴럴 네트워크의 디버깅 방법, 장치 및 시스템 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100403195B1 (ko) * | 2001-06-27 | 2003-10-23 | (주)바이탈즈시스템 | 웹 기반 인서킷 에뮬레이터, 이를 이용한 타겟 임베디드시스템의 웹 기반 개발 시스템 및 방법 |
KR20190078681A (ko) * | 2017-12-13 | 2019-07-05 | 전자부품연구원 | 인공신경망 학습/시뮬레이션 시스템 및 방법 |
-
2019
- 2019-11-12 KR KR1020190144182A patent/KR102371701B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017536247A (ja) | 2014-09-02 | 2017-12-07 | エムビーエル リミテッド | 電子小規模操作ライブラリを用いて計装環境内でドメイン特定アプリケーションを実行するためのロボット操作方法及びシステム |
KR101928208B1 (ko) | 2017-08-21 | 2018-12-11 | 재단법인대구경북과학기술원 | 뉴럴 네트워크의 디버깅 방법, 장치 및 시스템 |
Non-Patent Citations (1)
Title |
---|
허경철 외, ‘RISC 프로세서의 디버거를 위한 변형된 JTAG 설계’, 전자공학회 논문지, 2011.07.* |
Also Published As
Publication number | Publication date |
---|---|
KR20210057431A (ko) | 2021-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102508753B (zh) | Ip核验证系统 | |
CN110865971B (zh) | Soc芯片的验证系统及其方法 | |
US6922821B1 (en) | System and a method for checking lock step consistency between an in circuit emulation and a microcontroller while debugging process is in progress | |
RU2473115C2 (ru) | Способ автоматического генерирования сценария для проверки правильности функционального программного обеспечения системы, установленной на борту летательного аппарата, и устройство для применения способа | |
JP2019516167A5 (ko) | ||
JPH05224911A (ja) | 動的命令修正制御装置 | |
Marinescu et al. | A model-based testing framework for automotive embedded systems | |
Archer et al. | Interface contracts for tinyos | |
CN102945202A (zh) | 一种基于代理的rtems系统调试方法 | |
CN113196243A (zh) | 使用编译器生成的仿真优化元数据改进仿真和跟踪性能 | |
CN111316227B (zh) | 一种调试应用程序的方法及设备 | |
CN104573193A (zh) | 一种航天器gnc系统快速设计方法 | |
Haberl et al. | Model-level debugging of embedded real-time systems | |
Iyenghar et al. | A model based approach for debugging embedded systems in real-time | |
KR102371701B1 (ko) | 인공지능 장치의 소프트웨어 디버깅 방법 및 장치 | |
CN114579256A (zh) | 一种基于fpga的nvme ssd固件开发仿真平台 | |
Garavel et al. | Verification of an industrial SystemC/TLM model using LOTOS and CADP | |
Asghar et al. | Efficient debugging of large algorithmic modelica applications | |
CN111338761B (zh) | 一种51单片机虚拟中断控制器及实现方法 | |
CN113885426A (zh) | 一种挖掘机控制程序plc代码自动生成方法、测试方法及可视化测试系统 | |
Gilles et al. | Applying WCET analysis at architectural level | |
Katelman et al. | vlogsl: A strategy language for simulation-based verification of hardware | |
JPS6349851A (ja) | シミユレ−シヨンシステム | |
Kirchhof et al. | Simulation of model execution for embedded systems | |
KR20010011036A (ko) | 인터프리터형 제어프로그램의 개발 방법 및 시스템 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E90F | Notification of reason for final refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |