小编Ale*_*x L的帖子

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
查看次数

标签 统计

python ×1

wandb ×1