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

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

▶ モレー コーポレーションの特許一覧 ▶ ソウル大学校産学協力団の特許一覧

特表2024-523400中間表現を生成する方法及びシステム
<>
  • 特表-中間表現を生成する方法及びシステム 図1
  • 特表-中間表現を生成する方法及びシステム 図2
  • 特表-中間表現を生成する方法及びシステム 図3
  • 特表-中間表現を生成する方法及びシステム 図4
  • 特表-中間表現を生成する方法及びシステム 図5
  • 特表-中間表現を生成する方法及びシステム 図6
  • 特表-中間表現を生成する方法及びシステム 図7
  • 特表-中間表現を生成する方法及びシステム 図8
  • 特表-中間表現を生成する方法及びシステム 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-06-28
(54)【発明の名称】中間表現を生成する方法及びシステム
(51)【国際特許分類】
   G06F 8/41 20180101AFI20240621BHJP
【FI】
G06F8/41 100
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023577900
(86)(22)【出願日】2022-06-15
(85)【翻訳文提出日】2023-12-14
(86)【国際出願番号】 KR2022008505
(87)【国際公開番号】W WO2022265410
(87)【国際公開日】2022-12-22
(31)【優先権主張番号】10-2021-0077963
(32)【優先日】2021-06-16
(33)【優先権主張国・地域又は機関】KR
(31)【優先権主張番号】10-2022-0072637
(32)【優先日】2022-06-15
(33)【優先権主張国・地域又は機関】KR
(81)【指定国・地域】
(71)【出願人】
【識別番号】523472179
【氏名又は名称】モレー コーポレーション
【氏名又は名称原語表記】MOREH CORP.
【住所又は居所原語表記】2F, 20 Teheran-ro 63-gil Gangnam-gu Seoul 06160 Republic of Korea
(71)【出願人】
【識別番号】509329800
【氏名又は名称】ソウル大学校産学協力団
【氏名又は名称原語表記】SEOUL NATIONAL UNIVERSITY R&DB FOUNDATION
(74)【代理人】
【識別番号】110002871
【氏名又は名称】弁理士法人坂本国際特許商標事務所
(72)【発明者】
【氏名】リー、 ジェジン
(72)【発明者】
【氏名】パク、ジュンホ
(72)【発明者】
【氏名】ジョ、ガンウォン
(72)【発明者】
【氏名】キム、ヒフン
(72)【発明者】
【氏名】キム、ジンピョ
【テーマコード(参考)】
5B081
【Fターム(参考)】
5B081CC16
(57)【要約】
【課題】少なくとも一つのプロセッサにより遂行される中間表現を生成する方法を提供する。
【解決手段】中間表現を生成する方法は、プログラムから入出力のためのデータに関する情報及び演算に関する情報を抽出するステップと、抽出されたデータに関する情報及び抽出された演算に関する情報を用いて、in-place演算が存在するか否かを判定するステップと、in-place演算が存在する場合、抽出されたデータに関する情報、抽出された演算に関する情報及びin-place演算と関連付けた生成規則を用いて、中間表現を生成するステップと、を含み、in-place演算の入力データは、in-place演算後の出力データに書き換えるデータを含む。
【選択図】図1
【特許請求の範囲】
【請求項1】
少なくとも一つのプロセッサにより遂行される、in-place演算を含むプログラムに対する中間表現を生成する方法において、
前記プログラムから入出力のためのデータに関する情報及び演算に関する情報を抽出するステップと、
前記抽出されたデータに関する情報及び前記抽出された演算に関する情報を用いて、in-place演算が存在するか否かを判定するステップと、
前記in-place演算が存在する場合、前記抽出されたデータに関する情報、前記抽出された演算に関する情報及び前記in-place演算と関連付けた生成規則を用いて、中間表現を生成するステップと、を含み、
前記in-place演算の入力データは、in-place演算後の出力データに書き換えるデータである、中間表現を生成する方法。
【請求項2】
前記抽出された入出力のためのデータと、前記中間表現に含まれたデータ間の対応関係とを、データベースに保存するステップをさらに含む、請求項1に記載の中間表現を生成する方法。
【請求項3】
前記中間表現を生成するステップは、前記in-place演算の出力データに対応する、前記中間表現の演算の出力データを生成することで、前記中間表現を生成するステップを含み、
前記中間表現の演算の出力データのデータ名は、前記in-place演算の入力データのデータ名と異なる、請求項2に記載の中間表現を生成する方法。
【請求項4】
前記データベースに保存するステップは、前記in-place演算の入力データのポインタが、前記in-place演算の出力データに対応する前記中間表現の演算の出力データを示すように変更することで、前記データベースをアップデートするステップを含む、請求項3に記載の中間表現を生成する方法。
【請求項5】
前記in-place演算は、第1のin-place演算及び第1のin-place演算に後続する第2のin-place演算を含み、
前記中間表現を生成するステップは、前記第1のin-place演算の出力データ及び第2のin-place演算の出力データに対応する、前記中間表現の演算の出力データを生成することで、前記中間表現を生成するステップを含み、
前記第1のin-place演算の入力データのデータ名、前記第1のin-place演算の出力データのデータ名及び前記第2のin-place演算の出力データのデータ名が、互いに異なる、請求項2に記載の中間表現を生成する方法。
【請求項6】
前記データベースに保存するステップは、前記第1のin-place演算の入力データのポインタが、前記第2のin-place演算の出力データに対応する前記中間表現の演算の出力データを示すように変更することで、前記データベースをアップデートするステップを含む、請求項5に記載の中間表現を生成する方法。
【請求項7】
前記データベースに保存するステップは、
前記in-place演算の入力データの第1の大きさが、前記in-place演算の出力データの第2の大きさと異なる場合、前記in-place演算の入力データのポインタが、前記in-place演算の出力データに対応する前記中間表現の演算の出力データを示すように変更することで、前記データベースをアップデートするステップと、
前記in-place演算の入力データに、前記第1の大きさに復元できる演算に関する情報を関連付けて保存するステップと、を含む、請求項2に記載の中間表現を生成する方法。
【請求項8】
前記中間表現を生成するステップは、前記in-place演算の後続演算として、前記in-place演算の入力データの第1の大きさを用いる演算が存在する場合、前記in-place演算の入力データの第2の大きさを前記第1の大きさに復元できる演算を用いて、前記中間表現を生成するステップを含む、請求項7に記載の中間表現を生成する方法。
【請求項9】
前記データベースに保存するステップは、
前記in-place演算の後続演算が後続in-place演算の場合、前記in-place演算の入力データ及び前記in-place演算の出力データの各々のポインタが、前記後続in-place演算の出力データに対応する前記中間表現の演算の出力データを示すことで、前記in-place演算の出力データの第2の大きさを前記第1の大きさに変更するステップと、
前記in-place演算の出力データに、前記第2の大きさに復元できる情報を関連付けて保存するステップと、を含む、請求項8に記載の中間表現を生成する方法。
【請求項10】
請求項1に記載のin-place演算を含むプログラムに対する中間表現を生成する方法を、コンピュータで実行するための命令語を記録したコンピュータ読み取り可能な非一時的記録媒体。
【請求項11】
情報処理システムであって、
メモリと、
前記メモリと連結され、前記メモリに含まれたコンピュータ読み取り可能な少なくとも一つのプログラムを実行するように構成される少なくとも一つのプロセッサと、を含み、
前記少なくとも一つのプログラムは、
前記プログラムから入出力のためのデータに関する情報及び演算に関する情報を抽出し、
前記抽出されたデータに関する情報及び前記抽出された演算に関する情報を用いて、in-place演算が存在するか否かを判定し、
前記in-place演算が存在する場合、前記抽出されたデータに関する情報、前記抽出された演算に関する情報及び前記in-place演算と関連付けた生成規則を用いて、中間表現を生成するための命令語を含み、
前記in-place演算の入力データは、in-place演算後の出力データに書き換えるデータである、情報処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、中間表現(Intermediate Representation)を生成する方法及びシステムに関し、具体的には、in-place演算を含むプログラムに対する中間表現を生成する方法及びシステムに関する。
【背景技術】
【0002】
プログラムは、データ及びデータに対して演算を実行する命令を含むことができる。プログラムを実行する最も簡単な方法は、付与された命令を順に実行することであるが、このとき、未来に付与される演算を考慮して実行できないので、適用可能な最適化技法は制約的である。
【0003】
このような問題点を解決するために、付与された命令を順に実行する代わりに、プログラムと同等の意味を有する中間表現を構成し、中間表現に最適化技法を適用して変形した後、これを実行することができる。
【0004】
プログラムに含まれた演算の一部は、in-place演算を含むことができる。in-place演算を中間表現グラフで表現する場合、循環構造を発生させることができ、循環構造の発生によりアルゴリズムが複雑になり得るので、最適化の適用が困難であるという問題点がある。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本開示は、前記のような問題点を解決するための中間表現を生成する方法、コンピュータ読み取り可能な記録媒体及び装置(システム)を提供する。
【課題を解決するための手段】
【0006】
本開示は、方法、装置(システム)又は読み取り可能な保存媒体に保存されたコンピュータプログラムを含む多様な方式により具現化できる。
【0007】
本開示の一実施例によれば、少なくとも一つのプロセッサにより遂行される、in-place演算を含むプログラムに対する中間表現を生成する方法は、プログラムから入出力のためのデータに関する情報及び演算に関する情報を抽出するステップと、抽出されたデータに関する情報及び抽出された演算に関する情報を用いて、in-place演算が存在するか否かを判定するステップと、in-place演算が存在する場合、抽出されたデータに関する情報、抽出された演算に関する情報及びin-place演算と関連付けた生成規則を用いて、中間表現を生成するステップと、を含み、in-place演算の入力データは、in-place演算後の出力データに書き換えるデータを含む。
【0008】
本開示の一実施例によれば、抽出された入出力のためのデータと、中間表現に含まれたデータ間の対応関係とを、データベースに保存するステップをさらに含む。
【0009】
本開示の一実施例によれば、中間表現を生成するステップは、in-place演算の出力データに対応する、中間表現の演算の出力データを生成することで、中間表現を生成するステップを含み、中間表現の演算の出力データのデータ名は、in-place演算の入力データのデータ名と異なる。
【0010】
本開示の一実施例によれば、データベースに保存するステップは、in-place演算の入力データのポインタが、in-place演算の出力データに対応する中間表現の演算の出力データを示すように変更することで、データベースをアップデートするステップを含む。
【0011】
本開示の一実施例によれば、in-place演算は、第1のin-place演算及び第1のin-place演算に後続する第2のin-place演算を含み、中間表現を生成するステップは、第1のin-place演算の出力データ及び第2のin-place演算の出力データに対応する、中間表現の演算の出力データを生成することで、中間表現を生成するステップを含み、第1のin-place演算の入力データのデータ名、第1のin-place演算の出力データのデータ名及び第2のin-place演算の出力データのデータ名が、互いに異なる。
【0012】
本開示の一実施例によれば、データベースに保存するステップは、第1のin-place演算の入力データのポインタが、第2のin-place演算の出力データに対応する中間表現の演算の出力データを示すように変更することで、データベースをアップデートするステップを含む。
【0013】
本開示の一実施例によれば、データベースに保存するステップは、in-place演算の入力データの第1の大きさが、in-place演算の出力データの第2の大きさと異なる場合、in-place演算の入力データのポインタが、in-place演算の出力データに対応する中間表現の演算の出力データを示すように変更することで、データベースをアップデートするステップと、in-place演算の入力データに、第1の大きさに復元できる演算に関する情報を関連付けて保存するステップと、を含む。
【0014】
本開示の一実施例によれば、中間表現を生成するステップは、in-place演算の後続演算として、in-place演算の入力データの第1の大きさを用いる演算が存在する場合、in-place演算の入力データの第2の大きさを第1の大きさに復元できる演算を用いて、中間表現を生成するステップを含む。
【0015】
本開示の一実施例によれば、データベースに保存するステップは、in-place演算の後続演算が後続in-place演算の場合、in-place演算の入力データ及びin-place演算の出力データの各々のポインタが、後続in-place演算の出力データに対応する中間表現の演算の出力データを示すことで、in-place演算の出力データの第2の大きさを第1の大きさに変更するステップと、in-place演算の出力データに、第2の大きさに復元できる情報を関連付けて保存するステップと、を含む。
【0016】
本開示の一実施例に係るin-place演算を含むプログラムに対する中間表現を生成する方法を、コンピュータで実行するための命令語を記録したコンピュータ読み取り可能な非一時的記録媒体が提供される。
【0017】
本開示の一実施例に係る情報処理システムは、メモリと、メモリと連結され、メモリに含まれたコンピュータ読み取り可能な少なくとも一つのプログラムを実行するように構成される少なくとも一つのプロセッサと、を含み、少なくとも一つのプログラムは、プログラムから入出力のためのデータに関する情報及び演算に関する情報を抽出し、抽出されたデータに関する情報及び抽出された演算に関する情報を用いて、in-place演算が存在するか否かを判定し、in-place演算が存在する場合、抽出されたデータに関する情報、抽出された演算に関する情報及びin-place演算と関連付けた生成規則を用いて、中間表現を生成するための命令語を含み、in-place演算の入力データは、in-place演算後の出力データに書き換えるデータである。
【発明の効果】
【0018】
本開示の一部の実施例によれば、in-place演算を含むプログラムに対して中間表現を生成することで、中間表現上に発生する循環構造によって演算の順序を認知できない場合が発生するのを防止できる。また、循環構造を防止することで、プログラムの最適化技法を容易に適用できるので、プログラムのメモリ使用量を減少させることができ、プログラムの実行速度を増加させることができる。
【0019】
本開示の効果は、これに制限されず、言及されない他の効果等は、請求範囲の記載から本開示が属する技術分野における通常の知識を有した者(以下、「当業者」という)に明確に理解されるべきである。
【0020】
本開示の実施例等は、以下の添付図面に基づいて説明される。ここで、類似の参照符号は類似の要素を示すが、これに限定されるものではない。
【図面の簡単な説明】
【0021】
図1】本開示の一実施例に係る情報処理システムが中間表現を生成する方法の例を示す図である。
図2】本開示の一実施例に係る情報処理システムの内部構成を示すブロック図である。
図3】本開示の一実施例に係るプロセッサの内部構成を示すブロック図である。
図4】本開示の一実施例に係る中間表現を生成する方法の例を示すフローチャートである。
図5】本開示の一実施例に係る生成された中間表現及びデータが保存されたデータベースの例を示す図である。
図6】本開示の一実施例に係るプログラムに対して生成された中間表現の例を示す図である。
図7】本開示の一実施例に係るプログラムに対する中間表現を生成し、プログラム及び中間表現間の対応関係をデータベースに保存する過程の例を示す図である。
図8】本開示の一実施例に係るデータの大きさを変更するin-place演算を含むプログラムに対する中間表現を生成し、プログラム及び中間表現間の対応関係をデータベースに保存した状態の例を示す図である。
図9】本開示の一実施例に係る二つ以上のデータの大きさを変更するin-place演算を含むプログラムに対する中間表現を生成し、プログラム及び中間表現間の対応関係をデータベースに保存した状態の例を示す図である。
【発明を実施するための形態】
【0022】
以下、本開示の実施のための具体的な内容を添付図面に基づいて詳細に説明する。ただし、以下の説明では、本開示の要旨を不要に不明瞭にするおそれがある場合、公知の機能や構成に関する具体的な説明は省略する。
【0023】
添付図面において、同一又は対応する構成要素には同一の参照符号が付与される。また、以下の実施例の説明において、同一又は対応する構成要素について重複する記述は省略され得る。しかしながら、構成要素に関する記述が省略されても、そのような構成要素が、ある実施例に含まれないものと意図してはならない。
【0024】
開示の実施例の利点及び特徴、そしてそれらを達成する方法は、添付図面に基づいて後述する実施例を参照すれば明確になる。しかしながら、本開示は、以下で開示される実施例に限定されず、互いに異なる多様な形態で具現化され得る。ただし、本実施例は、本開示が完全になるようにし、本開示が当業者に発明のカテゴリを正確に認識させるために提供されるだけである。
【0025】
本明細書で使用される用語について簡略に説明し、開示の実施例について具体的に説明する。本明細書で使用される用語は、本開示での機能を考慮しつつ、可能な限り現在広く使用される一般的な用語を選択したが、これは関連分野に従事する技術者の意図又は判例、新技術の出現などにより変化し得る。また、特定の場合は出願人が任意で選定した用語もあり得るが、これらの意味は当該発明の説明の部分において詳細に記載する。よって、本開示で使用される用語は、単純な用語の名称ではなく、その用語が有する意味と本開示の全般にわたった内容に基づいて定義されるべきである。
【0026】
本明細書では、文脈上において明確に特定しない限り、単数の表現は複数の表現を含み、複数の表現は単数の表現を含むことができる。明細書の全般に渡り、ある部分がある構成要素を「含む」とする際、これは特に反対の記載がない限り、他の構成要素を排除するものではなく、他の構成要素をさらに含むこともできることを意味する。
【0027】
また、明細書で使用される「モジュール」又は「部」という用語は、ソフトウェアやハードウェア構成要素を意味し、「モジュール」又は「部」はある役割を遂行する。しかしながら、「モジュール」又は「部」はソフトウェアやハードウェアに限定される意味ではない。「モジュール」又は「部」は、アドレッシング可能な保存媒体にあるように構成してもよく、一つ又はそれ以上のプロセッサを再生させるように構成してもよい。したがって、一例として、「モジュール」又は「部」は、ソフトウェア構成要素、オブジェクト指向ソフトウェア構成要素、クラス構成要素、タスク構成要素のような構成要素、並びに、プロセス、関数、属性、プロシージャ、サブルーチン、プログラムコードのセグメント、ドライバー、ファームウェア、マイクロコード、回路、データ、データベース、データ構造、テーブル、アレイ又は変数のうちで少なくとも一つを含むことができる。構成要素と「モジュール」又は「部」は、内部で提供される機能はさらに小さい数の構成要素及び「モジュール」又は「部」で結合されたり、追加的な構成要素と「モジュール」又は「部」にさらに分離されたりできる。
【0028】
本開示の一実施例によれば、「モジュール」又は「部」はプロセッサ及びメモリで具現化され得る。「プロセッサ」は汎用プロセッサ、中央処理装置(CPU)、マイクロプロセッサ、デジタル信号プロセッサ(DSP)、制御器、マイクロ制御器、状態マシンなどを含むように広く解釈されるべきである。いくつかの環境では、「プロセッサ」は特定用途向け半導体(ASIC)、プログラム可能なロジックデバイス(PLD)、フィールドプログラム可能なゲートアレイ(FPGA)等を指すこともできる。「プロセッサ」は、例えば、DSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサの組合せ、DSPコアと結合した一つ以上のマイクロプロセッサの組合せ、若しくは、任意の他のそのような構成等の組合せのような処理デバイスの組合せを指すこともできる。また、「メモリ」は電子情報を保存可能な任意の電子コンポーネントを含むように広く解釈されるべきである。「メモリ」は、RAM(Random Access Memory)、ROM(Read Only Memory)、NVRAM(Non-Volatile Random Access Memory)、PROM(Programmable Read-Only Memory)、EPROM(Erasable Programmable Read-Only Memory)、EEPROM(Electrically Erasable Programmable Reda-Only Memory)、フラッシュメモリ、磁気又は光学データ保存装置、レジスタなどのようなプロセッサ-読み取り可能な媒体の多様な類型を指すこともできる。プロセッサがメモリから情報を読み取り/読み取ったメモリに情報を記録できる場合、メモリはプロセッサと電子通信状態にあると言われる。プロセッサに集積されたメモリはプロセッサと電子通信状態にある。
【0029】
本開示において、「システム」は、サーバ装置及びクラウド装置の少なくとも一つを含むことができるが、これに限定されるものではない。例えば、システムは、一つ以上のサーバ装置からなることができる。他の例として、システムは、一つ以上のクラウド装置からなることができる。また他の例として、システムは、サーバ装置及びクラウド装置の全部からなって動作されることもできる。
【0030】
本開示において、「複数のAの各々」又は「複数のA各々」は、複数のAに含まれた全ての構成要素の各々を示したり、複数のAに含まれた一部の構成要素の各々を示したりできる。
【0031】
本開示において、「中間表現」は、プログラムを効率よく実行するために生成される、プログラムと同等の意味を有するグラフ及び/又はこれと関連付けた情報を指すことができる。一実施例において、中間表現は、一つ以上のノード(nodes)及び一つ以上のエッジ(edges)を含むことができる。
【0032】
本開示において、「in-place演算」は、プログラムの演算のうちで、出力データが入力データと同一であるような演算を意味することができる。換言すれば、入力データに割り当てられたメモリに保存された値を、演算の後に出力データの値に書き換える演算を意味することができる。
【0033】
図1は、本開示の一実施例に係る情報処理システム110が中間表現130を生成する方法の例を示す図である。情報処理システム110は、プログラム120から情報を抽出して、プログラム120にin-place演算が存在するか否かを判定できる。また、情報処理システム110は、プログラム120にin-place演算が存在する場合、生成規則を用いてプログラム120に対する中間表現130を生成でき、プログラムのデータと、プログラム及び中間表現間の対応関係とを、データベース140に保存できる。
【0034】
一実施例によれば、情報処理システム110は、プログラム120から入出力のためのデータに関する情報及び演算に関する情報を抽出できる。例えば、情報処理システム110は、プログラム120から新しい変数又は定数の生成、変数値又は定数値の定義及び変更、変数又は定数の資料型、変数又は定数の大きさなど、データに関する情報を抽出できる。また、情報処理システム110は、遂行される演算の種類、演算の入出力データに関する情報、演算のパラメーターなど、演算に関する情報を抽出できる。一実施例によれば、プログラム120は、ディープラーニングプログラムを含むことができ、データは、テンソル(tensor)型データを含むことができる。情報処理システム110は、ディープラーニングプログラムに含まれたテンソル型データを用いて資料型、各次元の大きさなどに関する情報を抽出できる。
【0035】
一実施例によれば、情報処理システム110は、抽出されたデータに関する情報及び抽出された演算に関する情報を用いて、in-place演算が存在するか否かを判定できる。ここで、in-place演算は、入力データに割り当てられたメモリに保存された値を、演算の後に出力データの値に書き換える演算を意味することができる。プログラム120にin-place演算が存在する場合、情報処理システム110は、抽出されたデータに関する情報、抽出された演算に関する情報及びin-place演算と関連付けた生成規則を用いて、中間表現130を生成(及び更新)できる。中間表現130は、ノード(nodes)及びエッジ(edges)を含むグラフの形態で表現できる。グラフの形態で表現される中間表現130において、プログラム120から抽出されたデータ及び演算はノードで表現でき、データ及び演算の入出力関係はエッジで表現できる。ここで、in-place演算と関連付けた生成規則は、in-place演算に対して、in-place演算ではなく、一般演算と同一になるように、新しい出力データノードを生成/更新する生成規則を意味することができる。
【0036】
一実施例によれば、情報処理システム110は、プログラム120から抽出された入出力のためのデータと、プログラム及び中間表現に含まれたデータ間の対応関係とを、データベース140に保存できる。ここで、入出力のためのデータは、プログラムの変数又はテンソルを指すことができる。また、プログラムのデータ及び中間表現に含まれたデータ間の対応関係は、一つの入出力データが有する他の入出力データに関するアドレス情報を意味するポインタ(pointer)及び/又は入出力データの大きさを変更するin-place演算に対する逆演算(inverse)を指すことができる。
【0037】
付加的に、プログラムにin-place演算が存在して、中間表現が生成(及び更新)された場合、入出力のためのデータと、プログラムのデータ及び中間表現に含まれたデータ間の対応関係とを、データベース140に保存及び更新できる。
【0038】
かかる構成により、プログラムにin-place演算が含まれた場合、中間表現を生成する際に、循環構造の発生により演算の順序を認知できない場合が発生するのを防止できる。また、循環構造を防止することで、プログラムの最適化技法を容易に適用できるので、プログラムのメモリ使用量を減少させることができ、プログラムの実行速度を速く保持することができる。
【0039】
図2は、本開示の一実施例に係る情報処理システム110の内部構成を示すブロック図である。情報処理システム110は、メモリ210、プロセッサ220、通信モジュール230及び入出力インタフェース240を含むことができる。図2に示すように、情報処理システム110は、通信モジュール230を用いて、ネットワークを介して情報及び/又はデータを通信できるように構成できる。
【0040】
メモリ210は、非一時的な任意のコンピュータ読み取り可能な記録媒体を含むことができる。一実施例によれば、メモリ210は、RAM(random access memory)、ROM(read only memory)、ディスクドライブ、SSD(solid state drive)及びフラッシュメモリ(flash memory)などのような永久的な大容量保存装置(permanent mass storage device)を含むことができる。他の例として、ROM、SSD、フラッシュメモリ及びディスクドライブなどのような永久的な大容量保存装置は、メモリとは区分される別の永久保存装置として情報処理システム110に含まれることができる。また、メモリ210には、運営体制と少なくとも一つのプログラムコード(例えば、情報処理システム110に設置されて駆動されるin-place演算が存在するか否かの判定、中間表現の生成及び更新などのためのコード)が保存され得る。
【0041】
このようなソフトウェア構成要素は、メモリ210とは別のコンピュータ読み取り可能な記録媒体からローディングできる。このような別のコンピュータ読み取り可能な記録媒体は、このような情報処理システム110に直接連結可能な記録媒体を含むことができるが、例えば、フロッピードライブ、ディスク、テープ、DVD/CD-ROMドライブ及びメモリカードなどのようなコンピュータ読み取り可能な記録媒体を含むことができる。他の例として、ソフトウェア構成要素等は、コンピュータ読み取り可能な記録媒体でなく、通信モジュール230を介してメモリ210にローディングされることもできる。例えば、少なくとも一つのプログラムは、開発者又はアプリケーションの設置ファイルを配信するファイル配信システムが、通信モジュール230を介して提供するファイルにより設置されるコンピュータプログラム(例えば、in-place演算が存在するか否かの判定、中間表現の生成及び更新などのためのプログラムなど)に基づいてメモリ210にローディングされ得る。
【0042】
プロセッサ220は、基本的な算術、ロジック及び入出力演算を遂行することで、コンピュータプログラムの命令を処理するように構成できる。命令は、メモリ210又は通信モジュール230により、ユーザ端末(図示せず)又は他の外部システムに提供され得る。例えば、プロセッサ220は、プログラムから入出力のためのデータに関する情報及び演算に関する情報を抽出し、抽出されたデータに関する情報及び抽出された演算に関する情報を用いて、in-place演算が存在するか否かを判定し、in-place演算が存在する場合、抽出されたデータに関する情報、抽出された演算に関する情報及びin-place演算と関連付けた生成規則を用いて、中間表現を生成できる。
【0043】
通信モジュール230は、ネットワークを介して、ユーザ端末(図示せず)と情報処理システム110とが互いに通信するための構成や機能が提供でき、情報処理システム110が、他のシステム(例えば、別のクラウドシステムなど)と通信するための構成や機能が提供できる。一例として、情報処理システム110のプロセッサ220の制御により提供される制御信号、命令、データなどが、通信モジュール230及びネットワークを経て、ユーザ端末及び/又は外部システムの通信モジュールを介してユーザ端末及び/又は外部システムに転送され得る。例えば、コンピューティング装置により生成されたプログラムを示す中間表現が、外部システム(例えば、プログラムを実行するシステムなど)に転送され得る。
【0044】
また、情報処理システム110の入出力インタフェース240は、情報処理システム110と連結するか、又は、情報処理システム110が含むことのできる入力や出力のための装置(図示ぜず)とのインタフェースのための手段であり得る。図2では、入出力インタフェース240がプロセッサ220と別に構成される要素として示したが、これに限定されず、入出力インタフェース240がプロセッサ220に含まれるように構成することもできる。情報処理システム110は、図2に示す構成要素よりも多くの構成要素を含むことができる。しかしながら、大部分の従来技術的構成要素を明確に示す必要はない。
【0045】
情報処理システム110のプロセッサ220は、複数のユーザ端末及び/又は複数の外部システムから受信された情報及び/又はデータを管理、処理及び/又は保存するように構成できる。一実施例によれば、プロセッサ220は、ユーザ端末及び/又は外部システムから、プログラムの入出力のためのデータに関する情報及び演算に関する情報を含むプログラムコードを受信できる。このとき、プロセッサは、受信されたコードに含まれた入出力のためのデータに関する情報及び演算に関する情報を抽出し、抽出されたデータに関する情報及び抽出された演算に関する情報を用いて、in-place演算が存在するか否かを判定し、in-place演算が存在する場合、抽出されたデータに関する情報、抽出された演算に関する情報及びin-place演算と関連付けた生成規則を用いて、中間表現を生成できる。
【0046】
図3は、本開示の一実施例に係るプロセッサ220の内部構成を示すブロック図である。図に示すように、プロセッサ220は、データ/演算抽出部310、in-place演算判定部320、中間表現生成部330及びデータベース管理部340を含むことができる。図3では、単一のプロセッサとして示したが、これに限定されず、複数のプロセッサとして構成してもよい。
【0047】
一実施例によれば、データ/演算抽出部310は、プログラムから入出力のためのデータに関する情報及び演算に関する情報を抽出できる。例えば、データ/演算抽出部310は、プログラムから新しい変数又は定数の生成、変数値又は定数値の定義及び変更、変数又は定数の資料型、変数又は定数の大きさなど、データに関する情報を抽出できる。また、データ/演算抽出部310は、遂行される演算の種類、演算の入出力データに関する情報、演算のパラメーターなど、演算に関する情報を抽出できる。一実施例によれば、プログラムは、ディープラーニングプログラムを含むことができ、データは、テンソル型データを含むことができる。データ/演算抽出部310は、ディープラーニングプログラムに含まれたテンソル型データを用いて資料型、各次元の大きさなどに関する情報を抽出できる。
【0048】
一実施例によれば、in-place演算判定部320は、入出力データに関する情報及び演算に関する情報を用いて、in-place演算が存在するか否かを判定できる。ここで、in-place演算は、入力データに割り当てられたメモリに保存された値を、演算の後に出力データの値に書き換える演算を意味することができる。例えば、in-place演算は、ディープラーニングフレームワークであるPyTorchの場合、テンソルの形状(又はサイズ)を変更しないin-place演算(例:add_、mul_など)と、テンソルの形状(又はサイズ)を変更するin-place演算(例:viewなど)とを含むことができるが、これに限定されるものではない。
【0049】
一実施例によれば、中間表現生成部330は、in-place演算が存在する場合、抽出されたデータに関する情報、抽出された演算に関する情報及びin-place演算と関連付けた生成規則を用いて、中間表現を生成/更新できる。中間表現は、データ及び演算を示すノードと、データ及び演算の入出力関係を示すエッジとを含むグラフの形態で表現できる。ここで、in-place演算と関連付けた生成規則は、in-place演算に対して、in-place演算ではなく、一般演算と同一になるように、新しい出力データノードを生成/更新する生成規則を意味することができる。
【0050】
一実施例によれば、中間表現生成部330は、in-place演算の出力データに対応する中間表現の演算の出力データを生成することで、中間表現を生成できる。このとき、中間表現の演算の出力データのデータ名は、in-place演算の入力データのデータ名と異なることができる。例えば、in-place演算が「A=A+B」のような形態の場合、中間表現生成部330は、出力データ「A」を、入力データ「A」と異なるデータ名を有する出力データ「A2」として中間表現を生成できる。
【0051】
一実施例によれば、抽出されたin-place演算が、第1のin-place演算及びこれに後続する第2のin-place演算を含む場合、中間表現生成部330は、第1のin-place演算の出力データ及び第2のin-place演算の出力データに対応する、中間表現の演算の出力データを生成することで、中間表現を生成できる。このとき、第1のin-place演算の入力データのデータ名、第1のin-place演算の出力データのデータ名及び第2のin-place演算の出力データのデータ名が、互いに異なることができる。例えば、プログラムから第1のin-place演算(例:「C=A.add_(B)」)及びこれに後続する第2のin-place演算(例:「D=C.add_(B)」)を抽出した場合、中間表現生成部330は、第1のin-place演算の出力データである「C」及び第2のin-place演算の出力データである「D」に対応する中間表現の演算の出力データ「C」、「D」を各々生成することで、中間表現を生成できる。
【0052】
一実施例によれば、in-place演算の入力データの第1の大きさと、in-place演算の出力データの第2の大きさとが異なるin-place演算の後続演算として、in-place演算の入力データの第1の大きさを用いる演算が存在する場合、中間表現生成部330は、in-place演算の入力データの第2の大きさを第1の大きさに復元できる演算(すなわち、逆演算)を用いて、中間表現を生成できる。例えば、入力データ「A」の第1の大きさ(例:2×3)と、出力データ「D」の第2の大きさ(例:3×2)とが異なるin-place演算(例:「D=A.view(3、2)」)の後続演算として、in-place演算の入力データの第1の大きさを用いる演算(例:入力データ「B」は第1の大きさ(2×3)である、「F=A.add_(B)」)が存在する場合、中間表現生成部330は、逆演算を用いて中間表現を生成できる。
【0053】
一実施例によれば、データベース管理部340は、抽出されたデータに関する情報と、中間表現に含まれたデータ間の対応関係とを、データベースに保存できる。抽出されたデータに関する情報は、データ名(例えば、変数名又はテンソル名)や、データの資料型及びデータの大きさに関する情報などを含むことができる。また、プログラム及び中間表現に含まれたデータ間の対応関係は、データが含むポインタに関する情報を含むことができる。また、入出力データの大きさを変更するin-place演算に対する逆演算を遂行するために、入出力データの以前の大きさに関する情報を含むことができる。
【0054】
一実施例によれば、データベース管理部340は、in-place演算の入力データのポインタが、in-place演算の出力データに対応する中間表現の演算の出力データを示すように変更することで、データベースをアップデートできる。例えば、in-place演算が「A=A+B」のような形態の場合、in-place演算の遂行結果により、データベース管理部340は、中間表現の演算の入力データ「A」を示すポインタが、中間表現の演算の出力データ「A2」を示すように変更することで、データベースをアップデートできる。
【0055】
一実施例によれば、抽出されたin-place演算が、第1のin-place演算及びこれに後続する第2のin-place演算を含む場合、データベース管理部340は、第1のin-place演算の入力データのポインタが、第2のin-place演算の出力データに対応する中間表現の演算の出力データを示すように変更することで、データベースをアップデートできる。例えば、抽出されたin-place演算が、第1のin-place演算(例:「C=A.add_(B)」)及びこれに後続する第2のin-place演算(例:「D=C.add_(B)」)を含む場合、データベース管理部340は、第2のin-place演算の遂行結果により、第1のin-place演算の入力データ「A」のポインタが、中間表現の演算の出力データ「D」を示すように変更することで、データベースをアップデートできる。
【0056】
一実施例によれば、in-place演算の入力データの第1の大きさと、in-place演算の出力データの第2の大きさとが異なる場合、データベース管理部340は、in-place演算の入力データのポインタが、in-place演算の出力データに対応する中間表現の演算の出力データを示すように変更することで、データベースをアップデートできる。このとき、データベース管理部340は、in-place演算の入力データに、第1の大きさに復元できる演算(すなわち、逆演算)に関する情報を関連付けて保存できる。例えば、入力データ「A」の第1の大きさ(例:2×3)と、出力データ「D」の第2の大きさ(例:3×2)とが異なる場合、データベース管理部340は、第2のin-place演算の遂行結果により、第1のin-place演算の入力データ「A」のポインタが、中間表現の演算の出力データ「D」を示すように変更することで、データベースをアップデートできる。このとき、データベース管理部340は、in-place演算の入力データ「A」に、第1の大きさ(例、2×3)に復元できる演算に関する情報を関連付けて、データベースに保存できる。
【0057】
一実施例によれば、in-place演算の入力データの第1の大きさと、in-place演算の出力データの第2の大きさとが異なるin-place演算の後続演算として、in-place演算の入力データの第1の大きさを用いる演算が存在する場合、データベース管理部340は、in-place演算の入力データ及び出力データの各々のポインタが、後続in-place演算の出力データに対応する中間表現の演算の出力データを示すことで、in-place演算の出力データの第2の大きさを第1の大きさに変更することにより、データベースをアップデートできる。このとき、データベース管理部340は、in-place演算の出力データに、第2の大きさに復元できる情報を関連付けて保存できる。例えば、入力データ「A」の第1の大きさ(例:2×3)と、出力データ「D」の第2の大きさ(例:3×2)とが異なるin-place演算(例:「D=A.view(3、2)」)の後続演算として、in-place演算の入力データの第1の大きさを用いる演算(例:入力データ「B」は第1の大きさ(2×3)である、「F=A.add_(B)」)が存在する場合、in-place演算の入力データ「A」及びin-place演算の出力データ「D」の各々のポインタが、後続in-place演算の出力データ「F」に対応する中間表現の演算の出力データを示すように変更することで、データベースをアップデートできる。このとき、データベース管理部340は、in-place演算の出力データに、第2の大きさに復元できる情報(例:view(2、3))を関連付けて保存できる。
【0058】
図3に示すプロセッサ220の内部構成は一つの例示に過ぎず、一部の実施例では、図示の内部構成の以外の構成をさらに含むことができ、一部の構成を省略することもでき、一部の過程を他の構成又は外部システムにより遂行することもできる。また、図3ではプロセッサ220の内部構成を機能別に区分して説明したが、これは内部構成等が必ず物理的に区分されることを意味するものではない。
【0059】
図4は、本開示の一実施例に係る中間表現を生成する方法400の例を示すフローチャートである。方法400の各ステップは、少なくとも一つのプロセッサにより遂行できる。一実施例によれば、方法400は、プロセッサが、プログラムから入出力のためのデータに関する情報及び演算に関する情報を抽出することにより開始することができる(S410)。一実施例によれば、プログラムは、ディープラーニングプログラムを含むことができ、プログラムのデータは、テンソル型データを含むことができる。
【0060】
その後、プロセッサは、抽出されたデータに関する情報及び抽出された演算に関する情報を用いて、in-place演算が存在するか否かを判定できる(S420)。ここで、in-place演算は、入力データに割り当てられたメモリに保存された値を、演算の後に出力データの値に書き換える演算を意味することができる。例えば、in-place演算は、ディープラーニングフレームワークであるPyTorchの場合、テンソルの形状(又はサイズ)を変更しないin-place演算(例:add_、mul_など)と、テンソルの形状(又はサイズ)を変更するin-place演算(例:viewなど)とを含むことができるが、これに限定されるものではない。
【0061】
in-place演算が存在する場合、プロセッサは、抽出されたデータに関する情報、抽出された演算に関する情報及びin-place演算と関連付けた生成規則を用いて、中間表現を生成できる(S430)。付加的に、プロセッサは、抽出された入出力のためのデータと、中間表現に含まれたデータ間の対応関係とを、データベースに保存できる。
【0062】
一実施例によれば、プロセッサは、in-place演算の出力データに対応する、中間表現の演算の出力データを生成することで、中間表現を生成できる。このとき、中間表現の演算の出力データのデータ名は、in-place演算の入力データのデータ名と異なることができる。付加的に、プロセッサは、in-place演算の入力データのポインタが、in-place演算の出力データに対応する中間表現の演算の出力データを示すように変更することで、データベースをアップデートできる。
【0063】
一実施例によれば、in-place演算が、第1のin-place演算及び第1のin-place演算に後続する第2のin-place演算を含む場合、プロセッサは、第1のin-place演算の出力データ及び第2のin-place演算の出力データに対応する、中間表現の演算の出力データを生成することで、中間表現を生成できる。このとき、第1のin-place演算の入力データのデータ名、第1のin-place演算の出力データのデータ名及び第2のin-place演算の出力データのデータ名が、互いに異なることができる。付加的に、プロセッサは、第1のin-place演算の入力データのポインタが、第2のin-place演算の出力データに対応する中間表現の演算の出力データを示すように変更することで、データベースをアップデートできる。
【0064】
一実施例によれば、in-place演算の入力データの第1の大きさが、in-place演算の出力データの第2の大きさと異なる場合、プロセッサは、in-place演算の入力データのポインタが、中間表現の演算の出力データを示すように変更することで、データベースをアップデートできる。このとき、プロセッサは、in-place演算の入力データに、第1の大きさに復元できる演算に関する情報を関連付けて、データベースに保存できる。
【0065】
一実施例によれば、in-place演算の入力データの第1の大きさと、in-place演算の出力データの第2の大きさとが異なるin-place演算の後続演算として、in-place演算の入力データの第1の大きさを用いる演算が存在する場合、プロセッサは、in-place演算の入力データの第2の大きさを第1の大きさに復元できる演算を用いて、中間表現を生成できる。付加的に、プロセッサは、in-place演算の後続演算が後続in-place演算の場合、in-place演算の入力データ及びin-place演算の出力データの各々のポインタが、後続in-place演算の出力データに対応する中間表現の演算の出力データを示すことで、in-place演算の出力データの第2の大きさを第1の大きさに変更できる。このとき、in-place演算の出力データに、第2の大きさに復元できる情報を関連付けて保存できる。
【0066】
図4に示すフローチャート及び説明は、一つの例示に過ぎず、一部の実施例では異なるように具現化できる。例えば一つ以上のステップが省略されたり、他の構成により実施されたりでき、各ステップの手順が変化したり、一つ以上のステップが同時又は重畳して遂行されたり、一つ以上のステップが数回繰り返して遂行されたりできる。
【0067】
図5は、本開示の一実施例に係る生成された中間表現510及びデータが保存されたデータベース530の例を示す図である。一実施例によれば、プロセッサは、プログラムから入出力のためのデータに関する情報及び演算に関する情報を抽出し、抽出されたデータに関する情報、抽出された演算に関する情報及びin-place演算と関連付けた生成規則を用いて、中間表現510を生成できる。例えば、図に示すように、プログラムに一般演算である「C=A+B」が存在する場合、プロセッサは、プログラムの入力データ「A」、「B」及び出力データ「C」に基づいて、入力データノード「A」512、入力データノード「B」514、出力データノード「C」520及び演算子ノード「+」518を含む中間表現510を生成できる。また、中間表現510には、エッジ(例:入力データ「A」及び演算子ノード「+」間のエッジ516)を用いて、入出力データノード512、514、520及び演算子ノード518の関係を示すことができる。
【0068】
一実施例によれば、プロセッサは、抽出された入出力のためのデータと、中間表現に含まれたデータ間の対応関係とを、データベース530に保存できる。ここで、中間表現に含まれたデータ間の対応関係は、プログラムのデータ及び中間表現に含まれたデータノード間の対応関係(例:データ「A」の対応関係454)を示すことができる。また、プログラムの入力データ及び中間表現に含まれた入力データノード間の対応関係に関する情報454は、データベースに保存できる。
【0069】
図6は、本開示の一実施例に係るプログラム600に対して生成された中間表現の例を示す図である。プログラムに含まれた演算の一部は、in-place演算を含むことができる。in-place演算を中間表現グラフで表現する場合、循環構造が発生し得る。循環構造が発生する場合、アルゴリズムが複雑になり得るため、最適化の適用が困難であるという問題点がある。図6は、in-place演算602が含まれたプログラム600に対して生成された中間表現において循環構造が発生する第1の状態610、及び、in-place演算と関連付けた生成規則により循環構造を除去した第2の状態620の例を示す。
【0070】
第1の状態610は、プログラム600に「A=A*D」のようなin-place演算602が含まれた場合、循環構造612が発生する中間表現の例を示す。すなわち、データノード「A」614及びデータノード「D」が入力データとして演算子に入力され、これは、再度データノード「A」614に入力されることで、データノード「A」614及び演算子間に循環構造が発生する。
【0071】
第2の状態620は、in-place演算と関連付けた生成規則により生成された中間表現の例を示す。例えば、プロセッサは、in-place演算の出力データに対応する中間表現の演算の出力データ624を生成することで、in-place演算に対する中間表現622を生成できる。すなわち、図に示すように、プロセッサは、プログラム600に含まれたin-place演算602の出力データ「A」に対応する中間表現の演算の出力データ「A2」624を生成できる。このとき、中間表現における出力データのデータ名(例、「A2」)と、プログラム600におけるin-place演算の入力データのデータ名(例、「A」)とは異なるように生成できる。このような方式により、入力データ「A」のデータ値は中間表現の演算の入力データノード「A」に入力され、出力データ「A」のデータ値は中間表現の演算の出力データノード「A2」624に入力されることで、循環構造が発生しないので、演算の順序の混同を防止できる。
【0072】
図7は、本開示の一実施例に係るプログラム700に対する中間表現を生成し、プログラム700及び中間表現間の対応関係をデータベースに保存する過程の例を示す図である。一実施例によれば、情報処理システムは、in-place演算が含まれたプログラム700から抽出されたデータ及びin-place演算と関連付けた生成規則を用いて中間表現を生成し、抽出されたデータ及び中間表現間の対応関係をデータベースに保存できる。
【0073】
具体例として、第1の状態乃至第3の状態710、720、730により、プログラム700に対する中間表現を生成できる。第1の状態710は、プログラム700に含まれたデータを生成する演算702、704に基づいてプログラム700の中間表現が生成され、プログラム700及び中間表現間の対応関係がデータベースに保存された状態の例を示す。例えば、図に示すように、情報処理システムは、プログラム700の第1の演算702(例:「A=torch.Tensor」)及び第2の演算704(例:「B=torch.Tensor」)により、新しく生成されたテンソルA及びテンソルBに関する情報を抽出できる。次に、図に示すように、中間表現にテンソルA及びテンソルBに対応するデータノード(例:「A」及び「B」)を追加し、プログラム700のテンソルA及びテンソルBに関する情報712、714と、テンソルA及びテンソルBが各々中間表現のデータノードA及びデータノードBと対応するという情報716、718とを、データベースに保存できる。
【0074】
第2の状態720は、プログラム700に含まれた第1のin-place演算である第3の演算706に基づいてプログラム700の中間表現が生成され、プログラム700及び中間表現間の対応関係がデータベースにアップデートされた状態の例を示す。例えば、図に示すように、情報処理システムは、プログラム700から抽出した第1のin-place演算である第3の演算706(例:「C=A.add_(B)」)の出力データ(例:テンソルC)に対応する、中間表現の演算の出力データ(例:データノードC(728))を生成することで、中間表現を生成できる。その後、情報処理システムは、第1のin-place演算である第3の演算706の入力データ(例:テンソルA)のポインタが、第1のin-place演算の出力データ(例:テンソルC)に対応する中間表現の演算の出力データ(例:データノードC(728))を示すように変更できる。すなわち、情報処理システムは、プログラム700のテンソルAが中間表現のデータノードCと対応するという情報726を用いて、データベースに保存された対応関係をアップデートできる。第2の状態720では、テンソルB及びテンソルCが各々中間表現のデータノードB及びデータノードCに対応するという情報を省略して示しているが、これは説明の便宜のためのもので、データベースの各テンソルに関する情報は、中間表現の特定のデータノードに対応するという情報を含むことができる。
【0075】
第3の状態730は、プログラム700に含まれた第2のin-place演算である第4の演算708に基づいてプログラム700の中間表現が生成され、プログラム700及び中間表現間の対応関係がデータベースにアップデートされた状態の例を示す。例えば、図に示すように、情報処理システムは、プログラム700から抽出した第2のin-place演算である第4の演算708(例:「D=C.add_(B)」)の出力データ(例:テンソルD)に対応する、中間表現の演算の出力データ(例:データノードD)を生成することで、中間表現を生成できる。その後、情報処理システムは、第1のin-place演算である第3の演算706の入力データ(例:テンソルA)のポインタが、第2のin-place演算の出力データ(例:テンソルD)に対応する中間表現の演算の出力データ(例:データノードD)を示すように変更できる。また、情報処理システムは、第2のin-place演算である第4の演算708の入力データ(例:テンソルC)のポインタが、第2のin-place演算の出力データ(例:テンソルD)に対応する中間表現の演算の出力データ(例:データノードD)を示すように変更できる。すなわち、情報処理システムは、プログラム700のテンソルA及びテンソルCが中間表現のデータノードDと対応するという情報732、734を用いて、データベースに保存された対応関係をアップデートできる。第3の状態730では、テンソルB及びテンソルDが各々中間表現のデータノードB及びデータノードDに対応するという情報を省略して示しているが、これは説明の便宜のためのもので、データベースの各テンソルに関する情報は、中間表現の特定のデータノードに対応するという情報を含むことができる。
【0076】
図8は、本開示の一実施例に係るデータの大きさを変更するin-place演算を含むプログラム800に対する中間表現を生成し、プログラム800及び中間表現間の対応関係をデータベースに保存した状態の例を示す図である。一実施例によれば、情報処理システムは、プログラム800のin-place演算の入力データの大きさが出力データの大きさと異なる場合、in-place演算の入力データのポインタが、in-place演算の出力データに対応する中間表現の演算の出力データを示すように変更することで、データベースをアップデートできる。
【0077】
第1の状態810は、プログラム800に含まれたデータの大きさを変更するin-place演算802に基づいてプログラム800の中間表現が生成され、in-place演算の入力データのポインタが、in-place演算の出力データに対応する中間表現の演算の出力データを示すように、データベースにアップデートされた状態の例を示す。例えば、図に示すように、情報処理システムは、プログラム800のテンソルAの第1の大きさ(例:2×3)を、第2の大きさ(例:3×2)に変更するin-place演算802(例:「D=A.view(3、2)」)を抽出して中間表現を生成し、in-place演算の入力データのポインタが、in-place演算の出力データに対応する中間表現の演算の出力データ(例:データノードD(3、2))を示すように変更することで、データベースをアップデートできる。すなわち、情報処理システムは、プログラム800のテンソルAが中間表現のデータノードD(3、2)と対応するという情報812を用いて、データベースに保存された対応関係をアップデートできる。また、情報処理システムは、in-place演算の入力データ(例:テンソルA)に、第1の大きさに復元できる演算に関する情報814(例:「A view(2、3)」)を関連付けて保存できる。
【0078】
図8は、データベース及び中間表現にテンソルB、テンソルFを省略して示しているが、これは説明の便宜のためのものである。また、図8では、テンソルC、テンソルD及びテンソルEが、各々中間表現のデータノードC、データノードD及びデータノードEに対応するという情報を省略して示しているが、これは説明の便宜のためのもので、データベースの各テンソルに関する情報は、中間表現の特定のデータノードに対応するという情報を含むことができる。
【0079】
図9は、本開示の一実施例に係る二つ以上のデータの大きさを変更するin-place演算を含むプログラム800に対する中間表現を生成し、プログラム800及び中間表現間の対応関係をデータベースに保存した状態の例を示す図である。一実施例によれば、情報処理システムは、プログラム800のin-place演算の後続演算として、in-place演算の入力データの第1の大きさを用いる演算が存在する場合、in-place演算の入力データの第2の大きさを第1の大きさに復元できる演算を用いて、中間表現を生成できる。また、情報処理システムは、in-place演算の後続演算が後続in-place演算の場合、in-place演算の入力データ及びin-place演算の出力データの各々のポインタが、後続in-place演算の出力データに対応する中間表現の演算の出力データを示すことで、in-place演算の出力データの第2の大きさを第1の大きさに変更できる。
【0080】
具体例として、第1の状態910及び第2の状態920により、データの大きさを変更するin-place演算を含むプログラム800に対する中間表現が生成され、プログラム800及び中間表現間の対応関係をアップデートできる。第1の状態910は、入力データの大きさを変更する第3のin-place演算802の後続演算として、入力データの元の大きさを用いる第4のin-place演算804が存在する場合、情報処理システムが逆演算を用いて中間表現を生成した状態の例を示す。例えば、図に示すように、情報処理システムは、プログラム800のテンソルAの第1の大きさ(例:2×3)を、第2の大きさ(例:3×2)に変更する第3のin-place演算802(例:「D=A.view(3、2)」)の後続演算として、テンソルAの第1の大きさ(例:2×3)を用いる第4のin-place演算804(例:「F=A.add_(B)」)が存在する場合、テンソルAの第2の大きさを第1の大きさに復元できる演算914(例:「D2=D.view(2、3)」)を用いて、中間表現を生成できる。第1の状態901では、データベース及び中間表現にテンソルC、テンソルEを省略して示しているが、これは説明の便宜のためのものである。また、第1の状態901では、テンソルB、テンソルD及びテンソルFが、各々中間表現のデータノードB、データノードD及びデータノードFに対応するという情報を省略して示しているが、これは説明の便宜のためのもので、データベースの各テンソルに関する情報は、中間表現の特定のデータノードに対応するという情報を含むことができる。
【0081】
第2の状態920は、第4のin-place演算804が遂行された場合、情報処理システムが、第3のin-place演算802の入出力データ及び中間表現間の対応関係をアップデートした状態の例を示す。例えば、第4のin-place演算804が遂行される場合、情報処理システムは、第3のin-place演算802の入力データ(例:テンソルA)及び出力データ(例:テンソルD)の各々のポインタが、第4のin-place演算804の出力データに対応する中間表現の演算の出力データ928(例:データノードF(2、3))を示すことで、第3のin-place演算802の出力データ(例:データノードD(3、2))の第2の大きさを第1の大きさに変更して、データベースをアップデートできる。すなわち、情報処理システムは、プログラム800のテンソルA及びテンソルDが、中間表現のデータノードF(2、3)と対応するという情報924、926を用いて、データベースに保存された対応関係をアップデートできる。また、第4のin-place演算804が遂行される場合、情報処理システムは、第3のin-place演算の出力データ(例:テンソルD)に、第2の大きさに復元できる演算に関する情報922(例:「D view(3、2)」)を関連付けて保存できる。これにより、第2の大きさを用いる第5のin-place演算が存在する場合、第2の大きさに復元できる演算に関する情報を第5のin-place演算に用いられる。第2の状態920では、データベース及び中間表現にテンソルC、テンソルEを省略して示しているが、これは説明の便宜のためのものである。また、第2の状態902では、テンソルB及びテンソルFが、各々中間表現のデータノードB及びデータノードFに対応するという情報を省略して示しているが、これは説明の便宜のためのもので、データベースの各テンソルに関する情報は、中間表現の特定のデータノードに対応するという情報を含むことができる。
【0082】
前述した方法は、コンピュータで実行するために、コンピュータ読み取り可能な記録媒体に保存されたコンピュータプログラムとして提供され得る。媒体は、コンピュータで実行可能なプログラムを継続的に保存したり、実行又はダウンロードのために一時保存したりするものであり得る。また、媒体は、単一又は多数のハードウェアが結合された形態の多様な記録手段又は保存手段であり得るが、あるコンピュータシステムに直接接続される媒体に限定されず、ネットワーク上に分散して存在するものであり得る。媒体の例としては、ハードディスク、フロッピーディスク及び磁気テープのような磁気媒体、CD-ROMやDVDのような光記録媒体、フロプティカルディスク(floptical disk)のような磁気-光媒体(magneto-optical medium)、及び、ROM、RAM、フラッシュメモリなどを含み、プログラム命令語が保存されるように構成されたものが挙げられる。また、他の媒体の例としては、アプリケーションを流通するアプリストアやその他の多様なソフトウェアを供給乃至流通するサイト、サーバなどで管理する記録媒体乃至保存媒体も挙げられる。
【0083】
本開示の方法、動作又は技法は多様な手段により具現化できる。例えば、このような技法は、ハードウェア、ファームウェア、ソフトウェア、若しくはこれらの組合せで具現化できる。本願の開示により説明された多様な例示的な論理的ブロック、モジュール、回路及びアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、若しくは両方の組合せで具現化できることを、当業者であれば理解できるはずである。ハードウェア及びソフトウェアのこのような相互の代替を明確に説明するために、多様な例示的な構成要素、ブロック、モジュール、回路及びステップが、それらの機能的観点から一般的に前述された。そのような機能が、ハードウェアとして具現化されるか、若しくは、ソフトウェアとして具現化されるかは、特定アプリケーション及び全体システムに付加される設計要求事項によって変化する。当業者は、各々の特定アプリケーションのために多様な方式により説明された機能を具現化することもできるが、そのような具現化は本開示の範囲から逸脱するものと解釈してはならない。
【0084】
ハードウェアの具現化において、技法の遂行に利用されるプロセッシングユニットは、一つ以上のASIC、DSP、デジタル信号処理デバイス(digital signal processing devices DSPD)、プログラム可能な論理デバイス(programmable logic devices PLD)、フィールドプログラム可能なゲートアレイ(field programmable gate arrays FPGA)、プロセッサ、制御器、マイクロ制御器、マイクロプロセッサ、電子デバイス、本開示に説明された機能を遂行するように設計された他の電子ユニット、コンピュータ、若しくはこれらの組合せ内で具現化されることもできる。
【0085】
したがって、本開示により説明された多様な例示的な論理ブロック、モジュール及び回路は、汎用プロセッサ、DSP、ASIC、FPGAや他のプログラム可能な論理デバイス、離散ゲートやトランジスタロジック、離散ハードウェアコンポーネント、若しくは、本願に説明された機能を遂行するように設計されたもの等の任意の組合せで具現化又は遂行されることもできる。汎用プロセッサはマイクロプロセッサであり得るが、代替的に、プロセッサは、任意の従来のプロセッサ、制御器、マイクロ制御器、若しくは状態マシンであり得る。プロセッサは、また、コンピューティングデバイスの組合せ、例えば、DSPとマイクロプロセッサ、複数のマイクロプロセッサ、DSPコアと関連付けた一つ以上のマイクロプロセッサ、若しくは任意の他の構成の組合せで具現化されることもできる。
【0086】
ファームウェア及び/又はソフトウェアの具現化において、技法は、RAM(random access memory)、ROM(read-only memory)、NVRAM(non-volatile random access memory)、PROM(programmable read-only memory)、EPROM(erasable programmable read-only memory)、EEPROM(electrically erasable PROM)、フラッシュメモリ、CD(compact disc)、磁気又は光学データストレージデバイスなどのようなコンピュータ読み取り可能な媒体上に保存された命令として具現化できる。命令は、一つ以上のプロセッサによって実行可能であり得、プロセッサが本開示に説明された機能の特定様態を遂行するようにできる。
【0087】
以上で説明された実施例は、一つ以上の独立型コンピュータシステムで現在開示された主題の態様を活用するものとして記述しているが、本開示は、これに限定されず、ネットワークや分散コンピューティング環境のような任意のコンピューティング環境によって具現化できる。さらには、本開示における主題の様態は複数のプロセッシングチップや装置で具現化されることもでき、ストレージは複数の装置に亘り、同様に影響を受ける場合もある。このような装置は、PC、ネットワークサーバ及び携帯用装置を含むこともできる。
【0088】
本明細書では、本開示が一部の実施例によって説明されてきたが、本開示の発明が属する技術分野における通常の技術者が理解し得る本開示から逸脱しない範囲内で多様な変形や変更が可能である。また、そのような変形や変更は、本明細書に添付された特許請求の範囲内に属するものと理解されるべきである。
図1
図2
図3
図4
図5
図6
図7
図8
図9
【国際調査報告】