ホームへ戻る

GitHub Repo

TransformersコミュニティがSAM3の位置エンコーディング精度問題を再現、bf16での読み込みでセグメンテーション結果が変わる可能性

10月23日のTransformersに関する技術報告によると、SAM3をbf16で読み込むと一部の位置座標の精度が失われ、スコア閾値に近い物体が結果から漏れる可能性がある。別の参加者は小型CPUモデルで座標誤差を再現したが、正式な修正版や全体的な精度への影響はまだ確認されていない。

Marcus Qwertyus · Public domain · Image source
zh-Hant

Hugging Face Transformersでは10月23日、SAM3の精度回帰に関する報告が寄せられた。モデルをdtype=torch.bfloat16で読み込むと、グローバルアテンション層の回転位置エンコーディング(RoPE)で座標に丸め誤差が生じる可能性があるという。報告者は5.20.2と5.17.0で問題を再現し、5.13.0から5.16.1では同じ現象が見られなかったとしている。これはコミュニティによるテスト結果であり、影響を受けるバージョンの全リストを示すものではない。技術報告

問題はposition_idsの生成方法に集中している。グローバルアテンションではスケーリングされた浮動小数点の座標を使うため、テンソルの生成時にbf16のデフォルト型を引き継ぐと、RoPEの計算に渡す前に数値精度が失われる。別の参加者は、ランダム初期化した小型CPUモデルでグローバル層の座標誤差を再現した。その分析によると、ウィンドウ層では整数の位置を使うため、同様の数値のずれは生じない。再現と分析

この差は最終出力に影響する可能性がある。元の報告では、一部の画像で物体スコアがフィルタリングの閾値をまたぐケースが観察され、暫定的な回避策としてfp32での実行、またはfp32の位置座標の再生成が提案された。個別事例から全体的な精度低下を定量化する十分な根拠はなく、ほかの動画モデルにそのまま一般化するのも適切ではない。報告された結果

SAM3は、テキストや画像の例を使って概念に合致する物体を検出し、インスタンスセグメンテーションとセマンティックセグメンテーションの結果を返す。公式サンプルでは後処理の段階でスコアとマスクの閾値を設定している。したがって、技術的に重要なのは、連続値の小さなずれが閾値によるフィルタリングを経て、検出される物体数の差という離散的な変化になり得る点だ。これはドキュメントの処理手順と報告内容に基づく技術的な見立てである。公式ドキュメント

SAM3を使ってアノテーションや画像分析のパイプラインを構築しているチームにとって、今回の件はアップグレード検証でマスクの見た目だけでなく、元のスコア、閾値付近のサンプル、物体数も確認する必要性を示している。テストではプロンプト、解像度、後処理の設定を固定し、バージョンと数値型をそれぞれ比較するとよい。今後は、位置座標が明示的にfp32で保持されるか、bf16読み込みを対象とする回帰テストが追加されるか、修正がいつ正式版に反映されるかが注目点となる。確認時点では、issueはオープンのままで、修正PRは記載されていない。

出典

  1. SAM3 position_ids bf16 precision regression — Issue #49938
  2. SAM3 — Transformers documentation