开发¶
安装所需工具:
- cmake 版本 3.24 或更高
- go 版本 1.22 或更高
- gcc 版本 11.4.0 或更高
可选地启用调试和更详细的日志记录:
获取所需的库并构建原生 LLM 代码:
然后构建 ollama:
现在你可以运行 ollama
:
Linux¶
Linux CUDA (NVIDIA)¶
您的操作系统发行版可能已经有了 NVIDIA CUDA 的包。发行版包通常更可取,但说明是特定于发行版的。如果可用,请查阅特定于发行版的文档以了解依赖关系!
安装 cmake
和 golang
以及 NVIDIA CUDA 开发和运行时包。
通常构建脚本会自动检测 CUDA,但是,如果您的 Linux 发行版或安装方法使用非常规路径,您可以通过设置环境变量 CUDA_LIB_DIR
来指定共享库的位置,以及 CUDACXX
来指定 nvcc 编译器的位置。您可以通过设置 CMAKE_CUDA_ARCHITECTURES
(例如 "50;60;70")自定义目标 CUDA 架构。
然后生成依赖项:
然后构建二进制文件:
Linux ROCm (AMD)¶
您的操作系统发行版可能已经有了 AMD ROCm 和 CLBlast 的包。发行版包通常更可取,但说明是特定于发行版的。如果可用,请查阅特定于发行版的文档以了解依赖关系!
首先安装 CLBlast 和 ROCm 开发包,以及 cmake
和 golang
。
通常构建脚本会自动检测 ROCm,但是,如果您的 Linux 发行版或安装方法使用非常规路径,您可以通过设置环境变量 ROCM_PATH
来指定 ROCm 的安装位置(通常为 /opt/rocm
),以及 CLBlast_DIR
来指定 CLBlast 的安装位置(通常为 /usr/lib/cmake/CLBlast
)。您还可以通过设置 AMDGPU_TARGETS
(例如 AMDGPU_TARGETS="gfx1101;gfx1102"
)自定义 AMD GPU 目标。
然后构建二进制文件:
ROCm 需要提升权限才能在运行时访问 GPU。在大多数发行版上,您可以将您的用户账户添加到 render
组,或以 root 身份运行。
高级 CPU 设置¶
默认情况下,运行 go generate ./...
会编译基于常见 CPU 系列和矢量数学功能的几种不同变体的 LLM 库,包括一个应该能在几乎任何 64 位 CPU 上缓慢运行的最低公分母。在运行时,Ollama 将自动检测要加载的最佳变体。如果您想为您的处理器构建一个基于 CPU 的定制构建,您可以设置 OLLAMA_CUSTOM_CPU_DEFS
为您想要使用的 llama.cpp 标志。例如,要为 Intel i9-9880H 编译优化的二进制文件,您可能会使用:
OLLAMA_CUSTOM_CPU_DEFS="-DLLAMA_AVX=on -DLLAMA_AVX2=on -DLLAMA_F16C=on -DLLAMA_FMA=on" go generate ./...
go build .
容器化 Linux 构建¶
如果您有 Docker 可用,您可以使用 ./scripts/build_linux.sh
构建 linux 二进制文件,其中包含 CUDA 和 ROCm 依赖项。生成的二进制文件位于 ./dist
Windows¶
注意:Ollama 的 Windows 构建仍在开发中。
安装所需工具:
Windows CUDA (NVIDIA)¶
除了上面描述的常见 Windows 开发工具外,在安装 MSVC 后安装 CUDA。
Windows ROCm (AMD Radeon)¶
除了上面描述的常见 Windows 开发工具外,在安装 MSVC 后安装 AMD 的 HIP 包。
最后,将 MSVC 中包含的 ninja.exe
添加到系统路径(例如 C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja
)。