KR20220113873A - 소프트웨어 모듈 개발을 위한 시스템 - Google Patents

소프트웨어 모듈 개발을 위한 시스템 Download PDF

Info

Publication number
KR20220113873A
KR20220113873A KR1020217036785A KR20217036785A KR20220113873A KR 20220113873 A KR20220113873 A KR 20220113873A KR 1020217036785 A KR1020217036785 A KR 1020217036785A KR 20217036785 A KR20217036785 A KR 20217036785A KR 20220113873 A KR20220113873 A KR 20220113873A
Authority
KR
South Korea
Prior art keywords
software module
configuration file
process agent
module
software
Prior art date
Application number
KR1020217036785A
Other languages
English (en)
Inventor
토머스 보켓
네이선 슈체르
조너스 폰세카
Original Assignee
서비스나우 캐나다 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 서비스나우 캐나다 인크. filed Critical 서비스나우 캐나다 인크.
Publication of KR20220113873A publication Critical patent/KR20220113873A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven
    • 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/3409Recording 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 for performance assessment
    • G06F11/3428Benchmarking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • 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/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • G06N3/105Shells for specifying net layout
    • 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
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/815Virtual

Abstract

본 발명은 소프트웨어 모듈 개발에 사용하기 위한 시스템 및 방법을 제공한다. 구성 파일 및 프로세스 에이전트 모듈은 개발 중인 사용자 소프트웨어 모듈의 하나 이상의 인스턴스를 구현하기 위해 하나 이상의 실행 환경을 프로비저닝하도록 컴퓨터 시스템과 함께 협력하여 작동한다. 구성 파일에는 소프트웨어 모듈에 필요한 파라미터뿐만 아니라 실행 환경의 한계와 기능을 정의하는 하드웨어 및 소프트웨어 구성이 포함되어 있다. 프로세스 에이전트는 실행 환경을 런칭하고, 실행 환경에서 실행되는 소프트웨어 모듈이 구성 파일에 설정된 리소스에 액세스할 수 있도록 한다. 소프트웨어 모듈의 실행이 완료되면 성능 결과는 대조 및 분석을 위해 프로세스 에이전트로 전달된다. 그런 다음 이러한 결과를 사용하여 소프트웨어 모듈의 어떤 구현이 가장 잘 수행되는지 결정할 수 있다.

Description

소프트웨어 모듈 개발을 위한 시스템
본 발명은 소프트웨어 개발에 관한 것이다. 보다 구체적으로, 본 발명은 소프트웨어 모듈을 개발하는데 사용하기 위한 시스템 및 방법에 관한 것이다.
지난 몇 년 동안 인공 지능, 보다 구체적으로는 머신 러닝 및 신경망에 대한 관심의 폭발과 발전으로 인해 이러한 기술을 개발하는 데 사용하기 위한 시스템에 대한 수요가 급증했다. 이를 위해 점점 더 많은 컴퓨터 과학자, 개발자 및 엔지니어가 더 나은 시스템에 도달하기 위해 기술의 한계를 뛰어넘고 있다. 그러나 이것은 또한 이러한 과학자, 엔지니어 및 개발자에게 많은 잠재적인 문제를 야기하고 있다.
소프트웨어를 개발할 때 상이한 구성들이 성능 면에서 상이한 결과를 산출한다. 따라서 개발 중인 소프트웨어의 성능을 최적화하기 위해 개발자는 이러한 다양한 구성을 추적하고 최상의 결과를 제공한 구성이 유지되도록 해야 한다. 그러나 일부 소프트웨어에는 수백 개는 아니더라도 수십 개의 구성이 있을 수 있으며 이러한 수의 파라미터와 설정을 추적하는 것은 기껏해야 번거롭다. 또한, 소프트웨어를 운영하는 시스템의 구성도 소프트웨어의 성능에 영향을 미친다. 따라서 시스템의 구성은 소프트웨어의 다양한 구성이 모두 공평한 경쟁의 장에서 경쟁할 수 있도록 추적되어야 한다. 다시 말하지만, 이것은 번거로운 작업이 될 수 있다.
소프트웨어 개발이 다양한 형태의 실행 환경을 사용하여 실행될 수 있기 때문에 위의 모든 것이 훨씬 더 어려워진다는 것을 이해해야 할 것이다. 개발 중인 소프트웨어의 다양한 구성이 모두 올바르게 평가되도록 하려면, 이러한 소프트웨어를 실행하는 실행 환경의 구성이 서로 가능한 한 동일해야 한다.
위의 문제는 신경망 및 머신 러닝 시스템을 개발할 때 훨씬 더 심각하다. 이러한 시스템에서 사용하는 하이퍼 파라미터는 수백 개에 이를 수 있으며 개발 중인 소프트웨어 시스템의 각 버전이 동일한 실행 환경에서 실행되도록 하는 것은 기껏해야 어려울 수 있다. 뿐만 아니라 사용되는 하이퍼 파라미터의 각 변경은 상이한 결과를 산출할 수 있으므로 각 시스템의 성능을 대조, 추적 및 관리하여 올바른 파라미터 설정이 올바른 성능 메트릭과 연결되도록 해야 한다.
따라서, 상기 문제를 다루는 시스템 및/또는 방법이 필요하다. 바람직하게는, 이러한 방법 또는 시스템은 위의 문제를 극복하지 않더라도 완화하고, 또한 바람직하게는, 이러한 시스템 또는 방법은 개발자 및/또는 연구자가 사용하기에도 쉽다.
본 발명은 소프트웨어 모듈 개발에 사용하기 위한 시스템 및 방법을 제공한다. 구성 파일 및 프로세스 에이전트 모듈은 개발 중인 사용자 소프트웨어 모듈의 하나 이상의 인스턴스를 구현하기 위해 하나 이상의 실행 환경을 프로비저닝하도록 컴퓨터 시스템과 함께 협력하여 작동한다. 구성 파일에는 소프트웨어 모듈에 필요한 파라미터뿐만 아니라 실행 환경의 한계와 기능을 정의하는 하드웨어 및 소프트웨어 구성이 포함되어 있다. 프로세스 에이전트는 실행 환경을 런칭하고, 실행 환경에서 실행되는 소프트웨어 모듈이 구성 파일에 설정된 리소스에 액세스할 수 있도록 한다. 소프트웨어 모듈의 실행이 완료되면 성능 결과는 대조 및 분석을 위해 프로세스 에이전트로 전달된다. 그런 다음 이러한 결과를 사용하여 소프트웨어 모듈의 어떤 구현이 가장 잘 수행되는지 결정할 수 있다. 하나의 특정 구현에서, 프로세스 에이전트는 가상 머신 자체이고, 다른 가상 머신/실행 환경 및 기타 작업의 구성, 프로비저닝 및 런칭을 관리한다.
제1 양태에서, 본 발명은 소프트웨어 모듈의 하나 이상의 인스턴스를 프로비저닝 및 런칭하기 위한 시스템을 제공하며, 상기 시스템은:
상기 소프트웨어 모듈의 적어도 하나의 인스턴스를 구현하는데 사용하기 위한 하드웨어 및 소프트웨어 구성을 상세히 설명하는 구성 파일;
상기 소프트웨어 모듈의 상기 적어도 하나의 인스턴스를 구현하기 위해 적어도 하나의 컴퓨터 시스템을 구성하는데 사용하기 위한 프로세스 에이전트 모듈 - 상기 프로세스 에이전트는 상기 구성 파일을 사용하여 상기 적어도 하나의 컴퓨터 시스템을 구성함 - 을 포함하며,
상기 소프트웨어 모듈의 모든 구현이 상기 구성 파일을 사용하도록 상기 구성 파일을 불러들일 수 있도록 상기 구성 파일이 데이터 저장소에 저장되고,
상기 구성 파일은 식별자에 의해 고유하게 식별되며, 상기 식별자는 상기 소프트웨어 모듈과 고유하게 연관된다.
제 2 양태에서, 본 발명은 소프트웨어 모듈의 다중 인스턴스를 런칭하기 위한 시스템을 제공하며, 상기 시스템은:
상기 소프트웨어 모듈의 상기 다중 인스턴스를 구현하는데 사용하기 위한 구성을 상세히 설명하는 구성 파일;
상기 소프트웨어 모듈의 상기 다중 인스턴스를 구현하기 위해 적어도 하나의 컴퓨터 시스템을 구성하는데 사용하기 위한 프로세스 에이전트 모듈 - 상기 프로세스 에이전트는 상기 구성 파일을 사용하여 상기 적어도 하나의 컴퓨터 시스템을 구성함 - 을 포함하며;
상기 구성 파일은 식별자에 의해 고유하게 식별되며, 상기 식별자는 상기 소프트웨어 모듈과 고유하게 연관된다.
본 발명의 실시예는 이제 다음 도면을 참조하여 설명될 것이며, 다른 도면에서 동일한 참조 번호는 동일한 요소를 나타낸다.
도 1은 본 발명의 일 양태에 따른 시스템의 구성요소를 도시하는 블록도이다.
일 양태에서, 본 발명은 구성 파일(configuration file) 및 프로세스 에이전트 모듈을 포함하는 시스템을 제공한다. 이 두 가지는 위에서 언급한 문제를 해결하기 위해 협력한다. 작동 시, 구성 파일은 사용자에 의해 준비되고, 사용자가 준비/개발 중인 소프트웨어 모듈과 고유하게 연결된다. 구성 파일은 사용자의 소프트웨어 모듈을 실행할 가상 머신에 대해 원하는 소프트웨어 및 하드웨어 구성을 포함하도록 준비된다. 여기에는 가상 머신에 사용할 수 있는 RAM(랜덤 액세스 메모리)의 양, 가상 머신에 할당/사용할 수 있는 프로세서 코어(또는 프로세서)의 수, 해당 가상 머신에 전용으로 할당된 GPU 수, 그리고 멀티태스킹 환경을 사용하는 일부 구현에서는 소프트웨어 모듈의 프로세스에 부여되는 우선순위, 등이 포함될 수 있다. 이 외에도 구성 파일에는 소프트웨어 모듈이 요구할 수 있는 다양한 파라미터에 대한 범위가 포함될 수도 있다. 예를 들어, 소프트웨어 모듈은 신경망의 일 구현예일 수 있고, 이와 같이, 신경망의 다양한 노드에는 하이퍼 파라미터 값이 필요하다. 구성 파일에는 신경망의 다양한 노드에 대한 다양한 하이퍼 파라미터의 범위가 포함될 수 있다. 구성 파일과 협력하여, 프로세스 에이전트는 구성 파일의 내용에 기초하여 실행 환경의 구성을 수행하도록 동작한다. 따라서 프로세스 에이전트는 구성 파일의 내용을 읽고 필요에 따라 해당 내용을 기반으로 하나 이상의 실행 환경을 프로비저닝한다. 또한 프로세스 에이전트는 실제로 구성 파일과 고유하게 연결된 소프트웨어 모듈을 런칭하고, 필요한 경우 소프트웨어 모듈의 관련 구성 요소에 대한 구성 파일의 파라미터 값을 다시 사용한다. 구성 파일에는 실행해야 하는 소프트웨어 모듈의 시도/테스트/구현 횟수와 같은 파라미터도 포함될 수 있다. 따라서 프로세스 에이전트는 이러한 시도 파라미터를 취하여, 필요한 수의 소프트웨어 모듈 인스턴스를 병렬로 실행하는 데 필요한 수의 실행 환경을 프로비저닝한다. 예를 들어, 구성 파일에 소프트웨어 모듈의 5개 인스턴스가 필요하고 각 인스턴스에는 사용할 특정 파라미터 세트가 있다고 명시되어 있는 경우, 프로세스 에이전트는 5개의 동일한 실행 환경을 구성 및 런칭할 것이고, 각각의 실행 환경은 관련 파라미터로 소프트웨어 모듈을 실행하고 있을 것이다.
상기에 더하여, 프로세스 에이전트는 또한 테스트 및/또는 개발되는 소프트웨어 모듈의 다양한 인스턴스에 의해 생성된 결과를 수신하고 대조할 수 있다. 여기에는 소프트웨어 모듈의 다양하게 구성된 인스턴스(파라미터를 통해)에 대한 성능 데이터가 포함된다. 이를 통해 프로세스 에이전트는 다양한 결과를 수집, 대조 및 순위 지정(성능 결과에 따라)할 수 있다. 따라서 프로세스 에이전트는 소프트웨어 모듈에 대해 가장 잘 수행되는 구성을 생성하는 사용된 파라미터를 결정할 수 있다. 이러한 결과와 순위는 사용자에게 제공될 수 있으며, 필요하거나 원하는 경우, 사용자는 최적의 파라미터가 구성 파일에 있도록 구성 파일을 다시 작성/수정할 수 있다.
명확성을 위해, 구성 파일 및 프로세스 에이전트에 의해 제어, 프로비저닝 및 런칭되는 실행 환경의 개념은 사용자 정의 프로그램 세트에 이러한 리소스들을 노출시킬 수 있는 플랫폼-독립적 환경에서 실행되는 격리 리소스(예: CPU, RAM, GPU, 네트워크 어댑터)를 포함한다.
"실행 환경"이라는 용어에는 가상 머신, 프로세스 가상 머신, 도커 컨테이너(docker containers) 및 물리적 머신의 전체 가상화 또는 에뮬레이션과 같은 예가 포함된다. 따라서 프로세스 에이전트가 실행 환경을 런칭할 때 여기에는 특별히 프로비저닝된 가상 머신, 물리적 머신의 에뮬레이션(특정 리소스로 프로비저닝됨) 또는 단순히 (즉, 소프트웨어 모듈과 같이) 사용자 프로그램에 사용 가능한 특정 리소스로 프로비저닝된 특정 소프트웨어 환경 런칭이 포함될 수 있다.
구성 파일 및 프로세스 에이전트의 사용은 또한 추가적인 이점을 제공한다는 것이 분명하다. 소프트웨어 모듈에 대한 최적(또는 거의 최적) 파라미터를 찾아서 구성 파일에 입력하면, 파일을 데이터 저장소에 저장할 수 있다. 소프트웨어 모듈을 다시 실행하거나 구현해야 할 때마다 프로세스 에이전트는 데이터 저장소로부터 구성 파일을 간단히 불러들여, 소프트웨어 모듈에 최적인 것으로 밝혀진 것과 똑같은 하드웨어 및 소프트웨어 구성을 사용할 수 있다. 또한 소프트웨어 모듈에 대해 최상의 성능을 제공하는 것으로 확인된 파라미터(현재 구성 파일의 일부)가 사용된다. 이렇게 하면 소프트웨어 모듈의 구현이 사용될 때 최적의 구성이 사용된다. 이것은 또한 연구원이나 개발자가 소프트웨어 모듈을 다시 실행해야 하는 경우, 사용된 버전이 최상의 성능 결과를 생성한 버전임을 보장한다. 또한 이는 소프트웨어 모듈에 대한 하드웨어 및 소프트웨어 구성을 둘러싼 조건이 소프트웨어 모듈이 구현된 이전의 경우와 동일하다는 것을 보장한다. 연구원/개발자는 소프트웨어 모듈의 모든 버전이 동일한 하드웨어 및 소프트웨어 구성에서 실행될 것이기 때문에 어떤 실험/버전에 어떤 구성이 사용되었는지에 대해 더 이상 주의를 기울일 필요가 없다. 그러나 소프트웨어 모듈의 구성이 해당 소프트웨어 모듈의 과거 실행 이력에 전적으로 기초할 필요는 없다. 구성 파일의 구성 및 파라미터는 소프트웨어 모듈의 특정 요구 사항과 소프트웨어 모듈에 의해 구현될 수 있는 임의의 모델을 기반으로 할 수도 있다.
어떤 구성 파일이 어떤 소프트웨어 모듈과 연관되는지 쉽게 식별하기 위해 구성 파일은 소프트웨어 모듈과 고유하게 연관될 수 있다는 점에 유의해야 한다. 이것은 구성 파일과 소프트웨어 모듈 모두에 내장된 고유 식별 코드를 통해 실현될 수 있다. 따라서 소프트웨어 모듈을 구현하기 전에, 프로세스 에이전트는 소프트웨어 모듈을 확인하고 데이터 저장소를 검색하여 동일한 식별 코드를 가진 구성 파일이 존재하는지 결정할 수 있다. 이러한 구성 파일이 있는 경우 이 구성 파일을 불러들여서, 해당 구성 및 파라미터가 소프트웨어 모듈을 실행할 실행 환경과 함께 구현되거나 사용된다.
본 발명의 시스템이 사용하기 쉽도록 보장하기 위해, 프로세스 에이전트 및 구성 파일은 소프트웨어 모듈의 특성에 대해 불가지론적이어야 한다. 이는 TensorFlow, Python, Torch 또는 기타 적절한 시스템 및/또는 프로그래밍 언어를 사용하여 소프트웨어 모듈을 개발/생산할 수 있음을 의미한다. 바람직하게는, 구성 파일은 소프트웨어 모듈을 생성하는 데 사용되는 시스템의 유형/향(type/flavor)에 대한 표시를 포함한다. 그런 다음 이 표시는 구성 파일 내의 파라미터가 해당 특정 시스템과 함께 사용하기에 적합한지 확인하기 위해 프로세스 에이전트에 의해 사용될 수 있다. 또한 이 표시는 해당 시스템에 필요한 라이브러리 및 지원 자원이 소프트웨어 모듈에서 사용 가능함을 보장하기 위해 프로세스 에이전트에 의해 사용될 수 있다. 하나의 대안에서, 구성 파일은 또한 소프트웨어 모듈이 실행/구현을 위해 요구할 수 있는 라이브러리 또는 다른 모듈(즉, 표준 세트의 일부가 아닌 라이브러리 또는 기타 모듈)에 대한 표시를 포함할 수 있다. 그 후 이를 프로세스 에이전트에서 사용하여, 이러한 라이브러리 또는 모듈이 사용가능해짐과, 프로세스 에이전트에 의해 런칭되는 다양한 가상 머신에 액세스할 수 있음을 보장할 수 있다. 또한 하나의 구현에서, 프로세스 에이전트는 여기에 설명된 시스템 전체의 기능에 기반하여 다른 가상 머신을 런칭하는 가상 머신(또는 다른 형태의 실행 환경을 잡(job) 또는 프로비저닝하는 가상 머신)이라는 것도 분명하다. 또는 프로세스 에이전트는 가상 머신을 런칭하거나 실행 환경을 프로비저닝하는 독립형 서브시스템일 수 있다. 여기에 설명된 바와 같이, 프로세스 에이전트(가상 머신이든 독립형 서브시스템 또는 프로세스이든)는 구성 파일의 내용을 기반으로 실행 환경의 구성, 프로비저닝 및 실행/런칭을 감독한다. 프로세스 에이전트는 하나의 서버/클러스터에 상주/런칭하여, 다른 서버/클러스터의 가상 머신을 실행/제어하고, 그 런칭되는 실행 환경은 모두 동일한 서버/클러스터 상에 위치할 수 있다.
신경망 기반 소프트웨어 모듈에 특정한 구현을 위해, 구성 파일은 신경망에 의해 하이퍼 파라미터로서 사용하기 위한 값의 범위를 포함할 수 있다. 그런 다음 값들은 프로세스 에이전트가 소프트웨어 모듈의 여러 인스턴스(즉, 구성 파일에서 주어진 범위에 기초하여 상이한 하이퍼 파라미터 세트를 각 인스턴스가 갖도록 구성되는 신경망의 다수의 인스턴스)를 런칭하는 기반으로 사용될 수 있다. 그렇게 함으로써 프로세스 에이전트는 소프트웨어 모듈의 여러 병렬 인스턴스가 동일한 가상 머신/실행 환경에서 실행되도록 한다. 소프트웨어 모듈의 이러한 다중 인스턴스는 동시에 병렬로 실행될 수 있지만 시스템 구현에 따라 프로세스 에이전트는 다양한 가상 머신/실행 환경을 구성하여, 순차적으로 또는 지그재그로 병렬로 또는 동시에 병렬로 작동하게 할 수 있다.
본 발명의 일 변형에서, 시스템은 소프트웨어 모듈(들)의 실행 이력에 기초하여, 이들 모듈에 대한 구성 파일에 무엇이 있는지에 관계없이 이들 모듈(들)에 대한 최적의 구성을 결정할 수 있다. 한 구현에서, 특정 모듈의 실행이 충분했다면(임계값은 구성 가능한 변수임), 시스템은 이러한 실행의 데이터를 머신 러닝 모델에 공급하여 하나 이상의 구성 파라미터에 대한 최적을 결정할 수 있다. 그런 다음 해당 특정 모듈의 후속 실행이 하나 이상의 최적 파라미터를 사용하여 프로비저닝되거나 구성된다. 예를 들어, 구성 파일에 프로세스에 대한 5개의 GPU 프로비저닝이 나열되어 있는 소프트웨어 모듈을 100번 실행한 후, 실행 데이터가 머신 러닝 시스템으로 전송된다. 그런 다음 머신 러닝 시스템이 (실행 데이터로부터) 5개의 GPU가 프로비저닝된 동안 특정 모듈이 실제로 해당 GPU 중 3개만 사용한다고 결정하면, 해당 특정 모듈의 후속 실행은 구성 파일에 나열된 5개의 GPU 대신 3개의 GPU에 대해 구성된다. 따라서 시스템은 해당 소프트웨어 모듈에 대한 충분한 양의 실행 데이터를 기반으로 소프트웨어 모듈의 리소스 소비를 예측적으로 결정할 수 있다.
예측된 소비는 모듈의 리소스 소비를 최적화하거나 줄이기 위한 목표로 소프트웨어 모듈의 하나 이상의 향후 실행을 프로비저닝하는 데 사용될 수 있다. 시스템은 또한 소프트웨어 모듈에 리소스가 부족하지 않도록 실행에 필요한 최소 리소스 양의 최고 수준을 결정할 수 있다.
도 1을 참조하면, 본 발명의 일 양태에 따른 시스템의 구성요소의 블록도가 도시되어 있다. 시스템(10)은 구성 파일(20) 및 프로세스 에이전트(30)를 포함한다. 프로세스 에이전트(30)는 컴퓨터 시스템(40)과 함께 작동하여, 구성 파일(20)에 명시된 구성 파라미터에 기초하여 하나 이상의 가상 머신/실행 환경(50)을 프로비저닝, 구성 및 런칭할 수 있다. 다양한 실행 환경이 런칭된 후, 구성 파일(20)은 나중에 사용하기 위해 데이터 저장소(60)에 저장될 수 있다. 구성 파일(20)은 소프트웨어 모듈이 재실행 또는 재구현될 필요가 있을 때 프로세스 에이전트(30)에 의해 데이터 저장소(60)로부터 불러올 수 있다.
위에서 언급한 바와 같이, 런칭된 소프트웨어 모듈에 대한 성능 메트릭은 수집, 대조 및 분석을 위해 프로세스 에이전트로 전송될 수 있다.
소프트웨어 모듈에 대한 최적의 작동 파라미터가 결정되면, 프로세스 에이전트의 성능 메트릭 분석에 의해 자동적으로 또는 소프트웨어 모듈에서 사용할 파라미터를 분석하고 선택하는 사용자에 의해 수동적으로 여부에 관계없이, 이러한 파라미터는 그 후 데이터 저장소에 저장되는 구성 파일에 포함될 수 있다. 이는 소프트웨어 모듈의 향후 실행 또는 구현이 현재 구성 파일에 저장된 최적의 파라미터의 사용과 함께 이루어짐을 보장한다.
상기로부터, 시스템은 또한 소프트웨어 모듈에 대해 수집된 실행 데이터에 기초하여 선호되는 최적의 설정 및 파라미터를 자동으로 결정할 수 있다. 머신 러닝 모델 또는 기타 적절한 데이터 분석 모델을 사용하여, 시스템은 소프트웨어 모듈에 대한 적절한 수의 실행 데이터 세트를 분석하고 이 분석 결과를 기반으로, 시스템은 모듈에 대한 최적의 파라미터 및 설정을 예측할 수 있다. 이러한 파라미터와 설정은 필요에 따라 구성 파일의 파라미터 대신 사용할 수 있다. 위에서 언급한 바와 같이, 이 기능을 통해 연구원이나 사용자는 소프트웨어 모듈의 향후 실행이 최적화됨을 보장할 수 있고, 소프트웨어 모듈의 리소스가 부족하지 않음을 보장하면서 최소의 리소스가 사용됨을 보장할 수 있다.
본 발명의 다양한 양태는 전체 소프트웨어 시스템에서 소프트웨어 모듈로서 구현될 수 있다는 것이 명백하다. 따라서, 본 발명은 실행될 때 미리 정의된 기능을 갖는 다양한 소프트웨어 모듈을 구현하는 컴퓨터 실행 가능 명령어의 형태를 취할 수 있다.
본 발명의 실시예는 방법 단계의 방식으로 프로그래밍된 컴퓨터 프로세서 또는 유사한 장치에 의해 실행될 수 있거나 이러한 단계를 실행하기 위한 수단이 제공되는 전자 시스템에 의해 실행될 수 있다. 유사하게, 컴퓨터 디스켓, CD-ROM, 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM) 또는 당업계에 알려진 유사한 컴퓨터 소프트웨어 저장 매체와 같은 전자 메모리 수단은 이러한 방법 단계를 실행하도록 프로그래밍될 수 있다. 또한, 이러한 방법 단계를 나타내는 전자 신호들이 통신 네트워크를 통해 전송될 수도 있다.
본 발명의 실시예는 임의의 통상적인 컴퓨터 프로그래밍 언어로 구현될 수 있다. 예를 들어, 바람직한 실시예는 절차적 프로그래밍 언어(예: "C" 또는 "Go") 또는 객체 지향 언어(예: "C++", "java", "PHP", "PYTHON" 또는 "C#")로 구현될 수 있다. 본 발명의 대안적인 실시예는 사전 프로그래밍된 하드웨어 요소, 다른 관련 구성요소, 또는 하드웨어 및 소프트웨어 구성요소의 조합으로서 구현될 수 있다.
실시예는 컴퓨터 시스템과 함께 사용하기 위한 컴퓨터 프로그램 제품으로서 구현될 수 있다. 이러한 구현은 컴퓨터 판독 가능 매체(예: 디스켓, CD-ROM, ROM 또는 고정 디스크)와 같은 유형의 매체에 고정되거나, 매체를 통해 네트워크에 연결되는 통신 어댑터와 같이, 모데 또는 기타 인터페이스 장치를 통해 컴퓨터 시스템에 전송될 수 있는, 일련의 컴퓨터 명령어를 포함할 수 있다. 매체는 유형 매체(예: 광학 또는 전기 통신 라인) 또는 무선 기술(예: 마이크로파, 적외선 또는 기타 전송 기술)로 구현된 매체일 수 있다. 일련의 컴퓨터 명령어는 여기에서 이전에 설명된 기능의 전부 또는 일부를 구현한다. 당업자는 이러한 컴퓨터 명령어가 많은 컴퓨터 아키텍처 또는 운영 체제와 함께 사용하기 위해 다수의 프로그래밍 언어로 작성될 수 있음을 인식해야 한다. 더욱이, 그러한 명령어는 반도체, 자기, 광학 또는 기타 메모리 장치와 같은 임의의 메모리 장치에 저장될 수 있고, 광학, 적외선, 마이크로파 또는 기타 전송 기술과 같은 임의의 통신 기술을 사용하여 전송될 수 있다. 그러한 컴퓨터 프로그램 제품은 인쇄 또는 전자 문서(예: 축소-포장된 소프트웨어)와 함께 이동식 매체로 배포되거나, 컴퓨터 시스템과 함께 사전 로드(예: 시스템 ROM 또는 고정 디스크)되거나, 네트워크(예: 인터넷 또는 월드 와이드 웹)를 통해 서버로부터 배포될 수 있다. 물론, 본 발명의 일부 실시예는 소프트웨어(예를 들어, 컴퓨터 프로그램 제품)와 하드웨어 모두의 조합으로 구현될 수 있다. 본 발명의 또 다른 실시예는 완전히 하드웨어로, 또는 완전히 소프트웨어(예를 들어, 컴퓨터 프로그램 제품)로서 구현될 수 있다.
본 발명을 이해하는 사람은 이제 다음의 청구범위에 정의된 바와 같이 본 발명의 범위 내에 속하는 것으로 의도된 상기 모든 것의 대안적인 구조 및 실시예 또는 변형을 생각할 수 있다.

Claims (20)

  1. 소프트웨어 모듈의 하나 이상의 인스턴스를 프로비저닝 및 런칭하기 위한 시스템으로서, 상기 시스템은:
    상기 소프트웨어 모듈의 적어도 하나의 인스턴스를 구현하는데 사용하기 위한 하드웨어 및 소프트웨어 구성을 상세히 설명하는 구성 파일;
    상기 소프트웨어 모듈의 상기 적어도 하나의 인스턴스를 구현하기 위해 적어도 하나의 컴퓨터 시스템을 구성하는데 사용하기 위한 프로세스 에이전트 모듈 - 상기 프로세스 에이전트 모듈은 상기 구성 파일을 사용하여 상기 적어도 하나의 컴퓨터 시스템을 구성함 - 을 포함하며,
    상기 소프트웨어 모듈의 모든 구현이 상기 구성 파일을 사용하도록 상기 구성 파일을 불러들일 수 있도록 상기 구성 파일이 데이터 저장소에 저장되고,
    상기 구성 파일은 식별자에 의해 고유하게 식별되며, 상기 식별자는 상기 소프트웨어 모듈과 고유하게 연관되는, 시스템.
  2. 제1항에 있어서, 상기 소프트웨어 모듈은 신경망을 구현하는, 시스템.
  3. 제2항에 있어서, 상기 구성 파일은 상기 신경망에 대한 하이퍼 파라미터로서 사용될 값의 범위를 포함하는, 시스템.
  4. 제2항에 있어서, 상기 구성 파일은 상기 프로세스 에이전트 모듈이 상기 소프트웨어 모듈의 다중 인스턴스를 런칭하게 하는, 시스템.
  5. 제4항에 있어서, 상기 소프트웨어 모듈의 다중 인스턴스 각각은 상이한 하이퍼 파라미터 값 세트를 사용하는, 시스템.
  6. 제5항에 있어서, 상기 소프트웨어 모듈의 각 인스턴스는 상기 프로세스 에이전트 모듈로 전송되는 출력을 생성하는, 시스템.
  7. 제6항에 있어서, 상기 프로세스 에이전트 모듈은 상기 소프트웨어 모듈의 상기 인스턴스의 출력을 평가하고, 상기 소프트웨어 모듈의 다중 인스턴스의 출력에 기초하여 상기 신경망에 대한 최적 하이퍼 파라미터 세트를 결정하는, 시스템.
  8. 제1항에 있어서, 상기 구성 파일은 상기 소프트웨어 모듈에 대한 파라미터로서 사용될 값의 범위를 포함하고, 상기 파라미터는 상기 소프트웨어 모듈의 성능에 영향을 미치는 값인, 시스템.
  9. 제8항에 있어서, 상기 구성 파일은 상기 프로세스 에이전트 모듈이 상기 소프트웨어 모듈의 다중 인스턴스를 런칭하게 하는, 시스템.
  10. 제4항에 있어서, 상기 소프트웨어 모듈의 다중 인스턴스 각각은 상이한 파라미터 값 세트를 사용하는, 시스템.
  11. 제10항에 있어서, 상기 소프트웨어 모듈의 각 인스턴스는 상기 프로세스 에이전트 모듈로 전송되는 출력을 생성하는, 시스템.
  12. 제11항에 있어서, 상기 프로세스 에이전트 모듈은 상기 소프트웨어 모듈의 상기 인스턴스의 출력을 평가하고, 상기 소프트웨어 모듈의 다중 인스턴스의 출력에 기초하여 상기 소프트웨어 모듈에 대한 최적의 파라미터 세트를 결정하는, 시스템.
  13. 소프트웨어 모듈의 다중 인스턴스를 런칭하기 위한 시스템으로서, 상기 시스템은:
    상기 소프트웨어 모듈의 상기 다중 인스턴스를 구현하는데 사용하기 위한 구성을 상세히 설명하는 구성 파일;
    상기 소프트웨어 모듈의 상기 다중 인스턴스를 구현하기 위해 적어도 하나의 컴퓨터 시스템을 구성하는데 사용하기 위한 프로세스 에이전트 모듈 - 상기 프로세스 에이전트 모듈은 상기 구성 파일을 사용하여 상기 적어도 하나의 컴퓨터 시스템을 구성함 - 을 포함하며;
    상기 구성 파일은 식별자에 의해 고유하게 식별되며, 상기 식별자는 상기 소프트웨어 모듈과 고유하게 연관되는, 시스템.
  14. 제13항에 있어서, 상기 소프트웨어 모듈의 모든 구현이 상기 구성 파일을 사용하도록 상기 구성 파일을 불러들일 수 있도록 상기 구성 파일이 데이터 저장소에 저장되는, 시스템.
  15. 제13항에 있어서, 상기 구성 파일은 상기 소프트웨어 모듈에 대한 파라미터로서 사용될 값의 범위를 포함하고, 상기 파라미터는 상기 소프트웨어 모듈의 성능에 영향을 미치는 값인, 시스템.
  16. 제14항에 있어서, 상기 소프트웨어 모듈의 상기 다중 인스턴스 각각은 상이한 파라미터 값 세트를 사용하는, 시스템.
  17. 제13항에 있어서, 상기 소프트웨어 모듈의 각 인스턴스는 상기 프로세스 에이전트 모듈로 전송되는 출력을 생성하는, 시스템.
  18. 제17항에 있어서, 상기 프로세스 에이전트 모듈은 상기 소프트웨어 모듈의 상기 인스턴스의 출력을 평가하고, 상기 소프트웨어 모듈의 상기 다중 인스턴스의 출력에 기초하여 상기 소프트웨어 모듈에 대한 최적의 파라미터 세트를 결정하는, 시스템.
  19. 소프트웨어 모듈의 적어도 하나의 인스턴스를 런칭하는 방법으로서, 상기 방법은:
    상기 소프트웨어 모듈의 상기 적어도 하나의 인스턴스를 구현하는데 사용하기 위한 구성을 상세히 설명하는 구성 파일을 제공하는 단계;
    상기 구성 파일을 고유하게 식별하는 식별자를 제공하는 단계 - 상기 식별자는 상기 소프트웨어 모듈과 고유하게 연관됨;
    상기 구성 파일에 적어도 부분적으로 기초하여 상기 소프트웨어 모듈의 다중 인스턴스를 구현하기 위해 적어도 하나의 실행 환경을 프로세스 에이전트 모듈에 의해, 구성하는 단계; 및
    상기 소프트웨어 모듈의 상기 다중 인스턴스를 런칭하는 단계를 포함하는, 런칭 방법.
  20. 제19항에 있어서, 상기 소프트웨어 모듈은 신경망을 구현하고, 상기 구성 파일을 제공하는 단계는 상기 소프트웨어 모듈의 하이퍼 파라미터로서 사용될 값의 범위를 제공하는 단계를 포함하는, 런칭 방법.


KR1020217036785A 2019-04-12 2020-04-08 소프트웨어 모듈 개발을 위한 시스템 KR20220113873A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201962833193P 2019-04-12 2019-04-12
US62/833,193 2019-04-12
PCT/CA2020/050462 WO2020206536A1 (en) 2019-04-12 2020-04-08 System for software module development

Publications (1)

Publication Number Publication Date
KR20220113873A true KR20220113873A (ko) 2022-08-17

Family

ID=72750794

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217036785A KR20220113873A (ko) 2019-04-12 2020-04-08 소프트웨어 모듈 개발을 위한 시스템

Country Status (8)

Country Link
US (1) US20220043660A1 (ko)
EP (1) EP3953809A4 (ko)
JP (1) JP2022528787A (ko)
KR (1) KR20220113873A (ko)
CN (1) CN114341806A (ko)
AU (1) AU2020256639A1 (ko)
CA (1) CA3136641C (ko)
WO (1) WO2020206536A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114490015A (zh) * 2020-11-13 2022-05-13 华为技术有限公司 配置计算模式的方法、装置及计算设备

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7577722B1 (en) * 2002-04-05 2009-08-18 Vmware, Inc. Provisioning of computer systems using virtual machines
US7194738B2 (en) * 2002-04-09 2007-03-20 Synnex Technology International Corporation Method of creating image files and installing software bundles on target computers
US9015180B1 (en) * 2007-05-09 2015-04-21 Vmware, Inc. Repository including file identification
US8001083B1 (en) * 2007-05-09 2011-08-16 Vmware, Inc. Repository including version management
US9304819B2 (en) * 2007-05-29 2016-04-05 Red Hat, Inc. Virtual deployment
US8171141B1 (en) * 2009-04-02 2012-05-01 Vmware, Inc. Provisioning system including stack manager
US9703550B1 (en) * 2009-09-29 2017-07-11 EMC IP Holding Company LLC Techniques for building code entities
US10296317B2 (en) * 2010-12-20 2019-05-21 Microsoft Technology Licensing, Llc Continuous publication of application to remote computing devices
US8606892B2 (en) * 2011-11-28 2013-12-10 Wyse Technology Inc. Deployment and updating of applications and drivers on a client device using an extensible markup language (XML) configuration file
US9116735B2 (en) * 2012-03-07 2015-08-25 Microsoft Technology Licensing, Llc Offline provisioning of virtual machines
US20130290541A1 (en) * 2012-04-25 2013-10-31 Hitachi ,Ltd. Resource management system and resource managing method
US9183062B2 (en) * 2013-02-25 2015-11-10 International Business Machines Corporation Automated application reconfiguration
US9386079B2 (en) * 2014-06-10 2016-07-05 American Megatrends, Inc. Method and system of virtual desktop infrastructure deployment studio
CN105446705B (zh) * 2014-06-30 2019-06-21 国际商业机器公司 用于确定配置文件的特性的方法和装置
CN105446709B (zh) * 2014-07-29 2019-06-21 阿里巴巴集团控股有限公司 一种Java应用处理方法及装置
US10091055B2 (en) * 2015-02-13 2018-10-02 Amazon Technologies, Inc. Configuration service for configuring instances
JP6574942B2 (ja) * 2016-02-17 2019-09-18 ソニー株式会社 情報処理方法および情報処理装置
US10503623B2 (en) * 2016-04-29 2019-12-10 Ca, Inc. Monitoring containerized applications
US10152387B1 (en) * 2016-12-23 2018-12-11 EMC IP Holding Company LLC Instant start of virtual machine from archive copy on backup media
US11290332B2 (en) * 2019-12-11 2022-03-29 Oracle International Corporation System and method for modelling cloud networks for automation

Also Published As

Publication number Publication date
EP3953809A1 (en) 2022-02-16
JP2022528787A (ja) 2022-06-15
AU2020256639A1 (en) 2021-12-09
EP3953809A4 (en) 2023-01-11
CN114341806A (zh) 2022-04-12
WO2020206536A1 (en) 2020-10-15
CA3136641C (en) 2024-03-26
US20220043660A1 (en) 2022-02-10
CA3136641A1 (en) 2020-10-15

Similar Documents

Publication Publication Date Title
EP3285170B1 (en) Application profiling job management system, program, and method
WO2014143247A1 (en) Increasing performance at runtime from trace data
CN111507476A (zh) 部署机器学习模型的方法、设备和计算机程序产品
US11816545B2 (en) Optimizing machine learning models
KR20190081306A (ko) 빅데이터 분석 소프트웨어에 대한 자원 할당 방법, 상기 방법을 이용하는 가상화 자원 할당 장치
KR102167747B1 (ko) 사용자 이용 패턴을 신경망 알고리즘으로 분석하여 다음 어플리케이션을 예측하는 모바일 디바이스 메모리 관리 장치 및 방법
CN111160539A (zh) 运行人工神经网络的计算处理图的系统及方法
US10310877B2 (en) Category based execution scheduling
KR20220113873A (ko) 소프트웨어 모듈 개발을 위한 시스템
JP2023548500A (ja) ワークフローパッチング
WO2020169182A1 (en) Method and apparatus for allocating tasks
EP3432144A1 (en) A computer-implemented method and system for automatically recommending a code modification
US11573777B2 (en) Method and apparatus for enabling autonomous acceleration of dataflow AI applications
US20220058060A1 (en) Ranking computing resources
EP3330854A1 (en) Automatic selection of infrastructure on a hybrid cloud environment
US9853871B2 (en) Dynamic collaboration service platform and method for providing an application service at the same platform
US20220050767A1 (en) Build process for application performance
CN111459576B (zh) 一种数据分析处理系统和模型运行方法
Araujo De Oliveira A Requirements-Driven Approach for Building Architecture Projects of Self-Adaptive Systems
CN114968201A (zh) 一种编译方法、编译装置、计算机设备及存储介质
CN117312839A (zh) 模型训练方法、装置、系统及相关设备
Louët et al. StressCloud: A Virtualized Infrastructure Load Injection Tool

Legal Events

Date Code Title Description
N231 Notification of change of applicant