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

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

▶ メンティアム テクノロジーズ インコーポレイテッドの特許一覧

特許7459287ニューラルネットワーク高速化のためのデジタル-IMCハイブリッドシステムアーキテクチャ
<>
  • 特許-ニューラルネットワーク高速化のためのデジタル-IMCハイブリッドシステムアーキテクチャ 図1
  • 特許-ニューラルネットワーク高速化のためのデジタル-IMCハイブリッドシステムアーキテクチャ 図2
  • 特許-ニューラルネットワーク高速化のためのデジタル-IMCハイブリッドシステムアーキテクチャ 図3
  • 特許-ニューラルネットワーク高速化のためのデジタル-IMCハイブリッドシステムアーキテクチャ 図4
  • 特許-ニューラルネットワーク高速化のためのデジタル-IMCハイブリッドシステムアーキテクチャ 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-22
(45)【発行日】2024-04-01
(54)【発明の名称】ニューラルネットワーク高速化のためのデジタル-IMCハイブリッドシステムアーキテクチャ
(51)【国際特許分類】
   G06F 9/50 20060101AFI20240325BHJP
   G06N 3/063 20230101ALI20240325BHJP
【FI】
G06F9/50 150C
G06N3/063
【請求項の数】 20
(21)【出願番号】P 2022558045
(86)(22)【出願日】2021-03-23
(65)【公表番号】
(43)【公表日】2023-05-10
(86)【国際出願番号】 US2021023718
(87)【国際公開番号】W WO2021195104
(87)【国際公開日】2021-09-30
【審査請求日】2022-10-17
(31)【優先権主張番号】17/210,050
(32)【優先日】2021-03-23
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】62/993,548
(32)【優先日】2020-03-23
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】522375372
【氏名又は名称】メンティアム テクノロジーズ インコーポレイテッド
(74)【代理人】
【識別番号】110001427
【氏名又は名称】弁理士法人前田特許事務所
(72)【発明者】
【氏名】バヤット ファーヌード メリック
【審査官】渡辺 一帆
(56)【参考文献】
【文献】国際公開第2019/246064(WO,A1)
【文献】特開2012-247901(JP,A)
【文献】特表2020-503593(JP,A)
【文献】国際公開第2018/179873(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/50
G06N 3/02-3/10
(57)【特許請求の範囲】
【請求項1】
アプリケーションにおける計算を高速化するためのコンピュータにより実行される方法であって、前記方法のうちの少なくとも一部は1つ以上のプロセッサを備えているコンピューティングデバイスによって実行され、前記コンピュータにより実行される方法は、
計算のための入力データを評価することによって、前記入力データの中から、第1データ及び第2データを特定することであって
デジタルアクセラレータにおいて層を実行する効率、及びインメモリコンピューティングアクセラレータにおいて層を実行する効率が計算され、
前記デジタルアクセラレータにおいて層を実行する効率と、前記インメモリコンピューティングアクセラレータにおいて層を実行する効率とが比較され、
もし前記デジタルアクセラレータにおいて層を実行する効率が、前記インメモリコンピューティングアクセラレータにおいて層を実行する効率よりも高いなら、前記入力データが前記第1データであると特定され、
もし前記インメモリコンピューティングアクセラレータにおいて層を実行する効率が、前記デジタルアクセラレータにおいて層を実行する効率よりも高いなら、前記入力データが前記第2データであると特定される、
第1データ及び第2データを特定することと、
前記第1データを、処理のために、少なくとも1つのデジタルアクセラレータに送ることと、
前記第2データを、処理のために、少なくとも1つのインメモリコンピューティングアクセラレータに送ることと
を含む、コンピュータにより実行される方法。
【請求項2】
前記計算は、精度に対する影響の受けやすさについて評価され、
高いレベルの精度を要求すると判定された、計算のための前記入力データは、第1データとして特定され、
不正確さを許容すると判定された、計算のための前記入力データは、第2データとして特定される
請求項1に記載のコンピュータにより実行される方法。
【請求項3】
前記入力データは、ニューラルネットワークのネットワークパラメータ及び活性値を含み、
前記計算は、実装されるべき前記ニューラルネットワークの特定の層に関連している
請求項1に記載のコンピュータにより実行される方法。
【請求項4】
入力データを評価することは、前記ニューラルネットワークのそれぞれの層におけるネットワークパラメータの個数を計算することを含み、
より多い個数のネットワークパラメータを有する前記ニューラルネットワークの前記層は第2データと判定され、
より少ない個数のネットワークパラメータを有する前記ニューラルネットワークの前記層は第1データと判定される
請求項3に記載のコンピュータにより実行される方法。
【請求項5】
入力データを評価することは、ネットワークパラメータが前記ニューラルネットワークのそれぞれの層において再利用される回数を計算することを含み、
ネットワークパラメータの重みの再利用が多い、前記ニューラルネットワークの前記層は第1データと判定され、
ネットワークパラメータの重みの再利用が少ない、前記ニューラルネットワークの前記層は第2データと判定される
請求項3に記載のコンピュータにより実行される方法。
【請求項6】
前記少なくとも1つのデジタルアクセラレータ及び前記少なくとも1つのインメモリコンピューティングアクセラレータは、前記ニューラルネットワークの同じ層を実装するように構成されている
請求項3に記載のコンピュータにより実行される方法。
【請求項7】
前記少なくとも1つのデジタルアクセラレータは、第1ハイブリッドチップ上に配置された第1デジタルアクセラレータ、及び第2ハイブリッドチップ上に配置された第2デジタルアクセラレータを含み、
前記少なくとも1つのインメモリコンピューティングアクセラレータは、前記第1ハイブリッドチップ上に配置された第1インメモリコンピューティングアクセラレータ、及び前記第2ハイブリッドチップ上に配置された第2インメモリコンピューティングアクセラレータを含み、
前記第1ハイブリッドチップ及び前記第2ハイブリッドチップは、共有されたバスによって又はデイジーチェーン接続を通して、相互に接続されている
請求項1に記載のコンピュータにより実行される方法。
【請求項8】
セキュリティサーバの1つ以上のプロセッサによって実行された時に、前記セキュリティサーバに、アプリケーションにおいて計算を高速化するための方法を実行させる、1つ以上のコンピュータ読み取り可能な命令を含む、1つ以上の非一時的なコンピュータ読み取り可能な媒体であって、前記方法は、
計算のための入力データを評価して、前記入力データの中から、第1データ及び第2データを特定することであって
デジタルアクセラレータにおいて層を実行する効率、及びインメモリコンピューティングアクセラレータにおいて層を実行する効率が計算され、
前記デジタルアクセラレータにおいて層を実行する効率と、前記インメモリコンピューティングアクセラレータにおいて層を実行する効率とが比較され、
もし前記デジタルアクセラレータにおいて層を実行する効率が、前記インメモリコンピューティングアクセラレータにおいて層を実行する効率よりも高いなら、前記入力データが前記第1データであると特定され、
もし前記インメモリコンピューティングアクセラレータにおいて層を実行する効率が、前記デジタルアクセラレータにおいて層を実行する効率よりも高いなら、前記入力データが前記第2データであると特定される、
第1データ及び第2データを特定することと、
前記第1データを、処理のために、少なくとも1つのデジタルアクセラレータに送ることと、
前記第2データを、処理のために、少なくとも1つのインメモリコンピューティングアクセラレータに送ることと、
を含む媒体
【請求項9】
前記計算は、精度に対する影響の受けやすさについて評価され、
高いレベルの精度を要求すると判定された、計算のための前記入力データは、第1データとして特定され、
不正確さを許容すると判定された、計算のための前記入力データは、第2データとして特定される
請求項8に記載の1つ以上の非一時的なコンピュータ読み取り可能な媒体。
【請求項10】
前記入力データは、ニューラルネットワークのネットワークパラメータを含み、
前記計算は、実装されるべき前記ニューラルネットワークの特定の層に関連している、
請求項8に記載の1つ以上の非一時的なコンピュータ読み取り可能な媒体。
【請求項11】
入力データを評価することは、前記ニューラルネットワークのそれぞれの層におけるネットワークパラメータの個数を計算することを含み、
より多い個数のネットワークパラメータを有する前記ニューラルネットワークの前記層は第2データと判定され、
より少ない個数のネットワークパラメータを有する前記ニューラルネットワークの前記層は第1データと判定される
請求項10に記載の1つ以上の非一時的なコンピュータ読み取り可能な媒体。
【請求項12】
入力データを評価することは、ネットワークパラメータが前記ニューラルネットワークのそれぞれの層において再利用される回数を計算することを含み、
ネットワークパラメータの重みの再利用が多い、前記ニューラルネットワークの前記層は第1データと判定され、
ネットワークパラメータの重みの再利用が少ない、前記ニューラルネットワークの前記層は第2データと判定される
請求項10に記載の1つ以上の非一時的なコンピュータ読み取り可能な媒体。
【請求項13】
前記少なくとも1つのデジタルアクセラレータ及び前記少なくとも1つのインメモリコンピューティングアクセラレータは、前記ニューラルネットワークの同じ層を実装するように構成されている
請求項10に記載の1つ以上の非一時的なコンピュータ読み取り可能な媒体。
【請求項14】
前記少なくとも1つのデジタルアクセラレータは、第1ハイブリッドチップ上に配置された第1デジタルアクセラレータ及び第2ハイブリッドチップ上に配置された第2デジタルアクセラレータを含み、
前記少なくとも1つのインメモリコンピューティングアクセラレータは、前記第1ハイブリッドチップ上に配置された第1インメモリコンピューティングアクセラレータ及び前記第2ハイブリッドチップ上に配置された第2インメモリコンピューティングアクセラレータを含み、
前記第1ハイブリッドチップ及び前記第2ハイブリッドチップは、共有されたバスによって又はデイジーチェーン接続を通して、相互に接続されている
請求項8に記載の1つ以上の非一時的なコンピュータ読み取り可能な媒体。
【請求項15】
アプリケーションにおいて計算を高速化するためのシステムであって、前記システムは、
プログラムされた命令を格納するメモリと、
少なくとも1つのデジタルアクセラレータと、
少なくとも1つのインメモリコンピューティングアクセラレータと、
前記プログラムされた命令を実行することによって、
計算のための入力データを評価することによって、前記入力データの中から、第1データ及び第2データを特定することであって
デジタルアクセラレータにおいて層を実行する効率、及びインメモリコンピューティングアクセラレータにおいて層を実行する効率が計算され、
前記デジタルアクセラレータにおいて層を実行する効率と、前記インメモリコンピューティングアクセラレータにおいて層を実行する効率とが比較され、
もし前記デジタルアクセラレータにおいて層を実行する効率が、前記インメモリコンピューティングアクセラレータにおいて層を実行する効率よりも高いなら、前記入力データが前記第1データであると特定され、
もし前記インメモリコンピューティングアクセラレータにおいて層を実行する効率が、前記デジタルアクセラレータにおいて層を実行する効率よりも高いなら、前記入力データが前記第2データであると特定される、
第1データ及び第2データを特定することと、
前記第1データを、処理のために、前記少なくとも1つのデジタルアクセラレータに送ることと、
前記第2データを、処理のために、前記少なくとも1つのインメモリコンピューティングアクセラレータに送ることと、
を行うよう構成されたプロセッサと、
を備えるシステム。
【請求項16】
前記計算は、精度に対する影響の受けやすさについて評価され、
高いレベルの精度を要求すると判定された、計算のための前記入力データは、第1データとして特定され、
不正確さを許容すると判定された、計算のための前記入力データは、第2データとして特定される
請求項15に記載のシステム。
【請求項17】
前記入力データは、ニューラルネットワークのネットワークパラメータを含み、
前記計算は、実装されるべき前記ニューラルネットワークの特定の層に関連している
請求項15に記載のシステム。
【請求項18】
入力データを評価することは、前記ニューラルネットワークのそれぞれの層におけるネットワークパラメータの個数を計算することを含み、
より多い個数のネットワークパラメータを有する前記ニューラルネットワークの前記層は第2データと判定され、
より少ない個数のネットワークパラメータを有する前記ニューラルネットワークの前記層は第1データと判定される
請求項17に記載のシステム。
【請求項19】
入力データを評価することは、ネットワークパラメータが前記ニューラルネットワークのそれぞれの層において再利用される回数を計算することを含み、
ネットワークパラメータの重みの再利用が多い、前記ニューラルネットワークの前記層は第1データと判定され、
ネットワークパラメータの重みの再利用が少ない、前記ニューラルネットワークの前記層は第2データと判定される
請求項17に記載のシステム。
【請求項20】
前記少なくとも1つのデジタルアクセラレータは、第1ハイブリッドチップ上に配置された第1デジタルアクセラレータ、及び第2ハイブリッドチップ上に配置された第2デジタルアクセラレータを含み、
前記少なくとも1つのインメモリコンピューティングアクセラレータは、前記第1ハイブリッドチップ上に配置された第1インメモリコンピューティングアクセラレータ、及び前記第2ハイブリッドチップ上に配置された第2インメモリコンピューティングアクセラレータを含み、
前記第1ハイブリッドチップ及び前記第2ハイブリッドチップは、共有されたバスによって又はデイジーチェーン接続を通して、相互に接続されている
請求項15に記載のシステム。
【発明の詳細な説明】
【背景技術】
【0001】
機械学習及びディープニューラルネットワークアルゴリズムをクラウドにおいて実行することは、高レイテンシ、プライバシーに対する懸念、帯域幅の制限、高い電力要件などのような、多くの欠点を有し、そのため、これらのアルゴリズムをエッジにおいて実行することが、非常に好ましくなる。ニューラルネットワークベースのシステムは耐障害性が高いため、これらのアルゴリズムの内部計算はより低い精度において実行され得て、アナログつまりインメモリコンピューティング(IMC)とデジタルアクセラレータとの両方が、エッジにおいてAIアルゴリズムの高速化のために使用されるのを可能にする。しかし、エッジコンピューティングを扱うときに、最も限られたリソースは電力であるので、エッジアクセラレータを設計する際の主な目標は、電力消費をできる限り低く抑えることである。
【0002】
ほとんどのAIアクセラレータは、デジタル回路で設計されているが、それらは通常、主に、メモリのボトルネックとして知られている問題により、エッジにおける効率が低くなる。これらのアクセラレータでは、ネットワークパラメータのうちのほとんどはチップ上に記憶できないため、これらのパラメータは外部メモリから取得されなければならず、それは非常に大量の電力を消費する操作となる。これらのアクセラレータの効率は、例えばネットワークのプルーニング又は圧縮によって、もしネットワークパラメータの数が、オンチップメモリに収まり得るように減らされ得るなら、改善され得る。
【0003】
インメモリコンピューティングアクセラレータも、エッジにおいて、ディープニューラルネットワークのようなAIアルゴリズムの計算の実行に使用され得る。計算の精度は限られているにもかかわらず、これらのアクセラレータは通常、チップの周辺でネットワークパラメータを移動させないことによって、デジタルアクセラレータに比べて電力消費がはるかに少ない。これらのアクセラレータでは、計算は、ネットワークパラメータを格納している同一の物理デバイスを使用して行われる。しかし、これらのアクセラレータの効率は、アナログデジタルコンバータ(ADC)とデジタルアナログコンバータ(DAC)とのオーバーヘッドが大きいため、特定の種類のニューラルネットワークを実行するときに下がり得る。
【0004】
本開示で主張される主題は、任意の欠点を解決する実施形態又は上で述べられているような環境においてのみ動作する実施形態に限定されない。むしろ、この背景は、本開示に記載されているいくつかの実施形態が実行され得る技術分野の一例を説明するために提供されているに過ぎない。
【発明の概要】
【0005】
ある実施形態では、アプリケーションにおける計算を高速化するためのコンピュータにより実行される方法が開示される。前記方法のうちの少なくとも一部は1つ以上のプロセッサを備えているコンピューティングデバイスによって実行され得る。前記コンピュータにより実行される方法は、第1データ及び第2データを特定するために、計算のための入力データを評価することを含み得る。前記第1データは、デジタルアクセラレータによって、より効率的に処理されると判定されるデータであり得て、前記第2データは、インメモリコンピューティングアクセラレータによって、より効率的に処理されると判定されるデータであり得る。前記コンピュータにより実行される方法はまた、前記第1データを、処理のために、少なくとも1つのデジタルアクセラレータに送ることと、前記第2データを、処理のために、少なくとも1つのインメモリコンピューティングアクセラレータに送ることとを含み得る。
【0006】
いくつかの実施形態では、前記計算は、精度の影響の受けやすさについて評価され得る。高いレベルの精度を要求すると判定された入力データは、第1データとして特定され得て、不正確さを許容すると判定された入力データは、第2データとして特定され得る。
【0007】
いくつかの実施形態では、前記入力データは、ニューラルネットワークのネットワークパラメータ及び活性値を含み得て、前記計算は、実装されるべき前記ニューラルネットワークの特定の層に関連し得る。入力データを評価することは、前記ニューラルネットワークのそれぞれの層におけるネットワークパラメータの個数を計算することを含み得る。より多い個数のネットワークパラメータを有する前記ニューラルネットワークの前記層は第2データと判定され得て、より少ない個数のネットワークパラメータを有する前記ニューラルネットワークの前記層は第1データと判定され得る。他の実施形態では、入力データを評価することは、ネットワークパラメータが前記ニューラルネットワークのそれぞれの層において再利用される回数を計算することを含み得る。ネットワークパラメータの重みの再利用が多い、前記ニューラルネットワークの前記層は第1データと判定され得て、ネットワークパラメータの重みの再利用が少ない、前記ニューラルネットワークの前記層は第2データと判定され得る。他の実施形態では、前記少なくとも1つのデジタルアクセラレータ及び前記少なくとも1つのインメモリコンピューティングアクセラレータは、前記ニューラルネットワークの同じ層を実装するように構成され得る。
【0008】
いくつかの実施形態では、前記少なくとも1つのデジタルアクセラレータは、第1ハイブリッドチップ上に配置された第1デジタルアクセラレータ、及び第2ハイブリッドチップ上に配置された第2デジタルアクセラレータを含み得る。前記少なくとも1つのインメモリコンピューティングアクセラレータは、前記第1ハイブリッドチップ上に配置された第1インメモリコンピューティングアクセラレータ、及び前記第2ハイブリッドチップ上に配置された第2インメモリコンピューティングアクセラレータを含み得る。いくつかの実施形態では、前記第1ハイブリッドチップ及び前記第2ハイブリッドチップは、共有されたバスによって又はデイジーチェーン接続を通して、相互に接続され得る。
【0009】
いくつかの実施形態では、1つ以上の非一時的なコンピュータ読み取り可能な媒体は、リモートサーバデバイスの1つ以上のプロセッサによって実行された時に、前記リモートサーバデバイスに、アプリケーションにおいて計算を高速化するための方法を実行させる、1つ以上のコンピュータ読み取り可能な命令を含み得る。
【0010】
いくつかの実施形態では、リモートサーバデバイスは、プログラムされた命令を格納するメモリと、少なくとも1つのデジタルアクセラレータと、少なくとも1つのインメモリコンピューティングアクセラレータと、アプリケーションにおいて、計算を高速化するための方法を実行するためのプログラムされた命令を実行するように構成されたプロセッサとを含み得る。
【0011】
実施形態の目的及び利点は、少なくとも、特許請求の範囲において特に指摘されている要素、特徴、及び組み合わせによって実現及び達成される。前述の概要及び以下の詳細な説明の両方は、例示的なものであり、クレームされた本発明を限定するものではない。
【図面の簡単な説明】
【0012】
例示的な実施形態は、添付の図面の使用を通して、さらに具体的かつ詳細に記載及び説明される。
【0013】
図1図1は、AI又はディープニューラルネットワークアルゴリズムを実行するために、相互に動作する、デジタルのアクセラレータ及びインメモリコンピューティングアクセラレータの両方を持つデジタルインメモリコンピューティングアクセラレータの例示的なシステムアーキテクチャを図示する。
図2図2は、デジタルのアクセラレータ及びインメモリコンピューティングアクセラレータとの計算の負荷を分散するための例示的な方法を図示する。
図3図3は、単一のメインプロセッサ/コントローラが、全てのモジュール間で、共有されたバスを使用して、複数のハイブリッドアクセラレータチップを制御し供給するシステムの例を図示する。
図4図4は、単一のメインプロセッサ/コントローラが、デイジーチェーンの方法において相互に接続される複数のハイブリッドアクセラレータチップを制御し供給するシステムの例を図示する。
図5図5は、ハイブリッドアクセラレータのうちの1つが、他のスレーブアクセラレータモジュール/チップを制御するマスターコントローラ/プロセッサとして機能するハイブリッドアクセラレータに基づく、システムのスケールアップの例を図示する。
【発明を実施するための形態】
【0014】
本開示は、複数のデジタルアクセラレータ及び複数のインメモリコンピューティングアクセラレータからなる、ハイブリッドアクセラレータアーキテクチャを提供する。このコンピューティングシステムはまた、チップ内でのデータ移動を管理し動作をスケジューリングする内部コントローラ又は外部コントローラ又はプロセッサを含み得る。このハイブリッドアクセラレータは、機械学習プログラム又はディープニューラルネットワークのようなデータ又は計算負荷の高いアルゴリズムを高速化するように使用され得る。
【0015】
ある実施形態では、低電力ハイブリッドアクセラレータアーキテクチャは、機械学習及びニューラルネットワークの操作を高速化するために提供される。このアーキテクチャは、複数のデジタルアクセラレータ及び複数のインメモリコンピューティングアクセラレータを含み得る。このアーキテクチャは、内部メモリ又は外部メモリ、インターフェイス、ネットワークパラメータを格納するための不揮発性メモリ(NVM)モジュール、プロセッサ又はコントローラ、デジタルシグナルプロセッサ等のようなシステムの適切な動作に必要な他のモジュールを含んでもよい。
【0016】
内部マスターコントローラ又は外部マスターコントローラは、データを1つ以上のアクセラレータに送り処理させ得る。その計算の結果は、コントローラによって受け取られてもよく、又はメモリに直接に書き込まれてもよい。
【0017】
いくつかの実施形態では、ネットワークパラメータの数が少ないとき、又はネットワークパラメータの各セットが再利用される回数が多いときに、デジタルアクセラレータは高い効率を発揮するように設計され得る。これらの場合、アクセラレータ内に格納されているネットワークパラメータは、ネットワークパラメータの次のセットによって置換されるまで、大量の入力データを処理するために使用され得る。
【0018】
いくつかの他の実施形態では、インメモリコンピューティングアクセラレータは、ネットワークパラメータの個数が多いときに、高い効率を発揮するように設計され得る。これらの場合、ネットワークの特定の層のネットワークパラメータは、それらを一回、プログラミングすることによって1つ以上のインメモリコンピューティングアクセラレータ内に格納され得て、これらのアクセラレータは、ネットワークのこれらの特定の層のその後の実行のために使用され得る。
【0019】
いくつかの実施形態では、主要なソフトウェア又はコントローラは、システムが最も低い電力を消費しながらより高い効率に達するように、ニューラルネットワークのワークロードを、デジタルとインメモリコンピューティングアクセラレータとに分散させてもよい。パラメータが少ない層又は重みの再利用が多い層は、デジタルアクセラレータにマッピングされ得るが、パラメータが多い層は、インメモリコンピューティングアクセラレータにマッピングされ得る。それぞれのカテゴリ、すなわち、デジタル又はインメモリコンピューティングのアクセラレータでは、システムのスループットを向上するために、複数のアクセラレータが並列に使用され得る。
【0020】
いくつかの実施形態では、デジタル及びインメモリコンピューティングアクセラレータは、このハイブリッドシステムのスループットを増加させるために、互いにパイプライン処理されてもよい。
【0021】
いくつかの他の実施形態では、計算の精度に影響されやすいネットワークの層は、デジタルアクセラレータにおいて実装され得るが、不正確な計算を許容できる層は、インメモリコンピューティングアクセラレータにマッピングされ得る。
【0022】
いくつかの実施形態では、複数のハイブリッドアクセラレータは、システム全体の処理能力及びスループットを増加させるために、例えば、共有されたバスを使用することによって、又はデイジーチェーン接続を介して互いに接続され得る。別のホストプロセッサ又はハイブリッドアクセラレータのうちの1つが、システム全体を管理するための主要なコントローラとして機能してもよい。
【0023】
複数のデジタルアクセラレータ内の任意のデジタルアクセラレータは、共有されたバス又は独自の専用バスを使用して、プロセッサ、内部メモリ又は外部メモリ、又はバッファからデータを受信し得る。デジタルアクセラレータは、アクセラレータが実装しているニューラルネットワークの特定の層についての計算の実行のために必要なネットワークパラメータであり得るデータの別のセットを内部メモリ又は外部メモリから受け取ってもよい。それからアクセラレータは、アクセラレータに入力されている重みを使用して、入力されたデータに対してコントローラによって特定された計算を実行し、その結果を、外部メモリ又は内部メモリ又はバッファに送り返し得る。
【0024】
ニューラルネットワークのパラメータの個数が少ない時はいつでも、パラメータは、デジタルアクセラレータ内のバッファに一回転送されてもよい。それからアクセラレータは、同じ格納されたパラメータを使用して、ニューラルネットワークネットワークの層の特徴マップのような大量の入力されるデータを処理し得る。多数の入力データについて同一のパラメータを再利用する可能性があるので、メモリとアクセラレータとの間のネットワークパラメータの、頻繁に起こる大量の電力を消費する転送をなくすことによって、アクセラレータ及びシステムの効率を向上し得る。この場合、システムにおいて消費される電力は、入力データをアクセラレータに転送するために消費される電力と、計算を実行するためにアクセラレータによって消費される電力との合計であり得る。ネットワークパラメータをアクセラレータに転送するために消費される電力は、このパラメータが多数の入力データを処理するために使用されているので、無視できる。
【0025】
もしネットワークパラメータの個数が、入力データの個数又はアクセラレータに転送された後にアクセラレータがパラメータのそれぞれのセットを再利用する回数と比較して多くなると、デジタルアクセラレータの効率は低下し得る。この状況では、ネットワークパラメータをメモリからアクセラレータに転送するために消費される無駄な電力は、入力データをアクセラレータに転送してアクセラレータ内で計算を実行するために消費される電力の合計と同等又はそれより大きくなる。外部メモリにアクセスすることは、SRAM(Static Random Access Memory)のような内部メモリにアクセスするより、より多くの電力を消費するので、もしネットワークパラメータが外部メモリに格納されているなら、効率は急速に低下し得る。
【0026】
複数のインメモリコンピューティングアクセラレータ内の任意のインメモリコンピューティングアクセラレータ(デジタル、アナログ又はそれらが混在する信号のいずれか)は、共有されたバス又は独自の専用バスを使用して、プロセッサ、内部メモリ又は外部メモリ、又はバッファからデータを受け取り得る。インメモリコンピューティングアクセラレータは、アクセラレータが実装しているニューラルネットワークの特定の層についての計算の実行のために必要なネットワークパラメータをそれ自体に格納してもよい(オンタイムのプログラミング又は不定期のリフレッシュのどちらかを通して)。それからアクセラレータは、アクセラレータに入力された重みを使用して、入力されたデータに対してコントローラによって特定された計算を実行し、その結果を、外部メモリ又は内部メモリ又はバッファに送り返し得る。
【0027】
ニューラルネットワークのパラメータの個数が多い時はいつでも、インメモリコンピューティングアクセラレータは、これらのネットワークパラメータを用いてプログラミングをするのは1回であり得る。それからアクセラレータは、同じ格納されたパラメータを使用して、ニューラルネットワークネットワークの層の特徴マップのような大量の入力されるデータを処理し得る。複数の入力データについて多数のパラメータを再利用する可能性があるので、メモリとアクセラレータとの間のネットワークパラメータの、大量の電力を消費する、頻繁に起こる転送をなくすことによって、アクセラレータ及びシステムの効率を向上し得る。この場合、システムにおいて消費される電力は、入力データをアクセラレータに転送するために消費される電力と、計算を実行するためにアクセラレータによって消費される電力との合計であり得る。ネットワークパラメータをインメモリコンピューティングアクセラレータに転送するために消費される電力は無視できるが、それは、このパラメータが転送される頻度が非常に低いかもしれず、このパラメータは、多数の入力データを処理するためにアクセラレータにおいて使用され得るからである。
【0028】
インメモリコンピューティングアクセラレータの効率は、もしネットワークパラメータの個数が少なければ、低下し得る。この状況では、ADC(Analog to Digital Converter)、DAC(Digital to Analog Converter)などのようなインメモリコンピューティングアクセラレータの内部の周辺回路によって消費される電力は、入力データをアクセラレータに転送して、アクセラレータ内で計算を実行するために消費される電力の合計より、より大きくなり得る。パラメータの個数が少ないほど、インメモリコンピューティングアクセラレータにおける計算の効率は低下し得る。
【0029】
ソフトウェアプログラム及び/又はメインコントローラ/プロセッサは、ニューラルネットワークの1つの層のワークロードを、1つ又は複数のデジタルアクセラレータ又はIMCアクセラレータの間で分散し得る。パラメータの個数が少なく、又は同じパラメータが多数の活性化データを処理するために使用されるニューラルネットワークの層については、コントローラは、最大の効率と最小の電力消費とを得るように、デジタルアクセラレータ内で層を実行し得る。もしパラメータの個数が単一のデジタルアクセラレータ内に収まることができる数より多いなら、又はその層の実行を高速化するために、コントローラは、層を実行するために2つ以上のデジタルアクセラレータを並列して使用し得る。
【0030】
いくつかの実施形態では、複数のデジタルアクセラレータは、多数の活性値(activation)に対しての単一の操作の実行を高速化するために、完全に同一の操作を実行するように使用され得る。他の実施形態では、単一の大きな層は、それぞれのセクションがデジタルアクセラレータのうちの1つにおいてマッピングされ実装される、複数の部分に分割されてもよい。
【0031】
パラメータの個数が多いニューラルネットワークの層については、コントローラは、その電力消費を抑えつつ、インメモリコンピューティングアクセラレータ内にネットワークパラメータを格納し得て、システム効率を最大にするように、アクセラレータを使用して層を実行し得る。もし、パラメータの個数がインメモリコンピューティングアクセラレータの全体の容量より少ないなら、複数の層が同じアクセラレータにマッピングされ得る。他方で、もしパラメータの個数が単一のインメモリコンピューティングアクセラレータ内に収まることができる数より多いなら、又は層の実行を高速化するためなら、コントローラは、層を実行するために2つ以上のインメモリコンピューティングアクセラレータを並列して使用し得る。
【0032】
いくつかの実施形態では、複数のインメモリコンピューティングアクセラレータは、多数の活性値に対しての単一の操作の実行を高速化するために、完全に同一の操作を実行するように使用され得る。他の実施形態では、単一の大きな層は、それぞれのセクションがインメモリコンピューティングアクセラレータのうちの1つにおいてマッピングされ実装される、複数の部分に分割されてもよい。
【0033】
異なる大きさ及び種類を持つ複数の層からなるニューラルネットワーク全体を実装するために、コントローラは、層の仕様に基づいて、デジタルのアクセラレータとインメモリコンピューティングアクセラレータとの間で計算及び層を分散して、システムによって消費される総電力を最小限に抑え得る。例えば、ホストコントローラは、パラメータの個数は少ないが活性化画素数(activation pixels)は多いネットワークの層(畳み込みネットワークのうちの第1層のような)を、1つ以上のデジタルアクセラレータにマッピングし得るが、パラメータの個数が多い層(全結合層又は最後の畳み込み層のような)は、1つ以上のインメモリコンピューティングアクセラレータにマッピングされる。
【0034】
いくつかの実施形態では、ハイブリッドアクセラレータは、アクセラレータの適切な動作のために必要とされるデジタルシグナルプロセッサ、外部インターフェイス、フラッシュメモリ、SRAM等のような他のモジュールも含み得る。
【0035】
デジタルアクセラレータの実装のためには、シストリックアレイ、ニアメモリコンピューティング、GPU(Graphics Processing Unit)ベースのアーキテクチャ又はFPGA(Field Programmable Gate Array)ベースのアーキテクチャ等を含むがこれらには限定されない、異なる技術及びアーキテクチャが使用され得る。
【0036】
インメモリコンピューティングアクセラレータを実装するためには、他の技術及びアーキテクチャも使用され得る。これらの技術は、フラッシュトランジスタ、RRAM(Resistive Random Access Memory)、MRAM(Magnetoresistive Random Access Memory)等のようなメモリデバイス技術に基づくアナログのアクセラレータを含んでもよいがこれらに限定されるものではなく、又は、それらはSRAMセル又はラッチのようなデジタルメモリ素子を使用しているデジタル回路に基づくものであってもよい。
【0037】
いくつかの実施形態では、デジタルのアクセラレータ及びインメモリコンピューティングアクセラレータは、同じダイ上に、同じ技術で製造されてもよい。他の実施形態では、インメモリコンピューティングアクセラレータ及びデジタルのアクセラレータは、異なる技術で製造され外部で接続されてもよい。例えば、デジタルアクセラレータは、5 nmプロセスを使用して製造され得るが、インメモリコンピューティングアクセラレータは、22 nmプロセスにおいて製造され得る。
【0038】
ホストプロセッサ又はコントローラが、統合された、かつ強力なアクセラレータを有しているいくつかの実施形態では、ホストプロセッサを複数のインメモリコンピューティングアクセラレータに内部又は外部で接続することによって、ハイブリッドシステムが構築され得る。
【0039】
いくつかの実施形態では、これらのアクセラレータのそれぞれは、共有されたバスを通して、コントローラ又はメモリと通信し得る。他の実施形態では、2つの共有されたバスが存在してもよく、一方はデジタルアクセラレータ用であり、他方はインメモリコンピューティングアクセラレータ用である。さらに別の実施形態では、それぞれの個々のアクセラレータは、それ自身のバスを通して、コントローラ又はメモリと通信し得る。
【0040】
いくつかの実施形態では、デジタル又はインメモリコンピューティングのいずれかのカテゴリにおける全てのアクセラレータは、同じ大きさを有してもよい。他の実施形態では、異なるアクセラレータは異なる大きさを有し得るので、それらは、異なる速度及び効率でニューラルネットワークの異なる層を実装し得る。
【0041】
ニューラルネットワークは、計算の精度に対して非常に影響を受けやすいというわけではないので、異なるデジタルのアクセラレータ又は異なるインメモリコンピューティングアクセラレータは、異なる精度において計算を実行し得る。いくつかの実施形態では、これらのアクセラレータは、その計算の精度を、それらが実装している層の影響の受けやすさ(sensitivity)に基づいて、オンザフライで当該計算の精度に調節し得るように設計され得る。他の実施形態では、計算の精度の影響を受けやすい層は、デジタルアクセラレータにおいて実装されてもよいが、一方で、インメモリコンピューティングアクセラレータは、不正確な計算を許容できる層を実行するために使用されてもよい。
【0042】
いくつかの実施形態では、ソフトウェア又はメインコントローラは、高いスループットを発揮するために、デジタルのアクセラレータとインメモリコンピューティングアクセラレータとの両方を、並列に使用し得る。これらのアクセラレータは、ネットワークの同じ層を実装するために、協働してもよく、又はネットワークの異なる層を実装するためにパイプラインとして構成されてもよい。
【0043】
いくつかの実施形態では、このハイブリッドアクセラレータアーキテクチャは、機械学習及びニューラルネットワーク以外のアプリケーションにおける計算を高速化するために使用され得る。
【0044】
いくつかの実施形態では、ハイブリッドプロセッシングアクセラレータは、複数のこれらのハイブリッドアクセラレータを相互に接続することによって、スケールアップされ得る。ハイブリッドアクセラレータは、共有されたバスを通して、又はデイジーチェーン配線を通して、互いに接続され得る。ハイブリッドアクセラレータとデータ移動とを制御する別のホストプロセッサが存在してもよいし、又はハイブリッドアクセラレータのうちの1つが、他のスレーブアクセラレータを制御するマスターとして機能してもよい。
【0045】
これらのハイブリッドアクセラレータのそれぞれは、スタンドアロンチップとして動作することを可能にする、それ自身のコントローラ/プロセッサを有してもよい。他の実施形態では、ハイブリッドアクセラレータは、それらを制御するためのマスターホストを必要とするコプロセッサとして動作してもよい。
【0046】
チップ面積を最小限に抑えるために、ハイブリッドアクセラレータは、ネットワークパラメータをチップ上に格納するために、不揮発性メモリ(NVM)を含み得る。それぞれのネットワークパラメータは、さらに大きい面積を節約するために、1つ又は2つのメモリデバイスに、アナログ形式で格納されてもよい。これによって、いかなるコストのかかる外部メモリアクセスも有する必要がなくなり得る。
【0047】
いくつかの実施形態では、1つのアクセラレータによって生成された結果は、別のアクセラレータの入力に、直接にルーティングされてもよい。メモリへの結果の転送をスキップすることによって、更に省電力になり得る。
【0048】
図1は、共有された又は分散されたバス104を通じて、メインコントローラ/プロセッサ101に互いに接続される、複数のデジタルアクセラレータ103及び複数のインメモリコンピューティングアクセラレータ102からなるハイブリッドアクセラレータ100の例を図示する。このシステムは、インターフェイス105、ローカルメモリ又は中央メモリ106、NVMアナログ/デジタルメモリモジュール107、外部メモリアクセスバス108等のような、システムの適切な機能に必要な他のモジュールも含み得る。ハイブリッドアクセラレータは、ディープニューラルネットワーク、機械学習アルゴリズム等の動作を高速化するために使用され得る。
【0049】
複数のデジタルアクセラレータ103における任意のデジタルアクセラレータ(Di)又は複数のIMC(インメモリコンピューティング)アクセラレータ102における任意のIMCアクセラレータ(Ai)は、中央メモリ106のような内部メモリから、又は外部メモリ(不図示)、又はプロセッサ/コントローラ101から、又はDi又はAiアクセラレータの内部メモリ又はバッファのいずれかから直接に、入力を受け取り、内部又は外部メモリに、又はプロセッサ/コントローラ101に、又はDi又はAiアクセラレータのうちの任意のものから直接に、計算の結果を送り返し得る。
【0050】
ホスト又はマスターコントローラ/プロセッサ101の主要なソフトウェアは、その層が実装されている仕様に基づいて、ニューラルネットワークを実装することのワークロードを、デジタルのアクセラレータとインメモリコンピューティングアクセラレータとの間で分散させてもよい。もし実装されているニューラルネットワークの層が、少ない個数のパラメータを有するか、又は重みの再利用が多数回に及ぶ多数の活性値を有しているなら、ホストプロセッサのソフトウェアは、電力消費を最小限に抑えることによってシステム効率を最大にするために、デジタルアクセラレータ103において層をマッピングして実装し得る。この場合、実装されている層の重み又はパラメータは、内部メモリ又は外部メモリから、1つ以上のデジタルアクセラレータ103に転送され得て、層の実行全体にわたりそこに保持されることになる。それから、ソフトウェア又はホストプロセッサ101は、層を実行するために、層の活性値入力をプログラムされたデジタルアクセラレータ103に送る。ネットワークパラメータをこれらのデジタルアクセラレータ103に転送するために使用される時間及び電力は、活性値データを転送するために、又は層の計算を実行するために消費される時間及び電力に比べて無視できるので、デジタルアクセラレータ103においてこれらの層を実装すれば、非常に高い効率を達成できる。
【0051】
もし、多数のネットワークパラメータを持つ層又はネットワークパラメータの再利用が少ない層がこれらのデジタルアクセラレータ103において実装されているなら、デジタルアクセラレータ103の効率は低下し得る。これらの状況では、デジタルアクセラレータ103によって消費される電力は、実際の計算を実行するような有益なタスクを行うために消費される電力よりむしろ、ネットワークパラメータをメモリからアクセラレータに転送するために消費される電力によって支配され得る。
【0052】
一方で、もし実装されているニューラルネットワークの層が、多くの個数のパラメータを有するなら、ホストプロセッサのソフトウェアは、チップの周辺でネットワークパラメータを何度も動かすために消費される電力をなくすことによってシステム効率を最大にするために、インメモリコンピューティングアクセラレータ102において層をマッピングして実装し得る。この場合、実装されている層の重み又はパラメータは、内部メモリ又は外部メモリから一度だけ転送され得て、1つ以上のインメモリコンピューティングアクセラレータ102にプログラムされ、永久的にそこに保持されることになる。いったんプログラムされると、これらのインメモリコンピューティングアクセラレータ102は、特定の層の実行のために使用され得る。ソフトウェア又はホストプロセッサ101は、層を実行するために、層の活性値入力を、プログラムされたインメモリコンピューティングアクセラレータ102に送り得る。ネットワークパラメータをこれらのインメモリコンピューティングアクセラレータ102に繰り返し転送するためには時間も電力も費やされないので、これらの層をインメモリコンピューティングアクセラレータ102において実装することは、非常に高い効率を達成し得る。
【0053】
もし、ネットワークパラメータの個数の少ない層がこれらのアクセラレータにおいて実装されているなら、インメモリコンピューティングアクセラレータ102の効率は低下し得る。この状況では、インメモリコンピューティングアクセラレータ102によって消費される電力は、実際の計算を行うような有益なタスクを実行するために使用される電力ではなく、ADC(Analog to Digital Converter)及びDAC(Digital to Analog Converter)のような周辺回路において消費される電力によって支配され得る。
【0054】
ソフトウェア又はホストコントローラ101は、チップの効率を最大にするために、又はその電力消費を最小にするために、ワークロードをデジタルアクセラレータ103と、インメモリコンピューティングアクセラレータ102とに分散させることによって、ニューラルネットワーク全体を実装し得る。ソフトウェア又はホストコントローラ101は、重みの再利用が多数回に及ぶ、又はネットワークパラメータの個数が少ないネットワークの層をデジタルアクセラレータ103にマッピングし得て、一方で、パラメータの個数が多い層は、インメモリコンピューティングアクセラレータ102にマッピングされる。それぞれのアクセラレータのグループ(デジタル又はインメモリコンピューティング)において、複数のアクセラレータは、チップの速度及びスループットを向上させるために、協働し得て、並列になり得る。
【0055】
ハイブリッドアクセラレータアーキテクチャにおいて、異なる、デジタルのアクセラレータ又はインメモリコンピューティングアクセラレータは、同じ精度において又は異なる精度において計算を実行し得る。例えば、デジタルアクセラレータ103は、インメモリコンピューティングアクセラレータ102よりも、より高い精度で計算を実行し得る。全てのデジタルアクセラレータ103の間でさえ、いくつかの個々のアクセラレータDiは、その他よりもより高い精度を有し得る。ソフトウェア又はホストコントローラ101は、それぞれのニューラルネットワークの層の、計算の精度の影響の受けやすさに基づいて、電力消費をできるだけ低く抑えながら、層を、所望の精度レベルを満たす特定のアクセラレータにマッピングし得る。
【0056】
外部メモリアクセスバス108又はインターフェイスモジュール105を使用して、外部メモリからネットワークパラメータにアクセスするコストのかかる動作を最小限に抑えるために、ハイブリッドアーキテクチャは、デジタルアクセラレータ上で実装されるニューラルネットワークの層の重みを格納するために、SRAMのような小容量のオンチップメモリを有し得る。この場合には、それぞれの推論について、重みはオンチップメモリから取得され得て、このことは大容量の外部メモリにアクセスするより少ない電力しか要求されないかもしれない。
【0057】
NVMメモリモジュール107は、デジタルアクセラレータ103にマッピングされているニューラルネットワークの層の重みを格納するために使用され得る。これらのメモリはSRAMより遅いが、チップの面積を減少させるために使用され得る。面積は、複数ビットの情報をそれぞれのNVMメモリセルに格納することによって、さらに減少され得る。
【0058】
ソフトウェア又はホストプロセッサ101は、チップの効率を下げるという犠牲を払って、推論を高速化し、チップのスループット向上させるために、デジタルアクセラレータ103及びインメモリコンピューティングアクセラレータ102の両方に、ニューラルネットワークの層を実装し得る。
【0059】
デジタルアクセラレータ103は、シストリックアレイ、FPGA(Field Programmable Gate Array)のような、つまり再構成可能なアーキテクチャ、ニアメモリコンピューティング又はインメモリコンピューティング方法論等のような、任意の技術又は設計アーキテクチャに基づいて実装され得る。それらは純粋なデジタル回路に基づいてもよく、又は混合信号回路に基づいて実装されてもよい。
【0060】
インメモリコンピューティングアクセラレータ102は、任意の技術又は設計アーキテクチャに基づいて実装され得る。それらは、ネットワークパラメータを格納するメモリデバイスとして動作するSRAMセルを使用して実装されてもよいし、又はそれらはRRAM、PCM(Pulse Code Modulation)、MRAM、フラッシュ、メモリスタ等のようなNVMメモリデバイスデバイス技術を使用して実装されてもよい。それらは、複数のデジタル又はアナログ回路に基づいてもよいし又はそれらが混在する信号に基づいてもよい。
【0061】
チップ周辺のデータの移動だけでなく、チップ内での操作を管理しているメイン又はホストプロセッサ/コントローラ101は、チップ内に存在してもよいし、又はハイブリッドアクセラレータを制御するマスターチップとして動作する別のチップに置かれてもよい。
【0062】
デジタルアクセラレータ103又はインメモリコンピューティングアクセラレータ102は全て、同じ大きさ又は異なる大きさを有し得る。異なる大きさのアクセラレータを有することで、チップがより高い効率を達成し得る。この場合、ソフトウェア又はメインコントローラ101は、実装されている層の大きさに最も近い大きさを有するアクセラレータ上に、ネットワークのそれぞれの層を実装し得る。
【0063】
ハイブリッドアクセラレータ100は、スタンドアロンチップとして動作してもよく、又は別のホストプロセッサとともに制御されるコプロセッサとして動作してもよい。
【0064】
デジタル及びインメモリコンピューティングアクセラレータ103及び102を実装するために使用されている技術に依存して、これらのアクセラレータは、単一のダイ上で製造されてもよいしされなくてもよい。異なるダイ上で製造されるとき、アクセラレータは、インターフェイスを通して互いに通信し得る。
【0065】
ソフトウェア又はホストプロセッサ101は、システムのスループットを向上させるために、デジタルアクセラレータ103及びインメモリコンピューティングアクセラレータ102をパイプライン構成にし得る。この場合、例えば、デジタルアクセラレータ103は、所与のニューラルネットワークの層Liを実装しているが、インメモリコンピューティングアクセラレータ102は、Li+1層の計算を実行し得る。同様のパイプライン処理技術は、スループットを向上させるために、デジタルのアクセラレータ又はインメモリコンピューティングアクセラレータ103及び102の間に、同様に実装され得る。例えば、第1デジタルアクセラレータDiはLi層を実装し得て、一方、第2デジタルアクセラレータDi+1はLi+1層を実装し得えて、以下同様である。
【0066】
図2は、ニューラルネットワークの層を、どのようにデジタルのアクセラレータ及びインメモリコンピューティングアクセラレータにマッピングするかを決定するための、方法200の例のフロー図である。この方法は、アクション22において、Li層における重みの個数を計算することを含み得る。このステップにおいて、所与のニューラルネットワークにおけるそれぞれのLi層については、ネットワークパラメータの個数及び活性値データのストリーム上で計算を行うためにこれらのパラメータが再利用される回数が計算される。さらに、メモリアクセスの必要とされる回数も、このステップにおいて計算される。
【0067】
方法200は、アクション24において、デジタルアクセラレータにおいて実装されるときのLi層の効率(EDigitalと表記される)又はインメモリコンピューティングアクセラレータにおいて実装されるときのLi層の効率(EIMCと表記される)を計算することを含み得る。アクション22において計算された個数及びデジタルアクセラレータ及びインメモリコンピューティングアクセラレータの公称効率を使用して、ソフトウェア又はメインコントローラは、1つ以上のデジタルアクセラレータにおいて実装されるときの任意の所与の層の効率と、それに加えて1つ以上のインメモリコンピューティングアクセラレータにおいて実装されるときの任意の所与の層の効率も計算し得る。
【0068】
方法200は、アクション26において、デジタルアクセラレータにおいてLi層を実装する効率を、インメモリコンピューティングアクセラレータにおいてLi層を実装する効率と比較し得る。もしデジタルアクセラレータにおいてLi層を実装することがより効率的なら、アクション30における方法200は、この層をデジタルアクセラレータにマッピングし得る。一方で、もしインメモリコンピューティングアクセラレータにおいてこの層を実装する効率が、デジタルアクセラレータにおいて実装する効率より高いなら、アクション28において、この方法は、層をインメモリコンピューティングアクセラレータにマッピングし得る。
【0069】
図3は、符号100のハイブリッドアクセラレータが、共有された又は分散されたバス304を使用して、それらを互いに接続することによってスケールアップされ得る方法の例を図示する。この構成において、メインプロセッサ/コントローラ302は、全てのハイブリッドアクセラレータ303を制御し得て、ネットワークの層を異なるチップにマッピングし得て、アクセラレータと外部メモリ301との間のデータの移動を管理し得て、最小限の電力しか消費しない状態で、システムがスムーズに動作することを確実にし得る。メインメモリ301は外部メモリであってもよいし、又はハイブリッドアクセラレータ303の内部に存在しているメモリの組み合わせであってもよい。
【0070】
いくつかの実施形態では、ハイブリッドアクセラレータのうちの1つは、他のハイブリッドアクセラレータを制御しているメインプロセッサ302の代替となるメインチップ又はマスターチップとして機能し得る。
【0071】
いくつかの実施形態では、メインコントローラは、ニューラルネットワークの単一の層を、複数のハイブリッドアクセラレータにマッピングし得る。いくつかの他の実施形態では、メインコントローラは、推論のスピードを高速化させるために、それが並列で動作するように、同じ層を複数のハイブリッドアクセラレータにマッピングし得る。さらに別の実施形態では、コントローラは、ネットワークの異なる層を、異なるハイブリッドアクセラレータ上にマッピングし得る。加えて、ホストコントローラは、より大規模なニューラルネットワークを実装するために、複数のアクセラレータを使用し得る。
【0072】
図4は、符号100のハイブリッドアクセラレータが、複数のハイブリッドアクセラレータが互いにデイジーチェーン接続されることによって、スケールアップされ得る方法の例を図示する。ハイブリッドアクセラレータ403のそれぞれは、メインメモリ401に直接的にアクセスし得るか、又はメインプロセッサ402を介して間接的にアクセスし得る。ハイブリッドアクセラレータ403は、メインプロセッサ402によって制御されるコプロセッサとして機能し得る。メインプロセッサ402によって送られるコマンド及びデータは、データを次のチップに渡すそれぞれのチップによって、対象とされるハイブリッドアクセラレータに伝送され得る。
【0073】
図5は、計算システムをスケールアップするために、ハイブリッドアクセラレータを相互に接続するための別の構成を図示する。この構成において、ハイブリッドアクセラレータ501のうちの1つは、他のアクセラレータ502を制御するホストモジュールつまりマスターモジュールとして機能し得る。メインハイブリッドアクセラレータ501は、データ移動を管理し、ニューラルネットワークを、それぞれのハイブリッドアクセラレータの内部の異なるアクセラレータ502にマッピングする責任を有し得る。ハイブリッドアクセラレータと外部メモリとの間の通信は、直接に行われてもよいし、又はマスターハイブリッドチップ501を介して行われてもよい。
【0074】
一般的な実務に従って、図面に図示されているさまざまな特徴部分は、縮尺どおりに描かれていないかもしれない。本開示において提示されている図は、任意の特定の装置(例えば、デバイス、システム等)又は方法の実際の図であることを意図するものではなく、本開示のさまざまな実施形態を説明するために使用される例示的表現にすぎない。したがって、さまざまな特徴部分の寸法は、明瞭さのために、任意に拡大又は縮小され得る。加えて、図面のうちのいくつかは、明瞭さのために簡略化されてもよい。よって、図面は、所与の装置(例えば、デバイス)の全ての要素又は特定の方法の全ての操作を描写していなくてもよい。
【0075】
本明細書で使用されている用語、特に、添付の特許請求の範囲(例えば、添付の特許請求の範囲の本文)で使用されている用語は、一般的には、「排他的ではない」用語として意図される(例えば、「含んでいる」という用語は「含んでいるがこれに限定されない」と解釈されるべきであり、「有している」という用語は「少なくとも有している」と解釈されるべきであり、「含む」という用語は「含むがこれに限定されない」と解釈されるべきである、等)。
【0076】
加えて、もし導入された請求項の記載の特定の数が意図されるなら、そのような意図は、請求項において明示的に記載されるのであり、そのような記載がない場合は、そのような意図は存在しない。例えば、理解の助けとして、以下に添付の請求項は、請求項の記載を導入するために、「少なくとも1つ」及び「1つ以上」という導入句の使用を含み得る。しかし、そのような語句の使用は、同じ請求項が「1つ以上」又は「少なくとも1つ」という導入句、及び「a」又は「an」のような不定冠詞を含むときでさえ、不定冠詞「a」又は「an」による請求項の記載の導入が、そのように導入されている請求項の記載を含む任意の特定の請求項を、そのような記載のみを含む実施形態に限定することを意味すると解釈されるべきではない(例えば、「a」及び/又は「an」は、「少なくとも1つ」又は「1つ以上」を意味すると解釈されるべきである)。請求項の記載を導入するために使用される定冠詞の使用についても同様である。
【0077】
加えて、導入された請求項の記載の特定の数が明示的に記載されている場合でさえも、そのような記載は、少なくとも記載された数を意味すると解釈されるべきであることが理解されよう(例えば、他の修飾語句のない「2つの記載」という修飾なしの記載は、少なくとも2つの記載、又は2つ以上の記載を意味する)。さらに、「A、B、及びCのうちの少なくとも1つ、等」又は、「A、B、及びCのうちの少なくとも1つ以上、等」類似の規定が適用される場合には、一般には、そのような構成は、Aのみ、Bのみ、Cのみ、A及びBの両方、A及びCの両方、B及びCの両方、又は、A、B、及びCの全て、等を含むことを意図する。例えば、「及び/又は」という用語の使用は、このように解釈されることを意図する。
【0078】
さらに、2つ以上の選択的な語を提示する、任意の選言的な語又は句は、要約書、明細書、特許請求の範囲、又は図面のいずれに存在するかに関わらず、語のうちの1つ、語のうちのいずれか、又は両方の語を含む可能性を想定するものと理解されるべきである。例えば、「A又はB」という表現は、「A」又は「B」又は「A及びB」の可能性を含むと理解されるべきである。
【0079】
加えて、「第1の」、「第2の」、「第3の」等の語の使用は、本明細書においては、必ずしも、要素群の特定の順序又は数を意味するために使用されているのではない。一般に、「第1の」、「第2の」、「第3の」等の語は、一般的な識別子として、異なる要素を区別するために使用される。「第1の」、「第2の」、「第3の」等の語が、特定の順序を意味することを示していない場合、これらの語は特定の順序を意味するものと理解されるべきではない。さらに、「第1の」、「第2の」、「第3の」等の語が、要素の特定の数を意味することを示していない場合、これらの語は要素群の特定の個数を意味するものと理解されるべきではない。例えば、第1部材は第1側面を有すると記載され得て、第2部材は第2側面を有すると記載され得る。第2部材に関する「第2側面」という用語の使用は、第2部材の当該側面を、第1部材の「第1側面」と区別するためのものであり得て、第2部材が2つの側面を有することを意味するためのものではないかもしれない。
【0080】
前述の記載は、説明の目的で、具体的な実施形態を参照して記載されてきた。しかし、上の例示的な説明は、網羅的であることは意図されず、クレームされた本発明を、開示されているのと全く同じかたちに限定することは意図されない。多くの改変及び変形が、上の教示を鑑みれば可能である。これら実施形態は、実際的な応用例を説明するために選択及び記載され、それによって、クレームされた本発明と、想定された具体的な使用に適するようにさまざまな改変を加えたさまざまな実施形態とを当業者が利用できるようにする。
図1
図2
図3
図4
図5