- 公開日
Float32、Float16、またはBFloat16!
- 著者

- 名前
- AbnAsia.org
- @steven_n_t
ディープラーニングにとって、それが何を意味するのか。

これらは単に精度のレベルの違いです。Float32は32ビット(1または0)で浮動小数点数を表現する方法であり、Float16およびBFloat16は同じ数値を16ビットで表現する方法です。Float32では、最初のビットを符号を表すために割り当て、次の8ビットを指数を表すために割り当て、次の23ビットを小数点(マンティッサとも呼ばれる)を表すために割り当てます。ビット表現から10進表現に変換するには、次の式を使用します。
Float32 = (-1)^符号 * 2^(指数 - 127) * (1 + マンティッサ)
これは、-3.4e^38から3.4e^38の範囲になります。
Float16は、1ビットを符号に、5ビットを指数に、10ビットをマンティッサに使用し、次の式を使用します。
Float16 = (-1)^符号 * 2^(指数 - 15) * (1 + マンティッサ)
範囲は-6.55e^4から6.55e^4(範囲がはるかに小さくなります)です。Float32からFloat16に変換するには、指数とマンティッサに割り当てられた5ビットと10ビットに収まらない数字を削除するだけです。マンティッサの場合、丸め誤差が発生しますが、Float32の数値が6.55e^4を超える場合、浮動小数点オーバーフロー エラーが発生します。したがって、Float32からFloat16への変換ではエラーが発生する可能性があります。
Brain Float 16(BFloat16)は、16ビットで浮動小数点数を表現する別の方法です。小数点の精度は低くしますが、Float32と同じ範囲を提供します。指数に8ビット、マンティッサに7ビットを使用し、同じ変換式を使用します。
BFloat16 = (-1)^符号 * 2^(指数 - 127) * (1 + マンティッサ)
Float32と同じ範囲[-3.4e^38と3.4e^38]を提供します。したがって、Float32からBFloat16への変換は、マンティッサを単純に丸めると簡単です。
これは、ディープラーニングにとって非常に重要です。バックプロパゲーション アルゴリズムの逆伝播で、モデル パラメータは勾配降下最適化手法(例:Adam)によって更新され、計算はFloat32の精度で実行されます。これは、丸め誤差を少なくするためです。モデル パラメータと勾配は通常、メモリの圧力を減らすためにFloat16でメモリに保存されるため、Float16とFloat32の間で変換する必要があります。BFloat16は、浮動小数点オーバーフロー エラーを防ぎながら、バックプロパゲーション アルゴリズムの前向きと後向きのパスに十分な精度を維持できるため、良い選択です。
日本語版は Ai 支援を使用しているため、小さな間違いが存在する可能性があることをご了承ください。
著者
Ai Base Network (ABN), ABN ASIAは、アカデミアに深く関わり、アメリカ、オランダ、ハンガリー、日本、韓国、シンガポール、ベトナムでの仕事経験を持つ人々によって設立されました。ABN ASIAは、学問とテクノロジーが機会と出会う場所です。最先端のソリューションと優れたソフトウェア開発サービスにより、ビジネスがレベルアップし、グローバルシーンに挑戦できるよう支援しています。 私ちの取り組み: より速く。 より良い。 より信頼性が高くなります。 ほとんどの場合、価格も安くなります。
いつでも、ITサービス、デジタルコンサルティング、既製のソフトウェアソリューション、または提案依頼書(RFP)をお探しの際は、お気軽にお問い合わせください。お問い合わせ先は[email protected]です。お客様のテクノロジーに関するニーズにお応えします。

© ABN ASIA