簡體   English   中英

PyTorch model 新機器第一次加載太多

[英]PyTorch model take too much to load the first time in a new machine

我在 EC2 上有一個手動擴展設置,我在其中創建基於 AMI 的實例,該 AMI 已經在啟動時運行我的代碼(使用 Systemd)。 我面臨一個基本問題:在主實例上(我用來創建 AMI 的那個,Python 代碼在映像啟動后需要 8 秒才能准備好,這包括導入庫、加載 state 模型等。 ..). 現在,在我用 AMI 創建的圖像上,代碼第一次啟動需要 5 分鍾以上,將 state 字典從磁盤加載到 GPU memory 需要特別長的時間,第一次后代碼與要加載的主實例。

AMI 保留與主實例相同的pycache文件夾,因此它不應該花費那么多時間,因為我認為 AMI 應該包括所有內容,不是嗎? 所以,我的問題是:是否有任何其他緩存可以使 CUDA / Python 更快,我沒有考慮到? 我只保留pycache / 文件夾,但我不知道我是否可以做些什么來確保第一次啟動所有內容不會花費那么多時間。 這是我的主要結構:

# Import libraries
import torch
import numpy as np

# Import personal models (takes 1 minute)
from model1 import model1
from model2 import model2

# Load first model
model1_object = model1()
model2_object = model2()

# Load state dicts (takes 3+ minutes, the first time in new instances, seconds other times)
# Note: the models are a bit heavy
model1_object.load_state_dict(torch.load("model1.pth"))
model2_object.load_state_dict(torch.load("model2.pth"))
 

注意:我正在為 AWS 中的主實例和較新實例使用 g4dn.xlarge 實例。

這是由於恢復 AWS EBS 快照時所需的高延遲所致。 起初,當您恢復快照時,延遲非常高,這解釋了為什么在我的示例中新創建實例時 model 需要如此多的時間來加載。

查看本文初始化部分: https://cloudonaut.io/ebs-snapshot-pitfalls/

我發現在首次創建實例時快速使用實例的唯一解決方案是啟用快速快照還原,每月費用約為 500 美元: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide /ebs-fast-snapshot-restore.html

如果你有空閑時間,你可以等到達到最大性能,或者嘗試預先預熱音量https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-initialize.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM