Skip to main content

bitsandbytes

Load and train LLMs in 8-bit and 4-bit with bitsandbytes (LLM.int8(), NF4/FP4 QLoRA, 8-bit and paged optimizers) through Transformers, PEFT, TRL and Accelerate. Use for BitsAndBytesConfig, load_in_4bit, QLoRA or FSDP-QLoRA setup, Adam8bit and paged_adamw, serving a bnb checkpoint in vLLM, and errors such as no kernel image available, No compatible CUDA library found, libbitsandbytes not found. Not for GPTQ, AWQ, GGUF or FP8 export (see model-quantization, llm-compressor, gguf-quantization).

Source facts

Repository
ScaleDockHQ/llm-skills
Last source activity
October 15, 2026 at 09:09
Detected SKILL.md language
English
Stars
0
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
10 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
bitsandbytes
description
Load and train LLMs in 8-bit and 4-bit with bitsandbytes (LLM.int8(), NF4/FP4 QLoRA, 8-bit and paged optimizers) through Transformers, PEFT, TRL and Accelerate. Use for BitsAndBytesConfig, load_in_4bit, QLoRA or FSDP-QLoRA setup, Adam8bit and paged_adamw, serving a bnb checkpoint in vLLM, and errors such as no kernel image available, No compatible CUDA library found, libbitsandbytes not found. Not for GPTQ, AWQ, GGUF or FP8 export (see model-quantization, llm-compressor, gguf-quantization).
license
MIT
compatibility
Linux, Windows or macOS with Python 3.10+ and PyTorch 2.4+. NVIDIA, AMD, Intel XPU, Intel Gaudi and CPU backends. Needs curl and jq only for the discovery commands. Installs, source builds and long training runs need the user's approval.
metadata
{"author":"ScaleDockHQ","version":"0.1.0"}
# bitsandbytes Fit a model into less memory with on-the-fly 8-bit or 4-bit weights, fine-tune it with QLoRA, or cut optimizer memory with 8-bit optimizers, then prove the result still behaves. **Scope:** this one library: install and backend selection, `BitsAndBytesConfig`, QLoRA and FSDP-QLoRA, 8-bit optimizers, saving and serving bnb checkpoints, troubleshooting, updating. Choosing between quantization formats, quality gates and publishing belong to `model-quantization`. bitsandbytes is a quantize-at-load library: there is no CLI and no calibration. Every use is a few lines of Python around Transformers; write them to a script in the user's work dir, never into this skill. Load a reference only when a step names it. ## Discover first Read-only. Never print tokens. ```bash python3 --version python3 -m pip show bitsandbytes torch transformers peft accelerate trl 2>/dev/null | grep -E '^(Name|Version):' nvidia-smi --query-gpu=name,compute_cap,memory.total --format=csv 2>/dev/null rocm-smi --showproductname 2>/dev/null | head -5 python3 -m bitsandbytes 2>&1 | tail -25 # upstream diagnostics: backend, library found, sanity check python3 -c "import torch;print(torch.__version__, torch.version.cuda, torch.version.hip)" free -h 2>/dev/null; df -h . ~/.cache/huggingface 2>/dev/null test -n "$HF_TOKEN" && echo "HF_TOKEN set" || echo "HF_TOKEN not set" ``` Ask only what cannot be discovered: the base model, the goal (inference memory, QLoRA training, optimizer memory, or a serving format), the GPU or accelerator, and the quality target. ## Decision flow 1. The goal is a fast serving format on a GPU server: bitsandbytes is usually not it. NF4 and LLM.int8() trade speed for memory; use `model-quantization` to pick FP8, AWQ or GPTQ (`llm-compressor`, `gptqmodel`). 2. The goal is fine-tuning a model that does not fit in bf16: QLoRA (`references/quantize-and-load.md`, then `references/qlora-training.md`). Several GPUs: FSDP-QLoRA in the same file. 3. The goal is inference memory only: NF4 (4-bit) for most memory saved, LLM.int8() (8-bit) for the closest quality; both in `references/quantize-and-load.md`. 4. Optimizer state is the bottleneck while training in full or LoRA: `bnb.optim.*8bit` or `paged_adamw_*` (`references/optimizers.md`). 5. The model must be served: pre-quantized bnb checkpoints load in vLLM through the out-of-tree plugin; in-flight 4-bit is also supported (`references/serving-and-export.md`). Otherwise merge the adapter into bf16 and quantize with a serving format. 6. The install or import fails: `references/install.md`, then `references/troubleshooting.md`. ## Rules - **Check the backend first.** `python3 -m bitsandbytes` tells you whether the native library loaded for this PyTorch build. Fix that before debugging models. - **LLM.int8() needs compute capability 7.5+ on NVIDIA** (Turing, T4 and newer); NF4/FP4 and 8-bit optimizers need 6.0+ (`references/install.md`). - **Use `nf4` with `bnb_4bit_compute_dtype=torch.bfloat16`** for training and normally for inference. The default compute dtype is float32, which is slow, and float16 can be unstable. - **Training a quantized model trains only extra parameters** (LoRA adapters). Full-weight training of an 8-bit or 4-bit model is not supported. - **Keep `lm_head` and embeddings out of 8-bit conversion** when output quality drops (`llm_int8_skip_modules`); see `references/quantize-and-load.md`. - **For FSDP-QLoRA set `bnb_4bit_quant_storage` equal to the model dtype,** otherwise FSDP wraps each `Linear4bit` layer separately. - **Do not expect a speed-up.** Quantized kernels save memory; throughput is often lower than bf16. Measure with `llm-evals` and the engine's own bench before promising anything. - **Do not quantize twice.** Loading an already bnb-quantized checkpoint takes no `quantization_config`. - **Pin versions and record them** (`pip freeze` for bitsandbytes, torch, transformers, peft, trl) with the adapter or checkpoint. - **Secrets never touch output.** `HF_TOKEN` stays in the environment or a `0600` file. Hub uploads need approval. ## Workflows ### Load a model in 4-bit or 8-bit - [ ] Run the discovery block; confirm the diagnostics pass and free VRAM (about 0.5 to 0.6 bytes per parameter for NF4, 1 byte for int8, plus activations and KV cache). - [ ] Create a venv and install (`references/install.md`). - [ ] Write the `BitsAndBytesConfig` script (`references/quantize-and-load.md`), print `model.get_memory_footprint()` and one sample generation. - [ ] Compare against the bf16 model on a few real prompts before relying on it; hand quality gates to `llm-evals`. ### QLoRA fine-tune - [ ] Load the base in NF4 with bf16 compute, `prepare_model_for_kbit_training`, LoRA on `all-linear` (`references/qlora-training.md`). - [ ] Train with TRL `SFTTrainer` (see `trl` for recipes) or the user's trainer; add `optim="paged_adamw_8bit"` if memory is tight. - [ ] Save the adapter, and merge into a bf16 copy of the base (not into the 4-bit weights) before serving (`references/serving-and-export.md`). - [ ] More than one GPU and a model too big for one: FSDP-QLoRA (`references/qlora-training.md`). ### Use 8-bit optimizers - [ ] Swap `torch.optim.Adam` for `bnb.optim.Adam8bit`, embeddings for `bnb.nn.StableEmbedding` on NLP models (`references/optimizers.md`). - [ ] Keep unstable tensors in 32-bit with `GlobalOptimManager` if loss diverges. ### Serve a bnb checkpoint - [ ] Confirm the checkpoint's `quantization_config` has `quant_method: bitsandbytes` (`references/serving-and-export.md`). - [ ] Install the vLLM plugin and serve; smoke-test with a chat request (`vllm` skill). ### Debug a failure - [ ] Run `python3 -m bitsandbytes`, match the symptom in `references/troubleshooting.md`. - [ ] Compare `torch.version.cuda` with the shipped library versions in `references/install.md`. ### Update - [ ] Follow `references/updating.md`: read release notes, upgrade in a fresh venv, re-run the diagnostics and one small model. ## Verify before done - [ ] `python3 -m bitsandbytes` reports success on the target machine. - [ ] A sample generation from the quantized model is coherent and `get_memory_footprint()` shows the expected saving. - [ ] Training runs log a falling loss and the adapter reloads onto a fresh base. - [ ] Versions and the script are saved with the output; nothing secret was printed. ## Reference index - `references/install.md`: requirements, hardware table, per-backend install, source build, preview wheels, environment overrides. - `references/quantize-and-load.md`: `BitsAndBytesConfig` options for 8-bit and 4-bit, offload, skip modules, dequantize, memory checks. - `references/qlora-training.md`: QLoRA with PEFT and TRL, FSDP-QLoRA, memory levers. - `references/optimizers.md`: 8-bit and paged optimizers, `min_8bit_size`, overrides, Trainer strings. - `references/serving-and-export.md`: saving and pushing, merging adapters, vLLM, other engines. - `references/troubleshooting.md`: errors and fixes. - `references/updating.md`: release sources and safe upgrade. ## Companion skills - `model-quantization`: pick a format for an engine, quality checks, Hub publishing. Install: `npx skills add ScaleDockHQ/llm-skills --skill model-quantization`. - `fine-tuning-llms`: choose a fine-tuning stack and data. Install: `npx skills add ScaleDockHQ/llm-skills --skill fine-tuning-llms`. - `trl`: SFT and preference training that consumes a bnb-quantized base. Install: `npx skills add ScaleDockHQ/llm-skills --skill trl`. - `unsloth`: faster QLoRA on a single GPU. Install: `npx skills add ScaleDockHQ/llm-skills --skill unsloth`. - `vllm`: serve the checkpoint. Install: `npx skills add ScaleDockHQ/llm-skills --skill vllm`. - `llm-compressor`: serving-grade quantization (FP8, W4A16). Install: `npx skills add ScaleDockHQ/llm-skills --skill llm-compressor`. - `llm-evals`: quality gates for the quantized model. Install: `npx skills add ScaleDockHQ/llm-skills --skill llm-evals`.
View on GitHub