Skip to content

Commit

Permalink
Remove unnecessary epsilon fallback
Browse files Browse the repository at this point in the history
  • Loading branch information
guilherme-brandao committed Aug 23, 2024
1 parent 2fcf815 commit 6564a7c
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 21 deletions.
2 changes: 1 addition & 1 deletion x/emissions/keeper/actor_utils/losses.go
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ func CloseReputerNonce(
return err
}

networkLossBundle, err := synth.CalcNetworkLosses(stakesByReputer, bundles, topic.Epsilon)
networkLossBundle, err := synth.CalcNetworkLosses(stakesByReputer, bundles)
if err != nil {
return err
}
Expand Down
25 changes: 9 additions & 16 deletions x/emissions/keeper/inference_synthesis/network_losses.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,15 +39,14 @@ func RunningWeightedAvgUpdate(
func convertMapOfRunningWeightedLossesToWorkerAttributedValue[T emissions.WorkerAttributedValue | emissions.WithheldWorkerAttributedValue](
runningWeightedLosses map[Worker]*RunningWeightedLoss,
sortedWorkers []Worker,
epsilon alloraMath.Dec,
) []*T {
weightedLosses := make([]*T, 0)
for _, worker := range sortedWorkers {
runningLoss, ok := runningWeightedLosses[worker]
if !ok {
continue
}
normalizedWeightedLoss, err := normalizeWeightedLoss(runningLoss, epsilon)
normalizedWeightedLoss, err := normalizeWeightedLoss(runningLoss)
if err != nil {
continue
}
Expand All @@ -63,7 +62,6 @@ func convertMapOfRunningWeightedLossesToWorkerAttributedValue[T emissions.Worker
func CalcNetworkLosses(
stakesByReputer map[Worker]Stake,
reputerReportedLosses emissions.ReputerValueBundles,
epsilon alloraMath.Dec,
) (emissions.ValueBundle, error) {
// Make map from inferer to their running weighted-average loss
runningWeightedCombinedLoss := RunningWeightedLoss{alloraMath.ZeroDec(), alloraMath.ZeroDec()}
Expand Down Expand Up @@ -202,30 +200,30 @@ func CalcNetworkLosses(
sortedForecasters := alloraMath.GetSortedKeys(runningWeightedForecasterLosses)

// Normalize the combined loss
combinedValue, err := normalizeWeightedLoss(&runningWeightedCombinedLoss, epsilon)
combinedValue, err := normalizeWeightedLoss(&runningWeightedCombinedLoss)
if err != nil {
return emissions.ValueBundle{}, errorsmod.Wrapf(err, "Error normalizing combined loss")
}

// Normalize the naive loss
naiveValue, err := normalizeWeightedLoss(&runningWeightedNaiveLoss, epsilon)
naiveValue, err := normalizeWeightedLoss(&runningWeightedNaiveLoss)
if err != nil {
return emissions.ValueBundle{}, errorsmod.Wrapf(err, "Error normalizing naive loss")
}

// Convert the running weighted averages to WorkerAttributedValue/WithheldWorkerAttributedValue for inferers and forecasters
infererLosses := convertMapOfRunningWeightedLossesToWorkerAttributedValue[emissions.WorkerAttributedValue](runningWeightedInfererLosses, sortedInferers, epsilon)
forecasterLosses := convertMapOfRunningWeightedLossesToWorkerAttributedValue[emissions.WorkerAttributedValue](runningWeightedForecasterLosses, sortedForecasters, epsilon)
oneOutInfererLosses := convertMapOfRunningWeightedLossesToWorkerAttributedValue[emissions.WithheldWorkerAttributedValue](runningWeightedOneOutInfererLosses, sortedInferers, epsilon)
oneOutForecasterLosses := convertMapOfRunningWeightedLossesToWorkerAttributedValue[emissions.WithheldWorkerAttributedValue](runningWeightedOneOutForecasterLosses, sortedForecasters, epsilon)
oneInForecasterLosses := convertMapOfRunningWeightedLossesToWorkerAttributedValue[emissions.WorkerAttributedValue](runningWeightedOneInForecasterLosses, sortedForecasters, epsilon)
infererLosses := convertMapOfRunningWeightedLossesToWorkerAttributedValue[emissions.WorkerAttributedValue](runningWeightedInfererLosses, sortedInferers)
forecasterLosses := convertMapOfRunningWeightedLossesToWorkerAttributedValue[emissions.WorkerAttributedValue](runningWeightedForecasterLosses, sortedForecasters)
oneOutInfererLosses := convertMapOfRunningWeightedLossesToWorkerAttributedValue[emissions.WithheldWorkerAttributedValue](runningWeightedOneOutInfererLosses, sortedInferers)
oneOutForecasterLosses := convertMapOfRunningWeightedLossesToWorkerAttributedValue[emissions.WithheldWorkerAttributedValue](runningWeightedOneOutForecasterLosses, sortedForecasters)
oneInForecasterLosses := convertMapOfRunningWeightedLossesToWorkerAttributedValue[emissions.WorkerAttributedValue](runningWeightedOneInForecasterLosses, sortedForecasters)
oneOutInfererForecasterLosses := make([]*emissions.OneOutInfererForecasterValues, 0)
for _, forecaster := range sortedForecasters {
innerMap, ok := runningWeightedOneOutInfererForecasterLosses[forecaster]
if !ok {
continue
}
oneOutInfererValues := convertMapOfRunningWeightedLossesToWorkerAttributedValue[emissions.WithheldWorkerAttributedValue](innerMap, sortedInferers, epsilon)
oneOutInfererValues := convertMapOfRunningWeightedLossesToWorkerAttributedValue[emissions.WithheldWorkerAttributedValue](innerMap, sortedInferers)
oneOutInfererForecasterLosses = append(oneOutInfererForecasterLosses, &emissions.OneOutInfererForecasterValues{
Forecaster: forecaster,
OneOutInfererValues: oneOutInfererValues,
Expand All @@ -248,7 +246,6 @@ func CalcNetworkLosses(

func normalizeWeightedLoss(
runningWeightedLossData *RunningWeightedLoss,
epsilon alloraMath.Dec,
) (alloraMath.Dec, error) {
if runningWeightedLossData.SumWeight.IsZero() {
return alloraMath.Dec{}, errorsmod.Wrapf(emissions.ErrFractionDivideByZero, "Sum weight for combined naive loss is 0")
Expand All @@ -259,9 +256,5 @@ func normalizeWeightedLoss(
return alloraMath.Dec{}, err
}

if normalizedWeightedLoss.IsZero() {
normalizedWeightedLoss = epsilon
}

return normalizedWeightedLoss, nil
}
7 changes: 3 additions & 4 deletions x/emissions/keeper/inference_synthesis/network_losses_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -370,7 +370,7 @@ func (s *InferenceSynthesisTestSuite) TestCalcNetworkLosses() {

for _, tc := range tests {
s.Run(tc.name, func() {
output, err := inferencesynthesis.CalcNetworkLosses(tc.stakesByReputer, tc.reportedLosses, tc.epsilon)
output, err := inferencesynthesis.CalcNetworkLosses(tc.stakesByReputer, tc.reportedLosses)
if tc.expectedError != nil {
require.Error(err)
require.EqualError(err, tc.expectedError.Error())
Expand Down Expand Up @@ -418,7 +418,6 @@ func (s *InferenceSynthesisTestSuite) TestCalcNetworkLossesFromCsv() {
epochGet := testutil.GetSimulatedValuesGetterForEpochs()
epoch301Get := epochGet[301]
topicId := uint64(1)
epsilon := alloraMath.MustNewDecFromString("1e-4")

reputer0 := s.addrs[0].String()
reputer1 := s.addrs[1].String()
Expand Down Expand Up @@ -481,7 +480,7 @@ func (s *InferenceSynthesisTestSuite) TestCalcNetworkLossesFromCsv() {
)
s.Require().NoError(err)

networkLosses, err := inferencesynthesis.CalcNetworkLosses(stakesByReputer, reportedLosses, epsilon)
networkLosses, err := inferencesynthesis.CalcNetworkLosses(stakesByReputer, reportedLosses)
s.Require().NoError(err)

expectedNetworkLosses, err := testutil.GetNetworkLossFromCsv(
Expand Down Expand Up @@ -579,7 +578,7 @@ func (s *InferenceSynthesisTestSuite) TestCalcNetworkLossesCombined() {

for _, tc := range tests {
s.Run(tc.name, func() {
output, err := inferencesynthesis.CalcNetworkLosses(tc.stakesByReputer, tc.reportedLosses, tc.epsilon)
output, err := inferencesynthesis.CalcNetworkLosses(tc.stakesByReputer, tc.reportedLosses)
if tc.expectedError != nil {
require.Error(err)
require.EqualError(err, tc.expectedError.Error())
Expand Down

0 comments on commit 6564a7c

Please sign in to comment.