Skip to content

Commit e91ed23

Browse files
[Fix] Override data parallel size for accelerator configs (#611)
1 parent e3dc2f5 commit e91ed23

2 files changed

Lines changed: 76 additions & 6 deletions

File tree

pkg/controller/v1beta1/inferenceservice/components/base.go

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -270,16 +270,22 @@ func MergeRuntimeArgumentsOverride(b *BaseComponentFields, container *corev1.Con
270270
tensorParallelismConfig := acceleratorModelConfig.TensorParallelismOverride
271271

272272
// Override tensor parallel size if specified
273-
// --tp-size and --tp are parameters used in sglang
274-
// --tensor-parallel-size is the parameter used in vllm
273+
// --tp-size and --tp are used in sglang
274+
// --tensor-parallel-size and -tp are used in vllm
275275
if tensorParallelismConfig.TensorParallelSize != nil && *tensorParallelismConfig.TensorParallelSize > 0 {
276-
overrideParam(container, []string{"--tp-size", "--tp", "--tensor-parallel-size"}, *tensorParallelismConfig.TensorParallelSize)
276+
overrideParam(container, []string{"--tp-size", "--tp", "--tensor-parallel-size", "-tp"}, *tensorParallelismConfig.TensorParallelSize)
277277
}
278278
// Override pipeline parallel size if specified
279-
// --pp-size and --pp are parameters used in sglang
280-
// --pipeline-parallel-size is parameter used in vllm
279+
// --pp-size and --pp are used in sglang
280+
// --pipeline-parallel-size and -pp used in vllm
281281
if tensorParallelismConfig.PipelineParallelSize != nil && *tensorParallelismConfig.PipelineParallelSize > 0 {
282-
overrideParam(container, []string{"--pp-size", "--pp", "--pipeline-parallel-size"}, *tensorParallelismConfig.PipelineParallelSize)
282+
overrideParam(container, []string{"--pp-size", "--pp", "--pipeline-parallel-size", "-pp"}, *tensorParallelismConfig.PipelineParallelSize)
283+
}
284+
// Override data parallel size if specified.
285+
// --dp-size, --dp used in sglang
286+
// --data-parallel-size, -dp used in vllm
287+
if tensorParallelismConfig.DataParallelSize != nil && *tensorParallelismConfig.DataParallelSize > 0 {
288+
overrideParam(container, []string{"--dp-size", "--dp", "--data-parallel-size", "-dp"}, *tensorParallelismConfig.DataParallelSize)
283289
}
284290
}
285291
}

pkg/controller/v1beta1/inferenceservice/components/base_test.go

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -330,3 +330,67 @@ func TestShouldReportContainerStartupFailure(t *testing.T) {
330330
})
331331
}
332332
}
333+
334+
func TestMergeRuntimeArgumentsOverride(t *testing.T) {
335+
tp, pp, dp := int64(4), int64(2), int64(8)
336+
baseFields := &BaseComponentFields{
337+
SupportedModelFormat: &v1beta1.SupportedModelFormat{
338+
AcceleratorConfig: map[string]*v1beta1.AcceleratorModelConfig{
339+
"nvidia-h100": {
340+
TensorParallelismOverride: &v1beta1.TensorParallelismConfig{
341+
TensorParallelSize: &tp,
342+
PipelineParallelSize: &pp,
343+
DataParallelSize: &dp,
344+
},
345+
},
346+
},
347+
},
348+
AcceleratorClassName: "nvidia-h100",
349+
}
350+
351+
tests := []struct {
352+
name string
353+
container v1.Container
354+
expectedArgs []string
355+
expectedCommand []string
356+
}{
357+
{
358+
name: "vllm long flags",
359+
container: v1.Container{Args: []string{
360+
"--tensor-parallel-size=1", "--pipeline-parallel-size=1", "--data-parallel-size=1",
361+
}},
362+
expectedArgs: []string{"--tensor-parallel-size=4", "--pipeline-parallel-size=2", "--data-parallel-size=8"},
363+
},
364+
{
365+
name: "sglang size flags",
366+
container: v1.Container{Args: []string{
367+
"--tp-size", "1", "--pp-size", "1", "--dp-size", "1",
368+
}},
369+
expectedArgs: []string{"--tp-size", "4", "--pp-size", "2", "--dp-size", "8"},
370+
},
371+
{
372+
name: "sglang shorthand flags in command",
373+
container: v1.Container{Command: []string{
374+
"python3", "-m", "sglang.launch_server", "--tp", "1", "--pp", "1", "--dp", "1",
375+
}},
376+
expectedCommand: []string{"python3", "-m", "sglang.launch_server", "--tp", "4", "--pp", "2", "--dp", "8"},
377+
},
378+
{
379+
name: "single dash flags",
380+
container: v1.Container{Args: []string{"-tp", "1", "-pp", "1", "-dp", "1"}},
381+
expectedArgs: []string{"-tp", "4", "-pp", "2", "-dp", "8"},
382+
},
383+
}
384+
385+
for _, tt := range tests {
386+
t.Run(tt.name, func(t *testing.T) {
387+
g := gomega.NewGomegaWithT(t)
388+
container := tt.container
389+
390+
MergeRuntimeArgumentsOverride(baseFields, &container)
391+
392+
g.Expect(container.Args).To(gomega.Equal(tt.expectedArgs))
393+
g.Expect(container.Command).To(gomega.Equal(tt.expectedCommand))
394+
})
395+
}
396+
}

0 commit comments

Comments
 (0)