Ollama介绍与使用指南
Ollama 是一个强大的本地推理大模型平台,旨在简化模型的本地部署、管理和推理工作流。它允许用户在本地机器上拉取、管理、运行大模型,并提供多种访问方式,包括本地 CLI、HTTP 接口以及通过 OpenAI 客户端的集成。这篇文章将详细介绍 Ollama 的功能,如何使用 Ollama 拉取模型、运行模型,并通过多种方式访问推理服务。
一、Ollama的主要功能
Ollama 的核心功能包括:
- 本地模型管理:Ollama 支持从官方模型库或自定义模型库拉取预训练模型,并在本地保存和加载。它支持各种流行的模型格式(如 ONNX、PyTorch、TensorFlow)。
- 高效推理:通过 GPU/CPU 的加速,Ollama 提供高效的模型推理,适合本地化应用或需要控制数据隐私的场景。
- 多种接口访问:Ollama 支持命令行(CLI)、HTTP 接口访问推理服务,并通过 OpenAI 客户端实现更广泛的集成。
- 环境变量配置:通过灵活的环境变量,用户可以自定义推理设备(GPU/CPU)、缓存路径、并发数、日志级别等。
接下来我们将详细介绍 Ollama 的安装、常用命令、如何拉取和运行模型、以及不同方式访问 Ollama 推理服务。
二、Ollama的安装与基本配置
1. 安装 Ollama
1.1 获取桌面软件
安装桌面软件可以去官网下载:ollama
1.2 命令行安装
要安装 Ollama,首先需要在系统中安装 Ollama CLI 工具。可以通过以下命令安装:
# macOS 用户
brew install ollama
# Linux 用户(以 Ubuntu 为例)
curl -s https://ollama.com/install | bash
# Windows 用户可以通过 WSL2 安装,参考官网文档获取更多细节
1.3 docker镜像
去下载官方镜像Ollama Docker image。一般高端计算显卡都放在远程,推荐使用docker容器化安装。本文的后续操作也是基于容器化安装。
启动命令按照docker正常启动就行,可以参考我的启动命令,自行修改
docker run -d --gpus=all \
-e OLLAMA_KEEP_ALIVE=-1 \
-e OLLAMA_NUM_PARALLEL=4 \
-e OLLAMA_FLASH_ATTENTION=1 \
-v /data3/alex/ollama:/root/.ollama \
-p 23153:11434 --name ollama-vincent docker.io/ollama/ollama:0.3.11
2. 配置 Ollama
Ollama 允许通过环境变量进行配置。常见的环境变量包括:
- OLLAMA_MODEL_PATH:指定模型存储路径
- OLLAMA_DEVICE:选择推理使用的设备(如
cpu
或gpu
) - OLLAMA_LOG_LEVEL:设置日志级别(如
debug
,info
)
例如:
export OLLAMA_MODEL_PATH=~/ollama_models
export OLLAMA_DEVICE=gpu
export OLLAMA_LOG_LEVEL=debug
更多环境变量可以参考命令的输出:
root@6b5c84c53d0e:/# ollama serve -h
Start ollama
Usage:
ollama serve [flags]
Aliases:
serve, start
Flags:
-h, --help help for serve
Environment Variables:
OLLAMA_DEBUG Show additional debug information (e.g. OLLAMA_DEBUG=1)
OLLAMA_HOST IP Address for the ollama server (default 127.0.0.1:11434)
OLLAMA_KEEP_ALIVE The duration that models stay loaded in memory (default "5m")
OLLAMA_MAX_LOADED_MODELS Maximum number of loaded models per GPU
OLLAMA_MAX_QUEUE Maximum number of queued requests
OLLAMA_MODELS The path to the models directory
OLLAMA_NUM_PARALLEL Maximum number of parallel requests
OLLAMA_NOPRUNE Do not prune model blobs on startup
OLLAMA_ORIGINS A comma separated list of allowed origins
OLLAMA_SCHED_SPREAD Always schedule model across all GPUs
OLLAMA_TMPDIR Location for temporary files
OLLAMA_FLASH_ATTENTION Enabled flash attention
OLLAMA_LLM_LIBRARY Set LLM library to bypass autodetection
OLLAMA_GPU_OVERHEAD Reserve a portion of VRAM per GPU (bytes)
OLLAMA_LOAD_TIMEOUT How long to allow model loads to stall before giving up (default "5m")
三、常用的 Ollama 命令
Ollama 提供了多种命令,方便用户进行模型管理和推理。下面介绍一些常用的命令。
1. 查看帮助信息
要查看 Ollama 支持的所有命令及其用法,可以使用以下命令:
ollama help
这将列出所有支持的命令和相关说明,例如 run
、list
、pull
等。
2. 查看可用模型
要查看 Ollama 官方支持的模型,可以运行以下命令:
ollama list
这将返回一个可用模型的列表,包括模型的名称、版本等信息。
3. 拉取模型
要拉取某个模型到本地进行推理,使用 pull
命令。例如,拉取一个名为 llama2
的模型:
ollama pull llama2
该命令会将模型下载并存储在本地的 OLLAMA_MODEL_PATH
路径中。如果没有指定该路径,Ollama 会使用默认存储路径。
4. 删除模型
如果不再需要某个模型,可以使用 remove
命令将其从本地删除:
ollama remove llama2
5. 检查模型状态
使用 ps
命令可以查看当前模型的状态,包括是否已加载到内存中,设备信息等:
root@6b5c84c53d0e:/# ollama ps
NAME ID SIZE PROCESSOR UNTIL
qwen2:7b-instruct e0d4e1163c58 5.7 GB 100% GPU Forever
qwen2.5:1.5b 65ec06548149 2.0 GB 100% GPU Forever
qwen2.5:0.5b a8b0c5157701 1.3 GB 100% GPU Forever
llama3.2:3b-instruct-fp16 195a8c01d91e 8.5 GB 100% GPU Forever
glm4:9b 5b699761eca5 6.6 GB 100% GPU Forever
四、运行模型
模型拉取完成后,Ollama 提供了简便的方式来运行推理任务。以下介绍如何通过命令行、HTTP 接口和 OpenAI 客户端访问推理服务。
1. 通过命令行运行模型
要在命令行中运行模型进行推理,可以使用 run
命令。例如,运行 llama2
模型并输入一句话让其进行推理:
ollama run llama2 "Hello, how are you today?"
输出将显示模型生成的结果。run
命令支持传递不同的参数,例如设置生成的最大长度、温度等参数:
ollama run llama2 "Hello!" --max_length 50 --temperature 0.8
最好是直接进入本地交互环境
root@6b5c84c53d0e:/# ollama run qwen2:7b-instruct
>>> 你能做什么,你是什么模型
我是一个大型语言模型,被训练来生成与各种主题相关的文本内容。我可以帮助解答问题、提供信息、进行对话、撰写文章、故事或邮件等。尽管我的
能力在不断扩展和优化中,但我并不能执行需要实际物体操作或者具有特定领域专业知识的任务。
我是通义千问大模型的增强版本,名为通义万相,主要用于处理语言生成任务,并以图像形式输出结果。通过将自然语言指令转化为图像,我可以帮助
用户获得创意设计、插画、图像修改以及其他基于视觉的需求。我的核心功能是理解文本输入并将其转换为与之相关的高质量图像输出。
请注意,在某些情况下我可能会犯错误或者给出不准确的回答,请您根据实际情况进行判断和验证信息的正确性。我会不断地学习和进步,希望在帮助
用户解决问题和提供有价值的信息方面发挥积极作用。
>>>
2. 通过 HTTP 访问
Ollama 还提供了 HTTP 接口,允许用户通过 REST API 调用模型进行推理。
启动 HTTP 服务
首先,需要启动 Ollama 的 HTTP 服务,可以通过以下命令启动服务:
ollama serve
这将启动一个本地 HTTP 服务器,默认情况下监听 localhost:11434
。你可以通过浏览器或 Postman 访问 API 进行测试。
如果使用上面的容器化安装,启动容器以后,服务已经启动了,使用ollama ps 命令就能看到已经running的模型服务。
发起 HTTP 请求
使用 curl
命令发起 HTTP 请求,调用 llama2
模型进行推理:
curl -X POST http://localhost:11434/v1/models/llama2/completions \
-H "Content-Type: application/json" \
-d '{
"prompt": "Tell me a joke",
"max_length": 50,
"temperature": 0.7
}'
该请求将返回模型生成的文本。响应格式为 JSON,例如:
{
"id": "cmpl-5sWYxF",
"object": "text_completion",
"created": 1690243381,
"model": "llama2",
"choices": [
{
"text": "Why don't scientists trust atoms? Because they make up everything!"
}
]
}
也支持chat调用接口
curl --location 'http://localhost:11434/v1/chat/completions' \
--header 'Content-Type: application/json' \
--data '{
"model": "qwen2:7b-instruct",
"stream": false,
"messages": [
{
"role": "user",
"content": "你是谁,可以做什么?"
}
],
"temperature": 0
}'
{
"id": "chatcmpl-568",
"object": "chat.completion",
"created": 1727494268,
"model": "qwen2:7b-instruct",
"system_fingerprint": "fp_ollama",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "我是阿里云开发的一款超大规模语言模型,我叫通义千问。我可以生成各种文本内容、回答问题、提供信息咨询等任务。你可以问我各种问题或者需要创作一些文本,我会尽力帮助你。如果你有任何需求,请随时告诉我!"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 14,
"completion_tokens": 55,
"total_tokens": 69
}
}
3. 通过 OpenAI 客户端访问
Ollama 支持通过 OpenAI 的 API 客户端访问本地的模型推理服务,这样你可以使用类似调用 OpenAI API 的方式来调用本地的 Ollama 模型。
配置 OpenAI 客户端
首先,需要将 OpenAI 客户端的 API 请求重定向到本地 Ollama 服务。你可以使用以下命令指定 Ollama 服务的 API 密钥和本地 API 端点:
export OPENAI_API_KEY=ollama-api-key
export OPENAI_API_BASE_URL=http://localhost:11434/v1
此时,任何通过 OpenAI 客户端发起的请求将会转发给 Ollama 的本地服务。
通过 OpenAI 客户端发起请求
使用 OpenAI Python SDK 或其他 OpenAI 客户端库调用 Ollama 模型进行推理。例如,使用 Python 调用 llama2
模型:
import openai
openai.api_key = 'ollama-api-key'
openai.api_base = 'http://localhost:11434/v1'
response = openai.Completion.create(
model="llama2",
prompt="What is the capital of France?",
max_tokens=50
)
print(response.choices[0].text.strip())
该代码将通过本地的 Ollama 服务运行 llama2
模型,并返回结果。
五、Ollama的并发与性能优化
Ollama 支持通过设置环境变量来优化并发处理和性能。常用的性能优化配置包括:
-
并发限制:通过
OLLAMA_CONCURRENCY
设置最大并发请求数。例如:export OLLAMA_CONCURRENCY=4
-
批处理大小:通过
OLLAMA_MAX_BATCH_SIZE
设置批处理推理的最大大小,优化推理吞吐量。例如:export OLLAMA_MAX_BATCH_SIZE=16
-
缓存管理:通过
OLLAMA_CACHE_PATH
设置缓存路径,加速重复推理请求的处理。
六、日志与调试
Ollama 提供详细的日志功能,帮助开发者进行调试和性能监控。通过 OLLAMA_LOG_LEVEL
环境变量,用户可以控制日志的详细程度,例如:
export OLLAMA_LOG_LEVEL=debug
日志文件可以通过 OLLAMA_LOG_FILE
指定路径进行存储。例如:
export OLLAMA_LOG_FILE=~/ollama_logs/debug.log
日志级别包括 debug
、info
、warn
和 error
。设置为 debug
级别时,系统会记录详细的调试信息,帮助开发者排查问题。
七、总结
Ollama 是一个强大的本地大模型推理平台,支持用户通过命令行、HTTP API 和 OpenAI 客户端进行多样化的模型调用。通过合理配置环境变量和优化推理流程,Ollama 能够为用户提供高效的本地化推理解决方案。
无论是在隐私敏感的本地化环境中,还是需要高性能的大规模推理任务,Ollama 都是一个理想的选择。
希望本文为你提供了清晰的 Ollama 基础使用指南,从模型拉取、推理,到多种访问方式,你现在可以轻松开始使用 Ollama 进行本地化模型推理了!