You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "zhipeng93 (via GitHub)" <gi...@apache.org> on 2023/03/13 04:36:07 UTC

[GitHub] [flink-ml] zhipeng93 commented on a diff in pull request #218: [FLINK-31306] Add Servable for PipelineModel

zhipeng93 commented on code in PR #218:
URL: https://github.com/apache/flink-ml/pull/218#discussion_r1133434653


##########
flink-ml-core/src/test/java/org/apache/flink/ml/api/PipelineTest.java:
##########
@@ -95,4 +109,59 @@ public void testPipeline() throws Exception {
         // Executes the loaded Pipeline and verifies that it produces the expected output.
         TestUtils.executeAndCheckOutput(env, loadedEstimator, inputs, output, null, null);
     }
+
+    @Test
+    public void testSupportServable() {
+        SumEstimator estimatorA = new SumEstimator();
+        UnionAlgoOperator algoOperatorA = new UnionAlgoOperator();
+        SumModel modelA = new SumModel();
+        SumModel modelB = new SumModel();
+
+        List<Stage<?>> stages = Arrays.asList(modelA, modelB);
+        PipelineModel pipelineModel = new PipelineModel(stages);
+        assertTrue(pipelineModel.supportServable());
+
+        stages = Arrays.asList(estimatorA, modelA);
+        pipelineModel = new PipelineModel(stages);
+        assertFalse(pipelineModel.supportServable());
+
+        stages = Arrays.asList(algoOperatorA, modelA);
+        pipelineModel = new PipelineModel(stages);
+        assertFalse(pipelineModel.supportServable());
+    }
+
+    @Test
+    public void testLoadServable() throws Exception {
+        SumModel modelA = new SumModel().setModelData(tEnv.fromValues(10));
+        SumModel modelB = new SumModel().setModelData(tEnv.fromValues(20));
+        SumModel modelC = new SumModel().setModelData(tEnv.fromValues(30));
+
+        List<Stage<?>> stages = Arrays.asList(modelA, modelB, modelC);
+        Model<?> model = new PipelineModel(stages);
+
+        PipelineModelServable servable =
+                saveAndLoadServable(tEnv, model, tempFolder.newFolder().getAbsolutePath());

Review Comment:
   I aggree with @lindong28 that using `PipelineModel#loadServable()` is better for readability. 
   
   However, I also noticed that we are using refelctions to test `saveAndReload` for all other Model/Transformers (e.g., KmeansTest [1]). In this case, using reflections for testing `PipelineModel#loadServable()` here is ok to me. If we want better readability, we can update all the existing tests in a later PR.
   
   @jiangxin369 @lindong28 What do you think?
   
   
   [1] https://github.com/apache/flink-ml/blob/master/flink-ml-lib/src/test/java/org/apache/flink/ml/clustering/KMeansTest.java#L217 



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@flink.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org