samout llm解码 幻觉更低更稳定
这段代码定义了一个简单的对话生成系统,包括模型加载、词汇表加载、以及基于给定提示生成文本的功能。下面是对代码的解析:
-
load_model_and_voc(device="cpu"):- 该函数用于加载预训练的模型和词汇表(vocabulary)。它首先从文件
total_voc.pkl中加载词汇表,并创建一个名为SamOut的神经网络实例。 - 模型参数的数量被打印出来以供参考。
- 然后尝试加载指定路径下的预训练权重到模型中,并将模型移动到指定的设备(CPU 或 GPU)上。
- 最后设置模型为评估模式(
.eval()),并返回模型和词汇表。
- 该函数用于加载预训练的模型和词汇表(vocabulary)。它首先从文件
-
gen_token(voc, model, prompt, max_len, rp=1.2, temp=0.13, top_k=16, device="cpu"):- 这个函数负责根据提供的提示(prompt)生成新的文本序列。
- 它接受多个参数,包括词汇表、模型、初始提示、最大生成长度等。
- 函数内部实现了重复抑制、温度调整和top-k采样等技术来控制生成文本的质量。
- 使用softmax函数对模型输出进行处理,并通过多类别抽样选择下一个token。
- 如果生成了特殊的开始标记
<|sos|>,则停止生成过程。 - 生成的每个token会立即打印在屏幕上,形成即时响应的效果。
-
t_infre():- 此函数是交互式推理循环,允许用户输入文本,然后调用
gen_token函数来生成回应。 - 它是一个无限循环,持续等待用户的输入直到程序被手动终止。
- 此函数是交互式推理循环,允许用户输入文本,然后调用
-
if __name__ == '__main__':- 这部分代码确保当脚本作为主程序运行时,会执行某些特定的操作或测试。
- 注释掉的代码可能是之前用于数据预处理、训练或其他实验的部分。
- 最终调用了
t_infre()函数来启动交互式推理。
需要注意的是,这里使用的 SamOut 类并没有在给出的代码片段中定义,因此你可能需要确保这个类已经被正确实现并在其他地方导入。此外,为了使代码能够正常工作,你需要确保所有依赖库(如 PyTorch 和 pandas)已经安装,并且所有提及的数据文件和模型权重文件都存在于正确的路径下。
def load_model_and_voc(device="cpu"):voc = pd.read_pickle("total_voc.pkl")net = SamOut(len(voc["voc"]), 1024 + 512, 64, 16)# net = SamOut(len(voc["voc"]), 512, 32, 8)print(sum([i.shape[0] * i.shape[1] for i in net.parameters() if len(i.shape) > 1]) + sum([i.shape[0] for i in net.parameters() if len(i.shape) == 1]))# net.load_state_dict(torch.load("pretrain_768.pth", map_location=device))# net.load_state_dict(torch.load("pretrain_sft_single.pth", map_location=device))net.load_state_dict(torch.load("pretrain_sft_single_1024.pth", map_location=device))# net.load_state_dict(torch.load("pretrain.pth", map_location=device))net.to(device)net.eval()return net, vocdef gen_token(voc, model, prompt, max_len, rp=1.2, temp=0.13, top_k=16, device="cpu"):print("agent:", end="", flush=True)for _ in range(max_len):prompt_list = []for i in prompt:if i not in voc["voc"]:prompt_list += [voc["voc"].index(ii) for ii in voc["voc0"].get(i)]else:prompt_list.append(voc["voc"].index(i))out, _ = model(torch.Tensor([prompt_list]).to(device).long())out = out[:, -1:]# 重复抑制for token_id in enumerate(prompt_list):out[:, :, token_id] /= rpscore = torch.softmax(out, -1)[0, 0]score, score_index = torch.sort(score,descending=True)score=score.detach().numpy()score_sum = np.cumsum(score)score_index = score_index.detach().numpy()score1=score[score_sum<0.8]if score1.size==0:score=score[:1]else:score=score1score_index=score_index[:score.size]out = score / tempv= out[:min(top_k, score.size)]idx_next = torch.multinomial(torch.Tensor(v), num_samples=1, generator=None)if voc["voc"][score_index[idx_next.item()]] == "<|sos|>":breakprompt += [voc["voc"][score_index[idx_next.item()]]]print(prompt[-1], end="", flush=True)def t_infre():model, voc = load_model_and_voc()while True:text = input("user:")gen_token(voc, model, ["<|user|>"] + list("{}".format(text)) + ["<|agent|>"], 64)print()if __name__ == '__main__':# print(pd.read_pickle("loss916"))# gen_one_voc()# gen_voc()# for i in range(17,18):# gen_pre_data_align(i, 16)# train()# gen_sft_single_data_align()# train_single()# sft 推理 一本正经的胡说八道已练成t_infre()
相关文章:
samout llm解码 幻觉更低更稳定
这段代码定义了一个简单的对话生成系统,包括模型加载、词汇表加载、以及基于给定提示生成文本的功能。下面是对代码的解析: load_model_and_voc(device"cpu"): 该函数用于加载预训练的模型和词汇表(vocabulary)。它首先…...
单片机:实现多任务处理(附带源码)
单片机实现多任务处理 多任务处理是现代操作系统的重要特性,通常通过多线程、多进程的方式来并行执行多个任务。在嵌入式系统中,由于资源有限,通常通过时间片轮转或中断机制来模拟多任务处理。本项目将展示如何在8051单片机上实现简单的多任…...
负载均衡oj项目:介绍
目录 项目介绍 项目演示 项目介绍 负载均衡oj是一个基于bs模式的项目。 用户使用浏览器向oj模块提交代码,oj模块会在所有在线的后端主机中选择一个负载情况最低的主机,将用户的代码提交给该主机,该主机进行编译运行,将结果返回…...
剑指Offer 03比特位计数
只是记录 题目链接 题目链接 自己想出来的 第一种解法 思路简述 遍历[0,n]之间的数字,对于每一个数字按照二进制的方式展开,判断最低位置是否为1,若为1则1,反之不加,直到该数字等于0就停止。 public static int[] …...
多音轨视频使用FFmpeg删除不要音轨方法
近期给孩子找宫崎骏动画,但是有很多是多音轨视频但是默认的都是日语,电视上看没办法所以只能下载后删除音轨文件只保留中文。 方法分两步,先安装FFmpeg在转文件即可。 第一步FFmpeg安装 FFmpeg是一个开源项目,包含了处理视频的…...
elasticsearch 使用enrich processor填充数据
文章目录 使用 POST 请求手动插入用户数据1. 创建 Enrich Policy步骤 1.1: 创建 Enrich Policy步骤 1.2: 执行 Enrich Policy 2. 创建 Ingest Pipeline步骤 2.1: 创建 Ingest Pipeline步骤 2.2: 配置 Enrich Processor 参数 3. 使用 Ingest Pipeline步骤 3.1: 使用 Pipeline 进…...
VMProtect:软件保护与安全的全面解决方案
在当今数字化时代,软件的安全性和保密性愈发重要。VMProtect 作为一款备受瞩目的软件保护工具,因其强大的功能和广泛的应用而成为开发者保护软件的首选方案。 VMProtect 是一款新一代的软件保护实用程序,支持多个编译器平台,包括…...
Web 毕设篇-适合小白、初级入门练手的 Spring Boot Web 毕业设计项目:教室信息管理系统(前后端源码 + 数据库 sql 脚本)
🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 1.0 项目介绍 开发工具:IDEA、VScode 服务器:Tomcat, JDK 17 项目构建:maven 数据库:mysql 8.0 系统用户前台和管理…...
第十二篇:linux下socket本地套接字通讯
使用套接字除了可以实现网络间不同主机间的通信外,还可以实现同一主机的不同进程间的通信,且建立的通信是双向的通信。socket进程通信与网络通信使用的是统一套接口,只是地址结构与某些参数不同。 用途 进程间通信:本地套…...
Spring Boot 2.1.7 数据源自动加载过程详解
在 Spring Boot 中,数据源的自动配置是框架中一个关键功能,本文将以 Spring Boot 2.1.7 版本为例,详细讲解在单数据源情况下数据源是如何自动加载的。我们通过源码分析,追踪整个加载流程。 1. 自动配置类的发现 Spring Boot 使用…...
【Vue.js 3.0】provide 、inject 函数详解
在 Vue 3 中,provide 和 inject 是用于跨组件层次结构进行依赖注入的一对 API。这些 API 主要用于祖先组件和后代组件之间的数据传递,尤其是当这些组件之间没有直接的父子关系时。 1. 示例 1.1 provide provide 函数用于在祖先组件中定义一个值&#…...
JVM(Java虚拟机)的虚拟机栈
JVM(Java虚拟机)的虚拟机栈是Java程序运行时的重要组件,以下是对其的详细解析: 一、概念与功能 概念:虚拟机栈也称为Java栈,是JVM为每个线程分配的一个私有的内存区域。每个线程在创建时都会创建一个虚拟…...
Elasticsearch02-安装7.x
零、文章目录 Elasticsearch02-安装7.x 1、Windows安装Elasticsearch (1)JDK安装 Elasticsearch是基于java开发的,所以需要安装JDK。我们安装的Elasticsearch版本是7.15,对应JDK至少1.8版本以上。也可以不安装jdk,…...
iPhone恢复技巧:如何从 iPhone 恢复丢失的照片
在计算机时代,我们依靠手机来捕捉和存储珍贵的回忆。但是,如果您不小心删除或丢失了手机上的照片怎么办?这真的很令人沮丧和烦恼,不是吗?好吧,如果您在 iPhone 上丢失了照片,您不必担心…...
vba批量化调整word的图和图表标题
vba代码 将图片进行居中操作 Sub ChangePictureFormate()Dim oPara As ParagraphDim oRange As RangeDim i As LongDim beforeIsPicture As BooleanbeforesIsPicture False 确保文档中至少有图片If ActiveDocument.InlineShapes.Count 0 ThenMsgBox "没有找到图片。&qu…...
【Flutter_Web】Flutter编译Web第二篇(webview篇):flutter_inappwebview如何改造方法,变成web之后数据如何交互
前言 欢迎来到第二篇文章,这也是第二个难题,就是原有的移动端本身一些页面H5的形式去呈现(webview),例如某些需要动态更换内容的页面,某些活动页面、支付页面,不仅仅做页面呈现,还包…...
【C语言的奥秘11】指针知识点总结(续)
目录 一、指针的运算 1、指针与整数相加减 2、指针-指针(地址-地址) 3、指针的关系运算 六、指针和数组 七、二级指针 八、指针数组 一、指针的运算 1、指针与整数相加减 看一下下面的代码: #include<stdio.h> int my_strlen(c…...
excel 列名是数据表 的字段名 ,单元格的值 是数据表对应字段的值,生成sql插入语句
在 Excel 中,按 Alt F11 打开 VBA 编辑器。在菜单栏选择 插入 -> 模块,在新模块中粘贴以下代码。 VBA 代码 Sub GenerateSQLInsertStatementsToFile()Dim ws As WorksheetDim lastRow As Long, lastCol As Long, i As Long, j As LongDim sql As S…...
AI Agent与MEME:技术与文化融合驱动Web3创新
AI Agent如何引领Web3新时代? 随着Web3与区块链技术的迅速发展,AI Agent作为人工智能与区块链的交汇点,正在逐步成为推动去中心化生态的重要力量。同时,MEME文化凭借其强大的社区驱动力和文化渗透力,在链上生态中扮演着…...
IO的入门
目录 1.IO概述1.1流的分类 2.字符流2.1 案例 1.IO概述 IO(Input/Output):输入和输出,指的是某个设备或环境进行数据的输入或者输出。例如:键盘的输入,再比如显示器就是输出设备,输出图像。 对于java来说输…...
【无标题】vLLM:推理吞吐与尾延迟的资源真相
Chunked Prefil 大小影响哪些? 影响TPOT 和TTFT。 吞吐吗。 吞吐是怎么定义的? 以及QPS怎么定义的,以及并发树的关系? https://support.huaweicloud.com/intl/en-us/bestpractice-modelarts/modelarts_llm_infer_5906026.html Red…...
3分钟搞定Windows软件安装难题:winget-install终极解决方案
3分钟搞定Windows软件安装难题:winget-install终极解决方案 【免费下载链接】winget-install Install WinGet using PowerShell! Prerequisites automatically installed. Works on Windows 10/11 and Server 2019/2022. 项目地址: https://gitcode.com/gh_mirror…...
别再手动标图了!用CVAT和YOLOv5搭建半自动标注流水线(保姆级避坑指南)
从零构建CVATYOLOv5半自动标注系统:工程化实践与效率革命 标注数据是AI开发中最耗时却无法绕过的环节。我曾为一个客户项目标注3万张工业零件图像,团队3人整整耗费两周——直到发现CVAT与训练好的YOLOv5模型结合,能将效率提升400%。本文将分…...
Vue 3 useModel与defineModel实战对比:如何根据项目需求选择最佳双向绑定方案
1. Vue 3双向绑定技术演进与核心概念 双向数据绑定一直是Vue框架的核心特性之一。在Vue 3.4版本中,官方引入了两种新的实现方式:useModel和defineModel。这两种API虽然目标相同,但在使用场景和实现方式上存在明显差异。 要理解它们的区别&…...
如何3步掌握Home Assistant SSH Web终端:从零到精通的管理指南 ✨
如何3步掌握Home Assistant SSH Web终端:从零到精通的管理指南 ✨ 【免费下载链接】app-ssh Advanced SSH & Web Terminal - Home Assistant Community Apps 项目地址: https://gitcode.com/gh_mirrors/ad/app-ssh 在智能家居系统的日常维护中࿰…...
[AI/应用/MCP] MCP Server/Tool 开发指南
1. 智能软件工程的范式转移:从库集成到原生框架演进 在生成式人工智能(Generative AI)从单纯的文本生成向具备自主规划与执行能力的“代理化(Agentic)”系统跨越的过程中,.NET 生态系统正在经历一场自该平台…...
探索Univer:构建企业级文档协作系统的全栈框架
探索Univer:构建企业级文档协作系统的全栈框架 【免费下载链接】univer Build AI-native spreadsheets. Univer is a full-stack framework for creating and editing spreadsheets on both web and server. With Univer Platform, Univer Spreadsheets is driven d…...
基于比迪丽模型的Transformer架构优化:提升图像生成质量
基于比迪丽模型的Transformer架构优化:提升图像生成质量 在图像生成领域,比迪丽模型凭借其出色的生成效果和稳定性赢得了广泛关注。但很多用户可能不知道,通过合理的Transformer架构优化,这个模型的图像生成质量还能再上一个台阶…...
translategemma-4b-it优化升级:Ollama部署后提升翻译质量的4个技巧
translategemma-4b-it优化升级:Ollama部署后提升翻译质量的4个技巧 你已经成功用Ollama部署了translategemma-4b-it,看着它把图片里的英文变成中文,是不是觉得挺神奇的?但用了几次后,你可能会发现一些问题:…...
MSSQL03:SQLServer数据库中的高级语法及其技巧
目录 一、日期相关 1.查询当前日期相关数据 2.查询特定时间区间 3.时间加减法 (1)加法 (2)减法 4.格式化日期 二、数据类型转化 1.Int -> Decimal 2.DateTime->OtherTime 3.DateTime->string 三、条件判断相关…...
