Skip to content

FastTree Ranking revert gradient calculation to native code #412

Closed
@TomFinley

Description

@TomFinley

Currently the FastTree ranking code has an #if to control whether it uses native or .NET code, as declared here.

<DefineConstants>$(DefineConstants);USE_FASTTREENATIVE;NO_STORE;CORECLR</DefineConstants>

Normally this takes the form of #if USE_FASTTREENATIVE, except for here.

That 2, I'm somewhat embarrassed to report, is an unintentional mistake I made some time ago. It was part of a change involving some hundreds of files, and I think I just made a small error.

Now, somehow, this didn't get noticed. It however differs in its support of a few arguments. These arguments are hidden and not recommended to be used for general users, but nonetheless they may be important, and having it not be supported was unintentional.

if (_useShiftedNdcg || _costFunctionParam == 'c' || _distanceWeight2 || _normalizeQueryLambdas)
{
throw new Exception("Shifted NDCG / ContinuousWeightedRanknet / distanceWeight2 / normalized lambdas are only supported by unmanaged code");
}

This is not to say we shouldn't shift to not use the native library, but I'd rather it be done in a controlled fashion to ensure compatibility (which this thing does not do), rather than unintentionally as I did here.

This issue is directly relevant to @najeeb-kazmi and @rogancarr .

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions