安装
CUDA
bitsandbytes 仅在 CUDA 版本为 11.0 - 12.5 的 CUDA GPU 上受支持。但是,正在进行一项多后端工作,目前处于 Alpha 版本,如果您有兴趣提供早期反馈,请查看 下面的相关部分。
bitsandbytes 的最新版本基于
操作系统 | CUDA | 编译器 |
---|---|---|
Linux | 11.7 - 12.3 | GCC 11.4 |
12.4+ | GCC 13.2 | |
Windows | 11.7 - 12.4 | MSVC 19.38+ (VS2022 17.8.0+) |
MacOS 支持仍在开发中!订阅此 问题 以接收有关讨论的通知并跟踪集成进度。
对于 Linux 系统,请确保您的硬件满足以下要求才能使用 bitsandbytes 功能。
功能 | 硬件要求 |
---|---|
LLM.int8() | NVIDIA Turing(RTX 20 系列,T4)或 Ampere(RTX 30 系列,A4-A100)GPU |
8 位优化器/量化 | NVIDIA Kepler(GTX 780 或更新版本) |
bitsandbytes >= 0.39.1 不再在 pip 安装中包含 Kepler 二进制文件。这需要手动编译,您应该按照一般步骤并使用 cuda11x_nomatmul_kepler
进行针对 Kepler 的编译。
要从 PyPI 安装。
pip install bitsandbytes
从源代码编译
对于 Linux 和 Windows 系统,您可以从源代码编译 bitsandbytes。从源代码安装允许使用不同的 CMake 配置获得更多构建选项。
要从源代码编译,您需要安装 CMake >= 3.22.1 和 Python >= 3.8。确保已安装编译器以编译 C++(gcc、make、头文件等)。例如,要在 Ubuntu 上安装编译器和 CMake
apt-get install -y build-essential cmake
您还应按照 NVIDIA CUDA 安装指南 for Linux 中的指南安装 CUDA 工具包。当前预期的 CUDA 工具包版本为 11.1+,建议安装 GCC >= 7.3,并且至少需要 GCC >= 6。
如果您使用的是其他 CUDA 工具包版本,请参考下表。
CUDA 工具包 | GCC |
---|---|
>= 11.4.1 | >= 11 |
>= 12.0 | >= 12 |
>= 12.4 | >= 13 |
现在要从源代码安装 bitsandbytes 包,请运行以下命令
git clone https://github.com/TimDettmers/bitsandbytes.git && cd bitsandbytes/
pip install -r requirements-dev.txt
cmake -DCOMPUTE_BACKEND=cuda -S .
make
pip install -e . # `-e` for "editable" install, when developing BNB (otherwise leave that out)
如果您安装了多个版本的 CUDA,或者安装了非标准位置的 CUDA,请参考 CMake CUDA 文档以了解如何配置 CUDA 编译器。
PyTorch CUDA 版本
一些 bitsandbytes 功能可能需要比 Conda 和 pip 中的 PyTorch 二进制文件当前支持的版本更新的 CUDA 版本。在这种情况下,您应该按照以下说明加载预编译的 bitsandbytes 二进制文件。
- 确定要使用的 CUDA 版本的路径。常见路径包括
/usr/local/cuda
/usr/local/cuda-XX.X
其中XX.X
是 CUDA 版本号
然后使用 bitsandbytes 中的此脚本在本地安装所需的 CUDA 版本
wget https://raw.githubusercontent.com/TimDettmers/bitsandbytes/main/install_cuda.sh
# Syntax cuda_install CUDA_VERSION INSTALL_PREFIX EXPORT_TO_BASH
# CUDA_VERSION in {110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125}
# EXPORT_TO_BASH in {0, 1} with 0=False and 1=True
# For example, the following installs CUDA 11.7 to ~/local/cuda-11.7 and exports the path to your .bashrc
bash install_cuda.sh 117 ~/local 1
- 通过手动覆盖 PyTorch 安装的 CUDA 版本来设置环境变量
BNB_CUDA_VERSION
和LD_LIBRARY_PATH
。
建议将以下行添加到 .bashrc
文件中,使其永久生效。
export BNB_CUDA_VERSION=<VERSION>
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<PATH>
例如,要使用本地安装路径
export BNB_CUDA_VERSION=117
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/YOUR_USERNAME/local/cuda-11.7
- 现在,当您使用这些环境变量启动 bitsandbytes 时,PyTorch CUDA 版本将被新的 CUDA 版本(在本例中为 11.7 版)覆盖,并加载不同的 bitsandbytes 库。
多后端
此功能目前处于预览阶段,因此尚未投入生产!请参考 此指南,获取有关不同后端及其当前状态的更深入信息。
请按照以下步骤安装具有除 CUDA 之外的设备特定后端支持的 bitsandbytes
使用预构建的轮子安装(大多数情况下的推荐方法)
正在进行中(将在未来几天内添加)
编译
AMD GPU
bitsandbytes 从 ROCm 6.1 版本开始全面支持(目前处于 Alpha 版本)。
如果您想在裸机上安装 ROCm 和 PyTorch,请跳过 Docker 步骤,并参考我们在 ROCm 安装概述 和 为 ROCm 安装 PyTorch(快速安装的轮子构建的步骤 3)中的官方指南。请确保为安装的 ROCm 版本获取 PyTorch 轮子。
# Create a docker container with latest ROCm image, which includes ROCm libraries
docker pull rocm/dev-ubuntu-22.04:6.1.2-complete
docker run -it --device=/dev/kfd --device=/dev/dri --group-add video rocm/dev-ubuntu-22.04:6.1.2-complete
apt-get update && apt-get install -y git && cd home
# Install pytorch compatible with above ROCm version
pip install torch --index-url https://download.pytorch.org/whl/rocm6.1/
# Install bitsandbytes from PyPI
# (This is supported on Ubuntu 22.04, Python 3.10, ROCm 6.1.0/6.1.1/6.1.2/6.2.0 and gpu arch - gfx90a, gfx942, gfx1100
# Please install from source if your configuration doesn't match with these)
pip install bitsandbytes
# Install bitsandbytes from source
# Clone bitsandbytes repo, ROCm backend is currently enabled on multi-backend-refactor branch
git clone --depth 1 -b multi-backend-refactor https://github.com/bitsandbytes-foundation/bitsandbytes.git && cd bitsandbytes/
# Install dependencies
pip install -r requirements-dev.txt
# Compile & install
apt-get install -y build-essential cmake # install build tools dependencies, unless present
cmake -DCOMPUTE_BACKEND=hip -S . # Use -DBNB_ROCM_ARCH="gfx90a;gfx942" to target specific gpu arch
make
pip install -e . # `-e` for "editable" install, when developing BNB (otherwise leave that out)