|
|
|
|
|
|
|
|
|
|
|
import unittest |
|
import uuid |
|
|
|
from fairseq import metrics |
|
|
|
|
|
class TestMetrics(unittest.TestCase): |
|
def test_nesting(self): |
|
with metrics.aggregate() as a: |
|
metrics.log_scalar("loss", 1) |
|
with metrics.aggregate() as b: |
|
metrics.log_scalar("loss", 2) |
|
|
|
self.assertEqual(a.get_smoothed_values()["loss"], 1.5) |
|
self.assertEqual(b.get_smoothed_values()["loss"], 2) |
|
|
|
def test_new_root(self): |
|
with metrics.aggregate() as a: |
|
metrics.log_scalar("loss", 1) |
|
with metrics.aggregate(new_root=True) as b: |
|
metrics.log_scalar("loss", 2) |
|
|
|
self.assertEqual(a.get_smoothed_values()["loss"], 1) |
|
self.assertEqual(b.get_smoothed_values()["loss"], 2) |
|
|
|
def test_nested_new_root(self): |
|
with metrics.aggregate() as layer1: |
|
metrics.log_scalar("loss", 1) |
|
with metrics.aggregate(new_root=True) as layer2: |
|
metrics.log_scalar("loss", 2) |
|
with metrics.aggregate() as layer3: |
|
metrics.log_scalar("loss", 3) |
|
with metrics.aggregate(new_root=True) as layer4: |
|
metrics.log_scalar("loss", 4) |
|
metrics.log_scalar("loss", 1.5) |
|
|
|
self.assertEqual(layer4.get_smoothed_values()["loss"], 4) |
|
self.assertEqual(layer3.get_smoothed_values()["loss"], 3) |
|
self.assertEqual(layer2.get_smoothed_values()["loss"], 2.5) |
|
self.assertEqual(layer1.get_smoothed_values()["loss"], 1.25) |
|
|
|
def test_named(self): |
|
name = str(uuid.uuid4()) |
|
metrics.reset_meters(name) |
|
|
|
with metrics.aggregate(name): |
|
metrics.log_scalar("loss", 1) |
|
|
|
metrics.log_scalar("loss", 3) |
|
|
|
with metrics.aggregate(name): |
|
metrics.log_scalar("loss", 2) |
|
|
|
self.assertEqual(metrics.get_smoothed_values(name)["loss"], 1.5) |
|
|
|
def test_nested_duplicate_names(self): |
|
name = str(uuid.uuid4()) |
|
metrics.reset_meters(name) |
|
|
|
with metrics.aggregate(name): |
|
metrics.log_scalar("loss", 1) |
|
with metrics.aggregate() as other: |
|
with metrics.aggregate(name): |
|
metrics.log_scalar("loss", 2) |
|
metrics.log_scalar("loss", 6) |
|
|
|
self.assertEqual(metrics.get_smoothed_values(name)["loss"], 3) |
|
self.assertEqual(other.get_smoothed_values()["loss"], 2) |
|
|
|
|
|
if __name__ == "__main__": |
|
unittest.main() |
|
|