使用Weights & Biases超参数搜索时遇WinError 10053错误如何解决?
问题描述
在本地笔记本运行Weights & Biases超参数搜索官方代码时,出现错误:ConnectionAbortedError: [WinError 10053] An established connection was aborted by the software in your host machine,但相同代码在Colab中运行正常。
代码如下:
import wandb import numpy as np import random # Define sweep config sweep_configuration = { 'method': 'random', 'name': 'sweep', 'metric': {'goal': 'maximize', 'name': 'val_acc'}, 'parameters': { 'batch_size': {'values': [16, 32, 64]}, 'epochs': {'values': [5, 10, 15]}, 'lr': {'max': 0.1, 'min': 0.0001} } } # Initialize sweep by passing in config. # (Optional) Provide a name of the project. sweep_id = wandb.sweep( sweep=sweep_configuration, project='my-first-sweep' ) # Define training function that takes in hyperparameter # values from `wandb.config` and uses them to train a # model and return metric def train_one_epoch(epoch, lr, bs): acc = 0.25 + ((epoch/30) + (random.random()/10)) loss = 0.2 + (1 - ((epoch-1)/10 + random.random()/5)) return acc, loss def evaluate_one_epoch(epoch): acc = 0.1 + ((epoch/20) + (random.random()/10)) loss = 0.25 + (1 - ((epoch-1)/10 + random.random()/6)) return acc, loss def main(): run = wandb.init() # note that we define values from `wandb.config` # instead of defining hard values lr = wandb.config.lr bs = wandb.config.batch_size epochs = wandb.config.epochs for epoch in np.arange(1, epochs): train_acc, train_loss = train_one_epoch(epoch, lr, bs) val_acc, val_loss = evaluate_one_epoch(epoch) wandb.log({ 'epoch': epoch, 'train_acc': train_acc, 'train_loss': train_loss, 'val_acc': val_acc, 'val_loss': val_loss }) # Start sweep job. wandb.agent(sweep_id, function=main, count=4)
解决方法
检查网络与防火墙设置
本地机器的防火墙、杀毒软件可能拦截了wandb的网络连接。临时关闭防火墙或杀毒软件后重新运行代码测试;或者给wandb添加防火墙白名单权限,允许其建立对外连接。更新wandb版本
本地wandb版本可能存在兼容性问题,执行命令更新到最新版:pip install --upgrade wandb启用离线模式后同步(可选)
如果网络环境受限,可先以离线模式运行,之后再同步数据:- 在
wandb.init()中添加mode="offline"参数:run = wandb.init(mode="offline") - 代码运行完成后,执行命令同步数据到wandb平台:
wandb sync
- 在
调整wandb连接超时设置
在代码开头添加以下配置,延长连接超时时间:import wandb wandb.setup(timeout=30) # 设置30秒超时,可根据实际情况调整重置wandb登录状态
本地登录状态异常可能导致连接问题,执行以下命令重新登录:wandb login --relogin按照提示输入你的wandb API密钥即可。
内容的提问来源于stack exchange,提问作者Aska
相关产品推荐
相关产品推荐

