llama.cpp模型推理之界面篇

news2024/9/22 23:23:56

目录

前言

一、llama.cpp 目录结构

二、llama.cpp 之 server 学习

1. 介绍

2. 编译部署

3. 启动服务

4、扩展或构建其他的 Web 前端

5、其他


前言

在《基于llama.cpp学习开源LLM本地部署》这篇中介绍了基于llama.cpp学习开源LLM本地部署。在最后简单介绍了API 的调用方式。不习惯命令行的同鞋,也可以试试 llama.cpp 界面的交互方式,本章就详细介绍一下server。


一、llama.cpp 目录结构

整个目录比较简洁,没多少东西,以最少的代码实现最全的功能,值得学习。文档都很全,基本上在学习该推理框架时遇到或者没有想到,你都能在根目录或子目录的README.md 找到。

本章主要讲 server的界面。可以在examples/server下看看README。或者直接翻到根目录下打开README.md. 找到如下点击:

 

二、llama.cpp 之 server 学习

1. 介绍

 llama.cpp 的 server 服务是基于 httplib 搭建的一个简单的HTTP API服务和与llama.cpp交互的简单web前端。

server命令参数:

  • --threads N-t N: 设置生成时要使用的线程数.
  • -tb N, --threads-batch N: 设置批处理和提示处理期间使用的线程数。如果未指定,则线程数将设置为用于生成的线程数
  • -m FNAME--model FNAME: 指定 LLaMA 模型文件的路径(例如,models/7B/ggml-model.gguf).
  • -a ALIAS--alias ALIAS: 设置模型的别名。别名将在 API 响应中返回.
  • -c N--ctx-size N: 设置提示上下文的大小。默认值为 512,但 LLaMA 模型是在 2048 的上下文中构建的,这将为更长的输入/推理提供更好的结果。其他模型的大小可能有所不同,例如,百川模型是在上下文为 4096 的情况下构建的.
  • -ngl N--n-gpu-layers N: 当使用适当的支持(目前为 CLBlast 或 cuBLAS)进行编译时,此选项允许将某些层卸载到 GPU 进行计算。通常会导致性能提高.
  • -mg i, --main-gpu i: 使用多个 GPU 时,此选项控制哪个 GPU 用于小张量,对于这些张量,在所有 GPU 之间拆分计算的开销是不值得的。有问题的 GPU 将使用稍多的 VRAM 来存储暂存缓冲区以获得临时结果。默认情况下,使用 GPU 0。需要 cuBLAS.
  • -ts SPLIT, --tensor-split SPLIT: 使用多个 GPU 时,此选项控制应在所有 GPU 之间拆分多大的张量。SPLIT 是一个以逗号分隔的非负值列表,用于分配每个 GPU 应按顺序获取的数据比例。例如,“3,2”会将 60% 的数据分配给 GPU 0,将 40% 分配给 GPU 1。默认情况下,数据按 VRAM 比例拆分,但这可能不是性能的最佳选择。需要 cuBLAS.
  • -b N--batch-size N: 设置用于提示处理的批大小。默认值:512.
  • --memory-f32: 使用 32 位浮点数而不是 16 位浮点数来表示内存键 + 值。不推荐.
  • --mlock: 将模型锁定在内存中,防止在内存映射时将其换出.
  • --no-mmap: 不要对模型进行内存映射。默认情况下,模型映射到内存中,这允许系统根据需要仅加载模型的必要部分.
  • --numa: 尝试对某些 NUMA 系统有帮助的优化.
  • --lora FNAME: 将 LoRA(低秩适配)适配器应用于模型(隐含 --no-mmap)。这允许您使预训练模型适应特定任务或领域.
  • --lora-base FNAME: 可选模型,用作 LoRA 适配器修改的层的基础。此标志与 --lora 标志结合使用,并指定适配的基本模型.
  • -to N--timeout N: 服务器读/写超时(以秒为单位)。默认值:600.
  • --host: 设置要侦听的主机名或 IP 地址. 默认 127.0.0.1.
  • --port: 将端口设置为侦听。默认值:8080
  • --path: 从中提供静态文件的路径 (default examples/server/public)
  • --embedding: 启用嵌入提取,默认值:禁用.
  • -np N--parallel N: 设置进程请求的槽数(默认值:1)
  • -cb--cont-batching: 启用连续批处理(又名动态批处理)(默认:禁用)
  • -spf FNAME--system-prompt-file FNAME :将文件设置为加载“系统提示符(所有插槽的初始提示符)”,这对于聊天应用程序很有用. 
  • --mmproj MMPROJ_FILE: LLaVA 的多模态投影仪文件的路径.

2. 编译部署

    编译部署请参考《基于llama.cpp学习开源LLM本地部署》。会在跟目录下生成 ./server

3. 启动服务

./server -m ../models/NousResearch/Llama-2-7b-chat-hf/ggml-model-q4_0.gguf -c 2048

服务启动成功后,如下:

点击或者在浏览器中输入:http://127.0.0.1:8080

 可以看到:交互模式,提示词、用户名、提示词模板还有模型参数等设置。打开“更多选型”,如下:

这些参数默认就行,也可以根据实际情况调整。

在最下面输入一些内容,点击“send”,就能与模型进行聊天了。

从学习的角度来看,是不是很方面。不用敲命令,也不用单独搭建前端。直接就能体验大模型,也能学习里面机制与原理。

4、扩展或构建其他的 Web 前端

web静态文件的默认位置是“examples/server/public”。您可以通过运行./server并将“--path”设置为“./your-directory”并导入“/completion.js”来访问 llamaComplete() 方法来扩展前端。

A simple example is below:

<html>
  <body>
    <pre>
      <script type="module">
        import { llama } from '/completion.js'

        const prompt = `### Instruction:
Write dad jokes, each one paragraph.
You can use html formatting if needed.

### Response:`

        for await (const chunk of llama(prompt)) {
          document.write(chunk.data.content)
        }
      </script>
    </pre>
  </body>
</html>

5、其他

更多功能和参数,详见llama.cpp/examples/server/README.md。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1369269.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智汇云舟受邀出席《城市轨道交通公共安全防范安全评价标准》专家评审会

1月3日&#xff0c;由中国城市公共交通协会归口的《城市轨道交通公共安全防范安全评价标准》&#xff08;以下简称“《标准》”&#xff09;送审稿审查会顺利召开。该标准由同方威视技术股份有限公司、上海新海信通信息技术有限公司和中安保实业集团有限公司主编&#xff0c;北…

Java常用类---包装类

包装类 包装类简介 Java语言是典型的面向对象编程语言&#xff0c;但是其中的8种基本数据类型并不支持面向对象编程&#xff0c;基本类型数据不具备"对象"的特性&#xff0c;即&#xff1a;没有携带属性以及没有方法可以调用。 为了解决上述问题&#xff0c;java为…

类与对象中篇

前言 在上篇我们讲解了类与对象的基础框架&#xff0c;中篇我们将讲解类与对象的基本内容&#xff0c;即类的六个默认成员函数。 一、类的6个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类。 问题&#xff1a; 空类中真的什么都没有吗&#xff1f; 答案是&a…

解读 Sobit v2:铭文资产跨链更注重安全、易用性

铭文市场的发展正在从早期的“无序”进入到“有序”阶段&#xff0c;我们看到从 12 月份以来&#xff0c;比特币生态内的多个应用纷纷宣布获得融资。这表明&#xff0c;目前仍旧有大量的资金有意向铭文领域&#xff0c;同样铭文赛道新一轮浪潮或许正在酝酿。 另一方面&#xff…

HarmonyOS 编写副标题 解决 ubTitle 可能淘汰问题

目前 harmonyos 中 title属性目前用的还正常 但是ubTitle副标题 会提示我们 可能要淘汰了 虽然说 我们目前 强行用 还是可以生效 但可能 哪天版本更新移除了这个属性 代码就报错了 我们可以通过Builder 来写这个副标题 和 标题 Entry Component struct Index {build() {Row(…

ssm基于WEB的文学网的设计与实现+vue论文

基于WEB的文学网的设计与实现 摘要 如今&#xff0c;科学技术的力量越来越强大&#xff0c;通过结合较为成熟的计算机技术&#xff0c;促进了学校、医疗、商城等许多行业领域的发展。为了顺应时代的变化&#xff0c;各行业结合互联网、人工智能等技术&#xff0c;纷纷开展了管…

Linux的网络配置命令和网络设置实操

目录 一、网路命令 1.ifconfig 2.hostname 3.route 4.netstat 5.ss&#xff08;socket statistics&#xff09; 6.ping 7.nslookup 8.tcpdump 二、实操 1.单个网卡修改 2.双网卡配置 3.bond网卡绑定 一、网路命令 查看Linux基础的网络设置 网关route -nIP地址ifc…

python进阶 -- 日志装饰器详解

日志 日志&#xff1a;记录程序运行的时候&#xff0c;出现的问题&#xff0c;或者说验证流程是否正常 在实际工作中&#xff0c;python的脚本命令一般是放在服务器执行的linux系统 日志其实就是记录程序运行时出现的问题、或者正常的打印&#xff0c;协助出现问题的时解决排查…

[书生·浦语大模型实战营]——基于 InternLM 和 LangChain 搭建你的知识库

0. 背景知识 0.1 InternLM InternLM 是一个开源的轻量级训练框架&#xff0c;旨在支持大模型训练而无需大量的依赖。通过单一的代码库&#xff0c;它支持在拥有数千个 GPU 的大型集群上进行预训练&#xff0c;并在单个 GPU 上进行微调&#xff0c;同时实现了卓越的性能优化。…

分析一个项目(微信小程序篇)二

目录 首页&#xff1a; 发现&#xff1a; 购物车&#xff1a; 我的&#xff1a; 分析一个项目讲究的是如何进行对项目的解析分解&#xff0c;进一步了解项目的整体结构&#xff0c;熟悉项目的结构&#xff0c;能够知道每个组件所处在哪个位置&#xff0c;发挥什么作用。 接…

CRM系统是否适合企业,有哪些判断标准?

现如今&#xff0c;以客户为中心不再是一句空话&#xff0c;哪个企业能与客户建立长久的关系&#xff0c;那它就能获得业绩的增长。CRM管理系统的初衷就是维护客户关系&#xff0c;通过深入了解客户&#xff0c;提高转化率&#xff0c;并推动业绩增长。企业在选型时&#xff0c…

游戏引擎巨头Unity 裁员 25%;章泽天净资产600亿;恒大汽车刘永灼被抓;抖音将“抖币”更名为“钻石”;董宇辉新账号将于今晚首播

今日精选 • 游戏引擎巨头 Unity 计划裁员 25%&#xff0c;去年底曾关闭全球多处办公室• 恒大汽车刘永灼被抓&#xff0c;股价闪崩20%&#xff0c;刚丢35亿救命钱• 抖音将“抖币”更名为“钻石”• 章泽天登胡润财富榜&#xff1a;净资产600亿• 董宇辉新账号未开播已有400万…

React Native集成到现有原生应用

本篇文章以MacOS环境开发iOS平台为例&#xff0c;记录一下在原生APP基础上集成React Native React Native中文网 详细介绍了搭建环境和集成RN的步骤。 环境搭建 必须安装的依赖有&#xff1a;Node、Watchman、Xcode 和 CocoaPods。 安装Homebrew Homebrew是一款Mac OS平台下…

【QT-UI】

1.使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 #include "mainwindow.h" #include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), …

36-javascript输出方式,弹框:普通,confirm弹框,prompt弹框,控制台输出:普通,warm,error

1.页面打印 <body><p>你真是一个小机灵鬼</p><script>// 页面打印document.write("打印内容");</script> </body> 2.覆盖文档 <body><p>你真是一个小机灵鬼</p><script>// 覆盖文档window.onload f…

TinkerBoard2跑BuildRoot

我的主板没有EMMC&#xff0c;只能烧录到TF卡 3.1、格式化TF卡 使用$ sudo fdisk -l查看设备&#xff0c;找到对应的设备路径&#xff0c;如/dev/sdd 使用$ sudo fdisk /dev/sdd命令格式化 d //删除分区 n //新建分区 3.2、使用SD_Firmware_Tool烧录固件 我用的是SD_Firmwar…

Spring——Spring整合MyBatis

Spring整合MyBatis 1.创建工程 1.1.pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"…

R语言频率分布直方图绘制教程

本篇笔记分享R语言绘制直方图的方法&#xff0c;通过多种展示风格对数据进行可视化&#xff0c;主要用到ggplot、ggpubr等包。 什么是直方图&#xff1f; 直方图(Histogram)&#xff0c;又称质量分布图&#xff0c;是一种统计报告图&#xff0c;由一系列高度不等的柱子表示数…

前端适配750px设计稿

全局引入 (function(doc, win) {const docEl doc.documentElement,resizeEvt orientationchange in window ? orientationchange : resizeconst setFont function() {let clientWidth docEl.clientWidth;if (!clientWidth) return;if (clientWidth > 750) {docEl.styl…

社科院与美国杜兰大学金融管理硕士项目——金融在职人员的当下与未来

随着经济的蓬勃发展和全球化的疾驰&#xff0c;金融行业已稳坐现代经济的心脏位置。在这翻涌的时代浪潮中&#xff0c;金融从业人员的重要性愈发突出&#xff0c;他们不仅是企业的坚实支柱&#xff0c;更是推动经济前行的强大引擎。然而&#xff0c;科技进步和市场变幻的风云也…