langchain 如何使用本地大模型(LLM)

langchain 很多例子里面,默认都是调用的OpenAI的模型,但是有时候我们希望使用自己本地的大模型。具体代码如下: 

from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline
from langchain import LLMChain,HuggingFacePipeline,PromptTemplate
import torch

model_path = "写入模型存在路径"
device = torch.device("cuda:0")
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_path, trust_remote_code=True, device_map="auto").half()
pipe = pipeline(
    "text-generation",
    model=model,
    tokenizer=tokenizer,
    max_length=512,
    top_p=1,
    repetition_penalty=1.15
)
llama_model = HuggingFacePipeline(pipeline=pipe)
template = '''
#背景信息# 
你是一名知识丰富的导航助手,了解中国每一个地方的名胜古迹及旅游景点. 
#问题# 
游客:我想去{地方}旅游,给我推荐一下值得玩的地方?"
'''
prompt = PromptTemplate(
    input_variables=["地方"],
    template=template
)
chain = LLMChain(llm=llama_model, prompt=prompt)
print(chain.run("天津"))

注意: 

这行代码一定要写成 device_map="auto"

AutoModelForCausalLM.from_pretrained(model_path, trust_remote_code=True, device_map="auto").half() 

如果代码写成.cuda(),具体如下

AutoModelForCausalLM.from_pretrained(model_path, trust_remote_code=True, ).half().cuda

会报错:

RuntimeError: Expected all tensors to be on the same device, but found at least two devices.

或者

warning : 

You are calling .generate() with the input_ids being on a device type different than your model's device. input_ids is on cuda, whereas the model is on cpu. You may experience unexpected behaviors or slower generation. Please make sure that you have put input_ids to the correct device by calling for example input_ids = input_ids.to('cpu') before running .generate().
 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MyBatis 核心配置讲解(上)

大家好,我是王有志,一个分享硬核 Java 技术的互金摸鱼侠。 前两篇的文章中我们分别介绍了 MyBatis 和 MyBaits 的应用组成,到这里基础篇的内容就结束了。 从今天开始,我们正式进入 MyBatis 学习的第二阶段:MyBatis 的…

【QT学习】9.绘图,三种贴图,贴图的转换,不规则贴图(透明泡泡),简单绘图工具制作

一。绘图的解释 Qt 中提供了强大的 2D 绘图系统,可以使用相同的 API 在屏幕和绘图设备上进行绘制,它主要基于QPainter、QPaintDevice 和 QPaintEngine 这三个类。 QPainter 用于执行绘图操作,其提供的 API 在 GUI 或 QImage、QOpenGLPaintDev…

maya blendshape

目录 shape编辑器 maya创建blendshape python 脚本 添加形变动画 查看顶点个数 shape编辑器 打开方式: 窗口-动画编辑器-形变编辑器 maya创建blendshape python 脚本 import maya.cmds as cmds# 创建基础网格 - 球体 baseMesh cmds.polySphere(name"bas…

Postman 工具发送请求的技巧与实践

在开发和测试 API 时,发送 JSON 格式的请求是一个常见需求。 在 Postman 中构建和发送 JSON 请求 创建一个新的请求 首先,在 Postman 启动界面上找到并点击 “New” 按钮,选择 “HTTP Request” 来开始新建一个请求。这一步骤允许你定义请…

Unity射击游戏开发教程:(7)Powerup的使用

确定 PowerUp 效果应持续多长时间 我在游戏中放置的第一个道具是三重射击。当玩家收集三重射击能量时,他们可以一次发射 3 束激光,而正常情况下只能发射 1 束激光。在实施道具时,您需要考虑它们的功能以及它将如何影响游戏玩法。至于三连射&

Linux-缓冲区(简单理解)

1. 缓冲区是什么 缓冲区就是一段内存空间。 2. 为什么要有缓冲区 IO写入有两种: 写透模式(WT) 成本高,效率低写回模式(WB) 成本低,效率高 写透模式:每次的文件写入都要立即刷新…

海外仓WMS管理系统:标准化海外仓管理模式,效率和管理模式双提升

就目前的跨境电商发展速度和体量来看,标准化海外仓管理的模式不再是一个选项,而是必走之路。 今天会重点和大家聊一下,海外仓企业应该如何利用好WMS管理系统,快速的标准化仓库管理的模式,以及大家比较关心的&#xff0…

JAVA读取文件完成词频统计

词频统计原数据和结果数据地址:https://download.csdn.net/download/LiHaoHang6/88845654?spm1001.2014.3001.5501 运行效果展示: 原数据展示: 词频统计思路: 1:先通过BufferedReader来读取本地文本文件,之后将文本…

excel 按照姓名日期年月分组求和

excel 需要按照 姓名 日期的年份进行金额求和统计,采用sumifs 进行统计 注意:sumifs 不支持 合并列拆分计算,合并列只会计算一个值 表格数据大概如下:(sheet) ABC姓名日期金额A2023/01/01500A2023/01/151500B2023/01/01200B202…

基于SpringBoot开发的同城租房系统租房软件APP小程序源码

项目背景 一、市场前景 随着城市化进程的加快和人口流动性的增强,租房市场正逐渐成为一个不可忽视的巨大市场。传统的租房方式往往存在着信息不对称、效率低下等问题,而同城租房软件的出现,则有效地解决了这些问题,为租房市场注…

云计算时代,企业面临的云安全风险

如今,随着云计算等新兴科技的发展,不同类型企业间的关联越来越多,它们之间的业务边界已被打破,企业上云成为了大势所趋。云计算应用帮助企业改变了IT资源不集中的状况,同时,数据中心内存储的大量数据信息&a…

Mediator 中介者

意图 使用一个中介者对象来封装一系列的对象交互。中介者使各个对象不需要显式地互相引用,从而使其耦合松散,而且可以独立的改变他们之间的交互。 结构 Mediator(中介者)定义一个接口用于各同事(Colleague&#xff0…

数值积分——复化梯形求积公式 | 北太天元

复化求积法的思想: 将区间 [ a , b ] [a,b] [a,b]进行 n n n等分,步长 h b − a n h\frac{b-a}{n} hnb−a​,等分点 x k a k h , k 0 , 1 , 2 , ⋯ , n x_{k}akh,k0,1,2,\cdots,n xk​akh,k0,1,2,⋯,n, 先在每个子区间 [ x k , x k 1 ] …

普惠金融淘金热:抢占‘高成长‘企业,抓住下一个十年的财富机遇!

官.网地址:合合TextIn - 合合信息旗下OCR云服务产品 2013年,十八届三中全会正式提出“发展普惠金融”,普惠金融自此上升为国家战略;十年来,我国普惠金融取得了长足发展,逐步构建了多层次、广覆盖的中国特…

文件上传漏洞-白名单检测

如何确认是否是白名单检测 上传一张图片与上传一个自己构造的后缀,如果只能上传图片不能上传其它后缀文件,说明是白名单检测。 绕过技巧 可以利用 00 截断的方式进行绕过,包括 %00 截断与 0x00 截断。除此之外如果网站存在文件包含漏洞&…

《环阳宗海逍遥游》

第一天:《六十八道拐》五月二日游兴浓,大观公园门囗逢。海埂西门再集合,蓝光城里意无穷。呈贡过后松茂过,阳宗镇上心欢融。宜良城中暂歇脚,六十八拐路难通。宜良住宿赏夜色,期待明朝再接龙。 第二天:《情人岛苗王峡行》…

【正点原子Linux连载】 第三十四章 Linux USB驱动实验 摘自【正点原子】ATK-DLRK3568嵌入式Linux驱动开发指南

1)实验平台:正点原子ATK-DLRK3568开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id731866264428 3)全套实验源码手册视频下载地址: http://www.openedv.com/docs/boards/xiaoxitongban 第三十…

模块化 手写实现webpack

模块化 common.js 的导入导出方法: require \ export 和 module.exports export 和 module.export nodejs 内存1.4G -> 2.8G cjs ESModule 主要区别: require属于动态类型:加载执行 同步 esmodul是静态类型:引入时并不会真的去…

mysql事故复盘: 单行字节最大阈值65535字节(原创)

背景 记得还在银行做开发,投产上线时,项目发版前,要提DDL的sql工单,mysql加1个字段,因为这张表为下游数据入湖入仓用的,长度较大。在测试库加字段没问题,但生产库字段加不上。 先说结论 投产…

[前端]NVM管理器安装、nodejs、npm、yarn配置

NVM管理器安装、nodejs、npm、yarn配置 NVM管理器安装 nvm(Node.js version manager) 是一个命令行应用,可以协助您快速地 更新、安装、使用、卸载 本机的全局 node.js 版本。 nvm下载地址:https://github.com/coreybutler/nvm-windows/releases 1.全部…