手机安装系统部署LLM的方法

手机安装系统部署LLM的方法

前置条件:

首先模型选择GGUF格式, 选择Q4_K_M或Q5_K_M量化
手机内存8~12G或以上均可尝试, 参数一般选择7~13B

以下是模型推荐及其大小, 需根据手机内存实际情况选择:
Hermes-2.5-Yi-1.5-9B-Chat-i1-GGUF 中文模型, Q4量化5.33G, Q5量化6.26G

Qwen2-7B-Multilingual-RP-GGUF 中文模型, Q4量化4.68 G, Q5量化5.44 G

Loyal-Macaroni-Maid-7B-GGUF 英文模型, Q4量化4.37 G, Q5量化5.13 G

本地部署

下载Termux

需要一个 linux 环境,Termux 是 Linux 环境的模拟器,因此它可以工作。
转到 https://f-droid.org/en/packages/com.termux/ 然后向下滚动页面,然后单击下载apk,然后安装它。

请添加图片描述

打开Termux, 下载依赖

首先需要安装Koboldcpp, 需要安装依赖, 在终端输入如下指令,

pkg install wget git python

随后输入y选择安装

请添加图片描述

输入安装openssl依赖, 此步非必要

apt install openssl

随后输入如下以获取Koboldcpp项目

git clone https://github.com/LostRuins/koboldcpp.git

请添加图片描述

输入

cd koboldcpp

请添加图片描述

随后输入

make

等待编译, 需要几分钟

请添加图片描述

下载模型并启动

首先需要在huggingface里获取下载链接, 然后通过wget来下载, 这里直接把模型下载到当前Koboldcpp目录, 更方便.
先去huggingface获取下载链接, 这里以Hermes-2.5-Yi-1.5-9B-Chat-i1-GGUF为例来下载Q5_K_M版本, 项目链接已经在上面的模型推荐中列出了, 这里只需要进到里面获取下载链接即可.

请添加图片描述

选择对应的Q5_K_M, 进入页面后长按download然后复制链接

请添加图片描述

随后回到Termux终端, 在koboldcpp目录下输入wget后, 要隔开空格, 随后把刚才复制的链接地址粘贴到后面

wget https://huggingface.co/mradermacher/Hermes-2.5-Yi-1.5-9B-Chat-i1-GGUF/resolve/main/Hermes-2.5-Yi-1.5-9B-Chat.i1-Q5_K_M.gguf

请添加图片描述

模型一般很大, 慢慢等待下载完成即可, 随后终端输入如下, 需要在--model跟模型名, 这个根据你下载的模型名有关

python koboldcpp.py --model Hermes-2.5-Yi-1.5-9B-Chat.i1-Q5_K_M.gguf

请添加图片描述

等待, 出现如下信息就成功了

请添加图片描述

进到浏览器, 输入http://localhost:5001链接后进入, 然后即可尝试了, 效果如下:

请添加图片描述

后续启动的话, 每次启动Termux后终端输入

cd koboldcpp

随后输入

python koboldcpp.py --model Hermes-2.5-Yi-1.5-9B-Chat.i1-Q5_K_M.gguf

然后浏览器输入http://localhost:5001即可
可接入酒馆, 目前测下来手机运行稳定性较差, 经常断掉, 如果不是特殊情况还是用电脑比较稳定.

KoboldCPP 是一个基于 C/C++ 的本地化运行大型语言模型(LLM)的开源项目,其主要优势在于提供了一个图形界面(GUI)以简化模型的部署和使用。结合 RAG(Retrieval-Augmented Generation)技术,可以进一步增强 KoboldCPP 在问答、文本生成等任务中的表现,特别是在处理特定领域或需要外部知识支持的场景中。 ### 方法概述 KoboldCPP 本身并未直接内置 RAG 技术,但可以通过集成外部检索系统(如向量数据库)和自定义脚本的方式实现 RAG 的功能。RAG 的核心思想是将检索(Retrieval)和生成(Generation)两个阶段分离,具体流程如下: 1. **检索阶段**:在生成答案之前,首先通过查询向量数据库或倒排索引系统,检索出与用户输入相关的文档片段或知识条目。 2. **生成阶段**:将检索到的相关内容作为上下文信息,与用户原始输入一起输入到 KoboldCPP 模型中,模型基于这些信息生成更准确、更具针对性的回答。 ### 实现步骤 1. **准备检索系统**: - 使用向量数据库(如 FAISS、Weaviate 或 Milvus)存储文档的嵌入向量。 - 将文档内容预先编码为向量形式并插入数据库中。 - 当用户提出查询时,使用相同的编码器对查询进行编码,并在向量数据库中检索最相关的文档片段。 2. **集成 KoboldCPP**: - 通过 KoboldCPP 提供的 API 或本地调用方式,将检索到的文档内容拼接至用户输入的上下文中。 - 调整 KoboldCPP 的上下文窗口大小,确保能够容纳原始输入和检索到的上下文信息。 - 配置 KoboldCPP 的生成参数(如 `temperature`、`top_p` 等),以优化生成结果的质量。 3. **编写自定义脚本**: - 使用 Python 或其他支持的语言编写脚本,协调检索与生成过程。 - 脚本应包括查询编码、向量检索、上下文拼接、调用 KoboldCPP 推理接口等模块。 ### 示例代码 以下是一个简化的 Python 脚本示例,展示如何结合 FAISS 和 KoboldCPP 实现 RAG: ```python import faiss import numpy as np from sentence_transformers import SentenceTransformer import requests # 初始化嵌入模型 model = SentenceTransformer('all-MiniLM-L6-v2') # 加载 FAISS 索引 index = faiss.read_index("your_index_file.index") # 文档库(与索引对应) documents = ["文档1内容", "文档2内容", "文档3内容"] def retrieve(query, k=3): # 编码查询 query_embedding = model.encode([query]) # 检索最相关的文档 distances, indices = index.search(np.array(query_embedding), k) return [documents[i] for i in indices[0]] def generate_with_kobold(prompt): # 调用 KoboldCPP 的 API 接口 response = requests.post("http://localhost:5000/api/v1/generate", json={ "prompt": prompt, "max_length": 200, "temperature": 0.7 }) return response.json()['results'][0]['text'] def rag_query(user_query): retrieved_docs = retrieve(user_query) context = "相关文档内容:" + " ".join(retrieved_docs) full_prompt = f"{context}\n用户问题:{user_query}\n回答:" return generate_with_kobold(full_prompt) # 示例使用 user_input = "量子计算的基本原理是什么?" answer = rag_query(user_input) print(answer) ``` ### 注意事项 - **性能优化**:在实际部署中,建议使用 GPU 加速 KoboldCPP 和嵌入模型的推理过程,以提高响应速度。 - **上下文管理**:由于 KoboldCPP 的上下文窗口有限,需合理控制检索内容的长度,避免超出最大长度限制。 - **模型选择**:根据实际需求选择合适的 LLM 模型版本(如 GGUF 格式),以平衡推理速度与生成质量。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值