JP2022031507A - ディープラーニングフレームワークにおける演算子の展開方法、展開装置及び電子機器 - Google Patents

ディープラーニングフレームワークにおける演算子の展開方法、展開装置及び電子機器 Download PDF

Info

Publication number
JP2022031507A
JP2022031507A JP2021212645A JP2021212645A JP2022031507A JP 2022031507 A JP2022031507 A JP 2022031507A JP 2021212645 A JP2021212645 A JP 2021212645A JP 2021212645 A JP2021212645 A JP 2021212645A JP 2022031507 A JP2022031507 A JP 2022031507A
Authority
JP
Japan
Prior art keywords
operator
library
file
target
deep learning
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.)
Granted
Application number
JP2021212645A
Other languages
English (en)
Other versions
JP7324831B2 (ja
Inventor
チャン,リュウジェ
Liujie Zhang
ラン,シャン
Xiang Lan
ツェン,フィファン
Huihuang Zheng
リュウ,ホンギュ
Hongyu Liu
シュウ,ウェイ
Wei Xu
マ,ヤンジュン
Yanjun Ma
ウ,ディアンハイ
Dianhai Yu
ワン,ハイフェン
Haifeng Wang
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 JP2022031507A publication Critical patent/JP2022031507A/ja
Application granted granted Critical
Publication of JP7324831B2 publication Critical patent/JP7324831B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/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/54Link editing before load time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • G06N3/105Shells for specifying net layout
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

【課題】本開示は、ディープラーニングフレームワークにおける演算子の展開方法、展開装置及び電子機器を開示し、ディープラーニングなどの人工知能技術分野に関する。【解決手段】技術案としては、演算子のソースファイルを取得し、前記演算子のソースファイルをコンパイルして前記演算子の動的リンクライブラリを形成し、前記演算子の動的リンクライブラリのインタフェースファイルを生成し、前記動的リンクライブラリ及び前記インタフェースファイルに基づいて、インストール可能なライブラリファイルを生成し、前記インストール可能なライブラリファイルをターゲットプログラミング言語ライブラリにインストールする。これにより、演算子インストールのすべてのプロセスを完全に隠すことができ、ユーザのラーニングコストを大幅に削減するとともに、ディープラーニングフレームワークにおける演算子の展開プロセスの効率、柔軟性及び信頼性を向上させることができる。【選択図】図1

Description

本出願の実施例は、データ処理技術の分野に関し、より具体的には、ディープラーニングなどの人工知能技術の分野に関する。
現在、主流となっているディープラーニングフレームワークには、演算子と総称される豊富なテンソル計算処理ユニットが含まれており、豊富な演算子ライブラリは、ディープラーニングモデルを迅速に構築するために強力な基礎ツールを提供しているが、ディープラーニングフレームワークにおける演算子ライブラリは、一般的に完全性を実現できず、特に、最先端の学術研究分野では、現在の演算子ライブラリは、特定の論理計算操作を満たすことができない場合がよく存在する。したがって、各ディープラーニングフレームワークは、カスタム演算子のメカニズムをユーザに提供している。
カスタム演算子は、主にC++言語(The C++ Programming Language/C plus plus)によって実現され、ソースコードを個別にコンパイルし、動的ライブラリにリンクした後、フロントエンドでロッド及びインポートして使用する必要がある。ユーザがこのフレームワークをある程度理解する必要があるだけでなく、ユーザはC++ソースのコンパイルに関する基本的な知識を持っている必要がある。GPU(Graphics Processing Unit、グラフィックプロセッミングユニット)デバイスをサポートする演算子の実現に関する場合、ユーザがCUDA(Compute Unified Device Architecture、コンピューティングユニファイドデバイスアーキテクチャ)コンパイルの背景知識を理解する必要がある。これは、ユーザの使用コストが極めて高く、他のサードパーティライブラリ(例えば、ライブラリpybind11)への依存度が高く、柔軟性に欠け、効率が低いという技術的課題につながる。したがって、如何にしてディープラーニングフレームワークにおける演算子の展開プロセスの効率、柔軟性及びデカップリング性を向上させ、ユーザの使用コストを削減するかが重要な研究方向の1つとなっている。
本出願は、ディープラーニングフレームワークにおける演算子の展開方法、展開装置及び電子機器を提供する。
本出願の第1の態様では、演算子のソースファイルを取得するステップと、前記演算子のソースファイルをコンパイルして前記演算子の動的リンクライブラリを形成するステップと、前記演算子の動的リンクライブラリのインタフェースファイルを生成するステップと、前記動的リンクライブラリ及び前記インタフェースファイルに基づいて、インストール可能なライブラリファイルを生成するステップと、前記インストール可能なライブラリファイルを、ターゲットプログラミング言語ライブラリにインストールするステップと、を含む、ディープラーニングフレームワークにおける演算子の展開方法が提供される。
本出願の第2の態様では、演算子のソースファイルを取得するように構成される第1の取得モジュールと、前記演算子のソースファイルをコンパイルして前記演算子の動的リンクライブラリを形成するように構成される形成モジュールと、前記演算子の動的リンクライブラリのインタフェースファイルを生成するように構成される第1の生成モジュールと、前記動的リンクライブラリ及び前記インタフェースファイルに基づいて、インストール可能なライブラリファイルを生成するように構成される第2の生成モジュールと、前記インストール可能なライブラリファイルを、ターゲットプログラミング言語ライブラリにインストールするように構成されるインストールモジュールと、を含む、ディープラーニングフレームワークにおける演算子の展開装置が提供される。
本出願の第3の態様では、少なくとも1つのプロセッサと、前記少なくとも1つのプロセッサに通信可能に接続されるメモリと、を含み、前記メモリには前記少なくとも1つのプロセッサによって実行可能な命令が記憶され、前記命令が前記少なくとも1つのプロセッサによって実行される場合、前記少なくとも1つのプロセッサが本出願の第1の態様に記載のディープラーニングフレームワークにおける演算子の展開方法を実行できる、電子機器が提供される。
本出願の第4の態様では、コンピュータに本出願の第1の態様に記載のディープラーニングフレームワークにおける演算子の展開方法を実行させるためのコンピュータ命令を記憶している、非一時的なコンピュータ読み取り可能な記憶媒体が提供される。
本出願の第5の態様では、プロセッサによって実行される場合、本出願の第1の態様に記載のディープラーニングフレームワークにおける演算子の展開方法を実現するコンピュータプログラムを含む、コンピュータプログラム製品が提供される。
本出願の第6の態様では、プロセッサによって実行される場合、本出願の第1の態様に記載のディープラーニングフレームワークにおける演算子の展開方法を実現する、コンピュータプログラムが提供される。
なお、本部分に記載された内容は、本出願の実施例の肝心または重要な特徴を限定することを意図するものではなく、本出願の範囲を限定するものでもない。本出願の他の特徴は、以下の説明によって容易に理解されやすくなる。
図面は、本技術案をよりよく理解するために使用され、本出願を限定するものではない。
本出願の第1の実施例に係るディープラーニングフレームワークにおける演算子の展開方法の概略フローチャートである。 本出願の第2の実施例に係るディープラーニングフレームワークにおける演算子の展開方法の概略フローチャートである。 本出願の第3の実施例に係るディープラーニングフレームワークにおける演算子の展開方法の概略フローチャートである。 本出願の第4の実施例に係るディープラーニングフレームワークにおける演算子の展開方法の概略フローチャートである。 本出願の第5の実施例に係るディープラーニングフレームワークにおける演算子の展開方法の概略フローチャートである。 Pythonパッケージリリースの流れを示す概略図である。 本出願の実施例に係るディープラーニングフレームワークにおける演算子の展開方法を実現するためのディープラーニングフレームワークにおける演算子の展開装置の概略構成図である。 本出願の実施例に係るディープラーニングフレームワークにおける演算子の展開方法を実現するためのディープラーニングフレームワークにおける演算子の展開装置の概略構成図である。 本出願の実施例に係るディープラーニングフレームワークにおける演算子の展開方法を実現するための電子機器のブロック図である。
以下、図面を組み合わせて本出願の例示的な実施例を説明し、理解を容易にするためにその中には本出願の実施例の様々な詳細事項が含まれ、それらは単なる例示するものとして見なされるべきである。したがって、当業者は、本出願の範囲及び精神から逸脱することなく、ここで説明される実施例に対して様々な変更と置き換えを行うことができる。同様に、わかりやすくかつ簡潔にするために、以下の説明では、周知の機能及び構造の説明を省略する。
本出願の技術案に関する技術分野を簡単に説明する。
データ処理(Data Processing)は、データの収集、記憶、検索、加工、変化及び伝送などの処理を含み、大量の、乱雑かもしれない、理解し難いデータから特定のユーザにとって価値があり、意味のあるデータを抽出し、導き出すことを目的とする。
AI(Artificial Intelligence、人工知能)は、コンピュータに人間のある思考過程や知的行為(例えば、学習、推理、思考、計画など)をシミュレーションさせることを研究する学科であり、ハードウェアレベルの技術もあれば、ソフトウェアレベルの技術もある。人工知能ハードウェア技術には、一般的にコンピュータビジョン技術、音声認識技術、自然言語処理技術及びその学習/ディープラーニング、ビッグデータ処理技術、ナレッジグラフ技術などのいくつかの面が含まれる。
DL(Deep Learning、ディープラーニング)は、ML機械学習(Machine Learning、機械学習)分野における新たな研究方向であり、本来の目標である人工知能により近づけるために、機械学習に導入されている。ディープラーニングとは、サンプルデータの内在法則と表現レベルを学習することであり、これらの学習プロセスにおいて取得された情報は、文字、画像及び音声などのデータの解釈に大きく役立つ。最終的な目標は、機械が人間と同じように解析学習能力を持ち、文字、画像及び音声などのデータを認識できるようにすることである。ディープラーニングは、複雑な機械学習アルゴリズムであり、音声及び画像認識の面で取得された効果は、従来の関連技術を遥かに上回る。
なお、関連技術において、カスタム演算子機能をサポートするディープラーニングフレームワークについては、コンパイルとインストールの実現が異なり、主にsetup.py(ファイルの記述)に基づく方式、及びJIT(Just-In-Time、ジャストインタイムコンパイル)に基づくフロントエンドロード(load)インタフェースの方式という2つの方式を含む。
ここで、setup.pyに基づく方式についは、Pytorchフレームワークを例として、フロントエンド言語であるpythonのsetuptoolsライブラリを利用して、ユーザがインストール(install)コマンドを実行して、カスタム演算子ライブラリをコンパイルにより生成してpythonライブラリにインストールすることをサポートすることにより、ユーザがインポート(import)して使用することをサポートする。
しかしながら、この場合、カスタム演算子は、Pybind11モジュールに依存する必要があり、ユーザは事前にインストールし、カスタム演算子を明示的にPybind11によってバインドする必要があり、そうしないと、フロントエンドに公開して使用することはできない。
ここで、JITに基づくフロントエンドloadインタフェースの方式は、インタフェースの最下層が、CMake、Ninjaなどのサードパーティツールに依存するため、ユーザが事前に配置する必要がある。
したがって、本出願は、Pybind11及びその他のサードパーティのモジュールに依存しなくなり、setuptoolsを高度にカプセル化し、コンパイル、リンク、インストールのすべてのプロセスを完全に隠することができるディープラーニングフレームワークにおける演算子の展開方法を提案し、ユーザは、依存するフレームワークの基礎となるリンクライブラリ、コンパイルオプジョンなどの概念知識を一切に理解する必要がない。さらに、コード注入の原理を利用して、pythonライブラリインストールファイルの生成方式の柔軟なカスタムズをサポートすることができ、これにより、ユーザの学習コストを大幅に削減するとともに、ディープラーニングフレームワークにおける演算子の展開プロセスの効率、柔軟性及び信頼性を向上させることができる。
以下に、図面を参照して本出願の実施例のディープラーニングフレームワークにおける演算子の展開方法、展開装置及び電子機器を説明する。
図1は、本出願の第1の実施例に係るディープラーニングフレームワークにおける演算子の展開方法の概略フローチャートである。なお、本実施例のディープラーニングフレームワークにおける演算子の展開方法の実行主体がディープラーニングフレームワークにおける演算子の展開装置であり、ディープラーニングフレームワークにおける演算子の展開装置は、具体的には、ハードウェアデバイスであってもよいし、ハードウェアデバイス内のソフトウェアなどであってもよい。ここで、ハードウェアデバイスは、端末デバイス、サーバなどである。図1に示すように、本実施例に係るディープラーニングフレームワークにおける演算子の展開方法は、以下のステップS101~ステップS105を含む。
S101において、演算子のソースファイルを取得する。
なお、現在、主流となっているディープラーニングフレームワークには、演算子と総称される豊富なテンソル計算処理ユニット、例えば、ビジョン分野の畳み込みConv2D演算子、自然言語処理分野のLSTM(Long Short-Term Memory、長・短期記憶人工ニューラルネットワーク)演算子、及び基本の関数活性化ReLU(Rectified Linear Unit、正規化線形関数)演算子などが含まれている。
ここで、演算子のソースファイルは、ユーザがコンパイルしようとするカスタム演算子(Operator、OPと略称する)に対応するCPP/C++言語(The C++ Programming Language/c plus plus)、又はCUDA(Compute Unified Device Architecture、コンピューティングユニファイドデバイスアーキテクチャ)ソースコードファイルであってもよい。
なお、CPPファイルは、一般的に、.cc又は.cppで終わり、GPU(Graphics Processing Unit、グラフィックプロセッミングユニット)デバイスをサポートするには、.cuで終わるCUDAソースコードファイルが必要である。
S102において、演算子のソースファイルをコンパイルして演算子の動的リンクライブラリを形成する。
なお、ディープラーニングフレームワークは、一般的にフロンドエンドシステム(Python)及びバックエンドシステム(C++)を含む必要がある。ユーザのカスタム演算子によって記述されるのがバックエンドC++コードである。この場合、フロントエンドPythonによって呼び出せるようにするには、特定の形式のファイルにコンパイルされる必要があり、これにより、Pythonフロントエンドシステムでメモリにロッドされ、C++バックエンドシステムによって実現された演算子計算論理関数(例えば、畳み込みConv)が呼び出される。
例えば、Linux(登録商標)(フルネームGNU/Linux)システムでのgcc/g++/nvccコマンドなどの、ユーザのローカルネイティブコンパイルコマンド(すなわち、演算子のソースファイル)が呼び出された後、演算子の動的リンクライブラリをコンパイルにより生成することができる。
本出願の実施例では、処理対象がC++又はCUDAソースコードファイルであり、前処理(Pre-processing)、コンパイル、アセンブリ及びリンク(Linking)によって、演算子のソースファイルをコンパイルして、演算子の動的リンクライブラリを形成することができる。
S103において、演算子の動的リンクライブラリのインタフェースファイルを生成する。
なお、関連技術において、ディープラーニングフレームワークのすべては、フロントエンドシステム及びバックエンドシステムを含む。ここで、バックエンドシステムは、C++言語によって実現されることが多く、演算子の具体的な論理演算が多数含まれており、例えば、畳み込み操作Convの実際のデータ演算操作は、、C++によって実現される。この場合、演算効率が高く、実行性が優れるという利点がある。フロントエンドシステムは、Python言語によって実現されることが多く、カプセル化が簡単なAPI(Application Programming Interface、アプリケーションプログラミングインタフェース)インタフェースによってバックエンド演算子Kernelへの呼び出しが実現される。この場合、実現コストが低く、ユーザ体験が優れるという利点がある。
本出願の実施例において、ユーザがバックエンドシステムに対して記述したカスタム演算子に対応するC++言語の演算関連コードのみに基づいて、フロントエンドシステムのAPIインタフェース、すなわち、演算子の動的リンクのインタフェースファイルを自動的に生成することができる。
S104において、動的リンクライブラリ及びインタフェースファイルに基づいて、インストール可能なライブラリファイルを生成する。
ここで、インストール可能なライブラリファイルは、ファイルの終わりが.eggのファイルであってもよい。ファイルの終わりが.eggのファイルは、Pythonプログラミング言語の、サードパーティのインストール可能なライブラリを管理するためのファイル形式である。
本出願の実施例において、予め設定されたパッケージ戦略に従って動的リンクライブラリ及びインタフェースファイルをパッケージ化して、インストール可能なライブラリファイルを生成する。
S105において、インストール可能なライブラリファイルをターゲットプログラミング言語ライブラリにインストールする。
なお、インストール可能なライブラリファイルをターゲットプログラミング言語ライブラリにインストールすると、ユーザカスタム演算子をターゲットプログラミング言語ライブラリにインストールすることを実現することができ、これにより、ユーザの後続の呼び出しをサポートすることができる。
本出願の実施例において、インストール可能なライブラリファイルをターゲットプログラミング言語ライブラリにおけるターゲットディレクトリにインストールすることができる。
本出願の実施例のディープラーニングフレームワークにおける演算子の展開方法によれば、演算子のソースファイルを取得し、演算子のソースファイルをコンパイルして演算子の動的リンクライブラリを形成し、演算子の動的リンクライブラリのインタフェースファイルを生成し、動的リンクライブラリ及びインタフェースファイルに基づいて、インストール可能なライブラリファイルを生成し、インストール可能なライブラリファイルをターゲットプログラミング言語ライブラリにインストールする。これにより、ディープラーニングフレームワークにおける演算子の展開を実現し、サードパーティモジュールに依存しなくなり、演算子インストールのすべてのプロセスを完全に隠すことができ、ユーザの学習コストを大幅に削減するとともに、ディープラーニングフレームワークにおける演算子の展開プロセスの効率、柔軟性及び信頼性を向上させることができる。
なお、本出願において、演算子のソースファイルをコンパイルして演算子の動的リンクライブラリを形成する場合、前処理、コンパイル、アセンブリ及びリンクによって演算子のソースファイルをコンパイルすることができる。
図2は、本出願の第2の実施例に係るディープラーニングフレームワークにおける演算子の展開方法の概略フローチャートである。図2に示すように、前の実施例のもとに、本実施例に係るディープラーニングフレームワークにおける演算子の展開方法は、以下のステップS201~ステップ207を含む。
S201において、演算子のソースファイルを取得する。
当該ステップS201は、前の実施例におけるステップS101と同様のものであり、ここでは詳しく説明しない。
前の実施例におけるステップS102は、具体的には、S202~S204を含むことができる。
S202において、演算子のソースファイルに対してヘッダファイル拡張及びマクロ置換を行って、コンパイル対象コードを生成する。
本出願の実施例において、前処理操作によってコンパイル対象コードを生成することができる。
選択可能に、プリプロセッサによって、ソースファイル内の「#」で始まるコード行に対して、ヘッダファイル拡張及びマクロ置換を行って、コンパイル対象コードを生成することができる。
ここで、パラメータをテキストに置き換えることが許可されており、このような実現は、一般的に定義マクロ又はマクロ置換と呼ばれ、マクロと略称される。
S203において、コンパイル対象コードをアセンブリコードにコンパイルし、アセンブリコードを1行ずつバイトコードに変換して、オブジェクトファイルを生成する。
本出願の実施例において、前処理によって生成されたコンパイル対象コードをコンパイル及びアセンブリして、オブジェクトファイル(Object File)を生成することができる。ここで、オブジェクトファイルは、実行可能なファイル又はライブラリファイル(例えば、静的ライブラリ又は動的ライブラリ)であってもよい。
選択可能に、コンパイル段階において、コンパイル対象コードを基礎となるアセンブリコードにコンパイルすることができる。
さらに、アセンブリ段階において、アセンブラによってアセンブリコードを1行ずつバイトコード(マシンコード)に変換して、オブジェクトファイルを生成することができる。
S204において、オブジェクトファイルに対してリンク操作を行って、リンクされたオブジェクトファイルを取得し、リンクされたオブジェクトファイルに基づいて動的リンクライブラリを生成する。
本出願の実施例において、オブジェクトファイルをリンクすることによって動的リンクライブラリを生成することができる。
選択可能に、前記ステップで生成されたオブジェクトファイルをまとめてリンクして、実行可能なファイル又はライブラリファイル(例えば、静的ライブラリ又は動的ライブラリ)を生成することができる。
なお、このステップにおいて、未定義の識別子への参照は、すべて対応する正しいアドレスに置き換えられる。
S205において、演算子の動的リンクライブラリのインタフェースファイルを生成する。
当該ステップS205は、前の実施例におけるステップS103と同様なものであり、ここでは詳しく説明しない。
S206において、動的リンクライブラリ及びインタフェースファイルに基づいて、インストール可能なライブラリファイルを生成する。
選択可能に、予め設定されたパッケージ戦略に従って動的リンクライブラリ及びインタフェースファイルをパッケージ化して、インストール可能なライブラリファイルを生成することができる。
例えば、動的リンクライブラリファイル及びPython APIを、フロントエンドでインストール可能なpythonライブラリファイルにパッケージ化することができる。選択可能に、setuptoolsなどのpython言語のネイティブライブラリを、install、build、extracting(インストール、構築、抽出)などのプロセスによってパッケージ化することができる。ここで、前記プロセスは、いずれもいくつかの処理関数からなる。
S207において、インストール可能なライブラリファイルをターゲットプログラミング言語ライブラリにインストールする。
当該ステップS207は、前の実施例におけるステップS105と同様のものであり、ここでは詳しく説明しない。
本出願の実施例のディープラーニングフレームワークにおける演算子の展開方法によれば、演算子のソースファイルを前処理、コンパイル、アセンブリ及びリンクによってコンパイルすることができ、これにより、すべての操作がユーザから完全に隠され、ユーザの学習、使用コストが大幅に削減さえ、使い易さが向上する。さらに、サードパーティのコンパイルツール及びモジュールに依存しなくなり、より強いデカップリング性を持つようになる。
なお、本出願において、インストール可能なライブラリファイルをターゲットプログラミング言語ライブラリにインストールしようとする場合、インストール可能なライブラリファイルをターゲットプログラミング言語ライブラリにおけるターゲットディレクトリにインストールすることができる。
サイトパッケージ(site-package)を例として、ファイルの終わりが.egg形式のインストール可能なライブラリファイルは、pythonの標準のインストールプロトコルファイル形式であり、site-packageへのインストールに用いられてもよい。
ここで、Python言語には、パッケージ化されたサードパーティライブラリが多数含まれており、各ライブラリには、呼び出し用のAPIが多数含まれている。これらのサードパーティライブラリは、いずれもPythonインストールパスにおけるsite-packageディレクトリに配置されている。つまり、site-packageディレクトリは、複数のサードパーティライブラリを含む「倉庫」であり、Pythonのインストールされたすべてのライブラリを管理することに用いることができる。
さらに、インストール可能なライブラリファイルをターゲットプログラミング言語ライブラリにインストールした後、ユーザのカスタム演算子をインポートして使用することができる。
図3は、本出願の第3の実施例に係るディープラーニングフレームワークにおける演算子の展開方法の概略フローチャートである。図3に示すように、前の実施例のもとに、本実施例に係るディープラーニングフレームワークにおける演算子の展開方法は、以下のステップS301~ステップS303を含む。
S301において、ターゲット演算子のインポートステートメントを取得し、インポートステートメントには、ターゲット演算子のインストール可能なライブラリファイルが所在するプログラミング言語ライブラリに対応する情報が含まれている。
なお、pythonのインポートは、「import」というキーワードによって実現される。例えば、Aが予めインストールされたサードパーティライブラリである場合、ユーザが記述した「import A」というインポートステートメントを取得することができる。
本出願の実施例において、インストール可能なライブラリファイルがターゲットプログラミング言語ライブラリにインストールされた後、ユーザのカスタム演算子は、ユーザが記述したimportインポートステートメントによってインポートして使用することができる。
S302において、インポートステートメントを解析して、ターゲット演算子のインストール可能なライブラリファイルが所在するターゲットサブディレクトリを決定する。
例えば、import Aというインポートステートメントを解析する場合、ターゲット演算子のインストール可能なライブラリファイルが所在するターゲットサブディレクトリがsite-packageディレクトリにおけるsite-package/Aというサブディレクトリであると決定することができる。
S303において、ターゲットサブディレクトリからターゲット演算子のインストール可能なライブラリファイルを読み取ってインポートする。
選択可能に、importを実行してインポートする際、後続の使用に備えるように、ターゲットサブディレクトリから、ターゲット演算子に関連するインストール可能なライブラリファイルを読み取ってインポートすることができる。
なお、本出願において、インストール可能なライブラリファイルをインストールすることにより、Aと同様のサブディレクトリを自動的に生成することができる。
例えば、A.eggがインストールされている場合、A.eggを自動的に解凍して対応するサブディレクトリ、すなわち、site-package/Aのサブディレクトリにコピーすることができる。
本出願の実施例のディープラーニングフレームワークにおける演算子の展開方法によれば、ターゲット演算子のインポートを取得し、インポートステートメントを解析し、ターゲット演算子のインストール可能なライブラリファイルが所在するターゲットサブディレクトリを決定し、ターゲットサブディレクトリからターゲット演算子のインストール可能なライブラリファイルを読み取ってインポートすることができ、これにより、一致性及び使い易さがより優れる。
さらに、本出願において、フレームワークに関するインタフェースファイルをコード注入によってエントリファイルに注入することにより、動的リンクライブラリのロッドプロセス及びインタフェースファイルの呼び出し方式をカスタマイズすることができる。
図4は、本出願の第4の実施例に係るディープラーニングフレームワークにおける演算子の展開方法の概略フローチャートである。図4に示すように、前の実施例のもとに、本実施例に係るディープラーニングフレームワークにおける演算子の展開方法は、以下のステップS401~ステップS403を含む。
S401において、動的リンクライブラリに対応する注入対象関数コードを取得する。
ここで、注入対象関数コードは、ユーザによって入力されたいずれかの関数コードであってもよい。
S402において、注入対象関数コードをエントリファイルに注入して、動的リンクライブラリのターゲット呼び出し関数コードを生成する。
可能な一実現形態として、図5に示すように、前の実施例に基づいて、注入対象関数コードをエントリファイルに注入して、動的リンクライブラリのターゲット呼び出し関数コードを生成する上記ステップS402は、以下のステップS501とステップS502とを含む。
S501において、エントリファイルから動的リンクライブラリのデフォルト呼び出し関数コードを取得する。
図6に示すように、デフォルト呼び出し関数6-1が__bootstrap__であることを例とし、__bootstrap__は、pythonフロントエンドがカスタム演算子ライブラリをimportする際に動的リンクライブラリをロッドするデフォルト呼び出し関数である。当該デフォルト呼び出し関数は、Pythonに組み込まれた論理である。
なお、デフォルト呼び出し関数コードは、1つのapi.pyに配置されてもよい。例えば、ユーザがconv.pyに対してimport convステートメントを実行する場合、conv.pyの__bootstrap__関数を呼び出すことになる。
S502において、デフォルト呼び出し関数コードを注入対象関数コードに置き換えて、動的リンクライブラリのターゲット呼び出し関数コードを生成する。
本出願の実施例において、Pythonに組み込まれたデフォルト呼び出し関数を動的に置き換え、その関数コードを、ユーザが実際の必要に応じて注入しようとする関数コードに変更することができる。
例えば、Pythonに組み込まれた__bootstrap__関数を動的に置き換え、その関数コードを注入対象関数コードに変更することができる。
S403において、ターゲット呼び出し関数コードをインタフェースファイルに書き込む。
例えば、変更された__bootstrap__関数コードをconv.pyなどの特定のインタフェースapi.pyに書き込んで、1つの完全なコード注入プロセスを実現することができる。
本出願の実施例のディープラーニングフレームワークにおける演算子の展開方法によれば、動的リンクライブラリに対応する注入対象関数コードを取得し、注入対象関数コードをエントリファイルに注入して、動的リンクライブラリのターゲット呼び出し関数コードを生成し、ターゲット呼び出し関数コードをインタフェースファイルに書き込むことにより、フレームワークに関するインタフェースファイルをコード注入によってエントリファイルに注入し、動的リンクライブラリのロッドプロセス及びインタフェースファイルの呼び出し方式をカスタマイズすることができる。コード注入によって、ネイティブ動的ライブラリのロッド及びAPIの呼び出し方式を置き換え、ディープラーニングフレームワークと組み合わせてpythonのインストール可能なライブラリの生成をカスタマイズすることを実現するために、新しい技術的アイデアを提供する。
上記いくつかの実施例によって提供されたディープラーニングフレームワークにおける演算子の展開方法に対応し、本出願の1つの実施例は、ディープラーニングフレームワークにおける演算子の展開装置をさらに提供する。本出願の実施例によって提供されるディープラーニングフレームワークにおける演算子の展開装置は、上記いくつかの実施例によって提供されるディープラーニングフレームワークにおける演算子の展開方法に対応するため、ディープラーニングフレームワークにおける演算子の展開方法の実施形態は、本実施例によって提供されるディープラーニングフレームワークにおける演算子の展開装置にも適用可能であり、本実施例では詳しく説明しない。
図7は、本出願の実施例に係るディープラーニングフレームワークにおける演算子の展開装置の概略構成図である。
図7に示すように、当該ディープラーニングフレームワークにおける演算子の展開装置700は、第1の取得モジュール710、形成モジュール720、第1の生成モジュール730、第2の生成モジュール740、及びインストールモジュール750を含む。ここで、第1の取得モジュール710は、演算子のソースファイルを取得するように構成される。
形成モジュール720は、前記演算子のソースファイルをコンパイルして前記演算子の動的リンクライブラリを形成するように構成される。
第1の生成モジュール730は、前記演算子の動的リンクライブラリのインタフェースファイルを生成するように構成される。
第2の生成モジュール740は、前記動的リンクライブラリ及び前記インタフェースファイルに基づいて、インストール可能なライブラリファイルを生成するように構成される。
インストールモジュール750は、前記インストール可能なライブラリファイルを、ターゲットプログラミング言語ライブラリにインストールするように構成される。
図8に示すように、当該ディープラーニングフレームワークにおける演算子の展開装置800は、第1の取得モジュール810、形成モジュール820、第1の生成モジュール830、第2の生成モジュール840、及びインストールモジュールを含む。ここで、形成モジュール820は、前記演算子のソースファイルに対してヘッダファイル拡張及びマクロ置換を行って、コンパイル対象コードを生成するように構成される第1の生成サブモジュール821と、前記コンパイル対象コードをアセンブリコードにコンパイルし、前記アセンブリコードを1行ずつバイトコードに変換して、オブジェクトファイルを生成するように構成される第2の生成サブモジュール822と、前記オブジェクトファイルに対してリンク操作を行って、リンクされたオブジェクトファイルを取得し、前記リンクされたオブジェクトファイルに基づいて前記動的リンクライブラリを生成するように構成される第3の生成サブモジュール823と、を含む。
ここで、第2の生成モジュール840は、予め設定されたパッケージ戦略に従って前記動的リンクライブラリ及び前記インタフェースファイルをパッケージ化して、前記インストール可能なライブラリファイルを生成するように構成される第4の生成サブモジュール841を含む。
ここで、インストールモジュール850は、前記インストール可能なライブラリファイルを、前記ターゲットプログラミング言語ライブラリ内のターゲットディレクトリにインストールするように構成される第1のインストールサブモジュール851を含む。
ここで、ディープラーニングフレームワークにおける演算子の展開装置800は、ターゲット演算子のインポートステートメントを取得するように構成される第2の取得モジュール860であって、前記インポートステートメントには、前記ターゲット演算子のインストール可能なライブラリファイルが所在するプログラミング言語ライブラリに対応する情報が含まれている第2の取得モジュール860と、前記インポートステートメントを解析して、前記ターゲット演算子のインストール可能なライブラリファイルが所在するターゲットサブディレクトリを決定するように構成される決定モジュール870と、前記ターゲットサブディレクトリから前記ターゲット演算子のインストール可能なライブラリファイルを読み取ってインポートするように構成されるインポートモジュール880と、前記動的リンクライブラリに対応する注入対象関数コードを取得するように構成される第3の取得モジュール890と、前記注入対象関数コードをエントリファイルに注入して、前記動的リンクライブラリのターゲット呼び出し関数コードを生成するように構成される注入モジュール8100と、前記ターゲット呼び出し関数コードを前記インタフェースファイルに書き込むように構成される書き込みモジュール8110と、をさらに含む。
ここで、書き込みモジュール8110は、前記エントリファイルから前記動的リンクライブラリのデフォルト呼び出し関数コードを取得するように構成される第1の取得サブモジュール8111と、前記デフォルト呼び出し関数コードを前記注入対象関数コードに置き換えて、前記動的リンクライブラリのターゲット呼び出し関数コードを生成するように構成される第5の生成サブモジュール8112と、を含む。
本出願の実施例に係るディープラーニングフレームワークにおける演算子の展開装置によれば、演算子のソースファイルを取得し、演算子のソースファイルをコンパイルして演算子の動的リンクライブラリを形成し、演算子の動的リンクライブラリのインタフェースファイルを生成し、動的リンクライブラリ及びインタフェースファイルに基づいて、インストール可能なライブラリファイルを生成し、インストール可能なライブラリファイルをターゲットプログラミング言語ライブラリにインストールする。これにより、ディープラーニングフレームワークにおける演算子の展開を実現し、サードパーティモジュールに依存しなくなり、演算子インストールのすべてのプロセスを完全に隠すことができ、ユーザの学習コストを大幅に削減するとともに、ディープラーニングフレームワークにおける演算子の展開プロセスの効率、柔軟性及び信頼性を向上させることができる。
本開示の実施例によれば、本開示は、電子機器、読み取り可能な記憶媒体及びコンピュータプログラム製品をさらに提供する。
図9には、本開示の実施例を実現するための例示的な電子機器900の概略ブロック図が示されている。電子機器は、ラップトップコンピュータ、デスクトップコンピュータ、ワークステーション、パーソナルデジタルアシスタント、サーバ、ブレードサーバ、メインフレームコンピュータ、及び他の適切なコンピュータなどの様々な形態のデジタルコンピュータを表すことを目的とする。電子機器は、パーソナルデジタルプロセッサ、携帯電話、スマートフォン、ウェアラブルデバイス、他の同様のコンピューティングデバイスなどの様々な形態のモバイルデバイスを表すこともできる。本明細書で示されるコンポーネント、それらの接続と関係、及びそれらの機能は単なる例であり、本明細書の説明及び/又は要求される本出願の実現を制限するものではない。
図9に示すように、機器900は、リードオンリーメモリ(ROM)902に記憶されているコンピュータプログラム、又は記憶ユニット908からランダムアクセスメモリ(RAM)903にロッドされたコンピュータプログラムに基づいて、様々な適切な操作及び処理を実行することができる計算ユニット901を含む。RAM903には、機器900の操作に必要な様々なプログラム及びデータが記憶されていてもよい。計算ユニット901、ROM902及びRAM903は、バス904を介して互いに接続されている。入出力(I/O)インタフェース905もバス904に接続されている。
機器900における、キーボード、マウスなどの入力ユニット906と、様々なタイプのディスプレイ、スピーカなどの出力ユニット907と、磁気ディスク、光ディスクなどの記憶ユニット908と、ネットワークカード、モデム、無線通信トランシーバなどの通信ユニット909と、を含む複数のコンポーネントは、入出力(I/O)インタフェース905に接続されている。通信ユニット909は、機器900がインタネットなどのコンピュータネットワーク及び/又は様々な電気通信ネットワークを介して他のデバイスと情報/データを交換することを可能にする。
計算ユニット901は、各種の処理及び計算能力を有する汎用及び/又は専用処理コンポーネントであってもよい。計算ユニット901のいくつかの例は、セントラルプロセッシングユニット(CPU)、グラフィックスプロセッシングユニット(GPU)、各種の専用人工知能(AI)計算チップ、各種の機械学習モデルアルゴリズムを運行する計算ユニット、デジタルシグナルプロセッサ(DSP)、及びいずれかの適宜なプロセッサ、コントローラ、マイクロコントローラなどを含むが、これらに限定されない。計算ユニット901は、上述したそれぞれの方法及び処理、例えば、ディープラーニングフレームワークにおける演算子の展開方法を実行する。例えば、いくつかの実施例で、ディープラーニングフレームワークにおける演算子の展開方法は、記憶ユニット908のような機械読み取り可能な媒体に具体的に含まれるコンピュータソフトウェアプログラムとして実現されてもよい。いくつかの実施例で、コンピュータの一部又は全部は、ROM902及び/又は通信ユニット909を介して機器900にロッド及び/又はインストールすることができる。コンピュータプログラムがRAM903にロッドされて計算ユニット901によって実行された場合、上述したディープラーニングフレームワークにおける演算子の展開方法の1つ又は複数のステップを実行することができる。あるいは、他の実施例で、計算ユニット901は、他の任意の適切な形態で(例えば、ファーとウェアにより)ディープラーニングフレームワークにおける演算子の展開方法を実行するように構成されてもよい。
本明細書で上述したシステム及び技術の各種の実施方式は、デジタル電子回路システム、集積回路システム、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、特定用途向け標準製品(ASSP)、システムオンチップ(SOC)、コンプレックス・プログラマブル・ロジック・デバイス(CPLD)、コンピュータハードウェア、ファームウェア、ソフトウェア及び/又はそれらの組合せにおいて実現してもよい。これらの各種の実施方式は、少なくとも1つのプログラマブルプロセッサを含むプログラマブルシステムにおいて実行及び/又は解釈することができる1つ又は複数のコンピュータプログラムにおいて実現されてもよく、当該プログラマブルプロセッサは、専用及び/又は汎用プログラマブルプロセッサであってもよく、記憶システム、少なくとも1つの入力装置、及び少なくとも1つの出力装置からデータ及び命令を受信し、当該記憶システム、当該少なくとも1つの入力装置、及び当該少なくとも1つの出力装置にデータ及び命令を伝送することができる。
本開示の方法を実施するためのプログラムコードは、1つ又は複数のプログラミング言語の任意の組み合わせで書くことができる。これらのプログラムコードは、プロセッサ又はコントローラによって実行された際に、フローチャート及び/又はブロック図に規定された機能/操作が実施されるように、汎用コンピュータ、専用コンピュータ、又は他のプログラマブルデータ処理装置のプロセッサ又はコントローラに提供されてもよい。プログラムコードは、完全に機械上で実行され、部分的に機械上で実行され、スタンドアロンパッケージとして、部分的に機械上で実行され、かつ部分的にリモート機械上で実行され、又は完全にリモート機械又はサーバ上で実行されてもよい。
本開示の文脈では、機械読み取り可能な媒体は、命令実行システム、装置、又はデバイスによって使用されるために、又は命令実行システム、装置、又はデバイスと組み合わせて使用するためのプログラムを含むか、又は格納することができる有形の媒体であってもよい。機械読み取り可能な媒体は、機械読み取り可能な信号媒体又は機械読み取り可能な記憶媒体であってもよい。機械読み取り可能な媒体は、電子的、磁気的、光学的、電磁気的、赤外線的、又は半導体システム、装置又はデバイス、又はこれらの任意の適切な組み合わせを含むことができるが、これらに限定されない。機械読み取り可能な記憶媒体のより具体的な例は、1つ又は複数のラインに基づく電気的接続、ポータブルコンピュータディスク、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、消去可能プログラマブルリードオンリーメモリ(EPROM)又はフラッシュメモリ、光ファイバ、ポータブルコンパクトディスクリードオンリーメモリ(CD-ROM)、光学記憶装置、磁気記憶装置、又はこれらの任意の適切な組み合わせを含む。
ユーザとのインタラクションを提供するために、コンピュータ上でここで説明されているシステム及び技術を実施することができ、当該コンピュータは、ユーザに情報を表示するためのディスプレイ装置(例えば、CRT(陰極線管)又はLCD(液晶ディスプレイ)モニタ)と、キーボード及びポインティングデバイス(例えば、マウス又はトラックボール)とを有し、ユーザは、当該キーボード及び当該ポインティングデバイスによって入力をコンピュータに提供することができる。他の種類の装置も、ユーザとのインタラクションを提供することができ、例えば、ユーザに提供されるフィードバックは、任意の形式のセンシングフィードバック(例えば、視覚フィードバック、聴覚フィードバック、又は触覚フィードバック)であってもよく、任意の形式(音響入力と、音声入力と、触覚入力とを含む)でユーザからの入力を受信することができる。
ここで説明されるシステム及び技術は、バックエンドユニットを含むコンピューティングシステム(例えば、データサーバとする)、又はミドルウェアユニットを含むコンピューティングシステム(例えば、アプリケーションサーバ)、又はフロントエンドユニットを含むコンピューティングシステム(例えば、グラフィカルユーザインタフェース又はウェブブラウザを有するユーザコンピュータであり、ユーザは、当該グラフィカルユーザインタフェース又は当該ウェブブラウザによってここで説明されるシステム及び技術の実施方式とインタラクションする)、又はこのようなバックエンドユニットと、ミドルウェアユニットと、フロントエンドユニットの任意の組み合わせを含むコンピューティングシステムで実施することができる。任意の形式又は媒体のデジタルデータ通信(例えば、通信ネットワーク)によってシステムのコンポーネントを相互に接続することができる。通信ネットワークの例は、ローカルエリアネットワーク(LAN)と、ワイドエリアネットワーク(WAN)と、インターネットと、ブロックチェーンネットワークとを含む。
コンピュータシステムは、クライアントとサーバとを含むことができる。クライアントとサーバは、一般に、互いに離れており、通常に通信ネットワークを介してインタラクションする。対応するコンピュータ上で実行され、且つ互いにクライアント-サーバ関係を有するコンピュータプログラムによって、クライアントとサーバとの関係が生成される。サーバは、クラウドコンピューティングサーバ又はクラウドホストとも呼ばれるクラウドサーバであってもよく、従来の物理ホスト及びVPSサービス(「Virtual Private Server」、又は「VPS」と略称する)における、管理難度が大きく、ビジネスの拡張性が低いという欠点を解決するクラウドコンピューティングサービスシステムのホスト製品の1つである。サーバは、分散型システムのサーバ、又はブロックチェンを組み合わせたサーバであってもよい。
上記に示された様々な形式のフローを使用して、ステップを並べ替え、追加、又は削除することができる。例えば、本開示に記載されている各ステップは、並列に実行されてもよいし、順次的に実行されてもよいし、異なる順序で実行されてもよいが、本開示で開示されている技術案が所望の結果を実現することができれば、本明細書では限定しない。
上記の具体的な実施形態は、本開示の保護範囲を制限するものではない。当業者は、設計要件と他の要因に応じて、様々な修正、組み合わせ、サブコンビネーション、及び代替を行うことができる。本開示の精神と原則内で行われる任意の修正、同等の置換、及び改善などは、いずれも本開示の保護範囲内に含まれるべきである。

Claims (18)

  1. ディープラーニングフレームワークにおける演算子の展開方法であって、
    演算子のソースファイルを取得するステップと、
    前記演算子のソースファイルをコンパイルして前記演算子の動的リンクライブラリを形成するステップと、
    前記演算子の動的リンクライブラリのインタフェースファイルを生成するステップと、
    前記動的リンクライブラリ及び前記インタフェースファイルに基づいて、インストール可能なライブラリファイルを生成するステップと、
    前記インストール可能なライブラリファイルをターゲットプログラミング言語ライブラリにインストールするステップと、を含む、ディープラーニングフレームワークにおける演算子の展開方法。
  2. 前記演算子のソースファイルをコンパイルして前記演算子の動的リンクライブラリを形成するステップは、
    前記演算子のソースファイルに対してヘッダファイル拡張及びマクロ置換を行って、コンパイル対象コードを生成するステップと、
    前記コンパイル対象コードをアセンブリコードにコンパイルし、前記アセンブリコードを1行ずつバイトコードに変換して、オブジェクトファイルを生成するステップと、
    前記オブジェクトファイルに対してリンク操作を行って、リンクされたオブジェクトファイルを取得し、前記リンクされたオブジェクトファイルに基づいて前記動的リンクライブラリを生成するステップと、を含む、請求項1に記載のディープラーニングフレームワークにおける演算子の展開方法。
  3. 前記動的リンクライブラリ及び前記インタフェースファイルに基づいて、インストール可能なライブラリファイルを生成するステップは、
    予め設定されたパッケージ戦略に従って前記動的リンクライブラリ及び前記インタフェースファイルをパッケージ化して、前記インストール可能なライブラリファイルを生成するステップを含む、請求項1に記載のディープラーニングフレームワークにおける演算子の展開方法。
  4. 前記インストール可能なライブラリファイルをターゲットプログラミング言語ライブラリにインストールするステップは、
    前記インストール可能なライブラリファイルを、前記ターゲットプログラミング言語ライブラリ内のターゲットディレクトリにインストールするステップを含む、請求項1に記載のディープラーニングフレームワークにおける演算子の展開方法。
  5. ターゲット演算子のインポートステートメントを取得するステップであって、前記インポートステートメントには、前記ターゲット演算子のインストール可能なライブラリファイルが所在するプログラミング言語ライブラリに対応する情報が含まれているステップと、
    前記インポートステートメントを解析して、前記ターゲット演算子のインストール可能なライブラリファイルが所在するターゲットサブディレクトリを決定するステップと、
    前記ターゲットサブディレクトリから前記ターゲット演算子のインストール可能なライブラリファイルを読み取ってインポートするステップと、をさらに含む、請求項1に記載のディープラーニングフレームワークにおける演算子の展開方法。
  6. 前記動的リンクライブラリに対応する注入対象関数コードを取得するステップと、
    前記注入対象関数コードをエントリファイルに注入して、前記動的リンクライブラリのターゲット呼び出し関数コードを生成するステップと、
    前記ターゲット呼び出し関数コードを前記インタフェースファイルに書き込むステップと、をさらに含む、請求項1に記載のディープラーニングフレームワークにおける演算子の展開方法。
  7. 前記注入対象関数コードをエントリファイルに注入して、前記動的リンクライブラリのターゲット呼び出し関数コードを生成するステップは、
    前記エントリファイルから前記動的リンクライブラリのデフォルト呼び出し関数コードを取得するステップと、
    前記デフォルト呼び出し関数コードを前記注入対象関数コードに置き換えて、前記動的リンクライブラリのターゲット呼び出し関数コードを生成するステップと、をさらに含む、請求項6に記載のディープラーニングフレームワークにおける演算子展開方法。
  8. ディープラーニングフレームワークにおける演算子の展開装置であって、
    演算子のソースファイルを取得するように構成される第1の取得モジュールと、
    前記演算子のソースファイルをコンパイルして前記演算子の動的リンクライブラリを形成するように構成される形成モジュールと、
    前記演算子の動的リンクライブラリのインタフェースファイルを生成するように構成される第1の生成モジュールと、
    前記動的リンクライブラリ及び前記インタフェースファイルに基づいて、インストール可能なライブラリファイルを生成するように構成される第2の生成モジュールと、
    前記インストール可能なライブラリファイルをターゲットプログラミング言語ライブラリにインストールするように構成されるインストールモジュールと、を含む、ディープラーニングフレームワークにおける演算子の展開装置。
  9. 前記形成モジュールは、
    前記演算子のソースファイルに対してヘッダファイル拡張及びマクロ置換を行って、コンパイル対象コードを生成するように構成される第1の生成サブモジュールと、
    前記コンパイル対象コードをアセンブリコードにコンパイルし、前記アセンブリコードを1行ずつバイトコードに変換して、オブジェクトファイルを生成するように構成される第2の生成サブモジュールと、
    前記オブジェクトファイルに対してリンク操作を行って、リンクされたオブジェクトファイルを取得し、前記リンクされたオブジェクトファイルに基づいて前記動的リンクライブラリを生成するように構成される第3の生成サブモジュールと、を含む、請求項8に記載のディープラーニングフレームワークにおける演算子の展開装置。
  10. 前記第2の生成モジュールは、
    予め設定されたパッケージ戦略に従って前記動的リンクライブラリ及び前記インタフェースファイルをパッケージ化して、前記インストール可能なライブラリファイルを生成するように構成される第4の生成サブモジュールを含む、請求項8に記載のディープラーニングフレームワークにおける演算子の展開装置。
  11. 前記インストールモジュールは、
    前記インストール可能なライブラリファイルを、前記ターゲットプログラミング言語ライブラリ内のターゲットディレクトリにインストールするように構成される第1のインストールサブモジュールを含む、請求項8に記載のディープラーニングフレームワークにおける演算子の展開装置。
  12. ターゲット演算子のインポートステートメントを取得するように構成される第2の取得モジュールであって、前記インポートステートメントには、前記ターゲット演算子のインストール可能なライブラリファイルが所在するプログラミング言語ライブラリに対応する情報が含まれている第2の取得モジュールと、
    前記インポートステートメントを解析して、前記ターゲット演算子のインストール可能なライブラリファイルが所在するターゲットサブディレクトリを決定するように構成される決定モジュールと、
    前記ターゲットサブディレクトリから、前記ターゲット演算子のインストール可能なライブラリファイルを読み取ってインポートするように構成されるインポートモジュールと、をさらに含む、請求項1に記載のディープラーニングフレームワークにおける演算子の展開装置。
  13. 前記動的リンクライブラリに対応する注入対象関数コードを取得する第3の取得モジュールと、
    前記注入対象関数コードをエントリファイルに注入して、前記動的リンクライブラリのターゲット呼び出し関数コードを生成するように構成される注入モジュールと、
    前記ターゲット呼び出し関数コードを前記インタフェースファイルに書き込むように構成される書き込みモジュールと、をさらに含む、請求項1に記載のディープラーニングフレームワークにおける演算子の展開装置。
  14. 前記書き込みモジュールは、
    前記エントリファイルから前記動的リンクライブラリのデフォルト呼び出し関数コードを取得するように構成される第1の取得サブモジュールと、
    前記デフォルト呼び出し関数コードを前記注入対象関数コードに置き換えて、前記動的リンクライブラリのターゲット呼び出し関数コードを生成するように構成される第5の生成サブモジュールと、をさらに含む、請求項13に記載のディープラーニングフレームワークにおける演算子の展開装置。
  15. 電子機器であって、
    少なくとも1つのプロセッサと、
    前記少なくとも1つのプロセッサと通信可能に接続されたメモリと、を含み、
    前記メモリには、前記少なくとも1つのプロセッサによって実行可能な命令が記憶されており、前記命令が前記少なくとも1つのプロセッサによって実行される場合、前記少なくとも1つのプロセッサが請求項1~7のいずれか一項に記載のディープラーニングフレームワークにおける演算子の展開方法を実行できる、電子機器。
  16. コンピュータに請求項1~7のいずれかに記載のディープラーニングフレームワークにおける演算子の展開方法を実行させるためのコンピュータ命令を記憶している、コンピュータ読み取り可能な記憶媒体。
  17. プロセッサによって実行される場合、請求項1~7のいずれかに記載のディープラーニングフレームワークにおける演算子の展開方法を実現するコンピュータプログラムを含む、コンピュータプログラム製品。
  18. プロセッサによって実行される場合、請求項1~7のいずれかに記載のディープラーニングフレームワークにおける演算子の展開方法を実現する、コンピュータプログラム。
JP2021212645A 2021-03-24 2021-12-27 ディープラーニングフレームワークにおける演算子の展開方法、展開装置及び電子機器 Active JP7324831B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202110315269.9 2021-03-24
CN202110315269.9A CN113010181B (zh) 2021-03-24 2021-03-24 一种深度学习框架之中算子的部署方法、装置及电子设备

Publications (2)

Publication Number Publication Date
JP2022031507A true JP2022031507A (ja) 2022-02-18
JP7324831B2 JP7324831B2 (ja) 2023-08-10

Family

ID=76406464

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021212645A Active JP7324831B2 (ja) 2021-03-24 2021-12-27 ディープラーニングフレームワークにおける演算子の展開方法、展開装置及び電子機器

Country Status (5)

Country Link
US (1) US11531529B2 (ja)
EP (1) EP3971706B1 (ja)
JP (1) JP7324831B2 (ja)
KR (1) KR20220002823A (ja)
CN (1) CN113010181B (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11157250B2 (en) * 2017-12-05 2021-10-26 Phase Change Software Llc Inductive equivalence in machine-based instruction editing
CN113591040B (zh) * 2021-06-23 2023-10-24 北京百度网讯科技有限公司 加密方法及其装置、解密方法及其装置、电子设备和介质
CN114153990A (zh) * 2021-12-07 2022-03-08 支付宝(杭州)信息技术有限公司 一种知识生产管线的构建方法、系统及装置
CN114186550B (zh) * 2021-12-10 2023-04-18 北京百度网讯科技有限公司 文本处理方法、装置、系统、设备以及存储介质
US20230236907A1 (en) * 2022-01-26 2023-07-27 Nvidia Corporation Application programming interface to cause operator to be used by compiler
KR20230115752A (ko) * 2022-01-27 2023-08-03 삼성전자주식회사 애플리케이션을 백그라운드 프로세스에서 실행하는 전자 장치 및 그 동작 방법
CN114172908B (zh) * 2022-02-10 2022-08-05 浙江大学 一种端云协同处理方法及设备
CN114841326B (zh) * 2022-05-19 2024-01-12 北京百度网讯科技有限公司 深度学习框架的算子处理方法、装置、设备和存储介质
CN115185539B (zh) * 2022-09-06 2022-12-09 西安羚控电子科技有限公司 一种生成可执行动态链接库文件方法、装置及存储介质
CN116932092B (zh) * 2023-09-18 2024-01-09 之江实验室 一种算子调用代码自动生成的方法、装置、介质及设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017500652A (ja) * 2013-12-27 2017-01-05 シマンテック コーポレーションSymantec Corporation コードをアプリケーションに注入するシステム及び方法
US9703550B1 (en) * 2009-09-29 2017-07-11 EMC IP Holding Company LLC Techniques for building code entities
CN108875959A (zh) * 2018-05-24 2018-11-23 四川斐讯信息技术有限公司 一种智能看物识名的方法和系统
US20200334572A1 (en) * 2019-04-18 2020-10-22 Cambricon Technologies Corporation Limited Data processing method and related products

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7860823B2 (en) * 2006-05-04 2010-12-28 Microsoft Corporation Generic interface for deep embedding of expression trees in programming languages
US8438312B2 (en) * 2009-10-23 2013-05-07 Moov Corporation Dynamically rehosting web content
CN102929716B (zh) * 2012-11-07 2015-04-15 北京亿赛通科技发展有限责任公司 一种启动多进程的方法
CN103019944A (zh) * 2013-01-10 2013-04-03 曙光信息产业(北京)有限公司 基于代码注入方式的测试方法和装置
US10175964B2 (en) * 2014-09-26 2019-01-08 Microsoft Technology Licensing, Llc Compiler caching for runtime routine redundancy tracking
CN105072461B (zh) * 2015-07-03 2019-03-08 北京奇虎科技有限公司 一种数据处理方法和装置
CN106126282A (zh) * 2016-06-20 2016-11-16 北京金山安全软件有限公司 一种动态链接库文件的注入方法、装置及终端设备
CN106502745B (zh) * 2016-10-26 2019-12-10 腾讯科技(深圳)有限公司 一种函数调用方法和装置
CN106598680A (zh) * 2016-12-20 2017-04-26 北京金山安全软件有限公司 一种程序修复、内容推广的方法、装置及电子设备
CN107038045B (zh) * 2017-03-30 2022-10-14 腾讯科技(深圳)有限公司 加载库文件的方法及装置
JP7003470B2 (ja) * 2017-07-18 2022-01-20 富士通株式会社 情報処理装置、情報処理方法、及びプログラム
US10114624B1 (en) * 2017-10-12 2018-10-30 Devfactory Fz-Llc Blackbox matching engine
CN111782334B (zh) * 2019-04-04 2024-02-23 北京智游网安科技有限公司 一种动态链接库文件虚拟化方法、存储介质及终端设备
CN112183735A (zh) * 2019-07-03 2021-01-05 安徽寒武纪信息科技有限公司 操作数据的生成方法、装置及相关产品
CN111176626B (zh) * 2019-08-05 2022-04-19 腾讯科技(深圳)有限公司 跨编程语言的代码调用方法及装置、介质、设备
US11093226B2 (en) * 2019-08-14 2021-08-17 Intel Corporation Methods, systems, and apparatus for a generic firmware-based kernel library mechanism
CN110673837B (zh) * 2019-08-29 2020-11-17 腾讯科技(深圳)有限公司 代码修复方法及装置、电子设备、计算机可读存储介质
US11663523B2 (en) * 2019-09-14 2023-05-30 Oracle International Corporation Machine learning (ML) infrastructure techniques
CN110908837B (zh) * 2019-11-15 2024-03-01 珠海豹趣科技有限公司 应用程序异常处理方法、装置、电子设备及存储介质
CN110989995A (zh) * 2019-11-27 2020-04-10 开放智能机器(上海)有限公司 基于开源深度学习框架的人工智能应用的处理方法及系统
CN111290778B (zh) * 2020-02-06 2024-03-01 网易(杭州)网络有限公司 Ai模型的包装方法、平台及电子设备
US20220051093A1 (en) * 2020-08-14 2022-02-17 Nvidia Corporation Techniques for training and inference using multiple processor resources
US20220092439A1 (en) * 2020-09-23 2022-03-24 EMC IP Holding Company LLC Decoupled architecture for artificial intelligence model management
US20210191696A1 (en) * 2020-12-14 2021-06-24 Intel Corporation Methods, apparatus, and articles of manufacture to identify and interpret code
CN112507102B (zh) * 2020-12-18 2022-04-29 北京百度网讯科技有限公司 基于预训练范式模型的预测部署系统、方法、装置及介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9703550B1 (en) * 2009-09-29 2017-07-11 EMC IP Holding Company LLC Techniques for building code entities
JP2017500652A (ja) * 2013-12-27 2017-01-05 シマンテック コーポレーションSymantec Corporation コードをアプリケーションに注入するシステム及び方法
CN108875959A (zh) * 2018-05-24 2018-11-23 四川斐讯信息技术有限公司 一种智能看物识名的方法和系统
US20200334572A1 (en) * 2019-04-18 2020-10-22 Cambricon Technologies Corporation Limited Data processing method and related products

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
PRADELLE, B ET AL.: ""Polyhedral Optimization of TensorFlow Computation Graphs"", LECTURE NOTES IN COMPUTER SCIENCE [ONLINE], vol. 11027, JPN6023000506, 2019, CH, pages 74 - 89, ISSN: 0004966050 *
WESTRA, E: ""Packages within packaegs"", MODULAR PROGRAMMING WITH PYTHON [ONLINE], JPN6023000508, 2016, GB, pages 49 - 50, ISSN: 0004966049 *
大城正典: ""C++入門マニュアルC++ネイティブプログラマへの道<Level 1>CからC++へ"", C MAGAZINE, vol. 第9巻, 第4号, JPN6023000511, 1997, pages 75 - 82, ISSN: 0004966046 *
岸本誠: ""テキストマクロプロセッサMacr055"", 第58回プログラミング・シンポジウム予稿集, JPN6023000510, 2017, pages 1 - 7, ISSN: 0004966047 *
石本敦夫: ""パッケージ管理の基礎を知ろう 効率的な開発のための前準備"", SOFTWAREDESIGN別冊 やってみよう!機械学習, JPN6023000509, 2019, pages 176 - 184, ISSN: 0004966048 *

Also Published As

Publication number Publication date
US20220035614A1 (en) 2022-02-03
EP3971706B1 (en) 2024-03-27
KR20220002823A (ko) 2022-01-07
CN113010181B (zh) 2022-05-27
EP3971706A2 (en) 2022-03-23
EP3971706A3 (en) 2022-04-27
JP7324831B2 (ja) 2023-08-10
CN113010181A (zh) 2021-06-22
US11531529B2 (en) 2022-12-20

Similar Documents

Publication Publication Date Title
JP2022031507A (ja) ディープラーニングフレームワークにおける演算子の展開方法、展開装置及び電子機器
EP3377968B1 (en) Dynamic update of an application in compilation and deployment
JP3041222B2 (ja) ソース・コード作成システム及び方法
JP5415557B2 (ja) デバッギングのためのユーザ・スクリプト・コードの変換
US8209674B2 (en) Tier splitting support for distributed execution environments
US8239823B2 (en) Generating libraries for reflection without project compilation
US10331425B2 (en) Automated source code adaption to inject features between platform versions
WO2016163901A1 (en) An apparatus for processing an abstract syntax tree being associated with a source code of a source program
EP2564316B1 (en) Resumable methods
CN112540767B (zh) 程序代码的生成方法、装置、电子设备及存储介质
US11029924B2 (en) Program optimization by converting code portions to directly reference internal data representations
CN109933327A (zh) 基于代码融合编译框架的OpenCL编译器设计方法和系统
US11922151B2 (en) Compiler-generated asynchronous enumerable object
CN116028028A (zh) 请求函数生成方法、装置、设备及存储介质
US9524153B1 (en) Optimized compiling of a template function
JP7344259B2 (ja) 深層学習フレームワークにおけるパターン変換方法、装置、電子デバイス、コンピューター記憶媒体およびコンピュータープログラム製品
US11537372B2 (en) Generating compilable machine code programs from dynamic language code
CN112379885B (zh) 小程序编译方法、装置、设备及可读存储介质
US11429358B2 (en) Representing asynchronous state machine in intermediate code
KR101632027B1 (ko) 주석기반의 의사코드를 이용한 프로그램 변환 방법 및 그 방법을 구현하기 위한 프로그램이 기록된 컴퓨터 판독 가능한 기록매체
CN114168151A (zh) 基于容器的程序编译方法、装置、电子设备及存储介质
Nutter et al. JRuby
JP7393404B2 (ja) コンパイル方法、コンパイル装置、電子デバイス、記憶媒体及びプログラム
CN117827209A (zh) 函数调用显示方法、装置、存储介质及计算机设备
CN118070536A (zh) 异构模型转换方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211227

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20221221

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230117

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230411

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: 20230725

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230731

R150 Certificate of patent or registration of utility model

Ref document number: 7324831

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150