唠唠闲话

GGUF 格式以及 Ollama 更深入的介绍,另外再开帖子讨论

相比 vllm 或者直接使用 huggingface 的模型推理 Pipeline。ollama 极大降低了模型使用门槛:

  • 零 Python 代码以 OpenAI 风格启动模型
  • 支持在普通电脑上运行量化模型,低显存占用,支持 CPU 推理。

从 32 位量化到 4bit,会一定程度降低模型的表现,一种取舍,涉及模型压缩技术。

部署及使用

Docker 部署:https://ollama.com/blog/ollama-is-now-available-as-an-official-docker-image
API 文档:https://github.com/ollama/ollama/blob/main/docs/api.md

推荐使用 docker-compose 部署一键启动服务,方便修改端口,GPU 配置以及模型下载路径等:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
version: '3.8'
services:
ollama:
image: ollama/ollama
container_name: ollama
ports:
- "11434:11434"
volumes: # 模型路径
- /sshfs/ollama:/root/.ollama
environment:
- CUDA_VISIBLE_DEVICES=6,7
# - OLLAMA_HOST="http://localhost:11434"
# - OLLAMA_KEEP_ALIVE="5m"
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
restart: unless-stopped

http://localhost:11434 为 API 服务地址。

创建别名:

1
alias ollama='docker exec -it ollama ollama'

基本操作:

1
2
3
4
# 拉取模型,比如千问
ollama pull qwen:0.5b
# 查看拉取的模型列表
ollama list

GGUF 格式

GGUF: GPT-Generated Unified Format
GGUF:GPT 生成的统一格式

文档:https://github.com/ggerganov/ggml/blob/master/docs/gguf.md
模型量化方式:Which Quantization Method Is Best for You?: GGUF, GPTQ, or AWQ

GGUF 由llama.cpp团队介绍。它是一种为大型语言模型设计的量化方法。它允许用户在 CPU 上运行LLMs,同时通过提供速度改进将某些层卸载到 GPU。

GGUF 对于在 CPU 或 Apple 设备上运行模型的用户特别有用。在 GGUF 上下文中,量化涉及缩小模型权重(通常存储为 16 位浮点数)以节省计算资源。

GGUF 是一种更有效、更灵活的存储和用于LLMs推理的方式。它专为快速加载和保存模型而量身定制,采用用户友好的方法来处理模型文件。

开发者:Georgi Gerganov

20240413222810

文档:https://github.com/ggerganov/ggml/blob/master/docs/gguf.md

HuggingFace 大佬 Tom Jobbins 对大量的主流模型进行了量化。

量化模型的仓库地址:https://huggingface.co/TheBloke

模型列表

支持列表:https://ollama.com/library

Embedding:Embedding models

codellama 为例:

20240412215028

主要的关键字:模型参数量,模型类型,量化级别,量化方式。

模型类型 说明
instruct Fine-tuned to generate helpful and safe answers in natural language
python A specialized variation of Code Llama further fine-tuned on 100B tokens of Python code
code Base model for code completion

内存占用方面,千问 Qwen-72b-1.5 模型,4-bit 量化,推理显存 40G 左右,两张 3090 可用:

20240412220741

加载本地模型

文档:https://github.com/ollama/ollama/blob/main/docs/import.md

启动 hf 模型

  • safetensor 格式
  • GGUF 格式

缺陷

  1. 切换模型问题
  2. 首次加载问题
  3. 并发问题(特性已更新):https://github.com/ollama/ollama/pull/3418

数据量大,当前仍需要 vllm 等项目。