JP7089124B2 - 不必要なデータ移動を回避するためのリシェイプおよびブロードキャストの最適化 - Google Patents
不必要なデータ移動を回避するためのリシェイプおよびブロードキャストの最適化 Download PDFInfo
- Publication number
- JP7089124B2 JP7089124B2 JP2021565088A JP2021565088A JP7089124B2 JP 7089124 B2 JP7089124 B2 JP 7089124B2 JP 2021565088 A JP2021565088 A JP 2021565088A JP 2021565088 A JP2021565088 A JP 2021565088A JP 7089124 B2 JP7089124 B2 JP 7089124B2
- Authority
- JP
- Japan
- Prior art keywords
- tensor
- original
- reshape
- operation pattern
- final output
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4434—Reducing the memory space required by the program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Stored Programmes (AREA)
- Machine Translation (AREA)
- Devices For Executing Special Programs (AREA)
Description
import tensorflow as tf
X = tf.constant([[[1, 1, 1], [2, 2, 2]], [[3, 3, 3], [4, 4, 4]]])
tf.shape(X)
では、シェイプオペレーションは、テンソルXの次元を表すテンソル[2, 2, 3]を返す。
X = tf.constant([[[1, 1], [2, 2]], [[3, 3], [4, 4]]])
tf.reshape(X, [2, 4])
では、リシェイプオペレーションは、入力パラメータとして、テンソルX、および所望の形状を表す1次元テンソル[2, 4]を受け取る。リシェイプオペレーションは、入力テンソルXと同じ要素を有し、かつ所望の形状、すなわち[2, 4]を有するテンソル[[1, 1, 2, 2], [3, 3, 4, 4]]を返す。リシェイプオペレーションへの所望の形状の入力は、入力テンソルが有するよりも多くの、またはそれよりも少ない次元を有することができる。
V = tf.constant([7, 8])
tf.broadcast_to(V, [2, 3])
では、broadcast_toオペレーションは、入力として、テンソルV、および所望の形状を指定するテンソル[2, 3]を受け取る。broadcast_toオペレーションは、所望の形状を有するテンソル[[7, 7, 7], [8, 8, 8]]を返す。
X = tf.constant([[1, 1, 1], [1, 1, 1]])
において、Xの形状は[2, 3]であり、すなわちXは、2つの行および3つの列を有するテンソル
1 1 1
1 1 1
である。
tf.reduce_sum(x, [0])
は、実行されると、第0次元(行)に沿ってテンソルを縮約し、行同士を加算[1, 1, 1] + [1, 1, 1]して、[2, 2, 2]を返す。
tf.reduce_sum(x, [1])
が実行されると、縮約は第1次元(列)に沿い、列同士を加算[1, 1] + [1, 1] + [1, 1]して、[3, 3]を返す。
tf.reduce_sum(x, [0, 1])
が実行されると、縮約は両次元に沿い、加算して、スカラー(0Dテンソル)6を返す。
reshape(
f(
g(reshape(G)),
h(reshape(H)),..,
a(broadcast(A)),
b(broadcast(B)
)
),
に一致するものであり、このパターンは最適化によって、
f(
g(G),
h(H),...,
a( broadcast( reshape(broadcast(A))),
b( broadcast( reshape(broadcast(B)))
)
に変換される。小文字f、g、h、a、およびbは、グラフ内の数学的オペレーションである。彼の変換のパターンは、深さ優先のグラフ探索法を使用して見いだすことができる。いくつかの実装形態では、話を簡単にするために、探索は後行順、すなわちプロデューサがコンシューマより前にあるトポロジカルソートであり、グラフをその場で変換する。探索によって一致する部分木が見いだされると、その部分木が複製され、オリジナルの部分木ルートのユーザが新たな部分木ルートと置き換えられる。他のコンパイラパスが、複製されたコードおよびデッドコードを解決する。計算グラフ内のパターンを求めてグラフを探索する他の方法を使用することもできる。
reduce(reshape(画像,[B,H,W,C/G,G]),[1,2,3])
と表現される。上記の画像入力の形状は、入力内の画像バッチのバッチサイズ、画像の高さ、画像の幅、および画像のチャネルの各次元を有する[B,H,W,C]である。グループの数はGグループである。この表現がこの形式で実行される場合、ある特定のハードウェアプラットフォーム上の大きな中間テンソル、および低速のリシェイプがこの表現により生じる。上記の変換はこの計算を、以下の形式
reduce(reshape(reduce(画像,[1,2]),[B,C/G,G]),[1])
に変換することにより改善する。変換プロセスについて説明する目的でこれを
Y = reshape(X, [B, H, W, C/G, G])
Z = reduce(Y, [1, 2, 3])
と表す。
W = reduce(X, [1, 2])
Y2 = reshape(W, [B, C/G, G])
Z2 = reduce(Y2, [1])
と表す。
Y = reshape(X, [B, H, W, C/G, G])
Z = reduce(Y, [1, 2, 3])
から、コンパイラは、テンソルXの第0および第3のインデックス、すなわちBおよびCがそれぞれ、最終出力内にあること、および最終出力に影響を及ぼすことを、リシェイプオペレーションへの軸テンソル入力から決定する。したがって、Xは、Xの第1次元および第2次元、すなわちH次元およびW次元に沿って縮約される。
W = reduce(X, [1, 2])
Y2 = reshape(W, [B, C/G, G])
Z2 = reduce(Y2, [1])
200 例示的プロセス
Claims (12)
計算オペレーショングラフ内のテンソルに対するオリジナルオペレーションパターンを検出するステップであって、
前記オリジナルオペレーションパターンが、最終出力テンソルを返し、入力として入力テンソルを受け取り、
前記オリジナルオペレーションパターンが、オリジナルリシェイプオペレーションを含み、前記オリジナルリシェイプオペレーションが、(i)オリジナルテンソルを返し、(ii)より少ないメモリを使用するように変換されることが可能である、ステップと、
前記オリジナルオペレーションパターンを、前記オリジナルテンソルよりも小さなテンソルを返す1つまたは複数のリシェイプオペレーションを有する新たなオペレーションパターンに変換するステップと、
ターゲットハードウェアプラットフォームに専用の、前記新たなオペレーションパターンによって表される計算を実装した、実行可能コードを生成するステップと
を含む、方法。
をさらに含む、請求項1に記載の方法。
請求項1または2に記載の方法。
前記オリジナルオペレーションパターンによって返される前記最終出力テンソルの最終出力次元を決定するステップと、
前記入力テンソルの、前記最終出力テンソル内になく前記オリジナルリシェイプオペレーションによるリシェイプに影響を及ぼしもしない次元に沿って縮約して、第1の中間結果テンソルを返すステップと、
前記第1の中間結果テンソルをリシェイプして、第2の中間結果テンソルを返すステップと、
前記第2の中間結果テンソルを、前記オリジナルオペレーションパターンからの前記最終出力テンソルの次元内にない任意の次元に沿って縮約するステップと
を含む、請求項1から3のいずれか一項に記載の方法。
計算オペレーショングラフ内のテンソルに対するオリジナルオペレーションパターンを検出することであって、
前記オリジナルオペレーションパターンが、最終出力テンソルを返し、入力として入力テンソルを受け取り、
前記オリジナルオペレーションパターンが、オリジナルリシェイプオペレーションを含み、前記オリジナルリシェイプオペレーションが、(i)オリジナルテンソルを返し、(ii)より少ないメモリを使用するように変換されることが可能である、検出することと、
前記オリジナルオペレーションパターンを、前記オリジナルテンソルよりも小さなテンソルを返す1つまたは複数のリシェイプオペレーションを有する新たなオペレーションパターンに変換することと、
ターゲットハードウェアプラットフォームに専用の、前記新たなオペレーションパターンによって表される計算を実装した、実行可能コードを生成することと
を含むアクションを実施させる、1つまたは複数の非一時的コンピュータ可読記憶媒体。
前記生成されたコードを、実行のため前記ターゲットハードウェアプラットフォームにデプロイすること
をさらに含む、請求項5に記載の非一時的コンピュータ可読記憶媒体。
請求項5または6に記載の非一時的コンピュータ可読記憶媒体。
前記オリジナルオペレーションパターンによって返される前記最終出力テンソルの最終出力次元を決定することと、
前記入力テンソルの、前記最終出力テンソル内になく前記オリジナルリシェイプオペレーションによるリシェイプに影響を及ぼしもしない次元に沿って縮約して、第1の中間結果テンソルを返すことと、
前記第1の中間結果テンソルをリシェイプして、第2の中間結果テンソルを返すことと、
前記第2の中間結果テンソルを、前記オリジナルオペレーションパターンからの前記最終出力テンソルの次元内にない任意の次元に沿って縮約することと
を含む、請求項5から7のいずれか一項に記載の非一時的コンピュータ可読記憶媒体。
1つまたは複数のコンピュータと、命令が格納された1つまたは複数の記憶デバイスと
を備え、前記命令が、前記1つまたは複数のコンピュータによって実行されると、前記1つまたは複数のコンピュータに、
計算オペレーショングラフ内のテンソルに対するオリジナルオペレーションパターンを検出することであって、
前記オリジナルオペレーションパターンが、最終出力テンソルを返し、入力として入力テンソルを受け取り、
前記オリジナルオペレーションパターンが、オリジナルリシェイプオペレーションを含み、前記オリジナルリシェイプオペレーションが、(i)オリジナルテンソルを返し、(ii)より少ないメモリを使用するように変換されることが可能である、検出することと、
前記オリジナルオペレーションパターンを、前記オリジナルテンソルよりも小さなテンソルを返す1つまたは複数のリシェイプオペレーションを有する新たなオペレーションパターンに変換することと、
ターゲットハードウェアプラットフォームに専用の、前記新たなオペレーションパターンによって表される計算を実装した、実行可能コードを生成することと
を含むアクションを実施させるように動作可能である、システム。
前記生成されたコードを、実行のため前記ターゲットハードウェアプラットフォームにデプロイすること
さらに含む、請求項9に記載のシステム。
請求項9または10に記載のシステム。
前記オリジナルオペレーションパターンによって返される前記最終出力テンソルの最終出力次元を決定することと、
前記入力テンソルの、前記最終出力テンソル内になく前記オリジナルリシェイプオペレーションによるリシェイプに影響を及ぼしもしない次元に沿って縮約して、第1の中間結果テンソルを返すことと、
前記第1の中間結果テンソルをリシェイプして、第2の中間結果テンソルを返すことと、
前記第2の中間結果テンソルを、前記オリジナルオペレーションパターンからの前記最終出力テンソルの次元内にない任意の次元に沿って縮約することと
を含む、請求項9から11のいずれか一項に記載のシステム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/402,981 US11537939B2 (en) | 2019-05-03 | 2019-05-03 | Reshape and broadcast optimizations to avoid unnecessary data movement |
US16/402,981 | 2019-05-03 | ||
PCT/US2020/030752 WO2020227015A1 (en) | 2019-05-03 | 2020-04-30 | Reshape and broadcast optimizations to avoid unnecessary data movement |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2022524659A JP2022524659A (ja) | 2022-05-09 |
JP7089124B2 true JP7089124B2 (ja) | 2022-06-21 |
Family
ID=70918968
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021565088A Active JP7089124B2 (ja) | 2019-05-03 | 2020-04-30 | 不必要なデータ移動を回避するためのリシェイプおよびブロードキャストの最適化 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11537939B2 (ja) |
EP (1) | EP3942406B1 (ja) |
JP (1) | JP7089124B2 (ja) |
CN (1) | CN113767364A (ja) |
WO (1) | WO2020227015A1 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112463160A (zh) * | 2020-11-25 | 2021-03-09 | 安徽寒武纪信息科技有限公司 | 编译方法、装置、电子设备和存储介质 |
CN112597424B (zh) * | 2020-12-22 | 2024-04-26 | 无锡灵汐类脑科技有限公司 | 基于广播机制进行张量计算的方法、装置、芯片及介质 |
CN113221126B (zh) * | 2021-05-31 | 2024-05-28 | 北京中科天齐信息技术有限公司 | 一种TensorFlow程序漏洞检测方法、装置及电子设备 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7133048B2 (en) * | 2004-06-30 | 2006-11-07 | Mitsubishi Electric Research Laboratories, Inc. | Variable multilinear models for facial synthesis |
US11151446B2 (en) * | 2015-10-28 | 2021-10-19 | Google Llc | Stream-based accelerator processing of computational graphs |
CN115061810A (zh) * | 2015-10-28 | 2022-09-16 | 谷歌有限责任公司 | 处理计算图 |
US10817802B2 (en) * | 2016-05-07 | 2020-10-27 | Intel Corporation | Apparatus for hardware accelerated machine learning |
US10592213B2 (en) * | 2016-10-19 | 2020-03-17 | Intel Corporation | Preprocessing tensor operations for optimal compilation |
US10896367B2 (en) * | 2017-03-07 | 2021-01-19 | Google Llc | Depth concatenation using a matrix computation unit |
US11544545B2 (en) * | 2017-04-04 | 2023-01-03 | Hailo Technologies Ltd. | Structured activation based sparsity in an artificial neural network |
US10331445B2 (en) * | 2017-05-24 | 2019-06-25 | Microsoft Technology Licensing, Llc | Multifunction vector processor circuits |
WO2018222900A1 (en) * | 2017-05-31 | 2018-12-06 | Intel Corporation | Computationally-efficient quaternion-based machine-learning system |
US11645835B2 (en) * | 2017-08-30 | 2023-05-09 | Board Of Regents, The University Of Texas System | Hypercomplex deep learning methods, architectures, and apparatus for multimodal small, medium, and large-scale data representation, analysis, and applications |
EP4242844A3 (en) * | 2018-08-03 | 2023-10-18 | Google LLC | Distributing tensor computations across computing devices |
US10771088B1 (en) * | 2019-02-28 | 2020-09-08 | International Business Machines Corporation | Optimal multi-dimensional data compression by tensor-tensor decompositions tensor |
-
2019
- 2019-05-03 US US16/402,981 patent/US11537939B2/en active Active
-
2020
- 2020-04-30 EP EP20729272.3A patent/EP3942406B1/en active Active
- 2020-04-30 WO PCT/US2020/030752 patent/WO2020227015A1/en unknown
- 2020-04-30 CN CN202080033009.6A patent/CN113767364A/zh active Pending
- 2020-04-30 JP JP2021565088A patent/JP7089124B2/ja active Active
-
2022
- 2022-12-23 US US18/088,229 patent/US20230206126A1/en active Pending
Non-Patent Citations (2)
Title |
---|
@Vengineer,最新テクノロジ・マニアの挑戦…AIサクサク用TensorFlow XLA AOTコンパイラ探訪 初めてのGoogleソースコード! AI用コンパイラの可能性を探る,Interface 2017年9月号,日本,CQ出版株式会社,2017年,第43巻, 第9号,pp.138-147,ISSN 0387-9569 |
LI Mingzhen et al.,The Deep Learning Compiler: A Comprehensive Survey,arXiv.org [online],2020年02月06日,pp.1-36,[2022年4月26日検索], インターネット<URL : https://arxiv.org/abs/2002.03794v1> |
Also Published As
Publication number | Publication date |
---|---|
US11537939B2 (en) | 2022-12-27 |
EP3942406B1 (en) | 2023-01-18 |
US20230206126A1 (en) | 2023-06-29 |
US20200349465A1 (en) | 2020-11-05 |
CN113767364A (zh) | 2021-12-07 |
EP3942406A1 (en) | 2022-01-26 |
WO2020227015A1 (en) | 2020-11-12 |
JP2022524659A (ja) | 2022-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7089124B2 (ja) | 不必要なデータ移動を回避するためのリシェイプおよびブロードキャストの最適化 | |
Yang et al. | Synetgy: Algorithm-hardware co-design for convnet accelerators on embedded fpgas | |
Ye et al. | Inverted pyramid multi-task transformer for dense scene understanding | |
JP2018195314A (ja) | 再帰型ニューラルネットワークアーキテクチャの生成のためのドメイン固有言語 | |
US10901715B1 (en) | Lazy compilation and kernel fusion in dynamic computation graphs | |
CN112148637A (zh) | 用于调谐计算机程序中的循环排序的设备、方法、介质 | |
CN103858099A (zh) | 用于在异构计算机上编译和运行高级程序的技术 | |
Li et al. | Efficient parallel implementations of sparse triangular solves for GPU architectures | |
CN114897173B (zh) | 基于变分量子线路确定PageRank的方法及装置 | |
CN114461221A (zh) | 编译方法、编译装置、电子设备、存储介质 | |
Georganas et al. | Harnessing deep learning via a single building block | |
US20200410330A1 (en) | Composable neural network kernels | |
CN106462426A (zh) | 用于图形处理单元的组合计算任务 | |
Kronawitter et al. | Optimizations applied by the ExaStencils code generator | |
Ma et al. | Accelerating deep neural network filter pruning with mask-aware convolutional computations on modern CPUs | |
Savin et al. | Vectorization of flat loops of arbitrary structure using instructions AVX-512 | |
CN116933864A (zh) | 一种通用高精度分布式算法训练方法及系统 | |
US9367291B2 (en) | Apparatus and method for generating vector code | |
JP2017111749A (ja) | 計算コード生成装置、方法及びプログラム | |
JP7297286B2 (ja) | 最適化方法、最適化プログラム、推論方法、および推論プログラム | |
CN114385180A (zh) | 一种数据处理方法、装置、设备及计算机存储介质 | |
Rothmann et al. | STANN–Synthesis Templates for Artificial Neural Network Inference and Training | |
US20230281433A1 (en) | Compilation of neural networks with dynamic shapes of tensors | |
Redrouthu et al. | Tensor algebra on an optoelectronic microchip | |
Tran et al. | Compositional deep learning in Futhark |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20211221 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20211221 |
|
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: 20220516 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20220609 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7089124 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |