From 58de3d4a43a8d8a858450982cbfaee98f26be803 Mon Sep 17 00:00:00 2001 From: Saiyam Pathak Date: Tue, 18 Aug 2026 15:13:12 +0530 Subject: [PATCH 1/8] Add blog post: Running a single LLM across two GPUs with vLLM Answers a reader question about splitting a BF16 model across two A40s: how tensor parallelism partitions each layer, the memory math for whether it fits, and measured TP vs PP numbers on a pair of cards with no NVLink. All figures come from a real run (vLLM 0.27.1, Qwen3-32B BF16) on two RTX PRO 6000 cards held to a 40.47 GiB per-card budget to match a 45 GiB A40 at --gpu-memory-utilization 0.90. Adds three CSS animations following the existing series pattern: - two-gpu-tensor-split-animation: column/row-parallel split, one all-reduce - two-gpu-memory-fit-animation: 61.02 GiB against one card, then two - two-gpu-tp-vs-pp-animation: the TP/PP tradeoff plus measured results Marked draft: true pending review. Signed-off-by: Saiyam Pathak --- components/TwoGpuMemoryFitAnimation.jsx | 353 +++++++++++++++ components/TwoGpuTensorSplitAnimation.jsx | 414 ++++++++++++++++++ components/TwoGpuTpVsPpAnimation.jsx | 373 ++++++++++++++++ ...-a-single-llm-across-two-gpus-with-vllm.md | 363 +++++++++++++++ lib/markdown.js | 9 + .../cover.png | Bin 0 -> 193910 bytes .../cover.svg | 51 +++ scripts/gen-two-gpu-vllm-cover.mjs | 239 ++++++++++ 8 files changed, 1802 insertions(+) create mode 100644 components/TwoGpuMemoryFitAnimation.jsx create mode 100644 components/TwoGpuTensorSplitAnimation.jsx create mode 100644 components/TwoGpuTpVsPpAnimation.jsx create mode 100644 content/blog/running-a-single-llm-across-two-gpus-with-vllm.md create mode 100644 public/img/blog/running-a-single-llm-across-two-gpus-with-vllm/cover.png create mode 100644 public/img/blog/running-a-single-llm-across-two-gpus-with-vllm/cover.svg create mode 100644 scripts/gen-two-gpu-vllm-cover.mjs diff --git a/components/TwoGpuMemoryFitAnimation.jsx b/components/TwoGpuMemoryFitAnimation.jsx new file mode 100644 index 000000000..953a27cef --- /dev/null +++ b/components/TwoGpuMemoryFitAnimation.jsx @@ -0,0 +1,353 @@ +const scenarios = [ + { + key: 'one', + verdict: 'fail', + title: 'One card', + flag: '-24.42 GiB', + note: 'vLLM refuses to start', + parts: [ + { label: 'weights', value: '61.03 GiB', width: '151%', color: '#ef4444' }, + ], + }, + { + key: 'two', + verdict: 'pass', + title: 'Two cards, TP=2', + flag: '67,296 tokens', + note: '2.05x concurrency at 32k context', + parts: [ + { label: 'weights', value: '30.59 GiB', width: '75.6%', color: '#0098cc' }, + { label: 'KV cache', value: '8.22 GiB', width: '20.3%', color: '#2bb534' }, + ], + }, +]; + +export default function TwoGpuMemoryFitAnimation() { + return ( +
+ +
+

Memory fit animation

+

+ Qwen3-32B in BF16 against one A40 budget, then two +

+

+ These are the numbers vLLM actually reported on my run. A 61.02 GiB checkpoint has nowhere + to go on a single 45 GiB card, and the failure is not subtle: the KV cache budget comes out + negative before a single token is stored. +

+ +
+ {scenarios.map((scenario) => ( +
+
+ + {scenario.title} + {scenario.note} + + {scenario.flag} +
+ +
+ per-card budget + ceiling 40.47 GiB +
+ +
+
+ {scenario.parts.map((part, index) => ( +
+ + {part.label} {part.value} + +
+ ))} +
+
+ +
+ {scenario.verdict === 'fail' + ? 'Model loading took 61.03 GiB\nAvailable KV cache memory: -24.42 GiB\nValueError: No available memory for the cache blocks.' + : 'Worker_TP0 Model loading took 30.59 GiB\nWorker_TP1 Model loading took 30.59 GiB\nGPU KV cache size: 67,296 tokens'} +
+
+ ))} + +
+
+ KV per token + 256 KiB + + 2 x 64 layers x 8 kv heads x 128 head_dim x 2 bytes + +
+
+ Per card at TP=2 + 128 KiB + + 4 of the 8 kv heads land on each card, so the cache is divided, not copied + +
+
+ Predicted vs reported + 67,338 / 67,296 + + 8.22 GiB divided by 128 KiB, against what vLLM printed + +
+
+
+
+
+ Captured on two RTX PRO 6000 Blackwell cards held to a 40.47 GiB budget with + --gpu-memory-utilization 0.426, which matches a 45 GiB A40 running at 0.90. Weight splitting + does not depend on the architecture, so these memory figures carry over to A40 directly. +
+
+ ); +} diff --git a/components/TwoGpuTensorSplitAnimation.jsx b/components/TwoGpuTensorSplitAnimation.jsx new file mode 100644 index 000000000..f1d997515 --- /dev/null +++ b/components/TwoGpuTensorSplitAnimation.jsx @@ -0,0 +1,414 @@ +const stages = [ + { key: 'broadcast', label: 'X arrives', detail: 'same full copy on both cards' }, + { key: 'column', label: 'Column-parallel', detail: 'each card owns half the columns of A' }, + { key: 'local', label: 'Activation stays local', detail: 'SiLU is elementwise, no comms' }, + { key: 'row', label: 'Row-parallel', detail: 'each card gets a partial sum' }, + { key: 'reduce', label: 'All-reduce', detail: 'partial sums added, both cards get Z' }, +]; + +export default function TwoGpuTensorSplitAnimation() { + return ( +
+ +
+

Tensor parallelism animation

+

+ One MLP block, split down the middle across two cards +

+

+ The weights are split and the activations are not. Each card owns half the columns of the + first matrix and half the rows of the second, so all the maths stays local until the very + end, where one all-reduce adds the two partial sums together. +

+ +
+
+ input X, hidden_size 5120 + replicated, both cards hold the same full copy +
+ +
+ {[0, 1].map((gpu) => ( +
+
+ GPU {gpu} + {gpu === 0 ? 'heads 0-31' : 'heads 32-63'} +
+ + + ))} +
+ +
+ + +
+ full output Z, identical on both cards + next layer starts from here +
+
+ +
+ {stages.map((stage, index) => ( +
+ Step {index + 1} + {stage.label} + {stage.detail} +
+ ))} +
+
+
+ Shapes are Qwen3-32B: hidden_size 5120, intermediate_size 25600 halved to 12800 per card, 64 + attention heads halved to 32. Attention splits the same way, so a full layer costs two + all-reduces, not one. +
+
+ ); +} diff --git a/components/TwoGpuTpVsPpAnimation.jsx b/components/TwoGpuTpVsPpAnimation.jsx new file mode 100644 index 000000000..6e9386fe9 --- /dev/null +++ b/components/TwoGpuTpVsPpAnimation.jsx @@ -0,0 +1,373 @@ +const results = [ + { metric: 'tok/s at concurrency 1', tp: '36.41', pp: '21.00', win: 'tp' }, + { metric: 'tok/s at concurrency 32', tp: '496.60', pp: '487.56', win: 'tie' }, + { metric: 'median TTFT at 32', tp: '3892 ms', pp: '2468 ms', win: 'pp' }, + { metric: 'KV cache tokens', tp: '67,296', pp: '56,640', win: 'tp' }, +]; + +export default function TwoGpuTpVsPpAnimation() { + return ( +
+ +
+

TP versus PP animation

+

+ Two ways to cut the same model, and what each one costs +

+

+ Both modes solve the fitting problem, so the choice is purely about speed. Tensor + parallelism keeps both cards busy on every token and pays 128 all-reduces for it. Pipeline + parallelism barely communicates at all, but runs like a relay race. +

+ +
+
+

+ Tensor parallelism, TP=2 + every layer is split, both cards work on every token +

+
+
+ GPU 0 + all 64 layers, heads 0-31, 30.59 GiB +
+
+ +
+ GPU 1 + all 64 layers, heads 32-63, 30.59 GiB +
+
+

+ Wins decode. Both cards contribute memory bandwidth to the same token, so + concurrency 1 is 73% faster. Pays for it in prefill, where each all-reduce carries 10 MB + instead of 10 KB. +

+
+ +
+

+ Pipeline parallelism, PP=2 + the stack is cut by layer, one activation handoff +

+
+
+ GPU 0 + layers 0-31, all 8 kv heads, 30.52 GiB +
+
+ +
+ GPU 1 + layers 32-63, all 8 kv heads, 30.52 GiB +
+
+

+ Wins prefill. Almost no communication, so time to first token is 37% better at + concurrency 32. But with one request in flight a card is always idle, and the extra + pipeline buffers cost you 19% of the KV cache. +

+
+
+ +
+
+
Measured
+
TP=2
+
PP=2
+
+ {results.map((row) => ( +
+
{row.metric}
+
+ {row.tp} +
+
+ {row.pp} +
+
+ ))} +
+
+
+ Measured with vllm bench serve, 1024 input and 256 output tokens, on two PCIe-connected cards + with no NVLink. The concurrency 32 throughput gap is 1.9%, which is close enough to noise that + I would call it a tie rather than a win. +
+
+ ); +} diff --git a/content/blog/running-a-single-llm-across-two-gpus-with-vllm.md b/content/blog/running-a-single-llm-across-two-gpus-with-vllm.md new file mode 100644 index 000000000..6209c0218 --- /dev/null +++ b/content/blog/running-a-single-llm-across-two-gpus-with-vllm.md @@ -0,0 +1,363 @@ +--- +title: "Running a single LLM across two GPUs with vLLM" +seoTitle: "Running a single LLM across two GPUs with vLLM" +seoDescription: "How tensor parallelism splits one model's weights across two cards, the memory math that tells you if it fits, and measured TP versus PP numbers on a pair of GPUs with no NVLink." +datePublished: 2026-08-18T10:00:00.000Z +slug: running-a-single-llm-across-two-gpus-with-vllm +author: saiyam-pathak +cover: /img/blog/running-a-single-llm-across-two-gpus-with-vllm/cover.png +tags: ["vllm", "gpu", "nvidia", "tensor-parallelism"] +draft: true +--- + +Someone asked me this in a thread the other day, and it is such a good question that it deserves a full walkthrough: + +> Has anyone hosted a single LLM by splitting weights across 2 GPUs and served it through vLLM or another inference engine? I have a couple of A40 with 45GB usable VRAM. And want to host the BF16 variant as-is, like we have an RTX PRO 6000, you know, like on 2 cards. How can I do it and how does it work fundamentally, like are the weights split or what happens? + +Three questions hiding in there, so let's take them in order. Can you do it? Yes. How do you do it? One flag, mostly. And what actually happens to the weights? That is the interesting part, and it is where most people's mental model is a bit off. + +## What you will get from this post + +- The memory math that tells you whether your model fits on two cards, before you download 60 GB +- What tensor parallelism actually does to a weight matrix, layer by layer +- The exact vLLM commands, with real terminal output from a real run +- Why a pair of cards without an NVLink bridge might be faster with pipeline parallelism, and how to measure that yourself +- The A40-specific catches, because Ampere has one limitation that changes your options + +## The setup I tested on + +I need to be upfront about the hardware, because it matters for how you read the numbers. + +I do not have a pair of A40s. What I do have access to is a box with 8x NVIDIA RTX PRO 6000 Blackwell Server Edition cards, so I borrowed two of them and deliberately handicapped them to behave like A40s for the part that matters most, which is the memory budget. An A40 gives you roughly 45 GiB of usable VRAM, and at the usual `--gpu-memory-utilization 0.90` that leaves vLLM a budget of about 40.5 GiB per card. On a 95.01 GiB Blackwell card, the same 40.5 GiB budget is `--gpu-memory-utilization 0.426`, so that is what I used everywhere below. + +There is one thing I did not have to fake. Let's look at the interconnect: + +```console +$ nvidia-smi topo -m + GPU0 GPU1 GPU2 GPU3 GPU4 GPU5 GPU6 GPU7 CPU Affinity NUMA Affinity +GPU0 X SYS SYS SYS SYS SYS SYS SYS 48-55,176-183 6 +GPU1 SYS X SYS SYS SYS SYS SYS SYS 32-39,160-167 4 +GPU2 SYS SYS X SYS SYS SYS SYS SYS 0-7,128-135 0 +GPU3 SYS SYS SYS X SYS SYS SYS SYS 16-23,144-151 2 +GPU4 SYS SYS SYS SYS X SYS SYS SYS 112-119,240-247 14 +GPU5 SYS SYS SYS SYS SYS X SYS SYS 96-103,224-231 12 +GPU6 SYS SYS SYS SYS SYS SYS X SYS 64-71,192-199 8 +GPU7 SYS SYS SYS SYS SYS SYS SYS X 80-87,208-215 10 + +Legend: + X = Self + SYS = Connection traversing PCIe as well as the SMP interconnect between NUMA nodes (e.g., QPI/UPI) + NV# = Connection traversing a bonded set of # NVLinks +``` + +Every pair says `SYS`, which means there is no NVLink anywhere on this box. Every GPU-to-GPU hop goes across PCIe and then across the CPU's own interconnect between NUMA nodes. If your two A40s do not have an NVLink bridge physically installed between them, and most people's do not, then you are in exactly this situation. That turns out to be the most important fact in this whole post, and I'll come back to it. + +The software, pinned: + +```console +vllm 0.27.1 +torch 2.13.0+cu130 cuda 13.0 +driver 610.43.02 +GPU 0: NVIDIA RTX PRO 6000 Blackwell Server Edition 95.01 GiB sm_120 +GPU 1: NVIDIA RTX PRO 6000 Blackwell Server Edition 95.01 GiB sm_120 +p2p 0<->1 True +``` + +For the model I picked **Qwen3-32B** in BF16, because it is the honest version of this question. At 32.8B parameters in bfloat16 it genuinely does not fit on one 45 GiB card, but it does fit on two, so the second card is doing real work rather than being a nice-to-have. + +## Why one card is not enough, in numbers + +Before touching any flags, let's do the arithmetic, because you can answer "will this fit" on paper in about a minute. + +A BF16 weight is 2 bytes. So the weights alone are `params x 2 bytes`. For Qwen3-32B that is about 61 GiB, and vLLM tells you the same thing when it reads the checkpoint: + +```console +INFO [weight_utils.py:867] Filesystem type for checkpoints: EXT4. Checkpoint size: 61.02 GiB. Available RAM: 1186.67 GiB. +``` + +61.02 GiB of weights against a 40.5 GiB budget on a single card. That is not close, and it is worth actually watching it fail, because the error message vLLM gives you here is one you will meet again: + +```console +$ docker run --gpus '"device=1"' ... vllm/vllm-openai:latest Qwen/Qwen3-32B \ + --tensor-parallel-size 1 --gpu-memory-utilization 0.426 --max-model-len 32768 + +INFO [model_runner.py:329] Model loading took 61.03 GiB and 16.146783 seconds +INFO [gpu_worker.py:563] Available KV cache memory: -24.42 GiB +ValueError: No available memory for the cache blocks. Try increasing `gpu_memory_utilization` +when initializing the engine. +``` + +**Available KV cache memory: -24.42 GiB.** I love this line. vLLM loaded the weights, then subtracted them and its activation overhead from the budget, and found it was 24 GiB in the hole before storing a single token of context. The suggestion to increase `gpu_memory_utilization` is a red herring here, since there is no value of it that makes 61 GiB fit in 45. + +{{two-gpu-memory-fit-animation}} + +So that is the wall. Now let's get over it. + +## What actually happens to the weights + +### First, the thing NVLink does not do + +Your question mentioned wanting the pair to behave "like we have an RTX PRO 6000", so let me clear up the most common misconception before anything else, because NVIDIA's own datasheet invites it. That datasheet advertises "48 GB GDDR6 memory with NVLink" and says it is "scalable up to 96 GB with NVLink", which certainly reads like two bridged cards turn into one 96 GB card. They do not. The footnote on that same page is where the real story is: + +> Connecting two NVIDIA A40 cards with NVLink to scale performance and memory capacity to 96 GB is only possible if your application supports NVLink technology. Please contact your application provider to confirm their support for NVLink. + +"Only possible if your application supports it" is carrying a lot of weight in that sentence. There is no mode, bridge or no bridge, where CUDA presents your two 48 GB cards to vLLM as a single 96 GB device. Each GPU keeps its own separate memory, and some piece of software has to deliberately cut the model up and coordinate the halves. NVLink never creates the pool, it only makes the conversation between the halves faster. Configuring that software is what the rest of this post is about. + +### Now the split itself + +The short answer to your actual question is **yes, the weights are genuinely split, and it happens inside each layer, not between layers.** + +The technique is called **tensor parallelism**, and it comes from the Megatron-LM paper by Shoeybi and colleagues at NVIDIA. The idea is that a transformer is mostly a stack of big matrix multiplications, and a big matrix multiplication can be cut into pieces that live on different GPUs. + +Take the MLP block in a layer. It is two matrix multiplies with a nonlinearity in between: `Y = GeLU(X x A)` then `Z = Y x B`. You could split the first matrix `A` by rows, but then you would have to glue the pieces back together before applying GeLU, because GeLU is nonlinear and `GeLU(a + b)` is not `GeLU(a) + GeLU(b)`. So Megatron splits `A` **column-wise** instead, and as the paper puts it, "the partitioning allows the GeLU nonlinearity to be independently applied to the output of each partitioned GEMM". Each GPU produces its own complete columns of `Y`, applies GeLU locally, and nobody has to talk to anybody. + +Then the second matrix `B` is split **row-wise**, which lines up perfectly with the column split of the first one. Each GPU multiplies its slice of `Y` by its slice of `B` and gets a partial sum of the final answer. Now, and only now, the GPUs have to add their partial sums together. That is one **all-reduce**. + +Drawn out, one MLP block across two cards looks like this: + +{{two-gpu-tensor-split-animation}} + +Notice what is split and what is not. The **weights** are split, each card holding half of `A` and half of `B` and never seeing the other half. The **activations** flowing through are replicated, so both cards start from the same full copy of `X` and both end up with the same full copy of `Z` after the all-reduce. That is the trade at the heart of tensor parallelism: you halve the weight memory, and you pay for it by keeping the activations in sync. + +A quick note if you go and read the Megatron paper, because the shapes have moved on since 2019. The paper describes a two-matrix MLP with a GeLU in the middle, which is what GPT-2 era models used. Qwen3 and most current models use SwiGLU instead, which has three matrices: `gate_proj`, `up_proj` and `down_proj`, and `silu` rather than GeLU (you can see `"hidden_act": "silu"` in the config below). The partitioning logic carries over unchanged though. `gate_proj` and `up_proj` are both column-parallel, they get multiplied together elementwise which stays local, and `down_proj` is row-parallel and produces the partial sums. Three matrices instead of two, still exactly one all-reduce. + +Attention works the same way, and the split is even more intuitive. The Q, K and V projections are cut column-wise "such that the matrix multiply corresponding to each attention head is done locally on one GPU". Qwen3-32B has 64 attention heads, so with two GPUs each card simply owns 32 whole heads and computes attention for them start to finish with no communication at all. The output projection is then row-wise, which again produces partial sums, which again need one all-reduce. + +Two matrix-multiply blocks, one all-reduce each. The paper states it plainly: this "enables us to perform all GEMMs in a simple transformer layer using only two all-reduces in the forward path and two in the backward path". Inference is forward-only, so for us it is **two all-reduces per layer**. + +Qwen3-32B has 64 layers. So generating a single token means **128 all-reduces**, in sequence, one after another, because layer 5 cannot start until layer 4 has finished exchanging. Hold that thought. + +### The KV cache splits too, and that is a bonus + +This part people often miss. Because each GPU owns a subset of the attention heads, it only needs to cache keys and values for *its own* heads. The KV cache is split right along with the weights. + +Qwen3-32B uses grouped-query attention with 8 key/value heads, so the cache per token for the whole model is: + +``` +2 (K and V) x 64 layers x 8 kv_heads x 128 head_dim x 2 bytes = 262,144 bytes = 256 KiB per token +``` + +With two GPUs, each card holds 4 of those 8 KV heads, so each card stores 128 KiB per token instead of the full 256 KiB. The cache is not duplicated across cards, it is divided, so the memory you free up by splitting the weights turns into context capacity rather than being eaten by a second copy of the cache. That is why the second card buys you two things at once, and it is the number I will check against reality further down. + +### The divisibility rule you need to check first + +Because heads are handed out whole, **your tensor parallel size has to divide your head counts**. Before you commit to a model, open its `config.json` and check. For Qwen3-32B: + +```json +{ + "num_hidden_layers": 64, + "hidden_size": 5120, + "num_attention_heads": 64, + "num_key_value_heads": 8, + "head_dim": 128, + "intermediate_size": 25600, + "torch_dtype": "bfloat16" +} +``` + +64 attention heads divided by 2 is 32, 8 KV heads divided by 2 is 4, and `intermediate_size` 25600 divided by 2 is 12800. All clean, so TP=2 will work. This is why some models refuse to run at TP=8 or TP=3 while being perfectly happy at TP=2, and it is a config-file question, not a mystery. + +## Doing it with vLLM + +After all that theory, the actual change is one flag. Let's run it: + +```bash +docker run -d --name vllm-tp2 \ + --gpus '"device=1,4"' --ipc=host -p 8101:8000 \ + -v /root/.cache/huggingface:/root/.cache/huggingface \ + -e HF_HUB_OFFLINE=1 -e HF_HOME=/root/.cache/huggingface \ + vllm/vllm-openai:latest Qwen/Qwen3-32B \ + --tensor-parallel-size 2 \ + --gpu-memory-utilization 0.426 \ + --max-model-len 32768 \ + --port 8000 +``` + +`--tensor-parallel-size 2` is the whole trick. On a real pair of A40s you would use `--gpu-memory-utilization 0.90` instead of my emulated `0.426`, and everything else stays the same. + +Two container details that will bite you if you skip them. `--ipc=host` matters because the tensor parallel workers are separate processes that talk over shared memory, and Docker's default 64 MB `/dev/shm` is not enough. And `--gpus '"device=1,4"'` with that exact nested quoting is how you hand Docker a specific pair of cards; inside the container they are renumbered 0 and 1. + +Now the proof that the split is real. Here is what vLLM logs on startup: + +```console +(Worker_TP0 pid=611) INFO [model_runner.py:329] Model loading took 30.59 GiB and 20.690370 seconds +(Worker_TP1 pid=612) INFO [model_runner.py:329] Model loading took 30.59 GiB and 20.456472 seconds +(Worker_TP0 pid=611) INFO [gpu_worker.py:563] Available KV cache memory: 8.22 GiB +(EngineCore pid=411) INFO [kv_cache_utils.py:2235] GPU KV cache size: 67,296 tokens +(EngineCore pid=411) INFO [kv_cache_utils.py:2236] Maximum concurrency for 32,768 tokens per request: 2.05x +``` + +**30.59 GiB on each worker**, and 30.59 doubled is 61.18, which is our 61.02 GiB checkpoint plus a rounding hair. There are two workers, `Worker_TP0` and `Worker_TP1`, one per GPU, each holding exactly half the model. The weights are not replicated. They are cut in half. + +And from outside the container: + +```console +$ nvidia-smi --query-gpu=index,memory.used --format=csv,noheader +1, 45171 MiB +4, 45171 MiB +``` + +Identical to the megabyte on both cards, which is what an even split looks like. + +Let's also check that the KV math I did earlier actually predicts reality. Each card reported 8.22 GiB free for cache, and I said each card stores 128 KiB per token: + +``` +8.22 GiB / 128 KiB = 67,338 tokens +``` + +vLLM reported 67,296. That is a match to within the rounding of "8.22", and it means you can predict your own context capacity on paper before you ever start the server. With `--max-model-len 32768`, 67,296 tokens of cache is 2.05 full-length requests in flight, which is exactly the `2.05x` vLLM printed. + +## What those all-reduces actually cost you + +So we are done, right? Two cards, model fits, `-tp 2`, ship it. + +Not quite. Remember those 128 sequential all-reduces per token. Let's think about how big each one actually is. An all-reduce after the attention or MLP block has to exchange a tensor of shape `[tokens_in_batch, hidden_size]`. At `hidden_size` 5120 in BF16, with a single request decoding one token at a time, that is: + +``` +1 token x 5120 x 2 bytes = 10,240 bytes = 10 KB +``` + +Ten kilobytes. That is nothing. The A40 datasheet lists its interconnect as "NVIDIA NVLink 112.5 GB/s (bidirectional), PCIe Gen4: 64GB/s", so NVLink is a bit under twice the bandwidth of the PCIe path. Neither number matters here, though, because you are not moving enough data to care about bandwidth at all. What you are paying is **latency**, 128 times per token, and every one of those hops on a no-NVLink box goes out over PCIe and across the CPU's NUMA interconnect. + +This is why vLLM's own documentation gives advice that surprises people. Straight from their parallelism guide: + +> if the GPUs on the node do not have NVLINK interconnect (e.g. L40S), leverage pipeline parallelism instead of tensor parallelism for higher throughput and lower communication overhead. + +**Pipeline parallelism** splits the model a completely different way: by layers, not inside them. With PP=2 and 64 layers, GPU 0 gets layers 0 to 31 and GPU 1 gets layers 32 to 63. Your memory problem is solved just as well, since each card still holds half the weights. But the communication is utterly different. Instead of 128 all-reduces per token, GPU 0 finishes its 32 layers and hands one activation tensor to GPU 1, once. One point-to-point send instead of 128 collectives. + +The cost is that PP is a relay race. With a single request in flight, GPU 1 sits idle while GPU 0 works, then GPU 0 sits idle while GPU 1 works, so you are using half your silicon at any moment. vLLM notes this too, saying that increasing pipeline parallel size "may cause latency penalties". PP pays off when you have enough concurrent requests to keep both stages busy at once, which is what continuous batching gives you. + +{{two-gpu-tp-vs-pp-animation}} + +So the honest answer is that TP and PP trade against each other, the crossover depends on your interconnect and your concurrency, and you should measure it on your own box. Which is what I did. + +## TP=2 vs PP=2, measured + +Switching to pipeline parallelism is the same kind of one-flag change: + +```bash +docker run -d --name vllm-pp2 \ + --gpus '"device=1,4"' --ipc=host -p 8102:8000 \ + -v /root/.cache/huggingface:/root/.cache/huggingface \ + -e HF_HUB_OFFLINE=1 -e HF_HOME=/root/.cache/huggingface \ + vllm/vllm-openai:latest Qwen/Qwen3-32B \ + --pipeline-parallel-size 2 \ + --gpu-memory-utilization 0.426 \ + --max-model-len 32768 \ + --port 8000 +``` + +And it splits the weights just as effectively, which you can see in the workers being named `PP` instead of `TP` now: + +```console +(Worker_PP0 pid=611) INFO [model_runner.py:329] Model loading took 30.52 GiB and 9.017490 seconds +(Worker_PP1 pid=612) INFO [model_runner.py:329] Model loading took 30.52 GiB and 9.547118 seconds +(Worker_PP0 pid=611) INFO [gpu_worker.py:563] Available KV cache memory: 6.92 GiB +(EngineCore pid=411) INFO [kv_cache_utils.py:2235] GPU KV cache size: 56,640 tokens +(EngineCore pid=411) INFO [kv_cache_utils.py:2236] Maximum concurrency for 32,768 tokens per request: 1.73x +``` + +### The memory difference shows up first + +Look at the KV cache: **56,640 tokens with PP against 67,296 with TP**, on identical hardware and an identical memory budget. Pipeline parallelism gave me 18.8% less usable context. + +The per-token cost per card is actually the same in both modes, which is a nice coincidence worth understanding. Under TP each card holds all 64 layers but only 4 of the 8 KV heads. Under PP each card holds all 8 KV heads but only 32 layers. `64 x 4` and `32 x 8` are the same number, so both come out at 128 KiB per token per card. + +The difference is pure overhead. Subtracting weights and cache from the 40.47 GiB budget, TP left 1.66 GiB of overhead per card and PP left 3.03 GiB, because the pipeline needs extra buffers for activations in flight between the stages. That overhead comes straight out of your context capacity. + +There is a second, smaller difference worth knowing about. Tensor parallelism divided the memory perfectly evenly, while pipeline parallelism did not: + +```console +# TP=2 +1, 45171 MiB +4, 45171 MiB + +# PP=2 +1, 40701 MiB +4, 43667 MiB +``` + +Identical to the megabyte under TP, and about 3 GB apart under PP. That is because a layer split cannot be perfectly even when the ends of the model are not symmetric: the first stage carries the token embedding, the last stage carries the final norm and the language modelling head. It rarely matters at PP=2 on matched cards, but it is exactly the kind of thing that bites you if you ever try to split across two cards of *different* sizes, since your headroom is set by whichever card ends up fuller. + +### Now the throughput + +Same benchmark for both, `vllm bench serve` with a random dataset at 1024 input and 256 output tokens, `--ignore-eos` so every request generates exactly 256 tokens, run at concurrency 1 and again at concurrency 32: + +```bash +vllm bench serve --model Qwen/Qwen3-32B --base-url http://localhost:8000 \ + --dataset-name random --random-input-len 1024 --random-output-len 256 \ + --max-concurrency 1 --num-prompts 16 --seed 42 --ignore-eos +``` + +Before the table, one caveat that I want to put right next to the numbers rather than bury at the end. The memory results above transfer to your A40s directly, because I matched the memory budget on purpose and weight splitting does not care what architecture it runs on. The **throughput** results do not transfer as cleanly, and not simply because Blackwell is faster in absolute terms. The ratio between compute time and communication time is what decides where TP stops winning, and two things move that ratio in opposite directions on your hardware: an A40's slower compute makes each layer's math take longer, which hides the all-reduce latency and helps TP, while PCIe Gen4 instead of Gen5 makes each all-reduce cost more, which hurts TP. I cannot tell you which effect dominates on your box. So read the shape of the result below, not the absolute tok/s, and run the same two commands yourself. + +| Metric | TP=2 | PP=2 | Winner | +|---|---|---|---| +| **Concurrency 1** | | | | +| Output token throughput | 36.41 tok/s | 21.00 tok/s | TP by 73% | +| Median TPOT (per-token latency) | 26.38 ms | 46.96 ms | TP by 44% | +| Median TTFT (time to first token) | 296.37 ms | 208.57 ms | PP by 30% | +| **Concurrency 32** | | | | +| Output token throughput | 496.60 tok/s | 487.56 tok/s | TP by 1.9% | +| Median TPOT | 47.22 ms | 56.40 ms | TP by 16% | +| Median TTFT | 3892.42 ms | 2468.40 ms | PP by 37% | +| Benchmark duration | 65.99 s | 67.21 s | TP by 1.8% | +| **Capacity** | | | | +| KV cache | 67,296 tokens | 56,640 tokens | TP by 19% | + +Let's read what actually happened here, because it is not the clean story the documentation led me to expect. + +**At concurrency 1, tensor parallelism wins convincingly**, 36.41 tok/s against 21.00, and that is exactly the relay-race effect. With one request in flight, PP has one card working and one card waiting at all times, so you get roughly one card's worth of decode speed. TP has both cards grinding on every single token, and since decode speed is mostly about memory bandwidth, using two cards' worth of bandwidth on one request is a real and large win. This is the thing PP fundamentally cannot give you. + +**At concurrency 32, the two are effectively tied.** 496.60 against 487.56 tok/s is a 1.9% gap, which is close enough to run-to-run noise that I would not make a decision on it. This is where I have to be straight with you: vLLM's docs say that without NVLink you should "leverage pipeline parallelism instead of tensor parallelism for higher throughput", and on this box **that did not reproduce**. PP never got ahead on throughput, it just caught up. I would guess that is because these cards sit on PCIe Gen5 rather than Gen4, so the all-reduces are cheaper than the guidance assumes, and because at concurrency 32 the all-reduce payload is 32 tokens wide rather than 1, which uses the link far more efficiently. On your Gen4 A40s the gap will be less favourable to TP than what I measured. Whether it crosses over, I genuinely do not know, which is the whole reason I am telling you to measure rather than handing you a verdict. + +**The one place PP clearly wins is time to first token**, by 30% at concurrency 1 and 37% at concurrency 32. That one took me a moment to see, and it makes sense once you think about payload sizes. Prefill processes your whole 1024-token prompt at once, so each of TP's 128 all-reduces is moving `1024 x 5120 x 2 bytes`, about 10 MB, not the 10 KB a single decode step moves. Suddenly you *are* bandwidth-bound, and 128 ten-megabyte collectives over PCIe is a real cost. PP moves one activation tensor between stages and skips all of it. + +So the shape of the answer, on a box with no NVLink: + +- Interactive, low concurrency, one user at a time: **use TP**. It is not close. +- High concurrency batch throughput: **either**, they tie, so pick TP for the extra 19% of KV cache. +- Long prompts where users are staring at a spinner waiting for the first token: **PP is worth testing**, it was meaningfully faster at prefill in both runs. + +For your A40s I would still start with `--tensor-parallel-size 2`, because it won or tied on every throughput measure here and it gives you more context capacity. Then run these exact two benchmarks with `--pipeline-parallel-size 2` and see whether your slower interconnect changes the verdict. + +## The A40-specific things to know + +A few points that apply to your cards specifically rather than to multi-GPU serving in general. + +**An NVLink bridge is available, and it is worth hunting for.** The A40 does support NVLink, at 112.5 GB/s bidirectional between a pair, via a physical bridge connector you install between two cards. If you have two A40s in one chassis and you can get the bridge, do it before you spend a week tuning flags. It turns the `SYS` line in your topology into `NV#`, and since tensor parallelism already won on my bridge-less box, cheaper all-reduces can only widen that lead and take the decision off your plate entirely. Check what you have today with `nvidia-smi topo -m`, exactly as I did above. + +**FP8 will not save you the way it saves a newer card.** This is the Ampere limitation that changes your options. vLLM's docs are explicit: "FP8 computation is supported on NVIDIA GPUs with compute capability >= 8.9 (Ada Lovelace, Hopper)." The A40 is compute capability 8.6, so it misses that by one minor version. You are not entirely locked out, because "Turing/Ampere GPUs are supported for W8A16 (weight-only FP8) utilizing Marlin kernels", which stores weights at 8 bits and computes in 16. That is a genuinely useful trick for memory: it would take Qwen3-32B's weights from 61 GiB to roughly 31 GiB and let it run on a **single** A40. But you do not get the compute speedup that an Ada or Blackwell card gets from FP8, and you did say you want BF16 as-is, so I mention it only as the escape hatch it is. + +**Both cards read the whole checkpoint.** A small operational note from vLLM's docs that surprises people watching disk I/O: with tensor parallelism "each process will read the whole model and split it into chunks", so startup reads scale with your TP size rather than being divided by it. + +## So should you just buy one RTX PRO 6000 instead? + +Your question framed it as wanting your two A40s to behave "like we have an RTX PRO 6000", so let's compare properly, because on capacity they look similar and on behaviour they are not. + +Two A40s give you about 90 GiB of aggregate VRAM. A single RTX PRO 6000 Blackwell gives 96 GiB on one card. Similar pool, and for pure "does the model fit" purposes they are close to equivalent. + +The differences that actually decide it: + +- **A single card has no interconnect tax at all.** No all-reduces, no PCIe hops, no NVLink bridge to source, no TP-versus-PP tuning. Everything in this post stops being your problem. +- **Blackwell has FP8 and FP4, Ampere has neither.** That is the bigger gap, honestly, and it decides what fits rather than only how fast it runs. A model you can only serve in BF16 on A40s might serve in FP8 on one Blackwell card, in half the memory, at full speed. +- **Two cards give you more aggregate memory bandwidth.** Two A40s is 2 x 696 GB/s of it, and decode speed is largely a memory-bandwidth story. With tensor parallelism you genuinely do get to use both cards' bandwidth on one request, which is a real advantage of TP that PP does not give you. + +My take: if you already own the two A40s, use them, because tensor parallelism works and the setup above is maybe twenty minutes of work. Find out whether you can get the NVLink bridge. If you are spending new money and you are choosing between two more A40s and one Blackwell card, buy the single newer card, mostly for FP8 rather than for avoiding the multi-GPU complexity. + +## Wrapping up + +The mental model to walk away with is that tensor parallelism cuts every big matrix in every layer down the middle, hands each GPU whole attention heads, and pays for it with two all-reduces per layer. That is why it fixes your memory problem completely and your throughput problem only conditionally, because those all-reduces are cheap over NVLink and expensive over PCIe. Pipeline parallelism cuts the stack by layers instead, communicates almost nothing, and needs concurrency to keep both cards busy. + +For your two A40s, start with `--tensor-parallel-size 2`, run the same two benchmarks I ran above at your real concurrency, then try `--pipeline-parallel-size 2` and keep whichever wins. Both of them solve the fitting problem, so you are only choosing on speed, and it is a ten-minute experiment on your own hardware which beats anyone's opinion including mine. + +Give it a try and let me know how it goes, especially if you get an NVLink bridge on those A40s, because I would love to see the before-and-after numbers on real Ampere silicon. + +## Credits and references + +- The tensor parallel scheme comes from **Megatron-LM: Training Multi-Billion Parameter Language Models Using Model Parallelism** by Mohammad Shoeybi, Mostofa Patwary, Raul Puri, Patrick LeGresley, Jared Casper and Bryan Catanzaro: [arxiv.org/abs/1909.08053](https://arxiv.org/abs/1909.08053) +- vLLM parallelism and scaling guide: [docs.vllm.ai/en/latest/serving/parallelism_scaling.html](https://docs.vllm.ai/en/latest/serving/parallelism_scaling.html) +- vLLM conserving memory and optimization docs: [docs.vllm.ai/en/latest/configuration/conserving_memory.html](https://docs.vllm.ai/en/latest/configuration/conserving_memory.html) and [optimization.html](https://docs.vllm.ai/en/latest/configuration/optimization.html) +- vLLM FP8 quantization support matrix: [docs.vllm.ai/en/latest/features/quantization/llm_compressor/fp8/](https://docs.vllm.ai/en/latest/features/quantization/llm_compressor/fp8/) +- NVIDIA A40 datasheet, for the 48 GB GDDR6, 696 GB/s and 112.5 GB/s NVLink figures: [nvidia.com A40 datasheet](https://images.nvidia.com/content/Solutions/data-center/a40/nvidia-a40-datasheet.pdf) +- Qwen3-32B model card and config: [huggingface.co/Qwen/Qwen3-32B](https://huggingface.co/Qwen/Qwen3-32B) diff --git a/lib/markdown.js b/lib/markdown.js index 56f0d4988..23686f632 100644 --- a/lib/markdown.js +++ b/lib/markdown.js @@ -23,6 +23,9 @@ import HAMiBlastRadiusAnimation from '@/components/HAMiBlastRadiusAnimation'; import HAMiRequestFlowAnimation from '@/components/HAMiRequestFlowAnimation'; import HAMiSlotMathAnimation from '@/components/HAMiSlotMathAnimation'; import DynamicMigLifecycleAnimation from '@/components/DynamicMigLifecycleAnimation'; +import TwoGpuTensorSplitAnimation from '@/components/TwoGpuTensorSplitAnimation'; +import TwoGpuMemoryFitAnimation from '@/components/TwoGpuMemoryFitAnimation'; +import TwoGpuTpVsPpAnimation from '@/components/TwoGpuTpVsPpAnimation'; import CodeBlock from '@/components/CodeBlock'; const BLOG_SHORTCODES = { @@ -41,6 +44,9 @@ const BLOG_SHORTCODES = { '{{hami-request-flow-animation}}': 'hami-request-flow-animation', '{{hami-slot-math-animation}}': 'hami-slot-math-animation', '{{dynamic-mig-lifecycle-animation}}': 'dynamic-mig-lifecycle-animation', + '{{two-gpu-tensor-split-animation}}': 'two-gpu-tensor-split-animation', + '{{two-gpu-memory-fit-animation}}': 'two-gpu-memory-fit-animation', + '{{two-gpu-tp-vs-pp-animation}}': 'two-gpu-tp-vs-pp-animation', }; function remarkBlogShortcodes() { @@ -113,6 +119,9 @@ const processor = unified() 'hami-request-flow-animation': HAMiRequestFlowAnimation, 'hami-slot-math-animation': HAMiSlotMathAnimation, 'dynamic-mig-lifecycle-animation': DynamicMigLifecycleAnimation, + 'two-gpu-tensor-split-animation': TwoGpuTensorSplitAnimation, + 'two-gpu-memory-fit-animation': TwoGpuMemoryFitAnimation, + 'two-gpu-tp-vs-pp-animation': TwoGpuTpVsPpAnimation, pre: CodeBlock, }, }); diff --git a/public/img/blog/running-a-single-llm-across-two-gpus-with-vllm/cover.png b/public/img/blog/running-a-single-llm-across-two-gpus-with-vllm/cover.png new file mode 100644 index 0000000000000000000000000000000000000000..ea6a2368e4ab786ef8510750e15ec371c6c229ee GIT binary patch literal 193910 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�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 HprdRYBQ%PU1FFgP0+hOBdit@-wkAm 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 + + +One LLM, two GPUs +tensor parallelism splits every layer, not the stack + +ONE 45 GiB CARD + + + +budget 40.47 GiB + + + +weights 61.03 GiB +does not fit +Available KV cache memory: +-24.42 GiB + +vs +TWO CARDS, --tensor-parallel-size 2 + + + +GPU 0 +weights 30.59 GiB +KV cache 8.22 GiB +heads 0-31 + + + +GPU 1 +weights 30.59 GiB +KV cache 8.22 GiB +heads 32-63 + + + + + + +all- +reduce +GPU KV cache size: +67,296 tokens +2.05x concurrency + +QWEN3-32B BF16 - 61.02 GiB CHECKPOINT - vLLM 0.27.1 +2 x 128 all-reduces per token, no NVLink, measured not estimated +blog.kubesimplify.com + \ No newline at end of file diff --git a/scripts/gen-two-gpu-vllm-cover.mjs b/scripts/gen-two-gpu-vllm-cover.mjs new file mode 100644 index 000000000..5b95a70e2 --- /dev/null +++ b/scripts/gen-two-gpu-vllm-cover.mjs @@ -0,0 +1,239 @@ +// Excalidraw-style cover for the two-GPU vLLM article. +// Sketch helpers shared with scripts/gen-hami-diagrams.mjs. +import { mkdirSync, writeFileSync } from 'node:fs'; +import { join } from 'node:path'; + +let seed = 42; +const random = () => { + seed = (seed * 16807) % 2147483647; + return seed / 2147483647; +}; +const jitter = (amount) => (random() - 0.5) * amount * 2; + +const COLORS = { + ink: '#172033', + muted: '#5c677d', + green: { stroke: '#5d8f00', fill: '#d8f5a2' }, + blue: { stroke: '#1971c2', fill: '#a5d8ff' }, + violet: { stroke: '#862e9c', fill: '#eebefa' }, + orange: { stroke: '#d9480f', fill: '#ffd8a8' }, + red: { stroke: '#c92a2a', fill: '#ffc9c9' }, + teal: { stroke: '#087f5b', fill: '#b2f2bb' }, + gray: { stroke: '#495057', fill: '#e9ecef' }, +}; + +const FONT = 'Chalkboard SE, Comic Sans MS, sans-serif'; + +function roughLine(x1, y1, x2, y2, amount = 1.8) { + const middleX = (x1 + x2) / 2 + jitter(amount * 1.5); + const middleY = (y1 + y2) / 2 + jitter(amount * 1.5); + return `M ${(x1 + jitter(amount)).toFixed(1)} ${(y1 + jitter(amount)).toFixed(1)} Q ${middleX.toFixed(1)} ${middleY.toFixed(1)} ${(x2 + jitter(amount)).toFixed(1)} ${(y2 + jitter(amount)).toFixed(1)}`; +} + +class Sketch { + constructor(width, height, background = '#ffffff') { + this.width = width; + this.height = height; + this.background = background; + this.parts = []; + this.defs = []; + this.clipId = 0; + } + + add(value) { + this.parts.push(value); + } + + rect(x, y, width, height, options = {}) { + const { + stroke = COLORS.ink, + fill, + strokeWidth = 2.4, + dashed = false, + hachure = true, + radius = 7, + } = options; + + if (fill) { + if (hachure) { + // Hatch lines are clipped in math rather than with an SVG clipPath so + // the file renders identically in renderers without clipPath support. + const hatch = []; + for (let offset = -height; offset < width; offset += 11) { + const tMin = Math.max(0, -offset / height); + const tMax = Math.min(1, (width - offset) / height); + if (tMax - tMin < 0.05) continue; + const x1 = x + offset + height * tMin; + const y1 = y + height - height * tMin; + const x2 = x + offset + height * tMax; + const y2 = y + height - height * tMax; + hatch.push(roughLine(x1, y1, x2, y2, 1)); + } + this.add(``); + } else { + this.add(``); + } + } + + const points = [[x, y], [x + width, y], [x + width, y + height], [x, y + height]]; + for (let pass = 0; pass < 2; pass += 1) { + const path = points.map((point, index) => { + const next = points[(index + 1) % points.length]; + return roughLine(point[0], point[1], next[0], next[1], pass === 0 ? 2 : 1.2); + }).join(' '); + this.add(``); + } + } + + line(x1, y1, x2, y2, options = {}) { + const { stroke = COLORS.ink, strokeWidth = 2.4, dashed = false } = options; + this.add(``); + } + + arrow(x1, y1, x2, y2, options = {}) { + const { stroke = COLORS.ink, strokeWidth = 2.6, dashed = false } = options; + this.line(x1, y1, x2, y2, { stroke, strokeWidth, dashed }); + const angle = Math.atan2(y2 - y1, x2 - x1); + const length = 14; + for (const offset of [Math.PI * 0.82, -Math.PI * 0.82]) { + this.line( + x2, + y2, + x2 + length * Math.cos(angle + offset), + y2 + length * Math.sin(angle + offset), + { stroke, strokeWidth } + ); + } + } + + text(x, y, value, options = {}) { + const { + size = 22, + color = COLORS.ink, + anchor = 'middle', + weight = 500, + family = FONT, + } = options; + const safe = String(value) + .replace(/&/g, '&') + .replace(//g, '>'); + this.add(`${safe}`); + } + + lines(x, y, values, options = {}) { + const lineHeight = (options.size || 22) * (options.lineHeight || 1.28); + values.forEach((value, index) => this.text(x, y + index * lineHeight, value, options)); + } + + save(path) { + const svg = ` +${this.defs.join('')} + +${this.parts.join('\n')} +`; + writeFileSync(path, svg); + } +} + +const output = process.argv[2] || '.'; +mkdirSync(output, { recursive: true }); + + +const W = 1200; +const H = 630; +const sketch = new Sketch(W, H, '#fdfdfb'); + +// ── heading ────────────────────────────────────────────── +sketch.text(64, 84, 'One LLM, two GPUs', { size: 52, weight: 800, anchor: 'start' }); +sketch.text(64, 122, 'tensor parallelism splits every layer, not the stack', { + size: 23, + color: COLORS.muted, + anchor: 'start', +}); +sketch.line(64, 142, 700, 142, { stroke: COLORS.muted, strokeWidth: 1.6, dashed: true }); + +// ── left: one card fails ───────────────────────────────── +sketch.text(64, 190, 'ONE 45 GiB CARD', { size: 19, weight: 800, anchor: 'start', color: COLORS.red.stroke }); + +const boxY = 210; +sketch.rect(64, boxY, 300, 150, { stroke: COLORS.gray.stroke, fill: '#ffffff', hachure: false, dashed: true }); +sketch.text(214, boxY + 34, 'budget 40.47 GiB', { size: 17, color: COLORS.muted }); + +// the weights bar overflowing the box +sketch.rect(80, boxY + 52, 330, 62, { stroke: COLORS.red.stroke, fill: COLORS.red.fill }); +sketch.text(200, boxY + 80, 'weights 61.03 GiB', { size: 20, weight: 800, color: COLORS.red.stroke }); +sketch.text(200, boxY + 103, 'does not fit', { size: 16, color: COLORS.muted }); + +sketch.text(64, boxY + 182, 'Available KV cache memory:', { size: 17, anchor: 'start', color: COLORS.muted }); +sketch.text(64, boxY + 208, '-24.42 GiB', { size: 30, weight: 800, anchor: 'start', color: COLORS.red.stroke }); + +// ── middle divider ─────────────────────────────────────── +sketch.line(470, 190, 470, 470, { stroke: COLORS.muted, strokeWidth: 1.6, dashed: true }); +sketch.text(470, 340, 'vs', { size: 26, weight: 800, color: COLORS.muted }); + +// ── right: two cards work ──────────────────────────────── +sketch.text(560, 190, 'TWO CARDS, --tensor-parallel-size 2', { + size: 19, + weight: 800, + anchor: 'start', + color: COLORS.teal.stroke, +}); + +const cardW = 246; +const cardGap = 84; +const gpuY = 210; +[0, 1].forEach((gpu) => { + const x = 560 + gpu * (cardW + cardGap); + const accent = gpu === 0 ? COLORS.blue : COLORS.green; + sketch.rect(x, gpuY, cardW, 150, { stroke: accent.stroke, fill: accent.fill }); + sketch.text(x + cardW / 2, gpuY + 34, `GPU ${gpu}`, { size: 22, weight: 800, color: accent.stroke }); + sketch.text(x + cardW / 2, gpuY + 66, 'weights 30.59 GiB', { size: 18, weight: 700 }); + sketch.text(x + cardW / 2, gpuY + 94, 'KV cache 8.22 GiB', { size: 17, color: COLORS.muted }); + sketch.text(x + cardW / 2, gpuY + 124, gpu === 0 ? 'heads 0-31' : 'heads 32-63', { + size: 16, + color: COLORS.muted, + }); +}); + +// all-reduce link between the two cards +const gapL = 560 + cardW + 10; +const gapR = 560 + cardW + cardGap - 10; +const gapMid = (gapL + gapR) / 2; +const linkY = gpuY + 66; +sketch.arrow(gapL, linkY, gapR, linkY, { stroke: COLORS.violet.stroke }); +sketch.arrow(gapR, linkY + 24, gapL, linkY + 24, { stroke: COLORS.violet.stroke }); +sketch.text(gapMid, gapMid && linkY + 60, 'all-', { size: 15, weight: 700, color: COLORS.violet.stroke }); +sketch.text(gapMid, linkY + 80, 'reduce', { size: 15, weight: 700, color: COLORS.violet.stroke }); + +sketch.text(560, gpuY + 182, 'GPU KV cache size:', { size: 17, anchor: 'start', color: COLORS.muted }); +sketch.text(560, gpuY + 208, '67,296 tokens', { + size: 30, + weight: 800, + anchor: 'start', + color: COLORS.teal.stroke, +}); +sketch.text(830, gpuY + 208, '2.05x concurrency', { size: 18, anchor: 'start', color: COLORS.muted }); + +// ── footer strip ───────────────────────────────────────── +sketch.line(64, 520, W - 64, 520, { stroke: COLORS.muted, strokeWidth: 1.6 }); +sketch.text(64, 556, 'QWEN3-32B BF16 - 61.02 GiB CHECKPOINT - vLLM 0.27.1', { + size: 19, + weight: 800, + anchor: 'start', + color: COLORS.ink, +}); +sketch.text(64, 586, '2 x 128 all-reduces per token, no NVLink, measured not estimated', { + size: 17, + anchor: 'start', + color: COLORS.muted, +}); +sketch.text(W - 64, 586, 'blog.kubesimplify.com', { + size: 17, + weight: 700, + anchor: 'end', + color: COLORS.muted, +}); + +sketch.save(join(output, 'cover.svg')); +console.log(`Wrote two-GPU vLLM cover to ${output}`); From 8b1d2a5c3e94d3fad7aebfef7cecfa10b6bcc21b Mon Sep 17 00:00:00 2001 From: Saiyam Pathak Date: Tue, 18 Aug 2026 15:16:30 +0530 Subject: [PATCH 2/8] Drop draft flag so the post renders on the Cloudflare preview Drafts are filtered out of production builds (INCLUDE_DRAFTS is false when NODE_ENV is production), so the preview deploy 404s on the post while the flag is set. Removing it makes the PR preview reviewable. The PR itself stays in draft, so nothing publishes until it is marked ready and merged. Signed-off-by: Saiyam Pathak --- content/blog/running-a-single-llm-across-two-gpus-with-vllm.md | 1 - 1 file changed, 1 deletion(-) diff --git a/content/blog/running-a-single-llm-across-two-gpus-with-vllm.md b/content/blog/running-a-single-llm-across-two-gpus-with-vllm.md index 6209c0218..a1d0b1f6c 100644 --- a/content/blog/running-a-single-llm-across-two-gpus-with-vllm.md +++ b/content/blog/running-a-single-llm-across-two-gpus-with-vllm.md @@ -7,7 +7,6 @@ slug: running-a-single-llm-across-two-gpus-with-vllm author: saiyam-pathak cover: /img/blog/running-a-single-llm-across-two-gpus-with-vllm/cover.png tags: ["vllm", "gpu", "nvidia", "tensor-parallelism"] -draft: true --- Someone asked me this in a thread the other day, and it is such a good question that it deserves a full walkthrough: From 649688cb6cc2a70a78c1c80b06a96fccd3019a8d Mon Sep 17 00:00:00 2001 From: Saiyam Pathak Date: Tue, 18 Aug 2026 17:05:03 +0530 Subject: [PATCH 3/8] Rework: big model across multiple GPUs, measured on 4 cards Replaces the two-GPU A40 post. The old version simulated a 2-GPU split by capping memory on larger cards, which meant the central claim was emulated rather than measured. This version uses a model that genuinely does not fit: Qwen3-235B-A22B-Instruct-2507-FP8, 221 GiB on disk, 2.3x too big for one 96GB card. Reframed away from A40 specifics to the general question of how a big model is spread over several GPUs and how inference works once it is. Byline is now Shubham and Saiyam. Rewritten in plain English throughout, with every flag and every line of the docker command explained. All three splitting modes measured on the same 4 GPUs: - TP=4: 17.14 ms/token, 503.68 tok/s at 32 concurrent, 621,392 KV tokens - TP=4 + EP: 18.83 ms/token, 470.93 tok/s, 623,696 KV tokens - PP=4: 21.19 ms/token, 296.48 tok/s, 555,680 KV tokens, best TTFT Plus three real failure modes with their actual error text: an invalid tensor-parallel size, a genuine CUDA OOM at 2 GPUs, and a DeepGEMM "Unknown SF transformation" crash on sm_120 that needs VLLM_USE_DEEP_GEMM=0. Adds Part 1 on downloading and on-disk storage (safetensors shards, the HF cache blob layout, FP8 block scales) and Part 3 on what inference actually does (prefill versus decode, continuous batching, why capacity is set by the KV cache). Includes the disk-pressure hazard that evicted pods on our own test node. Four CSS animations replace the previous three, following the existing series pattern: three-ways-to-split, tensor split across 4 GPUs, expert routing, and memory fit on 1 / 2 / 4 GPUs. Signed-off-by: Saiyam Pathak --- components/MoeExpertRoutingAnimation.jsx | 290 +++++++++ components/MultiGpuMemoryFitAnimation.jsx | 390 ++++++++++++ components/MultiGpuSplitModesAnimation.jsx | 279 +++++++++ components/MultiGpuTensorSplitAnimation.jsx | 374 ++++++++++++ components/TwoGpuMemoryFitAnimation.jsx | 353 ----------- components/TwoGpuTensorSplitAnimation.jsx | 414 ------------- components/TwoGpuTpVsPpAnimation.jsx | 373 ------------ ...-big-llm-across-multiple-gpus-with-vllm.md | 573 ++++++++++++++++++ ...-a-single-llm-across-two-gpus-with-vllm.md | 362 ----------- lib/_blog-feed-data.js | 24 +- lib/markdown.js | 21 +- public/_redirects | 2 + public/_worker.js | 2 +- public/atom.xml | 15 +- .../cover.png | Bin 0 -> 187877 bytes .../cover.svg | 55 ++ .../cover.png | Bin 193910 -> 0 bytes .../cover.svg | 51 -- public/llms-full.txt | 570 +++++++++++++++++ public/llms.txt | 16 +- public/rss.xml | 10 +- scripts/gen-local-llm-glossary-cover.mjs | 2 +- ...cover.mjs => gen-multi-gpu-vllm-cover.mjs} | 113 ++-- vercel.json | 16 + 24 files changed, 2657 insertions(+), 1648 deletions(-) create mode 100644 components/MoeExpertRoutingAnimation.jsx create mode 100644 components/MultiGpuMemoryFitAnimation.jsx create mode 100644 components/MultiGpuSplitModesAnimation.jsx create mode 100644 components/MultiGpuTensorSplitAnimation.jsx delete mode 100644 components/TwoGpuMemoryFitAnimation.jsx delete mode 100644 components/TwoGpuTensorSplitAnimation.jsx delete mode 100644 components/TwoGpuTpVsPpAnimation.jsx create mode 100644 content/blog/running-a-big-llm-across-multiple-gpus-with-vllm.md delete mode 100644 content/blog/running-a-single-llm-across-two-gpus-with-vllm.md create mode 100644 public/img/blog/running-a-big-llm-across-multiple-gpus-with-vllm/cover.png create mode 100644 public/img/blog/running-a-big-llm-across-multiple-gpus-with-vllm/cover.svg delete mode 100644 public/img/blog/running-a-single-llm-across-two-gpus-with-vllm/cover.png delete mode 100644 public/img/blog/running-a-single-llm-across-two-gpus-with-vllm/cover.svg rename scripts/{gen-two-gpu-vllm-cover.mjs => gen-multi-gpu-vllm-cover.mjs} (60%) diff --git a/components/MoeExpertRoutingAnimation.jsx b/components/MoeExpertRoutingAnimation.jsx new file mode 100644 index 000000000..2c6424166 --- /dev/null +++ b/components/MoeExpertRoutingAnimation.jsx @@ -0,0 +1,290 @@ +const gpus = [0, 1, 2, 3]; +const PER_GPU = 32; + +export default function MoeExpertRoutingAnimation() { + return ( +

+ +
+

Expert routing animation

+

+ Why a 235B model only does 22B of work per token +

+

+ Every layer of this model has 128 small expert networks, and a tiny router picks just 8 of + them for each token. The other 120 sit still. That is the whole trick of a mixture of + experts: you pay for 235B parameters in memory, but only about 22B of arithmetic per token. +

+ +
+
+ one token arrives + it has already been through attention for this layer +
+ +
router scores all 128 experts, keeps the top 8
+ +
+ {gpus.map((gpu) => { + // 2 of this GPU's 32 experts are picked, so 8 across 4 GPUs + const hot = [3 + gpu, 18 + ((gpu * 5) % 10)]; + return ( +
+

+ GPU {gpu} + experts {gpu * PER_GPU}-{gpu * PER_GPU + PER_GPU - 1} +

+ + ); + })} +
+ +
+
+ In memory + 235B params + + All 128 experts per layer must be resident, which is why the model is big + +
+
+ Active per token + 22B params + + Only the 8 chosen experts do arithmetic, so it runs like a much smaller model + +
+
+ What this costs you + a network hop + + With expert parallelism the token travels to whichever GPU owns its expert, then the + answer travels back + +
+
+
+
+
+ Counts are from the model config: 128 experts per layer, 8 per token, 94 layers. Splitting 128 + experts over 4 GPUs gives 32 each, so on average 2 experts per GPU fire for any given token. + That average is the catch, because routing is not guaranteed to be even. +
+
+ ); +} diff --git a/components/MultiGpuMemoryFitAnimation.jsx b/components/MultiGpuMemoryFitAnimation.jsx new file mode 100644 index 000000000..54032e176 --- /dev/null +++ b/components/MultiGpuMemoryFitAnimation.jsx @@ -0,0 +1,390 @@ +const cases = [ + { + key: 'one', + verdict: 'fail', + title: '1 GPU', + flag: 'will not start', + note: '221 GiB of weights against an 85.51 GiB budget', + parts: [{ label: 'weights', value: '221 GiB', width: '92.08%', color: '#ef4444' }], + log: 'the model is 2.6x larger than the whole budget\nthere is no flag that fixes this', + }, + { + key: 'two', + verdict: 'fail', + title: '2 GPUs', + flag: 'CUDA out of memory', + note: 'about 110 GiB per card, still too much', + parts: [{ label: 'weights per card', value: '110 GiB', width: '46.04%', color: '#f59e0b' }], + log: 'Failed to load model - not enough GPU memory\n95.01 GiB total, of which 438.31 MiB is free', + }, + { + key: 'four', + verdict: 'pass', + title: '4 GPUs', + flag: '621,392 tokens', + note: 'weights fit, with room for about 19 concurrent 32k conversations', + parts: [ + { label: 'weights', value: '55.19 GiB', width: '23.00%', color: '#0098cc' }, + { label: 'KV cache', value: '27.85 GiB', width: '11.60%', color: '#2bb534' }, + ], + log: 'Worker_TP0 Model loading took 55.19 GiB\nAvailable KV cache memory: 27.85 GiB\nGPU KV cache size: 621,392 tokens', + }, +]; + +export default function MultiGpuMemoryFitAnimation() { + return ( +
+ +
+

Memory fit animation

+

+ The same model on 1, 2 and 4 GPUs +

+

+ Every number here came out of a real run. All three bars are drawn to the same scale, and + the dashed line is the 85.51 GiB that vLLM may use on one card at + --gpu-memory-utilization 0.90. A bar reaching past that line means the model does not fit. + Watch it shrink as GPUs are added, and note that it takes 4 before the bar finally lands to + the left of the line. +

+ +
+ {cases.map((c) => ( +
+
+ + {c.title} + {c.note} + + {c.flag} +
+ +
+ what one card must hold + full axis = 240 GiB +
+ +
+ +
+ {c.parts.map((p, i) => ( +
+ + {p.label} {p.value} + +
+ ))} +
+
+ +
{c.log}
+
+ ))} + +
+
+ KV per token, whole model + 188 KiB + 2 x 94 layers x 4 kv heads x 128 head_dim x 2 bytes +
+
+ Per card at TP=4 + 47 KiB + + each card keeps 1 of the 4 kv heads, so the cache divides rather than repeats + +
+
+ Predicted vs reported + 621,337 / 621,392 + + 27.85 GiB divided by 47 KiB, against what vLLM actually printed + +
+
+
+
+
+ Measured on 4x RTX PRO 6000 Blackwell with Qwen3-235B-A22B-Instruct-2507-FP8 on vLLM 0.27.1. + The 1 GPU and 2 GPU bars are what the run actually attempted before failing, not estimates. + Because this model has only 4 key/value heads, its cache is unusually cheap, which is why 4 + cards leave room for about 19 concurrent conversations at the 32,768-token limit we set. +
+
+ ); +} diff --git a/components/MultiGpuSplitModesAnimation.jsx b/components/MultiGpuSplitModesAnimation.jsx new file mode 100644 index 000000000..e58e6c224 --- /dev/null +++ b/components/MultiGpuSplitModesAnimation.jsx @@ -0,0 +1,279 @@ +const modes = [ + { + key: 'tp', + name: 'Tensor parallelism', + flag: '--tensor-parallel-size', + plain: 'Cut every layer into vertical strips. Each GPU holds a strip of all 94 layers.', + talks: 'A lot. Twice per layer, so 188 times per token.', + good: 'Fastest for a single user, because all 4 GPUs work on the same token.', + color: '#0098cc', + }, + { + key: 'pp', + name: 'Pipeline parallelism', + flag: '--pipeline-parallel-size', + plain: 'Cut the stack into horizontal blocks. With 94 layers over 4 GPUs, each one owns about 23 of them.', + talks: 'Barely. One handoff between neighbours per token.', + good: 'Kind to a slow network between GPUs, but a GPU waits its turn.', + color: '#2bb534', + }, + { + key: 'ep', + name: 'Expert parallelism', + flag: '--enable-expert-parallel', + plain: 'Deal the 128 experts out like cards. Each GPU keeps 32 of them, whole.', + talks: 'Medium. Tokens are shipped to whichever GPU owns the expert they need.', + good: 'Only exists for MoE models, and it is how the really big ones are served.', + color: '#a855f7', + }, +]; + +export default function MultiGpuSplitModesAnimation() { + return ( +
+ +
+

Three ways to split animation

+

+ The same model, cut three different ways across four GPUs +

+

+ These are not competing products, they are three different cuts through the same pile of + weights, and you can combine them. Each box below is one GPU. Watch which parts light up, + because that tells you which GPUs are doing work at the same moment. +

+ +
+ {modes.map((mode) => ( +
+

{mode.name}

+ {mode.flag} + + + +
+

+ What it does + {mode.plain} +

+

+ How much it talks + {mode.talks} +

+

+ When it wins + {mode.good} +

+
+
+ ))} +
+
+
+ Layer and expert counts are Qwen3-235B-A22B: 94 layers, 128 experts with 8 picked per token. + Under tensor parallelism all four GPUs light up together on every token. Under pipeline + parallelism they light up in turn, which is the idle time you are trading away. +
+
+ ); +} diff --git a/components/MultiGpuTensorSplitAnimation.jsx b/components/MultiGpuTensorSplitAnimation.jsx new file mode 100644 index 000000000..2e9bbe573 --- /dev/null +++ b/components/MultiGpuTensorSplitAnimation.jsx @@ -0,0 +1,374 @@ +const steps = [ + { label: 'A token arrives', detail: 'all 4 GPUs get the same copy of it' }, + { label: 'Split sideways', detail: 'each GPU owns 16 of the 64 attention heads' }, + { label: 'Work alone', detail: 'no GPU needs to ask the others anything yet' }, + { label: 'Partial answers', detail: 'each GPU has a quarter of the answer' }, + { label: 'Add them up', detail: 'one all-reduce, and all 4 hold the full result' }, +]; + +export default function MultiGpuTensorSplitAnimation() { + return ( +
+ +
+

Tensor parallelism animation

+

+ One layer, sliced four ways +

+

+ This is the part people usually get wrong, so it is worth being precise. The weights get + divided, and the thing flowing through them does not. Every GPU starts each layer holding + an identical copy of the token, does a quarter of the arithmetic on its own slice of the + weights, and ends up with a quarter of an answer. Then they add their quarters together. +

+ +
+
+ the token, 4096 numbers wide + copied to all four GPUs, not divided +
+ +
+ {[0, 1, 2, 3].map((gpu) => ( +
+

+ GPU {gpu} + heads {gpu * 16}-{gpu * 16 + 15} +

+ + ))} +
+ +
+ + +
+ the finished layer output, now identical on all four GPUs + and the next layer does the whole dance again +
+
+ +
+ {steps.map((step, i) => ( +
+ Step {i + 1} + {step.label} + {step.detail} +
+ ))} +
+
+
+ Shapes are Qwen3-235B-A22B: hidden size 4096, 64 attention heads, 4 key/value heads, 94 + layers. Those 4 key/value heads are the reason this model cannot be split cleanly more than 4 + ways, which we come back to later. +
+
+ ); +} diff --git a/components/TwoGpuMemoryFitAnimation.jsx b/components/TwoGpuMemoryFitAnimation.jsx deleted file mode 100644 index 953a27cef..000000000 --- a/components/TwoGpuMemoryFitAnimation.jsx +++ /dev/null @@ -1,353 +0,0 @@ -const scenarios = [ - { - key: 'one', - verdict: 'fail', - title: 'One card', - flag: '-24.42 GiB', - note: 'vLLM refuses to start', - parts: [ - { label: 'weights', value: '61.03 GiB', width: '151%', color: '#ef4444' }, - ], - }, - { - key: 'two', - verdict: 'pass', - title: 'Two cards, TP=2', - flag: '67,296 tokens', - note: '2.05x concurrency at 32k context', - parts: [ - { label: 'weights', value: '30.59 GiB', width: '75.6%', color: '#0098cc' }, - { label: 'KV cache', value: '8.22 GiB', width: '20.3%', color: '#2bb534' }, - ], - }, -]; - -export default function TwoGpuMemoryFitAnimation() { - return ( -
- -
-

Memory fit animation

-

- Qwen3-32B in BF16 against one A40 budget, then two -

-

- These are the numbers vLLM actually reported on my run. A 61.02 GiB checkpoint has nowhere - to go on a single 45 GiB card, and the failure is not subtle: the KV cache budget comes out - negative before a single token is stored. -

- -
- {scenarios.map((scenario) => ( -
-
- - {scenario.title} - {scenario.note} - - {scenario.flag} -
- -
- per-card budget - ceiling 40.47 GiB -
- -
-
- {scenario.parts.map((part, index) => ( -
- - {part.label} {part.value} - -
- ))} -
-
- -
- {scenario.verdict === 'fail' - ? 'Model loading took 61.03 GiB\nAvailable KV cache memory: -24.42 GiB\nValueError: No available memory for the cache blocks.' - : 'Worker_TP0 Model loading took 30.59 GiB\nWorker_TP1 Model loading took 30.59 GiB\nGPU KV cache size: 67,296 tokens'} -
-
- ))} - -
-
- KV per token - 256 KiB - - 2 x 64 layers x 8 kv heads x 128 head_dim x 2 bytes - -
-
- Per card at TP=2 - 128 KiB - - 4 of the 8 kv heads land on each card, so the cache is divided, not copied - -
-
- Predicted vs reported - 67,338 / 67,296 - - 8.22 GiB divided by 128 KiB, against what vLLM printed - -
-
-
-
-
- Captured on two RTX PRO 6000 Blackwell cards held to a 40.47 GiB budget with - --gpu-memory-utilization 0.426, which matches a 45 GiB A40 running at 0.90. Weight splitting - does not depend on the architecture, so these memory figures carry over to A40 directly. -
-
- ); -} diff --git a/components/TwoGpuTensorSplitAnimation.jsx b/components/TwoGpuTensorSplitAnimation.jsx deleted file mode 100644 index f1d997515..000000000 --- a/components/TwoGpuTensorSplitAnimation.jsx +++ /dev/null @@ -1,414 +0,0 @@ -const stages = [ - { key: 'broadcast', label: 'X arrives', detail: 'same full copy on both cards' }, - { key: 'column', label: 'Column-parallel', detail: 'each card owns half the columns of A' }, - { key: 'local', label: 'Activation stays local', detail: 'SiLU is elementwise, no comms' }, - { key: 'row', label: 'Row-parallel', detail: 'each card gets a partial sum' }, - { key: 'reduce', label: 'All-reduce', detail: 'partial sums added, both cards get Z' }, -]; - -export default function TwoGpuTensorSplitAnimation() { - return ( -
- -
-

Tensor parallelism animation

-

- One MLP block, split down the middle across two cards -

-

- The weights are split and the activations are not. Each card owns half the columns of the - first matrix and half the rows of the second, so all the maths stays local until the very - end, where one all-reduce adds the two partial sums together. -

- -
-
- input X, hidden_size 5120 - replicated, both cards hold the same full copy -
- -
- {[0, 1].map((gpu) => ( -
-
- GPU {gpu} - {gpu === 0 ? 'heads 0-31' : 'heads 32-63'} -
- - - ))} -
- -
- - -
- full output Z, identical on both cards - next layer starts from here -
-
- -
- {stages.map((stage, index) => ( -
- Step {index + 1} - {stage.label} - {stage.detail} -
- ))} -
-
-
- Shapes are Qwen3-32B: hidden_size 5120, intermediate_size 25600 halved to 12800 per card, 64 - attention heads halved to 32. Attention splits the same way, so a full layer costs two - all-reduces, not one. -
-
- ); -} diff --git a/components/TwoGpuTpVsPpAnimation.jsx b/components/TwoGpuTpVsPpAnimation.jsx deleted file mode 100644 index 6e9386fe9..000000000 --- a/components/TwoGpuTpVsPpAnimation.jsx +++ /dev/null @@ -1,373 +0,0 @@ -const results = [ - { metric: 'tok/s at concurrency 1', tp: '36.41', pp: '21.00', win: 'tp' }, - { metric: 'tok/s at concurrency 32', tp: '496.60', pp: '487.56', win: 'tie' }, - { metric: 'median TTFT at 32', tp: '3892 ms', pp: '2468 ms', win: 'pp' }, - { metric: 'KV cache tokens', tp: '67,296', pp: '56,640', win: 'tp' }, -]; - -export default function TwoGpuTpVsPpAnimation() { - return ( -
- -
-

TP versus PP animation

-

- Two ways to cut the same model, and what each one costs -

-

- Both modes solve the fitting problem, so the choice is purely about speed. Tensor - parallelism keeps both cards busy on every token and pays 128 all-reduces for it. Pipeline - parallelism barely communicates at all, but runs like a relay race. -

- -
-
-

- Tensor parallelism, TP=2 - every layer is split, both cards work on every token -

-
-
- GPU 0 - all 64 layers, heads 0-31, 30.59 GiB -
-
- -
- GPU 1 - all 64 layers, heads 32-63, 30.59 GiB -
-
-

- Wins decode. Both cards contribute memory bandwidth to the same token, so - concurrency 1 is 73% faster. Pays for it in prefill, where each all-reduce carries 10 MB - instead of 10 KB. -

-
- -
-

- Pipeline parallelism, PP=2 - the stack is cut by layer, one activation handoff -

-
-
- GPU 0 - layers 0-31, all 8 kv heads, 30.52 GiB -
-
- -
- GPU 1 - layers 32-63, all 8 kv heads, 30.52 GiB -
-
-

- Wins prefill. Almost no communication, so time to first token is 37% better at - concurrency 32. But with one request in flight a card is always idle, and the extra - pipeline buffers cost you 19% of the KV cache. -

-
-
- -
-
-
Measured
-
TP=2
-
PP=2
-
- {results.map((row) => ( -
-
{row.metric}
-
- {row.tp} -
-
- {row.pp} -
-
- ))} -
-
-
- Measured with vllm bench serve, 1024 input and 256 output tokens, on two PCIe-connected cards - with no NVLink. The concurrency 32 throughput gap is 1.9%, which is close enough to noise that - I would call it a tie rather than a win. -
-
- ); -} diff --git a/content/blog/running-a-big-llm-across-multiple-gpus-with-vllm.md b/content/blog/running-a-big-llm-across-multiple-gpus-with-vllm.md new file mode 100644 index 000000000..f324c45ec --- /dev/null +++ b/content/blog/running-a-big-llm-across-multiple-gpus-with-vllm.md @@ -0,0 +1,573 @@ +--- +title: "Running a big LLM across multiple GPUs with vLLM" +seoTitle: "Running a big LLM across multiple GPUs with vLLM" +seoDescription: "A plain-English guide to serving a model that is too big for one GPU: how tensor, pipeline, and expert parallelism split it up, what every vLLM flag does, and measured numbers from a 235B model on four RTX PRO 6000 cards." +datePublished: 2026-08-18T10:00:00.000Z +slug: running-a-big-llm-across-multiple-gpus-with-vllm +author: shubham-katara +authors: ["shubham-katara", "saiyam-pathak"] +cover: /img/blog/running-a-big-llm-across-multiple-gpus-with-vllm/cover.png +tags: ["vllm", "gpu", "nvidia", "llm", "platform-engineering"] +--- + +Sooner or later everyone running models locally hits the same wall. You find a model you want, you look at the download size, and it is bigger than the GPU you own. A 235B model needs roughly 236 GB just for its weights. The card we have holds 96 GB, and even the largest data-centre GPUs available today top out well below 236 GB. So the model does not fit, and no amount of clever flags will make 236 GB squeeze into 96 GB. + +The answer is to use more than one GPU. That part everybody knows. The part that is genuinely confusing is what "use more than one GPU" actually means. Does each GPU get a copy of the model? Does the model get cut in half? Do the GPUs take turns? Which of those is happening, and what does it cost you? + +Let's answer that properly, with a real model on real hardware, and let's explain every single flag and command along the way rather than pasting a magic incantation and moving on. + +## What you will learn + +- How to download a 236 GB model, what the 24 files you get actually are, and how they sit on disk +- How to work out on paper whether it fits on your GPUs, before you spend an hour downloading it +- What inference really is: the two completely different phases behind "time to first token" and "tokens per second" +- The three different ways a model can be split across GPUs, in plain English, and when each is used +- What every flag in our vLLM command does, and why it has the value it has +- How to read the startup log, which tells you more than any tutorial can +- The rules that limit how far you can split, and the real errors you get when you break them +- Measured numbers for all three splitting modes on the same model and the same four GPUs + +No prior knowledge of distributed computing is assumed. If you know what a GPU is and you have run a model locally once, you are qualified. + +## The machine and the model + +Here is what we tested on, because numbers mean nothing without the hardware attached. + +**The machine:** a server with 8x NVIDIA RTX PRO 6000 Blackwell Server Edition cards. Each card has 96 GB of memory, and the machine reports 95.01 GiB of that as usable. We borrowed 4 of the 8 cards for this work. + +One detail that matters more than it looks: these GPUs are **not** connected by NVLink. NVLink is NVIDIA's fast direct GPU-to-GPU cable. Without it, GPUs talk to each other over PCIe and through the CPU, which is slower. You can check what you have with one command: + +```bash +nvidia-smi topo -m +``` + +On our machine every pair of GPUs reports `SYS`, which means the traffic goes across PCIe and then across the link between the CPU sockets. If you had NVLink you would see `NV1`, `NV2` and so on instead. Keep this in mind, because it changes which splitting method is fastest. + +**The model:** `Qwen/Qwen3-235B-A22B-Instruct-2507-FP8`. Let's unpack that name, because it is doing a lot of work: + +- **235B** is the total parameter count, 235 billion. +- **A22B** means 22 billion **active** parameters. This is a mixture-of-experts model, and only a fraction of it runs for any given token. More on this shortly, because it is the most interesting thing about serving big models today. +- **FP8** is the number format the weights are stored in, 8 bits each, so one byte per parameter. + +**The software:** vLLM 0.27.1 running in the official container, with PyTorch 2.13.0 and CUDA 13.0, on driver 610.43.02. + +## Part 1: Getting the model onto the machine + +Before anything can be split across GPUs it has to be on the disk, and with a model this size that step is not a formality. It is the step that bit us hardest, so let's do it properly. + +You download it with the Hugging Face CLI: + +```bash +pip install huggingface_hub hf_transfer + +HF_HUB_ENABLE_HF_TRANSFER=1 hf download Qwen/Qwen3-235B-A22B-Instruct-2507-FP8 +``` + +`HF_HUB_ENABLE_HF_TRANSFER=1` switches on a Rust downloader that parallelises across connections. On a 236 GB download that is the difference between an hour and most of an afternoon, so it is worth the extra package. + +### What you actually get + +The download is not one giant file. It arrives as **24 shards**, plus the small text files that describe the model: + +``` +config.json +generation_config.json +model-00001-of-00024.safetensors +model-00002-of-00024.safetensors +... +model-00024-of-00024.safetensors +model.safetensors.index.json +tokenizer.json +``` + +A few things worth understanding here: + +- **`.safetensors`** is the modern format for weights. It is a flat file with a small JSON header at the front listing every tensor's name, dtype, shape and byte range, then the raw bytes. That layout matters for us, because it means a loader can memory-map the file and read exactly the byte ranges it wants without parsing the whole thing, and without the security problems of the old pickle-based `.bin` format. +- **`model.safetensors.index.json`** is the map that says which tensor lives in which shard. This is how vLLM knows to open shard 17 to find layer 62's weights. +- **`config.json`** is the architecture file we keep coming back to: layer count, head counts, expert count. It is a few kilobytes and it determines almost every decision in this post. +- For an FP8 model like this one, the weight tensors are joined by **scale tensors**. FP8 has very little numeric range, so the checkpoint stores a scaling factor per 128x128 block of each weight matrix, and the real value is the 8-bit number multiplied by its block's scale. You can see that arrangement declared in `config.json`: + +```json +"quantization_config": { + "quant_method": "fp8", + "fmt": "e4m3", + "weight_block_size": [128, 128], + "activation_scheme": "dynamic" +} +``` + +Remember those block scales. They are the reason for the most annoying crash we hit, back in Part 12. + +### Where it gets stored + +By default everything lands under `~/.cache/huggingface/hub`, in a layout that looks strange the first time you see it: + +``` +~/.cache/huggingface/hub/models--Qwen--Qwen3-235B-A22B-Instruct-2507-FP8/ +├── blobs/ <- the real files, named by hash +├── refs/ <- which commit "main" points at +└── snapshots/ + └── e156cb4e.../ <- symlinks with friendly names, pointing into blobs/ +``` + +The content lives once in `blobs/` under its hash, and `snapshots/` holds human-readable symlinks into it. That is why pulling two revisions of a model does not always double your disk usage, and it is also why `du` and `df` can disagree with your intuition. + +The practical consequence for serving: mount that whole directory into your container and set `HF_HOME` to it, which is exactly what the `-v` and `-e HF_HOME` flags in Part 8 are doing. Otherwise the container downloads its own copy. + +### The disk trap, which is a real production hazard + +Two things about disk that the model card will not tell you. + +**Each tensor-parallel worker reads the entire checkpoint.** vLLM's own docs say that with tensor parallelism "each process will read the whole model and split it into chunks". So at `-tp 4` the machine performs roughly 4 x 221 GiB of reads at startup, not 221 GiB divided four ways. That is why a big model takes minutes to load even off fast storage, and it is why our first `Model loading took` line reported 45 seconds only because a lot of the file was still in the operating system's page cache from the download. + +**On a shared machine, filling the disk can take down everything else on it.** This is the part we learned the hard way, and it is worth more than a footnote. Our test box also runs a Kubernetes inference platform. Kubernetes treats free disk as a managed resource called ephemeral-storage, and when free space fell below its eviction threshold, the kubelet did exactly what it is designed to do: it evicted pods to reclaim space, tainted the node so nothing new could schedule, and garbage-collected container images. Several of those images had been built locally and existed in no registry, so they could not simply be pulled again. + +Nothing about that is a Kubernetes bug, and nothing about it is specific to our setup. The lesson generalises: **before you download a quarter of a terabyte onto a machine, check what else lives on that disk and what will happen when it fills.** `df -h` before you start, and know your platform's eviction threshold, which is often far higher than "0 bytes free". If the machine is shared, keeping a couple of hundred gigabytes of headroom is not paranoia. + +## Part 2: Why one GPU is not enough + +Let's do the arithmetic, because it is simpler than people expect and it saves you a lot of wasted download time. + +A model is mostly a big pile of numbers called **parameters** or **weights**. To run the model, those numbers have to sit in GPU memory. So the first question is always: how many bytes is one parameter? + +| Format | Bits per parameter | Bytes per parameter | +| --- | --- | --- | +| FP32 | 32 | 4 | +| BF16 or FP16 | 16 | 2 | +| FP8 | 8 | 1 | +| FP4 or NVFP4 | 4 | 0.5 | + +So the weights alone take `number of parameters x bytes per parameter`. For our model that is 235 billion parameters at 1 byte each, which is about 236 GB. Our GPU holds 95.01 GiB. The model is roughly 2.3 times too big for one card. + +But weights are only the first of **three** things that need to fit. This is where most people's mental model is incomplete: + +1. **The weights.** Fixed size. You know it before you start. +2. **The KV cache.** This is the model's memory of the conversation so far. Every token you feed in, and every token the model writes, leaves behind a small record that has to be kept for as long as that request is alive. It grows with how long your prompts are and how many users you serve at once. +3. **Working space.** Temporary scratch memory for the actual calculations, plus some overhead the framework reserves for itself. + +The KV cache is the one that surprises people, so let's size it. The formula looks intimidating but every term is just a number from the model's config file: + +``` +bytes per token = 2 x layers x kv_heads x head_dim x bytes_per_number +``` + +The `2` is because you store two things per token, a key and a value, which is where "KV" comes from. For our model, `layers` is 94, `kv_heads` is 4, `head_dim` is 128, and the cache is kept in BF16 so that is 2 bytes: + +``` +2 x 94 x 4 x 128 x 2 = 192,512 bytes = 188 KiB per token +``` + +188 KiB does not sound like much. But this model supports a 262,144 token context, so one single conversation at full length would need `262,144 x 188 KiB`, which is about **47 GiB**. That is half a GPU for one user. Serving ten users at once with long prompts is where all your leftover memory goes, and it is why "the weights fit, so I am fine" is wrong. + +{{multi-gpu-memory-fit-animation}} + +## Part 3: What actually happens when a request arrives + +Before splitting anything, it helps to know what the work being split actually is, because inference is really two different jobs wearing one coat. Almost everything confusing about multi-GPU performance comes from this split. + +### Phase one: prefill, reading your prompt + +When your prompt arrives, the model has to read all of it. If you send 1,000 tokens, all 1,000 go through every layer **at once**, as one big batch of work. This is called **prefill**, and it is the phase that decides your time to first token. + +Prefill is *compute-heavy*. There is a lot of arithmetic to do and the GPU's matrix engines are the bottleneck. It also produces the keys and values for every one of those 1,000 tokens, which get written into the KV cache and kept. + +### Phase two: decode, writing the answer + +Then the model writes its reply, and here is the part that surprises people: **it can only produce one token at a time.** To write token 2 it needs to have written token 1, because it feeds its own output back in. There is no way around that, it is what "autoregressive" means. + +So decode is a loop. Each pass through it produces exactly one token, reads the entire KV cache built so far, and appends one more entry to that cache. + +Decode is *memory-heavy* rather than compute-heavy. For a single token there is barely any arithmetic to do, but the GPU still has to stream the relevant weights and the whole KV cache past its compute units. The bottleneck is memory bandwidth, not maths. That is why decode speed tracks memory bandwidth so closely, and why giving a single request more GPUs to read from in parallel actually helps. + +Two phases, two different bottlenecks, and they respond differently to everything you tune: + +| | Prefill | Decode | +| --- | --- | --- | +| Work per step | your whole prompt at once | exactly one token | +| Bottleneck | compute | memory bandwidth | +| Metric it drives | time to first token | time per output token | +| Data moved between GPUs | large, whole prompt's worth | tiny, one token's worth | + +That last row is the one to hold on to. It is the reason, later, that pipeline parallelism wins on first-token latency while tensor parallelism wins on tokens per second. The same all-reduce that is trivially cheap during decode is expensive during prefill, because it is carrying a thousand times more data. + +### How the server juggles many users + +A real server is not doing one request at a time. vLLM uses **continuous batching**, which means it does not wait for a batch to fill up or finish. On every step it looks at everything currently in flight and assembles whatever work is ready, so a request that arrives mid-flight joins the very next step rather than queueing behind a whole batch. + +Two consequences worth knowing: + +- **Prefill and decode get mixed together.** A step might carry one user's fresh 1,000-token prompt alongside twenty other users' single decode tokens. That mixing is why a burst of long prompts makes everyone else's tokens arrive more slowly, and it is why `--max-num-batched-tokens` exists as a lever. +- **Capacity is set by the KV cache, not by CPU or queue length.** Every in-flight request is holding cache proportional to its length. When the cache is full, vLLM has to **preempt** somebody: it evicts a request's cache and recomputes it later. That is the real meaning of the `Maximum concurrency` line in the startup log, and it is why we spend so much of this post counting cache bytes. + +Now that the work itself is clear, let's look at the three ways to spread it over more than one GPU. + +## Part 4: The three ways to split a model + +Here is the heart of it. When people say "split the model across GPUs" they could mean three genuinely different things, and mixing them up is the source of most confusion. + +An analogy first, because it makes the rest much easier to hold in your head. Imagine a large restaurant kitchen that has to produce one dish: + +- **Tensor parallelism** is four chefs all working on the same dish at the same time, one chopping, one on sauce, one on protein, one plating. They constantly have to coordinate, but the dish is done fast. +- **Pipeline parallelism** is four chefs at four stations, where the dish moves down the line. Station two cannot start until station one is finished. Very little talking, but three chefs are idle at any moment unless you have several dishes in flight. +- **Expert parallelism** is a kitchen with 128 specialist chefs where each dish only needs 8 of them. You spread those 128 chefs across four rooms, and each dish gets walked to whichever rooms hold the specialists it needs. + +{{multi-gpu-split-modes-animation}} + +All three can be combined, and in production they usually are. Now let's look at each one properly. + +## Part 5: Tensor parallelism, up close + +Tensor parallelism cuts **inside** every layer. This is the important distinction: it does not give GPU 0 the first half of the model and GPU 1 the second half. Every GPU holds a thin slice of **all 94 layers**. + +How can you cut a layer? Because the work a layer does is mostly one big multiplication table, and multiplication tables can be cut up. The technique comes from a 2019 NVIDIA paper called Megatron-LM, and it works in two moves. + +**Move one, cut the first matrix into vertical strips.** Each GPU takes some of the columns. Because each GPU has complete columns, it can finish its part, including the activation function in the middle, without asking anyone anything. In our model the attention block has 64 heads, so with 4 GPUs each one owns 16 whole heads and computes them start to finish alone. + +**Move two, cut the second matrix into horizontal strips.** These line up exactly with the vertical cuts from move one. Each GPU multiplies its slice and gets a **partial answer**, a quarter of the real result. + +Now, and only now, the GPUs have to talk. They add their four partial answers together so that everyone ends up with the complete result. That single operation is called an **all-reduce**: everyone contributes a piece, everyone gets the total back. + +The Megatron paper puts the cost plainly, saying this design lets you run a transformer layer "using only two all-reduces in the forward path". Generating text only uses the forward path, so: + +- 2 all-reduces per layer +- 94 layers +- **188 all-reduces to produce one single token** + +And they happen strictly one after another, because layer 5 cannot begin until layer 4 has finished comparing notes. + +{{multi-gpu-tensor-split-animation}} + +### The KV cache gets divided too, which is a bonus + +Because each GPU owns only some of the attention heads, it only needs to remember keys and values for its own heads. So the KV cache is divided across GPUs rather than duplicated. Four GPUs give you roughly four times the room for conversations, on top of making the weights fit. This is a real and often unmentioned benefit of tensor parallelism. + +## Part 6: The expert part, which is why this model is only 22B of work + +Our model is a **mixture of experts**, and this is the single biggest idea in how large models are served today, so it is worth slowing down for. + +In an ordinary model, every parameter is used for every token. In a mixture-of-experts model, each layer contains many small networks called **experts**, and a tiny component called a **router** decides which few of them each token should visit. Our model has **128 experts per layer** and the router picks **8** of them per token. + +So the model holds 235B parameters in memory, but only about 22B of them do any arithmetic for a given token. That is what "235B-A22B" means, and it is why this model runs far faster than its size suggests. You pay for the full 235B in memory and you pay for only 22B in speed. + +{{moe-expert-routing-animation}} + +This gives you a third way to split. Instead of slicing every expert into strips, you hand out whole experts: with 128 experts and 4 GPUs, each GPU keeps 32 of them intact. That is **expert parallelism**, and in vLLM you switch it on with `--enable-expert-parallel`. + +The trade is different from tensor parallelism. Nothing needs adding up at the end, but tokens have to travel to whichever GPU owns the expert they were routed to, and the answers travel back. It also has a fairness problem: the router does not promise to spread work evenly, so one GPU can end up with more popular experts and become the slow one holding everybody up. + +## Part 7: Every flag, explained + +Before the command, the vocabulary. Here is every flag we use and why it has the value it has. If you only remember one thing from this post, make it this table. + +| Flag | What it does | Why our value | +| --- | --- | --- | +| `--tensor-parallel-size 4` | How many GPUs to slice each layer across. Often shortened to `-tp`. | 236 GB of weights needs at least 3 cards of 95 GiB, and 4 divides the model's head counts cleanly. | +| `--pipeline-parallel-size 1` | How many groups to cut the layer stack into. Often `-pp`. | 1 means off. We test a version with 2 later. | +| `--enable-expert-parallel` | Hand out whole experts per GPU instead of slicing every expert. Mixture-of-experts models only. | Tested both ways, since this is exactly the choice a big MoE forces on you. | +| `--gpu-memory-utilization 0.90` | The fraction of each GPU's memory vLLM is allowed to claim, for weights plus KV cache plus working space. | 0.90 leaves a little headroom. Push it to 0.95 for more cache, but leave room or startup fails. | +| `--max-model-len 32768` | The longest single request, prompt plus reply, in tokens. | The model supports 262,144, but that would eat 47 GiB of cache for one user. 32,768 is a sane serving value. | +| `--max-num-seqs 32` | How many requests may be in flight at once. | Caps how much KV cache can be demanded simultaneously. Lower it if you see requests being preempted. | +| `--served-model-name qwen3-235b` | The name clients use in the API. | Otherwise clients must send the full checkpoint path. | +| `--port 8000` | Port for the OpenAI-compatible API. | Convention. | +| `--distributed-executor-backend mp` | How the GPU worker processes are managed: `mp` for plain Python multiprocessing, `ray` for a Ray cluster. | All 4 GPUs are in one machine, so `mp` is the simpler choice. `ray` is for multiple machines. | +| `--enforce-eager` | Skips building optimised CUDA graphs at startup. | We do **not** use it. It saves memory and starts faster, but generation is slower. Reach for it only if you are out of memory. | +| `--kv-cache-dtype fp8` | Stores the conversation cache at 8 bits instead of 16, roughly halving cache memory. | We left it at the default so our cache numbers are easy to check by hand. It is a good lever if you need more concurrency. | + +Two container flags matter just as much, and neither is a vLLM flag: + +| Docker flag | Why you need it | +| --- | --- | +| `--ipc=host` | The GPU workers are separate processes that pass data through shared memory. Docker's default 64 MB of shared memory is far too small, and leaving this out gives you a confusing hang at startup. | +| `--gpus '"device=1,4,5,6"'` | Hands specific GPUs to the container. The nested quoting is fussy but required. Inside the container they are renumbered 0 to 3. | + +## Part 8: The command, line by line + +Here is the whole thing. Every line is explained above, and we will walk the structure below it. + +```bash +docker run -d --name vllm-tp4 \ + --gpus '"device=1,4,5,6"' \ + --ipc=host \ + -p 8000:8000 \ + -v /root/.cache/huggingface:/root/.cache/huggingface \ + -e HF_HUB_OFFLINE=1 \ + -e HF_HOME=/root/.cache/huggingface \ + -e VLLM_USE_DEEP_GEMM=0 \ + vllm/vllm-openai:latest \ + Qwen/Qwen3-235B-A22B-Instruct-2507-FP8 \ + --served-model-name qwen3-235b \ + --tensor-parallel-size 4 \ + --gpu-memory-utilization 0.90 \ + --max-model-len 32768 \ + --max-num-seqs 32 \ + --port 8000 +``` + +Reading it top to bottom: + +- `docker run -d` starts the container in the background and prints its id. Drop the `-d` if you would rather watch the logs scroll past. +- `--name vllm-tp4` gives it a name so you can say `docker logs vllm-tp4` instead of copying an id. +- `-p 8000:8000` maps the container's port 8000 to the host's port 8000, so you can reach the API from outside. +- `-v /root/.cache/huggingface:/root/.cache/huggingface` shares your downloaded models with the container. Without it the container would download all 236 GB again. +- `-e HF_HUB_OFFLINE=1` tells the Hugging Face library not to phone home. It uses the local copy, which also means startup does not fail if the network is down. +- `vllm/vllm-openai:latest` is the image. Everything after it is passed to vLLM, because the image's entrypoint is already `vllm serve`. +- The first argument after the image is the model. Everything after that is a vLLM flag from the table above. +- `-e VLLM_USE_DEEP_GEMM=0` is here because without it this exact model would not start on these exact GPUs. It is not a general recommendation, and Part 12 explains the crash it avoids. If you are on different hardware, try without it first. + +One thing worth knowing about that entrypoint: because it is already `vllm serve`, running `docker run ... vllm/vllm-openai:latest python3 -c "..."` does **not** work the way you expect. Your Python gets handed to `vllm serve` as arguments and you get a confusing parse error. To run something else inside the image, override it: + +```bash +docker run --rm --gpus '"device=1,4"' --entrypoint python3 vllm/vllm-openai:latest -c " +import torch +print('GPUs visible:', torch.cuda.device_count()) +print('can GPU 0 talk to GPU 1 directly:', torch.cuda.can_device_access_peer(0, 1)) +" +``` + +That is a genuinely useful sanity check before you start a long model load, because it confirms the container can see the cards and that direct GPU-to-GPU access is available. + +## Part 9: How to read the startup log + +The startup log is the best teaching tool in the whole stack, and almost nobody reads it. Four lines tell you everything about whether your configuration is sensible. + +**Line one, how big the weights are per GPU.** You get one of these per worker: + +``` +(Worker_TP0) Model loading took X GiB +``` + +If you divide the full model size by your `--tensor-parallel-size` and get roughly this number, the split worked. If this number equals the **whole** model, something is wrong and you are not actually splitting. + +**Line two, what is left for conversations:** + +``` +Available KV cache memory: X GiB +``` + +If this is **negative**, your weights plus overhead already exceeded the budget, and vLLM will refuse to start. That is the clearest possible signal that you need more GPUs, a smaller number format, or a lower `--max-model-len`. + +**Line three, the cache in tokens:** + +``` +GPU KV cache size: N tokens +``` + +This is the total number of tokens the server can remember across all users at once. You can predict it: take the available cache memory, divide by the bytes-per-token figure we calculated in Part 2. + +**Line four, how many users that really means:** + +``` +Maximum concurrency for 32,768 tokens per request: N.NNx +``` + +This is the one to show your capacity planner. If it says `2.05x`, then two users can each have a full-length 32k conversation, and a third will have to wait or be preempted. It is simply the previous line divided by `--max-model-len`. + +## Part 10: The rules that limit how far you can split + +You cannot pick any number for `--tensor-parallel-size`. There are hard divisibility rules, and hitting them is a common early frustration. + +Because attention heads are handed out whole, **your tensor parallel size must divide the head counts**. Open the model's `config.json` and look: + +```json +{ + "num_hidden_layers": 94, + "hidden_size": 4096, + "num_attention_heads": 64, + "num_key_value_heads": 4, + "head_dim": 128, + "num_experts": 128, + "num_experts_per_tok": 8 +} +``` + +For our model: + +- `num_attention_heads` is 64, so 2, 4, 8, 16 all divide it cleanly. +- `num_key_value_heads` is **4**. This is the binding constraint. At `-tp 4` each GPU gets exactly one key/value head. At `-tp 8` there are not enough to go around, and vLLM has to duplicate them across GPUs, which wastes memory and gives you less benefit than you would hope. +- `num_experts` is 128, which divides evenly by 4 and by 8, so expert parallelism has more freedom than tensor parallelism here. + +That is the real lesson: **the KV head count, not the parameter count, usually decides how wide you can go.** It is the first thing we check on any new model, and it takes ten seconds. + +## Part 11: What we measured + +Once it was running, we compared all three ways of splitting the same model over the same 4 GPUs: tensor parallelism on its own, tensor parallelism plus expert parallelism, and pure pipeline parallelism. Same hardware, same flags otherwise, same benchmark. + +The benchmark is vLLM's own, 1024 tokens in and 256 tokens out per request, with `--ignore-eos` so every request generates exactly 256 tokens and the comparison is fair: + +```bash +docker exec vllm-tp4 vllm bench serve \ + --model Qwen/Qwen3-235B-A22B-Instruct-2507-FP8 \ + --served-model-name qwen3-235b \ + --base-url http://localhost:8000 \ + --dataset-name random --random-input-len 1024 --random-output-len 256 \ + --max-concurrency 1 --num-prompts 12 --seed 42 --ignore-eos +``` + +and then again with 32 requests in flight, which is the same command with two numbers changed: + +```bash + --max-concurrency 32 --num-prompts 128 +``` + +We ran both for every setup, because a single request at a time and 32 at a time behave completely differently, and a configuration that wins one can lose the other. + +### The memory side + +| | TP=4 | TP=4 plus EP | PP=4 | +| --- | --- | --- | --- | +| Weights per GPU | 55.19 GiB | 55.19 GiB | 55.70 GiB | +| KV cache per GPU | 27.85 GiB | 27.96 GiB | 26.84 GiB | +| Total KV cache | 621,392 tokens | **623,696 tokens** | 555,680 tokens | +| Max concurrency at 32k | 18.96x | **19.03x** | 16.96x | +| GPU memory used | 88,211 MiB on all 4 | 88,209 MiB on all 4 | 84,283 / 87,899 / 87,899 / 84,507 | + +Two things to pull out of that table. + +**Expert parallelism did not save memory.** It moved 0.37% of extra room into the cache, which is noise. If you were hoping expert parallelism would let you fit a model that otherwise does not fit, this is your warning that it will not. + +**Pipeline parallelism cost us 11.8% of the cache**, dropping from 621,392 tokens to 555,680, because a pipeline needs extra buffers for the activations travelling between stages, and that comes straight out of your conversation capacity. + +Look at the last row too. Under tensor parallelism all four cards sat at **exactly 88,211 MiB**, the same number on every one of them. Under pipeline parallelism they ranged from 84,283 to 87,899 MiB, about 3.6 GB apart, because a layer split cannot be perfectly even when 94 layers go over 4 GPUs and the ends of the model are not symmetric: the first stage carries the token embedding and the last carries the output head. That evenness check is the quickest sanity test you have that a tensor-parallel split is behaving. + +### The speed side + +| Measurement | TP=4 | TP=4 plus EP | PP=4 | Winner | +| --- | --- | --- | --- | --- | +| Median time per token, 1 request | **17.14 ms** | 18.83 ms | 21.19 ms | TP | +| Output tokens/sec, 32 requests | **503.68** | 470.93 | 296.48 | TP, by 70% over PP | +| Median time to first token, 32 requests | 3,233 ms | 3,705 ms | **2,735 ms** | PP, by 15% | +| Benchmark duration, 32 requests | **65.06 s** | 69.58 s | 110.52 s | TP | + +Tensor parallelism won nearly everything, and the size of one gap deserves attention: at 32 concurrent requests it produced **70% more tokens per second than pipeline parallelism**. That is not a rounding error, that is a different class of performance, and it lines up exactly with the theory from Part 4. Tensor parallelism has all four GPUs working on every token. Pipeline parallelism has each GPU working on a different request's stage, and with only 32 requests spread over 4 stages there is not enough in flight to keep everyone busy, so cards sit idle waiting for their turn. Its median time per token was 24% worse for the same reason. + +**Pipeline parallelism did win one thing, and it is the one theory predicts:** time to first token, by 15%. Processing your 1024-token prompt is where tensor parallelism's chatter gets expensive, because each of those 188 all-reduces is carrying the whole prompt's worth of data rather than a single token's. Pipeline parallelism just hands one activation tensor to the next stage and skips all of it. If your users judge you on how fast the first word appears, that is a real and measurable advantage. + +That is not a knock on expert parallelism, and it is important not to over-read it. Expert parallelism exists to solve a problem we do not have here: models so large that even a tensor-parallel split cannot hold all the experts, and clusters big enough that duplicating experts everywhere would be wasteful. With 4 GPUs and a model that already fits, we are asking it to do a job it was not designed for, and paying an extra network hop per token for nothing. On a 32 or 64 GPU deployment of a trillion-parameter model the answer would very likely flip. + +### The number we are throwing away, and why + +Being straight about this because it is a good lesson in reading your own benchmarks. The very first expert-parallel run at one-request-at-a-time reported **28.71 output tokens per second**, which would have made expert parallelism look catastrophic. It was not real. Look at the two TTFT figures from that run: + +``` +Mean TTFT (ms): 3987.38 +Median TTFT (ms): 265.56 +``` + +A mean fifteen times the median means one request behaved completely differently from the other eleven. One request stalled for about 45 seconds, almost certainly a one-off kernel compilation on the first pass through a code path, and that single stall stretched the whole benchmark from 63 seconds to 107 seconds. Since throughput is just tokens divided by wall-clock, one stall wrecked the headline number. + +This is why the table above uses **median time per token** as the decode measurement rather than aggregate throughput. Median per-token latency does not care that one request had a bad start. + +One more benchmarking trap while we are here. When we re-ran that same benchmark on the warm server, time to first token dropped from 265 ms to **61 ms**, which looks like a wonderful improvement and is actually meaningless: vLLM caches prompt prefixes by default, and we had just sent it those exact prompts with the same `--seed 42`. If you are comparing configurations, either vary the seed or turn prefix caching off, otherwise your second measurement is mostly measuring your cache. + +### What we would actually run + +For a 235B MoE on 4 GPUs with no NVLink between them, we would use plain `--tensor-parallel-size 4` and leave both of the others off. It was faster nearly everywhere, it gives the most conversation capacity, it splits memory perfectly evenly, and it is one less thing to reason about. + +We would reach for the other two in specific situations, not as general upgrades: + +- **Pipeline parallelism** if time to first token is the metric you are judged on, or if you are spanning multiple machines where the network between them is genuinely slow. It was 15% better at first-token latency and it barely uses the interconnect. +- **Expert parallelism** when the model is so large that even a tensor-parallel split cannot hold all the experts, which is a real problem at trillion-parameter scale and simply is not our problem at 235B on 4 cards. Here it cost 7% and returned nothing. + + +## Part 12: Errors you will actually hit + +Every one of these is a real message we collected while doing this, not a hypothetical. + +### "must be divisible by tensor parallel size" + +We asked for 3 GPUs, which is a perfectly reasonable-sounding thing to want, and got: + +``` +pydantic_core._pydantic_core.ValidationError: 1 validation error for VllmConfig + Value error, Total number of attention heads (64) must be divisible by tensor + parallel size (3). +``` + +**What it means:** the rule from Part 10. 64 heads cannot be shared out evenly among 3 GPUs. Good news, it fails in about a second, before loading a single byte of weights. + +**The fix:** pick a `--tensor-parallel-size` that divides your head count. Powers of two are the safe habit. + +### "Failed to load model - not enough GPU memory" + +Then we tried 2 GPUs, which puts about 110 GiB of weights on a 95 GiB card. It got most of the way through loading and then died: + +``` +ERROR [gpu_model_runner.py:5403] Failed to load model - not enough GPU memory. +Try lowering --gpu-memory-utilization to free memory for weights, increasing +--tensor-parallel-size, or using --quantization. +(original error: CUDA out of memory. Tried to allocate 768.00 MiB. GPU 0 has a +total capacity of 95.01 GiB of which 438.31 MiB is free. Including non-PyTorch +memory, this process has 94.57 GiB memory in use.) +``` + +**What it means:** exactly what it says. The weights for half this model do not fit on one of these cards. Note the useful detail in there, `438.31 MiB is free` out of `95.01 GiB`, so it filled the card almost exactly and then had nowhere to put the next 768 MiB chunk. + +**The fix:** vLLM lists the three real options itself, and for our case only one of them helps. Lowering `--gpu-memory-utilization` would make things worse, not better, because it reduces the space available for weights. Quantizing further would work but changes the model. So the answer is more GPUs, which is the whole point of this post. + +Worth knowing: this one is slow to fail, because it has to read and place most of the weights before it runs out. Budget several minutes, unlike the divisibility error which fails instantly. + +### "Unknown SF transformation", the one that cost us the most time + +This is the error we did not see coming, and it is worth the whole section. With 4 GPUs and everything sized correctly, all four workers died during startup: + +``` +RuntimeError: Assertion error (/workspace/.deps/deepgemm-src/csrc/apis/layout.hpp:60): +Unknown SF transformation +``` + +**What it means:** this model stores its FP8 weights in blocks, with a separate scale factor per 128x128 block, which you can see in its config as `"weight_block_size": [128, 128]`. vLLM hands that kind of matrix multiplication to a library called DeepGEMM, and DeepGEMM did not know how to lay out those scale factors ("SF" is scale factor) on our particular GPU. The RTX PRO 6000 is Blackwell, but it reports as `sm_120`, which is not the same silicon target as the data-centre Blackwell parts that DeepGEMM is usually exercised on. + +Notice how unhelpful the message is if you do not know that background. Nothing in it mentions FP8, quantization, or your GPU. + +**The fix**, which is one environment variable: + +```bash +docker run -d ... -e VLLM_USE_DEEP_GEMM=0 ... vllm/vllm-openai:latest ... +``` + +That tells vLLM to use its own FP8 kernels instead of DeepGEMM. Startup then went through cleanly. There is a performance cost to giving up a specialised kernel, so on hardware where DeepGEMM works you would leave it on. + +**The general lesson:** a quantized model is a contract between the checkpoint's format and a kernel that understands it. When a big quantized model fails to start on hardware that clearly has enough memory, suspect the kernel and the number format before you suspect your parallelism settings. + +### A confusing parse error when you try to run something else in the container + +``` +vllm serve: error: argument --compilation-config/-cc: Invalid JSON: expected value at line 2 +``` + +**What it means:** you ran `docker run ... vllm/vllm-openai:latest python3 -c "..."`, but the image's entrypoint is already `vllm serve`, so your Python source got handed to vLLM as a command-line argument. + +**The fix:** `--entrypoint python3`, as shown in Part 8. + +### "No available shared memory broadcast block found in 60 seconds" + +**What it means:** usually nothing. It shows up while vLLM is busy compiling or capturing CUDA graphs and the worker processes have not checked in for a minute. If it repeats forever and startup never finishes, then you probably forgot `--ipc=host` and the workers cannot pass data to each other through shared memory. + +**The fix:** add `--ipc=host`. If you already have it, wait a bit longer, because CUDA graph capture on a big model is genuinely slow. + + +## Wrapping up + +If you take five things away from this, let them be these. + +**One.** Inference is two jobs, not one. Prefill reads your whole prompt at once and is limited by compute; decode writes one token at a time and is limited by memory bandwidth. Every confusing multi-GPU result in this post traces back to that split, so when a change helps one metric and hurts the other, this is why. + +**Two.** Work out the memory on paper first. Parameters times bytes-per-parameter gives you the weights, and then remember that the weights are only one of three things that must fit, alongside the conversation cache and the working space. A model whose weights just barely fit is a model that cannot serve anybody. + +**Three.** "Splitting across GPUs" is three different things. Tensor parallelism slices every layer and makes all your GPUs work on the same token, at the cost of constant chatter. Pipeline parallelism cuts the layer stack into blocks and barely communicates, at the cost of GPUs waiting their turn. Expert parallelism only exists for mixture-of-experts models and hands out whole experts. You can combine them, and for big models you usually do. + +**Four.** Read the startup log. `Model loading took`, `Available KV cache memory`, `GPU KV cache size` and `Maximum concurrency` tell you, in four lines, whether your setup is sane and how many users it can actually hold. A negative cache number is the clearest error message in the whole stack. + +**Five.** Check `num_key_value_heads` in `config.json` before you plan your hardware. It, not the parameter count, is usually what limits how many GPUs you can split across cleanly. + +One last practical warning, because it cost us more than any GPU problem did. **Check your disk before you download.** A quarter of a terabyte of model weights on a shared machine is not just a storage question, it is a question about everything else living on that disk. Ours was a Kubernetes node, free space crossed the kubelet's eviction threshold, and it evicted the platform's own pods and garbage-collected locally-built images that no registry could replace. `df -h` first, and leave real headroom. + +Try it on whatever you have. Two GPUs are enough to see every concept in this post in action, and the log lines mean the same thing whether you are running 4 GPUs or 40. If you hit something we did not cover, tell us and we will add it. + +## Credits and references + +- The tensor parallel scheme is from **Megatron-LM: Training Multi-Billion Parameter Language Models Using Model Parallelism** by Mohammad Shoeybi, Mostofa Patwary, Raul Puri, Patrick LeGresley, Jared Casper and Bryan Catanzaro: [arxiv.org/abs/1909.08053](https://arxiv.org/abs/1909.08053) +- vLLM parallelism and scaling guide: [docs.vllm.ai/en/latest/serving/parallelism_scaling.html](https://docs.vllm.ai/en/latest/serving/parallelism_scaling.html) +- vLLM memory and optimization docs: [conserving_memory](https://docs.vllm.ai/en/latest/configuration/conserving_memory.html) and [optimization](https://docs.vllm.ai/en/latest/configuration/optimization.html) +- Model card and config: [huggingface.co/Qwen/Qwen3-235B-A22B-Instruct-2507-FP8](https://huggingface.co/Qwen/Qwen3-235B-A22B-Instruct-2507-FP8) +- Thanks to the vLLM maintainers, whose startup logging is the best free lesson in distributed inference available anywhere. diff --git a/content/blog/running-a-single-llm-across-two-gpus-with-vllm.md b/content/blog/running-a-single-llm-across-two-gpus-with-vllm.md deleted file mode 100644 index a1d0b1f6c..000000000 --- a/content/blog/running-a-single-llm-across-two-gpus-with-vllm.md +++ /dev/null @@ -1,362 +0,0 @@ ---- -title: "Running a single LLM across two GPUs with vLLM" -seoTitle: "Running a single LLM across two GPUs with vLLM" -seoDescription: "How tensor parallelism splits one model's weights across two cards, the memory math that tells you if it fits, and measured TP versus PP numbers on a pair of GPUs with no NVLink." -datePublished: 2026-08-18T10:00:00.000Z -slug: running-a-single-llm-across-two-gpus-with-vllm -author: saiyam-pathak -cover: /img/blog/running-a-single-llm-across-two-gpus-with-vllm/cover.png -tags: ["vllm", "gpu", "nvidia", "tensor-parallelism"] ---- - -Someone asked me this in a thread the other day, and it is such a good question that it deserves a full walkthrough: - -> Has anyone hosted a single LLM by splitting weights across 2 GPUs and served it through vLLM or another inference engine? I have a couple of A40 with 45GB usable VRAM. And want to host the BF16 variant as-is, like we have an RTX PRO 6000, you know, like on 2 cards. How can I do it and how does it work fundamentally, like are the weights split or what happens? - -Three questions hiding in there, so let's take them in order. Can you do it? Yes. How do you do it? One flag, mostly. And what actually happens to the weights? That is the interesting part, and it is where most people's mental model is a bit off. - -## What you will get from this post - -- The memory math that tells you whether your model fits on two cards, before you download 60 GB -- What tensor parallelism actually does to a weight matrix, layer by layer -- The exact vLLM commands, with real terminal output from a real run -- Why a pair of cards without an NVLink bridge might be faster with pipeline parallelism, and how to measure that yourself -- The A40-specific catches, because Ampere has one limitation that changes your options - -## The setup I tested on - -I need to be upfront about the hardware, because it matters for how you read the numbers. - -I do not have a pair of A40s. What I do have access to is a box with 8x NVIDIA RTX PRO 6000 Blackwell Server Edition cards, so I borrowed two of them and deliberately handicapped them to behave like A40s for the part that matters most, which is the memory budget. An A40 gives you roughly 45 GiB of usable VRAM, and at the usual `--gpu-memory-utilization 0.90` that leaves vLLM a budget of about 40.5 GiB per card. On a 95.01 GiB Blackwell card, the same 40.5 GiB budget is `--gpu-memory-utilization 0.426`, so that is what I used everywhere below. - -There is one thing I did not have to fake. Let's look at the interconnect: - -```console -$ nvidia-smi topo -m - GPU0 GPU1 GPU2 GPU3 GPU4 GPU5 GPU6 GPU7 CPU Affinity NUMA Affinity -GPU0 X SYS SYS SYS SYS SYS SYS SYS 48-55,176-183 6 -GPU1 SYS X SYS SYS SYS SYS SYS SYS 32-39,160-167 4 -GPU2 SYS SYS X SYS SYS SYS SYS SYS 0-7,128-135 0 -GPU3 SYS SYS SYS X SYS SYS SYS SYS 16-23,144-151 2 -GPU4 SYS SYS SYS SYS X SYS SYS SYS 112-119,240-247 14 -GPU5 SYS SYS SYS SYS SYS X SYS SYS 96-103,224-231 12 -GPU6 SYS SYS SYS SYS SYS SYS X SYS 64-71,192-199 8 -GPU7 SYS SYS SYS SYS SYS SYS SYS X 80-87,208-215 10 - -Legend: - X = Self - SYS = Connection traversing PCIe as well as the SMP interconnect between NUMA nodes (e.g., QPI/UPI) - NV# = Connection traversing a bonded set of # NVLinks -``` - -Every pair says `SYS`, which means there is no NVLink anywhere on this box. Every GPU-to-GPU hop goes across PCIe and then across the CPU's own interconnect between NUMA nodes. If your two A40s do not have an NVLink bridge physically installed between them, and most people's do not, then you are in exactly this situation. That turns out to be the most important fact in this whole post, and I'll come back to it. - -The software, pinned: - -```console -vllm 0.27.1 -torch 2.13.0+cu130 cuda 13.0 -driver 610.43.02 -GPU 0: NVIDIA RTX PRO 6000 Blackwell Server Edition 95.01 GiB sm_120 -GPU 1: NVIDIA RTX PRO 6000 Blackwell Server Edition 95.01 GiB sm_120 -p2p 0<->1 True -``` - -For the model I picked **Qwen3-32B** in BF16, because it is the honest version of this question. At 32.8B parameters in bfloat16 it genuinely does not fit on one 45 GiB card, but it does fit on two, so the second card is doing real work rather than being a nice-to-have. - -## Why one card is not enough, in numbers - -Before touching any flags, let's do the arithmetic, because you can answer "will this fit" on paper in about a minute. - -A BF16 weight is 2 bytes. So the weights alone are `params x 2 bytes`. For Qwen3-32B that is about 61 GiB, and vLLM tells you the same thing when it reads the checkpoint: - -```console -INFO [weight_utils.py:867] Filesystem type for checkpoints: EXT4. Checkpoint size: 61.02 GiB. Available RAM: 1186.67 GiB. -``` - -61.02 GiB of weights against a 40.5 GiB budget on a single card. That is not close, and it is worth actually watching it fail, because the error message vLLM gives you here is one you will meet again: - -```console -$ docker run --gpus '"device=1"' ... vllm/vllm-openai:latest Qwen/Qwen3-32B \ - --tensor-parallel-size 1 --gpu-memory-utilization 0.426 --max-model-len 32768 - -INFO [model_runner.py:329] Model loading took 61.03 GiB and 16.146783 seconds -INFO [gpu_worker.py:563] Available KV cache memory: -24.42 GiB -ValueError: No available memory for the cache blocks. Try increasing `gpu_memory_utilization` -when initializing the engine. -``` - -**Available KV cache memory: -24.42 GiB.** I love this line. vLLM loaded the weights, then subtracted them and its activation overhead from the budget, and found it was 24 GiB in the hole before storing a single token of context. The suggestion to increase `gpu_memory_utilization` is a red herring here, since there is no value of it that makes 61 GiB fit in 45. - -{{two-gpu-memory-fit-animation}} - -So that is the wall. Now let's get over it. - -## What actually happens to the weights - -### First, the thing NVLink does not do - -Your question mentioned wanting the pair to behave "like we have an RTX PRO 6000", so let me clear up the most common misconception before anything else, because NVIDIA's own datasheet invites it. That datasheet advertises "48 GB GDDR6 memory with NVLink" and says it is "scalable up to 96 GB with NVLink", which certainly reads like two bridged cards turn into one 96 GB card. They do not. The footnote on that same page is where the real story is: - -> Connecting two NVIDIA A40 cards with NVLink to scale performance and memory capacity to 96 GB is only possible if your application supports NVLink technology. Please contact your application provider to confirm their support for NVLink. - -"Only possible if your application supports it" is carrying a lot of weight in that sentence. There is no mode, bridge or no bridge, where CUDA presents your two 48 GB cards to vLLM as a single 96 GB device. Each GPU keeps its own separate memory, and some piece of software has to deliberately cut the model up and coordinate the halves. NVLink never creates the pool, it only makes the conversation between the halves faster. Configuring that software is what the rest of this post is about. - -### Now the split itself - -The short answer to your actual question is **yes, the weights are genuinely split, and it happens inside each layer, not between layers.** - -The technique is called **tensor parallelism**, and it comes from the Megatron-LM paper by Shoeybi and colleagues at NVIDIA. The idea is that a transformer is mostly a stack of big matrix multiplications, and a big matrix multiplication can be cut into pieces that live on different GPUs. - -Take the MLP block in a layer. It is two matrix multiplies with a nonlinearity in between: `Y = GeLU(X x A)` then `Z = Y x B`. You could split the first matrix `A` by rows, but then you would have to glue the pieces back together before applying GeLU, because GeLU is nonlinear and `GeLU(a + b)` is not `GeLU(a) + GeLU(b)`. So Megatron splits `A` **column-wise** instead, and as the paper puts it, "the partitioning allows the GeLU nonlinearity to be independently applied to the output of each partitioned GEMM". Each GPU produces its own complete columns of `Y`, applies GeLU locally, and nobody has to talk to anybody. - -Then the second matrix `B` is split **row-wise**, which lines up perfectly with the column split of the first one. Each GPU multiplies its slice of `Y` by its slice of `B` and gets a partial sum of the final answer. Now, and only now, the GPUs have to add their partial sums together. That is one **all-reduce**. - -Drawn out, one MLP block across two cards looks like this: - -{{two-gpu-tensor-split-animation}} - -Notice what is split and what is not. The **weights** are split, each card holding half of `A` and half of `B` and never seeing the other half. The **activations** flowing through are replicated, so both cards start from the same full copy of `X` and both end up with the same full copy of `Z` after the all-reduce. That is the trade at the heart of tensor parallelism: you halve the weight memory, and you pay for it by keeping the activations in sync. - -A quick note if you go and read the Megatron paper, because the shapes have moved on since 2019. The paper describes a two-matrix MLP with a GeLU in the middle, which is what GPT-2 era models used. Qwen3 and most current models use SwiGLU instead, which has three matrices: `gate_proj`, `up_proj` and `down_proj`, and `silu` rather than GeLU (you can see `"hidden_act": "silu"` in the config below). The partitioning logic carries over unchanged though. `gate_proj` and `up_proj` are both column-parallel, they get multiplied together elementwise which stays local, and `down_proj` is row-parallel and produces the partial sums. Three matrices instead of two, still exactly one all-reduce. - -Attention works the same way, and the split is even more intuitive. The Q, K and V projections are cut column-wise "such that the matrix multiply corresponding to each attention head is done locally on one GPU". Qwen3-32B has 64 attention heads, so with two GPUs each card simply owns 32 whole heads and computes attention for them start to finish with no communication at all. The output projection is then row-wise, which again produces partial sums, which again need one all-reduce. - -Two matrix-multiply blocks, one all-reduce each. The paper states it plainly: this "enables us to perform all GEMMs in a simple transformer layer using only two all-reduces in the forward path and two in the backward path". Inference is forward-only, so for us it is **two all-reduces per layer**. - -Qwen3-32B has 64 layers. So generating a single token means **128 all-reduces**, in sequence, one after another, because layer 5 cannot start until layer 4 has finished exchanging. Hold that thought. - -### The KV cache splits too, and that is a bonus - -This part people often miss. Because each GPU owns a subset of the attention heads, it only needs to cache keys and values for *its own* heads. The KV cache is split right along with the weights. - -Qwen3-32B uses grouped-query attention with 8 key/value heads, so the cache per token for the whole model is: - -``` -2 (K and V) x 64 layers x 8 kv_heads x 128 head_dim x 2 bytes = 262,144 bytes = 256 KiB per token -``` - -With two GPUs, each card holds 4 of those 8 KV heads, so each card stores 128 KiB per token instead of the full 256 KiB. The cache is not duplicated across cards, it is divided, so the memory you free up by splitting the weights turns into context capacity rather than being eaten by a second copy of the cache. That is why the second card buys you two things at once, and it is the number I will check against reality further down. - -### The divisibility rule you need to check first - -Because heads are handed out whole, **your tensor parallel size has to divide your head counts**. Before you commit to a model, open its `config.json` and check. For Qwen3-32B: - -```json -{ - "num_hidden_layers": 64, - "hidden_size": 5120, - "num_attention_heads": 64, - "num_key_value_heads": 8, - "head_dim": 128, - "intermediate_size": 25600, - "torch_dtype": "bfloat16" -} -``` - -64 attention heads divided by 2 is 32, 8 KV heads divided by 2 is 4, and `intermediate_size` 25600 divided by 2 is 12800. All clean, so TP=2 will work. This is why some models refuse to run at TP=8 or TP=3 while being perfectly happy at TP=2, and it is a config-file question, not a mystery. - -## Doing it with vLLM - -After all that theory, the actual change is one flag. Let's run it: - -```bash -docker run -d --name vllm-tp2 \ - --gpus '"device=1,4"' --ipc=host -p 8101:8000 \ - -v /root/.cache/huggingface:/root/.cache/huggingface \ - -e HF_HUB_OFFLINE=1 -e HF_HOME=/root/.cache/huggingface \ - vllm/vllm-openai:latest Qwen/Qwen3-32B \ - --tensor-parallel-size 2 \ - --gpu-memory-utilization 0.426 \ - --max-model-len 32768 \ - --port 8000 -``` - -`--tensor-parallel-size 2` is the whole trick. On a real pair of A40s you would use `--gpu-memory-utilization 0.90` instead of my emulated `0.426`, and everything else stays the same. - -Two container details that will bite you if you skip them. `--ipc=host` matters because the tensor parallel workers are separate processes that talk over shared memory, and Docker's default 64 MB `/dev/shm` is not enough. And `--gpus '"device=1,4"'` with that exact nested quoting is how you hand Docker a specific pair of cards; inside the container they are renumbered 0 and 1. - -Now the proof that the split is real. Here is what vLLM logs on startup: - -```console -(Worker_TP0 pid=611) INFO [model_runner.py:329] Model loading took 30.59 GiB and 20.690370 seconds -(Worker_TP1 pid=612) INFO [model_runner.py:329] Model loading took 30.59 GiB and 20.456472 seconds -(Worker_TP0 pid=611) INFO [gpu_worker.py:563] Available KV cache memory: 8.22 GiB -(EngineCore pid=411) INFO [kv_cache_utils.py:2235] GPU KV cache size: 67,296 tokens -(EngineCore pid=411) INFO [kv_cache_utils.py:2236] Maximum concurrency for 32,768 tokens per request: 2.05x -``` - -**30.59 GiB on each worker**, and 30.59 doubled is 61.18, which is our 61.02 GiB checkpoint plus a rounding hair. There are two workers, `Worker_TP0` and `Worker_TP1`, one per GPU, each holding exactly half the model. The weights are not replicated. They are cut in half. - -And from outside the container: - -```console -$ nvidia-smi --query-gpu=index,memory.used --format=csv,noheader -1, 45171 MiB -4, 45171 MiB -``` - -Identical to the megabyte on both cards, which is what an even split looks like. - -Let's also check that the KV math I did earlier actually predicts reality. Each card reported 8.22 GiB free for cache, and I said each card stores 128 KiB per token: - -``` -8.22 GiB / 128 KiB = 67,338 tokens -``` - -vLLM reported 67,296. That is a match to within the rounding of "8.22", and it means you can predict your own context capacity on paper before you ever start the server. With `--max-model-len 32768`, 67,296 tokens of cache is 2.05 full-length requests in flight, which is exactly the `2.05x` vLLM printed. - -## What those all-reduces actually cost you - -So we are done, right? Two cards, model fits, `-tp 2`, ship it. - -Not quite. Remember those 128 sequential all-reduces per token. Let's think about how big each one actually is. An all-reduce after the attention or MLP block has to exchange a tensor of shape `[tokens_in_batch, hidden_size]`. At `hidden_size` 5120 in BF16, with a single request decoding one token at a time, that is: - -``` -1 token x 5120 x 2 bytes = 10,240 bytes = 10 KB -``` - -Ten kilobytes. That is nothing. The A40 datasheet lists its interconnect as "NVIDIA NVLink 112.5 GB/s (bidirectional), PCIe Gen4: 64GB/s", so NVLink is a bit under twice the bandwidth of the PCIe path. Neither number matters here, though, because you are not moving enough data to care about bandwidth at all. What you are paying is **latency**, 128 times per token, and every one of those hops on a no-NVLink box goes out over PCIe and across the CPU's NUMA interconnect. - -This is why vLLM's own documentation gives advice that surprises people. Straight from their parallelism guide: - -> if the GPUs on the node do not have NVLINK interconnect (e.g. L40S), leverage pipeline parallelism instead of tensor parallelism for higher throughput and lower communication overhead. - -**Pipeline parallelism** splits the model a completely different way: by layers, not inside them. With PP=2 and 64 layers, GPU 0 gets layers 0 to 31 and GPU 1 gets layers 32 to 63. Your memory problem is solved just as well, since each card still holds half the weights. But the communication is utterly different. Instead of 128 all-reduces per token, GPU 0 finishes its 32 layers and hands one activation tensor to GPU 1, once. One point-to-point send instead of 128 collectives. - -The cost is that PP is a relay race. With a single request in flight, GPU 1 sits idle while GPU 0 works, then GPU 0 sits idle while GPU 1 works, so you are using half your silicon at any moment. vLLM notes this too, saying that increasing pipeline parallel size "may cause latency penalties". PP pays off when you have enough concurrent requests to keep both stages busy at once, which is what continuous batching gives you. - -{{two-gpu-tp-vs-pp-animation}} - -So the honest answer is that TP and PP trade against each other, the crossover depends on your interconnect and your concurrency, and you should measure it on your own box. Which is what I did. - -## TP=2 vs PP=2, measured - -Switching to pipeline parallelism is the same kind of one-flag change: - -```bash -docker run -d --name vllm-pp2 \ - --gpus '"device=1,4"' --ipc=host -p 8102:8000 \ - -v /root/.cache/huggingface:/root/.cache/huggingface \ - -e HF_HUB_OFFLINE=1 -e HF_HOME=/root/.cache/huggingface \ - vllm/vllm-openai:latest Qwen/Qwen3-32B \ - --pipeline-parallel-size 2 \ - --gpu-memory-utilization 0.426 \ - --max-model-len 32768 \ - --port 8000 -``` - -And it splits the weights just as effectively, which you can see in the workers being named `PP` instead of `TP` now: - -```console -(Worker_PP0 pid=611) INFO [model_runner.py:329] Model loading took 30.52 GiB and 9.017490 seconds -(Worker_PP1 pid=612) INFO [model_runner.py:329] Model loading took 30.52 GiB and 9.547118 seconds -(Worker_PP0 pid=611) INFO [gpu_worker.py:563] Available KV cache memory: 6.92 GiB -(EngineCore pid=411) INFO [kv_cache_utils.py:2235] GPU KV cache size: 56,640 tokens -(EngineCore pid=411) INFO [kv_cache_utils.py:2236] Maximum concurrency for 32,768 tokens per request: 1.73x -``` - -### The memory difference shows up first - -Look at the KV cache: **56,640 tokens with PP against 67,296 with TP**, on identical hardware and an identical memory budget. Pipeline parallelism gave me 18.8% less usable context. - -The per-token cost per card is actually the same in both modes, which is a nice coincidence worth understanding. Under TP each card holds all 64 layers but only 4 of the 8 KV heads. Under PP each card holds all 8 KV heads but only 32 layers. `64 x 4` and `32 x 8` are the same number, so both come out at 128 KiB per token per card. - -The difference is pure overhead. Subtracting weights and cache from the 40.47 GiB budget, TP left 1.66 GiB of overhead per card and PP left 3.03 GiB, because the pipeline needs extra buffers for activations in flight between the stages. That overhead comes straight out of your context capacity. - -There is a second, smaller difference worth knowing about. Tensor parallelism divided the memory perfectly evenly, while pipeline parallelism did not: - -```console -# TP=2 -1, 45171 MiB -4, 45171 MiB - -# PP=2 -1, 40701 MiB -4, 43667 MiB -``` - -Identical to the megabyte under TP, and about 3 GB apart under PP. That is because a layer split cannot be perfectly even when the ends of the model are not symmetric: the first stage carries the token embedding, the last stage carries the final norm and the language modelling head. It rarely matters at PP=2 on matched cards, but it is exactly the kind of thing that bites you if you ever try to split across two cards of *different* sizes, since your headroom is set by whichever card ends up fuller. - -### Now the throughput - -Same benchmark for both, `vllm bench serve` with a random dataset at 1024 input and 256 output tokens, `--ignore-eos` so every request generates exactly 256 tokens, run at concurrency 1 and again at concurrency 32: - -```bash -vllm bench serve --model Qwen/Qwen3-32B --base-url http://localhost:8000 \ - --dataset-name random --random-input-len 1024 --random-output-len 256 \ - --max-concurrency 1 --num-prompts 16 --seed 42 --ignore-eos -``` - -Before the table, one caveat that I want to put right next to the numbers rather than bury at the end. The memory results above transfer to your A40s directly, because I matched the memory budget on purpose and weight splitting does not care what architecture it runs on. The **throughput** results do not transfer as cleanly, and not simply because Blackwell is faster in absolute terms. The ratio between compute time and communication time is what decides where TP stops winning, and two things move that ratio in opposite directions on your hardware: an A40's slower compute makes each layer's math take longer, which hides the all-reduce latency and helps TP, while PCIe Gen4 instead of Gen5 makes each all-reduce cost more, which hurts TP. I cannot tell you which effect dominates on your box. So read the shape of the result below, not the absolute tok/s, and run the same two commands yourself. - -| Metric | TP=2 | PP=2 | Winner | -|---|---|---|---| -| **Concurrency 1** | | | | -| Output token throughput | 36.41 tok/s | 21.00 tok/s | TP by 73% | -| Median TPOT (per-token latency) | 26.38 ms | 46.96 ms | TP by 44% | -| Median TTFT (time to first token) | 296.37 ms | 208.57 ms | PP by 30% | -| **Concurrency 32** | | | | -| Output token throughput | 496.60 tok/s | 487.56 tok/s | TP by 1.9% | -| Median TPOT | 47.22 ms | 56.40 ms | TP by 16% | -| Median TTFT | 3892.42 ms | 2468.40 ms | PP by 37% | -| Benchmark duration | 65.99 s | 67.21 s | TP by 1.8% | -| **Capacity** | | | | -| KV cache | 67,296 tokens | 56,640 tokens | TP by 19% | - -Let's read what actually happened here, because it is not the clean story the documentation led me to expect. - -**At concurrency 1, tensor parallelism wins convincingly**, 36.41 tok/s against 21.00, and that is exactly the relay-race effect. With one request in flight, PP has one card working and one card waiting at all times, so you get roughly one card's worth of decode speed. TP has both cards grinding on every single token, and since decode speed is mostly about memory bandwidth, using two cards' worth of bandwidth on one request is a real and large win. This is the thing PP fundamentally cannot give you. - -**At concurrency 32, the two are effectively tied.** 496.60 against 487.56 tok/s is a 1.9% gap, which is close enough to run-to-run noise that I would not make a decision on it. This is where I have to be straight with you: vLLM's docs say that without NVLink you should "leverage pipeline parallelism instead of tensor parallelism for higher throughput", and on this box **that did not reproduce**. PP never got ahead on throughput, it just caught up. I would guess that is because these cards sit on PCIe Gen5 rather than Gen4, so the all-reduces are cheaper than the guidance assumes, and because at concurrency 32 the all-reduce payload is 32 tokens wide rather than 1, which uses the link far more efficiently. On your Gen4 A40s the gap will be less favourable to TP than what I measured. Whether it crosses over, I genuinely do not know, which is the whole reason I am telling you to measure rather than handing you a verdict. - -**The one place PP clearly wins is time to first token**, by 30% at concurrency 1 and 37% at concurrency 32. That one took me a moment to see, and it makes sense once you think about payload sizes. Prefill processes your whole 1024-token prompt at once, so each of TP's 128 all-reduces is moving `1024 x 5120 x 2 bytes`, about 10 MB, not the 10 KB a single decode step moves. Suddenly you *are* bandwidth-bound, and 128 ten-megabyte collectives over PCIe is a real cost. PP moves one activation tensor between stages and skips all of it. - -So the shape of the answer, on a box with no NVLink: - -- Interactive, low concurrency, one user at a time: **use TP**. It is not close. -- High concurrency batch throughput: **either**, they tie, so pick TP for the extra 19% of KV cache. -- Long prompts where users are staring at a spinner waiting for the first token: **PP is worth testing**, it was meaningfully faster at prefill in both runs. - -For your A40s I would still start with `--tensor-parallel-size 2`, because it won or tied on every throughput measure here and it gives you more context capacity. Then run these exact two benchmarks with `--pipeline-parallel-size 2` and see whether your slower interconnect changes the verdict. - -## The A40-specific things to know - -A few points that apply to your cards specifically rather than to multi-GPU serving in general. - -**An NVLink bridge is available, and it is worth hunting for.** The A40 does support NVLink, at 112.5 GB/s bidirectional between a pair, via a physical bridge connector you install between two cards. If you have two A40s in one chassis and you can get the bridge, do it before you spend a week tuning flags. It turns the `SYS` line in your topology into `NV#`, and since tensor parallelism already won on my bridge-less box, cheaper all-reduces can only widen that lead and take the decision off your plate entirely. Check what you have today with `nvidia-smi topo -m`, exactly as I did above. - -**FP8 will not save you the way it saves a newer card.** This is the Ampere limitation that changes your options. vLLM's docs are explicit: "FP8 computation is supported on NVIDIA GPUs with compute capability >= 8.9 (Ada Lovelace, Hopper)." The A40 is compute capability 8.6, so it misses that by one minor version. You are not entirely locked out, because "Turing/Ampere GPUs are supported for W8A16 (weight-only FP8) utilizing Marlin kernels", which stores weights at 8 bits and computes in 16. That is a genuinely useful trick for memory: it would take Qwen3-32B's weights from 61 GiB to roughly 31 GiB and let it run on a **single** A40. But you do not get the compute speedup that an Ada or Blackwell card gets from FP8, and you did say you want BF16 as-is, so I mention it only as the escape hatch it is. - -**Both cards read the whole checkpoint.** A small operational note from vLLM's docs that surprises people watching disk I/O: with tensor parallelism "each process will read the whole model and split it into chunks", so startup reads scale with your TP size rather than being divided by it. - -## So should you just buy one RTX PRO 6000 instead? - -Your question framed it as wanting your two A40s to behave "like we have an RTX PRO 6000", so let's compare properly, because on capacity they look similar and on behaviour they are not. - -Two A40s give you about 90 GiB of aggregate VRAM. A single RTX PRO 6000 Blackwell gives 96 GiB on one card. Similar pool, and for pure "does the model fit" purposes they are close to equivalent. - -The differences that actually decide it: - -- **A single card has no interconnect tax at all.** No all-reduces, no PCIe hops, no NVLink bridge to source, no TP-versus-PP tuning. Everything in this post stops being your problem. -- **Blackwell has FP8 and FP4, Ampere has neither.** That is the bigger gap, honestly, and it decides what fits rather than only how fast it runs. A model you can only serve in BF16 on A40s might serve in FP8 on one Blackwell card, in half the memory, at full speed. -- **Two cards give you more aggregate memory bandwidth.** Two A40s is 2 x 696 GB/s of it, and decode speed is largely a memory-bandwidth story. With tensor parallelism you genuinely do get to use both cards' bandwidth on one request, which is a real advantage of TP that PP does not give you. - -My take: if you already own the two A40s, use them, because tensor parallelism works and the setup above is maybe twenty minutes of work. Find out whether you can get the NVLink bridge. If you are spending new money and you are choosing between two more A40s and one Blackwell card, buy the single newer card, mostly for FP8 rather than for avoiding the multi-GPU complexity. - -## Wrapping up - -The mental model to walk away with is that tensor parallelism cuts every big matrix in every layer down the middle, hands each GPU whole attention heads, and pays for it with two all-reduces per layer. That is why it fixes your memory problem completely and your throughput problem only conditionally, because those all-reduces are cheap over NVLink and expensive over PCIe. Pipeline parallelism cuts the stack by layers instead, communicates almost nothing, and needs concurrency to keep both cards busy. - -For your two A40s, start with `--tensor-parallel-size 2`, run the same two benchmarks I ran above at your real concurrency, then try `--pipeline-parallel-size 2` and keep whichever wins. Both of them solve the fitting problem, so you are only choosing on speed, and it is a ten-minute experiment on your own hardware which beats anyone's opinion including mine. - -Give it a try and let me know how it goes, especially if you get an NVLink bridge on those A40s, because I would love to see the before-and-after numbers on real Ampere silicon. - -## Credits and references - -- The tensor parallel scheme comes from **Megatron-LM: Training Multi-Billion Parameter Language Models Using Model Parallelism** by Mohammad Shoeybi, Mostofa Patwary, Raul Puri, Patrick LeGresley, Jared Casper and Bryan Catanzaro: [arxiv.org/abs/1909.08053](https://arxiv.org/abs/1909.08053) -- vLLM parallelism and scaling guide: [docs.vllm.ai/en/latest/serving/parallelism_scaling.html](https://docs.vllm.ai/en/latest/serving/parallelism_scaling.html) -- vLLM conserving memory and optimization docs: [docs.vllm.ai/en/latest/configuration/conserving_memory.html](https://docs.vllm.ai/en/latest/configuration/conserving_memory.html) and [optimization.html](https://docs.vllm.ai/en/latest/configuration/optimization.html) -- vLLM FP8 quantization support matrix: [docs.vllm.ai/en/latest/features/quantization/llm_compressor/fp8/](https://docs.vllm.ai/en/latest/features/quantization/llm_compressor/fp8/) -- NVIDIA A40 datasheet, for the 48 GB GDDR6, 696 GB/s and 112.5 GB/s NVLink figures: [nvidia.com A40 datasheet](https://images.nvidia.com/content/Solutions/data-center/a40/nvidia-a40-datasheet.pdf) -- Qwen3-32B model card and config: [huggingface.co/Qwen/Qwen3-32B](https://huggingface.co/Qwen/Qwen3-32B) diff --git a/lib/_blog-feed-data.js b/lib/_blog-feed-data.js index 434f3996b..6e7748a53 100644 --- a/lib/_blog-feed-data.js +++ b/lib/_blog-feed-data.js @@ -1,5 +1,17 @@ // AUTO-GENERATED by scripts/generate-feeds.mjs. Do not edit by hand. export const FEED_POSTS = [ + { + "slug": "running-a-big-llm-across-multiple-gpus-with-vllm", + "title": "Running a big LLM across multiple GPUs with vLLM", + "description": "A plain-English guide to serving a model that is too big for one GPU: how tensor, pipeline, and expert parallelism split it up, what every vLLM flag does, and measured numbers from a 235B model on four RTX PRO 6000 cards.", + "datePublished": "2026-08-18T10:00:00.000Z", + "cover": "/img/blog/running-a-big-llm-across-multiple-gpus-with-vllm/cover.png", + "tags": [ + "vllm", + "gpu", + "nvidia" + ] + }, { "slug": "local-llm-glossary", "title": "The Local LLM Glossary: Every Term, Flag, and Number in Plain English", @@ -343,17 +355,5 @@ export const FEED_POSTS = [ "docker-images", "docker-container" ] - }, - { - "slug": "day-3-stop-writing-dockerfiles-from-scratch", - "title": "Day 3: Stop Writing Dockerfiles From Scratch", - "description": "Stop writing Dockerfiles from scratch. A Docker Captain walks through docker init, layer caching, multi-stage builds, and docker debug for 2026.", - "datePublished": "2026-04-24T17:10:21.609Z", - "cover": "/img/blog/day-3-stop-writing-dockerfiles-from-scratch/9a9c22be-d40d-4d2e-a85a-9877ce728557.svg", - "tags": [ - "docker", - "dockerfile", - "docker-images" - ] } ]; diff --git a/lib/markdown.js b/lib/markdown.js index 23686f632..17330723f 100644 --- a/lib/markdown.js +++ b/lib/markdown.js @@ -23,9 +23,10 @@ import HAMiBlastRadiusAnimation from '@/components/HAMiBlastRadiusAnimation'; import HAMiRequestFlowAnimation from '@/components/HAMiRequestFlowAnimation'; import HAMiSlotMathAnimation from '@/components/HAMiSlotMathAnimation'; import DynamicMigLifecycleAnimation from '@/components/DynamicMigLifecycleAnimation'; -import TwoGpuTensorSplitAnimation from '@/components/TwoGpuTensorSplitAnimation'; -import TwoGpuMemoryFitAnimation from '@/components/TwoGpuMemoryFitAnimation'; -import TwoGpuTpVsPpAnimation from '@/components/TwoGpuTpVsPpAnimation'; +import MultiGpuSplitModesAnimation from '@/components/MultiGpuSplitModesAnimation'; +import MultiGpuTensorSplitAnimation from '@/components/MultiGpuTensorSplitAnimation'; +import MultiGpuMemoryFitAnimation from '@/components/MultiGpuMemoryFitAnimation'; +import MoeExpertRoutingAnimation from '@/components/MoeExpertRoutingAnimation'; import CodeBlock from '@/components/CodeBlock'; const BLOG_SHORTCODES = { @@ -44,9 +45,10 @@ const BLOG_SHORTCODES = { '{{hami-request-flow-animation}}': 'hami-request-flow-animation', '{{hami-slot-math-animation}}': 'hami-slot-math-animation', '{{dynamic-mig-lifecycle-animation}}': 'dynamic-mig-lifecycle-animation', - '{{two-gpu-tensor-split-animation}}': 'two-gpu-tensor-split-animation', - '{{two-gpu-memory-fit-animation}}': 'two-gpu-memory-fit-animation', - '{{two-gpu-tp-vs-pp-animation}}': 'two-gpu-tp-vs-pp-animation', + '{{multi-gpu-split-modes-animation}}': 'multi-gpu-split-modes-animation', + '{{multi-gpu-tensor-split-animation}}': 'multi-gpu-tensor-split-animation', + '{{multi-gpu-memory-fit-animation}}': 'multi-gpu-memory-fit-animation', + '{{moe-expert-routing-animation}}': 'moe-expert-routing-animation', }; function remarkBlogShortcodes() { @@ -119,9 +121,10 @@ const processor = unified() 'hami-request-flow-animation': HAMiRequestFlowAnimation, 'hami-slot-math-animation': HAMiSlotMathAnimation, 'dynamic-mig-lifecycle-animation': DynamicMigLifecycleAnimation, - 'two-gpu-tensor-split-animation': TwoGpuTensorSplitAnimation, - 'two-gpu-memory-fit-animation': TwoGpuMemoryFitAnimation, - 'two-gpu-tp-vs-pp-animation': TwoGpuTpVsPpAnimation, + 'multi-gpu-split-modes-animation': MultiGpuSplitModesAnimation, + 'multi-gpu-tensor-split-animation': MultiGpuTensorSplitAnimation, + 'multi-gpu-memory-fit-animation': MultiGpuMemoryFitAnimation, + 'moe-expert-routing-animation': MoeExpertRoutingAnimation, pre: CodeBlock, }, }); diff --git a/public/_redirects b/public/_redirects index bff5d41f7..3e2e5eea9 100644 --- a/public/_redirects +++ b/public/_redirects @@ -183,6 +183,7 @@ /blog/qwen3-8-27b-on-dgx-spark /qwen3-8-27b-on-dgx-spark 301! /blog/rancher-desktop-evolution /rancher-desktop-evolution 301! /blog/ready-for-wasm-day-2023 /ready-for-wasm-day-2023 301! +/blog/running-a-big-llm-across-multiple-gpus-with-vllm /running-a-big-llm-across-multiple-gpus-with-vllm 301! /blog/sharing-gpus-in-kubernetes-with-hami /sharing-gpus-in-kubernetes-with-hami 301! /blog/simplified-introduction-to-bacalhau /simplified-introduction-to-bacalhau 301! /blog/slicing-gpus-in-kubernetes-with-nvidia-mig /slicing-gpus-in-kubernetes-with-nvidia-mig 301! @@ -408,6 +409,7 @@ /qwen3-8-27b-on-dgx-spark /blog/qwen3-8-27b-on-dgx-spark 200! /rancher-desktop-evolution /blog/rancher-desktop-evolution 200! /ready-for-wasm-day-2023 /blog/ready-for-wasm-day-2023 200! +/running-a-big-llm-across-multiple-gpus-with-vllm /blog/running-a-big-llm-across-multiple-gpus-with-vllm 200! /sharing-gpus-in-kubernetes-with-hami /blog/sharing-gpus-in-kubernetes-with-hami 200! /simplified-introduction-to-bacalhau /blog/simplified-introduction-to-bacalhau 200! /slicing-gpus-in-kubernetes-with-nvidia-mig /blog/slicing-gpus-in-kubernetes-with-nvidia-mig 200! diff --git a/public/_worker.js b/public/_worker.js index f13b5074b..9e3dff2b7 100644 --- a/public/_worker.js +++ b/public/_worker.js @@ -795,7 +795,7 @@ async function handleNewsletterApi(request, env) { const KUBESIMPLIFY_ROUTES = new Set(['/about', '/workshops', '/partnerships', '/resources', '/products', '/learn', '/privacy']); const KUBESIMPLIFY_PREFIXES = ['/products/', '/learn/']; -const BLOG_SLUGS = new Set(["10-things-you-might-not-know-about-k9s","12-practical-grep-command-examples-in-linux","a-beginners-guide-to-dualbooting-windows-with-ubuntu-part-1","a-beginners-guide-to-dualbooting-windows-with-ubuntu-part-2","a-complete-walk-through-of-devops","a-kubeconfig-for-gke-that-doesnt-need-gcloud","a-simple-way-to-structure-your-terraform-code","a-simplified-guide-to-yaml","about-my-pdf-editor-project","an-overview-of-gitops-and-argocd","announcing-buildsafe","api-response-in-go","arkade","automate-repetitive-tasks-shell-scripting","automated-github-releases-with-github-actions-and-conventional-commits","avoid-overspending-with-kubecost","aws-elastic-cloud-compute","bake-your-container-images-with-bake","become-a-hashicorp-certified-terraform-associate-preparation-guide","best-devops-tools-2025","bonsai-27b-rtx-pro-6000-dgx-spark","breaking-down-docker","building-a-zero-cve-strategy","building-apigateway-with-lambda-using-pulumi","certified-kubernetes-security-specialist-cks-2022-exam-guide","cicd-pipeline-github-actions-with-aws-ecs","ckad-exam-april-2022","claude-code-leak-what-the-source-actually-teaches","clawspark-your-private-openclaw-ai-assistant-that-never-phones-home","cloud-computing","cloud-native-buildpacks-concepts","confidential-containers-running-on-kubernetes","container-and-kubernetes-security","controlling-mcp-tools-with-agentgateway-on-kubernetes","coolify","creating-multi-node-kubernetes-cluster-locally","day-1-the-local-llm-revolution-why-your-desk-just-became-the-new-datacenter","day-1-what-actually-happens-when-you-type-docker-run","day-2-anatomy-of-an-llm-inference-request-from-prompt-to-answer-step-by-step","day-2-your-images-are-a-supply-chain-and-it-s-probably-broken","day-3-stop-writing-dockerfiles-from-scratch","day-3-the-dgx-spark-unpacked-gb10-unified-memory-sm-121-and-the-one-reason-this-hardware-exists","day-4-breaking-isolation-on-purpose-volumes-networks-and-the-real-world","day-4-quantization-demystified-bf16-fp8-nvfp4-mxfp4-int4-gguf-and-why-it-all-matters","day-5-docker-compose-how-docker-actually-gets-used","day-5-local-llm-inference-engines-wrappers-and-what-to-pick","day-6-run-an-llm-on-your-laptop-with-docker","day-7-ship-it-and-what-comes-next","deploy-a-maven-project-on-a-tomcat-server-using-jenkins-and-aws","deploy-a-simple-server-using-aws-terraform","deploying-java-application-using-docker-and-kubernetes-devops-project","devin-outposts-on-kubernetes","ditch-the-overheating-laptop-supercharge-your-docker-workflow-with-docker-offload","diy-how-to-build-a-kubernetes-policy-engine","docker-captain-journey","docker-mcp-catalog","docker-networking-demystified","dynamic-mig-in-kubernetes-with-hami","embed-http-servers-in-wasm-with-rust-and-csharp","enhancing-runtime-security-with-falco-my-hands-on-experience","ephemeral-pull-request-environment-using-vcluster","essential-linux-commands-for-devops","event-driven-architecture-simplified-monolith-to-microservices","everything-you-need-to-know-about-docker-compose","everything-you-need-to-know-about-the-linux-ls-command","exploiting-metasploitable2-using-msfconsole-kali-linux-lab","firewall-a-networks-gatekeeper","four-pillars-of-observability-in-kubernetes","get-good-at-git","getting-started-with-kind-creating-a-multi-node-local-kubernetes-cluster","getting-started-with-ko-a-fast-container-image-builder-for-your-go-applications","getting-started-with-kyverno","git-and-github-a-beginners-guide","github-actions-101-what-are-github-actions-and-how-to-use-them-a-beginners-guide","gitops-demystified","ha-kubernetes","how-a-kubernetes-service-actually-works-and-all-5-types-you-need","how-get-started-with-hashicorp-vault","how-kubernetes-endpointslices-actually-work-and-why-endpoints-had-to-die","how-to-backup-kubernetes-with-kasten-community-edition","how-to-change-directory-in-shell-scripts","how-to-install-a-kubernetes-cluster-with-kubeadm-containerd-and-cilium-a-hands-on-guide","how-to-setup-your-ftp-server-in-linux","implementing-kubernetes-network-policies-a-comprehensive-guide","important-concepts-of-operating-systems","ing-switch-119-annotations-gateway-api-traefik-impact-ratings","ing-switch-migrate-from-ingress-nginx-to-traefik-or-gateway-api-in-minutes-not-days","installing-prometheus-with-selinux","introducing-kiac-kubernetes-in-apple-containers","introducing-unikraft-lightweight-virtualization-using-unikernels","introduction-of-jenkins-pipeline","introduction-to-cicd-and-cicd-pipeline","introduction-to-cri","introduction-to-developer-platforms-with-gimlet","introduction-to-helm","introduction-to-jenkins","introduction-to-kubernetes","introduction-to-terraform","iptables-demo","istio-service-mesh","k8sgpt-tutorial-when-kubernetes-meets-ai","keptn-getting-started","ksctl-making-kubernetes-easy-across-clouds","kube-proxy-deep-dive","kube-scheduler-deep-dive","kubecon-cloudnativecon-north-america-2024-recap-themes-innovations-and-community-spirit","kubecon-cloudnativecon-rejekts-and-wasm-io-wrap-up-a-leap-into-the-future-with-webassembly-ai-and-sustainable-cloud-practices","kubectl-run-nginx-inside","kubeflow-machine-learning-on-kubernetes-part-1","kubeflow-notebooks-ml-experimentation-made-easier-part-2","kubeflow-pipelines-orchestrating-machine-learning-workflows-part-3","kubernetes-125-dockerd","kubernetes-126","kubernetes-access-control-with-authentication-authorization-admission-control","kubernetes-adoption-key-challenges-in-migrating-to-kubernetes","kubernetes-backup-using-cloudcasa","kubernetes-containerd-setup","kubernetes-crio","kubernetes-management-with-rust-a-dive-into-generic-client-go-controller-abstractions-and-crd-macros-with-kubers","kubernetes-on-apple-macbooks-m-series","kubernetes-scheduling-the-complete-guide","kubernetes-v133-key-features-updates-and-what-you-need-to-know","kubernetes-v135-whats-new-whats-changing-and-what-you-should-know","kubesimplify-a-journey-to-remember","kubesimplify-at-wasmio-and-kubecon-eu-2024","kyverno-and-cosign","kyverno-cli","lets-learn-terraform","lets-simplify-golang-part-1","lets-simplify-golang-part-2","lets-simplify-golang-part-3","lets-talk-about-ansible","linux-boot-process-simplified","linux-system-directories-explained","llm-costs-and-observability-with-agentgateway-on-kubernetes","local-llm-glossary","managing-contexts-in-kubernetes-with-plugins","managing-your-operating-system-with-package-managers","mastering-kubernetes-costs-from-monitoring-to-automation","microservices","mlxcel-rust-native-inference-engine-tested-on-m1-max","moving-code-between-git-repositories-with-copybara","multi-stage-docker-build","multi-tenancy-in-2025-and-beyond","my-first-international-conference-open-source-summit-2022","my-journey-to-kubestronaut-on-kubernetes-10th-birthday","my-kubecon-euvirtual-experience","my-schedule-for-kubecon-cloudnativecon-eu-2022","navigating-through-cncf-landscape","nemotron-3-5-lightning-on-dgx-spark","nemotron3-on-dgx-spark","networking-fundamentals-for-devops","nexus-repository-manager-what-is-it-and-how-to-configure-it-on-a-digital-ocean-droplet","nudgebee-ai-sre-copilot-hands-on","nvcf-is-now-open-source-inside-nvidia-s-gpu-function-platform","operating-systems-101-essential-knowledge-for-devopssre-engineers","optimizing-kubernetes-costs-balancing-spot-and-on-demand-instances-with-topology-spread-constraints","optimizing-scalability-a-deep-dive-into-load-testing-with-locust-on-eks","package-managers-demystified","perform-crud-operations-on-kubernetes-using-golang","platform-engineering-demystified-navigating-the-basics","pods-in-kubernetes","practical-guide-to-kubernetes-api","progressive-rollouts-with-argo-cd-rollouts","prometheus-explained","pure-cilium-a-guide-for-local-load-balancing-and-bgp","quick-bites-of-fluxcd-health-assessment","qwen3-8-27b-on-dgx-spark","rancher-desktop-evolution","ready-for-wasm-day-2023","sharing-gpus-in-kubernetes-with-hami","simplified-introduction-to-bacalhau","slicing-gpus-in-kubernetes-with-nvidia-mig","speeding-up-using-microk8s","ssh-into-your-dgx-spark-from-anywhere-in-the-world-using-tailscale","starting-your-devops-journey-as-a-windows-user","statefulsets","supply-chain-security-using-slsa-part-1-fundamentals","supply-chain-security-using-slsa-part-2-the-framework","terraform-best-practices","testing-docker-ais-gordon-how-smart-is-it","the-complete-guide-to-the-dd-command-in-linux","the-secret-gems-behind-building-container-images-enter-buildkit-and-docker-buildx","the-ultimate-guide-to-audit-logging-in-kubernetes-from-setup-to-analysis","the-webassembly-course","tutorial-build-a-cloud-cost-monitoring-system-with-terraform-ansible-and-komiser","understanding-docker-desktop-all-in-one-platform-for-containers","understanding-etcd-in-kubernetes-a-beginners-guide","understanding-how-containers-work-behind-the-scenes","understanding-the-architecture-of-kubernetes-a-beginners-guide","understanding-the-ins-and-outs-of-git-using-github","wandler-local-openai-compatible-inference-transformersjs-webgpu","what-is-reproducibility-and-why-does-it-matter","what-is-shell-scripting","why-are-network-policies-in-kubernetes-so-hard-to-understand","why-devops-case-study","wtf-is-linux-shell-command-substitution","yours-kindly-drone"]); +const BLOG_SLUGS = new Set(["10-things-you-might-not-know-about-k9s","12-practical-grep-command-examples-in-linux","a-beginners-guide-to-dualbooting-windows-with-ubuntu-part-1","a-beginners-guide-to-dualbooting-windows-with-ubuntu-part-2","a-complete-walk-through-of-devops","a-kubeconfig-for-gke-that-doesnt-need-gcloud","a-simple-way-to-structure-your-terraform-code","a-simplified-guide-to-yaml","about-my-pdf-editor-project","an-overview-of-gitops-and-argocd","announcing-buildsafe","api-response-in-go","arkade","automate-repetitive-tasks-shell-scripting","automated-github-releases-with-github-actions-and-conventional-commits","avoid-overspending-with-kubecost","aws-elastic-cloud-compute","bake-your-container-images-with-bake","become-a-hashicorp-certified-terraform-associate-preparation-guide","best-devops-tools-2025","bonsai-27b-rtx-pro-6000-dgx-spark","breaking-down-docker","building-a-zero-cve-strategy","building-apigateway-with-lambda-using-pulumi","certified-kubernetes-security-specialist-cks-2022-exam-guide","cicd-pipeline-github-actions-with-aws-ecs","ckad-exam-april-2022","claude-code-leak-what-the-source-actually-teaches","clawspark-your-private-openclaw-ai-assistant-that-never-phones-home","cloud-computing","cloud-native-buildpacks-concepts","confidential-containers-running-on-kubernetes","container-and-kubernetes-security","controlling-mcp-tools-with-agentgateway-on-kubernetes","coolify","creating-multi-node-kubernetes-cluster-locally","day-1-the-local-llm-revolution-why-your-desk-just-became-the-new-datacenter","day-1-what-actually-happens-when-you-type-docker-run","day-2-anatomy-of-an-llm-inference-request-from-prompt-to-answer-step-by-step","day-2-your-images-are-a-supply-chain-and-it-s-probably-broken","day-3-stop-writing-dockerfiles-from-scratch","day-3-the-dgx-spark-unpacked-gb10-unified-memory-sm-121-and-the-one-reason-this-hardware-exists","day-4-breaking-isolation-on-purpose-volumes-networks-and-the-real-world","day-4-quantization-demystified-bf16-fp8-nvfp4-mxfp4-int4-gguf-and-why-it-all-matters","day-5-docker-compose-how-docker-actually-gets-used","day-5-local-llm-inference-engines-wrappers-and-what-to-pick","day-6-run-an-llm-on-your-laptop-with-docker","day-7-ship-it-and-what-comes-next","deploy-a-maven-project-on-a-tomcat-server-using-jenkins-and-aws","deploy-a-simple-server-using-aws-terraform","deploying-java-application-using-docker-and-kubernetes-devops-project","devin-outposts-on-kubernetes","ditch-the-overheating-laptop-supercharge-your-docker-workflow-with-docker-offload","diy-how-to-build-a-kubernetes-policy-engine","docker-captain-journey","docker-mcp-catalog","docker-networking-demystified","dynamic-mig-in-kubernetes-with-hami","embed-http-servers-in-wasm-with-rust-and-csharp","enhancing-runtime-security-with-falco-my-hands-on-experience","ephemeral-pull-request-environment-using-vcluster","essential-linux-commands-for-devops","event-driven-architecture-simplified-monolith-to-microservices","everything-you-need-to-know-about-docker-compose","everything-you-need-to-know-about-the-linux-ls-command","exploiting-metasploitable2-using-msfconsole-kali-linux-lab","firewall-a-networks-gatekeeper","four-pillars-of-observability-in-kubernetes","get-good-at-git","getting-started-with-kind-creating-a-multi-node-local-kubernetes-cluster","getting-started-with-ko-a-fast-container-image-builder-for-your-go-applications","getting-started-with-kyverno","git-and-github-a-beginners-guide","github-actions-101-what-are-github-actions-and-how-to-use-them-a-beginners-guide","gitops-demystified","ha-kubernetes","how-a-kubernetes-service-actually-works-and-all-5-types-you-need","how-get-started-with-hashicorp-vault","how-kubernetes-endpointslices-actually-work-and-why-endpoints-had-to-die","how-to-backup-kubernetes-with-kasten-community-edition","how-to-change-directory-in-shell-scripts","how-to-install-a-kubernetes-cluster-with-kubeadm-containerd-and-cilium-a-hands-on-guide","how-to-setup-your-ftp-server-in-linux","implementing-kubernetes-network-policies-a-comprehensive-guide","important-concepts-of-operating-systems","ing-switch-119-annotations-gateway-api-traefik-impact-ratings","ing-switch-migrate-from-ingress-nginx-to-traefik-or-gateway-api-in-minutes-not-days","installing-prometheus-with-selinux","introducing-kiac-kubernetes-in-apple-containers","introducing-unikraft-lightweight-virtualization-using-unikernels","introduction-of-jenkins-pipeline","introduction-to-cicd-and-cicd-pipeline","introduction-to-cri","introduction-to-developer-platforms-with-gimlet","introduction-to-helm","introduction-to-jenkins","introduction-to-kubernetes","introduction-to-terraform","iptables-demo","istio-service-mesh","k8sgpt-tutorial-when-kubernetes-meets-ai","keptn-getting-started","ksctl-making-kubernetes-easy-across-clouds","kube-proxy-deep-dive","kube-scheduler-deep-dive","kubecon-cloudnativecon-north-america-2024-recap-themes-innovations-and-community-spirit","kubecon-cloudnativecon-rejekts-and-wasm-io-wrap-up-a-leap-into-the-future-with-webassembly-ai-and-sustainable-cloud-practices","kubectl-run-nginx-inside","kubeflow-machine-learning-on-kubernetes-part-1","kubeflow-notebooks-ml-experimentation-made-easier-part-2","kubeflow-pipelines-orchestrating-machine-learning-workflows-part-3","kubernetes-125-dockerd","kubernetes-126","kubernetes-access-control-with-authentication-authorization-admission-control","kubernetes-adoption-key-challenges-in-migrating-to-kubernetes","kubernetes-backup-using-cloudcasa","kubernetes-containerd-setup","kubernetes-crio","kubernetes-management-with-rust-a-dive-into-generic-client-go-controller-abstractions-and-crd-macros-with-kubers","kubernetes-on-apple-macbooks-m-series","kubernetes-scheduling-the-complete-guide","kubernetes-v133-key-features-updates-and-what-you-need-to-know","kubernetes-v135-whats-new-whats-changing-and-what-you-should-know","kubesimplify-a-journey-to-remember","kubesimplify-at-wasmio-and-kubecon-eu-2024","kyverno-and-cosign","kyverno-cli","lets-learn-terraform","lets-simplify-golang-part-1","lets-simplify-golang-part-2","lets-simplify-golang-part-3","lets-talk-about-ansible","linux-boot-process-simplified","linux-system-directories-explained","llm-costs-and-observability-with-agentgateway-on-kubernetes","local-llm-glossary","managing-contexts-in-kubernetes-with-plugins","managing-your-operating-system-with-package-managers","mastering-kubernetes-costs-from-monitoring-to-automation","microservices","mlxcel-rust-native-inference-engine-tested-on-m1-max","moving-code-between-git-repositories-with-copybara","multi-stage-docker-build","multi-tenancy-in-2025-and-beyond","my-first-international-conference-open-source-summit-2022","my-journey-to-kubestronaut-on-kubernetes-10th-birthday","my-kubecon-euvirtual-experience","my-schedule-for-kubecon-cloudnativecon-eu-2022","navigating-through-cncf-landscape","nemotron-3-5-lightning-on-dgx-spark","nemotron3-on-dgx-spark","networking-fundamentals-for-devops","nexus-repository-manager-what-is-it-and-how-to-configure-it-on-a-digital-ocean-droplet","nudgebee-ai-sre-copilot-hands-on","nvcf-is-now-open-source-inside-nvidia-s-gpu-function-platform","operating-systems-101-essential-knowledge-for-devopssre-engineers","optimizing-kubernetes-costs-balancing-spot-and-on-demand-instances-with-topology-spread-constraints","optimizing-scalability-a-deep-dive-into-load-testing-with-locust-on-eks","package-managers-demystified","perform-crud-operations-on-kubernetes-using-golang","platform-engineering-demystified-navigating-the-basics","pods-in-kubernetes","practical-guide-to-kubernetes-api","progressive-rollouts-with-argo-cd-rollouts","prometheus-explained","pure-cilium-a-guide-for-local-load-balancing-and-bgp","quick-bites-of-fluxcd-health-assessment","qwen3-8-27b-on-dgx-spark","rancher-desktop-evolution","ready-for-wasm-day-2023","running-a-big-llm-across-multiple-gpus-with-vllm","sharing-gpus-in-kubernetes-with-hami","simplified-introduction-to-bacalhau","slicing-gpus-in-kubernetes-with-nvidia-mig","speeding-up-using-microk8s","ssh-into-your-dgx-spark-from-anywhere-in-the-world-using-tailscale","starting-your-devops-journey-as-a-windows-user","statefulsets","supply-chain-security-using-slsa-part-1-fundamentals","supply-chain-security-using-slsa-part-2-the-framework","terraform-best-practices","testing-docker-ais-gordon-how-smart-is-it","the-complete-guide-to-the-dd-command-in-linux","the-secret-gems-behind-building-container-images-enter-buildkit-and-docker-buildx","the-ultimate-guide-to-audit-logging-in-kubernetes-from-setup-to-analysis","the-webassembly-course","tutorial-build-a-cloud-cost-monitoring-system-with-terraform-ansible-and-komiser","understanding-docker-desktop-all-in-one-platform-for-containers","understanding-etcd-in-kubernetes-a-beginners-guide","understanding-how-containers-work-behind-the-scenes","understanding-the-architecture-of-kubernetes-a-beginners-guide","understanding-the-ins-and-outs-of-git-using-github","wandler-local-openai-compatible-inference-transformersjs-webgpu","what-is-reproducibility-and-why-does-it-matter","what-is-shell-scripting","why-are-network-policies-in-kubernetes-so-hard-to-understand","why-devops-case-study","wtf-is-linux-shell-command-substitution","yours-kindly-drone"]); export default { async fetch(request, env) { diff --git a/public/atom.xml b/public/atom.xml index 20687f4ca..63892a840 100644 --- a/public/atom.xml +++ b/public/atom.xml @@ -5,11 +5,24 @@ https://blog.kubesimplify.com/ - 2026-08-18T08:33:37.156Z + 2026-08-18T11:33:53.748Z Kubesimplify hello@kubesimplify.com + + Running a big LLM across multiple GPUs with vLLM + + https://blog.kubesimplify.com/running-a-big-llm-across-multiple-gpus-with-vllm + 2026-08-18T10:00:00.000Z + 2026-08-18T10:00:00.000Z + A plain-English guide to serving a model that is too big for one GPU: how tensor, pipeline, and expert parallelism split it up, what every vLLM flag does, and measured numbers from a 235B model on four RTX PRO 6000 cards. + + + + + + The Local LLM Glossary: Every Term, Flag, and Number in Plain English diff --git a/public/img/blog/running-a-big-llm-across-multiple-gpus-with-vllm/cover.png b/public/img/blog/running-a-big-llm-across-multiple-gpus-with-vllm/cover.png new file mode 100644 index 0000000000000000000000000000000000000000..6ed8b13f68651072a44f6fcabef9cdf0c2d75e80 GIT binary patch literal 187877 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

AZ|y@>Swm%6#>7VA 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ⅆ`ZN7niLg64o!r)z%VguXl%>jsX#gm( zW3Tuh)bE&)L-X(b_G=m$7Lo1!I#AE?w*>?g4v~iM57kbul=M}vUPPlIjFHR|@L`Q5 z%StcZ$gg`2X`j`Owe?*T&0hVr#LMq;DiHWsoT(Vv=+aOvG=Ir0HT?~*9_zTC<9OVv zKSzO8gWv79FpAV2w8I*97qI zVB?a23hx4Wnw$TZ7cGSRaUye~nMW#qRI@*Vz%$pr#d==A`9a`jouqwtj~d*K!lCJd zZ(i%z+JY^6!=|7cghd4o@aiyLAU}#j>a4c`LTzphw{5(j%vjug0+zWi+b!wSKCXuf z|H^ShUx`iko@v}MgC)9j&Hm@(Ca`a3WlM|GHHoV|^Df+G!2pN8-=4k}Ec`X-7gGFU zMuwdgtzVPS&Qi3@dQ39KUeq=WVV*7uY}FQEU(^Q{r?ii45?8&Aq0L9V3_jt~|WW zQLfE&bK7FjZ@rM&?o@e!cQ*CLr=&a8wdBrLyC~KeH|W-51|*jwdF(%k9@ugVo$*xM zRxuekXV3ov+P%ju0nWx<#+!BX8isgeW1Yz3_uhZiKcu}f7Q_aItKrK&+vTVUTKs$C zWk*K|U`gMr@%A0=v-J+xE5h#K3%p4mp&(L7_yc;A3+--74>N-#OB_OcT6$|hhVf1$ z71)#SMugy!e)(l1-C{T4P*m-;baY*%y-hPjVdTs;useYrU~WZ@qXzF zPFFK1NGShsB|PtKMB>+`rw5eI4QwKBQcU8mCWk7NY0eKl3;K0&r5YrH4nGvDlOxoO zr(^W?U{eR>#L`DkR2RiDjnlS8AYb>BS3d(mK{zRL2u}_`JlXb zj`5dINcg60F&+-o*JZ@1x^qsLS^Fj-Wy07}X&@Dd2}K++ACS2I2$)Y(+gc;WoRIPp z18m>`|AVHE4r%9usM{~uWl!IXJWdo%WRu>}>%%d#&t(O!>ezBnD zN9dnPP#zSP$%k2fu{+2MOqw>Hu22G~zCzCv`{{hH#9_s=sh~(1p~qPFjGE)_dTN+s zP>-mdZn`$ggg~Rf%xe)dTM&-`V2fvt1i%9RAoyr25tJtedigYOc3PDTn|HTjz(K3r16Cyeb^pSz7} zh@5$QVPEdO{ZoHl7CIItz?IfV@P>Z{UwHQ`FMir5Q9onHLtJNfeQ<$KM@R zofloJt-yYc7~5EdaQ=&>?eg%uD0P;(O$Y*&m4RNn00Jl&6Fh?tV@ ziLGA;=FxRDzEnBo$)U;8mtyiR; zVmAqH04k26&ym{8!F3;6uq4&fbc6k0o16e@Uy*+QC652i9MLmIL)iPpJVG^%gxU%34}jhn z+1RryiP&1Gq4stvJNz@26B&D2+fAwOFwVj>f#^{8Fv_M=L>zcv9o~93j?h)xPeDWB zwyy%R6v+=}+)H-9X8RdCyw~kJ=xLeD7jC36XlZ)ybJ^yrrJRdL5|Ehblk?#kWdQXT z>98dI;iR6RS(c@Ab$aN)#!4r{l5x`bB051#IQNVn=unzP@o5CBb7%GnHZhWv17QO~ zCc?GhEjEIf+9W@iH_Vxu`@AK^i6L0#+w-d&Wz%MyeYym<59Z0C~6v26XD1)}+3 zp}|0=hBcteCymYkoV*Q(KKhJ*R7L;^rQ9Z(}}WJxk?%*8UHbeR=cxc~1W2 zlKlmbaLJemh$E)W6Q@J}^iB`lrw{hYw=#a)oOL zOy!$9OD=c9wCr88&&hQ#t~Z%oL-=9NKxU!221;gqJtn^1)A>5A#-u&IZ1t%pQq3q! z@mcdx+xs3V*$%GxR`fP)MY)45|1Wn%I~mYDM>Hg-Bk#7YNx)bVhcpq#w)dSUw!xB1 zzd#(=?DCFTTdfBQkf-|v^daS>crrA$irO)*dXJ<6g=IOV=^o0Ni zo(3;GlrYR)zjZgUr>Vfa)NQok>9F$j*zSGBA%mALQY}L%xk=cY`gKVvh#-Uha~hHo@HOB04oi(!)+VnIxj z&+!V2cUP)J%LMGEl9^x5Lv9L-Ljq;xq>0{Ao9ZLR;baf;z)-Cc+4R%vP2&J?GlgJY zOb~CvaEb}Ql=)Zth8=r%NS-3qPv5nV%J(!Ts+`#TYfRi1O(~4t;p_G5<)Rj*L>~^H zr&C{-GW)>9^!w{+_jU|1R&(#h9qSsi`d4D&xf-jz3Wnw7NHFmz6g>qr&620=;6GzV zSm}gDw`TwDSJ09WN{#w&W8WN|Ain*4@$nLceI-749H-*Pso)L$8m(laUh zHLn+oj1kU+?9h;`B-+5O5&m@O-NZ___~G!@Y3t2?yKB17@yYie^++N1)gBeCx#*Bw zRs0i>Noi~al8n1v%AreGEN-Yx;4*uG=1lwbbxY!>fErdMue%8b-~T!*a=2&AIUwpk zp)-qdAfiFPJp1ns{8_Ovdaxf{Kdy}EYrkuYqXU#yo9eGEu8eWVWY$hH;-)tm)A$!$ z>?X3hGWoQ1>S58WLaWNt$3S?U8In}l{7UuxZqy;0vz&bFA#aRC%(vCD`2N$PNbQ>c zE_|=d*U9sZ{-OS>d5fB9%D!e2NO$FNzk^-=d-N-@SmE>>k1YvVXAU^*Gk%h7M(dAJ z;qp-h)6+-KfAct`(!@@p_bd5_Yg)cq9QF(fA%mUf&_Dc|b@Rq8vG{m!8tV(kNossy zdMHP|k4ezkYpwDh#~;Nc^qsoCKY6(eBes%Fd2~p>uiI&kGv=_xiRhq?v9)_J&$cv+ zckeFA%H4GE9*LIIT{bi<8n@cpdj9w3;^e<1Z!gqkJ`202p2J?mV6rW!KzOz7p`_rE-KWqD=jAUS+?Z|x9nE)YBk2~c9lIq*W%;O#rT-%+;choheo zc*WsKX!oCw76Zc?e_qw=tXm)e^|x!}29t)};w<-SLS$Q_UVH^96rDQWnkcb@?_#a< z!MgoJc{!k{c-PEQW643J8#8q*t%D)S39XVS2(9#WlnUy~33A3%B$Z;B$b=JGaq*D>fq2ku@TYEkC(XtuF&_ekV$zxe5i5tc^o z_paL?))N9Ifrpfk%hHQy-~Z$$jK4ZR?ou^7^h>2Zw{fYa?6!gcx!8ba`luh~#P{5& zVuS(BS+9)8v&2;bnrX7c#q@TvcQqn(q(2X2K|=y1XbA6)!tpkXw$t-5nLMltf~7w?|6NAq{L1e8Ib;9r+4*!%Gaj@yfF( zUmcHIN+2eU>0j9s;(L}6`+iNyQns#r^C_uhoz+L(mKsX(X>}94w8KMNNi(y$zdj9s zk-xe*DumV{a?8-cX?m@j>_DCB{FC_be9Z^{pWh?nu`LzgbrQn%l`%iU^~i1hikG%M z7u5W(#0|xkIryJZ1GVO{iTVyeCxLR*2nV}#PK-R~hnmUmI|+1v=J!8r@Z6$Bs*t0{ zb-!rSORX9RF*Z<+NW%Tfr4Gfozlf-!<$uvqyF9*$!}~l4&!e(yjuOJ2SIv)S$F>Mb za)EKxiGcae2@UG&!~?%FbNT)m%UFp2g7=zJwCp&;M*wF75n6axCMuLS^r!H+Y)c4~ z5?=82;QJd{qyT&0L8UYr{A?z7sq%%i@a9MI&+qD5c)1%iz0Avh3-I+;@(iMNrFG~K zVWzeVe+NO)GTGj&O%e;Xe*R|aa$J^po~21Indm(`_RO+T~n^~9@g?wC3lX3$`L!gI2o3q+x&29@kBgjnX`)icDusqSJ-sIkE8 zfhJ|6%q%ModDxDU^3folFbwI%ml2J;!&YIobfx|nYXLUApo;Rv@0>qrIaW6G!lCnw z1UuW|M@PS*A7~_tG6mJA()pd$?fa^j+&M7MB`j6>E+6JtJ@Ju8nes8TXkj`}%a1eD zr>X`scLP4c&jwXuM)S|SPtgnA?~i4e@zHzZxoB8|K`iL}`CXxVP}sTE+<*1ox<9T_ zG{Bk%xWpF@QqQHA!P%n-iE?wo+77wisRLS5gbo7pNKml?W zu~x)Jg|!=#fCcZxF{7skap2~0wW9oGpDn`dAbdxFu`cx=jC;k~ss-r&vF6EG;>cTU zx0HU=R;%W!h$Bs~X)2vvsjd$(P|YR=Ba^o8S88W^*|#{p@&{S|3h;V_!Uz`$)`ebC zr-!y}Qk9P!RZ~9I)by%rrLqz-)(X6bl3q{K0>7*$Y~1H$8t9cKM&>QKR#2ptSgfY0 zL&fS=-Cp5>ygo^BwHed@Vk9J5p;T|TZ#w@3_08+M*R7h1n zYygax5q7Hu2z0myA$Sc-batf4$K>ub&{dBuo_aZ}jx#(xT(P8AQx@@8`Q8 zMlC3vgDviS?|yge`133wV#&$UABP%FoVHiG&+!1I!pz&SAN*(hzL%jEzUM!TkQN%; zZ+!co+a}oJ73_|&eYRUvne3kKizItLn?3Cs77}5yPyilHediFeaXr$x#H~RGfX{F6 zYnxgv4OnwPJ;qOxh7@ZA{I;d~Z<_w?v^)LV#Z`=r`QRTF_YdnU!k^8t0y1@3DN|Vh z6&7?a)YGx`>E|JoRsPiFyW+OLh4Z81#_uQQF^pNXp88OJ9)D>ouBi}heoXQ*N2+C# zEU=S*50wcC1|jY6I&I3n0U`;l)*Ic0UOAhWT}S#-ee)2)*+@n?whfIQeD`(Q*qTsK zZN;7beg8+FH;`1eGD-M!?*}lp8T&95_6ZtJwT&m{Yb1y6nxp8|SRTJyFXV1gO-ILpuJ>Glu%%XFdvhr(MSgrTOm z*n_fDnM~-^f4W@obZ1?#?WjeS+eY!YVwf!`S^ZCzY2U2vT zdoDl2F^7%45}eV5s|+Qrf_?eWeKM1_po>;ezbaMBWU5IVu2Hl1AuU^=2c1J9-xl(U zIVv6_RM0oupyje$deh|*ms8tA zL0>k%rUI?!Cq+?1Pje!_WNPasx{D4SkQh;MfN9lrHcC8^^6rTGk*No-0& z1t1JD>GvosOe;$oMvDRgKxa}SXgXoq+*>s8hr(+hJLywec5W+dI&+8z1qq_h@EXx= zU+o0_Dd*WjHN?pD{8P1f)2`rkZ|4A#D3)fen=Alur5I?Ugq06UFZ4Kl4ernRe~)#{ zA>0fqZ1mUZ=we1X`ghO#q-q{zpKk}X=G*^S0&>>UrpBCui%?R)+!j#aN$wJsAhVX=HG^?mwTlE3-4j`PqCPliN!~t}eeC zdO0=UmX8a^SfYQY)2n|J9XpXnzaeA_Pjj}h++5{&KAs^Bs<||KXz_jg9cx$3xhndQ z_h7M#+4_`y5-a}t9{G>_ouvc2bh*fc_x#TvKbj7-C=G9idN9XImieWgFN=>UZMlNh za$ihBP`1A%m+=Z}PBT=iSASv-=8pC2Z{{oPOi7k0d}22PRsUVZpxFj(e}G)S^@s0{ zsE#@%%jU)VWa#A&mRRp`!9mpJE{ug824zE~7<%l!FF&SXSx}uRkA)>W}CS^*pq5dGs(eWK=y=Xa4|c$gCUp@f98`*j|s(?I_|C@encQaV(o(xeTVMj&Ioq zA)P_2YP6FE!l?Qwe^GiFFST_}o$0zJcOiz&5=wB}PMGK|fgvLY1A1R5!HA!mkbNRX z0I46FH=A78zpJcqv%+G?AsotjZJ9Apz~#)0V1pUM>BbrQuahSNFPA1imTxw9LEuD@||8)#Oz6iK_jWL+`^pnd{-<@!grN zZ>6{DA;Jw;L6H3cLt^lF$06fhLxZp-ClX6jp#joG5Xsn*m}gSDHi|K2hp} z>Rq0$Ts^InWPjv>UyhFpE?t+(j2Kq4x-LLd8Fxl-z>4vl_b_7FL_q@17*tbhZakd7 z5NyPQd$aT%-=BQ^wE0>}*!2<&gPRC+zwc&!8aX{(i~Uy!YH9vzQjdfIs%zY#ue`5hHFR4fT+vTfVJsd$WC zFzl)Kpb?5wb-S~S<|G=i1Pqee8}#qT@hTpKkeZB7UH3DtJpsq1XppmJ0kh7p3}=Mg zaxgqY=;~!IuPa*-juC1;WAGWG&oh_Rg?thCZ3c%oSQZVf(+nd^mA99lBnu{!QKM0z zZqVW!rV%QFBM#qG%D#tH_Pv2%@n?%KyQo9NV{CqOoN&IiU$+!yNStTI2A{mQ9%d7D z%UU2atn!KZ_>B&cpk!%rP#l#?b$*3|d*nNt?wy#9<)^!391Rjs_(*WB{)wTq^)hWA z9ipy==00TFM)U(Di?&JmHmfU}$zMVaevdIvA zjmw-gb!ihoQtM#RK_2E4h;S<2&xmVICI#}r9)~d1-DlH&zq_m!R=XZy$r;plA>i6271lJlx{zl{p##v}Yk zP799B-B|}g&P+IH_y-@j`25Th&9u&vYZdx)!YO(2`!8wX^LWlJ=@gA-O&FUgk`D`gS*@5Dgl4BHv6ssw4 zwv7+c5^gjlEW4p6-OlD z=H6@M?YV5mWKa8wmms+M^747qUAPUpKqi{k^P+Fa^DZ?n869}z_`FxcZ&bzhZ?!*) zB9&9ib#9rs>3Sq`^e+M(*`Eese!zqOz@-a(Q)RSPe_Fm?{_Iw+&U3ryJ@~`DE=ba4 zVVVUp0TSpthcdyq0=}#JfnMv*11)$^QbS=KYH8M2)k0CRkwwTwOXKw7fw-yUt@#%e zfP{?P-yfd`r9u1VYZQ|nc=glar-EPMi8Xs%+u2Cff=Vsk)`it{ulWYMSYW!Vy9%HW zc{NVVSsfR38D378C+m?Sm2q#F)EApAPX$_h?S0p0{r%4Ob|w&m@q{1BI8sm>^2YMk z`eQNl-d3{!afOyrqQLf4aJu3= z+T^^eOYA2hxmmb0y@)DCv*}_2VaK$M?&Ed|0a2z#`hx;HVg2gN@RLrQz6c6(8su%W zEx2LLb03V?RI`+FAoHM?bz+Z{1WGyq8fBf|?+ip&6pZU66yk5p0T+|KvLwK&)5+ES z*>U4r4)L~e+KCyQ4P{q_EsGrvYMoI0_s?yzGH>)tzonkHV8!|v`7dVR)Ut=QJg_(oHs%b6b-qAv-2 zj?tF!4mV>vdGnuQXLdsfsP$?-Rp%Ig@Eefbw`+O&KGn9)A?ixSmZ&@CDSN(Uok?^6 zB^`*S-hGW%!b~Dl7E$XB1JX}^P8;(SkbT17$u+$SwP_4*-w4A!5AApkv8lz4iXXAxCn??uFf-T-wH(ip z*k5y~@N%W*G>7usbKg7;>Iloe+{|d8&!JnuhcIjrTy_iFw>{?KyyB;`P?)(rC_mnR+>N-Y3vy#S!}W=O!&2Ro3diTo z!78E$8LNFg93J!F1b)s}_tDfia01N2Y*Ay(esqWPONPwx%OfGj>#&CRw4FT49C*U2(NPCaor;zk;#^)rpb zV%;H3J6B2P3qHC^g3j&|d#4zh>T*{8U{M7H+R^KV2ZK<^e}r2TiN+x@qGS%;l5qMN zFbnvDEGbl>TX>}e{p%maj1`aTgC#FA*KdPWhwF}nOI|Wgx5^}mM?Wy2aMYEx zT)Cds5*srPM$QfL5m6%^Iv*PdeM@;tD~8Bwk#D_qy^h=whLZl9GPb15lLAyEgjP8V zx^yFVnC1~y=4plE`4rg!L~2SM@;pa@-}bEf9w|ry2+J-kemQAXCBG8YrMe&J_jwqp zq4Inwv&i_?cQ0>06RN5x3Yj;%7>VV!8JdRUz`9(CG5_0K`Re#}0z^WuQfDw$mX2f|Yuf zyShXCN`im^+d%?JWziTdIEGjH75LNN{M>4_Pw<}blz_}Yn*FJwoUvkW1aH~U%sTvbzOxH+&m*Ej+>|otk%fflLgu?7K&>)06fGxo9~7!PM?nl- z$hNV}67E`!o5(DQ3NNmvB;Bm?e^Bk=7HYYRxC6Kg&!+HaA{LlANk)kyg{2RDL4>}1C|a@>q%p7#A{5M&ioU^OA5I3ZD1L`c1EMiW$p#0GX*sGUVrZ6K6pz7 zHV6LznYh%1F^9C8&6IM#3no!w+dKilnulrG+z|RYfibcM!+0xrO{yh@7&D#PtOCs0 zn70!$__J2Zf#9CvqhLvFu8+Jj33!TBV)c1P0O-T`U%4WOzMf77zAw?_h^Nh)8y`!R zm^S14wZp98cpn?^$-w6biKRZ==l8it#HGxV;+sUtzV{Kd9-Uc*xINifq`IxXJS+4~ z@0NpWz85g>)4MNZcd3M1fKU(`Me1+38U4{b(;*-nNrlItEuq!ZdC=?PS%x}l@Bux) zrt&b_m>74Osq_~ZFfrA&{hh`F2Yk(&-^DeK#h2feKY+2RZ*>}?EV>iE!}uCZo4OOK zb3jL)S zY*IA6o|m1>r#^7H6l#+IG_FWJJa*sX$tP8R*U2TkLwpxg!4G z_W*OUdm%{_&4B3Vz0N=jONf=RRRFm^NFcz#BKU}$3uGHv!wMA2LJqJR2iS3I27n3D z?$y{_E|b^y$-86tC;zPN%wIRRMP<1y8vfC*Q6rE{LCBTn_}IJI9T16Y-Qp;uo$O*p z{=)nV2>r@CBKj#fHP{J$hGZ?W(Q=n2Wyp6(hxMSpB8@HNB;YwZy08_N zVxDkQ%U-}wfl%-#K14{r62|pjo7tz$99hgF)xGy_3vVmhFo%=Qqw^}gYoH2G9R99Z zpy=rGNiM?dVy`iTU53?L^`IfE^w;ofH_`~p=zqFnCp!wvtK8OV?(AONZ_apUJw)sy zodu^Rm_(Bc&A|OvwerQ_58vRg=<~2YhDa+FpY>)7VERdnG9OyQKSQ9}y#2}h;OyV# z@_Wd@>&@{0Rh^Mi1hT%7A6HGF)cTYC({K_ERxbiioL5QN<|=zDCkjr;9Cc=jP(jCj z#*D7X6~#Yi>!O6HPoufYnDQemPI=;J5QKgQfjPQ|l}o}u=ksQcE>?w=GIwMNjUKO;Ufb|NL+oTws^Oy z$~K9U)cf?Jp}N?x%q4VRk_9xv1P|fpFiAKVEFkOHTrQT6ioBEwRz*a{O29#bk&Dnq z*=%RTNz#7+{e`CA>#9V+PV$S~rMBzRFBMcLG^jkoUyTm_KwDrT{W}XGMlTF3aQC0M zFVjRm=$Cx6%#l-KZM}ZC7Ug1qkl~uE=d%4OOr_lRV6F+e+2AOkdPrFk~j`bJx24z7a<$k zDNZW>&vC&ZHao}9bHy0qZ~@Hg&tEQ4VJc96Vu*W~m3bP7UurV(l9RetykBib8ZMz* z3IQg__VoxTw!Z(KBZfp(I5p}flg-!k(WL2s!?+>(!znow;ePqE-x;AYnWni=wEyvt z9$>K_Q$#KdyT$^}BUxR9SJTE3yUy2qxiimPS3+pXt;xLDNv??Adu1OoygwQQ)i%d` zZ2|!Tmx@m`bJMe>5w1ZVNSS(V#?HmVeeOPTjs?liVziJ9Wlo=L0T!1At@ z!q~HeFtRKG+-}bIbWM&SuwaL<0^}y_uSt)Mif|4gx*Tz39E;2{%}n(#l(<2u5ikdk z*>VXZ;v^Bbgy%8m|E$9!)c`_l6DBiB*$L})ZNZk6U6IjS;m5QDdr5uJ#_|FfueIyX z&)qyvYi92U6*Ci1k0d$9Se)BS1w_7|Eoh>>+)DZih;~HFA#5=J?hwF=%}nU$na^lZ zn=4Hb_x7a;9!J~0&yjQCM|ArOEb;h$Fvj2pHT7cm&}5F7z`l2${-C5cmrQwGo4nSv zO2tPS;r9b8bM&WJ>?#w3usKi6zdJO3@fZT^rHUx#d}gcp;>Oak4TC-g;jb|k33mhdhM5UV$-w*)&+<0-a4y-ma2? z6WD#A&i`YlRZ(!YmI!9nyEMMANnKRRCtjd@T-0a%#{v*q>0arz0>%^bmy%l?xwU;? z_QKyq>>~wOvX)_a2s39@`Ij9{A{aBqbnBrV4U4y`$={Kr$zQ=!LHmJxh0!X>Css;u z*3kTT8q0z|o_{Z{64dc*{t(lU@jJa0%!tDrmSU%|p5VryK60|cA3Wj%-+O-@L7pc@ zh_a}Ckpa@nZyxyU|7ABIc_;9+#H*KsxnVWLpIK$`56+(%n$JP=v!J}7j1$5Ll}vJC zR||D)>e{42aUKJ$hGKlWEDn6U-?f&wqcGe)?#)z!*PE0RAv5v8@AV{@H^X`0lAr(; zNubf;^Cm@V%nITP2WRp1YYT@NDV)tHbqxKTFg6iCg0XAMSYn&SnBZ;x^?7m0jyIY7 zE%nLS5}xvOQgl`qYquBL>HgtxVxzR}o8kwlsBX2|ggSO@j_EfyM6|VCLO_6?NAvn! zPdr5Ajk2o^V%EVBhF^R<-S|zA%?!FahDPNice84_)pDGUZx)FgOPrtcs4->6NQf!1 z(u_h3djk2Cu{e{7Vx2h75pQN!Og{A2{848oVqNOfsFi18;((hWiVaLVP?+bJ3Q>lv zE>&rv@J!C#g0A9FJT2y}`hXpSz6+N!jD`FhJBaC9wdv7!?WPl;I6k zgB)B@-@MdLOE9nZb4dKd+fu$RWjLsdl&|j*Id!%g5_I*s7chq5-b2&IT1tMsSiJF* z9tmSs(eQdOfiLfSDr;N;2NJF-dxD7x8)Sb+AORxeFi-R-!uwGk6F0lhQseVub*cU%64cxPXLs3@a$kU5#z|vM!Kn4L%Zj%WX z77DaYy!rGrd2k+$vWoh#2k!`&V43(@G^m(z;znkd=Hu0MlZ4yPzeKtC-_-`dm%%cS zZbB6Co)i9tF`t>n1{w%2Rf*{lW6XGlv_VH{_qsY=FTrjqcNZW~SdWc^du;gM&Vp0S z(4oV{tw37Xw}oqVOclRN1UemER*v@;u5nj)en~Ly#PKrz02PH`Mfe+46$g0gsSW({ zBd<+vizM9QrHIYzwUI7l+PaVB^6>hP;oxaPh#PDQOx`@uWR06+ylhN1FWA`bJQe_6 zbBV>2`GS2HD4m5pkzM&80Rd}86)necz!)HpB0^aW0z#m8e14SVChU&nKa$HqeRT_U_u;q)=EO=#%usA5Qd(OVCO4REkK_k| znWQM=^Q*QEMQq7hwCW>lL43~0I*jqV_(&mQ?8%la6;^32ynj6o#yELMMU9*t$1M06 zfBmYlW6K{YPB+U{nFXV_XXGwUmoh3?`xFJ@u1gqkKcEtZAj=GDv0Hvf(J== zfeIevj|y+MA-uF%RDI_d@(=;e5`-`pGQb;G?0v9})?J_?d^r-(P1s7oR}G=qn`ABo z^Fyz$_0YGF9=!Ly_dQiiFC5ZuS zPKSIm>e$-)1*T=Dw}zayAB`pk$dbbu7wX{@o9VEV{{yatJON<1DWWcBxSl(zv3twk z!Llf*>-p@#Lr@TX?h6em_&+otc&gs^=g#K?8>)EpI|{^2$%e4w$c1$s*k#~U*$|ne z%gE35wcNRgbr?t`xabZ#VXPwu2buNno@8tGbK{0FMLN+3kzWchOR9oM$wit}`&AjR zKvUQ+)4&D0=jxI*2md)XeYR?q4{ogiMg#}}6daTNhB#fn9MHR+_(;)5 zND0b$>A#%a0m`$E)zOhMy~F2m5$RD<%^hBFg+pw{Qpkf^WD6l93$0{yh&idIEpXbn z@pzgTUX_szpbILNLn77e!zxy)9m`%{2A^hdjQ?hLbB>ZxTV`O~I*sTXgy;gCoy~N@ zm);XJ=Jb+7FX&l8SN1ub>VPHTF8IH;ZYCYyPv*6VNy0`=%jr>Q~wR|sP zg&N>kqha>{Tdz`6?HI6RDz)8Q-^Z&+G;XY<#(KmmG854PTf$JJEr?l@8LGkX#o__x zG4M|5gEVxLw4R2Zqua7i8h-Q&l7h@ohxqSs_04(NRjVEi#CPJ|4o7|r#4>(jR~dp+ z6!rxr3Cq$ii2{J0jVL@Jh;yg{7Z}#Qgoyb@!7w=OUfKchP~8M|KBD}6w+S*pPU`q0 z4%c?EPyXl%*NYAVzw?Cu2v?wiGAFx16($kea&T#^t+(3%miPf06l>O__{RXrxvGs% ziUB=|T$_}OAV5sx)U;Sg1pblqcdx5<2v2}@hjm12OgNK8ZvM`R$3`8B-I9hMjLcqx zO_6}NLL{d_1mdv;c>oR57rCf}vBm$LC4yrjL4sCiLFO!;8`AeKpN_k*Z6`-GOHrOh z9`I8Z&6BI)hS0W{!{~JlfpP7@z}sN2eY=4R9*hO&Nn`&2umLMaiXQ_c zH}zejMXTQP4Ix(ar{EJ(^m!7o#GyoKDglpi&wHEf>b1d@h^xylbOao;KM9%~y+;L# z3a!3efsgFS-EwCLlyR<)7rhP)8O->GL`AwtkL?uTOu!%)eUf>zT`%D?fD#uv+%(Gq zR6-tGxdOhdaD|vWicS@|_c80TWDwRLg9@<#g$>NfymjYOmU1a5zPk$Gph9bBhy#y! zGnjOEZaimTN5F1zwrRYcAs1p-0vNKldr~cHQn1EMW4$_0#^W-geeq6AA2C1SB%x?% z!j43bfySakp{VdWHiDn<&$?@!XmC(IF|)KNT&lq_dm>fi&S!Kh>P{L1zm7*v==Kws z&1%@BPqJudrU|vf0O;jg~@bdI9)E7r{=0BEbx(uvQYqdU>Bro0*vya$_;Az zx(@NnZ3{e%Kc3F=R}9%GF<@Wcb=RbSem?ykz#X+ODhlYlo60T6h}n6JKdU*7c&d5Y{XCdOJ5F{ zp$k9%qo&Brynghq)_Cf*>i7)EbNmb&_JZ|GOC85nrT8?N69L6r<41#2^IHHZE+b{WU{x6l71%ITf`4f-3y%O7 zgt7S_vLp*b2%X(1#TZYD3NK z(6~ns45|}`{ggNmwa{>EW+=tD4pM-ec>dSl#i}rnM6PX927N~}g89P2c_cLKdjeRs zNc5f58=)sU!|0%^yuOByHM}L<6cML!RFF{Jo7Vmq3AcM%-lEA&IVBCR(6IRfxSXRT>_ZtEzofhV?uO2 z;a4E@D)lKVjg2Bi&zB4Fy6^69>R+g#&!&m zqUv-jX9B2)bDxwBpYtp@z<&wDY&b@4rRJBV95l}HX9udiNw8Gy<(*#_?tZmWeM!OU zK`(h}2fu2g7)y&A%eKl^O8wyE#V-kep_5N%iOg9pc~w%cLR%Zfo&3@o{_%Hho!-_l zvdMZ}*+Ln31646D<sR)-I zIVycx@M4Z^1bOZ%Zp{J?-n zurq?PX`y4rNb|XpaJ-U@C?Uj-HC%4h5b?PJSlQPg_h28yRI=0f22V+YY7w6)*|070 z7%t8he^4AC^tR!|BU@3I3D|DtNw@J~aI(fvBS3?g#X)5(d$0WuB{Uy4X3TI^t59QR zObdG3c%ox0AgS?>X%6)_oi{%@AdArq1>d7Yb9V9 zJuMCr?$8@85)?iqi()f!jNtbEQ!mFEmPwdhDpmAHZI=@L(Ei+9Z4(#Ur_6gQwC$oy z!OwR#t>5?8{tf6lnykrq>lNk+dFUAw&D7l1+ndq%$L1(JB5^WINQH*b-S*~0 z%ln`oOR4)?qvu-^i9eB5WCioE$GcDh^mKrnH_8u7*6@0K;VfkL@&zuI)FG1b*xA?=F^r;=rGaUHF;*H{SCqwd9#YwTaH$O+BrM2l`Bly`M=1jmC=viIBpo+_eheso zKEKyNflgUs^6&3i^U1w#poCs?g9ZhrQ0?y(>z~akx`9Iv; z!mb9btHf#mNg{2_CM+4?LNV3?w!?5%Jq@n;0gV1kL3=rPVjpbhlrWNqKsDSIBtoxz zO>h@uE+3W0-|+P$A^wZ-%|KqOJLJD~@GwQvd6!p&6Xn0o=7f}ObLTC5v8&y2kjupC zJ3cWqZ}f1uO}epG30vQWr2=Z!OKPr|@69(3)k>QM&RW!ZD zFA=^?rENWbqNDczBBwbeRCLgM5b>dryZAk}mCZ0}z(`XTn9M9%@M;QJbPD!fDxf&VE~F^j8x2HWsgB;1)*`DnXok6~@4QCv=G8 z8EDG1=!rD1F4?_3Eg761(kW0w>Z8>FW=qfMf)M>+cvfvmp=wKNBTk$f=$MM?r{ z-WuQeU9cPhEp`Q9H{9iZaWeHVM=+Tv_ET$8hE%Gpkp79Oj^F9SMHhh?r}~=APFJw^ zRq^8ySF)t_i>No!iNw!DcPBl{PiGbVS~D}c1SP*&g`c}t2S>_AFf+0YmuJQw@0biv zb8D|dEMV5eGp8@mx&ZFgo*%aww0s+|$7GFQjvxx>lMO;PrWLUW47MiY!u}NT)4#lj z%ELt<_v`U~^fz$r#uyr;(4$ma2~I@rf(+y367u&r_^bP+MR!_MCb)r-s?xRmrH|Wy;#1cKbnh;`CxW&W9YEmfF%*zpE2K>OwWw zxZN-8dy@5Z+3N4L4>{uT`eJ_O^x^T>NR*;e#}iSS?qt?ucVp*ckGEs{?%m2#MMq4S ztDlFhrQIm;YZa#{Ov7F|aiKykF?y`7<~&?(O0=Q60J) zUfH%h=C(lV@;_36#X?UJlNQVEzJjsV^E9xeT*~m_-)B|7Yn=-(9Qo6$RuGc{LVLWZ+?nkH3 zv!3rle7y}WL=3Ol4)z|e+qjQSm^E>*ZV7`w*)q0E(V||r2$2(!=kIcAg?=N1z3=3} z6hy&n6=lne12i-?t4PIvEW@`1LBSFLdP@Vf=jOo>`du#4o$bNP{oZ#ladtmaxfmg@ zthng^TfmW;yacDNRhhmGwxh&MNOz&$=& zsrmNXg5yt=Z^d~j`%0gVam+`e%$qCaqo&I( z@)h^}g@=BG><=d~xMuF~r=z#j;79w#-Se7E&Hh<*tT#dun0TOXgWu~i^zg89l)f)< z=>Cp>==Bc;OO9m;bQ*$L@@u{a>cjpE^v$9D&r2tdVcS0h_#b|xE&E&hjQE{~cQ8#& zRzZh(=d&+<+`Ah!ZHx-*#Ac3#WKrDSQQ|Cnor|3WJ<-{y=oGaaTc&RosSrIDf6BDY zhVa`tQ__z_omW+xEoyv=A@~7CBBgy%GLuzfLJBe+#|U`J5K5R}^SMQLUwjl{B-7R; z>T1UkJiS0vldm{mmKphdVg%M%=`uutPI6J`R<0^m{12xADdtFrI88_y*YKkh;3yzk zI)?Kw9*KT+n5m~zF$23qwajtyxxYVdx_oSWJ}1dMhWsrC#!*bc_@EZVT7jsIoZ)nr zOa~vNI|t#wf)AbQ)z4ZQBun2H$Ym&8^M@g^k68(sBnyL z_jykeqqvbe6XZ z+XQDW{W^v$z>?v4V;1r_RRImNtFOfC-_ z?&m2*r`x)0gn75W7+$t0UG*4WP9Qk1`ea%Ci)0=ih$b)oBy-HS=(>IL?D1z>9O%O( z&hwr?4lv&gPUmCXdHwSu#AfMK{bG{42+)RocM@wV}toeot<;=@OMuInsf-Wb|ICI0;;m03ODw`#3^| zE?O-9!v}E4ffvGdt}c-xb#S!*m`li61U@Ln!vkD3W@VPqyhWi?@~qGUfbgYMllLXu za;w<7%B@R41znSk^c$+jUgP3oEYIQ%l_-4hhsOz4{jhx)2v_!W^JO(zhn^!d^n=@V zlr;?dFQ(A`)Kij?*VdLI*?>}U2$_ z)#z^!^9W4Z&wiZ=7k-u8eqsLkg+VZbaQNbIu{rMT;ucpCeg$`u%uLL@%+Cc|0atE5di^lQI z9Vz&#x{Xq~@3z^H%wtwe>Z*=L$8zcL=V7B(3?0GJsJWuR~)_p>*<{z9PXplY|8mORo?zg^mla?aV$Y7>_^ZS*}7kxZ! zst>KaIs9z@{;WCqZ*-*W5`m8W`XP$$dSYjj%z*3G)jPpM`8!p^~a;WtCGox)tg=&MUSOV0bP zf^-+kjvahz_IUHg#lKe=_R_~H8m`tY%4=r{xn~sArtNoA7qJdMWbh@3)iT85N znXYB?ihK?tW`RCD|MfoSl`p+}c;?e|+h_G{JlZ`<+085{;t?ShRmDS6MODS)!9@vN zr|PhMBm0(irME3t%51TNRTW4X62F=@0t4kx34alNBrLlA*ka|C(s8f#`}X09SJTao z@A?XrB)NK&y2IIVsikOdvBlun>qFM|S8@1Rhv?)_!fEsrC`->p(de~o4Qu(EKhq7B z(YYuAx$i;d1mT6>yF)VqEI9hc7^`Y9F}h>lm8NlNrGM(}IdJTCU4t|YhSgT3iiA9P zfyfh7kRvZ++hP@VE~WN|erNg)%NsF2H9yANO*!6GJ})*lfmcTj&)0d{cQ138V3YCY z1)j5iXkV#%y=d`$<^Nd5>WPq4mT?enwq)!;^Zk=jr1*63!~i;eyw{Evx>~FkV`#~C z09IwZCk2(U=5}C#N|kP_tGIXE=)PQ)n$*LKf688qq?6LT`O@|y;y=+=FwM;MCd6Izn5FBt zWQ;9b-QfInX~#}*>_JZs0!6by-wY&SBhHv(_ugTD=4nz%Xgm+`3);F(ca21vmi|!G z>E}RO(r;R=-SOZ8`ew4|cifhZKxia`w~1f+oJ|@bI}h0u`R;H&KmL)=5{{9N-1gwk z@LEqP+HHB6?JvKQ)w!m*tk>{Xwz4wRYP-4IwY6c{{M-T@nEN?f^u}5xX)K%Wu>_j{ z5rh5y;b-UuAT#b^Av?5Zq^YBo0=z9M6TtgE<2j-`o|-c}GM1r@WVAoOv*%++NL6B(~a*Nsl?C9UBT$?m$OEZdH=m9;L(5PH^5=ufp>b2&GL|Di#mx?d*5YN zE}r33dJHnv2(^Q})V`v%A3>7B4mF8K%i_zJevJj{wtcMQIU(dK(XE@G1XjJ)w=%^K z5d%q|UWZk?i~~n<(VD8zsngh?O798eg&zS;|5^( zdW<7mU}+udAB#DnK=0r_8tvk01+5gnyH#J15}(cbx6TOW9p$Y>ee}XFO=8sU6D5s) z4~1oweuj>`!DE42_sbrMuEC5#%nd}pnWVd4=w1=Z5L54Mz1g^ce90I6yicz0Zmlw& z`~mxyL%q5LyKk_%df^lU6jY;_4ABx`UKVM_KWa&xvDQHOEDknsX)id{7;9%Gh8$OqDe-w((6k0OBSkQf6D@M z3E`K?lpo|F9-1P+p_*5Gu;O1OJotaCUH$Y|t{oVI`cHW8LyML?uiKBGcdV`ts9MgC zj6hA-Pwi};Ax2>Ib!w>b^Lhk#c*_5EfN3C>U7 z3n8bgM(Fb?_Lc-T<*YDv+D36mML$eYp4Q^lsDDIdv2(?aYnecMqNVpf-@>eAbIMb$ zcBAY~W+qC^LK!J{q5NS-2e4?MvPN^(o-<{vjA-$ugl!r4`Cs_?d-v>Td5y%s)cWg^ z5vsTOS?oOZsKLn%TPCak8h{`?R0z3#9@guWmT0M1IT>-k&YvtHg=A~|!UpP|IV5Q&wzC?b1JtnCN zLmdLyTuDO~<;Ei>V!=3Z1lJ^zukcJ&UxRD|-^F<~Lp#K>1WzUO$^(!=?+t3Qr)?A6 zR1O`R|9MLg&R#}$TpIY&ka0=ppegRjnqlVtAnIBWzC!Y0_6hdN%vCVCV^@D8ECD(I zM~RW6rcf#ckIshJe22v6-gDzpb`YOBhZoElf^yKxq|(L5>3PC*-ky$?*Gw=sX){0p zB>+6p(wH0+vsd)_X3zBl>y%0n+Oq~%RMj35$XHG=Q>1|EY0!6l5Lxb*kTUZ!E6jmy zXYJzw1=`!g@O3(#3cDiaV1+h9SEcGbm>`dRfe)xbBvYbVdlYaa z;Gdg{1{sC{K^>8Jo%0bjKqu^sgM{pj)^f;?Ia&rco_Fj0?!^dzMaI+DF@O7U_i75>UcJoZ25VsTWZheuoDGWCdE{EbD(diWLOPEc5!mCf{^vTFJp zd3(%;P)Tp;@ie->knbf^h5vo)%BQox%IMBpAC>RMGu#*5pDT?{TgWr-4~p1WS^W2E zjqvnnz12`Sps4Huozz{Kg9K;3zEkv_2WMqCRQ7twJ1tMKIBgE21er4~$Aibs_tMK{ zBtjc)EWYh!kcJh_t3Fr!wI~!$$pTZ5h*rP#Ta#SVn!jqmen;=(RQra_u~q9IF0nHb zAPYF7qe17zs8Kl9x}%0kbvd?b>D3dz5mNS><+6JuqBpw3uc)%XP$I^7)Y2nvpVED-7BCk`g`#2E9{VAP-hB65V{Eg zF}S^AnFMY)@d3kfBADFguNVQgU^lMTZ(1;z{{7Zlo&m?j^2>(f;trZNfDi18Dx%0~ zQ&3EP0{U$IgHxLls)0Wi5-W!mMEfb&@5E{O=}%F5W$)?Ki%gG&>*Eu)ogzmUVpzt} zc%!^^47S3vt#Ckpgwjhz`;wY7$?Z<&x@_u)PN&wB&~4A>v-Z|*?P7x~LCKHy7;4Z> z#pIA3dK;Da$yXH6i0T{m_GtY+w z{21EBCf9l7bke~7QI=L#Na-BScG<#uy{nQW1_b(JbN$O#Lsl8?Ep)n4B!rP}T9?+& z`eGxXvIBSZgN+1goN5XtHVQOI3j?8UoQv6nt(v5Lz=$SU{|zsIefv^B+&C2$I*epJ zFIovrxO$rRrC6nZ-Xf#(e7;_!%VK@naH{aXT?c?~FPqQiyzxp%bKFh;mYz@U9?_G? zdd3=%Mw*@JefR!a30@v>Dok=HOoqQljgjenJ_QPN>tiwf==XgU9*AHdr)?%qUn0JK zQ2lf#EfDmhrUcjVrIY<`_(T1N8L1_;U)0S(a%#|vnx(v`Y!D+jje)QFfQD=j*ejkP zB>YRq83l&`O6#JpecC3^`Y`9ecyX50VeMmY{>5>{O8EIwt@(`Y*lVTJe>eTJn*YXc z)?36+Bf#+9Xyq3Jfo9U|s|#b&99X=eauWIvQZ~$Z!{5#UEl6k^|0%omSfS-$ri+cUcQgmZ zd_erDlRD)9ee2^3ej%Q7pwukTuXsKe=(ss35~d^D?>zf8`uLF4@!DW)eB1$miRaL< zdq89H1APfo^LJkh1_F;VQv8M{uj&6Zn%Qx1vQ$mIej5Ws91HN;tNrTDCAZ zW{{gR=gKc;2`jOGz^0F7y6EgQEY*5C%{y*gU96q#IW03hTV(T*?8v6eGHlF8q&rLsFO*a;jNVbj0qJ=Y+?>VDB;wQfOT@LJ#8R9xj>W-j}W@Ad(&xnC8C zdicV1sZH^qFzp3{)H{`~e~CO}{Jj~*UXZYI=UyA;O$r6c(GxH%c?nnk}phZTqX*W=)M?{U8U3l<7U@GT}kWZpG6CE3J%c0`6qA_rF9j*6C)8)8e!&7u^^&DPmEMvUM@I6;0cRb%R#K= zhJfJ#8X%D}t9IobzDpBP$d4Y-q zDX@R%Az*{r`b6~-GM~)omM@BY)eK9%_*Jvw{J0OGB5uo;t;+m|EdHmn(puVE)Lti& z$^r)3W?9b{A>8VZ@bp7SFEEL0%liu?-)aA3ikP^QgP}0}w!~yX{jSxs%u4 ziwX@Qg`t)w`)+`?`IooPMey^i3g?=zs_I->8m^zHQ&HoIIBS6b`ten~bf%;$r<%bTF zw@Fhmw15dy1lO#MWwO|Geg!uM$W|F0Y9CvTp<2#ZgwQlK6l@;uTIXWh%>^=AS(W?EdGTzOlST`_gnRCn0V z!oI8gB{Ylc=XEQdl`9%a)r!_Dv;=B2JrXA@qZ}T;r+PLIie$0B@A)7NcA|N1nY}~z z3ov@cERvGY-23-4ldp4@EtHNfuc@-QLi@S5!onk|i}nt;JU+ktbpMVEeT5=zLx)1> z{l!k0nVb!}pOR!ok#X}O2Trn!%6J$@#Nc~PHHy*Egdi}1ceKapQAh8cC#SYG#i-azF70*|G58D;2x~I)G{Fj_ zW1!c0Oa2v2=Rezn!nRDu&v%ln`} z?N92VhjfA6bwP0<;+9)tmw4Yj` zMB8o6dST*K%S8P5UDwNJcTBy)08$lB&jT$CEj$Uxam{po6EIDKwi0M~S(KFZ7^MD1 z{9*G-PNS88PTJ_C{2WwH#AuB5uRrJa9hm9f7sg9mh=35#4p{#B7y`b8{p-&L2#hs) z(WTb?JoXeDB0Ho%DOc?3_^2%4NT1tgVw|FcCt@Q7{2w4?zVJ7Df*BQ^gpfgN=Y~JL z=%iA$lywNxG_bn_Bj2|CPz$*SZ_4&ECENDH(((OGR_Cn)&S8cDJ(F;||DCY#nF;8$ z>8ZEBv8UIeTS4}A#J%&{i24yDKwVkrG>pUm{|*C@zOJ5mk>8(jmMjbMKfgXcEzQ&= zetgJz1ZikeD!kTkwEcLM)Oo&<=6LrefI#WPM>)7)F(k^e2R2uw4?O^RE56{Aq?`Yw zt*ZoQa+4<4Ad1Le*esU`9b+*)*$>h5_8&Gx%4QgBqx}^7w~A&YS89BDe`2*N2t3F- zuTDD+>iw9tUG;|eBGUhICQIludaO|W^=inn>x%#nec_D@5&kyBe_*8J;5e`_w}AlkgT`K*L)r{a5F=r#~rZdoE(mrekUKve*S*~hCx_hq+@q7KmN z=H!>6>9vG6B~6^gj0ehOI#NsVD)W?X73ZbvYRiP(HS>(ml7 zufAend7s^mVzJU!Pat!JyWS@OUwG(Ey5+|!%9Y2F$gF0vE;734fmlu6zy{8@Vg~-b zLk5OKX>;W;^ja{;>&IE%TAuS&?W&qZ+oh+X!1wDVRQ8UCtx^Q&X8|HDIN|aDF zxq56~qFSqM`-V_h)9mN0bM1p*un|04)Iv?PNsC3F0g4$@RjgH4gtloul_C4iM_8^Z z+-GQ$i+84wX8E8E?QuQHDcq)XSIYRFgs{ujWS8>T^BI`dqr91Kx4WkkzM^^#9mT(iEP>F z8fmy(GFZr=Dn2|yvObVYvWiSxYAMkeKJI`DK~_orp-yMUTtJT{D=!7n3xX9RjvF)s z-FgSbXG1=IKML&;JZKuQwjo}S!iUp2lr_V*S*s& z*6f?NzisF7J1BHoX08}hMy*tF1QrXkMu`ohs35=KZ}B!?sQCMMzlC#z?mRRYpF;*F z(eOMsYSUWgnG4Jo?Mvns;eZAK+MDSVaFU58NFL(;ApN?uM#eL{N)e! z>02fI)2lp-+7UU<)x{iyM4f#ja0N_@WN_47L|oEAWmFOdsB}PYOD-+u3twjXigxG| zO#Gt2-*2|_VK&K;E;p7Eo^{iBZCAa@CR_HlPBfOXa%ZShoikR|8Jfn93aoW*5kF|>eQNp)u1Yxj9ctCRvP!otKW7A!HW0GuiBKNtSPAVzI zYRp&BOeC-HU)neHEST%sN@id<_PZD8xJ+at7?-7s@LijvCY$fzx?mVT>Qz_fTjS*M zGhP5{0M6R`4%ho@G)RO+X=KmAGT`X^1 zWnwa)`1Iu}C|nf}^ZfgKBQo#7M0TNZP11Gm_fQW}5T%^d8Zk9iaMjQ?A8bGZ(;^wn zQ%+c4%nER%%RmAl&QJ95ggzwM(|=D{A5Al@+>N z0$S;go0RA~k~+sqt;0toC~Ck-;M3@#FbT|KeRHSNZ}rfW{5cTIW9N9(@8tP$dUB+L z-D_DP#5Lz8)}6mCHItGnNU8=m8Quy*ADpVj}8QdkTE z{C0?^7<=?{I&ZrKgk67Y=WEkD#a8c37z@|6asKKG967u{!s%qQKFKHO`*4OdNW@6| zIos*C^vZpd>&OeE98hua%p1VM?Orx~Kv1k;Gc!ji2pnl)322SN#i=d*pqpS_d5Lw{ zl>jkU*wCvt;s1n!MyC6}r^l(*HXuQunp&xNDkD-y`)m(y~aiW6Ky2ula1+GcXOzn!KF-aKhM$p00;7J#mWy zI^~`IIQGer)&p41Y4~uoHAmqeb6Qho=!3Z3K3IM?`T)H1_IZEp+mDTey?1|YckE0Q z{fFM%h?^)pWI~DEw68!3x`zpELS%c9W7#SslKblZabl9msDBbE9N39^BtF>xVrcOE zm$v*c_1o}jvh~tMX{?XA%D!!FbF=BSas12gfr zbXzj-P!lg156W_d|(wObg4n=jz^T?n%MHPUxI32fGD9%sg|ZiAdiWk_XQ7wH>z@ zf+(r9TajOvodkbt2fr%J&;QS;OcS7q#(j@&Bo)V5NQ@A9iD3OWNvpXApqV>|l6HHQ z&qpUeR*P^w zN=0`^hxT+K`tLa6vJ$#W`cMtEm@CLUBsl~)@lDuV14|^1v@QXXS<3QVX{X2Vc}2$t zi90nj^`y|4ChfLkt^!3KfUzz!$GB1NB{cjH0e2+Ri+-8;i z+H`fO|JFaYy~w-)pfcb;aWI7hOZ4FvsJ0sQBoY3Q5-(wLN=qhxNRv30O`l3+LjH)+ zsDdBS^QXcEWSi?yywNsWZRw^uX`x%l2x?+sBMaUu&x=2_n$qzEEE^46pv4M_&xK$(h}k#e1!HB24mdCx|8K5RqS`0fSVg`27@?U%R-Tg1@p zGCoa2J>RbRR<`b~3%5QgR(r6oE^9N${e9m%PZeY(v{rrXbLngJu-AC}a4OCeyjKw` z1OTD=0H`#oRHpSV>yXdHzCV7nlQ%Ppa2Tx7TC9v+J@mD~C7C*jx7Qg?WMvXQkzhC^ zlertf%QP(N5!UBLzwd+f>HdbB5Rh=H=-Z|ha-?nG@R?T64LA;F^lsg3P;hTAKU1}e zyB)hgX|q`G5`@Tr-5?7H%yBu@aI@0QgB)SmR``5&%+wGVly63wG@gy|g{^)}xasnY z$&femU+FQef;C)|0AzR?R<`oAtu6aiW>0?)Qn(x4dU8uAe0Uopo1Iz+;QR7)``9A- zJrYs~H;7s5?;1Z!c3JX(Yh|c{ zYVvheOS~BUkv_96CUhzxZxWmb8?XbgJzyH104)$TY_NhPfjRdwyB10eYYKx+xjz6L zPHkDz!F=7p)U8!E|9`aDI?^1C`n1F;1l;rPaaZ_?w49~hJSv}Wm-oHy!rxj=A zNG&w<`y2f3!@qsM1kJEB-OyHEl3dXmxkH6tEE5-=@ulzV!r+`$bu|JdSJI6(XJWyl zcwO0>)1jnxNj)VBXk9e#@_sCc7x!_2zD)oA3;*yZVO59^V=L?hyDag(1YBMsgNU;X z;~WFY7`omQGm*VhNWT2u<1pTkv}M1cj9p9S&q)i9;o~>*ikIyfy4EbJbWqeTMN_-G zaJIIKUnGW%kl zUO=kTu|9oJZ}Wvoq&5c@?!mWcu*JM_8Gvl0pG_Wo&#zWFsC5AWA1`nG#U+u30Tf#+ zj9)xC3R!&NuCn=xh_Vz$GRA1&J}o(GaE}~HZdE(L_~I474vYqirYCN1XmsvPxK^|r zm=4LdT*4F|f>jRlH&nuA;at7IRYsxPont@Uy>3|Hb4eCwwk)k|ZnA6c<`>2jgI~k_`{@hh#paV?= zUa5H-C=GuvY09lry-ogrL4m2^l1%L6r~ubs`=pGvlz~0|DvLYVsg!XRF#BU!pn^ob zon{$#NNrQ8w!&1&wgf`y#V=k4V}P%4rY}V_N5t`i65zv&_Hl$BcyJAxisPqYF9$TE z&OV{qa?8QZE096zIp{RA3)HXMH1U~j`E9jLC3&g!qT~i-0k1RX&X6g%t4ba@ett zY2gcqSM>qrP&9zO0eHu0G4}wp440cT!+AVwp`ww9b45^|(grthJt*Gln~S&kGD`<3 zcHzJ_Xk_U8$ZtZm)I1U8P)?NrqN}Ktj>d!Zic7>s_6_}jrA5}H!bnoN4ENuyQz-B2 zK42DFVjjqi0s@YI4#3hH$+6%&NtG!S96wN0E^Gk1g}M?&xZWFY+?>NDn=u^SCdR7;?31Hs7PG_#4sYgLdQ8)dZ4rDLJ5v zMkZxPuw49qE*Xg#g=tal^u(1&#>Vew;?;Y`Ux0Wca)m5Z2{M=@+mQz%YWgdaLxIp^ zg=|f|fBqb_x&@dbsm0P;f-7%KS9*5O-2^lk7~hkZpP-4tq4AU1io>~&X-B)~xy6ab zC~GAyHF8&VCyJ5(kEXMZit78?_z(`|NY{Y0bUT1FLxZ$5D%~L=NY~Ka-Q6u6lG4&$ zN~d%Ry!ZQC>-`&M&6;)ZIcJ||KhI|uS%ggf+2+pP|4MMe+aD&pJDF33YB7;h=7)@) zv4xqN$K2i>5vRw*Y|LhyYGddbCuY-@0M@Y%%~wSHh8)oVCuI(Hy}dP!0ee0fMAP6u z8 zT8BqxHO5f^P@hx6Ys(v=CE)2BjyVfdg`O_(Ch|Yl79+pg52#U|{O?&CJN@$;a5%f^ zCdQP>1oWvbz$`NbE*6~5=~9E`8!N~o0xXFeByo$NK)4;if~*%qqP`V&+u}m$47$BM z#3u|cJB?@=Z5J2xzA6|6ncDjC8n%|e6hM2*Q{(8d$P2sq-9w%!U~Kh8U6jr^)uB|* zl0HL_fr`LX&TQm=3sKj@ODSCy+VK8bAv}395WMW49squX`z#t92}WgsZG*uVWf@?s zIWWxP&VsZ2Nti=ls3|I>)c7&VE4}%O4X;9!SE*oOq;z%*CkVETn*FSF0ZfLF%?IH zHVgyXd9cpRalEbtKvfGL{ABV&y8v({(j15*X8g0k#<L2c+swj2GMZ!^}^ENDOs=k*}2tVuf*#88Wfqm=3-$ z4w13|yhVlZT0iwg%M2($!kUe0t+O6}F z@YMdds!3i;^yWpYQC+mEHf z3Ew|yBp<58i%%I4C_h32&0QZvc&m{GWXMncxXGSPR&_S4{zh)qT#+>UD!1_^s7%^z z2uyb1Xb7F5UCKE%4K-)tqnXc!T2~z8cQeL1rYG(i%m^Ga`1Vb;!^^wF{>y=q<`wi^ z5wDo^>u4*AO>EfhFEhcU;w9 zPU?Fr+~A~3K5c8@iR>{1CC{T6>+ZDHev|2&+LoSSl6zw_w2 zzG+xzH^8{lt-E&FC##qgpFXtv@Sb*uLUr{eupKsaDPmI$+djm6MZ5?n3a&3MO6Z{)p4pa9EpZ-NRHLQl8; zAhy0iMC!tul1y3xQAq&nh1aA54iG>}`99eE8^$+aG8Q?&UBO+-MF{dM$E^y&MsG=y z7OEqOxGjvQAVNM|e ziOU8%C9LA-!bS0--&?2z@Ht|=9DF%qIl-&#Fp%4ALTT#N6-=FSiD}2DX!^f%8|3Y_ zjshY|ekDAGzX+`NZ*Pq-8|h?CM``Mge8p5P>h9#z!S%S%t$@Wk+O#YB8U`}gHpb`* z=PTc{hl$HKwG8+Rh|`oa*E(8=W+rq*(i~_Ml}P{B0BhzViRa$@;6UX}EPo^U(d6HG zegZh~byPk(J!cvO3$Da#j0JKxigTZTk?r^{W;5&AZRR|RtEe_0h=3-VnRgC6WF2fw z>I@t2x!KA4Qq%t)^fhU$)cC2bA>TQ+wzzG=K(Mw0QEV}k_GMB)ay_Sl>Uxh^YWV|% z@H^g-?0QZBVAEmsdkbvsuyLA4dvS~HxBjAa2Pxyou!RkovTI~Nk`IoAc$X)AMmZY3kBj{^WQ6Mu%v206PnU+t$9c zyd@k7cMZf4!zqLWGK)Rpp|{{%^8-IFFcDLe0UJHn45@)3v|&;g^$RYDt=C9T0)}oJ z8;UofO*x&H1xIyCT?DAN@5?}}dK4JFuxb*%2)T;du!FqK$~ZC!1*2So8rR7=$r%JD}NP8uI&$OY_^nunm{Zp;lI|UMyX{HvnW-yRvC`@fV)!}QThtDSExewfDE(X z(-|u4zT~B5!*k%mYQzWtYB-x$?}RB5-oNSQPgr-F{N7CZ7iQCTtaTltuwfB|zIW)D z_XLtTdmv9M>Nu>N->#eDjW#ypY{DF9%VlX;XiparWuFFza_ZSlZ@9Ai$~|TM_?%h* z{;`q5{B9EKyifew^Hh!~SGx@uE>8`$3FB6p|MO;MMkXLNQXH2pDpf5fL&K3kilL82 zHv-c)Kk|Fay8#;R(rk}ufr0whz#!wi-?4}}40Ob^CqZIff1KV*iiS)fOuKP6tsNw$ z#m(=WA!QjOFhJNt{P2n@{|LkME$q&H_A>}a-sVO*$K=;{SEM{O^>mZi`@#G(0%waD zA$wb89!UhS9o)M-hYpt-yQA4o%I>V!0l2ZM1bgNU?{>_?Ko(@h@e zUa9dF-hicxAo4sP`1x20^V7gqUIhQbU=`sA5USL9c$7MRpSnA+YY)xWC$HjnBAref z3`zxsB<_B)J!KS@GF_r-(s2N5qJZ!^5*7*5ByLh5KPm~{yz-qAj7>24@x!jRCqgK& z$ELw@V%=p=YNhmNu}@#^s>D0tw;m6#*ZE#v3P*!W5pK zZqFA|gHO!)>L-oeU!17^94E^Elyi)dFMKfUsq>D;KP{@Q3!CM+GYj(T9bwesT|ij6 zEaxm9xl#qZm39%m;9{uj9a+6TU5+*jfBn&frF@E5r?BT0d)@4JI}eNR3kOi>nBDSM zOYgTY8=Gg2Ir(M2&)N1v5NxlFGC3fPtph~KDy1&zzw^Cq_D3w2xJDa5Bu;tg{J6eX zMG}ZG|Il`T?l>GKD>Ar8GV(3ITa|Q#l-vWjkJNlAZ2&2gB}^HN<-&6TB>732rWO=+ zhgk$VI`kd>i?tXZa>CXe8^jGIz$}nKsK&-WSa8x>s9>~vW}1VTPdPW!wW)ladLR2p8UO&;Q% z`4I1BD@uabaUJZC#$75^bbb)gKbNI9sME-_&Dv5qYA{CuHwYjOy{Qbfg#z%sNQgy@ zLN(4;Ut3uO9wI3xd^8A#E=FNG=?nZM4~@DKXJ7KQ5jeJ&DS0$0a*i49GF0Rj9jjb9 zxo?`unIV9LlB(m7TE2xCg=I3>KxMcpeF=Fk~NQ81e%Vr!ETSLJMZ z(qQ2@2)Xo3Mgmbs^3omU_6=48U){s_l zWQkZtu?=49Cyo66j(woE636=*OaE@@*Gb!7KeTF}-fWjen`3Kz{o9AG;&nWAUbGzg zc!dytweH}-+;Dcsn1!71Jvx%;+Q=q9S!FC+>Eq&euZw@%P49nbr5LQ&WqV=pZPoiP znrMxmxGZYWcnfOP7tb4h*S*Q^ZhI0*TWaS*F6_3 z9B@hqm7^dX)ylXZP#`ykXOm1Pi%urzlsIGhn`R(N?JxbaW24l_A~eJ9^MAKlBWM6i zbD@QPfv_6+zIr#YB}pNCy;#zi@Hevg>?+k(mwdoon3@H0tbkgeAHE-nwoIVPKMp@+ zSjk`moH^kW$w=vDt|nh?e3V!nQTu7gGCsD? zWwQC*e3q{O#ebekDGv??EHUZjR1>}Y>6#KCd-_Heaox~e4g`O`Xub~b?C1|Sjiu;L zsK9dx!R^hlTFi3!BS7;yPUAr=lLJL1HA{;@W2ej7oJyr{AJHmjkj(tuSf8s7!(e=S7;JHFfra>> z`)GH^8pe95Pk^ zG9~K%=k=6m@TY1l`iGsbf?bjZqs#=rP?h*ct&bFk$$go&QIOys5)`BoQkedUGy;`1 z;gkF%R}w}}!VuTy6)JsAF$%%;`DSBIdC4&=-I8q&j#*F zWYM(>u3yCZv%Z`=g9P52_a^3DDTQn=7irc3qO-K%4;jQuc_l$=;CgFoW5k*X2x)I2 zAX2~_1~?j$+mZ;!B$grFK8;?TKR)PaC#fzpd4b%PBCJkv(-mc&t<#B9#0-8*#+x=B{_NwxT<4(Bb1Nayd!?JdI`Sk*R%p8Xw zjN6di4aSJ|1t&M89Mm3wp|hUDDCZo~XdKIwUqSI}r=~S=|%+OzZs1QEMcUxmw!->-N!WBkxOeTc<^^Bmh4lq`<#l|F3 zr8{e;Imd7$h#Su8OnO+R(9pvq8>cfm7A0;O$s@Qp&Aze4WwiaSCYzo~vUFQ)hK-SC_#lFyW}Bd~B&RH6uDw_zFi6sZci9?u9>H$V zskJH4M@v4C@{D*VQ@+n8bIYlrQOjDKkibJRlm&}Hrd4x0t3L99sCKsNbW_n_me{`yx_=Ck$bHd=` zkogQQk=x0^csxl$1vh;mJl8)gZ2{-1rC=tt_` z=+I<-|0PormQSBPA8=v|Dy84M$T5|+C?p*+m0=GtOMQYyV9QzJ6tO(Yy%FS|6hIFK z3vNS*0INg*>QX4!D={zgdv{cjz>}p#N5~c0p)CLC8$KVJ-X7-yoZnaM>_w@aZ1(jz z`$}Uj0VhbH2reG!BtOj;V|Y{+_T*(pjWQ(J+H61Aa$g=-cn{{nOHE7G<6ud7|43+( zqd!Dgxof1+{)YU6k(3cYj=F-+jbB?#TmYdygj6*6!32m|ukn;YG_@_2gs6%}?dS^3 zzT17FMwxTTt>K^VtNW%LYJN}v8UmyF;4-;y# zf~Yil8!Pc5ev^-|i~=B5?m)ksTYHnt*)ou9w6VRITB7;#(W#-ILc&m<*7b`(i%VU? zZ@(H$vE0SG^a8dC%^F(0R654z=0Jd2VnF4I_9e~6v_Dl^0MR*!ZC^j6sg-%&(s{9pe5m63P(yJk_NF?sd_`26T>Qh!o1-#gW(_{I2v zq|Q?cO-)o$753z=Mh zvY}#}+F71p7b7m{9`@g#u*Kmrl&Qs++ZVsJlC?bbgEod5SR0SnP4y|KxRnpw5wH3G z=)D?p!qhA^=%B*nu{59p*))zNWxfsdjH-)$E7vy{C1%mzsx-+_;Dg=aHY{n!#iF6f z2=XmcyA%o*p-C-xVsmtuty>tj@^Vkp9a~!K04@Ao-rRjhQN?|D3E5#>^#gZ!H?qUt z#pHd$?SBbZ4^MIkvan|bCTAc-pg@IGm2{BZdRO&Rc$*0@V3-GiO<}G-Gl8h;>(vfp zPDw<$bw7vCW>oU$vm>v_037}%Iwpd0bS+?@!Mm8a2`XRyrUKsA%f8_JwK8v$#3?G@ z)b1ma|Ij6uv$%%dBrBGCP_YO5dYlk@LTf4btcyX&9M;u2VB;wg@j`VNmj(0@L$#b>y*BO4AV zq9(fB_Bppv-0dU?%k(y)JB<^zJ;n5Go=X29ldtj4))q%zDHHw8NVuWO_bn%72!-Wx z1Vd4Q<8Xlgsf2)1Qj8eVyTTu9?`d4b{XWsw@5%Y#K?xlEsW=1oCAfhCdX73O_&uV1 zjvW?>J%UI75=bR}Gf<{kj1BFvdE99`@!Ux@|MGfh2mmVUb$R_Vc8PukdDRz8dZ8NE zl*2^?#Cn!;_NobHn*uFWMyK5#h%CIi2^pv#TWW~i+Qo<>-uz($O>oQGumpB;|Iw58 zUCk{D>;GE!(vJ5BNyEGC0f7mi3k+C&5{%RYKYj)*zzg$y%(?K%dh^y-?6?~MHHYP) ztbdln=gVKGEEipU9|l`{AnNA*JTvL{+x89zB7o)I{}%5Gg&hK}r|dHX15-8FxusJR zi2(93lw}+fT5$P_&P%Ig)`B>8xB-p}hp*uIFhpwsMOLSeQ5Z7k@&P!YbO?i{ZVrp! zJgamT6(X)t>wF3X{sQwP5V{rkkUyu=F(^5UCM@g#P}e!X+tmmKY7zlPd!7d%b(Mnj zfD2(0J06^_XddJn09JG|hF;xaLIQ*hTO!0&$*~}>f-EP5 z;|EQ*Va=cIRoEzi(7l*uGy_09F0a3G2B{E0$z!HBVy~`cZ1#b2iOPJ0W`tfD*(+d0 zp7Qoep>}4rZ%G6ZrNxJGV2| z4Q0h~$FtwLdoDhNDE;zL?@Q+M6^g2@z02!=VQH%w7_`U06rA+hloNxgBG zi~>@o3SBu2a}+FuS)A)mW}V0)fL@B(hFVet*lj3Fho$22ocMhrtpZ?F1pdDCFk3C; z`j;cgJ%KYJ?8PUMx<8W!vZ8dSc|6-w2Ayvq;{tYkX&GR}vLxWz7!aM%H0GL+mBC$F zb9&6`mwZf$&n}EQ5@HjMVxZt)h<#s^C+Xh@xcL@vOklDDaqkh_>7-7kD7H1uC9BDd zh49`&ct^HnM{JQpe1ud5F|+8y7($A9m_-VUQ}d4a`|fWUr15`Bx_VaxI2m|>?|30*e0kj_U#Q|gMQEBsQMFAe)B43*+j{LjUOZ`vUVHFNNJw2&G;)u)auE~N;9jy#VOD%jY(J?A< zHVUTATrW>bAtY;Q?-sa7gc{_W2NzWYwks|)I3kn|eE;U#0EIP1DTBJDC5i1)LS51Z zIVjWKu45w7gAD#JhG-1)ahewB6NZtxs9pb4AQQ&yK28c{FTS^UHJ#sGqIon)Wenqt z88k(LuD-=v3$?AERJze9vx4j0mg3lO$cK^l4-{cZFa}4e?4FZ!g>ZsYl5VK^ehb-GUOc& z{1ErnkK&N&97Dhi_0CrMwNYP5Y6?3OFB*wUL9c0sAv8kPDwiK%NPj$T4cyO*qg=R8 z>*_Q#2Oi5iDWI$zZZfYa@&WEyEZ3&7SCUFV{r0 zP~?^f<(EKatBn$txlF#_!OL2vpo@swnZ5NF12)`9NO-ycQ{&ny^7=o+>4#qFWFz(F z4@_mX>LPng2Rxg(?|Ug`->Z1YJlSGu3OoZ%>SU1GoIkV*O=>XUFtV(X%34+|j?+z1XVLjUp5a$G8(UB< zp~hMHd#26oeE41XN`m0BN}?Y|5H%`=g#FoIdj2Q$G<2Uc@^n&McG14P=DjVXC3{C= zn%lqMVq+%^#&&7y75}Jhe!)r@z=)H}lXPnKIYm6*R0HE~l!`8bq4LsG6ih+2;t6QJ z+M@Xl8kOIxRRZ#GX;%*W36Vpj4C3C6_HF>%okxz0K{RVhI28(LhV^ogFA4~2ikn7> z4-)8%mDs-9@g$eUet*f1PByBuP^W?ldg_ETsezH11?a?3$v;YB>YrNZNok%a03>}_ zILPH>XVaPuk+oT8z=ovu1B_e#u z0(T}LK#m;7oIuK}iRINUtx?0>V`amHUgErA9uB3}u8MEm$(CS%5(w?QmM!S2RW!Q$ zY(ncZRHh+Q9^3g^EO*Z!jws&#uj*7z@rYFPmiMQ*#RHz%2E>)gkoKSeEFe_6DA{MYmI`MCP|$m(bT)4=q*{Vw)j z9!2YiE#qN`h)|s%J{kzj%3e9n&YA_|=bp$$v%hHaK7Gs3c(_m2KQ9k{ z<$b%}wP4ZcxOl0Ntbcj?R_V;b9w0Kv`N-JyjfbRGOzOg#vGevCJQ zSGWJ`iC2my+X4v9sk{q+0_)x*GLKvo%77O6`N-LF(t$iL!SbG+1fj=goc!TG_MX1T zw(GSbvsl)|t#NU7bF+J< zXu5?I8eKmx^%|+#PSDkdV?^fsk&@;u<$3`!wjH_nq2gS`fD}_U!q2?nOxnDZZ(h;KJJJ@49Z6#@TIv+j@9S#|n7JQ!m)_#M?zTw!Lk-*lGJ|tCM zaT*S7(>i8*w(ot&$8z5pl5p8Rm1}EyH=LUnNPL<8ZRG;MCf)YUpDfqC@i`u0&-SvI zdye;*!?**C0y-v%UZ5WY!%F+R39ivf%bwOSZfh+M%3-N?%7rjcWl7hkk>oGohb^QdI4fhj}n zM@N#Q)c1T{vzR5})Z=Hc+o71xhHT(J#)dKVxO+PDI6_QY z^>C|xBkWJEQ!o_$l)aZonydl`rmXaL=v>gw^G)EQ>M?j7`0QeDdi(flm*NEXc58ih zVXb#sz)}I}Xz%rCu7KbQJlTnRvEwr21crVjKP?smZs926D1b0WR8|mrpN9u4i8`NK zueaSq{arI<3auX(ZfpPIZudm>VIfw0{}bhH^_BQ`z)-CCtn2A?cFPW=`q!y$rKUbd zg3IxO08jn1Fl7r;OiHsz$aI~EwN#vSMI{9J#t=I5e*we(zXX7=l3 z`!XqGYvwWrB!~Xyl0GCPEDRkzB=O<%3phORhWX>!718zqn-Nj~$R9SMQOb)aFctS9 z-pSE@vE$dM`?L1j`r?WX<;#w)5s2uVXn@nsXqJxkucN!8-3Kp<@}{z7#hSPLdHSqn?Cr* zX?RuTE*3ZfXn-0j855tZ+Q;ygi#4UHs6LB=%FgR1DtJ>qLPwPjV2th-GnEis3zeve zJ^67mk|4#PTMgLv;uJ7_+d@Am`-+jD(p;&onHAtA~)9i7>rY|g% zIMhZwb4YCi@A6!XT8q@%_&kwy4VwBKjsAo36ph9?O0P;wk@jcCUD+jMDUGa+>LQCe zoGEUpSk!&C2>z|G1OY}-RG-$ae_SR+$3CVI-zn52L+`iOwzH%bbMRE)5Sf9g$R8f^ z7b51E75PHBYC|Rs-eVPSC{A@w4G25-d~Vl*SfQnKnVuN zGvP%aGE6NE=XR@0y(na3pB$A(L`IIwYw?bj?r8QBVVampoA=+}7g};^?iRp7P8S8* zpbsjmVdTD&Q#Sa8Y;4cUut8HZ-mvRNF}@npI)RM0Wx&`TdWG|}6IpIc{IQQ;z&&&- zkG6}WhHOQvT+quq3#a&F1)j*!F|u=G-*Y3f!9PZ9>c*Mz5ex{VSIPoqhAo+qp{Q#6 zWgOkoyyhOu^{F#6@`pWwMch8K=&}~4etSzf$4pjBzBoFPJ`K!}M)gtx#pEFa{}L#A zcNk|dI2g}8&}2q~NgjRw?>_k&pEni4Jj)H^$B%NK&l<%*P)3Z7{OIuW^~A4ir9vnD zr#}ozj~gKf1QsTJCa zWHV%}Z;Dr6MW{$hBW$Sw&83i8edW+!4ur;iFD{FGf7lQbT}L5~{a097OhF5;{LCwB zykPb*L7Ymhf*BIEJ;M*eJCg|%VSzB~Qs=%ZX+Wi-W5+_bJrS+OeNaN*KeVKTu2!o$ z&u0%H3Elhy`6fTv=uKF6x*ojIvJo+QA6#aY+Co)c3nOmGuROEn`{+4)^)tiWj1m+* z*Y~-nHAmFrQZ8_Zmy%4#<)=J|(sTVRS^pGi#NS;>$Vul}Hy-TqqzfITPeh{qVqd6V zv2w?w8^z*53b_xsN3UKZ6w_TTM(|-s_kZ?lGU5Cv{en`TjCD*^xTyotY#GDcAf)4< z?2ul~=)}mtczNk&4lhp&BwgOHbV$<26Tfdu#)d>&zd63C?nE`XIrIs#hIhFSF^D*g z2S@4F!)Ip}d&nm*lvuFbr`J92gRn%suCF(d(65-SYrnEGvi(`8Vq>sf18?;1W?k2Y z+iLB3{1P$j9e#qsN(f~ar4dn<;+A06kDpI_r*{hA!m@}vE3I5OKCv)FvTA-e_AfUk zZP>))k?wd}g1E%UEeyzhzTv1m+?_BmT9^RhD0BU8o275!NMs+0O4qtaO5z(lBxCJkfsq{ko;IL{tL5hqNajpd zS;1rxBd#zDxh8C9nh8|jl;j;jv0G7l81Ed4^X?Nbp#r z#I^RXLU_H}3}s0fB+WT%)?%VHo_>6~rK+8)!q&q6ggX5@e{-|t7^cVASjKRNO;VrY zGIlbim8t4Yd40E#Xe6?%lq!+WV|xGdKW7I=Jo~c(59)>Tl#aj?E43mB(K)E(Xq%qpOW-q};q@VZX?10Q63ob-Su8eF+c67JYxFDpdHF_MkRxl&&9q*$WboNc^ z@nw14*Zx*9cwFk7eEc94h#cZ>D|34mK7RGk{=7TaCgSthw7&B8WzJf3BCe8bsb$k9 z{v>fdk2dlk6G;e`DIsV{qCt2gue%_I9eGr5HcJ{kpCdN$2$<_JZ;6C~Jn4a6{%-h( z(TCEmkHEH&=m0{FHPW~Tzg>FD5Wo_n>r81Fw(`lF5*J_XwcuoB$40kfczT0(@Lspb zT+!Z+_uJgEfP2E@!0+L+pyTv`bGbV?miui{ zRy(JB>C&tQ+7EN8sFs}I%0se6Q9`Zjx?a!*?frCCZO*s#+r(hB>rt&jxCXWv9ZuN| zq$pBeRkF{noVO%5LFI-ShW&#BCfUdSE#!r71#i~;PPd76tuhr&piaJpPcUcT1R;A~ zUuo7DmH5fVR^wZF!#7b`?#Uiuf#A@WZlt&?UWgA#zL+=o@%}uvUT?$0+txju-5u6C zawKRsuW|=Be;q%aV}I#*IMb(Su^d~Xe_z1y|6Tx%)uMfI9KqTx0M*&A@((h@ zsNJ}8v-{X#X+m+d+= za2pbDQKmv17(?GgtN1wD$lVTCV45Hotc@e;9i0Kk+Z?rlS2HcZd4-AeK@c z>)~1K%7J3GF(p9X|G{UM+G%e7^97~l^IqV;;kCOLaU(qw;E~Y26%^6%<9F;e?mPw< zLp2RD%;DkqO>59a2hY_|hCRWd?bqAkQN)v$k(S>S6;GG`TF( z!`L|fj=S~#A$qyh?r>=vgqkOsIY<%BC>Q#bLQFeo-a7_zg$t4*K$^hI345)B zfUj#+cl^0~EJgb!a=Orqt$$VcOYod}fl~t43y%Rzt2JPtrcxF_qx%3(l|E=sMapLq z&RS#0{l&QWh91Z9_}c#P<7&VBl`W>L)7aG zExP?&nJ;rgND&k$6$eED!E+`lTwMvR?xf;)8$-V?AK4GPbY~PuV`A5z<9Zlt?gW1 zpJ5kaaJFJ+?b@WKSlZBn$-hUVhUa6=;ohWmT=oaZeSe35f3 z>#;=^T&{K28XI*(12wN*STc(0c4H@3`X<4|M7!Qkj2hqXeo}sEJGfB#kwXxEh6!nG z6vL6O?h?5R7B$m%Yx&!@{yoq{JIUkPFMI6i^64)7+34crlkp~+=FHDQqxQPg@|SUR z@vY528`_|-!S9!>Nvu;w2))><8EwtY5~HEfrY%$ofqz17%!ha|i%OoW2mS+^aD0<5 zEh;r>#N$&ii%dDumpa$V3-Y*Xiqrvt?2bz&(wV4Kc*^QW$>_yq zg85O~4LW-vQ|7Z^!ZhVF6!#E)LSoYCZwcvggBeaBHFZ0D$$1{7kp>~SMXEI7_Y+~J$IY?m#lrF2i%-+j8bZFb5A#uD3Yp$3 zs$|heE*vF|j5bFn5546am4A~VzpL% zk`(E*_4?Uax?E&vs`*Zq~RQ!3NtG2q(VY}5_-+S#2k5v}2n&LkOn~)x) zIl^*ZYCNfrK8_4}d>bkRgfFq^gkORDW%Gqk?X#)JY=L2q1hT`j+1THEKQUQdlRMUC zsI8hNkkvTsMN5#OBi)wIp6diPRYoEgsI!-*{ag*(IlZuH?2;lVjD!BN6*Son-^pIK zwEw5Kp7wNhoM@}z{O2UIJ3l&#eLnGiD?5wy?hkP#S>N+z@zKP@eJ~~7@vyeleAOf0 z`b$OHID$oo_78mT>8>#41R-UMN1bF}KK`5a5r}Gq2?{zr9IvkbGqZGY`TLVyqh9By z+?eof49P3tMS?yujP?dS)){Ij4;=?&R6Z+ju4~ zFHCB*5MZ6c620t?+B23DyPFpUmd2aAWV3txq^&3Oz^ibAi7hekVw8zI< zCq?5*p~eM88i^8oF8OoPkS!`O+2EYfPcTx2Xpl@K$?{5*hMDpORC`lEq~&mY+1s<&Yu7tl>-wH#Zn*B~%ykI?r3#Qh5)YYYL9wv36x#n({CvWv z3=kiisL%l&vjU37bYZ~>fE~aPc5DGlm29+nqa+!GgdBCRRqZEso&aAfXyMFEH_saUrTmNdk0d&)@kaHBzz8f?^zQKfo} z=H-661pF5!l0mF3@G#K+H}HZ3I`6B@ipgE)s(iY26j33b!x+%ZgF^Plzg z2HR0KvF+9B$>Rqk?T4l}QiLe4o(*#B^^UWsv%4jtj*I?|_$%UgBYM=ndWL5M*V)Y0 ziZdOeN2 zs|8r|EEqK`Vq97Ox=$J>MQDCN??}|w!lb&>OikQ-F{iRy&`l#3H6!bc2Kp`;2Yeo@ zwuW9I!+vG1yY{((eQ#*lU5*-QqalC(M6WN}ymKbf zsN7~MDt*=p2s zz`(xkDQB9>w=taEs%;1BL`{vA^#C^LI@O8BmR&8IvvRF;z3%!iW!7u)<2b9ndc6)$ ze5~H3OkvmyEUhb}9$j0Bah>Dzdrm_cVnX`>u7 zWjxNoBW-9-pJy{w-BzPPso64B@=9Reui#L+HEtOsZOVn-S;uUagv2NQfK(d?a^Dx<0cojm5{ohD89&ApD(&fI52a*Q~&#J%}z$K zSY2WT3{g)0yZ)~x-&8z z3+uySl9X;*#{9lXl7fzfN~1o_J~ycn-ZiY5X6q=spkx%~|7g1Es3zaHKWc=G&Johx zjF1q9bc2+Dl*DKx6%>$xgmgEfyBh(e8%8QANOuVe2)@tvch39A&e$73anKWKF?mveca*N*!4ZtTa_Fy3L?qY{K{!^r%?k1-G?>Z9xiO#Cg?B!4ocs_+2*^TbH_uzjP=&fb)CZMQTg$5 z<*^ja{jWK_8Q#xj{xLx1*G$%<-ugVPK1MQ*e>X1Hho#JDLXWQTQ)J7yIFh@ndPKNd zz&L4tF+p62PuxBf!SY3AXwF3}7TDfn;n%SA z*neSe8&Qfi+1-=PK9j>)t`|l{Omo8R6A!KLdX4mfe|bNu^T1p#(M1iWQG+xO8TeD9GSr5qv$3j~8Q%Nq)bY1j(1RT$mr z3y$&49qr?Ks`e{XV<#m&{kk!23cKPx_D~l;H>)YSm2O$@?KIhTxwg&6Aqc0(6UY+Y^%O*psd18*d z+evhxzc2k_tKfF6JHp#MpG_|O2)isF;^`+SsIKfz$#lRc0;H@}wFtE6peBB-}yn^2dAo^Caof~ruXcFNUT?S+~S zZ0RmcP*L0+GoF?~>tSE#W`op=F34fGMEaB|n1*o1qbOcoK<1hT#GX*cI5Jn=O66b= z@;3L@>${t5?20C>AX4-EH8!#0BT)!Sd%3 z=Gol5T31)TJZj^pk<+cqke6c4#R!wf$?#>4S#x1U=HL6%#?QW=8t9i>=34K z6+MDE!Aiu~5Si-Yd;S5JD)*h!&34)i5#S*%XE^`slOXu^j@?K*LzUxkkjq0PXWIKC zveTUjLcL@~mWMy&H$4~%p~KeU0}C}6^6XPTc?EUM&%3sbEg7T(RqTZA?M0_f1T?ko z0s@{5ov!1mVj37Wt18x^QDkvbvS*D)hwgRvE^C+eYR|`{V@oHroXTPT$JFFHPw};q zZ0c`CwJjg&HSoqrcSHz3-HBFmwSUaE-}3L`jYntl396YJn6dl}F|;Zfmmt)+6_r?@ zL9yoMRzd`51>8$i>g-J|<|Q&L(T?cNjlJ+idW|Kff->4qNKUUA)F$%N7M6#?TOHg1+EzQWh*y* z`SNN5R{C6AAhgBq%jx#s`wh92#%a{Iz{nzXTdwloIyHE+0RK?ZB?p%pk_sc__=Qz= zna^ABI`658Wx-MT(z9W%M<^C2^m?c^vfqre8d%u*kj&fy`u}ZCql{gdb1AyDXcq-q zlrBbSf67z%msOl-979KL&S)-E#$Zbq!biLqusLHY3i*tZfnh@4X~mjmO}n8GOgyE5 zP$~Ix0>Ci$@R7mOPr#2=XApo+6KQR9w+MZ4Cjl|r6cIqEXd(I#Cer#LUW2Gx15-_| z0K;Suc7Li9%w&$t(I>P^UGvDR>2+$eIXtJdD&<=ZNy8+&LIfG^G${DZ`tka#6}vRE zs;zON#oJgYh2j`gD!XO=s*vCSxC0_o8O}7!_ILyx za!G(glE7NbJ(}46jKLESH7i(SY|5is^S>;ssnMDgib%pF-Cxgcpqcm?g^*Ga{go8_ zI`9cSkWIvJ4R0S8EjwRWudH{NE;oxD){<#8Lu}Ddyd`!8_BlVL#gs(|+eefz)FmJO z%}>e*8hzF9N{BkSXviCy{0_F%*DdG4$K`pcQ^9KDvzPbk!M`DpFO9XVcPC|M(ow>h~ofc8=tbrp>s=TR(u0xY!;w z&8}k~$=LP&e%0@--HTs$7|Hh!E9*?sjPD;QF^h`o3*l*L5E0pdad%I?L?F(H> z&VTr@fA<))ZdqS&vhsT?JRBIelb4hklmbxk?-eY0Hy88E2{V~vhQH7;n`wupk@5nQ z$!&cdSy`{$98l+2n#P95z;RL7b5SKe*erq2L zGAAd9-fvP>>z-X*`MNA(YGwV6JJnhB&Ej^~{_)mfD2%$r(wo%OtmNt4eed4hxX#Jk zhxnQC=Q?rk?hgqoFtClP^&1z@NW=Yr`4h-qpsHjRY59fwe8sEDoXG8a-A`UiqMDbF z*1yXAy98#^v&1R-Qzs5G@}93r)66CPC#cEewrx_pyH9-cWc8 z#&5DhN`d-zqb7x_mH1H?(EQdHV zvsV-0npWPW9GJt@nm(lUh+@<~e)Vwovdz`UMCEW02Rniy(ZJKYyv9|cEI=@1NKFfXGqWhWqA}ZHRL>HM@&YAMvFbat`8hYpwJ($L%a6NW z-TfMW>T>tIcfRsb$H;e3HswLBEz2SzgI?l-xf+#D`y2F*{Bp&5Pv#b z;*C`Dy`W$8n~K<b8@p< zs+8Qd1`{0O{w8b3YW>&$HcWg@rCEks$5BWVo+BYVfe(E)KH_zCX%`7A=>ai|F`=e*wW+ULMcb996z*|XG5?}cnL z8%jI3+s+(tz#kZ*ixQZ-A=^k%px$y%@xD-kE z?NU}nMYTzNXLszbu{Es?TLHfS&!^i)5sCq-$ERG5jV(Cf5c*b~g{VOU`f$@M3p8wt zskurPs!$I5n=zHTy90t{zZbV+yDH}iJ`Xs_xgF6N|57Qvy>+$`-nhxu*!U<;cCx6Y z_XAdK&YcCwh6#Ok;wSj|j}1P>`p_Qb?>NfAK~Ph+SFFRLC-jqm%mrc*g#)tTntL<2 zZ^L63`1r}W`@g5aqvl^`{C3{I?0LaCEu@pUw8sD^!QHhXhq57O_x&;YBP5})h2hUo z&?tm(PxO2z3)Fx_UOD7YN^iUw;;Ro2;HK)^vb~;=Sj=@e?IM=nDNgeg?4oxm)9Jo& z7!16)&<5T8dpLFQTYJUGBOO+LcjDZ+W%Gi>+fIM_bl_&!@_WG5e2F&j~@Xrre zyxkX+A4rlZL17~!n2!cQ4Yl1;9ydeZ?vF6qo5lQBVgYo#xp|_25AU3kH)UX;pIiro z_xP>io5O|in$<{tI_x;VEyK7pGmgQZ1g`WJXUQp-Y&&z( z;%zAwL&TGEOXRNUMUTo3+l&~cjTOVa3feGV)!RO&{vBibZ=t=_Z?Gq(Kpj?*rGKsL z@^h^Rz3#0|To#WFAW&a6U(6~XqeI%XxnfggI3cOSx(#GDdRgE*n@o9+jhoWeR&heY zxKh#fMs3;KQ1TXHcBR!bQAM*ASef-#U3eB|Q&MS2ro#bgj;}Q6Cyt0s+rGyw=Z6H_ zFz{*^>In`KKgYO|a=Z7d{q=G9k3NjvPVrha{a7>WnL&P!nlh4Qt87kCidX5kzzc5E zK1b#J#Uhd6hW%%@VU`}IH;!BbV*wfeqAbg_k;;+wibv;(>962ZGIpOsT=W@i*~^(< z7w3Q-)mM$tR2XkUtqk^9J)VwG^1)~*E3P0M&kuyc!0}~shwLftK?W3?qZTm&a3p)C z8V}Ni*t&iwUq01QpqvO{Fzww6F(zgf<+^ow?)1~Zo|v5M;vMXrV(2O@BtK@rN_0butYa=-Vr^k zyaF@HEmfxnMQCmj?P?xqI`@lr@G4;>m-N6)m_ZUghtFRJt0$TWa6>Iuajo;JGYNXr zI#vDY-)a<>vHHVD5<*EW9=jC=YCF_w$;lvG>pVfUn;=EO7+){Xjg2C>YT#}NB%T@lN9g-k8Y%LB^uRE-t+8LmpvNCN?gaNwC69&Nc4UZNx1@YP`GaB-Ot#b zH=m<{xoF>6pUB| zddPsNsELB(%YQr-KVLl+$;JQmTcZ27IWJ^JHF@ca=WthhDNK}A0w%<$(RI=AFltX{ zCLj@T+EqL~{Xplw9$r!D^wuN(e)ik)r@@cq%Yj1YIj54b^)hvSiv!eN4$*iDZxJ+= zMi{7RnpPX%TeM-^Cv|71+*8s-G7KMdJm8>wz zM&V@$*jajl3zqgD3S#sJr!*xm1t`Q`@w8HgPdvM}X5N1SM2E#`x(pA!3i5X2R&TX*G`c9+ah3 zfgI17H=gcYAz+TcwF&MMx((bx6>))jFIDQ%O#jiM(h(nMcD`DSu-wnb+U+_c{X4L} z(wh@<(hY@(JV!&tDt97Dh|hg>ZEDku61k>?p=_Sg*x!aU-u9s2*Si3PRktd1%*%!j z0s;7;f6rRHFga);Ga}e=5&E<&Ul3u#fgpofL|G0%ASy148#G_C;;uBaBV$^DzZa;~ z6oSGa22Nu(*-nOc7{4x>dpg6w5Q9ekvJ}&|90HWCx`~cW-*P1Oir_k0P}_$}Bk0^S z>KEh6qV8mb(5hT3>q$czYAZiQ6l_L5LC@o;YyHKmv3zXa*iq+hd2mBrR&nz0TM*>> z8oSj+Dfzjc)~A8RyHi|}J=4Ye=GvqZWkHg~7O|UBhl^)@!`sj}nF5a;+9c^yjJlKj zaK%Or zHz=W4EOU2hsVVo11k`f~`E}Lch_#f8DplK@ppEA`+JPL4FdeFE(j01)ga;-`l37cB-#4GdHy_(!R!EN|WgM%mXnU z=!0@ouiz1=2=laN&s(RGdv`rH`NvjhQxjn-a0p3FHX^W5+kT$WT}blK%*ywiigTMe zg_9;+e7G1c8W#7+6ITtHB<3h&$kNAM;P_QvDcuO#MCAOp?}8*8T+NU;U(}xQ4nQCm zCyX)1cSlS!Zo0Z~Dt~rWQ1O|1HZfBknj|@M zmJMQj&-_bMLH3%7=Q^@q8yTgBJO;|z%HX0IVj>R@KgSJf;5eN*@wFIU$+e64E~=t7 z#x{?!`cr97gpOiSwX*PS4j3t19@oa`L$G9HN;gl=0o3IgTYZL*6X~T*N*)*@FSG(S zjM6(Tpy;T23InOblJs%KDjMPmNdsAZd#9hNVzBt*=vbYmQ~W*$+ypS@a4|mynbhXcIR;VcVy)m@rU?Z25H1g1`*op(kqADMgMapbkmk# z;FGgrLHI0{-!W0HKhG|`q1eBbOLY-^)Vb^~88SPA`cbpujUhwoivlgJ_-&xQ*O)F# z)YM+}H9G;iYVI^@YK_awP3cp;pRYkarFlg1895kC!xv}9UlJLh_7W=GWcwXA_BzkW zL8%7XkCYOpD0it%o(FEFzZ$2e)_g@*fpKg6w7aHe`U{D~58At>XF}F4L zfB!O!6Q3E3OLoiD;6{>I5N^Os<}?+@|fVUOzc1 zKdh(Mgg_nxbqS{N5ZbnqphYZSTpTKe(pN_EGbg-CsC7oJ!;UfvHAT6Tz)GAD`=hGNeNe z@sjBpmSct{5(alXt#c6&(W8z|nPGFZFY)Ug;&n87 z5a(BY%7Gt>V*Z39{3xNY$fjxn$RsFu@Aas^3-Yh|fMD_u2~{|}#nEBw;G-v4uLi1#Cee)r#~wRwwE^DmuOcs(GDIa~eG9*
%Tsraa!nXv^QfxK2}c>*us}^V!qUK8?$WoZ)$;uOidfEeU%Tk` zHD2c7kBf! z;~=*$X9~g;m_k0w#8sS58kQbG1M3kE9#7~N5%J57X_`x_RpJnFvDf|28tXkq^k3GCLuf-IHowy}`!W10VVeZ?94tSrFWf2N|10(rb|_BQc2mSp=Zw2Y48^ zW47*{Kc$z9OVu#bk3Xhy(qdR?5PaWbDb;eA!$Px88=H|IP?|~A;NY9Q^lr+P(h%-nmlBc^m2oZK7p-g!7qO@bE%6eib>H` z&RAupmO%Vw#lI!!COddT*<`8=$#i$*x!GAd$0F7ba*Tg+O^E`QkyS(s_hs`aILdZE z@Ru(=Hbk7%9#&z9r4UDG&`|a3F>nMppG~g}ZAceE#G{8td0^?R0ClYISOyxM^y}#} zx})Z>mdAXM$)spf$mxL$cCe?mUjnmy5pt6yNz_rdq`n&{_HDz8m2aYq5a``(UM=QG zIM-3`^02UFv$jIjlrVluxe$(KqhNv)Hk13Tfj|9$Ji;RFzZ$uoz>V7WwCc!S4joiS z0{=HvZ6d{9v0T9N>z$)utp|!3bBHcI!^Hi0Twm+T#oxE5pT0bR4@bw27cXaG zH!YuR&kg)|3TArvzPWE~fkCp?)-xw`I4MaUOcri{!M1R&(bW#OAqzqV}g)(SKw76zkY94 zJJ20IF%Dgy7-)il$~jhDje>nIH>M3+sCw~l9Z45-f4CF(&i17HZtc%{xOZtr1Evv5 zFksuqxwu0LbUu`a+7nt^#U04q~R> zTU6CLf7v-0yj&YgRr9O0p2-t?|AFqo!WBzpnfdn=IewO1Sr!++Me2((%`82ZHd)MIR|90Dfph&QCww^XRX3? zSP6NjZ(EPjF$mK1+IzcyL8gLdRWEFIOD^sC6r~kaPKumnzg=>{^Qr=^21VP;d*k06mS8Ino*~heeJQ16;AP6CrsJ ztkZazYY!=J0~?JC4^HG;XjV_9^bY-12bAiGc_XM}0`xrZ$HqrN_E-FT^% z3cq7U@@NNvnySe@bm%@bsv(m|eFBVJ zU%Z+)NwF6h?C!YcFx5}EhykgT!)PfLpaFdv*i~s=R;YuM#XH>>9RDw&UtPJpg2vD- zx#+j?()9|5z<@2gsB9;uMQ)7E6OEtG{N1gK3f0>bd|ZX30b=s7sF)qn5!qBCo=(3I z$K1c~&IaH|gswt^)fCN~njSn#i{=9u$n2aYlpgm%Z7H)cSX0<>7Q9+&h4pG-1<_eq zM$l+-bSz2ax8sp~9o4R1Hb>*4Ag&P#{UW@uCmBkZgjBUm387MWFw0#4Z{7p zJTn9MAvKlb2TuN$O35Y^*YN!s!QfZ5ekuGrXGe4j6%(WN_~ERI^hWnzjbAl*C==C?VbN+ zz;!aY+9uoEb3nFKOxVLo5BJ(GQ8sLD&KJ-g*2@{I3!)gmy-L);sx;nKQO5XVR6~-! z?%2!N_+ewls@eOEvpI7i{F{kXZnp_rqZcLAJ1bVo#eRiv*Mr?hBPh(~*v8;qQFCAL zz`vK5LMw@8Za}iF%rRxKS2up4{pHt4qlIJJA7syI)ypd!56sxKAB-V3s?~NenE*1g z6pC5M-Ni5|m@jw`N>3171lg!jFO%X+DOfoJbP%RjXCD)a;7CSo4aRid^7?RXW0*`Z z=BC9nx~Xy*3{G1(Fzp?1Qry}>CAWh>1>$ zf@cAn0%$H=SU2106*)Xbw#IFX+@aR2q0yq%hE6@rIO2&jKvlM{ke*wxT zv6zeKd`Jtq@cL3Dvye!U_t*4H`L~mbHh31h)_cW8AW~+(ufiG{rlpu%QzlJ4zHRTE zUM`{P$y2pzdH%++b%pEx``Tb2=l?fbU9WLF4iDBrCL+jQo6J07eZTp%iT)`y>e~q& zY>c(Nq{L;5ng{S}cCX83S6e;)_%XHT^qpJ1VU*O7{2~}PNg{nIP5~1ng8@CP@8X1o zv3>M*MgNfRt8vfKd^KMoATpPFZC$E0n%%a_FY2E58o?WSBn-v{B-)`0Kp&aVk(EZZ zDFyMj^@zF9f>N-@=5f*)%~uwO$x3OQbP|AqYbz_SW;7PR0E>zbV7h)Ji3Sf?)$I<_ zVVSj>OeX%a@O#;(#%YueCxK4ApSq~5UHI2(QiZmvnmoXm1x7Efk3Waz7+AaTNyrq; zu9s-7w!TBUzEZwQyaupvy^;O=Dgs}QJQJtXHiSUs-MKk$fN<22z1GgU_@(C03P|)9 z1FK8HhTk6xto)U0Y8{;6roUi^bc}XK5Ow7V zeV&BWdR-*R_4FWc_KA%_rH_+jf5O8>Sd<;&y=)%X!Tzco59i59Oy);LeWA6l?)W4J zIi}%lc@SZWV#S0x6dXdM4zTu8I=u}nwD81^lo-~`b?Q)#O#7Q3ck zh=bE9lconMSyO~x9+;alU@?)5s3Dt@4ZNX*QPqY`JyC1hYlGjB8gx;K&!p^4d9YplO&kP-mF7R5+?pKtAF|(lFfSD_n9T!K;H6 zJ7^T!JbYG!(~7u&%W8c~7H94!+*3J-;x&y*#lBcNIhM=a!xr2JC-big;uiA!5B^T(4BX$n zXE=`8?V6fhe!kdVVr_4fC@X7h*>#kZH##vvrbkfok~M>PXuK!vh2X+BX@AT}E`iSn z6}PiGd0zq?e68epDKMSCDeFj;KQukp0-W%Cu2wvroy2^@Ajz{lIVFDlx^0SUY%Y90 zM~vQDtaXDm&fI7D_t3wo)`r?HWkul@SF>Hav{5?o^d+m=fT@YDYp0{4q)4{Kwxwc7 zCg;rCMZ2|<9rWuV0wDbK>Z*3?sI&BBD=E}`t!n9tvE}vZ{qHH+Kf2Z)!0ys2*m2Kg z$u%zXA@%)Vg8gX~Gr`$%v$Gqce|zDxek%!oCfps%x5_J@U)+p4*Y^BLb_KZmyMg|e z%iC#LrHh`|FWT$tZyTq?9m;S15~DqzwD}vdr4?HU0-Qphz~j?{$*0cOrNqgDL;Z-V ztHe(%Dvw_56y01XqM&P^~Z?Gd3Ic$zC-hP#5r#&SK}X)~8Cl{S5iMZ%=0xNQ9&#)C`Pm|c-l zK;fiMtBU{_UkJR&mMPsVpNc~Y&?gY$#y7IUexxjrzx>4>gCFLWxWibsh$XMj%ZWl6 zwQ^-=wAE`&(*#TsRzQc&#U5jn-@`3iuA`$^RRA&ixw&k9eopm4@2u}|DYBTK#1og) z{IRY&bo<4s_uMQ|4?q~7!S*hxRzMp08MTfQG$L9?wH4JssMMPjR!m;nVu}pzEi8FT zS0M?N269lJP&YY8lv*M^4(d0R|EirNZZ%}ke?3>7K2#i`){DyDc4K*&34Y`?4D23G z#XU?hKGMxSTSB96gQwRCzOk|W>V_*IlE2-m9yje7<84sAO+o%vD zeE*D>f=7OMs{|T`0;oLpkRrBrXC^vr*|70(gC=RW4+RConG5F+zcFge6}3cP3Y5z+ z`T35Tyt-Rf=%E^;`sqDXU`{k>)1woJnd+p!oSxLPr1#-Z3x%4qS3Pq8NO*3ds0o!P=l{ODk`?yfEBS zEd}8r0JXQe&&LJXt|DoOT7!ZRwwvYb|&o{wO+Z~Oongk;HJh-7SEVhc{503^lF%1n_ z)Kads7d&rLqo0{Eg%%_#dwCc&h9L#ULYj~8!alV=;bG#h}a$E!Rw%(jJF zTRC@YMs)PzNtBs-lzODSD^#;+j?@iUB=kAs70-pTJpr`Q7T-uvdBR!r#i+Vd4!K<} z4l~}ToTq6%Jaoww_^v2TFVJ6`S0*No(%?}xT@n_>0gDWeSa`8=F_sQ01JxN>KiCIHYgxHHTa>w=150YN3HVVJvv*l>aU89HTloa8xHy8 z^|FghWB=!0vs2KcRB2b%XigOk_E}=f6_4<>ZxQBiUGpj5QZ}fi5DRDe1WGPYrku

T)I^b6i43}px#4aB$S(BG0jL8x9)K*kDf71PJHtLmA4wSVR) zBvCz!l9tSM)lGlq-wX9PmBLfkzth#k45lxdc8mQ_+Dct$ZJZbr1Ac3+#jSSwj2R!4 z3j&A?h`MBWhS+|mD`oGq&$dma0maswH)&~6v`og7dOOsqH5APY@*RePU>bW%OG>CM zH>t-gQ?U^c7sW#5Lh1JoYO5{U>7@U@pFAb%g#g4fNADPjyBlE1$RfwW=s7HgKs>@B zKT(e8Wg`Yx**su+YK?P5V zAec;{b-haJ&b<(BfDqzpId??wuxu8=A$;<^wt#feo*&lM$pL8)ne29grNas~ z3a^1F$P-tQ!a7YQcTH2nV*Rmg7>O@Hh>8x#X>t@25dO!)wH?T4j$GX0^R0hvphd4a}kzk!QeK077vjD!s6EyE5F}Hjp zuH&dHOeYIsOFg8T;iYE8<`dy7IjV_x@)J(Qj+0u-r_8plM2UF|?Fb=>7+4`Za?t+< zmTo!c%!Hpmeexw8?DafF^*3;(S(ce#@@GIqH)i>0uI>rG+= z*TyOvN&fI1D2f3;$t{4Y#Q<(kxHr?E2H4bMh1zpHWEIz_Hql0SIT&}*F@wkbuo!fJmc8dbd^&+du|H?so@J8X+2O5^ zIw2Pp<-yzdmT6i@y~s!pLx@XYHq{Vqi_F7Vq6`dwBm(&vOUwCU%CjLQ`1B}3+| z^oP?hn0B7|DSF8~ppkf3q0R2`Do9NU;F#d8f|#@W)^7X5s#8_@`5)dpz^yuS=c7zU_|EsPE^*!~`zUmYhWLIReUJ zB^;h&kR#+GPkYo*KzR^(YOg+RmoZ^fIEtIjMc3#qjWDIaH|z8|b16&msF zbdd^pkJz@nSGMQFqFdsW`c(R#2L45+s#f#~W!u|IPi{ArM~?!2UQzE^vVT`5mPohl zr4-1JjX5T{aAE=~7xyeKQ`Iu06eMvnSXYTIG*drZ9ftLlb1pp0?ap!1q3Is{>)P|Z z)`TPpIG`m_Z}UfT;sq>}Nq*gxRbgEa1?SfpweQ6?rkm5vMm6Dq^poG1b5?BH;Dcm@ zS)NR=Vnkg~7;qfoM6MWxfn&bPvnaTc(|`B?Q~&}~Mo>Q!&^!J4+@Lzfw=w)o=6G(J z3eQ=V-}?O5wdFs{>ow`g#7ddVpviI%uf1&hlG4&Xu4pm>Y-V{(whuTFR=rD-pq7nY z_P26!U!5E67kx~YY3T7XgW(NbAn9RJgr;2HZ^XlWWHTEl@P zSsonasn-O_WGMV9_g9GsDO_#N;>Qlwf5P-xN$2^S`3U34iz1b*-WE1>WcDkc7#N-W z9b$+uwamK_Y#6KgI@X;u5w>kr-;+wE0cu-Zyis~h{l+rzn>*|t%NZ?Q0H0q6}bXbuBdQb9#7l78T0w60a%G-&fKQ| zN+l^&#I!IDIh_clRmSs^o>^~*1OHY*cr?Oy#`x_7?`DC?3JTsz+{h0R0a<_6cCTL0 zi3U?1O*OvRqLQ&-9W%rv9jD3fxsrOK&z#)~sr~)fI!OJ*Yqm+)ut@7s^y>`~Xxis! z&rgz1N0Q4nwDmq0-?1;FQ4$jA`nS)#km3?i*K^`Y;owTDV>KePGN{F~%aOAUp6TS$c&wrYEW9X99_%#*7E6!KA4DfXmJKTS2XI28<oY}AaB)=*nQY?&@{ zNQ+lO`5PG5rp2V1BhdsIXpcKL25kjAB>?q%x=Ja@%H`@INTId`-TET>AS-xoa0E|X z`Cb4&4C93-Efee!nUO>E2-Q-{3kV^XL%$EPMo40*p0VhzW- zy+>FsauRKOj>z^1@$YP2cH!HD1+d}w0wTwVI{41ZZC4oG8dfJB0T>j}co7_a+}so2 zNedYLcDRd+3@NPTRiF8X)YI#zAnI)6Ggz$YnZBna-mSp+G%0fwh*ybvy?LC(oos_2XxD>f1aI0nd6%!VBMgkn(bj2ku-T zg7w{)C=O&m4peqY$*F|p6ae*ZcxV_cgROVlJSG*UB=}|S!6}|;)=Ut?6jSN zc49Lrd(qnU3p&mp&GS(2)Tp;iI4<0%FZ%wJhpjbaI(G%rNy7~htBR*YUX#}XB2^fd zlJ1U3PiW{@HnC?--9jI4a32*fF*yjOeLdiZMyvCITqK0zxzORNTtevmEec(p;vR^b z8zyL46-eD~Uhpn{N|FyJdNuMyi=EZl6tpAN+S0GVB;FqhbMFILE9F zkyN-}d%8?WcfSPSzfoxWr0N7xeUG!fDIZ|4y!O1QduIl(e*_QT6GODZ|#@P2cJ7pdXNL5NrGs`J!XaZH$G$V9@1S-e6&t?k9 znu+MkUynsPR_aL}a+eLDFLT;+-Ec9xnqO&Dx9OhU(vj1B(%4qVp?5w!#Kbd$ab190 zr@_Tu$lOoSFr%IyfF|60$%{_iFM=RC1Z?($Nl~Erhe%VY%FLi6jqN}wMA?yqi7rd~ zq#$}*mnTV~N2@(PhJ(Nry*a`Kp(5aF$4~7pf(Ym6h)oQ7?TFku1pQrWstUMfGwtYo zqWGoQYf(w2>ucN^#SeyD%)Q93n?_jH|mNq-G*utA0#&%%nR zvkOluDIyP*&%W-DN7iO!^l&XDEeAx2(3q7Zjj)tx<633@YwSW^-&nAMkNp_t=tgsbS$_UQ({%- zE8?9@tLZp*nEqpkf;Q48oe^?P&Q6)%v$^6cr57nsS=zi&*z=N8NP_E=#V<@bJSCZ0 zP+itVy>C8=Cn)tddx>C-Zsa-9jcy*XonLO^#G0C?7X?&E*_8cgNEE$%7A#=49(-2*E7*#Y7ilbZ6ry zVUsV%^z^3weQDVhrDmwqR|NSu_l5HjcSWYNPe_9R8{1UygM=iZbTp#pi#24z2GHav)^ zJ*&iDqHKg|aGX8qpnTtx084*$oy?DPO@v0=i%Eph!9^)u_&l^nwT(V-WHQ$asr&?k zG870}m7+iz6+{wHR>xX{F&-Ec_0fc*mV$p*sA065CdPODQpBvR(Fep6xjT;^wZNG; zVMfhdO~f%0Y@IG&iCWWEzXp&kOthMm#?W8b-UPO?tVY-TdgW8-N^N53m*-7aB9s5f z6ncZUfuySCFg%C?nh9@?v1~e=G%h zRl_2#s+tU5-B%P-Y05oIYUf;0W7mCMQj%8nT_+jc_vO{QgWMfZ0nSx$Qk4Ci0~|>> zC_-JU0NcaTO(Fm_3P^nAte5O>E1RAFslyt5zEYMAHrs%>+COTY2Ty@;tU9O zagi#FtP!UXD0{(Pyy)uaF`wV#OJFNcmn_V`TLge36_Ec@&UG%1Ec)s&J{#&5YN~q? zL3WCB3aGfpzh0QDu|9=mCtZ-jIz5lPCVN|Y%r5h$zFc+sjN#X+D^X;Z=uahrY5OkJ zCTL434^^LY%6|wb>w@IQpi)(vjVbKt^3f7y>Q#o9jx8(s;k$QP)Xx ziO_x}Y;uk``xxQj0ernne!ujnz zdHfLdSq25i56iQtxt~gCt4CSvgT%JZWBKq!A3U>t#UGx%N`rvn@ROzq>(!6WR3!;< zwPKzXo1lzmf2#hErn3x+t82FK5Ma;&f(CadK!Q7iySo$IgL{xcf(Hri?k*v?ySrO( zcZWOgS9SlN`7x(z_v!BathMl{71Ur0inWtnL{|_Lf`Ddr=@(N*6)I2#YSY{Z^}Aw> z9mo3-o1x&%COWYhOShBcutK%BN{`3-B}dznVaMyPjeYaGq|jsUd$aYAyc#9PXI9_g z6%MY|w~`5i2qUts@55dfna>P!UI*%M;{rb}a`-x2XT+kZAu+}zAZs-R2q9=7PA%ut zNZp@smbZ~H!SkCp=r&NS`_-}+veJZH5y+|S*nIVG!*B2H`3Gy3`h7!A zR|9eyf^hb~-$)sS7)+K0Iu6xiwE`nB9qu+xDA#mi!44WC(^@Me1`%J$>B^s`9o2k=ztvdEbf^Xa2;_HX9ghg@kf%4H zS+vJK4Ys5(AGAiAKjXJyog*sCZYVYtfm^!LBJ?J+=Vf!*>4?Ar1WbL%3qF)eO5;lD zHZOg1hV92wr1bc?_rb6Ff1>uj*rO1P*6W#yz&Ahw0s?_;fld)zF+A*2(@?3}S=DSH zyuP#LMJ6rjV-l&4ssyC9`QSJ#3M#A;N&gf{)e8S;kDzoTs^O z^n?0;=F$Tq3tP<+jvO65RyhF*GAQ;WUV-}q`M50kUgbEuNra)euQu(wi&iRs`@O3k z=V9LhbK8{-Gafe#ThCh%_C0>6T^(aca7Y6D8Cp%`vURevgI!gU-FU_8yafnukY%h# zikZS7^Mz3Td%h$HP?8lbHH1Vhoc~KXe%TF2~2OGnurQy2nggH$)~gY zb+syp4@%8vJ)Jbl6`i&jwo^%Ww1jF)u@y!D!rwa7prI|e`!Ab4LL>x4-y%Whu`j{b zEV}&FDl#D<|MD#Prn8H<`>=kFOD=J0bT^-FHOND9?MytyNd(EECQ5-f&^*iyiRGX} zQrL(b#NqtvU6gGb-##;fM5%{iws|K{q~H-)#3>`idpG8s5_tN(xqkHz$HDG0Q4mnxsVYffuf0m|PcLgq|DEa9Kc;EocH#phOX( z{b?{C(HxK;5Ckn8jINrVjijsetxK5CTY`mTMHf_A-ZTQ`%!3G53|F{T% zZ2WnA-p_K@;hpo!s+t>$MTQyZKN_CD?85*tYY@jLyDe{O)DofuZhhuY*tA9!r^6wV4ts z&@l8Tl7LU;xu^O;2ImwW@OC(T2E}~r$)k)ra21%dy6nZfzr%|C!?Fic@^;oaIh&+q zF6toW^zJW*p016}~~o8FDq%OKkOvbGGNm9I70#g?JLYj#oZYkSiX%fpc;Us?fUj9*t`bN(Sn7XbR{^BVn6If zmy4kV#%`yx;nR76McK6+UDZBs>6dAMqr&qHKJYi;d8yT~N*MzaFIdkL9wr}P&u&pC zPC*Ghjs6;@gVzojy~xISOD{t^ioOq&r0=ijelA;sQ^ZXcP;6CJV(Nu`aia+qL=!h{ z1i>8_;3Kfb6Q|QCm`*J`K80o?!uN=oaiQ14!HYXidE*Q+8Q2nzFs>YCZBux#FDek; zU_pBWaSh29dvzgD|2F0(HsM3Fz+Zx>#3D=gCTMmW^?<#k-l=46(<;qm@$rgycNZl+oY>TfLZ$k!;BCscfzu`n66)h^Ka^Kw$GvWxHxERINj? z2CyUjGTY~+RaDD-a^nsi(KZG3-@Pum41h)FPjY^7EHXs0r{U6KavPb@xz6*ueYF56 zJcU=ii=OzQ^SpiTedd<;agP}NGcnKAlcD!OGvy;4h@|3I122s5X<@BvFME3Ja--cR zbHOC-ig;H>YM16q{%gyN#p&g!rkBmnRUIBLH#6d7q2IeoT+;tA^-np-B<`)H|ekcBdF7tAovWT1LF<{C%J8Ap< z`uWDyY4?rdH}+MYMkO~(CC%!Nyw4!7_Pm}HVFd~36?Fdp4s5X$Q+4y9w1E}Ww2if? z+=591;a7f}GPJi0Xmyo2eD;O6yQ+v2@ZAt_zOK_f_uC+JzeSZa%R{QzI?3Z!RX}h1dc-X>uRzA-y_xi45uJ@!bNG5uDL+M|^K71v$ zeYL)*m6uk81TM_Mljs~B#&i}_h04YZq5upG88RKZreo~gehR$E{Du@l_GoA%UhXYc zDI78b0r=eGVsmtQ>b_&=6jBtDWsx4+0YotBj|x7T@}l$!{qU13o`UsPsn`bm$B$b$ zH?3?69Ju6`N~gjC1|XbS9f%NtU}=UEY(K@Hs6sR5*_ev?Zuf&71dA*$r)Xz|9kGA- zA;>xg*6Tjcz6-0K$D*o=#jtmEIb8&i;)n!le4FSi*{L7=msUBc_4C*h0i7@g`c`HP zgI2%dr(4TN``z-vnS=#3ksaBVwz0#pE9m3$Bug)o=dad^@4`18`~>BMwxz$yb;phC zk(Zgw%6Fk@IPh(o3C!;HO1qC!PGe|(|DG(BeiWw1b`z!Uh8W9NvEv@&3xNmKoa;gvqSj4S9d#lyp%;< zc2|UM>4eyA5udrxmXfg6>vj2Fm412~gqkMwF57(bkLX>&aFE)HEc{D(KtXwmeM@R8 zIpD@lXT%b;`_|R%@uBT2Y0cypu`1D=12IQLf=JfLDckm|$QfE7Lb1row9%k=Au*_N z1}Ix#$Nt5!5a#{&fp>ovI{jGa#RsZM8ih$o$ibkjjOz!jy<{ zOFpPSogY(uw6|CHP-@yB0bm-J^W6_|m_3T}kb9qeUUxg{ z9jtJN=5;l;ps&AmVp*iSztIUo&%SbrJJ>B*xM)ogtPnZ@m;3wdp{p>Mbw=2-ze zc5tfxTs5%3vT``zoLBzM(X0GEUga^s$Lu#1gtlX|umKHU3{91X?JOyZo=6(f-}vik z@8o3aaj|?%dVV~b&Re5NM0Ks-|0n#CKmMzJj`W^P^!dU1PdtS&qx1j_DibHN{2-@A ze-nn8ANG?>9`bSZTorI6aZqJRAkZo)sp$---q;~=Dcx*kqr>^GoK4b(T9C(=N^O$Y zu%tFGeJ7=ev-0&QN2d*+;UGhZ+v8nSsC~10oo)PtR>`T}tcwDfmo>rbAuROnWQ;oA z@r&m}Lt4ivOYu;dxOX@TK|ZD9G7=o}6W@7jAaxR<+g9a@#aX*^<5InUix0g1LrYmD zV^UiB^~UR(rk=-LwQ=gg#v;Q(N>L2#pQlt^65p4UHSbz<0lm?EHoSBvPS9j_yb*Y% z*QoQB*wu;^0}aXFZssck5HV~5X=X@#abBE;_KV<`Xv$fULzd#7SnLe*r|3c+cfD_= zI+^KTpnZPKi$KHI+de{v@bw(`x6MshbpFfQnQ;M&6YSiNzKA3?VS#67=g*gIY?N)H zVOo0r^9z+ot2uiNO=5q4p{+%Q+~eJ>Ir!<9Cx63zAMbj$_j?Ek`PeS{{+4A=r_PXm z{eC{?(6Wj1EN^b`9wiK};PAN((IrXCSmtB(xQM3p>eq2E_Aca`%!bwu66-ZFkRWa| zTY<4mj`RPs0ITI`GGeL}UQi-$+;e7(|EJtA%=gfxUcizCmySP~LiINyG8E|j>MrB4K>m|BpY4)EqinHIp&$;$FWjMce8Ma)& zv-};be!S&coo6_(dX_TYJ8~fQa&a;<_1Fv`JR5hv2O?W@NgD$jAMTpdiYQ4#0)c(N zFtp4itT)VVI_DWOvI&#m3o4+3F8=MoLgJOrZXQzaS%5l1QFLkQD5oj-nnrph7P zK~t3@jeYYPz%fiFmXfrDT-noM+rMJ9Xf3cHuz=#qk!xUtIJRtOT>*F^2wHnSn3`a@ zenJ22xFc3~=+Rm449DRXj)gi+mNact^C#-wsuLFalvhbu3DtSHOL(FTnqp(#+1Tg% z&lyFR-0B>Fa*|Ap=Lu~^;>_dY!;_v3OQ8|e%Mq&cGu@5;K0h{ruCX6 zgxDAle+#D0<)2i8UgnRZ!{8G76?14kAbsBCQ&)$t)}m%q|B!94{xrW(&tveu&-J`_yZe1irO)Yz#(bmTZL>`%EzP+1p}67miG{a`hQyAh zq4RSLiRabAhS%d+*LqpU58bs7`&#-syk_6dL;cP*OU_jT9p&(>wD}V)KTQPhAop26 zMt`9E%937@Dvt=0ygK(0U`)Y4oZgfNP9qfOq^|Eum`+1}>ixbb?kzKElC~H*RwEl1MvG6 z%0?k_*x`|+;7fF77j$9fcN6Q5eJVX}2f#P0$_D#^9okRVt5(17==#0ZL(oauUKySrj`w&KLwRLeT0<*)vqf{RbL8sHA+ zbB=}eOWmaQt#(?H*E{s{u=O0j>m{3sPxu`#FG+6`RX;LK?Q%C$k3Ycg0!Ke&85%5i zSUf=9Z!2W}F{Th(O)_-pxms0c1^uHd1E|p>kZ+pzM9azzd{TC`=S;C8r@0;q%I@+U zkX4nvSk)qP2bbFkh#SxMDWa3EFeMPiyqF%<6zz%pSC7hq`!@{Vf7NFRT# z)GYUFIgB>C(0}14V3B(t9zpYVQRlu?Lqhk&v9LDHaIoM&ZH|*Z#*CwYzwsJy|3(1f zy5x{HCit%$g%(jd@@YV@EgDxk>EgGE@IL2FY%GSw|1nE&+~dh_Lh-&#RA+{re0f?w z(t*aVXXGY|YpjwCx=2iCf1;o+@eCss5!s^_!XjY8ZaQ>;1B}-+u4CTkaO}26sX=n4Ep9v36FNs zppt@yCT02kza8He#kJ}*+3@eq#hi2?m(GvOsr!7ZIF5~i=;>^$OaOBx0ED|{gEI#d zC1F)2s4vF_6{;!|h!qeVa74L{CNhqTOVPy2K)nuv6g|wl--nK8vYwxs>|5@6JP)&m zzJ5xy!3fiO{Pd4qYdr<1Y5mW#`7~z<#DnTr z-4Ylqiokc3($sdTeyDcUw@=F5UaMTjq2Sr&36N0ado`>2u`6D58&Y`1i9+4O`s{xC z1KQ(vc?;des!`lQ&Nt9EQwikM8YCwku}fg zf_HyM44-Q8veu@A@(XGKbbUBU`Zu#PGo&v)iiYkx#NCU(9OZC`2u2T*Ekz+|ps&YI z(b0QU>{?CLN&rLzOFeUj9^<)FjvS0YjAqWkv0Q;&*YFUlUn}r7)Bn@~j?2H*C35Ax zIU2jW=#@(et*pSu%J=pVpX76; z$RgX1)#P`sRGfV)VN!92?QHp->Wr=KBYfLU+_k~Wbekf7GosPeVRw6M*SOC-BOStX zf5pa-sfojD1Do>@iLh8t12XSde!9Zy(v!iyq-g%@o8|YX2mK~Lo2jol;w9DaNkHft zOaa2-Egz|*Qq02vy(kUj7)oKv749{2tfo2n0FD4cbUCJSyX^5nANs$ZAR`E41?)*U zXzNC^4eQu3>L{H>zQFj;gU>v-jitecUd;Y=k_x^(!FcERM-ivU+-~84XM~HlcpcYW z9Y4o1Wt6@R7Min23f+#q}df2rBo5ykF$&CP` zfAh=pxn(m3V7u#{P1y&fpd_7!)a6SwJ2!427@%G>Io|OKkrjHbVZ;pUt#B8_WU$QBU~9z9Wk0~Vsg0QE_!sCK znrQ%cv3Rm~u%3gqL5#e)m*y~0WOCkom2UbK#$T0MX)-5zyk0eXLH}ucAd6@FeGned z0)3S((1i5keAZq2N!mQ{m()Q$vILNw0L%PPImTCo-UN55Tto`?Pt?<6pH=7`+=+V|N*9vH=4F5D zq6^%mk;`ng;(&8XC%VOfbE)wwBvFhmcuULH1$tt>^3a;G(w)gK+`S>QJT6|SXAiFG z-8JJw{{*#CaqN*{5wAGA5sEm*fJV=MPZh@rcK-)M7Z$Yhb=kunTV$niNkJaDV>1F{ zAdm{*bAyL{5zyM)W!C_X`lg4w)~-W~A7K2N!WSTG;MQKs&=TrJU(le_Gx9Wp1D$@{ zlNQ`TcVX>?4Yz@%r8XgrD(;r51VF7KD{=s-Jo|ohraJ@>t{TR&KG77r(~YVb)^oQ zTIJdIS*{l|&aj~jL|23dW_sU=O=YHL8K!X;@D;cn9_l0F&Mtini1L~<5V(KoVpG@< zc*gG73*loI_r5-60V>s61j|OrY9M)ia#feU956NbrVG*kJD^&;TP)7yd?*N6=kr2ZCX5`y ztUVJ6`bJJ_Awje_pje@P(6KNfp_Fd_Tu2~k*mCXQ_&g5xro;D5)$eZo{{C!)%p=C# z&D874)8yl$X`wy)titS=`2ku(L~@EDzpF=9A>&fl1u-(3GbpenEIP^1ZO@a1^!iLm zS;@RhZ#5CvrX&XcM3&QaZgax$MH8R9SOF0cVN?Pek!O^5$^{VFORdP19=pvHi3~Wf z$^@a;!6*};3TmgQ?;9d+HTx2;4SZ}CRo=Lum1C;p$7iN1i@i#3!s_i7u}~-}LH3;r z=+fityUuHCQ0dPzQQpg6m+Ix#YVg%QwOMTn?T2fbrbboE zW&HPeh>#;??)BiV7zE_vbT{IuiQ;m>^TL@jp|6CLf>S-tlGdQ*t!c;#@9%-+wj2AO z=3S|V8g3DYDY^5)fmZef+*K)lRM7y^L#kIsPk1==MtwZBziuhb&!@PmgQXs3$wm3| z^7es4jIAW(HiU(!Rse)NA7@U2eCR-k{^=d4vUrV&(j=XAuUjNxHR()bCkYv&(bjeU zH=viePjQ~|m&LC(gYhu+{25*xMtBFxg=MxRD*uVsp*@_Y@8=UnM97BwvI__OY3vkT zKZWuSXGR>rZZ|GG>BP0iKzrH~@B1Cff`QvmL{?@xZIH`3iT#vObRRbAjjMpuL5led zou>81^IKQlIFHHNBmhO&Fm8bIyu5%w+seAAV-p^I-PI!0oay`X;n1Ud>*3t1Z${SJ z3_8w;I)H2KZu4ZdW}*Gn4h;l^Fv|f4u2spmQ`23IY_0bOL)Y&cxAb8VNPVB;{d{k! z9lV?w(hPY1E_RJDqC_AUIHSn2bX=rYj;}U#-1j(F+$;|-*Q7MJ^}xDS+<3oV*E#s@ zlo>p2*R^{uKnR1UU8Zund{CdA^9?UI~niJUm?*%rbR?m(EK{&^yxF{&(OwOQksu{1{^4_kANTVFBT2d6gVXF1< zjt_5-)9+Yd|LkZrD|@S>J3Y^cnA21KMShSz&w^MhBbA2%`6*8_>*Zh3+aYm>qXaV^ zAFtuoT&4x?-Yb0D={TwRbcuF?x0bdC&jz~H9vJkYS^ zq~31hrvqH`v{?7CWn27CbE}BnW=`Sp6LdTmL-WO)E`?%!IK+({7M^ziCwq%6;QJm> zbXJE}OO=`b`?&o5hFu?1W$?L@4Q$ieb?54I&3)Uhoo|u3DRBZTZWk(Zw)inc4&RO6 z`|jNN-A#{}DAb)Pzpzg} zLxD5rF=BhQkAxId>;|f#j_F~7(;iJn>`yY-BHh;}>?sn)u;%$?;=LrFa?$B}>Y&19 zBT0gCY+Q6$EtXj=bCxMKi}X}f9GCY@Ju(L+*C?J9V4#)@^ui z`#;Aih09hZY%j4k*bXhPZ-;rhq#gqiSKerY)B9j#HrBG-Y<@1M`2e$XG=YbM8NVk@ zL!XT_h4aCF^JrY;dOv#_wMm3p+uei9?s&FiN^h^G)F;XJ=XWG*HK=Hmkf8k6HWN22 zjN-Wn#TAvqJRB&{zwa68r-jv9s~+taj1TEb45@$I)e!sQbK}ktX-6cjls-90<$cIV zx|LR;cqIEfY$kaM?yX@t-Eo0!b36uytb zW<4GYou3RoagiMpjw@wB;gO}mQ%fbSHAG3$r2%=ecvfgQERDAI+BhstYd|Cr7Fb;? ziB*-SPK8_=@K}*3yv)p@4A|!!EAGZu*9+x5_o;0>D~=%c>`g~0po&*h-Ygh-*{?bv zJU7+lbxof4V<1X)w_+_YW?wNNbm0>ppnOD@gXVL6qFBPHhV{q+1>*3fBaWCC__DfaYauyO%O+Vn=u$H>x%i7*FDK&e9{EZ3FU zS_(BSmSt%-^153z^w~26P{m!=jdzeGj<#Mvm&3cuResx8SrkF2=VvYNk}jUW7DJekO5ua=H z7&WGJaeLGP!j0H|v-;cEz5B-}Pm6zq?S#Z4MW&H}Xntq1gOUTCsxi|zweZJRH>E5) zI2v0GGT&D>UJ*OxH$1-O-*+xq$kEAUXP-ZwM$D|K1CalNrNLfrfoDr=?;%_y#mghv zVlxTjy_pywf^xmuBA&(LN`8(?SN?}Q3laFSy@o)6l(ECGe9oGE;RK+`7xjphZXyo+ z5t~xvUq;}Dq*fR1w6M0jhJByQth4vd0l`z21HKKnN4$2Io%g3Q7W#z9({tveRQ<=* zW9F8NRKl}|qlJz%x!#S}@rBJuBcznDSHdd`s83ywu*mVAEIp9{0Bj>9K( z-xr5&_}6{H_m`}WdP2R7UrXqxbr|`-IkpuOA`h(-}Wlh=D;mNxK`we{8zYF4YT;UY` z*gHn|-HZ_=q&ui;KSD8l+oOHIEEX9$#A-ptp}dKGJ~M1d$2M=w>oSi`*n>a0ydj~Y zm@wDKz_v)A>>FiuKYrjJC#P!kt(D-x3ome3y*VZ9aAowr?>HAo>UfHC)72@M&SPoD z=p2+3TE4zYGA1Or!92pKfyEhNVU=lP-g5Q~qZxc2*vgmor4@mY%pfC&3wpxRB}&x* zx_EM!Kti$MVJ!#rf3EU~@Z4KvF03F^5t~BVQ$%$AcQ3S<8HAArp;2SFmyKoSow95q z5Ci%Z<(hYOAI&)Lv(2}M(Bkj==h$QU)LoZ|h46PbQn_2AY~IS&IMZ1X(wLLWj zUShsO-eUe|nnnFu7b~2CJ^>n9sxihGW4-Us#BYC>Du6XO6VKc*> zI3>wT=vR~br(L3SFlzCd34>z)Ek_A2Z#&2NlbH%L4&mIDco8Vr^1?Eh={M61>-Ew< zv1t10h53kA-|_3NWv?9bW%!1XZS2lU)N`fC9Y(@OJ>E2FJ6xF>mmj54ay<;T_UVEN zBuAEQu8ea}v3+wAwMobH0Aj~T)8v~KSjBIyf$S6(#?Ep$mUD3a>s0U4`p%kb&aI3U zZ~w6NW!(_?JswgeEgS^7T}2tzAD1>3+(mZD09;Z>=<}!^ zj0`MBC^Wh_t>R)V*<&Mp3_Mqqiaj|d;Te!qe-4Du-q6eg=){_2U)LV({lHKXcsZUz zn4;_?B4lL661UvK)*ctxwJcT0?i@b{^eM98X{N!Pr^KU6l>=O zUv!<16VN^hixqK9@gK!`vdl8kKoi<_NLN9d&?KnKhrZY#*v$h{y?Oo@sUvDl)R(Eb zGpp2m?&DsPUT6L~%`0`2I$@b>D4QvfgYX`g%At}DGzl>y30c4(a5*C)Up zp{Hv=Llq(az%4mn#&i=adt^h$!s|U4Bc0zN5sPf3d(bE1!* z&9SJsIctcj?Z`H_D-+UCLj3rluLwm=G#t`nd5 zv**{i{3WJe(}CB*acdDCvy3$g$TLQqh#p>CnEHE1Q^6a82%Vd>RkE4S!xwiG5w4hw zLFr!r2`c@Icg%TFDfpKxVe2G_$Z@68D?y?jBQ{F576!FZCKf+|d2tKTP-0D#4;k~B zp4ZoR%kD*i^VHw144PW;i?k`PtM!E;_`_KNyViY7_-$iBm)q7ANf8o5bY|b3GbCr+ z*s97(N+{A?E&NVA))z14db01vJ-jgw+=Ga!C1X{sw%p%E4e)+kt;+!ml{S#qT=?X@ z>yPm)ExK@55Q8*qy6z4KWq&drg1DehD_J%l!aZk6Gokfgt~NwsejrJ7R;U%H|2QLK zFmj+*QUHqHU$KTrGTK>9+W1HI)rX~HW+>du7(tV7Xs~>-EQ(z}kX0H{Ot6QajdvQJ zHDj(}UoxIv6B6x$2KSwIdQvbz$eC*DpNSXxo#iwEbnAIY{(2Ta%p!C+0jLF@hJmol z7xw!|qLXAMO6<3-HS51%>_Kb5= z>DBM4l>ERu#JZm5uws;l>0cFuT{FC(2n=GUQlhgjNLW*CYw9|4iv^joRT7XqDi1QhZg*UETvCs=u1pTa;CUdjF8lqCHsI<`q9 z)43j4{kh*Ag6BaElrJBD$BJHRuA98-}`@R~p50bd z_3&&e4CACgHB9yH_6%CVKuuk8eVxCVMjxy&0PYQXS0nh{hMm8M@)d<#w^ueENla{? z6Q`C}i2!K5K!la)?0w&E&qcIZ-8W_#dXW9j6(#{+q{uk*z*#iAS-@m#p!g?tR85>G zP%??;dDA8K(tj8KU9aSo&@iTcHDknQSG|OK5ZblZlju*6qa5IGO{;#FI(F(K|4LkU z+PSU>QF;AUqfz|#XUP3|Z>>&7?y2P@;n7ZO1iRH@!p)%BYq%Q2w8T zv6F@cTH^Hh>Fi0MP31&XFV09IzK;O-bN+$y|NX+j$R{OP2^Etl=DX;>tzywVoG9jE&( z+xl_gUrVVHRqwn94&hucc>TFge;Ux$9Nl@PjP=X`DcPZ4YH2Wp-i%Bdfm{T!AOiNx z#zTxw&y-&c`pO&5;9IbKr9>d}1g#n>0@E@_;shTiy}HT0*HhS&xXWPul{S3j2+$kFSO(IMKR`K+lI19Q z6~XBr_SI(5-80@~MP2?8sI!*BjuE>aoFCE^ii+{bY7|8vV=561`Ta$!G{M>f*EESc z&23YEgqq^xFKnr#MD^%mag&dJOZf?!p&ycG{$x+`#0yZ#T*DKPTm*&EB6(ORWrGpP zs5W07iTE5bVRK4LS^jQ9**BrxOWG`aQj{3p2hHmXDggCIO>eJVBAj7yDcMn+n)Vt9 z)h>^E_zSRuG$adHU=m6KYD~+lE!SZ8X$jy3L`eYpUj{a_qHL4Ul^L4y`{+PVRVwaH zy&3Re#tb)hOKq6balhJh6HhY>f*ZKeV(ZZC5c&eJUw+QbYc(YZC^83o8ZnLpmG9Wk z6lgQ#P0n{w%R!VOiBRIqaSH1UaZ6v{i2(bFd^KStdwWerEVA#=}P3ofcUo+*VDdq8ZjW}tg5B?l!tBqmxVNd(bh)9ao87{IP{f?l$zQFM6!)JT|wbttwFT# zVH}?U2eOx4te|hD!nSCDo)lJ4Dyk|o$c_5pdx-2lFlK>>U=|13CNn+FjDMZd$m;@VI-mB>>jkF;uURDhsK%!ysi@ za;_w|pirc>{0)IxW!achu!c9FS` z$5f)oqt*u#ggic}7np3TcCF;&cf`Z3j${7C>I4o@Isn7k&Gn!t3c(D({(gN-?CLn_z}6GR`-zVHKWTyE0AuH1fV?>ZYab-HP6Dpkl%oSMx14L$jZJMyn9*=W{U&5(%G$5&B z_dUjvM3l0#r%*(GB)?Vap0V;f07dov6p?Oba_gL-e`u#9FD*rUR?3qOiWKdv)3*Hk zC%=@mIz_&*(TEMeAK$ed7bne^6ah;}_!+65GG-2^FDlttqh>a@>&(8kQ9{&!BNr+D z3t%`?0F&TmB~d0|=9~g62RzbCHG5ScZMDqr!G(1gg$A!+_9 zRC-8pCM3WnG-czPG*XNa`va>~h9LLNBvwH=2581$LzdZIq-&iBaVjuNq#Uugn#%rz z_Vt}A^(U62rqeh9Nc>5?Z^F4CE=+9u-`l)WPLT8W@o?ayl@%)#BakTQfO5)=O|9&r z*G}msjdCbwU&Ji%?4t3xRs<@HPqdMs3P+liNXc+G&r7C-jLjC6fY7Pb;1Y^k%WB3& zdh18aYQC;ewksACon>eG15;I+GOz>$ zz_L^)uK|}GZ>xY065!B0$*`J~RH}hq1qy(yseY^W;4*PKV4u=MzYw*wIYC+fpyQ&z zZmG2|iKOSqzu$oZea2XU*lWM@jSsW?ao4b->?rF#Y+vhb8dSU?*u)_)omc_Mf;L@@Btaeb}+8wA^z&GSb+Rg~v&DWU91nhrm zsKmGre2pJt*^)=rWrdlAoRSBc^_?ejp&O&myGq9~YN2_atI90Dnd&n;d05jJ3CwV9 z7QV`Sa|EzjS0uEmp(~2-(bkw0Swaz)wYUDnTpX zcTsb8aA&7q3C7ztv&i5b)bA)2*`IBm-|Ym>-7A;HZ@acL%uZV2p&-jyVB6xj>>wgJXk_jdn=K1KGU)qiH zn+9_#PUQ?&N3~hjD@cXFeJk(*f>x zZfbI2*`K8|6CTghEQA6XvD|;1A}O|iGIC8~&DCngBA*!yk_wx|Ftf)1fooRl8Hh8R z|Df(1MIdWzEYC1Jh3p-6DF~o61UhM~z>*hVzY-@8m15*3iV?a5V!5P_F`9H0nH!j+ zxHh6S^{58?YF3(Y~$@rUW_1aeZnsVggTQr;_U!1_4o6=efxgk9Nv~jlZ2J zU9oledu4SJwtiJ$SwH>XhH7Pt{pbjnJEA*+v!6eo>H~S|bX*xvvD*E2pEIGoP z4l#woleq=y-DJ`K)X#MyGR~W$Y5b9Tpa^UW;`>>TOpE&vE(~tk_MTzXP{3AYcilrPRM^*+U51Gq;L@>&}i&I{-!wz~IhR`4R@kDY^BGUFc;8gYJ# zcX9gyObeJUW*>l>m;|tC;gZb(VE~OFb6B|4VHkTjp(T8X9pCh~v_88uT@Bs-T6}JV z0z~nk6paXjR=-Q7&}rP@ul@4z&g;>x&2~MtllHLV&5w2NdAmZ+b#GYN_V%fbCwjJc zzg|YL|7`0zlA$d|OsKbaDKZ9KVs^~jQu!FO0#MHwGd~oEc&#I~=;>)a|J7%>Ks%K{d zV$UVkQ|Sh5nIMEP5h<0P-nwaEl8xyUn`Bu2#}9M_rhkP27=cq#x%H~EM#-yA=6D6qCG1S!7t?2%#5lA72@FK2{tp%+hr^STM(`{v&deb5+-0Mb zvAI)u0CJclAAjE!-q0{nzb3+o)U3}n!espP1>|XaoAgEEj)&gdI z{CEBMJmU#n&|DOSB1%vUkbdfww+KqGa}NEHN1S%iq{tQE4gC+3CqgI^8xptt<=iq@ z2#qrt|K9!W%E;@y#GlQc2)0QdF3uVPy-A5%#Gus)0_tD>g5Gsjc5#nyEe41T$yog& zjOewB8x=VQ<)trFxXV@n2f353!3tj;2T)G0Lu|TEyBG$n zprId!n!M2+{(_raq@vE^q$>a;;H^v=*=49T6@c?ZWZ0mV?-V&;@-vy7&CBuPTTYyW5V9x9>azpxzzj)ZFba3yr&57;m2ozWA;?-3wy} z*N8voUlLu&aMZ}6-&t9<^< zdf&fDc;QL|+FM>l>W>ky)n)1=j)dD|G&Y<)@3CKK_Jm-xIBj)rc9$DcXIu{}z0cp3 z+w@2dj-X2q{y!-8zej#D8B{qkzTErchs>hSFhAaJ>Y=pIEcGB&W`)fmamhuKiAXYU zvJ93AT%+1>mbf_GCfTesXytShi7&9O)A+u@St%7HAN)$rOF;dq>jL#B9;gEon1Z23 zCVs%4gb^L(zENF+9}t=u;J&`*bbiPsryx62YdvGDgF-uqGB^I6SkfD!8k`sd^p5v& z*ZFb(S!3v`(HR0lQ5D};_lon0u@wsbdmS}$$v`|N%?!UI_m9H=n)@`;5(4#K;bxcm z+ML~njKJbeoXMV|`Y%o=n7Cr8awf9Yu#mJiPGILIZyLImMwx;xm+R9@_>CL!c_MH@ zG?tq6%60Ztnu{Mgk#e;EvPkr#&l>6Ccn82H6!SFuBLO(htROJ8cC{)?na0&H`G?;F zhclalIq57hpu*nj2;08}GZK~<{$`qR%pr*vz->TP1Czn>B$?b7xXEZB*P4b(lvtl= z3vi|Y+{TjI9ESD9GotrOEJ_d6IYalGn=PAqb;z9EhjdX1mlb*YCHYH|FU+c zO;7Be9c~0^EBfd)wnPYE39mm%HH82PHSW=Jy8i|CC{;?|BWMcpHcGerTDXhaPoRkd z@2~v(^^vnIXaVMXU09^;GDwhsO2uvx@rH}0=PxftPFFG0{Kbq>Z!wTo7-BwmdW{{O z5xa$L9^cJges@;V2u98v{k`}P=9^-k-L;Xl7rBF)y7#Z^`ozwf+ayg$Lhm!`tO zo4cnQkad;_lFQ;hR{U}QdVEZn)ViH(==pvw5E|MgKeLWc-}QL}_tO9D+Zaut^q={6 zv-8%S6T0Kqch5|#qO1yOxA!aY}FRqKP6>;u<%<+-;^9e*oVe#B%j zyGOGvU4?TJyG1mV9OOLClZ7uP-_a!l!Bu3o?BfO}RIw;VKSnghd49I3LzB9A|MgVjS<1Q*hkei5j@ws79<=NB2Vv za|lL1Q1Z==F^L(Z0n8?$BR=HgRppPxJSIXg@t$O zVPL21)h9O^ZwTXLg=v=FC)x@F*z*L0=Ms{WdmAi#H9+C!$vQ zax!V|E)&$EFms7ml9i1|cOz?-@_5SOcexcae5fp96f!&>?tU5aa>0is@2iy1sD^fs zwj1)9M5Qm}%p0r~!e?VtU&y^5Y;BZ@c=AX5uwlQXhwh}?681@U&lBiSNseuox@9( ze_9oRfJR}Zbq00Il&_-Cq$r2ch9Hz*-uZQg+k46MYR<0byeEH(YsDScIQD^dH4ju2 z`ZV_T;;T~?fiw{(rQRiKdkFYd-|Q`;j}b14Bt3CNB2h`*UGk@)aUTvI4XAEnjtY z$YFWo$ot!sZ1U;lj!sx-33nPRZ;7@O*Yz_3YIT5A5k>U!crb{jUL4eb^Yeccwcp3X4KSw$mbb%*R}C}*2w;=+3zTztrm#c#A^|*4rH^X ztWH3lF=yDjY^$|xIh>^kaiBLjWpT$5{;B+mNHPS^UWE(zft|XlvW3G6KUFdw<9P9B z9XxQUMaUV4%9&zLcs5&NrCRsp0ygj{X1(*Yao(E(V;!JBD zWV22+{P=>rE^|(}ANT9qKKh8lOa>Aj`7VQe?^2#BC9Z%a3ye?Pd=qk$e%NI68}0n& zH(GNEm4ar^xjZQ@fnCpZ)K&x^HE2tl`bRjdMuG2b}pleA%#*#&%tG%k& zBj%@^(?iEMZlgfg&s7NQee@k#Hn$ewQDmAs7@YmA5fI#__LpIpXb$v{Poy_W(%U!c zfs-=ZzJO8LJz^5hyho;Zblh?|DRMO5Wm3>F8L7Eivsz;zB z+zj%=bs7qQF!1^Ty7l3+BZVd{-;HwMvafL{l(3S!H!FqRy{{y0`nN`fLeP=~Xx(7E zB^!_*hqi)UWWj(qG=!DeV(oYFcSujG^|B(?douxLY8}juN%(?&1?LZoy75_g77>IP zcJgO2$TPaux}h22^3EK8BtB^8lA%{J_|(q6)sStEUB2HM>Te0dS;pr7G(K zzk^e!?jh@z$&;H5G@={;BEcG2V>x{K!9mbX$|qO@$StV z+jVrGBtK$SC$8h?eEw+Wfuz+9DX++2!J`da@bF>48#gXy_){zW0ip6>1Wp9To~AHZjy(#@HwVc zUuxto4knI(#A`)EZO)*bW7-9b*4=CUd}gz!$un#(4#c!+QBeM76tt=p1OGSX1V2$V z*zptg`)@tG{xvyBindMUvr9|PvdNqDg7g3$8NgR#^F|-goyv?Y5-9~D4-L#kYxbY- z6bs1y$2oGj-vf-TISett+ea29LQBj(h=%XMam^3q}Y)?!+)cH&mv2@ zK!%1hxm+!X{IOdpuvzTu62rT9D?82@D=efM*YE>f9N zP*#D>oAGBiAe?-$j~@n^y}~ienun)_;_U>bs&@)?scG`HHA4 zN#G(`mL^CP%`ldbVMIRaC&tZDe1X|CSKV@k{?L9y6smezqAvAY``j$C-qX<<)?W_V zp?8TSG&xNP=%^uGX&op+K%PJy`GLXWl!2J^Y@*(|jGI!zXD%=J`;2uf%6q{Kw4GtT ze9GZ{Vdl`IvdDDt8Ah$oORzp0->hpnV!5U^Q}z zXT#XhWt_+G)De&(pGr3!gd`;gtVUJ?#+vjCN1iL0v?dXj4e!B6Biv7ybB|?xUEy~P zAnR!RP?93f8xor26QTIzm30pKA$W_nuUcC-z6NURkW-wj4q84luiYX~r0Y;Ac9_C&UpZ<}&5~>4^+*>Lu#Cf{9zSgn z@KMQ7ue@OH_Z&?x(CY50nz5!D^PEkohTm;#az^G%YvASP4#rOGvizoywp#Kn5GP`L z4@Vm~N}<6_EJG^mySVlyhJkJu=**7fgq`K|t&A~Gk28%9NP;0Ey;P>%ddzPYjpzYTzMoa9TZ;AzBcg_1Q7OC`n}Av}a~TY!Z#lUCq%&xOB<3<) zAjQ#~i^FV=8@VTScjJAQm15KLqQrB^PioA?KSo+|liit&e5=_DW?MG)S4^zu-ZPRa zJEEelWm~G zTK!A%;I=dA4`WuNne`#0`r0VI^i`QYyz~zmiVA+t>~KzaSx!>l%=#fAZP+)4sHoq{ zs*~V-=1HcX+fJovxI`;@E^8XFKK!EJX)F9&N>~^%q}juv5Q-JD?hmNuYVOSgpCcz^)b2H-lBCHar%!okNxWw?jDm}!bd@5a`7Pf-TY$8IUE$Lt zMd2BlThyww!oN#Ib9rMa>#Nyt^Oh`oiTl!58qLze;B$YuzC9OR|*& zB2qqVF{0th(P(1=s46ixwuB$&vi3ceSn0e^jP|D63GrRls-=&*@`Ma-J$d#hRo?>UwZR)w&*%3s#hq>88n* zMFXE|ZkQmds!K&rqZ*zO8*9%s@)#gGGagpT->~H>h4{;PW_zQ_dAXJ)T%{(a5NA#< zbr!e$^yO@0Oh$f>i>}(1(>$g1SB%?ZMIZmoTLb8(<#V$W!>7Hgvk>l>gf69i1tG$( zco)2efVzfBv55+(yAP)U0>#Ux5(oU^BS`({*n?8#_KL_4tsREEi_fgfe)EZ?1}3uN zX+>IEPJ@*4&<5C+YuPEYV(ofsjUYK^Ig>HeSkO%pT*3XZfdw;HFGO z;7dZb>mfNA=bGS+3XhT6o=YS>qp^EE0R0;hf}QAA6K;@eK%&cqjBDSIFUm$=_;Kj5 zQ5YLva_EpYem`W&C{R;nj>=Vt2=(^8twF$~S3?q*n|iAdzEwfaq=8G1V!b>ea8FcW z*)W)v*L5YmAkmWL>~mXd{V~C*E!TCSEp?QkBqa57eI2v*k));BkEe;t$i5JdP(_-S{cg#AlmOQ^*&PNHypxW%JBv8ef@fQd;qR#oMKBBAN8D&*zI zj}@0q^SV5uI+oXTtb>sd!4SpZ{QljG0R`55@Q5kJD_7#M;OJ>k8UZCZc51J-W=Cny7$2I=ybh+vBJ>JCqYPW%w@c zIkdrU*oOWQAKlbu!&rWf$a%kUB3>*;F8gPVN?mGePK~1_B>l<{Db#}`nNeLlO6AoI zH$RjjO8ApOS)$!-7JFnl6jC#JP}hmw zWWtxAm5g~V8QD|mim-2z< z2!8&EwcmswR_hKkIdEyY=oX55;`2=KND14xvX4dk!h_P|Ib9VQpSCb+y+Rh{+$2_Ta<{yM~{ckrEFa~$p%mXMJs}B zx%f?7ju@g77Qxi ziLZIsJSqZjSa&F_`S(ATzY@sDZ4q^A?F>Lc=B>I)Y(63B4Q`MM5CA~H)GgE3BL6%r zRe|N%zBZX@5N^pQQY#53eAO>?57Y8Ts||tkAXCPY=LDau(S4ZwGQHl6Gwt+??FYaP zp!WJEoR&&fCQ6CuT24tJwP_98(w=R4uC~;iR77bVAdDD0aV>!h<)03L_Z45G80`n7 zK5+)kcJUW|p4C7Pa9ZbhMhFFTT}(CSzO1Fv7H3pUX3TrvCKDsURtTaq*Mgf&R$WyU zX^Zo}p$k(GLX$$tCz^QdMU^bz^zJzP$jk6Afy=PEX~OB!Bt;Mjs#EzgJQ#`1c?3^A zpBF?)lnyKGR@S$SLCo3aQ_$q1wq&!5U{ECN2`MDs!F~31vx+4>^bn&ss*t?djI*q9 z#KZHLUG-T{l_~TLGN1LpM~@kbvxIV$o=FC@6ZUD7dFucBYEYF8WuD(@aYO zXh-eWip2#7AX#Gj%@V6_KCiv80G?CpV`9U6-T)AQQO+q=>3M*wNjA{I-8x$P{l`56 z6?=Co?(R7y0vmaI53XcAC84n#I^2kK z`%010rASPZl2{PKT}t&|t4b02aB1o&HDbTHw)mMF^J~=n36v+0z@jC9FL?`cX1+Ki*XA$o>ZtE6OUnFqp(DG@ZYL8bzseJG3|E4yL4^d! zV(;hIn20H@C)puPcQ&=Qh9-FwtuL%xefw&+(Q(?O{8jL2I5|1K#KQOWi6Gl01lAzN zMCLHouEY25i$_f0HM8$7fp&{+BBeAC7Ey{D8yX$a5;OUucm`kTJUySjPN(ncovSx`#$f*%0ECOZ*ORSMtLZy2JEbsGs`TeewLRObk$o{rA1)j zw+nVtIDiw_ACi zj1x9E4i^w;=*9EIHHLLdr?sTFU{H;*0V!4+jVq;4kyQ#ZGtAXT`HAmw9i}umolf`o zMa;_0gLTO`sezL%J=7v`Mq0fByFiD~={^mgIf*P3c_6_v7eMR(_r(|&e?Rzp)-e@0 znRMF&pp(oZG#Y@3oCB7f{mzqZr=S!mQjkVqJfd?;JHzX5FATkz$-2V&Fl7T13v%5T zn`~|Bl^PktRHb7r`><-m`pI8rTVw^c>XwLNN)n$I5GPF{rtOw!y9kKH*W550`VHMA zSW?2{iWAKMn4OWArOv}|R4}ucY&U7h7o&C!qMQIh!nPDm zPs#}JMs0Ib%E%(NB=+q-nk*7BFgu7v{C#;-^v!H_n0ai)Y>KA-&K?`gC{O4R4d^)> zL-o#pX4F*VzDp(Z{OadY%~2)R-hK2Tpr)d_OX|i@jjk>WYDP1nmoC{%h;Z;v(OEJF ziLwtgst>x(K41r43MnAS3$?`7A#xcFCAzCzd<{Qpjt+X$KV3S*v2o`VDsdSo00Yp9 z8rpyMu8UqP0^J;qD3u%}S=Oax@dxM=gIKaD_zVu$SkNuE96vGdwCPz!jxu6NQ zcUpsEhRupa#7j@qS2CXC#kw}H!Hf|$vCf#y&VbtFwdDHiP z@4H3&H;rd_%mVcx#fd%f9*eDdn>$;X4D?Q+IGjw z>nOsCNivOWnklr!QP;CydH(+1j&aF;jp;l)Jv@aGrcI_C#cLh?;fSo`+}CasxlSwL zR`Yhe^w8!MO(CuH*tgWapT)C^71DiQi&ny3174Ay6nKtWu09jW_4C>yE_YtxO9NDt z)=O1XSyj9T>`tD@p4geYX+tuBgTtfB(CYsU4QZ@2%Z)# zACeRM9;=niO<6XmSKD$0+#*F zQxjru6Gd8BY1 zxcE=S8v$iiEb zYsM0NJ6Y)Vg_{^bri$VAAjB(C-;0!E`!Sc|V=P1r&ENthMnqGYd=?tYK2I7tQcPe- z9|L9tG+~x9qwv)>NsyHb1^V6^w2{gJH)W8MEeKW|4-Qon+C^;P1j(r}>6Z*e`hi87 zhd&DlIvHR;_%qEWypItp*ntHGVyPM{;9>jc(72o=!DP`3qDfSfMbNT*#r`ORo#Z&S zl|mk^HsvTFONsA@nDEQGdBj6n6~t4sFG49r*BZ#1G9nKHUGkpMQH{(p+9&|LVFw7m-*SV5ao`q(%?iAaM@IU ziXrKAz0a{fVWn3mJX+iBK_F(W9An5%ct|(PegEs$+rE^q0_<;lu0=Cu)0}%q;P2kc zg(M+ft!7M&6=fXrJQ?x3xkGzUKyi1SK;iOvKA!vu+V|Feo}AEb8EvR4bG&tj&g<;l z&zSNX{d!r=!p+g-+fQW+Zsz%hEk4_n{b^nQ;by)@m$##%<^13x8_yqivF3TLR8S3R zXQj%=V?E`R&+?S5u>Fxex6ASg-Vv^rF+UFHgWTd^V>i}7>1yJ-w5i{8x*;lcWzM-$ zKpvR|>}Hr0P0G2@7p?hj8(}IBlxR||^L9+A;LiXfI8cIz%B|Of_%L*`DX>7PW=?A8 zudrl-1dnmVGDdDlR!8s;!g-2uMAk)#a7_6U02?oo36g)>o^tzQV#!1lWU0!h5W8QN zgCx?Q!d|x|)A0rq}N2FKneTcfOvW3!7rSWeP32_3T zFQSu`w94488le6hPjj5NsGd+H_UJZWaHx*9aUzIC{PXlQY@LYz_?@n{^vbg$uhels zrG-0XF;Sd6b#c~1K=qFgQGGX*l!{U^IuvPM*Gp-L5>HvuiW`e5rsxU7tUoAUY^$t; z(DZPFxFbK&v9CyeBm^U>Z)Sp@8-_+0kKKhGZSKOe_C!ywEXr_=;UGQW6XR$~>*@9c zDXB_|iYoGOLWxuc1Dvtu>`ojV!fEMMpi`z~TY+Bs$aF??gq z1Wx3m!rc=nlCsMQn0*7@MJH2>D6Xe6?dFK5yWc(CvsqZ8GQ_Op`@XnQ^`zaM?4DOV zBSY`s)d}s<0abD2!wx^85igLNe0LXO099An8Bd(tHA)sl&7pF>%!nnoM&AnH%RqVY zc#0eq!z!xb1qlZqFe5O<6Ms1rz=eV0ARp!w=tcQ7#uGA8VhSAwQE#}gz1wOocse<>ki=eTFD@raW^NgcW(r;cJ9)p|%i z&RD*^GGJya01~fUVo~tq#s-T1ZKT=^oit-kVT~dRuH|oJP$wrIYrqWO!S>S+4Uv?T z7|IT))0orO>YS`vM>lsju4?Qw8@MV?=6n?W8$a|W=;EnowpasE1WspHo8++y^<$GU zH8GP;x}9tHf50UhyIa>&4rgTU?AHSd-TI0p$99Lwy{kR-tx0b`e@Jpg3v~EVH!+v7 z0X>WVCM^j9d!~5?6^q({VodDi+%2TyAI5vJv8=3z2eY7c} zBfa(|*=0k{Y4Ss(K^ols=cKb;N#)K37a{wdfXFOmn>6CeTr9XvPSdiL?B}!)>>1ux z4OXL!4ig+X0W-(Qk2B(?4gyAL@a)$mIb4kWbWulH4c|A6sb-zv0pw;Zk?L=n<7rtA zV|A7;lWWu`MxM*WTh4ZAT~{h4mQqmYVRWuF96 zLI)_qh|L537^F!dBL#&)9-d;@$>vaAkV#SoRRCLtLt^Pq1Db|b0irh_SqP2*$ya0T zQP3uw6%Hq0>#Nk0?MTvk4mxU%;r$I*Hf31F%iCC?esWAitW=@Lif3l7=M)8gA?M@c z%eMNkPIFX@wiLBDSQw*mxMK1;IKk)YnqHzw)1d&BSD*j)*Y%{UK#1SjqhHJU$qj0Y z1tdw-!HbhlC;#ioHNj__a>@%WEz|Dpt!v%Rm+iy-&$b&{#|-Rd9QwY8;>}wy(0v?R z^!LuMZ|!}DwuKK=I|ZupLVkYQ)zw_`h8p7dl^J!!VU$o>(EQO;Nc;A`=7JH_BfT)vgyQ^p=d8OA99eHNRp1ifxCsNiM z!`L^@J!#{IBQsRwx_^}0zZV!7Lw1%8)_4qUGXiD15%~Ymm^x3k6|=8e*2XQ!HtS^_ zr;iYfiFRmAV+~Y|jG^h=bd7w-4P_qR8pwK!Fryqxs2bU*$^V={MZ1fw20?VY=*2jy zr$ProqQF!l1*wRlq_ME(GSSf$J7%*41?;!|0xy8~Nsnxx%QIs8IKnwa{h9n~WS<5D7LSEHsqdATaUR z_p&~SdKXE!!@$$TxW!yErx{{_W_W$eT86&nS<{OfJwN>86)lD_t!Gn|iYXTO)*5A~ zs`SEuVj?5j1GMzl_#;GttupeV*LWHkQhX$BiRhaVDI<=G5oYytu_Ot4m+cM}GC=ee zAz%{&@y;JT2>ORG2|A?vAHo+@Cg2L@f42VjgZ&>8*!=&#K>jL?5%3MNOYfs@=abvL z#|J04f7_P8h@vCILibf}arw2Kx9|~ffE)ikB#ApEq6iISyB2w@0dF-Bs_Eau_5BF{ zzn(8DAjP2<2TIic?QzpZ5>XV=y}K&9D9KIU|FsP`gftCU#H7z=az0=A=fE50ZQuSk z>=J5(LK0&J@N)8M$AnDj{k@7F>2h=?Z?F5r!TSBlc{m{I_H8pXlc~q};N5n0dujX$ zNU-6$Q4+~?_H?Db;a`pfi-1Tb`p*!de;7QGou4ChrKE-b{>kjedAImHZj1?tFM7J3 z%)H;VDl&H_j``*B6pTAa>_^sXlgY}9JUO4T(7`@s?)glqL~-RQ-<>h}{#3hlws9Fs zq+~W3mhF8-;H0FlWVP^N<4GIP4SpBd4#pk6y;c4|^z{0^Oa>90XVdq6>iKkbaGEqS z>@%+7m;XlNc!Bt9&S}cU_po>3@^TbptGRs-uDw6gds@{Fr#PJuX)|&0z03%gBzCD` zxVtUY_jWkAe_y<7%!S8g_Ke;??UO5x==72;Wnw;I9vAzix0#Y`XBSK4_kta`>preW zk|3sf>yn!#Y;Pcp_}{G#I2;j4VB@{K=;y0>LxaR@#%Z?to^14<>^dk-2_7p2e!Thd zBWB7sMZ4C^$%CFV{m@f*-3a8Hx+r~2T@#b-{@s51m&c;7&5=fdussU~GCT~Fjo*~$ z|L$v*hW29C^CbNm`d_7Z+y}4 zv?RhRj?=7Mt)}w9GBEGYe74@R^+&*nabZSY3|^ z`akiYMF=DrcRT+c9MDau=X+2<{QAwt0_tbP(~|x>GD)WeJC{7!`Qw14lPUA-L~Wvi zkgnU);opy;%k+`mJ_J*IV7&z|&rS58Wk&7WbpaQ%oI`;&L2mB1%`Zn)>A?ML1kt;z zX8YNyE*wCY28S{&*_aZ|4*OCA;KbxJ13gapT}1$%ms0`cChoS_*m*xw%6#ds4>P$vI4!(EXY?xN}->MBZs9hEMXmof*RVoRO4y#n8krE)%&2d6;2&B%}R@jTC20{ z{^s#pkv`3HFa0jo4_f%>5w|P<*LcS*x!W60rv*6!ecMajo-A{Cw!Nt9n3|1iL{GkU9sHEmdkKg^XWU)bqv~qMJVBHz)@&ud${QN z*q68K*ox~|JD2FGm|ZV@qO0s!OeLJGB^mR1)bx0rMW@%A$6+XGHA+evW^RiXD{og0 zaOdRvgQb|J{jZbmTtAYU3BH9_&+J9X84B^tm%=?Sfzq}&OEC+c@mJqNO{2QOXM!** z_SAMEG>JaKC61C1@3$5@(qe}Uxj*y7;K1=uE#aq1HX`I??v6U5gwl?jT@S+65s=b|JwAW0&?f-m#X*f^GT^WPO z&#LbmduO(V?dsiKrJ(6oxuwiKzwM3^S#S^6wcp{=cDCi8fxl=1WfSSuXh0Y5y+(*W z)zL1L{Iq-*nLE2_TojOLdf&XboUjx=GuL#p0EXS0TD?y4zeFH9=-L~*Yv6S%5#-oe z18K1Io|*~G?v1y+w?7Y_qpsf}090mUJTG%6({FVA`iGA?b^WN4L*R|Pbu7#^?uJ&I zmK*O)1)+az8f;Bg5+7^Ls#_he_PVXiH16?1B8$#r&pZwD79M16y~i4yaJUy=4o4+D z^$4pt-?r>>JrCMZDu;yDuD8BbU*hWdjT-K&-+p}Vmn1s!@n~CkKftTYLdO6CZ#%w47cRziN3{WI9cp*S7f? zTx(Qc?)%;rsh*dCdPBFp_SkPP%O zJ)X}j#wK&lb)1HV-WOiI{i-ihH=Lgm*elu!)qeBa({K0dd-|5%pqdAdcQklEfOVi*;nGZm~Ck=4#zhoA`W+UV)Z#xm-v-p*o_*_g?RH9jMDWXjSU_ z5@w+Lv%O(|pwA}OwejkOmeNwJKDD{d^TsQsoOFQ4*VwG!I$iG^28Aq9%E*41=ek^{ zcx3j=a?L(MnHcs&cHHhWpg4^)q$NtNMkwBV_ir#rk$@kKByB(`kS7;`2KH}=Kjw|c zMZOsjy-hE5GjGQr3_ZoZOvLGX!M2lr-8_kZ$E*T)G4S+ZYN{y5!D={#UPwzZ5C8)E zj{JFFH`UfLUa&LoJu;H@eH0ozSc-{#^%4h$plNT|Z?t>yyg!UkQ|EZkxE0RKQ4ATW zQ8iv4DeSDcxg!)U_H;dWf-~Jt7iHe}x}J{(Ez$j1c~>qE6`1vX7WMWr)a=Ve0Kqk9 zlT&_ge}rDAC&Q~LIy-#zI(s}%A71Yvwu1NC+xw2P!j$_|=e-3RM2<;9e}2q?CZTQi zYeqDl?{SQ7}Xu^ zocjtUpv>Kzca_DVbI-31uRh?~aN%m^cOOkk;5vSi^nx?#H0_B;@k%=VSd$ zB5jX9Cc}yR0uRLON{-uoQ%SrJ@2ZV-N3@s?hY|&b^y=5zO($wUN4YF|k2I!m5#GP` zXIZ_y72=lS=?ih~@xB#u@e2)jC;5AiKcl+Tw4aZ?<1NRRarUHf#(3{5?PqifJ@0I$ zWT2UMp+%|r9bK+lSqW}l2>Q3}H~N7e=WM}!Dh20VyW@}4O}y%Y54UDqZziSZ55jVt zFVtoo0e1@P4X*1)kRm*^Do825i4Y;}YyE1Yr?XGkdv|9;aDFZ1+s5jA$2rsn96Nk=Nq90i{E+d&xnEMA;Ntv zX>60_b3b)jhNh7!?cVJpg{3_&0GT9F{ymyXkn&ELs*TX|;YKHk<7}4u&9t}VKE$Xr zsV(Q*jvB5=mQgl(X`0<}_g=i^idypx?GA^BzP00%jFFIh^TwsefkKz&eTfgXzV8i} zBszR}!5vekzEoBKGHUaBPIV`bHC%LpmovrG%!2BiS)`Gf^pehxYGBz@U#6yvsIy@W z?&ZP6PwVGU=&Axw#eU1$i3$SE+gQ0(Cq$Ya+!VB}E}4xgj%R*84tpQZSH~(T&=FBV zB~tjn-yF3+>ppy5NHnbCb8*qv_$xXDlT@w#B-+j%+TZ0rri;7jbh<`sTj9lzKF~##I6TJ8lM4*iw0hAN^e`?e zKSKJo5X#5()||+iyI2{L#NKOf-StFmvaWkdaJK%}dq-F9_)Z9h^)$dPXQio5=8xcY zqzf~+eO>)dIbH8=n_WlqAlBPzqGSGaqYpq4+;g4Mxc6ysONU4N_Y&7HewUy%f*-lO zftxn^JeOf(DUiq5UbY|pvZgX1_jX`A##bTP;0^4y#uxlkaNB991NO0Y!*}YT1{=Ux z9=MSGP z8X?~pfZDu-e4h2dE0%TcOVEj&G5Vc{{@v!t8<+)CfZcYpWJG2iTdFOs>Q zV5E%Ql;QFAeZ?Xdf;hmB#qTXc3=a!j1kCMtQ8rzhzrNcM1IVN!eeIRk@y!4zCCHYdurEz`89s8UtfzWL&7b5a7sMwV)XZAK>+RJ zKR7M#^Z0kq1s}7sXTZR%e;~Wwcv8-sm16ToB1YbRR3GCT8a9P$hSSc6#nBVsll_EX%tG)3&e%Q_wwD)Fk-iorR0F^+bm6NFghm|aqj0>LF5l0A$-7^yS}hm1 zzbq(jeH;9m0c6rEnn<_Fr3CAF=84m3c7AM?7=)nBrO0Wcn3j1GKykar-_~0F`;^&x z7gXpzsA1wWPl|LI@I`X$`FZ&NpPPL=C9x_VFPxPx)2{MDhxq63m1b&V&HTP)9s=k?{fIGj-jUFddh zgf)R;NG6=plov>H`wJymp1neub+>^aD7hk?OFzs@=77oea(oe<%N{F_}dr zCv@5LsUe|NFgDKNtMULm?aFgBBGi-b&VY_CKW9fxWkM_5DR?<@s*%zK)9)_mbkX4g zU~r(7DzO6pM|wa_ijW~f)O%{TFh%)kDHk71;93Knr-dEO-F<0}&%&s27Cn8vB$+f* zcDiP3&weM^=~K|h$n4x#osm#`eFsEQu$Gh3Cv92&J3KCVFCG@V3Iosj*4i!g`qUPz zW|qVe@Al<#*D!EC9t?>jmGPhg@2(@G^ zJs09GKX|(RR`Aka`^t>sF%qZ3-5*;|teU zj_E7AT$^gYWv#IQ5({ROiQ^ZXr*CCbval67EgX|4(RjII%&=)5!SAfD(rd-_G9cD`+nH^%1MDsls^*U2U z+99A-HKkgIsnM{|s^Yr$@>XUz=^0Mi)OYi>(5<>f;GmI!OVv>gE+7zICaktG{XhP2 zsxOYMqItXks`b4p@h7QM>f7F;m@2)MXy_+XNerlAAh7R?tX{ejP1DQd>UL@No**nK zJJ@fai`j3ao$2vrHc=2=|B1P{+?WN#a}}mZ{8-m*z3W(Rma|@(N*>(*5vsgd?lYoV zMh5ER6=#p=*GxXMO9kI8>od0VWBq&1?z|sA3(ozRms;GJsg>Q1Xq!JcttcRwSL6?7DkTEBKzMY(w|;A%uouKzLG!pr)k|e!viI@98<+7b581*DJ-! z11cu{NoXkMUJAKMcR zB^JDnxEGJn*yVM9*-1q3bE-_2oAd^I9Zv}?wwK>-zvpN*QgvE1Vk5U_1e^g;dVF3t z&+Sl{()8WbREzbu2XJSF^Y&M{K!v-|{Gy;q0k< zdJapZ`mdJmkNI9gi4cYkL#HKb_j>T++to7X;6ocWqPdglkOB{n<2dW20hNEq_2eh7 z%|36h=a=IemzKfsDy{aHocV5{7l)(6(o;n0`KCYlV<#Upo>fm?lVAg2qU~w$K9qS8 zQU6bOZ;CLCEnU-y0NX4a`}6wp+!B)~N^<=Ko4ngsX0BFpl0G7ro8>Z|9Od^Jyd){p z>1w}(G~9IDF5e!DNbQsrl7-eT_0B|UrwFnj3R~E+C5`~ia%^gacE}W_YXzBV^Btl zO*nk;-(c3VNZg^d-Dzb`!kN?*l6>) zy)9(~+kJ-B-R#`|i4Wv51#t0^nW$VmVe))eT~)9{Wwf}qRRV!lY~Sizeg5qq0Y6y9 z!B4?30}>R~Ak^4vMvC4=i%we@zy&+We#}Mj_I59-&c!8P+)mqIsrt%eroKi37jQUs zG5p(|thvf&<1Hsl*j|`rA)RoUXX9?cBVo(qV0`-48ywSn{`JnJDa>=YzEMr5O=^K+ z-(U9~WbW5MJ)NoeWpu63l+btNJLSb_WBNj^t^W0Kw3*N4(m*LObY9xDy5AF$=pmn- zVB=9&E&J4~&9QD2e|OMT7r z?L>9LZu|yv`i%daeu%IX1ZR=q(Qwmf`hXL)Tin*YxA*Vv#b5(or<{7V-fyNBe{44? z5V`!4tgv=x3|xPH>^=9kbTgS)knGUwaaw)$b;<#$0azkmZ)Fwi-nHFKezr(_0i89a5rBIDq1UtrXg8EmfU3)oT4GO5&*VOJuV;+$YJS-4}ry>LG97WnL znfVf6(jkcBR1y7%$Eb-Mii9)mAE$|XHwJAXWa3{`)G?T9TK_|bFTGPdu}!^v7vKg! zJTf)aR_9Bmm3>d`)4Ti3S@lgsKkc7?hxDE_Ay~J$l~%)VSO4AJXUuXjhw-nk+3Dz9 z(Z5V;)9st2f3MPd59#}Gi3J51h=KxG6Eg|24-{h|>bZ#p{p+m>isO3NQzGGJLE?hP z$>Hd`2>SrH7n?OU)(^Y3E%k` z#TS9UUdd<$5hGIuVq3(HS&?q=AD@@em=mceH|nFkK~p9xdmB1aXU#;PE2C`m2D^Qj zo2vTPdfi8rdKd9)$UO_{h&9-e2guYNNz}NlLkggJac@`CXX5snoXuI(2REUTpsPj) zSR5{38)|@^R8eO-T@hg+eC@gsj_skUyB-Q)vhAJ|x=s!ia_N2U&4^Mt54(GLrjkXi z4^u2y7^~dTRHZ%+btwN0F<8$Up2NaI+}Qcg^(4A+U>*o@aumSsjM)iZ{7qghUYCXRKR)NX&?&K zU@zYmxJNmi>9L1<+#;}If-kpF6lu%t0$B=S(kT( zbfYjJ4blzL(hMbSA%m2(w4ii1LrQlubT`b<9m71E&-eFx?tPxS?z;a!>z?IW9`>0z zd!Ki|U+?#xXw;;X+7WeJGOjt zU@aqfW||x7g?;D95+9xv=$cy@R;KLO)?OXa$1sPPU~YG3n!^M+LwcWh?N|Dt7b+_0 zV5@6krS}dCsO#69{rW+L$FEO+)Nv5s;k`c5J&^lQ_}09?n5%AgOTYi5yHCe)TT7|P z*`9y8=3v1=ti5}$a@X z;;$V=SNuqg{b{z|=y5)MxLNgS8N$;0>ZgoaRtdum7^y!Jdp54^{#_-_@}V9PtPLdD zODp0I)b=UHPi;hNH=0m$s^a{(p>sw~einaTTy#(hC$AT$C_Wc4?_=Vxm%@Km?@W6C z_J0){zk>bcMCkD7*ymScc6zF};@Ta~*Mj_}6Vd%QfBH$F7Kc|SZ^fiE%=^#TC9cbg zyLM0FpOi75bKzVkGZPbd8Dg-x^Y9w6qYvpJnL1?^VkO>HbVy!6pRfJ>pzK-8 zyrqxWa+t~VJ6})s!xw{LsB#nU=d1-Y`<Bq7MflWZP zaSk15ikT4$v&UwBZrzeI6^|7N*S4>ENY9|eAOEOy8%s{LrJS8r%h!8N0xeI$E*1C4 z6nMX?KUz>?devWZZ1&q&?Cgu5Q`@b#(Oo?JZvisa5xly{e$`l9+-D}HbK5xO{;Qqp z1#yG3jyKy?EYpu}zi375cbbgFi#ZveX`> z2NSbi4ZDP1q}&t00s?5yXZ<*ct(n9pPW-AN04NZS(%A_E8bPMoS|fJ$VeVUJ>4^hP z-37O@_i|s*LFeN9s1r_~$w;52r_uS+D5-e$kh?vwY$N}v0Dt~bS5x!o{_J$tyOqxl zi6)#=){e7#>^rB8dfDpLWN&Zo`;RrWDjk<1=Mxz$^^YUDGyB?lf|oV1YfJv>Z%6+u ziPu7AslG8w4zFDxDCQ=X#LFPsnKvFs)gE!Td++bLC%LTTm=~CN3a8iJos`Zurm=I%=F%|m>Mag^mxZHD02+vW+zLCwk-=X@ zKN@hZ_r7FKIjsb0)O2#WX$O7|gOrISqsq;ZHPwb*r$8z zT>uUDL6;XNrZOd^?lA8Rv}&oNp2uR=dk*S-VUKfeYC8_0LG|HG(yzLMEB{{o@pDUk zJT~U5hGxQs55ymfw?{HAgjj{ePI8ajypK)^^944#BGN7{lt(B3rS6*V3RG_+#Enr} zI2Tf!J3Dy1Ak2|mUQ7H6n=vSAi2G??F$n%&{2^+(?lw4vTEDm$aP1cuJ1n4`JhwXO zk|&?S_Jpp|Uv3Wf38-Sf4YCuu(47^etI@di7V@t~O39{TkAs|7XR8k^gV)Gj+@9gIHzkn{CanXA)EK? zYaY*%YTS6fB!cN6PvvZhwEp=U7Nti zSGDR*V^>hZk7N|=B})MSTD}}-i@61K;-85)97n(*n)8Y~48kPT+gmulzM0_+QoiQR zTi02t$NE|{8wtfEiDHZJ$d#OCSoL>9BJGM}*A*Q+vPzfYW&yT0J+gMwSYBTza@M1J zqU0%WPf)LTs_XYsP@@Bu#dp<`lVa$+#~hz+uKu6D;`WBQSij?Ku3sT&AL?DwfO!sf zjyt+p6r0=I)q3tz=bDw)A6pRhiQtL-^i-RP$hO*idTMX)&!;SBz~4epiuGdPmY{B6n-+aK4RrR4)vLVivooAW?r+l5dq07! zeIv7DO&}$9>S*a>dHGxsc^=Eo$mFjdb_ibBJ#W*jL_GECX*fOACicwrvuY|M0g~Pj z*`aB~dplfj=`(2u_LIl+8)dhzWUeBT!(I0_n_HH7EbmRNhFAx-3US2+_hVy~2iJbK z*i@#NnXhObJ6fw33Wc?6utbY&W8Y301VUL!9yD0WgS>1FJEu5_r{cR2=<4E%U0{5V zqYDuhox_>e~%i<|sa-(?z%wGi(;pk}s~+GaOySKqsVLoWmMCho6`ldO9uW?>ZY$?33^)(7D=-x}6Os(PB6Om|m z%Tu8_=RCh}2Peu9?w7If=QH)8lE447>^{<<{HNjdtb7xLop z*ySH$rz)BY-BH&7&r()7B(Z=9@;Ci6u8*3p9zTB^y~=4=C;W`5`IXV-e(%Nj=`w4w zQVl_}5tmn4IkK{y|3WEH_C21~mMUwM#1rfp$~ce*>-x${Rc^BD&Jvc8YXRk+imISX z61IZ}ncjh@vPK7K?i?S(wkGR~+hXG4Cb-FMvvphTmVa?zQK~nh-0Q0O9OiO-bz*PM zV>zi}uZGZ{-6F_x^-AtZh<;M(=~sFxn-MkMa#s!lscGONDk1;qLD|Z8yyRQAu6$oH ze>(XQOv*Po5w0qh5x!r@sPaMV7BYgI+dKCttEEkt36dW1wfZu`G%Ve#QR9=A-r8mz ztHy4zOjvJyX1Rry83{>=xi-(Og|aK;Z|NDB zCe5?a_bW9l4I`10^3Gjey_+UDEVn-u{jE8nCy5vmDzhK>tv0+%n9|!Dye;a<5ZO6A z#Eorzb-KHu7YG%yu&UHWibyh~(V}fl7D>*$#VQZEA7O5Fc5cX}bBWd&|K*8OpxfIE zDhO3tU_ZNA9}*pxE;ab&&8?3@sjnXMv{|jbkyTo8VPf_x_bVEN9r+oZNqsu?@M#) zN3ym#Hmg=YY2x+{Um5GGsA@_OP(R`kc91bn7Ff{%^~(1S)|yXfVs2fhEw7INr(Qgq~URq;g&X;mm+c27q}Yi zLeH%oE!vXuS`wF*3J66;QZ@bhg{cjJ4WQfdJlOXBAYsL717#&Tz|&31S$Tzcq&9WS z`<65%`;UnD*H8{6G69;z>bMjNLc%Ui#rKw^C9iP`^nR*M0&ih zvYqeWZ^X^bZr5yV!dI23(+r(|MkkS`{QTZIii7h@fS%4f(37g0qs5%$3>BIBe2|zp zw%<+&LGHxDDY<{Cvb!XD<2k;j^};&;cmfC(NQo0eM#|VR(zKBuOVu(qoA?F znu(@trO?-#I4lZ~HaY#Z<^_c(_jfq-E(G$u>LgIHJoBLZ(|R3yVf`Ad(;1Db&2lIF z@V0>#|GNW(pC@GsQG}cv$p)TY-!5<2C_|c%xK?rQJ1OY1!MNx6-w*v;QhQEm5DKrM z^|x}>Q40k*f6KCM4PWHREASEX(&){khT;>i{8=vHS)b`_og5B^PhM$`4b6OwdPEU* z3A~pAWX(}EA*_H7RH=Lg#%dka%o`|r@^6@k;q!Y#i@Dz7aKJWZu{l<3=JzOEDIU&bSBy)XYv0oW-*I+aef}1Tz!cfd)&PTbR#*Y7D=Z4C{RQmkzA8P8MMZi>Ke_ z&_2xJGIwr@#dgoQ&g+}NCJP%bpKGyb=1m!OB2&FGGi(#u`{%ZVVec=C=<>z|5gsRW zbyq}`zg1YMk-3{&D{{~YK?HCY4?<3%Py)A6$#ZvDStWhe0_N*gHjjgkRCv$eC;;aQzg$=7%ScJ)P?_h~3kZPFP&iNMjXD zm|25~j@YBzmCyBsr`OZx94tB4u(CBTt znr@n19xMEGXXb}k3pSs8R|uy}>8(!JsZJ< z5=To>qnk#8&z`sbm7c38K}e+DZ`iWZLw<(e7PcvE6BEcX6EE_F z%`5L;KJ)2e#XBT|BB6FGKU;*YTBbH z5E1aW8tpN<>scjCG#JFcQ@JI`4j}5o)(uJ>(l^IBZ;@Z%eFpXJn@x5x%pUp$64~g{ zRN2f5d_4M<5&tQQLb0e$T;12F>TXF~6>|>VSQ!Pmxf0KK)olIJm5!;uMQ-e`tz6-r@$= zdl!1Kl-S4we$TEh;Dy`6)+wpz>dbl#DcW&o4LMSYQ&`7!AFfZV8l5iV0FxZ-?Mdus z^;4V}<6ZPc(Y&;Tg8(Ng9cCoiL8S*nOb<#{k7mC;o7~F07j_mP4HcZ!YrqSwf*m;V zI-I~`)M{%K%vcC@wF#Bsen9w}m%-8xjnoxStMY;BobN8Ld=cCGMpeall`JMH0) zS7FEtCxkxvQ$d=(s&_M54q`4Flg+0sBV!Jd3L*HGS6l<*9gn%$EV~QTBvOsrzTQZV zP84fr?9(aPn#es#-c~B!dj=iJi7Sk(Qw+an?&1n{&Ujewv^H_|JNDj@U3;3XZ+$R4 zLT%{i$i;7S=Gaud2h;9gKkYMH9mk0p?!YCF{V4$z)0nOH-~ZBYeTl3rXYOX@VUv((3WQ z;Nq$JaI{cu7a&MO;N{W%wETm}Y*TbiOrh}Za%+v>K)W)_BL&*A2C1bpc?!&N$%A%Q$8 za4v3Vc*h8ocUm*sq0~u$=IBvu3a5O32PCalL{?5$NbhG{v?Mf>V>Y?`18T37|I~YS zJaxv$M)N5ID2hM#n=<>=goyYG^RaBTHHX*=oNbO{C4vel<0$eaFQ1v+n+c4B<_jOu znL7=k>oev4sj0J_2bD2}Q=D4He>pxj=+_=Q_O3Sn1ABneMNH~-EBQw|#h&`_4xEpp ztS6s-yfp~SmPReZ1SC>lWj}{=2nu@ae1-rnDJaT`dS^jdqq|q~7$C&OqDA8tcIMJh zdWHro8q9^0APuskLoOYLN*;ceO_?;syNGwH=a!_Pq{s~6+ws@d8p)MEIBOs<+M5z^ z*Sa`uQHNCfVAEBz(Zl&G5rV&gHq(iD=`|H=*BL#a$j^C@G?EZ}*Wdf$gCN_nl38G^ z_;z#8U$Q>s;6RM*kj^*Ab7*yt;oiCV1Sg9AoP6;~yAZzEq%7FPgJYGC?J0cKnEua+ zjoJs`!6%x}KuY#Xr7EQStN?6{I$#t(d4ECp^uqutYEn1h&TW6A8q7$C%1#UDXFFW> zFz$ZpN;Ouv;J385ElF|i=D;+6fN>Dv*y=+j1RK_1cy=)XcYQT#T&+yrS(F_7oiMo9 zr%XLJH#OWk)WpcdE18!Y8IxR$T}Rar8c|Yi<|m48pH3v4aZM=KO>S;%m|3oAmX$w0 z)BeMkY)wo}^h`FpcqQpxA)UD2SWdP>{${d~2}zZH!KY7EWe%kC;(7C0cRmr}bVcvP zr4!+ly+#mzm3U(Ge3Uo{@2;i=KGfCaD|94NuRBY*IG3Lm0wD+(&Q@&pboKr|MQG!a z!$6V~^A9yO(V!02i*B3X%Z2-7+0tpF=@rz>_}AL12?hDyGbZ-tq3I8f4aZ)DM$<)@ z@slXc=c6l*0utq&j)%ZNxZ)CcZtsgat1aEAnXTEcz! zwgf6pcBPIDtu;>2Lj^Cx+7tME|I%M5ZHYL>z*|g`>Sy$#9bFh0d>|w!@!j{F3KP8;C1-BtVr#AYEul22u`*59TKBFnd1PWl0rTkK;Ip5eEYFw}vmfI* zFE!Z-Gz$IwZR92S>z(2P8BP$9_^atYv`EhC8av9dm?|bye%* z?D}m`H}iru;9UCQecBCxLz^Bjc%^5U`<|2ZuQ}18?bL_qZhnjb>U96kO}ZU%t{_72 zVJou3C%17 z2>x>?f>_C~xYtW!iT!sO_X7l=f1vnJz(|zje?gt^J{9G4UlT{g^WPDua$fTa%wNJ+ zhvGIE{WT&0^8j$p4V+&zYAla{ZCtfzGdCatmp-aWf^}RU1FBYBxc{F0O23}y`Y3w@ zOxyMGF-GEle(c{F7&(>qFI`_e%>X|6{=-W+~)Viu4Uw8D8wf>#qHt)Yw@cowxKR&;bxgNz)xq5s} z-+##Oll|ZSCgQNZUh=Q$>t&ukF)4;OFRX9E|9c&6;oS$_)emuSR(`5xD<~*c^6+z@ zK3^{}it7J*!pOJRBRKy% zxh5eC@4rli#InI$%Y5Z^b`uH#H1ZW6|pS_j5 z7OfScf9dr4nh_uO@&0oU_%-QqaJrcPBRmTwR81uu*KyLTjsJ*`0WB?rB=GBhb9<>{ z<;>jRF1P{vlb6V$rayV|*X#U`gn|yiJ*GhYu4sQycIaHfm<@4R51|8LE? z{^tKi!0Vy^|7O5G{l8h8|1)T|*IkVx&dRd9v>D>pMfTm#r(c9a>&=_P!kuHkH!Smb zw`)r{q@JyBey>V|Im>@;URhsX2SKjf>%VIc{67OthzeDC%wpu%inGg5;=JEgeIHAU zi-2fB*iovN-7sfZHyA0=4}?C!o^Vcf|A4Yab}rKpWCEWVYDX32>U5O~qrad3Trq(s zYp?L0L?ENl(^zcH#bruYZ!}9(R|!Y!i7M+O508lJb;y{Pc)$16)Kt=;SoT_x+sB%U zS7G1Dsjkka5#hiA4yRoyGUIWH{h`7_wAGE#3eorM~PfQX9z{*Nh{ z3^E$Mb2`>xwm-af8J2QPh)bXrF@&6`w`m{s@p1*W$o30G;p|K;#_@DstgY?a+_avf zOiMaj9Bzi%5%9ik^g**jx9B_zb9rTqFLmo*Nu7Z=S=Fgr@AD*AO!J4aK-+3J%B$?lxl zWGZS#rp&M3q zd*feom6mTphNYkggoh=kJ|RB#7c=?E_F%oq9qOa<#wWyAW81gy1TZsYRtZcHu1}T6 zhpo!8JZEOsV(nGF&c*W3=%^8%emRa+iwx)^%A=KygE8=(Z(pUCS7p&#ww~@gGK{S?)zIK^-N(W4b>qLKcn{N2M@j-*_1jY3Ar6NHHlME zQXX#%rtVGzDa!~so$n`nJP|}7whKZ?gDAJw4k{AC0lO?uPXbf`jCFUcR)R{d2Y3 zSeKvwTzx9@PeyASQ$|LHY`rgr2F>cJl?{b{YJ7Kr74g7~Hjh``hLlv4tPfO7oDSY% z?@`oXULIZ>M<*sWF`eu?A_e4&ogRQX)wgfwn{TkbPg3cXQyTWg7(X{JoPO{++?ps} z#(>`_`S|yT7h&>D^~I^_GIQz=qlwa?qStk(b4@KfhH#nR;;oFC8M5g^!NCgG9-->RUddM-DP>N=i^@nR~QcPMEMT^V-4M zDPUuudPH=zBJ|t0yCIunPtx?<>7}H6Hs&%*Up-b4Uynw)yQ2lGt!B*tyO|QJ{etuh zKAbN5S8An0{Dy{yxo_T-yxbg7!3Jq|c1P+rxHi1Q2uXjtOO*?AK2S<&m@Er7T4*SN ztgNoi`0Vn$eAYTK*jK1@Me2Z#eonQCydJLqlBOLgV(YR)OrS zt**XD*UGnR>W#9aXB`fIGZ)gJ?KqPrO-)Sx=+-z+e6tfKL?Z3R@fF6D^7#u5UO_<_&8W=#Hx!~_G?gb?Cpx8RrN2wY%*T;x zKTM~ZJ<`&$ei@k57aFf~g7&v@2CvCek~LRWR1D@!nl*Je(ORzYK05C4$R#0(oKRzs z{BpqTR$VPX6t2!n%kRrH%NB9pTC9e{@8`8!!1S)5eeTU)ktb7Gj& z2^1ZsEvxURT<$8qyRA-}Skz%~&(#+{k24_^pD%6r-h^mfwPmJN!fGc}W5)xafUpGq zd_Uv0oz2{Ok7N63&llEB`bYCEYkQ*w@xyh_Q;P)d=hM-5x!Fb4^w}Q6f_m-LagsCArnZ=vhZ*NS`t;q7De~5n=MnB#2*(O{wZ=%BY zz%az0hQM;Lwo}q~J1!+f+@o!%l%k+(85Uxfp+Lju?U=H+X0oz_ z;h6fcd&?^;d(IGei(xyHhGWPrpizkt zlj&n{cvwmdd!ks8U*+Lp@XJWw8s{C^1@Rw8xohP%GcCV$@eulh**@L*D2kjpPOHfZ z2buNu)LUNc@%)Gm*i{VyjTpCS-+pyHQkia2_run1F*oP=T>MLqk(S~wxP=B+7Zvz= z$D>F2PK*7$RFxtYR~6QCjghX_XNiL6?fl)22gl8_+~mwp(~B|z1*iBqT%9U7VWyxI z^nU8fHQ^-dDnT9QUi|@9shuYe%^lm)E_Koh=j7q$^>Et>4h@wt^)OMDYj{n1>r3-( z?<-V01rmD$1nJ%lSc%BD{t_=uE^TA(`q*eB@x5>1G`*(FiR>!LM&= z*}6E0I!_%Q;*wTQOo)r_P2T^YAE$7T69w0vmQ#{Vs&T}Z{{rkN?Nqt3Ml8RB`1HwI zwgY+CM8&}mbylXdk&(kdH3}>JH_0Mi9zC1~+R5)6o-py+EsfUY;B%bMQHi;c<1yQQ z0ZIcXS5yvMt6F-ar!VhRCHUQVtGA!lHvhX9;Fk&uIpXRfWxrIwMKf^8Oupz8J?U z@vvmJ#JhnVGswW^1?`^+$m|tKXuGmOqNrc_KI-H{^Jrb+>}}$=VFg>ou6+eYN)pMefKlYo(y#GoaHL{{*s#gpx>cv;a8rjWPp#XscVEy(t7l^( zUo@p%UQQ|Qg?YV1stQXKS^^OH6xpkc|iwJ=P<`96>ohW38a!BUDFIX|@$Eje%A4U12$*BQ9j zO}^Dee$vFm#?Pr&7meY6=hqEli?GD1zoWSRt+PI)_fMtx6vitKRE!<}AztY=15{;- zB?mZz0M`HM?={YuD(o&LF=nK)dtZusd~5a@X@GK4`QdsXUTncMZWtWq>h#acKlFG? znSF+o!u!m}lU^q&#Nn#hB5s?DJ=wn}n%*cIme|B^YOo!g)n3&J@67s5kF=bwe+oJG z^b``3K*tW!*!y0A{>RnF;OOSe&%JkjIC8Ca1cWnG9`L!8I+(10~{&zJ=cG-#Y z(%kLa;@+3Aks@EFh8hND4l^?gCxJw#-@eH__8pz2SHl+ULBZ!FhhmB4r#ae<7Jb1^ zAhv40d*oD9S?6{z`*&fOtF+|StpCUXsBdRHZ3AXBrJ)7P;XOUZZ*OL{ZtNfrecC1s zLPcTUO$c!a9p5kIeu6VDop!qB*}Jt3K0BQt>T2+~0x z(G70ocXV!m&~IFF!fdLa6rlSG%q#7*f$=)ua8{_Z5H*9HVFLQU*H9XjdXmx7zBNq# z<4_oCAXEW?(8b!An`aNIo@^sOvrPh8Y!BGUyfR)d@M(X8kLq7=y!k~UFw0Y;5O{M? zcw1L4_EoGVc`GM(&fniDK9DZieJeoO(tOQIUwLQRD=MiD*=_MJL6*-f`;6*bR*t)v z8cOif#9ND$tmIdfDF-s~h}re(T$e_Dvfsa#OIQ7UENO0xEg+6c4l(d~-bFjSbWB=IjaJbxoj(lyP>D`@KcM)#3 zns;?V=&7NaHvw|?NYgoP96nS6L11p(7WWdna^a z^0JDURU2ylL*XhLe6Q&S_t>`li{-Vo9pMkKl?Wqh{@prfY+zVrdv)}Ii>u4wq09b0 zqh`$N^9LY<+dkcp2e4$$`QPN3$O!~)^fN7PA?k;0Cz zPU=O4HaAc@dT|?ptF*dn)w)0Y#)-!?glx> z)Zh9CKpw2;GAN0WC%GGow)A^Xs?AHkm1c$!2SV@OT}({W2PPI2apTX&PW<-vLz3w@ z@KHz$Wjx=*?`K^YZeSw;H|yS6%2~%tq`u(iHV;V*VqkZ&Gf{1v`7t-PV>^=;p3@V1 z=}>y`Tb*@B+L z(-3KVYe250;Wh1Z@ty@7oZYztqpT;>Uh}t!1%=eLMf`F$v7jFlW4C(yMoOVNtHZ1Z zXze(zIJ&eZ8QdF=9p{4~7Ds13Khe&f(~ zZ|wMRI3`jt&xgc#)O8lUMFnx8t^G`6zYpRCs*K!opnq!{KLk^&KsS`2+B? zsE_V{z3J>sO7B1zbN9NcY}+eA z%id3k9c}u{E(IK-N3Vu9M3aQemSG5Vyf8O|yz3qAcRhdU3?`Gsi%TslkM%iX>)O$Y zAU2VPx{=wn2cODf;4hs5as4CU5AlQ8Q$O}wQiOw?4+wz0cA=YSLp;;r)T7-q5K=Rz z{Tx3XDRY7B7c9PpI^3K!LiqACaN8`7oY{7R?n*o9Q-;+(nz?sTlrV-bB8cR({X@BYC>qPtP;&`)z?sgra+L21WvCY<^ z8JNM;!a8j;HvKolA|8)}O!oO}a|;Vn;MHB-$`1C99o?S8F$Eleb9jiA5dd>jZQS}`NB_P{8 z8-1MicU}cDG)6%ho~(^t*hU*W*w|a>7Jm-eESdfLs&Ka(WKVDww%qX?IyQM{z)fK~=E7SfqP85z=m)j$$~Ya(MCFS=VTa->uNJL}jh{hel7zpc_}Xqa=L`8f}rSglwymNO?P z!1$T{0bW?%)E}>)WARS2{U+C+n{tK;KeSZ>DgL2x+vu`G?we+E= ztYyJ*TAy}e4YjmIeD#D&1oHh_XSMa)(IBS-q*PsI1-Si=*0#-kZm!bgx`&U`K4HA9 z4%@l;_{u6PLr#fk_nt(sZ%mao14ky&ELQ*Ee!=F}+46*qMnfJDIKU+2L2evpq`_f> zA~Zjq|M|3r0*BV0^h`_hmG}he(x4Y^=K2lx`ST|W&$8b~`WY;)ZZ5AZu*P<7?C^Jk zUWZ^owmzf!&P``fb8HYxYB;-_M7vdyr`JIT0Gi&PHJ?F^)PS?U0iTj&m&0r`kEwBo zL7T07lD7`o?rI#;tCVyk?mC(R*EgWCP@JvI~ujrVV#sx=h*I|B) z$MQpBWR@mEy1c7FiIUfBBp5`W*VrAf4i&FK;;YB&&_UOL|DoX>$`_KO)2!zTi|0AC z85#%^CGe!Lw^*_Vx}}=!NR7zmjs>WOsPDO4wz{rPe5LhZ(bvz#HYF#i^c?#2;gOLi zFE`cXTQr& zQu0HQhv@p@e|Na~ncsd&8Cq_Ap4FEu!$`xwpDESN@9+Pn0)6T%ArYa#L2>_fLvQ>p z=ANQ*zl?l8*9)Rjg34g+yqcXbq+Jcc_p3)2Q;V+9mK7L(Ub5cwDfwY}IuCKNa~6j% zbAV5w+=sITQwq4u-?bX@DLj;e^41pawvEEi>LSxA3uLaQMJ1yg5ORc1f&~S};oPWZ zxJarW1R+o}^Y>!!dVURUe@DuZ`R<&Zon^nLL?B40Z4R1j;`H3ZbY>J&18)sZ*}0^Kxlk?3`h8~R-SS1 zl9PrGmfo*yAj=6G2>p>|9T(w*MJs&H`DPa!Qb&x~{e4{a;$7J=`BtwL6rPM`=wpUTgg)8zOnw{x%)QwN6 zIb!mz)*5Q!Wzt4@yYQ@crWSN!ZiY)lK)5i4Gw(!$M5dE$)N?O;RsFyDm?d?M8|MK1 zHM0|_+`3dV1^XiEeGg{)>fRJ_|FW*lNmF5|*uE?^4SOfs`3%bAJJRn@=zi2z=S7%O z>^zn2gBQ~oDp4{;8pO^N>AbAYTlFuA%#Scp*{zNsJ z+q-R3R4f`_wxO5%dM#g=fPCV8#qHeKtFE?W^Y;ToP3Xh$tvSJtKV87e0I5=h9$~C= z$i+POhrl$Azu)mT9J?mCQ49Kpw&en$Hyeo!(L2GX=MRE|exYg?+q0xMBLdVQ(IyGc z4DZt&^Cif4+?W72@Jr7&%fahc`l;+)Z&6_F%FX}k9TKM{T{sqX4NQhDUTK$C?$=a78(h;qNiU2Ug@{acb zsAk+gEUCI9KC|Q@C)L3dqkVjcDA!t@+z ze`)p}b&ogN@NI)UHNMh{z2+uqb_l8QJNs%^Oq0CU_T7N5zzBjW$%Xl3TJyzdY5B|I zJz{z+AN0F5i$}Vupu?cCg_1WfMK${&E`i_Kxq-CB=<3$J&9VIK zYS)=!gP@Op2Yl;+cHr~ZGIqx`%1%4~+AqS~8*t#|Kw0&9Tl4-sHAxs19a z%*V-;1{7)h^!8D6_P5s!o=bFkB>+WkW#h}eTkU;*X(v_b$q;ayaDftlbanKcdyFq< z_Roz1BEElnvo83n#5>VBD${R-KRTB$2+4wDxjh&4Z~4@57Vn+Vi*(0!3efZ&b~23T z0G#xWJeH568=&?(q8}#9oMs?l9gLZO>Inl?vJ8T$sHtLJXs?`ffMva3{{!#_IJ|$U zH-Y!{Z`tK|{2Bmk<$JP5c8}SP>y&>F2p_DRV$5ASIQ8c&ahUP=Q$4tQxgrdU*Zy#gOVh1{q=%gQLs7P%VC9XBsPu3?0!9P^+4D7`RQ|ihp>-SE#3A_639qO2ltlartJ1Dxbl`{j>czfTE?V zZr@7HVN*9z%`uRg0`cz1sh|j*!&cYC>qcVR%UfVaV0q`pV0tgmH_}K|uraHjRnODS zu6b!sXJ!T=KUO&B{R(OzTs~Sw&cid1!sDCu>MsRqQ&%Sr$&r)Pzx+TlrQzXqp1)wa zmjAprP{vg3uhN#DoAq1-eAITj+;b)rSov0FMjf5_22awF^s)O$*C)+udmPELO9m4@ zQ+?t(RAn#t4KAmaL$`DviIv4=cY=@<&LYZC3LFyvV3P#43UR*z-O!-#uGd+ro;eRy z>hJL0UH7ONRn+LF=uMc;v} zYTZg76Oq?P7pSmkN8ce1Nq!NV{+iw)3@L9}YX5cfsggm<(6874)TVi9P=Xq2b>$1F zQv!$gCNzZ%^UUp{pt<#q1fjbnx7t$GX$x?dw4#^HK0XGf3=GF{z#l|J;Kt+To_mvo ztFY+vIKYObT?1Lf#r;~w<3LCuLg#*b=mg9{P>dZYHc)YSwzaC&1SKqTf?AC%sy@#D z{NvVag#_~BaRP4p&$ml!MLgQe6E)7*2h{nqgQ-p5TN~&EeHRW9Y@k+1%jGE@-n?gX zYK}HGHDxH)ZlCV?yVkQ;NAQy@i2esBOCIrnIsv$y}UDP-B@v1u~4}C`}N%otq7fDeHg+)Q!SE zi+k?**_oO(+Mgk%9P%c$X^?@qgRu?Na>%oij3SzoSaU)=M14D$Z1 zDL!EU|1T`9=_Hcxp4sW~J%#w|E48}oM6rE0NH}zbQsOz6W;ZcgSHI|HH_u1S zFp^gyo-uG+yS#BS?K^rX&X-OH6b{C&`ZG0Fv$04d@|nHw3o?$_8sDQ@fZ(U6n-|&O z86>5(_gea-0Q;foRzMc6t)=z&k=1R9Pby%OIH>54yI3Yi>l5ru{awXp`xKt~DX_Q^ zs7w!u^b@Qn?=w!G=VHV$e}MZmpx%;R5+V z5UP%xDg}ksDK|RRnGMcQ)*>25P0C3EwxgFwsQOr?w3||Bc5!iRrcJ|al7>5Kt{(5~ zpQAXqg(7vc^yhqynM}plPb7gZbB&~I=Y5RuJ_y%fFwEV>KS*~g=T0q_K{ zyUp(iRmi|7E@x%B&02oYm?}|R6j4KJ@Mr8sqt1k24zUk>eFgOwP=w?yR?I*qKLQCb``vnc zgNxwc;BzkXRaK7I-%ehw6P@pDQ!{3$Z1dQ)I1>b|T6i=al%dr^tufdX%%_J`14}(; zx!KtpQ*M{C&=BhLV)9noV?6tp?s(b((j1lW@;ugPIB4epRdUqGzQ_3`JGE`kV5&qu zl?L$rrE0A|2EukEn}XP)18NR>rw9SxHIZ@M*PS;7L~kRd>!s?Kft$7ENL;jdV^%QZ z{dd!MVz=WuqO<|}L`6+KTCjjwK1(pT2&;6M>M4zo2f2CSY*l6sViTF4jZlsj6Y*8!S6CW_2CsZBG!$LcMxK1S#hlhHDeJSZuFNi;zsB8IEotTn2fVx!Z~ z7Cj={6_fjua|*VOX#|QbnhOkPCVPK!MZm8_yuZOg5&=4tiQj^{bEdnp-__+96e*`# zEg-y(3Urw9X<1!O7Iv=94s@zlIOdzj)JoX^d?11E{cYlv71`=T%4gv+F?}h9W0mKi zi{R#$=7}1WExX|g3@~yJsYhz!!z^0@*5}Cc-({wCc=ox!e%I|cCk;LKG;!Bzw-!qd z+euW_$bKdZ+EQ5&f}j!>X~|h?Q$ndGox|@9(#Hm0>csH4R-sM(hNF-0hlfY2y)>Nj z2Ou*n(66ak3HzevN7z~jfR=-Vwvee_7f$#N!8`MITeLDYG$^!k4bQuNZ#vu4yvV-hGz%vVW`{1vwB0b z7}E`;5}KOjqh2ksrXH0fWXNd0ZTZ;oM7O=HYf6@{AUB0lPF!3~!2z%v?~XrGlkVx0 zu~AHrh7E1Lll6704nRK`%`@&IycY)Q1HD#@80G7H^wtb7X=dp`P}O2fXGUriqZB2) z4JkNixRS=_kL$RJ-OkCkK%DCfqYUR?D|F?)Es?8#duxt)be)^~S1>w`q9;l;xRIy* zMp3C~CnwPKnIq0A;c_WGTx*MptkCx4E314>O9}= z(*pUvu8#R@&n+aUzT(@-g?Wo_@*zrf)O%e4;{xV^KZ7ZVzw@^Rae9t)6W+hdeYLZY zL&sHAIw%d!$|vkaU#dVb%d!Xz5q^Kx05lK9osgl98C0)|4SB_x?~PtF0IUs*h)stR z^^O3S3jRqA$Qdqa^jCi+cZ-0t- zwk_x4=C-kzvJVW0RpQ|B3_)hwxg}6o0X^uj%T(wbb`dj|Qnu*UR*LAteGvFDaoi20 zoJxM+S5eGbyWCmu0z$-Ii$z*$%2=)Oqj6NEJm~pzTev?_DzIQD-*|3WrOYO`Iz)xY zr8ktjzk8jW9NFNwnFeUd4Lc4C=_7c@O_5bdQsR4TSH&~(B_8)->tTkSzK-7{c@K=q z9m_x_Z+eBINQuF76K3mdj}jILo|ynineUQ;(h@K)K-&ZyWdZEr39q&yI)|BxcSr;& z7Of_qd%M}Vpvt?yD04G_0t9CT`spn zqN1sNL?=5&Mi_D$57vt!mwJHn?mf2xz}PFE9(xeod}r}t22Mj+DOkv&c1w%tc+RKQ z4Y!lQ7!pvE+lIAQ-bL1F901j4>PP@7?#t-tyfq~EbT-QjQ3qxZmQ2kbjkYsig3tj-5~uE#qBZ>}dw zF9r@g$U@D3f6N4JBa0Us_MGHVNquUCnY`~afa{PwN){=Bh=g5nHxv^gl5 zTPx{C;g1m+&i~}&vnPHFjg-`xda9a@=Bl@9-<;u?6+VH;FXVEZ-wHg*zFcr;7+s0P zNLpE*fA9rql!nS~v+Zn0p=*)JH@v*^ENgu@SzOV}LP#%a%*%o$W#(6-m)4m&(?VNu zQqk$7riU%p+*DN@qI<13cRU$B))gwfG-gudFj!OvdeWn%<=bVOsUg1mPgKvExabW>2 zHN&apx@gKde??c zcCiw8qyv4R^V=(GrlAVDS-YPUElrm5C#e1#Hp#!kSlan$$N^mQYtAisG2?*0Iv zK(lI2@~G=;3Tw5|4q$wI0{KeU3JZSu-oj_`z?L*HvVGPp_Z<4ug<5$^cu@Ks!E2(d zjnfMc`lFZOh}(fDrF|?ytInMyxm@RPY_a=%b#)&BLiEjO$;bgOSdj>MRNq=q7R6x4 zxYadd{eMkhjb7mBFR>)(DcEMLe+zk77FH}=Z^D*!zkuMd-A(7Uwnm4(QJ3KnPYvC8 zH%scZ{`jk8x2aL%GU#r7F+TTGP~a`ot1HiO-EX@X$O4?BB{W7+;);-`_U@ z3I$FR^;mTZ75w%-P7u-ddicB>(0XlUJkoiFx~pA_=m&)-X`l4s?M}|M-nHM}ggNi* z9Dq?|dXEb9*Q6pzv_8-0O)W z3S}8dg|*6-{^x~)*sDhFkS+AqhCoE!o zd7a%CGhPh>^SOQAC7zNqJrxT@?UW94kkIcpys7W>|1MA-wwBD?W-HENt%P{O03? z%}28RrHoO`@oJ+eQw7nbW*TfX0=2t0q>~ZCS?i~+XlN_-u-r(S(&nt)VK_`U={V

BuS09<#Hr~m>K0GwDcz9F+ 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 UX(r>pRT&^LA!)%<0iFN;FTtUJ9{>OV literal 0 HcmV?d00001 diff --git a/public/img/blog/running-a-big-llm-across-multiple-gpus-with-vllm/cover.svg b/public/img/blog/running-a-big-llm-across-multiple-gpus-with-vllm/cover.svg new file mode 100644 index 000000000..9c6a3d465 --- /dev/null +++ b/public/img/blog/running-a-big-llm-across-multiple-gpus-with-vllm/cover.svg @@ -0,0 +1,55 @@ + + + +One big model, four GPUs +how a 235B model is cut up so it fits, and what that costs + +ONE CARD + + + +95 GiB +usable + + + +236 GB of weights +2.3x too big +no flag fixes this + +FOUR CARDS, --tensor-parallel-size 4 + + + +GPU 0 +59 GB +weights +16 of 64 heads + + + +GPU 1 +59 GB +weights +16 of 64 heads + + + +GPU 2 +59 GB +weights +16 of 64 heads + + + +GPU 3 +59 GB +weights +16 of 64 heads + +188 all-reduces per token + +QWEN3-235B-A22B FP8 - 128 EXPERTS, 8 PER TOKEN - vLLM 0.27.1 +tensor, pipeline and expert parallelism explained in plain english +blog.kubesimplify.com + \ No newline at end of file diff --git a/public/img/blog/running-a-single-llm-across-two-gpus-with-vllm/cover.png b/public/img/blog/running-a-single-llm-across-two-gpus-with-vllm/cover.png deleted file mode 100644 index ea6a2368e4ab786ef8510750e15ec371c6c229ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 193910 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�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 HprdRYBQ%PU1FFgP0+hOBdit@-wkAm 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 - - -One LLM, two GPUs -tensor parallelism splits every layer, not the stack - -ONE 45 GiB CARD - - - -budget 40.47 GiB - - - -weights 61.03 GiB -does not fit -Available KV cache memory: --24.42 GiB - -vs -TWO CARDS, --tensor-parallel-size 2 - - - -GPU 0 -weights 30.59 GiB -KV cache 8.22 GiB -heads 0-31 - - - -GPU 1 -weights 30.59 GiB -KV cache 8.22 GiB -heads 32-63 - - - - - - -all- -reduce -GPU KV cache size: -67,296 tokens -2.05x concurrency - -QWEN3-32B BF16 - 61.02 GiB CHECKPOINT - vLLM 0.27.1 -2 x 128 all-reduces per token, no NVLink, measured not estimated -blog.kubesimplify.com - \ No newline at end of file diff --git a/public/llms-full.txt b/public/llms-full.txt index df6842053..a3207800f 100644 --- a/public/llms-full.txt +++ b/public/llms-full.txt @@ -5,6 +5,576 @@ --- +# Running a big LLM across multiple GPUs with vLLM + +- Canonical: https://blog.kubesimplify.com/running-a-big-llm-across-multiple-gpus-with-vllm +- Published: 2026-08-18 +- Summary: A plain-English guide to serving a model that is too big for one GPU: how tensor, pipeline, and expert parallelism split it up, what every vLLM flag does, and measured numbers from a 235B model on four RTX PRO 6000 cards. + +Sooner or later everyone running models locally hits the same wall. You find a model you want, you look at the download size, and it is bigger than the GPU you own. A 235B model needs roughly 236 GB just for its weights. The card we have holds 96 GB, and even the largest data-centre GPUs available today top out well below 236 GB. So the model does not fit, and no amount of clever flags will make 236 GB squeeze into 96 GB. + +The answer is to use more than one GPU. That part everybody knows. The part that is genuinely confusing is what "use more than one GPU" actually means. Does each GPU get a copy of the model? Does the model get cut in half? Do the GPUs take turns? Which of those is happening, and what does it cost you? + +Let's answer that properly, with a real model on real hardware, and let's explain every single flag and command along the way rather than pasting a magic incantation and moving on. + +## What you will learn + +- How to download a 236 GB model, what the 24 files you get actually are, and how they sit on disk +- How to work out on paper whether it fits on your GPUs, before you spend an hour downloading it +- What inference really is: the two completely different phases behind "time to first token" and "tokens per second" +- The three different ways a model can be split across GPUs, in plain English, and when each is used +- What every flag in our vLLM command does, and why it has the value it has +- How to read the startup log, which tells you more than any tutorial can +- The rules that limit how far you can split, and the real errors you get when you break them +- Measured numbers for all three splitting modes on the same model and the same four GPUs + +No prior knowledge of distributed computing is assumed. If you know what a GPU is and you have run a model locally once, you are qualified. + +## The machine and the model + +Here is what we tested on, because numbers mean nothing without the hardware attached. + +**The machine:** a server with 8x NVIDIA RTX PRO 6000 Blackwell Server Edition cards. Each card has 96 GB of memory, and the machine reports 95.01 GiB of that as usable. We borrowed 4 of the 8 cards for this work. + +One detail that matters more than it looks: these GPUs are **not** connected by NVLink. NVLink is NVIDIA's fast direct GPU-to-GPU cable. Without it, GPUs talk to each other over PCIe and through the CPU, which is slower. You can check what you have with one command: + +```bash +nvidia-smi topo -m +``` + +On our machine every pair of GPUs reports `SYS`, which means the traffic goes across PCIe and then across the link between the CPU sockets. If you had NVLink you would see `NV1`, `NV2` and so on instead. Keep this in mind, because it changes which splitting method is fastest. + +**The model:** `Qwen/Qwen3-235B-A22B-Instruct-2507-FP8`. Let's unpack that name, because it is doing a lot of work: + +- **235B** is the total parameter count, 235 billion. +- **A22B** means 22 billion **active** parameters. This is a mixture-of-experts model, and only a fraction of it runs for any given token. More on this shortly, because it is the most interesting thing about serving big models today. +- **FP8** is the number format the weights are stored in, 8 bits each, so one byte per parameter. + +**The software:** vLLM 0.27.1 running in the official container, with PyTorch 2.13.0 and CUDA 13.0, on driver 610.43.02. + +## Part 1: Getting the model onto the machine + +Before anything can be split across GPUs it has to be on the disk, and with a model this size that step is not a formality. It is the step that bit us hardest, so let's do it properly. + +You download it with the Hugging Face CLI: + +```bash +pip install huggingface_hub hf_transfer + +HF_HUB_ENABLE_HF_TRANSFER=1 hf download Qwen/Qwen3-235B-A22B-Instruct-2507-FP8 +``` + +`HF_HUB_ENABLE_HF_TRANSFER=1` switches on a Rust downloader that parallelises across connections. On a 236 GB download that is the difference between an hour and most of an afternoon, so it is worth the extra package. + +### What you actually get + +The download is not one giant file. It arrives as **24 shards**, plus the small text files that describe the model: + +``` +config.json +generation_config.json +model-00001-of-00024.safetensors +model-00002-of-00024.safetensors +... +model-00024-of-00024.safetensors +model.safetensors.index.json +tokenizer.json +``` + +A few things worth understanding here: + +- **`.safetensors`** is the modern format for weights. It is a flat file with a small JSON header at the front listing every tensor's name, dtype, shape and byte range, then the raw bytes. That layout matters for us, because it means a loader can memory-map the file and read exactly the byte ranges it wants without parsing the whole thing, and without the security problems of the old pickle-based `.bin` format. +- **`model.safetensors.index.json`** is the map that says which tensor lives in which shard. This is how vLLM knows to open shard 17 to find layer 62's weights. +- **`config.json`** is the architecture file we keep coming back to: layer count, head counts, expert count. It is a few kilobytes and it determines almost every decision in this post. +- For an FP8 model like this one, the weight tensors are joined by **scale tensors**. FP8 has very little numeric range, so the checkpoint stores a scaling factor per 128x128 block of each weight matrix, and the real value is the 8-bit number multiplied by its block's scale. You can see that arrangement declared in `config.json`: + +```json +"quantization_config": { + "quant_method": "fp8", + "fmt": "e4m3", + "weight_block_size": [128, 128], + "activation_scheme": "dynamic" +} +``` + +Remember those block scales. They are the reason for the most annoying crash we hit, back in Part 12. + +### Where it gets stored + +By default everything lands under `~/.cache/huggingface/hub`, in a layout that looks strange the first time you see it: + +``` +~/.cache/huggingface/hub/models--Qwen--Qwen3-235B-A22B-Instruct-2507-FP8/ +├── blobs/ <- the real files, named by hash +├── refs/ <- which commit "main" points at +└── snapshots/ + └── e156cb4e.../ <- symlinks with friendly names, pointing into blobs/ +``` + +The content lives once in `blobs/` under its hash, and `snapshots/` holds human-readable symlinks into it. That is why pulling two revisions of a model does not always double your disk usage, and it is also why `du` and `df` can disagree with your intuition. + +The practical consequence for serving: mount that whole directory into your container and set `HF_HOME` to it, which is exactly what the `-v` and `-e HF_HOME` flags in Part 8 are doing. Otherwise the container downloads its own copy. + +### The disk trap, which is a real production hazard + +Two things about disk that the model card will not tell you. + +**Each tensor-parallel worker reads the entire checkpoint.** vLLM's own docs say that with tensor parallelism "each process will read the whole model and split it into chunks". So at `-tp 4` the machine performs roughly 4 x 221 GiB of reads at startup, not 221 GiB divided four ways. That is why a big model takes minutes to load even off fast storage, and it is why our first `Model loading took` line reported 45 seconds only because a lot of the file was still in the operating system's page cache from the download. + +**On a shared machine, filling the disk can take down everything else on it.** This is the part we learned the hard way, and it is worth more than a footnote. Our test box also runs a Kubernetes inference platform. Kubernetes treats free disk as a managed resource called ephemeral-storage, and when free space fell below its eviction threshold, the kubelet did exactly what it is designed to do: it evicted pods to reclaim space, tainted the node so nothing new could schedule, and garbage-collected container images. Several of those images had been built locally and existed in no registry, so they could not simply be pulled again. + +Nothing about that is a Kubernetes bug, and nothing about it is specific to our setup. The lesson generalises: **before you download a quarter of a terabyte onto a machine, check what else lives on that disk and what will happen when it fills.** `df -h` before you start, and know your platform's eviction threshold, which is often far higher than "0 bytes free". If the machine is shared, keeping a couple of hundred gigabytes of headroom is not paranoia. + +## Part 2: Why one GPU is not enough + +Let's do the arithmetic, because it is simpler than people expect and it saves you a lot of wasted download time. + +A model is mostly a big pile of numbers called **parameters** or **weights**. To run the model, those numbers have to sit in GPU memory. So the first question is always: how many bytes is one parameter? + +| Format | Bits per parameter | Bytes per parameter | +| --- | --- | --- | +| FP32 | 32 | 4 | +| BF16 or FP16 | 16 | 2 | +| FP8 | 8 | 1 | +| FP4 or NVFP4 | 4 | 0.5 | + +So the weights alone take `number of parameters x bytes per parameter`. For our model that is 235 billion parameters at 1 byte each, which is about 236 GB. Our GPU holds 95.01 GiB. The model is roughly 2.3 times too big for one card. + +But weights are only the first of **three** things that need to fit. This is where most people's mental model is incomplete: + +1. **The weights.** Fixed size. You know it before you start. +2. **The KV cache.** This is the model's memory of the conversation so far. Every token you feed in, and every token the model writes, leaves behind a small record that has to be kept for as long as that request is alive. It grows with how long your prompts are and how many users you serve at once. +3. **Working space.** Temporary scratch memory for the actual calculations, plus some overhead the framework reserves for itself. + +The KV cache is the one that surprises people, so let's size it. The formula looks intimidating but every term is just a number from the model's config file: + +``` +bytes per token = 2 x layers x kv_heads x head_dim x bytes_per_number +``` + +The `2` is because you store two things per token, a key and a value, which is where "KV" comes from. For our model, `layers` is 94, `kv_heads` is 4, `head_dim` is 128, and the cache is kept in BF16 so that is 2 bytes: + +``` +2 x 94 x 4 x 128 x 2 = 192,512 bytes = 188 KiB per token +``` + +188 KiB does not sound like much. But this model supports a 262,144 token context, so one single conversation at full length would need `262,144 x 188 KiB`, which is about **47 GiB**. That is half a GPU for one user. Serving ten users at once with long prompts is where all your leftover memory goes, and it is why "the weights fit, so I am fine" is wrong. + +{{multi-gpu-memory-fit-animation}} + +## Part 3: What actually happens when a request arrives + +Before splitting anything, it helps to know what the work being split actually is, because inference is really two different jobs wearing one coat. Almost everything confusing about multi-GPU performance comes from this split. + +### Phase one: prefill, reading your prompt + +When your prompt arrives, the model has to read all of it. If you send 1,000 tokens, all 1,000 go through every layer **at once**, as one big batch of work. This is called **prefill**, and it is the phase that decides your time to first token. + +Prefill is *compute-heavy*. There is a lot of arithmetic to do and the GPU's matrix engines are the bottleneck. It also produces the keys and values for every one of those 1,000 tokens, which get written into the KV cache and kept. + +### Phase two: decode, writing the answer + +Then the model writes its reply, and here is the part that surprises people: **it can only produce one token at a time.** To write token 2 it needs to have written token 1, because it feeds its own output back in. There is no way around that, it is what "autoregressive" means. + +So decode is a loop. Each pass through it produces exactly one token, reads the entire KV cache built so far, and appends one more entry to that cache. + +Decode is *memory-heavy* rather than compute-heavy. For a single token there is barely any arithmetic to do, but the GPU still has to stream the relevant weights and the whole KV cache past its compute units. The bottleneck is memory bandwidth, not maths. That is why decode speed tracks memory bandwidth so closely, and why giving a single request more GPUs to read from in parallel actually helps. + +Two phases, two different bottlenecks, and they respond differently to everything you tune: + +| | Prefill | Decode | +| --- | --- | --- | +| Work per step | your whole prompt at once | exactly one token | +| Bottleneck | compute | memory bandwidth | +| Metric it drives | time to first token | time per output token | +| Data moved between GPUs | large, whole prompt's worth | tiny, one token's worth | + +That last row is the one to hold on to. It is the reason, later, that pipeline parallelism wins on first-token latency while tensor parallelism wins on tokens per second. The same all-reduce that is trivially cheap during decode is expensive during prefill, because it is carrying a thousand times more data. + +### How the server juggles many users + +A real server is not doing one request at a time. vLLM uses **continuous batching**, which means it does not wait for a batch to fill up or finish. On every step it looks at everything currently in flight and assembles whatever work is ready, so a request that arrives mid-flight joins the very next step rather than queueing behind a whole batch. + +Two consequences worth knowing: + +- **Prefill and decode get mixed together.** A step might carry one user's fresh 1,000-token prompt alongside twenty other users' single decode tokens. That mixing is why a burst of long prompts makes everyone else's tokens arrive more slowly, and it is why `--max-num-batched-tokens` exists as a lever. +- **Capacity is set by the KV cache, not by CPU or queue length.** Every in-flight request is holding cache proportional to its length. When the cache is full, vLLM has to **preempt** somebody: it evicts a request's cache and recomputes it later. That is the real meaning of the `Maximum concurrency` line in the startup log, and it is why we spend so much of this post counting cache bytes. + +Now that the work itself is clear, let's look at the three ways to spread it over more than one GPU. + +## Part 4: The three ways to split a model + +Here is the heart of it. When people say "split the model across GPUs" they could mean three genuinely different things, and mixing them up is the source of most confusion. + +An analogy first, because it makes the rest much easier to hold in your head. Imagine a large restaurant kitchen that has to produce one dish: + +- **Tensor parallelism** is four chefs all working on the same dish at the same time, one chopping, one on sauce, one on protein, one plating. They constantly have to coordinate, but the dish is done fast. +- **Pipeline parallelism** is four chefs at four stations, where the dish moves down the line. Station two cannot start until station one is finished. Very little talking, but three chefs are idle at any moment unless you have several dishes in flight. +- **Expert parallelism** is a kitchen with 128 specialist chefs where each dish only needs 8 of them. You spread those 128 chefs across four rooms, and each dish gets walked to whichever rooms hold the specialists it needs. + +{{multi-gpu-split-modes-animation}} + +All three can be combined, and in production they usually are. Now let's look at each one properly. + +## Part 5: Tensor parallelism, up close + +Tensor parallelism cuts **inside** every layer. This is the important distinction: it does not give GPU 0 the first half of the model and GPU 1 the second half. Every GPU holds a thin slice of **all 94 layers**. + +How can you cut a layer? Because the work a layer does is mostly one big multiplication table, and multiplication tables can be cut up. The technique comes from a 2019 NVIDIA paper called Megatron-LM, and it works in two moves. + +**Move one, cut the first matrix into vertical strips.** Each GPU takes some of the columns. Because each GPU has complete columns, it can finish its part, including the activation function in the middle, without asking anyone anything. In our model the attention block has 64 heads, so with 4 GPUs each one owns 16 whole heads and computes them start to finish alone. + +**Move two, cut the second matrix into horizontal strips.** These line up exactly with the vertical cuts from move one. Each GPU multiplies its slice and gets a **partial answer**, a quarter of the real result. + +Now, and only now, the GPUs have to talk. They add their four partial answers together so that everyone ends up with the complete result. That single operation is called an **all-reduce**: everyone contributes a piece, everyone gets the total back. + +The Megatron paper puts the cost plainly, saying this design lets you run a transformer layer "using only two all-reduces in the forward path". Generating text only uses the forward path, so: + +- 2 all-reduces per layer +- 94 layers +- **188 all-reduces to produce one single token** + +And they happen strictly one after another, because layer 5 cannot begin until layer 4 has finished comparing notes. + +{{multi-gpu-tensor-split-animation}} + +### The KV cache gets divided too, which is a bonus + +Because each GPU owns only some of the attention heads, it only needs to remember keys and values for its own heads. So the KV cache is divided across GPUs rather than duplicated. Four GPUs give you roughly four times the room for conversations, on top of making the weights fit. This is a real and often unmentioned benefit of tensor parallelism. + +## Part 6: The expert part, which is why this model is only 22B of work + +Our model is a **mixture of experts**, and this is the single biggest idea in how large models are served today, so it is worth slowing down for. + +In an ordinary model, every parameter is used for every token. In a mixture-of-experts model, each layer contains many small networks called **experts**, and a tiny component called a **router** decides which few of them each token should visit. Our model has **128 experts per layer** and the router picks **8** of them per token. + +So the model holds 235B parameters in memory, but only about 22B of them do any arithmetic for a given token. That is what "235B-A22B" means, and it is why this model runs far faster than its size suggests. You pay for the full 235B in memory and you pay for only 22B in speed. + +{{moe-expert-routing-animation}} + +This gives you a third way to split. Instead of slicing every expert into strips, you hand out whole experts: with 128 experts and 4 GPUs, each GPU keeps 32 of them intact. That is **expert parallelism**, and in vLLM you switch it on with `--enable-expert-parallel`. + +The trade is different from tensor parallelism. Nothing needs adding up at the end, but tokens have to travel to whichever GPU owns the expert they were routed to, and the answers travel back. It also has a fairness problem: the router does not promise to spread work evenly, so one GPU can end up with more popular experts and become the slow one holding everybody up. + +## Part 7: Every flag, explained + +Before the command, the vocabulary. Here is every flag we use and why it has the value it has. If you only remember one thing from this post, make it this table. + +| Flag | What it does | Why our value | +| --- | --- | --- | +| `--tensor-parallel-size 4` | How many GPUs to slice each layer across. Often shortened to `-tp`. | 236 GB of weights needs at least 3 cards of 95 GiB, and 4 divides the model's head counts cleanly. | +| `--pipeline-parallel-size 1` | How many groups to cut the layer stack into. Often `-pp`. | 1 means off. We test a version with 2 later. | +| `--enable-expert-parallel` | Hand out whole experts per GPU instead of slicing every expert. Mixture-of-experts models only. | Tested both ways, since this is exactly the choice a big MoE forces on you. | +| `--gpu-memory-utilization 0.90` | The fraction of each GPU's memory vLLM is allowed to claim, for weights plus KV cache plus working space. | 0.90 leaves a little headroom. Push it to 0.95 for more cache, but leave room or startup fails. | +| `--max-model-len 32768` | The longest single request, prompt plus reply, in tokens. | The model supports 262,144, but that would eat 47 GiB of cache for one user. 32,768 is a sane serving value. | +| `--max-num-seqs 32` | How many requests may be in flight at once. | Caps how much KV cache can be demanded simultaneously. Lower it if you see requests being preempted. | +| `--served-model-name qwen3-235b` | The name clients use in the API. | Otherwise clients must send the full checkpoint path. | +| `--port 8000` | Port for the OpenAI-compatible API. | Convention. | +| `--distributed-executor-backend mp` | How the GPU worker processes are managed: `mp` for plain Python multiprocessing, `ray` for a Ray cluster. | All 4 GPUs are in one machine, so `mp` is the simpler choice. `ray` is for multiple machines. | +| `--enforce-eager` | Skips building optimised CUDA graphs at startup. | We do **not** use it. It saves memory and starts faster, but generation is slower. Reach for it only if you are out of memory. | +| `--kv-cache-dtype fp8` | Stores the conversation cache at 8 bits instead of 16, roughly halving cache memory. | We left it at the default so our cache numbers are easy to check by hand. It is a good lever if you need more concurrency. | + +Two container flags matter just as much, and neither is a vLLM flag: + +| Docker flag | Why you need it | +| --- | --- | +| `--ipc=host` | The GPU workers are separate processes that pass data through shared memory. Docker's default 64 MB of shared memory is far too small, and leaving this out gives you a confusing hang at startup. | +| `--gpus '"device=1,4,5,6"'` | Hands specific GPUs to the container. The nested quoting is fussy but required. Inside the container they are renumbered 0 to 3. | + +## Part 8: The command, line by line + +Here is the whole thing. Every line is explained above, and we will walk the structure below it. + +```bash +docker run -d --name vllm-tp4 \ + --gpus '"device=1,4,5,6"' \ + --ipc=host \ + -p 8000:8000 \ + -v /root/.cache/huggingface:/root/.cache/huggingface \ + -e HF_HUB_OFFLINE=1 \ + -e HF_HOME=/root/.cache/huggingface \ + -e VLLM_USE_DEEP_GEMM=0 \ + vllm/vllm-openai:latest \ + Qwen/Qwen3-235B-A22B-Instruct-2507-FP8 \ + --served-model-name qwen3-235b \ + --tensor-parallel-size 4 \ + --gpu-memory-utilization 0.90 \ + --max-model-len 32768 \ + --max-num-seqs 32 \ + --port 8000 +``` + +Reading it top to bottom: + +- `docker run -d` starts the container in the background and prints its id. Drop the `-d` if you would rather watch the logs scroll past. +- `--name vllm-tp4` gives it a name so you can say `docker logs vllm-tp4` instead of copying an id. +- `-p 8000:8000` maps the container's port 8000 to the host's port 8000, so you can reach the API from outside. +- `-v /root/.cache/huggingface:/root/.cache/huggingface` shares your downloaded models with the container. Without it the container would download all 236 GB again. +- `-e HF_HUB_OFFLINE=1` tells the Hugging Face library not to phone home. It uses the local copy, which also means startup does not fail if the network is down. +- `vllm/vllm-openai:latest` is the image. Everything after it is passed to vLLM, because the image's entrypoint is already `vllm serve`. +- The first argument after the image is the model. Everything after that is a vLLM flag from the table above. +- `-e VLLM_USE_DEEP_GEMM=0` is here because without it this exact model would not start on these exact GPUs. It is not a general recommendation, and Part 12 explains the crash it avoids. If you are on different hardware, try without it first. + +One thing worth knowing about that entrypoint: because it is already `vllm serve`, running `docker run ... vllm/vllm-openai:latest python3 -c "..."` does **not** work the way you expect. Your Python gets handed to `vllm serve` as arguments and you get a confusing parse error. To run something else inside the image, override it: + +```bash +docker run --rm --gpus '"device=1,4"' --entrypoint python3 vllm/vllm-openai:latest -c " +import torch +print('GPUs visible:', torch.cuda.device_count()) +print('can GPU 0 talk to GPU 1 directly:', torch.cuda.can_device_access_peer(0, 1)) +" +``` + +That is a genuinely useful sanity check before you start a long model load, because it confirms the container can see the cards and that direct GPU-to-GPU access is available. + +## Part 9: How to read the startup log + +The startup log is the best teaching tool in the whole stack, and almost nobody reads it. Four lines tell you everything about whether your configuration is sensible. + +**Line one, how big the weights are per GPU.** You get one of these per worker: + +``` +(Worker_TP0) Model loading took X GiB +``` + +If you divide the full model size by your `--tensor-parallel-size` and get roughly this number, the split worked. If this number equals the **whole** model, something is wrong and you are not actually splitting. + +**Line two, what is left for conversations:** + +``` +Available KV cache memory: X GiB +``` + +If this is **negative**, your weights plus overhead already exceeded the budget, and vLLM will refuse to start. That is the clearest possible signal that you need more GPUs, a smaller number format, or a lower `--max-model-len`. + +**Line three, the cache in tokens:** + +``` +GPU KV cache size: N tokens +``` + +This is the total number of tokens the server can remember across all users at once. You can predict it: take the available cache memory, divide by the bytes-per-token figure we calculated in Part 2. + +**Line four, how many users that really means:** + +``` +Maximum concurrency for 32,768 tokens per request: N.NNx +``` + +This is the one to show your capacity planner. If it says `2.05x`, then two users can each have a full-length 32k conversation, and a third will have to wait or be preempted. It is simply the previous line divided by `--max-model-len`. + +## Part 10: The rules that limit how far you can split + +You cannot pick any number for `--tensor-parallel-size`. There are hard divisibility rules, and hitting them is a common early frustration. + +Because attention heads are handed out whole, **your tensor parallel size must divide the head counts**. Open the model's `config.json` and look: + +```json +{ + "num_hidden_layers": 94, + "hidden_size": 4096, + "num_attention_heads": 64, + "num_key_value_heads": 4, + "head_dim": 128, + "num_experts": 128, + "num_experts_per_tok": 8 +} +``` + +For our model: + +- `num_attention_heads` is 64, so 2, 4, 8, 16 all divide it cleanly. +- `num_key_value_heads` is **4**. This is the binding constraint. At `-tp 4` each GPU gets exactly one key/value head. At `-tp 8` there are not enough to go around, and vLLM has to duplicate them across GPUs, which wastes memory and gives you less benefit than you would hope. +- `num_experts` is 128, which divides evenly by 4 and by 8, so expert parallelism has more freedom than tensor parallelism here. + +That is the real lesson: **the KV head count, not the parameter count, usually decides how wide you can go.** It is the first thing we check on any new model, and it takes ten seconds. + +## Part 11: What we measured + +Once it was running, we compared all three ways of splitting the same model over the same 4 GPUs: tensor parallelism on its own, tensor parallelism plus expert parallelism, and pure pipeline parallelism. Same hardware, same flags otherwise, same benchmark. + +The benchmark is vLLM's own, 1024 tokens in and 256 tokens out per request, with `--ignore-eos` so every request generates exactly 256 tokens and the comparison is fair: + +```bash +docker exec vllm-tp4 vllm bench serve \ + --model Qwen/Qwen3-235B-A22B-Instruct-2507-FP8 \ + --served-model-name qwen3-235b \ + --base-url http://localhost:8000 \ + --dataset-name random --random-input-len 1024 --random-output-len 256 \ + --max-concurrency 1 --num-prompts 12 --seed 42 --ignore-eos +``` + +and then again with 32 requests in flight, which is the same command with two numbers changed: + +```bash + --max-concurrency 32 --num-prompts 128 +``` + +We ran both for every setup, because a single request at a time and 32 at a time behave completely differently, and a configuration that wins one can lose the other. + +### The memory side + +| | TP=4 | TP=4 plus EP | PP=4 | +| --- | --- | --- | --- | +| Weights per GPU | 55.19 GiB | 55.19 GiB | 55.70 GiB | +| KV cache per GPU | 27.85 GiB | 27.96 GiB | 26.84 GiB | +| Total KV cache | 621,392 tokens | **623,696 tokens** | 555,680 tokens | +| Max concurrency at 32k | 18.96x | **19.03x** | 16.96x | +| GPU memory used | 88,211 MiB on all 4 | 88,209 MiB on all 4 | 84,283 / 87,899 / 87,899 / 84,507 | + +Two things to pull out of that table. + +**Expert parallelism did not save memory.** It moved 0.37% of extra room into the cache, which is noise. If you were hoping expert parallelism would let you fit a model that otherwise does not fit, this is your warning that it will not. + +**Pipeline parallelism cost us 11.8% of the cache**, dropping from 621,392 tokens to 555,680, because a pipeline needs extra buffers for the activations travelling between stages, and that comes straight out of your conversation capacity. + +Look at the last row too. Under tensor parallelism all four cards sat at **exactly 88,211 MiB**, the same number on every one of them. Under pipeline parallelism they ranged from 84,283 to 87,899 MiB, about 3.6 GB apart, because a layer split cannot be perfectly even when 94 layers go over 4 GPUs and the ends of the model are not symmetric: the first stage carries the token embedding and the last carries the output head. That evenness check is the quickest sanity test you have that a tensor-parallel split is behaving. + +### The speed side + +| Measurement | TP=4 | TP=4 plus EP | PP=4 | Winner | +| --- | --- | --- | --- | --- | +| Median time per token, 1 request | **17.14 ms** | 18.83 ms | 21.19 ms | TP | +| Output tokens/sec, 32 requests | **503.68** | 470.93 | 296.48 | TP, by 70% over PP | +| Median time to first token, 32 requests | 3,233 ms | 3,705 ms | **2,735 ms** | PP, by 15% | +| Benchmark duration, 32 requests | **65.06 s** | 69.58 s | 110.52 s | TP | + +Tensor parallelism won nearly everything, and the size of one gap deserves attention: at 32 concurrent requests it produced **70% more tokens per second than pipeline parallelism**. That is not a rounding error, that is a different class of performance, and it lines up exactly with the theory from Part 4. Tensor parallelism has all four GPUs working on every token. Pipeline parallelism has each GPU working on a different request's stage, and with only 32 requests spread over 4 stages there is not enough in flight to keep everyone busy, so cards sit idle waiting for their turn. Its median time per token was 24% worse for the same reason. + +**Pipeline parallelism did win one thing, and it is the one theory predicts:** time to first token, by 15%. Processing your 1024-token prompt is where tensor parallelism's chatter gets expensive, because each of those 188 all-reduces is carrying the whole prompt's worth of data rather than a single token's. Pipeline parallelism just hands one activation tensor to the next stage and skips all of it. If your users judge you on how fast the first word appears, that is a real and measurable advantage. + +That is not a knock on expert parallelism, and it is important not to over-read it. Expert parallelism exists to solve a problem we do not have here: models so large that even a tensor-parallel split cannot hold all the experts, and clusters big enough that duplicating experts everywhere would be wasteful. With 4 GPUs and a model that already fits, we are asking it to do a job it was not designed for, and paying an extra network hop per token for nothing. On a 32 or 64 GPU deployment of a trillion-parameter model the answer would very likely flip. + +### The number we are throwing away, and why + +Being straight about this because it is a good lesson in reading your own benchmarks. The very first expert-parallel run at one-request-at-a-time reported **28.71 output tokens per second**, which would have made expert parallelism look catastrophic. It was not real. Look at the two TTFT figures from that run: + +``` +Mean TTFT (ms): 3987.38 +Median TTFT (ms): 265.56 +``` + +A mean fifteen times the median means one request behaved completely differently from the other eleven. One request stalled for about 45 seconds, almost certainly a one-off kernel compilation on the first pass through a code path, and that single stall stretched the whole benchmark from 63 seconds to 107 seconds. Since throughput is just tokens divided by wall-clock, one stall wrecked the headline number. + +This is why the table above uses **median time per token** as the decode measurement rather than aggregate throughput. Median per-token latency does not care that one request had a bad start. + +One more benchmarking trap while we are here. When we re-ran that same benchmark on the warm server, time to first token dropped from 265 ms to **61 ms**, which looks like a wonderful improvement and is actually meaningless: vLLM caches prompt prefixes by default, and we had just sent it those exact prompts with the same `--seed 42`. If you are comparing configurations, either vary the seed or turn prefix caching off, otherwise your second measurement is mostly measuring your cache. + +### What we would actually run + +For a 235B MoE on 4 GPUs with no NVLink between them, we would use plain `--tensor-parallel-size 4` and leave both of the others off. It was faster nearly everywhere, it gives the most conversation capacity, it splits memory perfectly evenly, and it is one less thing to reason about. + +We would reach for the other two in specific situations, not as general upgrades: + +- **Pipeline parallelism** if time to first token is the metric you are judged on, or if you are spanning multiple machines where the network between them is genuinely slow. It was 15% better at first-token latency and it barely uses the interconnect. +- **Expert parallelism** when the model is so large that even a tensor-parallel split cannot hold all the experts, which is a real problem at trillion-parameter scale and simply is not our problem at 235B on 4 cards. Here it cost 7% and returned nothing. + + +## Part 12: Errors you will actually hit + +Every one of these is a real message we collected while doing this, not a hypothetical. + +### "must be divisible by tensor parallel size" + +We asked for 3 GPUs, which is a perfectly reasonable-sounding thing to want, and got: + +``` +pydantic_core._pydantic_core.ValidationError: 1 validation error for VllmConfig + Value error, Total number of attention heads (64) must be divisible by tensor + parallel size (3). +``` + +**What it means:** the rule from Part 10. 64 heads cannot be shared out evenly among 3 GPUs. Good news, it fails in about a second, before loading a single byte of weights. + +**The fix:** pick a `--tensor-parallel-size` that divides your head count. Powers of two are the safe habit. + +### "Failed to load model - not enough GPU memory" + +Then we tried 2 GPUs, which puts about 110 GiB of weights on a 95 GiB card. It got most of the way through loading and then died: + +``` +ERROR [gpu_model_runner.py:5403] Failed to load model - not enough GPU memory. +Try lowering --gpu-memory-utilization to free memory for weights, increasing +--tensor-parallel-size, or using --quantization. +(original error: CUDA out of memory. Tried to allocate 768.00 MiB. GPU 0 has a +total capacity of 95.01 GiB of which 438.31 MiB is free. Including non-PyTorch +memory, this process has 94.57 GiB memory in use.) +``` + +**What it means:** exactly what it says. The weights for half this model do not fit on one of these cards. Note the useful detail in there, `438.31 MiB is free` out of `95.01 GiB`, so it filled the card almost exactly and then had nowhere to put the next 768 MiB chunk. + +**The fix:** vLLM lists the three real options itself, and for our case only one of them helps. Lowering `--gpu-memory-utilization` would make things worse, not better, because it reduces the space available for weights. Quantizing further would work but changes the model. So the answer is more GPUs, which is the whole point of this post. + +Worth knowing: this one is slow to fail, because it has to read and place most of the weights before it runs out. Budget several minutes, unlike the divisibility error which fails instantly. + +### "Unknown SF transformation", the one that cost us the most time + +This is the error we did not see coming, and it is worth the whole section. With 4 GPUs and everything sized correctly, all four workers died during startup: + +``` +RuntimeError: Assertion error (/workspace/.deps/deepgemm-src/csrc/apis/layout.hpp:60): +Unknown SF transformation +``` + +**What it means:** this model stores its FP8 weights in blocks, with a separate scale factor per 128x128 block, which you can see in its config as `"weight_block_size": [128, 128]`. vLLM hands that kind of matrix multiplication to a library called DeepGEMM, and DeepGEMM did not know how to lay out those scale factors ("SF" is scale factor) on our particular GPU. The RTX PRO 6000 is Blackwell, but it reports as `sm_120`, which is not the same silicon target as the data-centre Blackwell parts that DeepGEMM is usually exercised on. + +Notice how unhelpful the message is if you do not know that background. Nothing in it mentions FP8, quantization, or your GPU. + +**The fix**, which is one environment variable: + +```bash +docker run -d ... -e VLLM_USE_DEEP_GEMM=0 ... vllm/vllm-openai:latest ... +``` + +That tells vLLM to use its own FP8 kernels instead of DeepGEMM. Startup then went through cleanly. There is a performance cost to giving up a specialised kernel, so on hardware where DeepGEMM works you would leave it on. + +**The general lesson:** a quantized model is a contract between the checkpoint's format and a kernel that understands it. When a big quantized model fails to start on hardware that clearly has enough memory, suspect the kernel and the number format before you suspect your parallelism settings. + +### A confusing parse error when you try to run something else in the container + +``` +vllm serve: error: argument --compilation-config/-cc: Invalid JSON: expected value at line 2 +``` + +**What it means:** you ran `docker run ... vllm/vllm-openai:latest python3 -c "..."`, but the image's entrypoint is already `vllm serve`, so your Python source got handed to vLLM as a command-line argument. + +**The fix:** `--entrypoint python3`, as shown in Part 8. + +### "No available shared memory broadcast block found in 60 seconds" + +**What it means:** usually nothing. It shows up while vLLM is busy compiling or capturing CUDA graphs and the worker processes have not checked in for a minute. If it repeats forever and startup never finishes, then you probably forgot `--ipc=host` and the workers cannot pass data to each other through shared memory. + +**The fix:** add `--ipc=host`. If you already have it, wait a bit longer, because CUDA graph capture on a big model is genuinely slow. + + +## Wrapping up + +If you take five things away from this, let them be these. + +**One.** Inference is two jobs, not one. Prefill reads your whole prompt at once and is limited by compute; decode writes one token at a time and is limited by memory bandwidth. Every confusing multi-GPU result in this post traces back to that split, so when a change helps one metric and hurts the other, this is why. + +**Two.** Work out the memory on paper first. Parameters times bytes-per-parameter gives you the weights, and then remember that the weights are only one of three things that must fit, alongside the conversation cache and the working space. A model whose weights just barely fit is a model that cannot serve anybody. + +**Three.** "Splitting across GPUs" is three different things. Tensor parallelism slices every layer and makes all your GPUs work on the same token, at the cost of constant chatter. Pipeline parallelism cuts the layer stack into blocks and barely communicates, at the cost of GPUs waiting their turn. Expert parallelism only exists for mixture-of-experts models and hands out whole experts. You can combine them, and for big models you usually do. + +**Four.** Read the startup log. `Model loading took`, `Available KV cache memory`, `GPU KV cache size` and `Maximum concurrency` tell you, in four lines, whether your setup is sane and how many users it can actually hold. A negative cache number is the clearest error message in the whole stack. + +**Five.** Check `num_key_value_heads` in `config.json` before you plan your hardware. It, not the parameter count, is usually what limits how many GPUs you can split across cleanly. + +One last practical warning, because it cost us more than any GPU problem did. **Check your disk before you download.** A quarter of a terabyte of model weights on a shared machine is not just a storage question, it is a question about everything else living on that disk. Ours was a Kubernetes node, free space crossed the kubelet's eviction threshold, and it evicted the platform's own pods and garbage-collected locally-built images that no registry could replace. `df -h` first, and leave real headroom. + +Try it on whatever you have. Two GPUs are enough to see every concept in this post in action, and the log lines mean the same thing whether you are running 4 GPUs or 40. If you hit something we did not cover, tell us and we will add it. + +## Credits and references + +- The tensor parallel scheme is from **Megatron-LM: Training Multi-Billion Parameter Language Models Using Model Parallelism** by Mohammad Shoeybi, Mostofa Patwary, Raul Puri, Patrick LeGresley, Jared Casper and Bryan Catanzaro: [arxiv.org/abs/1909.08053](https://arxiv.org/abs/1909.08053) +- vLLM parallelism and scaling guide: [docs.vllm.ai/en/latest/serving/parallelism_scaling.html](https://docs.vllm.ai/en/latest/serving/parallelism_scaling.html) +- vLLM memory and optimization docs: [conserving_memory](https://docs.vllm.ai/en/latest/configuration/conserving_memory.html) and [optimization](https://docs.vllm.ai/en/latest/configuration/optimization.html) +- Model card and config: [huggingface.co/Qwen/Qwen3-235B-A22B-Instruct-2507-FP8](https://huggingface.co/Qwen/Qwen3-235B-A22B-Instruct-2507-FP8) +- Thanks to the vLLM maintainers, whose startup logging is the best free lesson in distributed inference available anywhere. + +--- + # The Local LLM Glossary: Every Term, Flag, and Number in Plain English - Canonical: https://blog.kubesimplify.com/local-llm-glossary diff --git a/public/llms.txt b/public/llms.txt index 6eae55e4c..b3ca302f7 100644 --- a/public/llms.txt +++ b/public/llms.txt @@ -4,7 +4,7 @@ ## About -Kubesimplify is a community-driven publication on cloud-native technologies, with 198 in-depth technical articles by 62 practitioner authors. We cover Kubernetes (kubelet internals, scheduling, networking, operators), container runtimes (containerd, CRI-O, Docker), GitOps (Argo CD, Flux), service meshes, observability, AI/ML infrastructure on Kubernetes, GPU workloads, platform engineering, and the broader CNCF ecosystem. +Kubesimplify is a community-driven publication on cloud-native technologies, with 199 in-depth technical articles by 62 practitioner authors. We cover Kubernetes (kubelet internals, scheduling, networking, operators), container runtimes (containerd, CRI-O, Docker), GitOps (Argo CD, Flux), service meshes, observability, AI/ML infrastructure on Kubernetes, GPU workloads, platform engineering, and the broader CNCF ecosystem. Authoritative, practitioner-written, citation-friendly. Articles include code examples, diagrams, and references. @@ -34,8 +34,9 @@ Authoritative, practitioner-written, citation-friendly. Articles include code ex - Cloud Native Security: https://blog.kubesimplify.com/hub/security (network policies, Falco, Kyverno, SLSA supply-chain) - Linux Fundamentals: https://blog.kubesimplify.com/hub/linux (shell, sysadmin, networking primitives) -## Recent posts (most recent 30 of 198) +## Recent posts (most recent 30 of 199) +- [Running a big LLM across multiple GPUs with vLLM](https://blog.kubesimplify.com/running-a-big-llm-across-multiple-gpus-with-vllm) (2026-08-18). A plain-English guide to serving a model that is too big for one GPU: how tensor, pipeline, and expert parallelism split it up, what every vLLM flag does, and measured numbers from a 235B model on four RTX PRO 6000 cards. - [The Local LLM Glossary: Every Term, Flag, and Number in Plain English](https://blog.kubesimplify.com/local-llm-glossary) (2026-08-18). Plain-English definitions for every term you hit in local LLM posts: prefill and decode, tokens per second, FP8 and NVFP4, Q4_K_M, KV cache, YaRN, Gated DeltaNet, speculative decoding, and every vLLM, llama.cpp, and Ollama flag worth knowing. - [Running Qwen3.8-27B on DGX Spark](https://blog.kubesimplify.com/qwen3-8-27b-on-dgx-spark) (2026-08-17). Qwen3.8-27B on DGX Spark with llama.cpp, Ollama, vLLM, and SGLang: the recipes, the tokens per second I measured, MTP speculative decoding, and the sharp edges I hit along the way. - [I Ran an AI SRE Copilot on My Own Hardware. Here Is What It Actually Does.](https://blog.kubesimplify.com/nudgebee-ai-sre-copilot-hands-on) (2026-08-17). Running NudgeBee v1.4.0 end to end - a self-hosted AIOps platform behind AI-SRE, AI-FinOps, AI-K8sOps, and agentic automation - on a Mac, a kiac cluster, and a DGX Spark. @@ -65,7 +66,6 @@ Authoritative, practitioner-written, citation-friendly. Articles include code ex - [Day 5: Docker Compose - How Docker Actually Gets Used](https://blog.kubesimplify.com/day-5-docker-compose-how-docker-actually-gets-used) (2026-04-28) - [What Actually Happens When kube-scheduler Picks a Node (13 Stages Inside Kubernetes)](https://blog.kubesimplify.com/kube-scheduler-deep-dive) (2026-04-28). How kube-scheduler picks a node: 13 framework stages, 14 Filter plugins, 9 Score plugins, live preemption demo. - [Day 4: Breaking Isolation on Purpose - Volumes, Networks, and the Real World](https://blog.kubesimplify.com/day-4-breaking-isolation-on-purpose-volumes-networks-and-the-real-world) (2026-04-27) -- [Day 3: Stop Writing Dockerfiles From Scratch](https://blog.kubesimplify.com/day-3-stop-writing-dockerfiles-from-scratch) (2026-04-24). Stop writing Dockerfiles from scratch. A Docker Captain walks through docker init, layer caching, multi-stage builds, and docker debug for 2026. ## Topics covered (auto-derived from tags) @@ -76,8 +76,8 @@ Authoritative, practitioner-written, citation-friendly. Articles include code ex - linux (19 articles): https://blog.kubesimplify.com/tag/linux - containers (17 articles): https://blog.kubesimplify.com/tag/containers - cloud (16 articles): https://blog.kubesimplify.com/tag/cloud -- nvidia (14 articles): https://blog.kubesimplify.com/tag/nvidia -- llm (12 articles): https://blog.kubesimplify.com/tag/llm +- nvidia (15 articles): https://blog.kubesimplify.com/tag/nvidia +- llm (13 articles): https://blog.kubesimplify.com/tag/llm - aws (12 articles): https://blog.kubesimplify.com/tag/aws - cloud-native (11 articles): https://blog.kubesimplify.com/tag/cloud-native - security (11 articles): https://blog.kubesimplify.com/tag/security @@ -85,15 +85,15 @@ Authoritative, practitioner-written, citation-friendly. Articles include code ex - go (9 articles): https://blog.kubesimplify.com/tag/go - git (9 articles): https://blog.kubesimplify.com/tag/git - linux-for-beginners (9 articles): https://blog.kubesimplify.com/tag/linux-for-beginners +- platform-engineering (8 articles): https://blog.kubesimplify.com/tag/platform-engineering - local-ai (8 articles): https://blog.kubesimplify.com/tag/local-ai - github (8 articles): https://blog.kubesimplify.com/tag/github - terraform (8 articles): https://blog.kubesimplify.com/tag/terraform - ai (7 articles): https://blog.kubesimplify.com/tag/ai -- platform-engineering (7 articles): https://blog.kubesimplify.com/tag/platform-engineering - docker-images (7 articles): https://blog.kubesimplify.com/tag/docker-images - kubesimplify (7 articles): https://blog.kubesimplify.com/tag/kubesimplify - linux-basics (7 articles): https://blog.kubesimplify.com/tag/linux-basics -- ollama (6 articles): https://blog.kubesimplify.com/tag/ollama +- gpu (6 articles): https://blog.kubesimplify.com/tag/gpu ## Top contributors @@ -102,8 +102,8 @@ Authoritative, practitioner-written, citation-friendly. Articles include code ex - [Kunal Verma](https://blog.kubesimplify.com/author/kunal-verma) (12 posts) - [Dipankar Das](https://blog.kubesimplify.com/author/dipankar-das) (9 posts) - [Anurag Kumar](https://blog.kubesimplify.com/author/anurag-kumar) (8 posts) +- [Shubham Katara](https://blog.kubesimplify.com/author/shubham-katara) (6 posts) - [sysxplore](https://blog.kubesimplify.com/author/sysxplore) (6 posts) -- [Shubham Katara](https://blog.kubesimplify.com/author/shubham-katara) (5 posts) - [Arnav Barman](https://blog.kubesimplify.com/author/arnav-barman) (5 posts) - [Srinivas Karnati](https://blog.kubesimplify.com/author/srinivas-karnati) (4 posts) - [Barkatul Mujauddin](https://blog.kubesimplify.com/author/barkatul-mujauddin) (4 posts) diff --git a/public/rss.xml b/public/rss.xml index 2300c9b4a..c59f965e1 100644 --- a/public/rss.xml +++ b/public/rss.xml @@ -6,8 +6,16 @@ Deep dives on Kubernetes, AI infrastructure, GitOps, and the cloud-native stack, written by practitioners. en-us - Tue, 18 Aug 2026 09:00:00 GMT + Tue, 18 Aug 2026 10:00:00 GMT Kubesimplify static blog + + Running a big LLM across multiple GPUs with vLLM + https://blog.kubesimplify.com/running-a-big-llm-across-multiple-gpus-with-vllm + https://blog.kubesimplify.com/running-a-big-llm-across-multiple-gpus-with-vllm + Tue, 18 Aug 2026 10:00:00 GMT + A plain-English guide to serving a model that is too big for one GPU: how tensor, pipeline, and expert parallelism split it up, what every vLLM flag does, and measured numbers from a 235B model on four RTX PRO 6000 cards. + vllmgpunvidiallmplatform-engineering + The Local LLM Glossary: Every Term, Flag, and Number in Plain English https://blog.kubesimplify.com/local-llm-glossary diff --git a/scripts/gen-local-llm-glossary-cover.mjs b/scripts/gen-local-llm-glossary-cover.mjs index 803b42205..45c0ec60a 100644 --- a/scripts/gen-local-llm-glossary-cover.mjs +++ b/scripts/gen-local-llm-glossary-cover.mjs @@ -1,5 +1,5 @@ // Excalidraw-style cover for the local LLM glossary post. -// Sketch helpers shared with scripts/gen-two-gpu-vllm-cover.mjs. +// Sketch helpers shared with scripts/gen-multi-gpu-vllm-cover.mjs. import { mkdirSync, writeFileSync } from 'node:fs'; import { join } from 'node:path'; diff --git a/scripts/gen-two-gpu-vllm-cover.mjs b/scripts/gen-multi-gpu-vllm-cover.mjs similarity index 60% rename from scripts/gen-two-gpu-vllm-cover.mjs rename to scripts/gen-multi-gpu-vllm-cover.mjs index 5b95a70e2..6c1be76af 100644 --- a/scripts/gen-two-gpu-vllm-cover.mjs +++ b/scripts/gen-multi-gpu-vllm-cover.mjs @@ -1,4 +1,4 @@ -// Excalidraw-style cover for the two-GPU vLLM article. +// Excalidraw-style cover for the multi-GPU vLLM article. // Sketch helpers shared with scripts/gen-hami-diagrams.mjs. import { mkdirSync, writeFileSync } from 'node:fs'; import { join } from 'node:path'; @@ -144,96 +144,85 @@ const W = 1200; const H = 630; const sketch = new Sketch(W, H, '#fdfdfb'); -// ── heading ────────────────────────────────────────────── -sketch.text(64, 84, 'One LLM, two GPUs', { size: 52, weight: 800, anchor: 'start' }); -sketch.text(64, 122, 'tensor parallelism splits every layer, not the stack', { - size: 23, +sketch.text(64, 82, 'One big model, four GPUs', { size: 50, weight: 800, anchor: 'start' }); +sketch.text(64, 119, 'how a 235B model is cut up so it fits, and what that costs', { + size: 22, color: COLORS.muted, anchor: 'start', }); -sketch.line(64, 142, 700, 142, { stroke: COLORS.muted, strokeWidth: 1.6, dashed: true }); +sketch.line(64, 139, 760, 139, { stroke: COLORS.muted, strokeWidth: 1.6, dashed: true }); -// ── left: one card fails ───────────────────────────────── -sketch.text(64, 190, 'ONE 45 GiB CARD', { size: 19, weight: 800, anchor: 'start', color: COLORS.red.stroke }); +// ── left: the model does not fit on one card ────────────── +sketch.text(64, 186, 'ONE CARD', { size: 18, weight: 800, anchor: 'start', color: COLORS.red.stroke }); -const boxY = 210; -sketch.rect(64, boxY, 300, 150, { stroke: COLORS.gray.stroke, fill: '#ffffff', hachure: false, dashed: true }); -sketch.text(214, boxY + 34, 'budget 40.47 GiB', { size: 17, color: COLORS.muted }); +const bY = 206; +sketch.rect(64, bY, 210, 132, { stroke: COLORS.gray.stroke, fill: '#ffffff', hachure: false, dashed: true }); +sketch.text(169, bY + 30, '95 GiB', { size: 19, color: COLORS.muted }); +sketch.text(169, bY + 54, 'usable', { size: 15, color: COLORS.muted }); -// the weights bar overflowing the box -sketch.rect(80, boxY + 52, 330, 62, { stroke: COLORS.red.stroke, fill: COLORS.red.fill }); -sketch.text(200, boxY + 80, 'weights 61.03 GiB', { size: 20, weight: 800, color: COLORS.red.stroke }); -sketch.text(200, boxY + 103, 'does not fit', { size: 16, color: COLORS.muted }); +// overflowing weights bar +sketch.rect(78, bY + 72, 330, 46, { stroke: COLORS.red.stroke, fill: COLORS.red.fill }); +sketch.text(200, bY + 95, '236 GB of weights', { size: 19, weight: 800, color: COLORS.red.stroke }); -sketch.text(64, boxY + 182, 'Available KV cache memory:', { size: 17, anchor: 'start', color: COLORS.muted }); -sketch.text(64, boxY + 208, '-24.42 GiB', { size: 30, weight: 800, anchor: 'start', color: COLORS.red.stroke }); +sketch.text(64, bY + 164, '2.3x too big', { size: 26, weight: 800, anchor: 'start', color: COLORS.red.stroke }); +sketch.text(64, bY + 192, 'no flag fixes this', { size: 16, anchor: 'start', color: COLORS.muted }); -// ── middle divider ─────────────────────────────────────── -sketch.line(470, 190, 470, 470, { stroke: COLORS.muted, strokeWidth: 1.6, dashed: true }); -sketch.text(470, 340, 'vs', { size: 26, weight: 800, color: COLORS.muted }); +// ── divider ─────────────────────────────────────────────── +sketch.line(452, 186, 452, 452, { stroke: COLORS.muted, strokeWidth: 1.6, dashed: true }); -// ── right: two cards work ──────────────────────────────── -sketch.text(560, 190, 'TWO CARDS, --tensor-parallel-size 2', { - size: 19, +// ── right: four cards, each holds a quarter ─────────────── +sketch.text(516, 186, 'FOUR CARDS, --tensor-parallel-size 4', { + size: 18, weight: 800, anchor: 'start', color: COLORS.teal.stroke, }); -const cardW = 246; -const cardGap = 84; -const gpuY = 210; -[0, 1].forEach((gpu) => { - const x = 560 + gpu * (cardW + cardGap); - const accent = gpu === 0 ? COLORS.blue : COLORS.green; - sketch.rect(x, gpuY, cardW, 150, { stroke: accent.stroke, fill: accent.fill }); - sketch.text(x + cardW / 2, gpuY + 34, `GPU ${gpu}`, { size: 22, weight: 800, color: accent.stroke }); - sketch.text(x + cardW / 2, gpuY + 66, 'weights 30.59 GiB', { size: 18, weight: 700 }); - sketch.text(x + cardW / 2, gpuY + 94, 'KV cache 8.22 GiB', { size: 17, color: COLORS.muted }); - sketch.text(x + cardW / 2, gpuY + 124, gpu === 0 ? 'heads 0-31' : 'heads 32-63', { - size: 16, - color: COLORS.muted, - }); +const cw = 145; +const gap = 10; +const gY = 206; +const palette = [COLORS.blue, COLORS.green, COLORS.violet, COLORS.orange]; +[0, 1, 2, 3].forEach((gpu) => { + const x = 516 + gpu * (cw + gap); + const c = palette[gpu]; + sketch.rect(x, gY, cw, 132, { stroke: c.stroke, fill: c.fill }); + sketch.text(x + cw / 2, gY + 30, `GPU ${gpu}`, { size: 20, weight: 800, color: c.stroke }); + sketch.text(x + cw / 2, gY + 60, '59 GB', { size: 18, weight: 700 }); + sketch.text(x + cw / 2, gY + 84, 'weights', { size: 14, color: COLORS.muted }); + sketch.text(x + cw / 2, gY + 112, '16 of 64 heads', { size: 13, color: COLORS.muted }); }); -// all-reduce link between the two cards -const gapL = 560 + cardW + 10; -const gapR = 560 + cardW + cardGap - 10; -const gapMid = (gapL + gapR) / 2; -const linkY = gpuY + 66; -sketch.arrow(gapL, linkY, gapR, linkY, { stroke: COLORS.violet.stroke }); -sketch.arrow(gapR, linkY + 24, gapL, linkY + 24, { stroke: COLORS.violet.stroke }); -sketch.text(gapMid, gapMid && linkY + 60, 'all-', { size: 15, weight: 700, color: COLORS.violet.stroke }); -sketch.text(gapMid, linkY + 80, 'reduce', { size: 15, weight: 700, color: COLORS.violet.stroke }); - -sketch.text(560, gpuY + 182, 'GPU KV cache size:', { size: 17, anchor: 'start', color: COLORS.muted }); -sketch.text(560, gpuY + 208, '67,296 tokens', { - size: 30, +// all-reduce arrows under the row of cards +const arrowY = gY + 154; +sketch.line(516 + 40, arrowY, 516 + 3 * (cw + gap) + cw - 40, arrowY, { + stroke: COLORS.violet.stroke, + dashed: true, +}); +sketch.text(516 + (3 * (cw + gap) + cw) / 2, arrowY + 30, '188 all-reduces per token', { + size: 18, weight: 800, - anchor: 'start', - color: COLORS.teal.stroke, + color: COLORS.violet.stroke, }); -sketch.text(830, gpuY + 208, '2.05x concurrency', { size: 18, anchor: 'start', color: COLORS.muted }); -// ── footer strip ───────────────────────────────────────── -sketch.line(64, 520, W - 64, 520, { stroke: COLORS.muted, strokeWidth: 1.6 }); -sketch.text(64, 556, 'QWEN3-32B BF16 - 61.02 GiB CHECKPOINT - vLLM 0.27.1', { - size: 19, +// ── footer ──────────────────────────────────────────────── +sketch.line(64, 516, W - 64, 516, { stroke: COLORS.muted, strokeWidth: 1.6 }); +sketch.text(64, 552, 'QWEN3-235B-A22B FP8 - 128 EXPERTS, 8 PER TOKEN - vLLM 0.27.1', { + size: 18, weight: 800, anchor: 'start', color: COLORS.ink, }); -sketch.text(64, 586, '2 x 128 all-reduces per token, no NVLink, measured not estimated', { - size: 17, +sketch.text(64, 582, 'tensor, pipeline and expert parallelism explained in plain english', { + size: 16, anchor: 'start', color: COLORS.muted, }); -sketch.text(W - 64, 586, 'blog.kubesimplify.com', { - size: 17, +sketch.text(W - 64, 582, 'blog.kubesimplify.com', { + size: 16, weight: 700, anchor: 'end', color: COLORS.muted, }); sketch.save(join(output, 'cover.svg')); -console.log(`Wrote two-GPU vLLM cover to ${output}`); +console.log(`Wrote multi-GPU vLLM cover to ${output}`); diff --git a/vercel.json b/vercel.json index eaa7bd155..2e0044f80 100644 --- a/vercel.json +++ b/vercel.json @@ -906,6 +906,11 @@ "destination": "https://blog.kubesimplify.com/ready-for-wasm-day-2023", "permanent": true }, + { + "source": "/blog/running-a-big-llm-across-multiple-gpus-with-vllm", + "destination": "https://blog.kubesimplify.com/running-a-big-llm-across-multiple-gpus-with-vllm", + "permanent": true + }, { "source": "/blog/sharing-gpus-in-kubernetes-with-hami", "destination": "https://blog.kubesimplify.com/sharing-gpus-in-kubernetes-with-hami", @@ -2916,6 +2921,17 @@ } ] }, + { + "source": "/running-a-big-llm-across-multiple-gpus-with-vllm", + "destination": "https://blog.kubesimplify.com/running-a-big-llm-across-multiple-gpus-with-vllm", + "permanent": true, + "has": [ + { + "type": "host", + "value": "kubesimplify.com" + } + ] + }, { "source": "/sharing-gpus-in-kubernetes-with-hami", "destination": "https://blog.kubesimplify.com/sharing-gpus-in-kubernetes-with-hami", From a6ed090cd5e809e0289237618f67aa0efa9b259f Mon Sep 17 00:00:00 2001 From: Saiyam Pathak Date: Tue, 18 Aug 2026 17:15:29 +0530 Subject: [PATCH 4/8] Answer the shard question: fixed at upload, and why 5-10GB is the norm A reader asked whether the shard count can be changed at download time and whether there is a standard. Adds two subsections to Part 1: shards are fixed by the publisher and recorded in model.safetensors.index.json, re-sharding is a local save_pretrained(max_shard_size=...) operation, and the Hub's <200GB recommendation plus 500GB hard limit explain why publishers land around 5-10GB. This model uses a 10GB cap: 23 shards of exactly 10.00 GB plus a 6.45 GB remainder. Also notes that shard count does not affect serving, because safetensors are memory-mapped. Signed-off-by: Saiyam Pathak --- ...-big-llm-across-multiple-gpus-with-vllm.md | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/content/blog/running-a-big-llm-across-multiple-gpus-with-vllm.md b/content/blog/running-a-big-llm-across-multiple-gpus-with-vllm.md index f324c45ec..ce003755c 100644 --- a/content/blog/running-a-big-llm-across-multiple-gpus-with-vllm.md +++ b/content/blog/running-a-big-llm-across-multiple-gpus-with-vllm.md @@ -98,6 +98,38 @@ A few things worth understanding here: Remember those block scales. They are the reason for the most annoying crash we hit, back in Part 12. +### Can you change the number of shards? + +Worth answering because it is a natural question: no, not at download time. The shard layout is decided by whoever uploaded the model and is baked into `model.safetensors.index.json`. `hf download` just fetches the files that exist in the repo, so there is no flag to ask for more or fewer of them. + +You can only re-shard by loading the model yourself and saving it again, which is a local operation on your own copy: + +```python +from transformers import AutoModelForCausalLM + +model = AutoModelForCausalLM.from_pretrained("some/model") +model.save_pretrained("./resharded", max_shard_size="5GB") +``` + +`max_shard_size` is the knob, and in current `transformers` it defaults to `"50GB"`. One caveat straight from its docs, because it surprises people: "If a single weight of the model is bigger than `max_shard_size`, it will be in its own checkpoint shard which will be bigger than `max_shard_size`." A giant embedding matrix can therefore blow past whatever cap you set. + +For a 235B model this is almost never worth doing, since you would have to load the whole thing to write it back out. Just take the shards you are given. + +### Is there a standard shard size? + +Not a formal one, but there are firm conventions and real limits. + +**The conventions** are the naming pattern (`model-00001-of-00024.safetensors`) and the index file next to it. Both are produced automatically by the saving code, which is why nearly every model on the Hub looks the same. + +**The limits** come from the Hub. Its guidance is to split large files "into chunks <200GB each", and it states that "500GB is the hard limit for a single file size". The reasoning is practical and worth knowing, because it is the same reasoning that should shape your own thinking about big files: + +- A failed download of a smaller file resumes cheaply. A failed download of one enormous file can mean starting over. +- Files are served through a CDN, and per the Hub's docs "huge files are not cached by this service leading to a slower download speed". So one 236 GB file would genuinely download slower than 24 pieces of it. + +**What publishers actually pick** sits far below those limits. Our model uses a 10 GB cap: 23 shards of exactly 10.00 GB and a 24th holding the remaining 6.45 GB. Somewhere in the 5 to 10 GB range is the common choice across the Hub. + +**Does any of this affect serving?** Essentially no. Shard count does not change how much GPU memory you need or how fast the model runs, because the weights are identical either way and safetensors are memory-mapped, so the loader reads the byte ranges it wants regardless of how they are grouped into files. Shard size is a distribution question, not an inference question. Where it does matter is download throughput and resumability, which is exactly why the convention landed where it did. + ### Where it gets stored By default everything lands under `~/.cache/huggingface/hub`, in a layout that looks strange the first time you see it: From 81bd69cf9c60c09eb9dfc2e21f0a083950f05d01 Mon Sep 17 00:00:00 2001 From: Saiyam Pathak Date: Tue, 18 Aug 2026 17:15:48 +0530 Subject: [PATCH 5/8] Regenerate feeds for the shard section Signed-off-by: Saiyam Pathak --- public/atom.xml | 2 +- public/llms-full.txt | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/public/atom.xml b/public/atom.xml index 63892a840..bfce4fca5 100644 --- a/public/atom.xml +++ b/public/atom.xml @@ -5,7 +5,7 @@ https://blog.kubesimplify.com/ - 2026-08-18T11:33:53.748Z + 2026-08-18T11:45:29.744Z Kubesimplify hello@kubesimplify.com diff --git a/public/llms-full.txt b/public/llms-full.txt index a3207800f..150745f31 100644 --- a/public/llms-full.txt +++ b/public/llms-full.txt @@ -99,6 +99,38 @@ A few things worth understanding here: Remember those block scales. They are the reason for the most annoying crash we hit, back in Part 12. +### Can you change the number of shards? + +Worth answering because it is a natural question: no, not at download time. The shard layout is decided by whoever uploaded the model and is baked into `model.safetensors.index.json`. `hf download` just fetches the files that exist in the repo, so there is no flag to ask for more or fewer of them. + +You can only re-shard by loading the model yourself and saving it again, which is a local operation on your own copy: + +```python +from transformers import AutoModelForCausalLM + +model = AutoModelForCausalLM.from_pretrained("some/model") +model.save_pretrained("./resharded", max_shard_size="5GB") +``` + +`max_shard_size` is the knob, and in current `transformers` it defaults to `"50GB"`. One caveat straight from its docs, because it surprises people: "If a single weight of the model is bigger than `max_shard_size`, it will be in its own checkpoint shard which will be bigger than `max_shard_size`." A giant embedding matrix can therefore blow past whatever cap you set. + +For a 235B model this is almost never worth doing, since you would have to load the whole thing to write it back out. Just take the shards you are given. + +### Is there a standard shard size? + +Not a formal one, but there are firm conventions and real limits. + +**The conventions** are the naming pattern (`model-00001-of-00024.safetensors`) and the index file next to it. Both are produced automatically by the saving code, which is why nearly every model on the Hub looks the same. + +**The limits** come from the Hub. Its guidance is to split large files "into chunks <200GB each", and it states that "500GB is the hard limit for a single file size". The reasoning is practical and worth knowing, because it is the same reasoning that should shape your own thinking about big files: + +- A failed download of a smaller file resumes cheaply. A failed download of one enormous file can mean starting over. +- Files are served through a CDN, and per the Hub's docs "huge files are not cached by this service leading to a slower download speed". So one 236 GB file would genuinely download slower than 24 pieces of it. + +**What publishers actually pick** sits far below those limits. Our model uses a 10 GB cap: 23 shards of exactly 10.00 GB and a 24th holding the remaining 6.45 GB. Somewhere in the 5 to 10 GB range is the common choice across the Hub. + +**Does any of this affect serving?** Essentially no. Shard count does not change how much GPU memory you need or how fast the model runs, because the weights are identical either way and safetensors are memory-mapped, so the loader reads the byte ranges it wants regardless of how they are grouped into files. Shard size is a distribution question, not an inference question. Where it does matter is download throughput and resumability, which is exactly why the convention landed where it did. + ### Where it gets stored By default everything lands under `~/.cache/huggingface/hub`, in a layout that looks strange the first time you see it: From 2eb05a89470c3f6376653fea5ba90409aec3de94 Mon Sep 17 00:00:00 2001 From: Shubham Katara Date: Sun, 23 Aug 2026 10:30:48 +0200 Subject: [PATCH 6/8] Restructure the post into a runbook track and a deep-dive track so action-focused and theory-focused readers each get a direct path through it --- ...-big-llm-across-multiple-gpus-with-vllm.md | 714 +++++++++++------- 1 file changed, 437 insertions(+), 277 deletions(-) diff --git a/content/blog/running-a-big-llm-across-multiple-gpus-with-vllm.md b/content/blog/running-a-big-llm-across-multiple-gpus-with-vllm.md index ce003755c..3d6af2c7f 100644 --- a/content/blog/running-a-big-llm-across-multiple-gpus-with-vllm.md +++ b/content/blog/running-a-big-llm-across-multiple-gpus-with-vllm.md @@ -1,7 +1,7 @@ --- title: "Running a big LLM across multiple GPUs with vLLM" seoTitle: "Running a big LLM across multiple GPUs with vLLM" -seoDescription: "A plain-English guide to serving a model that is too big for one GPU: how tensor, pipeline, and expert parallelism split it up, what every vLLM flag does, and measured numbers from a 235B model on four RTX PRO 6000 cards." +seoDescription: "A plain-English guide to serving a model too big for one GPU, in two tracks: a runbook from download to serving with every flag and error explained, and a deep dive into how tensor, pipeline, and expert parallelism split the model, with measured numbers from a 235B model on four RTX PRO 6000 cards." datePublished: 2026-08-18T10:00:00.000Z slug: running-a-big-llm-across-multiple-gpus-with-vllm author: shubham-katara @@ -14,31 +14,57 @@ Sooner or later everyone running models locally hits the same wall. You find a m The answer is to use more than one GPU. That part everybody knows. The part that is genuinely confusing is what "use more than one GPU" actually means. Does each GPU get a copy of the model? Does the model get cut in half? Do the GPUs take turns? Which of those is happening, and what does it cost you? -Let's answer that properly, with a real model on real hardware, and let's explain every single flag and command along the way rather than pasting a magic incantation and moving on. +Let's answer that properly, with a real model on real hardware. And let's be honest that not everyone is here for the same reason. -## What you will learn +## How to read this post -- How to download a 236 GB model, what the 24 files you get actually are, and how they sit on disk -- How to work out on paper whether it fits on your GPUs, before you spend an hour downloading it -- What inference really is: the two completely different phases behind "time to first token" and "tokens per second" -- The three different ways a model can be split across GPUs, in plain English, and when each is used -- What every flag in our vLLM command does, and why it has the value it has -- How to read the startup log, which tells you more than any tutorial can -- The rules that limit how far you can split, and the real errors you get when you break them -- Measured numbers for all three splitting modes on the same model and the same four GPUs +First, why this post is shaped the way it is. Getting a big model serving and understanding how the serving works are two different jobs, usually done by two different people, or by the same person on two different days. An earlier version of this post ran both together, and that made it dense in exactly the wrong way: the reader with a deadline had to wade through all-reduce mechanics to reach the next command, and the reader who came for the mechanics kept tripping over Docker flags. We considered splitting it into two separate posts, but the deep dive's benchmark numbers come from the runbook's commands, and evidence belongs next to the thing it proves. -No prior knowledge of distributed computing is assumed. If you know what a GPU is and you have run a model locally once, you are qualified. +So: one post, two tracks, each with a clear exit. Pick your entrance based on the job in front of you: + +| You are | You want | Read | +| --- | --- | --- | +| **Platform engineer, SRE, MLOps**: you have the GPUs and a deadline | The model serving today | **The runbook, Steps 1-8** (~20 min). Every command, flag, log line and error. Each step links into the deep dive at exactly the point a "why" earns its keep; follow those links only when something surprises you. | +| **ML engineer, or just curious**: no root access required | The mental model | **The deep dive, sections 1-7** (~18 min). How the splitting actually works, and measured proof of when each method wins. Jump [straight there](#the-deep-dive-what-splitting-actually-means). | +| **Both** | Everything | Read straight through. The runbook comes first because you cannot benchmark a server that is not running. | + +New to the jargon? Every term, flag, and benchmark number here is explained in plain English in the [local LLM glossary](https://blog.kubesimplify.com/local-llm-glossary). ## The machine and the model -Here is what we tested on, because numbers mean nothing without the hardware attached. +Both tracks lean on this section, so here it is once. Numbers mean nothing without the hardware attached. **The machine:** a server with 8x NVIDIA RTX PRO 6000 Blackwell Server Edition cards. Each card has 96 GB of memory, and the machine reports 95.01 GiB of that as usable. We borrowed 4 of the 8 cards for this work. One detail that matters more than it looks: these GPUs are **not** connected by NVLink. NVLink is NVIDIA's fast direct GPU-to-GPU cable. Without it, GPUs talk to each other over PCIe and through the CPU, which is slower. You can check what you have with one command: ```bash -nvidia-smi topo -m +root@utho-gpu-rtxpro6000-8-62383:~# nvidia-smi topo -m + +| Device | GPU0 | GPU1 | GPU2 | GPU3 | GPU4 | GPU5 | GPU6 | GPU7 | NIC0 | CPU Affinity | NUMA Affinity | GPU NUMA ID | +| :--- | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :--- | :---: | :---: | +| **GPU0** | **X** | SYS | SYS | SYS | SYS | SYS | SYS | SYS | SYS | 48-55,176-183 | 6 | N/A | +| **GPU1** | SYS | **X** | SYS | SYS | SYS | SYS | SYS | SYS | PHB | 32-39,160-167 | 4 | N/A | +| **GPU2** | SYS | SYS | **X** | SYS | SYS | SYS | SYS | SYS | SYS | 0-7,128-135 | 0 | N/A | +| **GPU3** | SYS | SYS | SYS | **X** | SYS | SYS | SYS | SYS | SYS | 16-23,144-151 | 2 | N/A | +| **GPU4** | SYS | SYS | SYS | SYS | **X** | SYS | SYS | SYS | SYS | 112-119,240-247 | 14 | N/A | +| **GPU5** | SYS | SYS | SYS | SYS | SYS | **X** | SYS | SYS | SYS | 96-103,224-231 | 12 | N/A | +| **GPU6** | SYS | SYS | SYS | SYS | SYS | SYS | **X** | SYS | SYS | 64-71,192-199 | 8 | N/A | +| **GPU7** | SYS | SYS | SYS | SYS | SYS | SYS | SYS | **X** | SYS | 80-87,208-215 | 10 | N/A | +| **NIC0** | SYS | PHB | SYS | SYS | SYS | SYS | SYS | SYS | **X** | | | | + +**Legend:** + +| Symbol | Description | +| :--- | :--- | +| **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 | +| **NIC0** | `mlx4_0` | ``` On our machine every pair of GPUs reports `SYS`, which means the traffic goes across PCIe and then across the link between the CPU sockets. If you had NVLink you would see `NV1`, `NV2` and so on instead. Keep this in mind, because it changes which splitting method is fastest. @@ -46,24 +72,33 @@ On our machine every pair of GPUs reports `SYS`, which means the traffic goes ac **The model:** `Qwen/Qwen3-235B-A22B-Instruct-2507-FP8`. Let's unpack that name, because it is doing a lot of work: - **235B** is the total parameter count, 235 billion. -- **A22B** means 22 billion **active** parameters. This is a mixture-of-experts model, and only a fraction of it runs for any given token. More on this shortly, because it is the most interesting thing about serving big models today. +- **A22B** means 22 billion **active** parameters. This is a mixture-of-experts model: each layer holds 128 small expert networks and a router picks just 8 of them per token, so you pay for 235B in memory but only about 22B in arithmetic. [Deep dive 5 tells the full story.](#deep-dive-5-the-expert-part) - **FP8** is the number format the weights are stored in, 8 bits each, so one byte per parameter. **The software:** vLLM 0.27.1 running in the official container, with PyTorch 2.13.0 and CUDA 13.0, on driver 610.43.02. -## Part 1: Getting the model onto the machine +--- + +## The runbook: from download to serving + +Written for the person with root on the box. Eight steps, and at the end of them a 235B model is answering requests on four GPUs. No prior knowledge of distributed computing is assumed: if you know what a GPU is and you have run a model locally once, you are qualified. + +## Step 1: Getting the model onto the machine Before anything can be split across GPUs it has to be on the disk, and with a model this size that step is not a formality. It is the step that bit us hardest, so let's do it properly. You download it with the Hugging Face CLI: ```bash -pip install huggingface_hub hf_transfer +root@utho-gpu-rtxpro6000-8-62383:~# pip install huggingface_hub hf_transfer +root@utho-gpu-rtxpro6000-8-62383:~# HF_XET_HIGH_PERFORMANCE=1 hf download Qwen/Qwen3-235B-A22B-Instruct-2507-FP8 +Downloading bytes: ████████████████████████████████████████████████▏ | 24.4GB, 234MB/s +Reconstructing (incomplete total...): 13%|███████████████▋ | 10.0GB / 80.0GB, 104MB/s +Fetching 34 files: 0%| | 0/34 [00:00 Date: Sun, 23 Aug 2026 19:19:18 +0200 Subject: [PATCH 7/8] updated benchmark and info in right places --- ...-big-llm-across-multiple-gpus-with-vllm.md | 166 ++++++++++-------- 1 file changed, 89 insertions(+), 77 deletions(-) diff --git a/content/blog/running-a-big-llm-across-multiple-gpus-with-vllm.md b/content/blog/running-a-big-llm-across-multiple-gpus-with-vllm.md index 3d6af2c7f..896f7f59d 100644 --- a/content/blog/running-a-big-llm-across-multiple-gpus-with-vllm.md +++ b/content/blog/running-a-big-llm-across-multiple-gpus-with-vllm.md @@ -18,15 +18,17 @@ Let's answer that properly, with a real model on real hardware. And let's be hon ## How to read this post -First, why this post is shaped the way it is. Getting a big model serving and understanding how the serving works are two different jobs, usually done by two different people, or by the same person on two different days. An earlier version of this post ran both together, and that made it dense in exactly the wrong way: the reader with a deadline had to wade through all-reduce mechanics to reach the next command, and the reader who came for the mechanics kept tripping over Docker flags. We considered splitting it into two separate posts, but the deep dive's benchmark numbers come from the runbook's commands, and evidence belongs next to the thing it proves. +This post is split into two tracks: a runbook for getting a big model serving, and a deep dive explaining how multi-GPU model splitting actually works. The runbook is for readers who need the commands and configs fast. + +The deep dive is for those who want to understand the mechanics, tradeoffs, and numbers. Jump to the track that fits your need, or read both: the post is structured so each section clearly points to the other right when extra context is helpful. So: one post, two tracks, each with a clear exit. Pick your entrance based on the job in front of you: -| You are | You want | Read | -| --- | --- | --- | +| You are | You want | Read | +| ------------------------------------------------------------------- | ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Platform engineer, SRE, MLOps**: you have the GPUs and a deadline | The model serving today | **The runbook, Steps 1-8** (~20 min). Every command, flag, log line and error. Each step links into the deep dive at exactly the point a "why" earns its keep; follow those links only when something surprises you. | -| **ML engineer, or just curious**: no root access required | The mental model | **The deep dive, sections 1-7** (~18 min). How the splitting actually works, and measured proof of when each method wins. Jump [straight there](#the-deep-dive-what-splitting-actually-means). | -| **Both** | Everything | Read straight through. The runbook comes first because you cannot benchmark a server that is not running. | +| **ML engineer, or just curious**: no root access required | The mental model | **The deep dive, sections 1-7** (~18 min). How the splitting actually works, and measured proof of when each method wins. Jump [straight there](#the-deep-dive-what-splitting-actually-means). | +| **Both** | Everything | Read straight through. The runbook comes first because you cannot benchmark a server that is not running. | New to the jargon? Every term, flag, and benchmark number here is explained in plain English in the [local LLM glossary](https://blog.kubesimplify.com/local-llm-glossary). @@ -92,8 +94,8 @@ You download it with the Hugging Face CLI: ```bash root@utho-gpu-rtxpro6000-8-62383:~# pip install huggingface_hub hf_transfer root@utho-gpu-rtxpro6000-8-62383:~# HF_XET_HIGH_PERFORMANCE=1 hf download Qwen/Qwen3-235B-A22B-Instruct-2507-FP8 -Downloading bytes: ████████████████████████████████████████████████▏ | 24.4GB, 234MB/s -Reconstructing (incomplete total...): 13%|███████████████▋ | 10.0GB / 80.0GB, 104MB/s +Downloading bytes: ████████████████████████████████████████████████▏ | 24.4GB, 234MB/s +Reconstructing (incomplete total...): 13%|███████████████▋ | 10.0GB / 80.0GB, 104MB/s Fetching 34 files: 0%| | 0/34 [00:00 Date: Sun, 23 Aug 2026 20:06:10 +0200 Subject: [PATCH 8/8] updated benchmark and info in right places --- ...-big-llm-across-multiple-gpus-with-vllm.md | 39 ++++++++++--------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/content/blog/running-a-big-llm-across-multiple-gpus-with-vllm.md b/content/blog/running-a-big-llm-across-multiple-gpus-with-vllm.md index 896f7f59d..644fe69e7 100644 --- a/content/blog/running-a-big-llm-across-multiple-gpus-with-vllm.md +++ b/content/blog/running-a-big-llm-across-multiple-gpus-with-vllm.md @@ -417,37 +417,38 @@ and then again with 32 requests in flight, which is the same command with two nu ```bash --max-concurrency 32 --num-prompts 640 +Starting initial single prompt test run... Skipping endpoint ready check. Starting main benchmark run... Traffic request rate: inf Burstiness factor: 1.0 (Poisson process) -Maximum request concurrency: 33 -100%|██████████| 640/640 [05:22<00:00, 1.99it/s] +Maximum request concurrency: 32 +100%|██████████| 640/640 [05:23<00:00, 1.98it/s] tip: install termplotlib and gnuplot to plot the metrics ============ Serving Benchmark Result ============ Successful requests: 640 Failed requests: 0 -Maximum request concurrency: 33 -Benchmark duration (s): 322.25 +Maximum request concurrency: 32 +Benchmark duration (s): 323.10 Total input tokens: 655360 Total generated tokens: 163840 -Request throughput (req/s): 1.99 -Output token throughput (tok/s): 508.43 +Request throughput (req/s): 1.98 +Output token throughput (tok/s): 507.09 Peak output token throughput (tok/s): 960.00 -Peak concurrent requests: 64.00 -Total token throughput (tok/s): 2542.16 +Peak concurrent requests: 55.00 +Total token throughput (tok/s): 2535.46 ---------------Time to First Token---------------- -Mean TTFT (ms): 2690.29 -Median TTFT (ms): 1967.72 -P99 TTFT (ms): 13101.50 +Mean TTFT (ms): 3176.38 +Median TTFT (ms): 3211.10 +P99 TTFT (ms): 6855.46 -----Time per Output Token (excl. 1st token)------ -Mean TPOT (ms): 54.48 -Median TPOT (ms): 55.32 -P99 TPOT (ms): 63.66 +Mean TPOT (ms): 50.88 +Median TPOT (ms): 51.16 +P99 TPOT (ms): 63.04 ---------------Inter-token Latency---------------- -Mean ITL (ms): 54.48 -Median ITL (ms): 37.20 -P99 ITL (ms): 255.76 +Mean ITL (ms): 50.88 +Median ITL (ms): 37.35 +P99 ITL (ms): 442.81 ================================================== ``` @@ -462,7 +463,7 @@ One benchmarking warning before you copy this: if you re-run against a warm serv **The verdict.** The complete tables and number-by-number interpretation live in [Deep dive 7](#deep-dive-7-the-proof); here is what they add up to: - **Tensor Parallelism (TP) won nearly everything:** - - **Throughput:** 623.85 output tokens/sec at 32 concurrent requests (70% faster than pipeline parallelism). + - **Throughput:** 507.09 output tokens/sec at 32 concurrent requests (70% faster than pipeline parallelism). - **Decode Latency:** Fastest single-request decode at 17.14 ms median per token. - **Capacity:** Largest conversation capacity with 621,392 cached tokens (~19 concurrent 32k conversations). - **Memory:** Perfectly even memory distribution across all four cards. @@ -725,7 +726,7 @@ Look at the last row too. Under tensor parallelism all four cards sat at **exact | Measurement | TP=4 | TP=4 plus EP | PP=4 | Winner | | --------------------------------------- | ------------ | ------------ | ------------ | ------------------ | | Median time per token, 1 request | **17.14 ms** | 18.83 ms | 21.19 ms | TP | -| Output tokens/sec, 32 requests | **503.68** | 470.93 | 296.48 | TP, by 70% over PP | +| Output tokens/sec, 32 requests | **507.09** | 470.93 | 296.48 | TP, by 70% over PP | | Median time to first token, 32 requests | 3,233 ms | 3,705 ms | **2,735 ms** | PP, by 15% | | Benchmark duration, 32 requests | **65.06 s** | 69.58 s | 110.52 s | TP |