Checklist
Describe the bug
We use meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8 on 8*H100. When sending 5 4096 * 4096 images, the server would have OOM error and crash.
Version: 58dd95f
- Use cuda device for image_processor
See gpu_processing.log
- Since the above error happened when using GPU with the fast image processsor, we commented out this line:
|
processor = self._processor |
|
if hasattr(processor, "image_processor") and isinstance( |
|
processor.image_processor, BaseImageProcessorFast |
|
): |
|
kwargs["device"] = "cuda" |
But OOM happened again:
See cpu_image_processing.log
Reproduction
Server launch command:
python3 -m sglang.launch_server --model /models/meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8 --port=8080 --tp-size=8 --mem-fraction-static=0.85 --context-length=524288 --tool-call-parser=pythonic --chat-template=examples/chat_template/tool_chat_template_llama4_pythonic.jinja --attention-backend=fa3 --enable-multimodal
Request script:
python3 send_image_request.py
import openai
import requests
import base64
import uuid
from pathlib import Path
# Setup your client
client = openai.Client(
base_url="http://localhost:8080/v1",
api_key="xxxxxx"
)
# Function to encode local image to base64
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode("utf-8")
# Download 5 images from Pexels manually selected 4K examples
pexels_4k_urls = [
"https://images.pexels.com/photos/210186/pexels-photo-210186.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=4096&w=4096",
"https://images.pexels.com/photos/1103970/pexels-photo-1103970.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=4096&w=4096",
"https://images.pexels.com/photos/1252983/pexels-photo-1252983.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=4096&w=4096",
"https://images.pexels.com/photos/417173/pexels-photo-417173.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=4096&w=4096",
"https://images.pexels.com/photos/417074/pexels-photo-417074.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=4096&w=4096",
]
# Ensure local directory for temp images
Path("temp_images").mkdir(exist_ok=True)
image_messages = []
for i, url in enumerate(pexels_4k_urls):
response = requests.get(url)
local_path = f"temp_images/image_{i}.jpg"
with open(local_path, "wb") as f:
f.write(response.content)
b64_image = encode_image(local_path)
image_messages.append({
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{b64_image}"
}
})
# Send the request
response = client.chat.completions.create(
model="vllm-model",
messages=[
{
"role": "user",
"content": [
{
"type": "text",
"text": "Can you tell me what are the contents of the following images? Please analyze each image and tell me how many images you analyzed in total."
},
*image_messages
],
}
]
)
print(response)
Environment
Python: 3.12.3 (main, May 26 2025, 18:50:19) [GCC 13.3.0]
CUDA available: True
GPU 0,1,2,3,4,5,6,7: NVIDIA H100 80GB HBM3
GPU 0,1,2,3,4,5,6,7 Compute Capability: 9.0
CUDA_HOME: /usr/local/cuda
NVCC: Cuda compilation tools, release 12.6, V12.6.85
CUDA Driver Version: 560.35.05
PyTorch: 2.7.1+cu126
sglang: 0.4.9.post4
sgl_kernel: 0.2.7
flashinfer_python: 0.2.9rc2
triton: 3.3.1
transformers: 4.53.2
torchao: 0.9.0
numpy: 2.3.0
aiohttp: 3.12.13
fastapi: 0.115.12
hf_transfer: 0.1.9
huggingface_hub: 0.34.1
interegular: 0.3.3
modelscope: 1.27.0
orjson: 3.10.18
outlines: 0.1.11
packaging: 25.0
psutil: 7.0.0
pydantic: 2.11.7
python-multipart: 0.0.20
pyzmq: 27.0.0
uvicorn: 0.34.3
uvloop: 0.21.0
vllm: Module Not Found
xgrammar: 0.1.21
openai: 1.87.0
tiktoken: 0.9.0
anthropic: 0.54.0
litellm: 1.72.6
decord: 0.6.0
NVIDIA Topology:
GPU0 GPU1 GPU2 GPU3 GPU4 GPU5 GPU6 GPU7 NIC0 NIC1 NIC2 NIC3 NIC4 NIC5 NIC6 NIC7 NIC8 NIC9 NIC10 NIC11 NIC12 NIC13 NIC14 NIC15 NIC16 NIC17 CPU Affinity NUMA Affinity GPU NUMA ID
GPU0 X NV18 NV18 NV18 NV18 NV18 NV18 NV18 PXB PXB NODE NODE NODE NODE NODE NODE NODE SYS SYS SYS SYS SYS SYS SYS SYS SYS 0-55,112-167 0 N/A
GPU1 NV18 X NV18 NV18 NV18 NV18 NV18 NV18 NODE NODE NODE PXB PXB NODE NODE NODE NODE SYS SYS SYS SYS SYS SYS SYS SYS SYS 0-55,112-167 0 N/A
GPU2 NV18 NV18 X NV18 NV18 NV18 NV18 NV18 NODE NODE NODE NODE NODE PXB PXB NODE NODE SYS SYS SYS SYS SYS SYS SYS SYS SYS 0-55,112-167 0 N/A
GPU3 NV18 NV18 NV18 X NV18 NV18 NV18 NV18 NODE NODE NODE NODE NODE NODE NODE PXB PXB SYS SYS SYS SYS SYS SYS SYS SYS SYS 0-55,112-167 0 N/A
GPU4 NV18 NV18 NV18 NV18 X NV18 NV18 NV18 SYS SYS SYS SYS SYS SYS SYS SYS SYS PXB PXB NODE NODE NODE NODE NODE NODE NODE 56-111,168-223 1 N/A
GPU5 NV18 NV18 NV18 NV18 NV18 X NV18 NV18 SYS SYS SYS SYS SYS SYS SYS SYS SYS NODE NODE NODE PXB PXB NODE NODE NODE NODE 56-111,168-223 1 N/A
GPU6 NV18 NV18 NV18 NV18 NV18 NV18 X NV18 SYS SYS SYS SYS SYS SYS SYS SYS SYS NODE NODE NODE NODE NODE PXB PXB NODE NODE 56-111,168-223 1 N/A
GPU7 NV18 NV18 NV18 NV18 NV18 NV18 NV18 X SYS SYS SYS SYS SYS SYS SYS SYS SYS NODE NODE NODE NODE NODE NODE NODE PXB PXB 56-111,168-223 1 N/A
NIC0 PXB NODE NODE NODE SYS SYS SYS SYS X PIX NODE NODE NODE NODE NODE NODE NODE SYS SYS SYS SYS SYS SYS SYS SYS SYS
NIC1 PXB NODE NODE NODE SYS SYS SYS SYS PIX X NODE NODE NODE NODE NODE NODE NODE SYS SYS SYS SYS SYS SYS SYS SYS SYS
NIC2 NODE NODE NODE NODE SYS SYS SYS SYS NODE NODE X NODE NODE NODE NODE NODE NODE SYS SYS SYS SYS SYS SYS SYS SYS SYS
NIC3 NODE PXB NODE NODE SYS SYS SYS SYS NODE NODE NODE X PIX NODE NODE NODE NODE SYS SYS SYS SYS SYS SYS SYS SYS SYS
NIC4 NODE PXB NODE NODE SYS SYS SYS SYS NODE NODE NODE PIX X NODE NODE NODE NODE SYS SYS SYS SYS SYS SYS SYS SYS SYS
NIC5 NODE NODE PXB NODE SYS SYS SYS SYS NODE NODE NODE NODE NODE X PIX NODE NODE SYS SYS SYS SYS SYS SYS SYS SYS SYS
NIC6 NODE NODE PXB NODE SYS SYS SYS SYS NODE NODE NODE NODE NODE PIX X NODE NODE SYS SYS SYS SYS SYS SYS SYS SYS SYS
NIC7 NODE NODE NODE PXB SYS SYS SYS SYS NODE NODE NODE NODE NODE NODE NODE X PIX SYS SYS SYS SYS SYS SYS SYS SYS SYS
NIC8 NODE NODE NODE PXB SYS SYS SYS SYS NODE NODE NODE NODE NODE NODE NODE PIX X SYS SYS SYS SYS SYS SYS SYS SYS SYS
NIC9 SYS SYS SYS SYS PXB NODE NODE NODE SYS SYS SYS SYS SYS SYS SYS SYS SYS X PIX NODE NODE NODE NODE NODE NODE NODE
NIC10 SYS SYS SYS SYS PXB NODE NODE NODE SYS SYS SYS SYS SYS SYS SYS SYS SYS PIX X NODE NODE NODE NODE NODE NODE NODE
NIC11 SYS SYS SYS SYS NODE NODE NODE NODE SYS SYS SYS SYS SYS SYS SYS SYS SYS NODE NODE X NODE NODE NODE NODE NODE NODE
NIC12 SYS SYS SYS SYS NODE PXB NODE NODE SYS SYS SYS SYS SYS SYS SYS SYS SYS NODE NODE NODE X PIX NODE NODE NODE NODE
NIC13 SYS SYS SYS SYS NODE PXB NODE NODE SYS SYS SYS SYS SYS SYS SYS SYS SYS NODE NODE NODE PIX X NODE NODE NODE NODE
NIC14 SYS SYS SYS SYS NODE NODE PXB NODE SYS SYS SYS SYS SYS SYS SYS SYS SYS NODE NODE NODE NODE NODE X PIX NODE NODE
NIC15 SYS SYS SYS SYS NODE NODE PXB NODE SYS SYS SYS SYS SYS SYS SYS SYS SYS NODE NODE NODE NODE NODE PIX X NODE NODE
NIC16 SYS SYS SYS SYS NODE NODE NODE PXB SYS SYS SYS SYS SYS SYS SYS SYS SYS NODE NODE NODE NODE NODE NODE NODE X PIX
NIC17 SYS SYS SYS SYS NODE NODE NODE PXB SYS SYS SYS SYS SYS SYS SYS SYS SYS NODE NODE NODE NODE NODE NODE NODE PIX X
Legend:
X = Self
SYS = Connection traversing PCIe as well as the SMP interconnect between NUMA nodes (e.g., QPI/UPI)
NODE = Connection traversing PCIe as well as the interconnect between PCIe Host Bridges within a NUMA node
PHB = Connection traversing PCIe as well as a PCIe Host Bridge (typically the CPU)
PXB = Connection traversing multiple PCIe bridges (without traversing the PCIe Host Bridge)
PIX = Connection traversing at most a single PCIe bridge
NV# = Connection traversing a bonded set of # NVLinks
NIC Legend:
NIC0: mlx5_0
NIC1: mlx5_1
NIC2: mlx5_2
NIC3: mlx5_3
NIC4: mlx5_4
NIC5: mlx5_5
NIC6: mlx5_6
NIC7: mlx5_7
NIC8: mlx5_8
NIC9: mlx5_9
NIC10: mlx5_10
NIC11: mlx5_11
NIC12: mlx5_12
NIC13: mlx5_13
NIC14: mlx5_14
NIC15: mlx5_15
NIC16: mlx5_16
NIC17: mlx5_17
ulimit soft: 65535
Checklist
Describe the bug
We use meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8 on 8*H100. When sending 5 4096 * 4096 images, the server would have OOM error and crash.
Version: 58dd95f
See gpu_processing.log
sglang/python/sglang/srt/multimodal/processors/base_processor.py
Lines 213 to 217 in 9c138a0
But OOM happened again:
See cpu_image_processing.log
Reproduction
Server launch command:
Request script:
Environment