JP2024514448A - ディープニューラルネットワーク重みのための圧縮技法 - Google Patents

ディープニューラルネットワーク重みのための圧縮技法 Download PDF

Info

Publication number
JP2024514448A
JP2024514448A JP2023558595A JP2023558595A JP2024514448A JP 2024514448 A JP2024514448 A JP 2024514448A JP 2023558595 A JP2023558595 A JP 2023558595A JP 2023558595 A JP2023558595 A JP 2023558595A JP 2024514448 A JP2024514448 A JP 2024514448A
Authority
JP
Japan
Prior art keywords
frame
weight
compressed
weight values
payload
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2023558595A
Other languages
English (en)
Inventor
プラジャクト・クルカルニ
ラクシュミ・ナラヤナ・マチャ
ハオピン・シュ
Original Assignee
クアルコム,インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by クアルコム,インコーポレイテッド filed Critical クアルコム,インコーポレイテッド
Publication of JP2024514448A publication Critical patent/JP2024514448A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/70Type of the data to be coded, other than image and sound
    • H03M7/702Software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0495Quantised networks; Sparse networks; Compressed networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/46Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

様々な実施形態は、重みデータセットの圧縮および復元のための方法およびデバイスを含む。いくつかの実施形態は、重み値を表す2進数の重みデータセットを受信すること、重みデータセットにおける重み値の第1のサブセットの圧縮された第1のフレームを含む、フレームペイロードを生成すること、およびフレームペイロードを有する、圧縮された重みデータのブロックを生成することによって、重みデータを圧縮することを含み得る。いくつかの実施形態は、圧縮された重みデータのブロックを取り出すことであって、圧縮された重みデータのブロックが、フレームペイロードに関連付けられたフレームヘッダを含み、フレームヘッダが、正規化係数インジケータを含み、フレームペイロードが、圧縮された重み値を含む、こと、および、フレームペイロードの圧縮された重み値の復元された重み値を備える、第1の復元されたフレームを生成することによって、重みデータを復元することを含み得る。

Description

関連出願
本出願は、その内容全体が参照により本明細書に組み込まれる、2021年4月1日に出願された米国非仮出願第17/220,620号の優先権の利益を主張する。
ディープニューラルネットワーク処理では、量子化されたニューラルネットワークモデルは、大量の重みを含み得る。大量の重みは、重みが、ディープニューラルネットワーク処理を実施するためにプロセッサ/ハードウェアによって使用されるとき、大量のメモリ、システム帯域幅、および電力を必要とする。
開示する様々な態様は、ニューラルネットワークのための重みデータの圧縮のための装置および方法を含み得る。様々な態様は、重み値を表す2進数の重みデータセットを受信すること、重みデータセットにおける重み値の第1のサブセットの圧縮された第1のフレームを含む、第1のフレームペイロードを生成すること、第1のフレームペイロードに関連付けられた第1のフレームヘッダを生成することであって、第1のフレームヘッダが、圧縮された第1のフレームのための正規化係数インジケータを含む、こと、および第1のフレームペイロードを有する、圧縮された重みデータのブロックを生成することを含み得る。
いくつかの態様では、第1のフレームペイロードを生成することが、圧縮された第1のフレームを生成するために、重みデータセットにおける重み値の第1のサブセットの第1のフレームを、第1のフレームのための正規化係数に従って重み値の第1のサブセットのうちの各重み値からパディングビットを除去することによって、圧縮することを含み得る。
いくつかの態様は、第1のフレームの修正された重み値を生成する第1のフレームの重み値の第1のサブセットのうちの各重み値からオフセット値を除去することをさらに含み得、重み値の第1のサブセットの第1のフレームを圧縮することが、圧縮された第1のフレームを生成するために、第1のフレームのための正規化係数に従って、第1のフレーム内の修正された重み値からパディングビットを除去することを含み得る。
いくつかの態様は、圧縮された重みデータのブロックのためのグローバルヘッダを生成することであって、グローバルヘッダがオフセット値を含む、ことをさらに含み得、第1のフレームペイロードに関連付けられた第1のフレームヘッダを生成することが、第1のフレームヘッダを生成することであって、第1のフレームヘッダが、オフセット値が第1のフレームの重み値の第1のサブセットから除去されるか否かを示すように構成されたオフセットインジケータを含む、ことを含み得る。
いくつかの態様では、パディングビットが符号拡張ビット(sign extended bit)であり得る。
いくつかの態様は、選択的探索基準に基づいて、可逆圧縮のために重み値から除去され得る、重み値におけるパディングビットのパターンに基づいて、重みデータセットにおける重み値の第1のサブセットの第1のフレームを識別すること、重み値の第1のサブセットのうちの各重み値から除去されるべきパディングビットの数を表す、第1のフレームのための第1の正規化係数を設定すること、選択的探索基準に基づいて、可逆圧縮のために重み値から除去され得る、重み値におけるパディングビットのパターンに基づいて、重みデータセットにおける重み値の第2のサブセットの第2のフレームを識別すること、第2のフレームのすべてのビットが0値であるか否かを決定すること、ならびに第2のフレームのビットのすべてが0値であるとの決定に応答して、第2のフレームの重み値の第2のサブセットのビットのすべてを表すために、第2のフレームのための第2の正規化係数を設定すること、第2のフレームのための第2の正規化係数に従って、重み値の第2のサブセットからビットのすべてを除去することによって、重み値の第2のサブセットの第2のフレームを圧縮すること、およびフレームペイロードに関連付けられない第2のフレームヘッダを生成することをさらに含み得る。
いくつかの態様は、選択的探索基準に基づいて、可逆圧縮のために重み値から除去され得る、重み値におけるパディングビットのパターンに基づいて、重みデータセットにおける重み値の第1のサブセットの第1のフレームを識別すること、有効ビットの最高数を有する、第1のフレームの重み値の第1のサブセットのうちの重み値を識別すること、および有効ビットの最高数に基づいて、重み値の第1のサブセットのうちの各重み値から除去されるべきパディングビットの数を表す、第1のフレームのための正規化係数を設定することをさらに含み得る。
いくつかの態様は、第1のフレームペイロードの第1の圧縮メトリックが圧縮メトリックしきい値を超えるか否かを決定することをさらに含み得、第1のフレームペイロードを有する、圧縮された重みデータのブロックを生成することが、第1のフレームペイロードの第1の圧縮メトリックが圧縮メトリックしきい値を超えるとの決定に応答して、第1のフレームペイロードを有する、圧縮された重みデータのブロックを生成することを含み得る。
いくつかの態様は、圧縮メトリックしきい値を、第1のフレームペイロードの第1の圧縮メトリックに設定すること、重みデータセットにおける重み値の第2のサブセットの圧縮された第2のフレームを含む、第2のフレームペイロードを生成すること、第2のフレームペイロードの第2の圧縮メトリックが圧縮メトリックしきい値を超えるか否かを決定すること、第2の圧縮メトリックが圧縮メトリックしきい値を超えるとの決定に応答して、圧縮メトリックしきい値を、第2のフレームペイロードの第2の圧縮メトリックに設定すること、重みデータセットにおける重み値の第3のサブセットの圧縮された第3のフレームを含む、第3のフレームペイロードを生成すること、および第3のフレームペイロードの第3の圧縮メトリックが圧縮メトリックしきい値を超えるか否かを決定することをさらに含み得、第1のフレームペイロードの第1の圧縮メトリックが圧縮メトリックしきい値を超えるとの決定に応答して、第1のフレームペイロードを有する、圧縮された重みデータのブロックを生成することが、第3のフレームペイロードの第3の圧縮メトリックが圧縮メトリックしきい値を超えないとの決定に応答して、第2のフレームペイロードを有する、圧縮された重みデータのブロックを生成することを含み得る。
様々な態様は、ニューラルネットワークのための重みデータの復元のための装置および方法を含み得る。様々な態様は、圧縮された重みデータのブロックを取り出すことであって、圧縮された重みデータのブロックが、第1のフレームペイロードに関連付けられた第1のフレームヘッダを含み、第1のフレームヘッダが、第1の正規化係数インジケータを含み、第1のフレームペイロードが、圧縮された重み値を含む、こと、および第1のフレームペイロードの圧縮された重み値の復元された重み値を備える、第1の復元されたフレームを生成することを含み得る。
いくつかの態様では、圧縮された重みデータのブロックが、オフセット値を有するグローバルヘッダを含み、第1のフレームヘッダが、第1のフレームペイロードから生成された各復元された重み値のために、オフセット値が含まれることになるか否かを示すように構成された、オフセットインジケータを含む。いくつかの態様は、オフセット値について、グローバルヘッダをパースすること、オフセットインジケータについて、第1のフレームヘッダをパースすること、およびオフセットインジケータが第1のフレームヘッダにおいて設定されるか否かを決定することをさらに含み得、第1の復元されたフレームを生成することが、オフセットインジケータが第1のフレームヘッダにおいて設定されるとの決定に応答して、第1のフレームヘッダに関連付けられた第1のフレームペイロードから生成された各復元された重み値に、オフセット値を含めることを含み得る。
いくつかの態様では、圧縮された重みデータのブロックが、第2の正規化係数インジケータを含む、フレームペイロードに関連付けられない第2のフレームヘッダを含む。いくつかの態様は、第2のフレームヘッダの第2の正規化係数インジケータに従って、すべて0値のビットを有する復元された重み値を含む、第2の復元されたフレームを生成することをさらに含み得る。
いくつかの態様では、圧縮された重みデータのブロックが、第2のフレームペイロードに関連付けられた第2のフレームヘッダを含み、第2のフレームヘッダが、第2の正規化係数インジケータを含み、第2のフレームペイロードが、圧縮された重み値を含む。いくつかの態様は、第2のフレームヘッダの第2の正規化係数インジケータに従って、第2のフレームペイロードの圧縮された重み値にパディングビットを追加することによって、第2のフレームペイロードの圧縮された重み値の復元された重み値を含む、第2の復元されたフレームを生成することをさらに含む。
いくつかの態様では、第1の復元されたフレームを生成することが、復元された重み値を生成するために、第1のフレームヘッダの第1の正規化係数インジケータに従って、第1のフレームペイロードの圧縮された重み値にパディングビットを追加することを含み得、第1のフレームペイロードの圧縮された重み値のうちの第1の圧縮された重み値のためのパディングビットの値が、第1の圧縮された重み値の最上位ビットから決定される。
いくつかの態様では、パディングビットが符号拡張ビットであり得る。
いくつかの態様では、第1のフレームヘッダが、第1のフレームペイロードの圧縮された重み値の数を示すように構成されたフレーム長を含む。
いくつかの態様では、圧縮された重みデータのブロックが、圧縮された重み値の数を示すように構成されたフレーム長を含む、フレームペイロードに関連付けられない第2のフレームヘッダを含む。いくつかの態様は、第2のフレームヘッダのフレーム長に対応する、すべて0値のビットを有するいくつかの連続する復元された重み値を含む、第2の復元されたフレームを生成することをさらに含み得る。
さらなる態様は、上記で要約した方法のうちのいずれかの動作を実行するように構成された、圧縮処理デバイスまたは復元処理デバイスを有する、コンピューティングデバイスを含む。
本明細書に組み込まれ、本明細書の一部を構成する添付の図面は、様々な実施形態のうちの例示的な実施形態を示し、上記の一般的な説明および下記の発明を実施するための形態とともに、特許請求の範囲の特徴を説明するのに役立つ。
様々な実施形態を実装するのに好適な例示的なコンピューティングデバイスを示す構成要素ブロック図である。 様々な実施形態を実装するのに好適な例示的なシステムオンチップ(SoC)を示す構成要素ブロック図である。 様々な実施形態を実装するのに好適な、圧縮のための10進数の重み値の2進表現のフレーミングの一例を示すデータ図である。 様々な実施形態を実装するのに好適な、圧縮のための10進数の重み値の2進表現のフレーミングの一例を示すデータ図である。 様々な実施形態を実装するのに好適な、圧縮された重みデータのブロックの一例を示すブロック図である。 様々な実施形態を実装するのに好適な、圧縮された重みデータのブロックのグローバルヘッダの一例を示すブロック図である。 様々な実施形態を実装するのに好適な、圧縮された重みデータのブロックのフレームヘッダの一例を示すブロック図である。 様々な実施形態を実装するのに好適な、圧縮された重みデータの復元の一例を示すデータおよび構成要素ブロック図である。 一実施形態による、重みデータを圧縮するための方法を示すプロセスフロー図である。 一実施形態による、重みデータ圧縮パラメータを設定するための方法を示すプロセスフロー図である。 一実施形態による、重みデータを圧縮するための方法を示すプロセスフロー図である。 一実施形態による、圧縮された重みデータを復元するための方法を示すプロセスフロー図である。 一実施形態による、重みデータを圧縮するための方法を示すプロセスフロー図である。 一実施形態による、圧縮された重みデータを復元するための方法を示すプロセスフロー図である。 様々な実施形態による、重みデータ圧縮および/または復元システムを実装するのに好適な例示的なモバイルコンピューティングデバイスを示す構成要素ブロック図である。 様々な実施形態による、重みデータ圧縮および/または復元システムを実装するのに好適な例示的なモバイルコンピューティングデバイスを示す構成要素ブロック図である。 様々な実施形態による、重みデータ圧縮および/または復元システムを実装するのに好適な例示的なサーバを示す構成要素ブロック図である。
様々な実施形態について、添付の図面を参照して詳細に説明する。可能な限り、同じまたは同様の部分を指すために、図面全体にわたって同じ参照番号が使用される。特定の例および実装形態に対してなされる言及は、例示を目的としており、特許請求の範囲を限定するものではない。
様々な実施形態は、ディープニューラルネットワークのための重みデータの圧縮および復元のための方法、ならびにそのような方法を実施するコンピューティングデバイスを含む。いくつかの実施形態は、ディープニューラルネットワークのための重みデータのための可逆圧縮技法を含み得る。いくつかの実施形態では、圧縮は、繰り返されるデータのパターンを示す重みデータのフレームの識別、および圧縮のための繰り返されるデータの除去に基づき得る。いくつかの実施形態では、重みデータがどのように圧縮されるかに関するグローバルおよび/またはフレームヘッダ情報は、圧縮された重みデータの復元のための情報を提供し得る。
ディープニューラルネットワーク処理は、しばしば大量のデータを必要とする。このデータは、ディープニューラルネットワーク処理を実施するために使用されるプロセッサ/ハードウェアによる高いメモリ、システム帯域幅、および電力コストをコンピュータシステムに負わせる、大量の重みデータを含み得る。本明細書で説明する実施形態は、可逆重みデータ圧縮および超低コスト復元の方法、ならびにそれらの方法を実施するためのデバイスを提示し、それによって、大量の重みデータを使用するディープニューラルネットワーク処理を実施するメモリ、システム帯域幅、および電力コストを低減し得る。
いくつかの実施形態では、重みデータの圧縮は、オフラインで行われることがあり、圧縮された重みデータは、ディープニューラルネットワーク処理を実施するためのメモリに記憶され得る。重みデータのオフライン圧縮は、圧縮メトリックしきい値と比較される、圧縮された重みデータの圧縮メトリックによって測定されるような、重みデータの適切な圧縮の、コストと時間がかかる探索を可能にし得る。いくつかの実施形態では、圧縮メトリックしきい値は、圧縮のための重みデータのサブセットの組合せを探索するためのパラメータ内で、重みデータの最良の圧縮を識別するように構成され得る。いくつかの実施形態では、そのための連続する重み値が0値である、重みデータにおけるスパース性は、重みデータのいずれも連続する0値のために記憶されないことが可能であるような方法で圧縮され得る。
重み値におけるパディングデータなど、重みデータのすべてが、ディープニューラルネットワーク処理を実施する際に有用であるとは限らないことがある。いくつかの実施形態では、重みデータの圧縮は、フレームの重み値を変更することなしに、重みデータから除去され得るパディングデータのパターンを示す重みデータのフレームを識別することによって実施され得る。パディングデータを除去することによって、重みデータのフレームの、および重みデータのより幅広いセットのデータ量を低減し得る。フレーム内の各重み値から除去されたパディングデータの量を示すように構成された正規化係数などの圧縮パラメータは、圧縮された重みデータを復元する際に使用するために、圧縮された重みデータに関連して記憶され得る。フレームの重みデータの圧縮のための、フレームからのパディングデータの除去は、除去されているパディングデータを上書きするために、重みデータの残りのビットをシフトすることによって達成され得る。パディングビットの除去の後に残っている重みデータのビット数は、本明細書では圧縮された重みビット幅と呼ばれることがある。
いくつかの実施形態では、圧縮された重みデータを非正規化するために、ビット単位の演算を使用することによって、低コスト復元が達成され得る。正規化係数は、圧縮された重みデータにパディングビットを再導入するために、圧縮された重み値の各々をシフトするためのビット数を、復元コンピューティングデバイスに示し得る。いくつかの実施形態では、ビット単位の算術演算は、重み値の元のパディングデータと比較して、再導入されるパディングデータのための対応する値を生成するために使用され得る。いくつかの実施形態では、パディングビットは、符号拡張ビットであり得る。
「コンピューティングデバイス」および「モバイルコンピューティングデバイス」という用語は、セルラー電話、スマートフォン、パーソナルまたはモバイルマルチメディアプレーヤ、携帯情報端末(PDA)、ラップトップコンピュータ、タブレットコンピュータ、コンバーチブルラップトップ/タブレット(2-in-1コンピュータ)、スマートブック、ウルトラブック、ネットブック、パームトップコンピュータ、ワイヤレス電子メール受信機、マルチメディアインターネット対応セルラー電話、モバイルゲームコンソール、ワイヤレスゲームコントローラ、ならびに、メモリおよびプログラマブルプロセッサを含む同様のパーソナル電子デバイスのうちのいずれか1つまたはすべてを指すために本明細書において互換的に使用される。「コンピューティングデバイス」という用語は、パーソナルコンピュータを含む据置型コンピューティングデバイス、デスクトップコンピュータ、オールインワンコンピュータ、ワークステーション、スーパーコンピュータ、メインフレームコンピュータ、(車両および他のより大きいシステムなどにおける)組込み型コンピュータ、サーバ、マルチメディアコンピュータ、およびゲームコンソールをさらに指す場合がある。
図1は、様々な実施形態とともに使用するのに好適なコンピューティングデバイス100を含むシステムを示す。コンピューティングデバイス100は、プロセッサ104と、メモリ106と、通信インターフェース108と、メモリインターフェース110と、周辺デバイスインターフェース120と、人工知能(AI)プロセッサ124とをもつ、SoC102を含み得る。コンピューティングデバイス100は、ワイヤードもしくはワイヤレスモデムなどの通信構成要素112、メモリ114、ワイヤレス通信リンクを確立するためのアンテナ116、および/または周辺デバイス122をさらに含み得る。プロセッサ104およびAIプロセッサ124は、様々な処理デバイスのいずれか、たとえば、いくつかのプロセッサコアを含み得る。
「システムオンチップ」または「SoC」という用語は、通常、限定はしないが、処理デバイス、メモリ、および通信インターフェースを含む、相互接続された電子回路のセットを指すために本明細書で使用される。処理デバイスは、汎用プロセッサ、中央処理ユニット(CPU)、デジタル信号プロセッサ(DSP)、グラフィックス処理ユニット(GPU)、加速処理ユニット(APU)、セキュア処理ユニット(SPU: secure processing unit)、カメラサブシステム用の画像プロセッサもしくはディスプレイ用のディスプレイプロセッサなどのコンピューティングデバイスの特定の構成要素のサブシステムプロセッサ、補助プロセッサ、シングルコアプロセッサ、マルチコアプロセッサ、コントローラ、および/またはマイクロコントローラなどの、様々な異なるタイプのプロセッサ104および/またはプロセッサコアを含み得る。処理デバイスは、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、他のプログラマブル論理デバイス、個別ゲート論理、トランジスタ論理、性能監視ハードウェア、ウォッチドッグハードウェア、および/または時間基準などの、他のハードウェアおよびハードウェアの組合せをさらに具現化し得る。集積回路は、集積回路の構成要素がシリコンなどの単体の半導体材料上に存在するように構成され得る。
SoC102は、1つまたは複数のプロセッサ104を含み得る。コンピューティングデバイス100は、2つ以上のSoC102を含み、それによって、プロセッサ104およびプロセッサコアの数を増やすことができる。コンピューティングデバイス100はまた、SoC102に関連付けられていないプロセッサ104を含み得る。個々のプロセッサ104は、マルチコアプロセッサであり得る。プロセッサ104は各々、コンピューティングデバイス100の他のプロセッサ104と同じであっても異なっていてもよい特定の目的のために構成され得る。同じまたは異なる構成のプロセッサ104およびプロセッサコアのうちの1つまたは複数は、一緒にグループ化され得る。プロセッサ104またはプロセッサコアのグループは、マルチプロセッサクラスタと呼ばれることがある。
SoC102のメモリ106は、プロセッサ104による、またはAIプロセッサ124を含むSoC102の他の構成要素によるアクセスのために、データおよびプロセッサ実行可能コードを記憶するために構成された、揮発性または不揮発性のメモリであり得る。コンピューティングデバイス100および/またはSoC102は、様々な目的のために構成された1つまたは複数のメモリ106を含み得る。1つまたは複数のメモリ106は、ランダムアクセスメモリ(RAM)もしくはメインメモリ、またはキャッシュメモリなど、揮発性メモリを含んでもよい。これらのメモリ106は、データセンサーまたはサブシステムから受信された限られた量のデータ、不揮発性メモリに対して要求され、様々なファクタに基づいて将来アクセスされることを予期して不揮発性メモリからメモリ106にロードされるデータおよび/またはプロセッサ実行可能コード命令、ならびに/あるいは、プロセッサ104および/またはAIプロセッサ124によって生成され、不揮発性メモリには記憶されずに将来迅速にアクセスできるように一時的に記憶される中間処理データおよび/またはプロセッサ実行可能コード命令を一時的に保持するように構成され得る。いくつかの実施形態では、任意の数および組合せのメモリ106が、ワンタイムプログラマブルまたは読取り専用メモリを含み得る。
メモリ106は、プロセッサ104のうちの1つもしくは複数による、またはAIプロセッサ124を含むSoC102の他の構成要素によるアクセスのために、別のメモリ106またはメモリ114などの、別のメモリデバイスからメモリ106にロードされるデータおよびプロセッサ実行可能コードを、少なくとも一時的に記憶するように構成され得る。メモリ106にロードされたデータまたはプロセッサ実行可能コードは、プロセッサ104による、またはAIプロセッサ124を含むSoC102の他の構成要素による機能の実行に応答してロードされ得る。機能の実行に応答してデータまたはプロセッサ実行可能コードをメモリ106にロードすることは、要求されたデータまたはプロセッサ実行可能コードがメモリ106内にないことが原因で不成功または「ミス」になる、メモリ106へのメモリアクセス要求から生じる場合がある。ミスに応答して、要求されたデータまたはプロセッサ実行可能コードを他のメモリ106またはメモリ114からメモリ106にロードするために、別のメモリ106またはメモリ114へのメモリアクセス要求が行われ得る。機能の実行に応答してデータまたはプロセッサ実行可能コードをメモリ106にロードすることは、別のメモリ106またはメモリ114へのメモリアクセス要求から生じる場合があり、データまたはプロセッサ実行可能コードは、後のアクセスのためにメモリ106にロードされ得る。
メモリインターフェース110およびメモリ114は、コンピューティングデバイス100がデータおよびプロセッサ実行可能コードを揮発性および/または不揮発性記憶媒体上に記憶すること、ならびにデータおよびプロセッサ実行可能コードを揮発性および/または不揮発性記憶媒体から取り出すことを可能にするために、調和して作動し得る。メモリ114は、メモリ114がプロセッサ104のうちの1つもしくは複数による、またはAIプロセッサ124を含むSoC102の他の構成要素によるアクセスのために、データまたはプロセッサ実行可能コードを記憶し得る、メモリ106の一実施形態とほとんど同じように構成され得る。いくつかの実施形態では、メモリ114は、不揮発性であり、コンピューティングデバイス100の電源が切断された後に情報を保持し得る。電源が再び投入され、コンピューティングデバイス100が再起動すると、メモリ114上に記憶された情報がコンピューティングデバイス100にとって利用可能になり得る。いくつかの実施形態では、メモリ114は、揮発性であり、コンピューティングデバイス100の電源が切断された後に情報を保持しないことがある。メモリインターフェース110は、メモリ114へのアクセスを制御し、プロセッサ104、またはAIプロセッサ124を含むSoC102の他の構成要素がメモリ114からデータを読み取り、メモリ114にデータを書き込むことを可能にし得る。
SoC102はまた、AIプロセッサ124を含み得る。AIプロセッサ124は、プロセッサ104、プロセッサ104の一部分、および/またはSoC102の独立した構成要素であり得る。AIプロセッサ124は、コンピューティングデバイス100上で活性化値および重み値を処理するためのニューラルネットワークを実行するように構成され得る。コンピューティングデバイス100はまた、SoC102に関連付けられていないAIプロセッサ124を含み得る。そのようなAIプロセッサ124は、コンピューティングデバイス100の独立した構成要素であり、かつ/または他のSoC102に統合され得る。
コンピューティングデバイス100および/またはSoC102の構成要素の一部または全部は、依然として様々な実施形態の機能を果たしながら、異なるように配置され、かつ/または組み合わせられ得る。コンピューティングデバイス100は、構成要素の各々のうちの1つに限定されなくてもよく、各構成要素の複数のインスタンスは、コンピューティングデバイス100の様々な構成に含まれ得る。
図2は、一実施形態を実装するのに好適な、AIプロセッサ206(たとえば、図1におけるAIプロセッサ124)および他の構成要素をもつ、コンピューティングデバイス(たとえば、図1におけるコンピューティングデバイス100)の構成要素であり得る、SoC200(たとえば、図1におけるSoC102)を示す。図1および図2を参照すると、SoC200は、上記で説明した様々な構成要素を含み得る。たとえば、SoC200は、AIプロセッサ206と、プロセッサ202(たとえば、図1におけるプロセッサ104)と、プロセッサメモリ(たとえば、図1におけるメモリ106)とを含み得る。いくつかの実施形態では、SoC200の一部として説明した構成要素など、いくつかのそのような構成要素は、SoC200の低電力エリア210内に位置し得る。
重みデータセットの圧縮されたフレームのブロックは、SoC200から離れたメモリ208(たとえば、図1におけるメモリ114)、および/またはSoC200上のプロセッサメモリ204において記憶され得る。いくつかの実施形態では、重みデータセットの圧縮されたフレームのブロックは、メモリ208からプロセッサメモリ204にロードされ得る。
AIプロセッサ206は、活性化値および重み値を使用して、推論を生成することなど、ニューラルネットワークプロセスを実施するように構成され得る。AIプロセッサ206は、重みデータセットの圧縮されたフレームのブロックから、ニューラルネットワークプロセスのための重み値を取り出し得る。いくつかの実施形態では、AIプロセッサ206は、メモリ208から重みデータセットの圧縮されたフレームのブロックを受信し得る。いくつかの実施形態では、AIプロセッサ206は、プロセッサメモリ204から重みデータセットの圧縮されたフレームのブロックを受信し得る。
AIプロセッサ206は、重み値を取り出すために、重みデータセットの圧縮されたフレームのブロックを復元するように構成され得る。いくつかの実施形態では、AIプロセッサ206は、重みデータセットの圧縮されたフレームのブロックを復元するためのソフトウェアで構成され得る。いくつかの実施形態では、AIプロセッサ206は、重みデータセットの圧縮されたフレームのブロックを復元するための回路で構成され、かつ/またはそのためのソフトウェアで構成され得る。重みデータセットの圧縮されたフレームのブロックを復元することについては、本明細書でさらに説明する。
重みデータセットの圧縮されたフレームのブロックの復元から生じる重み値は、AIプロセッサ206によって、ニューラルネットワークプロセスを実施するために使用され得る。いくつかの実施形態では、AIプロセッサ206は、復元によって重みデータセットの圧縮されたフレームのブロックから取り出された重み値と、圧縮されなかった重みデータセットの重み値との組合せを使用し得る。いくつかの実施形態では、AIプロセッサ206によって実施されたニューラルネットワークプロセスの結果は、メモリ204および/またはメモリ208に記憶され得る。いくつかの実施形態では、AIプロセッサ206によって実施されたニューラルネットワークプロセスの結果は、プロセッサ202による処理のために、AIプロセッサ206、メモリ204、および/またはメモリ208から取り出され得る。
図2に示されたSoC200およびその様々な構成要素の本明細書の説明は、例であることのみが意図されており、決して限定するものではない。示された例示的なSoC200の構成要素のうちのいくつかは、可変に構成され、組み合わせられ、分離され得る。構成要素のうちのいくつかは、より多数またはより少数に含まれることがあり、SoC200内で、またはSoC200とは別個に、異なるように配置および接続され得る。同様に、他のメモリ、プロセッサ、周辺デバイスサブシステム、インターフェース、およびコントローラなど、多数の他の構成要素がSoC200中に含まれ得る。
図3Aおよび図3Bは、実施形態を実装するのに好適な、圧縮のための10進数の重み値の2進表現のフレーミングの例を示す。図1~図3Bを参照すると、重みデータセット300は、重み値の表現を含み得る。図3Aおよび図3Bにおける重みデータセット300の例は、(明快のために図3Aおよび図3Bに示された)整数の重み値の10進表現および符号付き2進表現を含む。
重みデータセット300からの重み値の圧縮のために、重みデータセット300の分析が行われて、フレーム302a、302b、302c、302d、302e、304a、304b、304c、304dにグループ化され得る重みデータセット300の部分が決定され得る。コンピューティングデバイス(たとえば、コンピューティングデバイス100)は、重みデータセット300を分析すること、フレーム302a、302b、302c、302d、302e、304a、304b、304c、304d、および/または図示されていない他のフレームを含む、様々なフレームを識別すること、ならびに重みデータセット300を圧縮するためにどのフレームを使用するかを決定するために、フレームの様々な組合せを選択することを行うように構成された、プロセッサ(たとえば、図1におけるプロセッサ104、AIプロセッサ124、図2におけるプロセッサ202、AIプロセッサ206)を有し得る。重みデータセット300の分析は、そのための圧縮メトリックが圧縮メトリックしきい値を満たす、かつ/または超えるフレームの組合せを選択し得る。圧縮メトリックおよび/または圧縮メトリックしきい値は、圧縮率、圧縮サイズなどに基づき得る。
いくつかの実施形態では、圧縮メトリックしきい値は、所定の値であり得る。圧縮メトリックしきい値を満たす、かつ/または超えるフレームの組合せは、重みデータセット300を圧縮するために使用され得る。いくつかの実施形態では、圧縮メトリックしきい値は、圧縮された重みデータセット300の分析からの最良の圧縮メトリックに設定され得る。たとえば、フレームの最初の組合せの圧縮メトリックが、圧縮メトリックしきい値として設定され得、圧縮メトリックしきい値を超えるフレームのいずれかの次に続く組合せの圧縮メトリックが、圧縮メトリックしきい値として設定され得る。フレームのどの組合せも圧縮メトリックしきい値を超えることができなくなると、圧縮メトリックしきい値が最良の圧縮メトリックであり得る。最良の圧縮メトリックに関連付けられたフレームの組合せが、重みデータセット300を圧縮するために使用されるべきフレームの組合せであり得る。
いくつかの実施形態では、フレームの識別および/またはフレームの選択は、探索アルゴリズムによって実装され得る。いくつかの実施形態では、探索アルゴリズムは、あらゆるフレームを識別すること、および/またはフレームのあらゆる組合せを選択することを行うように構成され得る。いくつかの実施形態では、探索アルゴリズムは、全数探索アルゴリズムであり得る。いくつかの実施形態では、探索アルゴリズムは、フレームの数および/またはフレームの組合せの数を制限し得る選択的探索基準に基づいて、フレームを識別すること、および/またはフレームの組合せを選択することを行うように構成され得る。いくつかの実施形態では、探索アルゴリズムは、いくつかのフレームおよび/またはフレームのいくつかの組合せを優先させ得る選択的探索基準に基づいて、フレームを識別すること、および/またはフレームの組合せを選択することを行うように構成され得る。たとえば、選択的探索基準は、フレーム長(フレーム内の重み値の数など)、フレーム長の範囲、正規化係数(損失なしに除去され得るフレーム内の重み値のビット数など)、正規化係数の範囲、重み値、重み値の範囲、オフセット値(その分だけフレームの重み値が変更され得る値など)、オフセット値の範囲などを含み得る。
ニューラルネットワークは、あるサイズに量子化された重みを使用し得る。たとえば、ニューラルネットワークは、4ビット、8ビット、16ビットなどに量子化された重みを使用し得る。ただし、すべての重み値が完全な量子化サイズを使用するとは限らないことがある。したがって、重み値は、符号ビットを含み得る、本明細書では有効ビットと呼ばれる、重み値を表すビットと、本明細書ではパディングビットと呼ばれる、重み値を表すために必要でないビットとを含み得る。いくつかの実施形態では、パディングビットは、重み値の最上位ビットを繰り返す、かつ/または最上位ビットとは異なるビット値など、繰り返されるビット値であり得る。いくつかの実施形態では、パディングビットは、符号拡張ビットであり得る。パディングビットの一部または全部は、損失なしに重み値を圧縮するために、重み値から除去され得る。重みデータセット300の分析は、損失なしに重み値から除去され得るパディングビットの連続する重み値におけるパターンを識別し得る。たとえば、損失なしに重み値から除去され得るパディングビットのパターンは、連続する重み値におけるパディングビットの一部および/または全部の共有される数であり得る。連続する重み値における、損失なしに重み値から除去され得るパディングビットのパターンは、フレーム長と呼ばれることがある、連続する重み値の数に基づいて識別され得る。パターンを示す連続する重み値は、フレーム302a、302b、302c、302d、302e、304a、304b、304c、304dとしてグループ化され得る。いくつかの実施形態では、パターンを示す重み値の識別は、重複するフレームを識別し、フレームの選択は、重複しないフレームを選択し得る。いくつかの実施形態では、選択されたフレームは、連続するフレームであり得る。いくつかの実施形態では、選択されたフレームは、不連続フレームであり得る。
いくつかの実施形態では、プロセッサは、重み値の一部および/または全部にオフセットを適用し得る。いくつかの実施形態では、プロセッサは、フレームの重み値にオフセットを適用し得る。重み値にオフセットを適用することは、オフセットだけ重み値を修正することを含み得る。たとえば、オフセットは、重み値からの減算および/または重み値への加算を介して、重み値から除去され得る。重み値にオフセットを適用することは、概して、重み値を表すために使用され得る重み値におけるビット、有効ビットの数を低減し得る。同様に、重み値にオフセットを適用することは、概して、重み値におけるパディングビットの数を増加させ得る。オフセットが適用された重み値は、損失なしに重み値から除去され得るパディングビットのパターンに基づいて、フレームにグループ化され得る。
選択されたフレームを圧縮するために、プロセッサは、選択されたフレームの重み値から損失なしに除去され得るパディングビットのパターンに従って、選択されたフレーム内の重み値のパディングビットを除去し得る。選択されたフレーム内の重み値の各々は、それらのパディングビットの一部または全部が除去され得る。選択されたフレームの各重み値から除去されたパディングビットの数は、本明細書では正規化係数と呼ばれることがある。重み値の修正は、有効ビットのみ、ならびに/または有効ビット、および選択されたフレーム内の重み値のためのパディングビットのすべてよりも少ないものを残し得る。いくつかの実施形態では、選択されたフレーム内の重み値の各々から除去されたパディングビットは、選択されたフレーム内の最も多い有効ビットを有する重み値から除去され得るパディングビットの数に基づき得る。したがって、最も多い有効ビットを有する重み値から除去され得るその数のパディングビットが、選択されたフレーム内の他の重み値からも除去され得る。各選択されたフレームは、それ自体の正規化係数を有し得る。いくつかの実施形態では、その数のパディングビットを除去することは、除去されているパディングビットを上書きするために、残りのビットをシフトすることを伴い得る。パディングビットの除去の後に残っている重み値のビット数は、本明細書では圧縮された重みビット幅と呼ばれることがある。
図3Aに示された例は、可変のフレーム長を有するフレーム302a、302b、302c、302d、302eの選択を示す。フレーム302aは、2つの重み値(たとえば、-13および-33)のグループを表すように構成されたフレーム長を有する。フレーム302bは、9つの重み値(たとえば、-3、2、-2、4、1、0、-2、9、および10)のグループを表すように構成されたフレーム長を有する。フレーム302cは、1つの重み値(たとえば、-153)のグループを表すように構成されたフレーム長を有する。フレーム302dは、3つの重み値(たとえば、0、1、および0)のグループを表すように構成されたフレーム長を有する。フレーム302eは、3つの重み値(たとえば、0、0、および0)のグループを表すように構成されたフレーム長を有する。
図3Aに示された例は、可変の正規化係数を有するフレーム302a、302b、302c、302d、302eの選択をさらに示す。フレーム302aは、フレーム302a内の重み値の各々から8つのパディングビットを除去することを表すように構成された正規化係数を有する。フレーム302bは、フレーム302b内の重み値の各々から11個のパディングビットを除去することを表すように構成された正規化係数を有する。フレーム302cは、フレーム302c内の重み値から6つのパディングビットを除去することを表すように構成された正規化係数を有する。フレーム302dは、フレーム302d内の重み値の各々から14個のパディングビットを除去することを表すように構成された正規化係数を有する。いくつかの実施形態では、フレーム302eは、フレーム302e内の重み値の各々から15個のパディングビットを除去することを表すように構成された正規化係数を有する。いくつかの実施形態では、フレーム302eは、フレーム302e内の重み値の各々からすべてのビットを除去することを表すように構成された正規化係数を有する。本明細書でさらに説明するように、0の重み値のみを有するフレーム302eなどのフレームは、フレームペイロードなしにヘッダによって圧縮ブロック内で表され、フレームのビットのすべてが圧縮中に除去されることを可能にし得る。
図3Bに示された例は、均一なフレーム長を有するフレーム304a、304b、304c、304dの選択を示す。この例では、均一なフレーム長は、8つの重み値である。ただし、均一なフレーム長は、任意の数の重み値であり得る。いくつかの実施形態では、均一なフレーム長は、2のべき乗値の数の重み値(たとえば、2、4、8、16、32、64、128など)であり得る。フレーム304aは、8つの重み値(たとえば、-13、-33、-3、2、-2、4、1、および0)のグループを表すように構成されたフレーム長を有する。フレーム304bは、8つの重み値(たとえば、-2、9、10、-153、0、1、0、および33)のグループを表すように構成されたフレーム長を有する。フレーム304cは、8つの重み値(たとえば、2、-26、0、0、0、-9、-81、および0)のグループを表すように構成されたフレーム長を有する。フレーム304dは、8つの重み値(たとえば、-3、-12、1、-125、-1、5、0、および-154)のグループを表すように構成されたフレーム長を有する。
図3Bに示された例は、可変の正規化係数を有するフレーム304a、304b、304c、304dの選択をさらに示す。フレーム304aは、フレーム304a内の重み値の各々から8つのパディングビットを除去することを表すように構成された正規化係数を有する。フレーム304bは、フレーム304b内の重み値の各々から6つのパディングビットを除去することを表すように構成された正規化係数を有する。フレーム304cは、フレーム304c内の重み値から7つのパディングビットを除去することを表すように構成された正規化係数を有する。フレーム304dは、フレーム304d内の重み値の各々から6つのパディングビットを除去することを表すように構成された正規化係数を有する。
図3Aおよび図3Bにおける例は、例示的であるように意図されており、特許請求の範囲または本明細書の範囲を限定しない。重みデータセット300は、任意の数の重み値を含み得、重み値は、任意のサイズおよび/またはフォーマットのものであり得る。重みデータセット300を分析するコンピューティングデバイスのプロセッサは、任意の数および/または長さの、かつ任意の正規化係数を有するフレームを識別および選択し得る。
図4は、実施形態を実装するのに好適な、圧縮された重みデータのブロックの例を示す。図1~図4を参照すると、圧縮された重みデータのブロック400は、グローバルヘッダ402と、任意の数のフレームヘッダ404a、404b、404c、404dと、任意の数のフレームペイロード406a、406b、406cとを含み得る。圧縮コンピューティングデバイス(たとえば、コンピューティングデバイス100)は、重みデータセット(たとえば、図3Aおよび図3Bにおける重みデータセット300)を圧縮するように構成された、プロセッサ(たとえば、図1におけるプロセッサ104、AIプロセッサ124、図2におけるプロセッサ202、AIプロセッサ206)を有し得る。重みデータセットの圧縮は、圧縮された重みデータのブロック400を生成し得る。復元コンピューティングデバイス(たとえば、コンピューティングデバイス100)は、圧縮された重みデータのブロック400を復元するように構成された、プロセッサ(たとえば、図1におけるプロセッサ104、AIプロセッサ124、図2におけるプロセッサ202、AIプロセッサ206)を有し得る。圧縮された重みデータのブロック400は、圧縮コンピューティングデバイスおよび/または復元コンピューティングデバイスのメモリ(たとえば、図1におけるメモリ106、114、図2におけるプロセッサメモリ204、メモリ208)において記憶され得る。
本明細書でさらに説明するように、グローバルヘッダ402は、フレームペイロード406a、406b、406cの任意の組合せおよび/またはすべての復元のために適用され得るパラメータを含み得る。本明細書でさらに説明するように、フレームヘッダ404a、404b、404cは、関連付けられたフレームペイロード406a、406b、406cの復元のために適用され得るパラメータを含み得、フレームヘッダ404dは、関連付けられたフレームペイロードなしに復元のために適用され得るパラメータを含み得る。フレームペイロード406a、406b、406cは、関連付けられたフレーム(たとえば、図3Aおよび図3Bにおけるフレーム302a、302b、302c、302d、302e、304a、304b、304c、304d)の圧縮された重み値を含み得る。いくつかの実施形態では、圧縮された重みデータのブロック400は、関連付けられたフレームヘッダ404a、404b、404cおよびフレームペイロード406a、406b、406cがペアにされるように、順序付けられ得る。いくつかの実施形態では、圧縮された重みデータのブロック400は、フレームヘッダ404a、404b、404c、404dおよびフレームペイロード406a、406b、406cが重みデータセットにおけるフレームの順序で順序付けられるように、順序付けられ得る。
図5は、実施形態を実装するのに好適な、圧縮された重みデータのブロック(たとえば、図4における圧縮された重みデータのブロック400)のグローバルヘッダの例を示す。図1~図5を参照すると、グローバルヘッダ500(たとえば、図4におけるグローバルヘッダ402)は、任意のサイズのものであり、圧縮された重みデータのフレームペイロード(たとえば、図4におけるフレームペイロード406a、406b、406c)の任意の組合せおよび/またはすべての復元のために適用され得るパラメータを含み得る。圧縮コンピューティングデバイス(たとえば、コンピューティングデバイス100)は、重みデータセット(たとえば、図3Aおよび図3Bにおける重みデータセット300)を圧縮するように構成された、プロセッサ(たとえば、図1におけるプロセッサ104、AIプロセッサ124、図2におけるプロセッサ202、AIプロセッサ206)を有し得る。重みデータセットの圧縮は、グローバルヘッダ500を生成し得る。復元コンピューティングデバイス(たとえば、コンピューティングデバイス100)は、グローバルヘッダ500を使用して、圧縮された重みデータのブロックを復元するように構成された、プロセッサ(たとえば、図1におけるプロセッサ104、AIプロセッサ124、図2におけるプロセッサ202、AIプロセッサ206)を有し得る。グローバルヘッダ500は、圧縮コンピューティングデバイスおよび/または復元コンピューティングデバイスのメモリ(たとえば、図1におけるメモリ106、114、図2におけるプロセッサメモリ204、メモリ208)において記憶され得る。いくつかの実施形態では、グローバルヘッダ500は、任意のビット幅であり得る。たとえば、グローバルヘッダ500は、9バイトであり得る。
グローバルヘッダ500は、任意の数のオフセット502、504を含み得る。いくつかの実施形態では、オフセット502、504は、重みデータセットの圧縮のために、任意の数および/または組合せのフレーム(たとえば、図3Aおよび図3Bにおけるフレーム302a、302b、302c、302d、302e、304a、304b、304c、304d)の重み値に適用される値であり得る。いくつかの実施形態では、オフセット502、504のデフォルト値は、0に設定され得る。オフセット502、504は、オフセットだけ重み値を修正するために、重みデータセットの圧縮のために重み値に適用され得る。たとえば、オフセットは、重み値からの減算および/または重み値への加算を介して、重み値から除去され得る。重み値にオフセットを適用することは、概して、重み値を表すために使用され得る重み値におけるビット、有効ビットの数を低減し得る。同様に、重み値にオフセットを適用することは、概して、重み値におけるパディングビットの数を増加させ得る。オフセット値は、圧縮中にオフセットだけ修正された重み値を元の重み値に戻すために、圧縮された重みデータのブロックの復元において使用され得る。たとえば、オフセットは、修正された重み値からの減算および/または修正された重み値への加算を介して、修正された重み値に追加され得る。いくつかの実施形態では、オフセット502、504は、重み値と同じビット幅であり得る。たとえば、オフセット502、504は、2ビット、4ビット、8ビット、16ビット、32ビット、64ビット、128ビットなど、2のべき乗値であるビット数のビット幅を有し得る。
いくつかの実施形態では、グローバルヘッダ500は、圧縮された重みデータのブロックを復元するためのパラメータを提供するように構成され得る、任意の数の予約済みビット506を含み得る。いくつかの実施形態では、予約済みビット506の数は、1ビット、2ビットなどであり得る。
いくつかの実施形態では、グローバルヘッダ500は、圧縮された重みデータのブロックのフレームペイロードが符号付きの圧縮された重みデータを含んでいるか否かを表すように構成された、圧縮された符号値508を含み得る。圧縮された符号値508は、重みデータセットの圧縮中に生成され得る。たとえば、圧縮された符号値508は、重みデータセットの少なくとも1つの重み値が符号付き重み値であるとき、圧縮された重みデータのブロックのフレームペイロードが符号付きの圧縮された重みデータを含んでいることを表すように構成され得る。別の例では、圧縮された符号値508は、重みデータセットの少なくとも1つのフレームの少なくとも1つの重み値が符号付き重み値であるとき、圧縮された重みデータのブロックのフレームペイロードが符号付きの圧縮された重みデータを含んでいることを表すように構成され得る。別の例では、圧縮された符号値508は、重みデータセットのどの重み値も符号付き重み値でないとき、圧縮された重みデータのブロックのフレームペイロードが符号付きの圧縮された重みデータを含んでいないことを表すように構成され得る。別の例では、圧縮された符号値508は、重みデータセットのいかなるフレームのどの重み値も符号付き重み値でないとき、圧縮された重みデータのブロックのフレームペイロードが符号付きの圧縮された重みデータを含んでいないことを表すように構成され得る。
圧縮された符号値508は、復元された重み値が符号付きであるか否かを決定するために、圧縮された重みデータのブロックの復元中に使用され得る。たとえば、圧縮された符号値508は、圧縮された重みデータのブロックのフレームペイロードが符号付きの圧縮された重みデータを含んでおり、したがって、復元された重み値が符号付きであることを表すように構成され得る。符号付き重み値を復元することは、符号ビットなど、各圧縮された重み値の最上位ビットの値をコピーすること、および最上位ビットの値を符号拡張ビットとして使用して、各それぞれの圧縮された重み値を復元することを含み得る。別の例では、圧縮された符号値508は、圧縮された重みデータのブロックのフレームペイロードが符号付きの圧縮された重みデータを含んでおらず、したがって、復元された重み値が符号なしであることを表すように構成され得る。符号なし重み値を復元することは、各圧縮された重み値にパディングビットを追加することを含み得る。パディングビットは、ビット値の任意の組合せまたはパターンであり得る。たとえば、パディングビットは、すべて「0」またはすべて「1」など、すべて同じビット値であり得る。いくつかの実施形態では、パディングビットは、圧縮された重み値の最上位ビットのビット値、またはそのビット値の反対であり得る。いくつかの実施形態では、圧縮された符号値508は、任意のビット幅のものであり得る。たとえば、圧縮された符号値508は、1ビットであり得る。
いくつかの実施形態では、グローバルヘッダ500は、圧縮された重みデータのブロックにおけるフレームヘッダ(たとえば、図4におけるフレームヘッダ404a、404b、404c、404d)のサイズを表すように構成された、フレームヘッダサイズ510を含み得る。フレームヘッダサイズ510は、重みデータセットの圧縮中に生成され得る。たとえば、フレームヘッダサイズ510は、圧縮された重みデータのブロックのフレームヘッダのすべてのための均一なサイズに基づいて生成され得る。いくつかの実施形態では、フレームヘッダサイズ510は、事前構成された値であり得る。フレームヘッダサイズ510は、フレームヘッダおよび/またはフレームペイロードが圧縮された重みデータのブロック内のどこに位置するかを決定するために、圧縮された重みデータのブロックの復元中に使用され得る。たとえば、フレームヘッダの均一なサイズは、フレームヘッダのサイズの、圧縮された重みデータのブロック内のデータが、フレームヘッダであり得ること、およびフレームヘッダのサイズでない、圧縮された重みデータのブロック内のデータが、フレームペイロードであり得ることを識別するために、使用され得る。いくつかの実施形態では、フレームヘッダサイズ510は、任意のビット幅であり得る。たとえば、フレームヘッダサイズ510は、2ビットであり得る。
いくつかの実施形態では、グローバルヘッダ500は、圧縮されていない重みデータのビット幅を表すように構成された、圧縮されていない幅512を含み得る。たとえば、圧縮されていない幅512は、圧縮されていない重みが、2ビット、4ビット、8ビット、16ビット、32ビット、64ビット、128ビットなど、2のべき乗値であるビット数のビット幅を有し得ることを表すように構成され得る。圧縮されていない幅512は、重みデータセットの圧縮中に生成され得る。たとえば、圧縮されていない幅512は、重みデータセットの重み値のビット幅に基づいて生成され得る。別の例では、圧縮されていない幅512は、事前構成された値であり得る。圧縮されていない幅512は、復元された重み値のビット幅を決定するために、圧縮された重みデータのブロックの復元中に使用され得る。いくつかの実施形態では、圧縮されていない幅512は、任意のビット幅であり得る。たとえば、圧縮されていない幅512は、3ビットであり得る。
いくつかの実施形態では、グローバルヘッダ500は、圧縮されていない重みデータを記憶するために構成されたバッファのビット幅を表すように構成された、圧縮されていないバッファサイズ514を含み得る。圧縮されていないバッファサイズ514は、重みデータセットの圧縮中に生成され得る。たとえば、圧縮されていないバッファサイズ514は、重みデータセットのためのバッファサイズに基づいて生成され得る。別の例では、圧縮されていないバッファサイズ514は、事前構成された値であり得る。圧縮されていないバッファサイズ514は、復元された重み値のためのバッファサイズを決定するために、圧縮された重みデータのブロックの復元中に使用され得る。いくつかの実施形態では、圧縮されていないバッファサイズ514は、任意のビット幅であり得る。たとえば、圧縮されていないバッファサイズ514は、32ビットであり得る。
図6は、実施形態を実装するのに好適な、圧縮された重みデータのブロック(たとえば、図4における圧縮された重みデータのブロック400)のフレームヘッダの例を示す。図1~図6を参照すると、フレームヘッダ600(たとえば、図4におけるフレームヘッダ404a、404b、404c、404d)は、任意のサイズのものであり、圧縮された重みデータのフレームペイロード(たとえば、図4におけるフレームペイロード406a、406b、406c)の任意の組合せおよび/またはすべての復元のために適用され得るパラメータを含み得る。圧縮コンピューティングデバイス(たとえば、コンピューティングデバイス100)は、重みデータセット(たとえば、図3Aおよび図3Bにおける重みデータセット300)を圧縮するように構成された、プロセッサ(たとえば、図1におけるプロセッサ104、AIプロセッサ124、図2におけるプロセッサ202、AIプロセッサ206)を有し得る。重みデータセットの圧縮は、フレームヘッダ600を生成し得る。復元コンピューティングデバイス(たとえば、コンピューティングデバイス100)は、フレームヘッダ600を使用して、圧縮された重みデータのブロックを復元するように構成された、プロセッサ(たとえば、図1におけるプロセッサ104、AIプロセッサ124、図2におけるプロセッサ202、AIプロセッサ206)を有し得る。フレームヘッダ600は、圧縮コンピューティングデバイスおよび/または復元コンピューティングデバイスのメモリ(たとえば、図1におけるメモリ106、114、図2におけるプロセッサメモリ204、メモリ208)において記憶され得る。
いくつかの実施形態では、フレームヘッダ600は、重みデータセットにおけるフレーム(たとえば、図3Aおよび図3Bにおけるフレーム302a、302b、302c、302d、302e、304a、304b、304c、304d)に関連付けられ得る。いくつかの実施形態では、フレームヘッダ600は、圧縮された重みデータのブロックのフレームペイロードに関連付けられ得る。いくつかの実施形態では、フレームヘッダ600は、フレームペイロードとの関連付けなしに、圧縮された重みデータのブロック中に含まれ得る。たとえば、フレームヘッダ600は、すべて0の重み値を含んでいる重みデータのフレームに関連付けられたフレームヘッダ600のためのフレームペイロードとの関連付けなしに、圧縮された重みデータのブロック中に含まれ得る。いくつかの実施形態では、フレームヘッダ600は、任意のビット幅であり得る。たとえば、フレームヘッダ600は、8ビットであり得る。
フレームヘッダ600は、重みデータセットの関連付けられたフレーム中に含まれた重み値の数を表すように構成された、フレーム長602を含み得る。いくつかの実施形態では、フレーム長602は、圧縮された重みデータのブロックの関連付けられたフレームペイロード中に含まれた、圧縮された重み値の数を表すように同様に構成され得る。いくつかの実施形態では、フレーム長602は、圧縮された重みデータのブロックの関連付けられたフレームペイロードなしに、圧縮された重み値の数を表すように同様に構成され得る。たとえば、フレーム長602は、圧縮された、連続する0の重み値の数を表すように構成され得る。フレーム長602は、重みデータセットの圧縮中に生成され得る。たとえば、フレーム長602は、重みデータセットの関連付けられたフレームにおける重み値の数に基づいて生成され得る。別の例では、フレーム長602は、関連付けられたフレームペイロードにおける圧縮された重み値の数に基づいて生成され得る。いくつかの実施形態では、フレーム長602は、事前構成された値であり得る。たとえば、フレーム長602は、2ビット、4ビット、8ビット、16ビット、32ビット、64ビット、128ビットなど、2のべき乗値の事前構成されたべき乗値であり得る。別の例では、フレーム長602は、8ビット重み値では16で割り切れる値であり得る。別の例では、フレーム長602は、16ビット重み値では8で割り切れる値であり得る。フレーム長602は、関連付けられたフレームペイロードから復元するための重み値の数を決定するために、圧縮された重みデータのブロックの復元中に使用され得る。いくつかの実施形態では、フレーム長602は、フレームペイロードに関連付けられていないフレームヘッダ600について復元するための重み値の数を決定するために、圧縮された重みデータのブロックの復元中に使用され得る。たとえば、フレーム長602は、復元するための連続する0の重み値の数を決定するために使用され得る。フレーム長602は、任意のビット幅であり得る。たとえば、フレーム長602は、8ビット重み値では4ビットであり得る。別の例では、フレーム長602は、16ビット重み値では3ビットであり得る。
フレームヘッダ600は、重みデータセットの関連付けられたフレーム中に含まれた重み値から除去されたパディングビットの数を表すように構成された、正規化係数604を含み得る。いくつかの実施形態では、正規化係数604は、圧縮された重みデータのブロックの関連付けられたフレームペイロード中に含まれた、圧縮された重み値に追加するためのパディングビットの数を表すように同様に構成され得る。いくつかの実施形態では、正規化係数604は、重みデータセットの関連付けられたフレーム中に含まれた0の重み値から除去されたビットの数を表すように構成され得る。いくつかの実施形態では、正規化係数604は、圧縮された重みデータのブロックの関連付けられたフレームペイロードなしに、圧縮された重み値のために追加するためのビット数を表すように同様に構成され得る。たとえば、正規化係数604は、0の重み値のためのビット数を表すように構成され得る。正規化係数604は、重みデータセットの圧縮中に生成され得る。たとえば、正規化係数604は、関連付けられたフレームペイロードを生成するために、重みデータセットの関連付けられたフレームにおける重み値から除去されたビット数に基づいて生成され得る。正規化係数604は、関連付けられたフレームペイロードから復元するために、圧縮された重み値に追加するためのパディングビットの数を決定するために、圧縮された重みデータのブロックの復元中に使用され得る。いくつかの実施形態では、正規化係数604は、フレームペイロードに関連付けられていないフレームヘッダ600について復元するための0の重み値のためのビット数を決定するために、圧縮された重みデータのブロックの復元中に使用され得る。正規化係数604は、任意のビット幅であり得る。たとえば、正規化係数604は、8ビット重み値では3ビットであり得る。別の例では、正規化係数604は、16ビット重み値では4ビットであり得る。
いくつかの実施形態では、正規化係数604は、図6に示された例では、パディングビットの除去後、重みデータセットの関連付けられたフレーム中に含まれた重み値の残りのビットの圧縮された重みビット幅によって、フレームヘッダ600において置換され得る。復元中に、正規化係数604は、関連付けられたフレームの圧縮された重みビット幅と、圧縮されていない重みデータセットのビット幅を表すように構成された、圧縮されていない幅(たとえば、図5における圧縮されていない幅512)とを使用して、フレームについて決定され得る。たとえば、関連付けられたフレームの圧縮された重みビット幅は、正規化係数604を決定するために、圧縮されていない幅から減算され得る。
いくつかの実施形態では、フレームヘッダ600は、正規化係数604であり得る正規化係数インジケータを含み得る。いくつかの実施形態では、フレームヘッダ600は、図6に示された例では、正規化係数604と置換された圧縮された重みビット幅であり得る、正規化係数インジケータを含み得る。
フレームヘッダ600は、オフセット(たとえば、図5におけるオフセット502、504)が重みデータセットの関連付けられたフレーム中に含まれた重み値に適用されたか否か、および/またはどのオフセットが適用されたかを表すように構成された、オフセットインジケータ606を含み得る。いくつかの実施形態では、オフセットインジケータ606は、オフセットが、圧縮された重みデータのブロックの関連付けられたフレームペイロード中に含まれた、圧縮された重み値として圧縮された重み値に適用されたか否か、および/またはどのオフセットが適用されたかを表すように同様に構成され得る。いくつかの実施形態では、オフセットインジケータ606は、オフセットが、圧縮された重みデータのブロックの関連付けられたフレームペイロード中に含まれた、圧縮された重み値を復元するために適用されることになるか否か、および/またはどのオフセットが適用されることになるかを表すように同様に構成され得る。オフセットインジケータ606は、圧縮された重みデータのブロックのグローバルヘッダ(たとえば、図5におけるグローバルヘッダ500)中に含まれたオフセットに関連付けられた値であり得る。たとえば、オフセットインジケータ606は、そのための第1の値がグローバルヘッダにおける第1のオフセットに関連付けられ、第2の値がグローバルヘッダにおける第2のオフセットに関連付けられる、ビットフラグであり得る。オフセットインジケータ606は、グローバルヘッダにおけるオフセットのうちのどれが、重みデータセットの重み値を圧縮する際に使用されたか、およびグローバルヘッダにおけるオフセットのうちのどれが、圧縮された重み値を復元する際に使用されることになるかを示し得る。オフセットインジケータ606は、任意のビット幅であり得る。たとえば、オフセットインジケータ606は、1ビットであり得る。
図4~図6における例は、例示的であるように意図されており、特許請求の範囲または本明細書の範囲を限定しない。図4における圧縮された重みデータのブロック400、図5におけるグローバルヘッダ500、および図6におけるフレームヘッダは、可変に含まれ、かつ/もしくは除外され、異なるサイズにされ、ならびに/または異なるように順序付けられ得る。
図7は、実施形態を実装するのに好適な、圧縮された重みデータのブロック(たとえば、図4における圧縮された重みデータのブロック400)の復元の一例を示す。図1~図7を参照すると、圧縮された重みデータのブロック700は、復元された重みデータのブロック720を生成するために、復元され得る。復元コンピューティングデバイス(たとえば、コンピューティングデバイス100)は、圧縮された重みデータのブロック700を復元するように構成された、プロセッサ(たとえば、図1におけるプロセッサ104、AIプロセッサ124、図2におけるプロセッサ202、AIプロセッサ206)を有し得る。プロセッサは、復元器710を実装するための回路で構成され、かつ/またはそのためのソフトウェアで構成され得る。いくつかの実施形態では、復元器710を実装するために構成されたソフトウェアは、復元コンピューティングデバイスのメモリ(たとえば、図1におけるメモリ106、114、図2におけるプロセッサメモリ204、メモリ208)において記憶され得る。復元コンピューティングデバイスは、圧縮された重みデータのブロック700のグローバルヘッダ704(たとえば、図4におけるグローバルヘッダ402、図5におけるグローバルヘッダ500)、フレームヘッダ706a、706b、706c、706d、706e(たとえば、図4におけるフレームヘッダ404a、404b、404c、404d、図6におけるフレームヘッダ600)、および/またはフレームペイロード702a、702b、702c、702d(たとえば、図4におけるフレームペイロード406a、406b、406c)を使用して、圧縮された重みデータのブロック700を復元し得る。いくつかの実施形態では、圧縮された重みデータのブロック700は、復元コンピューティングデバイスのメモリ(たとえば、図1におけるメモリ106、114、図2におけるプロセッサメモリ204、メモリ208)において記憶され得る。
復元器710は、ヘッダパーサ712と、ブロック非正規化器714とを含み得る。復元器710は、圧縮された重みデータのブロック700を取り出し得る。たとえば、復元器710は、それにおいて圧縮された重みデータのブロック700が記憶され得る復元コンピューティングデバイスのメモリから、圧縮された重みデータのブロック700を取り出し得る。
ヘッダパーサ712は、圧縮された重みデータのブロック700を復元するためのパラメータを取り出すために、グローバルヘッダ704をパースし得る。ヘッダパーサ712はまた、関連付けられたフレームペイロード702a、702b、702c、702dを復元するためのパラメータを取り出すために、フレームヘッダ706a、706b、706c、706dをパースし得る。いくつかの実施形態では、ヘッダパーサ712はまた、関連付けられたフレームペイロードなしに、0の重み値を復元するためのパラメータを取り出すために、フレームヘッダ706eをパースし得る。
ブロック非正規化器714は、圧縮された重みデータのブロック700を復元するために、グローバルヘッダ704およびフレームヘッダ706a、706b、706c、706d、706eから取り出されたパラメータを使用し得る。より詳細には、ブロック非正規化器714は、関連付けられたフレームペイロード702a、702b、702c、702dを復元するために、グローバルヘッダ704およびフレームヘッダ706a、706b、706c、706dから取り出されたパラメータを使用し得る。さらに、ブロック非正規化器714は、関連付けられたフレームペイロードなしに、0の重み値を復元するために、グローバルヘッダ704およびフレームヘッダ706eから取り出されたパラメータを使用し得る。いくつかの実施形態では、ブロック非正規化器714は、関連付けられたフレームヘッダ706a、706b、706c、706dからの正規化係数(たとえば、図6における正規化係数604)のビット数によって、圧縮された重み値の各々をシフトすることによって、フレームペイロード702a、702b、702c、702dの重み値を復元し得る。いくつかの実施形態では、ブロック非正規化器714は、追加されるパディングビットの値を調整するために、ビット単位の算術演算を使用し得る。たとえば、ブロック非正規化器714は、圧縮された重み値の最上位ビットに一致するように、追加されるパディングビットの値を調整するために、ビット単位の算術演算を使用し得る。さらなる例として、ブロック非正規化器714は、圧縮された重み値の、符号ビットなどの最上位ビットに一致するように、追加される符号拡張ビットの値を調整するために、ビット単位の算術演算を使用し得る。復元された重み値は、復元された重みデータのブロック720としてグループ化され得る。
たとえば、ブロック非正規化器714は、関連付けられたフレームペイロード702aを復元するために、グローバルヘッダ704およびフレームヘッダ706aから取り出されたパラメータを使用し得る。この例では、ブロック非正規化器714は、フレームヘッダ706aから、2つの重み値のグループを表すように構成されたフレーム長(たとえば、図6におけるフレーム長602)と、8つのパディングビットを表すように構成された正規化係数と、フレームペイロード702aを復元するために使用されることになるオフセットがないことを示すように構成された、オフセットインジケータ(たとえば、図6におけるオフセットインジケータ606)とを取り出し得る。ブロック非正規化器714は、フレームペイロード702aの2つの圧縮された重み値に正規化係数を適用し、圧縮された重み値の各々に8つのパディングビットを追加し得る。この例では、ブロック非正規化器714は、各圧縮された重み値の最上位ビットの値をコピーし、最上位ビットの値をパディングビットとして使用して、各それぞれの圧縮された重み値を復元し得る。さらなる例として、ブロック非正規化器714は、符号ビットなど、各圧縮された重み値の最上位ビットの値をコピーし、最上位ビットの値を符号拡張ビットとして使用して、各それぞれの圧縮された重み値を復元し得る。パディングビットおよび有効ビットを有する、完全なビット幅の復元された重み値は、復元された重みデータのブロック720の一部として使用され得る。
さらなる例では、ブロック非正規化器714は、関連付けられたフレームペイロード702bを復元するために、グローバルヘッダ704およびフレームヘッダ706bから取り出されたパラメータを使用し得る。この例では、ブロック非正規化器714は、フレームヘッダ706bから、9つの重み値のグループを表すように構成されたフレーム長と、11個のパディングビットを表すように構成された正規化係数と、フレームペイロード702bを復元するために使用されることになるオフセットがないことを示すように構成されたオフセットインジケータとを取り出し得る。ブロック非正規化器714は、フレームペイロード702bの9つの圧縮された重み値に正規化係数を適用し、圧縮された重み値の各々に11個のパディングビットを追加し得る。この例では、ブロック非正規化器714は、各圧縮された重み値の最上位ビットの値をコピーし、最上位ビットの値をパディングビットとして使用して、各それぞれの圧縮された重み値を復元し得る。さらなる例として、ブロック非正規化器714は、符号ビットなど、各圧縮された重み値の最上位ビットの値をコピーし、最上位ビットの値を符号拡張ビットとして使用して、各それぞれの圧縮された重み値を復元し得る。パディングビットおよび有効ビットを有する、完全なビット幅の復元された重み値は、復元された重みデータのブロック720の一部として使用され得る。
さらなる例では、ブロック非正規化器714は、関連付けられたフレームペイロード702cを復元するために、グローバルヘッダ704およびフレームヘッダ706cから取り出されたパラメータを使用し得る。この例では、ブロック非正規化器714は、フレームヘッダ706cから、1つの重み値のグループを表すように構成されたフレーム長と、6つのパディングビットを表すように構成された正規化係数と、フレームペイロード702cを復元するために使用されることになるオフセットがないことを示すように構成されたオフセットインジケータとを取り出し得る。ブロック非正規化器714は、フレームペイロード702cの1つの圧縮された重み値に正規化係数を適用し、圧縮された重み値の各々に6つのパディングビットを追加し得る。この例では、ブロック非正規化器714は、圧縮された重み値の最上位ビットの値をコピーし、最上位ビットの値をパディングビットとして使用して、圧縮された重み値を復元し得る。さらなる例として、ブロック非正規化器714は、圧縮された重み値の、符号ビットなどの最上位ビットの値をコピーし、最上位ビットの値を符号拡張ビットとして使用して、圧縮された重み値を復元し得る。パディングビットおよび有効ビットを有する、完全なビット幅の復元された重み値は、復元された重みデータのブロック720の一部として使用され得る。
さらなる例では、ブロック非正規化器714は、関連付けられたフレームペイロード702dを復元するために、グローバルヘッダ704およびフレームヘッダ706dから取り出されたパラメータを使用し得る。この例では、ブロック非正規化器714は、フレームヘッダ706dから、3つの重み値のグループを表すように構成されたフレーム長と、14個のパディングビットを表すように構成された正規化係数と、フレームペイロード702dを復元するために使用されることになるオフセットがないことを示すように構成されたオフセットインジケータとを取り出し得る。ブロック非正規化器714は、フレームペイロード702dの3つの圧縮された重み値に正規化係数を適用し、圧縮された重み値の各々に14個のパディングビットを追加し得る。この例では、ブロック非正規化器714は、各圧縮された重み値の最上位ビットの値をコピーし、最上位ビットの値をパディングビットとして使用して、各それぞれの圧縮された重み値を復元し得る。さらなる例として、ブロック非正規化器714は、符号ビットなど、各圧縮された重み値の最上位ビットの値をコピーし、最上位ビットの値を符号拡張ビットとして使用して、各それぞれの圧縮された重み値を復元し得る。パディングビットおよび有効ビットを有する、完全なビット幅の復元された重み値は、復元された重みデータのブロック720の一部として使用され得る。
さらなる例では、ブロック非正規化器714は、関連付けられたフレームペイロードなしに、0の重み値を復元するために、グローバルヘッダ704およびフレームヘッダ706eから取り出されたパラメータを使用し得る。この例では、ブロック非正規化器714は、フレームヘッダ706eから、3つの重み値のグループを表すように構成されたフレーム長と、16個のパディングビットを表すように構成された正規化係数と、0の重み値を復元するために使用されることになるオフセットがないことを示すように構成されたオフセットインジケータとを取り出し得る。ブロック非正規化器714は、0の重み値のための3つの圧縮された重み値に正規化係数を適用し、圧縮された0の重み値の各々のために16ビットを追加し得る。この例では、ブロック非正規化器714は、各それぞれの圧縮された0の重み値を復元するために、16個の0値のビットを追加し得る。パディングビットおよび有効ビットを有する、完全なビット幅の復元された重み値は、復元された重みデータのブロック720の一部として使用され得る。
いくつかの実施形態では、重みデータセットの重み値は、重み値を圧縮することの一部として、オフセット値(たとえば、図5におけるオフセット502、504)だけ修正されていることがある。そのような修正された重み値の場合、修正された重み値から導出された、圧縮された重み値を有する、関連付けられたフレームペイロードのためのフレームヘッダは、フレームペイロードを復元するためにオフセットが使用されることになることを示すように構成されたオフセットインジケータを含み得る。フレームペイロードの圧縮された重みに、フレームヘッダの正規化係数を適用することに続いて、ブロック非正規化器714は、オフセット値だけフレームペイロードの完全なビット幅の重み値を修正し得る。パディングビットおよび有効ビットを有する、完全なビット幅の復元された重み値は、復元された重みデータのブロック720の一部として使用され得る。
図7における例は、例示的であるように意図されており、特許請求の範囲または本明細書の範囲を限定しない。圧縮された重みデータのブロック700、および復元された重みデータのブロック720は、任意の数の重み値を含み得、重み値は、任意のサイズおよび/またはフォーマットのものであり得る。圧縮された重みデータ700を復元し、復元された重みデータ720を生成する、復元コンピューティングデバイスのプロセッサは、任意の数および組合せのグローバルヘッダ、フレームヘッダ、およびフレームペイロードを使用して、それを行い得る。同様に、圧縮された重みデータ700を復元し、復元された重みデータ720を生成する、復元コンピューティングデバイスのプロセッサは、任意の数、組合せ、および値のオフセット、フレーム長、正規化係数、および圧縮された重み値を使用して、それを行い得る。
図8は、一実施形態による、重みデータを圧縮するための方法800を示す。図1~図8を参照すると、方法800は、コンピューティングデバイス(たとえば、図1におけるコンピューティングデバイス100)において、ハードウェアにおいて、プロセッサにおいて実行するソフトウェアにおいて、またはソフトウェアで構成されたプロセッサおよび専用ハードウェア(たとえば、図1におけるプロセッサ104、メモリ106、114、AIプロセッサ124、図2におけるプロセッサ202、プロセッサメモリ204、AIプロセッサ206、メモリ208)の組合せにおいて実施され得る。様々な実施形態において可能にされる代替構成を包含するために、方法800を実施するハードウェアは、本明細書では「圧縮処理デバイス」と呼ばれる。
ブロック802において、圧縮処理デバイスは、重みデータセット(たとえば、図3Aおよび図3Bにおける重みデータセット300)を受信し得る。いくつかの実施形態では、重みデータセットは、圧縮処理デバイスによってメモリから取り出され得る。いくつかの実施形態では、ブロック802において重みデータセットを取り出す圧縮処理デバイスは、プロセッサまたはAIプロセッサであり得る。
ブロック804において、圧縮処理デバイスは、選択的探索基準に基づいて、可逆圧縮のために重み値から除去され得る、重みデータセットにおけるフレーム(たとえば、図3Aおよび図3Bにおけるフレーム302a、302b、302c、302d、302e、304a、304b、304c、304d)を識別し得る。フレームの識別は、探索アルゴリズムによって実装され得る。いくつかの実施形態では、探索アルゴリズムは、あらゆるフレームを識別するように構成され得る。いくつかの実施形態では、探索アルゴリズムは、全数探索アルゴリズムであり得る。いくつかの実施形態では、探索アルゴリズムは、フレームの数を制限し得る選択的探索基準に基づいて、フレームを識別するように構成され得る。いくつかの実施形態では、探索アルゴリズムは、いくつかのフレームおよび/またはフレームのいくつかの組合せを優先させ得る選択的探索基準に基づいて、フレームを識別するように構成され得る。たとえば、選択的探索基準は、フレーム長、フレーム長の範囲、フレームの重み値から除去され得るパディングビットの数を表す正規化係数、正規化係数の範囲、重み値、重み値の範囲、オフセット値、オフセット値の範囲などを含み得る。ニューラルネットワークは、あるサイズに量子化された重みを使用し得る。たとえば、ニューラルネットワークは、4ビット、8ビット、16ビットなどに量子化された重みを使用し得る。ただし、すべての重み値が完全な量子化サイズを使用するとは限らないことがある。したがって、重み値は、符号ビットを含み得る有効ビットと、パディングビットとを含み得る。いくつかの実施形態では、パディングビットは、重み値の最上位ビットを繰り返す、かつ/または最上位ビットとは異なるビット値など、繰り返されるビット値であり得る。いくつかの実施形態では、パディングビットは、符号拡張ビットであり得る。
重みデータセットの分析は、損失なしに重み値から除去され得るパディングビットの連続する重み値におけるパターンを識別し得る。たとえば、損失なしに重み値から除去され得るパディングビットのパターンは、連続する重み値におけるパディングビットの一部および/または全部の共有される数であり得る。連続する重み値における、損失なしに重み値から除去され得るパディングビットのパターンは、連続する重み値の数に基づいて識別され得る。パターンを示す連続する重み値は、フレームとしてグループ化され得る。いくつかの実施形態では、パターンを示す重み値の識別は、重複するフレームを識別する。いくつかの実施形態では、ブロック804において重みデータセットにおけるフレームを識別する圧縮処理デバイスは、プロセッサまたはAIプロセッサであり得る。
ブロック806において、圧縮処理デバイスは、フレームの組合せを選択し得る。フレームの選択は、探索アルゴリズムによって実装され得る。いくつかの実施形態では、探索アルゴリズムは、フレームのあらゆる組合せを選択するように構成され得る。いくつかの実施形態では、探索アルゴリズムは、全数探索アルゴリズムであり得る。いくつかの実施形態では、探索アルゴリズムは、フレームの組合せの数を制限し得る選択的探索基準に基づいて、フレームの組合せを選択するように構成され得る。いくつかの実施形態では、探索アルゴリズムは、いくつかのフレームおよび/またはフレームのいくつかの組合せを優先させ得る選択的探索基準に基づいて、フレームの組合せを選択するように構成され得る。たとえば、選択的探索基準は、フレーム長、フレーム長の範囲、正規化係数、正規化係数の範囲、重み値、重み値の範囲、オフセット値、オフセット値の範囲などを含み得る。いくつかの実施形態では、フレームの選択は、重複しないフレームを選択し得る。いくつかの実施形態では、選択されたフレームは、連続するフレームであり得る。いくつかの実施形態では、選択されたフレームは、不連続フレームであり得る。いくつかの実施形態では、ブロック806においてフレームの組合せを選択する圧縮処理デバイスは、プロセッサまたはAIプロセッサであり得る。
ブロック808において、圧縮処理デバイスは、フレームの選択された組合せを圧縮し得る。フレームの選択された組合せの圧縮については、図9を参照しながら方法900において、および図10を参照しながら方法1000において、本明細書でさらに説明する。いくつかの実施形態では、ブロック808において選択されたフレームを圧縮する圧縮処理デバイスは、プロセッサまたはAIプロセッサであり得る。
ブロック810において、圧縮処理デバイスは、フレームのための選択された組合せのための圧縮メトリックを計算し得る。圧縮メトリックは、圧縮率、圧縮サイズなどに基づき得る。ブロック810においてフレームのための選択された組合せのための圧縮メトリックを計算する圧縮処理デバイスは、プロセッサまたはAIプロセッサであり得る。
決定ブロック812において、圧縮処理デバイスは、圧縮メトリックが圧縮メトリックしきい値を満たすか、かつ/または超えるか否かを決定し得る。圧縮メトリックしきい値は、圧縮率、圧縮サイズなどに基づき得る。いくつかの実施形態では、圧縮メトリックしきい値は、所定の値であり得る。圧縮メトリックしきい値を満たす、かつ/または超えるフレームの組合せは、重みデータセットを圧縮するために使用され得る。いくつかの実施形態では、圧縮メトリックしきい値は、フレームの選択された組合せの複数のセットの圧縮メトリックの分析からの最良の圧縮メトリックに設定され得る。たとえば、フレームの最初の選択された組合せの圧縮メトリックが、圧縮メトリックしきい値として設定され得、圧縮メトリックしきい値を超えるフレームのいずれかの次に続く選択された組合せの圧縮メトリックが、圧縮メトリックしきい値として設定され得る。フレームのどの選択された組合せも圧縮メトリックしきい値を超えることができなくなると、圧縮メトリックしきい値が最良の圧縮メトリックであり得る。最良の圧縮メトリックに関連付けられたフレームの組合せが、本明細書でさらに説明するように、重みデータセットを圧縮するために使用されるべきフレームの組合せであり得る。決定ブロック812において、圧縮メトリックが圧縮メトリックしきい値を満たすか、かつ/または超えるか否かを決定する圧縮処理デバイスは、プロセッサまたはAIプロセッサであり得る。
圧縮メトリックが圧縮メトリックしきい値を満たさない、かつ/または超えないとの決定(すなわち、決定ブロック812=「No」)に応答して、圧縮処理デバイスは、本明細書で前に説明したように、ブロック806においてフレームの組合せを選択し得る。
圧縮メトリックが圧縮メトリックしきい値を満たす、かつ/または超えるとの決定(すなわち、決定ブロック812=「Yes」)に応答して、圧縮処理デバイスは、任意の決定ブロック814において、フレームのための残りの組合せがあるか否かを決定し得る。上記で説明したように、最良の圧縮メトリックは、フレームの組合せの各々の、圧縮メトリックしきい値との比較に基づき得る。したがって、フレームの組合せがまだ圧縮メトリックしきい値と比較されていないとき、フレームの残りの組合せが圧縮メトリックしきい値と比較され得る。いくつかの実施形態では、圧縮処理デバイスは、フレームの組合せのリスト、テーブル、配列、キュー、スタックなどから、フレームのための残りの組合せがあるか否かを決定し得る。任意の決定ブロック814において、フレームのための残りの組合せがあるか否かを決定する圧縮処理デバイスは、プロセッサまたはAIプロセッサであり得る。
フレームのための残りの組合せがあるとの決定(すなわち、任意の決定ブロック814=「Yes」)に応答して、圧縮処理デバイスは、本明細書で前に説明したように、ブロック806においてフレームの組合せを選択し得る。
圧縮メトリックが圧縮メトリックしきい値を満たす、かつ/または超えるとの決定(すなわち、決定ブロック812=「Yes」)に応答して、あるいはフレームのための残りの組合せがないとの決定(すなわち、任意の決定ブロック814=「No」)に応答して、圧縮処理デバイスは、ブロック816において、フレームの圧縮された選択された組合せを記憶し得る。フレームの圧縮された選択された組合せは、永続記憶のために構成されたメモリに記憶され得る。ブロック816においてフレームの圧縮された選択された組合せを記憶する圧縮処理デバイスは、プロセッサまたはAIプロセッサであり得る。
図9は、一実施形態による、重みデータ圧縮パラメータを設定するための方法900を示す。図1~図9を参照すると、方法900は、コンピューティングデバイス(たとえば、図1におけるコンピューティングデバイス100)において、ハードウェアにおいて、プロセッサにおいて実行するソフトウェアにおいて、またはソフトウェアで構成されたプロセッサおよび専用ハードウェア(たとえば、図1におけるプロセッサ104、メモリ106、114、AIプロセッサ124、図2におけるプロセッサ202、プロセッサメモリ204、AIプロセッサ206、メモリ208)の組合せにおいて実施され得る。様々な実施形態において可能にされる代替構成を包含するために、方法900を実施するハードウェアは、本明細書では「圧縮処理デバイス」と呼ばれる。いくつかの実施形態では、方法900は、図8を参照しながら説明した方法800のブロック808についてさらに説明するものであり得る。
任意のブロック902において、圧縮処理デバイスは、選択されたフレーム(たとえば、図3Aおよび図3Bにおけるフレーム302a、302b、302c、302d、302e、304a、304b、304c、304d)のフレーム長を決定し得る。いくつかの実施形態では、フレーム長は、図8を参照しながら説明した方法800におけるブロック804について説明したように、重みデータセット(たとえば、図3Aおよび図3Bにおける重みデータセット300)におけるフレームを識別することにおいて使用される、損失なしに重み値から除去され得るパディングビットのパターンを示す連続する重み値の数に基づき得る。いくつかの実施形態では、フレーム長は、図8を参照しながら説明した方法800におけるブロック804について説明したように、重みデータセットにおけるフレームを識別する間に、あらかじめ決定されることがあり、任意のブロック902が実施される必要がないことがある。任意のブロック902において、選択されたフレームのフレーム長を決定する圧縮処理デバイスは、プロセッサまたはAIプロセッサであり得る。
任意のブロック904において、圧縮処理デバイスは、フレーム内の各重み値からオフセット値を除去し得る。オフセット値の使用は任意であってよく、ブロック904は、オフセット値が使用されない実施形態では実施されないことがある。いくつかの実施形態では、図8を参照しながら説明した方法800におけるブロック806について説明したように選択されたフレームの圧縮のために、オフセット値が使用されないことがある。いくつかの実施形態では、オフセット値は、重み値からオフセット値を除去することによって、そのための有効ビットの数が低減され得る、少なくともいくつかの重み値を有する、選択されたフレームの圧縮のために使用され得る。いくつかの実施形態では、フレームの重み値からのオフセット値の除去は、重み値からのオフセット値の除去が、最も多い有効ビットまたは最も少ないパディングビットを有するフレームの重み値よりも、少ない有効ビットまたはより多いパディングビットをもつ修正された重み値を生じるか否かに依存し得る。いくつかの実施形態では、オフセット値は、あらかじめ決定され得る。いくつかの実施形態では、オフセット値は、フレームの重みのための有効ビットの最高数を低減し得るか、またはパディングビットの最低数を増加させ得る値に基づいて、決定され得る。いくつかの実施形態では、オフセット値は、フレーム内のオフセット値および重み値を加算または減算することによって除去され得る。任意のブロック904において、フレーム内の各重み値からオフセット値を除去する圧縮処理デバイスは、プロセッサまたはAIプロセッサであり得る。
ブロック906において、圧縮処理デバイスは、フレーム内の最も多い有効ビットまたは最も少ないパディングビットをもつ重み値を識別し得る。圧縮処理デバイスは、符号付き値を含む、重み値の値を表す有効ビットを決定するために、重み値のビットを分析し、重み値のうちのどれが最も多い有効ビットを有するかを比較し得る。同様に、圧縮処理デバイスは、重み値の値のパディングビットを決定するために、重み値のビットを分析し、重み値のうちのどれが最も少ないパディングビットを有するかを比較し得る。ブロック906において、フレーム内の最も多い有効ビットまたは最も少ないパディングビットをもつ重み値を識別する圧縮処理デバイスは、プロセッサまたはAIプロセッサであり得る。
ブロック908において、圧縮処理デバイスは、フレーム内の最も多い有効ビットまたは最も少ないパディングビットをもつ重み値を使用して、フレームのための正規化係数を設定し得る。正規化係数は、各フレームの重み値から除去され得るパディングビットの数を表し得る。正規化係数を設定することは、フレーム内の最も多い有効ビットまたは最も少ないパディングビットをもつ重み値のパディングビットの数を決定すること、および正規化係数をパディングビットの数に設定することを含み得る。いくつかの実施形態では、複数の重み値が、最も多い有効ビットまたは最も少ないパディングビットを有することがあり、圧縮処理デバイスは、正規化係数を設定するために、それらの重み値のうちのいずれかを選択し得る。いくつかの実施形態では、圧縮処理デバイスは、フレームのビットのすべてが0値であるか否かを決定し得る。言い換えれば、圧縮処理デバイスは、フレーム内の重み値のすべてが0値であるか否かを決定し得る。圧縮処理デバイスは、フレーム内の重み値の各ビットを分析して、それらの値を決定し、各ビットが0値を有するか否かを決定し得る。フレームのビットのすべてが0値であるとの決定に応答して、圧縮処理デバイスは、正規化係数を、フレームの重み値の完全なビット幅に設定し得る。言い換えれば、圧縮処理デバイスは、重み値のビットのすべてをパディングビットとして扱い、正規化係数を、重み値のビットのすべてに設定し得る。ブロック908において、フレーム内の最も多い有効ビットまたは最も少ないパディングビットをもつ重み値を使用して、フレームのための正規化係数を設定する圧縮処理デバイスは、プロセッサまたはAIプロセッサであり得る。
図10は、一実施形態による、重みデータを圧縮するための方法1000を示す。図1~図10を参照すると、方法1000は、コンピューティングデバイス(たとえば、図1におけるコンピューティングデバイス100)において、ハードウェアにおいて、プロセッサにおいて実行するソフトウェアにおいて、またはソフトウェアで構成されたプロセッサおよび専用ハードウェア(たとえば、図1におけるプロセッサ104、メモリ106、114、AIプロセッサ124、図2におけるプロセッサ202、プロセッサメモリ204、AIプロセッサ206、メモリ208)の組合せにおいて実施され得る。様々な実施形態において可能にされる代替構成を包含するために、方法1000を実施するハードウェアは、本明細書では「圧縮処理デバイス」と呼ばれる。いくつかの実施形態では、方法1000は、図9を参照しながら本明細書で説明した方法900の継続において実施され得る。
任意の決定ブロック1002において、圧縮処理デバイスは、重みデータセット(たとえば、図3Aおよび図3Bにおける重みデータセット300)におけるフレーム(たとえば、図3Aおよび図3Bにおけるフレーム302a、302b、302c、302d、302e、304a、304b、304c、304d)のための正規化係数が、フレームの重み値の完全なビット幅であるか否かを決定し得る。フレームのための正規化係数は、図9を参照しながら本明細書で説明した方法900のブロック908において、フレームのために設定された正規化係数であり得る。いくつかの実施形態では、圧縮処理デバイスは、フレームの重み値を分析すること、および重み値のビット幅を決定することによって、フレームの重み値のビット幅を決定し得る。いくつかの実施形態では、フレームの重み値のビット幅は、事前構成された値であり得る。たとえば、フレームの重み値のビット幅は、2ビット、4ビット、8ビット、16ビット、32ビット、64ビット、128ビットなど、2のべき乗値であり得る。任意の決定ブロック1002において、フレームのための正規化係数がフレームの重み値の完全なビット幅であるか否かを決定する圧縮処理デバイスは、プロセッサまたはAIプロセッサであり得る。
ブロック1004において、圧縮処理デバイスは、正規化係数に従って、フレームの重み値からパディングビットを除去し得る。正規化係数は、フレームの重み値から除去されるべきパディングビットの数を表すように構成され得る。正規化係数によって表された、フレームから除去されるべきパディングビットの数は、圧縮処理デバイスによって読み取られ得、圧縮処理デバイスは、フレームの重み値の各々からその数のパディングビットを除去し得る。いくつかの実施形態では、パディングビットを除去することは、除去されているパディングビットを上書きするために、フレームの重み値の残りのビットをシフトすることを伴い得る。パディングビットの除去に続いて、重み値の残りのビットは、圧縮された重みビット幅と呼ばれることがある。ブロック1004において、正規化係数に従って、フレームの重み値からパディングビットを除去する圧縮処理デバイスは、プロセッサまたはAIプロセッサであり得る。いくつかの実施形態では、圧縮処理デバイスは、フレームのための正規化係数がフレームの重み値の完全なビット幅でないとの決定(すなわち、任意の決定ブロック1002=「No」)に応答して、ブロック1004において、正規化係数に従って、フレームの重み値からパディングビットを除去し得る。
ブロック1006において、圧縮処理デバイスは、フレームのためのフレームペイロード(たとえば、図4におけるフレームペイロード406a、406b、406c、図7におけるフレームペイロード702a、702b、702c、702d)、およびフレームヘッダ(たとえば、図4におけるフレームヘッダ404a、404b、404c、図6におけるフレームヘッダ600、図7におけるフレームヘッダ706a、706b、706c、706d)を生成し得る。フレームのためのフレームペイロードを生成することは、フレームの重み値の残りのビットを記憶することを含み得る。フレームの重み値の記憶された残りのビットは、フレームの圧縮された重み値であり得る。フレームのためのフレームヘッダを生成することは、圧縮された重み値の復元のために使用され得るフレームペイロードのための圧縮パラメータを、そのフレームペイロードに関連して記憶することを含み得る。圧縮パラメータは、フレーム長(たとえば、図6におけるフレーム長602)、正規化係数インジケータ(たとえば、図6における正規化係数604、図6を参照しながら説明した、圧縮された重みビット幅)、および/またはオフセットインジケータ(たとえば、図6におけるオフセットインジケータ606)を含み得る。フレーム長は、図9を参照しながら本明細書で説明したように、方法900のブロック902においてフレームのために決定されたフレーム長であり得る。正規化係数インジケータは、図9を参照しながら本明細書で説明した方法900のブロック908において、フレームのために設定された正規化係数であり得る。正規化係数インジケータは、ブロック1004におけるパディングビットの除去から生じる、圧縮された重みビット幅であり得る。オフセットインジケータは、図9を参照しながら本明細書で説明した方法900における任意のブロック904において、オフセット係数がフレームの重み値に適用されるか否か、および/またはどのオフセット係数が適用されるかに基づく値であり得る。フレームヘッダおよびフレームペイロードは、メモリ内で互いに関連して記憶され得る。ブロック1006において、フレームのためのフレームペイロードおよびフレームヘッダを生成する圧縮処理デバイスは、プロセッサまたはAIプロセッサであり得る。
フレームのための正規化係数がフレームの重み値の完全なビット幅であるとの決定(すなわち、任意の決定ブロック1002=「Yes」)に応答して、圧縮処理デバイスは、任意のブロック1012において、フレーム内の重み値からビットのすべてを除去し得る。任意のブロック1012において、フレーム内の重み値からビットのすべてを除去する圧縮処理デバイスは、プロセッサまたはAIプロセッサであり得る。
任意のブロック1014において、圧縮処理デバイスは、フレームのためのフレームヘッダ(たとえば、図4におけるフレームヘッダ404d、図6におけるフレームヘッダ600、図7におけるフレームヘッダ706e)を生成し得る。ブロック1014においてフレームヘッダを生成することは、ブロック1006においてフレームヘッダを生成することと同様の方法で実施され得る。そのためのビットのすべてが重み値から除去されるフレームの場合、フレームペイロードが生成されないことがある。任意のブロック1014において、フレームのためのフレームヘッダを生成する圧縮処理デバイスは、プロセッサまたはAIプロセッサであり得る。
ブロック1006において、フレームのためのフレームペイロードおよびフレームヘッダを生成すること、または任意のブロック1014において、フレームのためのフレームヘッダを生成することに続いて、圧縮処理デバイスは、決定ブロック1008において、残りのフレームがあるか否かを決定し得る。圧縮処理デバイスは、フレームのリスト、テーブル、配列、キュー、スタックなどから、残りのフレームがあるか否かを決定し得る。決定ブロック1008において、残りのフレームがあるか否かを決定する圧縮処理デバイスは、プロセッサまたはAIプロセッサであり得る。
残りのフレームがないとの決定(すなわち、決定ブロック1008=「No」)に応答して、圧縮処理デバイスは、ブロック1010において、グローバルヘッダ(たとえば、図4におけるグローバルヘッダ402、図5におけるグローバルヘッダ500、図7におけるグローバルヘッダ704)、および圧縮された重みデータのブロック(たとえば、図4における圧縮された重みデータのブロック400、図7における圧縮された重みデータのブロック700)を生成し得る。圧縮された重みデータのブロックのためのグローバルヘッダを生成することは、フレームヘッダおよびフレームペイロードのための圧縮パラメータおよび重みデータセットパラメータを、フレームヘッダおよびフレームペイロードに関連して記憶することを含み得る。圧縮パラメータは、オフセット(たとえば、図5におけるオフセット502、504)を含み得る。オフセットは、図9を参照しながら本明細書で説明した方法900のブロック904における、フレームの重み値に適用されるオフセットの値であり得る。いくつかの実施形態では、グローバルヘッダは、圧縮された重みデータのブロックを復元するためのパラメータを提供するように構成され得る、任意の数の予約済みビット(たとえば、図5における予約済みビット506)を含み得る。
いくつかの実施形態では、グローバルヘッダは、圧縮された重みデータのブロックのフレームペイロードが符号付きの圧縮された重みデータを含んでいるか否かを表すように構成された、圧縮された符号値(たとえば、図5における圧縮された符号値508)を含み得る。圧縮された符号値は、重みデータセットの圧縮中に生成され得る。
いくつかの実施形態では、グローバルヘッダは、圧縮された重みデータのブロックにおけるフレームヘッダのサイズを表すように構成された、フレームヘッダサイズ(たとえば、図5におけるフレームヘッダサイズ510)を含み得る。フレームヘッダサイズは、重みデータセットの圧縮中に生成され得る。たとえば、フレームヘッダサイズは、圧縮された重みデータのブロックのフレームヘッダのすべてのための均一なサイズに基づいて生成され得る。いくつかの実施形態では、フレームヘッダサイズは、事前構成された値であり得る。
いくつかの実施形態では、グローバルヘッダは、圧縮されていない重みデータセットのビット幅を表すように構成された、圧縮されていない幅(たとえば、図5における圧縮されていない幅512)を含み得る。たとえば、圧縮されていない幅は、圧縮されていない重みが、2ビット、4ビット、8ビット、16ビット、32ビット、64ビット、128ビットなど、2のべき乗値であるビット数のビット幅を有し得ることを表すように構成され得る。圧縮されていない幅は、重みデータセットの圧縮中に生成され得る。たとえば、圧縮されていない幅は、重みデータセットの重み値のビット幅に基づいて生成され得る。別の例では、圧縮されていない幅は、事前構成された値であり得る。いくつかの実施形態では、グローバルヘッダは、圧縮されていない重みデータセットを記憶するために構成されたバッファのビット幅を表すように構成された、圧縮されていないバッファサイズ(たとえば、図5における圧縮されていないバッファサイズ514)を含み得る。圧縮されていないバッファサイズは、重みデータセットの圧縮中に生成され得る。たとえば、圧縮されていないバッファサイズは、重みデータセットのためのバッファサイズに基づいて生成され得る。別の例では、圧縮されていないバッファサイズは、事前構成された値であり得る。
圧縮された重みデータのブロックを生成することは、グローバルヘッダ、フレームヘッダ、およびフレームペイロードをメモリ内で互いに関連して記憶することを含み得る。ブロック1010において、グローバルヘッダ、および圧縮された重みデータのブロックを生成する圧縮処理デバイスは、プロセッサまたはAIプロセッサであり得る。
残りのフレームがあるとの決定(すなわち、決定ブロック1008=「Yes」)に応答して、圧縮処理デバイスは、図9を参照しながら本明細書で説明した方法900の任意のブロック902において、選択されたフレームのフレーム長を決定すること、図9を参照しながら本明細書で説明した方法900の任意のブロック904において、フレーム内の各重み値からオフセット値を除去すること、あるいは図9を参照しながら本明細書で説明した方法900のブロック906において、フレーム内の最も多い有効ビットまたは最も少ないパディングビットをもつ重み値を識別することを行い得る。
図11は、一実施形態による、重みデータを復元するための方法1100を示す。図1~図11を参照すると、方法1100は、コンピューティングデバイス(たとえば、図1におけるコンピューティングデバイス100)において、ハードウェアにおいて、プロセッサにおいて実行するソフトウェアにおいて、またはソフトウェアで構成されたプロセッサおよび専用ハードウェア(たとえば、図1におけるプロセッサ104、メモリ106、114、AIプロセッサ124、図2におけるプロセッサ202、プロセッサメモリ204、AIプロセッサ206、メモリ208、図7における復元器710、ヘッダパーサ712、ブロック非正規化器714)の組合せにおいて実施され得る。様々な実施形態において可能にされる代替構成を包含するために、方法1100を実施するハードウェアは、本明細書では「復元処理デバイス」と呼ばれる。
ブロック1102において、復元処理デバイスは、圧縮された重みデータのブロック(たとえば、図4における圧縮された重みデータのブロック400、図7における圧縮された重みデータのブロック700)を取り出し得る。圧縮された重みデータのブロックは、SoC(たとえば、図1におけるSoC102、図2におけるSoC200)上のプロセッサメモリ、および/またはSoCとは別個のメモリなど、コンピューティングデバイスのメモリから取り出され得る。ブロック1102において、圧縮された重みデータのブロックを取り出す復元処理デバイスは、プロセッサまたはAIプロセッサであり得る。
ブロック1104において、復元処理デバイスは、圧縮された重みデータのブロックのグローバルヘッダ(たとえば、図4におけるグローバルヘッダ402、図5におけるグローバルヘッダ500、図7におけるグローバルヘッダ704)をパースし得る。グローバルヘッダは、圧縮された重みデータのブロックを復元するためのパラメータを取り出すために、パースされ得る。いくつかの実施形態では、グローバルヘッダから取り出された、圧縮された重みデータのブロックを復元するためのパラメータは、オフセット(たとえば、図5におけるオフセット502、504)を含み得る。いくつかの実施形態では、グローバルヘッダから取り出された、圧縮された重みデータのブロックを復元するためのパラメータは、圧縮された重みデータのブロックのフレームペイロード(たとえば、図4におけるフレームペイロード406a、406b、406c、および図7におけるフレームペイロード702a、702b、702c、702d)が符号付きの圧縮された重みデータを含んでいるか否かを表すように構成された、圧縮された符号値(たとえば、図5における圧縮された符号値508)を含み得る。いくつかの実施形態では、グローバルヘッダから取り出された、圧縮された重みデータのブロックを復元するためのパラメータは、圧縮された重みデータのブロックにおけるフレームヘッダ(たとえば、図4におけるフレームヘッダ404a、404b、404c、404d、図6におけるフレームヘッダ600、図7におけるフレームヘッダ706a、706b、706c、706d、706e)のサイズを表すように構成された、フレームヘッダサイズ(たとえば、図5におけるフレームヘッダサイズ510)を含み得る。いくつかの実施形態では、グローバルヘッダから取り出された、圧縮された重みデータのブロックを復元するためのパラメータは、圧縮されていない重みデータセットのビット幅を表すように構成された、圧縮されていない幅(たとえば、図5における圧縮されていない幅512)を含み得る。たとえば、圧縮されていない幅は、圧縮されていない重みが、2ビット、4ビット、8ビット、16ビット、32ビット、64ビット、128ビットなど、2のべき乗値であるビット数のビット幅を有し得ることを表すように構成され得る。いくつかの実施形態では、グローバルヘッダは、圧縮されていない重みデータセットを記憶するために構成されたバッファのビット幅を表すように構成された、圧縮されていないバッファサイズ(たとえば、図5における圧縮されていないバッファサイズ514)を含み得る。ブロック1104において、圧縮された重みデータのブロックのグローバルヘッダをパースする復元処理デバイスは、プロセッサまたはAIプロセッサであり得る。
ブロック1106において、復元処理デバイスは、圧縮された重みデータのブロックのフレームヘッダをパースし得る。フレームヘッダは、圧縮された重みデータのブロックを復元するためのパラメータを取り出すために、パースされ得る。個々のフレームヘッダは、関連付けられたフレームペイロードを復元するためのパラメータを取り出すために、パースされ得る。いくつかの実施形態では、個々のフレームヘッダは、関連付けられたフレームペイロードなしに、0の重み値を復元するためのパラメータを取り出すために、パースされ得る。いくつかの実施形態では、フレームヘッダから取り出された、圧縮された重みデータのブロックを復元するためのパラメータは、フレーム長(たとえば、図6におけるフレーム長602)、正規化係数(たとえば、図6における正規化係数604)、および/またはオフセットインジケータ(たとえば、図6におけるオフセットインジケータ606)を含み得る。フレーム長は、重みデータセットの関連付けられたフレーム中に含まれた重み値の数を表すように構成され得る。いくつかの実施形態では、フレーム長602は、圧縮された重みデータのブロックの関連付けられたフレームペイロード中に含まれた、圧縮された重み値の数を表すように同様に構成され得る。いくつかの実施形態では、フレーム長602は、圧縮された重みデータのブロックの関連付けられたフレームペイロードなしに、圧縮された重み値の数を表すように同様に構成され得る。正規化係数は、関連付けられたフレームペイロード中に含まれた、圧縮された重み値に追加するためのパディングビットの数を表すように構成され得る。いくつかの実施形態では、正規化係数は、関連付けられたフレームペイロードなしに、圧縮された重み値のために追加するためのビット数を表すように構成され得る。オフセットインジケータ606は、オフセットが、関連付けられたフレームペイロード中に含まれた、圧縮された重み値を復元するために適用されることになるか否か、および/またはどのオフセットが適用されることになるかを表すように構成され得る。ブロック1106において、圧縮された重みデータのブロックのフレームヘッダをパースする復元処理デバイスは、プロセッサまたはAIプロセッサであり得る。
決定ブロック1108において、復元処理デバイスは、圧縮された重みデータのブロックのフレームペイロードが符号付きであるか否かを決定し得る。フレームペイロードの圧縮された重みデータは、符号付きおよび/または符号なし重み値を含み得る。少なくとも1つの符号付き重み値を有することは、フレームペイロードを符号付きにし得る。いくつかの実施形態では、圧縮された重みデータにおいて少なくとも1つの符号付き重み値を有することは、すべてのフレームペイロードを符号付きにし得る。フレームペイロードが符号付きであるか否かを決定することは、ブロック1104においてグローバルヘッダから取り出された、圧縮された符号値に基づき得る。決定ブロック1108において、圧縮された重みデータのブロックのフレームペイロードが符号付きであるか否かを決定する復元処理デバイスは、プロセッサまたはAIプロセッサであり得る。
圧縮された重みデータのブロックのフレームペイロードが符号付きでないとの決定(すなわち、決定ブロック1108=「No」)に応答して、復元処理デバイスは、ブロック1110において、正規化係数に従って、フレームペイロードにおけるビットにパディングビットを追加し得る。正規化係数は、各復元された重み値のビット幅が、合計で重みデータセットの元の圧縮されていない重み値のビット幅になるように、フレームペイロードの各圧縮された重み値のビットに、いくつのパディングビットを追加するかを、復元処理デバイスに示すために使用され得る。いくつかの実施形態では、復元処理デバイスは、正規化係数のビット数だけ、圧縮された重み値の各々をシフトすることによって、フレームペイロードにおけるビットにパディングビットを追加し得る。いくつかの実施形態では、復元処理デバイスは、追加されるパディングビットの値を調整するために、ビット単位の算術演算を使用し得る。符号なしの圧縮された重みデータの場合、何のビット値がパディングビットのために使用され得るかは、各圧縮された重み値の最上位ビットに基づいて、またはパディングビットの値のリソースコストに基づいて事前構成され得る。ブロック1110において、正規化係数に従って、フレームペイロードにおけるビットにパディングビットを追加する復元処理デバイスは、プロセッサまたはAIプロセッサであり得る。
圧縮された重みデータのブロックのフレームペイロードが符号付きであるとの決定(すなわち、決定ブロック1108=「Yes」)に応答して、復元処理デバイスは、ブロック1120において、正規化係数および符号ビットに従って、フレームペイロードにおけるビットにパディングビットを追加し得る。正規化係数は、ブロック1110において説明したように、同様の方法で使用され得る。いくつかの実施形態では、復元処理デバイスは、追加されるパディングビットの値を調整するために、ビット単位の算術演算を使用し得る。符号付きの圧縮された重みデータの場合、何のビット値がパディングビットのために使用され得るかは、各符号付きの圧縮された重み値の符号ビットの値に基づき得る。いくつかの実施形態では、パディングビットは、符号拡張ビットであり得る。ブロック1120において、正規化係数および符号ビットに従って、フレームペイロードにおけるビットにパディングビットを追加する復元処理デバイスは、プロセッサまたはAIプロセッサであり得る。
ブロック1110において、正規化係数に従って、フレームペイロードにおけるビットにパディングビットを追加すること、またはブロック1120において、正規化係数および符号ビットに従って、フレームペイロードにおけるビットにパディングビットを追加することに続いて、復元処理デバイスは、任意の決定ブロック1112において、オフセットインジケータがフレームペイロードのために設定されるか否かを決定し得る。オフセットインジケータがフレームペイロードのために設定されるか否かは、ブロック1106における、フレームペイロードの関連付けられたフレームヘッダをパースすること、および詳細にはオフセットインジケータをパースすることの出力から決定され得る。任意の決定ブロック1112において、オフセットインジケータがフレームペイロードのために設定されるか否かを決定する復元処理デバイスは、プロセッサまたはAIプロセッサであり得る。
オフセットインジケータがフレームペイロードのために設定されるとの決定(すなわち、任意の決定ブロック1112=「Yes」)に応答して、復元処理デバイスは、任意のブロック1114において、フレームペイロード内の各復元された重み値のためのオフセット値を含め得る。オフセット値は、ブロック1104においてグローバルヘッダをパースした出力、およびオフセットから決定され得る。いくつかの実施形態では、グローバルヘッダは、複数のオフセットを含み得、関連付けられたフレームヘッダのオフセットインジケータは、グローバルヘッダからのどのオフセットを使用するかを復元処理デバイスに示すように構成され得る。復元処理デバイスは、フレームペイロード内の各復元された重み値にオフセット値を含め得る。たとえば、復元処理デバイスは、オフセット値およびフレームペイロード内の各復元された重み値を加算または減算し得る。任意のブロック1114において、フレームペイロード内の各復元された重み値のためのオフセット値を含める復元処理デバイスは、プロセッサまたはAIプロセッサであり得る。
決定ブロック1116において、復元処理デバイスは、残りのフレームペイロードがあるか否かを決定し得る。復元処理デバイスは、フレームペイロードのリスト、テーブル、配列、キュー、スタックなどから、残りのフレームペイロードがあるか否かを決定し得る。決定ブロック1116において、残りのフレームペイロードがあるか否かを決定する復元処理デバイスは、プロセッサまたはAIプロセッサであり得る。いくつかの実施形態では、復元処理デバイスは、ブロック1110において、正規化係数に従って、フレームペイロードにおけるビットにパディングビットを追加すること、またはブロック1120において、正規化係数および符号ビットに従って、フレームペイロードにおけるビットにパディングビットを追加することに続いて、決定ブロック1116において、残りのフレームペイロードがあるか否かを決定し得る。いくつかの実施形態では、復元処理デバイスは、オフセットインジケータがフレームペイロードのために設定されないとの決定(すなわち、任意の決定ブロック1112=「No」)に応答して、または任意のブロック1114において、フレームペイロード内の各復元された重み値のためのオフセット値を含めることに続いて、決定ブロック1116において、残りのフレームペイロードがあるか否かを決定し得る。
残りのフレームペイロードがないとの決定(すなわち、決定ブロック1116=「No」)に応答して、復元処理デバイスは、ブロック1118において、復元された重みデータのブロック(たとえば、図7における復元された重みデータのブロック720)を生成し得る。復元処理デバイスは、ブロック1110においてパディングビットを追加することから生じる、復元された重み値を出力し、メモリに記憶し得る。いくつかの実施形態では、復元処理デバイスは、ブロック1120においてパディングビットを追加することから生じる、復元された重み値を出力し、メモリに記憶し得る。いくつかの実施形態では、復元処理デバイスは、任意のブロック1114において復元された重み値にオフセットを含めることから生じる、復元された重み値を出力し、メモリに記憶し得る。ブロック1118において、復元された重みデータのブロックを生成する復元処理デバイスは、プロセッサまたはAIプロセッサであり得る。
残りのフレームペイロードがあるとの決定(すなわち、決定ブロック1116=「Yes」)に応答して、復元処理デバイスは、ブロック1106において、圧縮された重みデータのブロックのフレームヘッダをパースし得る。
図12は、一実施形態による、重みデータを圧縮するための方法1200を示す。図1~図12を参照すると、方法1200は、コンピューティングデバイス(たとえば、図1におけるコンピューティングデバイス100)において、ハードウェアにおいて、プロセッサにおいて実行するソフトウェアにおいて、またはソフトウェアで構成されたプロセッサおよび専用ハードウェア(たとえば、図1におけるプロセッサ104、メモリ106、114、AIプロセッサ124、図2におけるプロセッサ202、プロセッサメモリ204、AIプロセッサ206、メモリ208)の組合せにおいて実施され得る。様々な実施形態において可能にされる代替構成を包含するために、方法1200を実施するハードウェアは、本明細書では「圧縮処理デバイス」と呼ばれる。
ブロック1202において、圧縮処理デバイスは、選択的探索基準に基づいて、可逆圧縮のために重み値から除去され得る、重みデータセットの重み値におけるパディングビットのパターンに基づいて、重みデータセット(たとえば、図3Aおよび図3Bにおける重みデータセット300)におけるフレーム(たとえば、図3Aおよび図3Bにおけるフレーム302a、302b、302c、302d、302e、304a、304b、304c、304d)を識別し得る。ブロック1202は、図8を参照しながら説明したような方法800のブロック804における動作と同様の方法で実施され得る。
ブロック1204において、圧縮処理デバイスは、フレームの組合せを選択し得る。ブロック1204は、図8を参照しながら説明したような方法800のブロック806における動作と同様の方法で実施され得る。
ブロック1206において、圧縮処理デバイスは、選択されたフレームの各々のためのフレームペイロード(たとえば、図4におけるフレームペイロード406a、406b、406c、および図7におけるフレームペイロード702a、702b、702c、702d)を生成するために、各フレームのための正規化係数(たとえば、図6における正規化係数604)に従って、フレームの選択された組合せのうちのフレーム内の重み値からパディングビットを除去し得る。正規化係数は、各フレームの重み値から除去され得るパディングビットの数を各々表し得る。ブロック1206は、図8を参照しながら説明したような方法800のブロック808、ならびに/または図10を参照しながら説明したような方法1000のブロック1004および/もしくは任意のブロック1012における動作と同様の方法で実施され得る。
ブロック1208において、圧縮処理デバイスは、フレームペイロードの圧縮メトリックが圧縮メトリックしきい値を超えるか否かを決定し得る。ブロック1208は、図8を参照しながら説明したような方法800の決定ブロック812における動作と同様の方法で実施され得る。
ブロック1210において、圧縮処理デバイスは、フレームペイロードの圧縮メトリックが圧縮メトリックしきい値を超えるとの決定に応答して、フレームペイロードを有する圧縮された重みデータのブロック(たとえば、図4における圧縮された重みデータのブロック400)を生成し得る。ブロック1210は、図10を参照しながら説明したような方法1000のブロック1010における動作と同様の方法で実施され得る。
図13は、一実施形態による、重みデータを復元するための方法1300を示す。図1~図13を参照すると、方法1300は、コンピューティングデバイス(たとえば、図1におけるコンピューティングデバイス100)において、ハードウェアにおいて、プロセッサにおいて実行するソフトウェアにおいて、またはソフトウェアで構成されたプロセッサおよび専用ハードウェア(たとえば、図1におけるプロセッサ104、メモリ106、114、AIプロセッサ124、図2におけるプロセッサ202、プロセッサメモリ204、AIプロセッサ206、メモリ208、図7における復元器710、ヘッダパーサ712、ブロック非正規化器714)の組合せにおいて実施され得る。様々な実施形態において可能にされる代替構成を包含するために、方法1300を実施するハードウェアは、本明細書では「復元処理デバイス」と呼ばれる。
ブロック1302において、復元処理デバイスは、圧縮された重みデータのブロック(たとえば、図4における圧縮された重みデータのブロック400、図7における圧縮された重みデータのブロック700)を取り出し得る。圧縮された重みデータのブロックは、フレームペイロード(たとえば、図4におけるフレームペイロード406a、406b、406c、および図7におけるフレームペイロード702a、702b、702c、702d)に関連付けられたフレームヘッダ(たとえば、図4におけるフレームヘッダ404a、404b、404c、404d、図6におけるフレームヘッダ600、および図7におけるフレームヘッダ706a、706b、706c、706d、706e)を含み得る。フレームヘッダは、関連付けられたフレームペイロードを生成する重み値から除去されたパディングビットの数を表す正規化係数(たとえば、図6における正規化係数604)を含み得る。フレームペイロードは、圧縮された重み値を含む。ブロック1302は、図11を参照しながら説明したような方法1100のブロック1102における動作と同様の方法で実施され得る。
ブロック1304において、復元処理デバイスは、正規化係数についてフレームヘッダをパースし得る。ブロック1304は、図11を参照しながら説明したような方法1100のブロック1106における動作と同様の方法で実施され得る。
ブロック1306において、復元処理デバイスは、復元された重み値を生成するために、関連付けられたフレームヘッダの正規化係数に従って、フレームペイロードの圧縮された重み値にパディングビットを追加し得る。ブロック1306は、図11を参照しながら説明したような方法1100のブロック1110および/またはブロック1120における動作と同様の方法で実施され得る。
(限定はしないが、図1~図13を参照しながら上記で説明した実施形態を含む)様々な実施形態による重みデータ圧縮および/または復元システムは、モバイルコンピューティングデバイスを含む多種多様なコンピューティングシステムにおいて実装されてよく、様々な実施形態とともに使用するのに好適なモバイルコンピューティングデバイスの一例が、図14に示されている。モバイルコンピューティングデバイス1400は、タッチスクリーンコントローラ1404と内部メモリ1406とに結合されたプロセッサ1402を含み得る。プロセッサ1402は、汎用または特定の処理タスクに指定された1つまたは複数のマルチコア集積回路であり得る。内部メモリ1406は、揮発性メモリまたは不揮発性メモリであってよく、また、セキュアメモリおよび/もしくは暗号化メモリまたは非セキュアメモリおよび/もしくは非暗号化メモリ、あるいはそれらの任意の組合せであってもよい。活用されてもよいメモリタイプの例には、限定はしないが、DDR、LPDDR、GDDR、WIDEIO、RAM、SRAM、DRAM、P-RAM、R-RAM、M-RAM、STT-RAM、および埋込みDRAMが含まれる。タッチスクリーンコントローラ1404およびプロセッサ1402はまた、抵抗感知タッチスクリーン、容量性感知タッチスクリーン、赤外線感知タッチスクリーンなど、タッチスクリーンパネル1412に結合され得る。追加として、モバイルコンピューティングデバイス1400のディスプレイは、タッチスクリーン機能を有する必要はない。
モバイルコンピューティングデバイス1400は、互いに結合されたおよび/またはプロセッサ1402に結合された、通信を送受信するための1つまたは複数の無線信号トランシーバ1408(たとえば、Peanut、Bluetooth、ZigBee、Wi-Fi、RF無線)と、アンテナ1410とを有し得る。トランシーバ1408およびアンテナ1410は、様々なワイヤレス送信プロトコルスタックおよびインターフェースを実装するために、上述の回路とともに使用され得る。モバイルコンピューティングデバイス1400は、セルラーネットワークを経由した通信を可能にするとともにプロセッサに結合されているセルラーネットワークワイヤレスモデムチップ1416を含み得る。
モバイルコンピューティングデバイス1400は、プロセッサ1402に結合された周辺デバイス接続インターフェース1418を含み得る。周辺デバイス接続インターフェース1418は、1つのタイプの接続を受け入れるように単独で構成されてよく、またはユニバーサルシリアルバス(USB)、FireWire、Thunderbolt、もしくはPCIeなどの、一般的もしくはプロプライエタリな様々なタイプの物理接続および通信接続を受け入れるように構成されてもよい。周辺デバイス接続インターフェース1418はまた、同様に構成された周辺デバイス接続ポート(図示せず)に結合され得る。
モバイルコンピューティングデバイス1400はまた、オーディオ出力を提供するためのスピーカー1414を含み得る。モバイルコンピューティングデバイス1400はまた、本明細書で説明する構成要素の全部または一部を収容するための、プラスチック、金属、または材料の組合せから構成されたハウジングを含み得る。モバイルコンピューティングデバイス1400は、使い捨てバッテリーまたは充電式バッテリーなどの、プロセッサ1402に結合された電源1422を含み得る。充電式バッテリーはまた、モバイルコンピューティングデバイス1400の外部のソースから充電電流を受けるために、周辺デバイス接続ポートに結合され得る。モバイルコンピューティングデバイス1400はまた、ユーザ入力を受け取るための物理ボタン1424を含み得る。モバイルコンピューティングデバイス1400はまた、モバイルコンピューティングデバイス1400をオンオフするための電源ボタン1426を含み得る。
(限定はしないが、図1~図13を参照しながら上記で説明した実施形態を含む)様々な実施形態による重みデータ圧縮および/または復元システムは、ラップトップコンピュータ1500を含む多種多様なコンピューティングシステムにおいて実装されてよく、その一例が図15に示されている。多くのラップトップコンピュータは、コンピュータのポインティングデバイスとして働くタッチパッドのタッチ面1517を含み、したがって、タッチスクリーンディスプレイを装備した上述のコンピューティングデバイス上で実装されるものと同様のドラッグジェスチャー、スクロールジェスチャー、およびフリックジェスチャーを受け取り得る。ラップトップコンピュータ1500は通常、揮発性メモリ1512と、フラッシュメモリのディスクドライブ1513などの大容量不揮発性メモリとに結合されたプロセッサ1502を含む。加えて、コンピュータ1500は、プロセッサ1502に結合されたワイヤレスデータリンクおよび/またはセルラー電話トランシーバ1516に接続され得る、電磁放射を送受信するための1つまたは複数のアンテナ1508を有し得る。コンピュータ1500はまた、プロセッサ1502に結合されたフロッピーディスクドライブ1514およびコンパクトディスク(CD)ドライブ1515を含み得る。ノートブック構成では、コンピュータハウジングは、すべてがプロセッサ1502に結合されたタッチパッド1517、キーボード1518、およびディスプレイ1519を含む。コンピューティングデバイスの他の構成はよく知られているように、(たとえば、USB入力を介して)プロセッサに結合されたコンピュータマウスまたはトラックボールを含んでよく、それらはまた、様々な実施形態とともに使用されてもよい。
(限定はしないが、図1~図13を参照しながら上記で説明した実施形態を含む)様々な実施形態による重みデータ圧縮および/または復元システムはまた、様々な市販のサーバのうちのいずれかなど、固定コンピューティングシステムにおいて実装され得る。例示的なサーバ1600が、図16に示されている。そのようなサーバ1600は、通常、揮発性メモリ1602と、ディスクドライブ1604などの大容量不揮発性メモリとに結合された、1つまたは複数のマルチコアプロセッサアセンブリ1601を含む。図16に示されているように、マルチコアプロセッサアセンブリ1601は、それらをアセンブリのラックに挿入することによって、サーバ1600に追加され得る。サーバ1600はまた、プロセッサ1601に結合されたフロッピーディスクドライブ、コンパクトディスク(CD)またはデジタル多用途ディスク(DVD)ディスクドライブ1606を含み得る。サーバ1600はまた、他のブロードキャストシステムコンピュータおよびサーバに結合されたローカルエリアネットワーク、インターネット、公衆交換電話網、ならびに/またはセルラーデータネットワーク(たとえば、CDMA、TDMA、GSM、PCS、3G、4G、LTE、5G、または任意の他のタイプのセルラーデータネットワーク)など、ネットワーク1605とのネットワークインターフェース接続を確立するための、マルチコアプロセッサアセンブリ1601に結合されたネットワークアクセスポート1603を含み得る。
実装例について、以下の段落において説明する。以下の実装例のうちのいくつかについて例示的な方法に関して説明するが、さらなる例示的な実装形態は、以下の段落において説明する例示的な方法であって、例示的な方法の動作を実行するように構成された圧縮処理デバイスを含むコンピューティングデバイスによって実施される例示的な方法、以下の段落において説明する例示的な方法であって、例示的な方法の動作を実行するように構成された復元処理デバイスを含むコンピューティングデバイスによって実施される例示的な方法、以下の段落において説明する例示的な方法であって、例示的な方法の機能を実行するための手段を含むコンピューティングデバイスによって実施される例示的な方法、および以下の段落において説明する例示的な方法であって、コンピューティングデバイスのプロセッサに例示的な方法の動作を実行させるように構成されたプロセッサ実行可能命令を記憶した非一時的プロセッサ可読記憶媒体として実装される例示的な方法を含み得る。
例1.コンピューティングデバイスのプロセッサにおいて実行される方法であって、重み値を表す2進数の重みデータセットを受信するステップと、重みデータセットにおける重み値の第1のサブセットの圧縮された第1のフレームを含む、第1のフレームペイロードを生成するステップと、第1のフレームペイロードに関連付けられた第1のフレームヘッダを生成するステップであって、第1のフレームヘッダが、圧縮された第1のフレームのための正規化係数インジケータを含む、ステップと、第1のフレームペイロードを有する、圧縮された重みデータのブロックを生成するステップとを含む方法。
例2.第1のフレームペイロードを生成するステップが、圧縮された第1のフレームを生成するために、重みデータセットにおける重み値の第1のサブセットの第1のフレームを、第1のフレームのための正規化係数に従って重み値の第1のサブセットのうちの各重み値からパディングビットを除去することによって、圧縮するステップを含む、例1の方法。
例3.方法が、第1のフレームの修正された重み値を生成する第1のフレームの重み値の第1のサブセットのうちの各重み値からオフセット値を除去するステップをさらに含み、重み値の第1のサブセットの第1のフレームを圧縮するステップが、圧縮された第1のフレームを生成するために、第1のフレームのための正規化係数に従って、第1のフレーム内の修正された重み値からパディングビットを除去するステップを含む、例2の方法。
例4.方法が、圧縮された重みデータのブロックのためのグローバルヘッダを生成するステップであって、グローバルヘッダがオフセット値を含む、ステップをさらに含み、第1のフレームペイロードに関連付けられた第1のフレームヘッダを生成するステップが、第1のフレームヘッダを生成するステップであって、第1のフレームヘッダが、オフセット値が第1のフレームの重み値の第1のサブセットから除去されるか否かを示すように構成されたオフセットインジケータを含む、ステップを含む、例3の方法。
例5.パディングビットが符号拡張ビットである、例2~例4の方法。
例6.選択的探索基準に基づいて、可逆圧縮のために重み値から除去され得る、重み値におけるパディングビットのパターンに基づいて、重みデータセットにおける重み値の第1のサブセットの第1のフレームを識別するステップと、重み値の第1のサブセットのうちの各重み値から除去されるべきパディングビットの数を表す、第1のフレームのための第1の正規化係数を設定するステップと、選択的探索基準に基づいて、可逆圧縮のために重み値から除去され得る、重み値におけるパディングビットのパターンに基づいて、重みデータセットにおける重み値の第2のサブセットの第2のフレームを識別するステップと、第2のフレームのすべてのビットが0値であるか否かを決定するステップと、第2のフレームのビットのすべてが0値であるとの決定に応答して、第2のフレームの重み値の第2のサブセットのビットのすべてを表すために、第2のフレームのための第2の正規化係数を設定するステップと、第2のフレームのための第2の正規化係数に従って、重み値の第2のサブセットからビットのすべてを除去することによって、重み値の第2のサブセットの第2のフレームを圧縮するステップと、フレームペイロードに関連付けられない第2のフレームヘッダを生成するステップとをさらに含む、例1~例5のうちのいずれかの方法。
例7.選択的探索基準に基づいて、可逆圧縮のために重み値から除去され得る、重み値におけるパディングビットのパターンに基づいて、重みデータセットにおける重み値の第1のサブセットの第1のフレームを識別するステップと、有効ビットの最高数を有する、第1のフレームの重み値の第1のサブセットのうちの重み値を識別するステップと、有効ビットの最高数に基づいて、重み値の第1のサブセットのうちの各重み値から除去されるべきパディングビットの数を表す、第1のフレームのための正規化係数を設定するステップとをさらに含む、例1~例6のうちのいずれかの方法。
例8.方法が、第1のフレームペイロードの第1の圧縮メトリックが圧縮メトリックしきい値を超えるか否かを決定するステップをさらに含み、第1のフレームペイロードを有する、圧縮された重みデータのブロックを生成するステップが、第1のフレームペイロードの第1の圧縮メトリックが圧縮メトリックしきい値を超えるとの決定に応答して、第1のフレームペイロードを有する、圧縮された重みデータのブロックを生成するステップを含む、例1~例7のうちのいずれかの方法。
例9.方法が、圧縮メトリックしきい値を、第1のフレームペイロードの第1の圧縮メトリックに設定するステップと、重みデータセットにおける重み値の第2のサブセットの圧縮された第2のフレームを含む、第2のフレームペイロードを生成するステップと、第2のフレームペイロードの第2の圧縮メトリックが圧縮メトリックしきい値を超えるか否かを決定するステップと、第2の圧縮メトリックが圧縮メトリックしきい値を超えるとの決定に応答して、圧縮メトリックしきい値を、第2のフレームペイロードの第2の圧縮メトリックに設定するステップと、重みデータセットにおける重み値の第3のサブセットの圧縮された第3のフレームを含む、第3のフレームペイロードを生成するステップと、第3のフレームペイロードの第3の圧縮メトリックが圧縮メトリックしきい値を超えるか否かを決定するステップとをさらに含み、第1のフレームペイロードの第1の圧縮メトリックが圧縮メトリックしきい値を超えるとの決定に応答して、第1のフレームペイロードを有する、圧縮された重みデータのブロックを生成するステップが、第3のフレームペイロードの第3の圧縮メトリックが圧縮メトリックしきい値を超えないとの決定に応答して、第2のフレームペイロードを有する、圧縮された重みデータのブロックを生成するステップを含む、例8の方法。
例10.コンピューティングデバイスのプロセッサにおいて実行される方法であって、圧縮された重みデータのブロックを取り出すステップであって、圧縮された重みデータのブロックが、第1のフレームペイロードに関連付けられた第1のフレームヘッダを含み、第1のフレームヘッダが、第1の正規化係数インジケータを含み、第1のフレームペイロードが、圧縮された重み値を含む、ステップと、第1のフレームペイロードの圧縮された重み値の復元された重み値を含む、第1の復元されたフレームを生成するステップとを含む方法。
例11.圧縮された重みデータのブロックが、オフセット値を有するグローバルヘッダを含み、第1のフレームヘッダが、第1のフレームペイロードから生成された各復元された重み値のために、オフセット値が含まれることになるか否かを示すように構成された、オフセットインジケータを含み、方法が、オフセット値について、グローバルヘッダをパースするステップと、オフセットインジケータについて、第1のフレームヘッダをパースするステップと、オフセットインジケータが第1のフレームヘッダにおいて設定されるか否かを決定するステップとをさらに含み、第1の復元されたフレームを生成するステップが、オフセットインジケータが第1のフレームヘッダにおいて設定されるとの決定に応答して、第1のフレームヘッダに関連付けられた第1のフレームペイロードから生成された各復元された重み値に、オフセット値を含めるステップを含む、例10の方法。
例12.圧縮された重みデータのブロックが、第2の正規化係数インジケータを含む、フレームペイロードに関連付けられない第2のフレームヘッダを含み、方法が、第2のフレームヘッダの第2の正規化係数インジケータに従って、すべて0値のビットを有する復元された重み値を含む、第2の復元されたフレームを生成するステップをさらに含む、例10または例11のうちのいずれかの方法。
例13.圧縮された重みデータのブロックが、第2のフレームペイロードに関連付けられた第2のフレームヘッダを含み、第2のフレームヘッダが、第2の正規化係数インジケータを含み、第2のフレームペイロードが、圧縮された重み値を含み、方法が、第2のフレームヘッダの第2の正規化係数インジケータに従って、第2のフレームペイロードの圧縮された重み値にパディングビットを追加することによって、第2のフレームペイロードの圧縮された重み値の復元された重み値を含む、第2の復元されたフレームを生成するステップをさらに含む、例10~例12のうちのいずれかの方法。
例14.第1の復元されたフレームを生成するステップが、復元された重み値を生成するために、第1のフレームヘッダの第1の正規化係数インジケータに従って、第1のフレームペイロードの圧縮された重み値にパディングビットを追加するステップを含み、第1のフレームペイロードの圧縮された重み値のうちの第1の圧縮された重み値のためのパディングビットの値が、第1の圧縮された重み値の最上位ビットから決定される、例10~例13のうちのいずれかの方法。
例15.パディングビットが符号拡張ビットである、例13または例14のうちのいずれかの方法。
例16.第1のフレームヘッダが、第1のフレームペイロードの圧縮された重み値の数を示すように構成されたフレーム長を含む、例10~例15のうちのいずれかの方法。
例17.圧縮された重みデータのブロックが、圧縮された重み値の数を示すように構成されたフレーム長を含む、フレームペイロードに関連付けられない第2のフレームヘッダを含み、方法が、第2のフレームヘッダのフレーム長に対応する、すべて0値のビットを有するいくつかの連続する復元された重み値を含む、第2の復元されたフレームを生成するステップをさらに含む、例10~例16のうちのいずれかの方法。
様々な実施形態の動作を実行するためのプログラマブルプロセッサ上での実行のためのコンピュータプログラムコードまたは「プログラムコード」は、C、C++、C#、Smalltalk、Java、JavaScript、Visual Basic、構造化照会言語(たとえば、Transact-SQL)、Perlなどの高水準プログラミング言語で、または様々な他のプログラミング言語で記述され得る。本出願で使用する、コンピュータ可読記憶媒体上に記憶されるプログラムコードまたはプログラムは、そのフォーマットがプロセッサによって理解可能である(オブジェクトコードなどの)機械言語コードを指す場合がある。
上記の方法の説明およびプロセスフロー図は、単に説明のための例として提供されており、様々な実施形態の動作が提示された順序で実行されなければならないことを要求または暗示するものではない。当業者によって諒解されるように、上述の実施形態における動作の順序は、任意の順序で実行され得る。「その後」、「次いで」、「次に」などの語は、動作の順序を限定するものではなく、これらの語は単に、方法の説明を通じて読者を導くために使用される。さらに、たとえば、冠詞「a」、「an」または「the」を使用する、単数形での請求項要素へのいかなる言及も、その要素を単数形に限定するものとして解釈されるべきではない。
様々な実施形態に関して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズム動作は、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装され得る。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、および動作について、上記では概してそれらの機能に関して説明した。そのような機能がハードウェアとして実装されるかまたはソフトウェアとして実装されるかは、特定の適用例および全体的なシステムに課された設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装してよいが、そのような実装決定は、特許請求の範囲からの逸脱を引き起こすものとして解釈されるべきではない。
本明細書で開示する実施形態に関して説明した様々な例示的な論理、論理ブロック、モジュール、および回路を実装するために使用されるハードウェアは、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲート論理もしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書で説明した機能を実行するように設計されたそれらの任意の組合せを用いて実装または実行され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携した1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実装され得る。代替的に、いくつかの動作または方法は、所与の機能に固有の回路によって実行され得る。
1つまたは複数の実施形態では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せにおいて実装され得る。ソフトウェアにおいて実装される場合、機能は、1つまたは複数の命令またはコードとして、非一時的コンピュータ可読媒体または非一時的プロセッサ可読媒体上に記憶され得る。本明細書で開示する方法またはアルゴリズムの動作は、非一時的コンピュータ可読記憶媒体または非一時的プロセッサ可読記憶媒体上に存在し得るプロセッサ実行可能ソフトウェアモジュールにおいて具現化され得る。非一時的コンピュータ可読記憶媒体または非一時的プロセッサ可読記憶媒体は、コンピュータまたはプロセッサによってアクセスされ得る任意の記憶媒体であり得る。限定ではなく例として、そのような非一時的コンピュータ可読媒体または非一時的プロセッサ可読媒体は、RAM、ROM、EEPROM、FLASHメモリ、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気記憶デバイス、または命令もしくはデータ構造の形態で所望のプログラムコードを記憶するために使用されてよく、かつコンピュータによってアクセスされてよい、任意の他の媒体を含んでよい。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピーディスク(disk)、およびBlu-ray(登録商標)ディスク(disc)を含み、ディスク(disk)は通常、データを磁気的に再生し、ディスク(disc)は、レーザーを用いてデータを光学的に再生する。上記の組合せも、非一時的コンピュータ可読媒体および非一時的プロセッサ可読媒体の範囲内に含まれる。追加として、方法またはアルゴリズムの動作は、コンピュータプログラム製品に組み込まれ得る非一時的プロセッサ可読媒体および/または非一時的コンピュータ可読媒体上のコードおよび/または命令の1つまたは任意の組合せもしくはセットとして存在し得る。
開示する実施形態の前述の説明は、任意の当業者が特許請求の範囲を製作または使用することを可能にするために提供される。これらの実施形態への様々な修正形態が当業者には容易に明らかになり、本明細書において定義される一般原理は、特許請求の範囲から逸脱することなく他の実施形態および実装形態に適用され得る。したがって、本開示は、本明細書で説明した実施形態および実装形態に限定されることが意図されるものではなく、以下の特許請求の範囲ならびに本明細書で開示した原理および新規の特徴と一致する最も広い範囲が与えられるべきである。
100 コンピューティングデバイス
102、200 SoC
104、202、1402、1502 プロセッサ
106、114、208 メモリ
108 通信インターフェース
110 メモリインターフェース
112 通信構成要素
116、1410、1508 アンテナ
120 周辺デバイスインターフェース
122 周辺デバイス
124 人工知能(AI)プロセッサ、AIプロセッサ
204 プロセッサメモリ、メモリ
206 AIプロセッサ
210 低電力エリア
300 重みデータセット、圧縮された重みデータセット
302a、302b、302c、302d、302e、304a、304b、304c、304d フレーム
400 圧縮された重みデータのブロック
402、500、704 グローバルヘッダ
404a、404b、404c、404d、600、706a、706b、706c、706d、706e フレームヘッダ
406a、406b、406c、702a、702b、702c、702d フレームペイロード
502、504 オフセット
506 予約済みビット
508 圧縮された符号値
510 フレームヘッダサイズ
512 圧縮されていない幅
514 圧縮されていないバッファサイズ
602 フレーム長
604 正規化係数
606 オフセットインジケータ
700 圧縮された重みデータのブロック、圧縮された重みデータ
710 復元器
720 復元された重みデータのブロック、復元された重みデータ
712 ヘッダパーサ
714 ブロック非正規化器
1400 モバイルコンピューティングデバイス
1404 タッチスクリーンコントローラ
1406 内部メモリ
1408 無線信号トランシーバ、トランシーバ
1412 タッチスクリーンパネル
1414 スピーカー
1416 セルラーネットワークワイヤレスモデムチップ
1418 周辺デバイス接続インターフェース
1422 電源
1424 物理ボタン
1426 電源ボタン
1500 ラップトップコンピュータ、コンピュータ
1512、1602 揮発性メモリ
1513、1604 ディスクドライブ
1514 フロッピーディスクドライブ
1515 コンパクトディスク(CD)ドライブ
1516 ワイヤレスデータリンクおよび/またはセルラー電話トランシーバ
1517 タッチパッドのタッチ面、タッチパッド
1518 キーボード
1519 ディスプレイ
1600 サーバ
1601 マルチコアプロセッサアセンブリ、プロセッサ
1603 ネットワークアクセスポート
1605 ネットワーク
1606 フロッピーディスクドライブ、コンパクトディスク(CD)またはデジタル多用途ディスク(DVD)ディスクドライブ

Claims (30)

  1. コンピューティングデバイスのプロセッサにおいて実行される方法であって、
    重み値を表す2進数の重みデータセットを受信するステップと、
    前記重みデータセットにおける前記重み値の第1のサブセットの圧縮された第1のフレームを備える、第1のフレームペイロードを生成するステップと、
    前記第1のフレームペイロードに関連付けられた第1のフレームヘッダを生成するステップであって、前記第1のフレームヘッダが、前記圧縮された第1のフレームのための正規化係数インジケータを含む、ステップと、
    前記第1のフレームペイロードを有する、圧縮された重みデータのブロックを生成するステップと
    を含む方法。
  2. 前記第1のフレームペイロードを生成するステップが、前記圧縮された第1のフレームを生成するために、前記重みデータセットにおける前記重み値の前記第1のサブセットの第1のフレームを、前記第1のフレームのための正規化係数に従って前記重み値の前記第1のサブセットのうちの各重み値からパディングビットを除去することによって、圧縮するステップを含む、請求項1に記載の方法。
  3. 前記方法が、前記第1のフレームの修正された重み値を生成する前記第1のフレームの前記重み値の前記第1のサブセットのうちの各重み値からオフセット値を除去するステップをさらに含み、
    前記重み値の前記第1のサブセットの前記第1のフレームを圧縮するステップが、前記圧縮された第1のフレームを生成するために、前記第1のフレームのための前記正規化係数に従って、前記第1のフレーム内の前記修正された重み値から前記パディングビットを除去するステップを含む、請求項2に記載の方法。
  4. 前記方法が、圧縮された重みデータの前記ブロックのためのグローバルヘッダを生成するステップであって、前記グローバルヘッダが前記オフセット値を含む、ステップをさらに含み、
    前記第1のフレームペイロードに関連付けられた前記第1のフレームヘッダを生成するステップが、前記第1のフレームヘッダを生成するステップであって、前記第1のフレームヘッダが、前記オフセット値が前記第1のフレームの前記重み値の前記第1のサブセットから除去されるか否かを示すように構成されたオフセットインジケータを含む、ステップを含む、請求項3に記載の方法。
  5. 前記パディングビットが符号拡張ビットである、請求項2に記載の方法。
  6. 選択的探索基準に基づいて、可逆圧縮のために前記重み値から除去され得る、前記重み値におけるパディングビットのパターンに基づいて、前記重みデータセットにおける前記重み値の前記第1のサブセットの第1のフレームを識別するステップと、
    前記重み値の前記第1のサブセットのうちの各重み値から除去されるべきパディングビットの数を表す、前記第1のフレームのための第1の正規化係数を設定するステップと、
    選択的探索基準に基づいて、可逆圧縮のために前記重み値から除去され得る、前記重み値におけるパディングビットのパターンに基づいて、前記重みデータセットにおける前記重み値の第2のサブセットの第2のフレームを識別するステップと、
    前記第2のフレームのすべてのビットが0値であるか否かを決定するステップと、
    前記第2のフレームの前記ビットのすべてが0値であるとの決定に応答して、
    前記第2のフレームの前記重み値の前記第2のサブセットの前記ビットのすべてを表すために、前記第2のフレームのための第2の正規化係数を設定するステップと、
    前記第2のフレームのための前記第2の正規化係数に従って、前記重み値の前記第2のサブセットから前記ビットのすべてを除去することによって、前記重み値の前記第2のサブセットの前記第2のフレームを圧縮するステップと、
    フレームペイロードに関連付けられない第2のフレームヘッダを生成するステップと
    をさらに含む、請求項1に記載の方法。
  7. 選択的探索基準に基づいて、可逆圧縮のために前記重み値から除去され得る、前記重み値におけるパディングビットのパターンに基づいて、前記重みデータセットにおける前記重み値の前記第1のサブセットの第1のフレームを識別するステップと、
    有効ビットの最高数を有する、前記第1のフレームの前記重み値の前記第1のサブセットのうちの重み値を識別するステップと、
    有効ビットの前記最高数に基づいて、前記重み値の前記第1のサブセットのうちの各重み値から除去されるべきパディングビットの数を表す、前記第1のフレームのための正規化係数を設定するステップと
    をさらに含む、請求項1に記載の方法。
  8. 前記方法が、前記第1のフレームペイロードの第1の圧縮メトリックが圧縮メトリックしきい値を超えるか否かを決定するステップをさらに含み、前記第1のフレームペイロードを有する、圧縮された重みデータの前記ブロックを生成するステップが、前記第1のフレームペイロードの前記第1の圧縮メトリックが前記圧縮メトリックしきい値を超えるとの決定に応答して、前記第1のフレームペイロードを有する、圧縮された重みデータの前記ブロックを生成するステップを含む、請求項1に記載の方法。
  9. 前記方法が、
    前記圧縮メトリックしきい値を、前記第1のフレームペイロードの前記第1の圧縮メトリックに設定するステップと、
    前記重みデータセットにおける前記重み値の第2のサブセットの圧縮された第2のフレームを備える、第2のフレームペイロードを生成するステップと、
    前記第2のフレームペイロードの第2の圧縮メトリックが前記圧縮メトリックしきい値を超えるか否かを決定するステップと、
    前記第2の圧縮メトリックが前記圧縮メトリックしきい値を超えるとの決定に応答して、前記圧縮メトリックしきい値を、前記第2のフレームペイロードの前記第2の圧縮メトリックに設定するステップと、
    前記重みデータセットにおける前記重み値の第3のサブセットの圧縮された第3のフレームを備える、第3のフレームペイロードを生成するステップと、
    前記第3のフレームペイロードの第3の圧縮メトリックが前記圧縮メトリックしきい値を超えるか否かを決定するステップと
    をさらに含み、
    前記第1のフレームペイロードの前記第1の圧縮メトリックが前記圧縮メトリックしきい値を超えるとの決定に応答して、前記第1のフレームペイロードを有する、圧縮された重みデータの前記ブロックを生成するステップが、前記第3のフレームペイロードの前記第3の圧縮メトリックが前記圧縮メトリックしきい値を超えないとの決定に応答して、前記第2のフレームペイロードを有する、圧縮された重みデータの前記ブロックを生成するステップを含む、請求項8に記載の方法。
  10. コンピューティングデバイスであって、
    動作を実行するように構成された圧縮処理デバイスを備え、前記動作が、
    重み値を表す2進数の重みデータセットを受信すること、
    前記重みデータセットにおける前記重み値の第1のサブセットの圧縮された第1のフレームを備える、第1のフレームペイロードを生成すること、
    前記第1のフレームペイロードに関連付けられた第1のフレームヘッダを生成することであって、前記第1のフレームヘッダが、前記圧縮された第1のフレームのための正規化係数インジケータを含む、こと、および
    前記第1のフレームペイロードを有する、圧縮された重みデータのブロックを生成すること
    を含む、コンピューティングデバイス。
  11. 前記第1のフレームペイロードを生成することが、前記圧縮された第1のフレームを生成するために、前記重みデータセットにおける前記重み値の前記第1のサブセットの第1のフレームを、前記第1のフレームのための正規化係数に従って前記重み値の前記第1のサブセットのうちの各重み値からパディングビットを除去することによって、圧縮することを含むように、前記圧縮処理デバイスがさらに構成される、請求項10に記載のコンピューティングデバイス。
  12. 前記圧縮処理デバイスが、前記第1のフレームの修正された重み値を生成する前記第1のフレームの前記重み値の前記第1のサブセットのうちの各重み値からオフセット値を除去することをさらに含む、動作を実行するように構成され、
    前記重み値の前記第1のサブセットの前記第1のフレームを圧縮することが、前記圧縮された第1のフレームを生成するために、前記第1のフレームのための前記正規化係数に従って、前記第1のフレーム内の前記修正された重み値から前記パディングビットを除去することを含むように、前記圧縮処理デバイスが動作を実行するように構成される、請求項11に記載のコンピューティングデバイス。
  13. 前記圧縮処理デバイスが、圧縮された重みデータの前記ブロックのためのグローバルヘッダを生成することであって、前記グローバルヘッダが前記オフセット値を含む、ことをさらに含む、動作を実行するように構成され、
    前記第1のフレームペイロードに関連付けられた前記第1のフレームヘッダを生成することが、前記第1のフレームヘッダを生成することであって、前記第1のフレームヘッダが、前記オフセット値が前記第1のフレームの前記重み値の前記第1のサブセットから除去されるか否かを示すように構成されたオフセットインジケータを含む、ことを含むように、前記圧縮処理デバイスが動作を実行するように構成される、請求項12に記載のコンピューティングデバイス。
  14. 前記パディングビットが符号拡張ビットであるように、前記圧縮処理デバイスが動作を実行するように構成される、請求項11に記載のコンピューティングデバイス。
  15. 前記圧縮処理デバイスが、
    選択的探索基準に基づいて、可逆圧縮のために前記重み値から除去され得る、前記重み値におけるパディングビットのパターンに基づいて、前記重みデータセットにおける前記重み値の前記第1のサブセットの第1のフレームを識別すること、
    前記重み値の前記第1のサブセットのうちの各重み値から除去されるべきパディングビットの数を表す、前記第1のフレームのための第1の正規化係数を設定すること、
    選択的探索基準に基づいて、可逆圧縮のために前記重み値から除去され得る、前記重み値におけるパディングビットのパターンに基づいて、前記重みデータセットにおける前記重み値の第2のサブセットの第2のフレームを識別すること、
    前記第2のフレームのすべてのビットが0値であるか否かを決定すること、ならびに
    前記第2のフレームの前記ビットのすべてが0値であるとの決定に応答して、
    前記第2のフレームの前記重み値の前記第2のサブセットの前記ビットのすべてを表すために、前記第2のフレームのための第2の正規化係数を設定すること、
    前記第2のフレームのための前記第2の正規化係数に従って、前記重み値の前記第2のサブセットから前記ビットのすべてを除去することによって、前記重み値の前記第2のサブセットの前記第2のフレームを圧縮すること、および
    フレームペイロードに関連付けられない第2のフレームヘッダを生成すること
    をさらに含む、動作を実行するように構成される、請求項10に記載のコンピューティングデバイス。
  16. 前記圧縮処理デバイスが、
    選択的探索基準に基づいて、可逆圧縮のために前記重み値から除去され得る、前記重み値におけるパディングビットのパターンに基づいて、前記重みデータセットにおける前記重み値の前記第1のサブセットの第1のフレームを識別すること、
    有効ビットの最高数を有する、前記第1のフレームの前記重み値の前記第1のサブセットのうちの重み値を識別すること、および
    有効ビットの前記最高数に基づいて、前記重み値の前記第1のサブセットのうちの各重み値から除去されるべきパディングビットの数を表す、前記第1のフレームのための正規化係数を設定すること
    をさらに含む、動作を実行するように構成される、請求項10に記載のコンピューティングデバイス。
  17. 前記圧縮処理デバイスが、前記第1のフレームペイロードの第1の圧縮メトリックが圧縮メトリックしきい値を超えるか否かを決定することをさらに含む、動作を実行するように構成され、前記第1のフレームペイロードを有する、圧縮された重みデータの前記ブロックを生成することが、前記第1のフレームペイロードの前記第1の圧縮メトリックが前記圧縮メトリックしきい値を超えるとの決定に応答して、前記第1のフレームペイロードを有する、圧縮された重みデータの前記ブロックを生成することを含むように、前記圧縮処理デバイスが動作を実行するように構成される、請求項10に記載のコンピューティングデバイス。
  18. 前記圧縮処理デバイスが、
    前記圧縮メトリックしきい値を、前記第1のフレームペイロードの前記第1の圧縮メトリックに設定すること、
    前記重みデータセットにおける前記重み値の第2のサブセットの圧縮された第2のフレームを備える、第2のフレームペイロードを生成すること、
    前記第2のフレームペイロードの第2の圧縮メトリックが前記圧縮メトリックしきい値を超えるか否かを決定すること、
    前記第2の圧縮メトリックが前記圧縮メトリックしきい値を超えるとの決定に応答して、前記圧縮メトリックしきい値を、前記第2のフレームペイロードの前記第2の圧縮メトリックに設定すること、
    前記重みデータセットにおける前記重み値の第3のサブセットの圧縮された第3のフレームを備える、第3のフレームペイロードを生成すること、および
    前記第3のフレームペイロードの第3の圧縮メトリックが前記圧縮メトリックしきい値を超えるか否かを決定すること
    をさらに含む、動作を実行するように構成され、
    前記第1のフレームペイロードの前記第1の圧縮メトリックが前記圧縮メトリックしきい値を超えるとの決定に応答して、前記第1のフレームペイロードを有する、圧縮された重みデータの前記ブロックを生成することが、前記第3のフレームペイロードの前記第3の圧縮メトリックが前記圧縮メトリックしきい値を超えないとの決定に応答して、前記第2のフレームペイロードを有する、圧縮された重みデータの前記ブロックを生成することを含むように、前記圧縮処理デバイスが動作を実行するように構成される、請求項17に記載のコンピューティングデバイス。
  19. コンピューティングデバイスのプロセッサにおいて実行される方法であって、
    圧縮された重みデータのブロックを取り出すステップであって、圧縮された重みデータの前記ブロックが、第1のフレームペイロードに関連付けられた第1のフレームヘッダを含み、前記第1のフレームヘッダが、第1の正規化係数インジケータを含み、前記第1のフレームペイロードが、圧縮された重み値を含む、ステップと、
    前記第1のフレームペイロードの前記圧縮された重み値の復元された重み値を備える、第1の復元されたフレームを生成するステップと
    を含む方法。
  20. 圧縮された重みデータの前記ブロックが、オフセット値を有するグローバルヘッダを含み、
    前記第1のフレームヘッダが、前記第1のフレームペイロードから生成された各復元された重み値のために、前記オフセット値が含まれることになるか否かを示すように構成された、オフセットインジケータを含み、
    前記方法が、
    前記オフセット値について、前記グローバルヘッダをパースするステップと、
    前記オフセットインジケータについて、前記第1のフレームヘッダをパースするステップと、
    前記オフセットインジケータが前記第1のフレームヘッダにおいて設定されるか否かを決定するステップと
    をさらに含み、
    前記第1の復元されたフレームを生成するステップが、前記オフセットインジケータが前記第1のフレームヘッダにおいて設定されるとの決定に応答して、前記第1のフレームヘッダに関連付けられた前記第1のフレームペイロードから生成された各復元された重み値に、前記オフセット値を含めるステップを含む、請求項19に記載の方法。
  21. 圧縮された重みデータの前記ブロックが、第2の正規化係数インジケータを含む、フレームペイロードに関連付けられない第2のフレームヘッダを含み、前記方法が、
    前記第2のフレームヘッダの前記第2の正規化係数インジケータに従って、すべて0値のビットを有する復元された重み値を備える、第2の復元されたフレームを生成するステップ
    をさらに含む、請求項19に記載の方法。
  22. 圧縮された重みデータの前記ブロックが、第2のフレームペイロードに関連付けられた第2のフレームヘッダを含み、前記第2のフレームヘッダが、第2の正規化係数インジケータを含み、前記第2のフレームペイロードが、圧縮された重み値を含み、前記方法が、前記第2のフレームヘッダの前記第2の正規化係数インジケータに従って、前記第2のフレームペイロードの前記圧縮された重み値にパディングビットを追加することによって、前記第2のフレームペイロードの前記圧縮された重み値の復元された重み値を備える、第2の復元されたフレームを生成するステップをさらに含む、請求項19に記載の方法。
  23. 前記第1の復元されたフレームを生成するステップが、復元された重み値を生成するために、前記第1のフレームヘッダの前記第1の正規化係数インジケータに従って、前記第1のフレームペイロードの前記圧縮された重み値にパディングビットを追加するステップを含み、前記第1のフレームペイロードの前記圧縮された重み値のうちの第1の圧縮された重み値のための前記パディングビットの値が、前記第1の圧縮された重み値の最上位ビットから決定される、請求項19に記載の方法。
  24. 前記パディングビットが符号拡張ビットである、請求項23に記載の方法。
  25. 前記第1のフレームヘッダが、前記第1のフレームペイロードの前記圧縮された重み値の数を示すように構成されたフレーム長を含む、請求項19に記載の方法。
  26. 圧縮された重みデータの前記ブロックが、前記圧縮された重み値の数を示すように構成されたフレーム長を含む、フレームペイロードに関連付けられない第2のフレームヘッダを含み、
    前記方法が、前記第2のフレームヘッダの前記フレーム長に対応する、すべて0値のビットを有するいくつかの連続する復元された重み値を備える、第2の復元されたフレームを生成するステップをさらに含む、請求項19に記載の方法。
  27. コンピューティングデバイスであって、
    動作を実行するように構成された復元処理デバイスを備え、前記動作が、
    圧縮された重みデータのブロックを取り出すことであって、圧縮された重みデータの前記ブロックが、第1のフレームペイロードに関連付けられた第1のフレームヘッダを含み、前記第1のフレームヘッダが、第1の正規化係数インジケータを含み、前記第1のフレームペイロードが、圧縮された重み値を含む、こと、および
    前記第1のフレームペイロードの前記圧縮された重み値の復元された重み値を備える、第1の復元されたフレームを生成すること
    を含む、コンピューティングデバイス。
  28. 圧縮された重みデータの前記ブロックが、オフセット値を有するグローバルヘッダを含み、
    前記第1のフレームヘッダが、前記第1のフレームペイロードから生成された各復元された重み値のために、前記オフセット値が含まれることになるか否かを示すように構成された、オフセットインジケータを含み、
    前記復元処理デバイスが、
    前記オフセット値について、前記グローバルヘッダをパースすること、
    前記オフセットインジケータについて、前記第1のフレームヘッダをパースすること、および
    前記オフセットインジケータが前記第1のフレームヘッダにおいて設定されるか否かを決定すること
    をさらに含む、動作を実行するように構成され、
    前記第1の復元されたフレームを生成することが、前記オフセットインジケータが前記第1のフレームヘッダにおいて設定されるとの決定に応答して、前記第1のフレームヘッダに関連付けられた前記第1のフレームペイロードから生成された各復元された重み値に、前記オフセット値を含めることを含むように、前記復元処理デバイスが動作を実行するように構成される、請求項27に記載のコンピューティングデバイス。
  29. 圧縮された重みデータの前記ブロックが、第2の正規化係数インジケータを含む、フレームペイロードに関連付けられない第2のフレームヘッダを含み、前記復元処理デバイスが、前記第2のフレームヘッダの前記第2の正規化係数インジケータに従って、すべて0値のビットを有する復元された重み値を備える、第2の復元されたフレームを生成することをさらに含む、動作を実行するように構成される、請求項27に記載のコンピューティングデバイス。
  30. 前記第1の復元されたフレームを生成することが、復元された重み値を生成するために、前記第1のフレームヘッダの前記第1の正規化係数インジケータに従って、前記第1のフレームペイロードの前記圧縮された重み値にパディングビットを追加することを含むように、前記復元処理デバイスが動作を実行するように構成され、前記パディングビットが符号拡張ビットである、請求項27に記載のコンピューティングデバイス。
JP2023558595A 2021-04-01 2022-03-30 ディープニューラルネットワーク重みのための圧縮技法 Pending JP2024514448A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/220,620 2021-04-01
US17/220,620 US11757469B2 (en) 2021-04-01 2021-04-01 Compression technique for deep neural network weights
PCT/US2022/022497 WO2022212467A1 (en) 2021-04-01 2022-03-30 Compression technique for deep neural network weights

Publications (1)

Publication Number Publication Date
JP2024514448A true JP2024514448A (ja) 2024-04-02

Family

ID=81308565

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2023558595A Pending JP2024514448A (ja) 2021-04-01 2022-03-30 ディープニューラルネットワーク重みのための圧縮技法

Country Status (7)

Country Link
US (1) US11757469B2 (ja)
EP (1) EP4315175A1 (ja)
JP (1) JP2024514448A (ja)
KR (1) KR20230162778A (ja)
CN (1) CN117099109A (ja)
BR (1) BR112023019150A2 (ja)
WO (1) WO2022212467A1 (ja)

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101498063B1 (ko) * 2008-03-04 2015-03-03 엘지전자 주식회사 디지털 방송 시스템 및 데이터 처리 방법
US8489961B2 (en) * 2009-10-19 2013-07-16 Lg Electronics Inc. Transmitting system and method of processing digital broadcast signal in transmitting system, receiving system and method of receiving digital broadcast signal in receiving system
WO2012003602A1 (zh) * 2010-07-09 2012-01-12 西安交通大学 一种电子喉语音重建方法及其系统
US10608664B2 (en) 2018-05-09 2020-03-31 Samsung Electronics Co., Ltd. Electronic apparatus for compression and decompression of data and compression method thereof
US11625245B2 (en) * 2018-09-28 2023-04-11 Intel Corporation Compute-in-memory systems and methods
CN111178490B (zh) * 2019-12-31 2021-08-24 北京百度网讯科技有限公司 数据输出方法、获取方法、装置和电子设备
US11925128B2 (en) * 2020-08-26 2024-03-05 Robert Bosch Gmbh Differential ionic electronic transistors
US20220114454A1 (en) * 2020-10-08 2022-04-14 Samsung Electronics Co., Ltd. Electronic apparatus for decompressing a compressed artificial intelligence model and control method therefor

Also Published As

Publication number Publication date
BR112023019150A2 (pt) 2023-10-17
EP4315175A1 (en) 2024-02-07
CN117099109A (zh) 2023-11-21
US20220321143A1 (en) 2022-10-06
US11757469B2 (en) 2023-09-12
KR20230162778A (ko) 2023-11-28
WO2022212467A1 (en) 2022-10-06

Similar Documents

Publication Publication Date Title
KR102596644B1 (ko) 메모리 대역폭 활용을 감소시키기 위해 활성화 데이터의 압축 및 압축 해제를 사용하는 신경망 프로세서
JP5774742B2 (ja) データ重複除去方法及び装置
US9048862B2 (en) Systems and methods for selecting data compression for storage data in a storage system
US11025271B2 (en) Compression of high dynamic ratio fields for machine learning
US20140244603A1 (en) Multi-Level Memory Compression
US10044370B1 (en) Lossless binary compression in a memory constrained environment
CN106687937B (zh) 用于压缩算法的高速缓冲存储体扩展
JP7272937B2 (ja) ディープソリッドステート装置及びニューラルネットワークベースの永続的データストレージ
US20150227540A1 (en) System and method for content-aware data compression
JP7108784B2 (ja) データ記憶方法、データ取得方法、及び機器
TWI634421B (zh) 用以存取資料之電子裝置及其資料存取方法
US8515882B2 (en) Efficient storage of individuals for optimization simulation
KR20150035876A (ko) 데이터 중복 제거 방법 및 장치
US10103747B1 (en) Lossless binary compression in a memory constrained environment
JP2024514448A (ja) ディープニューラルネットワーク重みのための圧縮技法
JP2022516502A (ja) コンピュータメモリにおける重複および値冗長性を排除するためのシステム、方法、および装置
CN111723922A (zh) 神经网络加速装置及其控制方法
KR20120062500A (ko) 압축 데이터를 판별하는 방법 및 장치 그리고 그것을 포함한 데이터 저장 장치
US20200242467A1 (en) Calculation method and calculation device for sparse neural network, electronic device, computer readable storage medium, and computer program product
CN108234552B (zh) 一种数据存储方法及装置
JP2016170750A (ja) データ管理プログラム、情報処理装置およびデータ管理方法
CN116860564B (zh) 一种云服务器数据管理方法及其数据管理装置
US20190294375A1 (en) Latent multiplicity detection
JP2023503034A (ja) パターンベースのキャッシュブロック圧縮
CN112988685A (zh) 数据压缩和解压缩方法及其装置