我们有一个数据库笔记本的问题。我们的笔记本细胞中似乎有一个挂着,而驱动程序日志显示笔记本细胞已经被执行。有人知道为什么我们的笔记本电脑一直挂着,而且不完整吗?详见下文。
Situation
Observations
码
from pytorch_lightning import Trainer
from pytorch_lightning.callbacks.early_stopping import EarlyStopping
trainer = Trainer(gpus=-1, num_sanity_val_steps=0, logger = logger, callbacks=[EarlyStopping(monitor="test_loss", patience = 2, mode = "min", verbose=True)])
with mlflow.start_run(experiment_id = experiment_id) as run:
trainer.fit(model, train_loader, val_loader)
mlflow.log_param("param1", param1)
mlflow.log_param("param2", param2)
mlflow.pytorch.log_model(model._image_model, artifact_path="model", registered_model_name="image_model")
mlflow.pytorch.log_state_dict(model._image_model.state_dict(), "model")
print("Done with training")包
mlflow-skinny==1.25.1
torch==1.10.2+cu111
torchvision==0.11.3+cu111我尝试过的解决方案不起作用
# Cleaning up to avoid any open processes...
del trainer
torch.cuda.empty_cache()
# force garbage collection
gc.collect()parameters = json.dumps({"Status": "SUCCESS", "Message": "DONE"})
dbutils.notebook.exit(parameters)发布于 2022-06-02 08:26:54
我解决了这个问题。要解决这个问题,请调整torch.utils.data.DataLoader的参数
pin_memorynum_workers设置为总vCPU的30% (例如Standard_NC6s_v3为1或2)例如:
train_loader = DataLoader(
train_dataset,
batch_size=32,
num_workers=1,
pin_memory=False,
shuffle=True,
)这个问题似乎与PyTorch有关,是由死锁问题造成的。见这里的细节。
发布于 2022-09-27 12:44:51
https://stackoverflow.com/a/72473053/10555941
在上面的答案中还有更多的补充。当您设置pin_memory True并使num_workers等于节点上的vCpus总数时,它将使用IPC进行线程通信。这些IPC使用共享内存,并窒息VM的共享内存。
这就导致了过程的悬吊。DataLoader num_workers只是为了帮助使用子线程加载数据。尽管如此,它不一定是一个极值,以加快数据加载。如果它小于vCPUS的30%,就足以加载数据。
https://stackoverflow.com/questions/72183733
复制相似问题