JP7350923B2 - ディープラーニングフレームワークのオペレータ登録方法、装置、デバイス及び記憶媒体 - Google Patents

ディープラーニングフレームワークのオペレータ登録方法、装置、デバイス及び記憶媒体 Download PDF

Info

Publication number
JP7350923B2
JP7350923B2 JP2022040721A JP2022040721A JP7350923B2 JP 7350923 B2 JP7350923 B2 JP 7350923B2 JP 2022040721 A JP2022040721 A JP 2022040721A JP 2022040721 A JP2022040721 A JP 2022040721A JP 7350923 B2 JP7350923 B2 JP 7350923B2
Authority
JP
Japan
Prior art keywords
operator
deep learning
information
registration
learning framework
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2022040721A
Other languages
English (en)
Other versions
JP2022177793A (ja
Inventor
チェン,ウェイハン
ヤン,ジャビン
リウ,ホンギュ
ラン,シャン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Publication of JP2022177793A publication Critical patent/JP2022177793A/ja
Application granted granted Critical
Publication of JP7350923B2 publication Critical patent/JP7350923B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • G06F9/3828Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Machine Translation (AREA)
  • Stored Programmes (AREA)

Description

本開示は、コンピュータ技術の分野に関し、具体的にディープラーニングのような人工知能の分野に関し、特にディープラーニングフレームワークのオペレータ登録方法、装置、デバイス及び記憶媒体に関する。
ディープラーニングフレームワークは人工知能分野の基礎的なフレームワークとして、ますます注目されており、その重要な指標の1つはフレームワークの拡張性である。カスタムオペレータは拡張性を実現する主要なルートである。
関連技術では、ユーザによりオペレータをカスタマイズしてディープラーニングフレームワークに適用することを実現するために、一般的にユーザがディープラーニングフレームワークの内部概念を理解し、内部クラスを継承する必要があり、さらにディープラーニングフレームワーク全体をコンパイルする必要がある。
本開示は、ディープラーニングフレームワークのオペレータ登録方法、装置、デバイス及び記憶媒体を提供する。
本開示の一態様によれば、ユーザにより提供されたディープラーニングフレームワークにオペレータを登録するための登録情報を受信することであって、前記登録情報は作成方法が前記ディープラーニングフレームワークに関連しないカスタム計算関数を含むことと、前記登録情報に基づいて、前記ディープラーニングフレームワークにおけるオペレータメタ情報を作成することと、前記オペレータメタ情報に基づいて前記ディープラーニングフレームワークにおける登録対象オペレータを構築し、前記登録対象オペレータを前記ディープラーニングフレームワークにおけるグローバルオペレータテーブルに登録することと、を含むディープラーニングフレームワークのオペレータ登録方法を提供する。
本開示の別の態様によれば、ユーザにより提供されたディープラーニングフレームワークにオペレータを登録するための登録情報を受信することであって、前記登録情報は作成方法が前記ディープラーニングフレームワークに関連しないカスタム計算関数を含む受信モジュールと、前記登録情報に基づいて、前記ディープラーニングフレームワークにおけるオペレータメタ情報を作成する作成モジュールと、前記オペレータメタ情報に基づいて前記ディープラーニングフレームワークにおける登録対象オペレータを構築し、前記登録対象オペレータを前記ディープラーニングフレームワークにおけるグローバルオペレータテーブルに登録する登録モジュールと、を備えるディープラーニングフレームワークのオペレータ登録装置を提供する。
本開示の別の態様によれば、少なくとも1つのプロセッサと、前記少なくとも1つのプロセッサと通信可能に接続されたメモリとを備え、前記メモリに前記少なくとも1つのプロセッサにより実行可能なコマンドが記憶されており、前記コマンドが前記少なくとも1つのプロセッサにより実行されると、前記少なくとも1つのプロセッサに前記態様のいずれか一項に記載の方法を実行させる電子デバイスを提供する。
本開示の別の態様によれば、コンピュータに前記態様のいずれか一項に記載の方法を実行させるためのコンピュータコマンドが記憶された非一時的なコンピュータ可読記憶媒体を提供する。
本開示の別の態様によれば、プロセッサにより実行されると、前記態様のいずれか一項に記載の方法を実現するコンピュータプログラムを含むコンピュータプログラム製品を提供する。
本開示の技術案によれば、オペレータ登録プロセスを簡略化することができる。
理解すべきなのは、本セクションで説明される内容は、本開示の実施形態の重要な又は肝心な特徴を標識することでもなく、本開示の範囲を制限することでもない。本開示の他の特徴は、以下の明細書により容易に理解されるであろう。
図面は、本技術案をより良く理解するためのものであり、本願に制限されない。図面において、
本開示の第1実施形態に係る概略図である。 本開示の第2実施形態に係る概略図である。 本開示の第3実施形態に係る概略図である。 本開示の第4実施形態に係る概略図である。 本開示の第5実施形態に係る概略図である。 本開示の実施形態のディープラーニングフレームワークのオペレータ登録方法のいずれかを実現するための電子デバイスの概略図である。
以下、図面に基づいて、本出願の例示的な実施例を説明する。理解を容易にするために、本出願の実施例の様々な詳細が含まれており、それらは単なる例示と見なされるべきである。従って、当業者は、本出願の範囲及び精神から逸脱することなく、本明細書に記載の実施形態に対して様々な変更及び修正を行うことができることを認識できるはずである。同様に、簡明のために、以下の説明では、よく知られた機能と構造の説明は省略される。
オペレータ(operator)はディープラーニングフレームワーク(単にフレームワークと呼ぶことができる)における基本的な計算ユニットであり、その入力はテンソル(tensor)又はテンソルの組み合わせを含み、テンソル又はテンソルの組み合わせに対して計算を行うことにより、畳み込みオペレータ、プール化オペレータ、reluオペレータなどの特定の機能を達成する。ディープラーニングフレームワークにおいて、tensorを用いてデータを表現する。Tensorは多次元配列として理解されて良い。ディープラーニングフレームワークを使ってモデルを構築するプロセスは、特定の計算目標を満たすように異なるオペレータを組み合わせるプロセスでもある。オペレータの豊富さはディープラーニングフレームワーク製品の機能の完備性を測る重要な指標でもある。いくつかの特定の分野では、多くのカスタマイズされたものであって、汎用的ではなく、基礎的なオペレータを組み合わせることができないオペレータ、例えば3D視覚、オプティカルフローなどの分野におけるモデルが必要である。この場合に、フレームワークのカスタムオペレータ機能を使用してフレームワークを拡張して開発することにより、フレームワークを特定の分野で使用可能にする必要がある。
ディープラーニングフレームワークのカスタムオペレータの作成方法が複雑すぎて、理解しなければならない概念が多すぎると、多くのユーザが利用可能なカスタムオペレータを書くことが困難になるため、ディープラーニングフレームワーク製品にとって、簡潔なカスタムオペレータの処理方案を提供することは極めて重要である。
カスタムオペレータをディープラーニングフレームワークに適用するために、一般的に次の手順を実行する必要がある。
(1)オペレータ計算論理実現:このステップでは、C++を使用してオペレータのコア計算ロジックの作成を完成する必要がある。この部分の実現では、テンソルに依存しないフレームワークにおけるデータ構造を理解する必要があるかどうかが簡潔性の鍵である。
(2)オペレータをフレームに関連付ける:このステップは、オペレータの計算ロジックを何らかの方法でフレームワークに登録し又は関連付けることにより、フレームワークにより呼び出されることができるようにする。これは同様に、理解しにくい概念を導入することなく、比較的直感的な記述方法が必要である。
(3)オペレータをコンパイルしてモデルに用いる:このステップでは、実際のシナリオに適用されるようにオペレータのコンパイルを完了する。フレームワーク全体を連携してコンパイルする必要があるかどうかは、このステップの簡潔性を測る重要な指標の1つである。ユーザは自分で書いたオペレータを独立してコンパイルすることは、完全なフレームワークコードをダウンロードしてフレームワーク全体を連携してコンパイルする必要があることに比べて、利便性の面で明らかな差がある。
関連技術では、各ディープラーニングフレームワーク製品は何れも独自のカスタムオペレータ作成スキームを持っているが、スキームの使いやすさにはばらつきがあり、且ついくつかのフレームワークにおける概念を導入しており、ユーザの理解コストが増加した。その概要は次のとおりである。
(1)PyTorchスキーム:テンソルを入力とし、テンソルのリストを返す計算関数を作成し、Pybind11モジュールを使用してPythonインタフェースとしてカプセル化し、独立にコンパイルした後、そのフレームワークにおけるFunctionを継承し、forwardとbackwardメソッドを実装し、contextを使用して前逆実行ロジックを関連付ける。
(2)TensorFlowスキーム:内部オペレータを作成する書き方とほぼ一致しており、フレームワークの下位層にあるOpKernelを継承し、フレームワークで指定されたComputeスキームを実現し、フレームワークの下位層にあるOpKernelContextを用いて入出力を管理し、フレームワークの下位層にある複数の登録インタフェースを用いて登録を完了し、独立コンパイルをサポートする。
(3)MindSporeスキーム:内部オペレータを作成する書き方と完全に一致しており、PrimitiveWithInfer、GPUKernelなどのフレームワークの基礎概念を理解して継承する必要があり、フレームワークで指定されたInit、Launchなどのメソッドを実現し、特定の書き方で登録を完了し、完全なフレームワークのソースコードと一緒にコンパイルしなければならない。
(4)Jittorスキーム:フレームワークの下位層にあるCustomOpを理解して継承する必要があり、フレームワークで指定されたjit_prepareやjit_runなどのメソッドを実現し、オペレータの実装を文字列にカプセル化し、即時にコンパイルして使用する。
関連技術と本開示とをより直観的に比較するために、関連技術と本開示との比較を表1に示すことができる。
表1は、関連技術と本開示の各依存項の比較を示した。依存項が少ないほど、スキームは簡潔である。本開示は、オペレータ計算の本質に着目し、カスタムオペレータの登録処理スキームを大幅に簡略化し、又はカスタムオペレータのプログラミングパラダイムを簡略化した。
本開示の具体的な実施形態は、以下の実施形態を参照することができる。
図1は、本開示の第1実施形態に係る概略図である。本実施形態は、以下のことを含むディープラーニングフレームワークのオペレータ登録方法を提供する。
101において、ユーザにより提供されたディープラーニングフレームワークにオペレータを登録するための登録情報であって、作成方法が前記ディープラーニングフレームワークに関連しないカスタム計算関数を含む登録情報を受信する。
102において、前記登録情報に基づいて、前記ディープラーニングフレームワークにおけるオペレータメタ情報を作成する。
103において、前記オペレータメタ情報に基づいて、前記ディープラーニングフレームワークにおける登録対象オペレータを構築し、前記登録対象オペレータをディープラーニングフレームワークにおけるグローバルオペレータテーブルに登録する。
本実施形態で提供される処理方法の実行主体は、ディープラーニングフレームワークであって良い。図2に示すように、ディープラーニングフレームワークは、ユーザ側と内部側とに分割されていてよい。ユーザ側には、上述した登録情報をユーザが入力することができる情報入力モジュール201を備えてよい。具体的には、ディープラーニングフレームワークは、登録インタフェースをあらかじめ設計しておき、当該登録インタフェースを情報入力モジュールとして登録情報の入力を実現することができる。登録インタフェースは、マクロ、静的オブジェクト、又はメソッドなどを使用して実装できる。
登録情報は、カスタム計算関数を含み、さらに、カスタム入力情報及びカスタム出力情報を含むことができる。カスタム入力情報とカスタム出力情報とは、それぞれカスタムオペレータの入力変数の情報とカスタムオペレータの出力変数の情報である。情報は例えば変数名である。カスタム入力情報を例にすると、カスタム入力情報は、ユーザ自身に命名された入力変数の名前のようなものであり、より具体的には、例えば、テンソルである入力変数をtensor1と命名することができる。登録情報は、カスタマイズされた情報を含むため、カスタムオペレータの登録情報として理解されて良い。
オペレータは、ディープラーニングフレームワークにおける基本的な計算ユニットであり、計算関数を含む。より具体的には、1つのオペレータは、順方向計算関数(Forward Function)及び逆方向計算関数(Backward Function)を含むことができる。
カスタムオペレータでは、ユーザが自分で作成した計算関数、すなわちカスタム計算関数である。
カスタム計算関数がディープラーニングフレームワークに関連しないとは、ユーザがディープラーニングフレームワークの内部概念を理解したり、ディープラーニングフレームワークの内部クラスを継承したりする必要がなく、簡潔、柔軟、直感的な方法で計算関数を作成できることを意味する。
計算関数の簡潔さ、柔軟性、直感性は、次のような点で実現される。
(1)関数の命名を制限せず、ユーザに指定関数の実現を要求せず、ユーザは自分の意図で自分の関数に命名すればよい。
(2)関数パラメータの数を制限せず、ユーザは実際の計算ニーズに応じて、1つ又は複数のTensor、vector<Tensor>、及びint、float、doubleなどのタイプのパラメータを入力とすることができ、非常に柔軟である。
(3)関数の戻り値は可変長Tensorリストであり、ユーザは実際の計算ニーズに応じて1つ又は複数のTensorを戻すことができる。
(4)ユーザは、基礎データタイプTensor、データタイプ、デバイスタイプを含むオペレータ計算ロジックに必要な基礎概念のみを理解すればよく、他のフレームワークの下位層にある概念は一切理解する必要がなく、学習及び理解コストが低い。
これらの特徴をまとめると、カスタムオペレータの計算関数は次のように記述できる。
Tensorリストを戻す オペレータ計算関数名(Tensor1入力, Tensor2入力...){
オペレータ計算ロジック...
計算結果を戻す
カスタムオペレータについて、一般的にそのカスタムオペレータの順方向計算関数(Forward Function)と逆方向計算関数(Backward Function)を作成する。どちらも、前述の直感的でプログラミング習慣に準拠した簡潔な実装方式を使用できる。
このようなプログラミングパラダイム設計では、ユーザは入力されたTensor(テンソル)と返されたTensor、及び関連する演算論理実装のみに注意を払う必要があり、例えば前述のスキームにおけるOpKernelContext、CustomOp、OpKernelなどのフレームワーク内部の無関係な概念に注意を払う必要はない。これは一般的なプログラミング習慣に合致しており、書き方の理解に関するコストが低い。
ユーザが作成したディープラーニングフレームワークに関連しないカスタム計算関数を使用することで、ユーザによるカスタムオペレータの計算関数に対する簡潔、柔軟、直感的な作成を実現することができ、さらにオペレータ登録プロセスを簡略化することができる。
ユーザが入力した登録情報を受信すると、登録情報に基づいてオペレータメタ情報(OpMetaInfo)を生成することができる。図2に示すように、ユーザ側では、登録情報に基づいてカスタムオペレータに対応するオペレータメタ情報(OpMetaInfo)を作成するための作成モジュール202をさらに備えて良い。さらに、カスタムオペレータのそれぞれは1つのオペレータメタ情報に対応し、複数のカスタムオペレータは複数のオペレータメタ情報に対応し、複数のオペレータメタ情報はオペレータメタ情報テーブル(OpMetaInfoMap)を構成することができる。
具体的には、ビルダー(builder)を用いて登録情報に基づいてオペレータメタ情報を作成してよい。ビルダーは、例えばマクロなどの方法を使用することができる。
いくつかの実施形態では、前記登録情報に基づいて前記ディープラーニングフレームワークにおけるオペレータメタ情報を作成することは、前記カスタム入力情報を前記ディープラーニングフレームワークにおける標準入力情報に変換し、前記カスタム出力情報を前記ディープラーニングフレームワークにおける標準出力情報に変換し、前記カスタム計算関数をマクロで処理して、マクロ処理された計算関数を得、前記標準入力情報と、前記標準出力情報と、前記マクロ処理された計算関数とに基づいて、前記ディープラーニングフレームワークにおけるオペレータメタ情報を作成することを含んで良い。
入力情報又は出力情報が変数名であることを例にすると、カスタム入力変数名を標準入力変数名に変換し、カスタム出力変数名を標準出力変数名に変換して良い。入力を例にすると、ディープラーニングフレームワークでは、カスタム入力変数名と標準入力変数名との間のマッピング関係をあらかじめ設定することにより、このマッピング関係によりカスタム入力変数名を標準入力変数名に変換することができる。例えばカスタム入力変数名がtensor1入力であれば、あらかじめ配置されたマッピング関係の処理を経て、標準入力変数名Xに変換することができる。理解すべきなのは、マッピング関係は、ある特定の名と別の特定の名との1対1の対応関係に限定されるものではなく、カスタム変数名をディープラーニングフレームワークにおける標準変数名に適合するように変換するための計算関係又は処理関係であってもよい。変数名は入力変数名と出力変数名を含む。
カスタム計算関数をマクロで処理することは、カスタム計算関数をマクロでラップすることを意味して良い。例えば、カスタム計算関数がReluCPUForwardで、マクロがPD_KERNELであれば、マクロで処理された計算関数はPD_KERNEL(ReluCPUForward)として表現できる。
コンピュータの分野では、マクロは置換処理の一種であり、定義された置換関係により、対応する置換処理を実現することができる。例えば、上記のマクロ処理された計算関数PD_KERNEL(ReluCPUForward)を、定義された置換関係により、ある設定された構造体KernelFuncImplに含まれる計算関数computeに置換する。
上記定義された置換関係に基づいてカスタム定義関数をコンパイルする場合に、KernelFuncImplのCompute関数を処理するように置き換えられる。
作成されるオペレータメタ情報は、標準入力情報、標準出力情報、及びマクロ処理された計算関数の関数ポインタを含むことができる。
上記の変換及びマクロ処理により、カスタムオペレータに対応するオペレータメタ情報を効率的に作成することができる。
幾つかの実施形態では、前記登録対象オペレータは、登録対象オペレータ記述情報と登録対象オペレータカーネル関数とを含み、前記オペレータメタ情報に基づいて、ディープラーニングフレームワークにおける登録対象オペレータを構築することは、前記標準入力情報と前記標準出力情報とに基づいて、前記登録対象オペレータ記述情報を構築し、前記マクロ処理された計算関数に基づいて、前記登録対象オペレータカーネル関数を構築することを含む。
図2に示すように、内部側には、オペレータメタ情報に基づいて、対応するディープラーニングフレームワークにおける登録対象オペレータを構築してディープラーニングフレームワークにおけるグローバルオペレータテーブルに登録するユーザオペレータ構築モジュール203が備えられても良い。ディープラーニングフレームワーク内にそもそも存在しているオペレータと区別するために、ユーザが作成したカスタムオペレータに対応する登録対象オペレータをユーザオペレータ(CustomOp)と呼ぶことができる。理解すべきなのは、ユーザオペレータは、ディープラーニングフレームワークに準拠した標準オペレータであり、ディープラーニングフレームワーク内で統一的にスケジューリングすることができる。
ディープラーニングフレームワークにおいて、オペレータは記述情報とカーネル関数という2つの部分を含むことができる。記述情報は例えば入力情報、出力情報などを含み、カーネル関数はオペレータの主要な計算ロジックを記述するために用いられる。
登録対象オペレータ記述情報は、標準入力情報及び標準出力情報を含むことができる。
登録対象オペレータカーネル関数は、マクロ処理された計算関数に基づいて構築することができる。
マクロ処理された計算関数に基づいて前記登録対象オペレータカーネル関数を構築することにより、カスタム計算関数と標準計算関数との関連付けを実現し、カスタムオペレータをディープラーニングフレームワーク内に適用することができる。
ディープラーニングフレームワーク内では、統一的なスケジューリングを実現するために、ディープラーニングフレームワークにおけるオペレータに対応する関数の書き方が統一されており、かつこの統一された書き方とユーザのカスタムオペレータの計算関数の書き方に大きな違いがある。
具体的には、異なるシナリオにおいて、異なるユーザの計算関数の書き方が異なる場合があり、例えばテンソルを入力とする場合、関数の書き方は以下のようになる。
Tensorリストを戻す オペレータ計算関数名(Tensor1入力){...}
一方、入力されるテンソルが2つある場合、関数の書き方は以下のようになる。
Tensorリストを戻す オペレータ計算関数名(Tensor1入力, Tensor2入力){...}
入力が増えると、関数の書き方も増える。C++プログラミング言語において、異なる関数の書き方は異なる関数ポインタのタイプ、即ち異なるデータタイプを意味するが、フレームワークにユーザが書く可能性のある関数ポインタタイプを格納し、且つフレームワークの下位層で呼び出す必要がある。このような書き方の柔軟性が非常に強いパラダイムは、C++プログラミング言語の中では簡単で汎用的な形式で格納することができない。全体を簡潔にするためには、ユーザが作成する様々な計算関数を統一する必要がある。
例えば、あるカスタム計算関数の関数形式は次のとおりである。
Tensorリストを戻す オペレータ計算関数名(Tensor1入力){...}
もう1つのカスタム計算関数の関数形式は次のとおりである。
Tensorリストを戻す オペレータ計算関数名(Tensor1入力, Tensor2入力){...}
上記2つのカスタム計算関数の関数形式は統一されておらず、本実施形態では、ディープラーニングフレームワーク内で統一されたスケジューリングを容易にするために、異なるカスタム計算関数を統一する必要がある。
統一された関数、即ち統一的な形式を持つ関数の関数形式は、次のとおりであって良い。
Tensorリストを戻す オペレータ計算関数名(Tensorリスト入力){...}
いくつかの実施形態では、前記登録対象オペレータカーネル関数には、統一的な形式の入力情報及び統一された関数ポインタが含まれ、前記マクロ処理された計算関数に基づいて、前記登録対象オペレータカーネル関数を構築することは、異なるカスタム計算関数に対して統一的な形式を有する静的関数を含む、前記マクロ処理された計算関数を置換するための構造体を決定し、前記静的関数の入力情報を前記統一的な形式の入力情報とし、前記静的関数の関数ポインタを前記統一的な関数ポインタとすることを含む。
例えば、一般的なフレームワークにおけるオペレータはOpKernelクラスを継承して独自の計算(Compute)関数を追加して実装する必要があるが、対応する入出力テンソルはすべてcontextにあり、contextのInput、Outputメソッドにより取得する必要がある。これは、前述の直観的なカスタム計算関数のプログラミングパラダイムとは本質的に異なるため、両者を関連付ける必要がある。
本実施形態では、登録対象オペレータカーネル関数を構築する際に、あらかじめ定義された構造体における静的関数であってもよい統一的な形式の関数に基づいて構築する。
具体的に、本実施形態では、登録対象オペレータカーネル関数を構築する際に、上記の静的関数の入力情報を作成し、上記の静的関数の関数ポインタを作成し、他の幾つかの標準的な処理を作成し、例えばcontextから入力情報を取得してinputs変数に入れることを含むことができる。
本実施形態では、登録対象オペレータカーネル関数を構築する際に、上記の3つの作成手順を含む。
登録対象オペレータカーネル関数を構築する際に、統一的な形式の静的関数を採用することにより、ディープラーニングフレームワークの統一的なスケジューリングのために、カスタム計算関数を統一することができる。
統一的な形式を有する静的関数の入力は、入力変数リストとすることができる。さらに、入力変数リストは、入力テンソルリストと、他のデータタイプの入力変数を格納するための属性リストとを含むことができる。例えば、カスタム計算関数の入力変数のデータタイプがテンソルタイプ(tensor)、整数タイプ(int)、浮動小数点タイプ(float)であり、tensor1、tensor2、int、floatと表現されている場合、静的関数の入力変数リストはテンソルリスト(tensor1、tensor2)及び属性リスト(int、float)を含むことができる。
入力変数リストはC++のテンプレートパラメータ導出メカニズムを用いて得ることができる。
いくつかの実施形態では、前記静的関数の入力情報は入力情報リストを構成し、前記入力情報リストは入力テンソルリストを含み、前記カスタム入力情報は少なくとも1つのデータタイプのカスタム入力情報を含み、前記構造体は少なくとも1つの特殊化の副構造体を含み、異なる特殊化の副構造体は異なるデータタイプに対応し、前記データタイプはテンソルを含み、前記マクロ処理された計算関数に基づいて前記登録対象オペレータカーネル関数を構築することは、前記少なくとも1つの特殊化の副構造体のそれぞれを用いて、前記それぞれの特殊化の副構造体に対応するデータタイプのカスタム入力情報を取得し、データタイプがテンソルのカスタム入力情報で前記入力テンソルリストを構成し、前記データタイプが非テンソルも含み、前記入力情報リストが他のデータタイプのリストも含む場合に、データタイプが非テンソルのカスタム入力情報で前記他のデータタイプのリストを構成することをさらに含む。
具体的には、カスタムオペレータのコンパイル時に、定義されたマクロの置換関係に基づいて、前記マクロ処理された計算関数を置換する構造体(struct)を決定することができる。上述の例によれば、マクロ処理された計算関数はPD_KERNEL(ReluCPUForward)であり、当該関数を置換する構造体はKernelFuncImplであり、当該構造体における静的関数はComputeである。実際の応用において、この静的関数Computeへのポインタが返され、さらに、この構造体KernelFuncImplには複数の特殊化の副構造体が含まれていてもよい。副構造体は、上記の構造体KernelFuncImplに含まれる構造体であり、特殊化の副構造体は、一つ又は複数のパラメータが具体化された構造体である。本実施形態では、異なる特殊化の副構造体は異なるデータタイプに対応しており、例えば、ある特殊化の副構造体の最初のテンプレートパラメータがテンソルタイプに具体化されていれば、その特殊化の副構造体に対応するデータタイプはテンソルであり、カスタム計算関数におけるデータタイプがテンソルの入力変数を解析することができる。特殊化の副構造体に基づいて、静的関数Computeのポインタにより静的関数Computeを呼び出すことができる。この静的関数Computeの返り値は、この複数の特殊化の副構造体のそれぞれにおける静的関数の関数ポインタである。特定の副構造体における静的関数は、例えばComputeCallHelper1、ComputeCallHelper2....で表す場合、静的関数Computeを呼び出すことで、ComputeCallHelper1の関数ポインタ、ComputeCallHelper2の関数ポインタなどを返すことができる。さらに、関数ポインタに基づいて対応する特殊化の副構造体における静的関数を呼び出し、例えば、ComputeCallHelper1の関数ポインタに基づいてComputeCallHelper1を呼び出すことができる。各特殊化の副構造体における静的関数は、対応するデータタイプの入力変数を解析し、対応するデータタイプの入力変数リストを構築するために使用される。例えば、ComputeCallHelper1に対応するデータタイプがテンソル(tensor)であり、カスタム計算関数の入力変数がtensor1とtensor2を含む場合、ComputeCallHelper1の実行により、入力テンソルリスト(tensor1,tensor2)を取得することができる。
具体的な実現において、図3に示すように、異なる特殊化の副構造体がカスタム計算関数の入力変数を1つずつマッチングする方式で、対応するデータタイプの入力変数を取得して対応する入力変数リストを構成してもよい。さらに、マッチングの終了を識別するための特殊な特殊化の副構造体を含むことができる。さらに、特殊化の副構造体を用いてカスタム計算関数の入力変数を解析する場合には、C++のテンプレート導出メカニズムを用いることができる。
カスタム計算関数の入力変数の解析は、あらかじめ定義された構造体により実現することができる。
いくつかの実施形態では、現在のシナリオに基づいて、前記現在のシナリオに対応する現在のコンストラクタを決定し、前記現在のコンストラクタを用いて、前記オペレータメタ情報に基づいてディープラーニングフレームワークにおける登録対象オペレータを構築し、前記登録対象オペレータを前記ディープラーニングフレームワークにおけるグローバルオペレータテーブルに登録して良い。
図4に示すように、コンストラクタはloadOpMetaInfoAndRegister()(loadと略記)とRegisterOperatorWithMetaInfoMap()(registerと略記)で示される二つの種類を含んでよい。
現在のシナリオに基づいて現在のコンストラクタを選択することができる。例えば、現在のシナリオは訓練であれば、選択された現在のコンストラクタはloadであり、現在のシナリオは推論であれば、選択された現在のコンストラクタはregisterである。loadとは、まずコンパイルして動的ライブラリファイルを生成し、動的ライブラリファイルを生成した後に終了し、その後に再起動する時にこの動的ライブラリをロードし、登録を完了することを指し、生成と登録が2つのプロセスである。registerは生成と登録が一つのプロセスである。また、図4のCustomOp及びCustomOpKernelは、カスタムオペレータに対応する登録対象オペレータの2つのクラスであり、それぞれ登録対象オペレータ記述情報及び登録対象オペレータカーネル関数を格納する。OpInfoMap及びAllOpKernels()はグローバルオペレータテーブルであり、それぞれグローバルなオペレータ記述情報及びオペレータカーネル関数を格納する。
具体的には、ユーザが入力した登録情報をOpMetaInfoに格納することができ、複数のOpMetaInfoがOpMetaInfoMapを構成することができる。ユーザは、カスタムオペレータをコンパイルする際に、load関数又はregister関数を呼び出すことにより、カスタムオペレータに対応する登録対象オペレータを構築し、グローバルオペレータテーブルに登録することができる。その後、ディープラーニングフレームワークの統一スケジューリング方式に基づいてスケジューリングすることができる。訓練については、ユーザはpythonインタフェースを使用して呼び出すことができ、ディープラーニングフレームワークはPythonインタフェースを生成するときにload関数の呼び出しをPythonインタフェースにカプセル化することができるため、ユーザはPythonインタフェースを使用するときに自動的に呼び出すことができる。推論については、推論プログラムの起動時にグローバルコールが1回行われ、register関数を呼び出すことができる。
シナリオごとに異なるコンストラクタを使用することで、より柔軟性を高めることができる。
本開示の実施形態では、以上の処理により、ディープラーニングフレームワークのカスタムオペレータのコード化の複雑さを効果的に削減し、フレームワークの二次開発のコストを削減し、フレームワークの使いやすさが向上するため、他の専門分野がこの方法により専用オペレータを容易に拡張し、例えば量子計算、バイオコンピューティングなどの分野においてディープラーニングフレームワークを用いてAI研究を行うことができる。これは、ディープラーニングフレームワークのエコ構築に長期的に良い影響を与え、競争力を高めることができる。
図5は、本開示の第5実施形態に係る概略図である。本実施形態はディープラーニングフレームワークのオペレータ登録装置を提供する。図5に示すように、オペレータ登録装置500は、受信モジュール501と、作成モジュール502と、登録モジュール503とを備える。
受信モジュール501は、ユーザにより提供されたディープラーニングフレームワークにオペレータを登録するための登録情報であって、作成方法が前記ディープラーニングフレームワークに関連しないカスタム計算関数を含む登録情報を受信する。作成モジュール502は、前記登録情報に基づいて前記ディープラーニングフレームワークにおけるオペレータメタ情報を作成する。登録モジュール503は、前記オペレータメタ情報に基づいて前記ディープラーニングフレームワークにおける登録対象オペレータを構築し、前記登録対象オペレータを前記ディープラーニングフレームワークにおけるグローバルオペレータテーブルに登録する。
幾つかの実施形態では、前記登録情報は、カスタム入力情報及びカスタム出力情報をさらに含み、前記作成モジュール502は、具体的に、前記カスタム入力情報を前記ディープラーニングフレームワークにおける標準入力情報に変換し、前記カスタム出力情報を前記ディープラーニングフレームワークにおける標準出力情報に変換し、前記カスタム計算関数をマクロで処理してマクロ処理された計算関数を得、前記標準入力情報と、前記標準出力情報と、前記マクロ処理された計算関数とに基づいて、前記ディープラーニングフレームワークにおけるオペレータメタ情報を作成する。
いくつかの実施形態では、前記登録対象オペレータは、登録対象オペレータ記述情報及び登録対象オペレータカーネル関数を含み、前記登録モジュール503は、具体的に、前記標準入力情報及び前記標準出力情報に基づいて、前記登録対象オペレータ記述情報を構築し、前記マクロ処理された計算関数に基づいて、前記登録対象オペレータカーネル関数を構築する。
いくつかの実施形態では、前記登録対象オペレータカーネル関数に統一的な形式の入力情報と統一された関数ポインタとが含まれ、前記登録モジュール503は、さらに具体的に、異なるカスタム計算関数に対して統一的な形式を有する静的関数を含む、前記マクロ処理された計算関数を置換するための構造体を決定し、前記静的関数の入力情報を前記統一的な形式の入力情報とし、前記静的関数の関数ポインタを前記統一された関数ポインタとする。
いくつかの実施形態では、前記静的関数の入力情報で入力情報リストを構成し、前記入力情報リストに入力テンソルリストが含まれ、前記カスタム入力情報に少なくとも1つのデータタイプのカスタム入力情報が含まれ、前記構造体に少なくとも1つの特殊化の副構造体が含まれ、異なる特殊化の副構造体が異なるデータタイプに対応し、前記データタイプにテンソルが含まれ、前記登録モジュールは、さらに、前記少なくとも1つの特殊化の副構造体のそれぞれを使用して、前記特殊化の副構造体のそれぞれに対応するデータタイプのカスタム入力情報を取得し、データタイプがテンソルのカスタム入力情報で前記入力テンソルリストを構成し、前記データタイプが非テンソルも含み、前記入力情報リストが他のデータタイプのリストも含む場合に、データタイプが非テンソルのカスタム入力情報で前記他のデータタイプのリストを構成する。
いくつかの実施形態では、前記登録モジュール503は、具体的に、現在のシナリオに基づいて、前記現在のシナリオに対応する現在のコンストラクタを決定し、前記現在のコンストラクタを用いて、前記オペレータメタ情報に基づいて、ディープラーニングフレームワークにおける登録対象オペレータを構築し、前記登録対象オペレータを前記ディープラーニングフレームワークにおけるグローバルオペレータテーブルに登録する。
理解すべきなのは、本開示の実施形態では、異なる実施形態における同一又は類似の内容を互いに参照することができる。
理解すべきなのは、本開示の実施形態における「第1」、「第2」等は、単に区別するためのものであり、重要度の高低、タイミングの前後等を表すものではない。
本開示の実施形態によれば、本開示はさらに、電子デバイス、可読記憶媒体、及びコンピュータプログラム製品を提供する。
図6は、本開示の実施形態を実施するために使用され得る例示的な電子デバイス600の模式的なブロック図である。電子デバイスは、ラップトップ、デスクトップコンピュータ、ワークベンチ、サーバ、ブレードサーバ、大型コンピュータ、及び他の適切なコンピュータのような、様々な形態のデジタルコンピュータを表す。電子デバイスはさらに、PDA、携帯電話、スマートフォン、ウェアラブルデバイス、及び他の同様のコンピューティングデバイスなどの様々な形態のモバイルデバイスを表すことができる。本明細書に示す構成要素、それらの接続及び関係、ならびにそれらの機能は、単なる一例であり、本明細書に記載及び/又は要求された本開示の実現を制限することではない。
図6に示すように、電子デバイス600は、読み取り専用メモリ(ROM)602に記憶されたコンピュータプログラム、又は記憶手段606からランダムアクセスメモリ(RAM)603にロードされたコンピュータプログラムに従って、様々な適切な動作及び処理を実行することができる演算手段601を含む。RAM603には、電子デバイス600の動作に必要な各種のプログラムやデータが記憶されてもよい。演算手段601、ROM602及びRAM603は、バス604を介して接続されている。入出力(I/O)インタフェース605もバス604に接続されている。
例えばキーボード、マウス等の入力手段606と、例えば様々なタイプのディスプレイ、スピーカ等の出力手段607と、例えば磁気ディスク、光ディスク等の記憶手段608と、例えばネットワークカード、モデム、無線通信トランシーバなどの通信手段609を含む電子デバイス600の複数の構成要素は、I/Oインタフェース605に接続される。通信手段609は、電子デバイス600が例えばインターネットのコンピュータネットワーク及び/又は様々な電気通信ネットワークを介して他のデバイスと情報/データを交換することを可能にする。
演算手段601は、処理能力及び演算能力を有する様々な汎用及び/又は専用の処理コンポーネントであってよい。演算手段601のいくつかの例は、中央処理ユニット(CPU)、グラフィック処理ユニット(GPU)、様々な専用の人工知能(AI)演算チップ、機械学習モデルアルゴリズムを実行する様々な演算ユニット、デジタル信号プロセッサ(DSP)、及び任意の適切なプロセッサ、コントローラ、マイクロコントローラなどを含むが、これらに限定されない。演算手段601は、上述した様々な方法及び処理、例えばディープラーニングフレームワークのオペレータ登録方法を実行する。例えば、幾つかの実施形態では、ディープラーニングフレームワークのオペレータ登録方法は、例えば記憶手段608のような機械可読媒体に物理的に組み込まれたコンピュータソフトウェアプログラムとして実装されてもよい。幾つかの実施形態では、コンピュータプログラムの一部又は全部は、ROM602及び/又は通信手段609を介して電子デバイス600にロード及び/又はインストールすることができる。コンピュータプログラムがRAM603にロードされ、演算手段601により実行されると、上述したディープラーニングフレームワークのオペレータ登録方法の1つ又は複数のステップを実行することができる。代替的に、他の実施形態では、演算手段601は、ディープラーニングフレームワークのオペレータ登録方法を実行するように、他の任意の適切な方法で(例えば、ファームウェアを介する)構成されてもよい。
本明細書で前述したシステム及び技術の様々な実施形態は、デジタル電子回路システム、集積回路システム、フィールドプログラマブルゲートアレイ(FPGA)、専用集積回路(ASIC)、専用標準製品(ASSP)、システムオンチップシステム(SOC)、ロードプログラマブル論理デバイス(CPLD)、コンピュータハードウェア、ファームウェア、ソフトウェア、及び/又はこれらの組み合わせにおいて実装されてもよい。これらの様々な実施形態は、1つ又は複数のコンピュータプログラムで実施されることを含んで良い。当該1つ又は複数のコンピュータプログラムは、少なくとも1つのプログラマブルプロセッサを含むプログラマブルシステム上で実行及び/又は解釈することができる。当該プログラマブルプロセッサは、専用又は汎用のプログラマブルプロセッサであって、記憶システム、少なくとも1つの入力装置、及び少なくとも1つの出力装置からデータ及び命令を受信し、当該記憶システム、当該少なくとも1つの入力装置、及び当該少なくとも1つの出力装置にデータ及び命令を転送することができる。
本開示の方法を実施するためのプログラムコードは、1つ又は複数のプログラミング言語の任意の組み合わせを用いて記述することができる。これらのプログラムコードは、汎用コンピュータ、専用コンピュータ、又は他のプログラマブルデータ処理装置のプロセッサ又はコントローラに提供することにより、プログラムコードがプロセッサ又はコントローラにより実行されると、フローチャート及び/又はブロック図に指定された機能/動作を実行するようにすることができる。プログラムコードは、全てがマシン上で実行されても良く、一部がマシン上で実行されても良く、スタンドアロンパッケージとして一部的にマシン上で実行され且つ一部的にリモートマシン上で実行され、或いは全てがリモートマシン又はサーバ上で実行されても良い。
本開示の文脈では、機械可読媒体は、有形の媒体であって、命令実行システム、装置又はデバイスにより使用され、或いは命令実行システム、装置又はデバイスと合わせて使用されるプログラムを含むか記憶することができる。機械可読媒体は、機械可読信号媒体又は機械可読記憶媒体であってよい。機械可読媒体は、電子的、磁気的、光学的、電磁気的、赤外線的、又は半導体的なシステム、装置又はデバイス、あるいはこれらの任意の適切な組み合わせを含んで良いが、これらに限定されない。機械可読記憶媒体のより具体的な例は、1つ又は複数のラインに基づく電気的接続、ポータブルコンピュータディスク、ハードディスク、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROM又はフラッシュメモリ(登録商標))、光ファイバ、携帯型コンパクトディスク読み取り専用メモリ(CD?ROM)、光学記憶装置、磁気記憶装置、又はこれらの任意の適切な組み合わせを含む。
ユーザとのインタラクションを提供するために、本明細書に記載されたシステム及び技術は、ユーザに情報を表示するための表示装置(例えば、CRT(陰極線管)又はLCD(液晶ディスプレイ)モニタ)と、ユーザにより入力をコンピュータに提供するキーボード及びポインティングデバイス(例えば、マウス又はトラックボール)と備えるコンピュータ上に実施されてよい。他の種類の装置は、ユーザとのインタラクションを提供するためにも使用され得る。例えば、ユーザに提供されるフィードバックは、任意の形態のセンシングフィードバック(例えば、視覚フィードバック、聴覚フィードバック、又は触覚フィードバック)であって良く、ユーザからの入力を任意の形式(音入力、音声入力、又は触覚入力を含む)で受信して良い。
本明細書に記載されたシステム及び技術は、バックエンド構成要素を含むコンピューティングシステム(例えば、データサーバとする)、又はミドルウェア構成要素を含むコンピューティングシステム(例えば、アプリケーションサーバ)、又はフロントエンド構成要素を含むコンピューティングシステム(例えば、グラフィカルユーザインタフェースもしくはウェブブラウザを有するクライアントコンピュータであり、ユーザは、当該グラフィカルユーザインタフェースもしくは当該ウェブブラウザを通じて本明細書で説明されるシステムと技術の実施形態とインタラクションすることができる)、そのようなバックエンド構成要素、ミドルウェア構成要素、もしくはフロントエンド構成要素の任意の組合せを含むコンピューティングシステムに実施されることが可能である。システムの構成要素は、任意の形態又は媒体のデジタルデータ通信(例えば、通信ネットワーク)によって相互に接続されることが可能である。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)、ワイド・エリア・ネットワーク(「WAN」)、インターネットワークを含む。
コンピュータシステムは、クライアントとサーバを含み得る。クライアントとサーバは、一般的に互いから遠く離れており、通常は、通信ネットワークを通じてインタラクトする。クライアントとサーバとの関係は、相応するコンピュータ上で実行され、互いにクライアント-サーバの関係を有するコンピュータプログラムによって生じる。サーバはクラウドサーバ、クラウドコンピューティングサーバ又はクラウドホストとも呼ばれ、従来の物理ホストとVPSサービス(「Virtual Private Server」、或いは「VPS」と略称される)において管理が難しく、ビジネスの拡張性が弱いという欠点を解決するクラウドコンピューティングサービスシステムのホスト製品の1つであって良い。サーバは、分散システムのサーバであっても良く、ブロックチェーンを組み合わせたサーバであってもよい。
以上で示された様々な形式のフローを使用して、ステップを並べ替え、追加、又は削除できることを理解されたい。例えば、本出願に説明される各ステップは、並列の順序又は順次的な順序で実施されてもよいし、又は異なる順序で実行されてもよく、本出願で開示された技術案の望ましい結果が達成できる限り、ここで制限されない。
上記の具体的な実施形態は本出願の保護範囲に対する制限を構成しない。設計要件及び他の要因に従って、様々な修正、組み合わせ、部分的組み合わせ及び置換を行うことができることを当業者は理解するべきである。本出願の精神及び原則の範囲内で行われる修正、同等の置換、改善は、何れも本出願の保護範囲内に含まれるべきである。

Claims (13)

  1. コンピュータによって実行される、ディープラーニングフレームワークのオペレータ登録方法であって、
    ユーザにより提供されたディープラーニングフレームワークにオペレータを登録するための登録情報を受信することであって、前記登録情報は、作成方法が前記ディープラーニングフレームワークに関連しないカスタム計算関数を含む、ことと、
    前記登録情報に基づいて、前記ディープラーニングフレームワークにおけるオペレータメタ情報を作成することと、
    前記オペレータメタ情報に基づいて前記ディープラーニングフレームワークにおける登録対象オペレータを構築し、前記登録対象オペレータを前記ディープラーニングフレームワークにおけるグローバルオペレータテーブルに登録することと、
    を含む、
    ディープラーニングフレームワークのオペレータ登録方法。
  2. 前記登録情報は、カスタム入力情報及びカスタム出力情報をさらに含み、
    前記登録情報に基づいて、前記ディープラーニングフレームワークにおけるオペレータメタ情報を作成することは、
    記ディープラーニングフレームワークにおける内部標準に適合するように、前記カスタム入力情報を統一化して形式が統一である標準入力情報を得ることと、
    記ディープラーニングフレームワークにおける内部標準に適合するように、前記カスタム出力情報を統一化して形式が統一である標準出力情報を得ることと、
    前記カスタム計算関数に対してマクロを実行してマクロ処理された計算関数を取得することと、
    前記標準入力情報と、前記標準出力情報と、前記マクロ処理された計算関数とに基づいて、前記ディープラーニングフレームワークにおけるオペレータメタ情報を作成することと、
    を含む、
    請求項1に記載のディープラーニングフレームワークのオペレータ登録方法。
  3. 前記登録対象オペレータは、登録対象オペレータ記述情報と、登録対象オペレータカーネル関数と、を含み、
    前記オペレータメタ情報に基づいて前記ディープラーニングフレームワークにおける登録対象オペレータを構築することは、
    前記標準入力情報と前記標準出力情報とに基づいて、前記登録対象オペレータ記述情報を構築することであって、前記登録対象オペレータは前記標準入力情報と前記標準出力情報で構成される、ことと、
    前記マクロ処理された計算関数に基づいて前記登録対象オペレータカーネル関数を構築することと、
    を含
    前記登録対象オペレータカーネル関数に統一的な形式の入力情報及び統一された関数ポインタが含まれ、
    前記マクロ処理された計算関数に基づいて前記登録対象オペレータカーネル関数を構築することは、
    異なるカスタム計算関数に対して統一的な形式を有する静的関数を含む、前記マクロ処理された計算関数を置換するための構造体を決定することと、
    前記静的関数の入力情報を前記統一的な形式の入力情報とすることと、
    前記静的関数の関数ポインタを前記統一された関数ポインタとすることと、
    を含む、
    請求項2に記載のディープラーニングフレームワークのオペレータ登録方法。
  4. 前記静的関数の入力情報で入力情報リストを構成し、前記入力情報リストに入力テンソルリストが含まれ、前記カスタム入力情報に少なくとも1つのデータタイプのカスタム入力情報が含まれ、前記構造体に少なくとも1つの特殊化の副構造体が含まれ、異なる特殊化の副構造体が異なるデータタイプに対応し、前記データタイプにテンソルが含まれ、
    前記マクロ処理された計算関数に基づいて前記登録対象オペレータカーネル関数を構築することは、
    前記少なくとも1つの特殊化の副構造体のそれぞれを用いて、前記特殊化の副構造体のそれぞれに対応するデータタイプのカスタム入力情報を取得することと、
    データタイプがテンソルであるカスタム入力情報によって前記入力テンソルリストを構成することと、
    前記データタイプが非テンソルをさらに含み、且つ前記入力情報リストが他のデータタイプのリストをさらに含む場合、データタイプが非テンソルであるカスタム入力情報によって前記他のデータタイプのリストを構成することと、
    をさらに含む、
    請求項に記載のディープラーニングフレームワークのオペレータ登録方法。
  5. 前記オペレータメタ情報に基づいて前記ディープラーニングフレームワークにおける登録対象オペレータを構築し、前記登録対象オペレータを前記ディープラーニングフレームワークにおけるグローバルオペレータテーブルに登録することは、
    現在のシナリオに基づいて、前記現在のシナリオに対応する現在のコンストラクタを決定することであって、前記シナリオは訓練と推論を含む、ことと、
    前記現在のコンストラクタを用いて、前記オペレータメタ情報に基づいてディープラーニングフレームワークにおける登録対象オペレータを構築し、前記登録対象オペレータを前記ディープラーニングフレームワークにおけるグローバルオペレータテーブルに登録することと、
    を含む、
    請求項1~のいずれか一項に記載のディープラーニングフレームワークのオペレータ登録方法。
  6. ディープラーニングフレームワークのオペレータ登録装置であって、
    ユーザにより提供されたディープラーニングフレームワークにオペレータを登録するための登録情報を受信する受信モジュールであって、前記登録情報は、作成方法が前記ディープラーニングフレームワークに関連しないカスタム計算関数を含む、受信モジュールと、
    前記登録情報に基づいて、前記ディープラーニングフレームワークにおけるオペレータメタ情報を作成する作成モジュールと、
    前記オペレータメタ情報に基づいて前記ディープラーニングフレームワークにおける登録対象オペレータを構築し、前記登録対象オペレータを前記ディープラーニングフレームワークにおけるグローバルオペレータテーブルに登録する登録モジュールと、
    を備える、
    ディープラーニングフレームワークのオペレータ登録装置。
  7. 前記登録情報はカスタム入力情報とカスタム出力情報とをさらに含み、
    前記作成モジュールは、
    記ディープラーニングフレームワークにおける内部標準に適合するように、前記カスタム入力情報を統一化して形式が統一である標準入力情報を得ることと、
    記ディープラーニングフレームワークにおける内部標準に適合するように、前記カスタム出力情報を統一化して形式が統一である標準出力情報を得ることと、
    前記カスタム計算関数に対してマクロを実行してマクロ処理された計算関数を取得することと、
    前記標準入力情報と、前記標準出力情報と、前記マクロ処理された計算関数とに基づいて、前記ディープラーニングフレームワークにおけるオペレータメタ情報を作成することと、
    を実行する、
    請求項に記載のディープラーニングフレームワークのオペレータ登録装置。
  8. 前記登録対象オペレータは、登録対象オペレータ記述情報と、登録対象オペレータカーネル関数と、を含み、
    前記登録モジュールは、
    前記標準入力情報及び前記標準出力情報に基づいて、前記登録対象オペレータ記述情報を構築することと、
    前記マクロ処理された計算関数に基づいて前記登録対象オペレータカーネル関数を構築することであって、前記登録対象オペレータは前記標準入力情報と前記標準出力情報で構成される、ことと、
    を実行
    前記登録対象オペレータカーネル関数は、統一的な形式の入力情報及び統一された関数ポインタを含み、
    前記登録モジュールは、
    異なるカスタム計算関数に対して統一的な形式を有する静的関数を含む、前記マクロ処理された計算関数を置換するための構造体を決定することと、
    前記静的関数の入力情報を前記統一的な形式の入力情報とすることと、
    前記静的関数の関数ポインタを前記統一された関数ポインタとすることと、
    をさらに実行する、
    請求項に記載のディープラーニングフレームワークのオペレータ登録装置。
  9. 前記静的関数の入力情報で入力情報リストを構成し、前記入力情報リストに入力テンソルリストが含まれ、前記カスタム入力情報に少なくとも1つのデータタイプのカスタム入力情報が含まれ、前記構造体に少なくとも1つの特殊化の副構造体が含まれ、異なる特殊化の副構造体が異なるデータタイプに対応し、前記データタイプにテンソルが含まれ、
    前記登録モジュールは、
    前記少なくとも1つの特殊化の副構造体のそれぞれを用いて、前記特殊化の副構造体のそれぞれに対応するデータタイプのカスタム入力情報を取得することと、
    データタイプがテンソルであるカスタム入力情報によって前記入力テンソルリストを構成することと、
    前記データタイプが非テンソルをさらに含み、且つ前記入力情報リストが他のデータタイプのリストをさらに含む場合、データタイプが非テンソルであるカスタム入力情報によって前記他のデータタイプリストを構成することと、
    をさらに実行する、
    請求項に記載のディープラーニングフレームワークのオペレータ登録装置。
  10. 前記登録モジュールは、
    現在のシナリオに基づいて、前記現在のシナリオに対応する現在のコンストラクタを決定することであって、前記シナリオは訓練と推論を含む、ことと、
    前記現在のコンストラクタを用いて、前記オペレータメタ情報に基づいて、ディープラーニングフレームワークにおける登録対象オペレータを構築し、前記登録対象オペレータを前記ディープラーニングフレームワークにおけるグローバルオペレータテーブルに登録することと、
    を実行する、
    請求項のいずれか一項に記載のディープラーニングフレームワークのオペレータ登録装置。
  11. 少なくとも1つのプロセッサと、
    前記少なくとも1つのプロセッサと通信可能に接続されたメモリと、
    を備え、
    前記メモリに前記少なくとも1つのプロセッサにより実行可能なコマンドが記憶されており、前記コマンドが前記少なくとも1つのプロセッサにより実行されると、前記少なくとも1つのプロセッサに請求項1~のいずれか一項に記載のディープラーニングフレームワークのオペレータ登録方法を実行させる電子デバイス。
  12. コンピュータに請求項1~のいずれか一項に記載のディープラーニングフレームワークのオペレータ登録方法を実行させるためのコンピュータコマンドを記憶した非一時的なコンピュータ可読記憶媒体。
  13. プロセッサにより実行されると、請求項1~のいずれか一項に記載のディープラーニングフレームワークのオペレータ登録方法を実現するコンピュータプログラム。
JP2022040721A 2021-05-18 2022-03-15 ディープラーニングフレームワークのオペレータ登録方法、装置、デバイス及び記憶媒体 Active JP7350923B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202110540476.4 2021-05-18
CN202110540476.4A CN113342346B (zh) 2021-05-18 2021-05-18 深度学习框架的算子注册方法、装置、设备和存储介质

Publications (2)

Publication Number Publication Date
JP2022177793A JP2022177793A (ja) 2022-12-01
JP7350923B2 true JP7350923B2 (ja) 2023-09-26

Family

ID=77470876

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022040721A Active JP7350923B2 (ja) 2021-05-18 2022-03-15 ディープラーニングフレームワークのオペレータ登録方法、装置、デバイス及び記憶媒体

Country Status (3)

Country Link
US (1) US11625248B2 (ja)
JP (1) JP7350923B2 (ja)
CN (1) CN113342346B (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113918351B (zh) * 2021-12-08 2022-03-11 之江实验室 深度学习框架与ai加速卡片内分布式训练适配方法和装置
CN114168114A (zh) * 2022-02-10 2022-03-11 中国电子科技集团公司第十五研究所 一种算子注册方法、装置以及设备
CN114841326B (zh) * 2022-05-19 2024-01-12 北京百度网讯科技有限公司 深度学习框架的算子处理方法、装置、设备和存储介质
CN114911465B (zh) * 2022-05-19 2023-01-10 北京百度网讯科技有限公司 算子的生成方法、装置、设备以及存储介质
CN116257286B (zh) * 2023-03-13 2023-09-15 北京百度网讯科技有限公司 一种文件处理方法、装置、电子设备及存储介质
CN116107669B (zh) * 2023-04-14 2023-08-18 北京大学 深度学习框架的算子注册方法、装置、设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021005357A (ja) 2019-06-26 2021-01-14 ベイジン バイドゥ ネットコム サイエンス アンド テクノロジー カンパニー リミテッド チップに基づく計算機能を生成する方法、装置、デバイス、および記憶媒体
JP2021193606A (ja) 2020-09-29 2021-12-23 ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド 深層学習に基づく演算子の登録処理方法、装置及び電子機器

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0527979A (ja) * 1991-07-23 1993-02-05 Meidensha Corp プログラム言語の演算子管理方式
JPH1011119A (ja) * 1996-06-24 1998-01-16 Mitsubishi Electric Corp 計装制御用プログラム作成方法および計装制御用プログラム作成装置
US9547830B2 (en) * 2013-05-07 2017-01-17 Wise.Io, Inc. Scalable, memory-efficient machine learning and prediction for ensembles of decision trees for homogeneous and heterogeneous datasets
US10650303B2 (en) * 2017-02-14 2020-05-12 Google Llc Implementing neural networks in fixed point arithmetic computing systems
CN107463595A (zh) * 2017-05-12 2017-12-12 中国科学院信息工程研究所 一种基于Spark的数据处理方法及系统
JP6540770B2 (ja) * 2017-10-17 2019-07-10 富士通株式会社 演算処理回路、演算処理回路を含む演算処理装置、演算処理装置を含む情報処理装置、および方法
JP7315317B2 (ja) * 2018-11-09 2023-07-26 株式会社Preferred Networks プロセッサおよびプロセッサのデータ転送方法
EP3918472B1 (en) * 2019-01-28 2024-03-27 INTEL Corporation Techniques to detect fusible operators with machine learning
CN110795104B (zh) * 2019-10-29 2023-05-05 中国人民解放军国防科技大学 一种用于TensorFlow自定义操作生成的方法
CN111783124B (zh) * 2020-07-07 2024-05-17 矩阵元技术(深圳)有限公司 基于隐私保护的数据处理方法、装置和服务器
CN111782219B (zh) * 2020-07-16 2024-03-22 矩阵元技术(深圳)有限公司 基于TensorFlow的自定义类型实现方法和装置
CN112069456A (zh) * 2020-09-21 2020-12-11 北京明略昭辉科技有限公司 一种模型文件的生成方法、装置、电子设备及存储介质
TWI755112B (zh) * 2020-10-23 2022-02-11 財團法人工業技術研究院 電腦程式碼之優化方法、優化系統及應用其之電子裝置
US11216752B1 (en) * 2020-12-01 2022-01-04 OctoML, Inc. Optimizing machine learning models
CN112558942A (zh) * 2020-12-22 2021-03-26 上海商汤智能科技有限公司 算子注册方法和相关产品
CN112561084B (zh) * 2021-02-18 2021-05-18 腾讯科技(深圳)有限公司 特征提取方法、装置、计算机设备及存储介质

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021005357A (ja) 2019-06-26 2021-01-14 ベイジン バイドゥ ネットコム サイエンス アンド テクノロジー カンパニー リミテッド チップに基づく計算機能を生成する方法、装置、デバイス、および記憶媒体
JP2021193606A (ja) 2020-09-29 2021-12-23 ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド 深層学習に基づく演算子の登録処理方法、装置及び電子機器

Also Published As

Publication number Publication date
US11625248B2 (en) 2023-04-11
CN113342346A (zh) 2021-09-03
US20220374238A1 (en) 2022-11-24
JP2022177793A (ja) 2022-12-01
CN113342346B (zh) 2022-03-25

Similar Documents

Publication Publication Date Title
JP7350923B2 (ja) ディープラーニングフレームワークのオペレータ登録方法、装置、デバイス及び記憶媒体
EP3304286B1 (en) Data binding dependency analysis
Ono et al. CyREST: turbocharging Cytoscape access for external tools via a RESTful API
US9274761B1 (en) Dual programming interface
US10635408B2 (en) Method and apparatus for enabling agile development of services in cloud computing and traditional environments
CN109739494B (zh) 一种基于Tree-LSTM的API使用代码生成式推荐方法
CA3050159C (en) Artificial intelligence (ai) based automatic rule generation
US11861469B2 (en) Code generation for Auto-AI
US20120227028A1 (en) Graphical programming object population user interface autogeneration
KR102202149B1 (ko) 선택 가능한 비교 속성들을 갖는 부동 소수점 명령
US11847509B2 (en) Infrastructure base model API
CN112015468A (zh) 一种接口文档处理方法、装置、电子设备以及存储介质
CN116360735A (zh) 一种表单生成方法、装置、设备和介质
WO2021129812A1 (zh) 运行人工智能应用的方法、系统及设备
Nilsson et al. Model-based user interface adaptation
CN113590593A (zh) 数据表信息的生成方法和装置、存储介质及电子装置
US20140250386A1 (en) Method and system for client side user interface generation
US9280361B2 (en) Methods and systems for a real time transformation of declarative model and layout into interactive, digital, multi device forms
CN115964042A (zh) 菜单的生成方法及装置、存储介质、电子设备
Design et al. MIT Architecture
US10162609B2 (en) Model-driven object composition for data access using function-expressions
JP2021120899A (ja) ユーザ識別方法、装置、記憶媒体及び電子機器
CN111782196A (zh) 基于mvp架构的开发方法及装置
CN115357240B (zh) 微服务模型构建方法、装置、计算机设备和存储介质
CN118070536A (zh) 异构模型转换方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220316

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230317

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230329

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230519

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230831

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230913

R150 Certificate of patent or registration of utility model

Ref document number: 7350923

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150