Add ROCm support to linux install script (#2966)

This commit is contained in:
Daniel Hiltgen 2024-03-14 18:00:16 -07:00 committed by GitHub
parent 8546dd3d72
commit 6459377ae0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 43 additions and 11 deletions

View file

@ -101,11 +101,12 @@ future release which should increase support for more GPUs.
Reach out on [Discord](https://discord.gg/ollama) or file an Reach out on [Discord](https://discord.gg/ollama) or file an
[issue](https://github.com/ollama/ollama/issues) for additional help. [issue](https://github.com/ollama/ollama/issues) for additional help.
## Installing older versions on Linux ## Installing older or pre-release versions on Linux
If you run into problems on Linux and want to install an older version you can tell the install script If you run into problems on Linux and want to install an older version, or you'd
which version to install. like to try out a pre-release before it's officially released, you can tell the
install script which version to install.
```sh ```sh
curl -fsSL https://ollama.com/install.sh | OLLAMA_VERSION="0.1.27" sh curl -fsSL https://ollama.com/install.sh | OLLAMA_VERSION="0.1.29" sh
``` ```

View file

@ -40,6 +40,7 @@ case "$KERN" in
*) ;; *) ;;
esac esac
VER_PARAM="${OLLAMA_VERSION:+?version=$OLLAMA_VERSION}"
SUDO= SUDO=
if [ "$(id -u)" -ne 0 ]; then if [ "$(id -u)" -ne 0 ]; then
@ -61,7 +62,7 @@ if [ -n "$NEEDS" ]; then
fi fi
status "Downloading ollama..." status "Downloading ollama..."
curl --fail --show-error --location --progress-bar -o $TEMP_DIR/ollama "https://ollama.com/download/ollama-linux-$ARCH" curl --fail --show-error --location --progress-bar -o $TEMP_DIR/ollama "https://ollama.com/download/ollama-linux-${ARCH}${VER_PARAM}"
for BINDIR in /usr/local/bin /usr/bin /bin; do for BINDIR in /usr/local/bin /usr/bin /bin; do
echo $PATH | grep -q $BINDIR && break || continue echo $PATH | grep -q $BINDIR && break || continue
@ -82,7 +83,7 @@ trap install_success EXIT
configure_systemd() { configure_systemd() {
if ! id ollama >/dev/null 2>&1; then if ! id ollama >/dev/null 2>&1; then
status "Creating ollama user..." status "Creating ollama user..."
$SUDO useradd -r -s /bin/false -m -d /usr/share/ollama ollama $SUDO useradd -r -s /bin/false -U -m -d /usr/share/ollama ollama
fi fi
if getent group render >/dev/null 2>&1; then if getent group render >/dev/null 2>&1; then
status "Adding ollama user to render group..." status "Adding ollama user to render group..."
@ -131,14 +132,23 @@ if available systemctl; then
fi fi
if ! available lspci && ! available lshw; then if ! available lspci && ! available lshw; then
warning "Unable to detect NVIDIA GPU. Install lspci or lshw to automatically detect and install NVIDIA CUDA drivers." warning "Unable to detect NVIDIA/AMD GPU. Install lspci or lshw to automatically detect and install GPU dependencies."
exit 0 exit 0
fi fi
check_gpu() { check_gpu() {
# Look for devices based on vendor ID for NVIDIA and AMD
case $1 in case $1 in
lspci) available lspci && lspci -d '10de:' | grep -q 'NVIDIA' || return 1 ;; lspci)
lshw) available lshw && $SUDO lshw -c display -numeric | grep -q 'vendor: .* \[10DE\]' || return 1 ;; case $2 in
nvidia) available lspci && lspci -d '10de:' | grep -q 'NVIDIA' || return 1 ;;
amdgpu) available lspci && lspci -d '1002:' | grep -q 'AMD' || return 1 ;;
esac ;;
lshw)
case $2 in
nvidia) available lshw && $SUDO lshw -c display -numeric | grep -q 'vendor: .* \[10DE\]' || return 1 ;;
amdgpu) available lshw && $SUDO lshw -c display -numeric | grep -q 'vendor: .* \[1002\]' || return 1 ;;
esac ;;
nvidia-smi) available nvidia-smi || return 1 ;; nvidia-smi) available nvidia-smi || return 1 ;;
esac esac
} }
@ -148,9 +158,30 @@ if check_gpu nvidia-smi; then
exit 0 exit 0
fi fi
if ! check_gpu lspci && ! check_gpu lshw; then if ! check_gpu lspci nvidia && ! check_gpu lshw nvidia && ! check_gpu lspci amdgpu && ! check_gpu lshw amdgpu; then
install_success install_success
warning "No NVIDIA GPU detected. Ollama will run in CPU-only mode." warning "No NVIDIA/AMD GPU detected. Ollama will run in CPU-only mode."
exit 0
fi
if check_gpu lspci amdgpu || check_gpu lshw amdgpu; then
# Look for pre-existing ROCm v6 before downloading the dependencies
for search in "${HIP_PATH:-''}" "${ROCM_PATH:-''}" "/opt/rocm"; do
if [ -n "${search}" ] && [ -e "${search}/lib/libhipblas.so.2" ]; then
status "Compatible AMD GPU ROCm library detected at ${search}"
install_success
exit 0
fi
done
status "Downloading AMD GPU dependencies..."
$SUDO rm -rf /usr/share/ollama/lib
$SUDO chmod o+x /usr/share/ollama
$SUDO install -o ollama -g ollama -m 755 -d /usr/share/ollama/lib/rocm
curl --fail --show-error --location --progress-bar "https://ollama.com/download/ollama-linux-amd64-rocm.tgz${VER_PARAM}" \
| $SUDO tar zx --owner ollama --group ollama -C /usr/share/ollama/lib/rocm .
install_success
status "AMD GPU dependencies installed."
exit 0 exit 0
fi fi