IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ノタ、インコーポレイテッドの特許一覧

特開2024-121771人工知能基盤のモデルのベンチマーク結果を提供するための方法及びデバイス(DEVICE AND METHOD FOR PROVIDING BENCHMARK RESULT OF ARTIFICIAL INTELLIGENCE BASED MODEL)
<>
  • 特開-人工知能基盤のモデルのベンチマーク結果を提供するための方法及びデバイス(DEVICE  AND  METHOD  FOR  PROVIDING  BENCHMARK  RESULT  OF  ARTIFICIAL  INTELLIGENCE  BASED  MODEL) 図1
  • 特開-人工知能基盤のモデルのベンチマーク結果を提供するための方法及びデバイス(DEVICE  AND  METHOD  FOR  PROVIDING  BENCHMARK  RESULT  OF  ARTIFICIAL  INTELLIGENCE  BASED  MODEL) 図2
  • 特開-人工知能基盤のモデルのベンチマーク結果を提供するための方法及びデバイス(DEVICE  AND  METHOD  FOR  PROVIDING  BENCHMARK  RESULT  OF  ARTIFICIAL  INTELLIGENCE  BASED  MODEL) 図3
  • 特開-人工知能基盤のモデルのベンチマーク結果を提供するための方法及びデバイス(DEVICE  AND  METHOD  FOR  PROVIDING  BENCHMARK  RESULT  OF  ARTIFICIAL  INTELLIGENCE  BASED  MODEL) 図4
  • 特開-人工知能基盤のモデルのベンチマーク結果を提供するための方法及びデバイス(DEVICE  AND  METHOD  FOR  PROVIDING  BENCHMARK  RESULT  OF  ARTIFICIAL  INTELLIGENCE  BASED  MODEL) 図5
  • 特開-人工知能基盤のモデルのベンチマーク結果を提供するための方法及びデバイス(DEVICE  AND  METHOD  FOR  PROVIDING  BENCHMARK  RESULT  OF  ARTIFICIAL  INTELLIGENCE  BASED  MODEL) 図6
  • 特開-人工知能基盤のモデルのベンチマーク結果を提供するための方法及びデバイス(DEVICE  AND  METHOD  FOR  PROVIDING  BENCHMARK  RESULT  OF  ARTIFICIAL  INTELLIGENCE  BASED  MODEL) 図7
  • 特開-人工知能基盤のモデルのベンチマーク結果を提供するための方法及びデバイス(DEVICE  AND  METHOD  FOR  PROVIDING  BENCHMARK  RESULT  OF  ARTIFICIAL  INTELLIGENCE  BASED  MODEL) 図8
  • 特開-人工知能基盤のモデルのベンチマーク結果を提供するための方法及びデバイス(DEVICE  AND  METHOD  FOR  PROVIDING  BENCHMARK  RESULT  OF  ARTIFICIAL  INTELLIGENCE  BASED  MODEL) 図9
  • 特開-人工知能基盤のモデルのベンチマーク結果を提供するための方法及びデバイス(DEVICE  AND  METHOD  FOR  PROVIDING  BENCHMARK  RESULT  OF  ARTIFICIAL  INTELLIGENCE  BASED  MODEL) 図10
  • 特開-人工知能基盤のモデルのベンチマーク結果を提供するための方法及びデバイス(DEVICE  AND  METHOD  FOR  PROVIDING  BENCHMARK  RESULT  OF  ARTIFICIAL  INTELLIGENCE  BASED  MODEL) 図11
  • 特開-人工知能基盤のモデルのベンチマーク結果を提供するための方法及びデバイス(DEVICE  AND  METHOD  FOR  PROVIDING  BENCHMARK  RESULT  OF  ARTIFICIAL  INTELLIGENCE  BASED  MODEL) 図12
  • 特開-人工知能基盤のモデルのベンチマーク結果を提供するための方法及びデバイス(DEVICE  AND  METHOD  FOR  PROVIDING  BENCHMARK  RESULT  OF  ARTIFICIAL  INTELLIGENCE  BASED  MODEL) 図13
  • 特開-人工知能基盤のモデルのベンチマーク結果を提供するための方法及びデバイス(DEVICE  AND  METHOD  FOR  PROVIDING  BENCHMARK  RESULT  OF  ARTIFICIAL  INTELLIGENCE  BASED  MODEL) 図14
  • 特開-人工知能基盤のモデルのベンチマーク結果を提供するための方法及びデバイス(DEVICE  AND  METHOD  FOR  PROVIDING  BENCHMARK  RESULT  OF  ARTIFICIAL  INTELLIGENCE  BASED  MODEL) 図15
  • 特開-人工知能基盤のモデルのベンチマーク結果を提供するための方法及びデバイス(DEVICE  AND  METHOD  FOR  PROVIDING  BENCHMARK  RESULT  OF  ARTIFICIAL  INTELLIGENCE  BASED  MODEL) 図16
  • 特開-人工知能基盤のモデルのベンチマーク結果を提供するための方法及びデバイス(DEVICE  AND  METHOD  FOR  PROVIDING  BENCHMARK  RESULT  OF  ARTIFICIAL  INTELLIGENCE  BASED  MODEL) 図17
  • 特開-人工知能基盤のモデルのベンチマーク結果を提供するための方法及びデバイス(DEVICE  AND  METHOD  FOR  PROVIDING  BENCHMARK  RESULT  OF  ARTIFICIAL  INTELLIGENCE  BASED  MODEL) 図18
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024121771
(43)【公開日】2024-09-06
(54)【発明の名称】人工知能基盤のモデルのベンチマーク結果を提供するための方法及びデバイス(DEVICE AND METHOD FOR PROVIDING BENCHMARK RESULT OF ARTIFICIAL INTELLIGENCE BASED MODEL)
(51)【国際特許分類】
   G06N 20/00 20190101AFI20240830BHJP
   G06N 3/063 20230101ALI20240830BHJP
   G06N 3/0985 20230101ALI20240830BHJP
【FI】
G06N20/00
G06N3/063
G06N3/0985
【審査請求】有
【請求項の数】15
【出願形態】OL
(21)【出願番号】P 2023198347
(22)【出願日】2023-11-22
(62)【分割の表示】P 2023120114の分割
【原出願日】2023-07-24
(31)【優先権主張番号】10-2023-0026147
(32)【優先日】2023-02-27
(33)【優先権主張国・地域又は機関】KR
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.PYTHON
(71)【出願人】
【識別番号】523280633
【氏名又は名称】ノタ、インコーポレイテッド
(74)【代理人】
【識別番号】240000327
【弁護士】
【氏名又は名称】弁護士法人クレオ国際法律特許事務所
(72)【発明者】
【氏名】パク サンニョン
(72)【発明者】
【氏名】イ ジミン
(57)【要約】
【課題】特定のノードにおける特定のモデルのベンチマーク結果を効率的な方式で提供する。
【解決手段】
コンピューティングデバイスにおいて実行される、ベンチマーク結果を提供するための方法が開示される。上記方法は、推論タスクとデータセットとのうち少なくとも1つを含む第1入力データを取得する段階と、推論タスクに係るベンチマークの対象となるターゲットモデルと上記ターゲットモデルの上記推論タスクが実行される少なくとも1つのターゲットノードを決定する段階であって、決定された上記ターゲットモデルは、上記データセットに基づき、上記少なくとも1つのターゲットノードにおいて上記推論タスクに係るベンチマークが行われる人工知能基盤のモデルに相当する、段階と、上記ターゲットモデルを上記少なくとも1つのターゲットノードにおいて実行することで取得されるベンチマーク結果を提供する段階と、を含む。
【選択図】図8
【特許請求の範囲】
【請求項1】
コンピューティングデバイスにおいて実行される、人工知能基盤のモデルを提供するための方法であって、
第1ユーザー入力に対する応答として、ターゲット(target)ノードを決定する段階;
前記決定されたターゲットノードに基づき、複数の候補モデルを含む候補モデルリストを提供する段階;及び
前記候補モデルリストにおける第2ユーザー入力に対する応答として、ターゲットモデルを決定する段階;
を含む、
方法。
【請求項2】
請求項1において、
前記候補モデルリストは、
前記複数の候補モデルの各々に対応するフレームワーク;及び
前記複数の候補モデルの各々に対応するソフトウェアバージョン情報;
を含む、
方法。
【請求項3】
請求項1において、
前記複数の候補モデルは、前記決定されたターゲットノードにおいてサポート可能なランタイム(runtime)環境を有する、
方法。
【請求項4】
請求項1において、
前記複数の候補モデルは、
前記決定されたターゲットノードにおいてサポート可能な第1演算子(operator)を含む第1候補モデル;及び
前記決定されたターゲットノードにおいてサポート可能な前記第1演算子は含まないが、前記第1演算子へコンバートされることの可能な第2演算子を含む第2候補モデル;
のうち少なくとも1つを含む、
方法。
【請求項5】
請求項1において、
前記候補モデルリストは、
前記ターゲットノードにおいて、前記複数の候補モデルの各々が実行されるときに予想される推論時間を表す予想レイテンシー情報を含む、
方法。
【請求項6】
請求項1において、
前記ターゲットモデルを前記ターゲットノードにおいて実行することで取得されるベンチマーク結果を提供する段階;
をさらに含み、
前記ベンチマーク結果は、
前記ターゲットノードにおいて前記ターゲットモデルの推論の前処理に要する時間に係る情報である前処理(preprocessing)時間情報、又は、前記ターゲットノードにおいて前記ターゲットモデルに対する推論に要する時間に係る情報である推論時間情報を含む時間情報;及び
前記ターゲットノードにおいて前記ターゲットモデルの推論の前処理に要するメモリー使用量に係る情報である前処理メモリー使用量情報、又は、前記ターゲットノードにおいて前記ターゲットモデルに対する推論に要するメモリー使用量に係る情報である推論メモリー使用量情報を含む、メモリー使用量情報;
を含む、
方法。
【請求項7】
請求項1において、
複数の候補ノードを含む候補ノードリストを提供する段階;
をさらに含み、
前記第1ユーザー入力は、前記候補ノードリストにおける前記ターゲットノードを決定するための入力と対応する、
方法。
【請求項8】
請求項7において、
前記候補ノードリストは、
前記複数の候補ノードの各々に対応する時間に係る定量的な予想性能情報と、前記複数の候補ノードの各々に対応するメモリーに係る定量的な予想性能情報とのうち、少なくとも1つを含む、
方法。
【請求項9】
請求項7において、
前記候補ノードリストは、
前記複数の候補ノードの各々の識別情報と、前記ターゲットモデルが実行される場合の前記複数の候補ノードの各々における予想レイテンシー情報とを含む、
方法。
【請求項10】
請求項1において、
前記複数の候補モデルを含む前記候補モデルリストを提供する段階は、
前記決定されたターゲットノードにおいてサポート可能な複数の候補モデルを決定し、且つ、前記決定された複数の候補モデルを含む候補モデルリストを提供する段階;
を含む、
方法。
【請求項11】
請求項1において、
前記決定されたターゲットノード及び前記決定されたターゲットモデルに基づき、前記ターゲットモデルをコンバートするか否かを決定する段階;
をさらに含む、
方法。
【請求項12】
請求項10において、
前記ターゲットモデルをコンバートするか否かを決定する段階は、
前記決定されたターゲットモデルが前記決定されたターゲットノードにおいてサポートされているか否か、又は、前記決定されたターゲットモデルに含まれている演算子が前記決定されたターゲットノードにおいてサポートされているか否かに基づく、
方法。
【請求項13】
請求項1において、
前記候補モデルリストは、
前記ターゲットノードにおいて、前記複数の候補モデルの各々が実行されるときに予想される推論時間を表す予想レイテンシー情報を含む、
方法。
【請求項14】
コンピューター可読保存媒体に保存されるコンピュータープログラムであって、前記コンピュータープログラムは、コンピューティングデバイスにより実行されるとき、前記コンピューティングデバイスに、人工知能基盤のモデルを提供するために、以下の動作を実行させるが、前記動作は、
第1ユーザー入力に対する応答として、ターゲットノードを決定する動作;
前記決定されたターゲットノードに基づき、複数の候補モデルを含む候補モデルリストを提供する動作;及び
前記候補モデルリストにおける第2ユーザー入力に対する応答として、ターゲットモデルを決定する動作;
を含む、
コンピューター可読保存媒体に保存されるコンピュータープログラム。
【請求項15】
コンピューティングデバイスであって、
少なくとも1つのプロセッサー;及び
メモリー;
を含み、
前記少なくとも1つのプロセッサーは、
第1ユーザー入力に対する応答として、ターゲットノードを決定する動作;
前記決定されたターゲットノードに基づき、複数の候補モデルを含む候補モデルリストを提供する動作;及び
前記候補モデルリストにおける第2ユーザー入力に対する応答として、ターゲットモデルを決定する動作;
を実行する、
コンピューティングデバイス。
【発明の詳細な説明】
【技術分野】
【0001】
本開示内容は、人工知能技術に係り、具体的には、人工知能基盤のモデルに対するベンチマーク技術に関する。
【背景技術】
【0002】
人工知能の技術の発展により、多様な形の人工知能基盤のモデルが開発されている。多様な人工知能基盤のモデルを処理するための計算資源に対するニーズが増加してきており、関連産業においても新しい能力を有するハードウェアの開発が持続的に行われてきている。
【0003】
パーソナルコンピューター、スマートフォン、自動車、ウェアラブル装置、ロボット等のように、ネットワーク上の端末において直接演算を行うことができるエッジ(edge)AIに対する需要が増加し、ハードウェアのリソースを考慮した人工知能基盤のモデルに対する研究が行われてきている。
【0004】
このように、エッジAI技術の発展とともに、人工知能の技術分野におけるハードウェアの重要性が高まっているため、人工知能基盤のソリューションを開発し、ロンチングするためには、人工知能基盤のモデルだけでなく、人工知能基盤のモデルが実行される多様なハードウェアに関する十分な知識も求められている。例えば、特定のドメインにおいて優れた性能を有するモデルがあったとしても、かかるモデルに対する推論性能が、モデルが実行されるハードウェアによって異なる場合がある。特定のドメインにおいて最適の性能を有するモデルを、サービスを提供する特定のハードウェアが、サポートしていない可能性もある。そのため、提供しようとするサービスに適した人工知能基盤のモデルと、人工知能基盤のモデルに適したハードウェアとの両方を決定するためには、人工知能技術とハードウェア技術に関する豊富な背景知識と膨大な量のリソースが必要である。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】米国特許公開第2022-0121927号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
本開示内容は、前述の背景技術に鑑みて案出されたものであり、特定のノードにおいて特定のモデルのベンチマーク結果を効率よく提供することを目的とする。
【0007】
本開示内容における技術的課題は、前述の技術的課題に限らず、当業者は以下の記載内容に基づき、前述の技術的課題以外の課題についても明確に理解できる。
【課題を解決するための手段】
【0008】
本開示内容の一実施例に基づき、コンピューティングデバイスにおいて実行される、ベンチマーク(benchmark)結果を提供するための方法が開示される。上記方法は、推論(inference)タスクとデータセットとのうち少なくとも1つを含む第1入力データを取得する段階と、上記推論タスクに係るベンチマークの対象となるターゲットモデル(target model)と上記ターゲットモデルの上記推論タスクが実行される少なくとも1つのターゲットノード(target node)とを決定する段階であって、決定された上記ターゲットモデルは、上記データセットに基づき、上記少なくとも1つのターゲットノードにおいて上記推論タスクに係るベンチマークが行われる人工知能基盤のモデルに相当する、段階と、上記ターゲットモデルを上記少なくとも1つのターゲットノードにおいて実行することで取得されるベンチマーク結果を提供する段階と、を含むことが可能である。
【0009】
一実施例において、上記少なくとも1つのターゲットノードを決定する段階は、上記推論タスクに係るベンチマークのために提案される候補(candidate)ノードを含む候補ノードリストを提供する段階と、上記候補ノードリストの中から上記少なくとも1つのターゲットノードを選択する第2入力データに基づき、上記少なくとも1つのターゲットノードを決定する段階とを含むことが可能である。
【0010】
一実施例において、上記候補ノードリストは、上記候補ノードの各々の識別情報と、上記ターゲットモデルが実行される場合の上記候補ノードの各々における予想レイテンシー(estimated latency)情報とを含むことが可能である。
【0011】
一実施例において、上記候補ノードリストに含まれる複数の候補ノードの並び順は、上記予想レイテンシー情報の大きさに基づいて決定されることが可能である。
【0012】
一実施例において、上記候補ノードのうち、第1候補ノードと第2候補ノードとの間における上記予想レイテンシー情報の大きさの差が、予め決められた閾値範囲内にある場合は、上記第1候補ノードと上記第2候補ノードのメモリー使用量とCPU使用率に基づき、上記第1候補ノードと上記第2候補ノードとの並び順が決定されることが可能である。
【0013】
一実施例において、上記候補ノードリストは、上記候補ノードのうち、少なくとも一部のノードにおけるCPUのコアの使用量を示すパワーモード(power mode)情報と、上記候補ノードのうち、少なくとも一部のノードにおけるFanの使用量を示すFanモード情報を含むことが可能である。
【0014】
一実施例において、上記候補ノードリストは、上記候補ノードの各々においてサポート可能な少なくとも1つのモデルに係る情報と、上記候補ノードの各々においてサポート可能な少なくとも1つのモデルがインストールされるために必要なライブラリー情報と、上記候補ノードに繋がっている電力測定センサーから取得される電力使用量を示す電力使用量情報を含むことが可能である。
【0015】
一実施例において、上記第1入力データの上記データセットの大きさに基づいてモデルの大きさが決定され、且つ上記候補ノードリストは、決定された上記モデルの大きさを超えるメモリー空き容量を有している候補ノードを含むことが可能である。
【0016】
一実施例において、上記候補ノードリストを提供する段階は、入力されたソース(source)モデルに含まれている第1演算子(operator)をサポートする実行環境を有している複数の第1ノードを、上記候補ノードとして、上記候補ノードリストに含める段階を含むことが可能である。
【0017】
一実施例において、上記候補ノードリストを提供する段階は、入力されたソースモデルに含まれている第1演算子をサポートしていないが、上記第1演算子を代替できる、上記第1演算子とは異なる第2演算子をサポートする実行環境を有している複数の第2ノードを、上記候補ノードとして、上記候補ノードリストに含める段階を含むことが可能である。
【0018】
一実施例において、上記ベンチマーク結果は、上記少なくとも1つのターゲットノードにおいて上記ターゲットモデルの推論の前処理に要する時間に係る情報である前処理(preprocessing)時間情報と、上記少なくとも1つのターゲットノードにおいて上記ターゲットモデルに対する推論に要する時間に係る情報である推論時間情報と、上記少なくとも1つのターゲットノードにおいて上記ターゲットモデルの推論の前処理に要するメモリー使用量に係る情報である前処理メモリー使用量情報と、上記少なくとも1つのターゲットノードにおいて上記ターゲットモデルに対する推論に要するメモリー使用量に係る情報である推論メモリー使用量情報と、を含むことが可能である。
【0019】
一実施例において、上記ベンチマーク結果は、上記少なくとも1つのターゲットノードにおいて、上記ターゲットモデルを予め決められた回数分繰り返し推論することで取得される、推論時間に係る定量情報と、上記少なくとも1つのターゲットノードにおいて、上記ターゲットモデルを推論することで取得される、NPU、CPU、GPUの各々におけるメモリー使用量に係る定量情報とを含むことが可能である。
【0020】
一実施例において、上記ターゲットモデルを上記少なくとも1つのターゲットノードにおいて実行することで取得される上記ベンチマーク結果を提供する段階は、上記少なくとも1つのターゲットノードにおいて無線通信が可能なノードと上記無線通信が不可能なノードとを区別する段階と、上記無線通信が可能なノードが、直列(serial)通信を利用して、上記無線通信が不可能なノードと繋がるようにし、上記無線通信が不可能なノードにおけるベンチマーク結果を取得するために、上記無線通信が不可能なノードに対応する上記無線通信が可能なノードへベンチマークタスクを送る段階と、を含むことが可能である。
【0021】
一実施例において、外部から確認が不可能な第3ノードが上記少なくとも1つのターゲットノードに含まれている場合、上記ベンチマーク結果を提供する段階は、上記第3ノードから第1低電力無線信号を受信したことに対する応答として、上記ターゲットモデルを上記第3ノードにおいてベンチマークするためのベンチマークタスクを含む第1応答メッセージ(acknowledgment message)を、上記第3ノードに送る段階と、上記第3ノードにより生成されたベンチマーク結果を含む第2低電力無線信号を、上記第3ノードから受信する段階と、を含むことが可能である。
【0022】
一実施例において、上記外部から確認が不可能な第3ノードが上記少なくとも1つのターゲットノードに含まれている場合、上記ベンチマーク結果を提供する段階は、上記第2低電力無線信号が予め決められた待機時間のしきい値に該当する時間の間に受信されなかった場合、上記第3ノードにおける上記ベンチマークタスクが失敗したと決定し、上記第3ノードを非活性(inactive)状態に設定する段階と、上記非活性状態に設定された上記第3ノードから第3低電力無線信号を受信したことに対する応答として、上記第3ノードの状態を活性(active)状態に設定する段階をさらに含むことが可能である。
【0023】
一実施例において、上記第1低電力無線信号は、上記第3ノードがベンチマークを行っているか否かに係る情報と、上記第3ノードのメモリー使用量に係る情報と、上記第3ノードのハードウェア識別情報を含むことが可能である。
【0024】
一実施例において、上記第1応答メッセージに含まれている上記ベンチマークタスクは、上記第3ノードがダウンロードできるターゲットモデル情報と、上記第3ノードがダウンロードした上記ターゲットモデルを変換するために用いられるノード構成(configuration)情報を含み、且つ、上記第3ノードによって生成されたベンチマーク結果は、上記ノード構成情報と上記ターゲットモデル情報とに基づき、上記第3ノードの実行環境において上記ターゲットモデルを実行することにより取得される結果を含むことが可能である。
【0025】
一実施例において、上記第2入力データに基づき、上記第2入力データに含まれている少なくとも1つのターゲットノードにおいてサポートしているターゲットモデルの情報が、自動的に提供されることが可能である。
【0026】
一実施例において、上記ターゲットモデルの情報は、上記少なくとも1つのターゲットノードにおいてサポートしているターゲットモデルに対応する識別情報と、上記少なくとも1つのターゲットノードにおいてサポートしているターゲットモデルのソフトウェアのバージョン情報と、を含むことが可能である。
【0027】
一実施例において、コンピューター可読保存媒体に保存されるコンピュータープログラムが開示される。上記コンピュータープログラムは、コンピューティングデバイスにより実行されるとき、上記コンピューティングデバイスに、ベンチマーク結果を提供するために以下の動作を実行させ、上記動作は、推論タスクとデータセットとのうち少なくとも1つを含む第1入力データを取得する動作と、上記推論タスクに係るベンチマークの対象となるターゲットモデルと上記ターゲットモデルの上記推論タスクが実行される少なくとも1つのターゲットノードを決定する動作であって、決定された上記ターゲットモデルは、上記データセットに基づき上記少なくとも1つのターゲットノードにおいて上記推論タスクに係るベンチマークが行われる人工知能基盤のモデルに相当する、動作と、上記ターゲットモデルを上記少なくとも1つのターゲットノードにおいて実行することで取得されるベンチマーク結果を提供する動作とを含むことが可能である。
【0028】
一実施例において、ベンチマーク結果を生成するためのコンピューティングデバイスが開示される。上記コンピューティングデバイスは、少なくとも1つのプロセッサーとメモリーとを含むことが可能である。上記少なくとも1つのプロセッサーは、推論タスクとデータセットとのうち少なくとも1つを含む第1入力データを取得し、上記推論タスクに係るベンチマークの対象となるターゲットモデルと上記ターゲットモデルの上記推論タスクが実行される少なくとも1つのターゲットノードを決定し、決定された上記ターゲットモデルは、上記データセットに基づき上記少なくとも1つのターゲットノードにおいて上記推論タスクに係るベンチマークが行われる人工知能基盤のモデルに相当し、上記ターゲットモデルを上記少なくとも1つのターゲットノードにおいて実行することで取得される、上記ターゲットモデルのベンチマーク結果を提供することが可能である。
【発明の効果】
【0029】
本開示の一実施例における方法は、特定のノードにおける特定のモデルのベンチマーク結果を効率的な方式で提供することが可能である。
【図面の簡単な説明】
【0030】
図1図1は、本開示内容の一実施例におけるコンピューティングデバイスのブロック構成図を概略的に示している。
図2図2は、本開示内容の一実施例における人工知能基盤のモデルの例示的な構造を示している。
図3図3は、本開示内容の一実施例における、ベンチマーク結果を提供するためのシステムの例示的な概略図を示している。
図4図4は、本開示内容の一実施例における、ベンチマーク結果を提供するための方法を例示的に示している。
図5図5は、本開示内容の一実施例における、候補ノードリストの生成に用いられるテーブル形式の資料構造を例示的に示している。
図6図6は、本開示内容の一実施例における、候補ノードリストの生成に用いられるテーブル形式の資料構造を例示的に示している。
図7図7は、本開示内容の一実施例における、候補ノードリストの生成に用いられるテーブル形式の資料構造を例示的に示している。
図8図8は、本開示内容の一実施例における、ベンチマーク結果を提供するための方法を例示的に示している。
図9図9は、本開示内容の一実施例におけるベンチマーク結果を提供するための方法を例示的に示している。
図10図10は、本開示内容の一実施例における、ベンチマーク結果を提供するための方法を例示的に示している。
図11図11は、本開示内容の一実施例において、外部から確認が不可能なノードに対するベンチマーク結果を提供するための方法を例示的に示している。
図12図12は、本開示内容の一実施例における、ベンチマーク結果を提供するための方法を例示的に示している。
図13図13は、本開示内容の一実施例における、ベンチマーク結果を提供するための方法を例示的に示している。
図14図14は、本開示内容の一実施例における、ベンチマーク結果を提供するための方法を例示的に示している。
図15図15は、本開示内容の一実施例における、ベンチマーク結果を提供するための方法を例示的に示している。
図16図16は、本開示内容の一実施例における、ベンチマーク結果を提供するための方法を例示的に示している。
図17図17は、本開示内容の一実施例における、ベンチマーク結果を提供するための方法を例示的に示している。
図18図18は、本開示内容の一実施例におけるコンピューティング環境を示す概略図である。
【発明を実施するための形態】
【0031】
多様な例について、以下に図面を参照して説明する。本明細書において、多様な説明が本開示内容に対する理解を容易にするために示される。本開示内容の実施のための具体的な説明において、本開示内容の技術的要旨と直接的な関係がない構成については、本発明の技術的要旨を不明確にしない範囲で、省略している。また、本明細書及び請求範囲において用いられている用語又は単語は、発明者が自身の発明を最善の方法で説明するために、用語の概念を適宜定義できるという原則の基づき、本発明の技術的思想に合致する意味と概念で解釈すべきである。
【0032】
本明細書において、「モジュール」、「システム」等の用語は、コンピューター関連エンティティ、ハードウェア、ファームウェア、ソフトウェア、ソフトウェアとハードウェアとの組み合わせ、又はソフトウェアの実行を指すとともに、相互置換可能に用いることが可能である。例えば、モジュールは、プロセッサー上で実行される処理手順(procedure)、プロセッサー、オブジェクト、実行スレッド、プログラム、アプリケーション及び/又はコンピューティングデバイスになり得るが、これらに限定されるものではない。1つ以上のモジュールトは、プロセッサー及び/又は実行スレッドの中に常駐することが可能である。モジュールを、1つのコンピューターの中でローカル化することが可能である。1つのモジュールを、2つ以上のコンピューターに配分することが可能である。また、このようなモジュールは、その内部に保存されている多様なデータ構造を有する多様なコンピューター可読媒体から実行することが可能である。モジュールは、例えば1つ以上のデータパケットを持つ信号(例えば、ローカルシステムや分散システムにおいて他のコンポーネントと相互作用する1つのコンポーネントからのデータ及び/又は信号を通じて、他のシステムと、インターネットのようなネットワークを介して伝送されるデータ)を用いてローカル及び/又は遠隔処理等を通じて通信することが可能である。
【0033】
また、「又は」という用語は、排他的な「又は」ではなく、内包的な「又は」を意味するものとする。つまり、特に特定されておらず、文脈上明確ではない場合、「Xは、A又はBを利用する」は、自然な内包的置換のうち1つを意味するものとする。つまり、XがAを利用したり;XがBを利用したり;又はXがA及びBの両方を利用する場合、「Xは、A又はBを利用する」は、これらのいずれにも当てはまるものとすることが可能である。また、本明細書における「及び/又は」と「少なくとも」という用語は、取り挙げられた複数の関連アイテムのうち、1つ以上のアイテムの可能なすべての組み合わせを指し、含むものとする。なお、「且つ/もしくは」についても同様に解釈する。例えば、「A又はBのうち少なくとも1つ」、「AとBとのうち少なくとも1つ」、「A及びBのうち少なくとも1つ」、「A、Bのうち少なくとも1つ」という用語については、「Aだけを含む場合」と「Bだけを含む場合」と「AとBの組み合わせの場合」とを意味するものとする。
【0034】
また、述語としての「含む(含める)」及び/又は修飾語としての「含む(含める)」という用語は、当該特徴及び/又は構成要素が存在することを意味するものと理解されるべきである。ただし、述語としての「含む(含める)」及び/又は修飾語として「含む(含める)」という用語は、1つ以上の他のさらなる特徴、構成要素及び/又はこれらのグループの存在又は追加を排除しないものと理解されるべきである。また、特に数が特定されていない場合や、単数の形を示すことが文脈上明確でない場合、本明細書と請求範囲において単数は、一般的に「1つ又はそれ以上」を意味するものと解釈されるべきである。
【0035】
当業者は、さらに、ここに開示される実施例に係るものとして説明された多様な例示的な論理的構成要素、ブロック、モジュール、回路、手段、ロジック、アルゴリズムを、電子ハードウェア、コンピューターソフトウェア、またはその両方の組み合わせを用いて具現化できることを認識できる。ハードウェアとソフトウェアとの相互交換性を明確に例示するために、多様な例示的構成要素、ブロック、手段、ロジック、モジュール、回路、段階について、それらの機能性の側面から、一般的な内容として、上記の通り、説明した。そのような機能性がハードウェアとして実装されるか或いはソフトウェアとして実装されるかは、全般的なコンピューティングデバイスに係る特定のアプリケーション(application)及び設計制限によって決まる。
【0036】
ここに示す実施例に係る説明は、本開示の技術分野において通常の知識を持つ者が本発明を利用したり、または実施できるように提供される。このような実施例に対する多様な変形は、本開示の技術分野において通常の知識を持つ者にとっては明確である。ここに定義された一般的な原理は、本開示の範囲を逸脱することなく他の実施例に適用されることが可能である。従って、本発明はここに示す実施例だけに限定されるものではない。本発明はここに示す原理及び新規な特徴と一貫する最広義の範囲で解釈されるべきである。
【0037】
本開示内容における第1、第2、第3のように、第Nと表現される用語は、少なくとも1つのエンティティを区別するために用いられている。例えば、第1と表現されているエンティティと、第2と表現されているエンティティとは、同一のものである場合もあり、相異なるものである場合もある。また、第1-1、第1-2、第1-N等と表現される用語も、これらをそれぞれ区別するために用いることが可能である。
【0038】
本開示内容において「ベンチマーク(benchmark)」という用語は、モデルをノードにおいて実行又はテストする動作、又は、モデルのノードに対する性能を測定する動作を意味することが可能である。本開示内容におけるベンチマーク結果、又は、ベンチマーク結果情報は、ベンチマークによって取得される情報、又は、ベンチマークによって取得される情報を加工した情報を含むことが可能である。
【0039】
本開示内容における「人工知能基盤のモデル」という用語は、人工知能モデル、演算モデル、神経回路網、ネットワーク関数、ニューラルネットワーク(neural network)、モデルと相互置換可能に用いることが可能である。本開示内容におけるモデルは、モデルファイル及び/又はモデルタイプ情報を包括する意味として用いることが可能である。一実施例において、モデルタイプ情報は、モデルの実行環境又はフレームワーク又はタイプを識別するための情報を意味することが可能である。例えば、モデルタイプ情報は、TensorRT、Tflite、Onnxruntimeを含むことが可能である。
【0040】
本開示内容において、「ノード」という用語は、モデルに対するベンチマークの対象となるハードウェア情報と対応することが可能である。かかるハードウェア情報は、物理的ハードウェア、バーチャルハードウェア、外部からネットワークを介したアクセスが不可能なハードウェア、外部からの確認が不可能なハードウェア、及び/又は、クラウド内で確認できるハードウェアを包括する意味として用いることが可能である。例えば、本開示内容におけるノードは、RaspberryPi、Coral、Jetson-Nano、AVH RasberryPi、Mobile等のような多様な形態のハードウェアを含むことが可能である。
【0041】
本開示内容において、人工知能基盤のモデルにおけるノードは、神経回路網を構成するコンポーネントという意味として用いられる場合があり、例えば、神経回路網の中のノードは、ニューロンと対応することが可能である。
【0042】
図1は、本開示内容の一実施例におけるコンピューティングデバイス(100)のブロック構成図を概略的に示している。
【0043】
本開示内容の一実施例におけるコンピューティングデバイス(100)は、プロセッサー(110)とメモリー(130)とを含むことが可能である。
【0044】
図1に示すコンピューティングデバイス(100)の構成は、簡略化された例示に過ぎない。本開示の一実施例において、コンピューティングデバイス(100)は、コンピューティングデバイス(100)のコンピューティング環境を実装するための他の構成を含むことが可能であり、開示されている構成のうち一部だけでコンピューティングデバイス(100)を構成することも可能である。
【0045】
本開示内容におけるコンピューティングデバイス(100)は、コンピューティング装置と相互置換可能に用いることが可能である。そして、コンピューティングデバイス(100)は、任意の形態のサーバー及び任意の形態の端末を包括する意味として用いることが可能である。
【0046】
本開示内容におけるコンピューティングデバイス(100)は、本開示内容の実施例を具現化するためのシステムを構成する任意の形態のコンポーネントを意味することが可能である。
【0047】
コンピューティングデバイス(100)は、あらゆる形態のユーザー端末やあらゆる形態のサーバーを意味することが可能である。前述のコンピューティングデバイス(100)のコンポーネントは、例示にすぎず、一部を除外したり、又は他のコンポーネントを追加することも可能である。一例として、前述のコンピューティングデバイス(100)がユーザー端末を含む場合、出力部(図示省略)及び入力部(図示省略)が、上記コンピューティングデバイス(100)に含まれるものとすることが可能である。
【0048】
一実施例において、コンピューティングデバイス(100)は、複数のノードと通信し、特定の人工知能基盤のモデルの、複数のノードに対するベンチマークを、管理及び/又は実行する装置を意味することが可能である。例えば、コンピューティングデバイス(100)は、Device Farmと称することが可能である。一実施例において、コンピューティングデバイス(100)は、ユーザーと相互作用して学習モデルを生成し、圧縮されたモデルを生成し、モデルのデプロイのためのダウンロードデータを生成する装置を意味することが可能である。一実施例において、コンピューティングデバイス(100)は、人工知能基盤のモデルにおける複数のノードに対するベンチマークを管理及び/又は実行し、ユーザーと相互作用して学習モデルを生成し、圧縮されたモデルを生成し、モデルのデプロイのためのダウンロードデータを生成する装置を意味することが可能である。
【0049】
一実施例において、コンピューティングデバイス(100)は、入力されたデータセットに対するモデリングを通じて学習モデルを生成し、入力されたモデルを圧縮して軽量化モデルを生成し、そして/又は、入力されたモデルが特定のノードにおいてデプロイされるようにダウンロードデータを生成する装置を意味することも可能である。本開示内容において、デプロイ(deploy)やデプロイメント(deployment)は、ソフトウェア(例えば、モデル)を利用可能にする任意の種類の活動を意味することが可能である。例えば、デプロイやデプロイメントは、モデルやノードの特定の要求や特性に合わせてカスタマイズされる全般的なプロセスを意味するものと解釈することが可能である。かかるデプロイやデプロイメントに係る例示として、リリース、インストール、活性化、非活性化、アンインストール、更新、ビルトイン更新、改変及び/又はバージョントラッキング等が挙げられる。
【0050】
本開示内容におけるコンピューティングデバイス(100)は、後述する本開示内容における各実施例に基づく技術的特徴を実行することが可能である。
【0051】
例えば、コンピューティングデバイス(100)は、ベンチマークのために入力された、人工知能基盤のモデルのモデルタイプ情報と、ベンチマークの対象となるモデルタイプを識別するためのターゲットタイプ情報とに基づき、人工知能基盤のモデルをコンバートするか否かを決定し、上記ターゲットタイプ情報に基づいて決定された複数の候補ノードを含む候補ノードリストを決定し、上記候補ノードリストの中から少なくとも1つのターゲットノードを選択する入力データに基づき、上記少なくとも1つのターゲットノードを決定し、上記人工知能基盤のモデルのコンバート如何に応じて取得されるターゲットモデルを上記少なくとも1つのターゲットノードにおいて実行することで取得されるベンチマーク結果を提供することが可能である。
【0052】
例えば、コンピューティングデバイス(100)は、推論(inference)タスクおよびデータセットを含む第1入力データを取得し、推論タスクに係るベンチマークの対象となるターゲットモデル及び上記ターゲットモデルの上記推論タスクが実行される少なくとも1つのターゲットノードを決定し、ターゲットモデルを上記少なくとも1つのターゲットノードにおいて実行することで取得されるベンチマーク結果を提供することが可能である。
【0053】
例えば、コンピューティングデバイス(100)は、人工知能基盤のモデルに係る複数の相異なる動作を実行する複数のモジュールを含む他のコンピューティングデバイスから、他のコンピューティングデバイスにおける複数のモジュールのうち、どのモジュールが上記コンピューティングデバイス(100)のベンチマーク動作をトリガーリングするかを示すモジュール識別情報を受信し、上記モジュール識別情報に基づき、ベンチマーク結果を上記他のコンピューティングデバイスに提供することが可能である。この場合、上記モジュール識別情報によって、上記他のコンピューティングデバイスに提供される上記ベンチマーク結果が、異なるようにすることが可能である。
【0054】
本開示内容における他の実施例において、コンピューティングデバイス(100)は、ベンチマークを実行した結果を、他のコンピューティングデバイス又は外部エンティティから取得することも可能である。本開示内容における他の実施例において、コンピューティングデバイス(100)は、コンバートを実行した結果を、他のコンピューティングデバイス又は外部エンティティ(例えば、コンバートデバイス)から取得することも可能である。
【0055】
一実施例において、プロセッサー(110)は、少なくとも1つのコアで構成することが可能であり、コンピューティングデバイス(100)の中央処理装置(CPU:central processing unit)、汎用グラフィック処理装置(GPGPU:general purpose graphics processing unit)、テンサー処理装置(TPU:tensor processing unit)等のデータ分析及び/又は処理を行うためのプロセッサーを意味することが可能である。
【0056】
プロセッサー(110)は、メモリー(130)に保存されているコンピュータープログラムを読み取り、本開示内容の一実施例に基づき、ベンチマーク結果を提供することが可能である。
【0057】
本開示の一実施例に基づき、プロセッサー(110)は、神経回路網の学習のための演算を行うことが可能である。プロセッサー(110)は、ディープラーニング(DL:deep learning)において、学習のための入力データの処理、入力データからのフィーチャーの抽出、誤差計算、逆伝播(backpropagation)を利用したニューラルネットワークの重みの更新等のニューラルネットワークの学習のための計算を実行することが可能である。プロセッサー(110)のCPUとGPGPUとTPUとのうち、少なくとも1つが、ネットワーク関数の学習を処理できる。例えば、CPUとGPGPUとがともにネットワーク関数の学習やネットワーク関数を利用したデータの分類を行うことが可能である。なお、本開示の一実施例において、複数のコンピューティングデバイスのプロセッサーを一緒に使ってネットワーク関数の学習やネットワーク関数を利用したデータ分類を行うことも可能である。また、本開示の一実施例における、コンピューティングデバイス(100)において実行されるコンピュータープログラムは、CPUやGPGPUやTPUで実行可能なプログラムになり得る。
【0058】
さらに、プロセッサー(110)は、通常コンピューティングデバイス(100)の全般的な動作を処理することが可能である。例えば、プロセッサー(110)は、コンピューティングデバイス(100)に含まれた構成要素を通じて入力又は出力される、データ、情報、信号等を処理したり、保存部に保存されている応用プログラムを実行させることで、ユーザーに適切な情報又は機能を提供することが可能である。
【0059】
本開示の一実施例において、メモリー(130)は、プロセッサー(110)が生成したり、決定した任意の形態の情報と、コンピューティングデバイス(100)が受信した任意の形態の情報とを保存することが可能である。本開示の一実施例において、メモリー(130)は、プロセッサー(110)が本開示内容の一実施例における動作を実行するようにするコンピューターソフトウェアを保存する保存媒体になり得る。従って、メモリー(130)は、本開示内容における複数の実施例を遂行するために必要なソフトウェアコード、コードの実行対象となるデータ、コードの実行結果を保存するためのコンピューター可読媒体を意味することが可能である。
【0060】
本開示の一実施例において、メモリー(130)は、任意のタイプの保存媒体を意味することが可能である。例えば、メモリー(130)は、フラッシュメモリータイプ(flash memory type)、ハードディスクタイプ(hard disk type)、マルチメディアカードマイクロタイプ(multimedia card micro type)、カードタイプのメモリー(例えばSD又はXDメモリー等)、ラム(Random Access Memory、RAM)、SRAM(Static Random Access Memory)、ロム(Read-Only Memory、ROM)、EEPROM(Electrically Erasable Programmable Read-Only Memory)、PROM(Programmable Read-Only Memory)、磁気メモリー、磁気ディスク、光ディスクのうち、少なくとも1つのタイプの保存媒体を含むことが可能である。コンピューティングデバイス(100)は、インターネット(internet)上で上記メモリー(130)の保存機能を実行するウェブストレージ(web storage)と連携して動作することも可能である。前述のメモリーに関する記載は例示に過ぎず、本開示内容において用いられるメモリー(130)は、前述の例示によって限定されない。
【0061】
本開示内容における通信部(図示省略)は、有線や無線等といった通信の様態を問わずに構成でき、短距離通信網(PAN:Personal Area Network)、近距離通信網(WAN:Wide Area Network)等の多様な通信網で構成することが可能である。また、上記ネットワーク部(150)は、公知のワールドワイドウェブ(WWW:World Wide Web)に基づく作動することができ、赤外線(IrDA:Infrared Data Association)または、ブルートゥース(登録商標)(Bluetooth)のように、短距離通信に利用される無線伝送技術を利用することも可能である。
【0062】
本開示内容において、コンピューティングデバイス(100)は、あらゆる形態のユーザー端末及び/又はあらゆる形態のサーバーを含むすることが可能である。従って、本開示内容における複数の実施例は、サーバー及び/又はユーザー端末を用いて実行することが可能である。
【0063】
一実施例において、ユーザー端末は、サーバーまたは他のコンピューティングデバイスと相互作用可能な任意の形態の端末を含むことが可能である。ユーザー端末は、例えば、携帯電話、スマートフォン(smart phone)、ノートパソコン(laptop computer)、PDA(personal digital assistants)、スレートPC(slate PC)、タブレットPC(tablet PC)、ウルトラブック(ultrabook)を含むことが可能である。
【0064】
一実施例において、サーバーは、例えば、マイクロプロセッサー、メインフレームコンピューター、デジタルプロセッサー、携帯用デバイス及びデバイス制御器等のような任意のタイプのコンピューティングシステムやコンピューティングデバイスを含むことが可能である。
【0065】
一実施例において、サーバーは、ベンチマーク結果、候補ノードリスト、ノードの性能情報、ノードとモデルとの間におけるレイテンシー情報及び/又はコンバート結果情報等を保存及び管理できる。サーバーは、ベンチマーク結果、候補ノードリスト、ノードの性能情報、ノードとモデルとの間におけるレイテンシー情報及び/又はコンバート結果情報等を保存するため保存部(図示省略)を含むことができる。かかる保存部は、サーバーの中に含まれていたり、サーバーの管理下に存在することが可能である。他の例示として、保存部は、サーバーの外に存在し、サーバーと通信が可能な形態に具現化される場合もある。この場合、前述のサーバーとは異なる、別の外部サーバーを用いて保存部を管理及び制御することが可能である。
【0066】
図2は、本開示内容の一実施例における人工知能基盤のモデルの例示的な構造を示している。
【0067】
本開示内容において、モデル、人工知能モデル、人工知能基盤のモデル、演算モデル、神経回路網、ネットワーク関数、ニューラルネットワーク(neural network)は、相互置換可能に用いることが可能である。
【0068】
本開示内容における人工知能基盤のモデルは、オブジェクトセグメンテーション、オブジェクト検出及び/又はオブジェクト分類等の画像処理のためのモデルや、データ予測、テキスト意味推論及び/又はデータ分類等のテキスト処理のためのモデル等のように、多様なドメインにおいて活用可能なモデルを含むことが可能である。
【0069】
神経回路網は、一般的にノードと呼ばれる相互連結された計算単位の集合で構成することが可能である。このようなノードは、ニューロン(neuron)と称することも可能である。神経回路網は、少なくとも1つ以上のノードを含めて構成される。神経回路網を構成するノード(またはニューロン)は、1つ以上のリンクによって相互連結されることが可能である。
【0070】
人工知能基盤のモデルにおいて、ノードは、神経回路網を構成するコンポーネントという意味として用いられる場合があり、例えば、神経回路網の中のノードは、ニューロンと対応することが可能である。
【0071】
神経回路網において、リンクを介して繋がっている1つ以上のノードは、相対的に、入力ノードと出力ノードの関係になることが可能である。入力ノード及び出力ノードの概念は、相対的なものであり、あるノードに対して出力ノードとなる任意のノードは、他のノードとの関係においては入力ノードになり得るが、その逆も成立する。前述のように、入力ノードと出力ノードとの関係は、リンクを中心にして成立することが可能である。1つの入力ノードに、1つ以上の出力ノードが、リンクを介して繋がることができるが、その逆も成立する。
【0072】
1つのリンクを介して繋がっている入力ノード及び出力ノードの関係において、出力ノードのデータは入力ノードに入力されたデータに基づきその値が決められることが可能である。ここで入力ノードと出力ノードとを相互連結するリンクは、重み(weight)を持つことが可能である。重みは可変的なものになり得るが、神経回路網が求める機能を実行するために、利用者またはアルゴリズムによって変わることが可能である。例えば、1つの出力ノードに1つ以上の入力ノードが各々のリンクによって相互連結されている場合、出力ノードは、上記出力ノードに繋がっている入力ノードに入力された値と、各々の入力ノードに対応するリンクに設定された重みとに基づき、出力ノードの値を決定することが可能である。
【0073】
前述のように、神経回路網は、1つ以上のノードが1つ以上のリンクを介して相互連結され、神経回路網の中で入力ノードと出力ノードの関係を形成する。神経回路網において、ノードとリンクの数及びノードとリンクとの間の相関関係、各リンクに付与された重みの値によって、神経回路網の特性が決まることが可能である。例えば、同数のノード及びリンクが存在し、リンクの重みの値が異なる2つの神経回路網が存在する場合、その2つの神経回路網を、相異なるものと認識することが可能である。
【0074】
神経回路網は、1以上のノードの集合で構成することができる。神経回路網を構成するノードの部分集合は、階層(layer)を構成できる。神経回路網を構成する複数のノードのうち一部は、第1入力ノードからの距離に基づき、1つの階層(layer)を構成することができる。例えば、第1入力ノードからの距離がnであるノードの集合は、n階層を構成することが可能である。第1入力ノードからの距離は、第1入力ノードから当該ノードに到達するために経由しなければならないリンクの最小限の数をもとに定義することが可能である。しかし、このような階層の定義は、説明のために任意に取り挙げたものであり、神経回路網における階層の位置は、前述の説明と異なる方法で定義することもできる。例えば、ノードの階層は、最終出力ノードからの距離をもとに定義することも可能である。
【0075】
本開示内容の一実施例において、ニューロンやノードの集合を、「階層」や「層」という表現で定義することが可能である。
【0076】
第1入力ノードは、神経回路網の中のノードのうち、他のノードとの関係においてリンクを経由せずにデータが直接入力される1つ以上のノードを意味することが可能である。または、神経回路網のネットワークの中で、リンクを基準にしたノード間の関係において、リンクを介して繋がっている他の入力ノードを持たないノードを意味することが可能である。これと同様に、最終出力ノードは、神経回路網の中のノードのうち、他のノードとの関係において、出力ノードを持たない1つ以上のノードを意味することが可能である。また、隠れノードは、第1入力ノード及び最終出力ノードではないノードで、神経回路網を構成するノードを意味することが可能である。
【0077】
本開示の一実施例における神経回路網は、入力層のノードの数が出力層のノードと同数で、入力層から隠れ層へと進むにつれ、ノードの数が一度減ってから、再び増加する形の神経回路網になり得る。本開示の他の一実施例における神経回路網は、入力層のノードの数が出力層のノードの数より少なく、入力層から隠れ層へと進むにつれ、ノードの数が減少していく形の神経回路網になり得る。また、本開示の他の一実施例による神経回路網は、入力層のノードの数が出力層のノードの数より多く、入力層から隠れ層へと進むにつれ、ノードの数が増加していく形の神経回路網になり得る。本開示の他の一実施例における神経回路網は、上述の神経回路網を組み合わせた形の神経回路網になり得る。
【0078】
ディープニューラルネットワーク(DNN:deep neural network、深層神経回路網)は、入力層と出力層以外に複数の隠れ層を含む神経回路網を意味することが可能である。ディープニューラルネットワークを利用するとデータの潜在的な構造(latent structures)を把握することが可能である。つまり、写真、テキスト、ビデオ、音声、タンパク質シーケンス構造、遺伝子シーケンス構造、ペプチド配列の構造,音楽の潜在的構造(例えば、どのような物が写真に映っているか、文章の内容と感情はどのようなものなのか、音声の内容と感情はどのようなものなのか等)、及び/又は、ペプチドとMHCとの結合親和性を把握することが可能である。ディープニューラルネットワークは、畳み込みニューラルネットワーク(CNN:convolutional neural network)、リカレントニューラルネットワーク(RNN::recurrent neural network)、オートエンコーダー(auto encoder)、GAN(Generative Adversarial Networks)、制限ボルツマンマシン(RBM:restricted boltzmann machine)、深層信頼ネットワーク(DBN:deep belief network)、Qネットワーク、Uネットワーク、シャムネットワーク、敵対的生成ネットワーク(GAN:Generative Adversarial Network)等を含むことが可能である。前述のディープニューラルネットワークは、例示に過ぎず本開示はこれらに限定されない。
【0079】
本開示内容における人工知能基盤のモデルは、入力層、隠れ層、出力層を含む、前述の任意の構造のネットワーク構造で表現することが可能である。
【0080】
本開示内容におけるクラスタリング・モデルにおいて使用できるニューラルネットワークは、教師あり学習(supervised learning)、教師なし学習(unsupervised learning)、半教師あり学習(semisupervised learning)、または、強化学習(reinforcement learning)の中から少なくともいずれか1つの方式で学習されることが可能である。ニューラルネットワークの学習は、ニューラルネットワークが特定の動作を行うための知識を、ニューラルネットワークに適用する過程になり得る。
【0081】
ニューラルネットワークは、出力のエラーを最小化する方向で学習されることが可能である。ニューラルネットワークの学習において、繰り返し学習データをニューラルネットワークに入力させ、学習データに関するニューラルネットワークの出力とターゲットのエラーを計算し、エラーを減らすための方向としてニューラルネットワークのエラーをニューラルネットワークの出力層から入力層の方向へ逆伝播(back propagation)してニューラルネットワークの各ノードの重みを更新するプロセスが行われる。教師あり学習の場合、個々の学習データに正解がラベリングされている学習データを使い(つまり、ラベリングされた学習データ)、教師なし学習の場合は、個々の学習データに正解がラベリングされていない場合がある。つまり、例えば、データ分類に関する教師あり学習における学習データは、学習データの各々にカテゴリがラベリングされたデータになり得る。ラベリングされた学習データがニューラルネットワークに入力され、ニューラルネットワークの出力(カテゴリ)と学習データのラベルとを比較することで、エラー(error)を計算することが可能である。他の例として、データ分類に関する教師なし学習の場合、入力である学習データをニューラルネットワークの出力と比較することで、エラーを計算することが可能である。計算されたエラーは、ニューラルネットワークにおいて逆方向(つまり、出力層から入力層への方向)へ逆伝播され、逆伝播を通じてニューラルネットワークの各階層の各ノードの接続の重みを更新することが可能である。更新される各ノードの接続の重みは、学習率(learing rate)によって変化量が決まることが可能である。入力データに対するニューラルネットワークの計算とエラーの逆伝播は、学習のサイクル(epoch)を構成することが可能である。学習率は、ニューラルネットワークの学習のサイクルの反復回数によって適用方式が変わることが可能である。例えば、ニューラルネットワークの学習の初期においては、学習率を高くしてニューラルネットワークが早く一定のレベルの性能を確保するようにすることで効率を高め、学習の後半においては学習率を低くして精度を上げることが可能である。
【0082】
ニューラルネットワークの学習において、一般的に学習データは実際のデータ(つまり、学習されたニューラルネットワークを利用して処理しようとするデータ)の部分集合である場合があり、そのため、学習データに係るエラーは減少するが、実際のデータに係るエラーは増加する学習サイクルが存在し得る。過剰適合(over fitting)は、このように学習データについて過度に学習したため、実際のデータにおいてエラーが増加する現象である。例えば、黄色い猫を見て猫を学習したニューラルネットワークが、黄色以外の色の猫を見ると猫であることを認識できない現象が過剰適合の一種になり得る。過剰適合は、マシンラーニングアルゴリズムのエラーを増加させる原因になり得る。このような過剰適合を防ぐために、多様な最適化方法を適用できる。過剰適合を防ぐためには、学習データを増加させる方法、正則化(regulaization)、学習の過程でネットワークのノードの一部を非活性化するドロップアウト(drop out)、バッチ正規化層(batch normalization layer)の活用等の方法を適用できる。
【0083】
本開示の一実施例において、ベンチマーク結果及び/又は人工知能基盤のモデルを含むデータ構造が保存されているコンピューター可読媒体が開示される。前述のデータ構造を、本開示内容における保存部(図示省略)に保存することができ、プロセッサー(110)を介して実行させることができ、通信部(図示省略)を介して送受信することが可能である。
【0084】
データ構造は、データに対する効率的なアクセスと修正が行えるようにするデータの組織、管理、保存を意味することが可能である。データ構造は、特定の課題(例えば、最短時間でのデータ検索、データ保存、データ修正)を解決するためのデータの組織を意味することが可能である。データ構造は、特定のデータ処理機能をサポートするように設計された、複数のデータ要素間の物理的あるいは論理的関係と定義することも可能である。複数のデータ要素間の論理的関係は、複数のユーザー定義のデータ要素間の連結関係を含むことが可能である。複数のデータ要素間の物理的関係は、コンピューター可読保存媒体(例えば、永久保存装置)に物理的に保存されている複数のデータ要素間の実際の関係を含むことが可能である。データ構造は、具体的にデータの集合、データ間の関係、データに適用できる関数や命令を含むことが可能である。効果的に設計されたデータ構造を活用することで、コンピューティングデバイスは、コンピューティングデバイスのリソースの使用を最低限に抑えながら、演算を行うことが可能である。具体的に、コンピューティングデバイスは、効果的に設計されたデータ構造を通して、演算、読み取り、取り込み、削除、比較、交換、検索の効率を高めることが可能である。
【0085】
データ構造は、データ構造の形態により、線形データ構造と非線形データ構造に分けられる。線形データ構造は、1つのデータの後にデータが1つだけ繋がっている構造になり得る。線形データ構造は、リスト(List)、スタック(Stack)、キュー(Queue)、デック(Deque)を含むことが可能である。リストは、内部的に順序が存在する一連のデータの集合を意味することが可能である。リストは、連結リスト(Linked List)を含むことが可能である。連結リストは、各々のデータがポインターを持ち、一列に繋がっている方式でデータが連結されているデータ構造になり得る。連結リストにおいて、ポインターは、次のデータや前のデータとの連結に係る情報を含むことが可能である。連結リストは、形態によって片方向連結リスト、双方向連結リスト、循環連結リストと表現することが可能である。スタックは、データへのアクセスに制限が付くデータ配列構造になり得る。スタックは、データ構造の片端でのみデータを処理(例えば、挿入または削除)できる線形データ構造になり得る。スタックに保存されているデータは、後入れ先出しのデータ構造(LIFO-Last in First Out)になり得る。キューもデータへのアクセスに制限が付くデータ配列構造であるが、スタックとの違いは、先入れ先出しのデータ構造(FIFO-First in First Out)になり得る。デックは、データ構造の両端でデータを処理できるデータ構造になり得る。
【0086】
非線形データ構造は、1つのデータの後に複数のデータが繋がっている構造になり得る。非線形データ構造は、グラフ(Graph)データ構造を含むことが可能である。グラフデータ構造は、頂点(Vertex)と辺(Edge)で定義することができ、辺は異なる2つの頂点を繋ぐ線を含むことが可能である。グラフデータ構造は、ツリー(Tree)データ構造を含むことが可能である。ツリーデータ構造は、ツリーに含まれている複数の頂点のうち、異なる2つの頂点を繋ぐ経路が1つであるデータ構造になり得る。つまり、グラフデータ構造において、ループ(loop)を形成しないデータ構造になり得る。
【0087】
データ構造は、神経回路網を含むことが可能である。神経回路網を含むデータ構造は、コンピューター可読媒体に保存されることが可能である。また、神経回路網を含むデータ構造は、神経回路網による処理のために前処理されたデータ、神経回路網に入力されるデータ、神経回路網の重み、神経回路網のハイパーパラメータ、神経回路網から取得したデータ、神経回路網の各ノードや階層に紐づいている活性化関数、神経回路網の学習のための損失関数等を含むことが可能である。神経回路網を含むデータ構造は、上記開示された構成のうち、任意の構成要素を含むことが可能である。つまり、神経回路網を含むデータ構造を構成する時、神経回路網による処理のために前処理されたデータ、神経回路網に入力されるデータ、神経回路網の重み、神経回路網のハイパーパラメータ、神経回路網から取得したデータ、神経回路網の各ノードや階層に紐づいている活性化関数、神経回路網の学習のための損失関数等の全部、又はこれらの任意の組み合わせを含めて構成することが可能である。前述の構成以外にも、神経回路網を含むデータ構造は、神経回路網の特徴を決定する任意の他の情報を含むことが可能である。また、データ構造は、神経回路網の演算過程において使用されたり、発生するあらゆる形態のデータを含むことができ、前述の事項に限定されない。コンピューター可読媒体は、コンピューター可読記録媒体及び/又はコンピューター可読伝送媒体を含むことが可能である。神経回路網は、一般的にノードと呼ばれる相互連結された計算単位の集合で構成することが可能である。このようなノードは、ニューロン(neuron)と称することも可能である。神経回路網は、少なくとも1つ以上のノードを含めて構成される。
【0088】
データ構造は、神経回路網に入力されるデータを含むことが可能である。神経回路網に入力されるデータを含むデータ構造は、コンピューター可読媒体に保存されることが可能である。神経回路網に入力されるデータは、神経回路網の学習過程において入力される学習データ及び/又は学習が完了した神経回路網に入力される入力データを含むことが可能である。神経回路網に入力されるデータは、前処理(pre-processing)を行ったデータ及び/又は前処理の対象になるデータを含むことが可能である。前処理は、データを神経回路網に入力するためのデータ処理過程を含むことが可能である。従って、データ構造は、前処理の対象になるデータ及び前処理により発生するデータを含むことが可能である。前述のデータ構造は、例示に過ぎず、本開示はこれらに限定されない。
【0089】
データ構造は、神経回路網の重みを含むことが可能である。(本明細書において、重みとパラメータは同一の意味を持つとみなすことが可能である)そして、神経回路網の重みを含むデータ構造は、コンピューター可読媒体に保存されることが可能である。神経回路網は、複数の重みを含むことが可能である。重みは可変的なものになり得るが、神経回路網が求める機能を実行するために、利用者またはアルゴリズムによって変わることが可能である。例えば、1つの出力ノードに、1つ以上の入力ノードが、各々のリンクによって相互連結されている場合、出力ノードは、上記出力ノードに繋がっている入力ノードに入力された複数の値と、各々の入力ノードに対応するリンクに設定された重みとに基づき、出力データから出力されるデータの値を決定することが可能である。前述のデータ構造は、例示に過ぎず、本開示はこれらに限定されない。
【0090】
制限ではなく例として、重みは、神経回路網の学習過程における可変の重み及び/又は神経回路網の学習が完了した重みを含むことが可能である。神経回路網の学習における可変の重みは、学習サイクルが始まる時点での重み及び/又は学習サイクル中に変化する重みを含むことが可能である。神経回路網の学習が完了した重みは、学習サイクルが完了した重みを含むことが可能である。従って、神経回路網の重みを含むデータ構造は、神経回路網の学習過程において変化する重み及び/又は神経回路網の学習が完了した重みを含むデータ構造を含むことが可能である。従って、上述の重み及び/又は各々の重みの組み合わせは、神経回路網の重みを含むデータ構造に含まれるものとする。前述のデータ構造は、例示に過ぎず、本開示はこれらに限定されない。
【0091】
神経回路網の重みを含むデータ構造は、直列化(serialization)過程を経た後にコンピューター可読保存媒体(例えば、メモリー、ハードディスク)に保存されることが可能である。直列化は、データ構造を、同一の、もしくは、異なるコンピューティングデバイスに保存しておき、後に再構成して使える形態に変換する過程になり得る。コンピューティングデバイスは、データ構造を直列化し、ネットワークを介してデータを送受信できる。直列化された神経回路網の重みを含むデータ構造を、直列化復元(deserialization)を通じて、同一のコンピューティングデバイス又は他のコンピューティングデバイスにおいて再構成することが可能である。神経回路網の重みを含むデータ構造は、直列化に限定されない。さらに、神経回路網の重みを含むデータ構造は、コンピューティングデバイスのリソースの使用を最小限に抑えながら、演算の効率を高めるためのデータ構造(例えば、非線形データ構造における、B-Tree、R-Tree、Trie、m-way search tree、AVL tree、Red-Black Tree)を含むことが可能である。前述の事項は、例示に過ぎず、本開示はこれらに限定されない。
【0092】
データ構造は、神経回路網のハイパーパラメータ(Hyper-parameter)を含むことが可能である。そして、神経回路網のハイパーパラメータを含むデータ構造は、コンピューター可読媒体に保存されることが可能である。ハイパーパラメータは、ユーザーによって変化する変数になり得る。ハイパーパラメータは、例えば、学習率(learning rate)、コスト関数(cost function)、学習サイクル反復回数、重み初期化(Weight initialization)(例えば、重み初期化の対象となる重みの値の範囲の設定)、隠れユニット数(例えば、隠れ層の数、隠れ層のノード数)を含むことが可能である。前述のデータ構造は、例示に過ぎず、本開示はこれらに限定されない。
【0093】
図3は、本開示内容の一実施例における、ベンチマーク結果を提供するためのシステム(300)に係る例示的な概略図を示している。
【0094】
一実施例において、第2コンピューティングデバイス(320)は、人工知能基盤のモデルに係る相異なる動作を行う複数のモジュールを含むことが可能である。例えば、第2コンピューティングデバイス(320)は、第1モジュール(330)、第2モジュール(340)、第3モジュール(350)を含むことが可能である。一実施例において、第1モジュール(330)は、入力されたデータセットをもとに学習モデルを生成することが可能である。第2モジュール(340)は、入力されたモデルを圧縮して軽量化モデルを生成することが可能である。第3モジュール(350)は、入力されたモデルを、少なくとも1つのターゲットノードにデプロイするためのダウンロードデータを生成することが可能である。図3の例示において、3つのモジュールを例示しているが、具現化の様態によっては、多様な数のモジュールを第2コンピューティングデバイス(320)に含めることが可能であるということは、当業者にとって容易に理解できることである。
【0095】
一実施例において、第1コンピューティングデバイス(310)と第2コンピューティングデバイス(320)とが相互作用することで、ユーザーにベンチマーク結果を提供することが可能である。例えば、第1コンピューティングデバイス(310)は、第2コンピューティングデバイス(320)の要請に対する応答として、第2コンピューティングデバイス(320)の動作に必要なベンチマーク結果を、第2コンピューティングデバイス(320)に提供することが可能である。
【0096】
一実施例において、図3では、第1コンピューティングデバイス(310)が第2コンピューティングデバイス(320)の外に存在する別のエンティティとして表現されているが、具現化の様態によっては、第1コンピューティングデバイス(310)が第2コンピューティングデバイス(320)に含まれているモジュールとして動作することも可能である。
【0097】
一実施例において、第1コンピューティングデバイス(310)は、第2コンピューティングデバイス(320)以外の他のエンティティからベンチマークに係る要請を受信し、それに対する応答として、ベンチマーク結果を提供することも可能である。例えば、第1コンピューティングデバイス(310)は、ユーザーが用意した人工知能基盤のモデル(例えば、ユーザーが制作した学習モデルや圧縮モデル)のベンチマークのための結果を提供することが可能である。
【0098】
一実施例において、第1コンピューティングデバイス(310)は、第2コンピューティングデバイス(320)の複数のモジュールのうち、どのモジュールが第1コンピューティングデバイス(310)のベンチマーク動作をトリガーリングするかを示すモジュール識別情報を受信し、上記モジュール識別情報に基づき、ベンチマーク結果を上記第2コンピューティングデバイス(320)に提供することが可能である。モジュール識別情報によって、第2コンピューティングデバイス(320)に提供される上記ベンチマーク結果が異なるようにすることが可能である。例えば、第1コンピューティングデバイス(310)は、モジュール識別情報が第1モジュール(330)を示す場合、入力されたモデルの全体を対象にした性能情報を、第2コンピューティングデバイス(320)に提供し、モジュール識別情報が第2モジュール(340)を示す場合、入力されたモデルの全体を対象にした性能情報を第2コンピューティングデバイス(320)に提供し、且つ、上記入力されたモデルのブロック単位で性能情報を提供することが可能である。他の例として、第1コンピューティングデバイス(310)は、モジュール識別情報が第1モジュール(330)を示す場合、入力されたデータセットと対応する学習モデル又はコンバートされた学習モデルを実行させるターゲットノードを決定するためのベンチマーク結果を第2コンピューティングデバイス(320)に提供し、モジュール識別情報が第2モジュール(340)を示す場合、入力されたモデルと対応する軽量化モデルを生成するために用いられる圧縮設定データを含むベンチマーク結果を第2コンピューティングデバイス(320)に提供することが可能である。
【0099】
一実施例において、第1コンピューティングデバイス(310)は、複数のノードを管理するエンティティと対応することが可能である。第1コンピューティングデバイス(310)は、第1ノード(360)、第2ノード(370)……、第Nノード(380)を含むノードリストに含まれているノードに対するベンチマークを実行することが可能である。図3では、第1ノード(360)、第2ノード(370)……、第Nノード(380)が第1コンピューティングデバイス(310)に含まれている例を示しているが、具現化の様態によっては、第1ノード(360)、第2ノード(370)……、第Nノード(380)が第1コンピューティングデバイス(310)の外に存在し、第1コンピューティングデバイス(310)との通信を介して相互作用をすることが可能なケースもあり得る。
【0100】
一実施例において、第1コンピューティングデバイス(310)は、ユーザーの要請及び/又は第2コンピューティングデバイス(320)の要請に対する応答として、複数のノードに対するベンチマーク結果を生成することが可能である。一実施例において、第1コンピューティングデバイス(310)は、ユーザーの要請及び/又は第2コンピューティングデバイス(320)の要請に対する応答として、コンバートデバイス(390)と相互作用し、複数のノードに対するベンチマーク結果を生成することが可能である。
【0101】
一実施例において、コンバートデバイス(390)は、第1モデルを第2モデルに変換するためのデバイスである。図3に示すように、コンバートデバイス(390)は、第1コンピューティングデバイス(310)や第2コンピューティングデバイス(320)とは別のエンティティとして存在するか、第1コンピューティングデバイス(310)及び/又は第2コンピューティングデバイス(320)に含まれた形態で動作をすることも可能である。
【0102】
一実施例において、ベンチマーク結果は、人工知能モデルをターゲットノードにおいて実行(例えば、推論)した結果を含むことが可能である。一例として、ベンチマーク結果は、人工知能モデルがターゲットノードにおいて実行されたときの性能測定結果を含むことが可能である。他の例示として、ベンチマーク結果は、コンバートされた人工知能モデルが、ターゲットノードにおいて実行されたときの性能測定結果を含むことが可能である。
【0103】
一実施例において、ベンチマーク結果を多様な目的のために、多様な形態で用いることが可能である。例えば、ベンチマーク結果を、準備されているモデルを実行するターゲットノードを決定するために用いることが可能である。例えば、ベンチマーク結果を、入力されたモデルと対応する候補ノードリストを生成するために用いることが可能である。例えば、ベンチマーク結果を、準備されているモデルの最適化や圧縮のために用いることが可能である。例えば、ベンチマーク結果を、準備されているモデルをターゲットノードにおいてデプロイするために用いることが可能である。
【0104】
図4は、本開示内容の一実施例における、ベンチマーク結果を提供するためのフローチャートを例示的に示している。
【0105】
一実施例において、図4に示す方法を、コンピューティングデバイス(100)において実行することが可能である。一例として、図4に示す方法を、第1コンピューティングデバイス(310)が実行することが可能である。他の例として、図4に示す方法を、第1コンピューティングデバイス(310)と第2コンピューティングデバイス(320)とを包括する、コンピューティングデバイス(100)が実行することが可能である。
【0106】
以下に、図4における複数の段階が、コンピューティングデバイス(100)によって実行される例示について具体的に説明する。具現化の様態によって、図4に示す段階のうち、一部を省略したり、段階を追加することが可能であるということは、当業者にとって容易に理解できることである。
【0107】
一実施例において、コンピューティングデバイス(100)は、ベンチマークのために入力された人工知能基盤のモデルのモデルタイプ情報と、ベンチマークの対象となるモデルタイプを識別するためのターゲットタイプ情報とを取得することが可能である(410)。
【0108】
コンピューティングデバイス(100)は、特定のモデルをベンチマークする旨の指示と、ベンチマークしようとするモデルに係る情報を含む入力データを受信することも可能である。例えば、上記入力データは、モデリングが行われたモデルファイルとベンチマークしようとするモデルタイプとに係る情報を含むことが可能である。他の例において、上記入力データは、モデリングが行われたモデルファイルと、モデルファイルと対応するモデルタイプ情報とを含むことが可能である。他の例において、上記入力データは、モデリングが行われたモデルファイルと、モデルファイルと対応するモデルタイプ情報と、ベンチマークしようとするターゲットタイプに係る情報とを含むことが可能である。コンピューティングデバイス(100)は、入力データに対する応答として、モデルのベンチマークが行われるノードを選択するための情報を提供することが可能である。
【0109】
一実施例において、モデルタイプ情報は、入力された人工知能基盤のモデルを識別するための任意の形態の情報を含むことが可能である。例えば、モデルタイプ情報は、TfliteやOnnxruntimeやTensorrtのように、モデルの実行環境を表す情報を含むことが可能である。例えば、モデルタイプ情報は、モデルの実行環境に係るライブラリー情報やソフトウェアバージョン情報を含むことも可能である。前述の例示において、モデルタイプ情報は、TfliteのPython 3.7.3やpillow 5.4.1として表現されることが可能である。
【0110】
一実施例において、ベンチマークの対象となるターゲットタイプ情報は、ベンチマークを行うための人工知能基盤のモデルを識別するための任意の形態の情報を含むことが可能である。
【0111】
他の実施例において、コンピューティングデバイス(100)は、入力された人工知能モデルから、対応するモデルタイプ情報を抽出できる。コンピューティングデバイス(100)は、入力された人工知能モデル(例えば、モデルファイル)に対し構文解析(parsing)を行うことで、モデルの実行環境及び/又はライブラリー情報を取得することが可能である。コンピューティングデバイス(100)は、抽出されたモデルタイプ情報と入力されたターゲットタイプ情報とを比較することで、モデルをコンバートするか否かを決定することが可能である。前述の実施例において、入力された人工知能基盤のモデルのモデルタイプ情報は、モデルタイプ情報を定義するユーザーの入力無しに、上記入力された人工知能基盤のモデルに基づいて決定することが可能である。
【0112】
一実施例において、ターゲットタイプ情報は、入力された人工知能基盤のモデルのモデルタイプ情報と異なる場合がある。この場合、コンピューティングデバイス(100)は、入力された人工知能基盤のモデルが、ターゲットタイプ情報を有することができるようにコンバートされたコンバート結果を取得することが可能である。ターゲットタイプ情報と入力されたモデルのモデルタイプ情報とが相異なるということは、モデルの実行環境に係る情報及び/又は実行環境に係るライブラリー情報が相異なるという意味になり得る。一例として、コンバートは、入力されたモデルに含まれている演算子を、ターゲットタイプ情報に対応するように、他のもので代替することを含むことが可能である。一例として、コンバートは、入力されたモデルのライブラリー情報又はソフトウェアバージョンを、ターゲットタイプ情報に対応するように、変更することを含むことが可能である。一例として、コンバートは、入力されたモデルの実行環境を、ターゲットタイプ情報と対応する実行環境に変更することを含むことが可能である。
【0113】
他の例として、入力された人工知能基盤のモデルのモデルタイプ情報と、ターゲットタイプ情報とが同一である場合、コンピューティングデバイス(100)は、コンバート動作を行わずに、入力された人工知能基盤のモデルに対するベンチマーク結果を生成することが可能である。
【0114】
一実施例において、コンピューティングデバイス(100)は、モデルタイプ情報とターゲットタイプ情報とに基づき、人工知能基盤のモデルをコンバートするか否かを決定することが可能である(420)。
【0115】
コンピューティングデバイス(100)は、入力されたモデルのモデルタイプ情報とターゲットタイプ情報とを比較することで、人工知能基盤のモデルをコンバートするか否かを決定することが可能である。コンピューティングデバイス(100)は、入力された人工知能基盤のモデルのモデルタイプ情報と、入力されたターゲットタイプ情報とが一致するか否かを判断できる。入力された人工知能基盤のモデルのモデルタイプ情報と、入力されたターゲットタイプ情報とが一致しない場合、コンピューティングデバイス(100)は、コンバートの結果に基づき、ベンチマーク結果を生成することが可能である。入力された人工知能基盤のモデルのモデルタイプ情報と、入力されたターゲットタイプ情報とが一致する場合、コンピューティングデバイス(100)は、入力された人工知能基盤のモデルを、ターゲットノードにおいて実行させることで、ベンチマーク結果を生成することが可能である。
【0116】
一実施例において、コンピューティングデバイス(100)は、モデルタイプ情報とターゲットタイプ情報とが相異なる場合、人工知能基盤のモデルをターゲットタイプ情報に対応するようにコンバートすることを決定するが、モデルタイプ情報とターゲットタイプ情報とが互いに対応する場合には、人工知能基盤のモデルをコンバートせずに、人工知能基盤のモデルをベンチマークの対象となるターゲットモデルとして使用すると決定することが可能である。
【0117】
一実施例において、コンバートするか否かの決定は、モデルに対応するモデルタイプ情報及びターゲットタイプ情報が入力されることに対する応答として行うことが可能である。これによって、候補ノードリストを生成又は取得するとき、コンバートするか否かに対する決定に合わせて、コンバートされたモデル(又は演算子)と複数の候補ノードの各々に対する予想性能情報を生成することが可能である。一実施例において、予想性能情報は、過去に測定された複数の候補ノードの各々に対するモデル又は演算子別の性能情報に基づいて決定された性能に係る予想情報を意味することが可能である。一例として、予想性能情報は、予想レイテンシー情報を含むことが可能である。
【0118】
他の実施例において、コンピューティングデバイス(100)は、モデルに係る情報(例えば、モデルファイル、モデルファイルに対応するモデルタイプ情報、及び/又は、ターゲットタイプ情報)と、選択されたノード情報とに基づき、モデルに対してコンバートを行うか否かを決定することも可能である。例えば、コンピューティングデバイス(100)は、決定されたモデルを、選択されたノードがサポートしているか否か、又は、決定されたモデルに含まれている演算子を、選択されたノードがサポートしているか否かに基づき、コンバートを行うか否かを決定することが可能である。この場合、決定されたモデルを選択されたノードがサポートしていない場合がある。そのような場合、コンピューティングデバイス(100)は、決定されたモデルに対してコンバートを行うか否かを決定したり、又は、決定されたモデルに含まれている演算子のうち少なくとも一部に対してコンバートを行うか否かを決定することが可能である。他の例示として、第1コンピューティングデバイス(1000c)は、決定されたモデルを選択されたノードがサポートしていない場合、決定されたモデルに対してコンバートを行う必要があると決定したり、又は、選択されたノードを他のノードに替えることを決定することが可能である。
【0119】
一実施例において、コンピューティングデバイス(100)は、ターゲットタイプ情報に基づいて決定された複数の候補ノードを含む候補ノードリストを提供することが可能である。(430)。
【0120】
一実施例において、候補ノードを、複数のノードの中からモデルのベンチマークの対象となるターゲットノードを決定するために用いることが可能である。候補ノードリストに含まれている複数の候補ノードの中から、入力データに基づき、ベンチマークが行われるターゲットノードを決定することが可能である。
【0121】
本開示内容の一実施例において、候補ノードを多様な方式で決定することが可能である。一実施例において、候補ノードを、コンバートを行うか否かに対する決定の結果と、人工知能基盤のモデル(又は、モデルタイプ情報)と、ターゲットタイプ情報とに基づいて決定することが可能である。
【0122】
例えば、コンピューティングデバイス(100)の管理下にある複数のノードのうち、入力された人工知能基盤のモデルをサポートしているノードを、候補ノードとして決定することが可能である。例えば、コンピューティングデバイス(100)の管理下にある複数のノードのうち、ターゲットタイプ情報と対応する実行環境をサポートしているノードを、候補ノードとして決定することが可能である。
【0123】
例えば、ターゲットタイプ情報と対応する実行環境をサポートしているノードのうち、人工知能基盤のモデルに含まれている第1演算子をサポートしている実行環境を有する複数の第1ノードを、上記候補ノードとして決定することが可能である。一例として、コンピューティングデバイス(100)は、入力された人工知能基盤のモデルに含まれている複数の演算子を抽出できる。ターゲットタイプ情報にマッチングされるランタイムを有するノードのうち、ランタイムはマッチングされるが、ノードがサポートするランタイムのバージョンでは上記抽出された演算子をサポートしていない場合、当該ランタイムのバージョンがインストールされているノードは、候補ノードから外すことが可能である。
【0124】
例えば、ターゲットタイプ情報と対応する実行環境を有するノードのうち、人工知能基盤のモデルに含まれている第1演算子をサポートしていないが、上記第1演算子を代替できる、上記第1演算子とは異なる第2演算子をサポートする実行環境を有している複数の第2ノードを、上記候補ノードとして決定することが可能である。一例として、コンピューティングデバイス(100)は、サポートしていない演算子を代替できる他の演算子が存在する場合、ユーザーに演算子を置き換えたり、変更するように要請することができ、ユーザーから演算子を置き換えるように要請を受けた場合は、コンピューティングデバイス(100)が当該ノードを候補ノードに含めることができ、そうでない場合は、当該ノードを候補ノードから外すことが可能である。
【0125】
例えば、人工知能基盤のモデルの大きさを超過するメモリー空き容量を有している複数の第3ノードを、候補ノードとして決定することが可能である。
【0126】
コンピューティングデバイス(100)は、前述の多様な例示において説明されている複数の候補ノード決定方式を組み合わせることで、候補ノードリストを生成することが可能である。
【0127】
一実施例において、コンピューティングデバイス(100)は、候補ノードリストを、ベンチマークを要請したコンピューティングデバイスへ伝達することが可能である。候補ノードリストに基づくユーザーの選択に沿って、ベンチマークを行うターゲットノードを決定することが可能である。
【0128】
一実施例において、候補ノードリストは、候補ノードの各々の識別情報と、ターゲットモデルが実行される場合の上記候補ノードの各々における予想レイテンシー情報を含むことが可能である。
【0129】
一実施例において、予想レイテンシー情報は、各ノードの各モデル別に予想される推論時間を含むことが可能である。予想レイテンシー情報の値が小さいほど、推論時間が短くなり得るという点を示すことが可能である。従って、予想レイテンシーの値が、人工知能基盤のモデル及びノードの組み合わせの性能指標と解釈することが可能であるため、コンピューティングデバイス(100)は、予想レイテンシーの情報の大きさを基準にして順番に並べられている候補ノードリストを提供することが可能である。前述の例示において、レイテンシー情報の大きさが小さい順に並べられている候補ノードリストを提供することが可能である。
【0130】
一実施例において、候補ノードリストの識別情報は、候補ノードと対応するハードウェア情報を含むことが可能である。例えば、識別情報は、ハードウェアと対応する製品名だけでなく、インストールされている実行環境情報、実行環境に係るライブラリー情報、パワーモード(power mode)情報、Fanモード情報、現在のボードの温度情報及び/又は現在のボードの電力使用量情報を含むことが可能である。
【0131】
一実施例において、パワーモード情報は、CPUの使用量を基準にして決定することが可能である。例えば、CPUのコアを全部使用している場合、パワーモード情報はMAXとして決定することが可能であり、30W、20W、15W、10W等のように、使用量を定量的に表現する方式で決定することも可能である。例えば、パワーモード情報の定量的な量が大きいほど、レイテンシーが低くなると考えることが可能である。他の例示として、パワーモードがMAXの場合、パワーモードを使用していない他のノードに比べてレイテンシーが低くなると考えることが可能である。
【0132】
一実施例において、Fanモード情報は、Null、Quite、Cool等のようにFanの強さを表す情報の形で表現することが可能である。一例として、FanモードがQuiteの場合、FanモードがNullの場合より、ボードの温度をより下げることができるため、レイテンシーが低くなる可能性が高い。一例として、FanモードがCoolモードの場合、他のモードと比べて、ボードの温度をより下げることができるため、レイテンシーが低くなる可能性が高い。
【0133】
一実施例において、ライブラリー情報は、特定のノードにインストールされている実行環境(例えば、ランタイム)情報をインストールするために必要なライブラリー情報を指すことが可能である。ノードの特徴によって複数の実行環境を含むことが可能であり、これによってライブラリー情報も複数の実行環境において互換可能なものになり得る。
【0134】
一実施例において、現在のボードの電力使用量は、複数のノードに繋がっている電力測定センサーから取得される電力使用量を指すことが可能である。現在のボードの電力使用量の値が小さいほど、当該ノードを使用する可能性が高くなると解釈することが可能である。
【0135】
一実施例において、候補ノードリストに含まれる複数の候補ノードの並び順は、上記予想レイテンシー情報の大きさに基づいて決定することが可能である。コンピューティングデバイス(100)は、予想レイテンシー情報の大きさを基準に並べられている候補ノードリストを提供することが可能である。前述の例示において、レイテンシー情報の大きさが小さい順に並べられている候補ノードリストを提供することが可能である。
【0136】
他の実施例において、複数の候補ノードの並び順は、メモリー使用量やCPU使用率のような因子を基準に決定することが可能である。例えば、複数の候補ノードの並び順は、予想レイテンシー情報だけを基準にするのではなく、メモリー使用量及びCPU使用率を基準に追加して、これらを基準に決定することが可能である。前述の例示において、候補ノードのうち、第1候補ノードと第2候補ノードとの間における予想レイテンシー情報の大きさの差が、予め決められた閾値範囲内にある場合は、第1候補ノードと第2候補ノードのメモリー使用量とCPU使用率に基づき、第1候補ノードと第2候補ノードとの並び順を決めることが可能である。一例として、予想レイテンシーが同一の場合、現在のメモリー(例えば、RAM)使用量とCPU使用率を基準に、並び替えることが可能である。
【0137】
他の実施例において、コンピューティングデバイス(100)は、Jetson系列のような特定のノードに対し、考慮する因子をさらに追加した上で並び順を決め、ノードを並べることが可能である。例えば、Jetson系列等のような特定のタイプのノードに対しては、当該ノード向けにさらに別途の並び替えを行うことが可能である。他の例示として、コンピューティングデバイス(100)は、特定のタイプのノードに対して、他のタイプのノードとの並び順については予想レイテンシーを基準にして決めるが、当該タイプに該当する複数のノード同士で、予想レイテンシーの値に大差がない場合、Powerフィールド及び/又はFanフィールドを考慮事項に追加して、並び順を決めることが可能である。一例として、コンピューティングデバイス(100)は、Powerフィールドと対応する因子をさらに考慮し、Powerフィールドの値が大きい順に並べることが可能である。一例として、コンピューティングデバイス(100)は、Jetson系列のような特定のノードに対し、Powerフィールドの値が同一の場合、又は、その差が予め決められた閾値範囲内にある場合、Fanの動作の大きさや強さを基準に、Fanの動作が大きい順にノードをさらに並び替えることが可能である。
【0138】
前述のように、予想レイテンシー情報において、大差のない複数のノードについては、考慮する因子を追加して、候補ノードの並び順を決定することが可能である。このように、候補ノードリストの提供において、ユーザーが直観的に予想性能を確認できる形に、候補ノードが並べられるため、ユーザーはより容易に且つ効率的に候補ノードリスト上のノードの予想性能を確認し、ターゲットノードをより効率的に決定することが可能である。
【0139】
一実施例において、コンピューティングデバイス(100)は、候補ノードリストを生成するプロセスにおいて、コンバート動作を連携させることが可能である。
【0140】
例えば、コンピューティングデバイス(100)は、人工知能基盤のモデルがターゲットタイプ情報に対応するようにコンバートされたターゲットモデルを取得することが可能である。他の例示において、コンピューティングデバイス(100)は、コンピューティングデバイス(100)においてコンバートを行うか、又は、外部のコンバートデバイスからターゲットタイプに変更されたターゲットモデルを取得することが可能である。コンピューティングデバイス(100)は、ターゲットモデルに含まれている複数の演算子の各々に対応するサブレイテンシー(sub latency)情報を取得することが可能である。例えば、1つの演算子は、1つのサブレイテンシーと対応することが可能である。この場合、サブレイテンシー情報を、上記候補ノードの各々に対して計算することが可能である。モデル内に複数の演算子が存在することが可能であり、コンピューティングデバイス(100)は、演算子別に特定のターゲットノードにおいて実行される場合に発生するサブレイテンシーを測定又は決定することが可能である。コンピューティングデバイス(100)は、複数の演算子のサブレイテンシー情報に基づき、候補ノードの各々における、上記ターゲットモデルの予想レイテンシー情報を生成することが可能である。例えば、コンピューティングデバイス(100)は、モデルに含まれている複数の演算子の各々と対応するサブレイテンシーを合算することで、モデルに対応する予想レイテンシー情報を取得することが可能である。コンピューティングデバイス(100)は、予想レイテンシー情報と、候補ノードの識別情報とを含む、候補ノードリストを提供することが可能である。
【0141】
一実施例において、人工知能基盤のモデルは、複数の演算子を含むことが可能である。演算子は、人工知能基盤のモデルの動作と対応することが可能である。モデルにおいて演算が異なれば、演算子も異なるようにすることが可能である。一例として、2D画像に対する畳み込み(Convolutional)演算を指すConv2Dに対応する演算子がモデルに含まれる場合がある。
【0142】
一実施例において、コンピューティングデバイス(100)は、モデル別の複数の演算子と複数のノードとをそれぞれマッチングさせるレイテンシーテーブルを利用して、候補ノードリストを生成することも可能である。
【0143】
一実施例において、コンピューティングデバイス(100)は、レイテンシーテーブルが存在する場合、候補ノードリストを生成する過程において、複数の候補ノードの各々の性能を測定せずに、レイテンシーテーブルを利用して複数の候補ノードの各々の予想性能情報を取得することが可能である。コンピューティングデバイス(100)は、レイテンシーテーブルが存在しない場合、候補ノードリストを生成する過程において、複数の候補ノードの各々の性能を測定し、測定した性能を含む複数の候補ノードのリストを生成することが可能である。
【0144】
一例として、1つのモデルに対し、1つのレイテンシーテーブルを取得することが可能である。一実施例において、レイテンシーテーブルは、予め保存されている複数の演算子の各々を、予め保存されているノードにおいて実行させることで取得されるサブレイテンシー情報を含むことが可能である。レイテンシーテーブルの行と列のうち、いずれか1つに演算子に係る情報が含まれ、残りの1つにはノードに係る情報が含まれる。そして、エレメントの値はサブレイテンシーとして表すことが可能である。レイテンシーテーブルが、最初にコンピューティングデバイス(100)における測定によって生成されてからは、追加の測定や実行を行うことなく、予め準備されているレイテンシーテーブルを利用し、候補ノードリストの予想性能を迅速に取得することが可能である。
【0145】
前述の通り、コンピューティングデバイス(100)は、予め生成されているレイテンシーテーブルを利用し、ターゲットモデルに含まれている複数の演算子の各々と対応するサブレイテンシー情報を取得し、複数の演算子のサブレイテンシー情報に基づき、複数の候補ノードの各々におけるターゲットモデルの予想レイテンシー情報を生成することが可能である。前述のような方式を通じて、予想レイテンシー情報と、候補ノードの識別情報とを含む、候補ノードリストを提供することが可能である。コンピューティングデバイス(100)は、入力されたモデルと対応するレイテンシーテーブルを決定し、決定されたレイテンシーテーブルに含まれている複数の演算子のノード別サブレイテンシー情報に基づき、候補ノードの各々に対し、モデルの予想レイテンシー情報を生成することが可能である。前述のモデルの予想レイテンシー情報は、複数の演算子の各々のサブレイテンシー情報を合算することで生成することが可能である。
【0146】
一実施例において、コンピューティングデバイス(100)は、コンバートマッチングテーブルを利用し、候補ノードリストを生成することが可能である。
【0147】
一実施例において、コンピューティングデバイス(100)は、入力された情報をもとに、どのタイプ(例えば、Type A)のモデルからどのタイプのモデル(例えば、Type B)へコンバートするかを決定することが可能である。Type AからType Bへコンバートされた履歴が存在する場合は、Type AからType Bへのコンバートと対応するコンバートマッチングテーブルが別途存在する場合がある。このような場合、コンピューティングデバイス(100)は、Type Aに対応するモデルを分析するだけで、レイテンシーが発生する演算子を抽出し、抽出された演算子がType Bへコンバートされた場合のレイテンシーを基準にし、予想性能情報を計算できる。
【0148】
一実施例において、Type AからType Bへコンバートされた履歴が存在しない場合は、コンピューティングデバイス(100)は、Type Aと対応するモデル(又は、演算子)をType Bへコンバートしてから、コンバートされたモデルを分析して演算子を抽出し、抽出された演算子に対してレイテンシーを計算又は測定し、予想性能情報を計算できる。
【0149】
一実施例において、コンピューティングデバイス(100)は、予め決められた複数のコンバートタイプに対し、そして/又は、コンバートに要する時間が予め決められたしきい値の時間を超える複数のコンバートタイプ(又は、複数のモデル)に対し、前述のコンバートマッチングテーブルを予め生成することが可能である。
【0150】
一実施例において、コンバートマッチングテーブルは、モデルタイプ情報に対応する人工知能基盤のモデルから抽出された演算子が、ターゲットタイプ情報に対応するようにコンバートされた場合、コンバートされた演算子と対応するサブレイテンシー情報を含むことが可能である。例えば、コンバートマッチングテーブルの行と列のうちいずれか1つは、コンバート前のモデルタイプ情報と対応する演算子を含み、残りの1つはコンバート後のターゲットタイプ情報と対応する演算子を含む。そして、コンバートマッチングテーブル内のエレメントは、コンバートされたときのコンバートされた演算子に対応するサブレイテンシー情報を含むことが可能である。一実施例において、コンバートマッチングテーブルを、ノード別に生成することが可能である。前述の例示において、1つのノードと1つのコンバートマッチングテーブルが対応することが可能である。一実施例において、コンバートマッチングテーブルを、ノード別に、そして、複数のモデルの組み合わせ別に生成することが可能である。前述の例示において、第1モデルから変換された第2モデルの第1ノードにおける演算子別のサブレイテンシー情報を、1つのテーブルとして表現できる。
【0151】
他の実施例において、コンピューティングデバイス(100)は、特定のモデルの特定の演算子が他のモデルの他の演算子に変換されるという演算子間の変換情報を含む、コンバートマッチングテーブルを利用することが可能である。前述の例示において、コンバートマッチングテーブルは、モデル間で変換が起こる場合、モデル内で演算子がどのように変換されるかを表す情報を含むことが可能である。一例として、コンバートマッチングテーブルにおける行と列のうちいずれか1つは、コンバート前のモデルの演算子を含み、残りの1つはコンバート後のモデルの演算子を含むことが可能である。前述のコンバートマッチングテーブルを利用し、演算子がコンバートによりどのように変更されるかを確認できる。かかる実施例において、コンピューティングデバイス(100)は、コンバートマッチングテーブルを利用し、コンバートされたモデルの演算子を識別し、上述のレイテンシーテーブルを利用し、コンバートされたモデルの複数の演算子の各々におけるノード別のサブレイテンシー情報を取得することが可能である。サブレイテンシーの合算を通じて、コンバートされたモデルにおけるノード別の予想性能情報を取得することが可能である。
【0152】
一実施例において、コンピューティングデバイス(100)は、人工知能基盤のモデルをコンバートすると決定された場合、モデルタイプ情報とターゲットタイプ情報とをマッチングさせるためのコンバートマッチングテーブルが存在するか否かを判別し、コンバートマッチングテーブルが存在する場合、上記人工知能基盤のモデルに含まれている演算子と上記コンバートマッチングテーブルとに基づき、上記候補ノードの各々対し、上記ターゲットモデルの予想レイテンシー情報を生成することが可能である。コンピューティングデバイス(100)は、上記予想レイテンシー情報と上記候補ノードの識別情報とを含む、上記候補ノードリストを提供することが可能である。
【0153】
一実施例において、コンピューティングデバイス(100)は、レイテンシーテーブルとコンバートマッチングテーブルとを組み合わせ、コンバートされたモデルの複数の演算子の各々におけるサブレイテンシーを決定し、そして決定されたサブレイテンシーを合算することで、コンバートされたモデルにおける予想レイテンシー情報を生成することが可能である。
【0154】
他の実施例において、コンピューティングデバイス(100)は、演算子単位ではなくモデル単位でのノード別のレイテンシー測定結果が含まれているレイテンシーテーブル及び/又は演算子単位ではなくモデル単位でのノード別且つコンバートによるレイテンシー測定結果が含まれているコンバートマッチングテーブルを組み合わせることで複数の候補ノードの各々におけるターゲットモデルの予想レイテンシー情報を生成することも可能である。
【0155】
本開示内容における一実施例において、コンピューティングデバイス(100)は、入力されたモデルに対応するモデルタイプ情報と、入力されたターゲットタイプ情報との比較に基づき、コンバートを実行するか否かを決定することが可能である。コンバートを実行すると決定した場合、コンピューティングデバイス(100)は、入力されたモデルに含まれている複数の演算子を抽出し、ターゲットタイプ情報とマッチングされる実行環境を有する複数のノードのうち、候補ノードリストに含める候補ノードを決定することが可能である。
【0156】
一実施例において、特定のノードがターゲットタイプ情報とマッチングされる実行環境を有するが、入力されたモデルに含まれている演算子を当該実行環境がサポートしていない場合には、コンピューティングデバイス(100)は、当該実行環境がインストールされている上記特定のノードを、候補ノードリストに含めないと決定することが可能である。例えば、当該ノードがサポートしているランタイムは、入力されたモデルに含まれている演算子とマッチングされるものの、入力されたモデルに含まれている演算子を当該ノードのランタイムのバージョンにおいてサポートしていない場合は、当該ランタイムのバージョンがインストールされているノードは、候補ノードから外すことが可能である。
【0157】
一実施例において、コンピューティングデバイス(100)は、特定のノードが、入力されたモデルに含まれている演算子を、当該実行環境においてサポートしていないが、当該演算子を代替できる演算子が存在する場合、演算子を置き換えるか否かを決定するための要請を送ることが可能である。ユーザーから演算子を置き換えたいという入力を受信した場合は、上記特定のノードを候補ノードリストに含めるが、ユーザーから演算子を置き換えたくないという入力を受信した場合は、特定のノードを候補ノードリストに含めないようにすることが可能である。例えば、当該ノードがサポートしているランタイムは、入力されたモデルに含まれている演算子とマッチングされるものの、入力されたモデルに含まれている演算子を当該ノードのランタイムのバージョンにおいてサポートしていない場合、且つ、当該演算子を代替できる演算子を、当該ノードのランタイムのバージョンにおいてサポートしている場合、演算子を置き換えるように要請することで候補ノードを決定することが可能である。演算子を置き換える旨の入力を受信した場合は当該ノードを候補ノードとして決定し、そうでない場合は当該ノードを候補ノードから外すことが可能である。
【0158】
一実施例において、候補ノードリストは、例えば、テーブル形式の資料構造を含むことが可能である。
【0159】
一実施例において、コンピューティングデバイス(100)は、候補ノードリストの中から、少なくとも1つのターゲットノードを選択する入力データに基づき、少なくとも1つのターゲットノードを決定することが可能である(440)。
【0160】
一実施例において、コンピューティングデバイス(100)は、候補ノードリストの中から、特定のノードを選択するユーザー入力データを受信できる。コンピューティングデバイス(100)は、ユーザー入力データに含まれている選択されたノードをターゲットノードとして決定することが可能である。
【0161】
一実施例において、コンピューティングデバイス(100)は、候補ノードリストの中から、1つのターゲットノードを選択するユーザー入力データを受信できる。他の実施例において、コンピューティングデバイス(100)は、候補ノードリストの中から、複数のターゲットノードを選択するユーザー入力データを受信できる。他の実施例において、コンピューティングデバイス(100)は、候補ノードリストの中から、特定の因子(例えば、レイテンシー)を基準に性能が最も高いノードをターゲットノードとして、ユーザーから入力を受けることなく、自動的に選択することが可能である。
【0162】
一実施例において、コンピューティングデバイス(100)は、人工知能基盤のモデルのコンバート如何に応じて取得されるターゲットモデルを少なくとも1つのターゲットノードにおいて実行することで取得されるベンチマーク結果を提供することが可能である(450)。
【0163】
一実施例において、コンピューティングデバイス(100)は、ターゲットモデルをターゲットノードにおいて推論した結果を含むベンチマーク結果を生成することが可能である。
【0164】
一実施例において、1つのノードがターゲットノードとして決定された場合、当該ノードにベンチマーク要請情報を送ることが可能である。一実施例において、複数のノードがターゲットノードとして決定された場合、複数のノードの各々にベンチマーク要請情報を送ることが可能である。ベンチマーク要請情報は、ベンチマークの対象となるターゲットモデルに係る情報を含むことが可能である。ターゲットモデルに係る情報は、例えば、モデルに係るファイルやリンク、及び/又は、モデルのターゲットタイプ情報を含むことが可能である。
【0165】
一実施例において、ベンチマーク結果は、コンピューティングデバイス(100)によって生成されたり、又は、コンピューティングデバイス(100)の管理下にある他のサーバー(例えば、複数のノードを含むサーバー)によって実行されることが可能である。
【0166】
一実施例において、ベンチマーク結果は、ターゲットモデルのターゲットノードにおける性能情報を含むことが可能である。
【0167】
一実施例において、ベンチマーク結果は、コンピューティングデバイス(100)のベンチマーク動作をトリガーリング又は要請した他のコンピューティングデバイスのモジュールが何かによって異なるものになり得る。他の実施例において、ベンチマーク動作は、コンピューティングデバイス(100)のベンチマーク動作をトリガーリング又は要請した他のコンピューティングデバイスのモジュールが何かによって異なるものになり得る。例えば、コンピューティングデバイス(100)のベンチマーク動作をトリガーリングしたモジュールが第1モジュールの場合、コンピューティングデバイス(100)は、入力されたモデル全体を対象にした性能情報を提供し、コンピューティングデバイス(100)のベンチマーク動作をトリガーリングしたモジュールが第2モジュールの場合、コンピューティングデバイス(100)は、入力されたモデルの全体を対象にした性能情報を提供するとともに、入力されたモデルのブロック単位での性能情報も追加で提供することが可能である。他の例示として、コンピューティングデバイス(100)のベンチマーク動作をトリガーリングしたモジュールが第1モジュールの場合、コンピューティングデバイス(100)は、入力されたデータセットに対応する学習モデル又はコンバートされた学習モデルを実行させるターゲットノードを決定するためのベンチマーク結果を提供し、コンピューティングデバイス(100)のベンチマーク動作をトリガーリングしたモジュールが第2モジュールの場合、コンピューティングデバイス(100)は、入力されたモデルに対応する軽量化モデルを生成するために用いられる圧縮設定データを含むベンチマーク結果を提供することが可能である。
【0168】
限定ではなく例示として、コンピューティングデバイス(100)のベンチマーク動作をトリガーリングする複数のモジュールは、入力されたデータセットをもとに学習モデルを生成する第1モジュール、入力されたモデルを圧縮して軽量化モデルを生成する第2モジュール、入力されたモデルを少なくとも1つのターゲットノードにデプロイするためのダウンロードデータを生成する第3モジュールを含むことが可能である。
【0169】
一実施例において、ベンチマーク要請情報は、モデルに対するコンバートの如何に係る情報を含むことが可能である。ベンチマーク要請情報に含まれているコンバートの如何に係る情報に基づき、入力されたモデルに対してコンバートを行うことが可能である。
【0170】
一実施例において、コンピューティングデバイス(100)は、人工知能基盤のモデルをターゲットタイプ情報に対応するようにコンバートすると決定した場合、入力されたモデルに係る情報を利用して、複数のコンバーターのうち、特定のコンバーターを決定することが可能である。例えば、コンピューティングデバイス(100)は、入力されたモデルのモデルタイプ情報とターゲットタイプ情報との組み合わせに対応するコンバーター識別情報を決定することが可能である。決定されたコンバート識別情報に対応するコンバーターが決定されると、決定されたコンバーターがコンバート動作を行うことが可能である。例えば、コンピューティングデバイス(100)は、人工知能基盤のモデルに対応するモデルファイルと、モデルタイプ情報及びターゲットタイプ情報の組み合わせに対応するコンバーター識別情報とを利用し、上記人工知能基盤のモデルがコンバートされたターゲットモデルを取得することが可能である。前述のように、コンバートを行うと決定された場合、コンバートの対象となるモデルファイルと、コンバートを行うコンバーターを識別するための情報(例えば、コンバート前のモデルタイプとコンバート後のモデルタイプとの組み合わせを識別するための識別子)とを利用して、コンバートを行うことが可能である。一例として、前述のコンバートを、コンバートデバイス(例えば、コンバートサーバー)が行うことが可能である。
【0171】
他の例示として、具現化の様態によっては、前述のコンバートをコンピューティングデバイス(100)が行うことも可能である。前述の例示において、コンピューティングデバイス(100)は、プロジェクトの結果によるモデルファイルが、特定のタイプ(例えば、Tensorrt)に対応する実行環境ではなく、他のタイプ(例えば、Onnxruntime)に対応する実行環境の場合、コンピューティングデバイス(100)は、コンバート機能を利用して他のタイプ(例えば、Onnxruntime)のモデルを特定のタイプ(例えば、Tensorrt)のモデルに変換し、コンバート結果によるモデルファイルを提供することが可能である。
【0172】
一実施例において、仮想化された運営体制(virtual operating system)において、コンバーター識別情報と対応するコンバーターのDockerイメージ(docker image)を利用して、人工知能基盤のモデルをターゲットモデルにコンバートすることが可能である。例えば、コンバートを実行するエンティティ(例えば、コンバートサーバー等)においては、入力されたコンバーター識別情報と対応するDockerイメージを取得し、Docker内でコンバーターのshファイルを実行させることで、モデルのコンバートを実行することが可能である。この場合、shファイルは、Docker内で実行する命令を含むファイルを指すことが可能である。
【0173】
一実施例において、ベンチマーク結果は、時間に係る第1タイプの定量情報と、メモリー使用に係る第2タイプの定量情報を含むことが可能である。
【0174】
一実施例において、ターゲットモデルを少なくとも1つのターゲットノードにおいて実行することで取得されるベンチマーク結果は、少なくとも1つのターゲットノードにおいてターゲットモデルの推論の前処理に要する時間に係る情報である前処理時間情報、少なくとも1つのターゲットノードにおいてターゲットモデルの推論に要する時間に係る情報である推論時間情報、少なくとも1つのターゲットノードにおいてターゲットモデルの推論の前処理のために使用されるメモリー使用量に係る情報である前処理メモリー使用量情報、少なくとも1つのターゲットノードにおいてターゲットモデルの推論のために使用されるメモリー使用量に係る情報である推論メモリー使用量情報、少なくとも1つのターゲットノードにおいてターゲットモデルを予め決められた回数分繰り返し推論することで取得される推論時間に係る定量情報、及び/又は、少なくとも1つのターゲットノードにおいてターゲットモデルを推論することで取得される、NPU、CPU、GPUの各々におけるメモリー使用に係る定量情報を含むことが可能である。
【0175】
一実施例において、前処理時間情報は、例えば、モデルを呼び出す等、推論動作を行う前の前処理に要する時間情報を含むことが可能である。この他にも、前処理時間情報は、推論の値の測定に先立ちGPU等の活性化のために、事前推論を予め決められた回数分繰り返したときの事前推論に要する時間に係る定量情報(例えば、事前推論に要する時間の最小値、最大値及び/又は、平均値)を含むことも可能である。
【0176】
一実施例において、推論時間情報は、推論過程に要する時間に係る情報であり、例えば、モデルに対する最初の推論動作に要する時間に係る時間情報及び/又は予め決められた回数分繰り返し推論したときの推論時間情報のうち、最小時間情報、最大時間情報、平均(average)時間情報及び/又は中間(median)時間情報を包括するものとして用いることが可能である。さらに、例えば、NPUで処理できない演算をCPUが引き受けて処理する状況において、NPUが遊休(idle)状態になるが、推論時間情報は、NPUが遊休状態になったときの第1サイクル値を含むことが可能である。さらに、推論時間情報は、NPUで推論を行うときの第2サイクル値、及び/又は、第1サイクル値と第2サイクル値を合算した第3サイクル値を含むことも可能である。
【0177】
一実施例において、ベンチマーク結果情報は、上記前処理メモリー使用量情報と、上記推論時間に係る定量情報を合算した合計時間情報とをさらに含むことが可能である。
【0178】
一実施例において、ベンチマーク結果情報は、RAM使用量、ROM使用量、メモリー全体の使用量及び/又はNPUで使用するSRAM領域に係る定量値等をさらに含むことが可能である。
【0179】
一実施例において、コンピューティングデバイス(100)は、多数のノードがターゲットノードとして選択されたことにより複数のベンチマーク結果が生成された場合、レイテンシーをソートの基準にして複数のベンチマーク結果を順に並べることが可能である。例えば、レイテンシーが最も少ない順にベンチマーク結果を並べ、出力することが可能である。他の例において、レイテンシーが予め決められた僅差の範囲内にある場合、又は、同一の複数のノードの各々と対応するベンチマーク結果が存在する場合、メモリー使用量及び/又はCPU使用率をソートの基準に追加して、ベンチマーク結果を順に並べることが可能である。ベンチマーク結果の並べ方は、候補ノードリストにおける並べ方に関連する特徴を含むことが可能である。
【0180】
一実施例において、ベンチマーク結果は、例えば、テーブル形式の資料構造を含むことが可能である。
【0181】
一実施例において、コンピューティングデバイス(100)は、繋がっている複数のノードの無線通信の可否によって、ベンチマーク要請情報を送る方式を変えることが可能である。無線通信は、一例として、HTTP通信を含むことが可能である。例えば、無線通信が可能な独立したノードにベンチマーク要請を伝達する場合、コンピューティングデバイス(100)は、当該ノード又は当該ノードに関連するサーバーに、ベンチマーク要請情報を送ることが可能である。例えば、無線通信が不可能なノードにベンチマーク要請を伝達しようとする場合は、コンピューティングデバイス(100)は、無線通信が不可能なノードがUSB/GPIO等を介して繋がっている、無線通信が可能なノード(例えば、Rpi4)にベンチマーク要請情報を送ることが可能である。ベンチマーク要請情報を受信した当該ノード(例えば、HTTP通信が可能なノード)が、USB/GPIO接続を介して行うSerial通信を利用して繋がっているベンチマークの対象となるノード(つまり、HTTP通信が不可能なノード)に対しプログラムを実行する方式で、ベンチマーク結果を取得することが可能である。実行しようとするターゲットモデルタイプに該当する実行環境を、無線通信が可能な独立したノードにおいて実行させる方式で、使用予想メモリーを測定することが可能である。測定された使用予想メモリーとベンチマーク要請情報を利用し、ベンチマークの対象となる無線通信が不可能なノードにおいて実行されるベンチマークプログラムを、制作及びコンパイルすることが可能である。制作及びコンパイルされたプログラムを、Serial通信を介して、ベンチマークの対象となる無線通信が不可能なノードにフラッシュ(Flash)することが可能である。このような方式で、無線通信が不可能なノードにおけるベンチマーク結果を取得することが可能である。
【0182】
一実施例において、コンピューティングデバイス(100)は、外部から確認が不可能なノード(例えば、バーチャルノード等)が、ターゲットノードに含まれている場合、以下のような方法を用いて、ベンチマーク結果を取得することが可能である。
【0183】
コンピューティングデバイス(100)は、外部から確認が不可能なノードから、第1低電力無線信号を受信したことに対する応答として、ターゲットモデルを上記ノードにおいてベンチマークするためのベンチマークタスクを含む第1応答メッセージ(acknowledgment message)をノードに送ることが可能である。例えば、第1低電力無線信号は、ビーコン信号を含むことが可能である。例えば、第1低電力無線信号は、上記ノードがベンチマークを行っているか否かに係る情報と、上記ノードのメモリー使用量に係る情報と、上記ノードのハードウェア識別情報を含むことが可能である。
【0184】
コンピューティングデバイス(100)は、上記ノードによって生成されたベンチマーク結果を含む第2低電力無線信号(例えば、コールバック(callback)信号)を上記ノードから受信できる。他の実施例において、コンピューティングデバイス(100)は、コールバック信号を、予め決められた待機時間のしきい値に該当する時間内に受信できなかった場合、上記ノードにおけるベンチマークタスクが失敗したと決定し、上記ノードを非活性(inactive)状態に設定することが可能である。コンピューティングデバイス(100)は、非活性状態に設定されたノードから第3低電力無線信号(例えば、ビーコン信号)を受信したことに対する応答として、ノードの状態を活性(active)状態に設定することが可能である。この場合、上記第1応答メッセージに含まれている上記ベンチマークタスクは、ノードがダウンロードできるターゲットモデル情報と、ノードがダウンロードした上記ターゲットモデルを変換するために用いられるノード構成(configuration)情報とを含むことが可能である。また、ノードによって生成されたベンチマーク結果は、ノード構成情報とターゲットモデル情報に基づき、上記ノードの実行環境において上記ターゲットモデルを実行することで取得される結果を含むことが可能である。
【0185】
図5は、本開示内容の一実施例における、候補ノードリストの生成に用いられるテーブル形式の資料構造(500)を例示的に示している。
【0186】
図5における資料構造(500)は、説明を目的に例示されており、具現化の様態によっては、ノードの数、演算子の数、性能情報の種類及び/又はモデルの数が多様な形で適用されている他の資料構造も、本開示内容の範囲に含まれるものとすることが可能である。
【0187】
図5に示す資料構造(500)は、モデル別の複数の演算子と複数のノードとをそれぞれマッチングさせることが可能である。資料構造(500)における行(又は列)(510)はノードに係る識別情報を示し、列(又は行)(520)は特定のモデルに含まれている演算子に係る識別情報を示すものである。
【0188】
一実施例において、資料構造(500)に含まれているエレメントの値は、特定のノードにおいて、特定のモデルの特定の演算子が実行(例えば、推論)されたときの性能情報を示すことが可能である。例えば、図5の例示のように、性能情報はレイテンシーに係る情報を含むことが可能である。この場合、性能情報は、一例として、演算子別の性能情報を指すことが可能である。一例として、この場合、性能情報は、図4におけるサブレイテンシーを指すことが可能である。
【0189】
図5における例示では、エレメントの値が小さいほど(つまり、レイテンシーの値が小さいほど)性能が良好であると解釈することが可能である。例えば、第1演算子は、第3ノード、第1ノード、第2ノード、第4ノードの順に良好な性能を有することが可能である。
【0190】
一実施例において、コンピューティングデバイス(100)は、1つ以上の資料構造(500)を利用し、候補ノードリストを生成するために必要なモデルとノードとの組み合わせに係る予想性能情報を生成することが可能である。資料構造(500)は、各ノード別の複数の演算子の性能情報を合算した値をさらに含むことが可能である。このような実施例において、第1ノードは、特定のモデルについて、3ms+4ms+5ms+7ms=19msの予想性能情報を有することが可能であり、第2ノードは、34msの予想性能情報を有することが可能であり、第3ノードは、22msの予想性能情報を有することが可能であり、第4ノードは、32msの予想性能情報を有することが可能である。例えば、候補ノードリストにおいて、性能が良好な順にノードを並べることが可能である。このような例示において、候補ノードリストにおいて、第1ノード、第3ノード、第4ノード、第2ノードの順に候補ノードを並べることが可能である。
【0191】
一実施例において、資料構造(500)は、モデル別に生成することも可能である。このような実施例において、1つのモデルは、1つの資料構造(500)と対応することが可能であるが、具現化の様態によっては、複数のモデルと対応する1つの資料構造(500)を生成することも可能である。
【0192】
一実施例において、資料構造(500)は、モデル別の複数の演算子と複数のノードとをそれぞれマッチングさせるレイテンシーテーブルと対応することが可能である。コンピューティングデバイス(100)は、かかるレイテンシーテーブルを用いて、候補ノードリストを生成することが可能である。
【0193】
一実施例において、レイテンシーテーブルは、予め保存されている複数の演算子の各々を、予め保存されているノードにおいて実行させることで取得できるサブレイテンシー情報を含むことが可能である。レイテンシーテーブルの行と列のうち、いずれか1つに演算子に係る情報が含まれ、残りの1つにはノードに係る情報が含まれることが可能である。そして、エレメントの値はサブレイテンシーとして表すことが可能である。レイテンシーテーブルが、一度コンピューティングデバイス(100)における測定によって生成されてからは、追加の測定や実行を行うことなく、ユーザーの入力に対する応答として、予め生成されているレイテンシーテーブルを利用し、候補ノードリストを迅速に生成又は取得することが可能である。
【0194】
前述の通り、コンピューティングデバイス(100)は、予め生成されているレイテンシーテーブルを利用し、ターゲットモデルに含まれている複数の演算子の各々に対応するサブレイテンシー情報を取得し、且つ、複数の演算子のサブレイテンシー情報に基づき、複数の候補ノードの各々におけるターゲットモデルの予想レイテンシー情報を生成することが可能である。コンピューティングデバイス(100)は、入力されたモデルと対応するレイテンシーテーブルを決定し、決定されたレイテンシーテーブルに含まれている複数の演算子のノード別サブレイテンシー情報に基づき、候補ノードの各々に対し、モデルの予想レイテンシー情報を生成することが可能である。前述のモデルの予想レイテンシー情報は、複数の演算子の各々のサブレイテンシー情報を合算することで生成することが可能である。
【0195】
一実施例において、資料構造(500)を、モデルの更新、新規ノードの追加及び/又は新規モデルの追加に係る変更イベントに応じて、コンピューティングデバイス(100)が更新することが可能である。変更イベントが存在しない場合、コンピューティングデバイス(100)が別途の実行や測定を行うことなく、当該資料構造(500)を、ユーザーの入力に対する応答として、候補ノードリストを生成するために活用することが可能である。
【0196】
図6は、本開示内容の一実施例における、候補ノードリストの生成に用いられるテーブル形式の資料構造(600)を例示的に示している。
【0197】
図6における資料構造(600)は、モデルがコンバートされる場合、コンバート前のモデル(例えば、ソースモデル)のソース演算子(620)及びコンバート後のモデル(例えば、ターゲットモデル)のターゲット演算子(610)を示すテーブル形式の資料構造(600)である。資料構造(600)のエレメントの値は、ソース演算子(620)がターゲット演算子(610)にコンバートされたとき、ターゲット演算子における特定のノードの予想性能(例えば、サブレイテンシー)を示すことが可能である。
【0198】
一実施例において、資料構造(600)を、複数のモデルの組み合わせ別に且つノード別に生成することが可能である。例えば、1つの資料構造(600)は、第1モデルから第2モデルにコンバートされ、且つ、コンバートされた第2モデルが第1ターゲットノードにおいて実行される場合をカバーできる。かかる例示において、第2モデルから第1モデルにコンバートされた場合は、他の資料構造を通じてカバーすることが可能である。具現化の様態によっては、1つの資料構造(600)によってカバーされる範囲は可変的なものになり得るが、例えば、1つの資料構造(600)が、複数のノードにおけるコンバートされた演算子のサブレイテンシーを含むことも可能である。
【0199】
他の例示において、資料構造(600)を、ノード別に生成することも可能である。つまり、ソースモデルからターゲットモデルにコンバートされる場合、ソースモデルにおけるどのソース演算子が、ターゲットモデルにおけるどのターゲット演算子に変更されるかを、決定することが可能である。このような場合、コンピューティングデバイス(100)は、資料構造(600)を参考にして、コンバートに関連するソース演算子とターゲット演算子との間におけるサブレイテンシー情報を取得し、それに応じてコンバートされたターゲットモデル又はコンバートされたターゲット演算子に係る予想性能情報を取得することが可能である。
【0200】
一実施例において、資料構造(600)は、コンバートマッチングテーブルと対応することが可能である。コンピューティングデバイス(100)は、人工知能基盤のモデルをコンバートすると決定された場合、コンバートマッチングテーブルが存在するか否かを判別し、コンバートマッチングテーブルが存在する場合、人工知能基盤のモデルに含まれている演算子と上記コンバートマッチングテーブルとに基づき、候補ノードの各々におけるターゲットモデルの予想レイテンシー情報を生成することが可能である。コンピューティングデバイス(100)は、予想レイテンシー情報と、候補ノードの識別情報とを含む、上記候補ノードリストを提供することが可能である。
【0201】
一実施例において、コンバートマッチングテーブルは、モデルタイプ情報に対応する人工知能基盤のモデルから抽出された演算子が、ターゲットタイプ情報に対応するようにコンバートされた場合、コンバートされた演算子と対応するサブレイテンシー情報を含むことが可能である。コンバートマッチングテーブルは、複数の演算子間においてコンバートが行われる場合、コンバートされた演算子が特定のノードにおいてどのような性能を有するかを整理したテーブル形式の資料構造(600)である。例えば、コンバートマッチングテーブルの行と列のうちいずれか1つ(620)は、コンバート前のモデルタイプ情報と対応する演算子を含み、残りの1つ(610)はコンバート後のターゲットタイプ情報と対応する演算子を含むことが可能である。そして、コンバートマッチングテーブル内のエレメントは、コンバートされたときのコンバートされた演算子に対応するサブレイテンシー情報を含むことが可能である。
【0202】
一実施例において、コンバートマッチングテーブルを、ノード別に生成することが可能である。前述の例示において、1つのノードに1つのコンバートマッチングテーブルが対応することが可能である。一実施例において、コンバートマッチングテーブルを、ノード別且つ複数のモデル(または、複数の演算子)の組み合わせ別に生成することが可能である。かかる例示において、第1モデルから変換された第2モデルの第1ノードにおける演算子別のサブレイテンシー情報を、1つのテーブルとして表現できる。かかる例示において、ソース演算子(620)は、ソースモデルに含まれている全体の演算子のうち、ターゲットモデルにコンバートする過程において、変更が存在する演算子を含むことが可能である。
【0203】
一実施例において、資料構造(600)を、モデルの更新、新規ノードの追加及び/又は新規モデルの追加に係る変更イベントに応じて、コンピューティングデバイス(100)が更新することが可能である。変更イベントが存在しない場合、コンピューティングデバイス(100)が別途の実行や測定を行うことなく、当該資料構造(600)を、ユーザーの入力に対する応答として、候補ノードリストを生成するために活用することが可能である。
【0204】
図7は、本開示内容の一実施例における、候補ノードリストの生成に用いられるテーブル形式の資料構造を例示的に示している。
【0205】
一実施例において、資料構造(700)は、コンバート前のモデルの演算子と、コンバート後のモデルの演算子との間における変換関係を示すことが可能である。図7における列(720)は、コンバート前のモデルと対応する第1モデルにおいてコンバートの対象となる演算子を示している。図7における行(710)は、コンバート後の複数のモデルの各々に含まれているコンバートされた演算子を示している。
【0206】
例えば、資料構造(700)において、コンバート前のモデルの第1-1演算子は、第2モデルにコンバートされる場合、第1-1演算子に変更されることはなく、第3モデルにコンバートされる場合、第1-3演算子に変更され、第4モデルにコンバートされる場合、第1-3演算子に変更され、第5モデルにコンバートされる場合、第1-1演算子に変更されることはない。
【0207】
一実施例において、資料構造(700)は、候補ノードリストを生成するとき、資料構造(500)及び/又は資料構造(600)と一緒に使用することが可能である。例えば、コンピューティングデバイス(100)は、入力されたモデルのモデルタイプ情報と入力されたターゲットタイプ情報とを比較することで、入力されたモデルに対してコンバートを行うか否かを決定することが可能である。コンバートが必要だと決定された場合、コンピューティングデバイス(100)は、コンバート前のモデルとコンバート後のモデルとを識別し、且つ、識別されたモデルと対応する資料構造(700)を決定することが可能である。決定された資料構造(700)をもとに、コンピューティングデバイス(100)は、コンバート前のモデルのどの演算子が、コンバート後のモデルにおいてどの演算子に変更されるかを確認することが可能である。コンピューティングデバイス(100)は、資料構造(500)及び/又は資料構造(600)を利用して変更された演算子が、特定のノードに対してどのような性能(例えば、レイテンシー)を有するかを決定することが可能である。上記のような方式で、コンピューティングデバイス(100)は、候補ノードリストを生成することが可能である。
【0208】
一実施例において、コンピューティングデバイス(100)は、特定のモデルの特定の演算子が他のモデルの他の演算子に変換されるという演算子間の変換情報を含む、コンバートマッチングテーブルを利用することが可能である。資料構造(700)は、コンバートマッチングテーブルと対応することが可能である。前述の例示において、コンバートマッチングテーブルは、モデル間で変換が起こる場合、モデル内で演算子がどのように変換されるかを表す情報を含むことが可能である。一例として、コンバートマッチングテーブルにおける行と列のうち1つ(720)は、コンバート前のモデルの演算子を含み、残りの1つ(710)はコンバート後のモデルの演算子を含むことが可能である。前述のコンバートマッチングテーブルを利用し、演算子がコンバートによりどのように変更されるかを確認できる。かかる実施例において、コンピューティングデバイス(100)は、コンバートマッチングテーブルを利用し、コンバートされたモデルの演算子を識別し、上述のレイテンシーテーブルを利用し、コンバートされたモデルの複数の演算子の各々におけるノード別のサブレイテンシー情報を取得することが可能である。サブレイテンシーの合算を通じて、コンバートされたモデルにおけるノード別の予想性能情報を取得することが可能である。
【0209】
図8は、本開示内容の一実施例における、ベンチマーク結果を提供するための方法を例示的に示している。
【0210】
一実施例において、図8に示す方法を、コンピューティングデバイス(100)において実行することが可能である。一例として、図8に示す方法を、第1コンピューティングデバイス(310)が実行することが可能である。他の例として、図8に示す方法を、第1コンピューティングデバイス(310)と第2コンピューティングデバイス(320)とを包括する、コンピューティングデバイス(100)が実行することが可能である。
【0211】
以下に、図8における複数の段階が、コンピューティングデバイス(100)によって実行される例示について具体的に説明する。具現化の様態によって、図8に示す段階のうち、一部を省略したり、段階を追加することが可能であるということは、当業者にとって容易に理解できることである。
【0212】
一実施例において、コンピューティングデバイス(100)は、推論タスクとデータセットを含む入力データを取得することが可能である(810)。
【0213】
一実施例において、コンピューティングデバイス(100)は、人工知能基盤のモデルの推論の種類及び/又は目的を含む推論タスクと、人工知能基盤のモデルにおける学習、検証及び/又はテストのためのデータセットを含む入力データとを受信することが可能である。例えば、推論タスクはオブジェクト分類、オブジェクト検出、オブジェクトセグメンテーション、クラスタリング、シーケンス予測、シーケンス決定、異常(anomaly)検知及び/又は自然言語処理等のように、人工知能モデルの推論を通じて達成しようとするあらゆる形態の目的を含むことが可能である。例えば、データセットは、人工知能基盤のモデルの学習に利用する学習データ、人工知能基盤のモデルの学習過程において、学習性能を評価するための検証データ、及び/又は、学習済みの人工知能基盤のモデルの性能を評価するためのテストデータを含むことが可能である。
【0214】
他の実施例において、コンピューティングデバイス(100)は、学習済みの人工知能基盤のモデルに係る情報(例えば、モデルファイル等)を受信することも可能である。
【0215】
他の実施例において、コンピューティングデバイス(100)は、人工知能基盤のモデルに係る情報及びベンチマークしようとするモデルタイプであるターゲットタイプ情報を受信することも可能である。この場合、人工知能基盤のモデルに係る情報は、モデルファイル、モデルファイルをダウンロードするためのリンク及び/又はモデルと対応するモデルタイプ情報を含むことが可能である。
【0216】
他の実施例において、コンピューティングデバイス(100)は、データセットが提供されない場合にデータセットを生成することが可能である。例えば、コンピューティングデバイス(100)は、データセットをランダムに生成できる。例えば、コンピューティングデバイス(100)は、ユーザーが入力したタスクに係る情報に基づき、データセットを生成することが可能である。例えば、コンピューティングデバイス(100)は、GANのような生成モデルを用いて、モデリングを行うためのデータセットを生成することが可能である。
【0217】
一実施例において、コンピューティングデバイス(100)は、推論タスクに対するベンチマークの対象となるターゲットモデルと、ターゲットモデルの推論タスクとが実行される少なくとも1つのターゲットノードとを決定することが可能である(820)。
【0218】
一実施例において、コンピューティングデバイス(100)は、推論タスクに対するベンチマークのために提案される候補ノードを含む候補ノードリストを提供し、且つ、候補ノードリストから少なくとも1つのターゲットノードを選択する入力データを受信することで、推論タスクが実行されるターゲットノードを決定することが可能である。
【0219】
一実施例において、候補ノードを、ベンチマークを実行する準備ができているノード及び/又はターゲットモデルをサポートできるノードを包括する意味として用いることが可能である。一実施例において、候補ノードリストは、例えば、テーブル形式の資料構造を含むことが可能である。
【0220】
一実施例において、候補ノードを、複数のノードの中からモデルのベンチマークの対象となるターゲットノードを決定するために用いることが可能である。候補ノードリストに含まれている複数の候補ノードの中から、入力データに基づき、ベンチマークが行われるターゲットノードを決定することが可能である。かかる実施例において、候補ノードは、例えば、ターゲットモデルをサポートできるノードと対応するものになり得る。
【0221】
一実施例において、候補ノードリストは、複数のノードの中から、ベンチマークの対象となるターゲットノード及びベンチマークの対象となるターゲットモデルを決定するために用いることが可能である。例えば、候補ノードリストは、複数のノードの中から、ベンチマークタスクを実行する準備ができている(つまり、スタンバイ状態の)候補ノードを含むことが可能である。かかる実施例において、候補ノードは、ベンチマークを行う準備ができているノードと対応するものになり得る。かかる候補ノードリストにおいて、ベンチマークの対象となるノードを選択するユーザーの入力に応じて、ベンチマークが行われるターゲットノードを決定することが可能である。前述の例示において、候補ノードリストにおける入力データに基づいてターゲットノードを決定する場合、決定されたターゲットノードがサポートできる実行環境(例えば、ランタイム等)を有するターゲットモデルに係る情報を提供することが可能である。この場合、ターゲットモデルに係る情報は、決定されたターゲットノードがサポートできる複数のモデルに係る識別情報を含むことが可能である。一例として、候補ノードリストにおいて、ユーザーの入力に応じてターゲットノードを決定する場合、ターゲットノードがサポートできるターゲットモデルに係る提案情報を生成することが可能である。上述の提案情報は、1つ以上のターゲットモデルに係る情報を含むことが可能である。提案情報におけるユーザーの入力に対する応答として、ターゲットモデルを決定することが可能である。この場合、ターゲットモデルは、ターゲットモデルのフレームワークを示すターゲットモデルの第1情報と、ターゲットモデルのソフトウェアバージョンを示すターゲットモデルの第2情報とを含むことが可能である。一実施例において、候補ノードリストにおける入力データに含まれている少なくとも1つのターゲットノードにおいてサポートできるターゲットモデルの情報を、ユーザーからの別途の入力がなくても、自動的に提供することが可能である。一実施例において、ユーザーは、ターゲットモデルに係る提案情報において、所望のターゲットモデルのフレームワークと、所望のターゲットモデルのソフトウェアバージョンとを選択することが可能である。前述のように、コンピューティングデバイス(100)は、ターゲットノードに対する選択の入力に対する応答として、自動的にターゲットノードがサポートできるターゲットモデルの提案情報を提供することで、ユーザーが人工知能分野に関する豊富な知識を有していなくても、ベンチマークしようとするノードと対応するモデルを、容易に選択できるようになる。
【0222】
一実施例において、コンピューティングデバイス(100)は、推論タスクに対するベンチマークのために提案される候補ノードを含む候補ノードリストを提供することが可能である。例えば、候補ノードリストは、複数の候補ノードの各々の識別情報と、ターゲットモデルが実行される場合の候補ノードの各々における予想レイテンシー情報とを含むことが可能である。一例として、候補ノードリストに含まれる複数の候補ノードの並び順を、上記予想レイテンシー情報の大きさに基づいて決定することが可能である。予想レイテンシーの値が小さい場合、当該ノードにおいて推論が行われるときにかかる時間が比較的に短くなり得るため、コンピューティングデバイス(100)は、予想レイテンシーの値が小さい順に(つまり、性能が良好な順に)候補ノードリストを提供することが可能である。これによって、ユーザーは、直観的に複数の候補ノードの各々の予想性能を確認し、より効率的な方式で候補ノードリストからターゲットノードを選択することが可能である。
【0223】
一実施例において、候補ノードリストにおける並び順は、多様な因子を考慮して決定することが可能である。
【0224】
一実施例において、候補ノードリストにおける並び順は、予想レイテンシーの大きさに基づいて決定することが可能である。一例として、予想レイテンシーの値が小さい順に並べることが可能である。
【0225】
一実施例において、候補ノードリストにおける並び順は、CPU使用率に基づいて決定することが可能である。一例として、CPU使用率が低い順に並べることが可能である。現在のCPU使用率が高ければ、推論に係るベンチマークを行うときのハードウェアリソースに制限が発生する可能性があるため、CPU使用率が低い順に候補ノードリストにおける複数の候補ノードを並べることが可能である。
【0226】
一実施例において、候補ノードリストにおける並び順は、メモリー使用量に基づいて決定することが可能である。一例として、メモリー使用量が少ない順に並べることが可能である。現在のメモリー使用量が多ければ、推論に係るベンチマークを行うときのハードウェアリソースに制限が発生する可能性があるため、メモリー使用量が少ない順に候補ノードリストにおける複数の候補ノードを並べることが可能である。
【0227】
一実施例において、候補ノードリストにおける候補ノードの並び順は、複数の因子の優先順位に基づいて決定することが可能である。例えば、予想レイテンシーに係る優先順位を、CPU使用率及び/又はメモリー使用量に係る優先順位より高くすることが可能である。前述の例示において、候補ノードのうち、第1候補ノードと第2候補ノードとの間における予想レイテンシー情報の大きさの差が、予め決められた閾値範囲内にある場合は、又は、予想レイテンシー情報の大きさが同一の場合、上記第1候補ノードと上記第2候補ノードのメモリー使用量及び/又はCPU使用率に基づき、上記第1候補ノードと上記第2候補ノードとの並び順を決めることが可能である。前述の例示において、予想レイテンシーの大きさが、僅差の範囲内に入る複数の候補ノードを、メモリー使用量及び/又はCPU使用率が低い順に並べることが可能である。
【0228】
一実施例において、候補ノードリストは、複数の候補ノードの各々の識別情報だけでなく、ユーザーが候補ノードリストにおけるターゲットノードを決定する際に役に立つ性能情報を含むことが可能である。例えば、候補ノードリストは、候補ノードのうち、少なくとも一部のノードにおけるCPUのコアの使用量を示すパワーモード(power mode)情報及び/又は候補ノードのうち少なくとも一部のノードにおけるFanの使用量を示すFanモード情報を、含むことが可能である。例えば、候補ノードリストは、候補ノードの各々においてサポート可能な少なくとも1つのモデルに係る情報、候補ノードの各々においてサポート可能な少なくとも1つのモデルがインストールされるために必要なライブラリー情報、及び/又は、候補ノードに繋がっている電力測定センサーから取得される電力使用量を示す電力使用量情報を含むことが可能である。
【0229】
一実施例において、候補ノードリストの識別情報は、候補ノードを識別できるハードウェア情報を含むことが可能である。例えば、識別情報は、ハードウェアと対応する製品名だけでなく、インストールされている実行環境情報、実行環境に係るライブラリー情報、パワーモード(power mode)情報、Fanモード情報、現在のボードの温度情報及び/又は現在のボードの電力使用量情報を含むことが可能である。
【0230】
一実施例において、パワーモード情報は、CPUのコアをどれくらい使用しているかを基準にして決定することが可能である。例えば、CPUのコアを全部使用している場合、パワーモード情報はMAXとして決定することが可能であり、40W、30W、20W、10W等のように、パワーの使用量を定量的に表現する方式で決定することも可能である。例えば、パワーモード情報の定量的な量が大きいほど、レイテンシーが低くなると考えることが可能である。他の例示として、パワーモードがMAXの場合、パワーモードを使用していない他のノードに比べてレイテンシーが低くなることが可能である。
【0231】
一実施例において、Fanモード情報は、Null、Quite、Cool、及び/又は、MAX等のようにFanの強さを表す情報の形で表現することが可能である。一例として、FanモードがQuiteの場合、FanモードがNullの場合より、ボードの温度をより下げることができるため、レイテンシーが低くなる可能性が高い。一例として、FanモードがCoolモードの場合、他のモードと比べて、ボードの温度をより下げることができるため、レイテンシーが低くなる可能性が高い。
【0232】
一実施例において、ライブラリー情報は、特定のノードにインストールされている実行環境(例えば、ランタイム)情報をインストールするために必要なライブラリー情報を指すことが可能である。ノードの特徴によって複数の実行環境を含むことが可能であり、これによってライブラリー情報も複数の実行環境において互換可能なものになり得る。
【0233】
一実施例において、現在のボードの電力使用量は、複数のノードに繋がっている電力測定センサーから取得される電力使用量を指すことが可能である。現在のボードの電力使用量の値が小さいほど、当該ノードを使用する可能性が高くなると解釈することが可能である。
【0234】
一実施例において、候補ノードリストに含まれる候補ノードを決定するための多様な方法論が存在し得る。本開示内容の一実施例において、候補ノードの決定方式は、以下の複数の多様な方法論の任意の形態の組み合わせを通じて具現化できる。
【0235】
例えば、コンピューティングデバイス(100)は、現在ベンチマークを行っていない、又は、現在ベンチマークを行う準備ができているノードのリストを、候補ノードとして決定することが可能である。
【0236】
例えば、コンピューティングデバイス(100)は、決定されたターゲットモデル(又は、決定されたターゲットモデル情報)をサポートできるノードを、候補ノードとして決定することが可能である。コンピューティングデバイス(100)の管理下にある複数のノードのうち、入力された人工知能基盤のモデルをサポートしているノードを、候補ノードとして決定することが可能である。
【0237】
例えば、コンピューティングデバイス(100)は、ターゲットタイプ情報と対応する実行環境をサポートしているノードのうち、人工知能基盤のモデルに含まれている第1演算子をサポートしている実行環境を有する複数の第1ノードを、候補ノードとして決定することが可能である。
【0238】
例えば、コンピューティングデバイス(100)は、ターゲットタイプ情報と対応する実行環境を有するノードのうち、人工知能基盤のモデルに含まれている第1演算子をサポートしていないが、上記第1演算子を代替できる、上記第1演算子とは異なる第2演算子をサポートする実行環境を有している複数の第2ノードを、候補ノードとして決定することが可能である。
【0239】
例えば、コンピューティングデバイス(100)は、人工知能基盤のモデルの大きさを超過するメモリー空き容量を有している複数のノードを、候補ノードとして決定することが可能である。
【0240】
一実施例において、コンピューティングデバイス(100)は、特定のノード(例えば、Jetson系列のハードウェア)が候補ノードリストに含まれる場合、並び順を決める上で考慮する因子をさらに追加することが可能である。例えば、Jetson系列等のような特定のタイプのノードに対しては、他のタイプのノードとは区別して、当該ノードを対象に別途のソートをさらに行うことが可能である。他の例示として、コンピューティングデバイス(100)は、特定のタイプのノードに対して、他のタイプのノードとの並び順については予想レイテンシーを基準にして決めるが、当該タイプに該当する複数のノード同士で、予想レイテンシーの値に大差がない場合、Powerフィールド及び/又はFanフィールドを考慮事項に追加して、並び順を決めることが可能である。一例として、コンピューティングデバイス(100)は、Powerフィールドと対応する因子をさらに考慮し、Powerフィールドの値が大きい順に並べることが可能である。一例として、コンピューティングデバイス(100)は、Jetson系列のような特定のノードに対し、Powerフィールドの値が同一の場合、又は、その差が予め決められた閾値範囲内にある場合、Fanの動作の大きさや強さを基準に、Fanの動作が大きい順にノードをさらに並び替えることが可能である。
【0241】
一実施例において、コンピューティングデバイス(100)は、候補ノードリストの中から、特定のノードを選択するユーザー入力データを受信できる。コンピューティングデバイス(100)は、ユーザー入力データに含まれている選択されたノードをターゲットノードとして決定することが可能である。
【0242】
一実施例において、コンピューティングデバイス(100)は、候補ノードリストの中から、1つのターゲットノードを選択するユーザー入力データを受信できる。他の実施例において、コンピューティングデバイス(100)は、候補ノードリストの中から、複数のターゲットノードを選択するユーザー入力データを受信できる。他の実施例において、コンピューティングデバイス(100)は、候補ノードリストの中から、特定の因子(例えば、レイテンシー)を基準に性能が最も高いノードをターゲットノードとして、ユーザーから入力を受けることなく、自動的に選択することが可能である。
【0243】
一実施例において、コンピューティングデバイス(100)は、ターゲットモデルを、上記少なくとも1つのターゲットノードにおいて実行することで取得されるベンチマーク結果を提供することが可能である(830)。
【0244】
一実施例において、コンピューティングデバイス(100)は、ターゲットモデルをターゲットノードにおいて推論した結果を含むベンチマーク結果を生成することが可能である。
【0245】
一実施例において、1つのノードがターゲットノードとして決定された場合、当該ノードにベンチマーク要請情報を送ることが可能である。一実施例において、複数のノードがターゲットノードとして決定された場合、複数のノードの各々にベンチマーク要請情報を送ることが可能である。ベンチマーク要請情報は、ベンチマークの対象となるターゲットモデルに係る情報を含むことが可能である。ターゲットモデルに係る情報は、例えば、モデルに係るファイルやリンク、及び/又は、モデルのターゲットタイプ情報を含むことが可能である。
【0246】
一実施例において、ベンチマーク結果は、コンピューティングデバイス(100)によって生成されたり、又は、コンピューティングデバイス(100)の管理下にある他のサーバー(例えば、複数のノードを含むサーバー)によって実行されることが可能である。
【0247】
一実施例において、ベンチマーク結果は、ターゲットモデルのターゲットノードにおける性能情報を含むことが可能である。
【0248】
一実施例において、ベンチマーク結果は、コンピューティングデバイス(100)のベンチマーク動作をトリガーリング又は要請した他のコンピューティングデバイスのモジュールが何かによって異なるものになり得る。他の実施例において、ベンチマーク動作は、コンピューティングデバイス(100)のベンチマーク動作をトリガーリング又は要請した他のコンピューティングデバイスのモジュールが何かによって異なるものになり得る。例えば、コンピューティングデバイス(100)のベンチマーク動作をトリガーリングしたモジュールが第1モジュールの場合、コンピューティングデバイス(100)は、入力されたモデル全体を対象にした性能情報を提供し、コンピューティングデバイス(100)のベンチマーク動作をトリガーリングしたモジュールが第2モジュールの場合、コンピューティングデバイス(100)は、入力されたモデルの全体を対象にした性能情報を提供するとともに、入力されたモデルのブロック単位での性能情報も追加で提供することが可能である。他の例示として、コンピューティングデバイス(100)のベンチマーク動作をトリガーリングしたモジュールが第1モジュールの場合、コンピューティングデバイス(100)は、入力されたデータセットに対応する学習モデル又はコンバートされた学習モデルを実行させるターゲットノードを決定するためのベンチマーク結果を提供し、コンピューティングデバイス(100)のベンチマーク動作をトリガーリングしたモジュールが第2モジュールの場合、コンピューティングデバイス(100)は、入力されたモデルに対応する軽量化モデルを生成するために用いられる圧縮設定データを含むベンチマーク結果を提供することが可能である。
【0249】
限定ではなく例示として、コンピューティングデバイス(100)のベンチマーク動作をトリガーリングする複数のモジュールは、入力されたデータセットをもとに学習モデルを生成する第1モジュール、入力されたモデルを圧縮して軽量化モデルを生成する第2モジュール、入力されたモデルを少なくとも1つのターゲットノードにデプロイするためのダウンロードデータを生成する第3モジュールを含むことが可能である。
【0250】
一実施例において、ベンチマーク要請情報は、モデルに対するコンバートの如何に係る情報を含むことが可能である。ベンチマーク要請情報に含まれているコンバートの如何に係る情報に基づき、入力されたモデルに対してコンバートを行うことが可能である。
【0251】
一実施例において、コンピューティングデバイス(100)は、人工知能基盤のモデルをターゲットタイプ情報に対応するようにコンバートすると決定した場合、入力されたモデルに係る情報を利用して、複数のコンバーターのうち、特定のコンバーターを決定することが可能である。例えば、コンピューティングデバイス(100)は、入力されたモデルのモデルタイプ情報とターゲットタイプ情報との組み合わせに対応するコンバーター識別情報を決定することが可能である。決定されたコンバート識別情報に対応するコンバーターが決定されると、決定されたコンバーターがコンバート動作を行うことが可能である。例えば、コンピューティングデバイス(100)は、人工知能基盤のモデルに対応するモデルファイルと、モデルタイプ情報及びターゲットタイプ情報の組み合わせに対応するコンバーター識別情報とを利用し、上記人工知能基盤のモデルがコンバートされたターゲットモデルを取得することが可能である。前述のように、コンバートを行うと決定された場合、コンバートの対象となるモデルファイルと、コンバートを行うコンバーターを識別するための情報(例えば、コンバート前のモデルタイプとコンバート後のモデルタイプとの組み合わせを識別するための識別子)とを利用して、コンバートを行うことが可能である。一例として、前述のコンバートを、コンバートデバイス(例えば、コンバートサーバー)が行うことが可能である。
【0252】
他の例示として、具現化の様態によっては、前述のコンバートをコンピューティングデバイス(100)が行うことも可能である。前述の例示において、コンピューティングデバイス(100)は、プロジェクトの結果によるモデルファイルが、特定のタイプ(例えば、Tensorrt)の実行環境ではなく、他のタイプ(例えば、Onnxruntime)の実行環境である場合、コンピューティングデバイス(100)は、コンバート機能を利用して、他のタイプ(例えば、Onnxruntime)のモデルを特定のタイプ(例えば、Tensorrt)のモデルに変換し、コンバート結果によるモデルファイルを提供することが可能である。
【0253】
一実施例において、仮想化された運営体制(virtual operating system)において、コンバーター識別情報と対応するコンバーターのDockerイメージ(docker image)を利用して、人工知能基盤のモデルをターゲットモデルにコンバートすることが可能である。例えば、コンバートを実行するエンティティ(例えば、コンバートサーバー等)においては、入力されたコンバーター識別情報と対応するDockerイメージを取得し、Docker内でコンバーターのshファイルを実行させることで、モデルのコンバートを実行することが可能である。この場合、shファイルは、Docker内で実行する命令を含むファイルを指すことが可能である。
【0254】
一実施例において、ベンチマーク結果は、時間に係る第1タイプの定量情報と、メモリー使用に係る第2タイプの定量情報を含むことが可能である。
【0255】
一実施例において、ターゲットモデルを少なくとも1つのターゲットノードにおいて実行することで取得されるベンチマーク結果は、少なくとも1つのターゲットノードにおいてターゲットモデルの推論の前処理に要する時間に係る情報である前処理時間情報、少なくとも1つのターゲットノードにおいてターゲットモデルの推論に要する時間に係る情報である推論時間情報、少なくとも1つのターゲットノードにおいてターゲットモデルの推論の前処理のために使用されるメモリー使用量に係る情報である前処理メモリー使用量情報、少なくとも1つのターゲットノードにおいてターゲットモデルの推論のために使用されるメモリー使用量に係る情報である推論メモリー使用量情報、少なくとも1つのターゲットノードにおいてターゲットモデルを予め決められた回数分繰り返し推論することで取得される推論時間に係る定量情報、及び/又は、少なくとも1つのターゲットノードにおいてターゲットモデルを推論することで取得される、NPU、CPU、GPUの各々におけるメモリー使用に係る定量情報を含むことが可能である。
【0256】
一実施例において、前処理時間情報は、例えば、モデルを呼び出す等、推論動作を行う前の前処理に要する時間情報を含むことが可能である。そして、前処理時間情報は、推論の値の測定に先立ち、GPU等の活性化のために事前推論を、予め決められた回数だけ繰り返したときの事前推論に要する時間に係る定量情報(例えば、事前推論に要する時間の最小値、最大値及び/又は平均値)を含むことも可能である。
【0257】
一実施例において、推論時間情報は、推論過程に要する時間に係る情報であり、例えば、モデルに対する最初の推論動作に要する時間に係る情報である時間情報及び/又は予め決められた回数だけ繰り返し推論したときの推論時間情報のうち、最小時間情報、最大時間情報、平均(average)時間情報及び/又は中間(median)時間情報を包括するものとして用いることが可能である。さらに、例えば、NPUで処理できない演算をCPUが引き受けて処理する状況において、NPUが遊休(idle)状態になるが、推論時間情報は、NPUが遊休状態になったときの第1サイクル値を含むことが可能である。さらに、推論時間情報は、NPUで推論を行うときの第2サイクル値、及び/又は、第1サイクル値と第2サイクル値を合算した第3サイクル値を含むことも可能である。
【0258】
一実施例において、ベンチマーク結果情報は、上記前処理メモリー使用量情報と、上記推論時間に係る定量情報を合算した合計時間情報とをさらに含むことが可能である。
【0259】
一実施例において、ベンチマーク結果情報は、RAM使用量、ROM使用量、メモリー全体の使用量及び/又はNPUで使用するSRAM領域に係る定量値等をさらに含むことが可能である。
【0260】
一実施例において、コンピューティングデバイス(100)は、多数のノードがターゲットノードとして選択されたことにより複数のベンチマーク結果が生成された場合、レイテンシーをソートの基準にして複数のベンチマーク結果を順に並べることが可能である。例えば、レイテンシーが最も少ない順にベンチマーク結果を並べ、出力することが可能である。他の例において、レイテンシーが予め決められた僅差の範囲内にある場合、又は、同一の複数のノードの各々と対応するベンチマーク結果が存在する場合、メモリー使用量及び/又はCPU使用率をソートの基準に追加して、ベンチマーク結果を順に並べることが可能である。ベンチマーク結果の並べ方は、候補ノードリストにおける並べ方に関連する特徴を含むことが可能である。
【0261】
一実施例において、ベンチマーク結果は、例えば、テーブル形式の資料構造を含むことが可能である。
【0262】
一実施例において、コンピューティングデバイス(100)は、繋がっている複数のノードの無線通信の可否によって、ベンチマーク要請情報を送る方式を変えることが可能である。無線通信は、一例として、HTTP通信を含むことが可能である。例えば、無線通信が可能な独立したノードにベンチマーク要請を伝達する場合、コンピューティングデバイス(100)は、当該ノード又は当該ノードに関連するサーバーに、ベンチマーク要請情報を送ることが可能である。例えば、無線通信が不可能なノードにベンチマーク要請を伝達しようとする場合は、コンピューティングデバイス(100)は、無線通信が不可能なノードがUSB/GPIO等を介して繋がっている、無線通信が可能なノード(例えば、Rpi4)にベンチマーク要請情報を送ることが可能である。ベンチマーク要請情報を受信した当該ノード(例えば、HTTP通信が可能なノード)が、USB/GPIO接続を介して行うSerial通信を利用して繋がっているベンチマークの対象となるノード(つまり、HTTP通信が不可能なノード)に対しプログラムを実行する方式で、ベンチマーク結果を取得することが可能である。実行しようとするターゲットモデルタイプに該当する実行環境を、無線通信が可能な独立したノードにおいて実行させる方式で、使用予想メモリーを測定することが可能である。測定された使用予想メモリーとベンチマーク要請情報を利用し、ベンチマークの対象となる無線通信が不可能なノードにおいて実行されるベンチマークプログラムを、制作及びコンパイルすることが可能である。制作及びコンパイルされたプログラムを、Serial通信を介して、ベンチマークの対象となる無線通信が不可能なノードにフラッシュ(Flash)することが可能である。このような方式で、無線通信が不可能なノードにおけるベンチマーク結果を取得することが可能である。
【0263】
一実施例において、コンピューティングデバイス(100)は、外部から確認が不可能なノード(例えば、バーチャルノード等)が、ターゲットノードに含まれている場合、以下のような方法を用いて、ベンチマーク結果を取得することが可能である。
【0264】
コンピューティングデバイス(100)は、外部から確認が不可能なノードから、第1低電力無線信号を受信したことに対する応答として、ターゲットモデルを上記ノードにおいてベンチマークするためのベンチマークタスクを含む第1応答メッセージ(acknowledgment message)をノードに送ることが可能である。例えば、第1低電力無線信号は、ビーコン信号を含むことが可能である。例えば、第1低電力無線信号は、上記ノードがベンチマークを行っているか否かに係る情報と、上記ノードのメモリー使用量に係る情報と、上記ノードのハードウェア識別情報を含むことが可能である。
【0265】
コンピューティングデバイス(100)は、上記ノードによって生成されたベンチマーク結果を含む第2低電力無線信号(例えば、コールバック(callback)信号)を上記ノードから受信できる。他の実施例において、コンピューティングデバイス(100)は、コールバック信号を、予め決められた待機時間のしきい値に該当する時間内に受信できなかった場合、上記ノードにおけるベンチマークタスクが失敗したと決定し、上記ノードを非活性(inactive)状態に設定することが可能である。コンピューティングデバイス(100)は、非活性状態に設定されたノードから第3低電力無線信号(例えば、ビーコン信号)を受信したことに対する応答として、ノードの状態を活性(active)状態に設定することが可能である。この場合、上記第1応答メッセージに含まれている上記ベンチマークタスクは、ノードがダウンロードできるターゲットモデル情報と、ノードがダウンロードした上記ターゲットモデルを変換するために用いられるノード構成(configuration)情報とを含むことが可能である。また、ノードによって生成されたベンチマーク結果は、ノード構成情報とターゲットモデル情報に基づき、上記ノードの実行環境において上記ターゲットモデルを実行することで取得される結果を含むことが可能である。
【0266】
図9は、本開示内容の一実施例におけるベンチマーク結果を提供するための方法を例示的に示している。
【0267】
図9に示す方法は、第1コンピューティングデバイス(310)、第2コンピューティングデバイス(320)及び/またはコンピューティングデバイス(100)により実行されることが可能である。説明を容易にするために、以下に図9の方法を、コンピューティングデバイス(100)が実行する場合について例を示す。
【0268】
一実施例において、コンピューティングデバイス(100)は、ユーザーのアクセスを確認することが可能である(905)。コンピューティングデバイス(100)が提供するプロジェクト、プラットフォーム、ウェブページ、及び/又は、モバイルページ等において、ユーザーがアクセスすることが可能であり、コンピューティングデバイス(100)は、アクセスしたユーザーが入力したデータセットをもとに、学習モデルを生成し、学習モデルを圧縮して軽量化モデルを生成し、そして/又は、モデルがノードにデプロイされるようにダウンロードデータを生成することが可能である。
【0269】
一実施例において、コンピューティングデバイス(100)は、モデルリストを提供することが可能である(910)。
【0270】
一実施例において、コンピューティングデバイス(100)は、ユーザーからモデルリストを要請する入力を受信することができ、かかる入力に対する応答として、ユーザーに提供されるモデルリストを生成することが可能である。
【0271】
一実施例において、モデルリストは、例えば、ベンチマークを行うことのできるモデルのリスト、データセットに対する学習が可能なモデルのリスト、圧縮できるモデルのリスト、特定の人工知能タスクに適したモデルのリスト、ユーザーに提案するモデルのリスト、及び/又は、ユーザーの入力を要請するモデルのリストを含むことが可能である。一例として、モデルのリストは、モデルが許容する入力データの大きさ及び/又はモデル別のレイテンシー情報を含むことが可能である。
【0272】
一実施例において、コンピューティングデバイス(100)は、ベンチマーク結果を取得しようとするモデルのアップロードを要請することが可能である(915)。一例として、コンピューティングデバイス(100)は、モデルファイル、データセット、推論タスク、モデルファイルと対応するモデルタイプ情報、及び/又は、ベンチマークの対象となるターゲットタイプ情報の入力又はアップロードを要請できる。
【0273】
一実施例において、コンピューティングデバイス(100)は、ベンチマークを行う上で(例えば、候補ノードリストを生成する上で、そして/又は、ベンチマーク結果を取得する上で)、コンバートが必要か否かを決定することが可能である(920)。例えば、アップロードされたモデルのタイプ情報とベンチマークの対象となるターゲットタイプ情報との間に差異が存在する場合は、コンバートが必要だと決定することが可能である。他の例として、コンバートを要請するユーザーの入力が存在する場合、コンピューティングデバイス(100)は、コンバートを行うと決定することが可能である。
【0274】
一実施例において、コンバートが不要であると決定された場合、モデルのアップロードとともにモデルに係る詳細情報を入力するように要請することが可能である(925)。例えば、コンピューティングデバイス(100)は、推論タスク、利用する人工知能基盤のモデルのフォーマット、アップロードされたデータセットの保存場所(例えば、ローカルのストレージやクラウド上のストレージ)、学習方式、データセットの用途(例えば、学習、検証、テスト)、ターゲットレイテンシー及び/又はプロジェクトの名称等のような詳細情報を入力するように要請することが可能である。
【0275】
一実施例において、コンバートが必要であると決定された場合、モデルのアップロードとともにモデルに係る詳細情報を入力するように要請し、且つ、コンバートオプションを提供することが可能である(930)。例えば、コンバートオプションは、ユーザーがアップロードしたモデルが、他のタイプのモデルにコンバートされることを知らせたり、又は、コンバートされる複数のモデルのうち、特定のモデルを選択するように誘導したり、又は、コンバートされる複数のモデルの各々の性能情報を提供したり、又は、ユーザーに対してコンバーターを進めてもいいと確認する入力を行うように要請することを含むことが可能である。
【0276】
一実施例において、コンピューティングデバイス(100)は、ユーザーによるモデル選択入力を受信することが可能である(935)。ユーザーによるモデル選択入力は、提案された複数のモデルの中からユーザーが選択したモデルに係る情報、ユーザーが選択したコンバートするモデルに係る情報、及び/又は、ユーザーが選択したベンチマークの対象となるモデルに係る情報を含むことが可能である。他の例示として、モデル選択入力は、ターゲットモデル及びターゲットノードを選択する入力を含むことも可能である。
【0277】
一実施例において、コンピューティングデバイス(100)は、ベンチマーク要請を受信することが可能である(940)。例えば、ベンチマーク要請は、決定されたターゲットモデルに対するベンチマークを行う旨の入力を含むことが可能である。
【0278】
一実施例において、コンピューティングデバイス(100)は、ベンチマーク要請に対する応答として、ターゲットノードを選択するための候補ノードリストを提供することが可能である(945)。候補ノードリストは、コンピューティングデバイス(100)によって生成されたり、又は、コンピューティングデバイス(100)と繋がっている他のコンピューティングデバイスによって生成され、コンピューティングデバイス(100)に保存されているデータになり得る。候補ノードリストに関する詳細な説明は、上述の図4及び図8に関する説明で代用する。
【0279】
一実施例において、コンピューティングデバイス(100)は、候補ノードリストからターゲットノードを選択するユーザーの入力及びベンチマーク設定に関連する入力を受信することが可能である(950)。例えば、候補ノードリストから少なくとも1つのターゲットノードを選択することを許容することが可能である。例えば、ベンチマーク設定に係る入力は、ベンチマーク結果に含まれる情報、推論過程におけるバッチ(batch)の大きさ、ターゲットモデルの識別情報、ターゲットモデルのソフトウェアバージョン情報、ターゲットデバイスのハードウェア識別情報、ターゲットモデルの出力データタイプ(例えば、FP32、FP16、INT8、INT4等)、学習過程におけるモデルのターゲットレイテンシー、学習過程におけるモデルの画像の大きさ、及び/又は、学習エポック(epoch)等を含むことが可能である。
【0280】
一実施例において、コンピューティングデバイス(100)は、ベンチマーク実行要請を受信することが可能である(955)。ベンチマーク実行要請に対する応答として、コンピューティングデバイス(100)は、ターゲットモデルを、ターゲットデバイスにおいて、ベンチマーク設定に沿って実行して、ベンチマーク結果情報を生成することが可能である。
【0281】
一実施例において、コンピューティングデバイス(100)は、選択されたモデルを用いて実行したベンチマークタスクのリストを提供することが可能である(960)。一実施例において、段階960を、段階935に対する応答として、又は、段階955に対する応答として実行することが可能である。例えば、段階960におけるベンチマークタスクのリストは、特定のモデルを基準にして実行されたベンチマークタスクのベンチマーク結果情報を含むことが可能である。一例として、特定のモデルに対し、複数の相異なるノード及び/又は複数の相異なる時点において行われたベンチマークに係るベンチマーク結果情報のリストが、段階960におけるベンチマークタスクのリストと対応することが可能である。
【0282】
一実施例において、コンピューティングデバイス(100)は、選択されたノードを用いて実行したベンチマークタスクのリストを提供することが可能である(965)。例えば、段階965において、ベンチマークタスクのリストは、特定のノードに基づいて実行されたベンチマークタスクのベンチマーク結果情報を含むことが可能である。一例として、特定のノードについて、複数の相異なるノードにおいて、そして/又は、相異なる時点において行われたベンチマークに係るベンチマーク結果情報のリストが、段階965におけるベンチマークタスクのリストと対応することが可能である。
【0283】
一実施例において、コンピューティングデバイス(100)は、ベンチマーク結果情報を提供することが可能である(970)。ベンチマーク結果情報に関する詳細な説明は、図4及び図8に関する詳細な説明で代用する。
【0284】
図10は、本開示内容の一実施例における、ベンチマーク結果を提供するための方法を例示的に示している。
【0285】
図10に示す複数のエンティティ(1000a、1000b、1000c、1000d、1000e)は、説明のための例示であり、具現化の様態によっては、ここに示されていない他のエンティティを追加して、ベンチマーク結果を提供するための方法を具現化するために用いたり、上記複数のエンティティの一部を除いたり、統合することも可能である。例えば、第2コンピューティングデバイス(1000b)、第1コンピューティングデバイス(1000c)、コンバートデバイス(1000d)、ノード(1000e)のうち、少なくとも2つのエンティティを、1つのエンティティに統合することが可能である。他の例として、第2コンピューティングデバイス(1000b)と第1コンピューティングデバイス(1000c)のうち、少なくとも1つは、複数のコンピューティングデバイスに分割されて、動作することが可能である。
【0286】
一実施例において、ユーザー(1000a)は、有無線通信が可能な端末等のようなコンピューティングデバイスを通して第2コンピューティングデバイス(1000b)にアクセスするエンティティを含むことが可能である。
【0287】
一実施例において、第2コンピューティングデバイス(1000b)は、ユーザー(1000a)と相互作用可能なエンティティを含むことが可能である。例えば、第2コンピューティングデバイス(1000b)は、ユーザー(1000a)が、第2コンピューティングデバイス(1000b)、第1コンピューティングデバイス(1000c)、コンバートデバイス(1000d)、ノード(1000e)のうち、少なくとも1つに係るプロジェクトを、選択及び利用できるように、ユーザーインターフェースを提供することが可能である。例えば、第2コンピューティングデバイス(1000b)のユーザーインターフェースを通して、ユーザー(1000a)が行った、モデル選択、ノード選択、ベンチマーク設定、圧縮方式の設定及び/又は学習方式の選択等のような多様な入力を、受信することが可能である。一実施例において、第2コンピューティングデバイス(1000b)は、ユーザー(1000a)に、人工知能基盤のモデルに係るモデリングプロジェクト、圧縮プロジェクト、モデルのデプロイのためのダウンロードデータを生成するプロジェクト、及び/又は、ベンチマークプロジェクト等のような多様なプロジェクトを提供することが可能である。
【0288】
一実施例において、第2コンピューティングデバイス(1000b)が第1コンピューティングデバイス(1000c)の動作をトリガーリングするように構成することが可能である。これにより、第2コンピューティングデバイス(1000b)からの信号に対する応答として、第1コンピューティングデバイス(1000c)のベンチマークに係る動作を実行することが可能である。他の実施例において、第2コンピューティングデバイス(1000b)は、コンバートデバイス(1000d)及びノード(1000e)と相互作用することも可能である。一実施例において、第2コンピューティングデバイス(1000b)は、図3における第2コンピューティングデバイス(320)と対応することが可能である。
【0289】
一実施例において、第1コンピューティングデバイス(1000c)は、ベンチマーク結果を第2コンピューティングデバイス(1000b)及び/又はユーザー(1000a)に提供することが可能である。第1コンピューティングデバイス(1000c)は、コンバートデバイス(1000d)及び/又はノード(1000e)との相互作用を通じて、ユーザー(1000a)が指定するモデル及びノードに対するベンチマーク結果を取得することが可能である。一実施例において、第1コンピューティングデバイス(1000c)は、選択されたノード情報及び選択されたモデル情報に基づき、対応するベンチマーク結果を取得することが可能である。一実施例において、第1コンピューティングデバイス(1000c)は、図3における第1コンピューティングデバイス(310)と対応することが可能である。
【0290】
一実施例において、コンバートデバイス(1000d)は、モデルに対するコンバート動作を実行することが可能である。具現化の様態によっては、コンバートデバイス(1000d)は、別途存在するか、又は、第2コンピューティングデバイス(1000b)及び/又は第1コンピューティングデバイス(1000c)とのうち、少なくともいずれか1つに統合された形で存在することも可能である。一実施例において、コンバートデバイス(1000d)は、図3におけるコンバートデバイス(390)と対応することが可能である。
【0291】
一実施例において、ノード(1000e)は、1つ以上のノードを含むことが可能である。ノード(1000e)は、選択されたモデルがベンチマークされる対象を指すことが可能である。一実施例において、ノード(1000e)を、第1コンピューティングデバイス(1000c)及び/または第2コンピューティングデバイス(1000b)の管理下に置くことが可能である。この場合、第1コンピューティングデバイス(1000c)及び/又は第2コンピューティングデバイス(1000b)からのベンチマーク要請に対する応答として、対応するノードにおけるベンチマークが実行され、且つ、ノード(1000e)は、ベンチマーク結果情報を、第1コンピューティングデバイス(1000c)及び/又は第2コンピューティングデバイス(1000b)のうち、少なくとも1つに対して送ることが可能である。一実施例において、ノード(1000e)は、第1コンピューティングデバイス(1000c)及び/または第2コンピューティングデバイス(1000b)に含まれた形で動作することが可能である。
【0292】
一実施例において、ユーザー(1000a)は、第2コンピューティングデバイス(1000b)にアクセスし、第2コンピューティングデバイス(1000b)が提供するインターフェースを通して、モデルをアップロードすることが可能である(1005)。一例として、モデルをアップロードするということは、データセットをアップロードしたり、又は、データセットをダウンロードできるリンクを渡すことを含むことが可能である。一例として、モデルをアップロードするということは、モデリングされたモデルファイル、又は、モデリングされたモデルファイルをダウンロードできるリンクを渡すことを含むことが可能である。一例として、モデルをアップロードするということは、推論タスク情報、ベンチマークの対象となるターゲットモデル情報及び/又はアップロードされたモデルに対応するモデルタイプ情報を渡すことも含むことが可能である。
【0293】
一実施例において、第2コンピューティングデバイス(1000b)は、ユーザー(1000a)からモデルリスト要請を受信することが可能である(1010a)。モデルリストは、モデリングが可能な又はベンチマークを実行できる複数のモデルに係る情報を含むことが可能である。一例として、モデルリストに含まれるモデルに係る情報は、ユーザー(1000a)によって入力されたベンチマークタスク及び/又はデータセットに基づいて決定することが可能である。
【0294】
一実施例において、第2コンバートデバイス(1000b)は、モデリング可能は、又は、ベンチマークを実行することが可能である複数のモデルに係る情報を含むモデルリストを提供することが可能である(1010b)。例えば、複数のモデルに係る情報は、モデルの識別子、モデルに入力可能なデータの大きさ、モデルの推論方式、モデルの学習方式、モデルの神経回路網の構造、モデルの特徴、モデルの性能に係る、定量情報及び/又はモデルに適したノード情報を含むことが可能である。
【0295】
一実施例において、第2コンピューティングデバイス(1000b)は、ユーザー(1000a)から、モデルリストの中から少なくとも1つのモデルを選択する、ユーザーの入力を受信することが可能である。(1015)。
【0296】
一実施例において、第2コンピューティングデバイス(1000b)は、モデルを選択するユーザーの入力に対する応答として、選択されたモデル情報(1020)を保存できる。例えば、選択されたモデル情報(1020)は、ベンチマークしようとするモデルタイプ、学習させようとするモデルタイプ、圧縮させようとするモデルタイプ、デプロイしようとするモデルタイプ、モデルファイル、モデル識別子、及び/又はデータセットに対応するモデルタイプを含むことが可能である。
【0297】
一実施例において、第2コンピューティングデバイス(1000b)は、モデルを選択するユーザーの入力に対する応答として、選択されたモデル情報(1020)に対応する候補ノードリストを提供することも可能である。一実施例において、第2コンピューティングデバイス(1000b)は、モデルを選択するユーザーの入力に対する応答として、選択されたモデル情報(1020)を第1コンピューティングデバイス(1000c)に伝達することも可能である。
【0298】
一実施例において、第2コンピューティングデバイス(1000b)は、ユーザー(1000a)からノードリスト要請を受信することが可能である(1025a)。第2コンピューティングデバイス(1000b)は、第1コンピューティングデバイス(1000c)に、ノードリスト要請を転送することが可能である(1025b)。第1コンピューティングデバイス(1000c)は、第2コンピューティングデバイス(1000b)に、ノードリストを提供することが可能である(1025c)。第2コンピューティングデバイス(1000b)は、ユーザー(1000a)に、ノードリストを提供することが可能である(1025d)。一実施例において、ノードリストは、複数のノードのうち、ベンチマークを実行する準備ができているノードのリストを含むことが可能である。一実施例において、ノードリストは、複数のノードのうち、選択されたモデル情報(1020)に対応する候補ノードのリストを含むことが可能である。
【0299】
一実施例において、第2コンピューティングデバイス(1000b)は、ユーザー(1000a)からノードを選択する入力を受信することが可能である(1030)。ノードを選択する入力は、提供されたノードリストの中から、少なくとも1つのノード(例えば、少なくとも1つのターゲットノード)を選択する入力を意味することが可能である。
【0300】
一実施例において、第2コンピューティングデバイス(1000b)は、ノードを選択するユーザーの入力に対する応答として、選択されたノード情報(1035)を保存できる。一実施例において、第2コンピューティングデバイス(1000b)は、ノードを選択するユーザーの入力に対する応答として、選択されたノード情報(1035)を第1コンピューティングデバイス(1000c)に伝達することも可能である。
【0301】
一実施例において、ノードリストにユーザー(1000a)が選択しようとするターゲットノードが存在しなかったり、又は、ユーザー(1000a)が特定のノードを新規登録しようとしたり、又は、ユーザー(1000a)が、選択されたノード情報(1035)以外の、他のノードを追加してベンチマークを行おうとする場合等があり得る。第2コンピューティングデバイス(1000b)は、ユーザー(1000a)からノード登録要請を受信することが可能である(1040a)。第2コンピューティングデバイス(1000b)は、第1コンピューティングデバイス(1000c)に、ノード登録要請を転送することが可能である(1040b)。第1コンピューティングデバイス(1000c)は、ノード登録要請に対する応答として、対応するノードに係る情報を、デバイスに係るDBに登録又は保存することが可能である。第1コンピューティングデバイス(1000c)は、登録又は保存されたノードを含むノードリストを、第2コンピューティングデバイス(1000b)に提供することが可能である。第2コンピューティングデバイス(1000b)は、受信したノードリストを、ユーザー(1000a)に提供することが可能である。一実施例において、ノードリストは、複数のノードのうち、ベンチマークを実行する準備ができているノードのリストを含むことが可能である。一実施例において、ノードリストは、複数のノードのうち、選択されたモデル情報(1020)に対応する候補ノードのリストを含むことが可能である。
【0302】
一実施例において、第2コンピューティングデバイス(1000b)は、ユーザー(1000a)からノードを選択する入力を受信することが可能である(1045)。ノードを選択する入力は、提供されたノードリストの中から、少なくとも1つのノード(例えば、少なくとも1つのターゲットノード)を選択する入力を意味することが可能である。一実施例において、第2コンピューティングデバイス(1000b)は、ノードを選択するユーザーの入力に対する応答として、選択されたノード情報(1050)を保存できる。一実施例において、第2コンピューティングデバイス(1000b)は、ノードを選択するユーザーの入力に対する応答として、選択されたノード情報(1050)を第1コンピューティングデバイス(1000c)に伝達することも可能である。
【0303】
一実施例において、第2コンピューティングデバイス(1000b)は、ユーザー(1000a)から、選択された情報でのベンチマーク進行を希望する要請を受信することが可能である(1055)。一実施例において、選択された情報は、選択されたモデル情報(1020)、選択されたノード情報(1035)、及び/又は、選択されたノード情報(1050)を含むことが可能である。例えば、段階1055におけるベンチマーク要請は、1つの選択されたモデル(1020)を複数の選択されたノード(1035及び1050)においてベンチマークすることを希望する要請を含むことが可能である。
【0304】
一実施例において、第2コンピューティングデバイス(1000b)は、選択されたモデルを、第1コンピューティングデバイス(1000c)に送信することが可能である(1056)。一実施例において、第1コンピューティングデバイス(1000c)は、受信したモデルを保存することが可能である(1057)。一実施例において、第2コンピューティングデバイス(1000b)は、選択されたノードに対するベンチマーク要請を、第1コンピューティングデバイス(1000c)に送信することが可能である。
【0305】
一実施例において、第1コンピューティングデバイス(1000c)は、受信したモデルに対して、コンバートを行うか否かを決定することが可能である(1059)。第1コンピューティングデバイス(1000c)は、受信したモデル情報及び選択されたノード情報に基づき、モデルに対してコンバートを行うか否かを決定することが可能である。例えば、第1コンピューティングデバイス(1000c)は、受信したモデルを、選択されたノードがサポートしているか否か、又は、受信したモデルに含まれている演算子を、選択されたノードがサポートしているか否かに基づき、コンバートを行うか否かを決定することが可能である。例えば、受信したモデルを選択されたノードがサポートしていない場合がある。そのような場合、第1コンピューティングデバイス(1000c)は、受信したモデルに対してコンバートを行うか否かを決定したり、又は、受信したモデルに含まれている演算子のうち少なくとも一部に対してコンバートを行うか否かを決定することが可能である。他の例において、第1コンピューティングデバイス(1000c)は、受信したモデルを選択されたノードがサポートしていない場合、受信したモデルに対してコンバートを行う必要があると決定したり、又は、選択されたノードを他のノードに替えることを決定することが可能である。
【0306】
一実施例において、コンバートが必要だと決定された場合、第1コンピューティングデバイス(1000c)は、コンバートデバイス(1000d)にモデルのコンバートを要求する要請を送ることが可能である(1060)。例えば、モデルのコンバートを要求する要請には、コンバートの対象となるモデルのタイプと、コンバート後のモデルのタイプとの組み合わせを表すコンバート識別情報を含むことが可能である。
【0307】
一実施例において、コンバートデバイス(1000d)は、モデルのコンバートを要求する要請に対する応答として、モデルをコンバートすることが可能である(1065)。例えば、コンバートデバイス(1000d)は、複数のコンバートの中から、モデルのコンバートを要求する要請に含まれているコンバート識別情報と対応するコンバーターを決定し、決定されたコンバートを用いてモデルに対するコンバートを実行することが可能である。コンバートデバイス(1000d)は、コンバートされたモデルを生成することが可能である。
【0308】
一実施例において、コンバートデバイス(1000d)は、コンバートされたモデルを、第1コンピューティングデバイス(1000c)に送信することが可能である。第1コンピューティングデバイス(1000c)は、コンバートされたモデルから、ターゲットノードを決定したり、又は、明確化や具体化を行い、且つ、ターゲットノードの可用性をチェックすることが可能である(1080)。例えば、もし決定されたターゲットノードが、現在他のベンチマークタスクを実行中の場合やターゲットノードの可用メモリー又は可用CPUが予め決められた容量に満たない場合、第1コンピューティングデバイス(1000c)は、ベンチマーク要請をキュー(queue)に置いておき、ターゲットノードが使用可能になったときに、ベンチマーク要請を出すことが可能である。
【0309】
一実施例において、決定されたターゲットノードが使用可能な状態にある場合、第1コンピューティングデバイス(1000c)は、ベンチマーク要請をノード(1000e)に送信できる。例えば、ベンチマーク要請は、ターゲットモデル及びターゲットノードに係る情報を含むことが可能である。
【0310】
一実施例において、ノード(1000e)は、ベンチマーク要請に含まれている情報に基づき、ターゲットモデルに対するベンチマークを実行し、ベンチマーク結果を生成することが可能である。ベンチマーク結果に関する詳細な説明は、図4及び図8に関する詳細な説明で代用する。ノード(1000e)は、ベンチマーク結果を第1コンピューティングデバイス(1000c)に提供することが可能である(1085)。第1コンピューティングデバイス(1000c)は、ベンチマーク結果を、第2コンピューティングデバイス(1000b)に提供することが可能である(1090)。第2コンピューティングデバイス(1000b)は、ベンチマーク結果を、ユーザー(1000a)に提供することが可能である。
【0311】
図11は、本開示内容の一実施例において、外部から確認が不可能なノードに対するベンチマーク結果を提供するための方法を例示的に示している。
【0312】
図11に示す実施例は、例えば、バーチャルノード等のように、外部から確認が不可能なノード(1120)が、ターゲットノードとしてベンチマークを実行することになった場合における、第1コンピューティングデバイス(1110)と、第2コンピューティングデバイス(1130)と、ノード(1120)との間の相互作用を示す。
【0313】
図11における説明のうち、図3乃至図10と重複する内容については、同じ説明を繰り返すことなく、説明を省略し、前述の説明で代用する。
【0314】
一実施例において、ベンチマーク結果を提供するためのシステム(1100)は、第1コンピューティングデバイス(1100)とノード(1120)とを含むことが可能である。他の例において、ベンチマーク結果を提供するためのシステム(1100)は、第2コンピューティングデバイス(1130)と、第1コンピューティングデバイス(1100)と、ノード(1120)とを含むことが可能である。他の例において、ベンチマーク結果を提供するためのシステム(1100)が第1コンピューティングデバイス(1100)を含むが、第2コンピューティングデバイス(1130)及びノード(1120)は、システム(1100)の外部に存在することが可能である。
【0315】
一実施例において、第1コンピューティングデバイス(1110)は、受信したベンチマーク要請に含まれているターゲットノードの識別情報に基づき、ターゲットノードが外部から確認不可能なノードであるか、又は、ターゲットノードが外部から確認可能なノードであるか、又は、ターゲットノードが無線通信(例えば、HTTP通信等)が可能なノードであるか否かを決定することが可能である。ターゲットノードが外部から確認不可能なノードであると決定された場合、本開示内容の一実施例における技法は、図11における例示的方法により具現化されることが可能である。
【0316】
ここで「外部」は、例えば、ノード(1120)が接続しているネットワークの外を意味することが可能である。例えば、外部から確認が不可能なノード(1120)は、ネットワークの外部からネットワークの内部の機器に接続できない状態にあるノード、外部からネットワークにアクセスできないノード、又は外部からは確認できずビーコン信号を通して確認が可能なノード、又は外部からネットワークにアクセスできないためノードが発信するビーコン信号を通して確認が可能なノード、又はバーチャルノードを包括する意味として用いることが可能である。
【0317】
一実施例において、ノード(1120)は、一定の周期で、ビーコン信号のような低電力信号を、外部(例えば、第1コンピューティングデバイス(1110))へ送信できる。制限ではなく例示として、ノード(1120)が送信するビーコン信号の送信周期は、3分、2分、1分、30秒及び/又は20秒等のように、多様な値になり得る。第1コンピューティングデバイス(1110)は、ノード(1120)とかかる低電力信号を送受信するという方式で、ノード(1120)と相互作用を行うことが可能であり、低電力信号の中に特定のデータ(例えば、ベンチマーク結果情報、ベンチマーク割り当てのための情報、ベンチマーク実行可否を示す情報、ノード登録情報等)を含めるという方式で、ノード(1120)とのベンチマーク動作が行われることが可能である。
【0318】
図11に示す複数のエンティティ(1110、1120、1130)は、説明のための例示であり、具現化の様態によっては、ここに示されていない他のエンティティを追加して、外部から確認が不可能なノードに対するベンチマーク結果を提供するための方法を具現化するために用いたり、上記複数のエンティティの一部を除いたり、統合することも可能である。例えば、第2コンピューティングデバイス(1130)、第1コンピューティングデバイス(1120)、ノード(1120)のうち、少なくとも2つのエンティティを、1つのエンティティに統合することが可能である。他の例として、第2コンピューティングデバイス(1120)と第1コンピューティングデバイス(1110)のうち、少なくとも1つは、複数のコンピューティングデバイスに分割されて、動作することが可能である。
【0319】
一実施例において、第2コンピューティングデバイス(1130)は、ユーザー及び第1コンピューティングデバイス(1110)と相互作用可能なエンティティを含むことが可能である。例えば、第2コンピューティングデバイス(1130)は、ユーザーがプロジェクトを選択及び利用できるように、ユーザーインターフェースを提供することが可能である。例えば、第2コンピューティングデバイス(1130)のユーザーインターフェースを通して、ユーザーが行った、モデル選択、ノード選択、ベンチマーク設定、圧縮方式の設定及び/又は学習方式の選択等のような多様な入力を受信することが可能である。一実施例において、第2コンピューティングデバイス(1130)は、ユーザーに、人工知能基盤のモデルに係るモデリングプロジェクト、圧縮プロジェクト、モデルのデプロイのためのダウンロードデータを生成するプロジェクト、及び/又は、ベンチマークプロジェクト等のような多様なプロジェクトを提供することが可能である。
【0320】
一実施例において、第2コンピューティングデバイス(1130)を、第1コンピューティングデバイス(1100)の動作をトリガーリングするように構成することが可能である。これにより、第2コンピューティングデバイス(1130)からの信号に対する応答として、第1コンピューティングデバイス(1110)のベンチマークに係る動作を実行することが可能である。他の実施例において、第2コンピューティングデバイス(1130))は、ノード(1120)と相互作用することも可能である。一実施例において、第2コンピューティングデバイス(1130)は、図3における第2コンピューティングデバイス(320)及び/又は図10における第2コンピューティングデバイス(1000b)と対応することが可能である。
【0321】
一実施例において、第1コンピューティングデバイス(1110)は、ベンチマーク結果を第2コンピューティングデバイス(1130)及び/又はユーザーに提供することが可能である。第1コンピューティングデバイス(1110)は、ノード(1120)と相互作用することで、第2コンピューティングデバイス(1130)から受信されたモデル及びノードに対するベンチマーク結果を取得することが可能である。一実施例において、第1コンピューティングデバイス(1110)は、選択されたノード情報及び選択されたモデル情報に基づき、対応するベンチマーク結果を取得することが可能である。一実施例において、第1コンピューティングデバイス(1110)は、図3における第1コンピューティングデバイス(310)及び/又は図10における第1コンピューティングデバイス(1000c)と対応することも可能である。
【0322】
一実施例において、ノード(1120)は、1つ以上のノードを含むことが可能である。ノード(1120)は、第1コンピューティングデバイス(1110)に含まれた形で動作可能なものになり得る。ノード(1120)は、選択されたモデルがベンチマークされる対象を示すことが可能である。一実施例において、ノード(1120)を、第1コンピューティングデバイス(1110)及び/または第2コンピューティングデバイス(1130)の管理下に置くことが可能である。この場合、第1コンピューティングデバイス(1110)及び/又は第2コンピューティングデバイス(1130)からのベンチマーク要請に対する応答として、対応するノードにおけるベンチマークが実行され、且つ、ノード(1120)は、ベンチマーク結果情報を、第1コンピューティングデバイス(1110)及び/又は第2コンピューティングデバイス(1130)のうち、少なくとも1つに対して送ることが可能である。
【0323】
一実施例において、第1コンピューティングデバイス(1110)は、ノード(1120)から、低電力信号を受信することが可能である。例えば、低電力信号は、ビーコン信号を含むことが可能である。例えば、この場合、低電力信号は、ノード(1120)の識別情報を含むことが可能である。他の例において、低電力信号は、当該ノードを第1コンピューティングデバイス(1110)に登録しようとする登録要請を含むことが可能である。第1コンピューティングデバイス(1110)は、ノード(1120)から受信した低電力信号に対する応答として、当該ノード(1120)を保存又は登録することが可能である(1141)。例えば、第1コンピューティングデバイス(1110)は、ノード(1120)から受信した低電力信号に含まれているノード(1120)の識別情報が、自身のDBに登録されているか否かを決定することが可能である。ノード(1120)の識別情報が、自身のDBに登録されていない場合、コンピューティングデバイス(1110)は、当該ノード(1120)を、DBに保存又は登録させることが可能である。
【0324】
一実施例において、第1コンピューティングデバイス(1110)は、低電力信号に対する応答として、応答メッセージをノード(1120)に送信することが可能である(1142)。第1コンピューティングデバイス(1110)は、低電力信号と対応するノードを活性状態に設定することが可能である。例えば、活性状態は、ベンチマーク動作が可能な状態を意味することが可能である。例えば、活性状態は、ベンチマーク動作のための通信が可能な状態を意味することが可能である。例えば、活性状態は、CPU使用率及び/又はメモリー使用量等を踏まえ、現在ベンチマークタスクを実行できる状態を意味することが可能である。
【0325】
一実施例において、第2コンピューティングデバイス(1130)は、第1コンピューティングデバイス(1100)に第1ベンチマーク要請を送ることが可能である(1143)。例えば、第1ベンチマーク要請は、ベンチマークしようとするモデル及びノードに係る情報を含むことが可能である。一実施例において、第1コンピューティングデバイス(1110)は、第1ベンチマーク要請に含まれているノード情報に基づき、複数のノードのうち、どのノードに第1ベンチマーク要請を送るかを決定することが可能である。例えば、第1ベンチマーク要請に含まれているノードが、外部から確認が不可能なノード(1120)の場合、第1コンピューティングデバイス(1110)は、第1ベンチマーク要請について、図11に示す方法で、ノード(1120)と相互作用すると決定することが可能である。
【0326】
一実施例において、第1コンピューティングデバイス(1110)は、第1ベンチマーク要請を分析することで、第1ベンチマーク要請に含まれているモデルをコンバートするか否かを決定することが可能である。コンバートする必要があると決定された場合、第1コンピューティングデバイス(1110)は、第1ベンチマーク要請に含まれているモデルのコンバート結果を取得することが可能である。
【0327】
一実施例において、第1コンピューティングデバイス(1110)は、第1ベンチマーク要請(1143)に対する応答として、第1ベンチマーク要請(1143)と対応するベンチマーク結果を取得するために、ノード(1120)と相互作用することが可能である。他の実施例において、第1コンピューティングデバイス(1110)は、第1ベンチマーク要請(1143)に対する応答として、第1ベンチマーク要請(1143)と対応する候補ノードリストを取得するために、ノード(1120)と相互作用することが可能である。
【0328】
一実施例において、第1コンピューティングデバイス(1110)は、ノード(1120)から低電力信号を受信するまで、第1ベンチマーク要請(1143)に対応するベンチマーク動作を保留して待機することが可能である(1144)。前述のように、ノード(1120)は、外部から確認が不可能で、例えば、ビーコン信号等を通して通信できるノードであるため、第1コンピューティングデバイス(1110)は、ノード(1120)から後続の低電力信号(1145)を受信するまで、ベンチマークに対する追加動作を保留して待機することが可能である。
【0329】
一実施例において、第1コンピューティングデバイス(1110)は、ノード(1120)から、後続の低電力信号を受信することが可能である(1145)。段階1145において受信した低電力信号は、例えば、ノード(1120)が、一定の周期で又は繰り返し発信するビーコン信号を含むことが可能である。かかるビーコン信号は、ノード(1120)が現在ベンチマークを実行しているか否か、ノード(1120)のメモリー使用量、ノード(1120)のCPU使用率及び/又はノード(1120)の識別情報を含むことが可能である。
【0330】
一実施例において、第1コンピューティングデバイス(1110)は、低電力信号に対する応答として、待機中の第1ベンチマーク要請に対応するベンチマークタスクを割り当てるための応答メッセージを生成することが可能である(1146)。かかる応答メッセージは、上記低電力信号に含まれているノード(1120)の識別情報に基づき、第1コンピューティングデバイス(1110)からノード(1120)に送信されることが可能である。例えば、応答メッセージに含まれているベンチマークタスクは、ノード(1120)がダウンロードできるターゲットモデル情報と、ノード(1120)がダウンロードしたターゲットモデルを変換するために用いられるノード構成(configuration)情報とを含むことが可能である。
【0331】
一実施例において、ノード(1120)は、第1ベンチマーク要請に対応する第1ベンチマークを実行することが可能である(1147)。ノード(1120)は、第1ベンチマークを実行することで取得される第1ベンチマーク結果を、低電力信号(例えば、コールバック信号)を通して、第1コンピューティングデバイス(1110)に送ることが可能である(1150)。第1ベンチマーク結果は、ノード構成情報とターゲットモデル情報に基づき、ノード(1120)の実行環境においてターゲットモデルを実行することで取得される結果を含むことが可能である。例えば、コールバック信号も、ビーコン信号の形態を有することが可能である。コールバック信号(低電力信号)は、ノード(1120)が行ったベンチマーク結果を含むことが可能である。低電力信号は、ベンチマークを行った結果を含むことが可能である。ベンチマーク結果情報に関する詳細な説明は、説明の重複を避けるために、図4及び図8に関する説明で代用する。第1ベンチマーク結果を、第1コンピューティングデバイス(1110)から第2コンピューティングデバイス(1130)に送ることが可能である(1152)。
【0332】
一実施例において、第2コンピューティングデバイス(1130)は、第2ベンチマーク要請を、第1コンピューティングデバイス(1100)に送ることが可能である(1148)。例えば、第2コンピューティングデバイス(1130)は、複数のユーザーからのベンチマーク要請を、第1コンピューティングデバイス(1100)へ順次に送ることが可能である。かかる例示において、第1ベンチマーク要請(1143)は、第1ユーザーと対応するベンチマーク要請であり、第2ベンチマーク要請(1148)は、第2ユーザーと対応するベンチマーク要請になり得る。例えば、第2コンピューティングデバイス(1130)は、1人のユーザーからの複数のベンチマーク要請を、第1コンピューティングデバイス(1100)へ順次に送ることが可能である。図11の例示においては、第1ベンチマーク要請(1143)と対応するベンチマーク結果情報が、第2コンピューティングデバイス(1130)に伝達される前に、第2ベンチマーク要請(1148)が第1コンピューティングデバイス(1110)に送られることが可能である。第1コンピューティングデバイス(1110)は、第2ベンチマーク要請(1148)に対する応答として、低電力信号を受信するまで、ベンチマーク動作を保留して待機することが可能である(1149)。一実施例において、第1コンピューティングデバイス(1110)は、ノード(1120)から受信した低電力信号(1150)に対する応答として、第2ベンチマーク要請に対応するベンチマークタスクを、ノード(1120)に割り当てるための応答メッセージを、ノード(1120)に送ることが可能である(1151)。一例として、第2コンピューティングデバイス(1130)に、第1ベンチマーク結果(1152)が送信される前に、第2ベンチマーク要請を割り当てるための応答メッセージが、ノード(1120)に伝達されることが可能である。かかる例において、第1ベンチマーク要請に対応する第1ベンチマーク結果が含まれている低電力信号(1150)に対応する応答メッセージを通して、上記ノード(1120)に第2ベンチマーク要請が伝達されることが可能である(1156)。前述の例に記載されているように、第1ベンチマーク結果を含む低電力信号(例えば、ビーコン信号)に対する応答メッセージを通して、新しいベンチマークタスクをノード(1120)に割り当てることが可能である。第1コンピューティングデバイス(1110)は、第1ベンチマーク結果を取得しながら、第2ベンチマーク要請をノード(1120)に送信することが可能である。これにより、第1コンピューティングデバイス(1110)とノード(1120)との間において、低電力信号と応答メッセージの通信に係るリソースの使用を効率化することが可能である。
【0333】
一実施例において、ノード(1120)は、第2ベンチマーク要請に対応する第2ベンチマークを実行することが可能である(1153)。第2ベンチマークを実行した結果、ノード(1120)は、第2ベンチマーク結果を含む低電力信号(例えば、コールバック信号)を、第1コンピューティングデバイス(1110)に送ることが可能である(1154)。第1コンピューティングデバイス(1110)は、第2ベンチマーク結果を、第2コンピューティングデバイス(1130)に送ることが可能である(1155)。
【0334】
一実施例において、第2コンピューティングデバイス(1130)は、第3ベンチマーク要請を、第1コンピューティングデバイス(1100)に送ることが可能である(1157)。第1コンピューティングデバイス(1110)は、対応するノードからの低電力信号を受信するまでベンチマーク動作を保留して待機し、対応するノードからの低電力信号を受信できなかった場合、第3ベンチマーク要請に対応するベンチマークが失敗したと決定することが可能である。(1158)。第1コンピューティングデバイス(1110)は、第3ベンチマーク要請に対応する第3ベンチマークが失敗したという情報を、第2コンピューティングデバイス(1130)に伝えることが可能である(1159)。他の実施例において、第1コンピューティングデバイス(1110)は、低電力無線信号を、予め決められた待機時間のしきい値に該当する時間内に受信できなかった場合、当該ノードにおけるベンチマークタスクが失敗したと決定し、当該ノードを非活性状態に設定することが可能である。一実施例において、第1コンピューティングデバイス(1110)は、特定のノードを非活性状態に設定してから、当該ノードから低電力無線信号を受信した場合、それに対する応答として、当該ノードの状態を活性状態に設定することが可能である。一例として、非活性状態に設定されているノードを指定するベンチマーク要請を後から受信した場合、第1コンピューティングデバイス(1110)は、当該ノードが現在ベンチマークを実行できないという結果及び/又は候補ノードから当該ノードを削除した候補ノードリストを、第2コンピューティングデバイス(1130)に伝達することが可能である。
【0335】
他の実施例において、第1コンピューティングデバイス(1110)は、第3ベンチマーク要請をノード(1120)に送信し、ノード(1120)から、予め決められた待機時間のしきい値に該当する時間内に、低電力無線信号(例えば、ベンチマーク結果を含むコールバック信号)を受信できなかった場合、当該ノードからのベンチマークタスクが失敗したと決定し、当該ノードを非活性状態に設定することが可能である。第1コンピューティングデバイス(1110)は、第3ベンチマーク要請に対応する第3ベンチマークが失敗したという情報を、第2コンピューティングデバイス(1130)に伝えることが可能である。
【0336】
本開示内容の複数の実施例における技法は、候補ノードリストを生成する際、そして/又は、ベンチマーク結果を生成する際に、外部から確認が不可能なノードも考慮に入れることが可能になるため、ベンチマークの対象となるノードの範囲が広がる効果を得ることが可能である。
【0337】
図12は、本開示内容の一実施例における、ベンチマーク結果を提供するための方法を例示的に示している。
【0338】
一実施として、図12に示す方法を、第1コンピューティングデバイス(310)が実行することが可能である。他の例として、図12に示す方法を、第1コンピューティングデバイス(310)と第2コンピューティングデバイス(320)とを包括する、コンピューティングデバイス(100)が実行することが可能である。
【0339】
以下に、図12における複数の段階が、第1コンピューティングデバイスによって実行される例示について具体的に説明する。具現化の様態によって、図12に示す段階のうち、一部を省略したり、段階を追加することが可能であるということは、当業者にとって容易に理解できることである。
【0340】
一実施例において、図12での第1コンピューティングデバイスは、図3における第1コンピューティングデバイス(310)と対応することが可能であり、第2コンピューティングデバイスは、図3における第2コンピューティングデバイス(320)と対応することが可能である。一実施例において、図12での第1コンピューティングデバイスは、図4乃至図11における第1コンピューティングデバイスと対応することが可能であり、第2コンピューティングデバイスは、図4乃至図11における第2コンピューティングデバイスと対応することが可能である。
【0341】
一実施例において、第1コンピューティングデバイスは、人工知能基盤のモデルに係る相異なる動作を行う複数のモジュールを含む第2コンピューティングデバイスから、第2コンピューティングデバイスの複数のモジュールのうち、どのモジュールが第1コンピューティングデバイスのベンチマーク動作をトリガーリングするかを示すモジュール識別情報を受信することが可能である(1210)。
【0342】
一実施例において、第1コンピューティングデバイスは、自身にベンチマーク要請を送信した主体が何かによって、異なるベンチマーク結果を提供することが可能である。例えば、第2コンピューティングデバイスは、第1コンピューティングデバイスに、ノード及びモデルを含むベンチマーク要請を送ることが可能である。第1コンピューティングデバイスは、ベンチマーク要請を送った送信者を識別し、識別した送信者によって、異なるベンチマーク結果を生成することが可能である。他の例において、第2コンピューティングデバイスは、第1コンピューティングデバイスに、ベンチマーク結果に含まれるベンチマークタスクを含むベンチマーク要請を送ることが可能である。
【0343】
一実施例において、第1コンピューティングデバイスは、第2コンピューティングデバイスの複数のモジュールの各々と相互作用することが可能であり、複数のモジュールの各々と相互作用するとき、どのモジュールとの相互作用であるかによって、異なる方式でベンチマークを実行したり、そして/又は、異なるベンチマーク結果を取得することが可能である。
【0344】
一実施例において、モジュール識別情報は、第2コンピューティングデバイスに含まれている複数のモジュールのうち、特定の(複数の)モジュールを識別するための情報を含むことが可能である。例えば、複数のモジュールは、第2コンピューティングデバイスにおいて、相異なる動作を実行する複数のモジュールを意味することが可能である。他の例として、複数のモジュールは、第2コンピューティングデバイスと第1コンピューティングデバイスのうち、少なくとも1つに存在し、それぞれ異なる動作を実行するように構成されることが可能である。他の例において、複数のモジュールは、第2コンピューティングデバイスの外部に別途存在し、それぞれ異なる動作を実行するように構成されることが可能である。
【0345】
一実施例において、モジュール識別情報は、第2コンピューティングデバイスに含まれている複数のモジュールのうち、特定のモジュールを識別するための情報及びベンチマークタスク情報を含むことが可能である。ベンチマークタスク情報は、ベンチマークの対象となるノード及び/又はモデルに係る情報を含むことが可能である。ベンチマークタスク情報は、ベンチマークを実行するための性能目標情報(例えば、ターゲットレイテンシー情報等)を含むことが可能である。ベンチマークタスク情報は、ベンチマークを実行する過程において、コンバートが必要か否か、そして/又は、コンバート識別情報を含むことが可能である。ベンチマークタスク情報は、ベンチマーク結果に含まれる情報を記述できる。ベンチマークタスク情報は、実行するベンチマーク方式を含むことが可能である。
【0346】
一実施例において、複数のモジュールは、ベンチマーク結果を、それぞれ異なる方式で活用し、モジュールの各々の出力を生成することが可能である。
【0347】
例えば、第1モジュールは、入力されたデータセットをもとに学習モデルを生成することが可能である。第1モジュールは、学習モデルをベンチマークするターゲットノードを決定するために、ベンチマーク結果を用いることが可能である。第1モジュールは、学習モデルをターゲットノードで実行したときの性能を確認するために、ベンチマーク結果を用いることが可能である。第1モジュールは、学習モデル又は再学習モデルを生成するために、ベンチマーク結果を用いることが可能である。第1モジュールは、データセットと対応する、学習モデル又は再学習モデルのタイプを決定するために、ベンチマーク結果を用いることが可能である。第1モジュールから出力される学習モデルの性能を評価する用途でベンチマーク結果を用いることが可能である。第1モジュールから出力される学習モデルの性能は、メモリーフットプリント(footprint)、レイテンシー、電力消費量及び/又はノード情報(ノードの実行環境、プロセッサー及び/又はRAMサイズ等)を含むことが可能である。
【0348】
例えば、第2モジュールは、入力されたモデルを圧縮して軽量化モデルを生成することが可能である。第2モジュールは、入力されたモジュールに係る圧縮設定データを決定するために、ベンチマーク結果を用いることが可能である。
【0349】
例えば、第3モジュールは、入力されたモデルを、少なくとも1つのターゲットノードにデプロイするためのダウンロードデータを生成することが可能である。第3モジュールは、ダウンロードデータを生成するために、又は、ターゲットノードがサポートするデータタイプにデータを変換するために、ベンチマーク結果を用いることが可能である。第3モジュールは、入力されたモデルが、ユーザーが求めるノードのスペックに最も近いノードにおいて、どれくらい性能を発揮できるかをチェックするために、ベンチマーク結果を用いることが可能である。
【0350】
一実施例において、第1コンピューティングデバイスは、モジュール識別情報に基づき、ベンチマーク結果を第2コンピューティングデバイスに提供することが可能である(1220)。
【0351】
一実施例において、第1コンピューティングデバイスは、モジュール識別情報によって異なるベンチマーク結果を、第2コンピューティングデバイスに提供送ることが可能である。一例として、第1コンピューティングデバイスは、モジュール識別情報が異なる場合、同じ方式でベンチマークを実行し、異なるベンチマーク結果を、第2コンピューティングデバイスに提供することが可能である。他の例として、第1コンピューティングデバイスは、モジュール識別情報が異なる場合、異なる方式でベンチマークを実行し、異なるベンチマーク結果を、第2コンピューティングデバイスに提供することが可能である。
【0352】
一実施例において、モジュール識別情報が第1モジュールを示す場合、第1コンピューティングデバイスは、入力されたデータセットと対応する学習モデル又はコンバートされた学習モデルを実行させるターゲットノードを決定するためのベンチマーク結果を、第2コンピューティングデバイスに提供することが可能である。モジュール識別情報が第2モジュールを示す場合、第1コンピューティングデバイスは、入力されたモデルと対応する軽量化モデルを生成するために用いられる圧縮設定データを含むベンチマーク結果を、第2コンピューティングデバイスに提供することが可能である。
【0353】
一実施例において、モジュール識別情報が第1モジュールを示す場合、第1コンピューティングデバイスは、入力されたモデル全体を対象にした性能情報を提供し、モジュール識別情報が第2モジュールを示す場合、第1コンピューティングデバイスは、入力されたモデル全体を対象にした性能情報、そして/又は、入力されたモデルのブロック単位での性能情報を提供することが可能である。
【0354】
一実施例において、第1コンピューティングデバイスは、モジュール識別情報によって異なる方式で、ベンチマークを実行することが可能である。ベンチマーク結果を第2コンピューティングデバイスに提供することが可能である。モジュール識別情報が第1モジュールを示す場合、第1コンピューティングデバイスは、第1ベンチマーク方式で、予め決められたターゲットモデルを、予め決められた少なくとも1つのターゲットモデルにおいて実行することに基づいて生成される第1ベンチマーク結果を、上記第2コンピューティングデバイスに提供し、且つ、モジュール識別情報が上記第1モジュールとは異なる第2モジュールを示す場合、上記第1ベンチマーク方式で、上記ターゲットモデルを、上記少なくとも1つのターゲットノードにおいて実行することに基づいて生成される第2ベンチマーク結果を、上記第2コンピューティングデバイスに提供することが可能である。この場合、第1ベンチマーク結果と、第2ベンチマーク結果は、異なるものになり得る。
【0355】
制限ではなく例示として、ベンチマーク方式は、入力されたモデルがターゲットノードにおいて実行されるとき、入力されたモデル全体を対象にして性能情報を測定する第1ベンチマーク方式を含むことが可能である。ベンチマーク方式は、入力されたモデルがターゲットノードにおいて実行されるとき、上記入力されたモデルの演算子単位で性能情報を測定する第2ベンチマーク方式を含むことが可能である。ベンチマーク方式は、入力されたモデルがターゲットノードにおいて実行されるとき、上記入力されたモデルのブロック単位で性能情報を測定する第3ベンチマーク方式を含むことが可能である。一実施例において、第1コンピューティングデバイスは、複数のベンチマーク方式を組み合わせることで、ベンチマーク結果を生成することが可能である。
【0356】
一実施例において、モジュール識別情報が、学習モデルを生成する動作を実行するモジュールを示す場合、第1コンピューティングデバイスは、複数の人工知能基盤のモデルの各々を、複数のノードの各々において実行させることで取得される、第1ベンチマーク性能情報を含む、ベンチマーク結果を、第2コンピューティングデバイスに提供することが可能である。例えば、第1ベンチマーク性能情報は、複数の人工知能基盤のモデルと上記複数のノードとのマッチングによるレイテンシーを表現する、テーブル形式の資料構造と対応することが可能である。制限ではなく例示として、図5に示す資料構造(500)が、レイテンシーを表現するテーブル形式の資料構造と対応することが可能である。
【0357】
一実施例において、第1ベンチマーク性能情報は、レイテンシーのみならず、モデルがノードにおいて実行されたときにおけるあらゆる形態の性能情報を含むことが可能である。例えば、第1ベンチマーク性能情報は、パワーモード情報、Fanモード情報、現在のボードの温度情報及び/又は現在のボードの電力使用量情報を含むことも可能である。パワーモード情報は、CPUのコアをどれくらい使用しているかを基準にして決定することが可能である。例えば、CPUのコアを全部使用している場合、パワーモード情報をMAXとして決定することが可能であり、30W、20W、15W、10W等のように、使用量を定量的に表現する方式で決定することも可能である。例えば、パワーモード情報の定量的な量が大きいほど、レイテンシーが低くなると考えることが可能である。他の例示として、パワーモードがMAXの場合、パワーモードを使用していない他のノードに比べてレイテンシーが低くなることが可能である。Fanモード情報は、Null、Quite、Cool、及び/又は、MAX等のようにFanの強さを表す情報の形で表現することが可能である。一例として、FanモードがQuiteの場合、FanモードがNullの場合より、ボードの温度をより下げることができるため、レイテンシーが低くなる可能性が高い。一例として、FanモードがCoolモードの場合、他のモードと比べて、ボードの温度をより下げることができるため、レイテンシーが低くなる可能性が高い。現在のボードの電力使用量は、複数のノードに繋がっている電力測定センサーから取得される電力使用量を指すことが可能である。現在のボードの電力使用量の値が小さいほど、当該ノードを使用する可能性が高くなると解釈することが可能である。
【0358】
一実施例において、第1ベンチマーク性能情報は、学習モデルの実行環境をサポートできる候補ノードの性能予想情報を、第2コンピューティングデバイスが生成する際に用いることが可能である。例えば、ユーザーと相互作用する第2コンピューティングデバイスは、ユーザーの入力から取得されたモデルをサポートできる、又は、ベンチマークを実行する準備ができている候補ノードを含む候補ノードリストをユーザーインターフェースを通して提供することが可能である。かかる候補ノードリストを生成する際、第1コンピューティングデバイス及び/又はベンチマークを実行するノードと相互作用することなく、予め準備している性能テーブルを用いることが可能である。かかる性能テーブルは、複数のモデルの各々を、複数のノードの各々において実行することで取得される性能情報を保存する資料構造である。従って、第2コンピューティングデバイスは、予め準備されている性能テーブルを用いて、ユーザーにより迅速で効率的に、入力されたデータセット又は入力されたモデルに係る候補ノードに係る情報及び複数の候補ノードの各々の性能情報を提供することが可能である。
【0359】
一実施例において、第1ベンチマーク情報は、人工知能基盤の新規モデルが追加される場合、新規ノードが追加される場合、及び/又は、ノードがサポートできる実行環境が更新される場合、第1コンピューティングデバイスによって更新されることが可能である。上記のような状況において、第1コンピューティングデバイスにより、追加される新規モデル、追加される新規ノード及び/又は更新される実行環境に対応するモデル及び/又はノードに対する性能測定が実行され、実行された性能測定に基づいて性能テーブルを更新することが可能である。これにより、特定の状況に限って、候補ノードリストを提供する過程において第1コンピューティングデバイスが介入するため、第2コンピューティングデバイスは、リソース使用の効率化が図れる方式で、ユーザーに候補ノードリストに係る情報とともに、複数の候補ノードの各々性能予想情報を提供することが可能である。
【0360】
一実施例において、モジュール識別情報が学習モデルを生成するモジュールを示す場合、第1コンピューティングデバイスは、第2コンピューティングデバイスから取得される学習モデル及びベンチマークの対象となるターゲットタイプ情報をもとに、ターゲットタイプ情報に対応する実行環境をサポートする複数のノードの中から、学習モデルに含まれている第1演算子をサポートする実行環境をサポートする複数の第1ノードを含む候補ノードリストを生成し、且つ、上記候補ノードリストを含むベンチマーク結果を、上記第2コンピューティングデバイスに提供することが可能である。第1コンピューティングデバイスは、ベンチマークの対象となるターゲットタイプ情報に適した複数のノードの中から、学習モデルに含まれている演算子をサポートできる複数のノードを、候補ノードとして決定することで、ユーザーにベンチマークを実行するノードに係るより正確な情報を提供することが可能である。例えば、ユーザーがベンチマークしようとするターゲットタイプ情報が、ユーザーが入力した学習モデル(又は、データセット)に係るモデルタイプ情報と異なる場合、入力された学習モデルをターゲットタイプ情報に対応するターゲットモデルにコンバートする動作を実行しなければならない。候補ノードが、入力された学習モデルからターゲットモデルへとコンバートされてからベンチマークが実行される場合、予め提示されている候補ノードの中にコンバートされたターゲットモデルをサポートしないものが含まれている場合がある。これにより、ターゲットタイプ情報と対応する実行環境をサポートしているノードのうち、学習モデルに含まれている第1演算子をサポートしている実行環境を有する複数の第1ノードを、上記候補ノードとして決定することが可能である。一例として、第1コンピューティングデバイスは、入力された学習モデルに含まれている演算子を抽出することが可能である。ターゲットタイプ情報にマッチングされるランタイムを有するノードのうち、ランタイムはマッチングされるが、ノードがサポートするランタイムのバージョンでは上記抽出された演算子をサポートしていない場合、当該ランタイムのバージョンがインストールされているノードは、候補ノードから外すことが可能である。
【0361】
また、ターゲットタイプ情報に対応する実行環境を有するノードのうち、学習モデルに含まれている第1演算子をサポートしていないが、上記第1演算子を代替できる、上記第1演算子とは異なる第2演算子をサポートする実行環境を有している複数の第2ノードを、候補ノードとして決定することが可能である。一例として、第1コンピューティングデバイスは、サポートしていない演算子を代替できる演算子が存在する場合、ユーザーに演算子を置き換えたり、変更するように要請することができ、ユーザーから演算子を置き換えるように要請を受けた場合は、コンピューティングデバイス(100)が当該ノードを候補ノードに含めることができ、そうでない場合は、当該ノードを候補ノードから外すことが可能である。
【0362】
一実施例において、モジュール識別情報が学習モデルを生成するモジュールを示す場合、第1コンピューティングデバイスは、第2コンピューティングデバイスから取得された、少なくとも1つのターゲットノードにおいて学習モデルを実行して、学習モデルの少なくとも1つのターゲットノードにおける第2ベンチマーク性能情報を生成し、且つ、第2ベンチマーク性能情報を含むベンチマーク結果を、第2コンピューティングデバイスに提供することが可能である。
【0363】
一実施例において、モジュール識別情報が、学習モデルを生成するモジュールを示す場合、第1コンピューティングデバイスは、第2コンピューティングデバイスから取得される学習モデルと対応するモデルタイプ情報及びベンチマークの対象となるターゲットタイプ情報に基づき、学習モデルをコンバートするか否かを決定し、且つ、学習モデルがコンバートされると決定された場合、上記学習モデルと対応するモデルタイプ情報及びターゲットタイプ情報を用いて、学習モデルをターゲットタイプ情報に対応するようにコンバートしたターゲットモデルを取得することが可能である。第1コンピューティングデバイスは、第2コンピューティングデバイスから取得された少なくとも1つのターゲットノードにおいて、上記ターゲットモデルを実行して、ターゲットモデルの少なくとも1つのターゲットノードにおける第2ベンチマーク性能情報を生成することが可能である。例えば、第1コンピューティングデバイスは、入力された学習モデルと対応するモデルタイプが何かを決定し、入力されたターゲットタイプ情報と決定されたモデルタイプ情報とを比較し、この2つの情報が相異なる場合は、コンバートが必要だと決定することが可能である。第1コンピューティングデバイスは、コンバートされたモデルをターゲットノードにおいて実行する方式で、ベンチマークを行うことが可能である。かかる例において記載されているように、第1コンピューティングデバイスは、学習モデルを生成するモジュールからベンチマークがトリガーリングされる場合、コンバートをするか否かを決定し、コンバートをするか否かの結果に応じてモデルを用いる方式で、ベンチマークを実行することが可能である。かかる例において記載されているように、第1コンピューティングデバイスは、学習モデルを生成するモジュールからベンチマークがトリガーリングされる場合、コンバートをするか否かを決定し、コンバートをするか否かの結果に応じてモデルのベンチマーク結果を提供することが可能である。
【0364】
一実施例において、第1コンピューティングデバイスは、第2ベンチマーク性能情報を含むベンチマーク結果を、上記第2コンピューティングデバイスに提供することが可能である。
【0365】
一実施例において、前述の第2ベンチマーク性能情報は、時間に係る第1タイプの定量情報と、メモリー使用に係る第2タイプの定量情報を含むことが可能である。
【0366】
一実施例において、ターゲットモデルを少なくとも1つのターゲットノードにおいて実行することで取得される第2ベンチマーク性能情報は、少なくとも1つのターゲットノードにおいてターゲットモデルの推論の前処理に要する時間に係る情報である前処理時間情報、少なくとも1つのターゲットノードにおいてターゲットモデルの推論に要する時間に係る情報である推論時間情報、少なくとも1つのターゲットノードにおいてターゲットモデルの推論の前処理のために使用されるメモリー使用量に係る情報である前処理メモリー使用量情報、少なくとも1つのターゲットノードにおいてターゲットモデルの推論のために使用されるメモリー使用量に係る情報である推論メモリー使用量情報、少なくとも1つのターゲットノードにおいてターゲットモデルを予め決められた回数分繰り返し推論することで取得される推論時間に係る定量情報、及び/又は、少なくとも1つのターゲットノードにおいてターゲットモデルを推論することで取得される、NPU、CPU、GPUの各々におけるメモリー使用に係る定量情報を含むことが可能である。
【0367】
一実施例において、前処理時間情報は、例えば、モデルを呼び出す等、推論動作を行う前の前処理に要する時間情報を含むことが可能である。この他にも、前処理時間情報は、推論の値の測定に先立ちGPU等の活性化のために、事前推論を予め決められた回数分繰り返したときの事前推論に要する時間に係る定量情報(例えば、事前推論に要する時間の最小値、最大値及び/又は、平均値)を含むことも可能である。
【0368】
一実施例において、推論時間情報は、推論過程に要する時間に係る情報であり、例えば、モデルに対する最初の推論動作に要する時間に係る時間情報及び/又は予め決められた回数分繰り返し推論したときの推論時間情報のうち、最小時間情報、最大時間情報、平均時間情報及び/又は中間時間情報を包括するものとして用いることが可能である。さらに、例えば、NPUで処理できない演算をCPUが引き受けて処理する状況において、NPUが遊休状態になるが、推論時間情報は、NPUが遊休状態になったときの第1サイクル値を含むことが可能である。さらに、推論時間情報は、NPUで推論を行うときの第2サイクル値、及び/又は、第1サイクル値と第2サイクル値を合算した第3サイクル値を含むことも可能である。
【0369】
一実施例において、第2ベンチマーク性能情報は、前処理メモリー使用量情報と、推論時間に係る定量情報とを合算した合計時間情報をさらに含むことが可能である。
【0370】
一実施例において、第2ベンチマーク性能情報は、RAM使用量、ROM使用量、メモリー全体の使用量及び/又はNPUで使用するSRAM領域に係る定量値等をさらに含むことが可能である。
【0371】
一実施例において、第2ベンチマーク性能情報は、例えば、テーブル形式の資料構造を含むことが可能である。
【0372】
一実施例において、モジュール識別情報が軽量化モデルを生成するモジュールを示す場合、第1コンピューティングデバイスは、入力されたモデルと対応する軽量化モデルを生成するために用いられる圧縮設定データを含むベンチマーク結果を、上記第2コンピューティングデバイスに提供することが可能である。前述のように、モジュール識別情報が軽量化モデルを生成するモジュールと対応する場合、第1コンピューティングデバイスは、他のモジュールに対するベンチマーク結果と異なるベンチマーク結果を提供することが可能である。かかるベンチマーク結果は、モデルの圧縮にかかるベンチマーク結果を含むことが可能である。かかるベンチマーク結果は、モデル単位でベンチマークを実行する方式そして/又はブロック単位でベンチマークを実行する方式で取得することが可能である。ここで、上記圧縮設定データは、圧縮モード、圧縮アルゴリズム、圧縮対象、圧縮率のうち、少なくとも1つを含むことが可能である。
【0373】
例えば、圧縮モードは、入力されたモデル全体に対して圧縮を行う第1圧縮モード及び/又は入力されたモデルに含まれているブロック単位で圧縮を行う第2圧縮モードを含むことが可能である。本明細書において、ブロックは、モデルを構成するコンポーネントを意味することが可能である。例えば、ブロックは、畳み込み層、活性化関数、正規化関数及び/又は四則演算と対応することが可能である。例えば、神経回路網における少なくとも1つの階層と対応することが可能である。
【0374】
例えば、圧縮アルゴリズムは、LAMP(Layer-Adaptive Sparsity for Magnitude-based Pruning)及び/又はVBMF(Variational Bayesian Matrix Factorization)等のような公知の多様な圧縮アルゴリズムを含むことが可能である。他の例において、圧縮アルゴリズムは、モデルの構造を変更する軽量化アルゴリズム、チャンネルを分離して演算量と変数の数を減らす軽量化アルゴリズム、結果に影響を及ぼすパラメータを除く他のパラメータを0等に設定する重みプルーニング(weight pruning)アルゴリズム、浮動小数点数で表されるパラメータを特定のビット数に減らす量子化(quantization)方式で遂行する軽量化アルゴリズム、及び/又はパラメータを二進化する軽量化アルゴリズム等を含むことが可能である。
【0375】
例えば、圧縮対象は、モデルに含まれている複数ブロックのうち、圧縮するブロックを表すために用いる。
【0376】
例えば、圧縮率は、モデル圧縮又はブロック圧縮における圧縮比率に係る定量情報を指すことが可能である。
【0377】
一実施例において、モジュール識別情報が軽量化モデルを表すモジュールを示す場合、第1コンピューティングデバイスは、第2コンピューティングデバイスから取得された少なくとも1つのターゲットノードから入力されたモデルをブロック単位で実行して、入力されたモデルのブロック単位での性能を表す第3ベンチマーク性能情報を生成することが可能である。第1コンピューティングデバイスは、第3ベンチマーク性能情報を含むベンチマーク結果を、第2コンピューティングデバイスに提供することが可能である。一実施例において、第3ベンチマーク性能情報は、モデルのブロック単位でのレイテンシーを含むことが可能である。一実施例において、第3ベンチマーク性能情報は、モデルのブロック単位での時間に係る第1タイプの定量情報と、メモリー使用に係る第2タイプの定量情報を含むことが可能である。第1タイプの定量情報と第2タイプの定量情報の具体的な内容は、上述の第2ベンチマーク性能情報の記載内容で代用する。
【0378】
本明細書において、軽量化モデルは、圧縮が行われたモデルを意味することが可能である。
【0379】
前述のように、第1コンピューティングデバイスは、圧縮を行うモデルからトリガーリングされる場合、モデル全体のベンチマーク結果及び/又はブロック単位でのベンチマーク結果を取得するベンチマーク実行方式を用いることで、効率的な圧縮のためのベンチマーク結果を提供することが可能である。
【0380】
本開示内容の一実施例における技法は、ベンチマーク結果を利用して、入力されたモデル(例えば、第1モジュールによって生成された学習モデル等)に対し、効率的で正確な方式で圧縮が行われるようにすることが可能である。これによって、モデルを圧縮する第2モジュールは、ベンチマーク結果を利用して、より効率的で正確な方式で軽量化モデルを取得することが可能である。
【0381】
一実施例において、第3モジュールは、入力されたモデルのデータタイプを、入力されたモデルのデータタイプ(例えば、32ビット実数型)とは異なる、ターゲットデバイスがサポートするデータタイプ(例えば、8ビット整数型)に変更することが可能である。一実施例において、第3モジュールは、量子化間隔を調整し、調整された量子化間隔に基づいて量子化を行うことも可能である。入力されたモデルを量子化することで、モデルのパラメータの値(例えば、重み)が変更されることが可能である。第3モジュールは、ユーザーがノードに設置できるダウンロードデータを提供することが可能である。かかるダウンロードデータは、ダウンロードファイル、ダウンロードファイルに繋がるリンク、及び/又は、ダウンロードパッケージを含むことが可能である。かかるダウンロードファイルを、ターゲットノードにインストールすることで、ターゲットノードに最適化された人工知能基盤のモデルをインストールすることが可能である。
【0382】
一実施例において、第1コンピューティングデバイスは、モジュール識別情報が第3モジュールを示す場合、入力されたモデルがターゲットノードにデプロイされるようにするダウンロードデータを生成するためのベンチマーク結果を、第2コンピューティングデバイスに提供することが可能である。
【0383】
一実施例において、第1コンピューティングデバイスは、モジュール識別情報が第3モジュールを示す場合、入力されたモデルのデータタイプをターゲットノードがサポートするデータタイプに変換するためのベンチマーク結果を、第2コンピューティングデバイスに提供することが可能である。
【0384】
一実施例において、第1コンピューティングデバイスは、モジュール識別情報が第3モジュールを示す場合、入力されたモデルの量子化間隔を調整するためのベンチマーク結果を、第2コンピューティングデバイスに提供することが可能である。例えば、モデルの量子化は、重み及び/又は活性化出力の表現に用いられるビット数を減らすことで、モデルのサイズを縮小することを含むことが可能である。学習モデルの量子化により、モデルの推論時間を短縮することが可能である。例えば、量子化の間隔を、16ビット、8ビット、4ビット、2ビット、1ビット等のように、ビット単位で決定することが可能である。
【0385】
図13図14図15図16図17は、ベンチマーク結果を提供する本開示内容の多様な実施例を示している。例えば、コンピューティングデバイス(100)は、外部デバイスからのベンチマーク要請に対する応答として、ベンチマーク結果を取得することが可能である。他の例として、コンピューティングデバイス(100)は、スタンドアロンで動作する方式、ユーザーと相互作用する他のコンピューティングデバイスに従属している状態で動作する方式、コンバートを直接行う方式、他のコンバートデバイスからのコンバート結果を取得する方式、ベンチマーク結果を直接生成する方式、及び/又は、ベンチマーク結果を外部のコンピューティングデバイスから受信する方式等のように、多様な方式で動作することが可能である。
【0386】
説明の重複を避けるために、図13図14図15図16図17に係る具体的な内容は、図3乃至図12に係る説明における該当する部分で代用する。
【0387】
図13は、本開示内容の一実施例における、ベンチマーク結果を提供するための方法を例示的に示している。
【0388】
コンピューティングデバイス(100)は、ターゲットモデル情報及びターゲットノード情報を受信することが可能である(1310)。一実施例において、ターゲットモデル情報は、ベンチマークの対象となるモデルに関連する情報を含むことが可能である。例えば、ターゲットモデル情報は、データセット、モデルファイル、モデルファイルに繋がるリンク、モデルファイルとモデルタイプ、及び/又は、モデルファイルとターゲットタイプ情報を含むことが可能である。一実施例において、ターゲットノード情報は、ターゲットノードを識別するための任意の形態の情報を含むことが可能である。例えば、ターゲットノード情報は、ターゲットノードの識別子、ターゲットノードが無線通信に対応できるか否か、ターゲットノードが外部から確認が可能か否か及び/又はターゲットノードの数を含むことが可能である。
【0389】
コンピューティングデバイス(100)は、ターゲットモデルをターゲットノードにおいて実行させることで、ベンチマーク結果を生成することが可能である(1320)。
【0390】
図14は、本開示内容の一実施例における、ベンチマーク結果を提供するための方法を例示的に示している。
【0391】
コンピューティングデバイス(100)は、ターゲットモデル情報を受信することが可能である(1410)。ターゲットモデル情報は、ベンチマークの対象となるモデルに関連する情報を含むことが可能である。例えば、ターゲットモデル情報は、データセット、モデルファイル、モデルファイルに繋がるリンク、モデルファイルとモデルタイプ、及び/又は、モデルファイルとターゲットタイプ情報を含むことが可能である。
【0392】
コンピューティングデバイス(100)は、候補ノードリストを取得することが可能である(1420)。候補ノードリストは、ターゲットモデル情報に基づいて決定することが可能である。候補ノードリストは、複数のノードのうち、ターゲットモデル情報に関連する候補ノードリストを含むことが可能である。候補ノードリストに基づく選択の入力に沿って、ベンチマークの対象となる少なくとも1つのターゲットノードを決定することが可能である。
【0393】
コンピューティングデバイス(100)は、ターゲットノード情報を受信することが可能である(1430)。一実施例において、ターゲットノード情報は、ターゲットノードを識別するための任意の形態の情報を含むことが可能である。例えば、ターゲットノード情報は、ターゲットノードの識別子、ターゲットノードが無線通信に対応できるか否か、ターゲットノードを外部から確認できるか否か及び/又はターゲットノードの数を含むことが可能である。ターゲットノード情報を、候補ノードリストに基づく選択入力に基づいて決定することが可能である。
【0394】
コンピューティングデバイス(100)は、ターゲットモデルをターゲットノードにおいて実行させることで、ベンチマーク結果を生成することが可能である(1440)。
【0395】
図15は、本開示内容の一実施例における、ベンチマーク結果を提供するための方法を例示的に示している。
【0396】
コンピューティングデバイス(100)は、入力されたモデル及びターゲットモデル情報を受信することが可能である(1510)。一実施例において、入力されたモデルは、モデルに係るあらゆる形態の情報を含むことが可能である。例えば、入力されたモデルは、データセット、学習モデル、軽量化モデル、モデルの学習に係る情報、モデルの圧縮に係る情報、モデルに含まれている演算子に係る情報及び/又はモデルと対応するモデルタイプ情報を含むことが可能である。ターゲットモデル情報は、ベンチマークの対象となるモデルに関連する任意の形態の情報を含むことが可能である。例えば、ターゲットモデル情報は、ターゲットタイプ情報及び/又はコンバートされるモデルを識別するための情報を含むことが可能である。
【0397】
コンピューティングデバイス(100)は、ターゲットモデル情報と対応する候補ノードリストを取得することが可能である(1520)。一実施例において、候補ノードリストは、複数のノードのうち、ターゲットモデル情報及び/又は入力されたモデルに係る候補ノードを含むことが可能である。例えば、候補ノードは、ターゲットモデル情報に対応する実行環境をサポートするノード、入力されたモデルの演算子をサポートするノード及び/又は入力されたモデルがターゲットモデル情報に沿ってコンバートされたターゲットモデルをサポートするノードを含むことが可能である。
【0398】
コンピューティングデバイス(100)は、ターゲットノード情報を受信することが可能である(1530)。一実施例において、候補ノードリストに基づく選択の入力に沿って、ベンチマークの対象となる少なくとも1つのターゲットノードを決定することが可能である。一実施例において、候補ノードリストのノードの中で、性能情報を基準に、最も良好な性能を有する候補ノードが、ターゲットノードとして、自動的に決定されるようにすることも可能である。
【0399】
コンピューティングデバイス(100)は、入力されたモデルがターゲットモデル情報と対応するようにコンバートを行うことが可能である(1540)。一実施例において、コンピューティングデバイス(100)は、入力されたモデルを識別するための第1情報と、ターゲットモデル情報と対応する第2情報を組み合わせることで、コンバート方式又はコンバートの識別情報を決定することが可能である。コンピューティングデバイス(100)は、入力されたモデルの演算子をターゲットモデル情報に対応するようにコンバートして、コンバートされたターゲットモデルを生成することが可能である。
【0400】
コンピューティングデバイス(100)は、コンバートされたターゲットモデルをターゲットノードにおいて実行させることで、ベンチマーク結果を生成することが可能である(1550)。
【0401】
図16は、本開示内容の一実施例における、ベンチマーク結果を提供するための方法を例示的に示している。
【0402】
コンピューティングデバイス(100)は、入力されたモデル及びターゲットモデル情報を受信することが可能である(1610)。一実施例において、入力されたモデルは、モデルに係るあらゆる形態の情報を含むことが可能である。例えば、入力されたモデルは、データセット、学習モデル、軽量化モデル、モデルの学習に係る情報、モデルの圧縮に係る情報、モデルに含まれている演算子に係る情報及び/又はモデルと対応するモデルタイプ情報を含むことが可能である。ターゲットモデル情報は、ベンチマークの対象となるモデルに関連する任意の形態の情報を含むことが可能である。例えば、ターゲットモデル情報は、ターゲットタイプ情報及び/又はコンバートされるモデルを識別するための情報を含むことが可能である。
【0403】
コンピューティングデバイス(100)は、ターゲットモデル情報と対応する候補ノードリストを取得することが可能である(1620)。一実施例において、候補ノードリストは、複数のノードのうち、ターゲットモデル情報及び/又は入力されたモデルに係る候補ノードを含むことが可能である。例えば、候補ノードは、ターゲットモデル情報に対応する実行環境をサポートするノード、入力されたモデルの演算子をサポートするノード及び/又は入力されたモデルがターゲットモデル情報に沿ってコンバートされたターゲットモデルをサポートするノードを含むことが可能である。
【0404】
コンピューティングデバイス(100)は、ターゲットノード情報を受信することが可能である(1630)。一実施例において、候補ノードリストに基づく選択の入力に沿って、ベンチマークの対象となる少なくとも1つのターゲットノードを決定することが可能である。一実施例において、候補ノードリストのノードの中で、性能情報を基準に、最も良好な性能を有する候補ノードが、ターゲットノードとして、自動的に決定されるようにすることも可能である。
【0405】
コンピューティングデバイス(100)は、入力されたモデルを、ターゲットモデル情報と対応するようにコンバートするために、コンバート要請を送ることが可能である(1640)。一実施例において、コンバート要請を、コンピューティングデバイス(100)の外部に位置するコンバートデバイスに送ることが可能である。例えば、第1コンピューティングデバイスは、コンバートの対象となるモデルファイルと、コンバーターのUUIDを含むコンバート要請を、コンバートデバイスへ送ることが可能である。ここで、UUIDは、コンバート前のモデルのタイプと、コンバート後のモデルのタイプとの組み合わせにより識別される識別子である。コンバートデバイスは、UUIDと対応するコンバーターのDockerイメージを取得し、Dockerにおいて対応するコンバーターのshファイルを実行させる方式で、入力されたモデルをコンバートできる。
【0406】
コンピューティングデバイス(100)は、コンバートされたターゲットモデルを受信することが可能である(1650)。一実施例において、コンピューティングデバイス(100)は、コンバートデバイスからコンバート結果を受信することが可能であり、この場合コンバート結果は、コンバートされたターゲットモデルと対応することが可能である。
【0407】
コンピューティングデバイス(100)は、コンバートされたターゲットモデルをターゲットノードにおいて実行させることで、ベンチマーク結果を生成することが可能である(1660)。
【0408】
図17は、本開示内容の一実施例における、ベンチマーク結果を提供するための方法を例示的に示している。
【0409】
コンピューティングデバイス(100)は、推論タスクとデータセットを含む入力データを取得することが可能である(1710)。一実施例において、推論タスクは、画像分類、オブジェクト検出、セマンティックセグメンテーション、テキスト予測及び/又はクラスタリング等のように、人工知能基盤のモデルの推論を通じて達成しようとする目的又は結果を含むことが可能である。一実施例において、データセットは、人工知能基盤のモデルにおいて用いられるあらゆる形態のデータを含むことが可能である。例えば、データセットは、データに対する前処理が完了しているデータの集合を意味することが可能である。例えば、データセットは、教師あり学習における、ラベリングが完了しているデータの集合を意味することが可能である。例えば、データセットを、人工知能基盤のモデルの学習に用いたり、学習の過程における性能評価に用いたり、及び/又は、学習完了後における性能評価に用いることが可能である。
【0410】
コンピューティングデバイス(100)は、入力データの取得に対する応答として、ベンチマークを実行する準備ができているノードを含む複数のノードからなるリストを取得することが可能である(1720)。一実施例において、コンピューティングデバイス(100)は、ベンチマークを現在行っていなかったり、ベンチマークタスクを行うことのできるメモリー空き容量を有するものや、ベンチマークタスクを実行できるCPUを有するもののように、ベンチマークを行う準備ができているノードを含むリストを取得することが可能である。かかるリストに含まれるノードを、ノード間の通信を通じ、現在のノードの状態を判断する過程で決定することが可能である。
【0411】
コンピューティングデバイス(100)は、ノードのリストの中から、少なくとも1つのノードを選択する入力データに基づき、ターゲットモデル及びターゲットノードを決定することが可能である(1730)。一実施例において、ノードのリストの中から、特定のノードがターゲットノードとして選択された場合、選択されたノードがサポートできるモデルのリストが出力されることが可能である。複数のモデルからなるリストの中から、特定のモデルを選択する入力に対する応答として、ベンチマークの対象となるターゲットモデルを決定することが可能である。例えば、複数のモデルからなるリストは、複数のモデルの各々に係るフレームワークやソフトウェアバージョンを示すことが可能である。例えば、複数のモデルからなるリストは、複数のモデルの各々に係る識別情報を含むことが可能である。例えば、複数のモデルからなるリストは、複数のモデルの各々に係る識別情報及び複数のモデルの各々がターゲットノードにおいて実行されたときの性能情報を含むことが可能である。一実施例において、上記リストにおける複数のモデルの並び順は、モデルの性能を基準に、又は、過去のユーザーの選択情報を基準に決定することが可能である。一実施例において、ノードのリストの中から、特定のノードがターゲットノードとして選択された場合、選択されたノードがサポートできるモデルが、ユーザーからの入力を受け取ることなく、自動的に出力されることが可能である。
【0412】
コンピューティングデバイス(100)は、ターゲットモデルをターゲットノードにおいて実行させることで、ベンチマーク結果を生成することが可能である(1740)。
【0413】
図18は、本開示内容の一実施例におけるコンピューティングデバイス(100)のコンピューティング環境を示す概略図である。
【0414】
本開示内容において、コンポーネント、モジュール、又は部(unit)は、特定のタスクを実行したり、特定の抽象データ型を具現化するルーティン、プロシージャ、プログラム、コンポーネント、データ構造を等含む。また、当業者なら、本開示内容に示されている方法が、シングルプロセッサー又はマルチプロセッサーを有するコンピューティングデバイス、ミニコンピューター、メインフレームコンピューターはもちろん、パーソナルコンピューター、ハンドヘルドコンピューティングデバイス、マイクロプロセッサー基盤、又はプログラム可能な家電製品、その他等々(これらは、それぞれ1つ以上の関連する装置と繋がって動作することができる)をはじめとする、他のコンピューターシステムの構成によって実施されることができることを十分認識できる。
【0415】
また、本開示内容において説明された実施例を、あるタスクが通信ネットワークを通じて繋がっている遠隔処理装置によって実行される、分散コンピューティング環境で実施することが可能である。分散コンピューティング環境において、プログラムモジュールは、ローカルと遠隔メモリー保存装置との両方に位置することが可能である。
【0416】
コンピューティングデバイスは、通常、多様なコンピューター可読媒体を含む。コンピューターによってアクセス可能な媒体は、いずれもコンピューター可読媒体になり得るが、このようなコンピューター可読媒体は、揮発性及び非揮発性媒体、一時的(transitory)及び非一時的(non-transitory)媒体、移動式及び非-移動式媒体を含む。制限ではなく例として、コンピューター可読媒体は、コンピューター可読保存媒体及びコンピューター可読伝送媒体を含むことが可能である。
【0417】
コンピューター可読保存媒体は、コンピューター可読命令、データ構造、プログラムモジュール又はその他のデータのような情報を保存する任意の方法又は技術により実装される揮発性及び非揮発性媒体、一時的及び非一時的媒体、移動式及び非移動式媒体を含む。コンピューター可読保存媒体は、RAM、ROM、EEPROM、フラッシュメモリー又はその他のメモリー技術、CD-ROM、DVD(digital video disk)又はその他の光ディスク保存装置、磁気カセット、磁気テープ、磁気ディスク保存装置又はその他の磁気保存装置、又はコンピューターによってアクセスでき、情報を保存するために使われることのできる任意のその他の媒体を含むが、これに限定されない。
【0418】
コンピューター可読伝送媒体は、通常、搬送波(carrier wave)又はその他の伝送メカニズム(transport mechanism)のような被変調データ信号(modulated data signal)にコンピューター可読命令、データ構造、プログラムモジュール又はその他のデータ等を実装し、すべての情報伝達媒体を含む。被変調データ信号という用語は、信号の中に情報をエンコードするように、その信号の特性のうち1つ以上を設定又は変更した信号を意味する。制限ではなく例として、コンピューター可読伝送媒体は、有線ネットワーク又は直接配線接続(direct-wired connection)のような有線媒体、そして音響、RF、赤外線、その他の無線媒体のような無線媒体を含む。前述の媒体の任意の組み合わせもコンピューター可読伝送媒体の範囲に含まれるものとする。
【0419】
コンピューター(2002)を含む本発明の多様な側面を具現化する例示的な環境(2000)が示されており、コンピューター(2002)は、処理装置(2004)、システムメモリー(2006)及びシステムバス(2008)を含む。本明細書において、コンピューター(200)を、コンピューティングデバイス(100)と相互互換可能に用いることが可能である。システムバス(2008)は、システムメモリー(2006)(これに限定されない)をはじめとするシステムコンポーネントを、処理装置(2004)につなげる。処理装置(2004)は、多様な商用のプロセッサーのうち、いずれかのプロセッサーになり得る。デュアルプロセッサーやその他のマルチプロセッサーアーキテクチャも、処理装置(2004)として利用されることが可能である。
【0420】
システムバス(2008)は、メモリーバス、周辺装置バス、そして多様な商用バスアーキテクチャの中から、任意のものを使用するローカルバスにさらに追加で相互連結可能な複数の類型のバス構造のうち、いずれかになり得る。システムメモリー(2006)は、読み取り専用メモリー(ROM)(2010)やランダムアクセスメモリー(RAM)(2012)を含む。基本的な入出力システム(BIOS)は、ROM、EPROM、EEPROM等の非揮発性メモリー(2010)に保存され、このBIOSは、起動中の時等にコンピューター(2002)における複数の構成要素間の情報送信をサポートする基本的なルーティンを含む。RAM(2012)は、さらに、データをキャッシュするための静的RAM等の高速RAMを含むことが可能である。
【0421】
コンピューター(2002)は、また、内蔵型ハードディスクドライブ(HDD)(1114)(例えば、EIDE、SATA)、磁気フロッピーディスクドライブ(FDD)(2016)(例えば、移動式ディスケット(2018)から読み取ったり、それに書き込むためのものである)、SSD及び光ディスクドライブ(2020)(例えば、CD-ROMディスク(2022)を読み取ったり、DVD等のその他の高容量光媒体から読み取ったり、それに書き込むためのものである)を含む。ハードディスクドライブ(2014)、磁気ディスクドライブ(2016)及び光ディスクドライブ(2020)は、それぞれハードディスクドライブインターフェース(2024)、磁気ディスクドライブインターフェース(2026)及び光ドライブインターフェース(2028)によってシステムバス(2008)に繋がることが可能である。外付け型ドライブの実装のためのインターフェース(2024)は、例えば、USB(Universal Serial Bus)やIEEE1394インターフェース技術のうち、少なくとも1つ又はその両方を含む。
【0422】
これらのドライブ及びこれらに係るコンピューター可読媒体は、データ、データ構造、コンピューターで実行可能な命令、その他等々に対する非揮発性保存を提供する。コンピューター(2002)の場合、ドライブ及び媒体は、任意のデータを適切なデジタル形式に保存することに対応する。前述のコンピューター可読保存媒体に係る説明が、HDD、移動式磁気ディスク及びCD又はDVD等の移動式光媒体について触れているが、当業者にとって、ジップドライブ(zip drive)、磁気カセット、フラッシュメモリーカード、カートリッジ、その他色々なコンピューターにより読み取り可能な他の類型の保存媒体も、また、例示的な運営環境で使われることが可能であり、さらに、任意のかかる媒体が、本発明の方法を実行するためのコンピューターで実行可能な命令を含むことができることは、自明なことである。
【0423】
運営システム(2030)、1つ以上のアプリケーションプログラム(2032)、その他のプログラムモジュール(2034)及びプログラムデータ(2036)をはじめとする多数のプログラムモジュールを、ドライブ及びRAM(2012)に保存することが可能である。運営システム、アプリケーション、モジュール及び/又はデータの全部又はその一部分も、RAM(2012)にキャッシュされることが可能である。本発明が様々な商業的に利用可能な運営システム又は複数の運営システムの組み合わせにより実装されることが可能であることは自明である。
【0424】
ユーザーは、1つ以上の有線・無線の入力装置、例えば、キーボード(2038)及びマウス(2040)等のポインティング装置を通じて、コンピューター(2002)に命令及び情報を入力することが可能である。その他の入力装置(図示省略)としては、マイク、IRリモコン、ジョイスティック、ゲームパッド、スタイラスペン、タッチスクリーン、その他等々があり得る。これら及びその他の入力装置は、システムバス(2008)に繋がっている入力装置インターフェース(2042)を介して処理装置(2004)に繋がることがよくあるが、並列ポート、IEEE1394直列ポート、ゲームポート、USBポート、IRインターフェース、その他色々な他のインターフェースによって繋がることが可能である。
【0425】
モニター(2044)又は他の類型のディスプレイ装置も、ビデオアダプター(2046)等のインターフェースを通じてシステムバス(2008)に繋がる。モニター(2044)に加えて、コンピューターは、一般的にスピーカー、プリンター、その他色々な他の周辺出力装置(図示省略)を含む。
【0426】
コンピューター(2002)は、有線及び/又は無線通信による、(複数の)遠隔コンピューター(2048)等の1つ以上の遠隔コンピューターへの論理的接続を利用し、ネットワーク化された環境で動作することが可能である。(複数の)遠隔コンピューター(2048)は、ワークステーション、サーバーコンピューター、ルーター、パーソナルコンピューター、携帯用コンピューター、マイクロプロセッサー基盤の娯楽機器、ピア装置又はその他の通常のネットワークノードを指すものとし、且つ、一般的にコンピューター(2002)について述べられた構成要素のうち、多数又はその全部を含むが、簡略化するために、メモリー保存装置(2050)のみ図示されている。図示されている論理的接続は、近距離通信網(LAN)(2052)及び/又はより大きいネットワーク、例えば、遠距離通信網(WAN)(2054)への有線・無線の接続を含む。このようなLAN及びWANのネットワーキング環境は、オフィスや会社では一般的なもので、イントラネット等の全社的コンピューターネットワーク(enterprise-wide computer network)の実装及び利用を容易にし、これらはすべて全世界のコンピューターネットワーク、例えば、インターネットに繋がることが可能である。
【0427】
LANネットワーキング環境で使われるとき、コンピューター(2002)は、有線及び/又は無線通信ネットワークインターフェース、又は、アダプター(2056)を通じてローカルネットワーク(2052)に繋がる。アダプター(2056)は、LAN(2052)への有線又は無線通信を容易にすることができ、このLAN(2052)は、無線アダプター(2056)と通信するために設置されている無線アクセスポイントを含む。WANネットワーキング環境で使われるとき、コンピューター(2002)は、モデム(2058)を含むことができたり、WAN(2054)上の通信サーバーに繋がったり、又はインターネットを通じる等、WAN(2054)を通じて通信を設定するその他の手段を持つ。モデム(2058)は、内蔵型又は外付け型、そして、有線又は無線装置などの形で実装されることが可能であり、直列ポートインターフェース(2042)を通じて、システムバス(2008)に繋がる。ネットワーク化された環境において、コンピューター(2002)に関連付けて説明されているプログラムモジュール又はその一部分を、遠隔メモリー/保存装置(2050)に保存することが可能である。図示されたネットワーク接続は例示的なものであり、複数のコンピューター間で通信リンクを設定する他の手段を使われることが可能であるということは自明である。
【0428】
コンピューター(1602)は、無線通信を介して動作する任意の無線装置又はオブジェクト、例えば、プリンター、スキャナー、デスクトップ及び/又は携帯用コンピューター、PDA(portable data assistant)、通信衛星、無線で検出可能なタグに係る任意の装備又は場所及び電話と通信する動作を行う。これは、少なくとも、Wi-Fi及びブルートゥース(登録商標)無線技術を含む。従って、通信は、従来のネットワークのように、予め定義された構造であったり、単純には少なくとも2つの装置間のアドホック通信(ad hoc communication)になり得る。
【0429】
ここに示されたプロセスにおける複数の段階の特定の順番又は階層構造は、例示的なアプローチの一例であることを理解されたい。設計上の優先順位に基づき、本開示内容の範囲内で、プロセスにおける段階の特定の順番又は階層構造が再配列されることができることを理解されたい。本開示内容における請求項は、サンプルとしての順番で、多様な段階のエレメントを提供するが、示された特定の順番又は階層構造に限定されることを意味するわけではない。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18