図面 (/)

技術 処理装置及び推論処理方法

出願人 株式会社アクセル
発明者 客野一樹
出願日 2020年4月17日 (9ヶ月経過) 出願番号 2020-074381
公開日 2020年8月13日 (6ヶ月経過) 公開番号 2020-123384
状態 未査定
技術分野 学習型計算機
主要キーワード 展開ユニット ニューラルネットワーク構造 処理レイヤ 部分処理 不揮発性記憶デバイス 入力チャンネル数 入力画像フォーマット ニューロコンピュータ
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2020年8月13日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (8)

課題

推論処理に必要なメモリの容量を低減できるようにする。

解決手段

処理対象データに対して、推論処理を実行する処理装置100において、推論処理を構成する複数の処理レイヤー(レイヤー1〜レイヤーN)におけるそれぞれの部分処理を実行する複数の処理部(11−1〜11−n)と、推論処理を構成する複数の処理レイヤーにおける部分処理に使用される処理係数に対応する処理係数情報が処理レイヤーの実行順に従って並べられたストリームデータを取得し、ストリームデータから処理係数情報を取出し、処理係数情報に対応する処理係数を使用する処理部(11−1〜11−n)に対して、処理係数情報に対応する処理係数を供給する処理制御部10と、を備えるように構成する。

概要

背景

従来、画像認識等の推論処理を行うために、畳み込みニューラルネットワークCNN:Convolutional Neural Network)を実装した計算機が用いられている。計算機においてCNNを実装する場合においては、ディープラーニング等によって予め得られたCNNで使用する係数を含む学習済みデータを計算機のメインメモリに無歪(非圧縮)の状態で格納させるか、或いは、単純なベクトル量子化された状態で格納させている。

例えば、学習済みデータは、ネットワークを介して計算機に対して提供される場合がある。学習済みデータは、例えば、無歪の状態であれば、200MB等のように比較的データサイズが大きいので、ネットワークを介して送信すると、ネットワークに負荷がかかると共に、送信コストが高くなるという問題がある。

これに対して、例えば、学習済みデータを圧縮して送信する技術が提案されている(例えば、非特許文献1参照)。

なお、ノイマン型の計算機と異なるニューロコンピュータにおいて、メモリ空間を有効活用する技術として、従来のニューロコンピュータに、主メモリユニット圧縮ユニット展開ユニットを付加し、16ビット重み値入力データを4段階に分類し、出現頻度の高い順に低位ビットに割当てることにより、データ圧縮を行う技術が知られている(例えば、特許文献1参照)。

概要

推論処理に必要なメモリの容量を低減できるようにする。処理対象データに対して、推論処理を実行する処理装置100において、推論処理を構成する複数の処理レイヤー(レイヤー1〜レイヤーN)におけるそれぞれの部分処理を実行する複数の処理部(11−1〜11−n)と、推論処理を構成する複数の処理レイヤーにおける部分処理に使用される処理係数に対応する処理係数情報が処理レイヤーの実行順に従って並べられたストリームデータを取得し、ストリームデータから処理係数情報を取出し、処理係数情報に対応する処理係数を使用する処理部(11−1〜11−n)に対して、処理係数情報に対応する処理係数を供給する処理制御部10と、を備えるように構成する。

目的

本発明は、上記事情に鑑みなされたものであり、その目的は、推論処理に必要なメモリの容量を低減させることのできる技術を提供する

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

(分野番号表示ON)※整理標準化データをもとに当社作成

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

処理対象データに対して、推論処理を実行する処理装置であって、前記推論処理を構成する複数の処理レイヤーにおけるそれぞれの部分処理を実行する複数の部分処理部と、少なくとも1以上の前記部分処理部において使用される処理係数圧縮した圧縮処理係数を記憶するメモリ部と、前記推論処理における第1部分処理を実行する際に、前記第1部分処理を実行する第1部分処理部が使用する処理係数に対応する圧縮処理係数を前記メモリ部から読み出す読出制御部と、読み出された前記圧縮処理係数を伸長し、伸長した処理係数を前記第1部分処理部に渡す伸長処理部と、を備える処理装置。

請求項2

前記読出制御部は、前記第1部分処理部からの前記処理係数の要求に基づいて、前記メモリ部から前記圧縮処理係数を読み出し、前記第1部分処理部は、前記第1部分処理部による前記第1部分処理を実行する直前、または、比較的近い処理レイヤーの処理が実行されている場合に、前記処理係数の要求を行う請求項1に記載の処理装置。

請求項3

処理対象データに対して、推論処理を実行する処理装置による推論処理方法であって、前記処理装置は、前記推論処理を構成する複数の処理レイヤーにおけるそれぞれの部分処理を実行する複数の部分処理部と、少なくとも1以上の前記部分処理部において使用される処理係数を圧縮した圧縮処理係数を記憶するメモリ部とを有しており、前記推論処理における第1部分処理を実行する際に、前記第1部分処理を実行する第1部分処理部が使用する処理係数に対応する圧縮処理係数を前記メモリ部から読み出し、読み出された前記圧縮処理係数を伸長し、伸長した処理係数を前記第1部分処理部に渡す推論処理方法。

技術分野

0001

本発明は、例えば、画像認識等の推論処理を実行する処理装置等に関する。

背景技術

0002

従来、画像認識等の推論処理を行うために、畳み込みニューラルネットワークCNN:Convolutional Neural Network)を実装した計算機が用いられている。計算機においてCNNを実装する場合においては、ディープラーニング等によって予め得られたCNNで使用する係数を含む学習済みデータを計算機のメインメモリに無歪(非圧縮)の状態で格納させるか、或いは、単純なベクトル量子化された状態で格納させている。

0003

例えば、学習済みデータは、ネットワークを介して計算機に対して提供される場合がある。学習済みデータは、例えば、無歪の状態であれば、200MB等のように比較的データサイズが大きいので、ネットワークを介して送信すると、ネットワークに負荷がかかると共に、送信コストが高くなるという問題がある。

0004

これに対して、例えば、学習済みデータを圧縮して送信する技術が提案されている(例えば、非特許文献1参照)。

0005

なお、ノイマン型の計算機と異なるニューロコンピュータにおいて、メモリ空間を有効活用する技術として、従来のニューロコンピュータに、主メモリユニット圧縮ユニット展開ユニットを付加し、16ビット重み値入力データを4段階に分類し、出現頻度の高い順に低位ビットに割当てることにより、データ圧縮を行う技術が知られている(例えば、特許文献1参照)。

0006

特開平6−176000号公報

先行技術

0007

Deep−Compression−AlexNet、インターネット(URL:https://github.com/songhan/Deep-Compression-AlexNet)

発明が解決しようとする課題

0008

例えば、非特許文献1による技術によると、ネットワークにおける学習済みデータの転送を比較的高速に行うことができるようになる。しかしながら、計算機において推論処理を行う場合においては、推論処理に使用する学習済みデータの全てを無歪の状態としてメモリ上に展開させることとなるので、多くのメモリが消費されてしまう。

0009

本発明は、上記事情に鑑みなされたものであり、その目的は、推論処理に必要なメモリの容量を低減させることのできる技術を提供することにある。

課題を解決するための手段

0010

上記目的を達成するため、第1の観点に係る処理装置は、処理対象データに対して、推論処理を実行する処理装置であって、推論処理を構成する複数の処理レイヤーにおけるそれぞれの部分処理を実行する複数の部分処理部と、推論処理を構成する複数の処理レイヤーにおける部分処理に使用される処理係数に対応する処理係数情報が処理レイヤーの実行順に従って並べられたストリームデータを取得するストリームデータ取得部と、ストリームデータから処理係数情報を取出し、処理係数情報に対応する処理係数を使用する部分処理部に対して、処理係数情報に対応する処理係数を供給する処理係数供給部と、を備える。

0011

上記処理装置において、ストリームデータにおける少なくとも一部の処理係数情報は、処理係数が圧縮された圧縮処理係数であり、処理係数供給部は、圧縮処理係数を伸長し、伸長された処理係数を部分処理部に供給するようにしてもよい。

0012

また、上記処理装置において、ストリームデータは、複数の処理レイヤーにおけるそれぞれの部分処理を特定する部分処理特定情報を含み、ストリームデータの部分処理特定情報に基づいて、部分処理を実行する部分処理部を構築する部分処理部構築部をさらに有するようにしてもよい。

0013

また、上記処理装置において、ストリームデータは、圧縮処理係数における処理係数の圧縮方法を示す圧縮情報を含み、処理係数供給部は、圧縮情報に基づいて、圧縮処理係数を伸長するようにしてもよい。

0014

また、上記処理装置において、処理係数は、2次元平面の各領域に対応する値を含むフィルタデータを含み、フィルタデータを圧縮させた圧縮処理係数は、フィルタデータを予測符号化した圧縮フィルタデータであり、圧縮情報には、フィルタデータを予測符号化した際に使用した予測方向を示す予測方向情報を含み、処理係数供給部は、予測方向情報が示す予測方向に基づいて、圧縮フィルタデータを伸長するようにしてもよい。

0015

また、上記処理装置において、複数の部分処理部は、畳み込み処理を実行する畳込処理部を含み、処理係数は、畳み込み処理に使用する複数のフィルタのデータであってもよい。

0016

また、上記処理装置において、画像処理の実行に適した画像処理プロセッサを備え、畳込処理部は、画像処理プロセッサを用いて構成されていてもよい。

0017

また、上記処理装置において、複数の部分処理部は、直前の処理レイヤーの部分処理部の処理結果のすべてを入力として処理を行う全結合処理部を含み、処理係数は、全結合処理部に入力される処理結果のそれぞれに対する重み付けの係数であってもよい。

0018

また、上記処理装置において、ストリームデータは、通信ネットワークを介して外部装置から受信されてもよい。

0019

また、上記目的を達成するため、第2の観点に係る処理装置は、処理対象データに対して、推論処理を実行する処理装置であって、推論処理を構成する複数の処理レイヤーにおけるそれぞれの部分処理を実行する複数の部分処理部と、少なくとも1以上の部分処理部において使用される処理係数を圧縮した圧縮処理係数を記憶するメモリ部と、推論処理における第1部分処理を実行する際に、第1部分処理を実行する第1部分処理部が使用する処理係数に対応する圧縮処理係数をメモリ部から読み出す読出制御部と、読み出された圧縮処理係数を伸長し、伸長した処理係数を第1部分処理部に渡す伸長処理部と、を備える。

0020

また、上記目的を達成するため、第3の観点に係る推論処理方法は、処理対象データに対して、推論処理を実行する処理装置による推論処理方法であって、処理装置には、推論処理を構成する複数の処理レイヤーにおけるそれぞれの部分処理を実行する複数の部分処理部が構築され、推論処理を構成する複数の処理レイヤーにおける部分処理に使用される処理係数に対応する処理係数情報を前記処理レイヤーの実行順に従って並べたストリームデータを取得し、ストリームデータの先頭から順に処理係数情報を取出し、処理係数情報に対応する処理係数を使用する部分処理部に対して、処理係数情報に基づく処理係数を供給する。

0021

また、上記目的を達成するため、第4の観点に係る推論処理方法は、処理対象データに対して、推論処理を実行する処理装置による推論処理方法であって、処理装置は、推論処理を構成する複数の処理レイヤーにおけるそれぞれの部分処理を実行する複数の部分処理部と、少なくとも1以上の部分処理部において使用される処理係数を圧縮した圧縮処理係数を記憶するメモリ部とを有しており、推論処理における第1部分処理を実行する際に、第1部分処理を実行する第1部分処理部が使用する処理係数に対応する圧縮処理係数をメモリ部から読み出し、読み出された圧縮処理係数を伸長し、伸長した処理係数を第1部分処理部に渡す。

発明の効果

0022

本発明によれば、推論処理に必要なメモリの容量を低減できる。

図面の簡単な説明

0023

図1は、第1実施形態に係る処理装置の機能構成図である。
図2は、第1実施形態に係るストリームデータのフォーマットを説明する図である。
図3は、第1実施形態に係るストリームヘッダ部と、レイヤーヘッダ部のフォーマットを説明する図である。
図4は、第1実施形態に係るレイヤー固有情報部のフォーマットを説明する図である。
図5は、第1実施形態に係る処理装置のハードウェア構成図である。
図6は、第2実施形態に係る処理装置の機能構成図である。
図7は、第3実施形態に係る処理装置の機能構成図である。

実施例

0024

いくつか実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。

0025

まず、第1実施形態に係る処理装置について説明する。

0026

図1は、第1実施形態に係る処理装置の機能構成図である。

0027

処理装置100は、処理制御部10と、1以上の処理部(部分処理部の一例)11(11−1〜11−n)と、1以上のデコーダ12(12−1,12−3,12−n−1等)とを備える。ここで、処理制御部10は、ストリームデータ取得部、部分処理部構築部に対応する。処理制御部10及びデコーダ12は、処理係数供給部に対応する。

0028

処理装置100には、推論処理を実行する畳み込みニューラルネットワーク(CNN)が実装されている。CNNは、複数の処理レイヤー(レイヤー)により構成されている。図1の例では、CNNは、レイヤー1〜レイヤーNにより構成されている。各レイヤーにおける処理(部分処理)は、各処理部11によって実行される。CNNは、例えば、処理対象とする画像データが何を表しているか(例えば、人、等の何が含まれているか)を推論する推論処理を実行して推論結果を出力する。CNNにおけるレイヤー数や、各レイヤーで実行する部分処理の種類は、任意に設定することができる。本実施形態では、レイヤー数や、各レイヤーで実行する部分処理については、後述するストリームデータ50の内容に応じて変えることができる。

0029

図1に示すCNNを構成するレイヤーにおける部分処理の種類は、一例であるが、図1に示す例では、処理部11としては、レイヤー1の部分処理を実行する畳込処理部11−1、レイヤー2の部分処理を実行するRelu処理部11−2、レイヤー3の部分処理を実行する畳込処理部11−3、レイヤーN−1の部分処理を実行する全結合処理部11−n−1、レイヤーNの部分処理を実行するSoftMax処理部11−n等がある。

0030

畳込処理部11−1,11−3は、入力された画像データに対して、複数のフィルタデータ(処理係数の一例)のそれぞれを用いて畳込処理を行う。Relu処理部11−2は、直前のレイヤーで生成された各画像に対して、Relu(Rectified Linear Unit Rectifier:正規化線形関数)を適用する処理(Relu処理という)を実行する。全結合処理部11−n−1は、直前のレイヤーによる複数の結果の全てを入力として複数の重み係数(処理係数の一例)を用いて結合する処理を実行する。

0031

デコーダ12は、処理制御部10から渡された圧縮データ(圧縮処理係数:圧縮フィルタデータ、圧縮重みデータ)を伸長し、伸長によって得られたデータ(処理係数)を処理部11に渡す。

0032

処理制御部10は、ストリームデータ50を取得し、ストリームデータ50に従って、CNNにおける処理部11の構築や、ストリームデータ50中の圧縮データをデコーダ12に伸長させる制御等を行う。ストリームデータ50は、例えば、後述するメインメモリ102(図5参照)や補助記憶装置106(図5参照)から取り出してもよく、通信I/F105及びネットワークを介して外部装置から受信してもよい。ネットワークを介して外部装置から受信するようにする場合には、ストリームデータ50の全ての受信が完了する前から、前の方のレイヤーから処理部11を構築して、CNNにおける推論処理を開始することができ、必要なデータの全てを受信した後に推論処理を開始する場合に比して、早期に推論処理を完了させることができる。

0033

ここで、処理制御部10の動作を詳細に説明する前に、ストリームデータ50のフォーマットについて詳細に説明する。

0034

図2は、第1実施形態に係るストリームデータのフォーマットを説明する図である。図3は、第1実施形態に係るストリームヘッダ部と、レイヤーヘッダ部のフォーマットを説明する図である。図4は、第1実施形態に係るレイヤー固有情報部のフォーマットを説明する図である。

0035

ストリームデータ50は、ストリームヘッダ部51と、CNNを構成する各レイヤーに対応する1以上のレイヤー部52とを含む。各レイヤー部52は、CNNにおけるレイヤーの実行順に従った順番で並んでいる。レイヤー部52は、レイヤーヘッダ部61と、レイヤー固有情報部62と、1以上のチャンネル部63とを含む。なお、レイヤー部52に対応するCNNのレイヤーの種別によっては、レイヤー固有情報部62や、チャンネル部63が存在しない場合がある。チャンネル部63は、1以上のチャンネルデータ71を含む。

0036

ストリームヘッダ部51は、図3(a)に示すように、識別子、バージョン、ヘッダサイズ、ストリームサイズ、レイヤー数、出力ベクトルサイズ、CNN入力画像縦幅、CNN入力画像横幅、CNN入力画像フォーマット、CNNチャンネル数フラグ等のフィールドを含む。

0037

識別子フィールドには、ストリームデータ50を識別する識別子が格納される。バージョンフィールドには、ストリームデータ50が対応しているバージョンが格納される。ヘッダサイズフィールドには、ストリームヘッダ部51のサイズ(例えば、8バイト単位)が格納される。ストリームサイズフィールドには、ストリームデータ50のサイズ(例えば、8バイト単位)が格納される。レイヤー数フィールドには、ストリームデータ50に対応するCNNのレイヤー数が格納される。出力ベクトルサイズフィールドには、CNNの結果として出力されるベクトルのサイズが格納される。CNN入力画像縦幅フィールドには、CNNに入力される画像データの縦幅(縦の画素数)が格納される。CNN入力画像横幅フィールドには、CNNに入力される画像データの横幅(横の画素数)が格納される。CNN入力画像フォーマットフィールドには、CNNに入力される画像データのフォーマット(画像フォーマット)を示す情報が格納される。画像フォーマットを示す情報としては、例えば、8ビット整数型を示す“FIXED8”や、半精度浮動小数点型FP16)等がある。CNN入力チャンネル数フィールドには、CNNにおける入力チャンネル数(例えば、1つの処理対象として入力される画像データ数等)が格納される。フラグフィールドには、各種情報が含まれる。

0038

レイヤーヘッダ部61は、図3(b)に示すように、識別子、ヘッダサイズ、レイヤーサイズ、レイヤー種別等のフィールドを含む。識別子フィールドには、レイヤーを識別する識別子が格納される。ヘッダサイズフィールドには、レイヤーヘッダ部61のサイズ(例えば、8バイト単位)が格納される。レイヤーサイズフィールドには、レイヤー部52のサイズ(例えば、8バイト単位)が格納される。レイヤー種別フィールドには、CNNを構成するレイヤーの種別を示す情報(レイヤ種別情報)が格納される。レイヤー種別情報としては、例えば、Convolution(畳込)処理を行うConvolutionレイヤーを示す“1”、Pooling(プーリング)処理を行うpoolingレイヤーを示す“2”、Relu処理を行うReluレイヤーを示す“3”、FullConnection(全結合)処理を行うFullConnectionレイヤーを示す“4”、SoftMax処理を行うSoftMaxレイヤーを示す“5”がある。

0039

レイヤー固有情報部62は、例えば、対応するレイヤーヘッド部61のレイヤー種別フィールドのレイヤー種別が、Convolutionレイヤー、Poolingレイヤー、FullConnectionレイヤーである場合に存在し、レイヤー種別が、Reluレイヤー、SoftMaxレイヤーである場合には、存在しない。

0040

レイヤー種別が、Convolutionレイヤーである場合のレイヤー固有情報部62は、図4(a)に示すように、入力チャンネル数、出力チャンネル数ストライドカーネルサイズパディング、重み圧縮方式のフィールドを含む。

0041

入力チャンネル数フィールドには、このレイヤーに入力されるチャンネルの数が格納される。出力チャンネル数フィールドには、このレイヤーから出力されるチャンネルの数が格納される。ストライドフィールドには、畳込処理において畳み込みフィルタを移動させる量(ストライド)が格納される。カーネルサイズフィールドには、畳込処理において使用する畳み込みフィルタのカーネルサイズが格納される。パディングフィールドには、入力されるデータの回りに追加するパディングの量が格納される。重み圧縮方式フィールドには、このレイヤーに使用されるフィルタのデータ(フィルタデータ)に対する圧縮方法を示す情報(圧縮情報)が格納される。本実施形態では、圧縮情報として、無圧縮の場合には“0”とし、Pruning符号化の場合には、“1”とし、Weight Sharing符号化の場合には、“2”とし、予測符号化の場合には、“3”としている。

0042

レイヤー種別が、Poolingレイヤーである場合のレイヤー固有情報部62は、図4(b)に示すように、入力チャンネル数、出力チャンネル数、ストライド、カーネルサイズのフィールドを含む。

0043

入力チャンネル数フィールドには、このレイヤーに入力されるチャンネルの数が格納される。出力チャンネル数フィールドには、このレイヤーから出力されるチャンネルの数が格納される。ストライドフィールドには、プーリング処理において処理範囲を移動させる量(ストライド)が格納される。カーネルサイズフィールドには、プーリング処理を行うカーネルサイズが格納される。

0044

レイヤー種別が、全結合レイヤーである場合のレイヤー固有情報部62は、図4(c)に示すように、入力チャンネル数、出力チャンネル数、重み圧縮方式のフィールドを含む。

0045

入力チャンネル数フィールドには、このレイヤーに入力されるチャンネルの数が格納される。出力チャンネル数フィールドには、このレイヤーから出力されるチャンネルの数が格納される。重み圧縮方式フィールドには、この全結合レイヤーに使用される、各入力チャンネルのデータに対する重みに対する圧縮方法を示す情報(圧縮情報)が格納される。本実施形態では、圧縮情報として、無圧縮の場合には“0”とし、Pruning符号化の場合には、“1”とし、Weight Sharing符号化の場合には、“2”とし、予測符号化の場合には、“3”としている。

0046

チャンネル部63は、例えば、対応するレイヤーヘッド部61のレイヤー種別フィールドのレイヤー種別が、Convolutionレイヤー、FullConnectionレイヤーである場合に存在する。

0047

チャンネル部63のチャンネルデータ71には、チャンネル部63に対応するレイヤー固有情報部62の重み圧縮方式フィールドに格納された圧縮情報に対応する圧縮方法により圧縮されたデータ(処理係数情報、圧縮処理係数:例えば、畳込レイヤーの場合には、フィルタデータ(処理係数)の圧縮データ、全結合レイヤーの場合には、各入力チャンネルに対する重み(処理係数)の圧縮データ)が格納される。フィルタデータは、例えば、予測符号化によって圧縮されていてもよい。フィルタデータの予測符号化は、例えば、基準とするフィルタデータ(例えば、直前のフィルタデータ)と、所定の位置(例えば、上端又は左端)の画素を基準とした予測方向に基づいて予測した予測フィルタデータとの差分値を所定の符号化(例えば、Pruning符号化及びWeight Sharing符号化等)により符号化することにより、データを圧縮させる方法である。なお、このようにデータが予測符号化により圧縮されている場合には、各チャンネルデータ71の先頭には、そのチャンネルデータ71を予測符号化する際に使用した予測方向を示す情報(予測方向情報)が格納される。

0048

図1戻り、処理制御部10の処理動作について説明する。

0049

処理制御部10は、ストリームデータ50を先頭から順に読み込み、レイヤー部52を読んだ場合には、レイヤー部52のレイヤーヘッダ部61のレイヤー種別フィールドに格納されているレイヤー種別に対応する処理部11を構築する。例えば、レイヤー種別が、Convolutionに対応する場合には、畳込処理部を構築し、Poolingに対応する場合には、Pooling処理部を構築し、Reluに対応する場合には、Relu処理部を構築し、全結合に対応する場合には、全結合処理部を構築し、SoftMaxに対応する場合には、SoftMax処理部を構築する。また、処理制御部10は、レイヤーヘッダ部61の次に、レイヤー固有情報部62が存在すれば、そのレイヤー固有情報部62の各フィールドの内容に従って、構築する処理部11の設定を行う。

0050

また、処理制御部10は、レイヤー部52のレイヤー固有情報部62に重み圧縮方式フィールドがある場合(すなわち、レイヤーが畳込レイヤー、又は全結合レイヤーである場合)には、重み圧縮方式フィールドの圧縮情報に従って、チャンネル部63のチャンネルデータ71に対する伸長処理を実行させ、そのレイヤーの処理を実行する処理部11に対して伸長処理後のデータを渡すように動作させるようにデコーダ12を生成(又は設定)して、制御する。これにより、処理制御部10は、処理部11に対して必要なデータを渡すことができる。ここで、チャンネルデータ71の先頭に、予測符号化の予測方向情報が含まれている場合には、デコーダ12は、その予測方向情報に基づいて、予測符号化されているデータを伸長する。

0051

次に、処理装置100のハードウェア構成について詳細に説明する。

0052

図5は、第1実施形態に係る処理装置のハードウェア構成図である。

0053

処理装置100は、例えば、CPU(Central Processin Unit)101と、メインメモリ102と、GPU(Graphics Processing Unit)103と、リーダライタ104と、通信インターフェース(通信I/F)105と、補助記憶装置106と、入出力インターフェース入出力I/F)107と、表示装置108と、入力装置109とを備えるコンピュータにより構成される。CPU101、メインメモリ102、GPU103、リーダライタ104、通信I/F105、補助記憶装置106、入出力I/F107、及び表示装置108は、バス110を介して接続されている。

0054

CPU101は、処理装置100の全体を統括制御する。CPU101は、補助記憶装置106に格納されてプログラムをメインメモリ102に読み出して実行することにより各種処理を実行する。本実施形態では、CPU101は、補助記憶装置106に格納された処理プログラムを実行することにより、例えば、処理制御部10、Relu処理部11−2、SoftMax処理部11n、及びデコーダ12を構成する。

0055

メインメモリ102は、例えば、RAM、ROM等であり、CPU101に実行されるプログラム(処理プログラム等)や、各種情報を記憶する。補助記憶装置106は、例えば、HDD(Hard DISKDrive)、SSD(Solid State Drive)等の非一時的記憶デバイス不揮発性記憶デバイス)であり、CPU101で実行されるプログラムや、各種情報を記憶する。各種情報としては、例えば、図2に示すようなストリームデータや、例えば、画像データ等の処理対象データがある。処理対象データが画像データである場合には、例えば、処理装置100の図示しないカメラにより撮像された画像データであってもよい。

0056

GPU103は、例えば、画像処理等の特定の処理の実行に適しているプロセッサであり、例えば、並列的に行われる処理の実行に適している。本実施形態では、GPU103は、CPU101の指示に従って所定の処理を実行する。本実施形態では、GPU103は、例えば、畳込処理部11-1、全結合処理部11−n−1等を構成する。

0057

リーダライタ104は、記録媒体111を着脱可能であり、記録媒体111からのデータの読み出し、及び記録媒体111へのデータの書き込みを行う。記録媒体111としては、例えば、SDメモリーカードFDフロッピーディスク登録商標)、CD、DVD、BD(登録商標)、フラッシュメモリ等の非一時的記録媒体(不揮発性記録媒体)がある。本実施形態においては、記録媒体111に、処理プログラムを格納しておき、リードライタ104により、これを読み出して、利用するようにしてもよい。また、記録媒体111に、ストリームデータを格納しておき、リードライタ104により、これを読み出して利用するようにしてもよい。また、記録媒体111に、処理対象データを格納しておき、リードライタ104により、これを読み出して利用するようにしてもよい。

0058

通信I/F105は、ネットワーク(通信ネットワーク)に接続されており、ネットワークに接続された他の装置(外部装置)との間でのデータの送受信を行う。例えば、ストリームデータ、処理対象データ等を通信I/F105を介してネットワークに接続された他の装置から受信するようにしてもよい。

0059

入出力I/F107は、例えば、マウスキーボード等の入力装置109と接続されており、入力装置109からのユーザによる操作入力受け付ける。

0060

表示装置108は、例えば、液晶ディスプレイ等のディスプレイ装置であり、各種情報を表示出力する。

0061

次に、図1に示す処理装置100における処理動作について説明する。

0062

処理装置100の処理制御部10は、推論処理を実行するために利用する所定のストリームデータ50の取得を開始する。処理制御部10は、取得したストリームデータ50のCNNのレイヤー1の畳込処理部11−1に対応するレイヤー部52を受信すると、畳込処理部11−1を生成し、デコーダ12-1を生成する。次いで、処理制御部10は、このレイヤー部52の各チャンネルデータ71に含まれる圧縮フィルタデータをデコーダ12−1に逐次供給する。処理制御部10が圧縮フィルタデータをデコーダ12−1に供給するタイミングとしては、例えば、畳込処理部11−1からのフィルタデータの要求に応じたタイミングとしてもよい。

0063

一方、処理制御部10は、処理対象データである画像データをレイヤー1の畳込処理部11−1に入力する。畳込処理部11−1は、入力された画像データに対して、デコーダ12−1から供給される各フィルタデータを用いて畳込処理を実行し、各フィルタデータを用いた全ての実行結果を後段のレイヤー2の処理部11(図1の例では、Relu処理部11−2)に渡すように出力する。ここで、レイヤー2の処理部11に対して実行結果を直接渡すことが可能である場合には、直接渡してもよく、また、直接渡すことが不可能な場合には、レイヤー2の処理部11が読み込み可能な所定のバッファに一時的に格納してもよい。

0064

また、処理制御部10は、ストリームデータ50のCNNのレイヤー2のRelu処理部11−2に対応するレイヤー部52を受信すると、CNNのレイヤー2のRelu処理部11−2を生成する。Relu処理部11−2は、畳込処理部11−1による各処理結果の画像のそれぞれを入力として、Relu処理を実行し、後段のレイヤー3に渡すように出力する。

0065

同様にして、処理制御部10は、ストリームデータ50の次のレイヤーに対応するレイヤー部52を受信すると、レイヤー毎に処理部11(畳込処理部11−3、全結合処理部11−n−1、SoftMax処理部11n等)を生成し、必要な場合には、その処理部11に対してデータを伸長して供給するデコーダ12(12−3,12−n−1等)を生成する。このような一連の処理が実行されることにより、CNNの最終のレイヤーからは推論処理の結果(推論結果)が出力される。なお、推論結果は、メインメモリ102等に出力するようにしてもよい。処理装置100は、この推論結果を表示装置108に表示したり、この推論結果に基づいて処理を実行したりしてもよい。

0066

上記した第1実施形態に係る処理装置100によると、ストリームデータ50に従って、CNNの各レイヤーを適切に構築でき、レイヤーの処理を実行する部分処理部で必要なデータをストリームデータ50から取得して供給することができる。このため、メインメモリ102に予めCNNの全てのレイヤーの処理部で使用する全ての係数を記憶させておいたり、CNNの全体のレイヤー構成の情報についてメインメモリ102に格納させておいたりする必要がなくなる。これにより、メインメモリ102に必要な容量を低減することができる。また、ストリームデータ50に従って、CNNの各レイヤーを適切に構築できるので、ストリームデータ50の内容を変えることにより、所望する推論処理を実行するCNNを容易に構築することができる。また、ストリームデータ50中のチャネルデータについては、圧縮データとすることができるので、ストリームデータ50のデータ量を低減することができ、ストリームデータ50の読出しや、送信等に係る処理時間を低減することができる。

0067

次に、第2実施形態に係る処理装置について説明する。なお、第2実施形態においては、第1実施形態に係る処理装置と同様な部分には、同一の符号を付す。

0068

図6は、第2実施形態に係る処理装置の機能構成図である。

0069

第2実施形態に係る処理装置100Aは、1以上の処理部(部分処理部)11(11−1〜11−n)と、1以上のデコーダ13(13−1,13−3,13−n−1等)と、FIFO(First IN, First Out)14と、構築部15と、メモリ部16とを備える。本実施形態におけるストリームデータは、第1実施形態におけるストリームデータ50の内のCNNの構成に関するデータを除いたデータ、例えば、処理部11に設定するデータ(処理係数情報)が含まれたチャンネル部63のみを含むデータとなっている。ここで、処理装置100Aは、図5に示すハードウェアで構成してもよく、例えば、構築部15、Relu処理部11−2、全結合処理部11−n−1、SoftMax処理部11n、及びデコーダ13は、CPU101によって構成してもよい。また、FIFO14は、CPU101及びメインメモリ102で構成してもよい。また、メモリ部16は、メインメモリ102で構成してもよい。また、畳込処理部11−1,11−3等は、GPU103で構成してもよい。

0070

メモリ部16は、CNNの各レイヤーの構造を示す情報(ニューラルネットワーク構造情報)16aを記憶する。ニューラルネットワーク構造情報16aは、CNNにおいて、各レイヤーがどのような処理部、デコーダ、FIFO等で構成され、どのような接続関係にあるかを特定可能な情報である。

0071

構築部15は、メモリ部16のニューラルネットワーク構造情報16aに基づいて、CNNを構成する各処理部11、各デコーダ13、及び各FIFO14を作成し、それらの間での接続関係を設定する。

0072

デコーダ13は、ストリームデータ中のチャンネル部63のデータを使用する各処理部11に対応して配置され、上流側からストリームデータを取得し、その中から自身に対応する処理部11で使用するデータを含むチャンネル部63のデータを抽出し、そのデータを伸長して対応する処理部11に供給する。また、デコーダ13は、ストリームデータ中の自身に対応する処理部11のデータを格納しているチャンネル部63以降のデータについては、下流側に接続されたFIFO14にそのまま渡す。

0073

FIFO14は、上流側のデコーダ13から入力されるストリームデータのデータを格納し、最初に入力されたデータから下流側のデコーダ13に渡す。

0074

上記した第2実施形態に係る処理装置100Aによると、処理部11で使用する処理係数情報をストリームデータとして送信することにより、各処理部11における部分処理を実行させることができる。このため、メインメモリ102にCNNの全てのレイヤーの処理部11で使用する全ての処理係数を予め記憶させておく必要がなくなる。これにより、必要なメインメモリ102の容量を抑制できる。また、ストリームデータ中のチャネル部63に格納させる処理係数情報について、圧縮させたデータとしているので、ストリームデータのデータ量を低減することができ、ストリームデータの読出しや、送信等に係る処理時間を低減することができる。

0075

次に、第3実施形態に係る処理装置について説明する。なお、第3実施形態においては、第1実施形態、第2実施形態に係る処理装置と同様な部分には、同一の符号を付す。

0076

図7は、第3実施形態に係る処理装置の機能構成図である。

0077

第3実施形態に係る処理装置100Bは、1以上の処理部(部分処理部)11(11−1〜11−n)と、1以上のデコーダ(伸長処理部)12(12−1,12−3,12−n−1等)と、読出制御部17と、メモリ部16とを備える。ここで、処理装置100Bは、図5に示すハードウェアで構成してもよく、例えば、読出制御部17、Relu処理部11−2、全結合処理部11−n−1、SoftMax処理部11n、及びデコーダ12は、CPU101によって構成してもよい。また、畳込処理部11−1,11−3等は、GPU103によって構成してもよい。また、メモリ部16は、メインメモリ102で構成してもよい。

0078

メモリ部16は、ニューラルネットワーク構造情報16aと、圧縮係数情報の一例としての圧縮フィルタデータ16bと、圧縮係数情報の一例としての圧縮重みデータ16cとを記憶する。圧縮フィルタデータ16bは、CNNのすべての畳込処理部11−1、11−3等で使用されるフィルタデータを圧縮したデータであり、圧縮重みデータ16cは、全結合処理部11−n−1で使用される複数の重みを圧縮したデータである。

0079

読出制御部17は、CNNの処理部11からの処理の実行に必要な処理係数の要求を受けて、この処理部11で使用する要求を受けた処理係数を圧縮させてある圧縮係数データ(圧縮フィルタデータ16b又は圧縮重みデータ16cの一部)をメモリ部16から取得し、処理部11に接続されているデコーダ12に対して圧縮係数データを送信する。なお、処理部11による処理の実行に必要な処理係数の要求は、例えば、処理部11が処理を実行する直前に行われるようにしてもよく、また、比較的近いレイヤーの処理が実行されている場合に行われるようにしてもよい。

0080

上記した第3実施形態に係る処理装置100Bによると、メインメモリ102において、処理部11で使用する係数データを圧縮して記憶させているので、メインメモリ102に必要とされる容量を抑制できる。また、比較的処理が近いレイヤーの処理部11が処理係数を要求するようにしているので、処理係数を要求する処理部11の数を抑えることができ、CPU101への負荷や、メインメモリ102の使用容量を比較的低減できる。

0081

なお、本発明は、上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で、適宜変形して実施することが可能である。

0082

例えば、上記各実施形態においては、画像認識を行うCNNが構成される処理装置に対して本発明を適用した例を示していたが、本発明は、画像認識以外の推論処理を実行するニューラルネットワークが構成される処理装置に対しても適用することができる。

0083

また、上記第1及び第2実施形態においては、ストリームデータ50において、処理部11に利用されるフィルタデータ等の処理係数を圧縮させて含ませるようにしていたが、本発明はこれに限られず、これら処理係数の少なくとも一部を圧縮させずにストリームデータ50に含ませるようにしてもよい。このようにしても、メインメモリ102に、ストリームデータ50の全体を記憶させておく必要が無いので、メインメモリ102に要求される容量を抑えることができ、メインメモリ102における他の処理に利用可能な容量を適切に増加させることができる。

0084

また、上記第2実施形態においては、デコーダ13とデコーダ13との間に、FIFO14を備えるようにしていたが、本発明はこれに限られず、デコーダ13内にFIFO14の機能を備えるようにしてもよい。

0085

また、上記各実施形態において、CPU101又はGPU103がプログラムを実行することにより構成していた機能部の少なくとも一部を、別のプロセッサや、特定の処理を実行するハードウェア回路で構成するようにしてもよい。例えば、GPU103により構成していた処理部11(例えば、畳込処理部11−1,11−3等)を、CPU101により構成するようにしてもよく、別のハードウェア回路で構成してもよい。また、CPU101により構成していたデコーダ13を別のハードウェア回路で構成するようにしてもよい。

0086

10…処理制御部、11…処理部、12,13…デコーダ、14…FIFO、15…構築部、16…メモリ部、17…読出制御部、50…ストリームデータ、100,100A,100B…処理装置、101…CPU、102…メインメモリ、103…GPU

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

(分野番号表示ON)※整理標準化データをもとに当社作成

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い技術

関連性が強い 技術一覧

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ