Ollama: 本地构建大模型利器
00 分钟
2024-4-7
2024-5-1
type
status
title
summary
slug
Created
Apr 7, 2024 02:58 PM
category
tags
Date
icon
password

一、什么是Ollama

Ollama是一个简明易用的本地大模型运行框架,可以方便用户在自己本地计算机快速运行大模型,大部分代码由Golang编写。
 
项目官方:https://ollama.com/
 

二、为什么有Ollama

之所以有 Ollama,还得从 Llamallama.cpp 讲起。
 
Llama是由Meta AI发布的开源大语言系列模型,完整的名字是Large Language Model Meta AILlama这个单词本身是指美洲大羊驼,所以社区也将这个系列的模型昵称为羊驼系模型
 
Llama1按照模型参数量的大小分为四个型号:Llama1-7B、Llama1-13B、Llama1-30B与Llama1-65B。而在2023年7月之后,MetaAI 发布了 Llama2,有三个型号,分别是:Llama2-7B、Llama2-13B、Llama2-70B。
 
这里的B是billion的缩写,指代模型的参数规模。故最小的模型7B包含70亿个参数,而最大的一款65B则包含650亿个参数。
 
notion image
 
Llama 大模型的获取需要填写一份在线表单,同意Meta AI的协议之后,才能收到他们发送的下载链接
notion image
 
简单介绍了Llama之后,让我们把思绪转到llama.cpp 这里。
 
llama.cpp 一开始是 Llama 大模型的纯 C/C++ 版本(Inference of Meta's LLaMA model (and others) in pure C/C++),但是现在也支持其他大模型,比如Mistral 7BMixtral MoE 等。
 
llama.cpp 的好处是可以降低大型语言模型(LLM)的运行成本,并使得这些模型能够在各种硬件上运行(并且运行得更快),包括在没有GPU的设备上,也就是只有纯CPU的设备也能运行!
 
llama.cpp 具有以下特性:
  • 广泛的硬件支持:llama.cpp 是由纯 C/C++实现的,这意味着它可以在多种硬件平台上运行,目前支持的平台有:Mac OS、Linux、Windows (via CMake)、Docker 和 FreeBSD
  • 简化设置和操作:llama.cpp 的目标是最小化设置,使得用户能够在本地和云端以最先进的性能进行LLM推理。它通过提供没有依赖项的纯C/C++实现来简化安装和使用过程
  • 高效的性能:通过支持不同位宽的量化(例如1.5-bit, 2-bit, 3-bit, 4-bit, 5-bit, 6-bit, 和 8-bit),llama.cpp 能够加快推理速度并减少内存使用。这使得在资源有限的设备上运行大型模型成为可能。
  • 优化特定架构:llama.cpp 为Apple Silicon提供了特定的优化,并且针对x86架构提供了AVX, AVX2和AVX512的支持,这进一步提高了模型在这些架构上的性能
 
可以说,因为 llama.cpp,促进了本地大模型的快速发展!
💡
补充知识点:什么是量化? 要理解量化,需要从大模型的参数讲起。大模型的参数通常存储为浮点数,大多数大模型都使用 32 位浮点数,也称为单精度。然而模型的有些层可能也采用不同的精度级别,比如16位。 我们来进行一个简单的数学计算: 8位 = 1字节 32位 = 4字节 考虑一个7B的模型,也就是参数有70亿个,假设这个大模型使用 32位浮点数存储,那么总内存为:4字节 * 70 亿 = 280亿字节,也就是约等于 28GB。 这意味着使用该模型需要 28 GB 的内存容量。 但对于个人计算机,其实很难达到28GB!目前大部分8-16GB 而量化就是降低大模型参数精度的过程,也可以简单理解为将模型压缩! 使用量化后,会将32位浮点数转为4位的整数,虽然这种行为可能会稍微影响模型性能,但是却大大降低了存储模型所需的内存消耗! 如果对上面的模型进行4位量化,量化后的模型就变成: 4 / 8 字节 * 70 亿 = 35亿字节,约等于3.5GB!
 
让我们最后把思绪再绕回 Ollama 这里,之所以有 Ollama,是因为当你想使用 llama.cpp 时,其实也比较麻烦,因为你要获取模型权重、克隆项目代码、执行模型量化、设置环境变量、构建可执行文件等。
 
而Ollama就是为了简化 llama.cpp 部署而诞生的,并且提供了类似OpenAI的API接口和聊天界面,可以很方便地使用不同模型。
 

三、运行Ollama

3.1 安装
如果是Mac系统,需要下载对应的安装包,而如果是Linux的话,执行下面这条命令即可
 
值得注意的是,上面的 install.sh 只适用于Linux,就算执行了也没关系,脚本有系统检测。
 
不管是安装包还是 install.sh,本质上都是往系统安装 ollama 二进制文件,并且启动 ollama 服务。
notion image
 
安装完毕之后,使用 version 命令检验是否成功安装
 
如果你是用Docker安装的,则 ollama 服务有可能起不来,这时候用 version 命令提示这个
 
3.2 运行
这里以 llama2-chinese 模型为例,该模型是 Llama 2 对话中文微调参数模型,基于 MetaAI 所发布的 Llama 2 Chat 开源模型来进行微调。
 
由于 Llama 2 本身的中文对齐比较弱,开发者采用了中文指令集来进行微调,使其具备较强的中文对话能力。目前这个中文微调参数模型总共发布了 7B,13B两种参数大小。
 
默认的 latest Tag下载的是7B的,如果想下载13B的,命令需换为:
 
下载还是蛮快的
notion image
 
其他模型可以在 Ollama Library 找到。
 
3.3 测试
执行 ollama run llama2-chinese 命令会启动一个输入框,可以在这里填入Prompt
notion image
 
还可以通过 API 的方式调用
notion image
 
关于Ollama 的API功能,官方提供了一份Markdown文档:
 
关于Ollama的各种界面工具,也可以在其官方项目上查看,这里不再赘述。
 
我是AI技术巫,欢迎关注我,掌握第一手AI资讯与技巧!
notion image