如何通过Java代码将模型添加至MLFlow模型注册表?
Java 实现MLFlow模型注册表模型添加
1. 创建注册模型(对应Python的create_registered_model)
Java版MlflowClient提供了createRegisteredModel方法,通过构建CreateRegisteredModelRequest对象完成注册模型的创建:
import org.mlflow.api.proto.Mlflow.CreateRegisteredModelRequest; // 构建创建请求 CreateRegisteredModelRequest createModelRequest = CreateRegisteredModelRequest.builder() .name("sk-learn-random-forest-reg-model") // 模型注册表中的目标模型名称 .description("基于随机森林的回归模型") // 可选添加模型描述 .build(); // 执行注册模型创建 client.createRegisteredModel(createModelRequest);
2. 上传模型工件并创建模型版本
Java没有Python那样的log_model快捷封装方法,需要手动完成三步操作:
步骤1:序列化模型到本地目录
先将你的Java模型(如TensorFlow、XGBoost或自定义序列化模型)保存到本地文件夹,例如./my-trained-model。
步骤2:上传模型工件到MLFlow运行
将本地模型文件夹作为工件上传到当前MLFlow运行实例:
import org.mlflow.api.proto.Mlflow.RunInfo; // 获取目标运行的信息(若未启动运行,先调用client.createRun创建并获取RunInfo) RunInfo targetRun = client.getRun("your-target-run-id"); // 上传本地模型文件夹到运行的指定工件路径 client.logArtifacts(targetRun.getRunId(), "./my-trained-model", "model-artifact-dir");
步骤3:创建模型版本关联工件
基于上传的工件路径,创建模型版本并关联到已注册的模型:
import org.mlflow.api.proto.Mlflow.CreateModelVersionRequest; CreateModelVersionRequest createVersionRequest = CreateModelVersionRequest.builder() .name("sk-learn-random-forest-reg-model") // 必须与注册模型名称一致 .source(targetRun.getArtifactUri() + "/model-artifact-dir") // 工件的完整URI .runId(targetRun.getRunId()) .description("V1版本:初始训练完成的模型") // 可选添加版本描述 .build(); // 创建模型版本 client.createModelVersion(createVersionRequest);
3. 简化操作:自动创建注册模型
如果不想提前手动创建注册模型,可以直接调用createModelVersion——当指定的模型名称在注册表中不存在时,MLFlow会自动创建对应的注册模型。
内容的提问来源于stack exchange,提问作者Martin
相关产品推荐
相关产品推荐

