KR102514114B1 - 딥러닝 모델 기반의 서비스 제공을 위한 원격 서버 가상화 운용 방법, 시스템 및 컴퓨터 프로그램 - Google Patents

딥러닝 모델 기반의 서비스 제공을 위한 원격 서버 가상화 운용 방법, 시스템 및 컴퓨터 프로그램 Download PDF

Info

Publication number
KR102514114B1
KR102514114B1 KR1020210178515A KR20210178515A KR102514114B1 KR 102514114 B1 KR102514114 B1 KR 102514114B1 KR 1020210178515 A KR1020210178515 A KR 1020210178515A KR 20210178515 A KR20210178515 A KR 20210178515A KR 102514114 B1 KR102514114 B1 KR 102514114B1
Authority
KR
South Korea
Prior art keywords
inference
deep learning
server
api
model
Prior art date
Application number
KR1020210178515A
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 KR1020210178515A priority Critical patent/KR102514114B1/ko
Application granted granted Critical
Publication of KR102514114B1 publication Critical patent/KR102514114B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명은 원격 서버의 가상화를 통한 딥러닝 모델 기반의 서비스 제공 방법에 관한 것이다. 본 발명의 일 실시 예에 따른 딥러닝 모델 기반의 서비스 제공을 위한 원격 서버 가상화 운용 방법은 가상화 서버를 통해 모델 서버의 딥러닝 모델을 이용한 작업의 구동을 위한 구동 API를 호출하는 단계; 상기 모델 서버의 실행 준비 상태를 체크하고 상기 체크 결과를 리턴받는 단계; 상기 실행 준비된 모델 서버에 입력된 입력 데이터를 전달하고, 상기 입력 데이터로부터 추론 결과를 생성하기 위한 추론 API를 호출하는 단계; 및 상기 추론 API로 호출된 딥러닝 모델의 추론 결과를 출력하는 단계를 포함하고, 상기 호출된 딥러닝 모델의 작업이 완료되면 상기 딥러닝 모델이 이용한 자원의 점유가 해제되는 것이 바람직하다. 본 발명에 따르면, 제한된 컴퓨팅 자원 내에서 다양한 딥러닝 프레임워크의 모델을 제공할 수 있다.

Description

딥러닝 모델 기반의 서비스 제공을 위한 원격 서버 가상화 운용 방법, 시스템 및 컴퓨터 프로그램{Method for managing virtual remote server for providing deep learning based service, system and computer program for the same method}
본 발명은 원격 서버의 가상화를 통한 딥러닝 모델 기반의 서비스 제공 방법에 관한 것이다.
최근 딥러닝의 성능이 향상됨에 따라 다양한 분야에서 딥러닝이 이용되고 있다. 특히, 이미지 내 객체의 검출, 자연어 처리 등 다양한 분야에 딥러닝이 많이 이용되고 있다.
일반적으로 딥러닝 모델은 많은 연산량을 요구하여 CPU에 비하여 상대적으로 저전력 및 고성능의 구현이 가능한 GPU(Graphics Processing Unit)를 주 계산 자원으로 동작하게 된다.
따라서, 이러한 고성능의 GPU를 딥러닝 모델의 연산에 이용하기 위해서는 자원 이용에 보다 효율적인 방법이 필요하다.
일 예로, 딥러닝 모델을 통해 연산을 수행하는 서버와, 서비스를 요청하는 클라이언트를 구분하여 서버는 클라이언트로부터 전달된 입력 데이터로부터 추론된 결과를 다시 클라이언트로 제공하는 원격 기반의 서비스 구조를 통하여 클라이언트 단에서 동작하기 어려운 딥러닝 연산을 제공하고 있다.
하지만 이러한 경우에도 서버 구동 시 딥러닝 모델이 GPU 자원에 로드 된 후 서버 프로세스가 종료 시까지 자원을 점유하기 때문에 GPU 자원이 제한된 경우 프로세스를 유지해야하는 API(Application Programming Interface) 서버의 특성 상 여러 프레임워크(Tensorflow, Pytorch 등)의 모델을 제공하는데 어려움이 있었다.
또한 서버의 입력과 출력이 서버에서 지정한 형태로만 가능하고, 잘못된 입력 형태에 대한 별도의 예외처리가 없어 클라이언트의 유연성이 떨어지고 일반적으로 서버에 비해 성능이 낮은 클라이언트는 입력 데이터를 요구 데이터 형식에 맞게 전처리 하는 과정에서 심각한 부하가 발생할 수 있다.
이와 관련하여 선행특허(한국등록특허공보 10-1587201(2016.01.14))는 GPU 리소스들을 워크 아이템들에 더 효과적으로 할당할 수 있는 방법을 제안하고 있으나 딥러닝 모델 특유의 요구 사항을 반영할 수 있는 자원 관리 방법이 제안될 필요가 있다.
본 발명은 딥러닝 모델을 API 형태로 제공할 때, 제한된 리소스 내에서 다양한 프레임워크의 모델을 제공할 수 있는 방법을 제안하는 것을 목적으로 한다.
또한 본 발명은 프로토콜에 따라 모델서버가 클라이언트에서 지정한 입출력 형태에 따라 동작할 수 있고, 예외 상황 시 적절한 에러를 반환하는 방법을 제안하는 것을 목적으로 한다.
상술한 목적을 달성하기 위한 본 발명의 일 실시 예에 따른 딥러닝 모델 기반의 서비스 제공을 위한 원격 서버 가상화 운용 방법은 가상화 서버를 통해 모델 서버의 딥러닝 모델을 이용한 작업의 구동을 위한 구동 API를 호출하는 단계; 상기 모델 서버의 실행 준비 상태를 체크하고 상기 체크 결과를 리턴받는 단계; 상기 실행 준비된 모델 서버에 입력된 입력 데이터를 전달하고, 상기 입력 데이터로부터 추론 결과를 생성하기 위한 추론 API를 호출하는 단계; 및 상기 추론 API로 호출된 딥러닝 모델의 추론 결과를 출력하는 단계를 포함하고, 상기 호출된 딥러닝 모델의 작업이 완료되면 상기 딥러닝 모델이 이용한 자원의 점유가 해제되는 것이 바람직하다.
상기 모델 서버는 복수의 프레임워크의 모델을 통한 복수의 입력 및 출력 형식(format)을 지원하고, 상기 가상화 서버는 상기 추론 API를 호출 시 상기 입력 및 출력 형식을 지정하는 데이터를 상기 모델 서버로 전달하는 것이 바람직하다.
상기 모델 서버는 상기 전달된 입력 데이터를 상기 지정된 딥러닝 모델의 입력 형식에 따라 디코딩하여 입력하는 것이 바람직하다.
상기 추론 API는 상기 전달된 입력 데이터의 형식을 검증하고 상기 검증 결과를 피드백하는 것이 바람직하다.
상기 추론 API는 상기 전달된 입력 데이터의 형식을 검증하고 상기 검증 결과에 따라 상기 입력 데이터 또는 상기 호출된 딥러닝 모델의 교체를 피드백하는 것이 바람직하다.
상기 입력 데이터가 복수의 입력 데이터 세트인 경우 상기 추론 API는 반복 호출되고, 상기 입력 데이터 세트에 대한 추론이 완료되면 상기 딥러닝 모델이 이용한 자원의 점유가 해제되는 것이 바람직하다.
상기 가상화 서버는 상기 구동 API의 호출 후, 상기 추론 API를 호출하여 상기 추론 결과를 전달하는 프로세스를 컨테이너로 생성하고, 상기 컨테이너는 상기 딥러닝 모델의 동작을 위한 GPU(Graphic Processing Unit)을 실행시키는 것이 바람직하다.
상기 컨테이너가 종료되면 상기 실행된 GPU의 점유가 해제되는 것이 바람직하다.
딥러닝 모델 기반의 서비스 제공을 위한 원격 서버 가상화 운용 방법을 제공하는 사용자 단말은 가상화 서버를 통해 모델 서버의 딥러닝 모델을 이용한 작업의 구동을 위한 구동 API를 호출하고, 상기 실행 준비된 모델 서버에 입력된 입력 데이터를 전달하고, 상기 입력 데이터로부터 추론 결과를 생성하기 위한 추론 API를 호출하는 API 호출부; 상기 모델 서버의 실행 준비 상태를 체크하고 상기 체크 결과를 리턴받는 상태 수신부; 및 상기 추론 API로 호출된 딥러닝 모델의 추론 결과를 출력하는 작업 결과 출력부를 포함하고, 상기 호출된 딥러닝 모델의 작업이 완료되면 상기 딥러닝 모델이 이용한 자원의 점유가 해제되는 것이 바람직하다.
한편, 상술한 목적을 달성하기 위한 본 발명의 일 실시 예에 따른 기록 매체에 저장된 프로그램은 상술한 학습 데이터 가공 방법을 실행하기 위한 프로그램 코드를 포함할 수 있다.
본 발명에 따르면, 제한된 컴퓨팅 자원 내에서 다양한 딥러닝 프레임워크의 모델을 제공할 수 있다.
또한, 클라이언트가 입출력의 지정이 가능하고 예외상황에 따라 적절한 에러메시지를 받을 수 있기 때문에 클라이언트 프로그램 구현 시 유연성과 안정성을 높일 수 있다.
또한, 클라이언트의 입력 데이터와 딥러닝 모델에서 요구하는 데이터간의 형식을 비교하고 이에 따른 처리를 서버에서 직접 수행함으로써 클라이언트의 부하를 줄이고 보다 능동적인 서비스를 제공할 수 있다.
도 1은 본 발명의 일 실시예에 따른 딥러닝 모델 기반의 서비스 제공을 위한 원격 서버 가상화 운용 방법을 수행하는 시스템을 나타낸 예시도이다.
도 2는 본 발명의 일 실시예에 따른 딥러닝 모델 기반의 서비스 제공을 위한 원격 서버 가상화 운용 방법을 나타낸 흐름도이다.
도 3은 본 발명의 일 실시예에 따른 모델 서버의 구성을 나타낸 예시도이다.
도 4 및 5는 본 발명의 일 실시예에 따른 딥러닝 모델 기반의 서비스 제공을 위한 원격 서버 가상화 운용 방법의 서버간 프로세스를 나타낸 흐름도이다.
도 6은 본 발명의 일 실시예에 따른 사용자 단말의 구성을 나타낸 블록도이다.
이하의 내용은 단지 본 발명의 원리를 예시한다. 그러므로 당업자는 비록 본 명세서에 명확히 설명되거나 도시되지 않았지만 본 발명의 원리를 구현하고 본 발명의 개념과 범위에 포함된 다양한 장치를 발명할 수 있는 것이다. 또한, 본 명세서에 열거된 모든 조건부 용어 및 실시 예들은 원칙적으로, 본 발명의 개념이 이해되도록 하기 위한 목적으로만 명백히 의도되고, 이와 같이 특별히 열거된 실시 예들 및 상태들에 제한적이지 않는 것으로 이해되어야 한다.
상술한 목적, 특징 및 장점은 첨부된 도면과 관련한 다음의 상세한 설명을 통하여 보다 분명해질 것이며, 그에 따라 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다.
또한, 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에 그 상세한 설명을 생략하기로 한다.
이하에는 첨부된 도면을 참조하여 본 발명의 다양한 실시 예에 대하여 상세하게 설명한다.
도 1은 딥러닝 모델 제공을 위한 원격 서버 가상화 운영 방법을 예시하는 도이다.
도 1을 참조하면, 딥러닝 모델을 구동하는 모델 서버(200)와 모델 서버(200)를 가상화하고 사용자에게 인터페이스를 제공하는 가상화 서버(100) 및 사용자의 사용자 단말(10)로 구성될 수 있다.
사용자는 사용자 단말(10)을 이용하여 작업을 요청하게 되는데 구체적으로 사용자 단말(10)은 네트워크를 통해 가상화 서버(100)에 모델 서버(200)의 구동 및 종료를 API로 호출할 수 있다.
가상화 서버(100)는 가상화 기반의 모델 서버(200) 운영을 위하여 모델 서버(200)를 가상화하고, 사용자의 요청에 필요한 모델을 로드하여 작업 결과를 출력할 수 있도록 한다.
예를 들어 모델 서버(200)는 도커의 컨테이너 기반으로 동작할 수 있으며, 가상화 서버(100)는 모델 서버(200)의 구동 절차를 정의하는 이미지를 이용하여 컨테이너를 생성하고 컨테이너를 단위로 모델 서버(200) 내 GPU 자원(220)을 이용하여 동작할 수 있다.
가상화 서버(100)는 작업이 종료되면 모델 서버(200)의 중지를 API로 요청하고, 컨테이너의 종료와 함께 점유되었던 자원의 점유를 해제하고 다른 컨테이너를 통해 자원이 이용될 수 있도록 한다.
따라서, 가상화 서버(100)는 API 서버로 컨테이너 기반 가상화 플랫폼(Docker 등)을 조작할 수 있는 API를 제공할 수 있다. 사용자 단말(10)은 가상화 서버(100)를 통해 모델 서버(200)를 시작/중지할 수 있기 때문에 제한된 GPU 자원 내에서도 여러 프레임워크의 모델 서버(200)를 번갈아 가며 사용할 수 있다.
모델 서버(200) 역시 외부의 호출에 따라 동작 가능한 API 서버로, 구동 시 딥러닝 모델(210)을 컴퓨팅자원에 불러오고 API를 통해 전달된 입력 데이터에 대해 모델을 통한 추론을 수행한 뒤 결과값을 반환할 수 있다.
모델 서버(200)는 다수의 입출력 형태를 지원하며, 클라이언트는 모델 입력 데이터와 함께 입출력의 형태를 지정하는 데이터를 전달할 수 있다.
또한, 서버 자체의 구동 실패, 잘못된 이미지 형태 등의 예외 상황이 발생할 경우 클라이언트 측에 적절한 에러 메시지를 반환함으로써 사용자가 대응할 수 있도록 한다.
이하, 도 2를 참조하여 딥러닝 모델 제공을 위한 원격 서버 가상화 운영 방법의 구체적인 프로세스에 대하여 설명한다.
도 2를 참조하면 먼저, 가상화 서버(100)가 모델 서버(200)의 딥러닝 모델을 이용한 작업의 구동을 위한 구동 API를 호출한다(S100).
이때, 가상화 서버(100)는 표준화된 REST API(RESTful API, 레스트풀 API)를 통한 동작되는 API 서버로 구현될 수 있으며. 텍스트, 오디오를 포함한 다른 입력 데이터 및 gRPC(Google Remote Procedure Call) 등 타 프로토콜을 활용하여 구현한 API를 통해서도 구성될 수 있다.
다음 모델 서버(200)의 실행 준비 상태를 체크하고 상기 체크 결과를 리턴 받는다(S200).
이때, 모델 서버(200)의 실행 준비 상태에 이상이 없는 경우 가상화 서버(100)는 사용자 단말(10)에서 요청한 작업에 따른 프로세스를 정의하는 절차서 예를 들어 도커 이미지를 통해 컨테이너를 생성하고 생성된 컨테이너 기반으로 추론을 수행하도록 한다.
생성된 컨테이너는 프로세스를 격리하여 모델 서버(200)에 여러 개의 프로세스가 독립적으로 실행될 수 있도록 하며 서버의 GPU나 메모리가 프로세스가 필요한 만큼 사용될 수 있도록 한다.
따라서 모델 서버(200)는 복수의 프레임워크의 모델을 통한 복수의 입력 및 출력 형식(format)을 지원하고 가상화 서버(100)는 사용자가 추론 API를 호출 시 입력 데이터를 상기 모델 서버(200)로 전달할 수 있다. 모델 서버(200)는 지원하는 입력 또는 출력 형식과 입력 데이터의 형식을 비교하여 오류 여부를 판단할 수 있다.
또한 이미지 내에는 추론을 위해 필요한 입력 데이터의 형식, 추가적인 라이브러리가 정의되어 있으며 해당 이미지를 통해 별도의 사용자 설정 없이 작업을 수행할 수 있다.
나아가, 이미지 내 정의된 정보들의 업데이트나 라이브러리의 갱신 등을 지속적으로 관리하고 배포할 수 있도록 하여 사용성을 높일 수 있다.
다음 컨테이너 기반으로 실행 준비된 모델 서버(200)에 입력된 입력 데이터를 전달하고, 상기 입력 데이터로부터 추론 결과를 생성하기 위한 추론 API를 호출한다(S300).
다음, 추론 API로 호출된 딥러닝 모델의 추론 결과를 전달하고 출력한다(S400).
이때, 추론 API는 상기 전달된 입력 데이터의 형식을 검증하고 상기 검증 결과를 피드백 요청할 수 있다. 모델 서버(200)에서 검증 결과 정상적인 응답을 받게 되면 모델의 추론 결과를 받기 위한 입력 데이터와 함께 모델 서버(200)의 추론 API를 호출하며, 이 때 원하는 입출력 형태에 관한 데이터를 함께 전달한다.
반대로 정상적인 추론 결과 또는 입력 데이터에 대한 에러를 응답으로 받을 수 있으며, 모델이 필요한 작업이 완료될 때까지 추론 API를 반복해서 호출할 수 있다.
나아가, 본 실시예에서는 형식상의 오류로서 예를 들어 이미지의 크기, 포맷 등에 오류가 존재하는 경우 이미지를 디코딩하거나 다시 인코딩 하는 것을 통해 딥러닝 모델의 입력으로 이용할 수 있도록 한다.
또는 추론 API는 상기 전달된 입력 데이터의 형식을 검증하고 상기 검증 결과에 따라 호출된 딥러닝 모델의 교체를 피드백하는 것도 가능하다.
따라서, 컨테이너를 재기동하거나 새로운 도커 이미지를 통하여 컨테이너를 다시 생성할 수 있다.
이상의 과정으로 호출된 딥러닝 모델의 작업이 완료되면 상기 딥러닝 모델이 이용한 자원의 점유가 해제되며, 다른 컨테이너나 사용자가 새로운 프레임워크를 통해 작업을 요청할 수 있도록 한다.
또한, 입력 데이터가 복수의 입력 데이터 세트인 경우 상기 추론 API는 반복 호출되고, 상기 입력 데이터 세트에 대한 추론이 완료되면 상기 딥러닝 모델이 이용한 자원의 점유가 해제될 수 있다.
따라서, 배치단위의 학습 과정에도 보다 효율적으로 지원할 수 있으며 이경우 학습된 딥러닝 모델을 추론에 이용된 컨테이너와 함께 관리할 수 있다.
이하, 도 3을 참조하여 본 실시예에 따른 도커 기반의 가상화 시스템을 설명한다.
본 실시예에서 모델 서버(200)는 가상화 서버(100)의 요청에 따라 운영체제(202) 상에 설치된 도커를 기반으로 복수의 컨테이너(210)를 생성하고 운영할 수 있다.
이때, 도커는 딥러닝 모델의 주요 자원으로 이용되는 GPU 드라이버를 지원할 수 있도록 도커 상에 GPU 드라이(225)버를 설치할 수 있으며 이를 통해 컨테이너의 생성과 종료에 따른 GPU 자원의 점유를 직접 관리하도록 한다.
구체적으로 OS(202) 상에 설치된 GPU 드라이버(225)는 도커의 컨테이너 OS 내에 탑재(Mount)됨으로써 직접 도커 상의 컨테이너들이 가상화된 상태에서 GPU를 이용하고 종료 시 자원을 반환할 수 있도록 한다.
이하, 도 4를 참조하여 사용자 단말(10), 가상화 서버(100) 및 모델 서버(200)의 구체적인 동작 프로세스에 대하여 설명한다.
도 4를 참조하면 웹서버, 모바일 어플리케이션 등과 같은 사용자 단말(10)은 딥러닝 모델이 필요한 기능 동작 시 먼저 가상화 서버(100)의 API를 호출할 수 있다.
가상화 서버(100)의 API를 통해 모델서버를 구동하며, 이 때 딥러닝 모델을 불러오는 과정에서 모델 서버(200)의 컴퓨팅 자원을 점유할 수 있다.
다음, 모델 서버(200) 구동을 위한 API호출 후 모델 서버(200)가 실행 준비되었는지 상태 체크(Health check)를 위해 사용자 단말(10)은 모델 서버(200)의 상태 체크 API를 직접호출할 수 있다.
모델 서버(200)로부터 정상적인 응답을 받게 되면 사용자 단말(10)은 모델의 추론 결과를 받기 위한 입력 데이터와 함께 모델 서버(200)의 추론 API를 호출하며, 이 때 원하는 입출력 형태에 관한 데이터를 함께 전달할 수 있다.
이어서, 모델 서버(200)는 정상적인 추론 결과를 리턴 하거나 또는 입력 데이터에 대한 에러를 리턴하고, 사용자 단말(10)은 이를 응답으로 받을 수 있다.
구체적으로 모델 서버(200)는 입력 데이터의 형식을 딥러닝 모델에 입력하기 위하여 디코딩할 수 있으며 디코딩된 입력 데이터를 검증하여 추론 가능 여부를 판단한다.
검증 오류를 리턴하는 경우 사용자는 사용자 단말(10)을 통해 새로운 형식의 입력 데이터를 전달할 수 있다.
검증 결과 유효한 경우 딥러닝 모델이 필요한 작업이 완료될 때까지 추론 API를 반복해서 호출할 수 있으며 반복 호출 동안 GPU는 점유될 수 있다.
최종 작업이 완료되면 가상화 서버(100)의 API를 통해 모델 서버(200)를 중지하며, 컴퓨팅 자원에 대한 점유가 풀리기 때문에 이후 다른 딥러닝 프레임워크의 모델 서버(200) 구동 가능하게 된다.
도 5를 참조하면, 본 실시예에 따른 가상화 기반의 딥러닝 모델의 추론 방법은 딥러닝 모델의 추론 외에 학습을 이용하는 것도 가능하다.
즉, 상술한 바와 같이 사용자 단말(10) 및 가상화 서버(100)는 API를 기초로 모델 서버(200)의 동작을 요청하고 생성된 컨테이너는 작업 동안 GPU를 점유하여 동작할 수 있다.
학습을 위해 사용자 단말(10)은 학습 시작 API를 가상화 서버(100)로 요청하고, 학습 시작 API를 통해 모델 서버(200)는 학습 모드로 전환될 수 있다.
이후 반복적인 입력 데이터를 통해 모델 서버(200) 내 임의의 적어도 한 모델의 변수들의 학습을 수행한다. 모든 입력 데이터에 대하여 학습이 끝난 후 다시 사용자 단말(10)은 추론 API를 호출하고 성능을 검증할 수 있다.
학습 전 모델의 성능과 학습 후 모델의 성능을 비교하고 해당 성능의 검증 결과에 따라 모델의 버전을 업데이트 할 것인지를 최종 결정하고, 사용자 단말(10)을 통해 업데이트 API를 호출하고 모델 서버(200)내 학습 모델을 업데이트한다.
이상의 과정을 통해 학습된 딥러닝 모델은 컨테이너의 종료 이후에도 지속적인 동작을 위하여 새로운 버전으로 관리될 수 있다.
도 6을 참조하여, 본 실시예에 따른 가상화 서버(100)를 통해 모델 서버(200)의 딥러닝 모델을 이용한 작업을 수행하는 사용자 단말(10)의 구성에 대하여 설명한다.
사용자 단말(10)은 API 호출부(12)를 포함한다.
API 호출부(12)는 모델 서버(200)의 구동을 위한 구동 API를 호출한다. 바람직하게는 가상화 서버(100)의 API를 통해 모델 서버(200)의 구동을 요청하고, 가상화 서버(100)는 모델 서버(200)의 구동을 위해 컨테이너를 생성하고 해당 컨테이너는 작업 동안 모델 서버(200)의 GPU를 점유하도록 한다.
다음, 상태 수신부(14)는 우선적으로 모델 서버(200)의 실행 준비 상태를 체크하고 상기 체크 결과를 리턴 받는다. 자원의 점유 상태에 따라 점유가 불가능한 경우 대기할 수 있으며 또는 다른 모델 서버(200)를 통해 작업을 요청할 수 있다.
이어서 API 호출부(12)는 상태 체크 결과 실행 준비된 모델 서버(200)에 입력된 입력 데이터를 전달하고, 상기 입력 데이터로부터 추론 결과를 생성하기 위한 추론 API를 호출한다.
작업 결과 출력부(16)는 추론 API로 호출된 딥러닝 모델의 추론 결과를 출력하며 사용자가 작업 결과를 활용할 수 있도록 한다.
작업이 완료되면 API 호출부(12)는 상기 딥러닝 모델이 이용한 자원의 점유가 해제되도록 요청하고 가상화 서버(100)는 컨테이너를 종료 시킨다.
이상 본 발명에 따르면, 제한된 컴퓨팅 자원 내에서 다양한 딥러닝 프레임워크의 모델을 제공할 수 있다.
또한, 클라이언트가 입출력의 지정이 가능하고 예외상황에 따라 적절한 에러메시지를 받을 수 있기 때문에 클라이언트 프로그램 구현 시 유연성과 안정성을 높일 수 있다.
또한, 클라이언트의 입력 데이터와 딥러닝 모델에서 요구하는 데이터간의 형식을 비교하고 이에 따른 처리를 서버에서 직접 수행함으로써 클라이언트의 부하를 줄이고 보다 능동적인 서비스를 제공할 수 있다.
나아가, 여기에 설명되는 다양한 실시예는 예를 들어, 소프트웨어, 하드웨어 또는 이들의 조합된 것을 이용하여 컴퓨터 또는 이와 유사한 장치로 읽을 수 있는 기록매체 내에서 구현될 수 있다.
하드웨어적인 구현에 의하면, 여기에 설명되는 실시예는 ASICs (application specific integrated circuits), DSPs (digital signal processors), DSPDs (digital signal processing devices), PLDs (programmable logic devices), FPGAs (field programmable gate arrays, 프로세서(processors), 제어기(controllers), 마이크로 컨트롤러(micro-controllers), 마이크로 프로세서(microprocessors), 기타 기능 수행을 위한 전기적인 유닛 중 적어도 하나를 이용하여 구현될 수 있다. 일부의 경우에 본 명세서에서 설명되는 실시예들이 제어 모듈 자체로 구현될 수 있다.
소프트웨어적인 구현에 의하면, 본 명세서에서 설명되는 절차 및 기능과 같은 실시예들은 별도의 소프트웨어 모듈들로 구현될 수 있다. 상기 소프트웨어 모듈들 각각은 본 명세서에서 설명되는 하나 이상의 기능 및 작동을 수행할 수 있다. 적절한 프로그램 언어로 쓰여진 소프트웨어 어플리케이션으로 소프트웨어 코드가 구현될 수 있다. 상기 소프트웨어 코드는 메모리 모듈에 저장되고, 제어모듈에 의해 실행될 수 있다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위 내에서 다양한 수정, 변경 및 치환이 가능할 것이다.
따라서, 본 발명에 개시된 실시 예 및 첨부된 도면들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시 예 및 첨부된 도면에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구 범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리 범위에 포함되는 것으로 해석되어야 할 것이다.

Claims (12)

  1. 사용자 단말이 가상화 서버를 통해 도커 기반의 모델 서버의 딥러닝 모델을 이용한 작업의 구동을 위한 구동 API를 호출하는 단계;
    상기 모델 서버의 실행 준비 상태를 체크하고 상기 체크 결과를 리턴받는 단계;
    상기 실행 준비된 모델 서버에 입력된 입력 데이터를 전달하고, 상기 입력 데이터로부터 추론 결과를 생성하기 위한 추론 API를 호출하는 단계; 및
    상기 추론 API로 호출된 딥러닝 모델의 추론 결과 또는 입력 데이터의 오류를 피드백으로 출력하는 단계를 포함하고,
    상기 추론 API는 상기 입력 데이터의 형식을 검증한 결과 인코딩하거나 상기 호출된 딥러닝 모델의 교체를 피드백하거나,
    상기 추론 결과로 학습 전 상기 딥러닝 모델의 성능과 학습 후 상기 딥러닝 모델 성능을 비교하여 업데이트 여부를 결정하여 업데이트 API를 호출하도록 하되,
    상기 모델 서버는,
    상기 구동 API에 따라 실행 준비 상태에 이상이 없는 경우 사용자 단말의 작업 프로세스를 정의하는 도커 이미지를 통해 컨테이너를 생성하되,
    상기 추론 API에 따라 도커 이미지 내에 정의된 추론을 위한 입력 데이터 형식을 참조하여 상기 전달된 입력 데이터의 형식을 검증하고, 상기 검증 결과에 따라 상기 호출된 딥러닝 모델에 대한 피드백으로 컨테이너를 재 기동 또는 재 생성하는 가상화 서버를 이용한 딥러닝 모델의 추론 방법.
  2. 제 1 항에 있어서,
    상기 모델 서버는 복수의 프레임워크의 모델을 통한 복수의 입력 및 출력 형식(format)을 지원하고,
    상기 가상화 서버는 상기 추론 API를 호출 시 상기 입력 및 출력 형식을 지정하는 데이터를 상기 모델 서버로 전달하는 것을 특징으로 하는 가상화 서버를 이용한 딥러닝 모델의 추론 방법.
  3. 제 2 항에 있어서,
    상기 모델 서버는 상기 전달된 입력 데이터를 상기 지정된 딥러닝 모델의 입력 형식에 따라 디코딩하여 입력하는 것을 특징으로 하는 가상화 서버를 이용한 딥러닝 모델의 추론 방법.
  4. 삭제
  5. 삭제
  6. 제 1 항에 있어서,
    상기 입력 데이터가 복수의 입력 데이터 세트인 경우 상기 추론 API는 반복 호출되고,
    상기 입력 데이터 세트에 대한 추론이 완료되면 상기 딥러닝 모델이 이용한 자원의 점유가 해제되는 것을 특징으로 하는 가상화 서버를 이용한 딥러닝 모델의 추론 방법.
  7. 제 1 항에 있어서,
    상기 가상화 서버는 상기 구동 API의 호출 후,
    상기 추론 API를 호출하여 상기 추론 결과를 전달하는 프로세스를 컨테이너로 생성하고,
    상기 컨테이너는 상기 딥러닝 모델의 동작을 위한 GPU(Graphic Processing Unit)을 실행시키는 것을 특징으로 하는 가상화 서버를 이용한 딥러닝 모델의 추론 방법.
  8. 삭제
  9. 가상화 서버를 통해 도커 기반의 모델 서버의 딥러닝 모델을 이용한 작업의 구동을 위한 구동 API를 호출하고, 실행 준비된 모델 서버에 입력된 입력 데이터를 전달하고, 상기 입력 데이터로부터 추론 결과를 생성하기 위한 추론 API를 호출하는 API 호출부;
    상기 모델 서버의 실행 준비 상태를 체크하고 상기 체크 결과를 리턴받는 상태 수신부;
    상기 추론 API로 호출된 딥러닝 모델의 추론 결과 또는 입력 데이터의 오류를 피드백으로 출력하는 작업 결과 출력부를 포함하고,
    상기 추론 API는 상기 입력 데이터의 형식을 검증한 결과 인코딩하거나 상기 호출된 딥러닝 모델의 교체를 피드백하거나,
    상기 추론 결과로 학습 전 상기 딥러닝 모델의 성능과 학습 후 상기 딥러닝 모델 성능을 비교하여 업데이트 여부를 결정하여 업데이트 API를 호출하도록 하되,
    상기 모델 서버는,
    상기 구동 API에 따라 실행 준비 상태에 이상이 없는 경우 사용자 단말의 작업 프로세스를 정의하는 도커 이미지를 통해 컨테이너를 생성하되,
    상기 추론 API에 따라 도커 이미지 내에 정의된 추론을 위한 입력 데이터 형식을 참조하여 상기 전달된 입력 데이터의 형식을 검증하고, 상기 검증 결과에 따라 상기 호출된 딥러닝 모델에 대한 피드백으로 컨테이너를 재 기동 또는 재 생성하는 사용자 단말.
  10. 제 9 항에 있어서,
    상기 모델 서버는 복수의 프레임워크의 모델을 통한 복수의 입력 및 출력 형식을 지원하고,
    상기 가상화 서버는 상기 추론 API를 호출 시 상기 입력 및 출력 형식을 지정하는 데이터를 상기 모델 서버로 전달하는 것을 특징으로 하는 가상화 서버를 이용한 딥러닝 모델의 추론 방법을 수행하는 사용자 단말.
  11. 제 1 항 내지 제 3 항, 제 6 항 내지 제 7 항 중 어느 한 항에 따른 가상화 서버를 이용한 딥러닝 모델의 추론 방법을 수행하는 프로그램이 저장된 컴퓨터 판독 가능한 기록 매체.
  12. 제 1 항 내지 제 3 항, 제 6 항 내지 제 7 항 중 어느 한 항에 따른 가상화 서버를 이용한 딥러닝 모델의 추론 방법을 실행하기 위한 프로그램 코드를 포함하는 컴퓨터 판독 가능한 기록 매체에 저장된 프로그램.
KR1020210178515A 2021-12-14 2021-12-14 딥러닝 모델 기반의 서비스 제공을 위한 원격 서버 가상화 운용 방법, 시스템 및 컴퓨터 프로그램 KR102514114B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210178515A KR102514114B1 (ko) 2021-12-14 2021-12-14 딥러닝 모델 기반의 서비스 제공을 위한 원격 서버 가상화 운용 방법, 시스템 및 컴퓨터 프로그램

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210178515A KR102514114B1 (ko) 2021-12-14 2021-12-14 딥러닝 모델 기반의 서비스 제공을 위한 원격 서버 가상화 운용 방법, 시스템 및 컴퓨터 프로그램

Publications (1)

Publication Number Publication Date
KR102514114B1 true KR102514114B1 (ko) 2023-03-27

Family

ID=85799766

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210178515A KR102514114B1 (ko) 2021-12-14 2021-12-14 딥러닝 모델 기반의 서비스 제공을 위한 원격 서버 가상화 운용 방법, 시스템 및 컴퓨터 프로그램

Country Status (1)

Country Link
KR (1) KR102514114B1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102100323B1 (ko) * 2019-11-01 2020-04-13 주식회사 엔쓰리엔클라우드 머신러닝 플랫폼 서비스 방법 및 서버
KR20210049551A (ko) * 2019-10-25 2021-05-06 삼성에스디에스 주식회사 컴퓨팅 자원을 유동적으로 할당하는 엣지 컴퓨팅 방법 및 시스템
KR20210067415A (ko) * 2019-11-29 2021-06-08 주식회사 데브스택 클라우드 컴퓨팅 기반의 플랫폼 제공 시스템 및 이를 이용한 플랫폼 제공 방법
KR102318533B1 (ko) * 2020-06-29 2021-10-28 인하대학교 산학협력단 Gpu기반 임베디드 에지 서버 구성과 신경망 서비스 활용 방법 및 시스템

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210049551A (ko) * 2019-10-25 2021-05-06 삼성에스디에스 주식회사 컴퓨팅 자원을 유동적으로 할당하는 엣지 컴퓨팅 방법 및 시스템
KR102100323B1 (ko) * 2019-11-01 2020-04-13 주식회사 엔쓰리엔클라우드 머신러닝 플랫폼 서비스 방법 및 서버
KR20210067415A (ko) * 2019-11-29 2021-06-08 주식회사 데브스택 클라우드 컴퓨팅 기반의 플랫폼 제공 시스템 및 이를 이용한 플랫폼 제공 방법
KR102318533B1 (ko) * 2020-06-29 2021-10-28 인하대학교 산학협력단 Gpu기반 임베디드 에지 서버 구성과 신경망 서비스 활용 방법 및 시스템

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
KenYN, "Is it possible to install NVidia driver inside Docker?#871," https://github.com/NVIDIA/nvidia-docker/issues/871 (2018.12.01.)* *

Similar Documents

Publication Publication Date Title
KR101255382B1 (ko) 운영체제에 친숙한 부트로더
CN112148489B (zh) 游戏资源调度方法、装置、设备及存储介质
CN110716748A (zh) 业务处理方法、装置、计算机可读介质及电子设备
CN103176854A (zh) 一种进程间通信方法、装置及系统
US11061693B2 (en) Reprogramming a field programmable device on-demand
JP2013522769A (ja) 仮想マシンイメージ更新サービス
US20160378560A1 (en) Executing a foreign program on a parallel computing system
CN111190741B (zh) 基于深度学习节点计算的调度方法、设备及存储介质
US8739151B1 (en) Computer system using in-service software upgrade
WO2015127667A1 (en) Executing foreign program on parallel computing system
CN114879829B (zh) 功耗管理方法、装置、电子设备、图形处理器及存储介质
KR20140057649A (ko) 휴대용 컴퓨팅 디바이스에서 분산 리소스 관리
CN113886089A (zh) 一种任务处理方法、装置、系统、设备及介质
CN115629785B (zh) 升级方法、电子设备及存储介质
CN113032166A (zh) 核间通信的方法、处理器、核间通信系统及计算机可读存储介质
CN113626211A (zh) 消息队列的切换方法、切换系统、电子设备及存储介质
CN113760332A (zh) 软件升级方法和电子设备
CN115904761A (zh) 片上系统、车辆及视频处理单元虚拟化方法
KR102514114B1 (ko) 딥러닝 모델 기반의 서비스 제공을 위한 원격 서버 가상화 운용 방법, 시스템 및 컴퓨터 프로그램
CN112925575A (zh) 一种基于框架及插件的机载仿真运行方法
US8291419B2 (en) Fault tolerant system for execution of parallel jobs
US8205218B1 (en) Data storage system having common software environment
CN114116203A (zh) 一种资源调用控制方法、资源调用控制装置及存储介质
US9317324B2 (en) Automatic service lifecycle management
CN112749193A (zh) 工作流的处理方法及装置、存储介质、电子设备

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant