この記事は、https://www.oneapi.io/spec/ で 2023年9月14日に公開された『oneAPI 1.3 Provisional Specification Rev. 1』 (HTML、PDF) をベースにしています。原文は2000 ページ近くあり、翻訳の時間とリソースも限られるため、全文翻訳ではなく、記事形式で区切った仕様とその解説を提供することにしました。
この回では、『oneAPI 1.3 Provisional Specification Rev. 1』の「oneDNN」の「Conventions」の節を取り上げています。
規則
oneDNN 仕様は、変数の標準命名規則に依存します。ここでは、これらの規則について説明します。
変数 (テンソル) 名
ニューラル・ネットワーク・モデルは、次の形式の操作で構成されます。
dst=∫(src, weights)
dst
と src
は活性化テンソルであり、weights
は学習可能なテンソルです。
したがって、後方伝搬はそれぞれ src`
の weights`
に関連する勾配を計算することで構成されます。
diff_src=d∫src(diff_dst,src,weights,dst)
および
diff_weights=d∫weights(diff_dst,src,weights,dst)
oneDNN は、活性化と学習可能なテンソルの汎用名として、src
、dst
、および weights
を使用しますが、一部の操作ではこれらのテンソルには別名が存在する場合があります。例えば、畳み込み計算には bias
と呼ばれる学習可能なテンソルがあります。使い方を容易にするため、oneDNN プリミティブでは初期化や他の関数でそのような名前を使用します。
oneDNN は、テンソルで一般に使用される次の表記を採用します。
名前 | 意味 |
---|---|
src |
ソーステンソル |
dst |
デスティネーション・テンソル |
weights |
重みテンソル |
bias |
バイアステンソル (畳み込み、内積および他のプリミティブで使用) |
scale_shift |
スケールとシフトテンソル (バッチ正規化とレイヤー正規化プリミティブで使用) |
workspace |
順伝搬から逆伝搬への追加情報を移動するワークスペース・テンソル |
scratchpad |
中間結果を保存するために必要なテンポラリー・テンソル |
diff_src |
ソースに関連する勾配テンソル |
diff_dst |
デスティネーションに関連する勾配テンソル |
diff_weights |
重みに関連する勾配テンソル |
diff_bias |
バイアスに関連する勾配テンソル |
diff_scale |
スケールに関連する勾配テンソル |
diff_shift |
シフトに関連する勾配テンソル |
*_layer |
RNN レイヤーデータまたは重みテンソル |
*_iter |
RNN リカレントデータまたは重みテンソル |
RNN 固有の表記
次の表記は、RNN プリミティブを説明する際に使用されます。
名前 | セマンティクス |
---|---|
⋅ | 行列乗算演算子 |
* | 要素ごとの乗算演算子 |
W | 入力重み |
U | リカレント重み |
◻T | 転置 |
B | bias |
h | 隠された状態 |
a | 中間値 |
x | 入力 |
◻t | タイムスタンプ・インデックス |
◻l | レイヤー・インデックス |
activation | tanh、relu、logistic |
c | セルの状態 |
候補状態 | |
i | 入力ゲート |
f | 忘却ゲート |
o | 出力ゲート |
u | 更新ゲート |
r | リセットゲート |
法務上の注意書き
The content of this oneAPI Specification is licensed under the Creative Commons Attribution 4.0 International License (英語). Unless stated otherwise, the sample code examples in this document are released to you under the MIT license (英語).
This specification is a continuation of Intel’s decades-long history of working with standards groups and industry/academia initiatives such as The Khronos Group*, to create and define specifications in an open and fair process to achieve interoperability and interchangeability. oneAPI is intended to be an open specification and we encourage you to help us make it better. Your feedback is optional, but to enable Intel to incorporate any feedback you may provide to this specification, and to further upstream your feedback to other standards bodies, including The Khronos Group SYCL* specification, please submit your feedback under the terms and conditions below. Any contribution of your feedback to the oneAPI Specification does not prohibit you from also contributing your feedback directly to other standard bodies, including The Khronos Group under their respective submission policies.
By opening an issue, providing feedback, or otherwise contributing to the specification, you agree that Intel will be free to use, disclose, reproduce, modify, license, or otherwise distribute your feedback at its sole discretion without any obligations or restrictions of any kind, including without limitation, intellectual property rights or licensing obligations.
This document contains information on products, services and/or processes in development. All information provided here is subject to change without notice.
© Intel Corporation. Intel、インテル、Intel ロゴ、その他のインテルの名称やロゴは、Intel Corporation またはその子会社の商標です。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。