0Pricing
MLOps Academy · レッスン

乱数のシードで実行結果を再現する

NumPy、PyTorch、Python全体で乱数シードを制御します。

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

実行結果が異なる理由

MLでは、シャッフル、分割、重みの初期化に乱数を使います。2回実行すると、異なるモデルが得られます。シード固定により、乱数を再現可能にできます。🎲

シードとは何か

シードは、乱数生成器の開始番号です。同じシードを入力すれば、同じ乱数列が出力されます。

純粋なPythonのシードを設定する

Python独自のrandomモジュールでは、通常のPythonコードで行うシャッフルを再現可能にするためにrandom.seedが必要です。

import random
random.seed(42)

NumPyのシードを設定する

データ処理の多くはNumPyを経由するため、np.random.seedを設定して配列のシャッフルとサンプリングを固定します。

import numpy as np
np.random.seed(42)

PyTorchのシードを設定する

ディープラーニングの初期化とドロップアウトはPyTorchの生成器から乱数を取得するため、モデルを構築する前にtorch.manual_seedを呼び出してください。

import torch
torch.manual_seed(42)

GPUを忘れない

CUDAには独自の乱数状態があるため、別途シードを設定します。cuda.manual_seed_allを使えば、すべてのGPUデバイスを一度に対象にできます。

torch.cuda.manual_seed_all(42)

scikit-learnの分割にシードを設定する

train_test_splitのような関数にrandom_stateを渡すと、毎回同じ行が同じ分割に入ります。

train_test_split(X, y, random_state=42)

すべてをまとめるヘルパー

すべてのシード設定呼び出しを1つのset_seed関数にまとめます。起動時に1回呼び出せば、設定漏れを防げます。

def set_seed(s):
    random.seed(s)
    np.random.seed(s)
    torch.manual_seed(s)

決定論的カーネルを強制する

シードを設定しても、一部のGPUカーネルはランダムなままです。PyTorchでdeterministicモードを有効にし、計算結果を再現可能にします。

torch.use_deterministic_algorithms(True)

シードを記録する

使用したシード値は、必ずrunと一緒に記録してください。再現できない結果は、信頼できる結果とはいえません。

再現可能でも、ハードウェアが同じとは限らない

シードを設定しても、異なるハードウェアやライブラリのバージョンによって結果が変わることがあります。完全な再現性のためには、それらも固定してください。

理解度チェック

PythonとNumPyにシードを設定しましたが、PyTorchのモデルはまだ変化します。何を忘れていますか。

まとめ

Python、NumPy、PyTorch、CUDA、sklearnなど、乱数を生むすべての要素にシードを設定し、再現可能なrunのためにシードを記録する方法を学びました。🔁

よくある質問

「乱数のシードで実行結果を再現する」レッスンは無料ですか?

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

「乱数のシードで実行結果を再現する」で何を学びますか?

NumPy、PyTorch、Python全体で乱数シードを制御します。 ブラウザで直接実行するハンズオンコードでMLOps Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「乱数のシードで実行結果を再現する」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. requirements.txtで依存関係を固定する
  2. 仮想環境でプロジェクトを分離する
  3. 乱数のシードで実行結果を再現する
  4. 実行設定をすべて記録する
← MLOps Academyに戻る