Skip to content

Commit d1d45d0

Browse files
authored
[ML] Fix double-counting of inference memory in the assignment rebalancer (#133919) (#134052)
The static method TrainedModelAssignmentRebalancer.getNodeFreeMemoryExcludingPerNodeOverheadAndNativeInference was used to subtract load.getAssignedNativeInferenceMemory() from load.getFreeMemoryExcludingPerNodeOverhead(). However, in NodeLoad.getFreeMemoryExcludingPerNodeOverhead(), native inference memory was already subtracted as part of the getAssignedJobMemoryExcludingPerNodeOverhead() calculation. This led to double-counting of the native inference memory. Avoiding this double-counting allows us to remove the private method getNodeFreeMemoryExcludingPerNodeOverheadAndNativeInference() entirely.
1 parent 29cb067 commit d1d45d0

File tree

2 files changed

+6
-7
lines changed

2 files changed

+6
-7
lines changed

docs/changelog/133919.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
pr: 133919
2+
summary: Fix double-counting of inference memory in the assignment rebalancer
3+
area: Machine Learning
4+
type: bug
5+
issues: []

x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/inference/assignment/TrainedModelAssignmentRebalancer.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -303,9 +303,7 @@ private Map<List<String>, List<AssignmentPlan.Node>> createNodesByZoneMap() {
303303
nodes.add(
304304
new AssignmentPlan.Node(
305305
discoveryNode.getId(),
306-
// We subtract native inference memory as the planner expects available memory for
307-
// native inference including current assignments.
308-
getNodeFreeMemoryExcludingPerNodeOverheadAndNativeInference(load),
306+
load.getFreeMemoryExcludingPerNodeOverhead(),
309307
MlProcessors.get(discoveryNode, allocatedProcessorsScale).roundUp()
310308
)
311309
);
@@ -322,10 +320,6 @@ private Map<List<String>, List<AssignmentPlan.Node>> createNodesByZoneMap() {
322320
}));
323321
}
324322

325-
private static long getNodeFreeMemoryExcludingPerNodeOverheadAndNativeInference(NodeLoad load) {
326-
return load.getFreeMemoryExcludingPerNodeOverhead() - load.getAssignedNativeInferenceMemory();
327-
}
328-
329323
private TrainedModelAssignmentMetadata.Builder buildAssignmentsFromPlan(AssignmentPlan assignmentPlan) {
330324
TrainedModelAssignmentMetadata.Builder builder = TrainedModelAssignmentMetadata.Builder.empty();
331325
for (AssignmentPlan.Deployment deployment : assignmentPlan.deployments()) {

0 commit comments

Comments
 (0)