Granite Switch 4.1 Fits Three Jobs. The Pin Is Transformers 5.16

Hugging Face: 8B and 30B, Apache 2.0, Oct 14 cards. Unite.AI: Python 3.9, PyTorch 2.11, Transformers 5.16–5.17, vLLM 0.26. The adapter is not a second GPU.

IBM’s Hugging Face blog is the primary note. Granite-Switch-4.1-8B and Granite-Switch-4.1-30B put chat, decisions, and speech behind one endpoint. The adapters sit on the base model and, in IBM’s telling, take about the same GPU VRAM as the base would by itself. That sentence is the product. It is not a second 30B.

Unite.AI dated October 15 reads the model cards. Release date on the cards: October 14, 2026. Apache 2.0. 128K context on granite-4.1-8b and granite-4.1-30b. Python 3.9 or later. PyTorch 2.11.0 or later. Transformers 5.16 through 5.17.0. Optional vLLM 0.26.0 up to, but not including, 0.28.0. If your pin is 5.15, this checkpoint is not your checkpoint.

AI Breaking Wire names the bundle: a Decision aLoRA, a Guardian aLoRA, and Granite-Speech-5.0-Turbo-CTC. “Batteries included” is IBM’s phrase. You can also compose your own from Granite Libraries. We already treated Transformers as a GGUF loader and vLLM as an image pin. This week the pin is the adapter stack.

Same VRAM is the claim you should test, not quote twice

The HF post’s pitch is packing. Chat plus a decision adapter plus a speech model, composed so you do not pay a second model tax. aLoRA, in the Breaking Wire write-up, is why they think the tax stays small. Activated LoRA, cache-efficient. The KV cache from a base-model generation can be reused when a later adapter has to make a decision. You are not recomputing the prompt just to flip a policy head.

That is a systems claim. It will be true on some serving stacks and false on yours if you load the pieces as three separate processes. The batteries-included checkpoints are ibm-granite/granite-switch-4.1-8b and ibm-granite/granite-switch-4.1-30b. The speech piece in the blog’s model list is ibm-granite/granite-speech-5.0-470m-turboctc. Libraries: granitelib-core-r1.0, granitelib-guardian-r1.0. If you compose your own, you are in the library path, not the “just pull the 30B” path.

IBM’s Doom aside is the colorful version of the same claim. A custom 3B Switch model, in the blog, ran 60 to 100 decisions per second against Jev’s reported 10, and could narrate while it played. Footnote 1 is theirs. Use it as a demo number, not as your latency SLO. The 30B side of the post says Granite-Switch-4.1-30B finished a real 5-step RAG workflow faster than Jev-27B, described as a frozen Qwen base plus one generic decision LoRA. That is a vendor benchmark. Steal the shape (one composed model vs frozen base plus a LoRA) and rerun on your RAG, or do not put it in a slide.

The Python pin is the article

Unite.AI’s requirements list is the part that belongs on a Python shop’s wall.

Python ≥ 3.9. That is not news. PyTorch ≥ 2.11.0 is news if your cluster is still on a 2.4 CUDA image. Transformers 5.16 through 5.17.0 is a window, not a floor. Optional vLLM >=0.26.0,<0.28.0. The upper bound is the one people will miss. We already watched a vLLM image move with ROCm. An open upper bound is how you get a silent serve break on a Friday.

Backends on the cards: Hugging Face Transformers and vLLM. Dense decoder-only. GQA, RoPE, SwiGLU, RMSNorm. 131,072 tokens of context. Languages listed: English, German, Spanish, French, Japanese, Portuguese, Arabic, Czech, Italian, Korean, Dutch, Chinese. If your production language is not in that list, do not “just try the 8B.”

Apache 2.0 is the other pin. You can vendor this. You can also ship it in a product without a research-only clause. That does not make the evals honest. It makes the lawyer quieter than a gated card.

If you load via Transformers, freeze the versions in requirements.txt the way you would freeze a CVE’d web stack. transformers>=5.16,<5.18 is the window Unite.AI reported. Do not let a floating extra pull 5.18 on Monday. If you load via vLLM, pin 0.26.x and read the 0.28 cutoff as a hard stop. The model is not the release. The resolver is.

Decision, Guardian, speech are three jobs

Breaking Wire’s bundle:

Decision aLoRA, with v1/systemone as the example IBM gave for general-purpose decisions.

Guardian aLoRA, which IBM says beats Jev 1.13, Microsoft-Decision-1, GPT-Luna-Decisions, and Clef-Flash on safety-related decision tasks. That is IBM’s leaderboard sentence. Name it as IBM’s. Do not turn it into “the safest model.”

Granite-Speech-5.0-Turbo-CTC, which IBM calls the fastest ASR on the OpenASR Leaderboard, embedded for transcription.

Three jobs. One process, if the composition works. Three processes, if you ignore the Switch packaging and wire them yourself. The HF post is explicit that you do not have to use their compiled 8B/30B. Mix adapters from the libraries. That is the LoRA story we already told as a fine-tune path, except here the LoRAs are meant to be swapped at serve time without a second copy of the base.

If you only needed ASR, pulling a 30B Switch because it “includes speech” is how you buy a chat model by accident. The 470m TurboCTC card is in the blog’s list for a reason. If you only needed a policy head, a Guardian adapter on a base you already serve is the smaller move. Batteries included is for the team that wants one endpoint to answer, decide, and transcribe. It is not a discount on thinking.

What to run on Monday

Pull the 8B first. Confirm Transformers 5.16 or 5.17 and PyTorch 2.11 on a single GPU that already holds your current 8B. Measure VRAM against the base granite-4.1-8b without adapters. IBM says they should be close. If they are not close on your stack, you are not in the composed path. You are in the three-process path and you should stop quoting “same VRAM.”

Then hit a decision turn after a long chat turn and see whether the cache reuse shows up in latency. aLoRA is the reason they claim you can. If your server rebuilds the prefix, the adapter is just another LoRA.

If VRAM did match, dump nvidia-smi next to the base run and keep both numbers in the ticket. “Approximately the same” is a blog phrase. 1.1x is a serve decision. 2x means you loaded the stack twice and the Switch packaging did not take.

Then read vLLM 0.26 against your current pin. If you are on 0.25, this checkpoint is a bump. If you are on 0.28, Unite.AI’s window says you already walked out of support. Do not “see if it loads.”

If you serve with Transformers only, skip the vLLM line and still freeze 5.16–5.17. A floating transformers extra is how 5.18 shows up in an otherwise boring patch Tuesday. Put the window in the lock file, not in a wiki. Print pip freeze | grep -E 'transformers|vllm|torch' into the change ticket before you claim the card loaded.

Keep GGUF and llama.cpp in the other room. We already wrote that Transformers will load a GGUF and llama.cpp still owns the box with no Python. Switch 4.1, in this week’s cards, is a Transformers/vLLM object. If your production box has no Python, this release is not for that box.

Compose versus pull: two different pip stories

The HF post’s second path is the one library authors will actually use. Do not take the compiled 8B/30B if you already serve granite-4.1-8b. Attach the Guardian adapter from granitelib-guardian-r1.0 and leave speech on the 470m card. That is three names in the orchestrator and one base in VRAM, which is the original Switch pitch without IBM’s bundled opinions about which Decision aLoRA you wanted.

If you do pull the batteries-included 30B, treat it like a distro image. You inherited a Decision head, a Guardian head, and TurboCTC. You also inherited their versions. When IBM ships 4.2, your “one endpoint” is a bump of all three jobs at once. The compose path lets you pin Guardian and float chat. That is more YAML. It is also how you survive a policy-head regression without taking ASR down.

Python 3.9 as a floor will bite the 3.8 holdouts in old Airflow images. That is a smaller group than it was, and it is still the group that copies pip install transformers into a Dockerfile from 2024. PyTorch 2.11 is the larger bump. If your training cluster and your serve cluster share an image, 2.11 for serve can move training. Split the images or do not.

Context at 131,072 is on the card. Your vLLM 0.26 pin has its own max. Do not print 128K on a customer slide if the serve flags cap at 32K. The model card is not the runtime.

Languages: twelve names. Fine for a multilingual ticket classifier if your tickets are in that twelve. Fine for ASR only if TurboCTC actually covers the language you need. The OpenASR “fastest” line is IBM’s. Check the language, not the trophy.

The endpoint is not the eval

A composed model that chats, votes, and transcribes is easier to demo than three billed services. It is also easier to confuse in an incident. When the Guardian head is wrong, you need to know which adapter was on. When ASR is wrong, you need to know you were in TurboCTC and not in the chat decoder. One endpoint that hides those names is convenient until the ticket.

Write the adapter id into the log line. Write the Transformers version. Write the vLLM version. The October 14 cards will move. Your log line is how you know which 4.1 you actually served.

Do not merge a Switch checkpoint the way Unsloth got people to trust a remote config.json. We already wrote that Studio read the file and Transformers ran it. Apache 2.0 does not make trust_remote_code free. If the card wants custom code, read the file. If it does not, keep the flag off.

IBM can say same VRAM, 60–100 decisions a second on a 3B toy, faster RAG than Jev-27B, Apache 2.0, 128K. Your job is the pin. Python 3.9, PyTorch 2.11, Transformers 5.16–5.17, vLLM 0.26 and not 0.28. If that window does not match the image you ship, the model card is a blog post. If it does, you have a single-process way to attach a decision head and a speech head without inventing a second GPU. That is the only increment that survives a pip freeze.

Spread The Article

Share this guide

Send this article to your network or keep a copy of the direct link.

X Facebook LinkedIn Reddit Telegram

Discussion

Leave a comment

No comments yet

Be the first to start the conversation.