KR102640910B1 - 인공지능 연산과 연관된 데이터 복구 방법 및 시스템 - Google Patents

인공지능 연산과 연관된 데이터 복구 방법 및 시스템 Download PDF

Info

Publication number
KR102640910B1
KR102640910B1 KR1020230105463A KR20230105463A KR102640910B1 KR 102640910 B1 KR102640910 B1 KR 102640910B1 KR 1020230105463 A KR1020230105463 A KR 1020230105463A KR 20230105463 A KR20230105463 A KR 20230105463A KR 102640910 B1 KR102640910 B1 KR 102640910B1
Authority
KR
South Korea
Prior art keywords
descriptor
command queue
command
stored
task
Prior art date
Application number
KR1020230105463A
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 리벨리온 주식회사
Priority to KR1020230105463A priority Critical patent/KR102640910B1/ko
Application granted granted Critical
Publication of KR102640910B1 publication Critical patent/KR102640910B1/ko
Priority to US18/638,482 priority patent/US12111732B1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1476Error detection or correction of the data by redundancy in operation in neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0736Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in functional embedded systems, i.e. in a data processing system designed as a combination of hardware and software dedicated to performing a certain function
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3471Address tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Retry When Errors Occur (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Computer Hardware Design (AREA)

Abstract

본 개시는 적어도 하나의 프로세서에 의해서 수행되는 인공지능 연산을 위한 데이터를 복구하는 방법을 제공한다. 이 방법은, 복수의 작업 중에서 실행 대상이 되는 타깃 작업과 연관된 디스크립터를 커맨드 큐로부터 추출하는 단계, 추출된 디스크립터와 연관된 적어도 하나의 명령을 실행하여, 타깃 작업과 연관된 인공지능 연산을 실행시키는 단계, 인공지능 연산을 실행시키는 중에 오류가 발생하면, 커맨드 큐를 초기화하는 단계, 적어도 하나의 작업과 연관된 추적 데이터에 기초하여, 복구 대상이 되는 적어도 하나의 디스크립터를 결정하는 단계 및 결정된 적어도 하나의 디스크립터를 초기화된 커맨드 큐에 복구시키는 단계를 포함할 수 있다.

Description

인공지능 연산과 연관된 데이터 복구 방법 및 시스템{METHOD AND SYSTEM FOR RECOVERING DATA ASSOCIATED WITH ARTIFICIAL INTELLIGENCE CALCULATION}
본 개시는 인공지능 연산과 연관된 데이터 복구 방법에 관한 것으로서, 구체적으로, 인공지능 연산을 실행시키는 중에 오류가 발생하면 관련 데이터를 복구하는 방법 및 시스템에 관한 것이다.
인공지능 연산을 수행하기 위하여, 인공지능 연산에 특화된 하드웨어가 이용되고 있다. 예컨대, GPU(Graphic Processing Unit), NPU(Neural Processing Unit) 등을 포함하는 하드웨어가 이용되어, 인공지능 연산을 보다 빠르게 수행하고 있다. 이러한 하드웨어로 인공지능 연산에 기초가 되는 데이터가 전송되고, 하드웨어는 수신된 데이터를 기계학습 모델에 적용하여 인공지능 연산 결과(예컨대, 추론 결과)를 제공할 수 있다.
그런데 기계학습 모델로 적용되는 입력 데이터의 오류, 시스템 또는 칩의 오류 등과 같은 다양한 원인으로 인하여, 인공지능 연산 중에 오류가 발생하여, 인공지능 연산이 실패될 수 있다. 인공지능 연산의 실패에 대비하여, 하드웨어 자원을 구획하고, 구획된 하드웨어 자원을 통해서 각 작업이 독립적으로 수행하도록 시스템이 설계되고 있다. 예컨대, 캐시(cache), RAM(Random Access Memory), sys pipe 등을 미리 분리하고, 분리된 하드웨어 자원을 통해 독립적인 작업이 이용될 수 있도록 시스템이 설계될 수 있다. 이러한 경우, 구획된 하드웨어 자원별로 서로 독립된 인공지능 연산 작업이 수행하여, 특정 작업에 오류가 발생하더라도 다른 작업에 영향이 미치지 않아, 결함 허용성(Fault Tolerance)이 만족될 수 있다.
그런데 하드웨어 자원을 구획하는 것은 설계 비용이 많이 발생하고, 더불어 하드웨어 자원도 많이 요구된다. 이에 따라, 적은 비용으로, 결합 허용성을 만족할 수 있는 기술에 대한 요구(needs)가 발생하고 있다.
본 개시는 상기와 같은 문제점을 해결하기 위한 인공지능 연산과 연관된 데이터 복구 방법, 컴퓨터 판독 가능한 기록매체에 저장된 컴퓨터 프로그램, 컴퓨터 판독 가능한 기록 매체 및 장치(시스템)를 제공한다.
본 개시는 방법, 장치(시스템) 및/또는 컴퓨터 판독 가능 저장 매체에 저장된 컴퓨터 프로그램을 포함한 다양한 방식으로 구현될 수 있다.
본 개시의 일 실시예에 따르면, 적어도 하나의 프로세서에 의해서 수행되는, 인공지능 연산을 위한 데이터를 복구하는 방법은, 복수의 작업 중에서 실행 대상이 되는 타깃 작업과 연관된 디스크립터를 커맨드 큐로부터 추출하는 단계, 추출된 디스크립터와 연관된 적어도 하나의 명령을 실행하여, 타깃 작업과 연관된 인공지능 연산을 실행시키는 단계, 인공지능 연산을 실행시키는 중에 오류가 발생하면, 커맨드 큐를 초기화하는 단계, 적어도 하나의 작업과 연관된 추적 데이터에 기초하여, 복구 대상이 되는 적어도 하나의 디스크립터를 결정하는 단계 및 결정된 적어도 하나의 디스크립터를 초기화된 커맨드 큐에 복구시키는 단계를 포함할 수 있다.
또한, 복구 대상이 되는 적어도 하나의 디스크립터를 결정하는 단계는, 오류와 연관된 디스크립터를 식별하는 단계 및 식별된 디스크립터 이후의 순번을 가지는 적어도 하나의 디스크립터를 복구 대상으로 결정하는 단계를 포함할 수 있다.
또한, 복구 대상이 되는 적어도 하나의 디스크립터를 결정하는 단계는, 오류와 연관된 디스크립터를 식별하는 단계 및 식별된 디스크립터 및 식별된 디스크립터 이후의 순번을 가지는 적어도 하나의 디스크립터를 복구 대상으로 결정하는 단계를 포함할 수 있다.
또한, 복구 대상이 되는 적어도 하나의 디스크립터를 결정하는 단계는, 오류와 연관된 디스크립터를 식별하는 단계, 식별된 디스크립터와 연관된 인공지능 연산의 오류 횟수를 식별하는 단계 및 식별된 오류 횟수가 임계치를 초과하면, 식별된 디스크립터 이후의 순번을 가지는 적어도 하나의 디스크립터를 복구 대상으로 결정하는 단계를 포함할 수 있다.
또한, 결정된 적어도 하나의 디스크립터를 초기화된 커맨드 큐에 복구시키는 단계는, 초기화되기 전의 커맨드 큐에 저장된 적어도 하나의 디스크립터를 추적 데이터로부터 획득하는 단계 및 획득된 적어도 하나의 디스크립터에 기초하여, 커맨드 큐를 복구시키는 단계를 포함할 수 있다.
또한, 결정된 적어도 하나의 디스크립터를 초기화된 커맨드 큐에 복구시키는 단계는, 추적 데이터에 기초하여, 초기화되기 전의 커맨드 큐와 연관된 적어도 하나의 커맨드 버퍼 주소를 식별하는 단계 및 식별된 적어도 하나의 커맨드 버퍼 주소에 저장된 명령에 기초하여, 커맨드 큐를 복구시키는 단계를 포함할 수 있다.
또한, 데이터 복구 방법은, 커맨드 큐를 초기화하는 단계 이전에 오류가 발생한 작업과 연관된 컨텍스트를 식별하는 단계 및 식별된 컨텍스트와 연관된 추가적인 디스크립터가 커맨드 큐에 저장되지 않도록, 커맨드 큐를 제어하는 단계를 더 포함할 수 있다.
또한, 컨텍스트는 특정 사용자 또는 특정 포트 중 적어도 하나와 연관될 수 있다.
또한, 데이터 복구 방법은, 커맨드 큐를 초기화하는 단계 이전에, 오류가 발생한 작업과 연관된 컨텍스트를 식별하는 단계 및 식별된 컨텍스트와 연관되지 않은 추가 작업이 발생하면, 추가 작업과 연관된 디스크립터를 커맨드 큐를 저장하는 단계를 더 포함할 수 있다.
또한, 작업 큐에 특정 컨텍스트와 연관된 적어도 하나의 작업 데이터가 저장되고, 커맨드 큐에 저장된 디스크립터는 작업 큐에 저장된 특정 작업 데이터와 연관되고, 커맨드 큐에 저장된 특정 디스크립터와 연관된 명령이 커맨드 버퍼에 저장될 수 있다.
또한, 실행된 적어도 하나의 명령은, 뉴럴 프로세싱 장치에서 수행되는 추론과 연관될 수 있다.
상술된 데이터 복구 방법을 컴퓨터에서 실행하기 위해 컴퓨터 판독 가능한 기록 매체에 저장된 컴퓨터 프로그램이 제공될 수 있다.
본 개시의 일 실시예에 따르면 컴퓨팅 시스템은, 적어도 하나의 디스크립터가 저장된 커맨드 큐 및 커맨드 큐를 관리하도록 구성된 적어도 하나의 프로세서를 포함하고, 적어도 하나의 프로세서는, 복수의 작업 중에서 실행 대상이 되는 타깃 작업과 연관된 디스크립터를 커맨드 큐로부터 추출하고, 추출된 디스크립터와 연관된 적어도 하나의 명령을 실행하여, 타깃 작업과 연관된 인공지능 연산을 실행시키고, 인공지능 연산을 실행시키는 중에 오류가 발생하면, 커맨드 큐를 초기화하고, 적어도 하나의 작업과 연관된 추적 데이터에 기초하여, 복구 대상이 되는 적어도 하나의 디스크립터를 결정하고, 결정된 적어도 하나의 디스크립터를 초기화된 커맨드 큐에 복구시키도록 더 구성될 수 있다.
본 개시의 일부 실시예에 따르면, 하드웨어 자원을 구획할 필요없이, 오류에 대한 결함 허용성(Fault Tolerance)을 만족시킬 수 있다.
본 개시의 일부 실시예에 따르면, 인공지능 연산 중에 오류가 발생하면, 커맨드 큐가 초기화된 후, 초기화된 커맨드 큐에 작업과 연관된 디스크립터(descriptor)가 복구될 수 있다. 또한, 커맨드 큐에 복구된 디스크립터에 기초하여 인공지능 연산과 연관된 명령이 실행될 수 있다. 이에 따라, 오류가 발생하더라도 정상적으로 인공지능 연산이 실행될 수 있다.
본 개시의 일부 실시예에 따르면, 작업과 연관된 추적 데이터(tracking data)에 기초하여, 복구 대상이 되는 적어도 하나의 디스크립터를 결정하고, 결정된 적어도 하나의 디스크립터가 커맨드 큐에 복구될 수 있다. 이에 따라, 오류를 유발시키는 디스크립터가 커맨드 큐에 복구되는 것이 예방될 수 있고, 더불어 필요한 디스크립터가 확실하게 커맨드 큐에 복구될 수 있다.
본 개시의 효과는 이상에서 언급한 효과로 제한되지 않으며, 언급되지 않은 다른 효과들은 청구범위의 기재로부터 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자('통상의 기술자'라 함)에게 명확하게 이해될 수 있을 것이다.
본 개시의 실시예들은, 이하 설명하는 첨부 도면들을 참조하여 설명될 것이며, 여기서 유사한 참조 번호는 유사한 요소들을 나타내지만, 이에 한정되지는 않는다.
도 1은 본 개시의 일 실시예에 따른, 뉴럴 프로세싱 시스템을 설명하기 위한 블록도이다.
도 2는 도 1의 뉴럴 프로세싱 장치를 세부적으로 설명하기 위한 블록도이다.
도 3은 도 1의 호스트 시스템을 세부적으로 설명하기 위한 블록도이다.
도 4는 본 개시의 일 실시예에 따른, 인공지능 연산을 수행시키기 위해 이용되는 복수의 큐와 버퍼를 예시하는 도면이다.
도 5는 본 개시의 일 실시예에 따른, 제3 작업과 연관된 인공지능 연산이 실패된 것을 예시하는 도면이다.
도 6은 본 개시의 일 실시예에 따른, 커맨드 큐가 복구되는 일 예시를 나타내는 도면이다.
도 7은 본 개시의 일 실시예에 따른, 커맨드 큐가 복구되는 다른 예시를 나타내는 도면이다.
도 8은 본 개시의 일 실시예에 따른, 커맨드 큐가 복구되어 인공지능 연산이 수행되는 예시를 나타내는 도면이다.
도 9는 본 개시의 일 실시예에 따른, 인공지능 연산을 위한 데이터 복구 방법을 설명하기 위한 흐름도이다.
이하, 본 개시의 실시를 위한 구체적인 내용을 첨부된 도면을 참조하여 상세히 설명한다. 다만, 이하의 설명에서는 본 개시의 요지를 불필요하게 흐릴 우려가 있는 경우, 널리 알려진 기능이나 구성에 관한 구체적 설명은 생략하기로 한다.
첨부된 도면에서, 동일하거나 대응하는 구성요소에는 동일한 참조부호가 부여되어 있다. 또한, 이하의 실시예들의 설명에 있어서, 동일하거나 대응되는 구성요소를 중복하여 기술하는 것이 생략될 수 있다. 그러나, 구성요소에 관한 기술이 생략되어도, 그러한 구성요소가 어떤 실시예에 포함되지 않는 것으로 의도되지는 않는다.
개시된 실시예의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나, 본 개시는 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 개시가 완전하도록 하고, 본 개시가 통상의 기술자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것일 뿐이다.
본 명세서에서 사용되는 용어에 대해 간략히 설명하고, 개시된 실시예에 대해 구체적으로 설명하기로 한다. 본 명세서에서 사용되는 용어는 본 개시에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 관련 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서, 본 개시에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 개시의 전반에 걸친 내용을 토대로 정의되어야 한다.
본 명세서에서의 단수의 표현은 문맥상 명백하게 단수인 것으로 특정하지 않는 한, 복수의 표현을 포함한다. 또한, 복수의 표현은 문맥상 명백하게 복수인 것으로 특정하지 않는 한, 단수의 표현을 포함한다. 명세서 전체에서 어떤 부분이 어떤 구성요소를 포함한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다.
또한, 명세서에서 사용되는 '모듈' 또는 '부'라는 용어는 소프트웨어 또는 하드웨어 구성요소를 의미하며, '모듈' 또는 '부'는 어떤 역할들을 수행한다. 그렇지만, '모듈' 또는 '부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '모듈' 또는 '부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서, '모듈' 또는 '부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로 코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 또는 변수들 중 적어도 하나를 포함할 수 있다. 구성요소들과 '모듈' 또는 '부'들은 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '모듈' 또는 '부'들로 결합되거나 추가적인 구성요소들과 '모듈' 또는 '부'들로 더 분리될 수 있다.
본 개시의 일 실시예에 따르면, '모듈' 또는 '부'는 프로세서 및 메모리로 구현될 수 있고, 회로(circuit, circuitry)로 구현될 수 있다. '회로(circuit, circuitry)'와 같은 용어는 하드웨어 상의 회로를 의미하기도 하지만 소프트웨어 상의 회로를 의미할 수도 있다. '프로세서'는 범용 프로세서, 중앙 처리 장치(CPU), 마이크로프로세서, 디지털 신호 프로세서(DSP), 제어기, 마이크로제어기, 상태 머신 등을 포함하도록 넓게 해석되어야 한다. 몇몇 환경에서, '프로세서'는 주문형 반도체(ASIC), 프로그램가능 로직 디바이스(PLD), 필드 프로그램가능 게이트 어레이(FPGA) 등을 지칭할 수도 있다. '프로세서'는, 예를 들어, DSP와 마이크로프로세서의 조합, 복수의 마이크로프로세서들의 조합, DSP 코어와 결합한 하나 이상의 마이크로프로세서들의 조합, 또는 임의의 다른 그러한 구성들의 조합과 같은 처리 디바이스들의 조합을 지칭할 수도 있다. 또한, '메모리'는 전자 정보를 저장 가능한 임의의 전자 컴포넌트를 포함하도록 넓게 해석되어야 한다. '메모리'는 임의 액세스 메모리(RAM), 판독-전용 메모리(ROM), 비-휘발성 임의 액세스 메모리(NVRAM), 프로그램가능 판독-전용 메모리(PROM), 소거-프로그램가능 판독 전용 메모리(EPROM), 전기적으로 소거가능 PROM(EEPROM), 플래쉬 메모리, 자기 또는 광학 데이터 저장장치, 레지스터들 등과 같은 프로세서-판독가능 매체의 다양한 유형들을 지칭할 수도 있다. 프로세서가 메모리로부터 정보를 판독하고/하거나 메모리에 정보를 기록할 수 있다면 메모리는 프로세서와 전자 통신 상태에 있다고 불린다. 프로세서에 집적된 메모리는 프로세서와 전자 통신 상태에 있다.
본 개시에서, '시스템'은 서버 장치와 클라우드 장치 중 적어도 하나의 장치를 포함할 수 있으나, 이에 한정되는 것은 아니다. 예를 들어, 시스템은 하나 이상의 서버 장치로 구성될 수 있다. 다른 예로서, 시스템은 하나 이상의 클라우드 장치로 구성될 수 있다. 또 다른 예로서, 시스템은 서버 장치와 클라우드 장치가 함께 구성되어 동작될 수 있다.
또한, 이하의 실시예들에서 사용되는 제1, 제2, A, B, (a), (b) 등의 용어는 어떤 구성요소를 다른 구성요소와 구별하기 위해 사용되는 것일 뿐, 그 용어에 의해 해당 구성요소의 본질이나 차례 또는 순서 등이 한정되지는 않는다.
또한, 이하의 실시예들에서, 어떤 구성요소가 다른 구성요소에 '연결', '결합' 또는 '접속'된다고 기재된 경우, 그 구성요소는 그 다른 구성요소에 직접적으로 연결되거나 또는 접속될 수 있지만, 각 구성요소 사이에 또 다른 구성요소가 '연결', '결합' 또는 '접속'될 수도 있다고 이해되어야 한다.
또한, 이하의 실시예들에서 사용되는 '포함한다(comprises)' 및/또는 '포함하는(comprising)'은 언급된 구성요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
본 개시에서, '복수의 A 각각' 은 복수의 A에 포함된 모든 구성 요소의 각각을 지칭하거나, 복수의 A에 포함된 일부 구성 요소의 각각을 지칭할 수 있다.
본 개시의 다양한 실시예들을 설명하기에 앞서, 사용되는 용어에 대하여 설명하기로 하기로 한다.
본 개시에서, '기계학습 모델'은 주어진 입력에 대한 해답(answer)을 추론하는데 사용하는 임의의 모델을 포함할 수 있다. 일 실시예에 따르면, 기계학습 모델은 입력 레이어(층), 복수 개의 은닉 레이어 및 출력 레이어를 포함한 인공신경망 모델을 포함할 수 있다. 여기서, 각 레이어는 복수의 노드를 포함할 수 있다. 또한, 본 개시에서, 기계학습 모델은 인공신경망 모델을 지칭할 수 있으며, 인공신경망 모델은 기계학습 모델을 지칭할 수 있다.
본 개시에서, '디스크립터(descriptor)'는 인공지능 연산을 실행시키기 위한 적어도 하나의 명령어 주소를 포함할 수 있다. 여기서, 명령어 주소는 명령어가 저장된 저장영역(예컨대, 버퍼)의 주소일 수 있다. 또한, 디스크립터는 적어도 하나의 작업과 연관될 수 있다. 예컨대, 단일 작업이 수행되는 것은, 디스크립터와 연관된 적어도 하나의 명령이 실행되는 것을 의미할 수 있다.
이하, 본 개시의 다양한 실시예들에 대하여 첨부된 도면에 따라 상세하게 설명한다.
도 1은 본 개시의 일 실시예에 따른, 뉴럴 프로세싱 시스템(NPS)을 설명하기 위한 블록도이다. 도 1을 참조하면, 본 개시의 몇몇 실시예들에 따른 뉴럴 프로세싱 시스템(NPS)은 뉴럴 프로세싱 장치(1), 호스트 시스템(HS) 및 호스트 인터페이스(HIO)를 포함할 수 있다.
뉴럴 프로세싱 장치(1)는 인공신경망을 이용하여 연산을 수행하는 장치일 수 있다. 뉴럴 프로세싱 장치(1)는 예를 들어, 딥 러닝(deep learning) 연산 작업을 수행하는 것에 특화된 장치일 수 있다. 단, 본 실시예가 이에 제한되는 것은 아니다.
뉴럴 프로세싱 장치(1)는 뉴럴 프로세싱 장치가 아닌 다른 프로세싱 장치일 수도 있다. 예컨대, 뉴럴 프로세싱 장치(1)는 각각 그래픽 프로세싱 장치(GPU, graphics processing unit), 중앙 처리 장치(CPU, central processing unit) 및 그 외의 다른 종류의 프로세싱 장치일 수도 있다.
호스트 시스템(HS)은 뉴럴 프로세싱 장치(1)에 연산 작업을 지시하고, 연산 작업의 결과를 회수하는 컴퓨팅 시스템일 수 있다. 예컨대, 호스트 시스템(HS)은 인공지능 연산에 연관된 데이터를 뉴럴 프로세싱 장치(1)로 전송하고, 전송된 데이터에 기초한 인공지능 연산 결과를 뉴럴 프로세싱 장치(1)로부터 수신할 수 있다. 호스트 시스템(HS)은 뉴럴 프로세싱 장치(1)에 비해서 딥 러닝 연산 작업에 특화되지 않은 컴퓨팅 시스템일 수 있다. 단, 본 실시예가 이에 제한되는 것은 아니다.
호스트 인터페이스(HIO)는 뉴럴 프로세싱 장치(1)와 호스트 시스템(HS) 사이에서 데이터 및 컨트롤 신호를 전송할 수 있다. 호스트 인터페이스(HIO)는 예를 들어, 호스트 시스템(HS)의 명령 및 데이터를 뉴럴 프로세싱 장치(1)로 전달할 수 있고, 이에 따라 뉴럴 프로세싱 장치(1)가 연산 작업을 수행할 수 있다. 뉴럴 프로세싱 장치(1)는 연산 작업을 완료하면 이에 대한 결과를 인터럽트 요청을 통해서 호스트 시스템(HS)으로 전달할 수 있다. 호스트 인터페이스(HIO)는 예를 들어, PCIe(PCI Express)일 수 있으나, 이에 제한되는 것은 아니다.
도 2는 도 1의 뉴럴 프로세싱 장치를 세부적으로 설명하기 위한 블록도이다. 도 2를 참조하면, 뉴럴 프로세싱 장치(1)는 뉴럴 코어 SoC(10), 오프 칩 메모리(30), 비휘발성 메모리 인터페이스(40) 및 휘발성 메모리 인터페이스(50)를 포함할 수 있다.
뉴럴 코어 SoC(10)는 시스템 온 칩(System on Chip) 장치일 수 있다. 뉴럴 코어 SoC(10)는 인공지능 연산 유닛으로 가속기(Accelerator)를 포함할 수 있다. 뉴럴 코어 SoC(10)는 예를 들어, GPU(graphics processing unit), FPGA(field programmable gate array) 또는 ASIC(application-specific integrated circuit) 중 적어도 하나를 포함할 수 있다. 단, 본 실시예가 이에 제한되는 것은 아니다.
뉴럴 코어 SoC(10)는 별도의 외부 인터페이스를 통해서 다른 외부의 연산 유닛들과 데이터를 교환할 수 있다. 또한, 뉴럴 코어 SoC(10)는 비휘발성 메모리 인터페이스(40) 및 휘발성 메모리 인터페이스(50)를 통해서 각각 비휘발성 메모리(31) 및 휘발성 메모리(32)와 연결될 수 있다.
오프 칩 메모리(30)는 뉴럴 코어 SoC(10)의 칩 외부에 배치된 메모리일 수 있다. 오프 칩 메모리(30)는 비휘발성 메모리(31) 및 휘발성 메모리(32)를 포함할 수 있다.
비휘발성 메모리(31)는 전원이 공급되지 않아도 저장된 정보를 계속 유지하는 메모리일 수 있다. 비휘발성 메모리(31)는 후술하는 기계학습 모델에 대한 연산을 제어하기 위한 하나 이상의 인스트럭션을 저장할 수 있다. 비휘발성 메모리(31)는 예를 들어, ROM(Read-Only Memory), PROM(Programmable Read-Only Memory), EAROM(Erasable Alterable ROM), EPROM(Erasable Programmable Read-Only Memory), EEPROM(Electrically Erasable Programmable Read-Only Memory)(예를 들어, 낸드 플래시 메모리(NAND Flash memory), 노어 플래시 메모리(NOR Flash memory)), UVEPROM(Ultra-Violet Erasable Programmable Read-Only Memory), FeRAM(Ferroelectric Random Access Memory), MRAM(Magnetoresistive Random Access Memory), PRAM(Phase-change Random Access Memory), SONOS(silicon-oxide-nitride-oxide-silicon), RRAM(Resistive Random Access Memory), NRAM(Nanotube Random Access Memory), 마그네틱 컴퓨터 기억 장치(예를 들면, 하드 디스크, 디스켓 드라이브, 마그네틱 테이프), 광디스크 드라이브 또는 3D 크로스포인트 메모리(3D XPoint memory) 중 적어도 하나를 포함할 수 있다. 단, 본 실시예가 이에 제한되는 것은 아니다.
휘발성 메모리(32)는 비휘발성 메모리(31)와 달리, 저장된 정보를 유지하기 위해서 전력을 지속적으로 필요로 하는 메모리일 수 있다. 휘발성 메모리(32)는 예를 들어, DRAM(Dynamic Random Access Memory), SRAM(Static Random Access Memory), SDRAM(Synchronous Dynamic Random Access Memory) 및 DDR SDRAM(Double Data Rate SDRAM) 중 적어도 하나를 포함할 수 있다. 단, 본 실시예가 이에 제한되는 것은 아니다.
비휘발성 메모리 인터페이스(40)는 예를 들어, PATA(Parallel Advanced Technology Attachment), SCSI(Small Computer System Interface), SAS(Serial Attached SCSI), SATA(Serial Advanced Technology Attachment) 및 PCIe(PCI Express) 중 적어도 하나를 포함할 수 있다. 단, 본 실시예가 이에 제한되는 것은 아니다.
휘발성 메모리 인터페이스(50)는 예를 들어, SDR(Single Data Rate), DDR(Double Data Rate), QDR(Quad Data Rate), 및 XDR(eXtreme Data Rate, Octal Data Rate) 중 적어도 하나일 수 있다. 단, 본 실시예가 이에 제한되는 것은 아니다.
일 실시예에 따르면, 뉴럴 코어 SoC(10)는 적어도 하나의 프로세서를 포함할 수 있고, 프로세서는 호스트 인터페이스(HIO)를 통해 호스트 시스템으로부터 데이터 및/또는 명령을 수신하고, 수신된 데이터를 기계학습 모델에 적용하여, 인공지능 연산을 수행할 수 있다. 또한, 뉴럴 코어 SoC(10)는 인공지능 연산에 대한 결과 데이터를 호스트 인터페이스(HIO)를 통해 호스트 시스템으로 전송할 수 있다. 일 실시예에 따르면, 뉴럴 코어 SoC(10)는 인공지능 연산을 수행 중에 오류가 발생하면, 오류 발생과 연관된 메시지를 호스트 인터페이스(HIO)를 통해 호스트 시스템으로 전송할 수 있다.
도 3은 도 1의 호스트 시스템(HS)을 세부적으로 설명하기 위한 블록도이다. 호스트 시스템(HS)은 메모리(310), 프로세서(320), 통신 모듈(330) 및 입출력 인터페이스(340)를 포함할 수 있다. 도 3에 도시된 바와 같이, 호스트 시스템(HS)은 통신 모듈(330)을 이용하여 네트워크를 통해 정보 및/또는 데이터를 통신할 수 있도록 구성될 수 있다.
메모리(310)는 비-일시적인 임의의 컴퓨터 판독 가능한 기록매체를 포함할 수 있다. 일 실시예에 따르면, 메모리(310)는 ROM(read only memory), 디스크 드라이브, SSD(solid state drive), 플래시 메모리(flash memory) 등과 같은 비소멸성 대용량 저장 장치(permanent mass storage device)를 포함할 수 있다. 다른 예로서, ROM, SSD, 플래시 메모리, 디스크 드라이브 등과 같은 비소멸성 대용량 저장 장치는 메모리와는 구분되는 별도의 영구 저장 장치로서 호스트 시스템(HS)에 포함될 수 있다. 또한, 메모리(310)에는 운영체제와 적어도 하나의 프로그램 코드(예를 들어, 호스트 시스템(HS)에 설치되어 구동되는 인공지능 연산 요청, 데이터 복구 등을 위한 코드)가 저장될 수 있다. 일 실시예에 따르면, 적어도 하나의 큐 및/또는 버퍼가 메모리(310) 또는 영구 저장 장치 중 적어도 하나에 포함될 수 있다. 도 3에서, 메모리(310)는 단일 메모리인 것으로 도시되었지만, 이는 설명의 편의를 위한 것일 뿐이며, 메모리(310)는 복수의 메모리를 포함할 수 있다. 본 개시의 일 실시예에 따른, 큐와 버퍼에 대해서는 도 4 내지 도 7를 참조하여 후술하기로 한다.
소프트웨어 구성요소들은 메모리(310)와는 별도의 컴퓨터에서 판독 가능한 기록매체로부터 로딩될 수 있다. 이러한 별도의 컴퓨터에서 판독 가능한 기록매체는 이러한 호스트 시스템(HS)에 직접 연결가능한 기록 매체를 포함할 수 있는데, 예를 들어, 플로피 드라이브, 디스크, 테이프, DVD/CD-ROM 드라이브, 메모리 카드 등의 컴퓨터에서 판독 가능한 기록매체를 포함할 수 있다. 다른 예로서, 소프트웨어 구성요소들은 컴퓨터에서 판독 가능한 기록매체가 아닌 통신 모듈(330)을 통해 메모리(310)에 로딩될 수도 있다. 예를 들어, 적어도 하나의 프로그램은 개발자들 또는 어플리케이션의 설치 파일을 배포하는 파일 배포 시스템이 통신 모듈(330)을 통해 제공하는 파일들에 의해 설치되는 컴퓨터 프로그램(예를 들어, 인공지능 연산 요청, 데이터 복구 등을 위한 프로그램 등)에 기반하여 메모리(310)에 로딩될 수 있다.
프로세서(320)는 기본적인 산술, 로직 및 입출력 연산을 수행함으로써, 컴퓨터 프로그램의 명령을 처리하도록 구성될 수 있다. 명령은 메모리(310) 또는 통신 모듈(330)에 의해 사용자 단말(미도시) 또는 다른 외부 시스템으로 제공될 수 있다. 예를 들어, 프로세서(320)는 통신 모듈(330)을 통해, 작업과 연관된 데이터를 사용자 단말로부터 수신할 수 있다.
통신 모듈(330)은 네트워크를 통해 사용자 단말(미도시)과 호스트 시스템(HS)이 서로 통신하기 위한 구성 또는 기능을 제공할 수 있으며, 호스트 시스템(HS)이 외부 시스템(일례로 별도의 클라우드 시스템 등)과 통신하기 위한 구성 또는 기능을 제공할 수 있다. 일례로, 호스트 시스템(HS)의 프로세서(320)의 제어에 따라 제공되는 제어 신호, 명령, 데이터 등이 통신 모듈(330)과 네트워크를 거쳐 사용자 단말 및/또는 외부 시스템의 통신 모듈을 통해 사용자 단말 및/또는 외부 시스템으로 전송될 수 있다.
또한, 호스트 시스템(HS)의 입출력 인터페이스(340)는 호스트 시스템(HS)과 연결되거나 호스트 시스템(HS)이 포함할 수 있는 입력 또는 출력을 위한 장치(미도시)와의 인터페이스를 위한 수단일 수 있다. 예를 들면, 입출력 인터페이스(340)는 PCI express 인터페이스, 이더넷(ethernet) 인터페이스 중 적어도 하나를 포함할 수 있다. 일 실시예에 따르면, 입출력 인터페이스(340)는 호스트 시스템(HS)과 뉴럴 코어 장치 간에 형성된 호스트 인터페이스(HIO)를 포함할 수 있다. 호스트 인터페이스(HIO)를 통해서 데이터, 명령, 신호, 메시지 등이 송수신될 수 있다. 호스트 시스템(HS)은 도 3의 구성요소들보다 더 많은 구성요소들을 포함할 수 있다.
호스트 시스템(HS)의 프로세서(320)는 복수의 사용자 단말 및/또는 복수의 외부 시스템으로부터 수신된 정보 및/또는 데이터를 관리, 처리 및/또는 저장하도록 구성될 수 있다. 또한, 프로세서(320)는 적어도 하나의 큐/버퍼를 관리하도록 구성될 수 있다. 또한, 프로세서(320)는 후술하는 커맨드 큐를 복구하도록 더 구성될 수 있다. 일 실시예에 따르면, 프로세서(320)는 복수의 작업 중에서 실행 대상이 되는 타깃 작업과 연관된 버퍼 디스크립터(buffer descriptor)를 커맨드 큐로부터 추출하고, 추출된 버퍼 디스크립터와 연관된 적어도 하나의 명령을 실행하여, 타깃 작업과 연관된 인공지능 연산을 실행시킬 수 있다. 프로세서(320)는 인공지능 연산을 실행시키는 중에 오류가 발생하면, 커맨드 큐를 초기화(reset)화하고, 적어도 하나의 작업과 연관된 추적 데이터(tracking data)에 기초하여, 복구 대상이 되는 적어도 하나의 버퍼 디스크립터를 결정할 수 있다. 또한, 프로세서(320)는 결정된 적어도 하나의 버퍼 디스크립터를 상기 커맨드 큐에 복구시킬 수 있다.
이하, 도 4 내지 도 8을 참조하여, 프로세서(320)가 복수의 큐와 버퍼를 관리하고, 연산 오류에 응답하여 커맨드 큐를 복원하는 방법에 대해서 설명하기로 한다. 후술하는 도 4 내지 도 8에 예시된 복수의 큐와 버퍼에 관리는 프로세서(320)에 의해서 수행될 수 있다. 가령, 도 4 내지 도 8에 예시된 복수의 큐와 버퍼의 관리는, 프로세서(320)에 의해서 지원되는 드라이버(driver)의 동작과 연관될 수 있다.
도 4는 본 개시의 일 실시예에 따른, 인공지능 연산을 수행시키기 위해 이용되는 복수의 큐와 버퍼를 예시하는 도면이다. 도 4에 예시된 바와 같이, 호스트 시스템에는 복수의 작업 큐(Job Queue_1, Job Queue_2), 적어도 하나의 커맨드 큐(Command Queue) 및 복수의 커맨드 버퍼(Command buffer)가 포함될 수 있다. 호스트 시스템에 포함된 적어도 하나의 프로세서에 의해서, 복수의 작업 큐(Job Queue_1, Job Queue_2), 커맨드 큐 및 복수의 커맨드 버퍼의 각각이 관리될 수 있다. 본 실시예에서의 복수의 버퍼의 각각은, 저장영역이 논리적으로 분리되거나, 물리적으로 분리된 것일 수 있다. 유사하게, 복수의 작업 큐의 각각은, 저장영역이 논리적으로 분리되거나 물리적으로 분리된 것일 수 있다.
작업 큐(Job Queue_1, Job Queue_2)에는 작업 데이터가 저장될 수 있다. 여기서, 작업 데이터는 인공지능 연산과 연관된 데이터로서, 사용자 단말로부터 수신된 데이터 및/또는 명령에 기초하여 생성될 수 있다. 또한, 작업 데이터는 적어도 하나의 명령을 포함할 수 있다. 가령, 호스트 시스템은 인공지능 연산 요청을 사용자 단말로부터 수신할 수 있고, 인공지능 연산 요청에 포함된 데이터 및/또는 명령에 기초하여 작업 데이터를 생성한 후, 사용자 단말과 연관된 작업 큐에 작업 데이터를 저장할 수 있다. 몇몇 실시예에서, 작업 데이터는 호스트 시스템에서 내부적으로 처리하기 위한 데이터일 수 있다. 예컨대, 작업 데이터는 사용자 단말로부터 수신과 인공지능 연산 요청과 연관된 데이터를 호스트 시스템의 저장 영역에 저장하기 위해 생성된 데이터일 수 있다.
작업 큐는 적어도 하나의 컨텍스트와 연관될 수 있다. 여기서, 컨텍스트는 프로그램 데이터의 집합으로서, 사용자별로 하나의 컨텍스트 식별자가 할당될 수 있다. 즉, 작업 큐는 사용자별로 하나씩 할당될 수 있으며, 더불어 작업 큐에는 컨텍스트 식별자가 할당될 수 있다. 몇몇 실시예에서는, 작업 큐에 가상의 포트 식별자가 할당될 수 있다. 즉, 작업 큐별로 가상의 포트 식별자가 할당되고, 고유의 포트 식별자를 가지는 특정 작업 큐에 컨텍스트 식별자가 할당될 수 있다.
작업 큐에 작업 데이터가 저장되면, 미리 결정된 시점에 작업 큐에 최우선순위에 해당하는 작업 데이터가 추출되고, 작업 데이터에 포함된 적어도 하나의 명령이 적어도 하나의 커맨드 버퍼에 저장될 수 있다.
커맨드 버퍼에 적어도 하나의 명령이 저장되면, 버퍼 디스크립터가 생성되어 커맨드 큐에 저장될 수 있다. 프로세서는 커맨드 버퍼에 저장된 적어도 하나의 명령의 주소와 크기를 포함하는 버퍼 디스크립터를 생성하고, 생성된 버퍼 디스크립터를 커맨드 큐에 저장할 수 있다. 본 실시예에서는, 버퍼의 주소를 포함하는 버퍼 디스크립터가 커맨드 큐에 저장된 것으로 예시하고 있으나, 본 개시는 이에 한정되지 않고, 버퍼가 아닌 다른 저장영역의 주소를 포함하는 디스크립터가 커맨드 버퍼에 저장될 수 있다. 다만, 설명의 편의를 위하여, 이하에서는 버퍼 디스크립터가 커맨드 큐에 저장되는 것으로 설명하기로 한다.
일 실시예에 따르면, 복수의 커맨드 버퍼의 각각에는 인공지능 연산과 연관된 명령이 저장될 수 있다. 예컨대, 뉴럴 프로세싱 장치로 데이터를 전송하기 위한 명령, 또는 결과 데이터를 획득하기 위한 명령 등이 복수의 커맨드 버퍼의 각각에 저장될 수 있다. 인공지능 연산과 연관된 명령이 실행되면, 기계학습 모델에 적용되는 데이터가 뉴럴 프로세싱 장치로 전송될 수 있다.
도 4에 예시된 버퍼와 큐를 예를 들어 설명하면, 제1 작업 데이터(job_1)에 포함된 복수의 명령(cmd_1, cmd_2, cmd_3)이 제1 커맨드 버퍼(Command Buffer_1)에 저장되고, 복수의 명령(cmd_1, cmd_2, cmd_3)과 연관된 제1 버퍼 디스크립터(BD_1)가 커맨드 큐에 저장될 수 있다. 도 4에서는 제1 작업 큐(Job Queue_1)는 제1 컨텍스트(context_1)와 연관된 것으로 예시되어 있다. 또한, 제2 작업 데이터(job_2)에 포함된 복수의 명령(cmd_4, cmd_5, cmd_6)이 제2 커맨드 버퍼(Command Buffer_2)에 저장되고, 복수의 명령(cmd_4, cmd_5, cmd_6)과 연관된 제2 버퍼 디스크립터(BD_2)가 커맨드 큐에 저장될 수 있다.
제2 컨텍스트(context_2)와 연관된 작업 데이터를 예를 들어 설명하면, 제3 작업 데이터(job_3)에 포함된 복수의 명령(cmd_7, cmd_8, cmd_9)이 제3 커맨드 버퍼(Command Buffer_3)에 저장되고, 복수의 명령(cmd_7, cmd_8, cmd_9)과 연관된 제3 버퍼 디스크립터(BD_3)가 커맨드 큐에 저장될 수 있다. 도 4에서 제2 작업 큐(Job Queue_2)가 제2 컨텍스트(context_2)와 연관된 것으로 예시되어 있다. 또한, 제4 작업 데이터(job_4)에 포함된 복수의 명령(cmd_10, cmd_11, cmd_12)이 제4 커맨드 버퍼(Command Buffer_4)에 저장되고, 복수의 명령(cmd_10, cmd_11, cmd_12)과 연관된 제4 버퍼 디스크립터(BD_4)가 커맨드 큐에 저장될 수 있다.
도 4에 예시된 바와 같이, 커맨드 큐에는 버퍼 디스크립터가 저장되고, 실제 명령은 커맨드 버퍼에 저장될 수 있다. 또한, 작업 큐에 저장되는 작업 데이터는 사용자 단말로부터 수신된 데이터에 기초하여 생성될 수 있다. 예를 들어, 제1 작업 큐(Job Queue_1)에 저장되는 작업 데이터는 제1 사용자 단말로부터 수신된 데이터에 기초하여 생성될 수 있고, 제2 작업 큐(Job Queue_2)에 저장되는 작업 데이터는 제2 사용자 단말로부터 수신된 데이터에 기초하여 생성될 수 있다.
이러한 호스트 시스템 환경에서, 프로세서는 명령 실행 주기가 도래하면, 커맨드 큐에 저장된 최우선 순위의 버퍼 디스크립터를 획득하고, 획득된 버퍼 디스크립터와 연관된 적어도 하나의 명령을 실행함으로써, 뉴럴 프로세싱 장치로 인공지능 연산을 위한 데이터 및/또는 명령을 전송할 수 있다. 이러한 경우, 뉴럴 프로세싱 장치는 수신된 데이터 및/또는 명령을 기계학습 모델에 적용하여, 인공지능 연산을 수행하고 연산 결과를 호스트 시스템으로 전송할 수 있다.
일 실시예에 따르면, 호스트 시스템에 포함된 프로세서는 인공지능 연산 작업과 연관된 추적 데이터를 관리할 수 있다. 추적 데이터에는 아직 실행되지 않은 명령과 연관된 적어도 하나의 버퍼 디스크립터 및 버퍼 디스크립터의 순서가 저장될 수 있다. 추가적으로 또는 대안적으로, 추적 데이터에는 버퍼 디스크립터와 연관된 적어도 하나의 커맨드 버퍼의 주소가 저장될 수 있다.
일 실시예에 따르면, 커맨드 큐에 버퍼 디스크립터가 저장되는 경우, 커맨드 큐에 저장된 버퍼 디스크립터가 추적 데이터에도 저장할 수 있다. 몇몇 실시예에 따르면, 커맨드 큐에 버퍼 디스크립터가 저장되는 경우, 버퍼 디스크립터와 연관된 적어도 하나의 커맨드 버퍼 주소가 추적 데이터에 저장될 수 있다. 추적 데이터에 저장된 버퍼 디스크립터 및/또는 커맨드 버퍼의 주소는 선입선출 구조로 저장될 수 있다. 즉, 추적 데이터에 저장된 버퍼 디스크립터 및/또는 커맨드 주소는 순번을 가질 수 있다. 일 실시예에 따르면, 뉴럴 프로세싱 장치로부터 인공지능 연산 결과가 수신되면, 이 연산 결과와 연관된 버퍼 디스크립터 또는 커맨드 버퍼의 주소가 추적 데이터에서 삭제될 수 있다.
한편, 뉴럴 프로세싱 장치는 호스트 시스템으로부터 수신한 데이터에 기초한 인공지능 연산에 실패할 수 있다. 이 경우, 뉴럴 프로세싱 장치는 오류 메시지를 호스트 시스템으로 전송할 수 있다.
도 5는 본 개시의 일 실시예에 따른, 제3 작업(job_3)과 연관된 인공지능 연산이 실패된 것을 예시하는 도면이다. 도 5를 참조하면, 제1 작업(job_1)과 제2 작업(job_2)이 정상적으로 수행되고, 제3 작업(job_3)이 수행되는 도중에 오류가 발생된 것으로 예시되어 있다. 즉, 제3 작업(job_3)이 개시되는 시점에, 제3 작업(job_3)과 연관된 제3 버퍼 디스크립터(BD_3)가 커맨드 큐로부터 추출되고, 추출된 제3 버퍼 디스크립터(BD_3)에 기초하여 커맨드 버퍼의 주소가 식별되고, 식별된 주소에 해당하는 제7 명령(cmd_7), 제8 명령(cmd_8) 및 제9 명령(cmd_9)이 실행됨으로써, 인공지능 연산과 연관된 데이터 및/또는 명령이 뉴럴 프로세싱 장치로 전송될 수 있다. 여기서, 제7 명령(cmd_7), 제8 명령(cmd_8) 또는 제9 명령(cmd_9) 중 적어도 하나는 기계학습 모델에 적용되는 입력 데이터와 연관될 수 있다.
뉴럴 프로세싱 장치는 호스트 시스템으로부터 수신한 데이터 및/또는 명령에 기초하여 인공지능 연산을 실행할 수 있고, 인공지능 연산이 실행되는 중에 오류가 발생될 수 있다. 여기서, 인공지능 연산은 그래픽과 연관된 연산일 수 있다. 가령, 인공지능 연산은 랜더링(rendering) 연산일 수 있다. 또한, 랜더링은 픽셀 연산 위주의 결과물일 수 있다. 예컨대, 기계학습 모델에서의 랜더링(즉, 랜더링과 연관된 인공지능 연산)은, 가중치 데이터(weight data) 또는 다층 퍼셉트론(multi layer perceptron) 중 적어도 하나에 연관된 연산 결과물일 수 있다. 그래픽과 연관된 작업(ghraphics job)이 수행될 때에, 하나의 커맨드 버퍼에 프로그램, 프로그램, constant data, 입력 데이터 등이 포함되더라도 오버헤드가 크게 발생되지 않을 수 있다.
한편, 기계학습 모델은 constant data 및 멀티 레이어(multi layer)에 따른 프로그램 사이즈가 방대하여, 각 작업마다 constant data와 멀티 레이어 등을 추출하는 경우, 인공지능 연산(예컨대, 추론)시 중복된 불필요한 시간 소모가 발생할 수 있다. 이러한 시간을 줄이면, 전체 뉴럴 프로세싱 시스템의 성능이 향상될 수 있다. 본 개시의 일 실시예에 따르면, 작업 큐가 컨텍스트별로 할당되고, 작업 큐에 저장된 작업과 연관된 명령이 커맨드 버퍼에 저장되고, 더불어 커맨드 큐에 버퍼 디스크립터가 저장될 수 있다. 이러한 시스템 환경에서 특정 작업을 실행중에 오류가 발생한 경우, 작업 큐에 저장된 작업 데이터 또는 커먼드 버퍼에 저장된 저장된 명령 중 적어도 하나가 이용되어, 커맨드 큐가 복구될 수 있다. 이러한 큐와 버퍼의 구성 및 복구 프로세스에 의해, 인공지능 연산과 연관된 작업이 빠르게 처리되고, 더불어 복구도 신속하게 완료될 수 있다.
도 5에서는 제3 버퍼 디스크립터(BD_3)와 연관된 명령, 즉 제7 명령(cmd_7), 제8 명령(cmd_8) 또는 제9 명령(cmd_9) 중 적어도 하나와 연관된 인공지능 연산이 실행되는 도중에, 오류가 발생한 것으로 예시되어 있다.
이렇게 오류가 발생된 경우, 호스트 시스템에 포함된 프로세서는 커맨드 큐를 초기화한 후 커맨드 큐를 복구할 수 있다. 여기서, 커맨드 큐를 초기화하는 것은, 커맨드 큐에 저장된 데이터를 삭제하는 것을 의미할 수 있다. 몇몇 실시예에서는, 커맨드 큐 이외에 다른 하드웨어 자원도 초기화할 수 있다. 가령, 작업 큐, 커맨드 버퍼 등과 같이, 복구를 위한 하드웨어 자원을 제외한 적어도 하나의 하드웨어 자원이 초기화될 수 있다.
일 실시예에 따르면, 호스트 시스템에 포함된 프로세서는 초기화되기 전의 커맨드 큐에 저장된 적어도 하나의 디스크립터를 추적 데이터로부터 획득하고, 획득된 적어도 하나의 디스크립터에 기초하여 초기화된 커맨드 큐를 복구시킬 수 있다. 몇몇 실시예에 따르면, 호스트 시스템에 포함된 프로세서는 추적 데이터에 기초하여 초기화되기 전의 커맨드 큐와 연관된 적어도 하나의 커맨드 버퍼 주소를 식별하고, 식별된 적어도 하나의 커맨드 버퍼 주소에 저장된 명령에 기초하여 초기화된 커맨드 큐를 복구시킬 수 있다. 이러한 경우, 호스트 시스템에 포함된 프로세서는 명령의 주소와 크기를 포함하는 디스크립터를 생성하여, 생성된 디스크립터를 커맨드 큐에 저장함으로써, 초기화된 커맨드 큐를 복구시킬 수 있다.
이하, 도 6 및 도 7을 참조하여, 커맨드 큐가 복구되는 다양한 실시예에 대해서 설명하기로 한다.
호스트 시스템에 포함된 프로세서는 커맨드 큐를 초기화한 후, 추적 데이터에 기초하여 버퍼 디스크립터를 복구하여 커맨드 큐에 저장할 수 있다.
도 6은 본 개시의 일 실시예에 따른, 커맨드 큐가 복구되는 일 예시를 나타내는 도면이다. 도 6을 참조하면, 호스트 시스템에 포함된 프로세서는 오류 발생에 응답하여 커맨드 큐를 초기화한 후에, 추적 데이터에 기초하여 복구 대상이 되는 적어도 하나의 버퍼 디스크립터를 결정할 수 있다. 예컨대, 오류 발생한 제3 버퍼 디스크립터(BD_3) 이후의 순번을 가지는 버퍼 디스크립터가 복구 대상이 되는 버퍼 디스크립터로서 결정될 수 있다. 다른 예로서, 오류와 연관된 제3 버퍼 디스크립터(BD_3)와 연관된 작업에 대한 오류 횟수가 카운팅되고, 카운팅된 오류 횟수가 임계치를 초과하면, 제3 버퍼 디스크립터(BD_3) 이후의 순번을 가지는 적어도 하나의 버퍼 디스크립터가 복구 대상으로 결정될 수 있다. 반면에, 카운팅된 오류 횟수가 임계치 이하이면, 제3 버퍼 디스크립터(BD_3) 및 제3 버퍼 디스크립터(BD_3) 이후의 순번을 가지는 적어도 하나의 버퍼 디스크립터가 복구 대상으로 결정될 수 있다. 도 6에서는 제4 버퍼 디스크립터(BD_4), 제5 버퍼 디스크립터(BD_5) 및 제6 버퍼 디스크립터(BD_6)가 커맨드 큐에 복구된 것으로 예시되어 있다.
한편, 제3 버퍼 디스크립터(BD_3)와 연관된 제3 작업(job_3)이 실행되는 중에 오류가 발생하고, 제3 작업(job_3)이 제1 컨텍스트(context_1)와 연관된 경우, 커맨드 큐가 초기화되고 복구되기 전까지 제1 컨텍스트(context_1)와 연관된 새로운 버퍼 디스크립터가 커맨드 큐에 저장되지 않도록 제어될 수 있다. 이에 따라, 오류가 발생된 제1 시점에서부터 커맨드 큐가 복구되는 제2 시점까지, 제1 컨텍스트(context_1)와 연관된 새로운 버퍼 디스크립터가 커맨드 큐에 저장되는 것이 차단될 수 있다.
이와 달리, 커맨드 큐가 초기화되기 전이라도, 오류가 발생한 제1 컨텍스트와 연관이 없는 제2 컨텍스트와 연관된 새로운 버퍼 디스크립터는 커맨드 큐에 저장되는 것이 허용될 수 있다. 즉, 커맨드 큐가 초기화되는 전까지, 오류와 관련성이 없는 제2 컨텍스트와 연관된 새로운 버퍼 디스크립터가 커맨드 큐에 저장될 수 있다. 도 6에 예시된 바와 같이, 오류와 관련이 없는 제2 컨텍스트와 연관되고, 새로운 버퍼 디스크립터인 제6 버퍼 디스크립터(BD_6)가 커맨드 큐에 저장될 수 있다.
도 7은 본 개시의 일 실시예에 따른, 커맨드 큐가 복구되는 다른 예시를 나타내는 도면이다. 도 7을 참조하면, 호스트 시스템에 포함된 프로세서는 오류 발생에 응답하여, 커맨드 큐를 초기화한 후에, 추적 데이터에 기초하여, 복구 대상이 되는 적어도 하나의 버퍼 디스크립터를 결정할 수 있다. 예컨대, 오류 발생한 제3 버퍼 디스크립터(BD_3) 및 제3 버퍼 디스크립터(BD_3)의 이후의 순번을 가지는 버퍼 디스크립터가 복구 대상이 되는 버퍼 디스크립터로서 결정될 수 있다. 도 6에서는 제3 버퍼 디스크립터(BD_3), 제4 버퍼 디스크립터(BD_4), 제5 버퍼 디스크립터(BD_5) 및 제6 버퍼 디스크립터(BD_6)가 커맨드 큐에 복구된 것으로 예시되어 있다. 도 5와 도 6을 비교하면, 도 6에서는 오류 발생한 제3 디스크립터(BD_3)도 복구된 것으로 예시되어 있다. 몇몇 실시예에 따르면, 제3 버퍼 디스크립터(BD_3)와 연관된 작업에 대한 오류 횟수가 카운팅되고, 카운팅된 오류 횟수가 임계치 이하이면, 제3 버퍼 디스크립터(BD_3)가 복구 대상으로 결정되고, 추가적으로 제3 버퍼 디스크립터(BD_3) 이후의 순번을 가지는 제4 버퍼 디스크립터(BD_4), 제5 버퍼 디스크립터(BD_5) 및 제6 버퍼 디스크립터(BD_6)가 복구 대상으로 결정될 수 있다.
도 8은 본 개시의 일 실시예에 따른, 커맨드 큐가 복구되어 인공지능 연산이 수행되는 예시를 나타내는 도면이다. 도 8에서, 맨 왼쪽 열에 기재된 'inference'는 인공지능 연산 작업을 의미할 수 있다. 또한, 'submit_context'는 사용자 단말로부터 인공지능 연산 요청을 수신하는 것과 관련될 수 있다.
도 8에 예시된 바와 같이, 'submit_context'가 발생된 이후에, 인공지능 연산(예컨대, 추론 연산)을 위한 적어도 하나의 작업이 생성되고, 해당 작업과 연관된 버퍼 디스크립터가 커맨드 버퍼에 저장될 수 있다. 도 8에서 버퍼 디스크립터(BD)와 동일한 행(line)에 배치된 명령(cmd)은, 버퍼 디스크립터와 연관된 명령일 수 있다.
도 8에서 예시된 바와 같이, context2와 연관된 'job0'이 수행되는 도중에 오류가 발생될 수 있다. 이러한 경우, 커맨드 큐가 초기화되고 복구되기 전까지 context2와 연관된 버퍼 디스크립터가 커맨드 큐에 저장되는 것이 차단될 수 있다. 이와 달리, 커맨드 큐가 초기화되기 전까지, context2 이외의 다른 컨텍스트와 연관된 버퍼 디스크립터가 커맨드 큐에 저장되도록 허용될 수 있다.
도 8에 예시된 바와 같이, context2에서 오류가 발생하였으나 아직 커맨드 큐가 초기화되기 전에, context0의 job7과 연관된 버퍼 디스크립터(BD)가 커맨드 큐에 저장될 수 있다. 그 후, 커맨드 큐가 초기화된 후에, context0의 job7과 연관된 버퍼 디스크립터가 커맨드 큐에 복구되고, context0의 job7과 연관된 명령이 실행되는 것으로 도 8에서 예시되어 있다. 도 8에서는 커맨드 큐가 초기화되는 것이 'reset device'로 표현되고, 복구된 버퍼 디스크립터들이 'recovery 구간'에 표현되어 있다. 즉, 도 8에서는 오류 발생한 conext2의 job0과 연관된 디스크립터 이후의 순번에 가지는 디스크립터가 커맨드 큐에 복구된 것으로 예시되어 있다.
도 9는 본 개시의 일 실시예에 따른, 인공지능 연산을 위한 데이터 복구 방법(900)을 설명하기 위한 흐름도이다. 도 9에 도시된 방법(900)은, 본 개시의 목적을 달성하기 위한 일 실시예일 뿐이며, 필요에 따라 일부 단계가 추가되거나 삭제될 수 있음은 물론이다. 또한, 도 9에 도시된 방법(900)은, 호스트 시스템에 포함된 적어도 하나의 프로세서에 의해서 수행될 수 있다. 설명의 편의를 위해서 도 3에 도시된 호스트 시스템에 포함된 프로세서에 의해서, 도 9에 도시된 각 단계가 수행되는 것으로 설명하기로 한다. 도 9에 따른 방법(900)은 디스크립터가 커맨드 큐에 저장되는 경우에 개시될 수 있다.
프로세서는 복수의 작업 중에서 실행 대상이 되는 타깃 작업(target job)과 연관된 디스크립터를 커맨드 큐로부터 추출할 수 있다(S910). 여기서, 타깃 작업은 현 주기에 실행되는 작업이고, 이 작업과 연관된 디스크립터는 커맨드 큐에 미리 저장될 수 있다.
그 후, 프로세서는 추출된 디스크립터와 연관된 적어도 하나의 명령을 실행하여, 타깃 작업과 연관된 인공지능 연산을 실행시킬 수 있다(S920). 일 실시예에 따르면, 실행된 적어도 하나의 명령은, 뉴럴 프로세싱 장치에서 수행되는 추론과 연관될 수 있다. 또한, 적어도 하나의 명령이 실행되는 것을 통해서, 인공지능 연산을 위한 데이터 및/또는 명령이 뉴럴 프로세싱 장치로 전송될 수 있다.
이어서, 프로세서는 인공지능 연산을 실행시키는 중에 오류가 발생하는지 여부를 판정할 수 있다(S930). 일 실시예에 따르면, 프로세서는 뉴럴 프로세싱 장치로부터 연산 결과가 수신되면, 인공지능 연산이 오류 없이 정상적으로 실행된 것으로 판정할 수 있다. 반면에, 프로세서는 뉴럴 프로세싱 장치로부터 오류 메시지가 수신되면, 인공지능 연산을 실행시키는 중에 오류가 발생한 것으로 판정할 수 있다.
프로세서는 인공지능 연산을 실행시키는 중에 오류가 발생된 것으로 판정된 경우, 커맨드 큐를 초기화할 수 있다(S940). 일 실시예에 따르면, 프로세서는 오류가 발생한 작업과 연관된 컨텍스트를 식별하고, 커맨드 큐를 초기화하기 이전에 식별된 컨텍스트와 연관된 추가적인 디스크립터가 커맨드 큐에 저장되지 않도록, 커맨드 큐를 제어할 수 있다. 또한, 프로세서는 오류가 발생한 작업과 연관된 컨텍스트를 식별하고, 식별된 컨텍스트와 연관되지 않은 추가 작업이 발생하면, 커맨드 큐를 초기화하기 전에 추가 작업과 연관된 디스크립터를 커맨드 큐를 저장할 수 있다. 여기서, 컨텍스트는 특정 사용자 또는 특정 포트 중 적어도 하나와 연관될 수 있다.
그 후, 프로세서는 적어도 하나의 작업과 연관된 추적 데이터에 기초하여, 복구 대상이 되는 적어도 하나의 디스크립터를 결정할 수 있다(S950). 예컨대, 프로세서는 오류와 연관된 디스크립터를 식별하고, 식별된 디스크립터 이후의 순번을 가지는 적어도 하나의 디스크립터를 복구 대상으로 결정할 수 있다. 다른 예로서, 프로세서는 오류와 연관된 디스크립터를 식별하고, 식별된 디스크립터 및 식별된 디스크립터 이후의 순번을 가지는 적어도 하나의 디스크립터를 복구 대상으로 결정할 수 있다. 또 다른 예로서, 프로세서는 오류와 연관된 디스크립터를 식별하고, 식별된 디스크립터와 연관된 인공지능 연산의 오류 횟수를 식별하고, 식별된 오류 횟수가 임계치를 초과하면 식별된 디스크립터 이후의 순번을 가지는 적어도 하나의 디스크립터를 복구 대상으로 결정할 수 있다.
이어서, 프로세서는 결정된 적어도 하나의 디스크립터를 커맨드 큐에 복구시킬 수 있다(S960). 예컨대, 프로세서는 초기화되기 전의 커맨드 큐에 저장된 적어도 하나의 디스크립터를 추적 데이터로부터 획득하고, 획득된 적어도 하나의 디스크립터에 기초하여 커맨드 큐를 복구시킬 수 있다.
다른 예로서, 프로세서는 추적 데이터에 기초하여 초기화되기 전의 커맨드 큐와 연관된 적어도 하나의 커맨드 버퍼를 식별하고, 식별된 적어도 하나의 커맨드 버퍼에 저장된 명령에 기초하여 커맨드 큐를 복구시킬 수 있다.
일 실시예에 따르면, 작업 큐에 특정 컨텍스트와 연관된 적어도 하나의 작업 데이터가 저장되고, 커맨드 큐에 저장된 디스크립터는 작업 큐에 저장된 특정 작업 데이터와 연관되고, 커맨드 큐에 저장된 특정 디스크립터와 연관된 명령이 커맨드 버퍼에 저장될 수 있다.
초기화된 커맨드 큐가 복구되거나, 디스크립터와 연관된 인공지능 연산이 정상적으로 수행된 경우, 프로세서는 아직 실행되지 않은 작업과 연관된 디스크립터가 존재하는지 여부를 판정할 수 있다(S970). 즉, 프로세서는 실행되지 않은 작업과 연관된 디스크립터가 커맨드 큐에 저장되어 있는지 여부를 판정할 수 있다.
프로세서는 실행되지 않은 작업과 연관된 디스크립터가 존재한 것으로 판정되면, 다음 순번의 디스크립터와 연관된 작업을 타깃 작업으로 결정할 수 있다(S980). 이어서, 프로세서는 결정된 타깃 작업과 연관된 디스크립터(즉, 최우선순위를 가지는 디스크립터)를 커맨드 큐로부터 추출하기 위한 단계 S910를 다시 진행할 수 있다.
한편, 프로세서는 실행되지 않은 작업과 연관된 디스크립터가 존재하지 않은 것으로 판정되면, 대기중 모드로 전환되어 도 9에 따른 방법을 종료할 수 있다. 만약, 새로운 디스크립터가 커맨드 큐에 저장되는 경우, 프로세서는 도 9에 따른 방법을 다시 시작할 수 있다.
상술한 흐름도 및 설명은 일 예시일 뿐이며, 일부 실시예에서는 다르게 구현될 수 있다. 예를 들어, 일부 실시예에서는 각 단계의 순서가 바뀌거나, 일부 단계가 반복 수행되거나, 일부 단계가 생략되거나, 일부 단계가 추가될 수 있다.
상술한 방법은 컴퓨터에서 실행하기 위해 컴퓨터 판독 가능한 기록 매체에 저장된 컴퓨터 프로그램으로 제공될 수 있다. 매체는 컴퓨터로 실행 가능한 프로그램을 계속 저장하거나, 실행 또는 다운로드를 위해 임시 저장하는 것일수도 있다. 또한, 매체는 단일 또는 수개 하드웨어가 결합된 형태의 다양한 기록 수단 또는 저장수단일 수 있는데, 어떤 컴퓨터 시스템에 직접 접속되는 매체에 한정되지 않고, 네트워크 상에 분산 존재하는 것일 수도 있다. 매체의 예시로는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD 와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto optical medium), 및 ROM, RAM, 플래시 메모리 등을 포함하여 프로그램 명령어가 저장되도록 구성된 것이 있을 수 있다. 또한, 다른 매체의 예시로, 애플리케이션을 유통하는 앱 스토어나 기타 다양한 소프트웨어를 공급 내지 유통하는 사이트, 서버 등에서 관리하는 기록매체 내지 저장매체도 들 수 있다.
본 개시의 방법, 동작 또는 기법들은 다양한 수단에 의해 구현될 수도 있다. 예를 들어, 이러한 기법들은 하드웨어, 펌웨어, 소프트웨어, 또는 이들의 조합으로 구현될 수도 있다. 본원의 개시와 연계하여 설명된 다양한 예시적인 논리적 블록들, 모듈들, 회로들, 및 알고리즘 단계들은 전자 하드웨어, 컴퓨터 소프트웨어, 또는 양자의 조합들로 구현될 수도 있음을 통상의 기술자들은 이해할 것이다. 하드웨어 및 소프트웨어의 이러한 상호 대체를 명확하게 설명하기 위해, 다양한 예시적인 구성요소들, 블록들, 모듈들, 회로들, 및 단계들이 그들의 기능적 관점에서 일반적으로 위에서 설명되었다. 그러한 기능이 하드웨어로서 구현되는지 또는 소프트웨어로서 구현되는 지의 여부는, 특정 애플리케이션 및 전체 시스템에 부과되는 설계 요구사항들에 따라 달라진다. 통상의 기술자들은 각각의 특정 애플리케이션을 위해 다양한 방식들로 설명된 기능을 구현할 수도 있으나, 그러한 구현들은 본 개시의 범위로부터 벗어나게 하는 것으로 해석되어서는 안 된다.
하드웨어 구현에서, 기법들을 수행하는 데 이용되는 프로세싱 유닛들은, 하나 이상의 ASIC들, DSP들, 디지털 신호 프로세싱 디바이스들(digital signal processing devices; DSPD들), 프로그램가능 논리 디바이스들(programmable logic devices; PLD들), 필드 프로그램가능 게이트 어레이들(field programmable gate arrays; FPGA들), 프로세서들, 제어기들, 마이크로제어기들, 마이크로프로세서들, 전자 디바이스들, 본 개시에 설명된 기능들을 수행하도록 설계된 다른 전자 유닛들, 컴퓨터, 또는 이들의 조합 내에서 구현될 수도 있다.
따라서, 본 개시와 연계하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 및 회로들은 범용 프로세서, DSP, ASIC, FPGA나 다른 프로그램 가능 논리 디바이스, 이산 게이트나 트랜지스터 로직, 이산 하드웨어 컴포넌트들, 또는 본원에 설명된 기능들을 수행하도록 설계된 것들의 임의의 조합으로 구현되거나 수행될 수도 있다. 범용 프로세서는 마이크로프로세서일 수도 있지만, 대안으로, 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신일 수도 있다. 프로세서는 또한, 컴퓨팅 디바이스들의 조합, 예를 들면, DSP와 마이크로프로세서, 복수의 마이크로프로세서들, DSP 코어와 연계한 하나 이상의 마이크로프로세서들, 또는 임의의 다른 구성의 조합으로서 구현될 수도 있다.
펌웨어 및/또는 소프트웨어 구현에 있어서, 기법들은 랜덤 액세스 메모리(random access memory; RAM), 판독 전용 메모리(read-only memory; ROM), 비휘발성 RAM(non-volatile random access memory; NVRAM), PROM(programmable read-only memory), EPROM(erasable programmable read-only memory), EEPROM(electrically erasable PROM), 플래시 메모리, 컴팩트 디스크(compact disc; CD), 자기 또는 광학 데이터 스토리지 디바이스 등과 같은 컴퓨터 판독가능 매체 상에 저장된 명령들로서 구현될 수도 있다. 명령들은 하나 이상의 프로세서들에 의해 실행 가능할 수도 있고, 프로세서(들)로 하여금 본 개시에 설명된 기능의 특정 양태들을 수행하게 할 수도 있다.
소프트웨어로 구현되는 경우, 상술된 기법들은 하나 이상의 명령들 또는 코드로서 컴퓨터 판독 가능한 매체 상에 저장되거나 또는 컴퓨터 판독 가능한 매체를 통해 전송될 수도 있다. 컴퓨터 판독가능 매체들은 한 장소에서 다른 장소로 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하여 컴퓨터 저장 매체들 및 통신 매체들 양자를 포함한다. 저장 매체들은 컴퓨터에 의해 액세스될 수 있는 임의의 이용 가능한 매체들일 수도 있다. 비제한적인 예로서, 이러한 컴퓨터 판독가능 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 스토리지, 자기 디스크 스토리지 또는 다른 자기 스토리지 디바이스들, 또는 소망의 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 이송 또는 저장하기 위해 사용될 수 있으며 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 접속이 컴퓨터 판독가능 매체로 적절히 칭해진다.
예를 들어, 소프트웨어가 동축 케이블, 광섬유 케이블, 연선, 디지털 가입자 회선 (DSL), 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들을 사용하여 웹사이트, 서버, 또는 다른 원격 소스로부터 전송되면, 동축 케이블, 광섬유 케이블, 연선, 디지털 가입자 회선, 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들은 매체의 정의 내에 포함된다. 본원에서 사용된 디스크(disk) 와 디스크(disc)는, CD, 레이저 디스크, 광 디스크, DVD(digital versatile disc), 플로피디스크, 및 블루레이 디스크를 포함하며, 여기서 디스크들(disks)은 보통 자기적으로 데이터를 재생하고, 반면 디스크들(discs)은 레이저를 이용하여 광학적으로 데이터를 재생한다. 위의 조합들도 컴퓨터 판독가능 매체들의 범위 내에 포함되어야 한다.
소프트웨어 모듈은, RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터들, 하드 디스크, 이동식 디스크, CD-ROM, 또는 공지된 임의의 다른 형태의 저장 매체 내에 상주할 수도 있다. 예시적인 저장 매체는, 프로세서가 저장 매체로부터 정보를 판독하거나 저장 매체에 정보를 기록할 수 있도록, 프로세서에 연결될 수 있다. 대안으로, 저장 매체는 프로세서에 통합될 수도 있다. 프로세서와 저장 매체는 ASIC 내에 존재할 수도 있다. ASIC은 유저 단말 내에 존재할 수도 있다. 대안으로, 프로세서와 저장 매체는 유저 단말에서 개별 구성요소들로서 존재할 수도 있다.
이상 설명된 실시예들이 하나 이상의 독립형 컴퓨터 시스템에서 현재 개시된 주제의 양태들을 활용하는 것으로 기술되었으나, 본 개시는 이에 한정되지 않고, 네트워크나 분산 컴퓨팅 환경과 같은 임의의 컴퓨팅 환경과 연계하여 구현될 수도 있다. 또 나아가, 본 개시에서 주제의 양상들은 복수의 프로세싱 칩들이나 장치들에서 구현될 수도 있고, 스토리지는 복수의 장치들에 걸쳐 유사하게 영향을 받게 될 수도 있다. 이러한 장치들은 PC들, 네트워크 서버들, 및 휴대용 장치들을 포함할 수도 있다.
본 명세서에서는 본 개시가 일부 실시예들과 관련하여 설명되었지만, 본 개시의 발명이 속하는 기술분야의 통상의 기술자가 이해할 수 있는 본 개시의 범위를 벗어나지 않는 범위에서 다양한 변형 및 변경이 이루어질 수 있다. 또한, 그러한 변형 및 변경은 본 명세서에 첨부된 특허청구의 범위 내에 속하는 것으로 생각되어야 한다.
1 : 프로세싱 장치
10 : 코어 SoC
30 : 온 칩 메모리

Claims (20)

  1. 적어도 하나의 프로세서에 의해서 수행되는, 인공지능 연산을 위한 데이터를 복구하는 방법에 있어서,
    복수의 작업 중에서 실행 대상이 되는 타깃 작업과 연관된 디스크립터(descriptor)를 커맨드 큐로부터 추출하는 단계;
    상기 추출된 디스크립터와 연관된 적어도 하나의 명령을 실행하여, 상기 타깃 작업과 연관된 인공지능 연산을 실행시키는 단계;
    상기 인공지능 연산을 실행시키는 중에 오류가 발생하면, 상기 커맨드 큐를 초기화(reset)하는 단계;
    적어도 하나의 작업과 연관된 추적 데이터(tracking data)에 기초하여, 복구 대상이 되는 적어도 하나의 디스크립터를 결정하는 단계; 및
    상기 결정된 적어도 하나의 디스크립터를 상기 초기화된 커맨드 큐에 복구시키는 단계
    를 포함하는, 데이터 복구 방법.
  2. 제1항에 있어서,
    상기 복구 대상이 되는 적어도 하나의 디스크립터를 결정하는 단계는,
    상기 오류와 연관된 디스크립터를 식별하는 단계; 및
    상기 식별된 디스크립터 이후의 순번을 가지는 적어도 하나의 디스크립터를 복구 대상으로 결정하는 단계
    를 포함하는, 데이터 복구 방법.
  3. 제1항에 있어서,
    상기 복구 대상이 되는 적어도 하나의 디스크립터를 결정하는 단계는,
    상기 오류와 연관된 디스크립터를 식별하는 단계; 및
    상기 식별된 디스크립터 및 상기 식별된 디스크립터 이후의 순번을 가지는 적어도 하나의 디스크립터를 복구 대상으로 결정하는 단계
    를 포함하는, 데이터 복구 방법.
  4. 제1항에 있어서,
    상기 복구 대상이 되는 적어도 하나의 디스크립터를 결정하는 단계는,
    상기 오류와 연관된 디스크립터를 식별하는 단계;
    상기 식별된 디스크립터와 연관된 인공지능 연산의 오류 횟수를 식별하는 단계; 및
    상기 식별된 오류 횟수가 임계치를 초과하면, 상기 식별된 디스크립터 이후의 순번을 가지는 적어도 하나의 디스크립터를 복구 대상으로 결정하는 단계
    를 포함하는, 데이터 복구 방법.
  5. 제1항에 있어서,
    상기 결정된 적어도 하나의 디스크립터를 상기 초기화된 커맨드 큐에 복구시키는 단계는,
    초기화되기 전의 상기 커맨드 큐에 저장된 적어도 하나의 디스크립터를 상기 추적 데이터로부터 획득하는 단계; 및
    상기 획득된 적어도 하나의 디스크립터에 기초하여, 상기 커맨드 큐를 복구시키는 단계
    를 포함하는, 데이터 복구 방법.
  6. 제1항에 있어서,
    상기 결정된 적어도 하나의 디스크립터를 상기 초기화된 커맨드 큐에 복구시키는 단계는,
    상기 추적 데이터에 기초하여, 초기화되기 전의 커맨드 큐와 연관된 적어도 하나의 커맨드 버퍼 주소를 식별하는 단계; 및
    상기 식별된 적어도 하나의 커맨드 버퍼 주소에 저장된 명령에 기초하여, 상기 커맨드 큐를 복구시키는 단계
    를 포함하는, 데이터 복구 방법.
  7. 제1항에 있어서,
    상기 커맨드 큐를 초기화하는 단계 이전에,
    상기 오류가 발생한 작업과 연관된 컨텍스트를 식별하는 단계; 및
    상기 식별된 컨텍스트와 연관된 추가적인 디스크립터가 상기 커맨드 큐에 저장되지 않도록, 상기 커맨드 큐를 제어하는 단계
    를 더 포함하는, 데이터 복구 방법.
  8. 제7항에 있어서,
    상기 컨텍스트는 특정 사용자 또는 특정 포트 중 적어도 하나와 연관된, 데이터 복구 방법.
  9. 제1항에 있어서,
    상기 커맨드 큐를 초기화하는 단계 이전에,
    상기 오류가 발생한 작업과 연관된 컨텍스트를 식별하는 단계; 및
    상기 식별된 컨텍스트와 연관되지 않은 추가 작업이 발생하면, 상기 추가 작업과 연관된 디스크립터를 상기 커맨드 큐를 저장하는 단계
    를 더 포함하는, 데이터 복구 방법.
  10. 제1항에 있어서,
    작업 큐에 특정 컨텍스트와 연관된 적어도 하나의 작업 데이터가 저장되고,
    상기 커맨드 큐에 저장된 디스크립터는 상기 작업 큐에 저장된 특정 작업 데이터와 연관되고,
    상기 커맨드 큐에 저장된 특정 디스크립터와 연관된 명령이 커맨드 버퍼에 저장되는, 데이터 복구 방법.
  11. 제1항에 있어서,
    상기 실행된 적어도 하나의 명령은, 뉴럴 프로세싱 장치에서 수행되는 추론과 연관된 것인, 데이터 복구 방법.
  12. 제1항 내지 제11항 중 어느 한 항에 따른 방법을 컴퓨터에서 실행하기 위해 컴퓨터 판독 가능한 기록 매체에 저장된 컴퓨터 프로그램.
  13. 컴퓨팅 시스템으로서,
    적어도 하나의 디스크립터가 저장된 커맨드 큐; 및
    상기 커맨드 큐를 관리하도록 구성된 적어도 하나의 프로세서
    를 포함하고,
    상기 적어도 하나의 프로세서는,
    복수의 작업 중에서 실행 대상이 되는 타깃 작업과 연관된 디스크립터를 상기 커맨드 큐로부터 추출하고,
    상기 추출된 디스크립터와 연관된 적어도 하나의 명령을 실행하여, 상기 타깃 작업과 연관된 인공지능 연산을 실행시키고,
    상기 인공지능 연산을 실행시키는 중에 오류가 발생하면, 상기 커맨드 큐를 초기화하고,
    적어도 하나의 작업과 연관된 추적 데이터에 기초하여, 복구 대상이 되는 적어도 하나의 디스크립터를 결정하고,
    상기 결정된 적어도 하나의 디스크립터를 상기 초기화된 커맨드 큐에 복구시키도록 더 구성된, 컴퓨팅 시스템.
  14. 제13항에 있어서,
    상기 복구 대상이 되는 적어도 하나의 디스크립터를 결정하는 것은,
    상기 오류와 연관된 디스크립터를 식별하고,
    상기 식별된 디스크립터 이후의 순번을 가지는 적어도 하나의 디스크립터를 복구 대상으로 결정하는 것을 포함하는, 컴퓨팅 시스템.
  15. 제13항에 있어서,
    상기 복구 대상이 되는 적어도 하나의 디스크립터를 결정하는 것은,
    상기 오류와 연관된 디스크립터를 식별하고,
    상기 식별된 디스크립터 및 상기 식별된 디스크립터 이후의 순번을 가지는 적어도 하나의 디스크립터를 복구 대상으로 결정하는 것을 포함하는, 컴퓨팅 시스템.
  16. 제13항에 있어서,
    상기 복구 대상이 되는 적어도 하나의 디스크립터를 결정하는 것은,
    상기 오류와 연관된 디스크립터를 식별하고,
    상기 식별된 디스크립터와 연관된 인공지능 연산의 오류 횟수를 식별하고,
    상기 식별된 오류 횟수가 임계치를 초과하면, 상기 식별된 디스크립터 이후의 순번을 가지는 적어도 하나의 디스크립터를 복구 대상으로 결정하는 것을 포함하는, 컴퓨팅 시스템.
  17. 제13항에 있어서,
    상기 결정된 적어도 하나의 디스크립터를 상기 초기화된 커맨드 큐에 복구시키는 것은,
    초기화되기 전의 상기 커맨드 큐에 저장된 적어도 하나의 디스크립터를 상기 추적 데이터로부터 획득하고,
    상기 획득된 적어도 하나의 디스크립터에 기초하여, 상기 커맨드 큐를 복구시키는 것을 포함하는, 컴퓨팅 시스템.
  18. 제13항에 있어서,
    상기 결정된 적어도 하나의 디스크립터를 상기 초기화된 커맨드 큐에 복구시키는 것은,
    상기 추적 데이터에 기초하여, 초기화되기 전의 커맨드 큐와 연관된 적어도 하나의 커맨드 버퍼 주소를 식별하고,
    상기 식별된 적어도 하나의 커맨드 버퍼 주소에 저장된 명령에 기초하여, 상기 커맨드 큐를 복구시키는 것을 포함하는, 컴퓨팅 시스템.
  19. 제13항에 있어서,
    상기 프로세서는,
    상기 커맨드 큐를 초기화하기 이전에, 상기 오류가 발생한 작업과 연관된 컨텍스트를 식별하고,
    상기 식별된 컨텍스트와 연관된 추가적인 디스크립터가 상기 커맨드 큐에 저장되지 않도록, 상기 커맨드 큐를 제어하도록 더 구성된, 컴퓨팅 시스템.
  20. 제13항에 있어서,
    상기 프로세서는,
    상기 커맨드 큐를 초기화하기 이전에, 상기 오류가 발생한 작업과 연관된 컨텍스트를 식별하고, 상기 식별된 컨텍스트와 연관되지 않은 추가 작업이 발생하면, 상기 추가 작업과 연관된 디스크립터를 상기 커맨드 큐를 저장하도록 더 구성된, 컴퓨팅 시스템.
KR1020230105463A 2023-08-11 2023-08-11 인공지능 연산과 연관된 데이터 복구 방법 및 시스템 KR102640910B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020230105463A KR102640910B1 (ko) 2023-08-11 2023-08-11 인공지능 연산과 연관된 데이터 복구 방법 및 시스템
US18/638,482 US12111732B1 (en) 2023-08-11 2024-04-17 Method and system for recovering data associated with artificial intelligence calculation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020230105463A KR102640910B1 (ko) 2023-08-11 2023-08-11 인공지능 연산과 연관된 데이터 복구 방법 및 시스템

Publications (1)

Publication Number Publication Date
KR102640910B1 true KR102640910B1 (ko) 2024-02-23

Family

ID=90041672

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230105463A KR102640910B1 (ko) 2023-08-11 2023-08-11 인공지능 연산과 연관된 데이터 복구 방법 및 시스템

Country Status (2)

Country Link
US (1) US12111732B1 (ko)
KR (1) KR102640910B1 (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180062062A (ko) * 2016-11-30 2018-06-08 에스케이하이닉스 주식회사 메모리 시스템 및 이의 동작 방법
KR20190104784A (ko) * 2018-03-02 2019-09-11 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
KR20200137244A (ko) * 2019-05-29 2020-12-09 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
KR20210002741A (ko) * 2019-04-04 2021-01-08 캠브리콘 테크놀로지스 코퍼레이션 리미티드 데이터 처리방법과 장치 및 관련 제품
KR20210080009A (ko) * 2019-12-20 2021-06-30 삼성전자주식회사 가속기, 가속기의 동작 방법 및 가속기를 포함한 디바이스

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7464293B2 (en) * 2006-03-10 2008-12-09 Yahoo! Inc. System and method for automated recovery after an error in a batch processing system caused by malformatted or unsupported data
US20070214457A1 (en) * 2006-03-10 2007-09-13 Prabhakar Goyal System and method for automated recovery of data in a batch processing system
US9116842B2 (en) * 2013-03-14 2015-08-25 International Business Machines Corporation Avoiding restart on error in data integration
US10282103B1 (en) * 2015-11-09 2019-05-07 Seagate Technology Llc Method and apparatus to delete a command queue
US10540219B2 (en) * 2017-09-13 2020-01-21 Toshiba Memory Corporation Reset and error handling in application specific integrated circuits
KR102236298B1 (ko) 2018-05-18 2021-04-05 박병훈 빅데이터 기반의 인공지능 통합 플랫폼 시스템
US20220035762A1 (en) 2018-10-18 2022-02-03 Shanghai Cambricon Information Technology Co., Ltd. Network-on-chip data processing method and device
CN111079908B (zh) 2018-10-18 2024-02-13 上海寒武纪信息科技有限公司 片上网络数据处理方法、存储介质、计算机设备和装置
KR102516412B1 (ko) 2022-01-13 2023-03-31 성균관대학교산학협력단 기계학습 추론을 위한 gpu 클럭 조절 방법 및 장치

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180062062A (ko) * 2016-11-30 2018-06-08 에스케이하이닉스 주식회사 메모리 시스템 및 이의 동작 방법
KR20190104784A (ko) * 2018-03-02 2019-09-11 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
KR20210002741A (ko) * 2019-04-04 2021-01-08 캠브리콘 테크놀로지스 코퍼레이션 리미티드 데이터 처리방법과 장치 및 관련 제품
KR20200137244A (ko) * 2019-05-29 2020-12-09 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
KR20210080009A (ko) * 2019-12-20 2021-06-30 삼성전자주식회사 가속기, 가속기의 동작 방법 및 가속기를 포함한 디바이스

Also Published As

Publication number Publication date
US12111732B1 (en) 2024-10-08

Similar Documents

Publication Publication Date Title
TWI828824B (zh) 具有啟動器模式的固態硬碟
US11960749B2 (en) Data migration method, host, and solid state disk
US9116852B2 (en) Processing a copy command directed to a first storage architecture for data that is stored in a second storage architecture
JP6341918B2 (ja) ストレージを含むデータをコピーするためのコンピュータ・プログラム、システム、および方法
US11226870B2 (en) Systems and methods for marking application-consistent points-in-time
KR20190073619A (ko) 원격으로 액세스되는 데이터의 효율적인 라이브-이송
US10552340B2 (en) Input/output direct memory access during live memory relocation
KR20170121046A (ko) NVMe 인터페이스를 사용하는 장치에 커널 모드 액세스 및 사용자 모드 액세스를 동시에 제공하는 시스템 및 방법
US10585822B2 (en) Operation method of host system including storage device and operation method of storage device controller
US10761744B2 (en) Synchronously performing commit records operations
US20170177225A1 (en) Mid-level controllers for performing flash management on solid state drives
US11748241B2 (en) Method and apparatus for generating simulated test IO operations
US9886387B2 (en) Method and system for performing on-demand data write through based on virtual machine types
KR102315102B1 (ko) 가상 머신을 부팅하기 위한 방법, 장치, 기기 및 매체
US11314659B2 (en) Using real segments and alternate segments in non-volatile storage
KR20220057355A (ko) 호스트 및 스토리지 시스템을 포함하는 컴퓨팅 시스템 및 컴퓨팅 시스템의 동작 방법
CN105808391A (zh) 一种热替换cpu节点的方法及装置
KR102640910B1 (ko) 인공지능 연산과 연관된 데이터 복구 방법 및 시스템
US20150278299A1 (en) External merge sort method and device, and distributed processing device for external merge sort
WO2017078707A1 (en) Method and apparatus for recovering in-memory data processing system
WO2024021480A1 (zh) 一种虚拟机动态迁移的方法、装置及电子设备
JP7522775B2 (ja) 不揮発性記憶区画識別子
CN114328024A (zh) PCIe功能层级复位的实现方法、装置、计算机设备及存储介质
US20160004444A1 (en) Method and apparatus for applying storage functionality to each subsidiary volume
US20240320059A1 (en) Method and system for processing task in parallel

Legal Events

Date Code Title Description
A107 Divisional application of patent
GRNT Written decision to grant