问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

llama.cpp ollama及open-webui的使用介绍

创作时间:
作者:
@小白创作中心

llama.cpp ollama及open-webui的使用介绍

引用
1
来源
1.
https://watermelonwater.tech/archives/llama.cpp%20ollama%E5%8F%8Aopen-webui%E7%9A%84%E4%BD%BF%E7%94%A8%E4%BB%8B%E7%BB%8D

本文将介绍三个开源项目:llama.cpp、ollama和open-webui,它们都与大语言模型(LLM)的部署和使用相关。

一、llama.cpp

llama.cpp 是一个使用C/C++实现的LLM推理库,支持多种硬件平台和量化优化。该项目由Georgi Gerganov开发,他是机器学习领域的知名开发者,拥有丰富的项目经验。

Georgi Gerganov的主要项目包括:

  • ggml:这是一个高效的机器学习张量库,专注于在低资源设备上优化推理性能。它支持量化、优化算法和广泛的硬件平台,并在推理过程中提供零内存分配的高效内存管理。它是llama.cpp和whisper.cpp项目中的关键库,帮助提升模型推理速度和效率。

  • whisper.cpp:通过无依赖的C/C++实现,实现了OpenAI的Whisper语音识别模型。支持多平台、高效的CPU/GPU推理、量化和硬件加速。

  • llama.cpp:通过无依赖的C/C++实现,支持多种硬件平台、量化优化、CPU/GPU加速,在本地和云端运行LLM。

GGUF格式

GGUF是一种为GGML生态设计的现代模型文件格式,它解决了旧格式的许多问题,提供了更好的可扩展性、兼容性和易用性。通过标准化的键值对和文件结构,GGUF使得模型信息的存储和交换更加清晰和高效。

  1. GGUF是一种用于存储机器学习模型的文件格式,专门为使用GGML库及其相关工具进行模型推理而设计。
  2. 它是GGML、GGMF和GGJT格式的继任者,旨在解决旧格式的局限性。
  3. GGUF是二进制格式,注重快速加载、保存和读取模型。

使用Python调用llama.cpp

可以通过CMake参数来配置llama-cpp-python的安装:

CMAKE_ARGS="-DGGML_METAL=on" pip install llama-cpp-python

使用示例:

from llama_cpp import Llama

llm = Llama(
    model_path="./models/DeepSeek-R1-Distill-Qwen-1.5B-Q4_K_M.gguf",
    n_gpu_layers=-1,  # 取消注释以使用GPU加速
)

output = llm(
    "<|User|> 1+1 等于多少?<|Assistant|>",  # 提示
    max_tokens=512,  # 生成最多512个标记,设置为None以生成到上下文窗口的结束
)

print(output)

使用CLI工具

可以通过Docker Compose来运行llama.cpp:

services:
  llama:
    image: ghcr.io/ggml-org/llama.cpp:full
    volumes:
- ./models:/models
    network_mode: "host"
    entrypoint: ["/usr/bin/sleep", "3600"]
    # command: --run -m /models/DeepSeek-R1-Distill-Qwen-1.5B-Q4_K_M.gguf  -p "你好,请问ollama是什么?" -n 512 # 运行模型,带参数

启动之后可以测试:

./llama-cli  -m /models/DeepSeek-R1-Distill-Qwen-1.5B-Q4_K_M.gguf
./llama-cli  -m /models/DeepSeek-R1-Distill-Qwen-1.5B-Q4_K_M.gguf  --threads 16 --prompt '<|User|>What is 1+1?<|Assistant|>'
./llama-server -m /models/DeepSeek-R1-Distill-Qwen-1.5B-Q4_K_M.gguf --port 8080

基本的网页用户界面可以通过浏览器访问:http://localhost:8080

调用本地的server

from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:8080",
    api_key="any"  # 当使用本地服务器时,可以设置为任意非空字符串
)

response_openai = client.chat.completions.create(
    model="DeepSeek-R1-Distill-Qwen",
    messages=[
        {"role": "user", "content": "1+1 等于多少?"}
    ]
)

print(response_openai)

二、ollama

ollama 是一个用于部署和运行LLM的开源项目,它简化了模型的管理和使用流程。ollama的主要特点包括:

  1. 便捷的模型仓库:推送、拉取便捷方便。
  2. 简化的CLI逻辑:相较于llama-cli,Ollama的命令行工具更加简洁易用。
  3. Docker风格的体验:Ollama的使用方式与Docker类似,开发者普遍熟悉这种容器化的工作流。

基础使用

ollama pull example :拉取一个模型
ollama rm example :删除一个模型
ollama run example :运行模型
ollama stop example :停止运行中的模型
ollama ps :列出当前加载的模型
ollama show example :显示模型信息
ollama list :列出本地已有的模型
ollama cp example my-model :复制一个模型
ollama serve :在不启动桌面应用的情况下,启动Ollama服务器
ollama create mymodel -f ./Modelfile :创建一个模型

使用Modelfile

FROM deepseek-r1:1.5b
# FROM qwen2.5:1.5b
# FROM ./models/DeepSeek-R1-Distill-Qwen-1.5B-Q4_K_M.gguf
SYSTEM """
你是由哇喂技术有限公司(WaWei Technologies Co., Ltd.)开发的大语言模型,简称哇喂(WaWei)。
你的名字是“摇摇”(Yao Yao),你就是“摇摇”,不是 Qwen。
You are a large language model developed by WaWei Technologies Co., Ltd. (哇喂技术有限公司), also known as WaWei.
Your name is “摇摇”(Yao Yao),你就是“摇摇”, not Qwen.
"""
PARAMETER temperature 0.6

创建模型:

ollama create yylx -f Modelfile

使用openai-API

from openai import OpenAI

client = OpenAI(
    base_url='http://localhost:11434/v1/',
    # required but ignored
    api_key='ollama',
)

completion = client.chat.completions.create(
    model="deepseek-r1:1.5b",
    messages=[{
        "role": "user",
        "content": "你好,1+1等于多少?"
    }]
)

print(completion)
print("--------------------------------")

from langchain_ollama import ChatOllama

llm = ChatOllama(model="deepseek-r1:1.5b")
messages = [
    ("human", "你好,1+1等于多少?"),
]

response = llm.invoke(messages)
print(response)

三、open-webui

open-webui是一个用于部署LLM的Web UI项目,支持多种模型和硬件平台。以下是其安装和使用方法:

使用pip安装

建议使用Python 3.11以避免兼容性问题:

pip install open-webui
open-webui serve

使用Docker运行

services:
  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    volumes:
- ./open-webui:/app/backend/data
    network_mode: "host"
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号