Mojo Academy · レッスン

数値的な正しさの検証

基準実装と結果を比較します

レッスン 4/413 ステップ

「数値的な正しさの検証」はCoddyKit上の無料Mojo Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはMojo Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Mojo Academyコースには全4レッスンが含まれています。

速くても間違っていれば無意味

最適化されたカーネルも、正しい答えを計算して初めて意味があります。高速化を信頼する前に、必ず検証してください。

リファレンスを保持する

単純で明らかに正しい実装を保存しておきます。それがリファレンス、つまり高速なカーネルが必ず一致すべき正解の基準になります。

浮動小数点数は正確ではない

浮動小数点演算では丸めが行われるため、合計の順序を変えると最後の桁が変わることがあります。最適化後の結果が少し異なっていても、誤りとは限りません。

完全一致を避ける

丸め誤差があるため、浮動小数点数を==で比較してはいけません。ごく小さな差によって、正しいコードが壊れているように見えてしまいます。

if fast == ref:  # fragile, avoid

許容誤差で比較する

代わりに、小さな許容誤差の範囲内で値が近いかを確認します。差がイプシロン未満なら、等しいものとして扱います。

if abs(fast - ref) <= 1e-5:
    pass  # close enough

絶対誤差と相対誤差

絶対誤差はそのままの差で、相対誤差は大きさに応じて差を調整したものです。大きな数値では、公平に判定するため相対誤差を確認する必要があります。

rel = abs(fast - ref) / abs(ref)

すべての要素を確認する

結果全体をループし、各セルをテストします。許容誤差を超える不一致が1つでもあれば、最適化によって何かが壊れています。

for i in range(n):
    if abs(fast[i] - ref[i]) > tol:
        print("mismatch at", i)

最大の差を追跡する

見つかった最大の差を記録します。すべての要素における最大誤差は、カーネルの状態を示す明確な単一の指標になります。

エッジケースをテストする

空の入力、要素が1つだけの場合、SIMD幅で均等に割り切れない奇数サイズを試します。エッジケースによってテールのバグをすぐに見つけられます。

既知の答えを使う

単位行列を掛けたり、1で構成されたベクトルを合計したりします。予測可能な入力なら、手計算で答えを検証できます。

チェックを自動化する

不一致があれば明確に失敗する小さなテストで検証をラップします。変更のたびに実行し、リグレッションを見逃さないようにします。

クイックチェック

SIMD matmulの結果がリファレンスと0.0000007だけ異なります。どう結論づけるべきですか?

まとめ

信頼できるリファレンスと高速なコードを検証し、==ではなく許容誤差で比較します。エッジケースと既知の答えを確認し、検証を自動化します。✅

無料で開始

AI チューターと学ぶ Mojo — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
30
レッスン
120

よくある質問

「数値的な正しさの検証」レッスンは無料ですか?

はい。「数値的な正しさの検証」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Mojo Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Mojo Academyコースには全4レッスンが含まれています。

「数値的な正しさの検証」で何を学びますか?

基準実装と結果を比較します ブラウザで直接実行するハンズオンコードでMojo Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Mojo Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのMojo Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「数値的な正しさの検証」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このMojo Academyレッスンでコードを書いて実行できますか?

はい。すべてのMojo Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Mojoでテンソルをモデル化する
  2. Matmulを段階的に構築する
  3. 内積の最適化
  4. 数値的な正しさの検証
← Mojo Academyに戻る