标签: wandb

权重和偏差错误:wandb 后端进程已关闭

运行下面链接的 colab,出现以下错误:

“wandb 后端进程已关闭”

我没有发现 Colab 使用 wandb 的方式有任何可疑之处,而且我找不到任何有同样问题的人。任何帮助是极大的赞赏。我在colab中使用最新版本的wandb。

这是我设置wandb的地方:

if WANDB:
    wandb.login()
Run Code Online (Sandbox Code Playgroud)

这是我收到错误的部分:

#setup wandb if we're using it

if WANDB:
    experiment_name = os.environ.get("EXPERIMENT_NAME")
    group = experiment_name if experiment_name != "none" else wandb.util.generate_id()

cv_scores = []
oof_data_frame = pd.DataFrame()
for fold in range(1, config.folds + 1):
    print(f"Fold {fold}/{config.folds}", end="\n"*2)
    fold_directory = os.path.join(config.output_directory, f"fold_{fold}")    
    make_directory(fold_directory)
    model_path = os.path.join(fold_directory, "model.pth")
    model_config_path = os.path.join(fold_directory, "model_config.json")
    checkpoints_directory = os.path.join(fold_directory, "checkpoints/")
    make_directory(checkpoints_directory)
    
    #Data collators are objects that will form a batch by using a …
Run Code Online (Sandbox Code Playgroud)

python wandb

8
推荐指数
1
解决办法
5612
查看次数

什么时候应该运行 wandb.watch 以便权重和偏差正确跟踪参数和梯度?

我正在尝试 wandb 库并运行,wandb.watch但这似乎不适用于我的代码。它不应该太复杂,所以我很困惑为什么它不起作用。

代码:

"""
https://docs.wandb.ai/guides/track/advanced/distributed-training

import wandb

# 1. Start a new run
wandb.init(project='playground', entity='brando')

# 2. Save model inputs and hyperparameters
config = wandb.config
config.learning_rate = 0.01

# 3. Log gradients and model parameters
wandb.watch(model)
for batch_idx, (data, target) in enumerate(train_loader):
    ...
    if batch_idx % args.log_interval == 0:
        # 4. Log metrics to visualize performance
        wandb.log({"loss": loss})


Notes:
    - call wandb.init and wandb.log only from the leader process
"""

from argparse import Namespace
from pathlib import …
Run Code Online (Sandbox Code Playgroud)

machine-learning neural-network deep-learning wandb

7
推荐指数
2
解决办法
4834
查看次数

具有增量日志记录的同一图上的多行 - wandb

我正在使用权重和偏差(wandb)。我想在使用增量日志记录时将多个图分组为一个图,有什么方法可以做到这一点吗?

假设我们有 10 个指标,我可以将它们增量添加到项目中,逐步构建 10 个图表:

import wandb
import math

N_STEPS = 100

wandb.init(project="someProject", name="testMultipleLines")
for epoch in range(N_STEPS):
    log = {}
    log['main_metric'] = epoch / N_STEPS  # some main metric

    # some other metrics I want to have all on 1 plot
    other_metrics = {}
    for j in range(10):
        other_metrics[f'metric_{j}'] = math.sin(j * math.pi * (epoch / N_STEPS))
    log['other_metrics'] = other_metrics

    wandb.log(log)
Run Code Online (Sandbox Code Playgroud)

默认情况下,它在 wandb 界面上显示为 11 个不同的图。如何通过 API(不使用 Web 界面)对它们进行分组,以便main_metric在一个图形上将它们全部other_metrics集中在第二个图形上?

python plot machine-learning wandb

7
推荐指数
1
解决办法
1716
查看次数

权重和偏差:登录和网络错误

我最近安装了权重和偏差(wandb)来记录我的机器学习项目的指标。连接到 wandb 云实例或使用本地 Docker 映像时,一切正常。现在,当我尝试通过网络访问本地 wandb 实例时,我开始收到 API 错误消息。但是,我还注意到 wandb 尝试使用端口 80 而不是 8080 访问我的服务器。我在新的云服务器上安装了 wandb 客户端,并尝试从那里访问我的服务器。尽管如此,同样的错误消息如下所示。

当我使用以下命令时会发生此错误:wandb login host=https://api.wandb.ai 我尝试删除存储 api 设置的 .netrc 文件并重新安装 wandb。还是同样的错误。在 Ubuntu 18.04 上使用 wandb 版本 0.10.2;另外,尝试降级到版本0.8.36,没有变化。如果我尝试命令:wandb login --relogin,我会得到同样的错误。

有没有办法重置 wandb,使其忘记所有这些设置,或者直接解决此问题?

非常感谢

此致,

阿迪尔

Retry attempt failed:
Traceback (most recent call last):
  File "/media/adeel/Space/AI/anaconda3/envs/tf2_gpu/lib/python3.7/site-packages/urllib3/connection.py", line 160, in _new_conn
    (self._dns_host, self.port), self.timeout, **extra_kw
  File "/media/adeel/Space/AI/anaconda3/envs/tf2_gpu/lib/python3.7/site-packages/urllib3/util/connection.py", line 84, in create_connection
    raise err
  File "/media/adeel/Space/AI/anaconda3/envs/tf2_gpu/lib/python3.7/site-packages/urllib3/util/connection.py", line 74, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused …
Run Code Online (Sandbox Code Playgroud)

python wandb

6
推荐指数
1
解决办法
2万
查看次数

尽管我已登录,Wandb 仍抛出权限被拒绝的错误

我正在使用 cleanrl 库,特别是脚本dqn_atari.py dqn_atari.py,我按照 说明进行操作以保存和加载目标和 Q 网络。

\n

我在 conda 环境中本地运行它。

\n

我之前没有加载过东西,所以错误可能是由于我的 wandb 配置造成的。错误为“wandb:错误访问 wandb_entity/wandb_project_name/project_id 的权限被拒绝”并出现在网上:

\n
model = run.file("agent.pt")\n
Run Code Online (Sandbox Code Playgroud)\n

完整的输出是:

\n
wandb: Currently logged in as: elena (use `wandb login --relogin` to force relogin)\n    wandb: Tracking run with wandb version 0.12.15\nwandb: Run data is saved locally in /home/elena/workspace/playground/cleanrl/wandb/run-20220424_180429-2moec0qp\nwandb: Run `wandb offline` to turn off syncing.\nwandb: Resuming run BreakoutNoFrameskip-v4__dqn-save__1__1650816268\nwandb: \xe2\xad\x90 View project at https://wandb.ai/elena/test\nwandb:  View run at https://wandb.ai/elena/test/runs/2moec0qp\nA.L.E: Arcade Learning Environment (version 0.7.4+069f8bd)\n[Powered by Stella]\n/home/elena/anaconda3/envs/cleanrl/lib/python3.8/site-packages/stable_baselines3/common/buffers.py:219: UserWarning: …
Run Code Online (Sandbox Code Playgroud)

python wandb

6
推荐指数
1
解决办法
4543
查看次数

通过权重和偏差在 keras 中记录学习率计划

我正在训练 keras 模型并为优化器使用自定义学习率调度程序(类型为 tf.keras.optimizers.schedules.LearningRateSchedule),并且我想通过权重和偏差框架记录学习率变化。我找不到如何将其传递给 WandbCallback 对象或以任何方式记录它

python deep-learning keras tensorflow wandb

5
推荐指数
1
解决办法
1847
查看次数

AttributeError:模块“集合”没有属性“MutableSet”

我编写了一个 MLflow 组件来将工件从 URL 上传并记录到 WandB。我正在尝试在 conda 环境中运行脚本,但不幸的是我遇到了这个错误

File "C:\anaconda\envs\mlflow-4b67c93d2a95df2e00cbf3c9f644d2e3dada00e0\lib\site-packages\wandb\__init__.py", line 38, in <module>
    from wandb import sdk as wandb_sdk
  File "C:\anaconda\envs\mlflow-4b67c93d2a95df2e00cbf3c9f644d2e3dada00e0\lib\site-packages\wandb\sdk\__init__.py", line 12, in <module>
    from .wandb_init import init  # noqa: F401
  File "C:\anaconda\envs\mlflow-4b67c93d2a95df2e00cbf3c9f644d2e3dada00e0\lib\site-packages\wandb\sdk\wandb_init.py", line 29, in <module>
    from .backend.backend import Backend
  File "C:\anaconda\envs\mlflow-4b67c93d2a95df2e00cbf3c9f644d2e3dada00e0\lib\site-packages\wandb\sdk\backend\backend.py", line 18, in <module>
    from ..internal.internal import wandb_internal
  File "C:\anaconda\envs\mlflow-4b67c93d2a95df2e00cbf3c9f644d2e3dada00e0\lib\site-packages\wandb\sdk\internal\internal.py", line 34, in <module>
    from . import sender
  File "C:\anaconda\envs\mlflow-4b67c93d2a95df2e00cbf3c9f644d2e3dada00e0\lib\site-packages\wandb\sdk\internal\sender.py", line 18, in <module>
    from wandb.filesync.dir_watcher import DirWatcher
  File "C:\anaconda\envs\mlflow-4b67c93d2a95df2e00cbf3c9f644d2e3dada00e0\lib\site-packages\wandb\filesync\dir_watcher.py", line 10, in <module>
    wd_polling …
Run Code Online (Sandbox Code Playgroud)

python anaconda mlflow wandb

4
推荐指数
1
解决办法
1万
查看次数

wandb:获取所有工件集合以及这些工件的所有别名的列表

wandb 文档似乎没有解释如何做到这一点 - 但它应该是我想象的一个相当常见的用例?

我像这样实现了大部分(但不是完全)我想要的,但看起来有点笨拙?self.aliases我本来期望在这些实例上拥有财产ArtifactCollection吗?

更新:它似乎确实是> = v0.13.10的sdk的一部分: https://github.com/wandb/wandb/blob/v0.13.10/wandb/apis/public.py#L4050-L4053

ENTITY = os.environ.get("WANDB_ENTITY")
API_KEY = os.environ.get("WANDB_API_KEY")

def get_model_artifacts(key=None):
    wandb.login(key=key if key is not None else API_KEY)
    api = wandb.Api(overrides={"entity": ENTITY})
    model_names = [
        i
        for i in api.artifact_type(
            type_name="models", project="train"
        ).collections()
    ]
    for model in model_names:
        artifact = api.artifact("train/" + model.name + ":latest")
        model._attrs.update(artifact._attrs)
        model._attrs["metadata"] = json.loads(model._attrs["metadata"])
        model.aliases = [x["alias"] for x in model._attrs["aliases"]]
    return model_names
Run Code Online (Sandbox Code Playgroud)

我想如果需要的话我可能会考虑编写一个自定义的 graph-ql 查询,或者只是使用这种笨重的方法。

我错过了什么吗?有没有更干净的方法来做到这一点?

这个笨重的方法缺少的一件事是任何旧的别名 - 它只显示最新的模型,然后显示该模型的任何别名(比如说“最新”和“v4”等) - 不确定这将/应该如何显示,但是我希望也能够获得旧的别名(即指向旧版本工件的别名)。虽然,这不太重要。

编辑- …

python wandb

3
推荐指数
1
解决办法
1192
查看次数

如何防止权重和偏差保存不必要的参数

我正在使用权重和偏差(链接)来管理超参数优化并记录结果。我正在使用带有 Tensorflow 后端的 Keras 进行训练,并且正在使用权重和偏差的开箱即用日志记录功能,我在其中运行

wandb.init(project='project_name', entity='username', config=config)
Run Code Online (Sandbox Code Playgroud)

然后将 a 添加WandbCallback()到 的回调中classifier.fit()。默认情况下,权重和偏差似乎会保存模型参数(即模型的权重和偏差)并将其存储在云中。这会耗尽我帐户的存储配额,而且是不必要的——我只关心跟踪模型损失/准确性作为超参数的函数。

我是否可以训练模型并使用权重和偏差记录损失和准确性,但不将模型参数存储在云中?我怎样才能做到这一点?

python machine-learning keras tensorflow wandb

3
推荐指数
1
解决办法
527
查看次数

权重和偏差扫描 Keras K-Fold 验证

我正在使用 Keras 进行基于云的权重和偏差扫描。因此,首先我在 W&B 项目中创建一个新的 Sweep,其配置如下:

description: LSTM Model
method: random
metric:
  goal: maximize
  name: val_accuracy
name: LSTM-Sweep
parameters:
  batch_size:
    distribution: int_uniform
    max: 128
    min: 32
  epochs:
    distribution: constant
    value: 200
  node_size1:
    distribution: categorical
    values:
    - 64
    - 128
    - 256
  node_size2:
    distribution: categorical
    values:
    - 64
    - 128
    - 256
  node_size3:
    distribution: categorical
    values:
    - 64
    - 128
    - 256
  node_size4:
    distribution: categorical
    values:
    - 64
    - 128
    - 256
  node_size5:
    distribution: categorical
    values:
    - 64
    - 128
    - …
Run Code Online (Sandbox Code Playgroud)

python keras k-fold wandb

2
推荐指数
1
解决办法
1490
查看次数

YoloV5 在第一个 epoch 被杀死

我在 Windows 10 上使用具有以下配置的虚拟机:

\n
Memory 7.8 GiB\nProcessor Intel\xc2\xae Core\xe2\x84\xa2 i5-6600K CPU @ 3.50GHz \xc3\x97 3\nGraphics llvmpipe (LLVM 11.0.0, 256 bits)\nDisk Capcity 80.5 GB\nOS Ubuntu 20.10 64 Bit\nVirtualization Oracle\n
Run Code Online (Sandbox Code Playgroud)\n

我按照官方文档中的描述为Ubuntu安装了docker 。\n我按照docker 的 yolo github 部分
所述提取了 docker 映像。\n由于我没有 NVIDIA GPU,因此无法安装驱动程序或 CUDA。\n我从roboflow中提取了水族馆并将其安装在折叠水族馆上。\n我运行此命令来启动图像并安装了我的水族馆文件夹

\n
sudo docker run --ipc=host -it -v "$(pwd)"/Desktop/yolo/aquarium:/usr/src/app/aquarium ultralytics/yolov5:latest\n
Run Code Online (Sandbox Code Playgroud)\n

并受到了这个横幅的欢迎

\n
\n

=============\n== PyTorch ==

\n

NVIDIA 版本 21.03(内部版本 21060478)PyTorch 版本 1.9.0a0+df837d0

\n

容器映像版权所有 (c) 2021,NVIDIA CORPORATION。保留所有权利。

\n

版权所有 (c) 2014-2021 Facebook Inc. …

python docker pytorch yolov5 wandb

2
推荐指数
1
解决办法
4403
查看次数

使用 WandB 而不是单独的图来获取每个时期的对齐 val_loss 和 train_loss 图

我有以下代码,用于使用 WandB API 记录每个时期的训练和验证损失。但我不确定为什么我没有在同一时期得到 val 损失和训练损失。知道如何解决这个问题吗?

wandb.log({"train loss": train_epoch_loss,
           "val loss": val_epoch_loss,
           "epoch": epoch})

wandb.log({"train acc": train_epoch_acc,
           "val acc": val_epoch_acc,
           "epoch": epoch})

wandb.log({"best val acc": best_acc, "epoch": epoch})
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如您所见,val 损失与历元和训练损失与历元是两个完全独立的实体,而我希望将它们都放在 WandB 的一个图中。 在此输入图像描述

在此输入图像描述

python machine-learning deep-learning wandb

2
推荐指数
1
解决办法
2799
查看次数