ソースを参照

add infer code

often 5 ヶ月 前
コミット
443dc4168d

+ 1 - 0
recommend-model-produce/src/main/python/models/dssm/config_ps.yaml

@@ -41,6 +41,7 @@ hyper_parameters:
     strategy: sync
   trigram_d: 2900
   neg_num: 1
+  is_infer: True
   slice_end: 8
   fc_sizes: [300, 300, 128]
   fc_acts: ['relu', 'relu', 'relu']

+ 8 - 4
recommend-model-produce/src/main/python/models/dssm/static_model.py

@@ -7,6 +7,7 @@ class StaticModel():
         self.cost = None
         self.config = config
         self._init_hyper_parameters()
+        self.is_infer = False
 
     def _init_hyper_parameters(self):
         # 修改超参数初始化
@@ -18,7 +19,7 @@ class StaticModel():
         self.learning_rate = self.config.get("hyper_parameters.optimizer.learning_rate", 0.001)
         self.margin = self.config.get("hyper_parameters.margin", 0.3)  # 用于损失函数的margin参数
         self.feature_num = len(self.feature_nums)
-
+        self.is_infer = self.config.get("hyper_parameters.is_infer", False)
     def create_feeds(self, is_infer=False):
         # 定义输入数据占位符
 
@@ -53,7 +54,7 @@ class StaticModel():
             hidden_layers=self.hidden_layers,
             hidden_acts=self.hidden_acts
         )
-
+        
         if is_infer:
             sample_id,left_features = input
             left_vec = dssm_model(left_features,None,is_infer=True)
@@ -98,13 +99,16 @@ class StaticModel():
             }
             return fetch_dict
 
-    def create_optimizer(self, strategy=None):
+    def create_optimizer(self, strategy=None,is_infer=False):
         optimizer = paddle.optimizer.Adam(
             learning_rate=self.learning_rate)
         if strategy is not None:
             import paddle.distributed.fleet as fleet
             optimizer = fleet.distributed_optimizer(optimizer, strategy)
-        optimizer.minimize(self._cost)
+        if is_infer:
+            optimizer.minimize(paddle.mean(0))
+        else:
+            optimizer.minimize(self._cost)
 
     def infer_net(self, input):
         return self.net(input, is_infer=True)

+ 4 - 2
recommend-model-produce/src/main/python/tools/static_ps_infer_v2.py

@@ -164,7 +164,7 @@ class Main(object):
             self.record_result()
         logger.info("Run Success, Exit.")
 
-    def init_fleet_with_gloo(use_gloo=True):
+    def init_fleet_with_gloo(self,use_gloo=True):
         if use_gloo:
             os.environ["PADDLE_WITH_GLOO"] = "0"
             role = role_maker.PaddleCloudRoleMaker(
@@ -175,6 +175,8 @@ class Main(object):
         else:
             fleet.init()
 
+
+
     def network(self):
         self.model = get_model(self.config)
         self.input_data = self.model.create_feeds(is_infer=True)
@@ -183,7 +185,7 @@ class Main(object):
         self.metrics = self.model.net(self.inference_feed_var,is_infer=True)
         self.inference_target_var = self.model.inference_target_var
         logger.info("cpu_num: {}".format(os.getenv("CPU_NUM")))
-        #self.model.create_optimizer(get_strategy(self.config))
+        self.model.create_optimizer(get_strategy(self.config))
 
     def run_server(self):
         logger.info("Run Server Begin")