MCPcopy Create free account
hub / github.com/catboost/catboost / CalcErrorsDistributed

Function CalcErrorsDistributed

catboost/private/libs/distributed/master.cpp:455–568  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

453}
454
455void CalcErrorsDistributed(
456 const NCB::TTrainingDataProviders& trainData,
457 const TVector<THolder<IMetric>>& metrics,
458 bool calcAllMetrics,
459 bool calcErrorTrackerMetric,
460 TLearnContext* ctx) {
461
462 Y_ASSERT(ctx->Params.SystemOptions->IsMaster());
463
464 // Calc additive stats in distributed manner and calc non-additive stats locally
465
466 bool haveNonAdditiveTrainMetrics = false;
467 bool haveNonAdditiveTestMetrics = false; // TODO(akhropov): do we need per test dataset flags?
468
469 IterateOverMetrics(
470 trainData,
471 metrics,
472 calcAllMetrics,
473 calcErrorTrackerMetric,
474 /*calcAdditiveMetrics*/ false,
475 /*calcNonAdditiveMetrics*/ true,
476 /*onLearn*/ [&] (TConstArrayRef<const IMetric*> trainMetrics) {
477 haveNonAdditiveTrainMetrics = !trainMetrics.empty();
478 },
479 /*onTest*/ [&] (
480 size_t /*testIdx*/,
481 TConstArrayRef<const IMetric*> testMetrics,
482 TMaybe<int> /*filteredTrackerIdx*/
483 ) {
484 haveNonAdditiveTestMetrics |= (!testMetrics.empty());
485 }
486 );
487
488
489 // Compute non-additive metrics locally and distributed additive stats in parallel
490
491 TVector<std::function<void()>> tasks;
492
493 if (haveNonAdditiveTrainMetrics || haveNonAdditiveTestMetrics) {
494 MapGetApprox(
495 trainData,
496 *ctx,
497 /*useBestModel*/ false,
498 haveNonAdditiveTrainMetrics ? &(ctx->LearnProgress->AvrgApprox) : nullptr,
499 haveNonAdditiveTestMetrics ? &(ctx->LearnProgress->TestApprox) : nullptr
500 );
501
502 tasks.push_back(
503 [&] () {
504 CalcErrorsLocally(
505 trainData,
506 metrics,
507 calcAllMetrics,
508 calcErrorTrackerMetric,
509 /*calcNonAdditiveMetricsOnly*/true,
510 ctx
511 );
512 }

Callers 1

CalcErrorsFunction · 0.85

Calls 14

IterateOverMetricsFunction · 0.85
MapGetApproxFunction · 0.85
CalcErrorsLocallyFunction · 0.85
CalcAdditiveStatsFunction · 0.85
xrangeFunction · 0.85
AddLearnErrorMethod · 0.80
IsMasterMethod · 0.45
emptyMethod · 0.45
push_backMethod · 0.45
sizeMethod · 0.45
GetDescriptionMethod · 0.45
GetFinalErrorMethod · 0.45

Tested by

no test coverage detected