Skip to content

开发

安装所需的工具:

  • CMake 版本 3.24 或更高
  • Go版本1.22或更高
  • GCC版本11.4.0或更高
bash
brew install go cmake gcc

可选地启用调试和更详细的日志记录:

bash
# At build time
export CGO_CFLAGS="-g"

# At runtime
export OLLAMA_DEBUG=1

获取所需的库并构建原生LLM代码:

bash
go generate ./...

然后建造羊驼:

bash
go build .

现在你可以运行 ollama 了:

bash
./ollama

Linux

Linux CUDA(英伟达)

您的操作系统发行版可能已经包含了NVIDIA CUDA的软件包。通常推荐使用发行版自带的包,但这些指令可能会因发行版的不同而不同。如果有的话,请查阅特定发行版的文档以获取依赖项!

安装cmakegolang,以及NVIDIA CUDA的开发和运行时包。

通常构建脚本会自动检测CUDA,但是如果你的Linux发行版或安装方法使用了不寻常的路径,你可以通过设置环境变量CUDA_ LIB _DIR 到共享库的位置,以及CUDACXX到nvcc编译器的位置来指定位置。你可以通过设置CMAKE_CUDA_ARCHITECTURES 来自定义目标CUDA架构(例如:"50;60;70")。

然后生成依赖项:

go generate ./...

然后构建二进制文件:

go build .

Linux ROCm(AMD)

您的操作系统发行版可能已经提供了AMD ROCm和CLBlast的软件包。通常推荐使用发行版软件包,但这些指令可能会因发行版而异。如果有的话,请查阅特定发行版文档了解依赖项!

首先安装CLBlast和[ROCm](https://rocm.docs.amd. com/zh-cn/latest/)的开发包,还需要安装cmakegolang

构建脚本通常会自动检测ROCm,但如果你的Linux发行版或安装方法使用了不寻常的路径,你可以通过设置环境变量ROCM_PATH 到ROCm安装的位置(通常是/opt/rocm),以及设置CLBlast_DIR到CLBlast安装的位置(通常是/usr/lib/cmake/CLBlast )来指定位置。你还可以通过设置AMD GPU目标来自定义,例如AMDGPU_TARGETS="gfx1101;gfx1102"

go generate ./...

然后构建二进制文件:

go build .

ROCm在运行时需要提升权限来访问GPU。在大多数发行版上,您可以将您的用户帐户添加到render组,或者以root身份运行。

进阶CPU设置

默认情况下,运行go generate ./... 将根据常见的CPU家族和向量数学功能编译LLM库的几个不同版本,包括一个最低公共分母,该分母几乎可以在任何64位CPU上慢速运行。在运行时,Ollama会自动检测要加载的最佳变体。如果您想为您的处理器构建一个基于CPU的自定义构建,可以设置OLLAMA_USTOM_PU_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 构建包含CUDA和ROCm依赖项的Linux二进制文件。生成的二进制文件将位于./dist中。

窗户

注意:Ollama的Windows版本仍在开发中。

安装所需工具:

  • MSVC工具链 - 最小需求为C/C++和cmake
  • Go版本1.22或更高版本
  • 选择一个变种的 MinGW 配合 GCC 使用。
powershell
$env:CGO_ENABLED="1"
go generate ./...
go build .

Windows CUDA(英伟达)

除了上述描述的常用Windows开发工具之外,请在安装MSVC之后安装CUDA。

Windows ROCm(AMD Radeon)

除了上面描述的常见Windows开发工具外,安装MSVC后还需要安装AMD的HIP包。

AMD HIP(High-level Intermediate Programming)是一个编程框架,用于在AMD GPU上进行高性能计算。它允许开发者使用C++代码编写,并通过HIP编译器转换为可以在GPU上执行的代码,从而利用AMD Radeon Instinct加速卡和Ryzen CPU的并行计算能力。这种方式可以更轻松地将现有CPU代码迁移到GPU,以实现更高的性能。

最后,将随MSVC一起提供的ninja.exe 添加到系统路径中(例如 C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja)。

热爱生活,热爱 Ollama