[Unit] Description=vLLM (Qwen3.8-Flash-Next-W4A16 on 4x RTX 3090, TP2xPP2+EP, MTP, 262K) After=network-online.target Wants=network-online.target [Service] Type=simple User=root EnvironmentFile=-/etc/default/vllm # start.sh is the single source of truth; the checkpoint goes first (CKPT in /etc/default/vllm) WorkingDirectory=/opt/vllm # The compile cache is $CACHE_ROOT, default /opt/vllm/.vllm-cache (on disk: it survives a # reboot). A cold cache costs ~6 min of kernel compile at the next start, so do not use tmpfs here. # Set CACHE_ROOT in /etc/default/vllm to move it. ExecStart=/opt/vllm/start.sh # MTP + cudagraphs do not always exit on SIGTERM: give --shutdown-timeout 10 room, then take the cgroup KillMode=control-group TimeoutStopSec=20 Restart=on-failure RestartSec=15 LimitMEMLOCK=infinity LimitNOFILE=1048576 # start.sh writes the engine and the PLE offload child to $LOG (/var/log/vllm.log by default); # systemd/vllm.logrotate rotates it. The pre-serve lines stay in the journal: journalctl -u vllm [Install] WantedBy=multi-user.target