Ollama (https://ollama.com/) 是一款命令行工具,可在 macOS 、 Linux 、Windows 上本地运行 Llama 2、Code Llama 、Gemma 等模型。

Ollama 目前支持近二十多个语言模型系列(https://ollama.com/library),每个模型系列都有许多可用的 "tags"。Tags 是模型的变体,这些模型使用不同的微调方法以不同的规模进行训练,并以不同的级别进行量化,以便在本地良好运行。

下面以我的15年的MacBook Pro来跑Gemma模型(https://ai.google.dev/gemma/docs),下载Ollama对应版本后,直接放入应用目录,然后命令行执行。

ollama run gemma:2b

Gemma 有 2B 与 7B 两个版本,我这里用低的这个版本。上面这个命令会自动下载对应的模型。
https://ollama.com/library/gemma

Gemma 2B效果: 写诗

Ollama —— 在本地启动并运行大语言模型_命令行工具

>>> 写一首关于计算机的诗,用中文。

码头思绪,硬件原理,
逻辑思索,软件原理。
硬件硬件,软件软件,
通往无限,通往未来。

微处理器,控制一切,
内存存储,数据流,功能。
操作系统,层层共建,
管理系统,服务人。

软件程序,指令流,
处理数据,完成任务。
网络通信,连接世界,
人工智能,智能析。

代码,灵魂poken,机灵poken,
人工智能,想象无限。

计算机,文明的核心,
赋予人类,赋予生活。

Gemma 2B效果: 写评论

Ollama —— 在本地启动并运行大语言模型_API_02

>>> 写一段不超过30个字的,赞美直播博主歌唱的好,用于直播间的评论。

Your melodious vocals soar, captivating the crowd. Your music transports
me, a blissful escape from the mundane. #SupportLiveMusic

通过API调用 Ollama

Ollama 运行和管理模型是有 REST API 接口的。

Ollama —— 在本地启动并运行大语言模型_人工智能_03

curl http://localhost:11434/api/generate -d '{
  "model": "gemma:2b",
  "prompt":"Why is the sky blue?"
}'


curl http://localhost:11434/api/chat -d '{
  "model": "mistral",
  "messages": [
    { "role": "user", "content": "why is the sky blue?" }
  ]
}'

上面API返回的是类似如下的内容:

{"model":"gemma:2b","created_at":"2024-02-22T08:52:09.137391Z","response":"The","done":false}
{"model":"gemma:2b","created_at":"2024-02-22T08:52:09.25168Z","response":" sky","done":false}
{"model":"gemma:2b","created_at":"2024-02-22T08:52:09.353537Z","response":" appears","done":false}
{"model":"gemma:2b","created_at":"2024-02-22T08:52:09.45868Z","response":" blue","done":false}
...

{"model":"gemma:2b","created_at":"2024-02-22T08:52:14.301459Z","response":" appears","done":false}
{"model":"gemma:2b","created_at":"2024-02-22T08:52:14.408377Z","response":" blue","done":false}
{"model":"gemma:2b","created_at":"2024-02-22T08:52:14.517119Z","response":".","done":false}
{"model":"gemma:2b","created_at":"2024-02-22T08:52:14.622311Z","response":"","done":true,"context":[106,1645,108,4385,603,573,8203,3868,235336,107,108,106,2516,108,651,8203,8149,3868,3402,577,153902,38497,235265,153902,38497,603,573,38497,576,2611,731,16791,16071,575,573,13795,235265,7640,2611,919,476,25270,35571,1178,1156,9276,235269,712,665,603,30390,978,16347,1178,1156,9276,235265,1417,603,3165,573,8203,8149,3868,235265,107,108],"total_duration":10581960235,"load_duration":4028201095,"prompt_eval_count":15,"prompt_eval_duration":1068217000,"eval_count":52,"eval_duration":5484814000}

直接提问则显示如下:

Ollama —— 在本地启动并运行大语言模型_命令行工具_04

机器负载情况

我这里是一台15年的MacBook Pro

Ollama —— 在本地启动并运行大语言模型_人工智能_05

在生产时,使用CPU,负载情况如下:

Ollama —— 在本地启动并运行大语言模型_人工智能_06

可以看到老机器,或者手机是完全可以本地跑这个模型的。

总结

Ollama 是一个跨平台命令行工具,支持在本地运行多种语言模型。

Ollama 支持通过 REST API 接口管理模型,使得开发相对简单。

即便在老旧设备上,也能轻松本地运行Gemma + Ollama模型,实现人手一个大模型。