"vscode:/vscode.git/clone" did not exist on "45fa3e44a22cd0b74071237304bdfef97b5b9bd6"
installation.mdx 4.51 KB
Newer Older
Titus's avatar
Titus committed
1
2
# Installation

3
bitsandbytes is only supported on CUDA GPUs for CUDA versions **11.0 - 12.3**. Select your operating system below to see the installation instructions.
Younes Belkada's avatar
Younes Belkada committed
4
5
6
7

<hfoptions id="OS system">
<hfoption id="Linux">

Steven Liu's avatar
Steven Liu committed
8
For Linux systems, make sure your hardware meets the following requirements to use bitsandbytes features.
Titus's avatar
Titus committed
9

Steven Liu's avatar
Steven Liu committed
10
11
12
13
| **Feature** | **Hardware requirement** |
|---|---|
| LLM.int8() | NVIDIA Turing (RTX 20 series, T4) or Ampere (RTX 30 series, A4-A100) GPUs |
| 8-bit optimizers/quantization | NVIDIA Kepler (GTX 780 or newer) |
Titus's avatar
Titus committed
14

Steven Liu's avatar
Steven Liu committed
15
16
> [!WARNING]
> bitsandbytes >= 0.39.1 no longer includes Kepler binaries in pip installations. This requires manual compilation, and you should follow the general steps and use `cuda11x_nomatmul_kepler` for Kepler-targeted compilation.
Younes Belkada's avatar
Younes Belkada committed
17

Steven Liu's avatar
Steven Liu committed
18
To install from PyPI.
Younes Belkada's avatar
Younes Belkada committed
19
20
21
22
23

```bash
pip install bitsandbytes
```

24
## Compile from source
25

26
To compile from source, you need CMake >= **3.22.1** and Python >= **3.8** installed. Make sure you have a compiler installed to compile C++ (gcc, make, headers, etc.). For example, to install a compiler and CMake on Ubuntu:
Younes Belkada's avatar
Younes Belkada committed
27

Steven Liu's avatar
Steven Liu committed
28
29
30
31
32
33
34
```bash
apt-get install -y build-essential cmake
```

You should also install CUDA Toolkit by following the [NVIDIA CUDA Installation Guide for Linux](https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html) guide from NVIDIA.

Now to install the bitsandbytes package from source, run the following commands:
35

Younes Belkada's avatar
Younes Belkada committed
36
37
```bash
git clone https://github.com/TimDettmers/bitsandbytes.git && cd bitsandbytes/
38
39
40
pip install -r requirements-dev.txt
cmake -DCOMPUTE_BACKEND=cuda -S .
make
41
pip install .
Younes Belkada's avatar
Younes Belkada committed
42
```
Steven Liu's avatar
Steven Liu committed
43
44
45

> [!TIP]
> If you have multiple versions of CUDA installed or installed it in a non-standard location, please refer to CMake CUDA documentation for how to configure the CUDA compiler.
Younes Belkada's avatar
Younes Belkada committed
46
47
48
49

</hfoption>
<hfoption id="Windows">

Steven Liu's avatar
Steven Liu committed
50
Windows systems require Visual Studio with C++ support as well as an installation of the CUDA SDK.
51

52
You'll need to build bitsandbytes from source. To compile from source, you need CMake >= **3.22.1** and Python >= **3.8** installed. You should also install CUDA Toolkit by following the [CUDA Installation Guide for Windows](https://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/index.html) guide from NVIDIA.
Younes Belkada's avatar
Younes Belkada committed
53
54
55

```bash
git clone https://github.com/TimDettmers/bitsandbytes.git && cd bitsandbytes/
56
57
58
pip install -r requirements-dev.txt
cmake -DCOMPUTE_BACKEND=cuda -S .
cmake --build . --config Release
Younes Belkada's avatar
Younes Belkada committed
59
60
61
python -m build --wheel
```

62
Big thanks to [wkpark](https://github.com/wkpark), [Jamezo97](https://github.com/Jamezo97), [rickardp](https://github.com/rickardp), [akx](https://github.com/akx) for their amazing contributions to make bitsandbytes compatible with Windows.
Younes Belkada's avatar
Younes Belkada committed
63
64

</hfoption>
Titus's avatar
Titus committed
65
66
<hfoption id="MacOS">

Steven Liu's avatar
Steven Liu committed
67
68
> [!TIP]
> MacOS support is still a work in progress! Subscribe to this [issue](https://github.com/TimDettmers/bitsandbytes/issues/1020) to get notified about discussions and to track the integration progress.
Titus's avatar
Titus committed
69
70

</hfoption>
Younes Belkada's avatar
Younes Belkada committed
71
</hfoptions>
Steven Liu's avatar
Steven Liu committed
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86

## PyTorch CUDA versions

Some bitsandbytes features may need a newer CUDA version than the one currently supported by PyTorch binaries from Conda and pip. In this case, you should follow these instructions to load a precompiled bitsandbytes binary.

1. Determine the path of the CUDA version you want to use. Common paths include:

* `/usr/local/cuda`
* `/usr/local/cuda-XX.X` where `XX.X` is the CUDA version number

Then locally install the CUDA version you need with this script from bitsandbytes:

```bash
wget https://raw.githubusercontent.com/TimDettmers/bitsandbytes/main/install_cuda.sh
# Syntax cuda_install CUDA_VERSION INSTALL_PREFIX EXPORT_TO_BASH
87
#   CUDA_VERSION in {110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123}
Steven Liu's avatar
Steven Liu committed
88
89
90
91
#   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

92
bash install_cuda.sh 117 ~/local 1
Steven Liu's avatar
Steven Liu committed
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
```

2. Set the environment variables `BNB_CUDA_VERSION` and `LD_LIBRARY_PATH` by manually overriding the CUDA version installed by PyTorch.

> [!TIP]
> It is recommended to add the following lines to the `.bashrc` file to make them permanent.

```bash
export BNB_CUDA_VERSION=<VERSION>
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<PATH>
```

For example, to use a local install path:

```bash
export BNB_CUDA_VERSION=117
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/tim/local/cuda-11.7
```

3. Now when you launch bitsandbytes with these environment variables, the PyTorch CUDA version is overridden by the new CUDA version (in this example, version 11.7) and a different bitsandbytes library is loaded.