MCPcopy Create free account
hub / github.com/OpenGVLab/HumanBench / Config

Class Config

PATH/core/config.py:141–215  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

139 return task_info
140
141class Config(object):
142
143 def __init__(self, config_file, noginfo=False, spec_ginfo_index=None):
144
145 with open(config_file) as f:
146 config = yaml.load(f, Loader=loader)
147 # print('config',config)
148 self.config_path = config_file
149
150 world_size = dist.get_world_size()
151 rank = dist.get_rank()
152
153 if noginfo:
154 ginfo = None
155 else: # cherrypick from tasks
156 tasks = config['tasks']
157 num_tasks = len(tasks)
158 if spec_ginfo_index is not None:
159 assert spec_ginfo_index < len(tasks), \
160 'spec_ginfo_index={} is larger than num_tasks={}'.format(spec_ginfo_index, len(tasks))
161 tmp_config = copy.deepcopy(config)
162 config['tasks'] = dict()
163 config['tasks'][0] = tmp_config['tasks'][spec_ginfo_index]
164 config['tasks'][0]['gres_ratio'] = 1
165 tasks = config['tasks']
166 num_tasks = len(tasks)
167
168 # parse task_common and assign to each task
169 task_common = config.get('task_common', None)
170 if task_common is not None:
171 for i in range(num_tasks):
172 for k,v in task_common.items():
173 if not k in tasks[i]:
174 printlog('setting {} to {} for task {}'.format(k, v, i))
175 tasks[i][k] = v
176
177 group_spec = [tasks[i].get('gres_ratio',1) for i in range(num_tasks)]
178
179 ## share group spec
180 if config['common'].get('share_backbone_group', False):
181 share_backbone_group_ids = config['common']['share_backbone_group'][:num_tasks]
182 else:
183 share_backbone_group_ids = [0 for i in range(num_tasks)] # hardcoded prior
184
185 if config['common'].get('share_neck_group', False):
186 share_neck_group_ids = config['common']['share_neck_group'][:num_tasks]
187 else:
188 share_neck_group_ids = [0 for i in range(num_tasks)] # hardcoded prior
189
190 if config['common'].get('share_decoder_group', False):
191 share_decoder_group_ids = config['common']['share_decoder_group'][:num_tasks]
192 else:
193 share_decoder_group_ids = [i for i in range(num_tasks)] # hardcoded prior
194
195 ginfo = specific_group_split(group_spec, share_backbone_group_ids, share_neck_group_ids, share_decoder_group_ids)
196 loss_weight_sum = float(np.sum(np.array([task['loss_weight'] for task in tasks.values()])))
197 ginfo.task_name = tasks[ginfo.task_id]['name']
198 ginfo.task_names = [tasks[i]['name'] for i in range(ginfo.task_num)]

Callers 2

mainFunction · 0.90
mainFunction · 0.90

Calls

no outgoing calls

Tested by 1

mainFunction · 0.72