JP2022528787A - ソフトウェアモジュール開発用システム - Google Patents

ソフトウェアモジュール開発用システム Download PDF

Info

Publication number
JP2022528787A
JP2022528787A JP2021560736A JP2021560736A JP2022528787A JP 2022528787 A JP2022528787 A JP 2022528787A JP 2021560736 A JP2021560736 A JP 2021560736A JP 2021560736 A JP2021560736 A JP 2021560736A JP 2022528787 A JP2022528787 A JP 2022528787A
Authority
JP
Japan
Prior art keywords
software module
configuration file
instances
process agent
software
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
JP2021560736A
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 JP2022528787A publication Critical patent/JP2022528787A/ja
Pending legal-status Critical Current

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

Landscapes

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

Abstract

本発明は、ソフトウェアモジュール開発に使用されるシステムおよび方法に関する。設定ファイルおよびプロセスエージェントモジュールは、コンピュータシステムと連携して動作し、開発中のユーザのソフトウェアモジュールの1つまたは複数のインスタンスを実装するために、1つまたは複数の実行環境を準備/提供する。設定ファイルには、実行環境の制限と機能、およびソフトウェアモジュールが必要とするパラメータを定義するハードウェアおよびソフトウェアの設定が含まれる。プロセスエージェントは、実行環境を起動し、実行環境で実行されるソフトウェアモジュールが設定ファイルに記載されているリソースにアクセスできるようにする。ソフトウェアモジュールの実行が完了すると、パフォーマンスの結果がプロセスエージェントに送られて、照合および分析が行われる。これらの結果は、ソフトウェアモジュールのどの実装が最良のパフォーマンスを発揮したかを決定するために使用される。【選択図】図1

Description

本発明は、ソフトウェア開発に関する。より具体的には、本発明は、ソフトウェアモジュールの開発に使用されるシステムおよび方法に関する。
近年、人工知能、より具体的には機械学習やニューラルネットワークへの関心と発展が爆発的に高まっており、これらの技術の開発に使用されるシステムの開発が急務となっている。そのため、より多くのコンピュータ科学者、開発者やエンジニアが技術の限界に挑戦し、より良いシステムを実現しようとしている。しかしながら、その一方で、これらの科学者、エンジニアや開発者にとっては、様々な問題が発生している。
ソフトウェアを開発する際には、設定の違いがパフォーマンスに対して異なる結果をもたらす。そのため、開発中のソフトウェアのパフォーマンスを最適化するためには、開発者は、これらの設定の違いを記録し、最も良好な結果が得られた設定を保存しておく必要がある。しかしながら、ソフトウェアのなかには、数百とは言わないまでも数十の設定を有するものもあり、このような多数のパラメータや設定を記録しておくことは、負担であるとしか言いようがない。また、ソフトウェアを動作させるシステムの設定も、ソフトウェアのパフォーマンスに影響を与える。したがって、ソフトウェアの様々な設定が同じ土俵で戦えるように、システムの設定を把握する必要がある。これもまた、大変な負担になる。
ソフトウェア開発は、様々な形態の実行環境を用いて実行されるため、上記はより困難になることは明らかである。開発中のソフトウェアの様々な設定をすべて正しく評価するためには、そのソフトウェアを実行する実行環境の設定を、可能な限り同一にする必要がある。
上述した問題は、ニューラルネットワークや機械学習システムを開発する際にはさらに深刻になる。このようなシステムで使用されるハイパーパラメータは、数百にも及ぶことがあり、開発中のソフトウェアシステムの各バージョンを同一の実行環境で確実に実行することは、困難であるとしか言いようがない。それだけではなく、使用しているハイパーパラメータを変更するたびに、異なる結果となる場合がある。したがって、各システムのパフォーマンスを照合、追跡および管理して、正しいパラメータ設定が正しいパフォーマンス指標に関連付けられることを確実にする必要がある。
したがって、上述した問題に対処するシステムおよび/または方法が求められている。好ましくは、このような方法またはシステムは、上述した問題を克服しないまでも緩和し、また、好ましくは、このようなシステムまたは方法は、開発者および/または研究者にとっても使用しやすい。
本発明は、ソフトウェアモジュール開発に使用されるシステムおよび方法を提供する。該システムにおいて、設定ファイルおよびプロセスエージェントモジュールは、コンピュータシステムと連携して動作し、開発中のユーザのソフトウェアモジュールの1つまたは複数のインスタンスを実装するために、1つまたは複数の実行環境を準備/提供(provisioning)する。設定ファイルには、実行環境の制限と機能、およびソフトウェアモジュールが必要とするパラメータを定義するハードウェアおよびソフトウェアの設定が含まれる。プロセスエージェントは、実行環境を起動し、実行環境で実行されるソフトウェアモジュールが設定ファイルに記載されているリソースにアクセスできるようにする。ソフトウェアモジュールの実行が完了すると、パフォーマンスの結果がプロセスエージェントに送られて、照合および分析が行われる。これらの結果は、ソフトウェアモジュールのどの実装が最良のパフォーマンスを発揮したかを決定するために使用される。特定の実装例において、プロセスエージェントは、仮想マシンそのものであり、他の仮想マシン、実行環境や他のジョブの設定、提供および起動を管理する。
第1の態様において、本発明は、ソフトウェアモジュールの1つまたは複数のインスタンスを準備/提供および起動するためのシステムを提供する。該システムは、
・ ソフトウェアモジュールの少なくとも1つのインスタンスの実装に使用されるハードウェアおよびソフトウェアの設定を詳細に記述した設定ファイルと、
・ ソフトウェアモジュールの少なくとも1つのインスタンスを実装するために、少なくとも1つのコンピュータシステムの設定に使用されるプロセスエージェントモジュールであって、少なくとも1つのコンピュータシステムを設定するために設定ファイルを使用する、プロセスエージェントモジュールと、
を備える。設定ファイルは、検索可能であるようにデータストレージに格納される。これにより、ソフトウェアモジュールのすべての実装が設定ファイルを使用することができる。設定ファイルは、識別子によって一意に識別される。識別子は、ソフトウェアモジュールと一意に関連付けられる。
第2の態様において、本発明は、ソフトウェアモジュールの複数のインスタンスを起動するためのシステムを提供する。該システムは、
・ ソフトウェアモジュールの複数のインスタンスの実装に使用される設定を詳細に記述した設定ファイルと、
・ ソフトウェアモジュールの複数のインスタンスを実装するために、少なくとも1つのコンピュータシステムの設定に使用されるプロセスエージェントモジュールであって、少なくとも1つのコンピュータシステムを設定するために設定ファイルを使用する、プロセスエージェントと、
を備える。設定ファイルは、識別子によって一意に識別される。識別子は、ソフトウェアモジュールと一意に関連付けられる。
以下、本発明の実施形態を、図面を参照して説明する。これらの図面に示される同一の参照符号は、同一の要素を示している。
本発明の一態様によるシステムの構成要素を示すブロック図である。
一態様において、本発明は、設定ファイルおよびプロセスエージェントモジュールを含むシステムを提供する。設定ファイルとプロセスエージェントモジュールとが協力して上述した問題に対処する。動作中には、設定ファイルは、ユーザによって準備され、ユーザが準備中/開発中のソフトウェアモジュールと一意に関連付けられる。設定ファイルは、ユーザのソフトウェアモジュールを実行する仮想マシンに必要なソフトウェアおよびハードウェアの設定を含むようにユーザによって準備される。これには、仮想マシンで利用可能なRAM(ランダムアクセスメモリ)の容量、仮想マシンに割り当てられるまたは仮想マシンで利用可能なプロセッサコア(またはプロセッサ)の数、仮想マシンに割り当てられるGPUの数、およびマルチタスク環境を用いる一部の実装例において、ソフトウェアモジュールのプロセスに与えられる優先度が含まれる。また、設定ファイルには、ソフトウェアモジュールが必要とする様々なパラメータの範囲が含まれてもよい。例えば、ソフトウェアモジュールは、ニューラルネットワークを実装している。そのため、ニューラルネットワーク内の様々なノードは、ハイパーパラメータ値を必要とする場合がある。設定ファイルには、ニューラルネットワーク内の様々なノードのための様々なハイパーパラメータの範囲が含まれてもよい。
プロセスエージェントは、設定ファイルと協力して、設定ファイルの内容に基づいて実行環境の設定を実行するように動作する。このように、プロセスエージェントは、設定ファイルの内容を読み取り、必要に応じて、その内容に基づいて1つまたは複数の実行環境を準備/提供する。また、プロセスエージェントは、設定ファイルに一意に関連付けられたソフトウェアモジュールを実際に起動し、必要に応じて、ソフトウェアモジュールの関連する構成要素について、設定ファイルのパラメータ値を使用する。設定ファイルには、ソフトウェアモジュールの試行/テスト/実装の回数などのパラメータも含まれてもよいことに留意されたい。このように、プロセスエージェントは、これらの試行パラメータに基づいて、ソフトウェアモジュールが必要とする数のインスタンスを並行して実行するために必要な数の実行環境を準備/提供する。例えば、ソフトウェアモジュールの5つのインスタンスが必要であり、使用される特定のパラメータセットを各インスタンスが有することを設定ファイルが示している場合、プロセスエージェントは、5つの同一の実行環境を設定および起動する。これらの実行環境は、関連するパラメータでソフトウェアモジュールを実行する。
また、プロセスエージェントは、テスト中および/または開発中のソフトウェアモジュールの様々なインスタンスによって生成されたあらゆる結果を受け取って照合することもできる。これには、ソフトウェアモジュールの様々に設定されたインスタンス(パラメータによる)のパフォーマンスデータが含まれる。これにより、プロセスエージェントは、様々な結果を収集、照合および(パフォーマンス結果に応じて)順位付けすることができる。このように、プロセスエージェントは、どのパラメータを使用したときにソフトウェアモジュールの最良のパフォーマンスの設定が得られたかを決定することができる。次いで、これらの結果と順位がユーザに提示される。ユーザは、必要または所望に応じて、最適なパラメータが設定ファイルにあるように、設定ファイルを書き換え/修正することができる。
なお、設定ファイルおよびプロセスエージェントによって制御、準備/提供および起動される実行環境の概念には、プラットフォームに依存しない環境で実行される孤立したリソース(CPU、RAM、GPU、ネットワークアダプタなど)が含まれ、それらのリソースをユーザが定義したプログラムのセットに公開することができる。「実行環境」の例として、仮想マシン、プロセス仮想マシン、Dockerコンテナ、および物理マシンの完全な仮想化またはエミュレーションが挙げられる。このように、プロセスエージェントが実行環境を起動する際には、具体的に準備/提供された仮想マシン、(特定のリソースで準備/提供される)物理マシンのエミュレーション、または単にユーザのプログラム(すなわちソフトウェアモジュール)が利用可能な特定のリソースで準備/提供された特定のソフトウェア環境を起動することが含まれる。
設定ファイルおよびプロセスエージェントを使用することで、さらなる利点が得られることに留意されたい。ソフトウェアモジュールに最適な(または最適に近い)パラメータが見つかり、設定ファイルに入力されると、そのファイルをデータストレージに格納することができる。ソフトウェアモジュールを再度実行または実装する際には、プロセスエージェントは、データストレージから設定ファイルを取得するだけで、そのソフトウェアモジュールに最適であると決定されたのと同じハードウェアおよびソフトウェアの設定を使用することができる。また、ソフトウェアモジュールに最適なパフォーマンスを提供することが判明した(現時点で設定ファイルの一部となっている)パラメータを使用することができる。これにより、ソフトウェアモジュールの実装を使用する際に、最適な設定を確実に使用することができる。また、研究者や開発者がソフトウェアモジュールを再実行する必要がある場合、最良のパフォーマンスを発揮したバージョンを確実に使用することができる。また、ソフトウェアモジュールのハードウェアおよびソフトウェアの設定に関わる条件が、以前に実装されたときのソフトウェアモジュールのものと同じであることを保証することができる。ソフトウェアモジュールのすべてのバージョンが同じハードウェアおよびソフトウェアの設定で実行されるため、研究者や開発者は、どの実験やバージョンでどの設定を使用したかを注意深くメモする必要がなくなる。ただし、ソフトウェアモジュールの設定は、そのソフトウェアモジュールの過去の実行履歴のみに基づく必要はない。設定ファイルにおける設定およびパラメータは、ソフトウェアモジュールの特定のニーズや、ソフトウェアモジュールが実装する可能性のあるモデルに基づいていてもよい。
なお、どの設定ファイルがどのソフトウェアモジュールに関連付けられているかを容易に識別できるように、設定ファイルとソフトウェアモジュールを一意に関連付けることができることに留意されたい。これは、設定ファイルとソフトウェアモジュールの両方に埋め込まれた一意の識別コードによって行うことができる。このように、ソフトウェアモジュールを実装する前に、プロセスエージェントは、ソフトウェアモジュールをチェックし、データストレージを検索して、同じ識別コードをもつ設定ファイルが存在するかどうかを決定することができる。そのような設定ファイルが存在する場合、この設定ファイルが取得され、その設定およびパラメータが、ソフトウェアモジュールを実行する実行環境で実装または使用される。
本発明のシステムの使いやすさを確保するために、プロセスエージェントおよび設定ファイルは、ソフトウェアモジュールの特性に依存しないようになっている。これは、TensorFlow、Python、Torchまたは他の適切なシステムおよび/またはプログラミング言語を使用して、ソフトウェアモジュールを開発/作製することができることを意味する。好ましくは、設定ファイルには、ソフトウェアモジュールの作製に使用されるシステムのタイプ/特性に関する指標が含まれる。プロセスエージェントがこの指標を使用して、設定ファイル内のパラメータがその特定のシステムでの使用に適していることを確認することができる。また、プロセスエージェントがこの指標を使用して、このシステムに必要なライブラリやサポートリソースがソフトウェアモジュールで利用可能であることを保証することができる。代替例において、設定ファイルには、ソフトウェアモジュールが実行/実装のために必要とする可能性のあるライブラリや他のモジュール(すなわち、標準セットの一部ではないライブラリや他のモジュール)に関する指標が含まれてもよい。プロセスエージェントがこの指標を使用して、これらのライブラリやモジュールが、プロセスエージェントによって起動される様々な仮想マシンで利用可能且つアクセス可能であることを保証することができる。また、一実装例において、プロセスエージェントは、本明細書に記載されているようなシステム全体の機能性に基づいて他の仮想マシン(またはジョブや他の実行環境の準備/提供)を起動する仮想マシンであることに留意されたい。代替的に、プロセスエージェントは、仮想マシンを起動したり、実行環境を準備/提供したりするスタンドアロンのサブシステムであってもよい。本明細書に記載するように、プロセスエージェントは(仮想マシンとしてであれ、スタンドアロンサブシステムまたはプロセスとしてであれ)、設定ファイル内の内容に基づいて、実行環境の設定、準備/提供および実行/起動を統括する。プロセスエージェントは、1つのサーバ/クラスタで常駐/起動して、他のサーバ/クラスタ上の仮想マシンを起動/制御してもよいし、プロセスエージェントとそれが起動する実行環境がすべて同じサーバ/クラスタに常駐していてもよい。
ニューラルネットワークベースのソフトウェアモジュールに特有の実装において、設定ファイルには、ニューラルネットワークがハイパーパラメータとして使用するための値の範囲が含まれてもよい。この値は、プロセスエージェントがソフトウェアモジュールの複数のインスタンス(すなわち、各インスタンスが設定ファイルで与えられた範囲に基づいて異なるハイパーパラメータのセットを有する、ニューラルネットワークの複数のインスタンス)を起動するための基準として使用されてもよい。これにより、プロセスエージェントは、ソフトウェアモジュールの複数の並列インスタンスを、同一の仮想マシン/実行環境上で実行させることができる。ソフトウェアモジュールのこれらの複数のインスタンスを同時に並行して実行することができるが、システムの実装に応じて、プロセスエージェントは、様々な仮想マシン/実行環境を、順番に、または千鳥状に並行して、または同時に並行して動作するように設定してもよい。
本発明の一変形例において、システムは、単一または複数のソフトウェアモジュールの設定ファイル内の内容にかかわらず、これらのモジュールの実行履歴に基づいて、モジュールの最適な設定を決定することができる。一実装例において、特定のモジュール(しきい値は設定可能な設定可能変数)の実行が十分にあった場合、システムは、その実行データを機械学習モデルに送信して、1つまたは複数の最適な設定パラメータを決定する。その特定のモジュールの後続の実行は、1つまたは複数の最適なパラメータを使用して準備/提供または設定される。例えば、特定のソフトウェアモジュールの実行が100回行われた後に、そのプロセスに対して設定ファイルに5つのGPUの準備/提供が記載されている場合、その実行データは、機械学習システムに送られる。機械学習システムは、(実行データから)5つのGPUが準備/提供されているが、特定のモジュールでは実際には3つのGPUしか使用していないと判断した場合、その特定のモジュールにおける後続の実行では、設定ファイルに記載されている5つのGPUではなく、3つのGPUが設定される。このように、システムは、ソフトウェアモジュールの十分な量の実行データに基づいて、そのソフトウェアモジュールのリソース消費量を予測的に決定することができる。予測された消費量は、ソフトウェアモジュールのリソース消費量を最適化または削減することを目的として、そのソフトウェアモジュールの今後の1つまたは複数の実行を準備/提供するために使用することができる。また、システムは、ソフトウェアモジュールがリソース不足に陥らないように、実行に必要なリソースの最高レベルの最少量を決定することもできる。
図1を参照すると、本発明の一態様によるシステムの構成要素のブロック図が示されている。システム10は、設定ファイル20と、プロセスエージェント30と、を含む。プロセスエージェント30は、コンピュータシステム40と連携して動作し、設定ファイル20に記載されている設定パラメータに基づいて、1つまたは複数の仮想マシン/実行環境50を準備/提供、設定および起動する。様々な実行環境が起動された後、設定ファイル20は、後に使用するためにデータストレージ60に格納することができる。設定ファイル20は、ソフトウェアモジュールを再実行または再実装する必要があるときに、プロセスエージェント30によってデータストレージ60から取得することができる。
上述したように、起動したソフトウェアモジュールのパフォーマンス指標は、収集、照合および分析のためにプロセスエージェントに送られる。ソフトウェアモジュールの最適な動作パラメータが決定されると、プロセスエージェントによるパフォーマンス指標の分析によって自動的に、またはユーザがソフトウェアモジュールで使用するパラメータを分析および選択することによって手動で、データストレージに格納されている設定ファイルにこれらのパラメータを含めることができる。これにより、今後のソフトウェアモジュールの実行または実装において、設定ファイルに格納されている最適なパラメータを使用することができる。
上記のことから、システムは、収集したソフトウェアモジュールの実行データに基づいて、好ましい最適な設定やパラメータを自動的に決定することもできる。システムは、機械学習モデルまたはその他の適切なデータ分析モデルを使用して、ソフトウェアモジュールの適切な数の実行データのセットを分析し、この分析結果に基づいて、システムは、モジュールの最適なパラメータおよび設定を予測することができる。これらのパラメータおよび設定は、必要に応じて、設定ファイルのパラメータの代わりに使用することができる。上述したように、この機能により、研究者やユーザは、ソフトウェアモジュールの今後の実行が最適化され、ソフトウェアモジュールがリソース不足に陥らないようにしながら、最小限のリソースが使用されるようにすることができる。
なお、本発明の様々な態様は、全体的なソフトウェアシステムにおけるソフトウェアモジュールとして実装されてもよいことに留意されたい。このように、本発明は、実行されたときに、所定の機能を有する様々なソフトウェアモジュールを実装する、コンピュータで実行可能な命令の形態をとることができる。
本発明の実施形態は、方法ステップとしてプログラムされたコンピュータプロセッサまたは同様の装置によって実行されてもよく、これらのステップを実行するための手段が設けられた電子システムによって実行されてもよい。同様に、コンピュータディスク、CD-ROM、RAM(ランダムアクセスメモリ)、ROM(リードオンリーメモリ)、または当該技術分野で知られている同様のコンピュータソフトウェア記録媒体などの電子記憶手段が、上記のような方法ステップを実行するようにプログラムされていてもよい。また、これらの方法ステップを表す電子信号が、通信ネットワークを介して送信されてもよい。
本発明の実施形態は、任意の従来のコンピュータプログラミング言語で実装されてもよい。例えば、好ましい実施形態は、手続き型プログラミング言語(C言語やGoなど)で実装されてもよく、またはオブジェクト指向プログラミング言語(C++、Java、PHP、Python、C#など)で実装されてもよい。本発明の代替実施形態は、あらかじめプログラムされたハードウェア要素、他の関連構成要素、またはハードウェアおよびソフトウェアの構成要素の組み合わせとして実装されてもよい。
本実施形態は、コンピュータシステムで使用するためのコンピュータプログラム製品として実装され得る。このような実装例には、コンピュータで読み取り可能な記録媒体(ディスク、CD-ROM、ROM、固定ディスクなど)などの有形媒体上に固定された一連のコンピュータ命令、または媒体上のネットワークに接続された通信アダプタなどのモデムや他のインタフェース装置を介して、コンピュータシステムに送信可能な一連のコンピュータ命令が含まれる。媒体は、有形の媒体(光通信や電気通信線など)であってもよく、無線技術で実装された媒体(マイクロ波や赤外線などの送信技術など)であってもよい。一連のコンピュータ命令は、本明細書に記載されているすべてまたは一部の機能を包含する。当業者であれば、このようなコンピュータ命令は、多くのコンピュータアーキテクチャまたはオペレーティングシステムで使用するために、多くのプログラミング言語で記載することができることを理解するであろう。さらに、このような命令は、半導体、磁気、光学またはその他の記憶装置を含む任意の記憶装置に格納されてもよく、光学、赤外線、マイクロ波またはその他の伝送技術などの通信技術を使用して送信されてもよい。このようなコンピュータプログラム製品は、印刷または電子文書を添付したリムーバブル媒体(市販ソフトウェアなど)として配布されてもよく、コンピュータシステム(システムROM上または固定ディスク上など)に予め組み込まれていてもよく、ネットワーク(インターネットやワールドワイドウェブなど)上のサーバから配布されてもよい。言うまでもなく、本発明の一部の実施形態は、ソフトウェア(コンピュータプログラム製品など)とハードウェアの両方の組み合わせとして実装されてもよい。さらに、本発明の別の実施形態は、完全にハードウェアとして、または完全にソフトウェア(コンピュータプログラム製品)として実装されてもよい。
当業者であれば、上述した実施形態の代替構造や実施形態、または変形例を想起することができるであろう。ただし、それらはすべて、添付の特許請求の範囲で定義される本発明の範囲内に含まれるように意図されている。

Claims (18)

  1. ソフトウェアモジュールの1つまたは複数のインスタンスを準備/提供および起動するためのシステムであって、
    ・ 前記ソフトウェアモジュールの少なくとも1つの前記インスタンスの実装に使用されるハードウェアおよびソフトウェアの設定を詳細に記述した設定ファイルと、
    ・ 前記ソフトウェアモジュールの前記少なくとも1つのインスタンスを実装するために、少なくとも1つのコンピュータシステムの設定に使用されるプロセスエージェントモジュールであって、前記少なくとも1つのコンピュータシステムを設定するために前記設定ファイルを使用する、プロセスエージェントモジュールと、
    を備え、
    ・ 前記設定ファイルは、検索可能であるようにデータストレージに格納され、これにより、前記ソフトウェアモジュールのすべての実装が前記設定ファイルを使用することができ、
    ・ 前記設定ファイルは、識別子によって一意に識別され、前記識別子は、前記ソフトウェアモジュールと一意に関連付けられる、
    システム。
  2. 前記ソフトウェアモジュールは、ニューラルネットワークを実装している、
    請求項1に記載のシステム。
  3. 前記設定ファイルには、前記ニューラルネットワークのためのハイパーパラメータとして使用される値の範囲が含まれる、
    請求項2に記載のシステム。
  4. 前記設定ファイルは、前記プロセスエージェントに、前記ソフトウェアモジュールの前記複数のインスタンスを起動させる、
    請求項2に記載のシステム。
  5. 前記ソフトウェアモジュールの前記複数のインスタンスの各々は、異なるハイパーパラメータ値のセットを使用する、
    請求項4に記載のシステム。
  6. 前記ソフトウェアモジュールの前記インスタンスの各々は、前記プロセスエージェントに送られる出力を生成する、
    請求項5に記載のシステム。
  7. 前記プロセスエージェントは、前記ソフトウェアモジュールの前記インスタンスの出力を評価し、前記ソフトウェアモジュールの前記複数のインスタンスの前記出力に基づいて、前記ニューラルネットワークの最適な前記ハイパーパラメータのセットを決定する、
    請求項6に記載のシステム。
  8. 前記設定ファイルには、前記ソフトウェアモジュールのためのパラメータとして使用される値の範囲が含まれ、前記パラメータは、前記ソフトウェアモジュールのパフォーマンスに影響を与える値である、
    請求項1に記載のシステム。
  9. 前記設定ファイルは、前記プロセスエージェントに、前記ソフトウェアモジュールの前記複数のインスタンスを起動させる、
    請求項8に記載のシステム。
  10. 前記ソフトウェアモジュールの前記複数のインスタンスの各々は、異なるパラメータ値のセットを使用する、
    請求項4に記載のシステム。
  11. 前記ソフトウェアモジュールの前記インスタンスの各々は、前記プロセスエージェントに送られる出力を生成する、
    請求項10に記載のシステム。
  12. 前記プロセスエージェントは、前記ソフトウェアモジュールの前記インスタンスの出力を評価し、前記ソフトウェアモジュールの前記複数のインスタンスの前記出力に基づいて、前記ソフトウェアモジュールの最適なパラメータのセットを決定する、
    請求項11に記載のシステム。
  13. ソフトウェアモジュールの複数のインスタンスを起動するためのシステムであって、
    ・ 前記ソフトウェアモジュールの前記複数のインスタンスの実装に使用される設定を詳細に記述した設定ファイルと、
    ・ 前記ソフトウェアモジュールの前記複数のインスタンスを実装するために、少なくとも1つのコンピュータシステムの設定に使用されるプロセスエージェントモジュールであって、前記少なくとも1つのコンピュータシステムを設定するために前記設定ファイルを使用する、プロセスエージェントモジュールと、
    を備え、
    ・ 前記設定ファイルは、識別子によって一意に識別され、前記識別子は、前記ソフトウェアモジュールと一意に関連付けられる、
    システム。
  14. 前記設定ファイルは、検索可能であるようにデータストレージに格納され、これにより、前記ソフトウェアモジュールのすべての実装が前記設定ファイルを使用することができる、
    請求項13に記載のシステム。
  15. 前記設定ファイルには、前記ソフトウェアモジュールのためのパラメータとして使用される値の範囲が含まれ、前記パラメータは、前記ソフトウェアモジュールのパフォーマンスに影響を与える値である、
    請求項13に記載のシステム。
  16. 前記ソフトウェアモジュールの前記複数のインスタンスの各々は、異なるパラメータ値のセットを使用する、
    請求項14に記載のシステム。
  17. 前記ソフトウェアモジュールの前記インスタンスの各々は、前記プロセスエージェントに送られる出力を生成する、
    請求項13に記載のシステム。
  18. 前記プロセスエージェントは、前記ソフトウェアモジュールの前記複数のインスタンスの前記出力を評価し、前記ソフトウェアモジュールの前記複数のインスタンスの前記出力に基づいて、前記ソフトウェアモジュールの最適なパラメータのセットを決定する、
    請求項17に記載のシステム。
JP2021560736A 2019-04-12 2020-04-08 ソフトウェアモジュール開発用システム Pending JP2022528787A (ja)

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
JP2022528787A true JP2022528787A (ja) 2022-06-15

Family

ID=72750794

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021560736A Pending JP2022528787A (ja) 2019-04-12 2020-04-08 ソフトウェアモジュール開発用システム

Country Status (7)

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

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 (8)

* 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
US9304819B2 (en) * 2007-05-29 2016-04-05 Red Hat, Inc. Virtual deployment
US9875174B1 (en) * 2011-09-21 2018-01-23 Amazon Technologies, Inc. Optimizing the execution of an application executing on a programmable execution service
US9116735B2 (en) * 2012-03-07 2015-08-25 Microsoft Technology Licensing, Llc Offline provisioning of virtual machines
US9183062B2 (en) * 2013-02-25 2015-11-10 International Business Machines Corporation Automated application reconfiguration
US9250893B2 (en) * 2014-05-14 2016-02-02 Western Digital Technologies, Inc. Virtualized and automated software build system
US10091055B2 (en) * 2015-02-13 2018-10-02 Amazon Technologies, Inc. Configuration service for configuring instances
WO2017141517A1 (ja) * 2016-02-17 2017-08-24 ソニー株式会社 情報処理方法および情報処理装置

Also Published As

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

Similar Documents

Publication Publication Date Title
US10320625B1 (en) Managing service deployment in a cloud computing environment
US9262231B2 (en) System and method for modifying a hardware configuration of a cloud computing system
US9152532B2 (en) System and method for configuring a cloud computing system with a synthetic test workload
US11128556B2 (en) Deploying, testing, monitoring, scaling, and healing virtual network functions in a software-defined network
Scheuner et al. Cloud work bench--infrastructure-as-code based cloud benchmarking
US20140245319A1 (en) Method for enabling an application to run on a cloud computing system
US20140047342A1 (en) System and method for allocating a cluster of nodes for a cloud computing system based on hardware characteristics
US20140047079A1 (en) System and method for emulating a desired network configuration in a cloud computing system
WO2014025585A1 (en) System and method for configuring cloud computing systems
WO2014025584A1 (en) System and method for tuning a cloud computing system
WO2014150422A1 (en) Application compatibility checking in a distributed computing environment
KR20190081306A (ko) 빅데이터 분석 소프트웨어에 대한 자원 할당 방법, 상기 방법을 이용하는 가상화 자원 할당 장치
US20190394087A1 (en) Automatic configuration of virtual network functions
CN115617364B (zh) Gpu虚拟化部署方法、系统、计算机设备和存储介质
US20160179570A1 (en) Parallel Computing Without Requiring Antecedent Code Deployment
JP2022528787A (ja) ソフトウェアモジュール開発用システム
WO2022100439A1 (en) Workflow patching
Zhang et al. Hadoop-benchmark: Rapid prototyping and evaluation of self-adaptive behaviors in hadoop clusters
Nielsen et al. Private cloud configuration with metaconfig
US12124858B2 (en) System for software module development
Barbosa et al. A mobile cloud computing testbed based on lightweight virtualization
Zhang et al. Tinyedge: Enabling rapid edge system customization for iot applications
Fernando et al. Autotuning multi-tiered applications for performance
EP4315055A1 (en) Managing deployment of an application
Stier et al. Performance evaluation of the CACTOS toolkit on a small cloud testbed: project deliverable D5. 5

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211214

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230331

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20230331

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230510

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240321

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240326