openvinotoolkit / openvinotoolkit/model_server

Qwen3.5-35B-A3B-int4-ov gibberish output during high memory pressure

Open
#4,345 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
C++
Stars
931
Forks
277
Avg merge
2d 13h
Merged PRs (30d)
68

Description

Describe the bug
When inferencing the model with an input token count of 16389 and an output token count of 512, the returned response is gibberish (All Exclamation Marks).

To Reproduce
Steps to reproduce the behavior:

  1. Download ovms_windows_2026.2.0_python_off.zip
  2. Download models from HuggingFace
  3. CD into downloaded ovms folder, run setupvars.bat
  4. OVMS launch command: .\ovms --rest_port 8180 --config_path "C:\models\Qwen3.5-35B-A3B-int4-ov\model_config.json"
  5. Client command: python pycurl.py

Expected behavior
A proper response regarding the question.

Logs

Image Image Image

Configuration

  1. OVMS version: 2026.2.0
  2. OVMS config.json file
{
  "mediapipe_config_list": [
    {
      "name": "Qwen3.5-35B-A3B-int4-ov",
      "base_path": "C:\\models\\Qwen3.5-35B-A3B-int4-ov"
    }
  ],
  "model_config_list": []
}
  1. CPU, accelerator's versions if applicable
Intel(R) Core(TM) Ultra X7 358H, 1900 Mhz, 16 Core(s), 16 Logical Processor(s)
Intel(R) Arc(TM) B390 GPU
32 GB 8533Mt/s
Driver version `32.0.101.8801`
  1. Model repository directory structure
C:.
|   .gitattributes
|   chat_template.jinja
|   config.json
|   generation_config.json
|   graph.pbtxt
|   model_config.json
|   openvino_config.json
|   openvino_detokenizer.bin
|   openvino_detokenizer.xml
|   openvino_language_model.bin
|   openvino_language_model.xml
|   openvino_text_embeddings_model.bin
|   openvino_text_embeddings_model.xml
|   openvino_tokenizer.bin
|   openvino_tokenizer.xml
|   openvino_vision_embeddings_merger_model.bin
|   openvino_vision_embeddings_merger_model.xml
|   openvino_vision_embeddings_model.bin
|   openvino_vision_embeddings_model.xml
|   openvino_vision_embeddings_pos_model.bin
|   openvino_vision_embeddings_pos_model.xml
|   preprocessor_config.json
|   processor_config.json
|   README.md
|   tokenizer.json
|   tokenizer_config.json
|   
\---.cache
    \---huggingface
        |   .gitignore
        |   
        \---download
                .gitattributes.metadata
                chat_template.jinja.metadata
                config.json.metadata
                generation_config.json.metadata
                openvino_config.json.metadata
                openvino_detokenizer.bin.metadata
                openvino_detokenizer.xml.metadata
                openvino_language_model.bin.metadata
                openvino_language_model.xml.metadata
                openvino_text_embeddings_model.bin.metadata
                openvino_text_embeddings_model.xml.metadata
                openvino_tokenizer.bin.metadata
                openvino_tokenizer.xml.metadata
                openvino_vision_embeddings_merger_model.bin.metadata
                openvino_vision_embeddings_merger_model.xml.metadata
                openvino_vision_embeddings_model.bin.metadata
                openvino_vision_embeddings_model.xml.metadata
                openvino_vision_embeddings_pos_model.bin.metadata
                openvino_vision_embeddings_pos_model.xml.metadata
                preprocessor_config.json.metadata
                processor_config.json.metadata
                README.md.metadata
                tokenizer.json.metadata
                tokenizer_config.json.metadata
  1. Model or publicly available similar model that reproduces the issue
OpenVINO/Qwen3.5-35B-A3B-int4-ov

Additional context
graph.pbtxt:

input_stream: "HTTP_REQUEST_PAYLOAD:input"
output_stream: "HTTP_RESPONSE_PAYLOAD:output"

node: {
  name: "LLMExecutor"
  calculator: "HttpLLMCalculator"
  input_stream: "LOOPBACK:loopback"
  input_stream: "HTTP_REQUEST_PAYLOAD:input"
  input_side_packet: "LLM_NODE_RESOURCES:llm"
  output_stream: "LOOPBACK:loopback"
  output_stream: "HTTP_RESPONSE_PAYLOAD:output"
  input_stream_info: {
    tag_index: 'LOOPBACK:0'
    back_edge: true
  }
  node_options: {
    [type.googleapis.com/mediapipe.LLMCalculatorOptions]: {
      models_path: "./"
      plugin_config: '{}'
      enable_prefix_caching: true
      dynamic_split_fuse: false
      max_num_seqs: 15
      max_num_batched_tokens: 131072
      device: "GPU"
    }
  }
  input_stream_handler {
    input_stream_handler: "SyncSetInputStreamHandler"
    options {
      [mediapipe.SyncSetInputStreamHandlerOptions.ext] {
        sync_set {
          tag_index: "LOOPBACK:0"
        }
      }
    }
  }
}

pycurl.py

import json
import requests
 
# 1. Configure the API endpoint and model parameters
url = "http://127.0.0.1:8180/v3/chat/completions"
model_name = "Qwen3.5-35B-A3B-int4-ov"
base_sentence = "What is OpenVINO? Please explain with examples. " # This has 11 tokens
 

num_repetitions = 1489
prompt_content = base_sentence * num_repetitions
 
 
 
# 3. Construct the payload
payload = {
    "model": model_name,
    "messages": [
        {
            "role": "user",
            "content": prompt_content
        }
    ],
    "max_tokens": 512,
    "temperature": 0
}
 
headers = {
    "Content-Type": "application/json"
}
 
# 4. Send the request
try:
    response = requests.post(url, headers=headers, json=payload)
    if response.status_code == 200:
        print("Success! Response from server:")
        print(json.dumps(response.json(), indent=2))
    else:
        print(f"Failed with status code: {response.status_code}")
        print(response.text)
except requests.exceptions.RequestException as e:
    print(f"An error occurred while connecting to the server: {e}")

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the issue with pycurl.py against the OVMS 2026.2.0 setup, using the Qwen3.5-35B-A3B-int4-ov model and the graph.pbtxt configuration. Start by running the documented setup and client commands with the 16,389-token input and 512-token output, then inspect the reported logs and configuration. Done means the same request returns a proper response rather than gibberish under the stated memory pressure.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
ai, backend-api-design
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.