如何在 ML Flow 中检索多个模型的最新版本,而不需要多次调用 getLatestVersions 端点?

问题描述 投票:0回答:1

我正在尝试将 ML Flow 模型加载集成到我的项目中。在 ML Flow 上,我上传了多个模型,其中包含多个版本。因此,我想做的是检索 ML Flow 上的每个模型的最新版本。我可以做到这一点的一种方法是搜索我命名每个模型的前缀,例如:

 client.searchModelVersions("name LIKE '" + MODEL_PREFIX + "%'");

这将提供一个 Page 对象,该对象允许我迭代我拥有的模型。有了手中的模型,我就可以获取每个模型的名称并检索最新版本。喜欢:

modelVersions
        .collect(
            Collectors.toMap(
                ModelVersion::getName,
                modelVersion -> {
                  List<ModelVersion> versionsForModel =
                      client.getLatestVersions(modelVersion.getName());
                  return versionsForModel.get(versionsForModel.size() - 1);
                },
                (alreadyComputedModel, newModel) -> alreadyComputedModel))
        .values()
        .stream();

但正如您所看到的,这是效率低下的,因为我必须为每个模型名称多次请求 ML Flow API。

是否有一种方法/参数可以让 ML Flow 始终批量向我提供最新版本的模型?

java mlflow
1个回答
0
投票

我能够在内存中解决这个问题,因为 ML Flow 显然没有这个端点。

private Stream<ModelVersion> getLatestVersionsForModels(Stream<ModelVersion> modelVersions) {
    return modelVersions
        .collect(
            Collectors.toMap(
                ModelVersion::getName,
                modelVersion -> modelVersion,
                (alreadyComputedModel, newModel) ->
                    Integer.parseInt(alreadyComputedModel.getVersion())
                            > Integer.parseInt(newModel.getVersion())
                        ? alreadyComputedModel
                        : newModel))
        .values()
        .stream();
© www.soinside.com 2019 - 2024. All rights reserved.