Browse Source

1. add the limitation of the number of tag in tensor visualization; 2. update the max step per tensor tag to 20; 3. support query one train_job in the interface of train_jobs.

tags/0.7.0-beta
wangshuide2020 5 years ago
parent
commit
e66e41006c
4 changed files with 54 additions and 29 deletions
  1. +2
    -1
      mindinsight/backend/datavisual/task_manager_api.py
  2. +2
    -1
      mindinsight/conf/constants.py
  3. +1
    -0
      mindinsight/datavisual/data_transform/events_data.py
  4. +49
    -27
      mindinsight/datavisual/processors/train_task_manager.py

+ 2
- 1
mindinsight/backend/datavisual/task_manager_api.py View File

@@ -66,12 +66,13 @@ def query_train_jobs():
"""Query train jobs.""" """Query train jobs."""
offset = request.args.get("offset", default=0) offset = request.args.get("offset", default=0)
limit = request.args.get("limit", default=10) limit = request.args.get("limit", default=10)
train_id = get_train_id(request)


offset = Validation.check_offset(offset=offset) offset = Validation.check_offset(offset=offset)
limit = Validation.check_limit(limit, min_value=1, max_value=SummaryWatcher.MAX_SUMMARY_DIR_COUNT) limit = Validation.check_limit(limit, min_value=1, max_value=SummaryWatcher.MAX_SUMMARY_DIR_COUNT)


processor = TrainTaskManager(DATA_MANAGER) processor = TrainTaskManager(DATA_MANAGER)
total, train_jobs = processor.query_train_jobs(offset, limit)
total, train_jobs = processor.query_train_jobs(offset, limit, train_id)


return jsonify({ return jsonify({
'name': os.path.basename(os.path.realpath(settings.SUMMARY_BASE_DIR)), 'name': os.path.basename(os.path.realpath(settings.SUMMARY_BASE_DIR)),


+ 2
- 1
mindinsight/conf/constants.py View File

@@ -84,9 +84,10 @@ MAX_TAG_SIZE_PER_EVENTS_DATA = 300
DEFAULT_STEP_SIZES_PER_TAG = 500 DEFAULT_STEP_SIZES_PER_TAG = 500


MAX_GRAPH_TAG_SIZE = 10 MAX_GRAPH_TAG_SIZE = 10
MAX_TENSOR_TAG_SIZE = 6
MAX_IMAGE_STEP_SIZE_PER_TAG = 10 MAX_IMAGE_STEP_SIZE_PER_TAG = 10
MAX_SCALAR_STEP_SIZE_PER_TAG = 1000 MAX_SCALAR_STEP_SIZE_PER_TAG = 1000
MAX_GRAPH_STEP_SIZE_PER_TAG = 1 MAX_GRAPH_STEP_SIZE_PER_TAG = 1
MAX_HISTOGRAM_STEP_SIZE_PER_TAG = 50 MAX_HISTOGRAM_STEP_SIZE_PER_TAG = 50
MAX_TENSOR_STEP_SIZE_PER_TAG = 50
MAX_TENSOR_STEP_SIZE_PER_TAG = 20
MAX_TENSOR_RESPONSE_DATA_SIZE = 100000 MAX_TENSOR_RESPONSE_DATA_SIZE = 100000

+ 1
- 0
mindinsight/datavisual/data_transform/events_data.py View File

@@ -35,6 +35,7 @@ CONFIG = {
'max_tag_sizes_per_plugin': 'max_tag_sizes_per_plugin':
{ {
PluginNameEnum.GRAPH.value: settings.MAX_GRAPH_TAG_SIZE, PluginNameEnum.GRAPH.value: settings.MAX_GRAPH_TAG_SIZE,
PluginNameEnum.TENSOR.value: settings.MAX_TENSOR_TAG_SIZE
}, },
'max_step_sizes_per_tag': 'max_step_sizes_per_tag':
{ {


+ 49
- 27
mindinsight/datavisual/processors/train_task_manager.py View File

@@ -83,17 +83,24 @@ class TrainTaskManager(BaseProcessor):
plugins=plugins plugins=plugins
) )


def query_train_jobs(self, offset=0, limit=10):
def query_train_jobs(self, offset=0, limit=10, request_train_id=None):
""" """
Query train jobs. Query train jobs.


Args: Args:
offset (int): Specify page number. Default is 0. offset (int): Specify page number. Default is 0.
limit (int): Specify page size. Default is 10. limit (int): Specify page size. Default is 10.
request_train_id (str): Specify train id. Default is None.


Returns: Returns:
tuple, return quantity of total train jobs and list of train jobs specified by offset and limit. tuple, return quantity of total train jobs and list of train jobs specified by offset and limit.
""" """
if request_train_id is not None:
train_job_item = self._get_train_job_item(request_train_id)
if train_job_item is None:
return 0, []
return 1, [train_job_item]

brief_cache = self._data_manager.get_brief_cache() brief_cache = self._data_manager.get_brief_cache()
brief_train_jobs = list(brief_cache.get_train_jobs().values()) brief_train_jobs = list(brief_cache.get_train_jobs().values())
brief_train_jobs.sort(key=lambda x: x.basic_info.update_time, reverse=True) brief_train_jobs.sort(key=lambda x: x.basic_info.update_time, reverse=True)
@@ -106,37 +113,52 @@ class TrainTaskManager(BaseProcessor):
train_ids = [train_job.basic_info.train_id for train_job in brief_train_jobs[start:end]] train_ids = [train_job.basic_info.train_id for train_job in brief_train_jobs[start:end]]


for train_id in train_ids: for train_id in train_ids:
try:
train_job = self._data_manager.get_train_job(train_id)
except exceptions.TrainJobNotExistError:
logger.warning('Train job %s not existed', train_id)
train_job_item = self._get_train_job_item(train_id)
if train_job_item is None:
continue continue

basic_info = train_job.get_basic_info()
train_job_item = dict(
train_id=basic_info.train_id,
relative_path=basic_info.train_id,
create_time=basic_info.create_time.strftime('%Y-%m-%d %H:%M:%S'),
update_time=basic_info.update_time.strftime('%Y-%m-%d %H:%M:%S'),
profiler_dir=basic_info.profiler_dir,
cache_status=train_job.cache_status.value,
)

if train_job.cache_status == CacheStatus.CACHED:
plugins = self.get_plugins(train_id)
else:
plugins = dict(plugins={
'graph': [],
'scalar': [],
'image': [],
'histogram': [],
})

train_job_item.update(plugins)
train_jobs.append(train_job_item) train_jobs.append(train_job_item)


return total, train_jobs return total, train_jobs


def _get_train_job_item(self, train_id):
"""
Get train job item.

Args:
train_id (str): Specify train id.

Returns:
dict, a dict of train job item.
"""
try:
train_job = self._data_manager.get_train_job(train_id)
except exceptions.TrainJobNotExistError:
logger.warning('Train job %s not existed', train_id)
return None

basic_info = train_job.get_basic_info()
train_job_item = dict(
train_id=basic_info.train_id,
relative_path=basic_info.train_id,
create_time=basic_info.create_time.strftime('%Y-%m-%d %H:%M:%S'),
update_time=basic_info.update_time.strftime('%Y-%m-%d %H:%M:%S'),
profiler_dir=basic_info.profiler_dir,
cache_status=train_job.cache_status.value,
)

if train_job.cache_status == CacheStatus.CACHED:
plugins = self.get_plugins(train_id)
else:
plugins = dict(plugins={
'graph': [],
'scalar': [],
'image': [],
'histogram': [],
})

train_job_item.update(plugins)
return train_job_item

def cache_train_jobs(self, train_ids): def cache_train_jobs(self, train_ids):
""" """
Cache train jobs. Cache train jobs.


Loading…
Cancel
Save