Ollama

来自牛奶河Wiki
跳到导航 跳到搜索

Llama 是 meta 开源的一款大模型,开源不到一个月的时间就有 19.7K 的 star。2024 年 4 月 19 日,Meta 在官网上官宣了 Llama-3,作为继 Llama-1、Llama-2 和 Code-Llama 之后的第三代模型,Llama-3 在多个基准测试中实现了全面领先,性能优于业界同类最先进的模型。

  • Llama-1: 2023 年 2 月发布。有 7B、13B、30B 和 65B 四个参数量版本。Llama-1 各个参数量版本都在超过 1T token 的语料上进行了预训训练,模型上下文长度 2,048。其中,最大的 65B 参数的模型在 2,048 张 A100 80G GPU 上训练了近 21天,并在大多数基准测试中超越了具有 175B 参数的 GPT-3。因为开源协议问题,Llama-1 不可免费商用
  • Llama-2: 2023 年 7 月发布了免费可商用版本,有 7B、13B、34B 和 70B 四个参数量版本,除了 34B 模型外,其他均已开源。Llama-2 将预训练的语料扩充到了 2T token,模型上下文长度 4,096,词表大小为 32K。并引入了分组查询注意力机制(grouped-query attention, GQA)等技术。通过进一步的有监督微调(Supervised Fine-Tuning, SFT)、基于人类反馈的强化学习(Reinforcement Learning with Human Feedback, RLHF)等技术对模型进行迭代优化,发布了面向对话应用的微调系列模型 Llama-2 Chat。通过“预训练-有监督微调-基于人类反馈的强化学习”这一训练流程,Llama-2 Chat 不仅在众多基准测试中取得了更好的模型性能,同时在应用中也更加安全。Meta 在 2023 年 8 月发布了专注于代码生成的 Code-Llama,共有 7B、13B、34B 和 70B 四个参数量版本
  • Llama-3: 2024 年 4 月,Meta 正式发布了开源大模型 Llama 3,包括 8B 和 70B 两个参数量版本。400B 参数量的版本计划在 2024 年 7 月 23 日发布。Llama-3 支持 8K 长文本,并采用了一个编码效率更高的 tokenizer(sentencepiece -> tiktoken, GPT4 使用 tiktoken),词表大小为 128K。在预训练数据方面,Llama-3 使用了超过 15T token 的语料
  • Llama 3.1: 2024 年 7 月 24 日,Meta 正式发布新一代开源大模型 Llama 3.1 系列,提供 8B、70B 及 405B 参数版本。使用 1.6 万个 H100 GPU、以及超过 15T token 的公开数据进行训练。 架构方面,该模型选择标准的解码器 transformer 模型架构进行调整,而不是混合专家模型,以最大化训练稳定性。采用了迭代的后训练程序,每一轮使用监督微调和直接偏好优化。其上下文长度被提升至 128K,而模型参数也被提高到了 4050 亿规模,是近年来规模最大的大语言模型之一。该模型在通用常识、可引导性、数学、工具使用和多语言翻译等广泛任务中足以对标 GPT-4、Claude 3.5 Sonnet 等领先的闭源模型。

Llama3.1-405B.jpg

ollama 是为了快速部署 Llama 大模型而诞生的,目前在 https://ollama.com/library 列出了可以支持部署的 LLM。

Llama-3:8b(占用存储 4.7G) 在一台 6T CPU/12G RAM 主机上运行,单个 chat 会将全部 CPU 跑满,内存占用 0.5G。而此环境所能使用的最大模型是 llava:13b,这是一个 8G 的模型,使用中内存占用约 2G。llama3.1:70b(39G): Error: llama runner process has terminated: signal: aborted (core dumped)

Inst

Ollama

  • curl -fsSL https://ollama.com/install.sh | sh
  • ENV
    • export OLLAMA_HOST=127.0.0.1:30082 # 如果修改了默认端口(11434)
  • SETUP
  1. OLLAMA_MODELS: 模型文件存放目录
  2. OLLAMA_HOST: Ollama 服务监听的网络地址,默认为 127.0.0.1(0.0.0.0 允许外部网络访问)
  3. OLLAMA_PORT: Ollama 服务监听的默认端口,默认为 11434(修改后需要在环境变量 OLLAMA_HOST 指定)
  4. OLLAMA_ORIGINS: HTTP 客户端请求来源,半角逗号分隔列表,设置成星号,表示不受限制
  5. OLLAMA_KEEP_ALIVE: 大模型加载到内存中后的存活时间,默认为 300(s/m/h。0 = 处理请求响应后立即卸载模型,负数 = 一直存活)
  6. OLLAMA_NUM_PARALLEL: 请求处理并发数量,默认为 1,即单并发串行处理请求,可根据实际情况进行调整
  7. OLLAMA_MAX_QUEUE: 请求队列长度,默认值为 512,可以根据情况设置,超过队列长度请求被抛弃
  8. OLLAMA_DEBUG: 输出 Debug 日志标识,0/1 = 输出详细日志信息
  9. OLLAMA_MAX_LOADED_MODELS: 同时加载到内存中模型的数量,默认为 1
# /etc/systemd/system/ollama.service
[Service]
Environment="OLLAMA_HOST=0.0.0.0:30082"

systemctl daemon-reload
systemctl restart ollama
  • CMD
  1. ollama run ollama:8b # run model
  2. ollama ps # run model list
  3. ollama cp ollama:8b ollama:latest # rm model
  4. ollama rm ollama:8b # rm model
>>> Downloading ollama...
 ######################################################################## 100.0%#=#=#                                              ######################################################################## 100.0%
 >>> Installing ollama to /usr/local/bin...
 >>> Creating ollama user...
 >>> Adding ollama user to render group...
 >>> Adding ollama user to video group...
 >>> Adding current user to ollama group...
 >>> Creating ollama systemd service...
 >>> Enabling and starting ollama service...
 Created symlink /etc/systemd/system/default.target.wants/ollama.service → /etc/systemd/system/ollama.service.
 >>> The Ollama API is now available at 127.0.0.1:11434.
 >>> Install complete. Run "ollama" from the command line.
 WARNING: No NVIDIA/AMD GPU detected. Ollama will run in CPU-only mode.

MODEL

  • /usr/share/ollama/.ollama/models # Linux 存放下载的模型文件
  • ollama pull llama3 # pull, default 8B
  • ollama run llama3 # pull & run
  • ollama run llama3:70b
# ollama list
 NAME	ID	SIZE	MODIFIED 
 llama3:latest	365c0bd3c000	4.7 GB	5 minutes ago	
 
 # ollama pull llama3
 pulling manifest 
 pulling 6a0746a1ec1a...  84% ▕███████████████████████████████████████████████████████           ▏ 3.9 GB/4.7 GB   39 MB/s     21s
 ...
 pulling 6a0746a1ec1a... 100% ▕██████████████████████████████████████████████████████████████████▏ 4.7 GB                         
 pulling 4fa551d4f938... 100% ▕██████████████████████████████████████████████████████████████████▏  12 KB                         
 pulling 8ab4849b038c... 100% ▕██████████████████████████████████████████████████████████████████▏  254 B                         
 pulling 577073ffcc6c... 100% ▕██████████████████████████████████████████████████████████████████▏  110 B                         
 pulling 3f8eb4da87fa... 100% ▕██████████████████████████████████████████████████████████████████▏  485 B                         
 verifying sha256 digest 
 writing manifest 
 removing any unused layers 
 success

UI

ChatBox

Chatbox AI 是一款 AI 客户端应用和智能助手,支持众多先进的 AI 模型和 API,可在 Windows、MacOS、Android、iOS、Linux 和网页版上使用。

open-webui

Open WebUI is an extensible, feature-rich, and user-friendly self-hosted WebUI designed to operate entirely offline. It supports various LLM runners, including Ollama and OpenAI-compatible APIs.

提供 RAG 功能: 设置 - 个性化 - 记忆 (实验性):通过点击下方的“管理”按钮,你可以添加记忆,以个性化大语言模型的互动,使其更有用,更符合你的需求。

--> User 是一个 Java、Python、C、C++、SQL 软件开发人员。

事实上,通过发给 LLM 的信息中包含了这部分信息:

"userContext": "1. [2024-08-05]. User 是一个 Java、Python、C、C++、SQL 软件开发人员。\n",

Instructions

curl http://192.168.0.100:11434/api/generate -d '{
  "model": "llama3",
  "prompt": "Why is the sky blue?",
  "stream": false,
  "options": {
    "num_ctx": 4096
  }
}'

参数

  • model:(必填)模型名称
  • messages:聊天的消息,这可以用来保持聊天记忆,具有以下字段:
    • role:消息的角色,可以是 system、user 或 assistant
    • content:消息的内容
    • images(可选):要包含在消息中的图像列表(适用于多模态模型,如 llava)

高级参数(可选):

  • format:返回响应的格式。目前唯一接受的值是json
  • options:文档中列出的额外模型参数 Modelfile,如 temperature
  • stream:如果为 false,则响应将作为单个响应对象返回,而不是对象流
  • keep_alive:控制模型在请求后保持在内存中的时间(默认:5m)

模型文件格式

  1. GGUF(GPT-Generated Unified Format)是一种可扩展的二进制模型文件格式,是 GGML、GGMF 和 GGJT 的后继文件格式,可以在不破坏兼容性的情况下将新信息添加到模型中。GGUF 支持模型量化,可以将模型权重量化为较低位数的整数,降低模型大小和内存消耗,提高计算效率,同时平衡性能和精度。Quant method(浮点数的位数和量化的方式),如 Q3 表示 3 位量化
  2. Safetensors 是 HuggingFace推 出的一种新的模型存储格式。与传统的模型存储格式相比,Safetensors不包含执行代码,因此在加载模型时无需进行反序列化操作,从而实现更快的加载速度。Safetensors 只包含模型的权重参数,而执行代码则由加载模型的框架或库提供。

参考

  1. 梳理Llama开源家族:从Llama-1到Llama-3
  2. 在 Linux 上安装 Ollama
  3. Llama3-8B到底能不能打?实测对比