我正在尝试将 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 始终批量向我提供最新版本的模型?
我能够在内存中解决这个问题,因为 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();