Python 在Pyrotch Lightning中运行多个模型的问题

Python 在Pyrotch Lightning中运行多个模型的问题,python,pytorch,tensorboard,pytorch-lightning,Python,Pytorch,Tensorboard,Pytorch Lightning,我正在开发一个系统,需要使用Lightning训练几十个单独的模型(>50),每个模型都有自己的张力板图和日志。我当前的实现每个模型有一个Trainer对象,当我超过90个Trainer对象时,我似乎遇到了这个错误。有趣的是,该错误仅在运行.test()方法时出现,而不是在.fit()期间出现: 关于培训: for i in range(args["num_users"]): trainer_list_0[i].fit(model_list_0[i], train_d

我正在开发一个系统,需要使用Lightning训练几十个单独的模型(>50),每个模型都有自己的张力板图和日志。我当前的实现每个模型有一个Trainer对象,当我超过90个Trainer对象时,我似乎遇到了这个错误。有趣的是,该错误仅在运行.test()方法时出现,而不是在.fit()期间出现:

关于培训:

for i in range(args["num_users"]):
    trainer_list_0[i].fit(model_list_0[i], train_dataloader=dataloader_list[i],
                                      val_dataloaders=val_loader)
    trainer_list_1[i].fit(model_list_1[i], train_dataloader=dataloader_list[i],
                                        val_dataloaders=val_loader)
    trainer_list_2[i].fit(model_list_2[i], train_dataloader=dataloader_list[i],
                                        val_dataloaders=val_loader)
和测试:

for i in range(args["num_users"]):
    trainer_list_0[i].test(test_dataloaders=te_loader)
    trainer_list_1[i].test(test_dataloaders=te_loader)
    trainer_list_2[i].test(test_dataloaders=te_loader)

谢谢

据我所知,每个
培训师只需要一个型号。您可以使用预定义的实验名称和版本将
TensorBoardLogger
对象显式传递给
Trainer
,以保持绘图分离(请参阅)

您遇到的问题与ddp模块有关。其源代码包含以下行:

我不确定您为什么要面对90+
Trainer
s的问题,但您可以尝试放弃这一行:

RANDOM_PORTS = RANDOM_PORTS[:-1]

据我所知,每个
培训师只需要一个型号。您可以使用预定义的实验名称和版本将
TensorBoardLogger
对象显式传递给
Trainer
,以保持绘图分离(请参阅)

您遇到的问题与ddp模块有关。其源代码包含以下行:

我不确定您为什么要面对90+
Trainer
s的问题,但您可以尝试放弃这一行:

RANDOM_PORTS = RANDOM_PORTS[:-1]

感谢您的提示,删除
RANDOM\u port=RANDOM\u port[:-1]
修复了此问题。此外,我正在跟踪直接解决这个问题的pull请求。应该在以后的更新中修复。感谢您的提示,删除
RANDOM\u port=RANDOM\u port[:-1]
修复了此问题。此外,我正在跟踪直接解决这个问题的pull请求。应在将来的更新中修复。
from pytorch_lightning import Trainer
from pytorch_lightning.loggers import TensorBoardLogger
logger = TensorBoardLogger("tb_logs", name="my_model", version="version_XX")
trainer = Trainer(logger=logger)
RANDOM_PORTS = RNG1.randint(10000, 19999, 1000)
    def set_random_port(self, force=False):
        ...
        default_port = RANDOM_PORTS[-1]
        RANDOM_PORTS = RANDOM_PORTS[:-1]

        if not force:
            default_port = os.environ.get('MASTER_PORT', default_port)
RANDOM_PORTS = RANDOM_PORTS[:-1]