使用 Ollama 在本地运行大语言模型

2024-03-10#LLM#AI

Ollama 在大语言模型生态中的一个工具,用于在本地运行大语言模型(包括 Llama 2、Mistral、 Gemma等),解决的是 “模型服务” 中的工程化问题。

安装 🔗

Ollama 可执行文件 🔗

Ollama 主要由 Go 语言编写,最终被编译成了一个独立的可执行文件。下载对应架构的可执行文件,即可运行。其官方主页的下载页面 提供了 macOS 和 Windows 平台下的可执行性文件, 以及 Linux 平台下的自动安装的脚本。对于 Linux 平台,Ollama 还提供了手动安装说明,以及将 Ollama 作为系统服务运行的步骤。

显卡驱动 🔗

对于 Linux,可按需安装显卡驱动。比如对 Nvidia 的 GPU 安装 CUDA 驱动,或者对 Radeon 的 GPU 安装 ROCm

运行 Ollama 🔗

运行 ollama serve 即可运行服务程序,默认的端口是 11434。其代码库的API文档中,包含了服务程序所提供的所有接口的说明。访问 api/tags 接口可列出所有模型,但此时结果为空,这是因为还没有下载模型到本地。

所以,还需要下载具体的模型。在其模型库页面找到合适的模型,运行 ollama pull xxx 即可。也可直接使用 ollama run xxx,此时会下载模型,然后运行一个交互式的客户端,用于跟大模型交互。

注意,Ollama 会将模型下载到用户主目录下的 .ollama 目录中。由于模型文件都很大,并且今后可能会下载多个模型,因此务必确保文件系统有足够的存储空间。

与大模型交互 🔗

既可在部署 Ollama 的服务器执行 ollama run xxx ,在命令行与大模型交互;亦可使用HTTP API或者兼容的客户端与之交互。

在 Ollama 的 API 文档里,可以找到文本补全的接口 POST /api/generate,和聊天补全的接口 POST /api/chat。在生成补全时,默认以流式响应返回;但也可执行 streamfalse,使其返回阻塞式的响应。

如果使用浏览器中的客户端,可能会出现跨域请求。默认情况下,Ollama只允许来源为本机,即 127.0.0.10.0.0.0 的请求。如果 Ollama 的地址不是这种本机地址,那么就需要在启动 ollama 时,设置 OLLAMA_ORIGINS 合适的环境变量。在本地测试时可设置为 OLLAMA_ORIGINS=*,但是在公共环境下,这样做不够安全,需要慎重设置。

第三方的 Chrome 插件 ollama-ui 值得小试。

结尾 🔗

安装和使用 Ollama 还是很简单的,唯一可能遇到的麻烦是下载模型比较慢,甚至下载不稳定。如果解决网络问题,并且安装好显卡驱动,使用起来还是很流畅的,可以做一些本地验证或者完成特定的任务。