使用llama-cpp-python制作api接口

文章目录

    • 概要
    • 整体操作流程
    • 技术细节
    • 小结

概要

使用llama-cpp-python制作api接口,可以接入gradio当中,参考上一节。
llama-cpp-python的github网址

整体操作流程

  1. 下载llama-cpp-python。首先判断自己是在CPU的环境下还是GPU的环境下。以下操作均在魔搭提供的免费GPU环境下。
#CPU
pip install llama-cpp-python
#GPU
CMAKE_ARGS="-DGGML_CUDA=on FORCE_CMAKE=1" pip install llama-cpp-python --no-cache-dir

在这里插入图片描述

  1. 启动服务
    模型可以采用量化的版本,也可以采用原版本大小,看自己的硬件环境。
# 模型注意力层有32层,cpu8核,可以自己修改。
python -m llama_cpp.server --model 模型路径/模型名称.bin --n_gpu_layers 32 --m_thread 8

在魔搭上启动可能报错如下:
在这里插入图片描述
在这里插入图片描述
这也就是缺少依赖包,解决如下:

pip install starlette-context
pip install pydantic-settings

成功启动后会显示:
在这里插入图片描述
在这里插入图片描述

  1. 测试一下能不能行
    api_key 随便写,一个模板而已,因为是自己构建的api。
    base_url 就是上面图所示的,为什么加v1等会在下面解释 端口号自己可以改的,在启动服务的时候设置。
!pip install -q openai
import openaiopenai.api_key = 'qqqqqqqqqqqqqqqqqq'  
openai.base_url = "http://localhost:8000/v1/"  
#模型参数设置
completion = openai.completions.create(model="llama",max_tokens=256,   top_p = 0.2,temperature = 0.6,prompt="出现了黄疸、恶心、呕吐等症状,可能患了什么疾病?",
)
print(completion.choices[0].text)

在这里插入图片描述
因为采用的是量化后模型,反应速度也算比较快了,用时2.6s。
在这里插入图片描述

技术细节

  • API的接口缘由可以查看github中的llama_cpp/server/app.py,有详细的路由解释。

小结

至此完成了一个整体流程:从微调到量化到部署到api最终显示在网页上,涉及到的技术很多,还有很多细节需要学习,记录一下美好的时光,希望有个好的结果。敬礼!!!

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

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

相关文章

java占位符替换的五种方式

简介 在Java开发中,如何通过使用占位符来输出文本串,以提高代码的可维护性和扩展性。 背景 在业务开发中,文本串的输出常见,但直接拼接字段不利于后续修改。 解决方案 使用字符串模板和占位符,便于后续内容的修改…

springboot+js实现SSE消息推送

一、后端 1、新建工具类SseServiceTool package com.example.system_manage.utils;import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;import java.util.Map; i…

【Linux杂货铺】期末总结篇4:shell编程

🌈个人主页:聆风吟_ 🔥系列专栏:Linux实践室、网络奇遇记 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 一. ⛳️什么是Shell脚本?二. ⛳️Shell 入门三. ⛳️Shell 变量3.1 🔔变…

Kotlin中Unit、Any和Nothing

Unit Unit是一个特殊的类型,它表示“没有意义的值”的单元类型。在Kotlin中,当你不需要函数返回任何具体值时,可以使用Unit类型。 和Java 中 void一样。 Any 所有非空类的父类 Any?所有类的父类 类似Java中Object Nothing 表示一个函数或…

# 如何解决 App Store 审核中的 4.3(a) 问题:Guideline 4.3(a) - Design - Spam

如何解决 App Store 审核中的 4.3(a) 问题:Guideline 4.3(a) - Design - Spam 4.3(a) 审核问题是指:你的应用与其他开发者提交的应用在二进制文件、元数据和/或概念上存在相似之处,仅有微小差别。这通常会导致你的应用被视为垃圾应用而被拒绝…

java启动springboot项目前根据环境变量动态改编yaml文件的变量值

需求:在学习FC时,启动一个springboot项目时需要由用户填写自己的某些特殊变量,解决方案是在FC中由用户自己添加环境变量,通过java代码获取到环境中的环境变量,在springboot启动前注入到yaml文件中。 1.java获取环境变…

volatile相关知识

volatile的两大作用 保持线程的可见性 可见性:当一个线程修改一个共享变量时,其他的线程可以都可以直到到这个值被修改了。 在每次访问 volatile 变量时,都会直接从主内存中读取最新值,而不会使用线程本地的缓存,从…

旗晟巡检机器人的应用场景有哪些?

巡检机器人作为现代科技的杰出成果,已广泛应用于各个关键场景。从危险的工业现场到至关重要的基础设施,它们的身影无处不在。它们以精准、高效、不知疲倦的特性,担当起保障生产、守护安全的重任,为行业发展注入新的活力。那么&…

如何使用简鹿水印助手或 Photoshop 给照片添加文字

在社交媒体中,为照片添加个性化的文字已经成为了一种流行趋势。无论是添加注释、引用名言还是表达情感,文字都能够为图片增添额外的意义和风格。本篇文章将使用“简鹿水印助手”和“Adobe Photoshop”这两种工具给照片添加文字的详细步骤。 使用简鹿水印…

SpringBoot 解决 getSession().getAttribute() 在负载均衡环境下无法获取session的问题

在Spring Boot中,使用getSession().getAttribute()方法时遇到在负载均衡环境下无法正确获取session属性的问题,通常是由于session属性存储在单个服务器的内存中,而负载均衡会导致用户的请求被分配到不同的服务器上,因此无法找到在…

IDEA实现NPM项目的自打包自发布自部署

目录 前言 正文 操作背景 NPM自发布 Package自发布 NPM部署 尾声 🔭 Hi,I’m Pleasure1234🌱 I’m currently learning Vue.js,SpringBoot,Computer Security and so on.👯 I’m studying in University of Nottingham Ningbo China&#x1f…

射线和平面求交

射线和平面求交 1、平面方程 如果已知平面的高度(即沿法向量方向的距离)为 height,平面方程可以表示为: n ^ ⋅ p h e i g h t \bold{\hat{n}} \cdot p height n^⋅pheight p p p 是平面上的任意一点 height 的正负取决于法向量…

W外链创建抖音私信卡片教程,私信卡片跳转微信工具

W外链地址wai.cn 在数字化时代的浪潮中,私域流量的价值愈发凸显,成为企业获取用户、建立品牌忠诚度、提升转化率的关键手段。抖音,作为当下最热门的短视频社交平台之一,其用户基数庞大、互动性强,为企业私域引流提供了…

一些颜色的RGB整理

(214,219,233) (215,220,230) (189,189,189) (193,210,240) (190,210,240) (0,60,119) (0,60,120) (230,230,250)

百度地图基于范围的搜索

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 文章目录 系列文章目录前言一、空间范围中点位数量的快速统计算法1.引入库2.百度地图基于范围的搜索 Java 前…

文件访问:C/C++/MFC

文章目录 1. C语言1.1 打开并读取文件1.2 写入文件1.3 读取二进制文件1.4 写入二进制文件1.5 文件指针的移动 2. C2.1 包含头文件2.2 打开文件2.3 检查文件是否成功打开2.4 读取文件2.5 写入文件2.6 关闭文件2.7 文件指针的移动和获取位置2.8 实例 3. C语言和C文件打开模式4. M…

分类题解清单

目录 简介MySQL题一、聚合函数二、排序和分组三、高级查询和连接四、子查询五、高级字符串函数 / 正则表达式 / 子句 算法题一、双指针二、滑动窗口三、模拟四、贪心五、矩阵六、排序七、链表八、设计九、前缀和十、哈希表十一、字符串十二、二叉树十三、二分查找十四、回溯十五…

初识Docker及管理Docker

Docker部署 初识DockerDocker是什么Docker的核心概念镜像容器仓库 容器优点容器在内核中支持2种重要技术:Docker容器与虚拟机的区别 安装Docker源码安装yum安装检查Docker Docker 镜像操作配置镜像加速器(阿里系)搜索镜像获取镜像查看镜像信息…

【LLMs】大语言模型分类

随着大语言模型(LLM)技术的发展,它们主要被划分为两个类别:基础LLM(Base LLM)和指令调优LLM(Instruction-Tuned LLM)。Base LLM侧重于广泛的语言理解和生成能力,而Instru…

计算机网络技术期末复习

一. 填空 在采用电信号表达数据的系统中,数据有 数字数据 和 模拟数据 两种。域名系统DNS是一个 分布式数据库 系统。TCP/IP的网络层最重要的协议是 IP互连网协议,它可将多个网络连成一个互连网。 4. 在TCP/IP层次模型的网络层中包括的协议主要有ARP 、…