From 8280b79d0fc88cfa154ee2248f5e7e5e3ebbfde4 Mon Sep 17 00:00:00 2001 From: "Xin He (SW-GPU)" <200704525+xinhe-nv@users.noreply.github.com> Date: Tue, 15 Sep 2026 09:42:27 +0800 Subject: [PATCH 01/13] [None][test] Replace TinyLlama-1.1B-Chat-v1.0 with Qwen3-0.6B in tests Swaps the TinyLlama-1.1B-Chat-v1.0 test model for Qwen3-0.6B across unit and integration tests, and prunes the now-redundant tinyllama-1.1b decoder-encode parametrization in favor of the existing qwen3-0.6b case. Kept TinyLlama-1.1B-Chat-v1.0 where swapping would silently break the test: LoRA adapters fine-tuned specifically for TinyLlama (multilora example, triton_server LoRA E2E test), a NeMo LoRA GQA test with hardcoded checkpoint dimensions matching TinyLlama's architecture, and a disaggregated test asserting exact hardcoded token IDs/text produced by TinyLlama's tokenizer. Signed-off-by: Xin He (SW-GPU) <200704525+xinhe-nv@users.noreply.github.com> --- .../accuracy/test_llm_api_pytorch_encode.py | 7 - tests/integration/defs/conftest.py | 5 +- .../defs/disaggregated/test_ad_disagg.py | 18 +- .../test_ad_disagg_trtllm_serve.py | 8 +- .../defs/disaggregated/test_auto_scaling.py | 3 +- .../defs/disaggregated/test_disaggregated.py | 197 ++++++------------ .../disaggregated/test_disaggregated_etcd.py | 7 +- .../test_disaggregated_single_gpu.py | 12 +- .../defs/disaggregated/test_workers.py | 25 +-- .../examples/run_llm_quickstart_atexit.py | 3 +- .../defs/examples/serve/test_serve.py | 10 +- .../examples/serve/test_serve_negative.py | 2 +- .../defs/examples/test_ad_guided_decoding.py | 3 +- .../defs/examples/test_llm_api_with_mpi.py | 5 +- tests/integration/defs/examples/test_ray.py | 8 +- ...t_final_single_token_context_cuda_graph.py | 2 +- .../kv_cache/test_kv_cache_iteration_stats.py | 2 +- .../defs/llmapi/test_llm_examples.py | 6 +- .../defs/model_express/test_model_express.py | 4 +- tests/integration/defs/perf/test_perf.py | 4 +- .../defs/stress_test/stress_test.py | 5 +- tests/integration/defs/test_e2e.py | 7 +- .../defs/triton_server/conftest.py | 26 ++- .../defs/triton_server/test_triton_llmapi.py | 4 +- .../test_lists/qa/llm_function_core.txt | 86 ++++---- .../integration/test_lists/test-db/l0_a10.yml | 40 ++-- .../test_lists/test-db/l0_a100.yml | 2 - .../test_lists/test-db/l0_b200.yml | 2 +- .../test_lists/test-db/l0_dgx_b200.yml | 8 +- .../test_lists/test-db/l0_dgx_h100.yml | 24 +-- .../test_lists/test-db/l0_dgx_h200.yml | 4 +- .../test-db/l0_gb200_multi_gpus.yml | 4 +- .../test_lists/test-db/l0_h100.yml | 22 +- .../test_lists/test-db/l0_l40s.yml | 2 +- .../test_lists/test-db/l0_sanity_check.yml | 2 +- tests/integration/test_lists/waives.txt | 36 ++-- tests/test_common/llm_data.py | 2 +- .../_torch/executor/test_overlap_scheduler.py | 2 +- .../_torch/multi_gpu/test_mpi_sleep_wakeup.py | 2 +- .../multi_gpu/test_executor.py | 12 +- .../multi_gpu/test_inflight_weight_update.py | 2 +- .../multi_gpu/test_multi_instance.py | 4 +- .../single_gpu/test_llm_sleep.py | 4 +- .../single_gpu/test_llm_update_weights.py | 4 +- .../single_gpu/test_postproc_workers.py | 2 +- .../_torch/sampler/test_beam_search.py | 3 +- .../_torch/sampler/test_logits_logprobs.py | 8 +- .../_torch/sampler/test_penalties_e2e.py | 2 +- .../_utils_test/_model_test_utils.py | 2 +- .../singlegpu/smoke/test_ad_trtllm_bench.py | 2 +- .../singlegpu/utils/test_example_configs.py | 2 +- tests/unittest/check_pip_install.py | 5 +- tests/unittest/executor/test_base_worker.py | 2 +- tests/unittest/executor/test_rpc_proxy.py | 2 +- tests/unittest/executor/test_rpc_worker.py | 2 +- .../openengine/test_capability_conformance.py | 2 +- tests/unittest/grpc/smg/test_smg.py | 2 +- tests/unittest/llmapi/_run_multi_llm_tasks.py | 2 +- .../llmapi/apps/_test_openai_cache_salt.py | 4 +- .../unittest/llmapi/apps/_test_openai_chat.py | 4 +- .../llmapi/apps/_test_openai_completions.py | 2 +- .../llmapi/apps/_test_openai_perf_metrics.py | 4 +- .../apps/_test_openai_post_processor.py | 2 +- .../llmapi/apps/_test_openai_prometheus.py | 4 +- .../_test_trtllm_serve_duplicated_args.py | 4 +- .../llmapi/apps/_test_trtllm_serve_example.py | 4 +- .../apps/_test_trtllm_serve_top_logprobs.py | 4 +- .../apps/test_disagg_serving_perf_metrics.py | 2 +- .../unittest/llmapi/run_llm_with_postproc.py | 3 +- tests/unittest/llmapi/test_async_llm.py | 14 +- tests/unittest/llmapi/test_executor.py | 16 +- tests/unittest/llmapi/test_llm.py | 2 +- tests/unittest/llmapi/test_llm_args.py | 4 +- tests/unittest/llmapi/test_llm_download.py | 2 +- .../llmapi/test_llm_kv_cache_events.py | 2 +- tests/unittest/llmapi/test_llm_pytorch.py | 2 +- tests/unittest/llmapi/test_llm_telemetry.py | 2 +- .../llmapi/test_llm_telemetry_payload.py | 2 +- tests/unittest/others/test_tracing.py | 4 +- .../scripts/test_check_model_registry.py | 2 +- tests/unittest/tools/test_host_profiler.py | 12 +- tests/unittest/usage/test_e2e_capture.py | 2 +- 82 files changed, 349 insertions(+), 429 deletions(-) diff --git a/tests/integration/defs/accuracy/test_llm_api_pytorch_encode.py b/tests/integration/defs/accuracy/test_llm_api_pytorch_encode.py index c75cffdb842e..4bf1c38dd588 100644 --- a/tests/integration/defs/accuracy/test_llm_api_pytorch_encode.py +++ b/tests/integration/defs/accuracy/test_llm_api_pytorch_encode.py @@ -239,15 +239,8 @@ def test_qwen3_text_embedding_matches_huggingface(self, model_name, model_path): # classification scoring on a causal LM backbone. # # One representative per distinct TRT-LLM architecture class: -# LlamaForCausalLM — TinyLlama (also covers Mistral, which aliases LlamaModel) # Qwen3ForCausalLM — Qwen3-0.6B (QKNorm) DECODER_MODELS = [ - # -- LlamaForCausalLM (covers Llama + Mistral family) -- - pytest.param( - "TinyLlama/TinyLlama-1.1B-Chat-v1.0", - f"{llm_models_root()}/llama-models-v2/TinyLlama-1.1B-Chat-v1.0", - id="tinyllama-1.1b", - ), # -- Qwen3ForCausalLM -- pytest.param( "Qwen/Qwen3-0.6B", diff --git a/tests/integration/defs/conftest.py b/tests/integration/defs/conftest.py index bcea8e086953..ee383703c4a4 100644 --- a/tests/integration/defs/conftest.py +++ b/tests/integration/defs/conftest.py @@ -677,9 +677,8 @@ def llama_v2_tokenizer_model_root(): def llama_model_root(request): models_root = llm_models_root() assert models_root, "Did you set LLM_MODELS_ROOT?" - if request.param == "TinyLlama-1.1B-Chat-v1.0": - llama_model_root = os.path.join(models_root, "llama-models-v2", - "TinyLlama-1.1B-Chat-v1.0") + if request.param == "Qwen3-0.6B": + llama_model_root = os.path.join(models_root, "Qwen3", "Qwen3-0.6B") elif request.param == "llama-3.1-8b": llama_model_root = os.path.join(models_root, "llama-3.1-model", "Meta-Llama-3.1-8B") diff --git a/tests/integration/defs/disaggregated/test_ad_disagg.py b/tests/integration/defs/disaggregated/test_ad_disagg.py index 24a3915475e7..c3c4ccdf5782 100644 --- a/tests/integration/defs/disaggregated/test_ad_disagg.py +++ b/tests/integration/defs/disaggregated/test_ad_disagg.py @@ -91,7 +91,7 @@ def skip_b300(): MODEL_PATHS = { "EAGLE3-LLaMA3.1-Instruct-8B": "EAGLE3-LLaMA3.1-Instruct-8B", "Llama-3.1-8B-Instruct": "llama-3.1-model/Llama-3.1-8B-Instruct/", - "TinyLlama-1.1B-Chat-v1.0": "llama-models-v2/TinyLlama-1.1B-Chat-v1.0", + "Qwen3-0.6B": "Qwen3/Qwen3-0.6B", "DeepSeek-V3-Lite": "DeepSeek-V3-Lite/bf16", } @@ -468,7 +468,7 @@ def reduced_model_config(model, extra_config=None): def reduced_model_cases(): return [ pytest.param( - "TinyLlama-1.1B-Chat-v1.0", + "Qwen3-0.6B", id="tinyllama", ), pytest.param( @@ -589,7 +589,7 @@ def test_tinyllama_batch_handoff_semantic_slots(): "seed": AUTODEPLOY_DISAGG_SEED, } outputs = run_sequential_batch_handoff( - "TinyLlama-1.1B-Chat-v1.0", + "Qwen3-0.6B", generation_overlap=True, prompts=prompts, sampling_params_kwargs=sampling_params_kwargs, @@ -951,13 +951,13 @@ def run_context_then_generation_handoff( @pytest.mark.timeout(600) def test_async_generation_matches_aggregate(): aggregate_output = run_aggregate_generation( - "TinyLlama-1.1B-Chat-v1.0", + "Qwen3-0.6B", world_size=1, prompt="What is the capital of Germany?", sampling_params_kwargs={"max_tokens": 10, "ignore_eos": True}, ) outputs = run_context_then_generation_handoff( - "TinyLlama-1.1B-Chat-v1.0", + "Qwen3-0.6B", worker_world_sizes=(1, 1), generation_overlap=True, prompt="What is the capital of Germany?", @@ -989,13 +989,13 @@ def test_async_generation_no_overlap_matches_aggregate(): """ sampling_params_kwargs = {"max_tokens": 10, "ignore_eos": True} aggregate_output = run_aggregate_generation( - "TinyLlama-1.1B-Chat-v1.0", + "Qwen3-0.6B", world_size=1, prompt="What is the capital of Germany?", sampling_params_kwargs=sampling_params_kwargs, ) outputs = run_context_then_generation_handoff( - "TinyLlama-1.1B-Chat-v1.0", + "Qwen3-0.6B", worker_world_sizes=(1, 1), generation_overlap=False, prompt="What is the capital of Germany?", @@ -1014,13 +1014,13 @@ def test_async_generation_no_overlap_matches_aggregate(): @pytest.mark.timeout(900) def test_async_sharded_generation_handoff(): aggregate_output = run_aggregate_generation( - "TinyLlama-1.1B-Chat-v1.0", + "Qwen3-0.6B", world_size=2, prompt="What is the capital of Germany?", sampling_params_kwargs={"max_tokens": 10, "ignore_eos": True}, ) outputs = run_context_then_generation_handoff( - "TinyLlama-1.1B-Chat-v1.0", + "Qwen3-0.6B", worker_world_sizes=(2, 2), generation_overlap=True, prompt="What is the capital of Germany?", diff --git a/tests/integration/defs/disaggregated/test_ad_disagg_trtllm_serve.py b/tests/integration/defs/disaggregated/test_ad_disagg_trtllm_serve.py index 9698e6799ef9..122eaba59871 100644 --- a/tests/integration/defs/disaggregated/test_ad_disagg_trtllm_serve.py +++ b/tests/integration/defs/disaggregated/test_ad_disagg_trtllm_serve.py @@ -48,13 +48,13 @@ def skip_b300(): SERVER_READY_REQUEST_TIMEOUT_S = 5 OPENAI_REQUEST_TIMEOUT_S = 60 PROXY_PORT_MAX_RETRIES = 5 -TINYLLAMA_MODEL_DIR = "llama-models-v2/TinyLlama-1.1B-Chat-v1.0" +QWEN3_MODEL_DIR = "Qwen3/Qwen3-0.6B" AUTODEPLOY_BACKEND = "_autodeploy" EXPECTED_COMPLETION_SUBSTRING = "Berlin" -def tinyllama_model_path(): - return str(Path(llm_models_root()) / TINYLLAMA_MODEL_DIR) +def qwen3_model_path(): + return str(Path(llm_models_root()) / QWEN3_MODEL_DIR) def worker_cuda_devices(num_workers): @@ -175,7 +175,7 @@ async def test_openai_completion(work_dir): verifies the trtllm-serve deployment shape: context worker, generation worker, disaggregated proxy, and an OpenAI-compatible completion request. """ - model = tinyllama_model_path() + model = qwen3_model_path() ctx_device, gen_device = worker_cuda_devices(2) last_port_conflict = None diff --git a/tests/integration/defs/disaggregated/test_auto_scaling.py b/tests/integration/defs/disaggregated/test_auto_scaling.py index efa0570e44f9..c5d76037f8a2 100644 --- a/tests/integration/defs/disaggregated/test_auto_scaling.py +++ b/tests/integration/defs/disaggregated/test_auto_scaling.py @@ -42,8 +42,7 @@ def worker_env(): @pytest.fixture def model_name(): - model_path = os.path.join(llm_models_root(), - "llama-models-v2/TinyLlama-1.1B-Chat-v1.0") + model_path = os.path.join(llm_models_root(), "Qwen3/Qwen3-0.6B") assert os.path.exists(model_path), f"Model path {model_path} does not exist" return model_path diff --git a/tests/integration/defs/disaggregated/test_disaggregated.py b/tests/integration/defs/disaggregated/test_disaggregated.py index 049cf3e3fc74..1a04d1ee086a 100644 --- a/tests/integration/defs/disaggregated/test_disaggregated.py +++ b/tests/integration/defs/disaggregated/test_disaggregated.py @@ -1107,13 +1107,11 @@ def run_disaggregated_test(example_dir, shutil.rmtree(work_dir, ignore_errors=True) -@pytest.mark.parametrize("llama_model_root", ['TinyLlama-1.1B-Chat-v1.0'], - indirect=True) +@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_diff_max_tokens(disaggregated_test_root, disaggregated_example_root, llm_venv, llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, - "TinyLlama/TinyLlama-1.1B-Chat-v1.0") + setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "2_ranks_diff_max_tokens", @@ -1123,13 +1121,11 @@ def test_disaggregated_diff_max_tokens(disaggregated_test_root, cwd=llm_venv.get_working_directory()) -@pytest.mark.parametrize("llama_model_root", ['TinyLlama-1.1B-Chat-v1.0'], - indirect=True) +@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_single_gpu(disaggregated_test_root, disaggregated_example_root, llm_venv, llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, - "TinyLlama/TinyLlama-1.1B-Chat-v1.0") + setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") env = llm_venv._new_env.copy() env["CUDA_VISIBLE_DEVICES"] = "0" @@ -1200,13 +1196,11 @@ def test_disaggregated_mamba_bs1_concurrency2(disaggregated_example_root, ) -@pytest.mark.parametrize("llama_model_root", ['TinyLlama-1.1B-Chat-v1.0'], - indirect=True) +@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_tinyllama_multi_orchestrator(disaggregated_test_root, disaggregated_example_root, llm_venv, llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, - "TinyLlama/TinyLlama-1.1B-Chat-v1.0") + setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") env = llm_venv._new_env.copy() env["CUDA_VISIBLE_DEVICES"] = "0" @@ -1218,13 +1212,11 @@ def test_disaggregated_tinyllama_multi_orchestrator(disaggregated_test_root, cwd=llm_venv.get_working_directory()) -@pytest.mark.parametrize("llama_model_root", ['TinyLlama-1.1B-Chat-v1.0'], - indirect=True) +@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_benchmark_gen_only(disaggregated_test_root, disaggregated_example_root, llm_venv, llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, - "TinyLlama/TinyLlama-1.1B-Chat-v1.0") + setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") env = llm_venv._new_env.copy() env['TRTLLM_DISAGG_BENCHMARK_GEN_ONLY'] = '1' @@ -1237,13 +1229,11 @@ def test_disaggregated_benchmark_gen_only(disaggregated_test_root, @pytest.mark.parametrize("router_type", ["load_balancing", "kv_cache_aware", "conversation"]) -@pytest.mark.parametrize("llama_model_root", ['TinyLlama-1.1B-Chat-v1.0'], - indirect=True) +@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_router(disaggregated_test_root, disaggregated_example_root, llm_venv, llama_model_root, router_type): - setup_model_symlink(llm_venv, llama_model_root, - "TinyLlama/TinyLlama-1.1B-Chat-v1.0") + setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, router_type, @@ -1252,16 +1242,14 @@ def test_disaggregated_router(disaggregated_test_root, cwd=llm_venv.get_working_directory()) -@pytest.mark.parametrize("llama_model_root", ['TinyLlama-1.1B-Chat-v1.0'], - indirect=True) +@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_benchmark_gen_only_insufficient_kv( disaggregated_test_root, disaggregated_example_root, llm_venv, llama_model_root): """Test that gen-only benchmark mode raises an error when KV cache is too small to hold all benchmark requests, instead of hanging forever.""" import openai - setup_model_symlink(llm_venv, llama_model_root, - "TinyLlama/TinyLlama-1.1B-Chat-v1.0") + setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") env = llm_venv._new_env.copy() env['TRTLLM_DISAGG_BENCHMARK_GEN_ONLY'] = '1' @@ -1288,7 +1276,7 @@ def test_disaggregated_benchmark_gen_only_insufficient_kv( def send_request(): try: stream = client.completions.create( - model="TinyLlama/TinyLlama-1.1B-Chat-v1.0", + model="Qwen3/Qwen3-0.6B", prompt="What is the capital of Germany?", max_tokens=10, temperature=0.0, @@ -1314,13 +1302,11 @@ def send_request(): @pytest.mark.skip_less_device(4) -@pytest.mark.parametrize("llama_model_root", ['TinyLlama-1.1B-Chat-v1.0'], - indirect=True) +@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_genbs1(disaggregated_test_root, disaggregated_example_root, llm_venv, llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, - "TinyLlama/TinyLlama-1.1B-Chat-v1.0") + setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") env = llm_venv._new_env.copy() env['TRTLLM_DISAGG_BENCHMARK_GEN_ONLY'] = '1' @@ -1332,13 +1318,11 @@ def test_disaggregated_genbs1(disaggregated_test_root, @pytest.mark.skip_less_device(2) -@pytest.mark.parametrize("llama_model_root", ['TinyLlama-1.1B-Chat-v1.0'], - indirect=True) +@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_multi_gpu(disaggregated_test_root, disaggregated_example_root, llm_venv, llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, - "TinyLlama/TinyLlama-1.1B-Chat-v1.0") + setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "4_ranks", @@ -1347,12 +1331,10 @@ def test_disaggregated_multi_gpu(disaggregated_test_root, cwd=llm_venv.get_working_directory()) -@pytest.mark.parametrize("llama_model_root", ['TinyLlama-1.1B-Chat-v1.0'], - indirect=True) +@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_cuda_graph(disaggregated_test_root, llm_venv, disaggregated_example_root, llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, - "TinyLlama/TinyLlama-1.1B-Chat-v1.0") + setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "cuda_graph", @@ -1361,12 +1343,10 @@ def test_disaggregated_cuda_graph(disaggregated_test_root, llm_venv, cwd=llm_venv.get_working_directory()) -@pytest.mark.parametrize("llama_model_root", ['TinyLlama-1.1B-Chat-v1.0'], - indirect=True) +@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_mixed(disaggregated_test_root, llm_venv, disaggregated_example_root, llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, - "TinyLlama/TinyLlama-1.1B-Chat-v1.0") + setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "mixed", @@ -1375,16 +1355,13 @@ def test_disaggregated_mixed(disaggregated_test_root, llm_venv, cwd=llm_venv.get_working_directory()) -@pytest.mark.parametrize("llama_model_root", ['TinyLlama-1.1B-Chat-v1.0'], - indirect=True) +@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_overlap(disaggregated_test_root, llm_venv, disaggregated_example_root, llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, - "TinyLlama/TinyLlama-1.1B-Chat-v1.0") + setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") def post_client_test(server_url: str): - verify_usage_with_cache_reuse(server_url, - "TinyLlama/TinyLlama-1.1B-Chat-v1.0") + verify_usage_with_cache_reuse(server_url, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "overlap", @@ -1396,15 +1373,14 @@ def post_client_test(server_url: str): @skip_pre_hopper @pytest.mark.skip_less_device(8) -@pytest.mark.parametrize("llama_model_root", ['TinyLlama-1.1B-Chat-v1.0'], - indirect=True) +@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) @pytest.mark.parametrize("ctx_pp", [1, 4], ids=["ctx_pp1", "ctx_pp4"]) def test_disaggregated_overlap_gen_first(disaggregated_test_root, disaggregated_example_root, llm_venv, llama_model_root, ctx_pp): src_dst_dict = { llama_model_root: - f"{llm_venv.get_working_directory()}/TinyLlama/TinyLlama-1.1B-Chat-v1.0", + f"{llm_venv.get_working_directory()}/Qwen3/Qwen3-0.6B", } for src, dst in src_dst_dict.items(): if not os.path.islink(dst): @@ -1412,8 +1388,7 @@ def test_disaggregated_overlap_gen_first(disaggregated_test_root, os.symlink(src, dst, target_is_directory=True) def post_client_test(server_url: str): - verify_usage_with_cache_reuse(server_url, - "TinyLlama/TinyLlama-1.1B-Chat-v1.0") + verify_usage_with_cache_reuse(server_url, "Qwen3/Qwen3-0.6B") run_disaggregated_test( disaggregated_example_root, @@ -1425,13 +1400,11 @@ def post_client_test(server_url: str): post_client_test=post_client_test) -@pytest.mark.parametrize("llama_model_root", ['TinyLlama-1.1B-Chat-v1.0'], - indirect=True) +@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_overlap_transceiver_runtime_python( disaggregated_test_root, llm_venv, disaggregated_example_root, llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, - "TinyLlama/TinyLlama-1.1B-Chat-v1.0") + setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") env = llm_venv._new_env.copy() env["UCX_TLS"] = get_ucx_tls() @@ -1448,13 +1421,11 @@ def test_disaggregated_overlap_transceiver_runtime_python( # platforms with MNNVL fabric-memory support; on other devices the env var would silently fall # back to a non-fabric allocation, which would defeat the purpose of this test. @pytest.mark.skip_device_not_contain(["GB200", "GB300"]) -@pytest.mark.parametrize("llama_model_root", ['TinyLlama-1.1B-Chat-v1.0'], - indirect=True) +@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_overlap_transceiver_runtime_python_fabric_memory( disaggregated_test_root, llm_venv, disaggregated_example_root, llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, - "TinyLlama/TinyLlama-1.1B-Chat-v1.0") + setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") env = llm_venv._new_env.copy() env["UCX_TLS"] = get_ucx_tls() @@ -1479,13 +1450,11 @@ def test_disaggregated_overlap_transceiver_runtime_python_fabric_memory( # logged the coalesced-bounce marker, so a silent fall-back to the per-fragment path fails the # test instead of passing quietly. @pytest.mark.skip_device_not_contain(["GB200", "GB300"]) -@pytest.mark.parametrize("llama_model_root", ['TinyLlama-1.1B-Chat-v1.0'], - indirect=True) +@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_overlap_transceiver_runtime_python_bounce( disaggregated_test_root, llm_venv, disaggregated_example_root, llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, - "TinyLlama/TinyLlama-1.1B-Chat-v1.0") + setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") env = llm_venv._new_env.copy() env["UCX_TLS"] = get_ucx_tls() @@ -1626,8 +1595,7 @@ async def drive(): asyncio.run(drive()) -@pytest.mark.parametrize("llama_model_root", ["TinyLlama-1.1B-Chat-v1.0"], - indirect=True) +@pytest.mark.parametrize("llama_model_root", ["Qwen3-0.6B"], indirect=True) def test_disaggregated_python_transceiver_host_offload( disaggregated_test_root, llm_venv, disaggregated_example_root, llama_model_root): @@ -1639,14 +1607,13 @@ def test_disaggregated_python_transceiver_host_offload( that prefix reuse is forced through an offload+onboard cycle before each KV transfer. """ - setup_model_symlink(llm_venv, llama_model_root, - "TinyLlama/TinyLlama-1.1B-Chat-v1.0") + setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") env = llm_venv._new_env.copy() env["UCX_TLS"] = get_ucx_tls() def post_client_test(server_url: str): - _verify_python_transceiver_under_host_offload( - server_url, "TinyLlama/TinyLlama-1.1B-Chat-v1.0") + _verify_python_transceiver_under_host_offload(server_url, + "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "python_transceiver_host_offload", @@ -1656,13 +1623,11 @@ def post_client_test(server_url: str): post_client_test=post_client_test) -@pytest.mark.parametrize("llama_model_root", ['TinyLlama-1.1B-Chat-v1.0'], - indirect=True) +@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_perf_metrics(disaggregated_test_root, llm_venv, disaggregated_example_root, llama_model_root, tmp_path): - setup_model_symlink(llm_venv, llama_model_root, - "TinyLlama/TinyLlama-1.1B-Chat-v1.0") + setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") perf_metrics_output_dir = str(tmp_path / "perf_metrics") @@ -1687,14 +1652,12 @@ def extra_endpoints_test(_server_url: str): perf_metrics_output_dir=perf_metrics_output_dir) -@pytest.mark.parametrize("llama_model_root", ['TinyLlama-1.1B-Chat-v1.0'], - indirect=True) +@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_chat_completion_tool_calls(disaggregated_test_root, llm_venv, disaggregated_example_root, llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, - "TinyLlama/TinyLlama-1.1B-Chat-v1.0") + setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "tool_calls", @@ -1705,13 +1668,11 @@ def test_disaggregated_chat_completion_tool_calls(disaggregated_test_root, cwd=llm_venv.get_working_directory()) -@pytest.mark.parametrize("llama_model_root", ['TinyLlama-1.1B-Chat-v1.0'], - indirect=True) +@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_kv_cache_time_output(disaggregated_test_root, llm_venv, disaggregated_example_root, llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, - "TinyLlama/TinyLlama-1.1B-Chat-v1.0") + setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") output_path = os.path.join(llm_venv.get_working_directory(), "cache_time") env = llm_venv._new_env.copy() @@ -1762,13 +1723,11 @@ def test_disaggregated_kv_cache_time_output(disaggregated_test_root, llm_venv, assert matched -@pytest.mark.parametrize("llama_model_root", ['TinyLlama-1.1B-Chat-v1.0'], - indirect=True) +@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_load_balance(disaggregated_test_root, llm_venv, disaggregated_example_root, llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, - "TinyLlama/TinyLlama-1.1B-Chat-v1.0") + setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "load_balance", @@ -1777,13 +1736,11 @@ def test_disaggregated_load_balance(disaggregated_test_root, llm_venv, cwd=llm_venv.get_working_directory()) -@pytest.mark.parametrize("llama_model_root", ['TinyLlama-1.1B-Chat-v1.0'], - indirect=True) +@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_cache_aware_balance(disaggregated_test_root, llm_venv, disaggregated_example_root, llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, - "TinyLlama/TinyLlama-1.1B-Chat-v1.0") + setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "cache_aware_balance", @@ -1792,13 +1749,11 @@ def test_disaggregated_cache_aware_balance(disaggregated_test_root, llm_venv, cwd=llm_venv.get_working_directory()) -@pytest.mark.parametrize("llama_model_root", ['TinyLlama-1.1B-Chat-v1.0'], - indirect=True) +@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_conditional(disaggregated_test_root, llm_venv, disaggregated_example_root, llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, - "TinyLlama/TinyLlama-1.1B-Chat-v1.0") + setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "conditional", @@ -1807,12 +1762,10 @@ def test_disaggregated_conditional(disaggregated_test_root, llm_venv, cwd=llm_venv.get_working_directory()) -@pytest.mark.parametrize("llama_model_root", ['TinyLlama-1.1B-Chat-v1.0'], - indirect=True) +@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_ngram(disaggregated_test_root, llm_venv, disaggregated_example_root, llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, - "TinyLlama/TinyLlama-1.1B-Chat-v1.0") + setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "ngram", env=llm_venv._new_env, @@ -1820,12 +1773,10 @@ def test_disaggregated_ngram(disaggregated_test_root, llm_venv, cwd=llm_venv.get_working_directory()) -@pytest.mark.parametrize("llama_model_root", ['TinyLlama-1.1B-Chat-v1.0'], - indirect=True) +@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_sa(disaggregated_test_root, llm_venv, disaggregated_example_root, llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, - "TinyLlama/TinyLlama-1.1B-Chat-v1.0") + setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "sa", env=llm_venv._new_env, @@ -1833,8 +1784,7 @@ def test_disaggregated_sa(disaggregated_test_root, llm_venv, cwd=llm_venv.get_working_directory()) -@pytest.mark.parametrize("llama_model_root", ['TinyLlama-1.1B-Chat-v1.0'], - indirect=True) +@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_sa_python(disaggregated_test_root, llm_venv, disaggregated_example_root, llama_model_root): """Spec-split SA (ctx no-spec, gen SA) on the V2 PYTHON transceiver path. @@ -1842,8 +1792,7 @@ def test_disaggregated_sa_python(disaggregated_test_root, llm_venv, NIXL + transceiver_runtime PYTHON. The existing test_disaggregated_sa covers this split only on the C++ DEFAULT backend. """ - setup_model_symlink(llm_venv, llama_model_root, - "TinyLlama/TinyLlama-1.1B-Chat-v1.0") + setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "sa_python", env=llm_venv._new_env, @@ -1852,13 +1801,11 @@ def test_disaggregated_sa_python(disaggregated_test_root, llm_venv, @pytest.mark.skip_less_device(4) -@pytest.mark.parametrize("llama_model_root", ['TinyLlama-1.1B-Chat-v1.0'], - indirect=True) +@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_ctxpp2_genpp2(disaggregated_test_root, llm_venv, disaggregated_example_root, llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, - "TinyLlama/TinyLlama-1.1B-Chat-v1.0") + setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "ctxpp2_genpp2", env=llm_venv._new_env, @@ -1867,13 +1814,11 @@ def test_disaggregated_ctxpp2_genpp2(disaggregated_test_root, llm_venv, @pytest.mark.skip_less_device(4) -@pytest.mark.parametrize("llama_model_root", ['TinyLlama-1.1B-Chat-v1.0'], - indirect=True) +@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_ctxtp2_genpp2(disaggregated_test_root, llm_venv, disaggregated_example_root, llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, - "TinyLlama/TinyLlama-1.1B-Chat-v1.0") + setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "ctxtp2_genpp2", env=llm_venv._new_env, @@ -1882,13 +1827,11 @@ def test_disaggregated_ctxtp2_genpp2(disaggregated_test_root, llm_venv, @pytest.mark.skip_less_device(4) -@pytest.mark.parametrize("llama_model_root", ['TinyLlama-1.1B-Chat-v1.0'], - indirect=True) +@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_ctxpp2_gentp2(disaggregated_test_root, llm_venv, disaggregated_example_root, llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, - "TinyLlama/TinyLlama-1.1B-Chat-v1.0") + setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "ctxpp2_gentp2", env=llm_venv._new_env, @@ -1897,13 +1840,11 @@ def test_disaggregated_ctxpp2_gentp2(disaggregated_test_root, llm_venv, @pytest.mark.skip_less_device(8) -@pytest.mark.parametrize("llama_model_root", ['TinyLlama-1.1B-Chat-v1.0'], - indirect=True) +@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_ctxtp2pp2_gentp2pp2(disaggregated_test_root, llm_venv, disaggregated_example_root, llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, - "TinyLlama/TinyLlama-1.1B-Chat-v1.0") + setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "ctxtp2pp2_gentp2pp2", env=llm_venv._new_env, @@ -1912,13 +1853,11 @@ def test_disaggregated_ctxtp2pp2_gentp2pp2(disaggregated_test_root, llm_venv, @pytest.mark.skip_less_device(8) -@pytest.mark.parametrize("llama_model_root", ['TinyLlama-1.1B-Chat-v1.0'], - indirect=True) +@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_ctxpp4_genpp4(disaggregated_test_root, llm_venv, disaggregated_example_root, llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, - "TinyLlama/TinyLlama-1.1B-Chat-v1.0") + setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "ctxpp4_genpp4", env=llm_venv._new_env, @@ -1928,13 +1867,11 @@ def test_disaggregated_ctxpp4_genpp4(disaggregated_test_root, llm_venv, #tiny llama pp4 will have uneven layer per pp. pp4 @pytest.mark.skip_less_device(8) -@pytest.mark.parametrize("llama_model_root", ['TinyLlama-1.1B-Chat-v1.0'], - indirect=True) +@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_ctxpp4_gentp4(disaggregated_test_root, llm_venv, disaggregated_example_root, llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, - "TinyLlama/TinyLlama-1.1B-Chat-v1.0") + setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "ctxpp4_gentp4", env=llm_venv._new_env, diff --git a/tests/integration/defs/disaggregated/test_disaggregated_etcd.py b/tests/integration/defs/disaggregated/test_disaggregated_etcd.py index ec7956ed7393..8625eabbcb7d 100644 --- a/tests/integration/defs/disaggregated/test_disaggregated_etcd.py +++ b/tests/integration/defs/disaggregated/test_disaggregated_etcd.py @@ -318,7 +318,7 @@ def run_automated_disaggregated_test(example_dir, env=None, cwd=None): kill_automated_disaggregated_processes() cleanup_automated_output_files() - config = {"model_path": "TinyLlama/TinyLlama-1.1B-Chat-v1.0"} + config = {"model_path": "Qwen3/Qwen3-0.6B"} # Create configuration files create_config_files(config) @@ -434,14 +434,13 @@ def run_automated_disaggregated_test(example_dir, env=None, cwd=None): kill_automated_disaggregated_processes() -@pytest.mark.parametrize("llama_model_root", ['TinyLlama-1.1B-Chat-v1.0'], - indirect=True) +@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_automated_disaggregated_complete(disaggregated_test_root, disaggregated_example_root, llm_venv, llama_model_root): src_dst_dict = { llama_model_root: - f"{llm_venv.get_working_directory()}/TinyLlama/TinyLlama-1.1B-Chat-v1.0", + f"{llm_venv.get_working_directory()}/Qwen3/Qwen3-0.6B", } for src, dst in src_dst_dict.items(): if not os.path.islink(dst): diff --git a/tests/integration/defs/disaggregated/test_disaggregated_single_gpu.py b/tests/integration/defs/disaggregated/test_disaggregated_single_gpu.py index 6e8913ea67ab..77fb6481a89e 100644 --- a/tests/integration/defs/disaggregated/test_disaggregated_single_gpu.py +++ b/tests/integration/defs/disaggregated/test_disaggregated_single_gpu.py @@ -55,7 +55,7 @@ def get_ucx_tls(): MODEL_PATHS = { "DeepSeek-V3-Lite-fp8": "DeepSeek-V3-Lite/fp8", - "TinyLlama-1.1B-Chat-v1.0": "llama-models-v2/TinyLlama-1.1B-Chat-v1.0", + "Qwen3-0.6B": "Qwen3/Qwen3-0.6B", "Llama-3.1-8B-Instruct": "llama-3.1-model/Llama-3.1-8B-Instruct/", "EAGLE3-LLaMA3.1-Instruct-8B": "EAGLE3-LLaMA3.1-Instruct-8B", "Qwen3-8B-FP8": "Qwen3/Qwen3-8B-FP8", @@ -625,7 +625,7 @@ def test_disaggregated_spec_dec_batch_slot_limit(model, spec_dec_model_path, print("All workers terminated.") -@pytest.mark.parametrize("model", ["TinyLlama-1.1B-Chat-v1.0"]) +@pytest.mark.parametrize("model", ["Qwen3-0.6B"]) @pytest.mark.parametrize("generation_overlap", [False, True]) def test_disaggregated_logprobs(model, generation_overlap): """Verify that logprobs propagate correctly from prefill to decode. @@ -732,7 +732,7 @@ def test_disaggregated_logprobs(model, generation_overlap): future.result() -@pytest.mark.parametrize("model", ["TinyLlama-1.1B-Chat-v1.0"]) +@pytest.mark.parametrize("model", ["Qwen3-0.6B"]) def test_disaggregated_cancel_gen_requests(model): # Test that cancelling generation requests on a saturated generation # worker completes without hangs or resource leaks. @@ -839,7 +839,7 @@ def test_disaggregated_cancel_gen_requests(model): print("All workers terminated.") -@pytest.mark.parametrize("model", ["TinyLlama-1.1B-Chat-v1.0"]) +@pytest.mark.parametrize("model", ["Qwen3-0.6B"]) @pytest.mark.parametrize("generation_overlap", [False, True]) def test_disaggregated_logits(model, generation_overlap): """Verify that generation logits propagate from prefill to decode in disagg.""" @@ -974,7 +974,7 @@ def test_disaggregated_logits(model, generation_overlap): print("All workers terminated.") -@pytest.mark.parametrize("model", ["TinyLlama-1.1B-Chat-v1.0"]) +@pytest.mark.parametrize("model", ["Qwen3-0.6B"]) @pytest.mark.parametrize("generation_overlap", [False]) def test_arbitrary_kv_cache_transfer(model, generation_overlap): """Test KV cache transfer from the reuse tree. @@ -1125,7 +1125,7 @@ def test_arbitrary_kv_cache_transfer(model, generation_overlap): print("All workers terminated.") -@pytest.mark.parametrize("model", ["TinyLlama-1.1B-Chat-v1.0"]) +@pytest.mark.parametrize("model", ["Qwen3-0.6B"]) @pytest.mark.parametrize("generation_overlap", [False]) def test_arbitrary_kv_cache_transfer_missing_blocks(model, generation_overlap): """Test that missing-block transfers fail. diff --git a/tests/integration/defs/disaggregated/test_workers.py b/tests/integration/defs/disaggregated/test_workers.py index 9660178971a8..387d9addb07b 100644 --- a/tests/integration/defs/disaggregated/test_workers.py +++ b/tests/integration/defs/disaggregated/test_workers.py @@ -231,7 +231,7 @@ def __init__(self, gen_servers: List[str], req_timeout_secs: int = DEFAULT_TIMEOUT_REQUEST, server_start_timeout_secs: int = DEFAULT_TIMEOUT_SERVER_START, - model_name: str = "TinyLlama/TinyLlama-1.1B-Chat-v1.0", + model_name: str = "Qwen3/Qwen3-0.6B", internal_request_auth_key: str | None = None): super().__init__(ctx_servers, gen_servers, req_timeout_secs, server_start_timeout_secs, internal_request_auth_key) @@ -285,7 +285,7 @@ def __init__(self, gen_servers: List[str], req_timeout_secs: int = DEFAULT_TIMEOUT_REQUEST, server_start_timeout_secs: int = DEFAULT_TIMEOUT_SERVER_START, - model_name: str = "TinyLlama/TinyLlama-1.1B-Chat-v1.0", + model_name: str = "Qwen3/Qwen3-0.6B", internal_request_auth_key: str | None = None): super().__init__(ctx_servers, gen_servers, req_timeout_secs, server_start_timeout_secs, internal_request_auth_key) @@ -406,7 +406,7 @@ def __init__(self, gen_servers: List[str], req_timeout_secs: int = DEFAULT_TIMEOUT_REQUEST, server_start_timeout_secs: int = DEFAULT_TIMEOUT_SERVER_START, - model_name: str = "TinyLlama/TinyLlama-1.1B-Chat-v1.0", + model_name: str = "Qwen3/Qwen3-0.6B", tokens_per_block: int = 32, internal_request_auth_key: str | None = None): super().__init__(ctx_servers, gen_servers, req_timeout_secs, @@ -555,7 +555,7 @@ async def test_eviction(self): def prepare_llama_model(llama_model_root: str, llm_venv): src_dst_dict = { llama_model_root: - f"{llm_venv.get_working_directory()}/TinyLlama/TinyLlama-1.1B-Chat-v1.0", + f"{llm_venv.get_working_directory()}/Qwen3/Qwen3-0.6B", } for src, dst in src_dst_dict.items(): if not os.path.islink(dst): @@ -677,8 +677,7 @@ def background_workers(llm_venv, config_file: str): @pytest.mark.skip(reason="https://nvbugs/5372970") -@pytest.mark.parametrize("llama_model_root", ['TinyLlama-1.1B-Chat-v1.0'], - indirect=True) +@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_workers_conditional_disaggregation(disaggregated_test_root, disaggregated_example_root, llm_venv, llama_model_root): @@ -725,8 +724,7 @@ def test_workers_conditional_disaggregation_deepseek_v3_lite_bf16( asyncio.run(tester.test_multi_round_request(prompts)) -@pytest.mark.parametrize("llama_model_root", ['TinyLlama-1.1B-Chat-v1.0'], - indirect=True) +@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_workers_kv_cache_events(disaggregated_test_root, disaggregated_example_root, llm_venv, llama_model_root): @@ -745,8 +743,7 @@ def test_workers_kv_cache_events(disaggregated_test_root, asyncio.run(tester.test_multi_round_request(prompts, 6)) -@pytest.mark.parametrize("llama_model_root", ['TinyLlama-1.1B-Chat-v1.0'], - indirect=True) +@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_workers_kv_cache_aware_router(disaggregated_test_root, disaggregated_example_root, llm_venv, llama_model_root): @@ -797,8 +794,7 @@ def test_workers_kv_cache_aware_router_deepseek_v3_lite_bf16( asyncio.run(tester.test_multi_round_request(prompts, 8, 4)) -@pytest.mark.parametrize("llama_model_root", ['TinyLlama-1.1B-Chat-v1.0'], - indirect=True) +@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_workers_kv_cache_aware_router_eviction(disaggregated_test_root, disaggregated_example_root, llm_venv, llama_model_root): @@ -825,7 +821,7 @@ def __init__(self, gen_servers: List[str], req_timeout_secs: int = DEFAULT_TIMEOUT_REQUEST, server_start_timeout_secs: int = DEFAULT_TIMEOUT_SERVER_START, - model_name: str = "TinyLlama/TinyLlama-1.1B-Chat-v1.0", + model_name: str = "Qwen3/Qwen3-0.6B", internal_request_auth_key: str | None = None): super().__init__(ctx_servers, gen_servers, req_timeout_secs, server_start_timeout_secs, internal_request_auth_key) @@ -1003,8 +999,7 @@ async def test_implicit_conversation_matching(self): @skip_no_hopper @pytest.mark.skip_less_device(3) -@pytest.mark.parametrize("llama_model_root", ['TinyLlama-1.1B-Chat-v1.0'], - indirect=True) +@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_workers_conversation_router(disaggregated_test_root, disaggregated_example_root, llm_venv, llama_model_root): diff --git a/tests/integration/defs/examples/run_llm_quickstart_atexit.py b/tests/integration/defs/examples/run_llm_quickstart_atexit.py index 6738d9396ee5..20119b3d7926 100644 --- a/tests/integration/defs/examples/run_llm_quickstart_atexit.py +++ b/tests/integration/defs/examples/run_llm_quickstart_atexit.py @@ -12,8 +12,7 @@ ] sampling_params = SamplingParams(temperature=0.8, top_p=0.95) - model_path = Path(os.environ.get( - "LLM_MODELS_ROOT")) / "llama-models-v2/TinyLlama-1.1B-Chat-v1.0" + model_path = Path(os.environ.get("LLM_MODELS_ROOT")) / "Qwen3/Qwen3-0.6B" print(f'model_path: {model_path}') with LLM(model=str(model_path)) as llm: diff --git a/tests/integration/defs/examples/serve/test_serve.py b/tests/integration/defs/examples/serve/test_serve.py index 7c046dff06b8..5d68212b658b 100644 --- a/tests/integration/defs/examples/serve/test_serve.py +++ b/tests/integration/defs/examples/serve/test_serve.py @@ -77,8 +77,7 @@ def wait_for_log(log_queue, expected_log, timeout=10): return False -def check_openai_chat_completion(http_port, - model_name="TinyLlama-1.1B-Chat-v1.0"): +def check_openai_chat_completion(http_port, model_name="Qwen3-0.6B"): """ Test the launched trtllm-serve server using OpenAI client. @@ -186,7 +185,7 @@ def test_env_overrides_pdl(tmp_path): environment variables to the server workers. Specifically, it sets `TRTLLM_ENABLE_PDL=1` (Programmatic Dependent Launch) via config and verifies it overrides the env var initially set to 0. - 1. This model (TinyLlama-1.1B-Chat-v1.0) architecture uses RMSNorm, which triggers 'flashinfer' kernels that use PDL when `TRTLLM_ENABLE_PDL=1`. + 1. This model (Qwen3-0.6B) architecture uses RMSNorm, which triggers 'flashinfer' kernels that use PDL when `TRTLLM_ENABLE_PDL=1`. 2. When `TRTLLM_ENABLE_PDL=1` is actually propagated into worker env, flashinfer custom ops log "PDL enabled" to stdout/stderr. """ pdl_enabled = "1" @@ -209,8 +208,7 @@ def test_env_overrides_pdl(tmp_path): }) cmd = [ - "trtllm-serve", "serve", - f"{llm_models_root()}/llama-models-v2/TinyLlama-1.1B-Chat-v1.0", + "trtllm-serve", "serve", f"{llm_models_root()}/Qwen3/Qwen3-0.6B", "--host", "0.0.0.0", "--port", str(port), "--backend", "pytorch", "--config", str(config_file) @@ -230,7 +228,7 @@ def test_env_overrides_pdl(tmp_path): check_server_ready(http_port=port, timeout_timer=300) response = OpenAI(base_url=f"http://localhost:{port}/v1", api_key="tensorrt_llm").chat.completions.create( - model="TinyLlama-1.1B-Chat-v1.0", + model="Qwen3-0.6B", messages=[{ "role": "user", "content": "Test" diff --git a/tests/integration/defs/examples/serve/test_serve_negative.py b/tests/integration/defs/examples/serve/test_serve_negative.py index dcfcb356bd08..d424cb811acd 100644 --- a/tests/integration/defs/examples/serve/test_serve_negative.py +++ b/tests/integration/defs/examples/serve/test_serve_negative.py @@ -44,7 +44,7 @@ def get_async_client(self, **kwargs): @pytest.fixture(scope="module") def model_name(): """Use TinyLlama for faster testing""" - return "llama-models-v2/TinyLlama-1.1B-Chat-v1.0" + return "Qwen3/Qwen3-0.6B" @pytest.fixture(scope="module") diff --git a/tests/integration/defs/examples/test_ad_guided_decoding.py b/tests/integration/defs/examples/test_ad_guided_decoding.py index fbf2211dd3ec..b359d5407c63 100644 --- a/tests/integration/defs/examples/test_ad_guided_decoding.py +++ b/tests/integration/defs/examples/test_ad_guided_decoding.py @@ -32,8 +32,7 @@ def test_autodeploy_guided_decoding_main_json(): '"bandwidth": {"title": "Bandwidth", "type": "string"}}, ' '"required": ["ssid", "securityProtocol", "bandwidth"]}') - model_path = os.path.join(llm_models_root(), - "llama-models-v2/TinyLlama-1.1B-Chat-v1.0") + model_path = os.path.join(llm_models_root(), "Qwen3/Qwen3-0.6B") print(f"model_path: {model_path}") llm_args = { diff --git a/tests/integration/defs/examples/test_llm_api_with_mpi.py b/tests/integration/defs/examples/test_llm_api_with_mpi.py index 6be110a9cce0..60da32694797 100644 --- a/tests/integration/defs/examples/test_llm_api_with_mpi.py +++ b/tests/integration/defs/examples/test_llm_api_with_mpi.py @@ -19,13 +19,12 @@ from defs.common import venv_mpi_check_call -@pytest.mark.parametrize("llama_model_root", ['TinyLlama-1.1B-Chat-v1.0'], - indirect=True) +@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_llm_api_single_gpu_with_mpirun(llmapi_example_root, llm_venv, llama_model_root): src_dst_dict = { llama_model_root: - f"{llm_venv.get_working_directory()}/TinyLlama/TinyLlama-1.1B-Chat-v1.0", + f"{llm_venv.get_working_directory()}/Qwen3/Qwen3-0.6B", } for src, dst in src_dst_dict.items(): if not os.path.islink(dst): diff --git a/tests/integration/defs/examples/test_ray.py b/tests/integration/defs/examples/test_ray.py index 201192d5fdd1..3e7a00ac30b8 100644 --- a/tests/integration/defs/examples/test_ray.py +++ b/tests/integration/defs/examples/test_ray.py @@ -31,7 +31,7 @@ def ray_example_root(llm_root): def test_llm_inference_async_ray(ray_example_root, llm_venv): script_path = os.path.join(ray_example_root, "llm_inference_async_ray.py") - model_path = f"{llm_models_root()}/llama-models-v2/TinyLlama-1.1B-Chat-v1.0" + model_path = f"{llm_models_root()}/Qwen3/Qwen3-0.6B" venv_check_call(llm_venv, [script_path, "--model", model_path]) @@ -64,7 +64,7 @@ def test_llm_inference_distributed_ray(ray_example_root, llm_venv, tp_size, model_dir = f"{llm_models_root()}/DeepSeek-V3-Lite/bf16" cmd.extend(["--model_dir", model_dir]) else: - model_dir = f"{llm_models_root()}/llama-models-v2/TinyLlama-1.1B-Chat-v1.0" + model_dir = f"{llm_models_root()}/Qwen3/Qwen3-0.6B" cmd.extend(["--model_dir", model_dir]) venv_check_call(llm_venv, cmd) @@ -171,7 +171,7 @@ def _run_ray_disaggregated_serving(ray_example_root, tp_size, disagg_dir = os.path.join(ray_example_root, "disaggregated") script_path = os.path.join(disagg_dir, "disagg_serving_local.sh") - model_dir = f"{llm_models_root()}/llama-models-v2/TinyLlama-1.1B-Chat-v1.0" + model_dir = f"{llm_models_root()}/Qwen3/Qwen3-0.6B" try: runtime_env = { @@ -229,7 +229,7 @@ def _run_completion_requests(): async def send_request(session, prompt): payload = { - "model": "TinyLlama-1.1B-Chat-v1.0", + "model": "Qwen3-0.6B", "prompt": prompt, "max_tokens": max_tokens, "temperature": 0, diff --git a/tests/integration/defs/kv_cache/test_final_single_token_context_cuda_graph.py b/tests/integration/defs/kv_cache/test_final_single_token_context_cuda_graph.py index 8cfede2bdb22..bc86b3e608ee 100644 --- a/tests/integration/defs/kv_cache/test_final_single_token_context_cuda_graph.py +++ b/tests/integration/defs/kv_cache/test_final_single_token_context_cuda_graph.py @@ -41,7 +41,7 @@ from ..conftest import llm_models_root -MODEL = f"{llm_models_root()}/llama-models-v2/TinyLlama-1.1B-Chat-v1.0" +MODEL = f"{llm_models_root()}/Qwen3/Qwen3-0.6B" SPEC_MODEL = f"{llm_models_root()}/Qwen3/Qwen3-8B" EAGLE3_MODEL = f"{llm_models_root()}/Qwen3/qwen3_8b_eagle3" PROMPT_TOKEN_IDS = [1] + [42] * 63 + [43] diff --git a/tests/integration/defs/kv_cache/test_kv_cache_iteration_stats.py b/tests/integration/defs/kv_cache/test_kv_cache_iteration_stats.py index 6319aa85976e..e9e1c7a3b523 100644 --- a/tests/integration/defs/kv_cache/test_kv_cache_iteration_stats.py +++ b/tests/integration/defs/kv_cache/test_kv_cache_iteration_stats.py @@ -42,7 +42,7 @@ from ..conftest import llm_models_root -MODEL = f"{llm_models_root()}/llama-models-v2/TinyLlama-1.1B-Chat-v1.0" +MODEL = f"{llm_models_root()}/Qwen3/Qwen3-0.6B" ALL_FIELDS = [ # Instantaneous gauges — primary (GPU) pool diff --git a/tests/integration/defs/llmapi/test_llm_examples.py b/tests/integration/defs/llmapi/test_llm_examples.py index 36f12ccd1905..5b46ae17b3f2 100644 --- a/tests/integration/defs/llmapi/test_llm_examples.py +++ b/tests/integration/defs/llmapi/test_llm_examples.py @@ -52,9 +52,9 @@ def _run_llmapi_example(llm_root, engine_dir, llm_venv, script_name: str, # Create llm models softlink to avoid duplicated downloading for llm api example src_dst_dict = { - # TinyLlama-1.1B-Chat-v1.0 - f"{llm_models_root()}/llama-models-v2/TinyLlama-1.1B-Chat-v1.0": - f"{llm_venv.get_working_directory()}/TinyLlama/TinyLlama-1.1B-Chat-v1.0", + # Qwen3-0.6B + f"{llm_models_root()}/Qwen3/Qwen3-0.6B": + f"{llm_venv.get_working_directory()}/Qwen3/Qwen3-0.6B", # vicuna-7b-v1.3 f"{llm_models_root()}/vicuna-7b-v1.3": f"{llm_venv.get_working_directory()}/lmsys/vicuna-7b-v1.3", diff --git a/tests/integration/defs/model_express/test_model_express.py b/tests/integration/defs/model_express/test_model_express.py index 1e47e7ef392d..8ba63b5349e6 100644 --- a/tests/integration/defs/model_express/test_model_express.py +++ b/tests/integration/defs/model_express/test_model_express.py @@ -96,7 +96,7 @@ class MxE2ECase: pytest.param( MxE2ECase( model_env="TRTLLM_MX_LLAMA_MODEL", - default_model_subdir="llama-models-v2/TinyLlama-1.1B-Chat-v1.0", + default_model_subdir="Qwen3/Qwen3-0.6B", repository_cache_prefix="models--trtllm-mx-e2e--llama-tp1", tp_size=1, ), @@ -106,7 +106,7 @@ class MxE2ECase: pytest.param( MxE2ECase( model_env="TRTLLM_MX_LLAMA_MODEL", - default_model_subdir="llama-models-v2/TinyLlama-1.1B-Chat-v1.0", + default_model_subdir="Qwen3/Qwen3-0.6B", repository_cache_prefix="models--trtllm-mx-e2e--llama-tp2", tp_size=2, ), diff --git a/tests/integration/defs/perf/test_perf.py b/tests/integration/defs/perf/test_perf.py index e2eeebd6211f..498fa606350f 100644 --- a/tests/integration/defs/perf/test_perf.py +++ b/tests/integration/defs/perf/test_perf.py @@ -1122,8 +1122,8 @@ def get_prepare_data_command(self, engine_dir, input_len, elif self._config.model_name in HF_MODEL_PATH.keys(): tokenizer_dir = HF_MODEL_PATH[self._config.model_name] else: - tokenizer_dir = os.path.join(llm_models_root(), "llama-models-v2", - "TinyLlama-1.1B-Chat-v1.0") + tokenizer_dir = os.path.join(llm_models_root(), "Qwen3", + "Qwen3-0.6B") if not os.path.exists(engine_dir): os.makedirs(engine_dir, exist_ok=True) diff --git a/tests/integration/defs/stress_test/stress_test.py b/tests/integration/defs/stress_test/stress_test.py index 46ff03b6a976..9628fc1fd64a 100644 --- a/tests/integration/defs/stress_test/stress_test.py +++ b/tests/integration/defs/stress_test/stress_test.py @@ -431,9 +431,8 @@ def is_port_available(port: int, [ # Configuration for TinyLlama model # memory_requirement is in MiB (12 GB = 12288 MiB) - ModelConfig(model_dir="llama-models-v2/TinyLlama-1.1B-Chat-v1.0", - tp_size=1, - memory_requirement=12288), + ModelConfig( + model_dir="Qwen3/Qwen3-0.6B", tp_size=1, memory_requirement=12288), # Configuration for Qwen3.5-4B # memory_requirement is in MiB (12 GB = 12288 MiB) ModelConfig(model_dir="Qwen3.5-4B", tp_size=1, diff --git a/tests/integration/defs/test_e2e.py b/tests/integration/defs/test_e2e.py index 92f83e4f9418..6481527dde8a 100644 --- a/tests/integration/defs/test_e2e.py +++ b/tests/integration/defs/test_e2e.py @@ -241,10 +241,9 @@ def parse_benchmark_output(self, output): return result -@pytest.mark.parametrize( - "model_name, llama_model_root", - [pytest.param("TinyLlama-1.1B-Chat-v1.0", "TinyLlama-1.1B-Chat-v1.0")], - indirect=["llama_model_root"]) +@pytest.mark.parametrize("model_name, llama_model_root", + [pytest.param("Qwen3-0.6B", "Qwen3-0.6B")], + indirect=["llama_model_root"]) def test_trtllm_bench_invalid_token_pytorch(llm_root, llm_venv, model_name, llama_model_root): # Prepare dataset with invalid tokens diff --git a/tests/integration/defs/triton_server/conftest.py b/tests/integration/defs/triton_server/conftest.py index 59188db72eec..f65d138b57c4 100644 --- a/tests/integration/defs/triton_server/conftest.py +++ b/tests/integration/defs/triton_server/conftest.py @@ -331,12 +331,33 @@ def gpt_2b_lora_model_root(): return gpt_2b_lora_model_root +@pytest.fixture(scope="session") +def tiny_llama_lora_base_model_root(): + """Base model for the TinyLlama-1.1B-Chat-v1.0 LoRA adapter. + + Kept separate from `tiny_llama_model_root` because the LoRA adapter + returned by `tiny_llama_lora_model_root` is fine-tuned specifically + for TinyLlama-1.1B-Chat-v1.0 and has no Qwen3-0.6B equivalent. + """ + models_root = llm_models_root() + assert models_root, "Did you set LLM_MODELS_ROOT?" + tiny_llama_lora_base_model_root = os.path.join(models_root, + "llama-models-v2", + "TinyLlama-1.1B-Chat-v1.0") + + assert os.path.exists( + tiny_llama_lora_base_model_root + ), f"{tiny_llama_lora_base_model_root} does not exist under NFS LLM_MODELS_ROOT dir" + return tiny_llama_lora_base_model_root + + @pytest.fixture(scope="session") def tiny_llama_lora_model_root(): """HF-format LoRA adapter for TinyLlama-1.1B-Chat-v1.0. Used by the llmapi triton backend's E2E LoRA test - (`test_llmapi_lora`). Same base model as `tiny_llama_model_root`. + (`test_llmapi_lora`). Same base model as + `tiny_llama_lora_base_model_root`. """ models_root = llm_models_root() assert models_root, "Did you set LLM_MODELS_ROOT?" @@ -466,8 +487,7 @@ def whisper_large_model_root(): def tiny_llama_model_root(): models_root = llm_models_root() assert models_root, "Did you set LLM_MODELS_ROOT?" - tiny_llama_model_root = os.path.join(models_root, "llama-models-v2", - "TinyLlama-1.1B-Chat-v1.0") + tiny_llama_model_root = os.path.join(models_root, "Qwen3", "Qwen3-0.6B") assert os.path.exists( tiny_llama_model_root diff --git a/tests/integration/defs/triton_server/test_triton_llmapi.py b/tests/integration/defs/triton_server/test_triton_llmapi.py index e637efddbbe7..8d68c18145f2 100644 --- a/tests/integration/defs/triton_server/test_triton_llmapi.py +++ b/tests/integration/defs/triton_server/test_triton_llmapi.py @@ -185,7 +185,7 @@ def test_llmapi_lora( TENSOR_PARALLEL_SIZE, llm_backend_inflight_batcher_llm_root, llm_backend_venv, - tiny_llama_model_root, + tiny_llama_lora_base_model_root, tiny_llama_lora_model_root, ): """E2E LoRA test for the new llmapi triton backend. @@ -213,7 +213,7 @@ def test_llmapi_lora( model_config["triton_config"]["max_batch_size"] = 0 model_config["tensor_parallel_size"] = int(TENSOR_PARALLEL_SIZE) model_config["kv_cache_config"] = {"free_gpu_memory_fraction": 0.8} - model_config["model"] = tiny_llama_model_root + model_config["model"] = tiny_llama_lora_base_model_root model_config["lora_config"] = { "lora_dir": [tiny_llama_lora_model_root], "max_lora_rank": 64, diff --git a/tests/integration/test_lists/qa/llm_function_core.txt b/tests/integration/test_lists/qa/llm_function_core.txt index f8055658d371..d2df4a7f0285 100644 --- a/tests/integration/test_lists/qa/llm_function_core.txt +++ b/tests/integration/test_lists/qa/llm_function_core.txt @@ -640,9 +640,7 @@ accuracy/test_llm_api_pytorch.py::TestQwen3_8_Flash_Next::test_nvfp4_adp4_mtp3_t accuracy/test_llm_api_pytorch.py::TestSeedOss_36B::test_auto_dtype accuracy/test_llm_api_pytorch.py::TestStep3p7SpeculativeDecoding::test_guided_decoding TIMEOUT (60) accuracy/test_llm_api_pytorch.py::TestStep3p7SpeculativeDecoding::test_step3p7_mtp TIMEOUT (60) -accuracy/test_llm_api_pytorch_encode.py::TestDecoderEncode::test_decoder_encode_cuda_graph_matches_eager_logits[tinyllama-1.1b] accuracy/test_llm_api_pytorch_encode.py::TestDecoderEncode::test_decoder_encode_matches_huggingface[qwen3-0.6b] -accuracy/test_llm_api_pytorch_encode.py::TestDecoderEncode::test_decoder_encode_matches_huggingface[tinyllama-1.1b] accuracy/test_llm_api_pytorch_encode.py::TestEncoderEncode::test_encoder_encode_cuda_graph_matches_eager_logits[bert-yelp] accuracy/test_llm_api_pytorch_encode.py::TestEncoderEncode::test_encoder_encode_matches_huggingface_classification[bert-yelp-cuda_graph] accuracy/test_llm_api_pytorch_encode.py::TestEncoderEncode::test_encoder_encode_matches_huggingface_classification[bert-yelp-eager] @@ -694,18 +692,18 @@ disaggregated/test_auto_scaling.py::test_worker_restart[etcd-round_robin] disaggregated/test_auto_scaling.py::test_worker_restart[http-kv_cache_aware] disaggregated/test_auto_scaling.py::test_worker_restart[http-load_balancing] disaggregated/test_auto_scaling.py::test_worker_restart[http-round_robin] -disaggregated/test_disaggregated.py::test_disaggregated_benchmark_gen_only_insufficient_kv[TinyLlama-1.1B-Chat-v1.0] -disaggregated/test_disaggregated.py::test_disaggregated_cache_aware_balance[TinyLlama-1.1B-Chat-v1.0] +disaggregated/test_disaggregated.py::test_disaggregated_benchmark_gen_only_insufficient_kv[Qwen3-0.6B] +disaggregated/test_disaggregated.py::test_disaggregated_cache_aware_balance[Qwen3-0.6B] disaggregated/test_disaggregated.py::test_disaggregated_cancel_large_context_requests[DeepSeek-V3-Lite-bf16] -disaggregated/test_disaggregated.py::test_disaggregated_chat_completion_tool_calls[TinyLlama-1.1B-Chat-v1.0] -disaggregated/test_disaggregated.py::test_disaggregated_conditional[TinyLlama-1.1B-Chat-v1.0] -disaggregated/test_disaggregated.py::test_disaggregated_ctxpp2_genpp2[TinyLlama-1.1B-Chat-v1.0] -disaggregated/test_disaggregated.py::test_disaggregated_ctxpp2_gentp2[TinyLlama-1.1B-Chat-v1.0] -disaggregated/test_disaggregated.py::test_disaggregated_ctxpp4_genpp4[TinyLlama-1.1B-Chat-v1.0] -disaggregated/test_disaggregated.py::test_disaggregated_ctxpp4_gentp4[TinyLlama-1.1B-Chat-v1.0] -disaggregated/test_disaggregated.py::test_disaggregated_ctxtp2_genpp2[TinyLlama-1.1B-Chat-v1.0] -disaggregated/test_disaggregated.py::test_disaggregated_ctxtp2pp2_gentp2pp2[TinyLlama-1.1B-Chat-v1.0] -disaggregated/test_disaggregated.py::test_disaggregated_cuda_graph[TinyLlama-1.1B-Chat-v1.0] +disaggregated/test_disaggregated.py::test_disaggregated_chat_completion_tool_calls[Qwen3-0.6B] +disaggregated/test_disaggregated.py::test_disaggregated_conditional[Qwen3-0.6B] +disaggregated/test_disaggregated.py::test_disaggregated_ctxpp2_genpp2[Qwen3-0.6B] +disaggregated/test_disaggregated.py::test_disaggregated_ctxpp2_gentp2[Qwen3-0.6B] +disaggregated/test_disaggregated.py::test_disaggregated_ctxpp4_genpp4[Qwen3-0.6B] +disaggregated/test_disaggregated.py::test_disaggregated_ctxpp4_gentp4[Qwen3-0.6B] +disaggregated/test_disaggregated.py::test_disaggregated_ctxtp2_genpp2[Qwen3-0.6B] +disaggregated/test_disaggregated.py::test_disaggregated_ctxtp2pp2_gentp2pp2[Qwen3-0.6B] +disaggregated/test_disaggregated.py::test_disaggregated_cuda_graph[Qwen3-0.6B] disaggregated/test_disaggregated.py::test_disaggregated_deepseek_v3_lite_bf16_cache_aware_balance[DeepSeek-V3-Lite-bf16] disaggregated/test_disaggregated.py::test_disaggregated_deepseek_v3_lite_bf16_conditional[DeepSeek-V3-Lite-bf16] disaggregated/test_disaggregated.py::test_disaggregated_deepseek_v3_lite_bf16_conditional_v2[DeepSeek-V3-Lite-bf16] @@ -727,39 +725,39 @@ disaggregated/test_disaggregated.py::test_disaggregated_deepseek_v3_lite_fp8_tp1 disaggregated/test_disaggregated.py::test_disaggregated_deepseek_v3_lite_fp8_tp1_single_gpu[DeepSeek-V3-Lite-fp8] disaggregated/test_disaggregated.py::test_disaggregated_deepseek_v3_lite_fp8_tp1_single_gpu_mtp[DeepSeek-V3-Lite-fp8] disaggregated/test_disaggregated.py::test_disaggregated_deepseek_v3_lite_fp8_tp1_two_mtp[DeepSeek-V3-Lite-fp8] -disaggregated/test_disaggregated.py::test_disaggregated_diff_max_tokens[TinyLlama-1.1B-Chat-v1.0] -disaggregated/test_disaggregated.py::test_disaggregated_genbs1[TinyLlama-1.1B-Chat-v1.0] +disaggregated/test_disaggregated.py::test_disaggregated_diff_max_tokens[Qwen3-0.6B] +disaggregated/test_disaggregated.py::test_disaggregated_genbs1[Qwen3-0.6B] disaggregated/test_disaggregated.py::test_disaggregated_gpt_oss_120b_harmony[gpt_oss/gpt-oss-120b] -disaggregated/test_disaggregated.py::test_disaggregated_kv_cache_time_output[TinyLlama-1.1B-Chat-v1.0] -disaggregated/test_disaggregated.py::test_disaggregated_load_balance[TinyLlama-1.1B-Chat-v1.0] +disaggregated/test_disaggregated.py::test_disaggregated_kv_cache_time_output[Qwen3-0.6B] +disaggregated/test_disaggregated.py::test_disaggregated_load_balance[Qwen3-0.6B] disaggregated/test_disaggregated.py::test_disaggregated_logprobs_serving[llama-3.1-8b-instruct] disaggregated/test_disaggregated.py::test_disaggregated_mamba_bs1_concurrency2 disaggregated/test_disaggregated.py::test_disaggregated_mamba_conc_greater_than_mbs[NVIDIA-Nemotron-3-Super-120B-A12B-FP8] -disaggregated/test_disaggregated.py::test_disaggregated_mixed[TinyLlama-1.1B-Chat-v1.0] +disaggregated/test_disaggregated.py::test_disaggregated_mixed[Qwen3-0.6B] disaggregated/test_disaggregated.py::test_disaggregated_mixed_stress_test[req120-conc64-qwen3_32b_fp8_mixed_stress] -disaggregated/test_disaggregated.py::test_disaggregated_multi_gpu[TinyLlama-1.1B-Chat-v1.0] -disaggregated/test_disaggregated.py::test_disaggregated_ngram[TinyLlama-1.1B-Chat-v1.0] -disaggregated/test_disaggregated.py::test_disaggregated_overlap[TinyLlama-1.1B-Chat-v1.0] -disaggregated/test_disaggregated.py::test_disaggregated_overlap_gen_first[ctx_pp1-TinyLlama-1.1B-Chat-v1.0] -disaggregated/test_disaggregated.py::test_disaggregated_overlap_gen_first[ctx_pp4-TinyLlama-1.1B-Chat-v1.0] -disaggregated/test_disaggregated.py::test_disaggregated_overlap_transceiver_runtime_python[TinyLlama-1.1B-Chat-v1.0] -disaggregated/test_disaggregated.py::test_disaggregated_overlap_transceiver_runtime_python_bounce[TinyLlama-1.1B-Chat-v1.0] -disaggregated/test_disaggregated.py::test_disaggregated_overlap_transceiver_runtime_python_fabric_memory[TinyLlama-1.1B-Chat-v1.0] -disaggregated/test_disaggregated.py::test_disaggregated_perf_metrics[TinyLlama-1.1B-Chat-v1.0] -disaggregated/test_disaggregated.py::test_disaggregated_python_transceiver_host_offload[TinyLlama-1.1B-Chat-v1.0] +disaggregated/test_disaggregated.py::test_disaggregated_multi_gpu[Qwen3-0.6B] +disaggregated/test_disaggregated.py::test_disaggregated_ngram[Qwen3-0.6B] +disaggregated/test_disaggregated.py::test_disaggregated_overlap[Qwen3-0.6B] +disaggregated/test_disaggregated.py::test_disaggregated_overlap_gen_first[ctx_pp1-Qwen3-0.6B] +disaggregated/test_disaggregated.py::test_disaggregated_overlap_gen_first[ctx_pp4-Qwen3-0.6B] +disaggregated/test_disaggregated.py::test_disaggregated_overlap_transceiver_runtime_python[Qwen3-0.6B] +disaggregated/test_disaggregated.py::test_disaggregated_overlap_transceiver_runtime_python_bounce[Qwen3-0.6B] +disaggregated/test_disaggregated.py::test_disaggregated_overlap_transceiver_runtime_python_fabric_memory[Qwen3-0.6B] +disaggregated/test_disaggregated.py::test_disaggregated_perf_metrics[Qwen3-0.6B] +disaggregated/test_disaggregated.py::test_disaggregated_python_transceiver_host_offload[Qwen3-0.6B] disaggregated/test_disaggregated.py::test_disaggregated_qwen3_32b_fp8[Qwen3/Qwen3-32B-FP8] -disaggregated/test_disaggregated.py::test_disaggregated_sa[TinyLlama-1.1B-Chat-v1.0] -disaggregated/test_disaggregated.py::test_disaggregated_sa_python[TinyLlama-1.1B-Chat-v1.0] -disaggregated/test_disaggregated.py::test_disaggregated_single_gpu[TinyLlama-1.1B-Chat-v1.0] -disaggregated/test_disaggregated.py::test_disaggregated_tinyllama_multi_orchestrator[TinyLlama-1.1B-Chat-v1.0] -disaggregated/test_disaggregated_single_gpu.py::test_arbitrary_kv_cache_transfer[False-TinyLlama-1.1B-Chat-v1.0] -disaggregated/test_disaggregated_single_gpu.py::test_arbitrary_kv_cache_transfer_missing_blocks[False-TinyLlama-1.1B-Chat-v1.0] -disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_cancel_gen_requests[TinyLlama-1.1B-Chat-v1.0] +disaggregated/test_disaggregated.py::test_disaggregated_sa[Qwen3-0.6B] +disaggregated/test_disaggregated.py::test_disaggregated_sa_python[Qwen3-0.6B] +disaggregated/test_disaggregated.py::test_disaggregated_single_gpu[Qwen3-0.6B] +disaggregated/test_disaggregated.py::test_disaggregated_tinyllama_multi_orchestrator[Qwen3-0.6B] +disaggregated/test_disaggregated_single_gpu.py::test_arbitrary_kv_cache_transfer[False-Qwen3-0.6B] +disaggregated/test_disaggregated_single_gpu.py::test_arbitrary_kv_cache_transfer_missing_blocks[False-Qwen3-0.6B] +disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_cancel_gen_requests[Qwen3-0.6B] disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_llama_context_capacity[False-False-DeepSeek-V3-Lite-fp8/fp8] -disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_logits[False-TinyLlama-1.1B-Chat-v1.0] -disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_logits[True-TinyLlama-1.1B-Chat-v1.0] -disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_logprobs[False-TinyLlama-1.1B-Chat-v1.0] -disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_logprobs[True-TinyLlama-1.1B-Chat-v1.0] +disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_logits[False-Qwen3-0.6B] +disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_logits[True-Qwen3-0.6B] +disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_logprobs[False-Qwen3-0.6B] +disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_logprobs[True-Qwen3-0.6B] disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_deepseek[False-False-DeepSeek-V3-Lite-fp8/fp8] disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_deepseek[False-True-DeepSeek-V3-Lite-fp8/fp8] disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_deepseek[True-False-DeepSeek-V3-Lite-fp8/fp8] @@ -773,13 +771,13 @@ disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_qwen3[ disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_qwen3[True-False-Qwen3-8B-FP8] disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_qwen3[True-True-Qwen3-8B-FP8] disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_spec_dec_batch_slot_limit[False-EAGLE3-LLaMA3.1-Instruct-8B-Llama-3.1-8B-Instruct] -disaggregated/test_workers.py::test_workers_conditional_disaggregation[TinyLlama-1.1B-Chat-v1.0] +disaggregated/test_workers.py::test_workers_conditional_disaggregation[Qwen3-0.6B] disaggregated/test_workers.py::test_workers_conditional_disaggregation_deepseek_v3_lite_bf16[DeepSeek-V3-Lite-bf16] -disaggregated/test_workers.py::test_workers_conversation_router[TinyLlama-1.1B-Chat-v1.0] -disaggregated/test_workers.py::test_workers_kv_cache_aware_router[TinyLlama-1.1B-Chat-v1.0] +disaggregated/test_workers.py::test_workers_conversation_router[Qwen3-0.6B] +disaggregated/test_workers.py::test_workers_kv_cache_aware_router[Qwen3-0.6B] disaggregated/test_workers.py::test_workers_kv_cache_aware_router_deepseek_v3_lite_bf16[DeepSeek-V3-Lite-bf16] -disaggregated/test_workers.py::test_workers_kv_cache_aware_router_eviction[TinyLlama-1.1B-Chat-v1.0] -disaggregated/test_workers.py::test_workers_kv_cache_events[TinyLlama-1.1B-Chat-v1.0] +disaggregated/test_workers.py::test_workers_kv_cache_aware_router_eviction[Qwen3-0.6B] +disaggregated/test_workers.py::test_workers_kv_cache_events[Qwen3-0.6B] kv_cache/test_prefix_aware_scheduling.py::TestServePrefixAwareScheduling::test_multi_round_qa_shared_prefix_smoke llmapi/test_llm_api_pytorch_moe_lora.py::test_qwen_moe_routed_expert_multi_lora_varying_ranks[cudagraph] TIMEOUT (300) llmapi/test_llm_api_pytorch_moe_lora.py::test_qwen_moe_routed_expert_multi_lora_varying_ranks[eager] TIMEOUT (300) diff --git a/tests/integration/test_lists/test-db/l0_a10.yml b/tests/integration/test_lists/test-db/l0_a10.yml index 6f5a7fad9ede..1bf30e9a0922 100644 --- a/tests/integration/test_lists/test-db/l0_a10.yml +++ b/tests/integration/test_lists/test-db/l0_a10.yml @@ -83,29 +83,29 @@ l0_a10: - unittest/tools/test_unittest_culprits.py - unittest/usage/test_transport.py - unittest/usage/test_e2e_capture.py - - disaggregated/test_disaggregated.py::test_disaggregated_single_gpu[TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_disaggregated.py::test_disaggregated_cuda_graph[TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_disaggregated.py::test_disaggregated_mixed[TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_disaggregated.py::test_disaggregated_overlap[TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_disaggregated.py::test_disaggregated_diff_max_tokens[TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_disaggregated.py::test_disaggregated_kv_cache_time_output[TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_disaggregated.py::test_disaggregated_perf_metrics[TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_disaggregated.py::test_disaggregated_cache_aware_balance[TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_disaggregated.py::test_disaggregated_conditional[TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_disaggregated.py::test_disaggregated_benchmark_gen_only_insufficient_kv[TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_disaggregated.py::test_disaggregated_ngram[TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_disaggregated.py::test_disaggregated_sa[TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_disaggregated.py::test_disaggregated_chat_completion_tool_calls[TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_workers.py::test_workers_conditional_disaggregation[TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_workers.py::test_workers_kv_cache_events[TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_workers.py::test_workers_kv_cache_aware_router[TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_workers.py::test_workers_kv_cache_aware_router_eviction[TinyLlama-1.1B-Chat-v1.0] + - disaggregated/test_disaggregated.py::test_disaggregated_single_gpu[Qwen3-0.6B] + - disaggregated/test_disaggregated.py::test_disaggregated_cuda_graph[Qwen3-0.6B] + - disaggregated/test_disaggregated.py::test_disaggregated_mixed[Qwen3-0.6B] + - disaggregated/test_disaggregated.py::test_disaggregated_overlap[Qwen3-0.6B] + - disaggregated/test_disaggregated.py::test_disaggregated_diff_max_tokens[Qwen3-0.6B] + - disaggregated/test_disaggregated.py::test_disaggregated_kv_cache_time_output[Qwen3-0.6B] + - disaggregated/test_disaggregated.py::test_disaggregated_perf_metrics[Qwen3-0.6B] + - disaggregated/test_disaggregated.py::test_disaggregated_cache_aware_balance[Qwen3-0.6B] + - disaggregated/test_disaggregated.py::test_disaggregated_conditional[Qwen3-0.6B] + - disaggregated/test_disaggregated.py::test_disaggregated_benchmark_gen_only_insufficient_kv[Qwen3-0.6B] + - disaggregated/test_disaggregated.py::test_disaggregated_ngram[Qwen3-0.6B] + - disaggregated/test_disaggregated.py::test_disaggregated_sa[Qwen3-0.6B] + - disaggregated/test_disaggregated.py::test_disaggregated_chat_completion_tool_calls[Qwen3-0.6B] + - disaggregated/test_workers.py::test_workers_conditional_disaggregation[Qwen3-0.6B] + - disaggregated/test_workers.py::test_workers_kv_cache_events[Qwen3-0.6B] + - disaggregated/test_workers.py::test_workers_kv_cache_aware_router[Qwen3-0.6B] + - disaggregated/test_workers.py::test_workers_kv_cache_aware_router_eviction[Qwen3-0.6B] - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_llama[False-False-TinyLlama-1.1B-Chat-v1.0] - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_llama[False-True-TinyLlama-1.1B-Chat-v1.0] - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_llama[True-False-TinyLlama-1.1B-Chat-v1.0] - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_llama[True-True-TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_disaggregated_single_gpu.py::test_arbitrary_kv_cache_transfer[False-TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_disaggregated_single_gpu.py::test_arbitrary_kv_cache_transfer_missing_blocks[False-TinyLlama-1.1B-Chat-v1.0] + - disaggregated/test_disaggregated_single_gpu.py::test_arbitrary_kv_cache_transfer[False-Qwen3-0.6B] + - disaggregated/test_disaggregated_single_gpu.py::test_arbitrary_kv_cache_transfer_missing_blocks[False-Qwen3-0.6B] - test_e2e.py::test_get_ci_container_port - test_e2e.py::test_openai_chat_multimodal_example ISOLATION - test_e2e.py::test_openai_mmencoder_example @@ -124,7 +124,7 @@ l0_a10: - test_e2e.py::test_openai_completions_example[pytorch] - test_e2e.py::test_openai_chat_example[pytorch] TIMEOUT (90) - test_e2e.py::test_trtllm_bench_request_rate_and_concurrency[enable_concurrency-] - - test_e2e.py::test_trtllm_bench_invalid_token_pytorch[TinyLlama-1.1B-Chat-v1.0-TinyLlama-1.1B-Chat-v1.0] + - test_e2e.py::test_trtllm_bench_invalid_token_pytorch[Qwen3-0.6B-Qwen3-0.6B] # visual_gen - unittest/_torch/visual_gen/test_profiler.py - unittest/visual_gen/test_iteration_stats.py diff --git a/tests/integration/test_lists/test-db/l0_a100.yml b/tests/integration/test_lists/test-db/l0_a100.yml index 2b0c7fd7359c..a5098581a4a3 100644 --- a/tests/integration/test_lists/test-db/l0_a100.yml +++ b/tests/integration/test_lists/test-db/l0_a100.yml @@ -32,9 +32,7 @@ l0_a100: - accuracy/test_llm_api_pytorch_encode.py::TestEncoderEncode::test_encoder_encode_matches_huggingface_classification[bert-yelp-eager] - accuracy/test_llm_api_pytorch_encode.py::TestEncoderEncode::test_encoder_encode_matches_huggingface_classification[bert-yelp-cuda_graph] - accuracy/test_llm_api_pytorch_encode.py::TestEncoderEncode::test_encoder_encode_cuda_graph_matches_eager_logits[bert-yelp] - - accuracy/test_llm_api_pytorch_encode.py::TestDecoderEncode::test_decoder_encode_matches_huggingface[tinyllama-1.1b] - accuracy/test_llm_api_pytorch_encode.py::TestDecoderEncode::test_decoder_encode_matches_huggingface[qwen3-0.6b] - - accuracy/test_llm_api_pytorch_encode.py::TestDecoderEncode::test_decoder_encode_cuda_graph_matches_eager_logits[tinyllama-1.1b] # Moved from l0_a10.yml: Llama-7B + KV cache + spec resources OOM on A10's 22 GB. - test_e2e.py::test_openai_lora - test_e2e.py::test_trtllm_serve_lora_example diff --git a/tests/integration/test_lists/test-db/l0_b200.yml b/tests/integration/test_lists/test-db/l0_b200.yml index 61f0da648d58..975d77ac1c49 100644 --- a/tests/integration/test_lists/test-db/l0_b200.yml +++ b/tests/integration/test_lists/test-db/l0_b200.yml @@ -80,7 +80,7 @@ l0_b200: - accuracy/test_epd_disagg_multimodal.py::TestVideoMMEEPD::test_disaggregated_videomme[qwen3vl_2b_instruct] - accuracy/test_epd_disagg_multimodal.py::TestVideoMMEEPD::test_disaggregated_videomme[nemotron_nano_v3_omni_nvfp4] - accuracy/test_llm_api_pytorch.py::TestQwen3_5_35B_A3B::test_bf16_mtp - - disaggregated/test_workers.py::test_workers_kv_cache_aware_router_eviction[TinyLlama-1.1B-Chat-v1.0] # nvbugs 5300551 + - disaggregated/test_workers.py::test_workers_kv_cache_aware_router_eviction[Qwen3-0.6B] # nvbugs 5300551 - test_e2e.py::test_ptp_quickstart_advanced[Llama3.1-8B-NVFP4-nvfp4-quantized/Meta-Llama-3.1-8B] - test_e2e.py::test_ptp_quickstart_advanced[Nemotron-Nano-9B-v2-nvfp4-NVIDIA-Nemotron-Nano-9B-v2-NVFP4] - test_e2e.py::test_ptp_quickstart_advanced[Llama3.1-8B-FP8-llama-3.1-model/Llama-3.1-8B-Instruct-FP8] diff --git a/tests/integration/test_lists/test-db/l0_dgx_b200.yml b/tests/integration/test_lists/test-db/l0_dgx_b200.yml index eac8567fad07..6e9a7b994b28 100644 --- a/tests/integration/test_lists/test-db/l0_dgx_b200.yml +++ b/tests/integration/test_lists/test-db/l0_dgx_b200.yml @@ -131,10 +131,10 @@ l0_dgx_b200: - unittest/_torch/ray_orchestrator/multi_gpu/test_llm_update_weights_multi_gpu.py -m "part3" - unittest/_torch/ray_orchestrator/multi_gpu/test_llm_update_weights_multi_gpu.py -m "part4" - unittest/_torch/ray_orchestrator/multi_gpu/test_llm_update_weights_multi_gpu.py -m "part5" - - disaggregated/test_disaggregated.py::test_disaggregated_ctxpp2_genpp2[TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_disaggregated.py::test_disaggregated_ctxtp2_genpp2[TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_disaggregated.py::test_disaggregated_ctxpp2_gentp2[TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_disaggregated.py::test_disaggregated_ctxpp4_gentp4[TinyLlama-1.1B-Chat-v1.0] + - disaggregated/test_disaggregated.py::test_disaggregated_ctxpp2_genpp2[Qwen3-0.6B] + - disaggregated/test_disaggregated.py::test_disaggregated_ctxtp2_genpp2[Qwen3-0.6B] + - disaggregated/test_disaggregated.py::test_disaggregated_ctxpp2_gentp2[Qwen3-0.6B] + - disaggregated/test_disaggregated.py::test_disaggregated_ctxpp4_gentp4[Qwen3-0.6B] - examples/test_ray.py::test_llm_inference_distributed_ray[tp2pp2] - examples/test_ray.py::test_ray_disaggregated_serving[tp2] - examples/test_ray.py::test_ray_disaggregated_serving_python[tp2] diff --git a/tests/integration/test_lists/test-db/l0_dgx_h100.yml b/tests/integration/test_lists/test-db/l0_dgx_h100.yml index 5527364aab90..ca7840ce3adb 100644 --- a/tests/integration/test_lists/test-db/l0_dgx_h100.yml +++ b/tests/integration/test_lists/test-db/l0_dgx_h100.yml @@ -113,17 +113,17 @@ l0_dgx_h100: - unittest/disaggregated/test_py_cache_transceiver_mp.py -k "ctx_first_sync" - unittest/disaggregated/test_py_cache_transceiver_mp.py -k "gen_first1" - unittest/disaggregated/test_py_cache_transceiver_mp.py -k "gen_first2" - - disaggregated/test_disaggregated.py::test_disaggregated_multi_gpu[TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_disaggregated.py::test_disaggregated_ctxpp2_genpp2[TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_disaggregated.py::test_disaggregated_ctxtp2_genpp2[TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_disaggregated.py::test_disaggregated_ctxpp2_gentp2[TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_disaggregated.py::test_disaggregated_ctxpp4_gentp4[TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_disaggregated.py::test_disaggregated_genbs1[TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_disaggregated.py::test_disaggregated_overlap[TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_disaggregated.py::test_disaggregated_overlap_transceiver_runtime_python[TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_disaggregated.py::test_disaggregated_python_transceiver_host_offload[TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_disaggregated.py::test_disaggregated_overlap_gen_first[ctx_pp1-TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_disaggregated.py::test_disaggregated_overlap_gen_first[ctx_pp4-TinyLlama-1.1B-Chat-v1.0] + - disaggregated/test_disaggregated.py::test_disaggregated_multi_gpu[Qwen3-0.6B] + - disaggregated/test_disaggregated.py::test_disaggregated_ctxpp2_genpp2[Qwen3-0.6B] + - disaggregated/test_disaggregated.py::test_disaggregated_ctxtp2_genpp2[Qwen3-0.6B] + - disaggregated/test_disaggregated.py::test_disaggregated_ctxpp2_gentp2[Qwen3-0.6B] + - disaggregated/test_disaggregated.py::test_disaggregated_ctxpp4_gentp4[Qwen3-0.6B] + - disaggregated/test_disaggregated.py::test_disaggregated_genbs1[Qwen3-0.6B] + - disaggregated/test_disaggregated.py::test_disaggregated_overlap[Qwen3-0.6B] + - disaggregated/test_disaggregated.py::test_disaggregated_overlap_transceiver_runtime_python[Qwen3-0.6B] + - disaggregated/test_disaggregated.py::test_disaggregated_python_transceiver_host_offload[Qwen3-0.6B] + - disaggregated/test_disaggregated.py::test_disaggregated_overlap_gen_first[ctx_pp1-Qwen3-0.6B] + - disaggregated/test_disaggregated.py::test_disaggregated_overlap_gen_first[ctx_pp4-Qwen3-0.6B] - accuracy/test_disaggregated_serving.py::TestQwen3_5_4B::test_ctx_pp_gen_tp_asymmetric - accuracy/test_disaggregated_serving.py::TestQwen3_8B::test_gen_first - accuracy/test_disaggregated_serving.py::TestQwen3_8B::test_gen_first_kv_cache_v1 @@ -217,7 +217,7 @@ l0_dgx_h100: - disaggregated/test_disaggregated.py::test_disaggregated_deepseek_v3_lite_fp8_ctxpp2_gentp2_one_mtp[DeepSeek-V3-Lite-fp8] - disaggregated/test_workers.py::test_workers_conditional_disaggregation_deepseek_v3_lite_bf16[DeepSeek-V3-Lite-bf16] - disaggregated/test_workers.py::test_workers_kv_cache_aware_router_deepseek_v3_lite_bf16[DeepSeek-V3-Lite-bf16] - - disaggregated/test_workers.py::test_workers_conversation_router[TinyLlama-1.1B-Chat-v1.0] + - disaggregated/test_workers.py::test_workers_conversation_router[Qwen3-0.6B] - condition: ranges: system_gpu_count: diff --git a/tests/integration/test_lists/test-db/l0_dgx_h200.yml b/tests/integration/test_lists/test-db/l0_dgx_h200.yml index 370536bbc609..fa25c64c12a1 100644 --- a/tests/integration/test_lists/test-db/l0_dgx_h200.yml +++ b/tests/integration/test_lists/test-db/l0_dgx_h200.yml @@ -32,8 +32,8 @@ l0_dgx_h200: - accuracy/test_disaggregated_serving.py::TestDeepSeekV3Lite::test_auto_dtype[mtp_nextn=2-overlap_scheduler=True] - accuracy/test_disaggregated_serving.py::TestDeepSeekV3Lite::test_auto_dtype[mtp_nextn=2-overlap_scheduler=False] - accuracy/test_llm_api_pytorch.py::TestQwen3NextInstruct::test_bf16_4gpu[tep4] - - disaggregated/test_disaggregated.py::test_disaggregated_ctxtp2pp2_gentp2pp2[TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_disaggregated.py::test_disaggregated_ctxpp4_genpp4[TinyLlama-1.1B-Chat-v1.0] + - disaggregated/test_disaggregated.py::test_disaggregated_ctxtp2pp2_gentp2pp2[Qwen3-0.6B] + - disaggregated/test_disaggregated.py::test_disaggregated_ctxpp4_genpp4[Qwen3-0.6B] - disaggregated/test_disaggregated.py::test_disaggregated_deepseek_v3_lite_fp8_ctxtp2ep2pp2_gentp4_one_mtp_block_reuse[DeepSeek-V3-Lite-fp8] - disaggregated/test_disaggregated.py::test_disaggregated_qwen3_32b_fp8[Qwen3/Qwen3-32B-FP8] - disaggregated/test_disaggregated.py::test_disaggregated_mixed_stress_test[req120-conc64-qwen3_32b_fp8_mixed_stress] diff --git a/tests/integration/test_lists/test-db/l0_gb200_multi_gpus.yml b/tests/integration/test_lists/test-db/l0_gb200_multi_gpus.yml index 3f4100e02f7e..47c51d700c09 100644 --- a/tests/integration/test_lists/test-db/l0_gb200_multi_gpus.yml +++ b/tests/integration/test_lists/test-db/l0_gb200_multi_gpus.yml @@ -51,8 +51,8 @@ l0_gb200_multi_gpus: - unittest/_torch/moe/test_moe_comm.py::TestMoEComm::test_mnnvl_checkpoint_preserves_moe_graph_addresses - unittest/_torch/moe/test_moe_comm.py::TestMoEComm::test_mnnvl_engine_checkpoint_coordination - unittest/_torch/moe/test_moe_comm.py::TestMoEComm::test_mnnvl_checkpoint_failure_is_collective_and_bounded - - disaggregated/test_disaggregated.py::test_disaggregated_overlap_transceiver_runtime_python_fabric_memory[TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_disaggregated.py::test_disaggregated_overlap_transceiver_runtime_python_bounce[TinyLlama-1.1B-Chat-v1.0] + - disaggregated/test_disaggregated.py::test_disaggregated_overlap_transceiver_runtime_python_fabric_memory[Qwen3-0.6B] + - disaggregated/test_disaggregated.py::test_disaggregated_overlap_transceiver_runtime_python_bounce[Qwen3-0.6B] - condition: ranges: diff --git a/tests/integration/test_lists/test-db/l0_h100.yml b/tests/integration/test_lists/test-db/l0_h100.yml index a58aee18808e..16b57a9aa0e3 100644 --- a/tests/integration/test_lists/test-db/l0_h100.yml +++ b/tests/integration/test_lists/test-db/l0_h100.yml @@ -166,8 +166,8 @@ l0_h100: - disaggregated/test_disaggregated.py::test_disaggregated_deepseek_v3_lite_fp8_tp1_single_gpu[DeepSeek-V3-Lite-fp8] - disaggregated/test_disaggregated.py::test_disaggregated_deepseek_v3_lite_fp8_tp1_single_gpu_mtp[DeepSeek-V3-Lite-fp8] - disaggregated/test_disaggregated.py::test_disaggregated_deepseek_v3_lite_fp8_tp1_two_mtp[DeepSeek-V3-Lite-fp8] - - disaggregated/test_disaggregated.py::test_disaggregated_load_balance[TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_disaggregated.py::test_disaggregated_tinyllama_multi_orchestrator[TinyLlama-1.1B-Chat-v1.0] + - disaggregated/test_disaggregated.py::test_disaggregated_load_balance[Qwen3-0.6B] + - disaggregated/test_disaggregated.py::test_disaggregated_tinyllama_multi_orchestrator[Qwen3-0.6B] - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_deepseek[False-False-DeepSeek-V3-Lite-fp8/fp8] - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_deepseek[False-True-DeepSeek-V3-Lite-fp8/fp8] - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_deepseek[True-False-DeepSeek-V3-Lite-fp8/fp8] @@ -178,11 +178,11 @@ l0_h100: - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_qwen3[True-True-Qwen3-8B-FP8] - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_llama_context_capacity[False-False-DeepSeek-V3-Lite-fp8/fp8] - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_spec_dec_batch_slot_limit[False-EAGLE3-LLaMA3.1-Instruct-8B-Llama-3.1-8B-Instruct] - - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_cancel_gen_requests[TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_logits[False-TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_logits[True-TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_logprobs[False-TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_logprobs[True-TinyLlama-1.1B-Chat-v1.0] + - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_cancel_gen_requests[Qwen3-0.6B] + - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_logits[False-Qwen3-0.6B] + - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_logits[True-Qwen3-0.6B] + - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_logprobs[False-Qwen3-0.6B] + - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_logprobs[True-Qwen3-0.6B] # Encoder-decoder Hopper smoke: CUDA-graph beam/greedy, kv-v2, overlap. # The primary pre-merge set runs on L40S (l0_l40s.yml); the full # dtype/model-size matrix runs post-merge below. @@ -241,10 +241,10 @@ l0_h100: - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_llama[False-False-TinyLlama-1.1B-Chat-v1.0] - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_deepseek[False-False-DeepSeek-V3-Lite-fp8/fp8] - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_qwen3[False-False-Qwen3-8B-FP8] - - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_logits[False-TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_logits[True-TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_logprobs[False-TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_logprobs[True-TinyLlama-1.1B-Chat-v1.0] + - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_logits[False-Qwen3-0.6B] + - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_logits[True-Qwen3-0.6B] + - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_logprobs[False-Qwen3-0.6B] + - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_logprobs[True-Qwen3-0.6B] - unittest/_torch/executor/test_overlap_scheduler.py - unittest/_torch/modeling/test_modeling_nemotron_h.py::test_nemotron_h_breakable_prefill_cuda_graph -k "tp1" TIMEOUT (90) - unittest/executor/test_shim_ray.py diff --git a/tests/integration/test_lists/test-db/l0_l40s.yml b/tests/integration/test_lists/test-db/l0_l40s.yml index 05361d0813f7..76cec1d53cf3 100644 --- a/tests/integration/test_lists/test-db/l0_l40s.yml +++ b/tests/integration/test_lists/test-db/l0_l40s.yml @@ -94,7 +94,7 @@ l0_l40s: - llmapi/test_llm_examples.py::test_llmapi_example_multilora - llmapi/test_llm_examples.py::test_llmapi_example_guided_decoding - llmapi/test_llm_examples.py::test_llmapi_example_logits_processor - - examples/test_llm_api_with_mpi.py::test_llm_api_single_gpu_with_mpirun[TinyLlama-1.1B-Chat-v1.0] + - examples/test_llm_api_with_mpi.py::test_llm_api_single_gpu_with_mpirun[Qwen3-0.6B] - condition: ranges: system_gpu_count: diff --git a/tests/integration/test_lists/test-db/l0_sanity_check.yml b/tests/integration/test_lists/test-db/l0_sanity_check.yml index db5c37afffbe..aff8783a1177 100644 --- a/tests/integration/test_lists/test-db/l0_sanity_check.yml +++ b/tests/integration/test_lists/test-db/l0_sanity_check.yml @@ -28,7 +28,7 @@ l0_sanity_check: - llmapi/test_llm_examples.py::test_llmapi_example_logits_processor - llmapi/test_llm_examples.py::test_llmapi_sampling - llmapi/test_llm_examples.py::test_llmapi_runtime - - examples/test_llm_api_with_mpi.py::test_llm_api_single_gpu_with_mpirun[TinyLlama-1.1B-Chat-v1.0] ISOLATION + - examples/test_llm_api_with_mpi.py::test_llm_api_single_gpu_with_mpirun[Qwen3-0.6B] ISOLATION - unittest/others/test_kv_cache_transceiver.py::test_kv_cache_transceiver_single_process[NIXL-mha-ctx_fp16_gen_fp16] - unittest/others/test_kv_cache_transceiver.py::test_kv_cache_transceiver_single_process[UCX-mha-ctx_fp16_gen_fp16] - unittest/others/test_kv_cache_transceiver.py::test_cpp_nixl_sync_transfer_stress diff --git a/tests/integration/test_lists/waives.txt b/tests/integration/test_lists/waives.txt index 5e1748453451..feddaa600018 100644 --- a/tests/integration/test_lists/waives.txt +++ b/tests/integration/test_lists/waives.txt @@ -64,19 +64,19 @@ disaggregated/test_disaggregated.py::test_disaggregated_deepseek_v3_lite_fp8_tp1 disaggregated/test_disaggregated.py::test_disaggregated_deepseek_v3_lite_fp8_tp1_single_gpu[DeepSeek-V3-Lite-fp8] SKIP (https://nvbugs/6162322) disaggregated/test_disaggregated.py::test_disaggregated_deepseek_v3_lite_fp8_tp1_single_gpu_mtp[DeepSeek-V3-Lite-fp8] SKIP (https://nvbugs/6162322) disaggregated/test_disaggregated.py::test_disaggregated_deepseek_v3_lite_fp8_tp1_two_mtp[DeepSeek-V3-Lite-fp8] SKIP (https://nvbugs/6162322) -disaggregated/test_disaggregated.py::test_disaggregated_genbs1[TinyLlama-1.1B-Chat-v1.0] SKIP (https://nvbugs/6162322) +disaggregated/test_disaggregated.py::test_disaggregated_genbs1[Qwen3-0.6B] SKIP (https://nvbugs/6162322) disaggregated/test_disaggregated.py::test_disaggregated_stress_test[input8k-output1k-conc512-gpt_oss_120b_eagle_triton_stress] SKIP (https://nvbugs/6621362) disaggregated/test_disaggregated.py::test_disaggregated_stress_test[input8k-output1k-conc512-qwen3_5_4b_fp8_stress] SKIP (https://nvbugs/6621362) -disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_logits[False-TinyLlama-1.1B-Chat-v1.0] SKIP (https://nvbugs/6759021) -disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_logits[True-TinyLlama-1.1B-Chat-v1.0] SKIP (https://nvbugs/6759021) -disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_logprobs[False-TinyLlama-1.1B-Chat-v1.0] SKIP (https://nvbugs/6759021) -disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_logprobs[True-TinyLlama-1.1B-Chat-v1.0] SKIP (https://nvbugs/6759021) +disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_logits[False-Qwen3-0.6B] SKIP (https://nvbugs/6759021) +disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_logits[True-Qwen3-0.6B] SKIP (https://nvbugs/6759021) +disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_logprobs[False-Qwen3-0.6B] SKIP (https://nvbugs/6759021) +disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_logprobs[True-Qwen3-0.6B] SKIP (https://nvbugs/6759021) disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_deepseek[False-False-DeepSeek-V3-Lite-fp8/fp8] SKIP (https://nvbugs/6759021) disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_llama[False-False-TinyLlama-1.1B-Chat-v1.0] SKIP (https://nvbugs/6759021) disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_qwen3[False-False-Qwen3-8B-FP8] SKIP (https://nvbugs/6759021) -disaggregated/test_workers.py::test_workers_conversation_router[TinyLlama-1.1B-Chat-v1.0] SKIP (https://nvbugs/6162322) +disaggregated/test_workers.py::test_workers_conversation_router[Qwen3-0.6B] SKIP (https://nvbugs/6162322) disaggregated/test_workers.py::test_workers_kv_cache_aware_router_deepseek_v3_lite_bf16[DeepSeek-V3-Lite-bf16] SKIP (https://nvbugs/6162322) -disaggregated/test_workers.py::test_workers_kv_cache_aware_router_eviction[TinyLlama-1.1B-Chat-v1.0] SKIP (https://nvbugs/6162322) +disaggregated/test_workers.py::test_workers_kv_cache_aware_router_eviction[Qwen3-0.6B] SKIP (https://nvbugs/6162322) examples/test_deepseek_v4_pro.py::test_short_token_boundary_smoke SKIP (https://nvbugs/6670227) examples/visual_gen/test_visual_gen_cosmos3.py::test_cosmos3_feature_accuracy_against_golden[fp8-blockwise] SKIP (https://nvbugs/6759131) examples/visual_gen/test_visual_gen_cosmos3.py::test_cosmos3_feature_accuracy_against_golden[nvfp4] SKIP (https://nvbugs/6572800) @@ -109,7 +109,7 @@ full:A100/accuracy/test_llm_api_pytorch_multimodal.py::TestExaone4_5_33B::test_a full:A100/accuracy/test_llm_api_pytorch_multimodal.py::TestExaone4_5_33B::test_auto_dtype[full_budget] SKIP (https://nvbugs/6597570) full:A100/disaggregated/test_disaggregated.py::test_disaggregated_deepseek_v3_lite_fp8_attention_dp_overlap[DeepSeek-V3-Lite-fp8] SKIP (https://nvbugs/6581064) full:A100/disaggregated/test_disaggregated.py::test_disaggregated_logprobs_serving[llama-3.1-8b-instruct] SKIP (https://nvbugs/6275959) -full:A100/disaggregated/test_disaggregated.py::test_disaggregated_python_transceiver_host_offload[TinyLlama-1.1B-Chat-v1.0] SKIP (https://nvbugs/6758573) +full:A100/disaggregated/test_disaggregated.py::test_disaggregated_python_transceiver_host_offload[Qwen3-0.6B] SKIP (https://nvbugs/6758573) full:A100/llmapi/test_llm_api_pytorch_moe_lora.py::test_qwen_moe_routed_expert_multi_lora_varying_ranks[cudagraph] SKIP (https://nvbugs/6758594) full:A100/llmapi/test_llm_api_pytorch_moe_lora.py::test_qwen_moe_routed_expert_multi_lora_varying_ranks[eager] SKIP (https://nvbugs/6758594) full:A100/llmapi/test_llm_api_qa.py::TestLlmDefaultBackend::test_llm_args_logging SKIP (https://nvbugs/6727262) @@ -131,7 +131,7 @@ full:B200/accuracy/test_llm_api_pytorch.py::TestQwen3_235B_A22B::test_nvfp4[late full:B200/accuracy/test_llm_api_pytorch_multimodal.py::TestExaone4_5_33B::test_auto_dtype[forced_chunked_prefill] SKIP (https://nvbugs/6597570) full:B200/accuracy/test_llm_api_pytorch_multimodal.py::TestExaone4_5_33B::test_auto_dtype[full_budget] SKIP (https://nvbugs/6597570) full:B200/disaggregated/test_disaggregated.py::test_disaggregated_logprobs_serving[llama-3.1-8b-instruct] SKIP (https://nvbugs/6275959) -full:B200/disaggregated/test_disaggregated.py::test_disaggregated_overlap_gen_first[ctx_pp4-TinyLlama-1.1B-Chat-v1.0] SKIP (https://nvbugs/6728119) +full:B200/disaggregated/test_disaggregated.py::test_disaggregated_overlap_gen_first[ctx_pp4-Qwen3-0.6B] SKIP (https://nvbugs/6728119) full:B200/disaggregated/test_disaggregated.py::test_disaggregated_stress_test[input8k-output1k-conc512-deepseek_r1_v2_fp4_stress] SKIP (https://nvbugs/6765807) full:B200/disaggregated/test_disaggregated.py::test_disaggregated_stress_test[input8k-output1k-conc512-gpt_oss_120b_eagle_trtllm_stress] SKIP (https://nvbugs/6649384) full:B200/disaggregated/test_disaggregated.py::test_disaggregated_stress_test[input8k-output1k-conc512-qwen3_32b_fp8_stress] SKIP (https://nvbugs/6621362) @@ -148,11 +148,11 @@ full:B300/accuracy/test_llm_api_pytorch.py::TestMiniMaxM3::test_nvfp4[use_msa=Fa full:B300/accuracy/test_llm_api_pytorch.py::TestMistralLarge3_675B::test_nvfp4_4gpus[latency_moe_trtllm] SKIP (https://nvbugs/6529874) full:B300/accuracy/test_llm_api_pytorch_multimodal.py::TestExaone4_5_33B::test_auto_dtype[forced_chunked_prefill] SKIP (https://nvbugs/6597570) full:B300/accuracy/test_llm_api_pytorch_multimodal.py::TestExaone4_5_33B::test_auto_dtype[full_budget] SKIP (https://nvbugs/6597570) -full:B300/disaggregated/test_disaggregated.py::test_disaggregated_ctxpp4_genpp4[TinyLlama-1.1B-Chat-v1.0] SKIP (https://nvbugs/6771023) -full:B300/disaggregated/test_disaggregated.py::test_disaggregated_ctxpp4_gentp4[TinyLlama-1.1B-Chat-v1.0] SKIP (https://nvbugs/6728119) +full:B300/disaggregated/test_disaggregated.py::test_disaggregated_ctxpp4_genpp4[Qwen3-0.6B] SKIP (https://nvbugs/6771023) +full:B300/disaggregated/test_disaggregated.py::test_disaggregated_ctxpp4_gentp4[Qwen3-0.6B] SKIP (https://nvbugs/6728119) full:B300/disaggregated/test_disaggregated.py::test_disaggregated_logprobs_serving[llama-3.1-8b-instruct] SKIP (https://nvbugs/6275959) full:B300/disaggregated/test_disaggregated.py::test_disaggregated_mamba_conc_greater_than_mbs[NVIDIA-Nemotron-3-Super-120B-A12B-FP8] SKIP (https://nvbugs/6770978) -full:B300/disaggregated/test_disaggregated.py::test_disaggregated_overlap_gen_first[ctx_pp4-TinyLlama-1.1B-Chat-v1.0] SKIP (https://nvbugs/6728119) +full:B300/disaggregated/test_disaggregated.py::test_disaggregated_overlap_gen_first[ctx_pp4-Qwen3-0.6B] SKIP (https://nvbugs/6728119) full:B300/disaggregated/test_disaggregated.py::test_disaggregated_qwen3_32b_fp8[Qwen3/Qwen3-32B-FP8] SKIP (https://nvbugs/6770977) full:B300/llmapi/test_llm_api_pytorch_moe_lora.py::test_qwen_moe_routed_expert_multi_lora_varying_ranks[cudagraph] SKIP (https://nvbugs/6758594) full:B300/llmapi/test_llm_api_pytorch_moe_lora.py::test_qwen_moe_routed_expert_multi_lora_varying_ranks[eager] SKIP (https://nvbugs/6758594) @@ -228,13 +228,15 @@ full:H20/accuracy/test_llm_api_pytorch_multimodal.py::TestExaone4_5_33B::test_au full:H20/accuracy/test_llm_api_pytorch_multimodal.py::TestExaone4_5_33B::test_auto_dtype[full_budget] SKIP (https://nvbugs/6597570) full:H20/accuracy/test_llm_api_pytorch_multimodal.py::TestNanoV3Omni::test_auto_dtype[bf16] SKIP (https://nvbugs/6618649) full:H20/disaggregated/test_disaggregated.py::test_disaggregated_logprobs_serving[llama-3.1-8b-instruct] SKIP (https://nvbugs/6275959) -full:H20/disaggregated/test_disaggregated.py::test_disaggregated_overlap_gen_first[ctx_pp1-TinyLlama-1.1B-Chat-v1.0] SKIP (https://nvbugs/6692009) -full:L40S/disaggregated/test_disaggregated.py::test_disaggregated_ctxpp2_genpp2[TinyLlama-1.1B-Chat-v1.0] SKIP (https://nvbugs/6728119) -full:L40S/disaggregated/test_disaggregated.py::test_disaggregated_ctxpp2_gentp2[TinyLlama-1.1B-Chat-v1.0] SKIP (https://nvbugs/6728119) -full:L40S/disaggregated/test_disaggregated.py::test_disaggregated_ctxtp2_genpp2[TinyLlama-1.1B-Chat-v1.0] SKIP (https://nvbugs/6728119) +full:H20/disaggregated/test_disaggregated.py::test_disaggregated_overlap_gen_first[ctx_pp1-Qwen3-0.6B] SKIP (https://nvbugs/6692009) +full:L40S/disaggregated/test_disaggregated.py::test_disaggregated_ctxpp2_genpp2[Qwen3-0.6B] SKIP (https://nvbugs/6728119) +full:L40S/disaggregated/test_disaggregated.py::test_disaggregated_ctxpp2_gentp2[Qwen3-0.6B] SKIP (https://nvbugs/6728119) +full:L40S/disaggregated/test_disaggregated.py::test_disaggregated_ctxtp2_genpp2[Qwen3-0.6B] SKIP (https://nvbugs/6728119) full:L40S/disaggregated/test_disaggregated.py::test_disaggregated_deepseek_v3_lite_fp8_attention_dp_overlap[DeepSeek-V3-Lite-fp8] SKIP (https://nvbugs/6581064) full:L40S/disaggregated/test_disaggregated.py::test_disaggregated_logprobs_serving[llama-3.1-8b-instruct] SKIP (https://nvbugs/6275959) -full:L40S/disaggregated/test_disaggregated.py::test_disaggregated_multi_gpu[TinyLlama-1.1B-Chat-v1.0] SKIP (https://nvbugs/6728119) +full:L40S/disaggregated/test_disaggregated.py::test_disaggregated_multi_gpu[Qwen3-0.6B] SKIP (https://nvbugs/6728119) +full:L40S/llmapi/test_llm_api_qa.py::TestLlmDefaultBackend::test_llm_args_logging SKIP (https://nvbugs/6727262) +full:L40S/llmapi/test_llm_api_qa.py::TestLlmDefaultBackend::test_llm_args_type_default SKIP (https://nvbugs/6727262) full:RTXPro6000D/accuracy/test_llm_api_pytorch.py::TestQwen3_30B_A3B::test_nvfp4[dep4_latency_moe_cutlass-torch_compile=True] SKIP (https://nvbugs/5929339) full:RTX_PRO_6000_Blackwell_Server_Edition/accuracy/test_disaggregated_serving.py::TestDeepSeekV3Lite::test_auto_dtype[mtp_nextn=0-overlap_scheduler=False] SKIP (https://nvbugs/6616033) full:RTX_PRO_6000_Blackwell_Server_Edition/accuracy/test_disaggregated_serving.py::TestDeepSeekV3Lite::test_auto_dtype[mtp_nextn=0-overlap_scheduler=True] SKIP (https://nvbugs/6616033) diff --git a/tests/test_common/llm_data.py b/tests/test_common/llm_data.py index 51f4555cb225..59ffb103919a 100644 --- a/tests/test_common/llm_data.py +++ b/tests/test_common/llm_data.py @@ -31,7 +31,7 @@ "meta-llama/Llama-3.1-8B": "llama-3.1-model/Meta-Llama-3.1-8B", "nvidia/Llama-3.1-8B-Instruct-FP8": "Llama-3.1-8B-Instruct-FP8", "nvidia/Llama-3.1-8B-Instruct-NVFP4": "Llama-3.1-8B-Instruct-NVFP4", - "TinyLlama/TinyLlama-1.1B-Chat-v1.0": "llama-models-v2/TinyLlama-1.1B-Chat-v1.0", + "Qwen/Qwen3-0.6B": "Qwen3/Qwen3-0.6B", "mistralai/Mistral-Small-3.1-24B-Instruct-2503": "Mistral-Small-3.1-24B-Instruct-2503", "Qwen/Qwen3-30B-A3B": "Qwen3/Qwen3-30B-A3B", "deepseek-ai/DeepSeek-V3": "DeepSeek-V3", diff --git a/tests/unittest/_torch/executor/test_overlap_scheduler.py b/tests/unittest/_torch/executor/test_overlap_scheduler.py index 7f9a57f6560c..2cbac2aab93b 100644 --- a/tests/unittest/_torch/executor/test_overlap_scheduler.py +++ b/tests/unittest/_torch/executor/test_overlap_scheduler.py @@ -19,7 +19,7 @@ def test_case(): @pytest.fixture(scope="module") def model_path(): - return llm_models_root() / "llama-models-v2/TinyLlama-1.1B-Chat-v1.0" + return llm_models_root() / "Qwen3/Qwen3-0.6B" def create_llm(model_dir, diff --git a/tests/unittest/_torch/multi_gpu/test_mpi_sleep_wakeup.py b/tests/unittest/_torch/multi_gpu/test_mpi_sleep_wakeup.py index 3484aa0cdedc..78dbf7145643 100644 --- a/tests/unittest/_torch/multi_gpu/test_mpi_sleep_wakeup.py +++ b/tests/unittest/_torch/multi_gpu/test_mpi_sleep_wakeup.py @@ -33,7 +33,7 @@ from tensorrt_llm.llmapi import KvCacheConfig, SamplingParams from tensorrt_llm.llmapi.llm_args import ExecutorMemoryType, SleepConfig -_LLAMA_MODEL_PATH = str(llm_models_root() / "llama-models-v2/TinyLlama-1.1B-Chat-v1.0") +_LLAMA_MODEL_PATH = str(llm_models_root() / "Qwen3/Qwen3-0.6B") _PROMPTS = [ "Hello, my name is", diff --git a/tests/unittest/_torch/ray_orchestrator/multi_gpu/test_executor.py b/tests/unittest/_torch/ray_orchestrator/multi_gpu/test_executor.py index 4c88a65dbcad..7ef912591868 100644 --- a/tests/unittest/_torch/ray_orchestrator/multi_gpu/test_executor.py +++ b/tests/unittest/_torch/ray_orchestrator/multi_gpu/test_executor.py @@ -21,8 +21,7 @@ @pytest.mark.gpu2 def test_worker_extension(): - llm = LLM(model=llm_models_root() / - "llama-models-v2/TinyLlama-1.1B-Chat-v1.0", + llm = LLM(model=llm_models_root() / "Qwen3/Qwen3-0.6B", ray_worker_extension_cls= "tensorrt_llm.llmapi.rlhf_utils.WorkerExtension", orchestrator_type="ray", @@ -61,8 +60,7 @@ def test_placement_env_vars(setup_ray_cluster, monkeypatch): placement_group_capture_child_tasks=True, ), )(LLM).remote( - model=os.path.join(llm_models_root(), "llama-models-v2", - "TinyLlama-1.1B-Chat-v1.0"), + model=os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B"), kv_cache_config=KvCacheConfig(free_gpu_memory_fraction=0.1), tensor_parallel_size=2, orchestrator_type="ray", @@ -100,8 +98,7 @@ def test_placement_api(setup_ray_cluster, monkeypatch, n_gpus, bundle_indices): print(f"Placement group ready with bundles {pg.bundle_specs}") llm = LLM( - model=os.path.join(llm_models_root(), "llama-models-v2", - "TinyLlama-1.1B-Chat-v1.0"), + model=os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B"), kv_cache_config=KvCacheConfig(free_gpu_memory_fraction=0.1), tensor_parallel_size=tp_size, orchestrator_type="ray", @@ -132,8 +129,7 @@ def test_cuda_visible_device(monkeypatch): """Placement via cuda_visible_device""" monkeypatch.setenv("CUDA_VISIBLE_DEVICES", "1") - llm = LLM(model=llm_models_root() / - "llama-models-v2/TinyLlama-1.1B-Chat-v1.0", + llm = LLM(model=llm_models_root() / "Qwen3/Qwen3-0.6B", orchestrator_type="ray") infer_actor_uuids = llm._collective_rpc("report_device_id") diff --git a/tests/unittest/_torch/ray_orchestrator/multi_gpu/test_inflight_weight_update.py b/tests/unittest/_torch/ray_orchestrator/multi_gpu/test_inflight_weight_update.py index 0577588aaeaa..a2fd44c8ce17 100644 --- a/tests/unittest/_torch/ray_orchestrator/multi_gpu/test_inflight_weight_update.py +++ b/tests/unittest/_torch/ray_orchestrator/multi_gpu/test_inflight_weight_update.py @@ -98,7 +98,7 @@ async def _run_generate_async( @pytest.mark.asyncio @skip_pre_hopper async def test_inflight_weight_update(): - model_dir = str(llm_models_root() / "llama-models-v2/TinyLlama-1.1B-Chat-v1.0") + model_dir = str(llm_models_root() / "Qwen3/Qwen3-0.6B") num_hidden_layers = 1 # Reference HF model providing the "new" weights via CUDA IPC handles. diff --git a/tests/unittest/_torch/ray_orchestrator/multi_gpu/test_multi_instance.py b/tests/unittest/_torch/ray_orchestrator/multi_gpu/test_multi_instance.py index 1abeb27f2f4e..a1be2dd660d5 100644 --- a/tests/unittest/_torch/ray_orchestrator/multi_gpu/test_multi_instance.py +++ b/tests/unittest/_torch/ray_orchestrator/multi_gpu/test_multi_instance.py @@ -98,9 +98,7 @@ def test_multi_instance(setup_ray_cluster, tp_size, num_instances): runtime_env=runtime_env, ).remote( async_llm_kwargs={ - "model": os.path.join( - llm_models_root(), "llama-models-v2", "TinyLlama-1.1B-Chat-v1.0" - ), + "model": os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B"), "kv_cache_config": { "free_gpu_memory_fraction": 0.1, }, diff --git a/tests/unittest/_torch/ray_orchestrator/single_gpu/test_llm_sleep.py b/tests/unittest/_torch/ray_orchestrator/single_gpu/test_llm_sleep.py index 9a812bbb95c9..e771c2d6ba9d 100644 --- a/tests/unittest/_torch/ray_orchestrator/single_gpu/test_llm_sleep.py +++ b/tests/unittest/_torch/ray_orchestrator/single_gpu/test_llm_sleep.py @@ -7,7 +7,7 @@ def test_llm_sleep(process_gpu_memory_info_available): - llama_model_path = str(llm_models_root() / "llama-models-v2/TinyLlama-1.1B-Chat-v1.0") + llama_model_path = str(llm_models_root() / "Qwen3/Qwen3-0.6B") kv_cache_config = KvCacheConfig(enable_block_reuse=False, max_tokens=16384) llm = LLM( @@ -73,7 +73,7 @@ def test_llm_sleep_discard_weights(process_gpu_memory_info_available): are gone (NONE = no backup). The model should still be able to run a forward pass without crashing — output correctness is not expected. """ - llama_model_path = str(llm_models_root() / "llama-models-v2/TinyLlama-1.1B-Chat-v1.0") + llama_model_path = str(llm_models_root() / "Qwen3/Qwen3-0.6B") kv_cache_config = KvCacheConfig(enable_block_reuse=False, max_tokens=16384) sleep_config = SleepConfig( diff --git a/tests/unittest/_torch/ray_orchestrator/single_gpu/test_llm_update_weights.py b/tests/unittest/_torch/ray_orchestrator/single_gpu/test_llm_update_weights.py index 1590fdacce65..afea9e257367 100644 --- a/tests/unittest/_torch/ray_orchestrator/single_gpu/test_llm_update_weights.py +++ b/tests/unittest/_torch/ray_orchestrator/single_gpu/test_llm_update_weights.py @@ -174,7 +174,7 @@ def run_generate( @pytest.mark.parametrize( "model_dir", [ - "llama-models-v2/TinyLlama-1.1B-Chat-v1.0", + "Qwen3/Qwen3-0.6B", "Qwen3/Qwen3-0.6B", "Qwen3/Qwen3-8B", "Qwen3/Qwen3-30B-A3B", @@ -229,7 +229,7 @@ def test_llm_update_weights(model_dir): @pytest.mark.parametrize( "model_dir", [ - "llama-models-v2/TinyLlama-1.1B-Chat-v1.0", + "Qwen3/Qwen3-0.6B", "Qwen3/Qwen3-0.6B", "Qwen3/Qwen3-8B", "Qwen3/Qwen3-30B-A3B", diff --git a/tests/unittest/_torch/ray_orchestrator/single_gpu/test_postproc_workers.py b/tests/unittest/_torch/ray_orchestrator/single_gpu/test_postproc_workers.py index 7f7e64530529..beb5223be707 100644 --- a/tests/unittest/_torch/ray_orchestrator/single_gpu/test_postproc_workers.py +++ b/tests/unittest/_torch/ray_orchestrator/single_gpu/test_postproc_workers.py @@ -33,7 +33,7 @@ def _model_path() -> str: override = os.environ.get("POSTPROC_TEST_MODEL") if override: return override - return str(llm_models_root() / "llama-models-v2/TinyLlama-1.1B-Chat-v1.0") + return str(llm_models_root() / "Qwen3/Qwen3-0.6B") def _make_llm(num_postprocess_workers: int) -> LLM: diff --git a/tests/unittest/_torch/sampler/test_beam_search.py b/tests/unittest/_torch/sampler/test_beam_search.py index b44ec68702fa..eb6478834fbd 100644 --- a/tests/unittest/_torch/sampler/test_beam_search.py +++ b/tests/unittest/_torch/sampler/test_beam_search.py @@ -2257,8 +2257,7 @@ def batch_size(request) -> int: def model_kwargs() -> dict[str, Any]: root = llm_models_root() assert root is not None - return dict(model=root / "llama-models-v2" / - "TinyLlama-1.1B-Chat-v1.0", ) + return dict(model=root / "Qwen3" / "Qwen3-0.6B", ) # NB: Class-level fixture overrides do not work without this @pytest.fixture(scope="module") diff --git a/tests/unittest/_torch/sampler/test_logits_logprobs.py b/tests/unittest/_torch/sampler/test_logits_logprobs.py index 579862de442d..f5aa80618fa1 100644 --- a/tests/unittest/_torch/sampler/test_logits_logprobs.py +++ b/tests/unittest/_torch/sampler/test_logits_logprobs.py @@ -99,7 +99,7 @@ def llm( ) llm = LLM( - model=os.path.join(llm_models_root(), "llama-models-v2", "TinyLlama-1.1B-Chat-v1.0"), + model=os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B"), kv_cache_config=global_kvcache_config, max_batch_size=128, # reduce buffer sizes, specially for generation logits disable_overlap_scheduler=disable_overlap_scheduler, @@ -112,7 +112,7 @@ def llm( @pytest.fixture(scope="module") def simple_llm() -> LLM: llm = LLM( - model=os.path.join(llm_models_root(), "llama-models-v2", "TinyLlama-1.1B-Chat-v1.0"), + model=os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B"), max_batch_size=8, kv_cache_config=global_kvcache_config_prompt_logprobs, ) @@ -825,7 +825,7 @@ def test_processed_logprobs_e2e(logprobs_k: int, simple_llm: LLM): @force_ampere @pytest.mark.gpu2 def test_logprobs_match_hf_tp2(): - model_path = os.path.join(llm_models_root(), "llama-models-v2", "TinyLlama-1.1B-Chat-v1.0") + model_path = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") llm = LLM( model=model_path, tensor_parallel_size=2, @@ -881,7 +881,7 @@ def test_logprobs_pp2(): Without the fix, logprobs length = 2N-1 instead of N due to duplication in the PP ring broadcast diff mechanism. """ - model_path = os.path.join(llm_models_root(), "llama-models-v2", "TinyLlama-1.1B-Chat-v1.0") + model_path = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") max_tokens = 16 llm = LLM( model=model_path, diff --git a/tests/unittest/_torch/sampler/test_penalties_e2e.py b/tests/unittest/_torch/sampler/test_penalties_e2e.py index 05222a3d64f8..a817d54e2a4e 100644 --- a/tests/unittest/_torch/sampler/test_penalties_e2e.py +++ b/tests/unittest/_torch/sampler/test_penalties_e2e.py @@ -30,7 +30,7 @@ @pytest.fixture(scope="module") def model_path() -> Path: - return llm_models_root() / "llama-models-v2/TinyLlama-1.1B-Chat-v1.0" + return llm_models_root() / "Qwen3/Qwen3-0.6B" @dataclass(frozen=True) diff --git a/tests/unittest/auto_deploy/_utils_test/_model_test_utils.py b/tests/unittest/auto_deploy/_utils_test/_model_test_utils.py index 9b726263e174..8ebba136a516 100644 --- a/tests/unittest/auto_deploy/_utils_test/_model_test_utils.py +++ b/tests/unittest/auto_deploy/_utils_test/_model_test_utils.py @@ -519,7 +519,7 @@ def apply_rotary_pos_emb_ds(q, k, cos, sin, position_ids, unsqueeze_dim=1): "ssm_state_size": 32, }, }, - "TinyLlama/TinyLlama-1.1B-Chat-v1.0": { + "Qwen3/Qwen3-0.6B": { "model_kwargs": { "num_hidden_layers": 2, }, diff --git a/tests/unittest/auto_deploy/singlegpu/smoke/test_ad_trtllm_bench.py b/tests/unittest/auto_deploy/singlegpu/smoke/test_ad_trtllm_bench.py index 6ba35a0aa44d..e6e1abd4ffc4 100644 --- a/tests/unittest/auto_deploy/singlegpu/smoke/test_ad_trtllm_bench.py +++ b/tests/unittest/auto_deploy/singlegpu/smoke/test_ad_trtllm_bench.py @@ -95,7 +95,7 @@ def prepare_dataset(root_dir: str, temp_dir: str, model_path_or_name: str): @pytest.mark.parametrize("compile_backend", ["torch-compile", "torch-opt", "torch-cudagraph"]) -@pytest.mark.parametrize("model_name", ["TinyLlama/TinyLlama-1.1B-Chat-v1.0"]) +@pytest.mark.parametrize("model_name", ["Qwen3/Qwen3-0.6B"]) def test_trtllm_bench(llm_root, compile_backend, model_name): # noqa: F811 args = get_small_model_config(model_name)["args"] # remove kv_cache_config and max_batch_size to avoid conflicts with trtllm-bench diff --git a/tests/unittest/auto_deploy/singlegpu/utils/test_example_configs.py b/tests/unittest/auto_deploy/singlegpu/utils/test_example_configs.py index 9fdccfd77fbf..b493ae963007 100644 --- a/tests/unittest/auto_deploy/singlegpu/utils/test_example_configs.py +++ b/tests/unittest/auto_deploy/singlegpu/utils/test_example_configs.py @@ -41,7 +41,7 @@ } # Dummy model name used during validation (model path is not resolved during construction) -_DUMMY_MODEL = "TinyLlama/TinyLlama-1.1B-Chat-v1.0" +_DUMMY_MODEL = "Qwen3/Qwen3-0.6B" def _find_config_yamls(): diff --git a/tests/unittest/check_pip_install.py b/tests/unittest/check_pip_install.py index 5057365eefa1..7e12f1acc9de 100644 --- a/tests/unittest/check_pip_install.py +++ b/tests/unittest/check_pip_install.py @@ -238,9 +238,8 @@ def create_link_for_models(): print(f"ERROR: Models root {models_root} does not exist") exit(1) src_dst_dict = { - # TinyLlama-1.1B-Chat-v1.0 - f"{models_root}/llama-models-v2/TinyLlama-1.1B-Chat-v1.0": - f"{os.getcwd()}/TinyLlama/TinyLlama-1.1B-Chat-v1.0", + # Qwen3-0.6B + f"{models_root}/Qwen3/Qwen3-0.6B": f"{os.getcwd()}/Qwen3/Qwen3-0.6B", } for src, dst in src_dst_dict.items(): diff --git a/tests/unittest/executor/test_base_worker.py b/tests/unittest/executor/test_base_worker.py index bc9a814e76c7..cfef9f45fb5d 100644 --- a/tests/unittest/executor/test_base_worker.py +++ b/tests/unittest/executor/test_base_worker.py @@ -17,7 +17,7 @@ from tensorrt_llm.llmapi.llm_args import TorchLlmArgs from tensorrt_llm.sampling_params import SamplingParams -default_model_name = "llama-models-v2/TinyLlama-1.1B-Chat-v1.0" +default_model_name = "Qwen3/Qwen3-0.6B" model_path = llm_models_root() / default_model_name diff --git a/tests/unittest/executor/test_rpc_proxy.py b/tests/unittest/executor/test_rpc_proxy.py index 6c8af44c91a8..a2729067be0c 100644 --- a/tests/unittest/executor/test_rpc_proxy.py +++ b/tests/unittest/executor/test_rpc_proxy.py @@ -14,7 +14,7 @@ from utils.util import similar, skip_single_gpu # isort: on -model_path = llm_models_root() / "llama-models-v2/TinyLlama-1.1B-Chat-v1.0" +model_path = llm_models_root() / "Qwen3/Qwen3-0.6B" class TestRpcProxy: diff --git a/tests/unittest/executor/test_rpc_worker.py b/tests/unittest/executor/test_rpc_worker.py index 011784c990eb..e11f060f167c 100644 --- a/tests/unittest/executor/test_rpc_worker.py +++ b/tests/unittest/executor/test_rpc_worker.py @@ -10,7 +10,7 @@ from utils.llm_data import llm_models_root # isort: on -model_path = llm_models_root() / "llama-models-v2/TinyLlama-1.1B-Chat-v1.0" +model_path = llm_models_root() / "Qwen3/Qwen3-0.6B" assert model_path.exists() diff --git a/tests/unittest/grpc/openengine/test_capability_conformance.py b/tests/unittest/grpc/openengine/test_capability_conformance.py index af0799ae0d63..9855a7fcd304 100644 --- a/tests/unittest/grpc/openengine/test_capability_conformance.py +++ b/tests/unittest/grpc/openengine/test_capability_conformance.py @@ -43,7 +43,7 @@ from tensorrt_llm.llmapi.llm_args import TorchLlmArgs # noqa: E402 from tensorrt_llm.sampling_params import MAX_TOP_LOGPROBS # noqa: E402 -MODEL_NAME = "llama-models-v2/TinyLlama-1.1B-Chat-v1.0" +MODEL_NAME = "Qwen3/Qwen3-0.6B" GUIDED_BACKEND = "xgrammar" # The engine is module-scoped, so the executor proxy's `proxy_dispatch_result_thread` diff --git a/tests/unittest/grpc/smg/test_smg.py b/tests/unittest/grpc/smg/test_smg.py index bbf6f5a31717..b3b36947e7af 100644 --- a/tests/unittest/grpc/smg/test_smg.py +++ b/tests/unittest/grpc/smg/test_smg.py @@ -640,7 +640,7 @@ def test_missing_tokenized_input(self): # End-to-end gRPC service tests (with real model) # ============================================================================ -default_model_name = "llama-models-v2/TinyLlama-1.1B-Chat-v1.0" +default_model_name = "Qwen3/Qwen3-0.6B" def get_model_path(model_name): diff --git a/tests/unittest/llmapi/_run_multi_llm_tasks.py b/tests/unittest/llmapi/_run_multi_llm_tasks.py index 8d65fd6c761e..7002d8069525 100644 --- a/tests/unittest/llmapi/_run_multi_llm_tasks.py +++ b/tests/unittest/llmapi/_run_multi_llm_tasks.py @@ -11,7 +11,7 @@ from test_common.llm_data import llm_models_root # noqa: E402 -model_path = llm_models_root() / "llama-models-v2" / "TinyLlama-1.1B-Chat-v1.0" +model_path = llm_models_root() / "Qwen3" / "Qwen3-0.6B" def run_llm_tp2(): diff --git a/tests/unittest/llmapi/apps/_test_openai_cache_salt.py b/tests/unittest/llmapi/apps/_test_openai_cache_salt.py index 0799b6c28319..58c3d8f8f875 100644 --- a/tests/unittest/llmapi/apps/_test_openai_cache_salt.py +++ b/tests/unittest/llmapi/apps/_test_openai_cache_salt.py @@ -13,9 +13,9 @@ pytestmark = pytest.mark.threadleak(enabled=False) -@pytest.fixture(scope="module", ids=["TinyLlama-1.1B-Chat"]) +@pytest.fixture(scope="module", ids=["Qwen3-0.6B"]) def model_name() -> str: - return "llama-models-v2/TinyLlama-1.1B-Chat-v1.0" + return "Qwen3/Qwen3-0.6B" @pytest.fixture(scope="module") diff --git a/tests/unittest/llmapi/apps/_test_openai_chat.py b/tests/unittest/llmapi/apps/_test_openai_chat.py index db3b092c4adc..eb80b7e10adf 100644 --- a/tests/unittest/llmapi/apps/_test_openai_chat.py +++ b/tests/unittest/llmapi/apps/_test_openai_chat.py @@ -17,9 +17,9 @@ pytestmark = pytest.mark.threadleak(enabled=False) -@pytest.fixture(scope="module", ids=["TinyLlama-1.1B-Chat"]) +@pytest.fixture(scope="module", ids=["Qwen3-0.6B"]) def model_name(): - return "llama-models-v2/TinyLlama-1.1B-Chat-v1.0" + return "Qwen3/Qwen3-0.6B" @pytest.fixture(scope="module", params=["pytorch"]) diff --git a/tests/unittest/llmapi/apps/_test_openai_completions.py b/tests/unittest/llmapi/apps/_test_openai_completions.py index 59bb56ea4bc5..5e6de40c5238 100644 --- a/tests/unittest/llmapi/apps/_test_openai_completions.py +++ b/tests/unittest/llmapi/apps/_test_openai_completions.py @@ -15,7 +15,7 @@ @pytest.fixture(scope="module") def model_name(): - return "llama-models-v2/TinyLlama-1.1B-Chat-v1.0" + return "Qwen3/Qwen3-0.6B" @pytest.fixture(scope="module", params=["pytorch"]) diff --git a/tests/unittest/llmapi/apps/_test_openai_perf_metrics.py b/tests/unittest/llmapi/apps/_test_openai_perf_metrics.py index f8514b967147..e8ab10b13c2c 100644 --- a/tests/unittest/llmapi/apps/_test_openai_perf_metrics.py +++ b/tests/unittest/llmapi/apps/_test_openai_perf_metrics.py @@ -20,9 +20,9 @@ logger = logging.getLogger(__name__) -@pytest.fixture(scope="module", ids=["TinyLlama-1.1B-Chat"]) +@pytest.fixture(scope="module", ids=["Qwen3-0.6B"]) def model_name(): - return "llama-models-v2/TinyLlama-1.1B-Chat-v1.0" + return "Qwen3/Qwen3-0.6B" @pytest.fixture(scope="module") diff --git a/tests/unittest/llmapi/apps/_test_openai_post_processor.py b/tests/unittest/llmapi/apps/_test_openai_post_processor.py index e4cd279727a4..d68649745589 100644 --- a/tests/unittest/llmapi/apps/_test_openai_post_processor.py +++ b/tests/unittest/llmapi/apps/_test_openai_post_processor.py @@ -35,7 +35,7 @@ @pytest.fixture(scope="module") def model_name(): - return "llama-models-v2/TinyLlama-1.1B-Chat-v1.0" + return "Qwen3/Qwen3-0.6B" @pytest.fixture(scope="module", params=[0, 2], ids=["disable_processpool", "enable_processpool"]) diff --git a/tests/unittest/llmapi/apps/_test_openai_prometheus.py b/tests/unittest/llmapi/apps/_test_openai_prometheus.py index a113274ad0c2..5560e3fba81b 100644 --- a/tests/unittest/llmapi/apps/_test_openai_prometheus.py +++ b/tests/unittest/llmapi/apps/_test_openai_prometheus.py @@ -33,10 +33,10 @@ logger = logging.getLogger(__name__) -@pytest.fixture(scope="module", ids=["TinyLlama-1.1B-Chat"]) +@pytest.fixture(scope="module", ids=["Qwen3-0.6B"]) def model_name(): """Return the HuggingFace model path used for all tests in this module.""" - return "llama-models-v2/TinyLlama-1.1B-Chat-v1.0" + return "Qwen3/Qwen3-0.6B" @pytest.fixture(scope="module") diff --git a/tests/unittest/llmapi/apps/_test_trtllm_serve_duplicated_args.py b/tests/unittest/llmapi/apps/_test_trtllm_serve_duplicated_args.py index a195036e4195..cca1951ac80d 100644 --- a/tests/unittest/llmapi/apps/_test_trtllm_serve_duplicated_args.py +++ b/tests/unittest/llmapi/apps/_test_trtllm_serve_duplicated_args.py @@ -26,9 +26,9 @@ from test_llm import get_model_path -@pytest.fixture(scope="module", ids=["TinyLlama-1.1B-Chat"]) +@pytest.fixture(scope="module", ids=["Qwen3-0.6B"]) def model_name(): - return "llama-models-v2/TinyLlama-1.1B-Chat-v1.0" + return "Qwen3/Qwen3-0.6B" @pytest.fixture(scope="module") diff --git a/tests/unittest/llmapi/apps/_test_trtllm_serve_example.py b/tests/unittest/llmapi/apps/_test_trtllm_serve_example.py index 37c6b8252ac3..a29467bc14d0 100644 --- a/tests/unittest/llmapi/apps/_test_trtllm_serve_example.py +++ b/tests/unittest/llmapi/apps/_test_trtllm_serve_example.py @@ -25,9 +25,9 @@ from .openai_server import RemoteOpenAIServer -@pytest.fixture(scope="module", ids=["TinyLlama-1.1B-Chat"]) +@pytest.fixture(scope="module", ids=["Qwen3-0.6B"]) def model_name(): - return "llama-models-v2/TinyLlama-1.1B-Chat-v1.0" + return "Qwen3/Qwen3-0.6B" @pytest.fixture(scope="module") diff --git a/tests/unittest/llmapi/apps/_test_trtllm_serve_top_logprobs.py b/tests/unittest/llmapi/apps/_test_trtllm_serve_top_logprobs.py index 6c0d023b4726..d205f5c5bd09 100644 --- a/tests/unittest/llmapi/apps/_test_trtllm_serve_top_logprobs.py +++ b/tests/unittest/llmapi/apps/_test_trtllm_serve_top_logprobs.py @@ -7,9 +7,9 @@ pytestmark = pytest.mark.threadleak(enabled=False) -@pytest.fixture(scope="module", ids=["TinyLlama-1.1B-Chat"]) +@pytest.fixture(scope="module", ids=["Qwen3-0.6B"]) def model_name(): - return "llama-models-v2/TinyLlama-1.1B-Chat-v1.0" + return "Qwen3/Qwen3-0.6B" @pytest.fixture(scope="module", params=["pytorch"]) diff --git a/tests/unittest/llmapi/apps/test_disagg_serving_perf_metrics.py b/tests/unittest/llmapi/apps/test_disagg_serving_perf_metrics.py index 8ee7b214429d..f7d41aaa1648 100644 --- a/tests/unittest/llmapi/apps/test_disagg_serving_perf_metrics.py +++ b/tests/unittest/llmapi/apps/test_disagg_serving_perf_metrics.py @@ -50,7 +50,7 @@ def gen_port(test_ports: list[int]): @pytest.fixture def model_name(): - model_path = os.path.join(llm_models_root(), "llama-models-v2/TinyLlama-1.1B-Chat-v1.0") + model_path = os.path.join(llm_models_root(), "Qwen3/Qwen3-0.6B") assert os.path.exists(model_path), f"Model path {model_path} does not exist" return model_path diff --git a/tests/unittest/llmapi/run_llm_with_postproc.py b/tests/unittest/llmapi/run_llm_with_postproc.py index b534dc0b2ea4..d192cd9edcde 100644 --- a/tests/unittest/llmapi/run_llm_with_postproc.py +++ b/tests/unittest/llmapi/run_llm_with_postproc.py @@ -40,8 +40,7 @@ def main(model_dir: str, tp_size: int, n: int, best_of: Optional[int], n=n, best_of=best_of, top_k=top_k) - postproc_args = ChatPostprocArgs(role="assistant", - model="TinyLlama-1.1B-Chat-v1.0") + postproc_args = ChatPostprocArgs(role="assistant", model="Qwen3-0.6B") postproc_params = PostprocParams( post_processor=chat_stream_post_processor, postproc_args=postproc_args, diff --git a/tests/unittest/llmapi/test_async_llm.py b/tests/unittest/llmapi/test_async_llm.py index 9468eedaa6d5..a2548fe6db05 100644 --- a/tests/unittest/llmapi/test_async_llm.py +++ b/tests/unittest/llmapi/test_async_llm.py @@ -16,7 +16,7 @@ @pytest.mark.ray @pytest.mark.asyncio async def test_async_llm_awaitable(): - llama_model_path = str(llm_models_root() / "llama-models-v2/TinyLlama-1.1B-Chat-v1.0") + llama_model_path = str(llm_models_root() / "Qwen3/Qwen3-0.6B") kv_cache_config = KvCacheConfig(enable_block_reuse=False) prompt = "The future of AI is" @@ -41,7 +41,7 @@ async def test_async_llm_awaitable(): @pytest.mark.asyncio @pytest.mark.parametrize("num_cycles", [3], ids=lambda x: f"{x}_cycle") async def test_async_llm_release_resume(process_gpu_memory_info_available, num_cycles): - llama_model_path = str(llm_models_root() / "llama-models-v2/TinyLlama-1.1B-Chat-v1.0") + llama_model_path = str(llm_models_root() / "Qwen3/Qwen3-0.6B") kv_cache_config = KvCacheConfig(enable_block_reuse=False, max_tokens=4096) prompt = "The future of AI is" @@ -113,9 +113,7 @@ async def test_async_llm_placement_api(setup_ray_cluster, monkeypatch): print(f"Placement group ready with bundles {pg.bundle_specs}") llm = await AsyncLLM( - model=os.path.join( - str(llm_models_root()), "llama-models-v2", "TinyLlama-1.1B-Chat-v1.0" - ), + model=os.path.join(str(llm_models_root()), "Qwen3", "Qwen3-0.6B"), kv_cache_config=KvCacheConfig(free_gpu_memory_fraction=0.1), tensor_parallel_size=tp_size, placement_groups=[pg], @@ -141,7 +139,7 @@ async def test_async_llm_placement_api(setup_ray_cluster, monkeypatch): @pytest.mark.ray @pytest.mark.asyncio async def test_async_llm_reset_prefix_cache(): - llama_model_path = str(llm_models_root() / "llama-models-v2/TinyLlama-1.1B-Chat-v1.0") + llama_model_path = str(llm_models_root() / "Qwen3/Qwen3-0.6B") kv_cache_config = KvCacheConfig(enable_block_reuse=True) prompt = "The future of AI is " * 20 sampling_params = SamplingParams(temperature=0, max_tokens=5, return_perf_metrics=True) @@ -182,7 +180,7 @@ async def test_async_llm_reset_prefix_cache(): @pytest.mark.ray @pytest.mark.asyncio async def test_async_llm_pause_resume(): - llama_model_path = str(llm_models_root() / "llama-models-v2/TinyLlama-1.1B-Chat-v1.0") + llama_model_path = str(llm_models_root() / "Qwen3/Qwen3-0.6B") prompt = "The future of AI is" sampling_params = SamplingParams(temperature=0, max_tokens=10) @@ -209,7 +207,7 @@ async def test_async_llm_pause_resume(): @pytest.mark.ray @pytest.mark.asyncio async def test_async_llm_pause_aborts_inflight(): - llama_model_path = str(llm_models_root() / "llama-models-v2/TinyLlama-1.1B-Chat-v1.0") + llama_model_path = str(llm_models_root() / "Qwen3/Qwen3-0.6B") prompt = "The future of AI is" inflight_params = SamplingParams(temperature=0, max_tokens=512) normal_params = SamplingParams(temperature=0, max_tokens=10) diff --git a/tests/unittest/llmapi/test_executor.py b/tests/unittest/llmapi/test_executor.py index 5aaa3433794a..e4377199e026 100644 --- a/tests/unittest/llmapi/test_executor.py +++ b/tests/unittest/llmapi/test_executor.py @@ -191,7 +191,7 @@ def test_result_completes_within_timeout(): def test_DetokenizedGenerationResultBase(): sampling_params = SamplingParams(max_tokens=4) - model_path = llm_models_root() / "llama-models-v2/TinyLlama-1.1B-Chat-v1.0" + model_path = llm_models_root() / "Qwen3/Qwen3-0.6B" tokenizer = TransformersTokenizer.from_pretrained(model_path) result = DetokenizedGenerationResultBase( id=2, @@ -405,10 +405,9 @@ def test_ResponsePostprocessWorker(): pool = ProcessPoolExecutor(max_workers=1) print("submit task") - fut = pool.submit( - ResponsePostprocessWorker_worker_task, input_pipe.address, - out_pipe.address, - str(llm_models_root() / "llama-models-v2/TinyLlama-1.1B-Chat-v1.0")) + fut = pool.submit(ResponsePostprocessWorker_worker_task, input_pipe.address, + out_pipe.address, + str(llm_models_root() / "Qwen3/Qwen3-0.6B")) inputs = [ Input(rsp=create_rsp(123), @@ -500,10 +499,9 @@ def test_PostprocWorker_disaggregated_params(): out_pipe = ZeroMqQueue(is_server=True, socket_type=zmq.PULL) pool = ProcessPoolExecutor(max_workers=1) - fut = pool.submit( - ResponsePostprocessWorker_worker_task, input_pipe.address, - out_pipe.address, - str(llm_models_root() / "llama-models-v2/TinyLlama-1.1B-Chat-v1.0")) + fut = pool.submit(ResponsePostprocessWorker_worker_task, input_pipe.address, + out_pipe.address, + str(llm_models_root() / "Qwen3/Qwen3-0.6B")) disagg_params = DisaggregatedParams( request_type="generation_only", diff --git a/tests/unittest/llmapi/test_llm.py b/tests/unittest/llmapi/test_llm.py index 84cf4a19c47f..3efcc02c97d2 100644 --- a/tests/unittest/llmapi/test_llm.py +++ b/tests/unittest/llmapi/test_llm.py @@ -136,7 +136,7 @@ def llm_check_output(llm: LLM, stop_reasons=stop_reasons) -default_model_name = "llama-models-v2/TinyLlama-1.1B-Chat-v1.0" +default_model_name = "Qwen3/Qwen3-0.6B" qwen3_tokenizer_model_name = "Qwen3/Qwen3-0.6B" llama_model_path = get_model_path(default_model_name) diff --git a/tests/unittest/llmapi/test_llm_args.py b/tests/unittest/llmapi/test_llm_args.py index e9c9925dfb37..e206822b64a6 100644 --- a/tests/unittest/llmapi/test_llm_args.py +++ b/tests/unittest/llmapi/test_llm_args.py @@ -3050,12 +3050,12 @@ def get_tinyllama_path(self): # Use local model path if available, otherwise use HuggingFace ID model_root = llm_models_root() if model_root: - local_path = model_root / "llama-models-v2/TinyLlama-1.1B-Chat-v1.0" + local_path = model_root / "Qwen3/Qwen3-0.6B" if local_path.exists(): return str(local_path) # Fallback to HuggingFace model ID - return "TinyLlama/TinyLlama-1.1B-Chat-v1.0" + return "Qwen3/Qwen3-0.6B" @pytest.fixture(autouse=True) def setup(self, monkeypatch, tmp_path): diff --git a/tests/unittest/llmapi/test_llm_download.py b/tests/unittest/llmapi/test_llm_download.py index 45a7a95430cc..05c681ee6133 100644 --- a/tests/unittest/llmapi/test_llm_download.py +++ b/tests/unittest/llmapi/test_llm_download.py @@ -8,7 +8,7 @@ prompts = ["A B C"] -model_name = "TinyLlama/TinyLlama-1.1B-Chat-v1.0" +model_name = "Qwen/Qwen3-0.6B" def test_llm_with_model_downloaded(): diff --git a/tests/unittest/llmapi/test_llm_kv_cache_events.py b/tests/unittest/llmapi/test_llm_kv_cache_events.py index d2447c1aea2f..e85fd5ced29f 100644 --- a/tests/unittest/llmapi/test_llm_kv_cache_events.py +++ b/tests/unittest/llmapi/test_llm_kv_cache_events.py @@ -30,7 +30,7 @@ from .test_llm import get_model_path -default_model_name = "llama-models-v2/TinyLlama-1.1B-Chat-v1.0" +default_model_name = "Qwen3/Qwen3-0.6B" llama_model_path = get_model_path(default_model_name) global_kvcache_config = KvCacheConfig(free_gpu_memory_fraction=0.4, event_buffer_max_size=1024, diff --git a/tests/unittest/llmapi/test_llm_pytorch.py b/tests/unittest/llmapi/test_llm_pytorch.py index 0457ac706ef5..04a9a7766c7a 100644 --- a/tests/unittest/llmapi/test_llm_pytorch.py +++ b/tests/unittest/llmapi/test_llm_pytorch.py @@ -235,7 +235,7 @@ def test_llm_perf_metrics(): @pytest.mark.part3 @pytest.mark.parametrize("attn_backend", ["TRTLLM", "FLASHINFER"]) def test_llm_prefix_cache_reuse(attn_backend): - model_path = get_model_path("llama-models-v2/TinyLlama-1.1B-Chat-v1.0") + model_path = get_model_path("Qwen3/Qwen3-0.6B") prompt = "The future of AI is " * 20 sampling_params = SamplingParams(temperature=0, max_tokens=5, diff --git a/tests/unittest/llmapi/test_llm_telemetry.py b/tests/unittest/llmapi/test_llm_telemetry.py index 66e2f2754839..e6b3d12e0058 100644 --- a/tests/unittest/llmapi/test_llm_telemetry.py +++ b/tests/unittest/llmapi/test_llm_telemetry.py @@ -35,7 +35,7 @@ pytestmark = pytest.mark.threadleak(enabled=False) -MODEL_NAME = "llama-models-v2/TinyLlama-1.1B-Chat-v1.0" +MODEL_NAME = "Qwen3/Qwen3-0.6B" _kv_cache_config = KvCacheConfig(free_gpu_memory_fraction=0.4) diff --git a/tests/unittest/llmapi/test_llm_telemetry_payload.py b/tests/unittest/llmapi/test_llm_telemetry_payload.py index 7f8a29a128b1..5d13db8e9505 100644 --- a/tests/unittest/llmapi/test_llm_telemetry_payload.py +++ b/tests/unittest/llmapi/test_llm_telemetry_payload.py @@ -34,7 +34,7 @@ pytestmark = pytest.mark.threadleak(enabled=False) -MODEL_NAME = "llama-models-v2/TinyLlama-1.1B-Chat-v1.0" +MODEL_NAME = "Qwen3/Qwen3-0.6B" _kv_cache_config = KvCacheConfig(free_gpu_memory_fraction=0.4) diff --git a/tests/unittest/others/test_tracing.py b/tests/unittest/others/test_tracing.py index 781bd872653e..0071245e2934 100644 --- a/tests/unittest/others/test_tracing.py +++ b/tests/unittest/others/test_tracing.py @@ -60,9 +60,9 @@ def trace_service() -> Generator[FakeTraceService, None, None]: executor.shutdown(wait=True) -@pytest.fixture(scope="module", ids=["TinyLlama-1.1B-Chat"]) +@pytest.fixture(scope="module", ids=["Qwen3-0.6B"]) def model_name(): - return "llama-models-v2/TinyLlama-1.1B-Chat-v1.0" + return "Qwen3/Qwen3-0.6B" @pytest.fixture(scope="module", params=["pytorch"]) diff --git a/tests/unittest/scripts/test_check_model_registry.py b/tests/unittest/scripts/test_check_model_registry.py index d6b9c743bd91..1fc45e82aaf8 100644 --- a/tests/unittest/scripts/test_check_model_registry.py +++ b/tests/unittest/scripts/test_check_model_registry.py @@ -88,7 +88,7 @@ def test_validate_models_rejects_duplicate_explicit_config_id(mod): def test_validate_models_rejects_empty_config_id(mod): models = [ { - "name": "TinyLlama/TinyLlama-1.1B-Chat-v1.0", + "name": "Qwen3/Qwen3-0.6B", "config_id": " ", "yaml_extra": ["world_size_1.yaml"], } diff --git a/tests/unittest/tools/test_host_profiler.py b/tests/unittest/tools/test_host_profiler.py index 291e398c674d..f6608283d177 100644 --- a/tests/unittest/tools/test_host_profiler.py +++ b/tests/unittest/tools/test_host_profiler.py @@ -351,15 +351,15 @@ def test_iteration_aware_profiling(): @pytest.fixture -def tinyllama_path(): - """Get TinyLlama model path.""" - model_path = llm_models_root() / "llama-models-v2" / "TinyLlama-1.1B-Chat-v1.0" +def qwen3_model_path(): + """Get Qwen3-0.6B model path.""" + model_path = llm_models_root() / "Qwen3" / "Qwen3-0.6B" if not model_path.exists(): - pytest.skip(f"TinyLlama model not found at {model_path}") + pytest.skip(f"Qwen3-0.6B model not found at {model_path}") return str(model_path) -def test_e2e_profiler_with_model(tinyllama_path, mocker): +def test_e2e_profiler_with_model(qwen3_model_path, mocker): """E2E test: verify profiler works with actual model inference. Clears default profile targets and adds only specific targets, @@ -385,7 +385,7 @@ def test_e2e_profiler_with_model(tinyllama_path, mocker): ) with LLM( - model=tinyllama_path, + model=qwen3_model_path, kv_cache_config=KvCacheConfig(free_gpu_memory_fraction=0.3), ) as llm: # Generate enough tokens to ensure profiled methods are executed diff --git a/tests/unittest/usage/test_e2e_capture.py b/tests/unittest/usage/test_e2e_capture.py index 6a2bb928278d..bb109d6b478f 100644 --- a/tests/unittest/usage/test_e2e_capture.py +++ b/tests/unittest/usage/test_e2e_capture.py @@ -48,7 +48,7 @@ # Model path resolution (same pattern as test_llm_telemetry.py) # --------------------------------------------------------------------------- -MODEL_NAME = "llama-models-v2/TinyLlama-1.1B-Chat-v1.0" +MODEL_NAME = "Qwen3/Qwen3-0.6B" def _get_model_path(): From 90c137e31d0231097d4d1c4ae231106e81604b0f Mon Sep 17 00:00:00 2001 From: "Xin He (SW-GPU)" <200704525+xinhe-nv@users.noreply.github.com> Date: Tue, 15 Sep 2026 10:33:40 +0800 Subject: [PATCH 02/13] [None][test] Split qwen_model_root out of llama_model_root, drop LoRA-adapter-locked TinyLlama test Gives Qwen3-0.6B its own plain conftest fixture instead of sharing the request.param-dispatched llama_model_root fixture, and drops the now-unnecessary indirect parametrize boilerplate at every call site since there is only one Qwen3-0.6B variant. Updates the matching test-list entries for the resulting simplified test IDs. Also removes test_llmapi_lora and its tiny_llama_lora_model_root / tiny_llama_lora_base_model_root fixtures: the LoRA adapter under test is fine-tuned specifically for TinyLlama-1.1B-Chat-v1.0 and has no Qwen3-0.6B equivalent, so the test can't be migrated. Signed-off-by: Xin He (SW-GPU) <200704525+xinhe-nv@users.noreply.github.com> --- tests/integration/defs/conftest.py | 15 +- .../defs/disaggregated/test_disaggregated.py | 221 ++++++++---------- .../disaggregated/test_disaggregated_etcd.py | 7 +- .../defs/disaggregated/test_workers.py | 30 +-- .../defs/examples/test_llm_api_with_mpi.py | 7 +- .../defs/triton_server/conftest.py | 40 ---- .../defs/triton_server/test_triton_llmapi.py | 74 ------ .../test_lists/qa/llm_function_core.txt | 70 +++--- .../test_lists/qa/llm_triton_integration.txt | 1 - .../integration/test_lists/test-db/l0_a10.yml | 34 +-- .../test_lists/test-db/l0_b200.yml | 2 +- .../test_lists/test-db/l0_dgx_b200.yml | 8 +- .../test_lists/test-db/l0_dgx_h100.yml | 24 +- .../test_lists/test-db/l0_dgx_h200.yml | 4 +- .../test-db/l0_gb200_multi_gpus.yml | 4 +- .../test_lists/test-db/l0_h100.yml | 4 +- .../test_lists/test-db/l0_l40s.yml | 2 +- .../test_lists/test-db/l0_sanity_check.yml | 2 +- tests/integration/test_lists/waives.txt | 26 +-- 19 files changed, 212 insertions(+), 363 deletions(-) diff --git a/tests/integration/defs/conftest.py b/tests/integration/defs/conftest.py index ee383703c4a4..0e5b094fa7da 100644 --- a/tests/integration/defs/conftest.py +++ b/tests/integration/defs/conftest.py @@ -673,13 +673,22 @@ def llama_v2_tokenizer_model_root(): return llama_v2_tokenizer_model_root +@pytest.fixture(scope="function") +def qwen_model_root(): + models_root = llm_models_root() + assert models_root, "Did you set LLM_MODELS_ROOT?" + qwen_model_root = os.path.join(models_root, "Qwen3", "Qwen3-0.6B") + assert os.path.exists( + qwen_model_root + ), f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" + return qwen_model_root + + @pytest.fixture(scope="function") def llama_model_root(request): models_root = llm_models_root() assert models_root, "Did you set LLM_MODELS_ROOT?" - if request.param == "Qwen3-0.6B": - llama_model_root = os.path.join(models_root, "Qwen3", "Qwen3-0.6B") - elif request.param == "llama-3.1-8b": + if request.param == "llama-3.1-8b": llama_model_root = os.path.join(models_root, "llama-3.1-model", "Meta-Llama-3.1-8B") elif request.param == "llama-3.1-8b-instruct-hf-fp8": diff --git a/tests/integration/defs/disaggregated/test_disaggregated.py b/tests/integration/defs/disaggregated/test_disaggregated.py index 1a04d1ee086a..e1208ab7a46e 100644 --- a/tests/integration/defs/disaggregated/test_disaggregated.py +++ b/tests/integration/defs/disaggregated/test_disaggregated.py @@ -1107,32 +1107,30 @@ def run_disaggregated_test(example_dir, shutil.rmtree(work_dir, ignore_errors=True) -@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_diff_max_tokens(disaggregated_test_root, disaggregated_example_root, llm_venv, - llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") + qwen_model_root): + setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "2_ranks_diff_max_tokens", env=llm_venv._new_env, prompt_file="long_prompts.json", - model_path=llama_model_root, + model_path=qwen_model_root, cwd=llm_venv.get_working_directory()) -@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_single_gpu(disaggregated_test_root, disaggregated_example_root, llm_venv, - llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") + qwen_model_root): + setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") env = llm_venv._new_env.copy() env["CUDA_VISIBLE_DEVICES"] = "0" run_disaggregated_test(disaggregated_example_root, "2_ranks", env=env, - model_path=llama_model_root, + model_path=qwen_model_root, cwd=llm_venv.get_working_directory()) @@ -1196,11 +1194,10 @@ def test_disaggregated_mamba_bs1_concurrency2(disaggregated_example_root, ) -@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_tinyllama_multi_orchestrator(disaggregated_test_root, disaggregated_example_root, - llm_venv, llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") + llm_venv, qwen_model_root): + setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") env = llm_venv._new_env.copy() env["CUDA_VISIBLE_DEVICES"] = "0" @@ -1208,48 +1205,45 @@ def test_disaggregated_tinyllama_multi_orchestrator(disaggregated_test_root, "multi_orchestrator", num_iters=1, env=env, - model_path=llama_model_root, + model_path=qwen_model_root, cwd=llm_venv.get_working_directory()) -@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_benchmark_gen_only(disaggregated_test_root, disaggregated_example_root, llm_venv, - llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") + qwen_model_root): + setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") env = llm_venv._new_env.copy() env['TRTLLM_DISAGG_BENCHMARK_GEN_ONLY'] = '1' run_disaggregated_test(disaggregated_example_root, "gen_only", env=env, - model_path=llama_model_root, + model_path=qwen_model_root, cwd=llm_venv.get_working_directory()) @pytest.mark.parametrize("router_type", ["load_balancing", "kv_cache_aware", "conversation"]) -@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_router(disaggregated_test_root, disaggregated_example_root, llm_venv, - llama_model_root, router_type): - setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") + qwen_model_root, router_type): + setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, router_type, env=llm_venv._new_env, - model_path=llama_model_root, + model_path=qwen_model_root, cwd=llm_venv.get_working_directory()) -@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_benchmark_gen_only_insufficient_kv( disaggregated_test_root, disaggregated_example_root, llm_venv, - llama_model_root): + qwen_model_root): """Test that gen-only benchmark mode raises an error when KV cache is too small to hold all benchmark requests, instead of hanging forever.""" import openai - setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") + setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") env = llm_venv._new_env.copy() env['TRTLLM_DISAGG_BENCHMARK_GEN_ONLY'] = '1' @@ -1261,7 +1255,7 @@ def test_disaggregated_benchmark_gen_only_insufficient_kv( os.path.dirname(__file__)) config, ctx_workers, gen_workers, disagg_server, server_port, work_dir = \ setup_disagg_cluster(config_file, - model_name=llama_model_root, + model_name=qwen_model_root, env=env, cwd=llm_venv.get_working_directory()) @@ -1302,63 +1296,58 @@ def send_request(): @pytest.mark.skip_less_device(4) -@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_genbs1(disaggregated_test_root, disaggregated_example_root, llm_venv, - llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") + qwen_model_root): + setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") env = llm_venv._new_env.copy() env['TRTLLM_DISAGG_BENCHMARK_GEN_ONLY'] = '1' run_disaggregated_test(disaggregated_example_root, "gen_only_bs1", env=env, - model_path=llama_model_root, + model_path=qwen_model_root, cwd=llm_venv.get_working_directory()) @pytest.mark.skip_less_device(2) -@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_multi_gpu(disaggregated_test_root, disaggregated_example_root, llm_venv, - llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") + qwen_model_root): + setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "4_ranks", env=llm_venv._new_env, - model_path=llama_model_root, + model_path=qwen_model_root, cwd=llm_venv.get_working_directory()) -@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_cuda_graph(disaggregated_test_root, llm_venv, - disaggregated_example_root, llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") + disaggregated_example_root, qwen_model_root): + setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "cuda_graph", env=llm_venv._new_env, - model_path=llama_model_root, + model_path=qwen_model_root, cwd=llm_venv.get_working_directory()) -@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_mixed(disaggregated_test_root, llm_venv, - disaggregated_example_root, llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") + disaggregated_example_root, qwen_model_root): + setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "mixed", env=llm_venv._new_env, - model_path=llama_model_root, + model_path=qwen_model_root, cwd=llm_venv.get_working_directory()) -@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_overlap(disaggregated_test_root, llm_venv, - disaggregated_example_root, llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") + disaggregated_example_root, qwen_model_root): + setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") def post_client_test(server_url: str): verify_usage_with_cache_reuse(server_url, "Qwen3/Qwen3-0.6B") @@ -1367,20 +1356,18 @@ def post_client_test(server_url: str): "overlap", env=llm_venv._new_env, post_client_test=post_client_test, - model_path=llama_model_root, + model_path=qwen_model_root, cwd=llm_venv.get_working_directory()) @skip_pre_hopper @pytest.mark.skip_less_device(8) -@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) @pytest.mark.parametrize("ctx_pp", [1, 4], ids=["ctx_pp1", "ctx_pp4"]) def test_disaggregated_overlap_gen_first(disaggregated_test_root, disaggregated_example_root, llm_venv, - llama_model_root, ctx_pp): + qwen_model_root, ctx_pp): src_dst_dict = { - llama_model_root: - f"{llm_venv.get_working_directory()}/Qwen3/Qwen3-0.6B", + qwen_model_root: f"{llm_venv.get_working_directory()}/Qwen3/Qwen3-0.6B", } for src, dst in src_dst_dict.items(): if not os.path.islink(dst): @@ -1394,24 +1381,23 @@ def post_client_test(server_url: str): disaggregated_example_root, "overlap_gen_first" if ctx_pp == 1 else "overlap_gen_first_pp4", env=llm_venv._new_env, - model_path=llama_model_root, + model_path=qwen_model_root, cwd=llm_venv.get_working_directory(), disagg_schedule_style="generation_first", post_client_test=post_client_test) -@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_overlap_transceiver_runtime_python( disaggregated_test_root, llm_venv, disaggregated_example_root, - llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") + qwen_model_root): + setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") env = llm_venv._new_env.copy() env["UCX_TLS"] = get_ucx_tls() run_disaggregated_test(disaggregated_example_root, "overlap_transceiver_runtime_python", env=env, - model_path=llama_model_root, + model_path=qwen_model_root, cwd=llm_venv.get_working_directory()) @@ -1421,11 +1407,10 @@ def test_disaggregated_overlap_transceiver_runtime_python( # platforms with MNNVL fabric-memory support; on other devices the env var would silently fall # back to a non-fabric allocation, which would defeat the purpose of this test. @pytest.mark.skip_device_not_contain(["GB200", "GB300"]) -@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_overlap_transceiver_runtime_python_fabric_memory( disaggregated_test_root, llm_venv, disaggregated_example_root, - llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") + qwen_model_root): + setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") env = llm_venv._new_env.copy() env["UCX_TLS"] = get_ucx_tls() @@ -1433,7 +1418,7 @@ def test_disaggregated_overlap_transceiver_runtime_python_fabric_memory( run_disaggregated_test(disaggregated_example_root, "overlap_transceiver_runtime_python", env=env, - model_path=llama_model_root, + model_path=qwen_model_root, cwd=llm_venv.get_working_directory()) @@ -1450,11 +1435,10 @@ def test_disaggregated_overlap_transceiver_runtime_python_fabric_memory( # logged the coalesced-bounce marker, so a silent fall-back to the per-fragment path fails the # test instead of passing quietly. @pytest.mark.skip_device_not_contain(["GB200", "GB300"]) -@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_overlap_transceiver_runtime_python_bounce( disaggregated_test_root, llm_venv, disaggregated_example_root, - llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") + qwen_model_root): + setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") env = llm_venv._new_env.copy() env["UCX_TLS"] = get_ucx_tls() @@ -1464,7 +1448,7 @@ def test_disaggregated_overlap_transceiver_runtime_python_bounce( run_disaggregated_test(disaggregated_example_root, "overlap_transceiver_runtime_python_bounce", env=env, - model_path=llama_model_root, + model_path=qwen_model_root, cwd=llm_venv.get_working_directory(), assert_gen_log_contains="[kv-bounce] coalesced") @@ -1595,10 +1579,9 @@ async def drive(): asyncio.run(drive()) -@pytest.mark.parametrize("llama_model_root", ["Qwen3-0.6B"], indirect=True) def test_disaggregated_python_transceiver_host_offload( disaggregated_test_root, llm_venv, disaggregated_example_root, - llama_model_root): + qwen_model_root): """E2E regression for block_id -> primary-slot translation in the Python disagg cache transceiver. See `_verify_python_transceiver_under_host_offload` for what this @@ -1607,7 +1590,7 @@ def test_disaggregated_python_transceiver_host_offload( that prefix reuse is forced through an offload+onboard cycle before each KV transfer. """ - setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") + setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") env = llm_venv._new_env.copy() env["UCX_TLS"] = get_ucx_tls() @@ -1618,16 +1601,15 @@ def post_client_test(server_url: str): run_disaggregated_test(disaggregated_example_root, "python_transceiver_host_offload", env=env, - model_path=llama_model_root, + model_path=qwen_model_root, cwd=llm_venv.get_working_directory(), post_client_test=post_client_test) -@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_perf_metrics(disaggregated_test_root, llm_venv, - disaggregated_example_root, - llama_model_root, tmp_path): - setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") + disaggregated_example_root, qwen_model_root, + tmp_path): + setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") perf_metrics_output_dir = str(tmp_path / "perf_metrics") @@ -1647,32 +1629,30 @@ def extra_endpoints_test(_server_url: str): "perf_metrics", env=env, extra_endpoints_test=extra_endpoints_test, - model_path=llama_model_root, + model_path=qwen_model_root, cwd=llm_venv.get_working_directory(), perf_metrics_output_dir=perf_metrics_output_dir) -@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_chat_completion_tool_calls(disaggregated_test_root, llm_venv, disaggregated_example_root, - llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") + qwen_model_root): + setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "tool_calls", num_iters=1, prompt_file="tool_call_prompts.json", env=llm_venv._new_env, - model_path=llama_model_root, + model_path=qwen_model_root, cwd=llm_venv.get_working_directory()) -@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_kv_cache_time_output(disaggregated_test_root, llm_venv, disaggregated_example_root, - llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") + qwen_model_root): + setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") output_path = os.path.join(llm_venv.get_working_directory(), "cache_time") env = llm_venv._new_env.copy() @@ -1685,7 +1665,7 @@ def test_disaggregated_kv_cache_time_output(disaggregated_test_root, llm_venv, run_disaggregated_test(disaggregated_example_root, "perf_metrics", env=env, - model_path=llama_model_root, + model_path=qwen_model_root, cwd=llm_venv.get_working_directory()) assert os.path.isdir(output_path) # The C++ transceiver names timing files "__.csv" @@ -1723,159 +1703,146 @@ def test_disaggregated_kv_cache_time_output(disaggregated_test_root, llm_venv, assert matched -@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_load_balance(disaggregated_test_root, llm_venv, disaggregated_example_root, - llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") + qwen_model_root): + setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "load_balance", env=llm_venv._new_env, - model_path=llama_model_root, + model_path=qwen_model_root, cwd=llm_venv.get_working_directory()) -@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_cache_aware_balance(disaggregated_test_root, llm_venv, disaggregated_example_root, - llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") + qwen_model_root): + setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "cache_aware_balance", env=llm_venv._new_env, - model_path=llama_model_root, + model_path=qwen_model_root, cwd=llm_venv.get_working_directory()) -@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_conditional(disaggregated_test_root, llm_venv, - disaggregated_example_root, - llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") + disaggregated_example_root, qwen_model_root): + setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "conditional", env=llm_venv._new_env, - model_path=llama_model_root, + model_path=qwen_model_root, cwd=llm_venv.get_working_directory()) -@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_ngram(disaggregated_test_root, llm_venv, - disaggregated_example_root, llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") + disaggregated_example_root, qwen_model_root): + setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "ngram", env=llm_venv._new_env, - model_path=llama_model_root, + model_path=qwen_model_root, cwd=llm_venv.get_working_directory()) -@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_sa(disaggregated_test_root, llm_venv, - disaggregated_example_root, llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") + disaggregated_example_root, qwen_model_root): + setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "sa", env=llm_venv._new_env, - model_path=llama_model_root, + model_path=qwen_model_root, cwd=llm_venv.get_working_directory()) -@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_sa_python(disaggregated_test_root, llm_venv, - disaggregated_example_root, llama_model_root): + disaggregated_example_root, qwen_model_root): """Spec-split SA (ctx no-spec, gen SA) on the V2 PYTHON transceiver path. NIXL + transceiver_runtime PYTHON. The existing test_disaggregated_sa covers this split only on the C++ DEFAULT backend. """ - setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") + setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "sa_python", env=llm_venv._new_env, - model_path=llama_model_root, + model_path=qwen_model_root, cwd=llm_venv.get_working_directory()) @pytest.mark.skip_less_device(4) -@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_ctxpp2_genpp2(disaggregated_test_root, llm_venv, disaggregated_example_root, - llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") + qwen_model_root): + setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "ctxpp2_genpp2", env=llm_venv._new_env, - model_path=llama_model_root, + model_path=qwen_model_root, cwd=llm_venv.get_working_directory()) @pytest.mark.skip_less_device(4) -@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_ctxtp2_genpp2(disaggregated_test_root, llm_venv, disaggregated_example_root, - llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") + qwen_model_root): + setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "ctxtp2_genpp2", env=llm_venv._new_env, - model_path=llama_model_root, + model_path=qwen_model_root, cwd=llm_venv.get_working_directory()) @pytest.mark.skip_less_device(4) -@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_ctxpp2_gentp2(disaggregated_test_root, llm_venv, disaggregated_example_root, - llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") + qwen_model_root): + setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "ctxpp2_gentp2", env=llm_venv._new_env, - model_path=llama_model_root, + model_path=qwen_model_root, cwd=llm_venv.get_working_directory()) @pytest.mark.skip_less_device(8) -@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_ctxtp2pp2_gentp2pp2(disaggregated_test_root, llm_venv, disaggregated_example_root, - llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") + qwen_model_root): + setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "ctxtp2pp2_gentp2pp2", env=llm_venv._new_env, - model_path=llama_model_root, + model_path=qwen_model_root, cwd=llm_venv.get_working_directory()) @pytest.mark.skip_less_device(8) -@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_ctxpp4_genpp4(disaggregated_test_root, llm_venv, disaggregated_example_root, - llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") + qwen_model_root): + setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "ctxpp4_genpp4", env=llm_venv._new_env, - model_path=llama_model_root, + model_path=qwen_model_root, cwd=llm_venv.get_working_directory()) #tiny llama pp4 will have uneven layer per pp. pp4 @pytest.mark.skip_less_device(8) -@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_disaggregated_ctxpp4_gentp4(disaggregated_test_root, llm_venv, disaggregated_example_root, - llama_model_root): - setup_model_symlink(llm_venv, llama_model_root, "Qwen3/Qwen3-0.6B") + qwen_model_root): + setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "ctxpp4_gentp4", env=llm_venv._new_env, - model_path=llama_model_root, + model_path=qwen_model_root, cwd=llm_venv.get_working_directory()) diff --git a/tests/integration/defs/disaggregated/test_disaggregated_etcd.py b/tests/integration/defs/disaggregated/test_disaggregated_etcd.py index 8625eabbcb7d..4d38f3655865 100644 --- a/tests/integration/defs/disaggregated/test_disaggregated_etcd.py +++ b/tests/integration/defs/disaggregated/test_disaggregated_etcd.py @@ -19,7 +19,6 @@ import subprocess import time -import pytest import requests from defs.conftest import get_sm_version @@ -434,13 +433,11 @@ def run_automated_disaggregated_test(example_dir, env=None, cwd=None): kill_automated_disaggregated_processes() -@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_automated_disaggregated_complete(disaggregated_test_root, disaggregated_example_root, llm_venv, - llama_model_root): + qwen_model_root): src_dst_dict = { - llama_model_root: - f"{llm_venv.get_working_directory()}/Qwen3/Qwen3-0.6B", + qwen_model_root: f"{llm_venv.get_working_directory()}/Qwen3/Qwen3-0.6B", } for src, dst in src_dst_dict.items(): if not os.path.islink(dst): diff --git a/tests/integration/defs/disaggregated/test_workers.py b/tests/integration/defs/disaggregated/test_workers.py index 387d9addb07b..b402227e8b7d 100644 --- a/tests/integration/defs/disaggregated/test_workers.py +++ b/tests/integration/defs/disaggregated/test_workers.py @@ -552,10 +552,9 @@ async def test_eviction(self): assert info["matches"][0] < first_match -def prepare_llama_model(llama_model_root: str, llm_venv): +def prepare_llama_model(qwen_model_root: str, llm_venv): src_dst_dict = { - llama_model_root: - f"{llm_venv.get_working_directory()}/Qwen3/Qwen3-0.6B", + qwen_model_root: f"{llm_venv.get_working_directory()}/Qwen3/Qwen3-0.6B", } for src, dst in src_dst_dict.items(): if not os.path.islink(dst): @@ -677,13 +676,12 @@ def background_workers(llm_venv, config_file: str): @pytest.mark.skip(reason="https://nvbugs/5372970") -@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_workers_conditional_disaggregation(disaggregated_test_root, disaggregated_example_root, - llm_venv, llama_model_root): + llm_venv, qwen_model_root): config_file = os.path.join(disaggregated_test_root, 'test_configs/disagg_config_cache_reuse.yaml') - prepare_llama_model(llama_model_root, llm_venv) + prepare_llama_model(qwen_model_root, llm_venv) with background_workers(llm_venv, config_file) as (ctx_servers, gen_servers, _, @@ -724,13 +722,12 @@ def test_workers_conditional_disaggregation_deepseek_v3_lite_bf16( asyncio.run(tester.test_multi_round_request(prompts)) -@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_workers_kv_cache_events(disaggregated_test_root, disaggregated_example_root, llm_venv, - llama_model_root): + qwen_model_root): config_file = os.path.join(disaggregated_test_root, 'test_configs/disagg_config_cache_reuse.yaml') - prepare_llama_model(llama_model_root, llm_venv) + prepare_llama_model(qwen_model_root, llm_venv) with background_workers(llm_venv, config_file) as (ctx_servers, gen_servers, _, @@ -743,14 +740,13 @@ def test_workers_kv_cache_events(disaggregated_test_root, asyncio.run(tester.test_multi_round_request(prompts, 6)) -@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_workers_kv_cache_aware_router(disaggregated_test_root, disaggregated_example_root, llm_venv, - llama_model_root): + qwen_model_root): config_file = os.path.join( disaggregated_test_root, 'test_configs/disagg_config_cache_aware_balance.yaml') - prepare_llama_model(llama_model_root, llm_venv) + prepare_llama_model(qwen_model_root, llm_venv) with background_workers(llm_venv, config_file) as (ctx_servers, gen_servers, _, @@ -794,13 +790,12 @@ def test_workers_kv_cache_aware_router_deepseek_v3_lite_bf16( asyncio.run(tester.test_multi_round_request(prompts, 8, 4)) -@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_workers_kv_cache_aware_router_eviction(disaggregated_test_root, disaggregated_example_root, - llm_venv, llama_model_root): + llm_venv, qwen_model_root): config_file = os.path.join(disaggregated_test_root, 'test_configs/disagg_config_cache_reuse.yaml') - prepare_llama_model(llama_model_root, llm_venv) + prepare_llama_model(qwen_model_root, llm_venv) with background_workers(llm_venv, config_file) as (ctx_servers, gen_servers, _, @@ -999,14 +994,13 @@ async def test_implicit_conversation_matching(self): @skip_no_hopper @pytest.mark.skip_less_device(3) -@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_workers_conversation_router(disaggregated_test_root, disaggregated_example_root, llm_venv, - llama_model_root): + qwen_model_root): config_file = os.path.join( disaggregated_test_root, 'test_configs/disagg_config_conversation_workers.yaml') - prepare_llama_model(llama_model_root, llm_venv) + prepare_llama_model(qwen_model_root, llm_venv) with background_workers(llm_venv, config_file) as (ctx_servers, gen_servers, diff --git a/tests/integration/defs/examples/test_llm_api_with_mpi.py b/tests/integration/defs/examples/test_llm_api_with_mpi.py index 60da32694797..cb2608531b51 100644 --- a/tests/integration/defs/examples/test_llm_api_with_mpi.py +++ b/tests/integration/defs/examples/test_llm_api_with_mpi.py @@ -15,16 +15,13 @@ import os -import pytest from defs.common import venv_mpi_check_call -@pytest.mark.parametrize("llama_model_root", ['Qwen3-0.6B'], indirect=True) def test_llm_api_single_gpu_with_mpirun(llmapi_example_root, llm_venv, - llama_model_root): + qwen_model_root): src_dst_dict = { - llama_model_root: - f"{llm_venv.get_working_directory()}/Qwen3/Qwen3-0.6B", + qwen_model_root: f"{llm_venv.get_working_directory()}/Qwen3/Qwen3-0.6B", } for src, dst in src_dst_dict.items(): if not os.path.islink(dst): diff --git a/tests/integration/defs/triton_server/conftest.py b/tests/integration/defs/triton_server/conftest.py index f65d138b57c4..d50f69cd7a48 100644 --- a/tests/integration/defs/triton_server/conftest.py +++ b/tests/integration/defs/triton_server/conftest.py @@ -331,46 +331,6 @@ def gpt_2b_lora_model_root(): return gpt_2b_lora_model_root -@pytest.fixture(scope="session") -def tiny_llama_lora_base_model_root(): - """Base model for the TinyLlama-1.1B-Chat-v1.0 LoRA adapter. - - Kept separate from `tiny_llama_model_root` because the LoRA adapter - returned by `tiny_llama_lora_model_root` is fine-tuned specifically - for TinyLlama-1.1B-Chat-v1.0 and has no Qwen3-0.6B equivalent. - """ - models_root = llm_models_root() - assert models_root, "Did you set LLM_MODELS_ROOT?" - tiny_llama_lora_base_model_root = os.path.join(models_root, - "llama-models-v2", - "TinyLlama-1.1B-Chat-v1.0") - - assert os.path.exists( - tiny_llama_lora_base_model_root - ), f"{tiny_llama_lora_base_model_root} does not exist under NFS LLM_MODELS_ROOT dir" - return tiny_llama_lora_base_model_root - - -@pytest.fixture(scope="session") -def tiny_llama_lora_model_root(): - """HF-format LoRA adapter for TinyLlama-1.1B-Chat-v1.0. - - Used by the llmapi triton backend's E2E LoRA test - (`test_llmapi_lora`). Same base model as - `tiny_llama_lora_base_model_root`. - """ - models_root = llm_models_root() - assert models_root, "Did you set LLM_MODELS_ROOT?" - tiny_llama_lora_model_root = os.path.join( - models_root, "llama-models-v2", - "TinyLlama-1.1B-Chat-v1.0-mental-health-conversational") - - assert os.path.exists( - tiny_llama_lora_model_root - ), f"{tiny_llama_lora_model_root} does not exist under NFS LLM_MODELS_ROOT dir" - return tiny_llama_lora_model_root - - @pytest.fixture(scope="session") def blip2_opt_model_root(): models_root = llm_models_root() diff --git a/tests/integration/defs/triton_server/test_triton_llmapi.py b/tests/integration/defs/triton_server/test_triton_llmapi.py index 8d68c18145f2..5069c4872419 100644 --- a/tests/integration/defs/triton_server/test_triton_llmapi.py +++ b/tests/integration/defs/triton_server/test_triton_llmapi.py @@ -178,80 +178,6 @@ def test_llmapi_backend( output = venv_check_output(llm_backend_venv, run_cmd) -@pytest.mark.parametrize("E2E_MODEL_NAME", ["tensorrt_llm"]) -@pytest.mark.parametrize("TENSOR_PARALLEL_SIZE", ["1"]) -def test_llmapi_lora( - E2E_MODEL_NAME, - TENSOR_PARALLEL_SIZE, - llm_backend_inflight_batcher_llm_root, - llm_backend_venv, - tiny_llama_lora_base_model_root, - tiny_llama_lora_model_root, -): - """E2E LoRA test for the new llmapi triton backend. - - Templates `model.yaml` with `lora_config:` pointing at a TinyLlama - HF LoRA adapter, launches Triton with the llmapi backend, and sends - one request via `llmapi_client.py --lora-id/--lora-name/--lora-path`. - Asserts that the response carries generated text — proving the new - lora_id/lora_name/lora_path inputs reach `LLM.generate_async( - lora_request=...)` and adapter-applied inference completes. - """ - llm_backend_repo_root = os.path.join(LLM_ROOT, "triton_backend") - - if torch.cuda.device_count() < int(TENSOR_PARALLEL_SIZE): - pytest.skip("Skipping. Not enough GPUs.") - - # Prepare model repo with lora_config - new_model_repo = os.path.join(llm_backend_repo_root, "triton_repo") - prepare_llmapi_model_repo(llm_backend_repo_root, new_model_repo) - set_llmapi_decoupled_mode(new_model_repo, False) - model_config_path = os.path.join(new_model_repo, "tensorrt_llm", "1", "model.yaml") - with open(model_config_path, "r") as f: - model_config = yaml.safe_load(f) - model_config["triton_config"]["decoupled"] = False - model_config["triton_config"]["max_batch_size"] = 0 - model_config["tensor_parallel_size"] = int(TENSOR_PARALLEL_SIZE) - model_config["kv_cache_config"] = {"free_gpu_memory_fraction": 0.8} - model_config["model"] = tiny_llama_lora_base_model_root - model_config["lora_config"] = { - "lora_dir": [tiny_llama_lora_model_root], - "max_lora_rank": 64, - "max_loras": 1, - "max_cpu_loras": 1, - } - with open(model_config_path, "w") as f: - yaml.dump(model_config, f) - - # Launch Triton Server - launch_server_py = os.path.join(llm_backend_repo_root, "scripts", "launch_triton_server.py") - cmd = ( - f"python3 {launch_server_py} " - f"--world_size={TENSOR_PARALLEL_SIZE} " - f"--model_repo={new_model_repo} --no-mpi" - ) - print_info(f"DEBUG:: launch_server with args: {cmd}") - check_call(cmd, shell=True) - check_server_ready() - - # Send a LoRA request via llmapi_client.py - run_cmd = [ - f"{llm_backend_repo_root}/tools/llmapi_client.py", - "--text=I've noticed you seem a bit down lately. " - "Is there anything you'd like to talk about?", - "--request-output-len=32", - "--lora-id=0", - "--lora-name=mental-health", - f"--lora-path={tiny_llama_lora_model_root}", - f"--model-name={E2E_MODEL_NAME}", - ] - print_info("DEBUG:: run_cmd: python3 " + " ".join(run_cmd)) - output = venv_check_output(llm_backend_venv, run_cmd) - assert "Output text:" in output, ( - f"Expected 'Output text:' in client output, got: {output[:500]}" - ) - - def test_llmapi_backend_multi_instance( llm_backend_inflight_batcher_llm_root, llm_backend_venv, diff --git a/tests/integration/test_lists/qa/llm_function_core.txt b/tests/integration/test_lists/qa/llm_function_core.txt index d2df4a7f0285..468bccfa5f39 100644 --- a/tests/integration/test_lists/qa/llm_function_core.txt +++ b/tests/integration/test_lists/qa/llm_function_core.txt @@ -692,18 +692,18 @@ disaggregated/test_auto_scaling.py::test_worker_restart[etcd-round_robin] disaggregated/test_auto_scaling.py::test_worker_restart[http-kv_cache_aware] disaggregated/test_auto_scaling.py::test_worker_restart[http-load_balancing] disaggregated/test_auto_scaling.py::test_worker_restart[http-round_robin] -disaggregated/test_disaggregated.py::test_disaggregated_benchmark_gen_only_insufficient_kv[Qwen3-0.6B] -disaggregated/test_disaggregated.py::test_disaggregated_cache_aware_balance[Qwen3-0.6B] +disaggregated/test_disaggregated.py::test_disaggregated_benchmark_gen_only_insufficient_kv +disaggregated/test_disaggregated.py::test_disaggregated_cache_aware_balance disaggregated/test_disaggregated.py::test_disaggregated_cancel_large_context_requests[DeepSeek-V3-Lite-bf16] -disaggregated/test_disaggregated.py::test_disaggregated_chat_completion_tool_calls[Qwen3-0.6B] -disaggregated/test_disaggregated.py::test_disaggregated_conditional[Qwen3-0.6B] -disaggregated/test_disaggregated.py::test_disaggregated_ctxpp2_genpp2[Qwen3-0.6B] -disaggregated/test_disaggregated.py::test_disaggregated_ctxpp2_gentp2[Qwen3-0.6B] -disaggregated/test_disaggregated.py::test_disaggregated_ctxpp4_genpp4[Qwen3-0.6B] -disaggregated/test_disaggregated.py::test_disaggregated_ctxpp4_gentp4[Qwen3-0.6B] -disaggregated/test_disaggregated.py::test_disaggregated_ctxtp2_genpp2[Qwen3-0.6B] -disaggregated/test_disaggregated.py::test_disaggregated_ctxtp2pp2_gentp2pp2[Qwen3-0.6B] -disaggregated/test_disaggregated.py::test_disaggregated_cuda_graph[Qwen3-0.6B] +disaggregated/test_disaggregated.py::test_disaggregated_chat_completion_tool_calls +disaggregated/test_disaggregated.py::test_disaggregated_conditional +disaggregated/test_disaggregated.py::test_disaggregated_ctxpp2_genpp2 +disaggregated/test_disaggregated.py::test_disaggregated_ctxpp2_gentp2 +disaggregated/test_disaggregated.py::test_disaggregated_ctxpp4_genpp4 +disaggregated/test_disaggregated.py::test_disaggregated_ctxpp4_gentp4 +disaggregated/test_disaggregated.py::test_disaggregated_ctxtp2_genpp2 +disaggregated/test_disaggregated.py::test_disaggregated_ctxtp2pp2_gentp2pp2 +disaggregated/test_disaggregated.py::test_disaggregated_cuda_graph disaggregated/test_disaggregated.py::test_disaggregated_deepseek_v3_lite_bf16_cache_aware_balance[DeepSeek-V3-Lite-bf16] disaggregated/test_disaggregated.py::test_disaggregated_deepseek_v3_lite_bf16_conditional[DeepSeek-V3-Lite-bf16] disaggregated/test_disaggregated.py::test_disaggregated_deepseek_v3_lite_bf16_conditional_v2[DeepSeek-V3-Lite-bf16] @@ -725,31 +725,31 @@ disaggregated/test_disaggregated.py::test_disaggregated_deepseek_v3_lite_fp8_tp1 disaggregated/test_disaggregated.py::test_disaggregated_deepseek_v3_lite_fp8_tp1_single_gpu[DeepSeek-V3-Lite-fp8] disaggregated/test_disaggregated.py::test_disaggregated_deepseek_v3_lite_fp8_tp1_single_gpu_mtp[DeepSeek-V3-Lite-fp8] disaggregated/test_disaggregated.py::test_disaggregated_deepseek_v3_lite_fp8_tp1_two_mtp[DeepSeek-V3-Lite-fp8] -disaggregated/test_disaggregated.py::test_disaggregated_diff_max_tokens[Qwen3-0.6B] -disaggregated/test_disaggregated.py::test_disaggregated_genbs1[Qwen3-0.6B] +disaggregated/test_disaggregated.py::test_disaggregated_diff_max_tokens +disaggregated/test_disaggregated.py::test_disaggregated_genbs1 disaggregated/test_disaggregated.py::test_disaggregated_gpt_oss_120b_harmony[gpt_oss/gpt-oss-120b] -disaggregated/test_disaggregated.py::test_disaggregated_kv_cache_time_output[Qwen3-0.6B] -disaggregated/test_disaggregated.py::test_disaggregated_load_balance[Qwen3-0.6B] +disaggregated/test_disaggregated.py::test_disaggregated_kv_cache_time_output +disaggregated/test_disaggregated.py::test_disaggregated_load_balance disaggregated/test_disaggregated.py::test_disaggregated_logprobs_serving[llama-3.1-8b-instruct] disaggregated/test_disaggregated.py::test_disaggregated_mamba_bs1_concurrency2 disaggregated/test_disaggregated.py::test_disaggregated_mamba_conc_greater_than_mbs[NVIDIA-Nemotron-3-Super-120B-A12B-FP8] -disaggregated/test_disaggregated.py::test_disaggregated_mixed[Qwen3-0.6B] +disaggregated/test_disaggregated.py::test_disaggregated_mixed disaggregated/test_disaggregated.py::test_disaggregated_mixed_stress_test[req120-conc64-qwen3_32b_fp8_mixed_stress] -disaggregated/test_disaggregated.py::test_disaggregated_multi_gpu[Qwen3-0.6B] -disaggregated/test_disaggregated.py::test_disaggregated_ngram[Qwen3-0.6B] -disaggregated/test_disaggregated.py::test_disaggregated_overlap[Qwen3-0.6B] -disaggregated/test_disaggregated.py::test_disaggregated_overlap_gen_first[ctx_pp1-Qwen3-0.6B] -disaggregated/test_disaggregated.py::test_disaggregated_overlap_gen_first[ctx_pp4-Qwen3-0.6B] -disaggregated/test_disaggregated.py::test_disaggregated_overlap_transceiver_runtime_python[Qwen3-0.6B] -disaggregated/test_disaggregated.py::test_disaggregated_overlap_transceiver_runtime_python_bounce[Qwen3-0.6B] -disaggregated/test_disaggregated.py::test_disaggregated_overlap_transceiver_runtime_python_fabric_memory[Qwen3-0.6B] -disaggregated/test_disaggregated.py::test_disaggregated_perf_metrics[Qwen3-0.6B] -disaggregated/test_disaggregated.py::test_disaggregated_python_transceiver_host_offload[Qwen3-0.6B] +disaggregated/test_disaggregated.py::test_disaggregated_multi_gpu +disaggregated/test_disaggregated.py::test_disaggregated_ngram +disaggregated/test_disaggregated.py::test_disaggregated_overlap +disaggregated/test_disaggregated.py::test_disaggregated_overlap_gen_first[ctx_pp1] +disaggregated/test_disaggregated.py::test_disaggregated_overlap_gen_first[ctx_pp4] +disaggregated/test_disaggregated.py::test_disaggregated_overlap_transceiver_runtime_python +disaggregated/test_disaggregated.py::test_disaggregated_overlap_transceiver_runtime_python_bounce +disaggregated/test_disaggregated.py::test_disaggregated_overlap_transceiver_runtime_python_fabric_memory +disaggregated/test_disaggregated.py::test_disaggregated_perf_metrics +disaggregated/test_disaggregated.py::test_disaggregated_python_transceiver_host_offload disaggregated/test_disaggregated.py::test_disaggregated_qwen3_32b_fp8[Qwen3/Qwen3-32B-FP8] -disaggregated/test_disaggregated.py::test_disaggregated_sa[Qwen3-0.6B] -disaggregated/test_disaggregated.py::test_disaggregated_sa_python[Qwen3-0.6B] -disaggregated/test_disaggregated.py::test_disaggregated_single_gpu[Qwen3-0.6B] -disaggregated/test_disaggregated.py::test_disaggregated_tinyllama_multi_orchestrator[Qwen3-0.6B] +disaggregated/test_disaggregated.py::test_disaggregated_sa +disaggregated/test_disaggregated.py::test_disaggregated_sa_python +disaggregated/test_disaggregated.py::test_disaggregated_single_gpu +disaggregated/test_disaggregated.py::test_disaggregated_tinyllama_multi_orchestrator disaggregated/test_disaggregated_single_gpu.py::test_arbitrary_kv_cache_transfer[False-Qwen3-0.6B] disaggregated/test_disaggregated_single_gpu.py::test_arbitrary_kv_cache_transfer_missing_blocks[False-Qwen3-0.6B] disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_cancel_gen_requests[Qwen3-0.6B] @@ -771,13 +771,13 @@ disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_qwen3[ disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_qwen3[True-False-Qwen3-8B-FP8] disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_qwen3[True-True-Qwen3-8B-FP8] disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_spec_dec_batch_slot_limit[False-EAGLE3-LLaMA3.1-Instruct-8B-Llama-3.1-8B-Instruct] -disaggregated/test_workers.py::test_workers_conditional_disaggregation[Qwen3-0.6B] +disaggregated/test_workers.py::test_workers_conditional_disaggregation disaggregated/test_workers.py::test_workers_conditional_disaggregation_deepseek_v3_lite_bf16[DeepSeek-V3-Lite-bf16] -disaggregated/test_workers.py::test_workers_conversation_router[Qwen3-0.6B] -disaggregated/test_workers.py::test_workers_kv_cache_aware_router[Qwen3-0.6B] +disaggregated/test_workers.py::test_workers_conversation_router +disaggregated/test_workers.py::test_workers_kv_cache_aware_router disaggregated/test_workers.py::test_workers_kv_cache_aware_router_deepseek_v3_lite_bf16[DeepSeek-V3-Lite-bf16] -disaggregated/test_workers.py::test_workers_kv_cache_aware_router_eviction[Qwen3-0.6B] -disaggregated/test_workers.py::test_workers_kv_cache_events[Qwen3-0.6B] +disaggregated/test_workers.py::test_workers_kv_cache_aware_router_eviction +disaggregated/test_workers.py::test_workers_kv_cache_events kv_cache/test_prefix_aware_scheduling.py::TestServePrefixAwareScheduling::test_multi_round_qa_shared_prefix_smoke llmapi/test_llm_api_pytorch_moe_lora.py::test_qwen_moe_routed_expert_multi_lora_varying_ranks[cudagraph] TIMEOUT (300) llmapi/test_llm_api_pytorch_moe_lora.py::test_qwen_moe_routed_expert_multi_lora_varying_ranks[eager] TIMEOUT (300) diff --git a/tests/integration/test_lists/qa/llm_triton_integration.txt b/tests/integration/test_lists/qa/llm_triton_integration.txt index a1225a4c096f..3381daf33b74 100644 --- a/tests/integration/test_lists/qa/llm_triton_integration.txt +++ b/tests/integration/test_lists/qa/llm_triton_integration.txt @@ -2,5 +2,4 @@ triton_server/test_triton_llmapi.py::test_llmapi_backend[1-0-disableDecoupleMode triton_server/test_triton_llmapi.py::test_llmapi_backend[1-0-enableDecoupleMode-tensorrt_llm] triton_server/test_triton_llmapi.py::test_llmapi_backend[4-0-disableDecoupleMode-tensorrt_llm] triton_server/test_triton_llmapi.py::test_llmapi_backend[4-0-enableDecoupleMode-tensorrt_llm] -triton_server/test_triton_llmapi.py::test_llmapi_lora[1-tensorrt_llm] triton_server/test_triton_llmapi.py::test_llmapi_backend_multi_instance diff --git a/tests/integration/test_lists/test-db/l0_a10.yml b/tests/integration/test_lists/test-db/l0_a10.yml index 1bf30e9a0922..5bdbd64376b1 100644 --- a/tests/integration/test_lists/test-db/l0_a10.yml +++ b/tests/integration/test_lists/test-db/l0_a10.yml @@ -83,23 +83,23 @@ l0_a10: - unittest/tools/test_unittest_culprits.py - unittest/usage/test_transport.py - unittest/usage/test_e2e_capture.py - - disaggregated/test_disaggregated.py::test_disaggregated_single_gpu[Qwen3-0.6B] - - disaggregated/test_disaggregated.py::test_disaggregated_cuda_graph[Qwen3-0.6B] - - disaggregated/test_disaggregated.py::test_disaggregated_mixed[Qwen3-0.6B] - - disaggregated/test_disaggregated.py::test_disaggregated_overlap[Qwen3-0.6B] - - disaggregated/test_disaggregated.py::test_disaggregated_diff_max_tokens[Qwen3-0.6B] - - disaggregated/test_disaggregated.py::test_disaggregated_kv_cache_time_output[Qwen3-0.6B] - - disaggregated/test_disaggregated.py::test_disaggregated_perf_metrics[Qwen3-0.6B] - - disaggregated/test_disaggregated.py::test_disaggregated_cache_aware_balance[Qwen3-0.6B] - - disaggregated/test_disaggregated.py::test_disaggregated_conditional[Qwen3-0.6B] - - disaggregated/test_disaggregated.py::test_disaggregated_benchmark_gen_only_insufficient_kv[Qwen3-0.6B] - - disaggregated/test_disaggregated.py::test_disaggregated_ngram[Qwen3-0.6B] - - disaggregated/test_disaggregated.py::test_disaggregated_sa[Qwen3-0.6B] - - disaggregated/test_disaggregated.py::test_disaggregated_chat_completion_tool_calls[Qwen3-0.6B] - - disaggregated/test_workers.py::test_workers_conditional_disaggregation[Qwen3-0.6B] - - disaggregated/test_workers.py::test_workers_kv_cache_events[Qwen3-0.6B] - - disaggregated/test_workers.py::test_workers_kv_cache_aware_router[Qwen3-0.6B] - - disaggregated/test_workers.py::test_workers_kv_cache_aware_router_eviction[Qwen3-0.6B] + - disaggregated/test_disaggregated.py::test_disaggregated_single_gpu + - disaggregated/test_disaggregated.py::test_disaggregated_cuda_graph + - disaggregated/test_disaggregated.py::test_disaggregated_mixed + - disaggregated/test_disaggregated.py::test_disaggregated_overlap + - disaggregated/test_disaggregated.py::test_disaggregated_diff_max_tokens + - disaggregated/test_disaggregated.py::test_disaggregated_kv_cache_time_output + - disaggregated/test_disaggregated.py::test_disaggregated_perf_metrics + - disaggregated/test_disaggregated.py::test_disaggregated_cache_aware_balance + - disaggregated/test_disaggregated.py::test_disaggregated_conditional + - disaggregated/test_disaggregated.py::test_disaggregated_benchmark_gen_only_insufficient_kv + - disaggregated/test_disaggregated.py::test_disaggregated_ngram + - disaggregated/test_disaggregated.py::test_disaggregated_sa + - disaggregated/test_disaggregated.py::test_disaggregated_chat_completion_tool_calls + - disaggregated/test_workers.py::test_workers_conditional_disaggregation + - disaggregated/test_workers.py::test_workers_kv_cache_events + - disaggregated/test_workers.py::test_workers_kv_cache_aware_router + - disaggregated/test_workers.py::test_workers_kv_cache_aware_router_eviction - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_llama[False-False-TinyLlama-1.1B-Chat-v1.0] - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_llama[False-True-TinyLlama-1.1B-Chat-v1.0] - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_llama[True-False-TinyLlama-1.1B-Chat-v1.0] diff --git a/tests/integration/test_lists/test-db/l0_b200.yml b/tests/integration/test_lists/test-db/l0_b200.yml index 975d77ac1c49..fd0971243f83 100644 --- a/tests/integration/test_lists/test-db/l0_b200.yml +++ b/tests/integration/test_lists/test-db/l0_b200.yml @@ -80,7 +80,7 @@ l0_b200: - accuracy/test_epd_disagg_multimodal.py::TestVideoMMEEPD::test_disaggregated_videomme[qwen3vl_2b_instruct] - accuracy/test_epd_disagg_multimodal.py::TestVideoMMEEPD::test_disaggregated_videomme[nemotron_nano_v3_omni_nvfp4] - accuracy/test_llm_api_pytorch.py::TestQwen3_5_35B_A3B::test_bf16_mtp - - disaggregated/test_workers.py::test_workers_kv_cache_aware_router_eviction[Qwen3-0.6B] # nvbugs 5300551 + - disaggregated/test_workers.py::test_workers_kv_cache_aware_router_eviction # nvbugs 5300551 - test_e2e.py::test_ptp_quickstart_advanced[Llama3.1-8B-NVFP4-nvfp4-quantized/Meta-Llama-3.1-8B] - test_e2e.py::test_ptp_quickstart_advanced[Nemotron-Nano-9B-v2-nvfp4-NVIDIA-Nemotron-Nano-9B-v2-NVFP4] - test_e2e.py::test_ptp_quickstart_advanced[Llama3.1-8B-FP8-llama-3.1-model/Llama-3.1-8B-Instruct-FP8] diff --git a/tests/integration/test_lists/test-db/l0_dgx_b200.yml b/tests/integration/test_lists/test-db/l0_dgx_b200.yml index 6e9a7b994b28..bcb0a4054f97 100644 --- a/tests/integration/test_lists/test-db/l0_dgx_b200.yml +++ b/tests/integration/test_lists/test-db/l0_dgx_b200.yml @@ -131,10 +131,10 @@ l0_dgx_b200: - unittest/_torch/ray_orchestrator/multi_gpu/test_llm_update_weights_multi_gpu.py -m "part3" - unittest/_torch/ray_orchestrator/multi_gpu/test_llm_update_weights_multi_gpu.py -m "part4" - unittest/_torch/ray_orchestrator/multi_gpu/test_llm_update_weights_multi_gpu.py -m "part5" - - disaggregated/test_disaggregated.py::test_disaggregated_ctxpp2_genpp2[Qwen3-0.6B] - - disaggregated/test_disaggregated.py::test_disaggregated_ctxtp2_genpp2[Qwen3-0.6B] - - disaggregated/test_disaggregated.py::test_disaggregated_ctxpp2_gentp2[Qwen3-0.6B] - - disaggregated/test_disaggregated.py::test_disaggregated_ctxpp4_gentp4[Qwen3-0.6B] + - disaggregated/test_disaggregated.py::test_disaggregated_ctxpp2_genpp2 + - disaggregated/test_disaggregated.py::test_disaggregated_ctxtp2_genpp2 + - disaggregated/test_disaggregated.py::test_disaggregated_ctxpp2_gentp2 + - disaggregated/test_disaggregated.py::test_disaggregated_ctxpp4_gentp4 - examples/test_ray.py::test_llm_inference_distributed_ray[tp2pp2] - examples/test_ray.py::test_ray_disaggregated_serving[tp2] - examples/test_ray.py::test_ray_disaggregated_serving_python[tp2] diff --git a/tests/integration/test_lists/test-db/l0_dgx_h100.yml b/tests/integration/test_lists/test-db/l0_dgx_h100.yml index ca7840ce3adb..890d96c63528 100644 --- a/tests/integration/test_lists/test-db/l0_dgx_h100.yml +++ b/tests/integration/test_lists/test-db/l0_dgx_h100.yml @@ -113,17 +113,17 @@ l0_dgx_h100: - unittest/disaggregated/test_py_cache_transceiver_mp.py -k "ctx_first_sync" - unittest/disaggregated/test_py_cache_transceiver_mp.py -k "gen_first1" - unittest/disaggregated/test_py_cache_transceiver_mp.py -k "gen_first2" - - disaggregated/test_disaggregated.py::test_disaggregated_multi_gpu[Qwen3-0.6B] - - disaggregated/test_disaggregated.py::test_disaggregated_ctxpp2_genpp2[Qwen3-0.6B] - - disaggregated/test_disaggregated.py::test_disaggregated_ctxtp2_genpp2[Qwen3-0.6B] - - disaggregated/test_disaggregated.py::test_disaggregated_ctxpp2_gentp2[Qwen3-0.6B] - - disaggregated/test_disaggregated.py::test_disaggregated_ctxpp4_gentp4[Qwen3-0.6B] - - disaggregated/test_disaggregated.py::test_disaggregated_genbs1[Qwen3-0.6B] - - disaggregated/test_disaggregated.py::test_disaggregated_overlap[Qwen3-0.6B] - - disaggregated/test_disaggregated.py::test_disaggregated_overlap_transceiver_runtime_python[Qwen3-0.6B] - - disaggregated/test_disaggregated.py::test_disaggregated_python_transceiver_host_offload[Qwen3-0.6B] - - disaggregated/test_disaggregated.py::test_disaggregated_overlap_gen_first[ctx_pp1-Qwen3-0.6B] - - disaggregated/test_disaggregated.py::test_disaggregated_overlap_gen_first[ctx_pp4-Qwen3-0.6B] + - disaggregated/test_disaggregated.py::test_disaggregated_multi_gpu + - disaggregated/test_disaggregated.py::test_disaggregated_ctxpp2_genpp2 + - disaggregated/test_disaggregated.py::test_disaggregated_ctxtp2_genpp2 + - disaggregated/test_disaggregated.py::test_disaggregated_ctxpp2_gentp2 + - disaggregated/test_disaggregated.py::test_disaggregated_ctxpp4_gentp4 + - disaggregated/test_disaggregated.py::test_disaggregated_genbs1 + - disaggregated/test_disaggregated.py::test_disaggregated_overlap + - disaggregated/test_disaggregated.py::test_disaggregated_overlap_transceiver_runtime_python + - disaggregated/test_disaggregated.py::test_disaggregated_python_transceiver_host_offload + - disaggregated/test_disaggregated.py::test_disaggregated_overlap_gen_first[ctx_pp1] + - disaggregated/test_disaggregated.py::test_disaggregated_overlap_gen_first[ctx_pp4] - accuracy/test_disaggregated_serving.py::TestQwen3_5_4B::test_ctx_pp_gen_tp_asymmetric - accuracy/test_disaggregated_serving.py::TestQwen3_8B::test_gen_first - accuracy/test_disaggregated_serving.py::TestQwen3_8B::test_gen_first_kv_cache_v1 @@ -217,7 +217,7 @@ l0_dgx_h100: - disaggregated/test_disaggregated.py::test_disaggregated_deepseek_v3_lite_fp8_ctxpp2_gentp2_one_mtp[DeepSeek-V3-Lite-fp8] - disaggregated/test_workers.py::test_workers_conditional_disaggregation_deepseek_v3_lite_bf16[DeepSeek-V3-Lite-bf16] - disaggregated/test_workers.py::test_workers_kv_cache_aware_router_deepseek_v3_lite_bf16[DeepSeek-V3-Lite-bf16] - - disaggregated/test_workers.py::test_workers_conversation_router[Qwen3-0.6B] + - disaggregated/test_workers.py::test_workers_conversation_router - condition: ranges: system_gpu_count: diff --git a/tests/integration/test_lists/test-db/l0_dgx_h200.yml b/tests/integration/test_lists/test-db/l0_dgx_h200.yml index fa25c64c12a1..d4ca9a57dcbb 100644 --- a/tests/integration/test_lists/test-db/l0_dgx_h200.yml +++ b/tests/integration/test_lists/test-db/l0_dgx_h200.yml @@ -32,8 +32,8 @@ l0_dgx_h200: - accuracy/test_disaggregated_serving.py::TestDeepSeekV3Lite::test_auto_dtype[mtp_nextn=2-overlap_scheduler=True] - accuracy/test_disaggregated_serving.py::TestDeepSeekV3Lite::test_auto_dtype[mtp_nextn=2-overlap_scheduler=False] - accuracy/test_llm_api_pytorch.py::TestQwen3NextInstruct::test_bf16_4gpu[tep4] - - disaggregated/test_disaggregated.py::test_disaggregated_ctxtp2pp2_gentp2pp2[Qwen3-0.6B] - - disaggregated/test_disaggregated.py::test_disaggregated_ctxpp4_genpp4[Qwen3-0.6B] + - disaggregated/test_disaggregated.py::test_disaggregated_ctxtp2pp2_gentp2pp2 + - disaggregated/test_disaggregated.py::test_disaggregated_ctxpp4_genpp4 - disaggregated/test_disaggregated.py::test_disaggregated_deepseek_v3_lite_fp8_ctxtp2ep2pp2_gentp4_one_mtp_block_reuse[DeepSeek-V3-Lite-fp8] - disaggregated/test_disaggregated.py::test_disaggregated_qwen3_32b_fp8[Qwen3/Qwen3-32B-FP8] - disaggregated/test_disaggregated.py::test_disaggregated_mixed_stress_test[req120-conc64-qwen3_32b_fp8_mixed_stress] diff --git a/tests/integration/test_lists/test-db/l0_gb200_multi_gpus.yml b/tests/integration/test_lists/test-db/l0_gb200_multi_gpus.yml index 47c51d700c09..629c612648ed 100644 --- a/tests/integration/test_lists/test-db/l0_gb200_multi_gpus.yml +++ b/tests/integration/test_lists/test-db/l0_gb200_multi_gpus.yml @@ -51,8 +51,8 @@ l0_gb200_multi_gpus: - unittest/_torch/moe/test_moe_comm.py::TestMoEComm::test_mnnvl_checkpoint_preserves_moe_graph_addresses - unittest/_torch/moe/test_moe_comm.py::TestMoEComm::test_mnnvl_engine_checkpoint_coordination - unittest/_torch/moe/test_moe_comm.py::TestMoEComm::test_mnnvl_checkpoint_failure_is_collective_and_bounded - - disaggregated/test_disaggregated.py::test_disaggregated_overlap_transceiver_runtime_python_fabric_memory[Qwen3-0.6B] - - disaggregated/test_disaggregated.py::test_disaggregated_overlap_transceiver_runtime_python_bounce[Qwen3-0.6B] + - disaggregated/test_disaggregated.py::test_disaggregated_overlap_transceiver_runtime_python_fabric_memory + - disaggregated/test_disaggregated.py::test_disaggregated_overlap_transceiver_runtime_python_bounce - condition: ranges: diff --git a/tests/integration/test_lists/test-db/l0_h100.yml b/tests/integration/test_lists/test-db/l0_h100.yml index 16b57a9aa0e3..8b130004c77e 100644 --- a/tests/integration/test_lists/test-db/l0_h100.yml +++ b/tests/integration/test_lists/test-db/l0_h100.yml @@ -166,8 +166,8 @@ l0_h100: - disaggregated/test_disaggregated.py::test_disaggregated_deepseek_v3_lite_fp8_tp1_single_gpu[DeepSeek-V3-Lite-fp8] - disaggregated/test_disaggregated.py::test_disaggregated_deepseek_v3_lite_fp8_tp1_single_gpu_mtp[DeepSeek-V3-Lite-fp8] - disaggregated/test_disaggregated.py::test_disaggregated_deepseek_v3_lite_fp8_tp1_two_mtp[DeepSeek-V3-Lite-fp8] - - disaggregated/test_disaggregated.py::test_disaggregated_load_balance[Qwen3-0.6B] - - disaggregated/test_disaggregated.py::test_disaggregated_tinyllama_multi_orchestrator[Qwen3-0.6B] + - disaggregated/test_disaggregated.py::test_disaggregated_load_balance + - disaggregated/test_disaggregated.py::test_disaggregated_tinyllama_multi_orchestrator - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_deepseek[False-False-DeepSeek-V3-Lite-fp8/fp8] - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_deepseek[False-True-DeepSeek-V3-Lite-fp8/fp8] - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_deepseek[True-False-DeepSeek-V3-Lite-fp8/fp8] diff --git a/tests/integration/test_lists/test-db/l0_l40s.yml b/tests/integration/test_lists/test-db/l0_l40s.yml index 76cec1d53cf3..0601d5a492a2 100644 --- a/tests/integration/test_lists/test-db/l0_l40s.yml +++ b/tests/integration/test_lists/test-db/l0_l40s.yml @@ -94,7 +94,7 @@ l0_l40s: - llmapi/test_llm_examples.py::test_llmapi_example_multilora - llmapi/test_llm_examples.py::test_llmapi_example_guided_decoding - llmapi/test_llm_examples.py::test_llmapi_example_logits_processor - - examples/test_llm_api_with_mpi.py::test_llm_api_single_gpu_with_mpirun[Qwen3-0.6B] + - examples/test_llm_api_with_mpi.py::test_llm_api_single_gpu_with_mpirun - condition: ranges: system_gpu_count: diff --git a/tests/integration/test_lists/test-db/l0_sanity_check.yml b/tests/integration/test_lists/test-db/l0_sanity_check.yml index aff8783a1177..218b864bd9e8 100644 --- a/tests/integration/test_lists/test-db/l0_sanity_check.yml +++ b/tests/integration/test_lists/test-db/l0_sanity_check.yml @@ -28,7 +28,7 @@ l0_sanity_check: - llmapi/test_llm_examples.py::test_llmapi_example_logits_processor - llmapi/test_llm_examples.py::test_llmapi_sampling - llmapi/test_llm_examples.py::test_llmapi_runtime - - examples/test_llm_api_with_mpi.py::test_llm_api_single_gpu_with_mpirun[Qwen3-0.6B] ISOLATION + - examples/test_llm_api_with_mpi.py::test_llm_api_single_gpu_with_mpirun ISOLATION - unittest/others/test_kv_cache_transceiver.py::test_kv_cache_transceiver_single_process[NIXL-mha-ctx_fp16_gen_fp16] - unittest/others/test_kv_cache_transceiver.py::test_kv_cache_transceiver_single_process[UCX-mha-ctx_fp16_gen_fp16] - unittest/others/test_kv_cache_transceiver.py::test_cpp_nixl_sync_transfer_stress diff --git a/tests/integration/test_lists/waives.txt b/tests/integration/test_lists/waives.txt index feddaa600018..91cd74633b85 100644 --- a/tests/integration/test_lists/waives.txt +++ b/tests/integration/test_lists/waives.txt @@ -64,7 +64,7 @@ disaggregated/test_disaggregated.py::test_disaggregated_deepseek_v3_lite_fp8_tp1 disaggregated/test_disaggregated.py::test_disaggregated_deepseek_v3_lite_fp8_tp1_single_gpu[DeepSeek-V3-Lite-fp8] SKIP (https://nvbugs/6162322) disaggregated/test_disaggregated.py::test_disaggregated_deepseek_v3_lite_fp8_tp1_single_gpu_mtp[DeepSeek-V3-Lite-fp8] SKIP (https://nvbugs/6162322) disaggregated/test_disaggregated.py::test_disaggregated_deepseek_v3_lite_fp8_tp1_two_mtp[DeepSeek-V3-Lite-fp8] SKIP (https://nvbugs/6162322) -disaggregated/test_disaggregated.py::test_disaggregated_genbs1[Qwen3-0.6B] SKIP (https://nvbugs/6162322) +disaggregated/test_disaggregated.py::test_disaggregated_genbs1 SKIP (https://nvbugs/6162322) disaggregated/test_disaggregated.py::test_disaggregated_stress_test[input8k-output1k-conc512-gpt_oss_120b_eagle_triton_stress] SKIP (https://nvbugs/6621362) disaggregated/test_disaggregated.py::test_disaggregated_stress_test[input8k-output1k-conc512-qwen3_5_4b_fp8_stress] SKIP (https://nvbugs/6621362) disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_logits[False-Qwen3-0.6B] SKIP (https://nvbugs/6759021) @@ -74,9 +74,9 @@ disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_logprobs[True disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_deepseek[False-False-DeepSeek-V3-Lite-fp8/fp8] SKIP (https://nvbugs/6759021) disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_llama[False-False-TinyLlama-1.1B-Chat-v1.0] SKIP (https://nvbugs/6759021) disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_qwen3[False-False-Qwen3-8B-FP8] SKIP (https://nvbugs/6759021) -disaggregated/test_workers.py::test_workers_conversation_router[Qwen3-0.6B] SKIP (https://nvbugs/6162322) +disaggregated/test_workers.py::test_workers_conversation_router SKIP (https://nvbugs/6162322) disaggregated/test_workers.py::test_workers_kv_cache_aware_router_deepseek_v3_lite_bf16[DeepSeek-V3-Lite-bf16] SKIP (https://nvbugs/6162322) -disaggregated/test_workers.py::test_workers_kv_cache_aware_router_eviction[Qwen3-0.6B] SKIP (https://nvbugs/6162322) +disaggregated/test_workers.py::test_workers_kv_cache_aware_router_eviction SKIP (https://nvbugs/6162322) examples/test_deepseek_v4_pro.py::test_short_token_boundary_smoke SKIP (https://nvbugs/6670227) examples/visual_gen/test_visual_gen_cosmos3.py::test_cosmos3_feature_accuracy_against_golden[fp8-blockwise] SKIP (https://nvbugs/6759131) examples/visual_gen/test_visual_gen_cosmos3.py::test_cosmos3_feature_accuracy_against_golden[nvfp4] SKIP (https://nvbugs/6572800) @@ -109,7 +109,7 @@ full:A100/accuracy/test_llm_api_pytorch_multimodal.py::TestExaone4_5_33B::test_a full:A100/accuracy/test_llm_api_pytorch_multimodal.py::TestExaone4_5_33B::test_auto_dtype[full_budget] SKIP (https://nvbugs/6597570) full:A100/disaggregated/test_disaggregated.py::test_disaggregated_deepseek_v3_lite_fp8_attention_dp_overlap[DeepSeek-V3-Lite-fp8] SKIP (https://nvbugs/6581064) full:A100/disaggregated/test_disaggregated.py::test_disaggregated_logprobs_serving[llama-3.1-8b-instruct] SKIP (https://nvbugs/6275959) -full:A100/disaggregated/test_disaggregated.py::test_disaggregated_python_transceiver_host_offload[Qwen3-0.6B] SKIP (https://nvbugs/6758573) +full:A100/disaggregated/test_disaggregated.py::test_disaggregated_python_transceiver_host_offload SKIP (https://nvbugs/6758573) full:A100/llmapi/test_llm_api_pytorch_moe_lora.py::test_qwen_moe_routed_expert_multi_lora_varying_ranks[cudagraph] SKIP (https://nvbugs/6758594) full:A100/llmapi/test_llm_api_pytorch_moe_lora.py::test_qwen_moe_routed_expert_multi_lora_varying_ranks[eager] SKIP (https://nvbugs/6758594) full:A100/llmapi/test_llm_api_qa.py::TestLlmDefaultBackend::test_llm_args_logging SKIP (https://nvbugs/6727262) @@ -131,7 +131,7 @@ full:B200/accuracy/test_llm_api_pytorch.py::TestQwen3_235B_A22B::test_nvfp4[late full:B200/accuracy/test_llm_api_pytorch_multimodal.py::TestExaone4_5_33B::test_auto_dtype[forced_chunked_prefill] SKIP (https://nvbugs/6597570) full:B200/accuracy/test_llm_api_pytorch_multimodal.py::TestExaone4_5_33B::test_auto_dtype[full_budget] SKIP (https://nvbugs/6597570) full:B200/disaggregated/test_disaggregated.py::test_disaggregated_logprobs_serving[llama-3.1-8b-instruct] SKIP (https://nvbugs/6275959) -full:B200/disaggregated/test_disaggregated.py::test_disaggregated_overlap_gen_first[ctx_pp4-Qwen3-0.6B] SKIP (https://nvbugs/6728119) +full:B200/disaggregated/test_disaggregated.py::test_disaggregated_overlap_gen_first[ctx_pp4] SKIP (https://nvbugs/6728119) full:B200/disaggregated/test_disaggregated.py::test_disaggregated_stress_test[input8k-output1k-conc512-deepseek_r1_v2_fp4_stress] SKIP (https://nvbugs/6765807) full:B200/disaggregated/test_disaggregated.py::test_disaggregated_stress_test[input8k-output1k-conc512-gpt_oss_120b_eagle_trtllm_stress] SKIP (https://nvbugs/6649384) full:B200/disaggregated/test_disaggregated.py::test_disaggregated_stress_test[input8k-output1k-conc512-qwen3_32b_fp8_stress] SKIP (https://nvbugs/6621362) @@ -148,11 +148,11 @@ full:B300/accuracy/test_llm_api_pytorch.py::TestMiniMaxM3::test_nvfp4[use_msa=Fa full:B300/accuracy/test_llm_api_pytorch.py::TestMistralLarge3_675B::test_nvfp4_4gpus[latency_moe_trtllm] SKIP (https://nvbugs/6529874) full:B300/accuracy/test_llm_api_pytorch_multimodal.py::TestExaone4_5_33B::test_auto_dtype[forced_chunked_prefill] SKIP (https://nvbugs/6597570) full:B300/accuracy/test_llm_api_pytorch_multimodal.py::TestExaone4_5_33B::test_auto_dtype[full_budget] SKIP (https://nvbugs/6597570) -full:B300/disaggregated/test_disaggregated.py::test_disaggregated_ctxpp4_genpp4[Qwen3-0.6B] SKIP (https://nvbugs/6771023) -full:B300/disaggregated/test_disaggregated.py::test_disaggregated_ctxpp4_gentp4[Qwen3-0.6B] SKIP (https://nvbugs/6728119) +full:B300/disaggregated/test_disaggregated.py::test_disaggregated_ctxpp4_genpp4 SKIP (https://nvbugs/6771023) +full:B300/disaggregated/test_disaggregated.py::test_disaggregated_ctxpp4_gentp4 SKIP (https://nvbugs/6728119) full:B300/disaggregated/test_disaggregated.py::test_disaggregated_logprobs_serving[llama-3.1-8b-instruct] SKIP (https://nvbugs/6275959) full:B300/disaggregated/test_disaggregated.py::test_disaggregated_mamba_conc_greater_than_mbs[NVIDIA-Nemotron-3-Super-120B-A12B-FP8] SKIP (https://nvbugs/6770978) -full:B300/disaggregated/test_disaggregated.py::test_disaggregated_overlap_gen_first[ctx_pp4-Qwen3-0.6B] SKIP (https://nvbugs/6728119) +full:B300/disaggregated/test_disaggregated.py::test_disaggregated_overlap_gen_first[ctx_pp4] SKIP (https://nvbugs/6728119) full:B300/disaggregated/test_disaggregated.py::test_disaggregated_qwen3_32b_fp8[Qwen3/Qwen3-32B-FP8] SKIP (https://nvbugs/6770977) full:B300/llmapi/test_llm_api_pytorch_moe_lora.py::test_qwen_moe_routed_expert_multi_lora_varying_ranks[cudagraph] SKIP (https://nvbugs/6758594) full:B300/llmapi/test_llm_api_pytorch_moe_lora.py::test_qwen_moe_routed_expert_multi_lora_varying_ranks[eager] SKIP (https://nvbugs/6758594) @@ -228,13 +228,13 @@ full:H20/accuracy/test_llm_api_pytorch_multimodal.py::TestExaone4_5_33B::test_au full:H20/accuracy/test_llm_api_pytorch_multimodal.py::TestExaone4_5_33B::test_auto_dtype[full_budget] SKIP (https://nvbugs/6597570) full:H20/accuracy/test_llm_api_pytorch_multimodal.py::TestNanoV3Omni::test_auto_dtype[bf16] SKIP (https://nvbugs/6618649) full:H20/disaggregated/test_disaggregated.py::test_disaggregated_logprobs_serving[llama-3.1-8b-instruct] SKIP (https://nvbugs/6275959) -full:H20/disaggregated/test_disaggregated.py::test_disaggregated_overlap_gen_first[ctx_pp1-Qwen3-0.6B] SKIP (https://nvbugs/6692009) -full:L40S/disaggregated/test_disaggregated.py::test_disaggregated_ctxpp2_genpp2[Qwen3-0.6B] SKIP (https://nvbugs/6728119) -full:L40S/disaggregated/test_disaggregated.py::test_disaggregated_ctxpp2_gentp2[Qwen3-0.6B] SKIP (https://nvbugs/6728119) -full:L40S/disaggregated/test_disaggregated.py::test_disaggregated_ctxtp2_genpp2[Qwen3-0.6B] SKIP (https://nvbugs/6728119) +full:H20/disaggregated/test_disaggregated.py::test_disaggregated_overlap_gen_first[ctx_pp1] SKIP (https://nvbugs/6692009) +full:L40S/disaggregated/test_disaggregated.py::test_disaggregated_ctxpp2_genpp2 SKIP (https://nvbugs/6728119) +full:L40S/disaggregated/test_disaggregated.py::test_disaggregated_ctxpp2_gentp2 SKIP (https://nvbugs/6728119) +full:L40S/disaggregated/test_disaggregated.py::test_disaggregated_ctxtp2_genpp2 SKIP (https://nvbugs/6728119) full:L40S/disaggregated/test_disaggregated.py::test_disaggregated_deepseek_v3_lite_fp8_attention_dp_overlap[DeepSeek-V3-Lite-fp8] SKIP (https://nvbugs/6581064) full:L40S/disaggregated/test_disaggregated.py::test_disaggregated_logprobs_serving[llama-3.1-8b-instruct] SKIP (https://nvbugs/6275959) -full:L40S/disaggregated/test_disaggregated.py::test_disaggregated_multi_gpu[Qwen3-0.6B] SKIP (https://nvbugs/6728119) +full:L40S/disaggregated/test_disaggregated.py::test_disaggregated_multi_gpu SKIP (https://nvbugs/6728119) full:L40S/llmapi/test_llm_api_qa.py::TestLlmDefaultBackend::test_llm_args_logging SKIP (https://nvbugs/6727262) full:L40S/llmapi/test_llm_api_qa.py::TestLlmDefaultBackend::test_llm_args_type_default SKIP (https://nvbugs/6727262) full:RTXPro6000D/accuracy/test_llm_api_pytorch.py::TestQwen3_30B_A3B::test_nvfp4[dep4_latency_moe_cutlass-torch_compile=True] SKIP (https://nvbugs/5929339) From 3e5793559d05207ffcd60ad1772063217093c25b Mon Sep 17 00:00:00 2001 From: "Xin He (SW-GPU)" <200704525+xinhe-nv@users.noreply.github.com> Date: Tue, 15 Sep 2026 10:51:51 +0800 Subject: [PATCH 03/13] [None][test] Finish renaming stale TinyLlama identifiers to Qwen3-0.6B Renames the remaining tinyllama-labeled helpers now that the model under test is Qwen3-0.6B: the reduced_layer_handoff parametrize id and its supporting reduced_tinyllama_config()/REDUCED_TINYLLAMA_LAYERS in test_ad_disagg.py. Also removes the triton_server qwen_model_root (formerly tiny_llama_model_root) fixture. It was only used by two tests in the same module, so it's inlined as a plain helper function there instead of adding another module-scoped fixture. Signed-off-by: Xin He (SW-GPU) <200704525+xinhe-nv@users.noreply.github.com> --- .../defs/disaggregated/test_ad_disagg.py | 12 ++++----- .../defs/triton_server/conftest.py | 12 --------- .../defs/triton_server/test_triton_llmapi.py | 26 +++++++++++++------ 3 files changed, 24 insertions(+), 26 deletions(-) diff --git a/tests/integration/defs/disaggregated/test_ad_disagg.py b/tests/integration/defs/disaggregated/test_ad_disagg.py index c3c4ccdf5782..fc5ef06404b1 100644 --- a/tests/integration/defs/disaggregated/test_ad_disagg.py +++ b/tests/integration/defs/disaggregated/test_ad_disagg.py @@ -65,7 +65,7 @@ def skip_b300(): "OMPI_UNIVERSE_SIZE", ) AUTODEPLOY_DISAGG_SEED = 1234 -REDUCED_TINYLLAMA_LAYERS = 2 +REDUCED_QWEN3_LAYERS = 2 REDUCED_DEEPSEEK_LAYERS = 2 LLAMA_EAGLE3_EXPECTED_TEXT = " Berlin\nWhat is the capital of France? Paris\nWhat is the capital of" LLAMA_EAGLE3_EXPECTED_TOKEN_IDS = [ @@ -280,9 +280,9 @@ def run_aggregate_generation( # --------------------------------------------------------------------------- -def reduced_tinyllama_config(extra_config=None): +def reduced_qwen3_config(extra_config=None): config = { - "model_kwargs": {"num_hidden_layers": REDUCED_TINYLLAMA_LAYERS}, + "model_kwargs": {"num_hidden_layers": REDUCED_QWEN3_LAYERS}, "max_batch_size": 4, "max_seq_len": 512, "max_num_tokens": 256, @@ -459,7 +459,7 @@ def reduced_model_config(model, extra_config=None): if "DeepSeek-V3-Lite" in model: config = reduced_deepseek_v3_mla_config() else: - config = reduced_tinyllama_config() + config = reduced_qwen3_config() if extra_config: config.update(extra_config) return config @@ -469,7 +469,7 @@ def reduced_model_cases(): return [ pytest.param( "Qwen3-0.6B", - id="tinyllama", + id="qwen3_0_6b", ), pytest.param( "DeepSeek-V3-Lite", @@ -563,7 +563,7 @@ def test_disaggregated_logits(model): # The MLA generation worker reconstructs logits from the compressed KV latent # through a different kernel/batching path than the single aggregate pass, so # bf16 rounding yields ~1-ULP logit differences. Use a looser tolerance for the - # MLA (DeepSeek) case; MHA (tinyllama) stays tight. The functional checks above + # MLA (DeepSeek) case; MHA (Qwen3-0.6B) stays tight. The functional checks above # (text/token_ids equality) remain strict for both. if "DeepSeek-V3-Lite" in model: rtol, atol = 1e-1, 1e-1 diff --git a/tests/integration/defs/triton_server/conftest.py b/tests/integration/defs/triton_server/conftest.py index d50f69cd7a48..5a19813019b6 100644 --- a/tests/integration/defs/triton_server/conftest.py +++ b/tests/integration/defs/triton_server/conftest.py @@ -443,18 +443,6 @@ def whisper_large_model_root(): return whisper_large_model_root -@pytest.fixture(scope="session") -def tiny_llama_model_root(): - models_root = llm_models_root() - assert models_root, "Did you set LLM_MODELS_ROOT?" - tiny_llama_model_root = os.path.join(models_root, "Qwen3", "Qwen3-0.6B") - - assert os.path.exists( - tiny_llama_model_root - ), f"{tiny_llama_model_root} does not exist under NFS LLM_MODELS_ROOT dir" - return tiny_llama_model_root - - @pytest.fixture(scope="session") def mistral_small_3_1_24b_model_root(): models_root = llm_models_root() diff --git a/tests/integration/defs/triton_server/test_triton_llmapi.py b/tests/integration/defs/triton_server/test_triton_llmapi.py index 5069c4872419..d6ae6c6bc303 100644 --- a/tests/integration/defs/triton_server/test_triton_llmapi.py +++ b/tests/integration/defs/triton_server/test_triton_llmapi.py @@ -18,7 +18,6 @@ Coverage: - ``test_llmapi_backend``: end-to-end serving across decoupled / non-decoupled modes and tensor-parallel sizes. -- ``test_llmapi_lora``: serving with LoRA adapters. - ``test_llmapi_backend_multi_instance``: multiple model instances in one repo. """ @@ -30,12 +29,22 @@ import yaml from .common import check_server_ready, prepare_llmapi_model_repo, set_llmapi_decoupled_mode -from .conftest import find_repo_root, venv_check_call, venv_check_output +from .conftest import find_repo_root, llm_models_root, venv_check_call, venv_check_output from .trt_test_alternative import call, check_call, print_info LLM_ROOT = os.environ.get("LLM_ROOT", find_repo_root()) +def _qwen_model_root(): + models_root = llm_models_root() + assert models_root, "Did you set LLM_MODELS_ROOT?" + qwen_model_root = os.path.join(models_root, "Qwen3", "Qwen3-0.6B") + assert os.path.exists(qwen_model_root), ( + f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" + ) + return qwen_model_root + + @pytest.fixture(autouse=True) def stop_triton_server(): # Make sure Triton server are killed before each test. @@ -62,13 +71,14 @@ def test_llmapi_backend( llm_backend_inflight_batcher_llm_root, llm_backend_venv, llm_backend_dataset_root, - tiny_llama_model_root, ): llm_backend_repo_root = os.path.join(LLM_ROOT, "triton_backend") if torch.cuda.device_count() < int(TENSOR_PARALLEL_SIZE): pytest.skip("Skipping. Not enough GPUs.") + qwen_model_root = _qwen_model_root() + # Prepare model repo new_model_repo = os.path.join(llm_backend_repo_root, "triton_repo") prepare_llmapi_model_repo(llm_backend_repo_root, new_model_repo) @@ -80,7 +90,7 @@ def test_llmapi_backend( model_config["triton_config"]["max_batch_size"] = int(TRITON_MAX_BATCH_SIZE) model_config["tensor_parallel_size"] = int(TENSOR_PARALLEL_SIZE) model_config["kv_cache_config"] = {"free_gpu_memory_fraction": 0.8} - model_config["model"] = tiny_llama_model_root + model_config["model"] = qwen_model_root with open(model_config_path, "w") as f: yaml.dump(model_config, f) @@ -143,7 +153,7 @@ def test_llmapi_backend( run_cmd += [ "dataset", f"--dataset={os.path.join(llm_backend_dataset_root, 'mini_cnn_eval.json')}", - f"--tokenizer-dir={tiny_llama_model_root}", + f"--tokenizer-dir={qwen_model_root}", ] print_info("DEBUG:: run_cmd: python3 " + " ".join(run_cmd)) @@ -182,9 +192,9 @@ def test_llmapi_backend_multi_instance( llm_backend_inflight_batcher_llm_root, llm_backend_venv, llm_backend_dataset_root, - tiny_llama_model_root, ): llm_backend_repo_root = os.path.join(LLM_ROOT, "triton_backend") + qwen_model_root = _qwen_model_root() # Prepare model repo new_model_repo = os.path.join(llm_backend_repo_root, "triton_repo") @@ -200,7 +210,7 @@ def test_llmapi_backend_multi_instance( model_config["tensor_parallel_size"] = 1 # Low KV cache to ensure both instances fit on GPU 0 model_config["kv_cache_config"] = {"free_gpu_memory_fraction": 0.3} - model_config["model"] = tiny_llama_model_root + model_config["model"] = qwen_model_root with open(model_config_path, "w") as f: yaml.dump(model_config, f) @@ -269,7 +279,7 @@ def test_llmapi_backend_multi_instance( "--decoupled", "dataset", f"--dataset={os.path.join(llm_backend_dataset_root, 'mini_cnn_eval.json')}", - f"--tokenizer-dir={tiny_llama_model_root}", + f"--tokenizer-dir={qwen_model_root}", ] print_info("DEBUG:: run_cmd: python3 " + " ".join(run_cmd)) venv_check_call(llm_backend_venv, run_cmd) From da08d2a62a44629bed746bced53e6fd3bab3b9ba Mon Sep 17 00:00:00 2001 From: "Xin He (SW-GPU)" <200704525+xinhe-nv@users.noreply.github.com> Date: Tue, 15 Sep 2026 10:59:06 +0800 Subject: [PATCH 04/13] [None][test] Inline Qwen3-0.6B path lookup in triton_server llmapi tests Drops the single-use _qwen_model_root() helper and inlines the os.path.join(models_root, "Qwen3", "Qwen3-0.6B") lookup directly at each of its two call sites. Signed-off-by: Xin He (SW-GPU) <200704525+xinhe-nv@users.noreply.github.com> --- .../defs/triton_server/test_triton_llmapi.py | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/tests/integration/defs/triton_server/test_triton_llmapi.py b/tests/integration/defs/triton_server/test_triton_llmapi.py index d6ae6c6bc303..d1fc34d1cdbc 100644 --- a/tests/integration/defs/triton_server/test_triton_llmapi.py +++ b/tests/integration/defs/triton_server/test_triton_llmapi.py @@ -35,16 +35,6 @@ LLM_ROOT = os.environ.get("LLM_ROOT", find_repo_root()) -def _qwen_model_root(): - models_root = llm_models_root() - assert models_root, "Did you set LLM_MODELS_ROOT?" - qwen_model_root = os.path.join(models_root, "Qwen3", "Qwen3-0.6B") - assert os.path.exists(qwen_model_root), ( - f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" - ) - return qwen_model_root - - @pytest.fixture(autouse=True) def stop_triton_server(): # Make sure Triton server are killed before each test. @@ -77,7 +67,12 @@ def test_llmapi_backend( if torch.cuda.device_count() < int(TENSOR_PARALLEL_SIZE): pytest.skip("Skipping. Not enough GPUs.") - qwen_model_root = _qwen_model_root() + models_root = llm_models_root() + assert models_root, "Did you set LLM_MODELS_ROOT?" + qwen_model_root = os.path.join(models_root, "Qwen3", "Qwen3-0.6B") + assert os.path.exists(qwen_model_root), ( + f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" + ) # Prepare model repo new_model_repo = os.path.join(llm_backend_repo_root, "triton_repo") @@ -194,7 +189,12 @@ def test_llmapi_backend_multi_instance( llm_backend_dataset_root, ): llm_backend_repo_root = os.path.join(LLM_ROOT, "triton_backend") - qwen_model_root = _qwen_model_root() + models_root = llm_models_root() + assert models_root, "Did you set LLM_MODELS_ROOT?" + qwen_model_root = os.path.join(models_root, "Qwen3", "Qwen3-0.6B") + assert os.path.exists(qwen_model_root), ( + f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" + ) # Prepare model repo new_model_repo = os.path.join(llm_backend_repo_root, "triton_repo") From 44cb005e2b8d6121610f90341a711c867902aa03 Mon Sep 17 00:00:00 2001 From: "Xin He (SW-GPU)" <200704525+xinhe-nv@users.noreply.github.com> Date: Tue, 15 Sep 2026 12:14:49 +0800 Subject: [PATCH 05/13] [None][test] Remove qwen_model_root fixture, inline the model path lookup Drops the qwen_model_root fixture from conftest.py and inlines os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") directly at each of its ~38 call sites across the disaggregated and e2e test suites, matching the same pattern already used for the triton_server tests. Also fixes test_trtllm_bench_invalid_token_pytorch in test_e2e.py, which was routing "Qwen3-0.6B" through the llama_model_root fixture indirect-parametrize (a leftover from before qwen_model_root was split out of llama_model_root, and broken since llama_model_root no longer has a Qwen3-0.6B branch) instead of using its own lookup. Signed-off-by: Xin He (SW-GPU) <200704525+xinhe-nv@users.noreply.github.com> --- tests/integration/defs/conftest.py | 11 -- .../defs/disaggregated/test_disaggregated.py | 114 ++++++++++-------- .../disaggregated/test_disaggregated_etcd.py | 6 +- .../defs/disaggregated/test_workers.py | 20 +-- .../defs/examples/test_llm_api_with_mpi.py | 5 +- tests/integration/defs/test_e2e.py | 12 +- .../integration/test_lists/test-db/l0_a10.yml | 2 +- 7 files changed, 85 insertions(+), 85 deletions(-) diff --git a/tests/integration/defs/conftest.py b/tests/integration/defs/conftest.py index 0e5b094fa7da..61ed701bd2c3 100644 --- a/tests/integration/defs/conftest.py +++ b/tests/integration/defs/conftest.py @@ -673,17 +673,6 @@ def llama_v2_tokenizer_model_root(): return llama_v2_tokenizer_model_root -@pytest.fixture(scope="function") -def qwen_model_root(): - models_root = llm_models_root() - assert models_root, "Did you set LLM_MODELS_ROOT?" - qwen_model_root = os.path.join(models_root, "Qwen3", "Qwen3-0.6B") - assert os.path.exists( - qwen_model_root - ), f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" - return qwen_model_root - - @pytest.fixture(scope="function") def llama_model_root(request): models_root = llm_models_root() diff --git a/tests/integration/defs/disaggregated/test_disaggregated.py b/tests/integration/defs/disaggregated/test_disaggregated.py index e1208ab7a46e..d955106229b3 100644 --- a/tests/integration/defs/disaggregated/test_disaggregated.py +++ b/tests/integration/defs/disaggregated/test_disaggregated.py @@ -1108,8 +1108,8 @@ def run_disaggregated_test(example_dir, def test_disaggregated_diff_max_tokens(disaggregated_test_root, - disaggregated_example_root, llm_venv, - qwen_model_root): + disaggregated_example_root, llm_venv): + qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, @@ -1121,8 +1121,8 @@ def test_disaggregated_diff_max_tokens(disaggregated_test_root, def test_disaggregated_single_gpu(disaggregated_test_root, - disaggregated_example_root, llm_venv, - qwen_model_root): + disaggregated_example_root, llm_venv): + qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") env = llm_venv._new_env.copy() @@ -1196,7 +1196,8 @@ def test_disaggregated_mamba_bs1_concurrency2(disaggregated_example_root, def test_disaggregated_tinyllama_multi_orchestrator(disaggregated_test_root, disaggregated_example_root, - llm_venv, qwen_model_root): + llm_venv): + qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") env = llm_venv._new_env.copy() @@ -1210,8 +1211,8 @@ def test_disaggregated_tinyllama_multi_orchestrator(disaggregated_test_root, def test_disaggregated_benchmark_gen_only(disaggregated_test_root, - disaggregated_example_root, llm_venv, - qwen_model_root): + disaggregated_example_root, llm_venv): + qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") env = llm_venv._new_env.copy() @@ -1227,7 +1228,8 @@ def test_disaggregated_benchmark_gen_only(disaggregated_test_root, ["load_balancing", "kv_cache_aware", "conversation"]) def test_disaggregated_router(disaggregated_test_root, disaggregated_example_root, llm_venv, - qwen_model_root, router_type): + router_type): + qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, @@ -1238,11 +1240,11 @@ def test_disaggregated_router(disaggregated_test_root, def test_disaggregated_benchmark_gen_only_insufficient_kv( - disaggregated_test_root, disaggregated_example_root, llm_venv, - qwen_model_root): + disaggregated_test_root, disaggregated_example_root, llm_venv): """Test that gen-only benchmark mode raises an error when KV cache is too small to hold all benchmark requests, instead of hanging forever.""" import openai + qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") env = llm_venv._new_env.copy() @@ -1297,8 +1299,8 @@ def send_request(): @pytest.mark.skip_less_device(4) def test_disaggregated_genbs1(disaggregated_test_root, - disaggregated_example_root, llm_venv, - qwen_model_root): + disaggregated_example_root, llm_venv): + qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") env = llm_venv._new_env.copy() @@ -1312,8 +1314,8 @@ def test_disaggregated_genbs1(disaggregated_test_root, @pytest.mark.skip_less_device(2) def test_disaggregated_multi_gpu(disaggregated_test_root, - disaggregated_example_root, llm_venv, - qwen_model_root): + disaggregated_example_root, llm_venv): + qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, @@ -1324,7 +1326,8 @@ def test_disaggregated_multi_gpu(disaggregated_test_root, def test_disaggregated_cuda_graph(disaggregated_test_root, llm_venv, - disaggregated_example_root, qwen_model_root): + disaggregated_example_root): + qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, @@ -1335,7 +1338,8 @@ def test_disaggregated_cuda_graph(disaggregated_test_root, llm_venv, def test_disaggregated_mixed(disaggregated_test_root, llm_venv, - disaggregated_example_root, qwen_model_root): + disaggregated_example_root): + qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, @@ -1346,7 +1350,8 @@ def test_disaggregated_mixed(disaggregated_test_root, llm_venv, def test_disaggregated_overlap(disaggregated_test_root, llm_venv, - disaggregated_example_root, qwen_model_root): + disaggregated_example_root): + qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") def post_client_test(server_url: str): @@ -1365,7 +1370,8 @@ def post_client_test(server_url: str): @pytest.mark.parametrize("ctx_pp", [1, 4], ids=["ctx_pp1", "ctx_pp4"]) def test_disaggregated_overlap_gen_first(disaggregated_test_root, disaggregated_example_root, llm_venv, - qwen_model_root, ctx_pp): + ctx_pp): + qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") src_dst_dict = { qwen_model_root: f"{llm_venv.get_working_directory()}/Qwen3/Qwen3-0.6B", } @@ -1388,8 +1394,8 @@ def post_client_test(server_url: str): def test_disaggregated_overlap_transceiver_runtime_python( - disaggregated_test_root, llm_venv, disaggregated_example_root, - qwen_model_root): + disaggregated_test_root, llm_venv, disaggregated_example_root): + qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") env = llm_venv._new_env.copy() @@ -1408,8 +1414,8 @@ def test_disaggregated_overlap_transceiver_runtime_python( # back to a non-fabric allocation, which would defeat the purpose of this test. @pytest.mark.skip_device_not_contain(["GB200", "GB300"]) def test_disaggregated_overlap_transceiver_runtime_python_fabric_memory( - disaggregated_test_root, llm_venv, disaggregated_example_root, - qwen_model_root): + disaggregated_test_root, llm_venv, disaggregated_example_root): + qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") env = llm_venv._new_env.copy() @@ -1436,8 +1442,8 @@ def test_disaggregated_overlap_transceiver_runtime_python_fabric_memory( # test instead of passing quietly. @pytest.mark.skip_device_not_contain(["GB200", "GB300"]) def test_disaggregated_overlap_transceiver_runtime_python_bounce( - disaggregated_test_root, llm_venv, disaggregated_example_root, - qwen_model_root): + disaggregated_test_root, llm_venv, disaggregated_example_root): + qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") env = llm_venv._new_env.copy() @@ -1580,8 +1586,7 @@ async def drive(): def test_disaggregated_python_transceiver_host_offload( - disaggregated_test_root, llm_venv, disaggregated_example_root, - qwen_model_root): + disaggregated_test_root, llm_venv, disaggregated_example_root): """E2E regression for block_id -> primary-slot translation in the Python disagg cache transceiver. See `_verify_python_transceiver_under_host_offload` for what this @@ -1590,6 +1595,7 @@ def test_disaggregated_python_transceiver_host_offload( that prefix reuse is forced through an offload+onboard cycle before each KV transfer. """ + qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") env = llm_venv._new_env.copy() env["UCX_TLS"] = get_ucx_tls() @@ -1607,8 +1613,8 @@ def post_client_test(server_url: str): def test_disaggregated_perf_metrics(disaggregated_test_root, llm_venv, - disaggregated_example_root, qwen_model_root, - tmp_path): + disaggregated_example_root, tmp_path): + qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") perf_metrics_output_dir = str(tmp_path / "perf_metrics") @@ -1636,8 +1642,8 @@ def extra_endpoints_test(_server_url: str): def test_disaggregated_chat_completion_tool_calls(disaggregated_test_root, llm_venv, - disaggregated_example_root, - qwen_model_root): + disaggregated_example_root): + qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, @@ -1650,8 +1656,8 @@ def test_disaggregated_chat_completion_tool_calls(disaggregated_test_root, def test_disaggregated_kv_cache_time_output(disaggregated_test_root, llm_venv, - disaggregated_example_root, - qwen_model_root): + disaggregated_example_root): + qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") output_path = os.path.join(llm_venv.get_working_directory(), "cache_time") @@ -1704,8 +1710,8 @@ def test_disaggregated_kv_cache_time_output(disaggregated_test_root, llm_venv, def test_disaggregated_load_balance(disaggregated_test_root, llm_venv, - disaggregated_example_root, - qwen_model_root): + disaggregated_example_root): + qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, @@ -1716,8 +1722,8 @@ def test_disaggregated_load_balance(disaggregated_test_root, llm_venv, def test_disaggregated_cache_aware_balance(disaggregated_test_root, llm_venv, - disaggregated_example_root, - qwen_model_root): + disaggregated_example_root): + qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, @@ -1728,7 +1734,8 @@ def test_disaggregated_cache_aware_balance(disaggregated_test_root, llm_venv, def test_disaggregated_conditional(disaggregated_test_root, llm_venv, - disaggregated_example_root, qwen_model_root): + disaggregated_example_root): + qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, @@ -1739,7 +1746,8 @@ def test_disaggregated_conditional(disaggregated_test_root, llm_venv, def test_disaggregated_ngram(disaggregated_test_root, llm_venv, - disaggregated_example_root, qwen_model_root): + disaggregated_example_root): + qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "ngram", @@ -1749,7 +1757,8 @@ def test_disaggregated_ngram(disaggregated_test_root, llm_venv, def test_disaggregated_sa(disaggregated_test_root, llm_venv, - disaggregated_example_root, qwen_model_root): + disaggregated_example_root): + qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "sa", @@ -1759,12 +1768,13 @@ def test_disaggregated_sa(disaggregated_test_root, llm_venv, def test_disaggregated_sa_python(disaggregated_test_root, llm_venv, - disaggregated_example_root, qwen_model_root): + disaggregated_example_root): """Spec-split SA (ctx no-spec, gen SA) on the V2 PYTHON transceiver path. NIXL + transceiver_runtime PYTHON. The existing test_disaggregated_sa covers this split only on the C++ DEFAULT backend. """ + qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "sa_python", @@ -1775,8 +1785,8 @@ def test_disaggregated_sa_python(disaggregated_test_root, llm_venv, @pytest.mark.skip_less_device(4) def test_disaggregated_ctxpp2_genpp2(disaggregated_test_root, llm_venv, - disaggregated_example_root, - qwen_model_root): + disaggregated_example_root): + qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "ctxpp2_genpp2", @@ -1787,8 +1797,8 @@ def test_disaggregated_ctxpp2_genpp2(disaggregated_test_root, llm_venv, @pytest.mark.skip_less_device(4) def test_disaggregated_ctxtp2_genpp2(disaggregated_test_root, llm_venv, - disaggregated_example_root, - qwen_model_root): + disaggregated_example_root): + qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "ctxtp2_genpp2", @@ -1799,8 +1809,8 @@ def test_disaggregated_ctxtp2_genpp2(disaggregated_test_root, llm_venv, @pytest.mark.skip_less_device(4) def test_disaggregated_ctxpp2_gentp2(disaggregated_test_root, llm_venv, - disaggregated_example_root, - qwen_model_root): + disaggregated_example_root): + qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "ctxpp2_gentp2", @@ -1811,8 +1821,8 @@ def test_disaggregated_ctxpp2_gentp2(disaggregated_test_root, llm_venv, @pytest.mark.skip_less_device(8) def test_disaggregated_ctxtp2pp2_gentp2pp2(disaggregated_test_root, llm_venv, - disaggregated_example_root, - qwen_model_root): + disaggregated_example_root): + qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "ctxtp2pp2_gentp2pp2", @@ -1823,8 +1833,8 @@ def test_disaggregated_ctxtp2pp2_gentp2pp2(disaggregated_test_root, llm_venv, @pytest.mark.skip_less_device(8) def test_disaggregated_ctxpp4_genpp4(disaggregated_test_root, llm_venv, - disaggregated_example_root, - qwen_model_root): + disaggregated_example_root): + qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "ctxpp4_genpp4", @@ -1836,8 +1846,8 @@ def test_disaggregated_ctxpp4_genpp4(disaggregated_test_root, llm_venv, #tiny llama pp4 will have uneven layer per pp. pp4 @pytest.mark.skip_less_device(8) def test_disaggregated_ctxpp4_gentp4(disaggregated_test_root, llm_venv, - disaggregated_example_root, - qwen_model_root): + disaggregated_example_root): + qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "ctxpp4_gentp4", diff --git a/tests/integration/defs/disaggregated/test_disaggregated_etcd.py b/tests/integration/defs/disaggregated/test_disaggregated_etcd.py index 4d38f3655865..962641c098f4 100644 --- a/tests/integration/defs/disaggregated/test_disaggregated_etcd.py +++ b/tests/integration/defs/disaggregated/test_disaggregated_etcd.py @@ -20,7 +20,7 @@ import time import requests -from defs.conftest import get_sm_version +from defs.conftest import get_sm_version, llm_models_root from tensorrt_llm.logger import logger @@ -434,8 +434,8 @@ def run_automated_disaggregated_test(example_dir, env=None, cwd=None): def test_automated_disaggregated_complete(disaggregated_test_root, - disaggregated_example_root, llm_venv, - qwen_model_root): + disaggregated_example_root, llm_venv): + qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") src_dst_dict = { qwen_model_root: f"{llm_venv.get_working_directory()}/Qwen3/Qwen3-0.6B", } diff --git a/tests/integration/defs/disaggregated/test_workers.py b/tests/integration/defs/disaggregated/test_workers.py index b402227e8b7d..7f4fbc5f8b05 100644 --- a/tests/integration/defs/disaggregated/test_workers.py +++ b/tests/integration/defs/disaggregated/test_workers.py @@ -26,7 +26,7 @@ import pytest import yaml from defs.common import get_free_port_in_ci as get_free_port -from defs.conftest import get_sm_version, skip_no_hopper +from defs.conftest import get_sm_version, llm_models_root, skip_no_hopper from disagg_test_utils import (HEARTBEAT_INTERVAL, INACTIVE_TIMEOUT, get_registered_worker_urls, run_ctx_worker, run_disagg_server, run_gen_worker, terminate, @@ -678,9 +678,10 @@ def background_workers(llm_venv, config_file: str): @pytest.mark.skip(reason="https://nvbugs/5372970") def test_workers_conditional_disaggregation(disaggregated_test_root, disaggregated_example_root, - llm_venv, qwen_model_root): + llm_venv): config_file = os.path.join(disaggregated_test_root, 'test_configs/disagg_config_cache_reuse.yaml') + qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") prepare_llama_model(qwen_model_root, llm_venv) with background_workers(llm_venv, @@ -723,10 +724,10 @@ def test_workers_conditional_disaggregation_deepseek_v3_lite_bf16( def test_workers_kv_cache_events(disaggregated_test_root, - disaggregated_example_root, llm_venv, - qwen_model_root): + disaggregated_example_root, llm_venv): config_file = os.path.join(disaggregated_test_root, 'test_configs/disagg_config_cache_reuse.yaml') + qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") prepare_llama_model(qwen_model_root, llm_venv) with background_workers(llm_venv, @@ -741,11 +742,11 @@ def test_workers_kv_cache_events(disaggregated_test_root, def test_workers_kv_cache_aware_router(disaggregated_test_root, - disaggregated_example_root, llm_venv, - qwen_model_root): + disaggregated_example_root, llm_venv): config_file = os.path.join( disaggregated_test_root, 'test_configs/disagg_config_cache_aware_balance.yaml') + qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") prepare_llama_model(qwen_model_root, llm_venv) with background_workers(llm_venv, @@ -792,9 +793,10 @@ def test_workers_kv_cache_aware_router_deepseek_v3_lite_bf16( def test_workers_kv_cache_aware_router_eviction(disaggregated_test_root, disaggregated_example_root, - llm_venv, qwen_model_root): + llm_venv): config_file = os.path.join(disaggregated_test_root, 'test_configs/disagg_config_cache_reuse.yaml') + qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") prepare_llama_model(qwen_model_root, llm_venv) with background_workers(llm_venv, @@ -995,11 +997,11 @@ async def test_implicit_conversation_matching(self): @skip_no_hopper @pytest.mark.skip_less_device(3) def test_workers_conversation_router(disaggregated_test_root, - disaggregated_example_root, llm_venv, - qwen_model_root): + disaggregated_example_root, llm_venv): config_file = os.path.join( disaggregated_test_root, 'test_configs/disagg_config_conversation_workers.yaml') + qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") prepare_llama_model(qwen_model_root, llm_venv) with background_workers(llm_venv, diff --git a/tests/integration/defs/examples/test_llm_api_with_mpi.py b/tests/integration/defs/examples/test_llm_api_with_mpi.py index cb2608531b51..3df2f8d6fe9b 100644 --- a/tests/integration/defs/examples/test_llm_api_with_mpi.py +++ b/tests/integration/defs/examples/test_llm_api_with_mpi.py @@ -16,10 +16,11 @@ import os from defs.common import venv_mpi_check_call +from defs.conftest import llm_models_root -def test_llm_api_single_gpu_with_mpirun(llmapi_example_root, llm_venv, - qwen_model_root): +def test_llm_api_single_gpu_with_mpirun(llmapi_example_root, llm_venv): + qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") src_dst_dict = { qwen_model_root: f"{llm_venv.get_working_directory()}/Qwen3/Qwen3-0.6B", } diff --git a/tests/integration/defs/test_e2e.py b/tests/integration/defs/test_e2e.py index 6481527dde8a..28dccc88a789 100644 --- a/tests/integration/defs/test_e2e.py +++ b/tests/integration/defs/test_e2e.py @@ -241,15 +241,13 @@ def parse_benchmark_output(self, output): return result -@pytest.mark.parametrize("model_name, llama_model_root", - [pytest.param("Qwen3-0.6B", "Qwen3-0.6B")], - indirect=["llama_model_root"]) -def test_trtllm_bench_invalid_token_pytorch(llm_root, llm_venv, model_name, - llama_model_root): +def test_trtllm_bench_invalid_token_pytorch(llm_root, llm_venv): + model_name = "Qwen3-0.6B" + qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") # Prepare dataset with invalid tokens _, dataset_path = trtllm_bench_prolog(llm_root, llm_venv, - model_subdir=llama_model_root, + model_subdir=qwen_model_root, model_name=model_name, quant=None, streaming=False) @@ -274,7 +272,7 @@ def test_trtllm_bench_invalid_token_pytorch(llm_root, llm_venv, model_name, output_path = Path(tmpdir) / "stdout.log" benchmark_cmd = \ f"trtllm-bench --model {model_name} " \ - f"--model_path {llama_model_root} " \ + f"--model_path {qwen_model_root} " \ f"throughput " \ f"--dataset {str(dataset_path)} --backend pytorch " \ f"--config {extra_options_path} " \ diff --git a/tests/integration/test_lists/test-db/l0_a10.yml b/tests/integration/test_lists/test-db/l0_a10.yml index 5bdbd64376b1..eb23047d907d 100644 --- a/tests/integration/test_lists/test-db/l0_a10.yml +++ b/tests/integration/test_lists/test-db/l0_a10.yml @@ -124,7 +124,7 @@ l0_a10: - test_e2e.py::test_openai_completions_example[pytorch] - test_e2e.py::test_openai_chat_example[pytorch] TIMEOUT (90) - test_e2e.py::test_trtllm_bench_request_rate_and_concurrency[enable_concurrency-] - - test_e2e.py::test_trtllm_bench_invalid_token_pytorch[Qwen3-0.6B-Qwen3-0.6B] + - test_e2e.py::test_trtllm_bench_invalid_token_pytorch # visual_gen - unittest/_torch/visual_gen/test_profiler.py - unittest/visual_gen/test_iteration_stats.py From 2cf8c0ee3fd380745704700cecb33284c58c8af0 Mon Sep 17 00:00:00 2001 From: "Xin He (SW-GPU)" <200704525+xinhe-nv@users.noreply.github.com> Date: Wed, 16 Sep 2026 10:43:05 +0800 Subject: [PATCH 06/13] [None][fix] Fix regressions from the TinyLlama->Qwen3-0.6B test migration Fixes issues introduced while swapping TinyLlama-1.1B-Chat-v1.0 for Qwen3-0.6B in earlier commits on this branch: - Restore the "model exists under LLM_MODELS_ROOT" assertion that was dropped when the qwen_model_root fixture was inlined at its ~39 call sites; missing checkpoints now fail with a clear message instead of a confusing failure deep inside the server subprocess. - test_llm_update_weights.py: remove an accidental duplicate "Qwen3/Qwen3-0.6B" parametrize entry (the TinyLlama slot collapsed onto the pre-existing Qwen3-0.6B one instead of being replaced), which had silently dropped an architecture-coverage case. - test_llm_args.py: the TestPyTorchBackendModelDefaults fixture setup monkeypatches get_model_defaults on LlamaForCausalLM, but the model under test is now Qwen3-0.6B (Qwen3ForCausalLM) -- the patch never fired. Patch Qwen3ForCausalLM instead, and fix the HF-hub-ID fallback ("Qwen3/Qwen3-0.6B" isn't a real HF repo; the org is "Qwen"). - Same wrong-HF-org-name bug in tests/unittest/auto_deploy/_utils_test/_model_test_utils.py and test_ad_trtllm_bench.py: the _SMALL_MODEL_CONFIGS key (looked up via hf_id_to_local_model_dir, which expects a real Hub ID) is now "Qwen/Qwen3-0.6B". - test_model_express.py: renaming "llama-bf16-tp*" ids to "qwen3-bf16-tp*" would have collided with the pre-existing Qwen3-8B case using that same id; use "qwen3-0.6b-bf16-tp*" instead. Also renames the remaining TinyLlama-era identifiers/comments that no longer match the model under test: prepare_llama_model -> prepare_qwen_model, test_disaggregated_tinyllama_multi_orchestrator -> test_disaggregated_qwen3_multi_orchestrator, test_tinyllama_batch_handoff_semantic_slots -> test_qwen3_batch_handoff_semantic_slots, and stale TinyLlama-referencing docstrings/comments in test_serve_negative.py, test_smg.py, test_e2e_capture.py, and test_disaggregated.py (including dropping a "tiny llama pp4 will have uneven layer per pp" comment that no longer holds for Qwen3-0.6B's 28 layers). Signed-off-by: Xin He (SW-GPU) <200704525+xinhe-nv@users.noreply.github.com> --- .../defs/disaggregated/test_ad_disagg.py | 2 +- .../defs/disaggregated/test_disaggregated.py | 102 +++++++++++++++++- .../disaggregated/test_disaggregated_etcd.py | 3 + .../defs/disaggregated/test_workers.py | 27 +++-- .../examples/serve/test_serve_negative.py | 2 +- .../defs/examples/test_llm_api_with_mpi.py | 3 + .../defs/model_express/test_model_express.py | 4 +- tests/integration/defs/test_e2e.py | 3 + .../test_lists/qa/llm_function_core.txt | 2 +- .../test_lists/test-db/l0_h100.yml | 2 +- .../test_lists/test-db/l0_model_express.yml | 4 +- .../single_gpu/test_llm_update_weights.py | 2 - .../_utils_test/_model_test_utils.py | 2 +- .../singlegpu/smoke/test_ad_trtllm_bench.py | 2 +- tests/unittest/grpc/smg/test_smg.py | 4 +- tests/unittest/llmapi/test_llm_args.py | 21 ++-- tests/unittest/usage/test_e2e_capture.py | 4 +- 17 files changed, 152 insertions(+), 37 deletions(-) diff --git a/tests/integration/defs/disaggregated/test_ad_disagg.py b/tests/integration/defs/disaggregated/test_ad_disagg.py index fc5ef06404b1..20387b030f81 100644 --- a/tests/integration/defs/disaggregated/test_ad_disagg.py +++ b/tests/integration/defs/disaggregated/test_ad_disagg.py @@ -579,7 +579,7 @@ def test_disaggregated_logits(model): @pytest.mark.skip_less_device_memory(30000) @pytest.mark.timeout(600) -def test_tinyllama_batch_handoff_semantic_slots(): +def test_qwen3_batch_handoff_semantic_slots(): prompts = capital_completion_prompts() expected_capitals = ["Berlin", "Paris", "Rome", "Madrid"] sampling_params_kwargs = { diff --git a/tests/integration/defs/disaggregated/test_disaggregated.py b/tests/integration/defs/disaggregated/test_disaggregated.py index d955106229b3..030351596628 100644 --- a/tests/integration/defs/disaggregated/test_disaggregated.py +++ b/tests/integration/defs/disaggregated/test_disaggregated.py @@ -1110,6 +1110,9 @@ def run_disaggregated_test(example_dir, def test_disaggregated_diff_max_tokens(disaggregated_test_root, disaggregated_example_root, llm_venv): qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") + assert os.path.exists( + qwen_model_root + ), f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, @@ -1123,6 +1126,9 @@ def test_disaggregated_diff_max_tokens(disaggregated_test_root, def test_disaggregated_single_gpu(disaggregated_test_root, disaggregated_example_root, llm_venv): qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") + assert os.path.exists( + qwen_model_root + ), f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") env = llm_venv._new_env.copy() @@ -1194,10 +1200,13 @@ def test_disaggregated_mamba_bs1_concurrency2(disaggregated_example_root, ) -def test_disaggregated_tinyllama_multi_orchestrator(disaggregated_test_root, - disaggregated_example_root, - llm_venv): +def test_disaggregated_qwen3_multi_orchestrator(disaggregated_test_root, + disaggregated_example_root, + llm_venv): qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") + assert os.path.exists( + qwen_model_root + ), f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") env = llm_venv._new_env.copy() @@ -1213,6 +1222,9 @@ def test_disaggregated_tinyllama_multi_orchestrator(disaggregated_test_root, def test_disaggregated_benchmark_gen_only(disaggregated_test_root, disaggregated_example_root, llm_venv): qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") + assert os.path.exists( + qwen_model_root + ), f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") env = llm_venv._new_env.copy() @@ -1230,6 +1242,9 @@ def test_disaggregated_router(disaggregated_test_root, disaggregated_example_root, llm_venv, router_type): qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") + assert os.path.exists( + qwen_model_root + ), f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, @@ -1245,6 +1260,9 @@ def test_disaggregated_benchmark_gen_only_insufficient_kv( import openai qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") + assert os.path.exists( + qwen_model_root + ), f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") env = llm_venv._new_env.copy() @@ -1301,6 +1319,9 @@ def send_request(): def test_disaggregated_genbs1(disaggregated_test_root, disaggregated_example_root, llm_venv): qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") + assert os.path.exists( + qwen_model_root + ), f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") env = llm_venv._new_env.copy() @@ -1316,6 +1337,9 @@ def test_disaggregated_genbs1(disaggregated_test_root, def test_disaggregated_multi_gpu(disaggregated_test_root, disaggregated_example_root, llm_venv): qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") + assert os.path.exists( + qwen_model_root + ), f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, @@ -1328,6 +1352,9 @@ def test_disaggregated_multi_gpu(disaggregated_test_root, def test_disaggregated_cuda_graph(disaggregated_test_root, llm_venv, disaggregated_example_root): qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") + assert os.path.exists( + qwen_model_root + ), f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, @@ -1340,6 +1367,9 @@ def test_disaggregated_cuda_graph(disaggregated_test_root, llm_venv, def test_disaggregated_mixed(disaggregated_test_root, llm_venv, disaggregated_example_root): qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") + assert os.path.exists( + qwen_model_root + ), f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, @@ -1352,6 +1382,9 @@ def test_disaggregated_mixed(disaggregated_test_root, llm_venv, def test_disaggregated_overlap(disaggregated_test_root, llm_venv, disaggregated_example_root): qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") + assert os.path.exists( + qwen_model_root + ), f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") def post_client_test(server_url: str): @@ -1372,6 +1405,9 @@ def test_disaggregated_overlap_gen_first(disaggregated_test_root, disaggregated_example_root, llm_venv, ctx_pp): qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") + assert os.path.exists( + qwen_model_root + ), f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" src_dst_dict = { qwen_model_root: f"{llm_venv.get_working_directory()}/Qwen3/Qwen3-0.6B", } @@ -1396,6 +1432,9 @@ def post_client_test(server_url: str): def test_disaggregated_overlap_transceiver_runtime_python( disaggregated_test_root, llm_venv, disaggregated_example_root): qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") + assert os.path.exists( + qwen_model_root + ), f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") env = llm_venv._new_env.copy() @@ -1416,6 +1455,9 @@ def test_disaggregated_overlap_transceiver_runtime_python( def test_disaggregated_overlap_transceiver_runtime_python_fabric_memory( disaggregated_test_root, llm_venv, disaggregated_example_root): qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") + assert os.path.exists( + qwen_model_root + ), f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") env = llm_venv._new_env.copy() @@ -1444,6 +1486,9 @@ def test_disaggregated_overlap_transceiver_runtime_python_fabric_memory( def test_disaggregated_overlap_transceiver_runtime_python_bounce( disaggregated_test_root, llm_venv, disaggregated_example_root): qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") + assert os.path.exists( + qwen_model_root + ), f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") env = llm_venv._new_env.copy() @@ -1478,7 +1523,7 @@ def _verify_python_transceiver_under_host_offload(server_url: str, model: str): succeeds; without it, the sender either crashes on a primary assertion or returns nonsense tokens. - Assertions are deliberately content-agnostic (TinyLlama outputs vary + Assertions are deliberately content-agnostic (Qwen3-0.6B outputs vary run-to-run): we check that responses are non-empty, the server stays up across the eviction/onboard cycle, and `cached_tokens > 0` on repeats so we know reuse actually fired. @@ -1596,6 +1641,9 @@ def test_disaggregated_python_transceiver_host_offload( each KV transfer. """ qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") + assert os.path.exists( + qwen_model_root + ), f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") env = llm_venv._new_env.copy() env["UCX_TLS"] = get_ucx_tls() @@ -1615,6 +1663,9 @@ def post_client_test(server_url: str): def test_disaggregated_perf_metrics(disaggregated_test_root, llm_venv, disaggregated_example_root, tmp_path): qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") + assert os.path.exists( + qwen_model_root + ), f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") perf_metrics_output_dir = str(tmp_path / "perf_metrics") @@ -1644,6 +1695,9 @@ def test_disaggregated_chat_completion_tool_calls(disaggregated_test_root, llm_venv, disaggregated_example_root): qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") + assert os.path.exists( + qwen_model_root + ), f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, @@ -1658,6 +1712,9 @@ def test_disaggregated_chat_completion_tool_calls(disaggregated_test_root, def test_disaggregated_kv_cache_time_output(disaggregated_test_root, llm_venv, disaggregated_example_root): qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") + assert os.path.exists( + qwen_model_root + ), f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") output_path = os.path.join(llm_venv.get_working_directory(), "cache_time") @@ -1712,6 +1769,9 @@ def test_disaggregated_kv_cache_time_output(disaggregated_test_root, llm_venv, def test_disaggregated_load_balance(disaggregated_test_root, llm_venv, disaggregated_example_root): qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") + assert os.path.exists( + qwen_model_root + ), f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, @@ -1724,6 +1784,9 @@ def test_disaggregated_load_balance(disaggregated_test_root, llm_venv, def test_disaggregated_cache_aware_balance(disaggregated_test_root, llm_venv, disaggregated_example_root): qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") + assert os.path.exists( + qwen_model_root + ), f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, @@ -1736,6 +1799,9 @@ def test_disaggregated_cache_aware_balance(disaggregated_test_root, llm_venv, def test_disaggregated_conditional(disaggregated_test_root, llm_venv, disaggregated_example_root): qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") + assert os.path.exists( + qwen_model_root + ), f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, @@ -1748,6 +1814,9 @@ def test_disaggregated_conditional(disaggregated_test_root, llm_venv, def test_disaggregated_ngram(disaggregated_test_root, llm_venv, disaggregated_example_root): qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") + assert os.path.exists( + qwen_model_root + ), f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "ngram", @@ -1759,6 +1828,9 @@ def test_disaggregated_ngram(disaggregated_test_root, llm_venv, def test_disaggregated_sa(disaggregated_test_root, llm_venv, disaggregated_example_root): qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") + assert os.path.exists( + qwen_model_root + ), f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "sa", @@ -1775,6 +1847,9 @@ def test_disaggregated_sa_python(disaggregated_test_root, llm_venv, covers this split only on the C++ DEFAULT backend. """ qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") + assert os.path.exists( + qwen_model_root + ), f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "sa_python", @@ -1787,6 +1862,9 @@ def test_disaggregated_sa_python(disaggregated_test_root, llm_venv, def test_disaggregated_ctxpp2_genpp2(disaggregated_test_root, llm_venv, disaggregated_example_root): qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") + assert os.path.exists( + qwen_model_root + ), f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "ctxpp2_genpp2", @@ -1799,6 +1877,9 @@ def test_disaggregated_ctxpp2_genpp2(disaggregated_test_root, llm_venv, def test_disaggregated_ctxtp2_genpp2(disaggregated_test_root, llm_venv, disaggregated_example_root): qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") + assert os.path.exists( + qwen_model_root + ), f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "ctxtp2_genpp2", @@ -1811,6 +1892,9 @@ def test_disaggregated_ctxtp2_genpp2(disaggregated_test_root, llm_venv, def test_disaggregated_ctxpp2_gentp2(disaggregated_test_root, llm_venv, disaggregated_example_root): qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") + assert os.path.exists( + qwen_model_root + ), f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "ctxpp2_gentp2", @@ -1823,6 +1907,9 @@ def test_disaggregated_ctxpp2_gentp2(disaggregated_test_root, llm_venv, def test_disaggregated_ctxtp2pp2_gentp2pp2(disaggregated_test_root, llm_venv, disaggregated_example_root): qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") + assert os.path.exists( + qwen_model_root + ), f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "ctxtp2pp2_gentp2pp2", @@ -1835,6 +1922,9 @@ def test_disaggregated_ctxtp2pp2_gentp2pp2(disaggregated_test_root, llm_venv, def test_disaggregated_ctxpp4_genpp4(disaggregated_test_root, llm_venv, disaggregated_example_root): qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") + assert os.path.exists( + qwen_model_root + ), f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "ctxpp4_genpp4", @@ -1843,11 +1933,13 @@ def test_disaggregated_ctxpp4_genpp4(disaggregated_test_root, llm_venv, cwd=llm_venv.get_working_directory()) -#tiny llama pp4 will have uneven layer per pp. pp4 @pytest.mark.skip_less_device(8) def test_disaggregated_ctxpp4_gentp4(disaggregated_test_root, llm_venv, disaggregated_example_root): qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") + assert os.path.exists( + qwen_model_root + ), f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" setup_model_symlink(llm_venv, qwen_model_root, "Qwen3/Qwen3-0.6B") run_disaggregated_test(disaggregated_example_root, "ctxpp4_gentp4", diff --git a/tests/integration/defs/disaggregated/test_disaggregated_etcd.py b/tests/integration/defs/disaggregated/test_disaggregated_etcd.py index 962641c098f4..5334e0e6b7c4 100644 --- a/tests/integration/defs/disaggregated/test_disaggregated_etcd.py +++ b/tests/integration/defs/disaggregated/test_disaggregated_etcd.py @@ -436,6 +436,9 @@ def run_automated_disaggregated_test(example_dir, env=None, cwd=None): def test_automated_disaggregated_complete(disaggregated_test_root, disaggregated_example_root, llm_venv): qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") + assert os.path.exists( + qwen_model_root + ), f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" src_dst_dict = { qwen_model_root: f"{llm_venv.get_working_directory()}/Qwen3/Qwen3-0.6B", } diff --git a/tests/integration/defs/disaggregated/test_workers.py b/tests/integration/defs/disaggregated/test_workers.py index 7f4fbc5f8b05..8a71bf8d16b8 100644 --- a/tests/integration/defs/disaggregated/test_workers.py +++ b/tests/integration/defs/disaggregated/test_workers.py @@ -552,7 +552,7 @@ async def test_eviction(self): assert info["matches"][0] < first_match -def prepare_llama_model(qwen_model_root: str, llm_venv): +def prepare_qwen_model(qwen_model_root: str, llm_venv): src_dst_dict = { qwen_model_root: f"{llm_venv.get_working_directory()}/Qwen3/Qwen3-0.6B", } @@ -682,7 +682,10 @@ def test_workers_conditional_disaggregation(disaggregated_test_root, config_file = os.path.join(disaggregated_test_root, 'test_configs/disagg_config_cache_reuse.yaml') qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") - prepare_llama_model(qwen_model_root, llm_venv) + assert os.path.exists( + qwen_model_root + ), f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" + prepare_qwen_model(qwen_model_root, llm_venv) with background_workers(llm_venv, config_file) as (ctx_servers, gen_servers, _, @@ -728,7 +731,10 @@ def test_workers_kv_cache_events(disaggregated_test_root, config_file = os.path.join(disaggregated_test_root, 'test_configs/disagg_config_cache_reuse.yaml') qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") - prepare_llama_model(qwen_model_root, llm_venv) + assert os.path.exists( + qwen_model_root + ), f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" + prepare_qwen_model(qwen_model_root, llm_venv) with background_workers(llm_venv, config_file) as (ctx_servers, gen_servers, _, @@ -747,7 +753,10 @@ def test_workers_kv_cache_aware_router(disaggregated_test_root, disaggregated_test_root, 'test_configs/disagg_config_cache_aware_balance.yaml') qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") - prepare_llama_model(qwen_model_root, llm_venv) + assert os.path.exists( + qwen_model_root + ), f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" + prepare_qwen_model(qwen_model_root, llm_venv) with background_workers(llm_venv, config_file) as (ctx_servers, gen_servers, _, @@ -797,7 +806,10 @@ def test_workers_kv_cache_aware_router_eviction(disaggregated_test_root, config_file = os.path.join(disaggregated_test_root, 'test_configs/disagg_config_cache_reuse.yaml') qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") - prepare_llama_model(qwen_model_root, llm_venv) + assert os.path.exists( + qwen_model_root + ), f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" + prepare_qwen_model(qwen_model_root, llm_venv) with background_workers(llm_venv, config_file) as (ctx_servers, gen_servers, _, @@ -1002,7 +1014,10 @@ def test_workers_conversation_router(disaggregated_test_root, disaggregated_test_root, 'test_configs/disagg_config_conversation_workers.yaml') qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") - prepare_llama_model(qwen_model_root, llm_venv) + assert os.path.exists( + qwen_model_root + ), f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" + prepare_qwen_model(qwen_model_root, llm_venv) with background_workers(llm_venv, config_file) as (ctx_servers, gen_servers, diff --git a/tests/integration/defs/examples/serve/test_serve_negative.py b/tests/integration/defs/examples/serve/test_serve_negative.py index d424cb811acd..e07310ce4fb0 100644 --- a/tests/integration/defs/examples/serve/test_serve_negative.py +++ b/tests/integration/defs/examples/serve/test_serve_negative.py @@ -43,7 +43,7 @@ def get_async_client(self, **kwargs): @pytest.fixture(scope="module") def model_name(): - """Use TinyLlama for faster testing""" + """Use Qwen3-0.6B for faster testing""" return "Qwen3/Qwen3-0.6B" diff --git a/tests/integration/defs/examples/test_llm_api_with_mpi.py b/tests/integration/defs/examples/test_llm_api_with_mpi.py index 3df2f8d6fe9b..9fea948b5fe4 100644 --- a/tests/integration/defs/examples/test_llm_api_with_mpi.py +++ b/tests/integration/defs/examples/test_llm_api_with_mpi.py @@ -21,6 +21,9 @@ def test_llm_api_single_gpu_with_mpirun(llmapi_example_root, llm_venv): qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") + assert os.path.exists( + qwen_model_root + ), f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" src_dst_dict = { qwen_model_root: f"{llm_venv.get_working_directory()}/Qwen3/Qwen3-0.6B", } diff --git a/tests/integration/defs/model_express/test_model_express.py b/tests/integration/defs/model_express/test_model_express.py index 8ba63b5349e6..e85e9a6b0672 100644 --- a/tests/integration/defs/model_express/test_model_express.py +++ b/tests/integration/defs/model_express/test_model_express.py @@ -100,7 +100,7 @@ class MxE2ECase: repository_cache_prefix="models--trtllm-mx-e2e--llama-tp1", tp_size=1, ), - id="llama-bf16-tp1", + id="qwen3-0.6b-bf16-tp1", marks=pytest.mark.skip_less_device(2), ), pytest.param( @@ -110,7 +110,7 @@ class MxE2ECase: repository_cache_prefix="models--trtllm-mx-e2e--llama-tp2", tp_size=2, ), - id="llama-bf16-tp2", + id="qwen3-0.6b-bf16-tp2", marks=pytest.mark.skip_less_device(4), ), pytest.param( diff --git a/tests/integration/defs/test_e2e.py b/tests/integration/defs/test_e2e.py index 28dccc88a789..4f1ff5c2802f 100644 --- a/tests/integration/defs/test_e2e.py +++ b/tests/integration/defs/test_e2e.py @@ -244,6 +244,9 @@ def parse_benchmark_output(self, output): def test_trtllm_bench_invalid_token_pytorch(llm_root, llm_venv): model_name = "Qwen3-0.6B" qwen_model_root = os.path.join(llm_models_root(), "Qwen3", "Qwen3-0.6B") + assert os.path.exists( + qwen_model_root + ), f"{qwen_model_root} does not exist under NFS LLM_MODELS_ROOT dir" # Prepare dataset with invalid tokens _, dataset_path = trtllm_bench_prolog(llm_root, llm_venv, diff --git a/tests/integration/test_lists/qa/llm_function_core.txt b/tests/integration/test_lists/qa/llm_function_core.txt index f852c8901b48..c012b6af4d4e 100644 --- a/tests/integration/test_lists/qa/llm_function_core.txt +++ b/tests/integration/test_lists/qa/llm_function_core.txt @@ -753,7 +753,7 @@ disaggregated/test_disaggregated.py::test_disaggregated_qwen3_32b_fp8[Qwen3/Qwen disaggregated/test_disaggregated.py::test_disaggregated_sa disaggregated/test_disaggregated.py::test_disaggregated_sa_python disaggregated/test_disaggregated.py::test_disaggregated_single_gpu -disaggregated/test_disaggregated.py::test_disaggregated_tinyllama_multi_orchestrator +disaggregated/test_disaggregated.py::test_disaggregated_qwen3_multi_orchestrator disaggregated/test_disaggregated_single_gpu.py::test_arbitrary_kv_cache_transfer[False-Qwen3-0.6B] disaggregated/test_disaggregated_single_gpu.py::test_arbitrary_kv_cache_transfer_missing_blocks[False-Qwen3-0.6B] disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_cancel_gen_requests[Qwen3-0.6B] diff --git a/tests/integration/test_lists/test-db/l0_h100.yml b/tests/integration/test_lists/test-db/l0_h100.yml index 8b130004c77e..c60ea8d9e201 100644 --- a/tests/integration/test_lists/test-db/l0_h100.yml +++ b/tests/integration/test_lists/test-db/l0_h100.yml @@ -167,7 +167,7 @@ l0_h100: - disaggregated/test_disaggregated.py::test_disaggregated_deepseek_v3_lite_fp8_tp1_single_gpu_mtp[DeepSeek-V3-Lite-fp8] - disaggregated/test_disaggregated.py::test_disaggregated_deepseek_v3_lite_fp8_tp1_two_mtp[DeepSeek-V3-Lite-fp8] - disaggregated/test_disaggregated.py::test_disaggregated_load_balance - - disaggregated/test_disaggregated.py::test_disaggregated_tinyllama_multi_orchestrator + - disaggregated/test_disaggregated.py::test_disaggregated_qwen3_multi_orchestrator - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_deepseek[False-False-DeepSeek-V3-Lite-fp8/fp8] - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_deepseek[False-True-DeepSeek-V3-Lite-fp8/fp8] - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_deepseek[True-False-DeepSeek-V3-Lite-fp8/fp8] diff --git a/tests/integration/test_lists/test-db/l0_model_express.yml b/tests/integration/test_lists/test-db/l0_model_express.yml index 5921d1d3f674..50039c809d0b 100644 --- a/tests/integration/test_lists/test-db/l0_model_express.yml +++ b/tests/integration/test_lists/test-db/l0_model_express.yml @@ -18,7 +18,7 @@ l0_model_express: backend: pytorch orchestrator: mpi tests: - - model_express/test_model_express.py::test_mx_donor_receiver[llama-bf16-tp1] + - model_express/test_model_express.py::test_mx_donor_receiver[qwen3-0.6b-bf16-tp1] - model_express/test_model_express.py::test_mx_donor_receiver[qwen2-bf16-tp1] - model_express/test_model_express.py::test_mx_donor_receiver[qwen3-bf16-tp1] - model_express/test_model_express.py::test_mx_donor_receiver[mistral-bf16-tp1] @@ -38,7 +38,7 @@ l0_model_express: backend: pytorch orchestrator: mpi tests: - - model_express/test_model_express.py::test_mx_donor_receiver[llama-bf16-tp2] + - model_express/test_model_express.py::test_mx_donor_receiver[qwen3-0.6b-bf16-tp2] - model_express/test_model_express.py::test_mx_donor_receiver[qwen2-bf16-tp2] - model_express/test_model_express.py::test_mx_donor_receiver[qwen3-bf16-tp2] - model_express/test_model_express.py::test_mx_donor_receiver[mistral-bf16-tp2] diff --git a/tests/unittest/_torch/ray_orchestrator/single_gpu/test_llm_update_weights.py b/tests/unittest/_torch/ray_orchestrator/single_gpu/test_llm_update_weights.py index afea9e257367..16f37cd1db1f 100644 --- a/tests/unittest/_torch/ray_orchestrator/single_gpu/test_llm_update_weights.py +++ b/tests/unittest/_torch/ray_orchestrator/single_gpu/test_llm_update_weights.py @@ -174,7 +174,6 @@ def run_generate( @pytest.mark.parametrize( "model_dir", [ - "Qwen3/Qwen3-0.6B", "Qwen3/Qwen3-0.6B", "Qwen3/Qwen3-8B", "Qwen3/Qwen3-30B-A3B", @@ -229,7 +228,6 @@ def test_llm_update_weights(model_dir): @pytest.mark.parametrize( "model_dir", [ - "Qwen3/Qwen3-0.6B", "Qwen3/Qwen3-0.6B", "Qwen3/Qwen3-8B", "Qwen3/Qwen3-30B-A3B", diff --git a/tests/unittest/auto_deploy/_utils_test/_model_test_utils.py b/tests/unittest/auto_deploy/_utils_test/_model_test_utils.py index 8ebba136a516..44154325ca26 100644 --- a/tests/unittest/auto_deploy/_utils_test/_model_test_utils.py +++ b/tests/unittest/auto_deploy/_utils_test/_model_test_utils.py @@ -519,7 +519,7 @@ def apply_rotary_pos_emb_ds(q, k, cos, sin, position_ids, unsqueeze_dim=1): "ssm_state_size": 32, }, }, - "Qwen3/Qwen3-0.6B": { + "Qwen/Qwen3-0.6B": { "model_kwargs": { "num_hidden_layers": 2, }, diff --git a/tests/unittest/auto_deploy/singlegpu/smoke/test_ad_trtllm_bench.py b/tests/unittest/auto_deploy/singlegpu/smoke/test_ad_trtllm_bench.py index e6e1abd4ffc4..1435660a5625 100644 --- a/tests/unittest/auto_deploy/singlegpu/smoke/test_ad_trtllm_bench.py +++ b/tests/unittest/auto_deploy/singlegpu/smoke/test_ad_trtllm_bench.py @@ -95,7 +95,7 @@ def prepare_dataset(root_dir: str, temp_dir: str, model_path_or_name: str): @pytest.mark.parametrize("compile_backend", ["torch-compile", "torch-opt", "torch-cudagraph"]) -@pytest.mark.parametrize("model_name", ["Qwen3/Qwen3-0.6B"]) +@pytest.mark.parametrize("model_name", ["Qwen/Qwen3-0.6B"]) def test_trtllm_bench(llm_root, compile_backend, model_name): # noqa: F811 args = get_small_model_config(model_name)["args"] # remove kv_cache_config and max_batch_size to avoid conflicts with trtllm-bench diff --git a/tests/unittest/grpc/smg/test_smg.py b/tests/unittest/grpc/smg/test_smg.py index b3b36947e7af..e443f2a2f7d1 100644 --- a/tests/unittest/grpc/smg/test_smg.py +++ b/tests/unittest/grpc/smg/test_smg.py @@ -654,7 +654,7 @@ def get_model_path(model_name): def grpc_service(): """Create a real LLM, request manager, and servicer for e2e testing. - Uses TinyLlama-1.1B for minimal GPU resource usage. + Uses Qwen3-0.6B for minimal GPU resource usage. Shared across all tests in the class; class scope (not module) so the LLM is shut down and its GPU memory released before the multimodal class below creates its own LLM — with module scope both models are @@ -705,7 +705,7 @@ class TestGrpcServiceEndToEnd: """End-to-end tests for the gRPC service flow. Tests the full pipeline: gRPC request -> servicer -> request manager -> LLM -> response. - Uses TinyLlama-1.1B for minimal GPU resource usage. + Uses Qwen3-0.6B for minimal GPU resource usage. """ def test_generate_non_streaming(self, grpc_service): diff --git a/tests/unittest/llmapi/test_llm_args.py b/tests/unittest/llmapi/test_llm_args.py index 82ea8f565150..cbcc2af278b8 100644 --- a/tests/unittest/llmapi/test_llm_args.py +++ b/tests/unittest/llmapi/test_llm_args.py @@ -29,6 +29,7 @@ HfCheckpointLoader from tensorrt_llm._torch.models.modeling_gemma3 import Gemma3ForCausalLM from tensorrt_llm._torch.models.modeling_llama import LlamaForCausalLM +from tensorrt_llm._torch.models.modeling_qwen3 import Qwen3ForCausalLM from tensorrt_llm._torch.peft.lora.config import LoraConfig from tensorrt_llm._torch.virtual_memory import RestoreMode from tensorrt_llm.commands.serve import get_llm_args, is_non_default_or_required @@ -3049,7 +3050,7 @@ def test_serve_is_non_default_or_required_helper(self): class TestPyTorchBackendModelDefaults: - def get_tinyllama_path(self): + def get_qwen_path(self): # Use local model path if available, otherwise use HuggingFace ID model_root = llm_models_root() if model_root: @@ -3058,7 +3059,7 @@ def get_tinyllama_path(self): return str(local_path) # Fallback to HuggingFace model ID - return "Qwen3/Qwen3-0.6B" + return "Qwen/Qwen3-0.6B" @pytest.fixture(autouse=True) def setup(self, monkeypatch, tmp_path): @@ -3077,17 +3078,17 @@ def mock_get_model_defaults(cls, llm_args): } } - self.original_get_model_defaults = getattr(LlamaForCausalLM, + self.original_get_model_defaults = getattr(Qwen3ForCausalLM, 'get_model_defaults', None) - setattr(LlamaForCausalLM, 'get_model_defaults', + setattr(Qwen3ForCausalLM, 'get_model_defaults', classmethod(mock_get_model_defaults)) yield if self.original_get_model_defaults is None: - delattr(LlamaForCausalLM, 'get_model_defaults') + delattr(Qwen3ForCausalLM, 'get_model_defaults') else: - setattr(LlamaForCausalLM, 'get_model_defaults', + setattr(Qwen3ForCausalLM, 'get_model_defaults', self.original_get_model_defaults) @pytest.mark.part0 @@ -3095,7 +3096,7 @@ def test_model_defaults_application(self): self.get_model_defaults_called = False with TorchLLM( - model=self.get_tinyllama_path(), + model=self.get_qwen_path(), backend='pytorch', skip_tokenizer_init=True, env_overrides={"TLLM_WORKER_USE_SINGLE_PROCESS": "1"}, @@ -3112,7 +3113,7 @@ def test_user_overrides_respected(self): self.get_model_defaults_called = False with TorchLLM( - model=self.get_tinyllama_path(), + model=self.get_qwen_path(), backend='pytorch', enable_chunked_prefill=False, max_batch_size=42, @@ -3134,7 +3135,7 @@ def test_partial_user_override(self): self.get_model_defaults_called = False with TorchLLM( - model=self.get_tinyllama_path(), + model=self.get_qwen_path(), backend='pytorch', max_batch_size=42, skip_tokenizer_init=True, @@ -3159,7 +3160,7 @@ def test_empty_nested_config_preserves_defaults(self): self.get_model_defaults_called = False with TorchLLM( - model=self.get_tinyllama_path(), + model=self.get_qwen_path(), backend='pytorch', kv_cache_config=KvCacheConfig(), skip_tokenizer_init=True, diff --git a/tests/unittest/usage/test_e2e_capture.py b/tests/unittest/usage/test_e2e_capture.py index bb109d6b478f..ab48bc7268e4 100644 --- a/tests/unittest/usage/test_e2e_capture.py +++ b/tests/unittest/usage/test_e2e_capture.py @@ -21,7 +21,7 @@ hitting any external endpoint. Requirements: - - GPU (loads TinyLlama via PyTorch backend) + - GPU (loads Qwen3-0.6B via PyTorch backend) - LLM_MODELS_ROOT set (or /home/scratch.trt_llm_data_ci accessible) - Must be run with TRTLLM_USAGE_FORCE_ENABLED=1 to bypass pytest auto-detection (conftest or env) @@ -52,7 +52,7 @@ def _get_model_path(): - """Resolve TinyLlama model path from LLM_MODELS_ROOT.""" + """Resolve Qwen3-0.6B model path from LLM_MODELS_ROOT.""" root = os.environ.get("LLM_MODELS_ROOT") if root is None: # Fallback to standard scratch path From 98e3040bd7d1d4d5679ad0fb89757d18f3d0b359 Mon Sep 17 00:00:00 2001 From: "Xin He (SW-GPU)" <200704525+xinhe-nv@users.noreply.github.com> Date: Wed, 16 Sep 2026 12:16:33 +0800 Subject: [PATCH 07/13] [None][fix] Restore test_llmapi_lora and its TinyLlama LoRA fixtures An earlier commit on this branch deleted test_llmapi_lora along with tiny_llama_lora_base_model_root and tiny_llama_lora_model_root while acting on an instruction to remove those fixtures. That contradicted the branch's own stated reasoning for keeping this test on TinyLlama in the first place: its LoRA adapter is fine-tuned specifically for TinyLlama-1.1B-Chat-v1.0 and has no Qwen3-0.6B equivalent, and both the adapter and its base model are already retained on disk anyway for the llm_multilora.py example test. Deleting it left --lora-id / --lora-name / --lora-path through to LLM.generate_async(lora_request= ...) on the llmapi triton backend with no E2E coverage. Restores the test and both fixtures verbatim, and adds back the llm_triton_integration.txt QA-list entry and the module docstring coverage bullet that were dropped along with it. The test_llmapi_backend / test_llmapi_backend_multi_instance swap to Qwen3-0.6B (unaffected by this) is unchanged. Signed-off-by: Xin He (SW-GPU) <200704525+xinhe-nv@users.noreply.github.com> --- .../defs/triton_server/conftest.py | 41 ++++++++++ .../defs/triton_server/test_triton_llmapi.py | 75 +++++++++++++++++++ .../test_lists/qa/llm_triton_integration.txt | 1 + 3 files changed, 117 insertions(+) diff --git a/tests/integration/defs/triton_server/conftest.py b/tests/integration/defs/triton_server/conftest.py index 5a19813019b6..b8be62f771d3 100644 --- a/tests/integration/defs/triton_server/conftest.py +++ b/tests/integration/defs/triton_server/conftest.py @@ -331,6 +331,47 @@ def gpt_2b_lora_model_root(): return gpt_2b_lora_model_root +@pytest.fixture(scope="session") +def tiny_llama_lora_base_model_root(): + """Base model for the TinyLlama-1.1B-Chat-v1.0 LoRA adapter. + + Kept separate from the Qwen3-0.6B model path used elsewhere in this + module because the LoRA adapter returned by + `tiny_llama_lora_model_root` is fine-tuned specifically for + TinyLlama-1.1B-Chat-v1.0 and has no Qwen3-0.6B equivalent. + """ + models_root = llm_models_root() + assert models_root, "Did you set LLM_MODELS_ROOT?" + tiny_llama_lora_base_model_root = os.path.join(models_root, + "llama-models-v2", + "TinyLlama-1.1B-Chat-v1.0") + + assert os.path.exists( + tiny_llama_lora_base_model_root + ), f"{tiny_llama_lora_base_model_root} does not exist under NFS LLM_MODELS_ROOT dir" + return tiny_llama_lora_base_model_root + + +@pytest.fixture(scope="session") +def tiny_llama_lora_model_root(): + """HF-format LoRA adapter for TinyLlama-1.1B-Chat-v1.0. + + Used by the llmapi triton backend's E2E LoRA test + (`test_llmapi_lora`). Same base model as + `tiny_llama_lora_base_model_root`. + """ + models_root = llm_models_root() + assert models_root, "Did you set LLM_MODELS_ROOT?" + tiny_llama_lora_model_root = os.path.join( + models_root, "llama-models-v2", + "TinyLlama-1.1B-Chat-v1.0-mental-health-conversational") + + assert os.path.exists( + tiny_llama_lora_model_root + ), f"{tiny_llama_lora_model_root} does not exist under NFS LLM_MODELS_ROOT dir" + return tiny_llama_lora_model_root + + @pytest.fixture(scope="session") def blip2_opt_model_root(): models_root = llm_models_root() diff --git a/tests/integration/defs/triton_server/test_triton_llmapi.py b/tests/integration/defs/triton_server/test_triton_llmapi.py index d1fc34d1cdbc..998180c162cc 100644 --- a/tests/integration/defs/triton_server/test_triton_llmapi.py +++ b/tests/integration/defs/triton_server/test_triton_llmapi.py @@ -18,6 +18,7 @@ Coverage: - ``test_llmapi_backend``: end-to-end serving across decoupled / non-decoupled modes and tensor-parallel sizes. +- ``test_llmapi_lora``: serving with LoRA adapters. - ``test_llmapi_backend_multi_instance``: multiple model instances in one repo. """ @@ -183,6 +184,80 @@ def test_llmapi_backend( output = venv_check_output(llm_backend_venv, run_cmd) +@pytest.mark.parametrize("E2E_MODEL_NAME", ["tensorrt_llm"]) +@pytest.mark.parametrize("TENSOR_PARALLEL_SIZE", ["1"]) +def test_llmapi_lora( + E2E_MODEL_NAME, + TENSOR_PARALLEL_SIZE, + llm_backend_inflight_batcher_llm_root, + llm_backend_venv, + tiny_llama_lora_base_model_root, + tiny_llama_lora_model_root, +): + """E2E LoRA test for the new llmapi triton backend. + + Templates `model.yaml` with `lora_config:` pointing at a TinyLlama + HF LoRA adapter, launches Triton with the llmapi backend, and sends + one request via `llmapi_client.py --lora-id/--lora-name/--lora-path`. + Asserts that the response carries generated text — proving the new + lora_id/lora_name/lora_path inputs reach `LLM.generate_async( + lora_request=...)` and adapter-applied inference completes. + """ + llm_backend_repo_root = os.path.join(LLM_ROOT, "triton_backend") + + if torch.cuda.device_count() < int(TENSOR_PARALLEL_SIZE): + pytest.skip("Skipping. Not enough GPUs.") + + # Prepare model repo with lora_config + new_model_repo = os.path.join(llm_backend_repo_root, "triton_repo") + prepare_llmapi_model_repo(llm_backend_repo_root, new_model_repo) + set_llmapi_decoupled_mode(new_model_repo, False) + model_config_path = os.path.join(new_model_repo, "tensorrt_llm", "1", "model.yaml") + with open(model_config_path, "r") as f: + model_config = yaml.safe_load(f) + model_config["triton_config"]["decoupled"] = False + model_config["triton_config"]["max_batch_size"] = 0 + model_config["tensor_parallel_size"] = int(TENSOR_PARALLEL_SIZE) + model_config["kv_cache_config"] = {"free_gpu_memory_fraction": 0.8} + model_config["model"] = tiny_llama_lora_base_model_root + model_config["lora_config"] = { + "lora_dir": [tiny_llama_lora_model_root], + "max_lora_rank": 64, + "max_loras": 1, + "max_cpu_loras": 1, + } + with open(model_config_path, "w") as f: + yaml.dump(model_config, f) + + # Launch Triton Server + launch_server_py = os.path.join(llm_backend_repo_root, "scripts", "launch_triton_server.py") + cmd = ( + f"python3 {launch_server_py} " + f"--world_size={TENSOR_PARALLEL_SIZE} " + f"--model_repo={new_model_repo} --no-mpi" + ) + print_info(f"DEBUG:: launch_server with args: {cmd}") + check_call(cmd, shell=True) + check_server_ready() + + # Send a LoRA request via llmapi_client.py + run_cmd = [ + f"{llm_backend_repo_root}/tools/llmapi_client.py", + "--text=I've noticed you seem a bit down lately. " + "Is there anything you'd like to talk about?", + "--request-output-len=32", + "--lora-id=0", + "--lora-name=mental-health", + f"--lora-path={tiny_llama_lora_model_root}", + f"--model-name={E2E_MODEL_NAME}", + ] + print_info("DEBUG:: run_cmd: python3 " + " ".join(run_cmd)) + output = venv_check_output(llm_backend_venv, run_cmd) + assert "Output text:" in output, ( + f"Expected 'Output text:' in client output, got: {output[:500]}" + ) + + def test_llmapi_backend_multi_instance( llm_backend_inflight_batcher_llm_root, llm_backend_venv, diff --git a/tests/integration/test_lists/qa/llm_triton_integration.txt b/tests/integration/test_lists/qa/llm_triton_integration.txt index 3381daf33b74..a1225a4c096f 100644 --- a/tests/integration/test_lists/qa/llm_triton_integration.txt +++ b/tests/integration/test_lists/qa/llm_triton_integration.txt @@ -2,4 +2,5 @@ triton_server/test_triton_llmapi.py::test_llmapi_backend[1-0-disableDecoupleMode triton_server/test_triton_llmapi.py::test_llmapi_backend[1-0-enableDecoupleMode-tensorrt_llm] triton_server/test_triton_llmapi.py::test_llmapi_backend[4-0-disableDecoupleMode-tensorrt_llm] triton_server/test_triton_llmapi.py::test_llmapi_backend[4-0-enableDecoupleMode-tensorrt_llm] +triton_server/test_triton_llmapi.py::test_llmapi_lora[1-tensorrt_llm] triton_server/test_triton_llmapi.py::test_llmapi_backend_multi_instance From ad82cd0a48752334a91425b55d12d5e4c35e960e Mon Sep 17 00:00:00 2001 From: "Xin He (SW-GPU)" <200704525+xinhe-nv@users.noreply.github.com> Date: Wed, 16 Sep 2026 12:30:41 +0800 Subject: [PATCH 08/13] [None][test] Restore LlamaForCausalLM coverage in DECODER_MODELS DECODER_MODELS in test_llm_api_pytorch_encode.py is documented as one representative per distinct TRT-LLM architecture class. Pruning the TinyLlama entry earlier on this branch (in favor of the pre-existing Qwen3-0.6B case) dropped the LlamaForCausalLM representative outright rather than replacing it, silently losing encode() single-prefill coverage for the whole Llama/Mistral family (LlamaForCausalLM covers Mistral too, since it aliases LlamaModel) -- not becoming redundant with Qwen3ForCausalLM, a different architecture class with QK-norm. Restores the representative on Llama-3.2-1B, a small Llama checkpoint already relied on elsewhere in this test suite (kv_cache/test_kv_cache_v2_scheduler.py's TestKVCacheV2Llama), and adds back the matching test-list entries. Signed-off-by: Xin He (SW-GPU) <200704525+xinhe-nv@users.noreply.github.com> --- .../defs/accuracy/test_llm_api_pytorch_encode.py | 7 +++++++ tests/integration/test_lists/qa/llm_function_core.txt | 2 ++ tests/integration/test_lists/test-db/l0_a100.yml | 2 ++ 3 files changed, 11 insertions(+) diff --git a/tests/integration/defs/accuracy/test_llm_api_pytorch_encode.py b/tests/integration/defs/accuracy/test_llm_api_pytorch_encode.py index 4bf1c38dd588..25da08ca50e2 100644 --- a/tests/integration/defs/accuracy/test_llm_api_pytorch_encode.py +++ b/tests/integration/defs/accuracy/test_llm_api_pytorch_encode.py @@ -239,8 +239,15 @@ def test_qwen3_text_embedding_matches_huggingface(self, model_name, model_path): # classification scoring on a causal LM backbone. # # One representative per distinct TRT-LLM architecture class: +# LlamaForCausalLM — Llama-3.2-1B (also covers Mistral, which aliases LlamaModel) # Qwen3ForCausalLM — Qwen3-0.6B (QKNorm) DECODER_MODELS = [ + # -- LlamaForCausalLM (covers Llama + Mistral family) -- + pytest.param( + "meta-llama/Llama-3.2-1B", + f"{llm_models_root()}/llama-3.2-models/Llama-3.2-1B", + id="llama-3.2-1b", + ), # -- Qwen3ForCausalLM -- pytest.param( "Qwen/Qwen3-0.6B", diff --git a/tests/integration/test_lists/qa/llm_function_core.txt b/tests/integration/test_lists/qa/llm_function_core.txt index c012b6af4d4e..d5145d79c107 100644 --- a/tests/integration/test_lists/qa/llm_function_core.txt +++ b/tests/integration/test_lists/qa/llm_function_core.txt @@ -644,6 +644,8 @@ accuracy/test_llm_api_pytorch.py::TestQwen3_8_Flash_Next::test_nvfp4_adp4_mtp3_t accuracy/test_llm_api_pytorch.py::TestSeedOss_36B::test_auto_dtype accuracy/test_llm_api_pytorch.py::TestStep3p7SpeculativeDecoding::test_guided_decoding TIMEOUT (60) accuracy/test_llm_api_pytorch.py::TestStep3p7SpeculativeDecoding::test_step3p7_mtp TIMEOUT (60) +accuracy/test_llm_api_pytorch_encode.py::TestDecoderEncode::test_decoder_encode_cuda_graph_matches_eager_logits[llama-3.2-1b] +accuracy/test_llm_api_pytorch_encode.py::TestDecoderEncode::test_decoder_encode_matches_huggingface[llama-3.2-1b] accuracy/test_llm_api_pytorch_encode.py::TestDecoderEncode::test_decoder_encode_matches_huggingface[qwen3-0.6b] accuracy/test_llm_api_pytorch_encode.py::TestEncoderEncode::test_encoder_encode_cuda_graph_matches_eager_logits[bert-yelp] accuracy/test_llm_api_pytorch_encode.py::TestEncoderEncode::test_encoder_encode_matches_huggingface_classification[bert-yelp-cuda_graph] diff --git a/tests/integration/test_lists/test-db/l0_a100.yml b/tests/integration/test_lists/test-db/l0_a100.yml index a5098581a4a3..22d509d88bfd 100644 --- a/tests/integration/test_lists/test-db/l0_a100.yml +++ b/tests/integration/test_lists/test-db/l0_a100.yml @@ -32,7 +32,9 @@ l0_a100: - accuracy/test_llm_api_pytorch_encode.py::TestEncoderEncode::test_encoder_encode_matches_huggingface_classification[bert-yelp-eager] - accuracy/test_llm_api_pytorch_encode.py::TestEncoderEncode::test_encoder_encode_matches_huggingface_classification[bert-yelp-cuda_graph] - accuracy/test_llm_api_pytorch_encode.py::TestEncoderEncode::test_encoder_encode_cuda_graph_matches_eager_logits[bert-yelp] + - accuracy/test_llm_api_pytorch_encode.py::TestDecoderEncode::test_decoder_encode_matches_huggingface[llama-3.2-1b] - accuracy/test_llm_api_pytorch_encode.py::TestDecoderEncode::test_decoder_encode_matches_huggingface[qwen3-0.6b] + - accuracy/test_llm_api_pytorch_encode.py::TestDecoderEncode::test_decoder_encode_cuda_graph_matches_eager_logits[llama-3.2-1b] # Moved from l0_a10.yml: Llama-7B + KV cache + spec resources OOM on A10's 22 GB. - test_e2e.py::test_openai_lora - test_e2e.py::test_trtllm_serve_lora_example From e32dc780b16682616ea5b585f3d1c9a6ed156bf1 Mon Sep 17 00:00:00 2001 From: "Xin He (SW-GPU)" <200704525+xinhe-nv@users.noreply.github.com> Date: Wed, 16 Sep 2026 12:35:13 +0800 Subject: [PATCH 09/13] [None][fix] Update telemetry architectureClassName assertions to Qwen3ForCausalLM test_llm_telemetry.py, test_llm_telemetry_payload.py, and test_e2e_capture.py load Qwen3/Qwen3-0.6B but still asserted architectureClassName == "LlamaForCausalLM" from before the TinyLlama->Qwen3-0.6B migration. Updates the four remaining assertions to "Qwen3ForCausalLM", and renames the last two TinyLlama-referencing docstring/comment in test_llm_telemetry.py. Signed-off-by: Xin He (SW-GPU) <200704525+xinhe-nv@users.noreply.github.com> --- tests/unittest/llmapi/test_llm_telemetry.py | 8 ++++---- tests/unittest/llmapi/test_llm_telemetry_payload.py | 2 +- tests/unittest/usage/test_e2e_capture.py | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/unittest/llmapi/test_llm_telemetry.py b/tests/unittest/llmapi/test_llm_telemetry.py index e6b3d12e0058..de6652855803 100644 --- a/tests/unittest/llmapi/test_llm_telemetry.py +++ b/tests/unittest/llmapi/test_llm_telemetry.py @@ -241,7 +241,7 @@ def test_telemetry_receives_hf_config_pytorch(self): ) assert isinstance(pretrained_config.architectures, list) assert len(pretrained_config.architectures) > 0 - assert pretrained_config.architectures[0] == "LlamaForCausalLM" + assert pretrained_config.architectures[0] == "Qwen3ForCausalLM" assert captured.get("llm_args") is not None, "report_usage was not called with llm_args" @@ -264,7 +264,7 @@ def test_telemetry_config_has_extractable_architecture(self): assert pretrained_config is not None arch = usage_lib._extract_architecture_class_name(pretrained_config) - assert arch == "LlamaForCausalLM", f"Expected 'LlamaForCausalLM', got '{arch}'" + assert arch == "Qwen3ForCausalLM", f"Expected 'Qwen3ForCausalLM', got '{arch}'" class TestTelemetryDisabledFlag: @@ -412,7 +412,7 @@ def test_features_json_present_in_report_pytorch(self): assert set(features.keys()) == set(usage_lib._FEATURES_DEFAULTS.keys()) def test_features_json_default_values_pytorch(self): - """Default TinyLlama config has expected feature defaults.""" + """Default Qwen3-0.6B config has expected feature defaults.""" import json captured, spy = _make_spy() @@ -424,7 +424,7 @@ def test_features_json_default_values_pytorch(self): llm_args = captured.get("llm_args") features = json.loads(usage_lib._collect_features(llm_args)) - # TinyLlama loaded with defaults: no LoRA, no spec dec, no chunked prefill + # Qwen3-0.6B loaded with defaults: no LoRA, no spec dec, no chunked prefill assert features["lora"] is False assert features["speculative_decoding"] is False assert features["chunked_context"] is False diff --git a/tests/unittest/llmapi/test_llm_telemetry_payload.py b/tests/unittest/llmapi/test_llm_telemetry_payload.py index 5d13db8e9505..338f6a36370b 100644 --- a/tests/unittest/llmapi/test_llm_telemetry_payload.py +++ b/tests/unittest/llmapi/test_llm_telemetry_payload.py @@ -127,7 +127,7 @@ def capture_send(payload): assert params["cpuArchitecture"] == platform.machine() assert params["cpuCount"] == os.cpu_count() assert params["cudaVersion"] == torch.version.cuda - assert params["architectureClassName"] == "LlamaForCausalLM" + assert params["architectureClassName"] == "Qwen3ForCausalLM" assert params["backend"] == "pytorch" # Step 4: String length checks (ShortString<=128, LongString<=256) diff --git a/tests/unittest/usage/test_e2e_capture.py b/tests/unittest/usage/test_e2e_capture.py index ab48bc7268e4..a0429a742a26 100644 --- a/tests/unittest/usage/test_e2e_capture.py +++ b/tests/unittest/usage/test_e2e_capture.py @@ -297,7 +297,7 @@ def test_initial_report_captured(self, capture_server, monkeypatch): assert "cudaVersion" in params # Model architecture - assert params["architectureClassName"] == "LlamaForCausalLM" + assert params["architectureClassName"] == "Qwen3ForCausalLM" assert params["architectureClassHash"] == "" # Backend From da7d5d0ca6eb7f8d0bdb69621342077d8351e675 Mon Sep 17 00:00:00 2001 From: "Xin He (SW-GPU)" <200704525+xinhe-nv@users.noreply.github.com> Date: Wed, 16 Sep 2026 15:05:32 +0800 Subject: [PATCH 10/13] [None][fix] Drop stale TinyLlama param from two B200 disagg waives A merge from main brought in two new waive entries for test_disaggregated_ctxpp4_genpp4 and test_disaggregated_ctxtp2pp2_gentp2pp2 referencing the pre-migration [TinyLlama-1.1B-Chat-v1.0] parametrize suffix. Both tests were already renamed off that parametrize earlier on this branch, so the bracketed IDs no longer match anything collected -- drop them to match the un-bracketed waive entries already in use for the same tests on other platforms. Signed-off-by: Xin He (SW-GPU) <200704525+xinhe-nv@users.noreply.github.com> --- tests/integration/test_lists/waives.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/integration/test_lists/waives.txt b/tests/integration/test_lists/waives.txt index 05d063e7316d..e61ecaf89a2b 100644 --- a/tests/integration/test_lists/waives.txt +++ b/tests/integration/test_lists/waives.txt @@ -117,8 +117,8 @@ full:B200/accuracy/test_llm_api_pytorch.py::TestNemotronV3Ultra::test_nvfp4_4gpu full:B200/accuracy/test_llm_api_pytorch.py::TestQwen3_235B_A22B::test_nvfp4[latency_moe_trtllm] SKIP (https://nvbugs/6731978) full:B200/accuracy/test_llm_api_pytorch_multimodal.py::TestExaone4_5_33B::test_auto_dtype[forced_chunked_prefill] SKIP (https://nvbugs/6597570) full:B200/accuracy/test_llm_api_pytorch_multimodal.py::TestExaone4_5_33B::test_auto_dtype[full_budget] SKIP (https://nvbugs/6597570) -full:B200/disaggregated/test_disaggregated.py::test_disaggregated_ctxpp4_genpp4[TinyLlama-1.1B-Chat-v1.0] SKIP (https://nvbugs/6771023) -full:B200/disaggregated/test_disaggregated.py::test_disaggregated_ctxtp2pp2_gentp2pp2[TinyLlama-1.1B-Chat-v1.0] SKIP (https://nvbugs/6435097) +full:B200/disaggregated/test_disaggregated.py::test_disaggregated_ctxpp4_genpp4 SKIP (https://nvbugs/6771023) +full:B200/disaggregated/test_disaggregated.py::test_disaggregated_ctxtp2pp2_gentp2pp2 SKIP (https://nvbugs/6435097) full:B200/disaggregated/test_disaggregated.py::test_disaggregated_logprobs_serving[llama-3.1-8b-instruct] SKIP (https://nvbugs/6275959) full:B200/disaggregated/test_disaggregated.py::test_disaggregated_overlap_gen_first[ctx_pp4] SKIP (https://nvbugs/6728119) full:B200/disaggregated/test_disaggregated.py::test_disaggregated_stress_test[input8k-output1k-conc512-deepseek_r1_v2_fp4_stress] SKIP (https://nvbugs/6765807) From 700b27d21220a7a7eda4e3cc0d2dc83218277574 Mon Sep 17 00:00:00 2001 From: "Xin He (SW-GPU)" <200704525+xinhe-nv@users.noreply.github.com> Date: Thu, 17 Sep 2026 11:24:07 +0800 Subject: [PATCH 11/13] [None][fix] Migrate disaggregated test_configs/*.yaml model field to Qwen3-0.6B The TinyLlama->Qwen3-0.6B migration on this branch updated the Python symlink setup (e.g. prepare_qwen_model, setup_model_symlink) to point at Qwen3/Qwen3-0.6B, but never touched the corresponding test_configs/*.yaml files -- they were skipped because the earlier bulk substitution only matched *.py/*.yml/*.txt, and these are *.yaml. For most of these configs this was silently harmless: they're only consumed via setup_disagg_cluster(), which takes an explicit model_name override (model_name or config.get("model")) that the migrated tests already pass, so the stale "model: TinyLlama/TinyLlama-1.1B-Chat-v1.0" default was always overridden. But three of them -- disagg_config_cache_reuse.yaml, disagg_config_cache_aware_balance.yaml, and disagg_config_conversation_workers.yaml -- are also read by background_workers() in test_workers.py, which has no override and launches workers directly off config.get("model"). Those workers were still being told to load TinyLlama, while the test's own symlink setup had already moved to placing the checkpoint at Qwen3/Qwen3-0.6B -- i.e. the worker's model string pointed at a path nothing populates anymore, disconnected from the model the KV-event/cache-aware/ conversation-router testers actually validate against. Updates all 30 remaining TinyLlama-referencing configs in this directory to Qwen3/Qwen3-0.6B for consistency, whether or not their current caller happens to override the value. The two *_deepseek_v3.yaml configs are untouched (different model, unaffected). Signed-off-by: Xin He (SW-GPU) <200704525+xinhe-nv@users.noreply.github.com> --- .../defs/disaggregated/test_configs/disagg_config.yaml | 2 +- .../test_configs/disagg_config_cache_aware_balance.yaml | 2 +- .../disaggregated/test_configs/disagg_config_cache_reuse.yaml | 2 +- .../disaggregated/test_configs/disagg_config_conditional.yaml | 2 +- .../disaggregated/test_configs/disagg_config_conversation.yaml | 2 +- .../test_configs/disagg_config_conversation_workers.yaml | 2 +- .../disaggregated/test_configs/disagg_config_ctxpp2_genpp2.yaml | 2 +- .../disaggregated/test_configs/disagg_config_ctxpp2_gentp2.yaml | 2 +- .../disaggregated/test_configs/disagg_config_ctxpp4_genpp4.yaml | 2 +- .../disaggregated/test_configs/disagg_config_ctxpp4_gentp4.yaml | 2 +- .../disaggregated/test_configs/disagg_config_ctxtp2_genpp2.yaml | 2 +- .../disaggregated/test_configs/disagg_config_ctxtp2_gentp1.yaml | 2 +- .../test_configs/disagg_config_ctxtp2pp2_gentp2pp2.yaml | 2 +- .../test_configs/disagg_config_cuda_graph_padding.yaml | 2 +- .../test_configs/disagg_config_diff_max_tokens.yaml | 2 +- .../defs/disaggregated/test_configs/disagg_config_gen_only.yaml | 2 +- .../disaggregated/test_configs/disagg_config_gen_only_bs1.yaml | 2 +- .../test_configs/disagg_config_gen_only_insufficient_kv.yaml | 2 +- .../test_configs/disagg_config_gen_only_kv_cache_aware.yaml | 2 +- .../disaggregated/test_configs/disagg_config_load_balance.yaml | 2 +- .../test_configs/disagg_config_load_balancing.yaml | 2 +- .../defs/disaggregated/test_configs/disagg_config_metrics.yaml | 2 +- .../defs/disaggregated/test_configs/disagg_config_mixed.yaml | 2 +- .../test_configs/disagg_config_multi_orchestrator.yaml | 2 +- .../defs/disaggregated/test_configs/disagg_config_ngram.yaml | 2 +- .../defs/disaggregated/test_configs/disagg_config_overlap.yaml | 2 +- .../test_configs/disagg_config_overlap_gen_first.yaml | 2 +- .../test_configs/disagg_config_overlap_gen_first_pp4.yaml | 2 +- .../disagg_config_overlap_transceiver_runtime_python.yaml | 2 +- ...disagg_config_overlap_transceiver_runtime_python_bounce.yaml | 2 +- .../disagg_config_python_transceiver_host_offload.yaml | 2 +- .../defs/disaggregated/test_configs/disagg_config_sa.yaml | 2 +- .../disaggregated/test_configs/disagg_config_sa_python.yaml | 2 +- 33 files changed, 33 insertions(+), 33 deletions(-) diff --git a/tests/integration/defs/disaggregated/test_configs/disagg_config.yaml b/tests/integration/defs/disaggregated/test_configs/disagg_config.yaml index a29c2a5303f8..8c5c7ff1222f 100644 --- a/tests/integration/defs/disaggregated/test_configs/disagg_config.yaml +++ b/tests/integration/defs/disaggregated/test_configs/disagg_config.yaml @@ -1,5 +1,5 @@ hostname: localhost -model: TinyLlama/TinyLlama-1.1B-Chat-v1.0 +model: Qwen3/Qwen3-0.6B free_gpu_memory_fraction: 0.25 backend: pytorch disable_overlap_scheduler: true diff --git a/tests/integration/defs/disaggregated/test_configs/disagg_config_cache_aware_balance.yaml b/tests/integration/defs/disaggregated/test_configs/disagg_config_cache_aware_balance.yaml index a9bf2587d23e..383e750a3a11 100644 --- a/tests/integration/defs/disaggregated/test_configs/disagg_config_cache_aware_balance.yaml +++ b/tests/integration/defs/disaggregated/test_configs/disagg_config_cache_aware_balance.yaml @@ -1,4 +1,4 @@ -model: TinyLlama/TinyLlama-1.1B-Chat-v1.0 +model: Qwen3/Qwen3-0.6B hostname: localhost backend: pytorch cuda_graph_config: null diff --git a/tests/integration/defs/disaggregated/test_configs/disagg_config_cache_reuse.yaml b/tests/integration/defs/disaggregated/test_configs/disagg_config_cache_reuse.yaml index e7b371a6479e..49415ed6cafc 100644 --- a/tests/integration/defs/disaggregated/test_configs/disagg_config_cache_reuse.yaml +++ b/tests/integration/defs/disaggregated/test_configs/disagg_config_cache_reuse.yaml @@ -1,5 +1,5 @@ hostname: localhost -model: TinyLlama/TinyLlama-1.1B-Chat-v1.0 +model: Qwen3/Qwen3-0.6B backend: pytorch cuda_graph_config: null disable_overlap_scheduler: true diff --git a/tests/integration/defs/disaggregated/test_configs/disagg_config_conditional.yaml b/tests/integration/defs/disaggregated/test_configs/disagg_config_conditional.yaml index 26aaeac42d90..4b523838979b 100644 --- a/tests/integration/defs/disaggregated/test_configs/disagg_config_conditional.yaml +++ b/tests/integration/defs/disaggregated/test_configs/disagg_config_conditional.yaml @@ -1,4 +1,4 @@ -model: TinyLlama/TinyLlama-1.1B-Chat-v1.0 +model: Qwen3/Qwen3-0.6B hostname: localhost backend: pytorch cuda_graph_config: null diff --git a/tests/integration/defs/disaggregated/test_configs/disagg_config_conversation.yaml b/tests/integration/defs/disaggregated/test_configs/disagg_config_conversation.yaml index fbbfd0d21e1d..23d19a8bac86 100644 --- a/tests/integration/defs/disaggregated/test_configs/disagg_config_conversation.yaml +++ b/tests/integration/defs/disaggregated/test_configs/disagg_config_conversation.yaml @@ -1,5 +1,5 @@ hostname: localhost -model: TinyLlama/TinyLlama-1.1B-Chat-v1.0 +model: Qwen3/Qwen3-0.6B backend: pytorch cuda_graph_config: null disable_overlap_scheduler: true diff --git a/tests/integration/defs/disaggregated/test_configs/disagg_config_conversation_workers.yaml b/tests/integration/defs/disaggregated/test_configs/disagg_config_conversation_workers.yaml index e894d036def2..6fa0b1b7c019 100644 --- a/tests/integration/defs/disaggregated/test_configs/disagg_config_conversation_workers.yaml +++ b/tests/integration/defs/disaggregated/test_configs/disagg_config_conversation_workers.yaml @@ -1,4 +1,4 @@ -model: TinyLlama/TinyLlama-1.1B-Chat-v1.0 +model: Qwen3/Qwen3-0.6B hostname: localhost backend: pytorch cuda_graph_config: null diff --git a/tests/integration/defs/disaggregated/test_configs/disagg_config_ctxpp2_genpp2.yaml b/tests/integration/defs/disaggregated/test_configs/disagg_config_ctxpp2_genpp2.yaml index c04b34238c6b..67264c5d0eac 100644 --- a/tests/integration/defs/disaggregated/test_configs/disagg_config_ctxpp2_genpp2.yaml +++ b/tests/integration/defs/disaggregated/test_configs/disagg_config_ctxpp2_genpp2.yaml @@ -1,4 +1,4 @@ -model: TinyLlama/TinyLlama-1.1B-Chat-v1.0 +model: Qwen3/Qwen3-0.6B hostname: localhost backend: pytorch cuda_graph_config: null diff --git a/tests/integration/defs/disaggregated/test_configs/disagg_config_ctxpp2_gentp2.yaml b/tests/integration/defs/disaggregated/test_configs/disagg_config_ctxpp2_gentp2.yaml index 76e44e23a12d..9a454405b9c0 100644 --- a/tests/integration/defs/disaggregated/test_configs/disagg_config_ctxpp2_gentp2.yaml +++ b/tests/integration/defs/disaggregated/test_configs/disagg_config_ctxpp2_gentp2.yaml @@ -1,4 +1,4 @@ -model: TinyLlama/TinyLlama-1.1B-Chat-v1.0 +model: Qwen3/Qwen3-0.6B hostname: localhost backend: pytorch cuda_graph_config: null diff --git a/tests/integration/defs/disaggregated/test_configs/disagg_config_ctxpp4_genpp4.yaml b/tests/integration/defs/disaggregated/test_configs/disagg_config_ctxpp4_genpp4.yaml index ffee6430abcc..fff4d54cde09 100644 --- a/tests/integration/defs/disaggregated/test_configs/disagg_config_ctxpp4_genpp4.yaml +++ b/tests/integration/defs/disaggregated/test_configs/disagg_config_ctxpp4_genpp4.yaml @@ -1,4 +1,4 @@ -model: TinyLlama/TinyLlama-1.1B-Chat-v1.0 +model: Qwen3/Qwen3-0.6B hostname: localhost backend: pytorch cuda_graph_config: null diff --git a/tests/integration/defs/disaggregated/test_configs/disagg_config_ctxpp4_gentp4.yaml b/tests/integration/defs/disaggregated/test_configs/disagg_config_ctxpp4_gentp4.yaml index 53b202e7ebdf..a2632cc04b5d 100644 --- a/tests/integration/defs/disaggregated/test_configs/disagg_config_ctxpp4_gentp4.yaml +++ b/tests/integration/defs/disaggregated/test_configs/disagg_config_ctxpp4_gentp4.yaml @@ -1,4 +1,4 @@ -model: TinyLlama/TinyLlama-1.1B-Chat-v1.0 +model: Qwen3/Qwen3-0.6B hostname: localhost backend: pytorch cuda_graph_config: null diff --git a/tests/integration/defs/disaggregated/test_configs/disagg_config_ctxtp2_genpp2.yaml b/tests/integration/defs/disaggregated/test_configs/disagg_config_ctxtp2_genpp2.yaml index 8d6821cd996c..e59112295147 100644 --- a/tests/integration/defs/disaggregated/test_configs/disagg_config_ctxtp2_genpp2.yaml +++ b/tests/integration/defs/disaggregated/test_configs/disagg_config_ctxtp2_genpp2.yaml @@ -1,4 +1,4 @@ -model: TinyLlama/TinyLlama-1.1B-Chat-v1.0 +model: Qwen3/Qwen3-0.6B hostname: localhost backend: pytorch cuda_graph_config: null diff --git a/tests/integration/defs/disaggregated/test_configs/disagg_config_ctxtp2_gentp1.yaml b/tests/integration/defs/disaggregated/test_configs/disagg_config_ctxtp2_gentp1.yaml index 840ba25e021d..d4d8d864b453 100644 --- a/tests/integration/defs/disaggregated/test_configs/disagg_config_ctxtp2_gentp1.yaml +++ b/tests/integration/defs/disaggregated/test_configs/disagg_config_ctxtp2_gentp1.yaml @@ -1,5 +1,5 @@ hostname: localhost -model: TinyLlama/TinyLlama-1.1B-Chat-v1.0 +model: Qwen3/Qwen3-0.6B free_gpu_memory_fraction: 0.25 backend: pytorch cuda_graph_config: null diff --git a/tests/integration/defs/disaggregated/test_configs/disagg_config_ctxtp2pp2_gentp2pp2.yaml b/tests/integration/defs/disaggregated/test_configs/disagg_config_ctxtp2pp2_gentp2pp2.yaml index d80795b727ac..91e3f3adde7d 100644 --- a/tests/integration/defs/disaggregated/test_configs/disagg_config_ctxtp2pp2_gentp2pp2.yaml +++ b/tests/integration/defs/disaggregated/test_configs/disagg_config_ctxtp2pp2_gentp2pp2.yaml @@ -1,4 +1,4 @@ -model: TinyLlama/TinyLlama-1.1B-Chat-v1.0 +model: Qwen3/Qwen3-0.6B hostname: localhost backend: pytorch cuda_graph_config: null diff --git a/tests/integration/defs/disaggregated/test_configs/disagg_config_cuda_graph_padding.yaml b/tests/integration/defs/disaggregated/test_configs/disagg_config_cuda_graph_padding.yaml index 1f9e42d73237..6cda7d0a77a6 100644 --- a/tests/integration/defs/disaggregated/test_configs/disagg_config_cuda_graph_padding.yaml +++ b/tests/integration/defs/disaggregated/test_configs/disagg_config_cuda_graph_padding.yaml @@ -1,4 +1,4 @@ -model: TinyLlama/TinyLlama-1.1B-Chat-v1.0 +model: Qwen3/Qwen3-0.6B hostname: localhost backend: pytorch context_servers: diff --git a/tests/integration/defs/disaggregated/test_configs/disagg_config_diff_max_tokens.yaml b/tests/integration/defs/disaggregated/test_configs/disagg_config_diff_max_tokens.yaml index c07260248822..98fee7f6394f 100644 --- a/tests/integration/defs/disaggregated/test_configs/disagg_config_diff_max_tokens.yaml +++ b/tests/integration/defs/disaggregated/test_configs/disagg_config_diff_max_tokens.yaml @@ -1,5 +1,5 @@ hostname: localhost -model: TinyLlama/TinyLlama-1.1B-Chat-v1.0 +model: Qwen3/Qwen3-0.6B free_gpu_memory_fraction: 0.25 backend: pytorch cuda_graph_config: null diff --git a/tests/integration/defs/disaggregated/test_configs/disagg_config_gen_only.yaml b/tests/integration/defs/disaggregated/test_configs/disagg_config_gen_only.yaml index 9253f421cfcd..a2dbb3f88d83 100644 --- a/tests/integration/defs/disaggregated/test_configs/disagg_config_gen_only.yaml +++ b/tests/integration/defs/disaggregated/test_configs/disagg_config_gen_only.yaml @@ -1,5 +1,5 @@ hostname: localhost -model: TinyLlama/TinyLlama-1.1B-Chat-v1.0 +model: Qwen3/Qwen3-0.6B backend: pytorch cuda_graph_config: null context_servers: diff --git a/tests/integration/defs/disaggregated/test_configs/disagg_config_gen_only_bs1.yaml b/tests/integration/defs/disaggregated/test_configs/disagg_config_gen_only_bs1.yaml index 67494b24ff0b..e18d6c0e00b8 100644 --- a/tests/integration/defs/disaggregated/test_configs/disagg_config_gen_only_bs1.yaml +++ b/tests/integration/defs/disaggregated/test_configs/disagg_config_gen_only_bs1.yaml @@ -1,4 +1,4 @@ -model: TinyLlama/TinyLlama-1.1B-Chat-v1.0 +model: Qwen3/Qwen3-0.6B hostname: localhost backend: pytorch cuda_graph_config: null diff --git a/tests/integration/defs/disaggregated/test_configs/disagg_config_gen_only_insufficient_kv.yaml b/tests/integration/defs/disaggregated/test_configs/disagg_config_gen_only_insufficient_kv.yaml index 9f65a7908e36..a06c29b74754 100644 --- a/tests/integration/defs/disaggregated/test_configs/disagg_config_gen_only_insufficient_kv.yaml +++ b/tests/integration/defs/disaggregated/test_configs/disagg_config_gen_only_insufficient_kv.yaml @@ -1,5 +1,5 @@ hostname: localhost -model: TinyLlama/TinyLlama-1.1B-Chat-v1.0 +model: Qwen3/Qwen3-0.6B backend: pytorch cuda_graph_config: null context_servers: diff --git a/tests/integration/defs/disaggregated/test_configs/disagg_config_gen_only_kv_cache_aware.yaml b/tests/integration/defs/disaggregated/test_configs/disagg_config_gen_only_kv_cache_aware.yaml index 4e40bbf006a1..b107f8b9027c 100644 --- a/tests/integration/defs/disaggregated/test_configs/disagg_config_gen_only_kv_cache_aware.yaml +++ b/tests/integration/defs/disaggregated/test_configs/disagg_config_gen_only_kv_cache_aware.yaml @@ -1,5 +1,5 @@ hostname: localhost -model: TinyLlama/TinyLlama-1.1B-Chat-v1.0 +model: Qwen3/Qwen3-0.6B backend: pytorch cuda_graph_config: null disable_overlap_scheduler: true diff --git a/tests/integration/defs/disaggregated/test_configs/disagg_config_load_balance.yaml b/tests/integration/defs/disaggregated/test_configs/disagg_config_load_balance.yaml index 8540c6f555f6..6d6bede95630 100644 --- a/tests/integration/defs/disaggregated/test_configs/disagg_config_load_balance.yaml +++ b/tests/integration/defs/disaggregated/test_configs/disagg_config_load_balance.yaml @@ -1,4 +1,4 @@ -model: TinyLlama/TinyLlama-1.1B-Chat-v1.0 +model: Qwen3/Qwen3-0.6B hostname: localhost backend: pytorch cuda_graph_config: null diff --git a/tests/integration/defs/disaggregated/test_configs/disagg_config_load_balancing.yaml b/tests/integration/defs/disaggregated/test_configs/disagg_config_load_balancing.yaml index 144c9af0f72e..d0868f8277f5 100644 --- a/tests/integration/defs/disaggregated/test_configs/disagg_config_load_balancing.yaml +++ b/tests/integration/defs/disaggregated/test_configs/disagg_config_load_balancing.yaml @@ -1,5 +1,5 @@ hostname: localhost -model: TinyLlama/TinyLlama-1.1B-Chat-v1.0 +model: Qwen3/Qwen3-0.6B backend: pytorch cuda_graph_config: null disable_overlap_scheduler: true diff --git a/tests/integration/defs/disaggregated/test_configs/disagg_config_metrics.yaml b/tests/integration/defs/disaggregated/test_configs/disagg_config_metrics.yaml index a15f68e6381c..2edaa5c93911 100644 --- a/tests/integration/defs/disaggregated/test_configs/disagg_config_metrics.yaml +++ b/tests/integration/defs/disaggregated/test_configs/disagg_config_metrics.yaml @@ -1,5 +1,5 @@ hostname: localhost -model: TinyLlama/TinyLlama-1.1B-Chat-v1.0 +model: Qwen3/Qwen3-0.6B free_gpu_memory_fraction: 0.25 backend: "pytorch" cuda_graph_config: null diff --git a/tests/integration/defs/disaggregated/test_configs/disagg_config_mixed.yaml b/tests/integration/defs/disaggregated/test_configs/disagg_config_mixed.yaml index cf7478ce8588..4582e152fb8f 100644 --- a/tests/integration/defs/disaggregated/test_configs/disagg_config_mixed.yaml +++ b/tests/integration/defs/disaggregated/test_configs/disagg_config_mixed.yaml @@ -1,5 +1,5 @@ hostname: localhost -model: TinyLlama/TinyLlama-1.1B-Chat-v1.0 +model: Qwen3/Qwen3-0.6B free_gpu_memory_fraction: 0.25 backend: "pytorch" cuda_graph_config: null diff --git a/tests/integration/defs/disaggregated/test_configs/disagg_config_multi_orchestrator.yaml b/tests/integration/defs/disaggregated/test_configs/disagg_config_multi_orchestrator.yaml index 970c2e276647..2382366ab5c3 100644 --- a/tests/integration/defs/disaggregated/test_configs/disagg_config_multi_orchestrator.yaml +++ b/tests/integration/defs/disaggregated/test_configs/disagg_config_multi_orchestrator.yaml @@ -1,5 +1,5 @@ hostname: localhost -model: TinyLlama/TinyLlama-1.1B-Chat-v1.0 +model: Qwen3/Qwen3-0.6B num_workers: 4 free_gpu_memory_fraction: 0.25 backend: pytorch diff --git a/tests/integration/defs/disaggregated/test_configs/disagg_config_ngram.yaml b/tests/integration/defs/disaggregated/test_configs/disagg_config_ngram.yaml index 4d0e7f804368..95f7278c2f9b 100644 --- a/tests/integration/defs/disaggregated/test_configs/disagg_config_ngram.yaml +++ b/tests/integration/defs/disaggregated/test_configs/disagg_config_ngram.yaml @@ -1,5 +1,5 @@ hostname: localhost -model: TinyLlama/TinyLlama-1.1B-Chat-v1.0 +model: Qwen3/Qwen3-0.6B free_gpu_memory_fraction: 0.1 backend: pytorch disable_overlap_scheduler: true diff --git a/tests/integration/defs/disaggregated/test_configs/disagg_config_overlap.yaml b/tests/integration/defs/disaggregated/test_configs/disagg_config_overlap.yaml index 391f95605b2c..4b796be5ed65 100644 --- a/tests/integration/defs/disaggregated/test_configs/disagg_config_overlap.yaml +++ b/tests/integration/defs/disaggregated/test_configs/disagg_config_overlap.yaml @@ -1,4 +1,4 @@ -model: TinyLlama/TinyLlama-1.1B-Chat-v1.0 +model: Qwen3/Qwen3-0.6B hostname: localhost backend: pytorch cuda_graph_config: null diff --git a/tests/integration/defs/disaggregated/test_configs/disagg_config_overlap_gen_first.yaml b/tests/integration/defs/disaggregated/test_configs/disagg_config_overlap_gen_first.yaml index 50e8f172101b..af67d32b0808 100644 --- a/tests/integration/defs/disaggregated/test_configs/disagg_config_overlap_gen_first.yaml +++ b/tests/integration/defs/disaggregated/test_configs/disagg_config_overlap_gen_first.yaml @@ -1,4 +1,4 @@ -model: TinyLlama/TinyLlama-1.1B-Chat-v1.0 +model: Qwen3/Qwen3-0.6B hostname: localhost port: 8000 backend: "pytorch" diff --git a/tests/integration/defs/disaggregated/test_configs/disagg_config_overlap_gen_first_pp4.yaml b/tests/integration/defs/disaggregated/test_configs/disagg_config_overlap_gen_first_pp4.yaml index 4f50e9b57150..70134e60b0cf 100644 --- a/tests/integration/defs/disaggregated/test_configs/disagg_config_overlap_gen_first_pp4.yaml +++ b/tests/integration/defs/disaggregated/test_configs/disagg_config_overlap_gen_first_pp4.yaml @@ -1,4 +1,4 @@ -model: TinyLlama/TinyLlama-1.1B-Chat-v1.0 +model: Qwen3/Qwen3-0.6B hostname: localhost port: 8000 backend: "pytorch" diff --git a/tests/integration/defs/disaggregated/test_configs/disagg_config_overlap_transceiver_runtime_python.yaml b/tests/integration/defs/disaggregated/test_configs/disagg_config_overlap_transceiver_runtime_python.yaml index 33b4d256ad54..b44337dc6996 100644 --- a/tests/integration/defs/disaggregated/test_configs/disagg_config_overlap_transceiver_runtime_python.yaml +++ b/tests/integration/defs/disaggregated/test_configs/disagg_config_overlap_transceiver_runtime_python.yaml @@ -1,4 +1,4 @@ -model: TinyLlama/TinyLlama-1.1B-Chat-v1.0 +model: Qwen3/Qwen3-0.6B hostname: localhost port: 8000 backend: "pytorch" diff --git a/tests/integration/defs/disaggregated/test_configs/disagg_config_overlap_transceiver_runtime_python_bounce.yaml b/tests/integration/defs/disaggregated/test_configs/disagg_config_overlap_transceiver_runtime_python_bounce.yaml index b4b3cd1234b9..c3939076edfd 100644 --- a/tests/integration/defs/disaggregated/test_configs/disagg_config_overlap_transceiver_runtime_python_bounce.yaml +++ b/tests/integration/defs/disaggregated/test_configs/disagg_config_overlap_transceiver_runtime_python_bounce.yaml @@ -7,7 +7,7 @@ # TRTLLM_KV_CACHE_BOUNCE_MIN_BLOCKS env (set by the test) so the ordinary short test prompts still # take the coalesced-bounce WRITE path (the production default of 96 would need a ~2k-token prompt). # GB200/GB300 only, since the bounce arena is fabric (MNNVL) VMM memory. -model: TinyLlama/TinyLlama-1.1B-Chat-v1.0 +model: Qwen3/Qwen3-0.6B hostname: localhost port: 8000 backend: "pytorch" diff --git a/tests/integration/defs/disaggregated/test_configs/disagg_config_python_transceiver_host_offload.yaml b/tests/integration/defs/disaggregated/test_configs/disagg_config_python_transceiver_host_offload.yaml index 7cfdef404168..85fc3519fef1 100644 --- a/tests/integration/defs/disaggregated/test_configs/disagg_config_python_transceiver_host_offload.yaml +++ b/tests/integration/defs/disaggregated/test_configs/disagg_config_python_transceiver_host_offload.yaml @@ -1,4 +1,4 @@ -model: TinyLlama/TinyLlama-1.1B-Chat-v1.0 +model: Qwen3/Qwen3-0.6B hostname: localhost port: 8000 backend: "pytorch" diff --git a/tests/integration/defs/disaggregated/test_configs/disagg_config_sa.yaml b/tests/integration/defs/disaggregated/test_configs/disagg_config_sa.yaml index 397defec094d..7da1cf8ec701 100644 --- a/tests/integration/defs/disaggregated/test_configs/disagg_config_sa.yaml +++ b/tests/integration/defs/disaggregated/test_configs/disagg_config_sa.yaml @@ -1,5 +1,5 @@ hostname: localhost -model: TinyLlama/TinyLlama-1.1B-Chat-v1.0 +model: Qwen3/Qwen3-0.6B free_gpu_memory_fraction: 0.1 backend: pytorch disable_overlap_scheduler: true diff --git a/tests/integration/defs/disaggregated/test_configs/disagg_config_sa_python.yaml b/tests/integration/defs/disaggregated/test_configs/disagg_config_sa_python.yaml index 82984ec49b49..0ef4ec112550 100644 --- a/tests/integration/defs/disaggregated/test_configs/disagg_config_sa_python.yaml +++ b/tests/integration/defs/disaggregated/test_configs/disagg_config_sa_python.yaml @@ -5,7 +5,7 @@ # The existing test_disaggregated_sa covers the spec split only on the # C++ DEFAULT backend. hostname: localhost -model: TinyLlama/TinyLlama-1.1B-Chat-v1.0 +model: Qwen3/Qwen3-0.6B free_gpu_memory_fraction: 0.1 backend: pytorch disable_overlap_scheduler: true From 4365f7859e5716f72dd3ae72734e5396fbaf8667 Mon Sep 17 00:00:00 2001 From: "Xin He (SW-GPU)" <200704525+xinhe-nv@users.noreply.github.com> Date: Thu, 17 Sep 2026 15:19:18 +0800 Subject: [PATCH 12/13] [None][test] Add capture script for test_disaggregated_simple_llama Qwen3 migration Standalone script (not a pytest test) to capture the real expected (text, token_ids) for migrating test_disaggregated_simple_llama in test_disaggregated_single_gpu.py from TinyLlama-1.1B-Chat-v1.0 to Qwen3-0.6B. That test asserts exact hardcoded output tied to the model's tokenizer, so guessing new values isn't safe -- this needs to be run once against a real GPU to capture them. Sidesteps the MPIPoolExecutor control channel that test_disaggregated_single_gpu.py currently needs (broken on Open MPI 5, nvbugs/6770878, hence that whole module being skipped): with greedy decoding, a single plain generate() call reproduces the same tokens that the context_only/generation_only split would produce. Run, paste the printed values back to wire into the test, then delete this script. Signed-off-by: Xin He (SW-GPU) <200704525+xinhe-nv@users.noreply.github.com> --- .../capture_qwen3_disagg_expected.py | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 tests/integration/defs/disaggregated/capture_qwen3_disagg_expected.py diff --git a/tests/integration/defs/disaggregated/capture_qwen3_disagg_expected.py b/tests/integration/defs/disaggregated/capture_qwen3_disagg_expected.py new file mode 100644 index 000000000000..9ca0ddd39c4b --- /dev/null +++ b/tests/integration/defs/disaggregated/capture_qwen3_disagg_expected.py @@ -0,0 +1,65 @@ +# Copyright (c) 2026, NVIDIA CORPORATION. All rights reserved. +# +# 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. +"""One-off capture script for migrating test_disaggregated_simple_llama. + +Migrates test_disaggregated_simple_llama in test_disaggregated_single_gpu.py +from TinyLlama-1.1B-Chat-v1.0 to Qwen3-0.6B. + +test_disaggregated_simple_llama asserts exact hardcoded output token IDs +and text produced by a single (prompt, greedy-sampling) request split +across a context_only step and a generation_only step. Disaggregation +only splits prefill (1 token) and decode (the rest) across two workers; +with greedy decoding (temperature=0) and matching KV precision, the +resulting tokens are identical to a single plain generate() call, so this +script reproduces the same values without depending on the +MPIPoolExecutor control channel that module currently needs (broken on +Open MPI 5, see https://nvbugs/6770878, hence that whole module being +skipped). + +Not a pytest test -- run directly: + python3 capture_qwen3_disagg_expected.py + +Requires LLM_MODELS_ROOT set and a single free GPU. Paste the printed +values into test_disaggregated_simple_llama's verify_disaggregated() call, +then delete this script. +""" + +import os + +from tensorrt_llm import LLM, SamplingParams + +MODEL_PATH = os.path.join(os.environ["LLM_MODELS_ROOT"], "Qwen3", "Qwen3-0.6B") +PROMPT = "What is the capital of Germany?" +MAX_TOKENS = 25 + + +def main(): + llm = LLM( + model=MODEL_PATH, + disable_overlap_scheduler=True, + cuda_graph_config=None, + ) + + sampling_params = SamplingParams(max_tokens=MAX_TOKENS, ignore_eos=True, temperature=0) + outputs = llm.generate([PROMPT], sampling_params) + output = outputs[0].outputs[0] + + print("=== Paste these into test_disaggregated_simple_llama ===") + print(f"expected_output_ids[0] (context_only) = {output.token_ids[0]!r}") + print(f"expected_output (generation_only text) = {output.text!r}") + print(f"expected_output_ids (generation_only) = {list(output.token_ids)!r}") + + +if __name__ == "__main__": + main() From 91691f72e31598eb6998877f440d483c83119e83 Mon Sep 17 00:00:00 2001 From: "Xin He (SW-GPU)" <200704525+xinhe-nv@users.noreply.github.com> Date: Thu, 17 Sep 2026 16:13:16 +0800 Subject: [PATCH 13/13] [None][test] Drop test_disaggregated_simple_llama, obsoleted by test_disaggregated_simple_qwen3 test_disaggregated_simple_llama (TinyLlama-1.1B-Chat-v1.0) and test_disaggregated_simple_qwen3 (Qwen3-8B-FP8) both call the same verify_disaggregated() harness, asserting bit-exact context/generation split correctness for the same standard paged-KV-cache GQA handoff path -- duplicate mechanism coverage, different (and now obsolete) model. test_disaggregated_simple_deepseek stays: it covers MLA's distinct KV-cache layout, which GQA models don't exercise. Removes the test and its now-unreferenced test-list entries. Keeps test_disaggregated_simple_qwen3's name as-is (not shortened to test_disaggregated_simple) since test_disaggregated_simple_deepseek is still around and a bare name would be ambiguous between them. Also removes capture_qwen3_disagg_expected.py, which existed only to capture new expected values for migrating (rather than deleting) test_disaggregated_simple_llama -- no longer needed. Signed-off-by: Xin He (SW-GPU) <200704525+xinhe-nv@users.noreply.github.com> --- .../capture_qwen3_disagg_expected.py | 65 ------------------- .../test_disaggregated_single_gpu.py | 15 ----- .../test_lists/qa/llm_function_core.txt | 4 -- .../integration/test_lists/test-db/l0_a10.yml | 4 -- .../test_lists/test-db/l0_h100.yml | 1 - tests/integration/test_lists/waives.txt | 1 - 6 files changed, 90 deletions(-) delete mode 100644 tests/integration/defs/disaggregated/capture_qwen3_disagg_expected.py diff --git a/tests/integration/defs/disaggregated/capture_qwen3_disagg_expected.py b/tests/integration/defs/disaggregated/capture_qwen3_disagg_expected.py deleted file mode 100644 index 9ca0ddd39c4b..000000000000 --- a/tests/integration/defs/disaggregated/capture_qwen3_disagg_expected.py +++ /dev/null @@ -1,65 +0,0 @@ -# Copyright (c) 2026, NVIDIA CORPORATION. All rights reserved. -# -# 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. -"""One-off capture script for migrating test_disaggregated_simple_llama. - -Migrates test_disaggregated_simple_llama in test_disaggregated_single_gpu.py -from TinyLlama-1.1B-Chat-v1.0 to Qwen3-0.6B. - -test_disaggregated_simple_llama asserts exact hardcoded output token IDs -and text produced by a single (prompt, greedy-sampling) request split -across a context_only step and a generation_only step. Disaggregation -only splits prefill (1 token) and decode (the rest) across two workers; -with greedy decoding (temperature=0) and matching KV precision, the -resulting tokens are identical to a single plain generate() call, so this -script reproduces the same values without depending on the -MPIPoolExecutor control channel that module currently needs (broken on -Open MPI 5, see https://nvbugs/6770878, hence that whole module being -skipped). - -Not a pytest test -- run directly: - python3 capture_qwen3_disagg_expected.py - -Requires LLM_MODELS_ROOT set and a single free GPU. Paste the printed -values into test_disaggregated_simple_llama's verify_disaggregated() call, -then delete this script. -""" - -import os - -from tensorrt_llm import LLM, SamplingParams - -MODEL_PATH = os.path.join(os.environ["LLM_MODELS_ROOT"], "Qwen3", "Qwen3-0.6B") -PROMPT = "What is the capital of Germany?" -MAX_TOKENS = 25 - - -def main(): - llm = LLM( - model=MODEL_PATH, - disable_overlap_scheduler=True, - cuda_graph_config=None, - ) - - sampling_params = SamplingParams(max_tokens=MAX_TOKENS, ignore_eos=True, temperature=0) - outputs = llm.generate([PROMPT], sampling_params) - output = outputs[0].outputs[0] - - print("=== Paste these into test_disaggregated_simple_llama ===") - print(f"expected_output_ids[0] (context_only) = {output.token_ids[0]!r}") - print(f"expected_output (generation_only text) = {output.text!r}") - print(f"expected_output_ids (generation_only) = {list(output.token_ids)!r}") - - -if __name__ == "__main__": - main() diff --git a/tests/integration/defs/disaggregated/test_disaggregated_single_gpu.py b/tests/integration/defs/disaggregated/test_disaggregated_single_gpu.py index 77fb6481a89e..924e08324215 100644 --- a/tests/integration/defs/disaggregated/test_disaggregated_single_gpu.py +++ b/tests/integration/defs/disaggregated/test_disaggregated_single_gpu.py @@ -366,21 +366,6 @@ def verify_disaggregated(model, generation_overlap, enable_cuda_graph, prompt, print("All workers terminated.") -@pytest.mark.parametrize("model", ["TinyLlama-1.1B-Chat-v1.0"]) -@pytest.mark.parametrize("generation_overlap", [False, True]) -@pytest.mark.parametrize("enable_cuda_graph", [False, True]) -def test_disaggregated_simple_llama(model, generation_overlap, - enable_cuda_graph): - verify_disaggregated( - model, generation_overlap, enable_cuda_graph, - "What is the capital of Germany?", - "\n<|assistant|>\nThe capital of Germany is Berlin. \n<|user|>", [ - 2, 29871, 13, 29966, 29989, 465, 22137, 29989, 29958, 13, 1576, - 7483, 310, 9556, 338, 5115, 29889, 2, 29871, 13, 29966, 29989, 1792, - 29989, 29958 - ]) - - @skip_no_hopper @pytest.mark.parametrize("model", ["DeepSeek-V3-Lite-fp8/fp8"]) @pytest.mark.parametrize("generation_overlap", [False, True]) diff --git a/tests/integration/test_lists/qa/llm_function_core.txt b/tests/integration/test_lists/qa/llm_function_core.txt index c0a381203e2c..4726bb85c79b 100644 --- a/tests/integration/test_lists/qa/llm_function_core.txt +++ b/tests/integration/test_lists/qa/llm_function_core.txt @@ -739,10 +739,6 @@ disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_deepse disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_deepseek[False-True-DeepSeek-V3-Lite-fp8/fp8] disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_deepseek[True-False-DeepSeek-V3-Lite-fp8/fp8] disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_deepseek[True-True-DeepSeek-V3-Lite-fp8/fp8] -disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_llama[False-False-TinyLlama-1.1B-Chat-v1.0] -disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_llama[False-True-TinyLlama-1.1B-Chat-v1.0] -disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_llama[True-False-TinyLlama-1.1B-Chat-v1.0] -disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_llama[True-True-TinyLlama-1.1B-Chat-v1.0] disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_qwen3[False-False-Qwen3-8B-FP8] disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_qwen3[False-True-Qwen3-8B-FP8] disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_qwen3[True-False-Qwen3-8B-FP8] diff --git a/tests/integration/test_lists/test-db/l0_a10.yml b/tests/integration/test_lists/test-db/l0_a10.yml index 6c574819e93c..c99601e77208 100644 --- a/tests/integration/test_lists/test-db/l0_a10.yml +++ b/tests/integration/test_lists/test-db/l0_a10.yml @@ -101,10 +101,6 @@ l0_a10: - disaggregated/test_workers.py::test_workers_kv_cache_events - disaggregated/test_workers.py::test_workers_kv_cache_aware_router - disaggregated/test_workers.py::test_workers_kv_cache_aware_router_eviction - - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_llama[False-False-TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_llama[False-True-TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_llama[True-False-TinyLlama-1.1B-Chat-v1.0] - - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_llama[True-True-TinyLlama-1.1B-Chat-v1.0] - disaggregated/test_disaggregated_single_gpu.py::test_arbitrary_kv_cache_transfer[False-Qwen3-0.6B] - disaggregated/test_disaggregated_single_gpu.py::test_arbitrary_kv_cache_transfer_missing_blocks[False-Qwen3-0.6B] - test_e2e.py::test_get_ci_container_port diff --git a/tests/integration/test_lists/test-db/l0_h100.yml b/tests/integration/test_lists/test-db/l0_h100.yml index 59f215c6c7f5..12e667e3c27b 100644 --- a/tests/integration/test_lists/test-db/l0_h100.yml +++ b/tests/integration/test_lists/test-db/l0_h100.yml @@ -240,7 +240,6 @@ l0_h100: - accuracy/test_llm_api_pytorch.py::TestDeepSeekV3Lite::test_fp8_block_scales[mtp=disable-fp8kv=True-attention_dp=False-cuda_graph=True-overlap_scheduler=True-torch_compile=True] - accuracy/test_llm_api_pytorch.py::TestQwen3_8B::test_fp8_block_scales[latency] - test_e2e.py::test_trtllm_bench_pytorch_backend_sanity[meta-llama/Llama-3.1-8B-llama-3.1-8b-False-False] - - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_llama[False-False-TinyLlama-1.1B-Chat-v1.0] - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_deepseek[False-False-DeepSeek-V3-Lite-fp8/fp8] - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_qwen3[False-False-Qwen3-8B-FP8] - disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_logits[False-Qwen3-0.6B] diff --git a/tests/integration/test_lists/waives.txt b/tests/integration/test_lists/waives.txt index e61ecaf89a2b..84984c5ddc06 100644 --- a/tests/integration/test_lists/waives.txt +++ b/tests/integration/test_lists/waives.txt @@ -64,7 +64,6 @@ disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_logits[True-Q disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_logprobs[False-Qwen3-0.6B] SKIP (https://nvbugs/6759021) disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_logprobs[True-Qwen3-0.6B] SKIP (https://nvbugs/6759021) disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_deepseek[False-False-DeepSeek-V3-Lite-fp8/fp8] SKIP (https://nvbugs/6759021) -disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_llama[False-False-TinyLlama-1.1B-Chat-v1.0] SKIP (https://nvbugs/6759021) disaggregated/test_disaggregated_single_gpu.py::test_disaggregated_simple_qwen3[False-False-Qwen3-8B-FP8] SKIP (https://nvbugs/6759021) disaggregated/test_workers.py::test_workers_conversation_router SKIP (https://nvbugs/6162322) disaggregated/test_workers.py::test_workers_kv_cache_aware_router_deepseek_v3_lite_bf16[DeepSeek-V3-Lite-bf16] SKIP (https://nvbugs/6162322)