mirror of
https://github.com/open-compass/opencompass.git
synced 2025-05-30 16:03:24 +08:00
update_summerizer
This commit is contained in:
parent
4941df996f
commit
b6fe20b20e
@ -171,6 +171,8 @@ class DefaultSummarizer:
|
||||
default_metric = 'sum'
|
||||
elif sg.get('weights', []):
|
||||
default_metric = 'weighted_average'
|
||||
elif 'harmonic_mean' in sg:
|
||||
default_metric = 'harmonic_mean'
|
||||
else:
|
||||
default_metric = 'naive_average'
|
||||
|
||||
@ -204,6 +206,17 @@ class DefaultSummarizer:
|
||||
avg = sum(scores[metric].values()) / len(scores[metric])
|
||||
variance = sum((scores[metric][k] - avg) ** 2 for k in scores[metric]) / len(scores[metric])
|
||||
scores[metric] = result[metric] = math.sqrt(variance)
|
||||
elif default_metric == 'harmonic_mean':
|
||||
# Check for non-positive values that would cause issues in harmonic mean
|
||||
if any(scores[metric][k] <= 0 for k in scores[metric]):
|
||||
self.logger.warning(f'Non-positive values found when calculating harmonic mean for {sg["name"]}')
|
||||
# Handle non-positive values (either skip or use a small positive value)
|
||||
numerator = len(scores[metric])
|
||||
denominator = sum(1 / max(scores[metric][k], 1e-10) for k in scores[metric])
|
||||
else:
|
||||
numerator = len(scores[metric])
|
||||
denominator = sum(1 / scores[metric][k] for k in scores[metric])
|
||||
scores[metric] = result[metric] = numerator / denominator
|
||||
else:
|
||||
if sg.get('weights', []):
|
||||
# check sg['weights'][k] != 0 in case of scores[metric][k] is NaN
|
||||
|
@ -203,17 +203,6 @@ class MultiModelSummarizer:
|
||||
numerator = sum(results[k] * sg['weights'][k] for k in sg['weights'])
|
||||
denominator = sum(sg['weights'].values())
|
||||
metric = 'weighted_average'
|
||||
elif 'harmonic_mean' in sg:
|
||||
# Check for non-positive values that would cause issues in harmonic mean
|
||||
if any(results[k] <= 0 for k in results):
|
||||
self.logger.warning(f'Non-positive values found when calculating harmonic mean for {sg["name"]}')
|
||||
# Handle non-positive values (either skip or use a small positive value)
|
||||
numerator = len(results)
|
||||
denominator = sum(1 / max(results[k], 1e-10) for k in results)
|
||||
else:
|
||||
numerator = len(results)
|
||||
denominator = sum(1 / results[k] for k in results)
|
||||
metric = 'harmonic_mean'
|
||||
else:
|
||||
numerator = sum(results[k] for k in results)
|
||||
denominator = len(results)
|
||||
|
@ -115,17 +115,6 @@ class PretrainSummarizer:
|
||||
numerator = sum(results[k] * sg['weights'][k] for k in sg['weights'])
|
||||
denominator = sum(sg['weights'].values())
|
||||
metric = 'weighted_average'
|
||||
elif 'harmonic_mean' in sg:
|
||||
# Check for non-positive values that would cause issues in harmonic mean
|
||||
if any(results[k] <= 0 for k in results):
|
||||
self.logger.warning(f'Non-positive values found when calculating harmonic mean for {sg["name"]}')
|
||||
# Handle non-positive values (either skip or use a small positive value)
|
||||
numerator = len(results)
|
||||
denominator = sum(1 / max(results[k], 1e-10) for k in results)
|
||||
else:
|
||||
numerator = len(results)
|
||||
denominator = sum(1 / results[k] for k in results)
|
||||
metric = 'harmonic_mean'
|
||||
else:
|
||||
numerator = sum(results[k] for k in results)
|
||||
denominator = len(results)
|
||||
|
Loading…
Reference in New Issue
Block a user