[英]Reproducibility and performance in PyTorch
文件說明:
確定性模式可能會對性能產生影響,具體取決於您的型號。
我的問題是,這里的表現是什么意思。 處理速度或模型質量(即最小損失)? 換句話說,當設置手動種子並使模型以確定的方式執行時,是否會導致更長的訓練時間,直到發現最小的損失,或者最小的損失是否比模型不確定時更差?
為了完整起見,我通過設置所有這些屬性手動使模型具有確定性:
def set_seed(seed):
torch.manual_seed(seed)
torch.cuda.manual_seed_all(seed)
torch.backends.cudnn.deterministic = True
torch.backends.cudnn.benchmark = False
np.random.seed(seed)
random.seed(seed)
os.environ['PYTHONHASHSEED'] = str(seed)
性能指運行時間; CuDNN有幾種實現方式,當cudnn.deterministic
設置為true時,你告訴CuDNN你只需要確定性實現(或我們認為它們是什么)。 簡而言之,當您執行此操作時,在饋送相同輸入時,您應該在同一系統上的CPU或GPU上獲得相同的結果 。 為什么會影響性能? CuDNN使用啟發式方法來選擇實現。 所以,它實際上取決於你的模型CuDNN將如何表現; 選擇它是確定性的可能會影響運行時,因為它們可能已經,更快的方式是在同一個運行點選擇它們。
關於你的片段,我做了精確的播種,它在100多個DL實驗中一直運行良好(在再現性方面)。
在此上下文中,“性能”指的是運行時
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.