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

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

▶ 株式会社アラヤ・ブレイン・イメージングの特許一覧

<>
  • 特許-情報処理装置及び情報処理方法 図1
  • 特許-情報処理装置及び情報処理方法 図2
  • 特許-情報処理装置及び情報処理方法 図3
  • 特許-情報処理装置及び情報処理方法 図4
  • 特許-情報処理装置及び情報処理方法 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-28
(45)【発行日】2024-06-05
(54)【発明の名称】情報処理装置及び情報処理方法
(51)【国際特許分類】
   G06N 3/0495 20230101AFI20240529BHJP
   G06N 3/08 20230101ALI20240529BHJP
【FI】
G06N3/0495
G06N3/08
【請求項の数】 7
(21)【出願番号】P 2020063139
(22)【出願日】2020-03-31
(65)【公開番号】P2021163112
(43)【公開日】2021-10-11
【審査請求日】2023-01-20
(73)【特許権者】
【識別番号】514028042
【氏名又は名称】株式会社アラヤ
(74)【代理人】
【識別番号】110000925
【氏名又は名称】弁理士法人信友国際特許事務所
(72)【発明者】
【氏名】森 俊彰
(72)【発明者】
【氏名】水谷 永輔
(72)【発明者】
【氏名】津田 達也
(72)【発明者】
【氏名】大鳥羽 暢彦
(72)【発明者】
【氏名】蓮井 樹生
(72)【発明者】
【氏名】松本 渉
【審査官】武田 広太郎
(56)【参考文献】
【文献】特開2019-159694(JP,A)
【文献】国際公開第2017/015961(WO,A1)
【文献】特表2020-500378(JP,A)
【文献】国際公開第2019/235311(WO,A1)
【文献】特開2019-036899(JP,A)
【文献】米国特許出願公開第2018/0165578(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/0495
G06N 3/08
(57)【特許請求の範囲】
【請求項1】
ターゲットデバイスで動作させる学習済みのディープラーニングモデルの圧縮処理を行う情報処理装置であって、
前記学習済みのディープラーニングモデルの目標の圧縮率を設定する設定部と、
前記目標の圧縮率に基づいて、前記学習済みのディープラーニングモデルを圧縮して圧縮モデルを生成する演算部と、
前記演算部で生成された前記圧縮モデルを前記ターゲットデバイスに送信する送信部と、
前記ターゲットデバイスでの前記圧縮モデルの実行結果を受信する受信部と、
前記受信部が受信した前記実行結果が、目標とする性能を満たす場合に、前記ターゲットデバイスで動作可能な形式のファイルで、前記圧縮モデルを出力するようにし、
前記圧縮モデルは、前記学習済みのディープラーニングモデルを構成する入力層から出力層までの複数層の内で、前記出力層以外の前記入力層から所定層までを非圧縮とし、前記所定層の次の層から前記出力層までを圧縮するモデルとする
情報処理装置。
【請求項2】
前記学習済みのディープラーニングモデルを圧縮して前記圧縮モデルとする際の全体の圧縮率を1/n(nは任意の数)とするとき、
[前記入力層から前記所定層までのネットワークの重み係数の数]+[前記所定層の次の層から前記出力層までのネットワークの重み係数の数×特定の圧縮率]=[前記学習済みのディープラーニングモデルの全体のネットワークの重み係数×1/n]
となる条件を満たすように、前記所定層の次の層から前記出力層までのネットワークの前記特定の圧縮率を設定する
請求項1に記載の情報処理装置。
【請求項3】
前記所定層の次の層から前記出力層までを圧縮したモデルとする際に、前記所定層の次の層から前記出力層までの層を複数のグループに分け、
前記複数のグループ単位で圧縮を行う
請求項1に記載の情報処理装置。
【請求項4】
前記受信部は、前記ターゲットデバイスでの前記圧縮モデルの実行結果として、実行速度、メモリ使用量、回路規模の少なくとも一つを受信し、受信した実行速度、メモリ使用量又は回路規模が目標とする性能を満たさないとき、前記演算部は、前記圧縮モデルを再度作成する
請求項1~3のいずれか1項に記載の情報処理装置。
【請求項5】
前記ターゲットデバイスは、CPUであり、
前記ターゲットデバイスで動作可能な形式のファイルは、複数のライブラリを使ってエッジデバイス上で動作させるためのファイルフォーマットで出力される
請求項1~3のいずれか1項に記載の情報処理装置。
【請求項6】
前記ターゲットデバイスは、FPGAであり、
前記ターゲットデバイスで動作可能な形式のファイルは、HDL形式のソースファイル、FPGAを制御するCPUのファームウェア、並びに重み係数ファイルで出力される
請求項1~3のいずれか1項に記載の情報処理装置。
【請求項7】
ターゲットデバイスで動作させる学習済みのディープラーニングモデルの圧縮処理を行う情報処理方法であって、
前記学習済みのディープラーニングモデルの目標の圧縮率を設定する設定処理と、
前記目標の圧縮率に基づいて、前記学習済みのディープラーニングモデルを圧縮して圧縮モデルを生成する演算処理と、
前記演算処理で生成された前記圧縮モデルを前記ターゲットデバイスに送信する送信処理と、
前記ターゲットデバイスでの前記圧縮モデルの実行結果を受信する受信処理と、
前記受信処理で受信した前記実行結果が、目標とする性能を満たす場合に、前記ターゲットデバイスで動作可能な形式のファイルで、前記圧縮モデルを出力する出力処理と、を含み、
前記圧縮モデルは、前記学習済みのディープラーニングモデルを構成する入力層から出力層までの複数層の内で、前記出力層以外の前記入力層から所定層までを非圧縮とし、前記所定層の次の層から前記出力層までを圧縮するモデルとする
情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、人工知能に用いるニューラルネットワークの演算量を削減するためのネットワークの構造や量子化、学習方法、複数のネットワークの統合を自動で行う情報処理装置及び情報処理方法に関する技術に関する。
【背景技術】
【0002】
ニューラルネットワークにおいて特に認識性能や予測性能が高い、深い層構造をもつディープニューラルネットワーク(以下「DNN」と称する)、畳み込みニューラルネットワーク(以下「CNN」と称する)等は、インターネットサービスやクラウド経由・機器搭載等の手段によりスマートフォン、自動車機器、家電機器、工場用機器、ロボット等へのアプリケーションとして提供されている。このニューラルネットワークは、仕様が制限されているハードウェアに搭載できるように小型化する必要がある。
【0003】
非特許文献1には、通常、高さ・幅・チャネルの3次元に対して一括で演算を行う畳み込み演算を、高さ・幅方向と、チャネル方向の演算に分離することで、演算回数を削減する技術が記載されている。
【先行技術文献】
【特許文献】
【0004】
【文献】Andrew G. Howard, Menglong Zhu, Bo Chen, Dmitry Kalenichenko, Weijun Wang, Tobias Weyand, Marco Andreetto, Hartwig Adam., MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications, https://arxiv.org/abs/1704.04861
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところで、近年、自動運転システムの安全性を担保するために、例えばディープラーニングのような機械学習をもちいた処理を、車載システムに適用する例が多くなっている。また、ディープラーニングを用いた処理を実行するプロセッサは、車載ECU(Electric Control Unit)を利用するために、厳しい消費電力、処理速度及び認識精度の制約を満たす必要がある。
同様に、様々な機器や端末にディープラーニングを搭載する際には、ディープラーニングを用いた処理を実行するプロセッサは、様々なタイプのプロセッサに対しても上記制約条件のもとで動作させる必要があり、そのためのディープラーニングのモデルを効率的に決定することは難しいという問題があった。
【0006】
本発明は、上記問題に鑑みて成されたものであり、ディープラーニングのモデルを効率的に決定することができる情報処理装置及び情報処理方法を提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明は、ワークステーションやサーバを用いて、ターゲットデバイス(CPU(Central Processing Unit)やFPGA(Field Programmable Gate Array)等)に対して、すでに学習済みのディープラーニングモデルと、学習した際のデータセットを入力し、目標の圧縮率やディープラーニングの認識精度等を設定し、自動的に圧縮処理を実施する。ターゲットデバイスが主にCPUで動作するデバイスの場合は、推論エンジンと呼ばれる複数のライブラリをつかってエッジデバイス上で動作させるためのファイルフォーマットで出力し、ターゲットデバイスが主にFPGAで動作する場合は、FPGAのHDL(Hardware Description Language)形式のソースファイル、FPGAを制御するCPUのファームウェア、並びに重み係数ファイルを出力する。これらのターゲットデバイス上で動作可能なファイルを用いて、ターゲットデバイス上でディープラーニングの動作確認を行う。CPU動作の場合は、実行速度やメモリ使用量などを報告し、FPGA動作の場合は実行速度、メモリ使用量、回路規模等を報告する機能を有する。
その結果を見て問題なければ実装を行い、問題があれば再度圧縮を行う。
圧縮を行う際には、学習済みのディープラーニングモデルを構成する入力層から出力層までの複数層の内で、出力層以外の入力層から所定層までを非圧縮とし、所定層の次の層から出力層までを圧縮するモデルとする。
【発明の効果】
【0008】
本発明によれば、学習済みのディープラーニングモデルを自動的に圧縮し、ターゲットデバイスで実行できる形式のファイルを出力するため、消費電力、処理速度及び認識精度を満たす圧縮が可能かどうかを確認することができる。さらに、上記消費電力、処理速度及び認識精度といった制約を満たしていれば、推論エンジンと呼ばれる複数のライブラリを使ってエッジデバイス上で動作させるためのファイルフォーマットを容易に実際の機器に実装することが可能となる。
【図面の簡単な説明】
【0009】
図1】本発明の一実施の形態例による情報処理装置のシステム構成を示す図である。
図2】本発明の一実施の形態例による情報処理装置のハードウェア構成例を示すブロック図である。
図3】本発明の一実施の形態例による処理手順の流れを示すフローチャートである。
図4】本発明の一実施の形態例によるディープラーニングのネットワーク構成を示す図である。
図5】本発明の一実施の形態例による処理手順の学習の詳細を示すフローチャートである。
【発明を実施するための形態】
【0010】
以下、本発明の一実施の形態例を、添付図面を参照して説明する。
【0011】
図1は、本発明の一実施の形態例に係る情報処理システムの概略を説明するための図である。
情報処理システム1は、情報処理装置100、CPU評価ボード200、あるいはFPGA評価ボード300を備える。情報処理システム1は、指定されたCPUあるいはFPGAに対して、適切なディープラーニングモデルを決定するシステムである。
【0012】
情報処理システム1において、情報処理装置100は、例えばサーバやワークステーションである。情報処理装置100のハードウェア構成例は、図2で後述する。
CPU評価ボード200は、CPUが搭載された評価ボードであり、例えば、CPU評価ボード200は、実際に自動車などの機器に搭載する基板になる。
FPGA評価ボード300は、FPGAが搭載された評価ボードであり、例えば、FPGA評価ボード300は、実際に自動車などの機器に搭載する基板になる。
【0013】
情報処理装置100は、CPUのタイプ、例えばIntel(登録商標)コアやARM(登録商標)コア等の情報や、FPGAのタイプ、例えばIntel系やXilinx(登録商標)系等のハードウェア情報101と、圧縮要件情報102、ディープラーニングモデルなどの人工知能モデル103、学習用データセット104を、この情報処理装置100の使用者から取得する。なお、圧縮要件の詳細に関しては後述する。
【0014】
情報処理装置100は、取得したハードウェア情報101、圧縮要件情報102、人工知能モデル103、学習用データセット104に基づいてディープラーニングモデルの圧縮を行う。そして、情報処理装置100は、圧縮されたディープラーニングモデルを、CPUが搭載された評価ボード200に対して、CPUで推論エンジンにより実行可能なファイルフォーマットとして出力する。また、情報処理装置100は、FPGAが搭載された評価ボード300に対しては、圧縮されたディープラーニングモデルを、FPGAが動作可能なHDLソース、FPGAを制御するCPUのファームウェア、並びに重み係数ファイルとして出力する。
【0015】
そして、情報処理装置100は、CPU評価ボード200上、又はFPGA評価ボード300上で、実装速度、回路規模、消費電力を測定して、その測定結果を得て、測定結果が使用者の要求を満たすかどうかを確認する。また、情報処理装置100は、このコードをエッジデバイス用のアプリケーションと組み合わせて評価する。使用者は、評価結果に問題がなければ、実際の自動車等の各種機器に搭載する。
また、評価した際に問題があれば、情報処理装置100は、再度圧縮要件を変更して、圧縮を実行し、満足する、あるいは許容できるハードウェア制限内に入るまで繰り返す。
【0016】
ここで、情報処理装置100であるコンピュータ装置のハードウェア構成の一例を、図2に示す。
図2に示す情報処理装置100は、バスにそれぞれ接続されたCPU111、ROM(Read Only Memory)112、及びRAM(Random Access Memory)113を備える。さらに、情報処理装置100は、不揮発性ストレージ114、ネットワークインタフェース115、入力部116、及び表示部117を備える。
【0017】
CPU111は、情報処理装置100が備える各機能を実現するソフトウェアのプログラムコードをROM112から読み出して実行する。RAM113には、演算処理の途中に発生した変数やパラメータ等が一時的に書き込まれる。例えば、CPU101は、ROM102に記憶されているプログラムを読み出すことで、ディープラーニングモデルを圧縮する演算部として機能する。また、CPU101は、圧縮されたディープラーニングモデルを再学習する演算部としても機能する。
【0018】
不揮発性ストレージ104としては、例えば、HDD(Hard disk drive)、SSD(Solid State Drive)等が用いられる。この不揮発性ストレージ104には、OS(Operating System)、各種のパラメータ、DNN又はCNNを実行するプログラムなどが記録されている。
【0019】
ネットワークインタフェース105には、端子が接続されたLAN(Local Area Network)、専用線等を介して各種のデータを入出力することが可能である。例えば、ネットワークインタフェース105は、DNN又はCNNの演算を行うための信号を、CPU評価ボード200やFPGA評価ボード300に送信する送信処理を行う送信部として機能する。また、ネットワークインタフェース105は、CPU評価ボード200やFPGA評価ボード300から送信された信号を受信する受信処理を行う受信部としても機能する。
【0020】
入力部106は、キーボードなどで構成される。ユーザは、キーボードなどでの入力で、学習済みモデルを圧縮する際の圧縮率や目標とする性能を入力することができる。したがって、入力部106は、圧縮率や目標とする性能を設定する設定処理を行う際の設定部として機能する。
表示部107には、演算結果などが表示される。例えば、CPU評価ボード200やFPGA評価ボード300での測定結果が表示される。
【0021】
次に情報処理装置100が実行する処理を、図3図5のフローチャートを参照して説明する。
まず、ステップS11にて、使用者が入力したハードウェア情報に基づいた準備を行う。すなわち、情報処理装置100は、CPU評価ボード200で評価するか、PGA評価ボード300で評価するのかを選択する。
【0022】
このステップS11の処理により、情報処理装置100は、CPU評価ボード200で推論エンジンにて実行可能なファイルフォーマットで出力するのか、あるいは、FPGA評価ボード300のHDLソースファイル、FPGAを制御するCPUのファームウェア、並びに重み係数ファイルで出力するかを決定する。
また、ハードウェアによっては8ビット量子化やAVX等の8並列演算処理等の条件が異なるため、情報処理装置100は、ユーザにより圧縮時のCPUコアの構造やFPGAの構造に依存する前提条件も設定する。
【0023】
次に、ステップS12にて、ディープラーニングモデルと学習用データセットを確認する。例えば、この記述はKeras等の標準的なフレームワークを用いて記述されているものとする。情報処理装置100は、この内容に従って入力されたディープラーニングモデルが適切に学習し、途中経過を確認できるようにデータジェネレータ、コールバック、モデルのカスタムオブジェクトの設定を行う。
また、場合によっては、圧縮時により圧縮可能な構造を持つディープラーニングモデルに変換する。
【0024】
情報処理装置100に対してユーザが入力する圧縮要件、例えばディープラーニングのネットワーク全体の圧縮率は、全体圧縮率と呼ばれる。ステップS13では、この目標となる全体の圧縮率が入力されているものとする。すなわち、ステップS13では、圧縮する際の計算、つまり全体の圧縮率の計算は、
全体の圧縮率=(圧縮後の全体の重み係数の数)/(圧縮前の全体のネットワークの重み係数の数)
で求められる。情報処理装置100は、この全体の圧縮率に対して圧縮対象層の圧縮率、圧縮層のグループ分け、圧縮の順番などを決定する。
【0025】
一例として、図4にディープラーニングのネットワーク構成の一例を示す。図4に示すinput層410は入力層、conv層420は畳み込み層、maxpool層430はmaxpool処理を実行する層、fc層440、450、460は全接続層である。
また、各層はグループ分けされている様子を示しており、図4では、3つのグループ(Group1,Group2,Group3)に分けられている。一般にconv層420、fc層440、450、460が圧縮対象層であるため、以後の層のカウント対象はconv層420、fc層440、450、460のみとし、それ以外の層は説明からは省くものとする。例えば、図4のGroup1は、実際には4層であるが、圧縮対象層は2層であるので、Group1は2層とカウントする。
【0026】
なお、図4におけるFiler sizeは、カーネルと呼ばれるフィルターの2次元行列の行方向・列方向のサイズを示している。図4のGroup1の一番上のconv層420のFiler sizeは11×11である。つまり、行方向11行、列方向11列のサイズであることを示している。
【0027】
Strideはそのフィルターをスライドする単位を示しているが、本発明とは直接関連しないので、説明は割愛する。次に同じconv層420のOutput sizeは55×55の特徴マップが96個の出力チャネル分あることを示している。一つ前の層410の出力チャネルが、次の層となるconv層420の入力チャネルになる。
【0028】
図4の場合、層410のOutput sizeは、227×227の特徴マップが3個の出力チャネルで構成されている。したがって層420のconv層の入力チャネルは3となる。この際のconv層の重み係数の数はFiler size×入力チャネル数×出力チャネル数である。例えば、conv層420の重み係数の数は、Filer size×入力チャネル数×出力チャネル数=11×11×3×96=34,848となる。
【0029】
一方fc層の場合は、一つ前の層がmaxpool層の場合、例えば図4maxpool層430が一つ前の層で、fc層が層440とした場合、重み係数の計算は、一つ前のmaxpool層430のoutput sizeは特徴マップが6x6で出力チャネルが256であるが、これらすべての要素をfc層440の入力として扱う。この場合のfc層440の重み係数の数は、一つ前のmaxpool増の特徴マップのサイズ×一つ前のmaxpool層の出力チャネル数×fc層の出力チャネル数であり、6×6×256×4096= 37,748,736となる。
【0030】
次に、一つ前の層もfc層の場合、例えば図4のfc層440を一つ前のfc層で、重み係数の数の対象となるfc層を層450とした場合、一つ前の層440の出力データが、次の層となるfc層450の層の入力データになる。
図4の構成の場合、層440のOutput sizeは、4096の出力データで構成されている。したがって層450のfc層の入力データは4096となる。この際のfc層の重み係数の数は、入力データ数×出力データ数である。例えば、fc層450の重み係数の数は、入力データ数×出力データ数=4096×4096=16,777,216となる。
【0031】
以上のように対象層とその重み係数を数える前提で、圧縮の手順の一例を以下に示す。
例えば32層のニューラルネットワークで、入力層から徐々にネットワークサイズが大きくなり、出力層に分類結果が出力される場合、入力層から数層はネットワークサイズが小さく圧縮すると性能劣化が大きいと判断できる場合には入力層から例えば8層までは非圧縮のままにし、9層目から32層までは圧縮をかける等の設計を行う。この9層から32層までを例えば全体の圧縮率を1/4としたい場合、圧縮前の全体のネットワークの重み係数の数を10000とし、1層から8層までのネットワークの重み係数の数が1000とすると、圧縮対象の9層目から32層目までを1/6に圧縮すれば、
圧縮後の全体の重み係数の数=1層から8層までのネットワークの重み係数の数
+9層から32層までのネットワークの重み係数の数
×9層から32層までのネットワークの圧縮率
=1000+9000×1/6=2500
となる。
【0032】
したがって、
全体の圧縮率=(圧縮後の全体の重み係数の数)/(圧縮前の全体のネットワークの重み係数の数) =2500/10000=1/4
となり、目標となる全体の圧縮率を満足する。
【0033】
また、一般に1層毎に圧縮対象の層を圧縮する学習をするのが経験的に性能を維持する意味でよいとされているが、実際は数層まとめて学習するほうが時間の面で効率がよいため、圧縮層のグループ分けを行って、グループ単位に学習する。
例えば、グループ単位が1グループ8層で4グループに分けられたとすると、上記の例では最初の1グループ(1層目から8層目)以外の3グループを順番に学習すればよい。また、この3グループを入力層から近い順に学習してもよいし、出力層から近い順に学習してもよい。このような手順をすべて自動で決定する。
また、それ以外にも蒸留の適用有か無しか、量子化グループ数の入力内容の確認をし、学習に蒸留の適用有り無し、量子化ビット数の設定を実施する。また、圧縮要件には目標性能、学習回数、学習上限時間を設定できるものとする。
【0034】
再び、図3のフローチャートの説明に戻ると、ステップS14にて、情報処理装置100は、学習用のモデルの記述や学習方法、手順などをJSONファイル等に記述し、CPU評価ボード200又はFPGA評価ボード300で、その手順通り学習を行う。
その際、情報処理装置100は、ハイパーパラメータを探索しながらより高い性能を発揮する学習を行う。なお、ユーザ独自の調整を可能にするために、情報処理装置100は、JSONファイル内にユーザが圧縮手順、蒸留有り無し、量子化ビット数を手動で設定してもよい。
【0035】
さらに、ステップS15にて、情報処理装置100は、CPU評価ボード200又はFPGA評価ボード300での学習で、既定の学習回数が経過したか否かを判断する。そして、既定の学習回数が経過していない場合(ステップS15のNO)は、情報処理装置100は、ステップS14での学習を繰り返し実行する。
また、ステップS15にて、既定の学習回数が経過した場合には(ステップS15のYES)、次に、情報処理装置100は、ステップS16にて、目標性能を満たしたかを確認する。そして、目標性能を満たしていたら(ステップS16のYES)、情報処理装置100は、その圧縮モデルを確定する(ステップS20)。つまり、ステップS20では、情報処理装置100は、CPU動作の場合には推論エンジンで実行可能なファイルフォーマットを出力し、FPGA動作の場合にはHDL形式、FPGAを制御するCPUのファームウェア、並びに重み係数ファイルで出力する。
【0036】
ステップS16にて、目標性能を満たしていない場合(ステップS16のNO)は、ステップS17にて、情報処理装置100は、精度向上があるかどうか、すなわち学習を繰り返すごとに性能が向上しているか否かを確認する。このステップS17で、精度向上がある場合(ステップS17のNO)、ステップS14の学習を繰り返す。また、ステップS17で、精度向上がない場合(ステップS17のYES)には、情報処理装置100は、学習の上限時間に到達したかどうか確認する(ステップS18)。
【0037】
このステップS18で、学習上限時間に到達していない場合(ステップS18のNO)、ステップS14の学習を繰り返す。
さらに、ステップS18で、学習上限時間に到達していた場合には(ステップS18のYES)、情報処理装置100は、ハイパーパラメータ探索条件を変更して(ステップS19)、テップS14の学習を繰り返す。
なお、使用者が強制的に学習を停止することもできる。その際にはそこまでの学習過程のログや重み係数は残せるものとする。
【0038】
図5は、ステップS14の学習の詳細な処理手順の一例を示す。
ユーザからステップS12で入力されたディープラーニングモデルを、図5ではオリジナルモデル(Original Model(s))400とする。
最初に、情報処理装置100は、Multi-task learningを行うか否かを、ステップS201で条件分岐処理する。ここで、Multi-task learningを行う場合(ステップS201のYes)は、ステップS202の処理に移行する。
【0039】
Multi-task learningは、複数のディープラーニングモデルに対して一部のネットワークを共通化することで、演算量を削減する効果を狙ったものである。
情報処理装置100は、Merge modelsで複数のモデルの共通化できるネットワークを定義し、それ以外のネットワークを各モデルの機能を実現する個別のネットワークに分ける操作を行う。但し、この機能はユーザが共通化できるネットワークを指定する必要がある。
Merge data generatorsでは、情報処理装置100は、共通化されたネットワークを持つ複数の機能を実現するネットワークを用いて学習を行うためのデータセットの生成を行う。Merge compile argsでは、共通化ネットワークを構成するための引数の統合処理を行う。
【0040】
ステップS201にてMulti-task learningを行わない場合(ステップS201のNo)、情報処理装置100は、Multi-task learning処理をスキップする。
【0041】
次に、情報処理装置100は、Pruning処理を行うか否かの条件の分岐処理を行う(ステップS203)。ステップS203でPruning処理を行う場合(ステップS203のYes)、ステップS204のIterative Pruningの処理を行う。
本実施の形態例では、Pruning処理は一般的なunstructured pruningとstructured pruningのいずれのpruningにも対応できるようになっている。すでに上記に示すようにpruningはグループ毎に順番に学習するため、繰り返しPruning処理(Iterative Pruning)ができるようになっている。この後、ステップS205のHyper parameter searchにより、情報処理装置100は、Pruningの学習のためのHyper parameter探索を行い、その結果の値を設定する(ステップS205)。
なお、ステップS203でPruning処理を行わない場合(ステップS203のNo)、情報処理装置100は、ステップS204のPruning処理をスキップする。
【0042】
次に情報処理装置100は、distillation(蒸留)処理を行うか否かの条件の分岐処理を行う(ステップS206)。
このステップS206で、distillation(蒸留)処理を行う場合(ステップS206のYes)、情報処理装置100は、distillationの処理を行う。Distillationの処理としては、温度の設定(Set temperature(ステップS207))を行った後、情報処理装置100は、教師モデルを使った生徒モデルの学習を(Training with teacher model(ステップS208))を行う。ここで生徒モデルとは圧縮する対象のモデルを指す。
【0043】
ここで教師モデルとは、Original model400を用いる場合がほとんどであるが、これに限ったものではない。
【0044】
情報処理装置100は、ステップS208の学習が収束したところで、その結果をもとに、(Hyper parameter search(ステップS210→ステップS205))でベイズ推定を元に次の候補Hyper parameterを探索し、ステップS207,S208の処理を繰り返す。
ステップS206で、distillation(蒸留)処理を行わない場合(ステップS206のNo)、情報処理装置100は、ステップS209での圧縮モデルのみの学習を行う。
【0045】
次に、ステップS211で、情報処理装置100は、Pruning処理を行うか否かの条件の分岐処理を行う。このステップS211で、Pruning処理を行う場合(ステップS211のYes)、情報処理装置100は、Iterative Pruning(ステップS212→ステップS204)の処理を行う。また、ステップS211で、Pruning処理を行わない場合(ステップS211のNo)、情報処理装置100は、このIterative Pruning(ステップS212→ステップS204)の処理をスキップする。
【0046】
次に、ステップS213で、情報処理装置100は、Quantization(量子化)処理を行うか否かの条件の分岐処理を行う。このステップS213で、Quantization処理を行う場合(ステップS213のYes)、情報処理装置100は、ステップS214でQuantization処理を行う。
また、ステップS213で、Quantization処理を行わない場合(ステップS213のNo)、情報処理装置100は、ステップS214でQuantization処理をスキップする。
【0047】
Quantization(量子化)処理は、3種類の量子化処理からなる。すなわち、Quantization 処理として、情報処理装置100は、Weight Quantization(重み係数の量子化)、Activation Quantization(活性化関数の量子化)、Gradient Quantization for learning(学習時の勾配の量子化)を行う。
以上の処理を行った結果として、情報処理装置100は、Output modelとして圧縮モデルを出力する(ステップS215)。
これらの処理を行うことにより、ほぼ自動的に圧縮モデルを生成することができる。
【0048】
なお、情報処理装置100が行う機能として、ターゲットデバイスがCPUである場合には、CPUのキャッシュメモリやAVX等の並列処理に適した高速処理のための最適化機能も含まれている。また、情報処理装置100が行う機能として、ターゲットデバイスがFPGAである場合には、FPGAの基本コンポーネントに適した回路構成の最適化機能も含まれている。これらの最適化機能は、例えば図3のフローチャートで説明した圧縮モデルの作成が終了した後に行ってもよいが、圧縮モデルの作成処理と並行して行ってもよい。
【0049】
また、この情報処理装置100で圧縮モデルを作った後に、例えばターゲットデバイスがCPUであれば、ターゲットCPUが搭載された基板、これは実際にはエッジ機器に搭載される回路構成上で、圧縮モデルを動作させその実行速度を測定する機能も搭載されている。また例えばターゲットデバイスがFPGAの場合には、ターゲットFPGAとその制御用CPUが搭載された基板上でも圧縮モデルを動作させて、実行速度を測定あるいは予測する機能も搭載されている。
これらの実行速度を測定あるいは予測した結果、適切な実行速度である場合には、圧縮モデルをターゲットデバイスに適した形式で出力する。また、実行速度を測定あるいは予測した結果が適切でない場合には、再度、圧縮モデルの作成処理を行う。
【0050】
以上本発明の実施形態例について説明したが、本発明は上述した実施形態例に限定されるものではなく、特許請求の範囲に記載される事項の範囲を逸脱しない限りにおいて、その他の応用例、変形例を含むことは言うまでもない。
【符号の説明】
【0051】
1…情報処理システム、100…情報処理装置、101…ハードウェア情報、102…圧縮要件情報、103…人工知能モデル、104…学習用データセット、111…CPU、112…RAM、113…ROM、114…不揮発性ストレージ、115…ネットワークインタフェース、116…入力部、117…表示部、200…CPU評価ボード、300…FPGA評価ボード
図1
図2
図3
図4
図5