FlashAttention の効果は、入力の長さと実行環境で変わります。導入の前に、いま何に時間がかかっているかを数字で押さえ、分割の設計を選べる状態までを5つの手順に分けます。
対象の処理に渡している入力の系列長を、実際のデータから数えます。平均だけでなく、最長の1件も記録します。平均だけを見ると、長い1件で待ち時間が跳ねる理由を見落とします。
1件の処理にかかる時間を、入力の準備、モデルの呼び出し、後処理に分けて測ります。モデルの呼び出しが全体のどこを占めるかで、対策の優先順位が変わります。測る回数は5回以上とし、ばらつきの幅も残します。
入力の長さを2倍にしたときに、処理が通るかどうかを試します。通らない場合は、メモリが先に尽きている状態です。エラーの文言をそのまま残しておくと、原因の切り分けが後で楽になります。
入力が長い場合、複数回に分けて渡す方法と、1回で渡す方法があります。分けると文脈が途切れ、一括にするとメモリと待ち時間が増えます。どちらを取るかは、途切れて困る情報があるかで決めます。
使っているライブラリの版と GPU の世代の組み合わせで、IO を意識した実装が有効になるかを確認します。確認は公式の資料の記載で行い、推測で有効と決めません。有効でない場合の代替の設定も、あわせて書き留めます。