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

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

▶ 上海寒武紀信息科技有限公司の特許一覧

特許7034336データを処理するための方法、装置、および関連製品
<>
  • 特許-データを処理するための方法、装置、および関連製品 図1
  • 特許-データを処理するための方法、装置、および関連製品 図2
  • 特許-データを処理するための方法、装置、および関連製品 図3
  • 特許-データを処理するための方法、装置、および関連製品 図4
  • 特許-データを処理するための方法、装置、および関連製品 図5
  • 特許-データを処理するための方法、装置、および関連製品 図6
  • 特許-データを処理するための方法、装置、および関連製品 図7
  • 特許-データを処理するための方法、装置、および関連製品 図8
  • 特許-データを処理するための方法、装置、および関連製品 図9
  • 特許-データを処理するための方法、装置、および関連製品 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-03-03
(45)【発行日】2022-03-11
(54)【発明の名称】データを処理するための方法、装置、および関連製品
(51)【国際特許分類】
   G06N 3/02 20060101AFI20220304BHJP
   G06F 7/499 20060101ALI20220304BHJP
【FI】
G06N3/02
G06F7/499 101
【請求項の数】 20
(21)【出願番号】P 2020564843
(86)(22)【出願日】2020-05-21
(65)【公表番号】
(43)【公表日】2022-01-11
(86)【国際出願番号】 CN2020091578
(87)【国際公開番号】W WO2021036362
(87)【国際公開日】2021-03-04
【審査請求日】2020-11-16
(31)【優先権主張番号】201910804627.5
(32)【優先日】2019-08-28
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】520448979
【氏名又は名称】上海寒武紀信息科技有限公司
【氏名又は名称原語表記】SHANGHAI CAMBRICON INFORMATION TECHNOLOGY CO., LTD
【住所又は居所原語表記】Floor 6, Block B, No.168, Tonghui Road, Pudong New Area, Shanghai 201306, China
(74)【代理人】
【識別番号】100146374
【弁理士】
【氏名又は名称】有馬 百子
(72)【発明者】
【氏名】張 尭
(72)【発明者】
【氏名】江 広
(72)【発明者】
【氏名】張 曦珊
(72)【発明者】
【氏名】周 詩怡
(72)【発明者】
【氏名】黄 迪
(72)【発明者】
【氏名】劉 暢
(72)【発明者】
【氏名】郭 家明
【審査官】松崎 孝大
(56)【参考文献】
【文献】特開平7-84975(JP,A)
【文献】特開2008-33729(JP,A)
【文献】特開2012-203566(JP,A)
【文献】特開2019-79535(JP,A)
【文献】米国特許出願公開第2018/0121789(US,A1)
【文献】米国特許出願公開第2020/0234133(US,A1)
【文献】中国特許出願公開第107688855(CN,A)
【文献】中国特許出願公開第109993296(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/02
G06F 7/499
(57)【特許請求の範囲】
【請求項1】
データを処理するための方法であって、
機械学習モデルに用いられる1グループの量子化待ちデータを取得するステップと、
前記1グループの量子化待ちデータを、複数のドット・ポジションを用いてそれぞれ量子化することにより、複数グループの量子化後のデータを決定するステップであって、前記複数のドット・ポジションの各々は、前記複数グループの量子化後のデータ中の小数点の位置を指定するステップと、
前記1グループの量子化待ちデータの量子化に用いるように、前記複数グループの量子化後のデータの中の各グループの量子化後のデータと前記1グループの量子化待ちデータとの間の差に基づいて、前記複数のドット・ポジションから1ドット・ポジションを選択するステップと、を含む
ことを特徴とする前記方法。
【請求項2】
前記複数のドット・ポジションの各々は整数で表され、
前記方法は、
前記1グループの量子化待ちデータに関連した範囲に基づいて、前記複数のドット・ポジションの中の1ドット・ポジションを取得するステップと、
得られた前記ドット・ポジションに隣接する整数に基づいて、前記複数のドット・ポジションの中の他のドット・ポジションを決定するステップと、をさらに含む
ことを特徴とする請求項1に記載の方法。
【請求項3】
前記複数のドット・ポジションの中の他のドット・ポジションを決定するステップは、
前記ドット・ポジションを表す前記整数をインクリメントすることによって、前記他のドット・ポジションの中の1ドット・ポジションを決定するステップと、
前記ドット・ポジションを表す前記整数をデクリメントすることによって、前記他のドット・ポジションの中の1ドット・ポジションを決定するステップと、の中の少なくとも1つを含む
ことを特徴とする請求項2に記載の方法。
【請求項4】
前記複数のドット・ポジションから1ドット・ポジションを選択するステップは、
前記複数グループの量子化後のデータと前記1グループの量子化待ちデータとの間の複数の差をそれぞれ決定するステップと、
前記複数の差から最小の差を選択するステップと、
前記複数のドット・ポジションから前記最小の差に対応する1ドット・ポジションを選択するステップと、を含む
ことを特徴とする請求項1乃至3の何れか1項に記載の方法。
【請求項5】
前記複数グループの量子化後のデータと前記1グループの量子化待ちデータとの間の複数の差をそれぞれ決定するステップは、
前記複数グループの量子化後のデータの所定の1グループの量子化後のデータに対して、前記所定の1グループの量子化後のデータと前記1グループの量子化待ちデータとの間の1グループの相対差をそれぞれ決定するステップと、
前記1グループの相対差に基づいて、前記複数の差の中の1つの差を決定するステップと、を含む
ことを特徴とする請求項4に記載の方法。
【請求項6】
前記複数グループの量子化後のデータと前記1グループの量子化待ちデータとの間の複数の差をそれぞれ決定するステップは、
前記複数グループの量子化後のデータの中の所定の1グループの量子化後のデータに対して、前記1グループの量子化後のデータの量子化平均値と前記1グループの量子化待ちデータの元の平均値とをそれぞれ決定するステップと、
前記量子化平均値と前記元の平均値とに基づいて、前記複数の差の中の1つの差を決定するステップと、を含む
ことを特徴とする請求項4に記載の方法。
【請求項7】
前記1グループの量子化待ちデータは、ニューラル・ネットワーク・モデル中の1グループの浮動小数点数を含み、
前記方法は、
前記1グループの量子化待ちデータを、選択された前記ドット・ポジションを用いて量子化することによって、1グループの量子化後のデータを得るステップであって、前記1グループの量子化待ちデータを量子化することは、選択された前記ドット・ポジションに基づいて、前記1グループの量子化待ちデータを前記1グループの量子化後のデータにマッピングすることを含み、前記1グループの量子化後のデータ中の小数点の位置は、選択された前記ドット・ポジションによって決定されるものであるステップと、
得られた前記1グループの量子化後のデータをニューラル・ネットワーク・モデルに入力することによって、処理に用いるステップと、をさらに含む
ことを特徴とする請求項1乃至6の何れか1項に記載の方法。
【請求項8】
ニューラル・ネットワーク・モデル中の1グループの浮動小数点数を含む、別のグループの量子化待ちデータを取得するステップと、
前記別のグループの量子化待ちデータを、選択された前記ドット・ポジションを用いて量子化することによって、別のグループの量子化後のデータを得るステップであって、前記別のグループの量子化待ちデータを量子化することは、選択された前記ドット・ポジションに基づいて、前記別のグループの量子化待ちデータを前記別のグループの量子化後のデータにマッピングすることを含み、前記別のグループの量子化後のデータ中の小数点の位置は、選択された前記ドット・ポジションによって決定されるものであるステップと、
得られた前記別のグループの量子化後のデータを前記ニューラル・ネットワーク・モデルに入力することによって、処理に用いるステップと、をさらに含む
ことを特徴とする請求項1乃至6の何れか1項に記載の方法。
【請求項9】
データを処理するための装置であって、
機械学習モデルに用いられる1グループの量子化待ちデータを取得するための取得ユニットと、
前記1グループの量子化待ちデータを、複数のドット・ポジションを用いてそれぞれ量子化することにより、複数グループの量子化後のデータを決定するための決定ユニットであって、前記複数のドット・ポジションの各々は、前記複数グループの量子化後のデータ中の小数点の位置を指定する決定ユニットと、
前記1グループの量子化待ちデータの量子化に用いるように、前記複数グループの量子化後のデータの中の各グループの量子化後のデータと前記1グループの量子化待ちデータとの間の差に基づいて、前記複数のドット・ポジションから1ドット・ポジションを選択するための選択ユニットと、を備え、
ことを特徴とする前記装置。
【請求項10】
前記複数のドット・ポジションの各々は整数で表され、
前記装置は、
前記1グループの量子化待ちデータに関連した範囲に基づいて、前記複数のドット・ポジションの中の1ドット・ポジションを取得するためのドット・ポジション取得ユニットと、
得られた前記ドット・ポジションに隣接する整数に基づいて、前記複数のドット・ポジションの中の他のドット・ポジションを決定するためのドット・ポジション決定ユニットと、をさらに備える
ことを特徴とする請求項9に記載の装置。
【請求項11】
前記ドット・ポジション決定ユニットは、
前記ドット・ポジションを表す前記整数をインクリメントすることによって、前記他のドット・ポジションの中の1ドット・ポジションを決定するためのインクリメントユニットと、
前記ドット・ポジションを表す前記整数をデクリメントすることによって、前記他のドット・ポジションの中の1ドット・ポジションを決定するためのデクリメントユニットと、を備える
ことを特徴とする請求項10に記載の装置。
【請求項12】
選択モジュールは、
前記複数グループの量子化後のデータと前記1グループの量子化待ちデータとの間の複数の差をそれぞれ決定するための差決定ユニットと、
前記複数の差から最小の差を選択するための差選択ユニットと、
前記複数のドット・ポジションから前記最小の差に対応する1ドット・ポジションを選択するためのドット・ポジション選択ユニットと、を備える
ことを特徴とする請求項9乃至11の何れか1項に記載の装置。
【請求項13】
前記差決定ユニットは、
前記複数グループの量子化後のデータの中の所定の1グループの量子化後のデータに対して、前記所定の1グループの量子化後のデータと前記1グループの量子化待ちデータとの間の1グループの相対差をそれぞれ決定するための相対差決定ユニットと、
前記1グループの相対差に基づいて、前記複数の差の中の1つの差を決定するための総体差決定ユニットと、を備える
ことを特徴とする請求項12に記載の装置。
【請求項14】
前記差決定ユニットは、
前記複数グループの量子化後のデータの中の所定の1グループの量子化後のデータに対して、前記所定の1グループの量子化後のデータの量子化平均値と前記1グループの量子化待ちデータの元の平均値とをそれぞれ決定するための平均値決定ユニットと、
前記量子化平均値と前記元の平均値とに基づいて、前記複数の差の中の1つの差を決定するための平均値差決定ユニットと、を備える
ことを特徴とする請求項12に記載の装置。
【請求項15】
前記1グループの量子化待ちデータは、ニューラル・ネットワーク・モデル中の1グループの浮動小数点数を含み、
前記装置は、
前記1グループの量子化待ちデータを、選択された前記ドット・ポジションを用いて量子化することによって、1グループの量子化後のデータが得るための量子化ユニットであって、前記1グループの量子化待ちデータを量子化することは、選択された前記ドット・ポジションに基づいて、前記1グループの量子化待ちデータを前記1グループの量子化後のデータにマッピングすることを含み、前記1グループの量子化後のデータ中の小数点の位置は、選択された前記ドット・ポジションによって決定されるものである量子化ユニットと、
得られた前記1グループの量子化後のデータを前記ニューラル・ネットワーク・モデルに入力することによって、処理に用いるための入力ユニットと、をさらに備える
ことを特徴とする9乃至14の何れか1項に記載の装置。
【請求項16】
前記装置は、
ニューラル・ネットワーク・モデル中の1グループの浮動小数点数を含む、別のグループの量子化待ちデータを取得するためのデータ取得ユニットと、
前記別のグループの量子化待ちデータを、選択された前記ドット・ポジションを用いて量子化することによって、別のグループの量子化後のデータが得るための量子化ユニットであって、前記別のグループの量子化待ちデータを量子化することは、選択された前記ドット・ポジションに基づいて、前記別のグループの量子化待ちデータを前記別のグループの量子化後のデータにマッピングすることを含み、前記別のグループの量子化後のデータ中の小数点の位置は、選択された前記ドット・ポジションによって決定されるものである量子化ユニットと、
得られた前記別のグループの量子化後のデータを前記ニューラル・ネットワーク・モデルに入力することによって、処理に用いるための入力ユニットと、をさらに備える
ことを特徴とする請求項9乃至14の何れか1項に記載の装置。
【請求項17】
コンピュータ可読記憶媒体であって、
前記コンピュータ可読記憶媒体には、コンピュータプログラムが記憶されており、前記コンピュータプログラムが実行されると、請求項1乃至8の何れか1項に記載の方法を実現する
ことを特徴するコンピュータ可読記憶媒体。
【請求項18】
人工知能チップであって、
前記チップに請求項9乃至16の何れか1項に記載のデータを処理するためのユニットを備える
ことを特徴とする前記人工知能チップ。
【請求項19】
電子デバイスであって、
前記電子デバイスは請求項18に記載の人工知能チップを備える
ことを特徴とする前記電子デバイス。
【請求項20】
ボートカードであって、
記憶装置と、
インターフェース装置と、
制御装置と、
請求項18に記載の人工知能チップと、を備え、
前記人工知能チップは、前記記憶装置、前記制御装置、および、前記インターフェース装置に接続され、
前記記憶装置は、データを記憶し、
前記インターフェース装置は、人工知能チップと外部装置との間のデータ伝送を実現し、
前記制御装置は、人工知能チップの状態を監視制御する
ことを特徴とする前記ボートカード。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の実施形態は、概してコンピュータ技術の分野に関し、より具体的には、データを処理するための方法、装置、および関連製品に関する。
【背景技術】
【0002】
人工知能技術の継続的な発展に伴い、その応用分野は益々広がり、画像認識、音声認識、および自然言語処理などの分野で何れも良く適用されている。然しながら、人工知能アルゴリズムの複雑さと正確さの向上につれて、機械学習モデルが益々大きくなり、処理に必要なデータ量も益々大きくなる。大量のデータ処理を行なう場合、演算量や時間のオーバーヘッドが大きくなり、処理効率が低下する。
【発明の概要】
【0003】
この点に鑑みて、本開示の実施形態は、データを処理するための方法、装置、および関連製品を提供する。
本開示の第1の態様においては、データを処理するための方法が提供される。この方法は、機械学習モデルに用いられる1グループの量子化待ちデータを取得するステップと、1グループの量子化待ちデータを、複数のドット・ポジションを用いてそれぞれ量子化することにより、複数グループの量子化後のデータを決定するステップであって、複数のドット・ポジションの各々は、複数グループの量子化後のデータ中の小数点の位置を指定するステップと、1グループの量子化待ちデータの量子化に用いるように、複数グループの量子化後のデータの中の各グループの量子化後のデータと1グループの量子化待ちデータとの間の差に基づいて、複数のドット・ポジションから1ドット・ポジションを選択するステップと、を含む。
【0004】
本開示の第2の態様においては、データを処理するための装置が提供される。この装置は、機械学習モデルに用いられる1グループの量子化待ちデータを取得するための取得ユニットと、1グループの量子化待ちデータを、複数のドット・ポジションを用いてそれぞれ量子化することにより、複数グループの量子化後のデータを決定するための決定ユニットであって、複数のドット・ポジションの各々は、複数グループの量子化後のデータ中の小数点の位置を指定する決定ユニットと、1グループの量子化待ちデータの量子化に用いるように、複数グループの量子化後のデータの中の各グループの量子化後のデータと1グループの量子化待ちデータとの間の差に基づいて、複数のドット・ポジションから1ドット・ポジションを選択するための選択ユニットと、を備える。
【0005】
本開示の第3の態様においては、コンピュータ・プログラムを記憶するコンピュータ可読記憶媒体が提供される。コンピュータ・プログラムが実行されると、本開示の各々の実施形態による方法は実現される。
本開示の第4の態様においては、本開示の各々の実施形態によるデータを処理するための装置を備える人工知能チップが提供される。
本開示の第5の態様においては、本開示の各々の実施形態による人工知能チップを備える電子デバイスが提供される。
【0006】
本開示の第6の態様においては、記憶装置と、インターフェース装置と、制御装置と、本開示の各々の実施形態による人工知能チップを備えるボートカードが提供される。ここで、人工知能チップは、記憶装置、制御装置、および、インターフェース装置に接続され、記憶装置はデータを記憶し、インターフェース装置は人工知能チップと外部装置との間のデータ伝送を実現し、および制御装置は人工知能チップの状態を監視制御する。
【0007】
請求項の技術特徴に対して導き出すことにより、背景技術中の課題に対応する有益な効果を収めることができる。図面を参照しながら例の実施形態に対する詳細な説明によれば、本開示の他の特徴と態様が明らかになる。
【図面の簡単な説明】
【0008】
明細書に含まれて明細書の一部を構成する図面は、明細書とともに本開示の例の実施形態、特徴、および態様を示し、しかも本開示の原理を説明するために利用される。
図1】本開示の実施形態に係るデータを処理する方法のための処理システムを示す模式図である。
図2】本開示の実施形態に係るニューラル・ネットワークの例のアーキテクチャを示す模式図である。
図3】本開示の実施形態に係るデータを量子化するためのプロセスを示す模式図である。
図4】本開示の実施形態に係る量子化プロセスを示す模式図である。
図5】本開示の実施形態に係るデータを量子化するためのプロセスを示す模式図である。
図6】本開示の実施形態に係るデータを処理するための方法を示すフローチャートである。
図7】本開示の実施形態に係る異なるドット・ポジションに基づくための異なる量子化案を示す模式図である。
図8】本開示の実施形態に係るデータを処理するための方法を示すフローチャートである。
図9】本開示の実施形態に係るデータを処理するための装置を示すブロック図である。
図10】本開示の実施形態に係るボートカードを示す構造ブロック図である。
【発明を実施するための形態】
【0009】
以下、本開示の実施形態中の図面を参照しながら本開示の実施形態中の技術案に対して明確かつ完全に説明する。明らかに、説明された実施形態は、本開示の実施形態の一部に過ぎず、全部ではない。本開示の実施形態に基づいて、当業者が創造性の労働をせずに得られた他の全ての実施形態は、何れも本開示の保護請求する範囲に属する。
【0010】
本開示の特許請求の範囲、明細書、および図面中の「第一」、「第二」、「第三」、および「第四」などの用語が、異なる対象物を区別するために利用されており、特定の順を説明するために利用されていないことは理解されるべく。本開示の明細書と特許請求の範囲中の「備える(「包括」は中に含める、入れるの意味である)」と「包含(「包含」は中に含まれるの意味である)」という用語は、説明される特徴、全体、ステップ、動作、要素および/または構成要素の存在を指すが、一つ以上の他の特徴、整体、ステップ、動作、要素、構成要素および/またはそれらの組合せの存在または追加を排除するものではない。
【0011】
本開示の説明書に用いられる用語が特定の実施形態を説明する目的のためだけのものであり、本開示を限定することを意図しないことは更に理解されるべく。本開示の明細書と特許請求の範囲に用いられるように、単数形「一」、「一つ」、および「この」が、文脈が明らかに他のことを示しない限り、複数形を含むことを意図する。本開示の説明書と特許請求の範囲中の「および/または」という用語は、関連して列挙される項目の一つ以上の任意の組合せ及び全ての可能な組合せを指し、しかもこれらの組合せを含むことも更に理解されるべく。
【0012】
本開示の明細書と特許請求の範囲に用いられるように、「若し」という用語が、文脈に応じて、「…場合」または「…すると」または「決定に応答」または「検出に応答」に説明される。同様に、「決定される場合」または「検出される場合(説明される条件またはイベント)」という連語が、文脈に応じて、「決定されると」または「決定に応答」または「検出されると(説明される条件またはイベント)」または「検出に応答(説明される条件またはイベント)」に説明される。
【0013】
一般的に、データを量子化するとき、量子化待ちデータに対してスケーリング処理を行なう必要がある。例えば、量子化後のデータを幾つかのビットのバイナリーを用いて表すことが既に決定された場合、ドット・ポジションを用いて小数点の位置を記述することができる。このとき、小数点は、量子化後のデータを整数部と小数部に分割することができる。よって、データ量子化の損失が最小または比較的小さくなるように、1つの適切なドット・ポジションを見付けることにより、データを量子化する必要がある。
【0014】
従来、1グループの量子化待ちデータの値の範囲に基づいてドット・ポジションを決定する技術案が既に提出された。然しながら、量子化待ちデータが常に均一に分布しているとは限らないため、値の範囲に基づいて決定されたドット・ポジションによって、常に正確に量子化が実行できるとは限らず、1グループの量子化データの中の一部の量子化待ちデータに対して、比較的大きな精度損失が発生する可能性がある。
【0015】
このために、本開示の実施形態は、量子化プロセスで使用されるドット・ポジションを決定する新しい解決策を提出する。この新しい解決策は、従来の技術よりも少ない精度損失を実現することができる。本開示の実施形態によれば、機械学習モデルに用いられる1グループの量子化待ちデータを取得した後、1グループの量子化待ちデータを、複数のドット・ポジションを用いてそれぞれ量子化することにより、複数グループの量子化後のデータを決定し、ここで、複数のドット・ポジションの各々のドット・ポジションは、複数グループの量子化後のデータ中の小数点の位置を指定する。次いで、1グループの量子化待ちデータの量子化に用いるように、複数グループの量子化後のデータの中の各グループの量子化後のデータと1グループの量子化待ちデータとの間の差を評価指定として、複数のドット・ポジションから1ドット・ポジションを選択する。この方法によって、より適切なドット・ポジションを見付けることができる。
【0016】
以下は、図1乃至図10を参照しながら本開示の基本原理と若干の例の実施形態を説明する。これらの例の実施形態が、当業者に本開示の実施形態をよりよく理解させてから実現できるようにするためだけに与えられ、決して如何なる方式で本開示の範囲を限定するものではないことは理解されるべく。
【0017】
図1は、本開示の実施形態に係るデータを処理する方法のための処理システム100を示す模式図である。図1に示すように、処理システム100は、複数のプロセッサ101-1、101-2、101-3(総称してプロセッサ101という)とメモリ102とを備え、そのうちプロセッサ101がコマンド・シーケンスを実行するためであり、メモリ102がデータを記憶し、更にランダム・メモリ(RAM、Random Access Memory)とレジスター・ステックも備える。処理システム100中の複数のプロセッサ101は、メモリ空間の一部を共有してもよいし、例えば、RAMメモリ空間とレジスター・スタックの一部を共有し、それぞれのメモリ空間を同時に有してもよい。
【0018】
本開示の実施形態による各々の方法は、複数のプロセッサ(マルチコア)を備える処理システム100(例えば人工知能チップ)の任意の1つのプロセッサに適用され得ることが理解されるべく。このプロセッサは、例えばCPU(Central Processing Unit、セントラル・プロセッサ)のような汎用プロセッサであってもよいし、人工知能演算を実行するための人工知能プロセッサ(IPU)であってもよい。人工知能演算は、機械学習演算、脳と類似な演算などを含むこともできる。ここで、機械学習演算には、ニューラル・ネットワーク演算、k-means演算、ベクトルマシン・サポート演算などが含まれる。この人工知能プロセッサは、例えばGPU(Graphics Processing Unit、パターン処理ユニット)、NPU(Neural-Network Processing Unit、ニューラル・ネットワーク処理ユニット)、DSP(Digital Signal Process、ジタル信号処理ユニット)、フィールド・プログラマブル・ゲート・アレイ(Field-Programmable Gate Array、FPGA)チップのうちの1つまたは組合せを含んでもよい。本開示は、プロセッサの具体的なタイプを限定しない。また、処理システム100中の複数のプロセッサのタイプは、同一であってもよいし、異なってもよい。本開示はこれを限定しない。
【0019】
1つの可能な実施形態においては、本開示が言及するプロセッサは、複数の処理ユニットを備えることができ、各処理ユニットは、割り当てられた様々なタスク、例えばコンボルーション演算タスク、プール化タスク又はフル接続タスクなどを独立して実行することもできる。本開示は、処理ユニットおよび処理ユニットによって実行されるタスクを限定しない。
【0020】
図2は、本開示の実施形態に係るニューラル・ネットワーク200の例のアーキテクチャを示す模式図である。ニューラル・ネットワーク(neural network、NN)は、生物系ニューラル・ネットワークの構造と機能を模倣する数学モデルであり、多くのニューロンに接続されて演算する。よって、ニューラル・ネットワークは、演算モデルであり、多くのバイト(または「ニューロン」と呼ばれる)に互いに接続構成される。各バイトは、活性化関数(activation function)と呼ばれる特定の出力関数を表す。2つのニューロン間の接続は、何れもこの接続信号による1つの重み値を表し、重み値と呼ばれ、ニューラル・ネットワークの記憶に該当する。ニューラル・ネットワークの出力は、ニューロン間の接続式、および、重み値と活性化関数によって、異なる。ニューラル・ネットワークにおいて、ニューロンは、ニューラル・ネットワークの基本単位である。ニューロンは、所定の数の入力と1つのバイアスを取得し、信号(値)が達したときに1つの重み値を乗算する。接続とは、1つのニューロンを他の層又は同一の層の別のニューロンに接続することであり、接続は、自身に関連した重み値が伴われる。また、バイアスとは、ニューロンの余分の入力であり、常に1であり、しかも自分の接続用重み値を有する。これは、全ての入力が空(全て0)であっても、ニューロンが活性化されることを保証することができる。
【0021】
適用においては、ニューラル・ネットワーク中のニューロンに非線形関数を適用しない場合、ニューラル・ネットワークは、ただ、線形関数であり、すると、単一なニューロンに比べて強度が強いわけではない。1つのニューラル・ネットワークの出力結果を0から1までの間にあるようにすると、例えば猫/犬を鑑別する例においては、0に近い出力を猫、1に近い出力を犬と見なすことができる。この目的を達成するために、例えば、sigmoid活性化関数などの活性化関数がニューラル・ネットワークに導入される。この活性化関数について、その戻り値が0から1までの数字であることが分かればよい。よって、活性化関数は、ニューラル・ネットワークに非線形性を導入するために利用され、ニューラル・ネットワークの演算結果をより狭い範囲に縮小する。実際には、どのように活性化関数を表するかが重要ではなく、幾つかの重み値によって1つの非線形関数をパラメーター化することが重要であり、これらの重み値を変えることでこの非線形関数を変えることができる。
【0022】
図2は、ニューラル・ネットワーク200のアーキテクチャを示す模式図である。図2に示すニューラル・ネットワークにおいては、入力層210、インプリケーション層220、および出力層230という3つの層が含まれ、そのうち図2に示すインプリケーション層220が3つの層であり、勿論、より多く、より少ないでも良い。ここで、入力層210のニューロンは、入力ニューロンと呼ばれる。入力層をニューラル・ネットワーク中の第1層とする場合、信号(値)を入力して次の層に伝送する必要がある。それは、入力信号(値)に対して如何なる操作も行わず、関連した重み値及びバイアスを有しない。図2に示すニューラル・ネットワークにおいては、4つの入力信号(値)を受信することができる。
【0023】
インプリケーション層220は、入力データに対して異なる変換を適用するためのニューロン(バイト)に利用される。1つのインプリケーション層は、垂直に並んでいるニューロンの集合(Representation)である。図2に示すニューラル・ネットワークにおいては、3つの層が含まれる。第1のインプリケーション層は4つのニューロン(バイト)を有し、第2の層は6個のニューロンを有し、第3の層は3個のニューロンを有する。最後に、インプリケーション層は、出力層に値を伝送する。図2に示すニューラル・ネットワーク200は、3つのインプリケーション層中の各々のニューロン間を完全に接続し、3つのインプリケーション層中の各々のニューロンが何れも次の層の各々のニューロンに接続される。なお、各々のニューラル・ネットワークのインプリケーション層は完全に接続されているわけではない。
【0024】
出力層230のニューロンは、出力ニューロンと呼ばれる。出力層は、最後の1つのインプリケーション層からの出力を受信する。出力層230によって、所望の値と所望の範囲を決定することができる。図2に示すニューラル・ネットワークにおいては、出力層は3つのニューロン、即ち3つの出力信号(値)を有する。
【0025】
実際の適用においては、ニューラル・ネットワークの作用は、多くのサンプル・データ(入力と出力を含む)を予め与えることでトレーニングするものである。トレーニングが完了した後に、将来の実環境の入力に対して正確な出力を求めるニューラル・ネットワークを利用する。
【0026】
ニューラル・ネットワークのトレーニングを論じる前に、損失関数を定義する必要がある。損失関数とは、ニューラル・ネットワークが特定のタスクでどれだけうまく機能するかを示す関数である。実行時の最も直接的な方法は、トレーニング・プロセス中で各々のサンプル・データに対してニューラル・ネットワークに沿って伝送してから1つの数値を求めた後に、この数値と所望の実際の数値を比べて差を演算して2乗する。このように演算し得たものが、予測値と実際の数値との間の距離である。ニューラル・ネットワークのトレーニングは、この距離または損失関数の値を小さくすることが望ましいことである。
【0027】
ニューラル・ネットワークのトレーニングを始めるとき、重み値がランダムに初期化される必要がある。初期化されたニューラル・ネットワークが、良好な結果を提供しないことは明らかである。トレーニング・プロセスにおいては、仮に悪いニューラル・ネットワークから始めることを想定しており、トレーニングにより高精度ある1つのネットワークが得られる。同時に、トレーニングを終了するとき、損失関数の関数値を非常に小さくすることがさらに望ましい。
【0028】
ニューラル・ネットワークのトレーニング・プロセスは、2段階に分けられ、そのうち第1の段階は、信号のフォワード処理であり、入力層210からインプリケーション層220を経て、最後に出力層230までに到達する。第2の段階は、逆伝送勾配であり、勾配に応じてニューラル・ネットワーク中の各層の重み値とバイアスを出力層230からインプリケーション層220まで順に調節し、最後に入力層210に到達する。
【0029】
フォワード処理においては、ニューラル・ネットワークの入力層210に入力値が入力され、しかもニューラル・ネットワークの出力層230から予測値と呼ばれる出力が得られる。入力値がニューラル・ネットワークの入力層210に提供される場合、如何なる操作を行なわない。インプリケーション層においては、第2のインプリケーション層が第1のインプリケーション層から予測中間結果値を取得して演算や活性化という操作を行なってから、得られた予測中間結果値を次のインプリケーション層に伝送する。後続の層においては、同じ操作を実行し、最後にニューラル・ネットワークの出力層230において出力値を得る。
【0030】
フォワード処理後、予測値と呼ばれる出力値が得られる。誤差を演算するために、損失関数を用いて予測値と実際の出力値を比べてから対応する誤差値を得る。逆伝送は、微分学のチェーン法を用いており、チェーン法においては、先ずニューラル・ネットワークの最終層の重み値に対応する誤差値の導関数を演算する。これらの導関数が勾配と呼ばれ、次いで、これらの勾配を利用することでニューラル・ネットワークおける最後からの2番目の層の勾配が演算される。この処理は、ニューラル・ネットワーク中の各々の重み値の勾配が求められるまでに繰り返される。最後に、誤差値を低減する目的を果たすように、重み値から対応する勾配を減算することにより、重み値を1回更新する。
【0031】
また、ニューラル・ネットワークの場合、微調整とは、トレーニングされたニューラル・ネットワークをロードするものであり、微調整プロセスはトレーニング・プロセスと同様に2段階に分けられており、そのうち第1の段階は、信号のフォワード処理であり、第2の段階が逆伝送勾配であり、トレーニングされたニューラル・ネットワークの重み値を更新する。トレーニングとは、初期化されたニューラル・ネットワークをランダムに処理し、ニューラル・ネットワークを最初からトレーニングするものであり、一方、微調整は、最初からトレーニングしない点でトレーニングとは異なる。
【0032】
ニューラル・ネットワークに対してトレーニング或いは微調整を実行するプロセスにおいては、ニューラル・ネットワークが信号の正方向処理および誤差に対応する逆伝搬プロセスを1回経る毎に、ニューラル・ネットワーク中の重み値が勾配を用いて1回更新され、このとき、1回の反復(iteration)と呼ばれる。期待通りの精度あるニューラル・ネットワークを取得するために、トレーニング・プロセスにおいては、膨大なサンプル・データ・セットが必要となる。この場合、サンプル・データ・セットをコンピュータに一度に入力することは不可能である。よって、この課題を解決するために、サンプル・データ・セットを複数のブロックに分割し、各ブロックをコンピュータに伝送し、各ブロックのデータ・セットがフォワード処理された後、ニューラル・ネットワークの重み値を対応して更新する必要がある。完全なサンプル・データ・セットがニューラル・ネットワークの1回のフォワード処理に合格し、しかも1回の重み値の更新を対応して返す場合、このプロセスは1周期(epoch)と呼ばれる。実際には、ニューラル・ネットワークにおいては、完全なデータ・セットを1回伝送するだけでは不十分であり、同じニューラル・ネットワークにおいては、完全なデータ・セットを数回伝送する必要がある。つまり、最後に期待通りの精度あるのニューラル・ネットワークを取得するには、複数の周期が必要である。
【0033】
ニューラル・ネットワークに対してトレーニング或いは微調整を実行するプロセスにおいては、一般的に、望ましくは、速度が速ければ速いほど良く、正確さが高ければ高いほど良い。ニューラル・ネットワークのデータは、例えば浮動小数点数などが高精度データ・フォーマットで表されているため、トレーニング又は微調整のプロセスにおいては、関連したデータが何れも高精度データ・フォーマットであり、次いで、トレーニングされた後のニューラル・ネットワークを量子化する。量子化の対象物がニューラル・ネットワーク全体の重み値であり、しかも量子化後の重み値が何れも8ビットの固定小数点数である場合を例とし、常に、1つのニューラル・ネットワークには数百万個の接続があるため、殆どの空間は何れもニューロン接続の重み値に占められる。それにまして、これらの重み値が何れも異なる浮動小数点数である。各層の重み値が何れも例えば(-3.0,3.0)などのある決定区間の正規分布に向かう。ニューラル・ネットワーク中の各層の重み値に対応する最大値と最小値が保存され、各々の浮動小数点数値が8ビットの固定小数点数で表される。ここで、最大値、最小値の範囲おいては、256個の量子化間隔を空間的に線形に分割し、各々の量子化間隔を8ビットの固定小数点数で表する。例えば(-3.0,3.0)区間においては、バイト0は-3.0を表し、バイト255は3.0を表す。これによって類推すれば、バイト128は0を表す。
【0034】
高精度データフォーマットで表されるデータについて、浮動小数点数を例とし、コンピューター体系構造から分かるように、浮動小数点数の演算表示法、固定小数点数の演算表示法に応じて、同じ長さの固定小数点演算と浮動小数点演算について、浮動小数点演算の演算モードはより複雑になり、より多くの論理装置から浮動小数点演算器を構成することを必要とする。このように体積から言えば、浮動小数点演算器の体積は固定小数点演算器より大きい、しかも固定小数点演算と浮動小数点演算との間の消費電力の差が通常のオーダーであるように、浮動小数点演算器は、より多くのリソースを消費することにより、処理する必要とする。つまり、固定小数点演算器に比べて、浮動小数点演算器の占めるチップ面積および消費電力は、いずれも数倍大きい。
【0035】
図3は、本開示の実施形態に係るデータを量子化するためのプロセス300を示す模式図である。図3に示すように、入力データ310は、量子化されていない浮動小数点数、例えば32ビットの浮動小数点数であり、入力データ310をニューラル・ネットワーク・モデル340に直接入力して処理すると、演算リソースが多くかかり、処理速度が遅くなる。よって、ブロック1-320においては、量子化後のデータ330(例えば8ビットの整数)が得られるように、入力データを量子化することができる。量子化後のデータ330がニューラル・ネットワーク・モデル340に入力して処理される場合、8ビットの整数演算が速いため、ニューラル・ネットワーク・モデル340は、入力データに対する処理をより速く完了し、対応する出力結果350を生成する。
【0036】
量子化されていない入力データ310から量子化後のデータ330までの量子化プロセスにおいては、ある程度で幾つかの精度損失が発生し、精度損失の程度は、出力結果350の正確さに直接影響する。よって、入力データ330に対して量子化処理するプロセスにおいては、量子化プロセスの精度損失を最小限にするか、あるいは、できるだけ小さくする必要がある。
【0037】
以下、図4を参照しながら量子化プロセスを慨して説明する。図4は、本開示の実施形態に係る量子化プロセスを示す模式図400である。図4は、1グループの量子化待ちデータの中の各々の量子化待ちデータを1グループの量子化後のデータにマッピングすることができる1つの簡単な量子化プロセスを示す。このとき、1グループの量子化待ちデータの範囲は-|max|乃至|max|であり、しかも生成された1グループの量子化後のデータの範囲は-(2n-1-1)乃至+(2n-1+1)である。ここで、nは、定義済みのデータ幅410、即ち量子化後のデータを幾つかのビットで表すかを示す。上記の例を続けると、量子化後のデータが8ビットで表される場合、第1のビットが符号ビットを表すと、量子化後のデータの範囲は、-127~+127であってもよい。
【0038】
なお、量子化後のデータをより正確に表すために、さらに図4に示されるnビットのデータ構造を用いて量子化後のデータを表してもよい。図に示すように、量子化後のデータは、nビットで表されてもよい、ここで、一番左側のビットがデータが正数か負数かであることを示す符号ビット430を表してもよい、小数点420が設定されてもよい、ここの小数点420が、量子化後のデータ中の整数部432と数部434との間のマージンを表す。小数点の左側が2の正のべき乗であり、小数点の右側が2の負のべき乗である。本開示の文脈においては、小数点の位置は、ドット・ポジションで表してもよい。データ幅410が予め決定された場合、小数点の位置420は、ドット・ポジション(整数で表す)を調整することにより、移動され、nビットのデータ構造によって表される範囲および精度は変化することが理解されるべく。
【0039】
例えば、小数点420が一番右側のビットの後にあると、このときの符号ビット430は1ビットを含み、整数部432はn-1ビットを含み、小数部434は0ビットを含む。よって、nビットのデータ構造が表す範囲は、-(2(n-1)-1)乃至+(2(n-1)-1)であり、しかも精度が整数である。例えば、小数点420が一番右側のビットの前にあると、符号ビット430は1ビットを含み、整数部432はn-2ビットを含み、小数部434は1ビットを含む。よって、nビットのデータ構造が表す範囲は、-(2(n-2)-1)乃至+(2(n-2)-1)であり、しかも精度が十進法の小数「0.5」である。このとき、nビットのデータ構造が表す範囲及び精度と量子化待ちデータの範囲及び精度とがより一致するように、ドット・ポジションを決定する必要がある。
【0040】
本開示の実施形態によれば、データを処理するための方法が提供される。先ず、図5を参照しながら本開示の実施形態を慨して説明する。図5は、本開示の実施形態に係るデータを処理するためのプロセスを示す模式図500である。本開示の実施形態によれば、複数の量子化プロセスは、複数のドット・ポジション520に基づいて実行されてもよい。例えば、量子化待ちデータ510について、複数グループの量子化後のデータ530が得られるように、複数のドット・ポジション520の各々のドット・ポジションに基づいて、対応する量子化プロセスが実行される。続いて、複数グループの量子化後のデータ530中の各グループの量子化後のデータと量子化待ちデータ510を比べることにより、この二者の間の差を決定することができる。得られた複数の差540から最小の差に対応するドット・ポジション550を選択することにより、量子化待ちデータ510に最も適合するドット・ポジション550を決定することができる。本開示の実施形態によれば、量子化後のデータをより高い精度で表すことができる。
【0041】
以下、図6を参照しながらデータ処理に関連したより多くの細部を詳しく説明する。図6は、本開示の実施形態に係るデータを処理するための方法600を示すフローチャートである。図6に示すように、ブロック610においては、機械学習モデルに用いられる1グループの量子化待ちデータが取得される。例えば、図3を参照すると、ここで取得された1グループの量子化待ちデータが入力データ310であってもよい、入力データ310を量子化することにより、ニューラル・ネットワーク・モデル340の処理速度を向上させることができる。また、ニューラル・ネットワーク・モデル自体の一部のパラメータ(例えば、重み値など)を量子化することもでき、ニューラル・ネットワークのパラメータを量子化することにより、ニューラル・ネットワーク・モデルのサイズを低減することができる。幾つかの実施形態においては、1グループの量子化待ちデータの中の各々の量子化待ちデータは、32ビットの浮動小数点数であってもよい。あるいは、量子化待ちデータも、他のビット数の浮動小数点数、または他のデータ形であってもよい。
【0042】
ブロック620においては、1グループの量子化待ちデータを、複数のドット・ポジションを用いてそれぞれ量子化することによって、複数グループの量子化後のデータを決定することができる。ここで、複数のドット・ポジションの各々のドット・ポジションは、複数グループの量子化後のデータ中の小数点の位置を指定する。本開示の実施形態によれば、複数のドット・ポジションの各々のドット・ポジションが、整数で表される。より多くのドット・ポジションが得られるように、先ず1ドット・ポジションを決定し、次に、このドット・ポジションに対して拡張を行うことができる。
【0043】
本開示の実施形態によれば、1グループの量子化待ちデータに関連した範囲に応じて複数のドット・ポジションの中の1ドット・ポジションが得られる。以下、説明が便利なように、整数Sでドット・ポジションを表し、しかもこの整数Sの値が整数部432に含まれているビットの数を表す。例えば、S=3は、整数部432は3ビットを含むことを表す。元の量子化待ちデータをFx、nビットのデータ構造で表される量子化待ちデータをIxとすると、以下の式1が成り立つ。
【0044】
式3においては、pは、1グループの量子化待ちデータ中の絶対値の最大値を表す。代替的に及び/又は付加的に、pは、他の式で決定された範囲を表すことができる。式3においては、ceilは、アップワード・ラウンド・ナンバー演算を表す。複数のドット・ポジション中の1ドット・ポジション(例えば、S0)は、上記の式3に基づいて決定されてもよい。本開示の実施形態によれば、取得されたドット・ポジションS0に隣接する整数に基づいて、複数のドット・ポジションの中の他のドット・ポジションを決定することができる。ここの「隣接する」整数とは、整数S0と数値が近い整数を指す。また、本開示の実施形態によれば、他のドット・ポジションの中の1ドット・ポジションを決定するように、ドット・ポジションを表す整数に対してインクリメント操作を実行することができる。また、本開示の実施形態によれば、他のドット・ポジションの中の1ドット・ポジションを決定するように、ドット・ポジションを表す整数に対してデクリメント操作を実行することができる。例えば、仮にS0の値が3であるとすると、インクリメントにより隣接する他の整数3+1=4、デクリメントにより隣接する他の整数3-1=2が得られる。
【0045】
本開示の実施形態によれば、ドット・ポジションの近傍の複数のドット・ポジションを考慮することにより、複数のドット・ポジションに基づいて実現された量子化プロセスの量子化効果を比較し、その上、1グループの量子化待ちデータに最も適したドット・ポジションを複数のドット・ポジションから選択することができる。式3のみに基づいて、1ドット・ポジションを決定する技術案に対しては、本発明の実施形態によれば、量子化プロセスの精度を向上させることができる。
【0046】
以下、図7を参照しながら本発明の実施形態に係るより多くの細部を詳しく説明する。図7は、本開示の実施形態に係る異なるドット・ポジションに基づく異なる量子化案を示す模式図700である。図7に示すように、第1の量子化案においては、小数点が図7に示した第1の位置710にある。この第1のドット・ポジション712は、上記の式3に従って決定され得る。次いで、第1のドット・ポジション712に対してデクリメント操作を実行することにより、第2のドット・ポジション722を決定することができ、このとき、小数点が左向きに第2のドット・ポジション720までに移動する。
【0047】
1ドット・ポジションを決定するように、図7は、第1のドット・ポジション712に対して1デクリメント操作を実行することを概略的に示すだけであることが理解されるべく。本開示の実施形態によれば、より多くのドット・ポジションを決定するように、第1のドット・ポジション712に対して、インクリメント操作および/またはデクリメント操作をそれぞれ実行することもできる。本開示の実施形態によれば、より多くのドット・ポジションを決定するように、より多くのインクリメント・デクリメント操作が実行されてもよい。例えば、S1= S0+1、S2=S0-1、S3=S0+2、S4=S0-2などの異なるドット・ポジションをそれぞれ決定することができる。
【0048】
【0049】
上記のFxは、1グループの量子化待ちデータ中の1量子化待ちデータのみを表し、1グループの量子化後のデータは、さらに複数(例えば、m個)の量子化待ちデータが存在してもよいことを理解されるべく。このとき、対応する量子化後のデータが得られるように、上記のプロセスに基づいて、各々の量子化待ちデータに対して処理を行なうことができる。このとき、各ドット・ポジションに基づいて、対応する1グループの量子化後のデータ(m個)が得られる。
【0050】
ブロック530においては、1グループの量子化待ちデータの量子化に用いるように、複数グループの量子化後のデータの中の各グループの量子化後のデータと1グループの量子化待ちデータとの間の差に基づいて、複数のドット・ポジションから1ドット・ポジションを選択することができる。本願発明者は、研究および多くの実験により、量子化前後のデータの差が量子化前後の精度損失を反映することができ、ここで、差が小さければ小さいほど、量子化操作の精度損失が小さくなることを見付けた。よって、本開示の実施形態においては、量子化前後のデータの差を、最適なドット・ポジションを選択する指標とし、従来の案よりも小さい精度を実現することができる。
【0051】
【0052】
【0053】
例えば、ドット・ポジションS0について、このドット・ポジションS0を用いて量子化操作を行なう前後のデータ間のm個の差を決定することができる。次いで、例えば、このm個の差の和を求め(代替的に及び/又は追加的に、他の演算が使用されてもよい)、ドット・ポジションS0に対する差Diff0が得られる。同様に、他のドット・ポジションS1、S2、S3、S4などに対する差Diff1、Diff2、Diff3、Diff4などがそれぞれ得られる。
【0054】
本開示の実施形態によれば、量子化操作が行なわれるように、複数の差から最小の差を選択し、しかも複数のドット・ポジションから最小の差に対応する1ドット・ポジションを選択することできる。例えば、仮にドット・ポジションS1に基づいて決定された差Diff1が最小の差であるとすると、後続の量子化処理に用いられるように、ドット・ポジションS1を選択することができる。
【0055】
【0056】
なお、式6および式7においては、Fmeanは、1グループの量子化待ちデータの平均値を表し、Fmeanは、1グループの量子化後のデータの平均値を表す。具体的には、上記の式6または式7に基づいて、ドット・ポジションS0に対する差Diff0が得られる。同様に、他のドット・ポジションS1、S2、S3、S4などに対する差Diff1、Diff2、Diff3、Diff4などがそれぞれ得られる。次いで、量子化操作が行なわれるように、複数のドット・ポジションS0、S1、S2、S3、S4から最小の差に対応する1つのドット・ポジションを選択することができる。平均値法を採用することで、1グループの量子化待ちデータの中の各々の量子化待ちデータに対して量子化前後の差を決定する必要がないため、データ処理効率を向上させ、さらにドット・ポジションの決定速度を向上させることができる。
【0057】
以上、処理中に関連した複数の式について説明したが、以下、図8を参照しながらデータ処理の具体的なフローを説明する。図8は、本開示の実施形態に係るデータを処理するための方法800を示すフローチャートである。ブロック810においては、1グループの量子化待ちデータに関連した範囲に基づいて、第1のドット・ポジション(例えば、S0)を取得すことができる。ここで、点位置S0は、式3に基づいて得られる。ブロック820においては、第1のドット・ポジションに対してインクリメント/デクリメント操作を実行することにより、第2のドット・ポジション(例えば、S1=S0+1)を取得することができる。
【0058】
ブロック830においては、第1グループの量子化後のデータと第2グループの量子化後のデータは、第1のドット・ポジションS0と第2のドット・ポジションS1に基づいてそれぞれ決定され得る。具体的には、1グループの量子化待ちデータの中の各々の量子化待ちデータについて、式2に基づいて、対応する量子化データが得られる。ブロック840においては、第1グループの量子化後のデータおよび第2グループの量子化後のデータと1グループの量子化待ちデータとの間の第1の差Diff0と第2の差Diff1が、それぞれ決定され得る。例えば、第1の差Diff0と第2の差Diff1が、数式4乃至式7のうちの何れか1つに基づいて決定され得る。ブロック850においては、第1の差Diff0と第2の差Diff1を比べ、第1の差が第2の差よりも小さい場合、第1のドット・ポジションを選択するように、方法800は、ブロック852までに進む。第1の差が第2の差よりも大きい(または等しい)場合、第2のドット・ポジションを選択するように、方法800は、ブロック854までに進む。破線ブロック860に示すように、選択されたドット・ポジションは、量子化待ちデータに対する量子化処理を実行するに用いられれる。
【0059】
ブロック860においては、量子化処理は、元の1グループの量子化待ちデータに対して実行され得ることが理解されるべく。後続の量子化待ちデータの分布が元の1グループの量子化待ちデータの分布と類似している場合、さらに後続の他のグループの量子化待ちデータに対して量子化処理を行なうこともできる。以下、ニューラル・ネットワーク・モデルの具体的な応用環境について説明する。本開示の実施形態によれば、1グループの量子化待ちデータは、ニューラル・ネットワーク・モデル中の1グループの浮動小数点数を含むことができる。高い複雑さを有する浮動小数点数を低い複雑さを有する浮動小数点数に変換するように、量子化操作は、選択されたドット・ポジションを用いて実行され得る。本開示の実施形態によれば、1グループの量子化後のデータが得られるように、1グループの量子化待ちデータを、選択されたドット・ポジションを用いて量子化する。具体的には、選択されたドット・ポジションに基づいて、1グループの量子化待ちデータを1グループの量子化後のデータにマッピングし、1グループの量子化後のデータ中の小数点の位置が選択されたドット・ポジションに決定される。仮に選択されたドット・ポジションを4であるとすると、量子化プロセスにおいては、量子化後のデータの整数部を4ビットで表すことができる。次いで、処理するために、得られた1グループの量子化後のデータは、ニューラル・ネットワーク・モデルに入力され得る。
【0060】
本開示の実施形態によれば、選択されたドット・ポジションを用いて、後続の他の量子化待ちデータに対して量子化することができる。具体的には、ニューラル・ネットワーク・モデル中の1グループの浮動小数点数を含む、別の1グループの量子化待ちデータが得られる。別の1グループの量子化後のデータが得られるように、別の1グループの量子化待ちデータを、選択されたドット・ポジションを用いて量子化し、しかも処理のために、得られた別の1グループの量子化後のデータは、ニューラル・ネットワーク・モデルに入力され得る。
【0061】
なお、前述した各々の方法の実施形態について、説明を簡単にするために、それらを一連の動作の組合せとして表現したが、当業者であれば、本開示に従い、あるステップが他の序をとることができ、または同時に行われることができるため、本開示は記載される動作の順によって限定されないことを理解するべく。次に、当業者であれば、明細書に記載される実施形態が何れも選択可能な実施形態に属し、関連した動作及びモジュールが本開示に必要なものではないことを理解するべく。
【0062】
なお、フローチャート中の各々のステップが矢印の指示に従って順に表示されているが、これらのステップが矢印の指示の順に順次実行されることは必須ではない。これらのステップの実行は、本文に明示的に記載されていない限り、厳密な順序の制限はなく、他の順序で実行されてもよい。しかもフローチャート中の少なくとも一部のステップは、複数のサブ・ステップまたは複数の段階を含んでもよく、これらのサブ・ステップまたは段階は、必ずしも同じ時点で実行完了する必要はなく、異なる時点で実行してもよく、これらのサブ・ステップまたは段階の実行順序も、必ずしも順次行なう必要はなく、他のステップまたは他のステップのサブ・ステップまたは段階の少なくとも一部と順番にまたは交替に実行してもよい。
【0063】
図9は、本開示の実施形態に係るデータを処理するための装置900を示すブロック図である。図9に示すように、装置900は、取得ユニット910、決定ユニット920、および選択ユニット930を備える。取得ユニット910は、機械学習モデルに用いられる1グループの量子化待ちデータを取得する。決定ユニット920は、1グループの量子化待ちデータを、複数のドット・ポジションを用いてそれぞれ量子化することにより、複数グループの量子化後のデータを決定し、ここで、複数のドット・ポジションの各々のドット・ポジションには、複数グループの量子化後のデータの小数点の位置を指定する、1グループの量子化待ちデータの量子化に用いるように、選択ユニット930は、複数グループの量子化後のデータの各グループの量子化後のデータと1グループの量子化待ちデータとの間の差に基づいて、複数のドット・ポジションから1ドット・ポジションを選択する。
【0064】
また、装置900中の取得ユニット910、決定ユニット920、および選択ユニット930は、本開示の各々の実施形態に係るステップ、および/または動作を実行するように配置されてもよい。
【0065】
上記の装置の実施形態が単なる例であり、本開示の装置は更に他の式で実現されてもよいことが理解されるべく。例えば上記の実施形態で説明したユニット/モジュールの分割は、一つの論理的機能の分割のみであったが、実際に実現する場合には別の分割式があってもよい。例えば複数ユニット、モジュール、またはサブアセンブリーが組み合わせてもよく、別のシステムに統合されてもよく、または幾つかの特徴は、省略されてもよく、または実行されなくてもよい。
【0066】
また、特に説明しない限り、本開示の各実施形態中の各機能ユニット/モジュールは、1つのユニット/モジュールに統合されてもよく、各ユニット/モジュールが物理的にそれぞれ存在してもよく、2つ以上のユニット/モジュールが統合されてもよい。上記統合されたユニット/モジュールは、ハードウェアの形態で実現されてもよく、ソフトウェア・プログラム・モジュールの形態で実現されてもよい。
【0067】
統合されたユニット/モジュールがハードウェアの形態で実現される場合、このハードウェアは、デジタル回路、アナログ回路などであり得る。ハードウェア構造の物理的な実現は、トランジスタ、メモリスタなどを備えるが、これらに限定されない。人工知能プロセッサは、特に説明しない限り、例えばCPU、GPU、FPGA、DSP、およびASICなどの任意の適切なハードウェア・プロセッサであってもよい。メモリユニットは、特に説明しない限り、例えば抵抗ランダム・アクセス・メモリRRAM(登録商標)(Resistive Random Access Memory)、ダイナミック・ランダム・アクセス・メモリDRAM(Dynamic Random Access Memory)、スタティック・ランダム・アクセス・メモリSRAM (Static Random-Access Memory)、強化ダイナミック・ランダム・アクセス・メモリEDRAM(Enhanced Dynamic Random Access Memory)、高帯域幅メモリHBM (High-Bandwidth Memory)、およびハイブリッド・メモリ立方体HMC(Hybrid Memory Cube)などの任意の適切な磁気または光磁気記憶媒体であり得る。
【0068】
統合されたユニット/モジュールがソフトウェア・プログラム・モジュールの形態で実現され、独立した製品として販売または使用される場合、1つのコンピュータ可読メモリに記憶され得る。このような理解に基づいて、本開示の技術案は、本質的に、または、従来の技術に貢献した部分、または、この技術案の全部または部分をソフトウェア製品の形態で具体化することができ、このコンピューター・ソフトウェア製品は1つのメモリに記憶され、本開示の各々の実施形態で説明される方法の全部または部分のステップを、1台の演算装置(パーソナル・コンピュータ、サーバ、またはネットワーク装置などであってもよい)に実行させるための若干の命令を含む。前記メモリは、Uディスク、読取専用メモリ(Read-Only Memory ROM)、ランダム・アクセス・メモリ(Random Access Memory RAM)、移動ハードディスク、磁気ディスク、または光ディスクなどの各々のプログラム・コードを記憶可能な媒体を含む。
【0069】
1つの実施形態においては、コンピュータプログラムが記憶されるコンピュータ可読記憶媒体は開示され、コンピュータプログラムが実行されると、本開示の各々の実施形態による方法は実現される。
1つの実施形態においては、データを処理するための装置を備える人工知能チップは更に開示される。
【0070】
1つの実施形態においては、記憶装置、インターフェース装置、制御装置、および人工知能チップを備えるボートカードは開示される。ここで、人工知能チップは記憶装置、制御装置、およびインターフェース装置にそれぞれ接続され、記憶装置はデータを記憶し、インターフェース装置は人工知能チップと外部装置との間のデータ伝送を実現し、および制御装置は人工知能チップの状態を監視制御する。
【0071】
図10は、本開示の実施形態に係るボートカード1000を示す構造ブロック図である。図10に示すように、前記ボートカード1000は前記チップ1030-1と1030-2(総称してチップ1030という)に加えて、更に他の組合せコンポネントを備え、この組合せコンポネントは、記憶装置1010、インターフェース装置1040、およびコントロール装置1020を備えるが、これらに限られない。インターフェース装置1040は、外部装置1060に接続され得る。記憶装置1010は、データを記憶するための、バス1050を介して人工知能チップ1030に接続される。記憶装置1010は、複数グループの記憶ユニット1010-1と1010-2を備え得る。各グループの記憶ユニットは、バス1050を介して人工知能チップに接続される。各グループの記憶ユニットは、DDR SDRAM(英語:Double Data Rate SDRAM ダブルレート同期ダイナミック・ランダム・アクセス・メモリ)とすることができることが理解されるべく。
【0072】
DDRは、クロック周波数を上げることなく、SDRAMの速度を2倍に上げることができる。DDRは、クロックパルスの立ち上がりと立ち下がりでデータを読み出すことができる。DDRの速度は、基準SDRAMの2倍である。1つの実施形態においては、記憶装置は、4グループの記憶ユニットを含んでもよい。各1グループの記憶ユニットは、複数のDDR4粒子(チップ)を備え得る。1つの実施形態においては、人工知能チップの内部には、データを伝送するための64ビットとECC検証を行なうための8ビットとを備える4つ計72ビットのDDR4コントローラを含んでもよい。各1グループのメモリユニットにおいては、DDR4-3200粒子を採用するとき、データ伝送の理論帯域を25600MB/sに達することが理解されるべく。
【0073】
1つの実施形態においては、各グループの記憶ユニットは、並列に配置されている複数のダブルレート同期ダイナミック・ランダム・アクセス・メモリを備える。DDRは、1クロック・サイクルおいて、2回のデータ伝送が可能である。チップには、各々の記憶ユニットのデータ伝送とデータ記憶の制御を行なうためのDDRを制御するコントローラが設けられている。
【0074】
インターフェース装置は、人工知能チップと電気的に接続されている。インターフェース装置は、人工知能チップと外部装置(例えば、サーバ又はコンピュータ)との間のデータ伝送を可能にする。例えば1つの実施形態においては、インターフェース装置は、基準PCIEインターフェースであってもよい。例えば基準PCIEインターフェースを介して、処理待ちのデータをサーバからチップまでに伝送されることにより、データの伝送が実現される。好ましくは、理論帯域幅は、PCIE3.0X16インターフェースを用いて伝送される場合、16000MB/sに達することができる。他の実施形態においては、インターフェース装置は、他のインターフェースであってもよく、本開示は、上記の他のインターフェースの具体的な表現式を限定せず、インターフェースユニットが、スイッチャー機能を実現できればよい。また、人工知能チップの演算結果は、依然としてインターフェース装置によって外部装置(例えば、サーバ)までに送り返される。
【0075】
制御装置は、人工知能チップと電気的に接続されている。制御装置は、人工知能チップの状態を監視制御する。具体的には、人工知能チップおよび制御装置は、SPIインターフェースを介して電気的に接続され得る。制御装置は、マイクロ・コントローラー・ユニット(Micro Controller Unit MCU)を含んでもよい。例えば人工知能チップは、複数の処理チップ、複数の処理コア、または複数の処理回路を含んでもよく、複数の負荷を動かしても良い。よって、人工知能チップは、重負荷及び軽負荷などの異なる動作状態にあってもよい。制御装置によって、人工知能チップおけるの複数の処理チップ、複数の処理、および/または複数の処理回路の動作状態の調整制御が可能になる。
【0076】
1つの可能な実施態様においては、上記の人工知能チップを備える電子デバイスは開示される。電子デバイスは、データ処理装置、ロボット、コンピュータ、プリンタ、スキャナ、タブレット、スマートフォン、携帯電話、ドライブレコーダ、ナビゲーションメータ、センサ、カメラヘッド、サーバ、クラウドサーバ、カメラ、ビデオカメラ、プロジェクタ、腕時計、イヤホン、モバイルストレージ、ウェアラブル・デバイス、交通機関、家庭用電気器具、および/または医療装置を備える。
【0077】
交通機関は、航空機、船舶、および/または車両を備え、家庭用電気器具は、テレビ、エアコン、電子レンジ、冷蔵庫、炊飯器、加湿器、洗濯機、電灯、ガス焜炉、油煙器を備え、医療装置は、核磁気共振器、超音波スキャナー、および/または心電計を備える。
【0078】
上記の実施形態においては、各実施形態に対する説明はそれぞれ重点があり、ある実施形態には詳細な説明がない場合、他の実施形態の中の関連説明を参照することができる。上記の実施形態の各技術特徴は、任意に組み合わせることができ、記載を簡潔にするために、上記の実施形態の中の各技術特徴の全ての可能な組合せを記載していないが、これらの技術特徴の組合せに矛盾が生じない限り、本明細書に記載の範囲と見なされるべく。
以下の条項によって前述した内容をより良く理解され得る。
A1.データを処理するための方法であって、
機械学習モデルに用いられる1グループの量子化待ちデータを取得するステップと、
【0079】
1グループの量子化待ちデータを、複数のドット・ポジションを用いてそれぞれ量子化することにより、複数グループの量子化後のデータを決定するステップであって、複数のドット・ポジションの各々のドット・ポジションは、複数グループの量子化後のデータ中の小数点の位置を指定するステップと、
【0080】
1グループの量子化待ちデータの量子化に用いるように、複数グループの量子化後のデータの中の各グループの量子化後のデータと1グループの量子化待ちデータとの間の差に基づいて、複数のドット・ポジションから1ドット・ポジションを選択するステップと、を含むことを特徴とする前記方法。
A2.条項A1に記載の方法であって、複数のドット・ポジションの各々は整数で表され、方法は、
1グループの量子化待ちデータに関連した範囲に基づいて、複数のドット・ポジションの中の1ドット・ポジションを取得するステップと、
【0081】
取得したドット・ポジションに隣接する整数に基づいて、複数のドット・ポジションの中の他のドット・ポジションを決定するステップと、をさらに含むことを特徴とする前記方法。
A3.条項A2に記載の方法であって、複数のドット・ポジションの中の他のドット・ポジションを決定するステップは、
ドット・ポジションを表す整数をインクリメントすることによって、他のドット・ポジションの中の1ドット・ポジションを決定するステップと、
【0082】
ドット・ポジションを表す整数をデクリメントすることによって、他のドット・ポジションの中の1ドット・ポジションを決定するステップと、を含むことを特徴とする前記方法。
A4.条項A1乃至A3の何れか1項に記載の方法であって、複数のドット・ポジションから1ドット・ポジションを選択するステップは、
複数グループの量子化後のデータと1グループの量子化待ちデータとの間の複数の差をそれぞれ決定するステップと、
複数の差から最小の差を選択するステップと、
複数のドット・ポジションから最小の差に対応する1ドット・ポジションを選択するステップと、を含むことを特徴とする前記方法。
A5.条項A4に記載の方法であって、複数グループの量子化後のデータと1グループの量子化待ちデータとの間の複数の差をそれぞれ決定するステップは、
【0083】
複数グループの量子化後のデータの中の所定の1グループの量子化後のデータに対して、所定の1グループの量子化後のデータと1グループの量子化待ちデータとの間の1グループの相対の差をそれぞれ決定するステップと、
1グループの相対の差に基づいて、複数の差の中の1つの差を決定するステップと、を含むことを特徴とする前記方法。
A6.条項A4に記載の方法であって、複数グループの量子化後のデータと1グループの量子化待ちデータとの間の複数の差をそれぞれ決定するステップは、
【0084】
複数グループの量子化後のデータの中の所定の1グループの量子化後のデータに対して、所定の1グループの量子化後のデータの量子化平均値と1グループの量子化待ちデータの元の平均値とをそれぞれ決定するステップと、
量子化平均値と元の平均値とに基づいて、複数の差の中の1つの差を決定するステップと、を含むことを特徴とする前記方法。
【0085】
A7.条項A1乃至A6の何れか1項に記載の方法であって、1グループの量子化待ちデータは、ニューラル・ネットワーク・モデル中の1グループの浮動小数点数を含み、前記方法は、
【0086】
1グループの量子化待ちデータを、選択されたドット・ポジションを用いて量子化することによって、1グループの量子化後のデータが得るステップであって、1グループの量子化待ちデータを量子化することは、選択されたドット・ポジションに基づいて、1グループの量子化待ちデータを1グループの量子化後のデータにマッピングすることを含み、1グループの量子化後のデータ中の小数点の位置は、選択されたドット・ポジションに決定されるものであるステップと、
【0087】
得られた1グループの量子化後のデータをニューラル・ネットワーク・モデルに入力することによって、処理に用いるステップと、をさらに含むことを特徴とする前記方法。
A8.条項A1乃至A6の何れか1項に記載の方法であって、前記方法は、
ニューラル・ネットワーク・モデル中の1グループの浮動小数点数を含む、別のグループの量子化待ちデータを取得するステップと、
【0088】
別のグループの量子化後のデータが得られるように、別のグループの量子化待ちデータを、選択されたドット・ポジションを用いて量子化するステップであって、別のグループの量子化待ちデータを量子化することは、選択されたドット・ポジションに基づいて、別のグループの量子化待ちデータを別のグループの量子化後のデータにマッピングすることを含み、別のグループの量子化後のデータ中の小数点の位置が選択されたドット・ポジションに決定されるものであるステップと、
【0089】
得られた別のグループの量子化後のデータをニューラル・ネットワーク・モデルに入力することによって、処理に用いるステップと、をさらに含むことを特徴とする前記方法。
A9.データを処理するための装置であって、
機械学習モデルに用いられる1グループの量子化待ちデータを取得するための取得ユニットと、
【0090】
1グループの量子化待ちデータを、複数のドット・ポジションを用いてそれぞれ量子化することにより、複数グループの量子化後のデータを決定するための決定ユニットであって、複数のドット・ポジションの各々は、複数グループの量子化後のデータ中の小数点の位置を指定する決定ユニットと、
【0091】
1グループの量子化待ちデータの量子化に用いるように、複数グループの量子化後のデータの中の各グループの量子化後のデータと1グループの量子化待ちデータとの間の差に基づいて、複数のドット・ポジションから1ドット・ポジションを選択するための選択ユニットと、を備えることを特徴とする前記装置。
A10.条項A9に記載の装置であって、複数のドット・ポジションの各々は整数で表され、前記装置は、
【0092】
1グループの量子化待ちデータに関連した範囲に基づいて、複数のドット・ポジションの中の1ドット・ポジションを取得するためのドット・ポジション取得ユニットと、
【0093】
得られたドット・ポジションに隣接する整数に基づいて、複数のドット・ポジションの中の他のドット・ポジションを決定するためのドット・ポジション決定ユニットと、をさらに備えることを特徴とする前記装置。
A11.条項A10に記載の装置であって、ドット・ポジション決定ユニットは、
【0094】
ドット・ポジションを表す整数をインクリメントすることによって、他のドット・ポジションの中の1ドット・ポジションを決定するためのインクリメントユニットと、
【0095】
ドット・ポジションを表す整数をデクリメントすることによって、他のドット・ポジションの中の1ドット・ポジションを決定するためのデクリメントユニットと、を備えることを特徴とする前記装置。
A12.条項A9乃至A11の何れか1項に記載の装置であって、選択モジュールは、
複数グループの量子化後のデータと1グループの量子化待ちデータとの間の複数の差をそれぞれ決定するための差決定ユニットと、
複数の差から最小の差を選択するための差選択ユニットと、
【0096】
複数のドット・ポジションから最小の差に対応する1ドット・ポジションを選択するためのドット・ポジション選択ユニットと、を備えることを特徴とする前記装置。
A13.条項A12に記載の装置であって、差決定ユニットは、
複数グループの量子化後のデータの中の所定の1グループの量子化後のデータに対して、所定の1グループの量子化後のデータと1グループの量子化待ちデータとの間の1グループの相対差をそれぞれ決定ための相対差決定ユニットと、
1グループの相対差に基づいて、複数の差の中の1つの差を決定するための総体差決定ユニットと、を備えることを特徴とする前記装置。
A14.条項A12に記載の装置であって、差決定ユニットは、
【0097】
複数グループの量子化後のデータの中の所定の1グループの量子化後のデータに対して、所定の1グループの量子化後のデータの量子化平均値と1グループの量子化待ちデータの元の平均値とをそれぞれ決定する平均値決定ユニットと、
量子化平均値と元の平均値とに基づいて、複数の差の中の1つの差を決定する平均値差決定ユニットと、を備えることを特徴とする前記装置。
【0098】
A15.条項A9乃至A14の何れか1項に記載の装置であって、1グループの量子化待ちデータは、ニューラル・ネットワーク・モデル中の1グループの浮動小数点数を含み、前記装置は、
【0099】
1グループの量子化待ちデータを、選択されたドット・ポジションを用いて量子化することによって、1グループの量子化後のデータが得るための量子化ユニットであって、1グループの量子化待ちデータを量子化することは、選択されたドット・ポジションに基づいて、1グループの量子化待ちデータを1グループの量子化後のデータにマッピングすることを含み、1グループの量子化後のデータ中の小数点の位置は、選択されたドット・ポジションに決定されるものである量子化ユニットと、
【0100】
得られた1グループの量子化後のデータをニューラル・ネットワーク・モデルに入力することによって、処理に用いるための入力ユニットと、をさらに備えることを特徴とする前記装置。
A16.条項A9乃至A14の何れか1項に記載の装置であって、前記装置は、
ニューラル・ネットワーク・モデル中の1グループの浮動小数点数を含む、別のグループの量子化待ちデータを取得するデータ取得ユニットと、
【0101】
別のグループの量子化待ちデータを、選択されたドット・ポジションを用いて量子化することによって、別のグループの量子化後のデータが得るための量子化ユニットであって、別のグループの量子化待ちデータを量子化することは、選択されたドット・ポジションに基づいて、別のグループの量子化待ちデータを別のグループの量子化後のデータにマッピングすることを含み、別のグループの量子化後のデータ中の小数点の位置は、選択されたドット・ポジションに決定されるものである量子化ユニットと、
【0102】
得られた別のグループの量子化後のデータをニューラル・ネットワーク・モデルに入力することによって、処理に用いるための入力ユニットと、をさらに備えることを特徴とする前記装置。
【0103】
A17.コンピュータ可読記憶媒体であって、前記コンピュータ可読記憶媒体には、コンピュータプログラムが記憶されており、コンピュータプログラムが実行されると、条項A1乃至A8の何れか1項に記載の方法を実現することを特徴するコンピュータ可読記憶媒体。
【0104】
A18.人工知能チップであって、前記人工知能チップは、条項A9乃至A16の何れか1項に記載のデータを処理するための装置を備えることを特徴とする前記人工知能チップ。
A19.電子デバイスであって、電子デバイスは条項A18に記載の人工知能チップを備えることを特徴とする前記電子デバイス。
A20.ボートカードであって、記憶装置と、インターフェース装置と、制御装置と、条項18に記載の人工知能チップと、を備え、
ここで、人工知能チップは、記憶装置、制御装置、および、インターフェース装置に接続され、
記憶装置はデータを記憶し、
インターフェース装置は人工知能チップと外部装置との間のデータ伝送を実現し、
制御装置は人工知能チップの状態を監視制御することを特徴とする前記ボートカード。
A21.条項A20に記載のボートカードであって、
【0105】
記憶装置は、各グループの記憶ユニットがバスによって人工知能チップに接続される複数グループの記憶ユニットを備え、記憶ユニットは、DDR SDRAMであり、
チップは、各々のメモリユニットのデータ伝送とデータ記憶とを制御するためのDDRコントローラーを備え、
インターフェース装置は、基準PCIEインターフェースであることを特徴とする前記ボートカード。
【0106】
上記のように、本開示の実施形態に対して詳細に説明した。本文においては、本開示の原理及び実施形態について、具体的な例を用いて説明し、上記の実施形態の説明が本開示の方法及びその中心思想に対する理解を助けるだけためである。同時に、当業者が本発明の思想に基づいて行なった本開示の具体的な実施形態および応用範囲での変形または変更は、本発明の保護請求する範囲に属する。上記の内容を纏めて、本明細書の内容は、本開示を限定するものと理解されるべきではない。

図1
図2
図3
図4
図5
図6
図7
図8
図9
図10