23
23
import time
24
24
import paddle .fluid as fluid
25
25
from paddle .fluid .log_helper import get_logger
26
- from paddle .fluid .incubate .fleet .parameter_server .pslib import fleet
26
+ from paddle .fluid .incubate .fleet .parameter_server .pslib import fleet as fleet_pslib
27
+ from paddle .fluid .incubate .fleet .parameter_server .distribute_transpiler import fleet as fleet_transpiler
27
28
from . import hdfs
28
29
from .hdfs import *
30
+ from . import utils
29
31
30
32
__all__ = ["FleetUtil" ]
31
33
32
34
_logger = get_logger (
33
35
__name__ , logging .INFO , fmt = '%(asctime)s-%(levelname)s: %(message)s' )
34
36
37
+ fleet = fleet_pslib
38
+
35
39
36
40
class FleetUtil (object ):
37
41
"""
@@ -46,6 +50,16 @@ class FleetUtil(object):
46
50
47
51
"""
48
52
53
+ def __init__ (self , mode = "pslib" ):
54
+ global fleet
55
+ if mode == "pslib" :
56
+ fleet = fleet_pslib
57
+ elif mode == "transpiler" :
58
+ fleet = fleet_transpiler
59
+ else :
60
+ raise ValueError (
61
+ "Please choose one mode from [\" pslib\" , \" transpiler\" ]" )
62
+
49
63
def rank0_print (self , s ):
50
64
"""
51
65
Worker of rank 0 print some log.
@@ -1535,3 +1549,69 @@ def print_global_metrics(self,
1535
1549
(print_prefix , auc , bucket_error , mae , rmse ,
1536
1550
actual_ctr , predicted_ctr , copc , mean_predict_qvalue ,
1537
1551
total_ins_num ))
1552
+
1553
+ def program_type_trans (self , prog_dir , prog_fn , is_text ):
1554
+ return utils .program_type_trans (prog_dir , prog_fn , is_text )
1555
+
1556
+ def draw_from_program_file (self , model_filename , is_text , output_dir ,
1557
+ output_filename ):
1558
+ """draw program from file"""
1559
+ program = utils .load_program (model_filename , is_text )
1560
+ utils .graphviz (program .global_block (), output_dir , output_filename )
1561
+
1562
+ def draw_from_program (self , program , output_dir , output_name ):
1563
+ """draw Program"""
1564
+ utils .graphviz (program .global_block (), output_dir , output_name )
1565
+
1566
+ def check_two_programs (self , config ):
1567
+ train_prog = utils .load_program (config .train_prog_path ,
1568
+ config .is_text_train_program )
1569
+ pruned_prog = utils .load_program (config .pruned_prog_path ,
1570
+ config .is_text_pruned_program )
1571
+ if config .draw :
1572
+ pruned_dir = os .path .dirname (config .pruned_prog_path )
1573
+ self .draw_from_program (pruned_prog , pruned_dir ,
1574
+ config .draw_out_name )
1575
+ res = utils .check_pruned_program_vars (train_prog , pruned_prog )
1576
+ if res :
1577
+ _logger .info ("check_programs succeed." )
1578
+ else :
1579
+ _logger .info (
1580
+ "check_programs failed. pruned program and train program not match!"
1581
+ )
1582
+ return res
1583
+
1584
+ def check_vars_and_dump (self , config ):
1585
+ _logger .info ("start check_vars_and_dump." )
1586
+ results = utils .check_saved_vars_try_dump (
1587
+ config .dump_model_dir , config .dump_program_filename ,
1588
+ config .is_text_dump_program , config .feed_config ,
1589
+ config .fetch_config , config .batch_size , config .save_params_filename )
1590
+ _logger .info ("check_vars_and_dump succeed." )
1591
+ return results
1592
+
1593
+ def parse_program_proto (self , prog_path , is_text , output_dir ):
1594
+ """
1595
+ Parse program.proto into a more readable format.
1596
+ This function will generate three files:
1597
+ output_dir/vars_all.log,
1598
+ output_dir/vars_persistable.log,
1599
+ output_dir/ops.log.
1600
+
1601
+ Args:
1602
+ prog_path(str): proto file path to be parsed.
1603
+ is_text(bool): proto file is human-readale format or not(binary).
1604
+ output_dir(str): output dir.
1605
+
1606
+ Examples:
1607
+ .. code-block:: python
1608
+
1609
+ from paddle.fluid.incubate.fleet.utils.fleet_util import FleetUtil
1610
+ fleet_util = FleetUtil()
1611
+ program_path = "./program.pbtxt"
1612
+ is_text = True
1613
+ output_dir = "/tmp/"
1614
+ fleet_util.parse_program_proto(program_path, is_text, output_dir)
1615
+ """
1616
+ program = utils .load_program (prog_path , is_text )
1617
+ utils .parse_program (program , output_dir )
0 commit comments