Rocky Linux 9 AI 系列 008 — 使用 Ollama 构建本地大模型

前述

自从 OpenAI 于 2022 年 11 月 30 日发布 ChatGPT 以来,经过 2023 年的不断发展,大语言模型的概念已经深入人心。基于大语言模型的各种周边产品和集成工具层出不穷,呈现出百花齐放的局面。在这一过程中,许多本地化的模型应用方案也应运而生。对于一些企业知识库问答的场景,模型本地化成为首要考虑的问题。因此,如何本地化调教模型以提升其智能性,成为一项重要技能。

在构建 RAG + LLM 本地知识库之前,介绍 Ollama 这一工具显得尤为重要。Ollama 类似于 Docker 命令,使得大模型的应用不再高不可攀,而变得更加亲民。

Ollama 简介

Ollama 是一个免费的开源项目,旨在便捷地在本地机器上部署和运行大型语言模型(LLM)。它允许用户无需深入了解底层技术,就可以轻松地加载、运行和与各种开源 LLM 模型进行交互。Ollama 基于 Go 语言开发,提供了一个简单易用的本地 LLM 运行框架。就像 Docker 一样,Ollama 也通过 GitHub – spf13/cobra 包实现了命令行交互功能,包括:listpullpushrun 等命令。这种类似 Docker 的模型应用标准在后续内容中您将更直观地体会到。

Ollama 最初是为本地(主要是开发环境)运行 LLM 而设计的,但现在也可以在服务器上运行,支持用户并发使用。Ollama 基于 Go 语言的 Web 框架 GitHub – gin-gonic/gin 提供 API 接口,使得您可以像使用 OpenAI 的接口一样进行交互,兼容 OpenAI 接口,这使得 Ollama 能够作为 OpenAI 的私有化部署方案使用。

此外,Ollama 官方还提供了类似 GitHub 和 DockerHub 的 ModelHub 功能,用于存放大语言模型的仓库,例如:Llama、Qwen2 等。您也可以自定义模型并上传到仓库供他人使用。大模型的下载速度非常快,基本上可以充分利用本地带宽。

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
    • 添加中文大语言模型下载链接
Avatar photo

关于 木子

Founder of the Rocky Linux Chinese community, MVP、VMware vExpert、TVP, advocate for cloud native technologies, with over ten years of experience in site reliability engineering (SRE) and the DevOps field. Passionate about Cloud Computing、Microservices、CI&CD、DevOps、Kubernetes, currently dedicated to promoting and implementing Rocky Linux in Chinese-speaking regions.
用一杯咖啡支持我们,我们的每一篇[文档]都经过实际操作和精心打磨,而不是简单地从网上复制粘贴。期间投入了大量心血,只为能够真正帮助到您。
暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇