前述
自从 OpenAI 于 2022 年 11 月 30 日发布 ChatGPT 以来,经过 2023 年的不断发展,大语言模型的概念已经深入人心。基于大语言模型的各种周边产品和集成工具层出不穷,呈现出百花齐放的局面。在这一过程中,许多本地化的模型应用方案也应运而生。对于一些企业知识库问答的场景,模型本地化成为首要考虑的问题。因此,如何本地化调教模型以提升其智能性,成为一项重要技能。
在构建 RAG + LLM 本地知识库之前,介绍 Ollama 这一工具显得尤为重要。Ollama 类似于 Docker 命令,使得大模型的应用不再高不可攀,而变得更加亲民。
Ollama 简介
Ollama 是一个免费的开源项目,旨在便捷地在本地机器上部署和运行大型语言模型(LLM)。它允许用户无需深入了解底层技术,就可以轻松地加载、运行和与各种开源 LLM 模型进行交互。Ollama 基于 Go 语言开发,提供了一个简单易用的本地 LLM 运行框架。就像 Docker 一样,Ollama 也通过 GitHub – spf13/cobra 包实现了命令行交互功能,包括:list
、pull
、push
和 run
等命令。这种类似 Docker 的模型应用标准在后续内容中您将更直观地体会到。
Ollama 最初是为本地(主要是开发环境)运行 LLM 而设计的,但现在也可以在服务器上运行,支持用户并发使用。Ollama 基于 Go 语言的 Web 框架 GitHub – gin-gonic/gin 提供 API 接口,使得您可以像使用 OpenAI 的接口一样进行交互,兼容 OpenAI 接口,这使得 Ollama 能够作为 OpenAI 的私有化部署方案使用。
此外,Ollama 官方还提供了类似 GitHub 和 DockerHub 的 ModelHub 功能,用于存放大语言模型的仓库,例如:Llama、Qwen2 等。您也可以自定义模型并上传到仓库供他人使用。大模型的下载速度非常快,基本上可以充分利用本地带宽。
- 项目地址:GitHub – ollama/ollama
- 官网地址:Ollama
- 大模型仓库:library
- 下载链接:Download Ollama
- Docker 镜像链接:Ollama Docker
- 开源中文语言大模型下载:GitHub – HqWu-HITCS/Awesome-Chinese-LLM
- Github 中文 LLaMA-2和 Alpaca-2: ymcui (Yiming Cui) · GitHub
Ollama 的特点:
- 本地部署:无需依赖云端服务,用户可以在自己的设备上运行模型,保护数据隐私。
- 多操作系统支持:无论是 macOS、Linux 还是 Windows,都能方便地安装和使用。
- 多模型支持:Ollama 支持多种流行的 LLM 模型,如 Llama、Qwen2 等,用户可以根据需求选择不同的模型,一键运行。
- 易于使用:提供直观的命令行界面,操作简单,容易上手。
- 可扩展性:支持自定义配置,用户可以根据硬件环境和模型需求进行优化。
- 开源:代码完全开放,用户可以自由查看、修改和分发。
Ollama 部署
这里以 Docker 部署 Ollama 为例,如果您需要 GPU 来运行大模型,建议参考前面的文档部署 NVIDIA 显卡驱动。
[root@gpu-server-001 ollama]# cat > docker-compose.yaml << \EOF
services:
ollama:
image: ollama/ollama
container_name: ollama
ports:
- 11434:11434 # 服务端口
volumes:
- /data/ollama:/root/.ollama
runtime: nvidia
environment:
- NVIDIA_VISIBLE_DEVICES=all
- NVIDIA_DRIVER_CAPABILITIES=all
deploy:
resources:
reservations:
devices:
- capabilities: [gpu]
restart: always
network_mode: host
EOF
# 启动服务
[root@gpu-server-001 ollama]# docker compose up -d
# 确保服务启动成功
[root@gpu-server-001 ollama]# docker compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
ollama ollama/ollama "/bin/ollama serve" ollama 5 seconds ago Up 4 seconds
# 查看当前版本
[root@gpu-server-001 ollama]# docker exec -it ollama ollama --version
ollama version is 0.3.5
# 查看常用命令
[root@gpu-server-001 ollama]# docker exec -it ollama ollama help
Large language model runner
Usage:
ollama [flags]
ollama [command]
Available Commands:
serve Start ollama
create Create a model from a Modelfile
show Show information for a model
run Run a model
pull Pull a model from a registry
push Push a model to a registry
list List models
ps List running models
cp Copy a model
rm Remove a model
help Help about any command
Flags:
-h, --help help for ollama
-v, --version Show version information
Use "ollama [command] --help" for more information about a command.
Ollama 常用命令:
ollama serve
:启动 Ollama 服务ollama create
:使用 Modelfile 创建一个自定义模型ollama show
:显示模型的信息ollama run
:运行一个模型ollama pull
:拉取模型ollama push
:推送模型ollama list
:显示模型列表ollama ps
:列出运行的模型ollama cp
:拷贝一个模型ollama rm
:删除一个模型ollama help
:查看帮助信息
在 Ollama 中部署大模型
从在线大模型仓库搜索所需模型,并使用 ollama pull
命令拉取相应的模型。这里以拉取 llama2-chinese:13b-chat
为例,实际上木子已经拉取了多个大模型进行测试。
# 拉取大模型
[root@gpu-server-001 ollama]# docker exec -it ollama ollama pull llama2-chinese:13b-chat
pulling manifest
pulling 8359bebea988... 100% 7.4 GB
......(中间略)
verifying sha256 digest
writing manifest
removing any unused layers
success
# 查看大模型
[root@gpu-server-001 ollama]# docker exec -it ollama ollama list
NAME ID SIZE MODIFIED
qwen:32b 26e7e8447f5d 18 GB 2 days ago
codegeex4:9b 867b8e81d038 5.5 GB 2 days ago
glm4:latest 5b699761eca5 5.5 GB 2 days ago
qwen2:7b e0d4e1163c58 4.4 GB 2 days ago
llama3.1:latest 91ab477bec9d 4.7 GB 2 days ago
llama2-chinese:latest cee11d703eee 3.8 GB 2 days ago
# 运行大模型(当然也可以直接运行,如果本地没有对应大模型,ollama 会自动拉取,这和 Docker 命令是一样的)
[root@gpu-server-001 ollama]# docker exec -it ollama ollama run qwen2:7b
# 服务启动后,会进入一个命令行交互界面,通过 /? 或 help 获取帮助信息
>>> /?
Available Commands:
/set Set session variables
/show Show model information
/load <model> Load a session or model
/save <model> Save your current session
/clear Clear session context
/bye Exit
/?, /help Help for a command
/? shortcuts Help for keyboard shortcuts
Use \""" to begin a multi-line message.
# 提问
>>> 什么是LLM?
# 回答
LLM是一种叫做“Language Model”的模型,它可以被用来生成自然语言文本。这些模型通常基于深度学习算法,并使用大量的文本数据进行训练,以实现对语言的理解和生成能力。它们可以用来生成文章、短语、段落、诗歌等,也可以用于自然语言处理任务,如机器翻译、情感分析和语音识别。目前,LLM已经在人工智能领域取得了巨大的成就,并被广泛应用于语言处理、自然语言生成等方面。
# 退出
>>> /bye
>>
# 查看当前正在运行的大模型资源使用情况
[root@gpu-server-001 ollama-openwebui]# docker exec -it ollama ollama ps
NAME ID SIZE PROCESSOR UNTIL
qwen2:7b e0d4e1163c58 5.7 GB 100% GPU 4 minutes from now
写在最后
这里仅仅实现了 Ollama 的基础部署和大模型的基本管理。对于非官方支持的大模型,后续将介绍如何部署,以及如何实现基于 WebUI 的人机交互。这将是接下来重点讲解的内容。
变更记录
- 2024-09-28
- 添加中文大语言模型下载链接
- 2024-10-10
- 添加 Github 中文 LLaMA-2和 Alpaca-2 大语言模型下载链接