# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

Common:
  model: neuralmagic/DeepSeek-R1-Distill-Llama-70B-FP8-dynamic
  kv-transfer-config: '{"kv_connector":"DynamoNixlConnector"}'
  # Routing policy determines how remote workers are selected for processing
  # prefill requests
  # 1. random: randomly select workers for prefill requests
  # 2. round-robin: different prefill requests take similar time to complete so
  #                 selecting workers in round-robin maximizes the chance of
  #                 selecting the least busy worker for a request
  # 3. kv: finding prefill workers by KV cache is not beneficial when caching is
  #        disabled on this setup
  router: round-robin
  # Number of tokens in a batch for more efficient chunked transfers to GPUs.
  block-size: 128
  max-model-len: 3500
  max-num-batched-tokens: 3500
  disable-log-requests: true

Frontend:
  served_model_name: neuralmagic/DeepSeek-R1-Distill-Llama-70B-FP8-dynamic
  endpoint: dynamo.Processor.chat/completions
  port: 8000

Processor:
  common-configs: [model, block-size, max-model-len, router]

Router:
  common-configs: [model]
  min-workers: 1

VllmWorker:
  common-configs: [model, kv-transfer-config, router, block-size, max-model-len, disable-log-requests]
  # Enable prefill at different workers.
  remote-prefill: true
  # Disable local prefill so only disaggregated prefill is used.
  conditional-disagg: false
  # The GPU memory utilization do not have to match between VllmWorker and PrefillWorker.
  gpu-memory-utilization: 0.95
  # TP size is doubled from single node setup
  tensor-parallel-size: 8
  ServiceArgs:
    workers: 1
    resources:
      gpu: 8

PrefillWorker:
  common-configs: [model, kv-transfer-config, block-size, max-model-len, max-num-batched-tokens, disable-log-requests]
  gpu-memory-utilization: 0.95
  tensor-parallel-size: 1
  ServiceArgs:
    # DP size is doubled from single node setup
    workers: 8
    resources:
      gpu: 1

# Automatic prefix caching is disabled by default, since all requests are expected to be unique.
