Deploying Open-Weight LLMs Locally with vLLM, AWQ & FlashAttention-2
A complete blueprint for running high-throughput, low-latency open-source models (Llama 3.3, DeepSeek, Qwen 2.5) on private infrastructure with AWQ 4-bit quantization.
Gourav
Founder & AI Systems Architect
Why Open Weights Win for Enterprise Infrastructure
While proprietary cloud APIs are the fastest path to a prototype, it is usually the buyer, not the vendor, who forces the decision in-house: data sovereignty, customer regimes such as HIPAA, GDPR, or India DPDP, and per-token unit economics the buyer can forecast. We are not certified against any of those regimes and do not claim to be, we engineer to whatever counsel on the buying side requires.
With open weights at the Llama 3.3 70B and Qwen 2.5 72B class, the published evaluation results are close enough to frontier proprietary models that the engineering challenge shifts from model capability to throughput and memory. Read the current model card before you commit: these leaderboards move every quarter, and we will happily go read it with you.
VRAM Budgeting & AWQ 4-Bit Quantization
A standard 70B parameter model in 16-bit floating point precision requires approximately 140GB of GPU VRAM just to load model weights into memory, which is basic arithmetic: 70 billion parameters at two bytes each. That is what forces the expensive multi-GPU A100 or H100 configuration.
Activation-aware Weight Quantization (AWQ) protects a small fraction of salient weights, roughly one percent, that carry disproportionate weight for accuracy, while compressing the rest into 4-bit integers. That framing comes from the AWQ paper (Lin et al., MLSys 2023), not from us. The practical result is a 70B model fitting in the high-thirties of GB, give or take: the exact footprint depends on group size, KV-cache headroom, and the context length you serve, so measure it under your own serving parameters.
| Quantization Format | VRAM Footprint (Weights Only) | Throughput (Batch 1) | MMLU Delta vs FP16 |
|---|---|---|---|
| FP16 (Uncompressed) | ~140 GB | measure | baseline |
| GPTQ 4-bit | ~40 GB | measure | measure |
| AWQ 4-bit (FlashAttention-2) | ~36-38 GB | measure | measure |
| FP8 (Hopper Native) | ~70 GB | measure | measure |
Illustrative structure, not measured results. We have not benchmarked these rows on our own hardware, so the throughput and MMLU columns are left for you to fill. The VRAM column is arithmetic on parameter counts. Any MMLU number you compare against comes from a vendor or community model card, and those vary with prompt template, few-shot count, and harness version, so read the card and then reproduce it on your own eval set.
Production vLLM Server Deployment Config
Below is the launch script we start from, using PagedAttention, FlashAttention-2, and CUDA graph capture. First-token latency is dominated by queue depth and prompt length, so set your own target from a load test under your own arrival pattern:
#!/usr/bin/env bash
python3 -m vllm.entrypoints.openai.api_server \
--model casperhansen/llama-3.3-70b-instruct-awq \
--quantization awq \
--tensor-parallel-size 2 \
--max-model-len 8192 \
--gpu-memory-utilization 0.94 \
--max-num-seqs 256 \
--enable-chunked-prefill \
--dtype float16 \
--port 8000Private On-Premises LLM Clusters
Deploy state-of-the-art open weights inside your sovereign data boundary.
Written by
Gourav
Founder & AI Systems Architect at Nor AI Technologies
Keep reading
- Infrastructure
Operational Redundancy and Fail-Safe Engineering Principles
Dhruw Kumar Singh · 6 min read
- LLM Systems
Architecting Deterministic AI Agent Workflows for Scale
Gourav · 8 min read