- 博客(41)
- 收藏
- 关注
原创 QLoRA微调后的Llama3模型在本地运行
首先使用Llama-3-1-8B作为例子进行解析。如何Llama-3-1-8B想要在本地电脑运行,那么它需要多少GPU才能完美的运行起来了,大约需要19.2G的GPU才能运行。那么我们的机子最好是4090,哎。。。。。。。这成本太高了,普通人是无法承受的。因为很多人看到大模型运行成本这么高,所有都在想使用什么方式降低成本,又能达到接近的效果。参数高效微调后的大模型就是此产物,参数高效微调相关知识可以看我之前写的文章。
2024-12-23 10:27:09
303
原创 Transformers参数高效微调之LoRA
LoRA: Low-Rank Adaptation of Large Language Models是微软研究人员为处理微调大语言模型的问题而引入的一项新技术。具有数十亿个参数的强大模型(例如 GPT-3)为了适应特定任务或领域而进行微调的成本非常高。LoRA 建议冻结预先训练的模型权重并注入可训练层 (秩分解矩阵) 在每个变压器块中.这大大减少了可训练参数的数量和 GPU 内存要求,因为不需要为大多数模型权重计算梯度。
2024-12-14 21:59:12
1513
原创 Transformers 参数高效微调(P-tuning,Prefix-Tuning)
P-Tuning(Prompt Tuning)是一种基于预训练模型进行微调的方法,其基本思想是在预训练模型的输出层添加一个可学习的Prompt可学习的软提示(Soft Prompts),以调整模型的输出。Prompt **可学习的软提示(Soft Prompts)**可以看作是一种特殊的上下文信息,通过将其添加到模型的输入中,可以引导模型产生期望的输出。在微调过程中,通过对Prompt进行训练,可以实现对预训练模型的微调。
2024-12-13 11:36:54
478
原创 参数高效微调之Prompt Tuning
是一种高效微调技术,旨在通过设计和优化输入提示(prompt)来指导预训练模型完成特定任务,而无需修改模型本身的权重。它是一种参数高效微调(Parameter-Efficient Fine-Tuning, PEFT)方法,尤其适用于大规模预训练模型(如 GPT、BERT、T5 等)的下游任务。Prompt 是模型输入中的额外信息,用于引导模型执行特定任务。Hard Prompt 是指通过显式的自然语言描述作为提示,直接构造输入文本来引导预训练模型完成特定任务。这种提示通常是由人类设计的,使用自然语言表达。
2024-12-12 16:11:27
1108
原创 参数高效微调(BitFit)
BitFit 是一种在小规模数据集上进行微调(fine-tuning)的技术,主要应用于大规模预训练模型,尤其是在深度学习和自然语言处理(NLP)领域中。BitFit 通过仅微调模型中的偏置项(bias term),而不更新模型的其他参数(如权重),来实现高效且节省资源的微调方式。相比传统的微调方法,BitFit 大大减少了计算和存储开销,同时还能在一定程度上保留模型的性能。
2024-12-11 16:51:53
714
原创 参数高效微调 (PEFT)(理论遍)
参数高效微调 (PEFT) 是一种针对特定任务或数据集提高预训练大型语言模型 (LLM) 和神经网络性能的方法。通过训练一小组参数,并保留大型预训练模型的大部分结构,PEFT 可以节省时间和计算资源。神经网络经过诸如自然语言处理 (NLP) 或图像分类等一般任务训练后,可以专注于相关的新任务,而无需完全重新训练。PEFT 是一种资源高效的方法,可以构建高度专业化的模型,而无需每次都从头开始。
2024-12-10 21:25:00
632
原创 transformers生成式对话机器人
生成式对话机器人是一种先进的人工智能系统,它能够通过学习大量的自然语言数据来模拟人类进行开放、连贯且创造性的对话。与基于规则或检索式的聊天机器人不同,生成式对话机器人并不局限于预定义的回答集,而是可以根据对话上下文动态地生成新的。这类机器人通常依赖于深度学习框架,特别是Transformer架构(如GPT-3、BERT等)或其他循环神经网络(RNN),例如长短期记忆网络(LSTM)。
2024-12-06 19:04:34
1113
原创 transformers生成式对话机器人之文本摘要(T5)
文本摘要是从大量文本中提取关键信息并生成简短概括的过程。它在信息检索、新闻报道、学术研究、法律文档处理等领域有着广泛的应用。文本摘要可以帮助用户快速了解文档的主要内容,而无需阅读整个文档文本摘要是一个经典的序列到序列(seq2seq)任务,有一个输入文本和一个目标文本。这也正是编码器-解码器Transformers的优势所在。文本摘要主要分为两大类:抽取式摘要(Extractive Summarization)和生成式摘要(Abstractive Summarization)。
2024-12-04 17:57:34
1112
原创 transformers实现一个检索机器人(一)
检索机器人是一种能够自动搜索和提供信息的系统,它可以帮助我们快速找到需要的信息。这类机器人通常使用自然语言处理(NLP)技术来理解用户的查询,并利用搜索引擎或数据库来获取相关信息。那么我们要通过transforme实现什么样的检索机器人了。一个简化版的检索机器人,本地知识库+文本相似度(自然语言处理(NLP))。本地知识库使用到了向量模型,文本相似度就是自然语言处理技术了。检索机器人计划用三篇文章进行讲解。文本相似度模型是用来衡量两个或多个文本片段之间的相似程度的工具。
2024-12-03 21:41:37
947
原创 MySQL Linux 离线安装
选择第一个MySQL Community Sever社区版,因为这个是免费的。进入官网,下载对应的需要MySQL版本,这里是历史版本。使用FinalShell 客户端连接服务器。3, 添加系统mysql组和mysql用户。1.将下载好的安装包上传到服务器端。4, 创建并修改mysql数据目录。mysql的离线安装就到此完成了。将压缩安装包拖入local下。8,启动数据库和远程登录。
2024-11-29 14:02:28
644
1
原创 transformers训练(NLP)阅读理解(多项选择)
在阅读理解任务中,有一种通过多项选择其中一个答案来训练机器的阅读理解。比如:给定一个或多个文档h,以及一个问题S和对应的多个答案候选,输出问题S的答案E,E是答案候选中的某一个选项。这样的目的就是通过文档,问题,多个答案选其中一个,就是让机器更好文档中的含义,提高机器的阅读理解。是不是感觉似陈相识,这不就是语文考试的必考题,阅读理解吗。。。。。。。。。。。。。。
2024-11-28 20:42:55
546
原创 pipeline 详解
transformers库中的pipeline是一种极简方式使用大模型推理的抽象,将所有大模型分为语音(Audio)、计算机视觉(Computer vision)、自然语言处理(NLP)、多模态(Multimodal)等4大类,28小类任务(tasks)。
2024-11-27 11:08:00
858
原创 BERT 详解
BERT(Bidirectional Encoder Representations from Transformers)是由 Google 在 2018 年提出的一种预训练语言模型。BERT 在自然语言处理(NLP)领域取得了重大突破,因为它能够有效地捕捉文本的上下文信息,从而在各种 NLP 任务中表现出色。以下是 BERT 模型的详细讲解,包括其架构、训练方法、应用场景和使用方法。
2024-11-25 14:59:32
4801
1
原创 seqeval详解
seqeval 是一个用于评估序列标注任务(如命名实体识别 NER)的 Python 库。它提供了一种方便的方式来计算各种评价指标,如准确率(Precision)、召回率(Recall)、F1 分数等。seqeval 支持多种标签格式,并且可以处理多标签的情况。准确率: accuracy = 预测对的元素个数/总的元素个数查准率:precision = 预测正确的实体个数 / 预测的实体总个数召回率:recall = 预测正确的实体个数 / 标注的实体总个数。
2024-11-24 12:04:52
627
原创 langchain 记忆力(memory),让语言大模型拥有记忆
存储对话历史中的信息的能力称之为’记忆‘,这种工具可以单独使用,也可以无缝的集成到一条链中,记忆的存储长度是程序执行到结束,执行一次的所有记忆。记忆的主要应用场景就是聊天机器人,聊天机器人的一个关键功能是它们能够使用先前对话的内容作为上下文。记忆力在实际使用的逻辑:记忆力在使用中可以分一下几个场景:记忆力的几个重要的类:会话缓冲区。
2024-09-26 10:26:37
617
原创 langchain 提示词(二)使用示例
提示词模版示例,这里分为两块部分,使用固定示例集(少量固定回答示例)和使用示例选择器动态的生成示例(少量动态回答示例)。这两块主要使用的组件分别是FewShotChatMessagePromptTemplate、SemanticSimilarityExampleSelector。提示词示例也就是使用少量回答示例的作为条件结合llm进行问题回答。使用少量固定回答示例实现过程。使用少量动态回答示例实现过程。使用少量动态回答示例代码。
2024-09-25 16:48:43
563
原创 langchain 提示词(一) 字符提示词和聊天提示词
LangChain中的提示词(Prompts)是用户与模型交互的方式,即模型的输入,通过提示词可以让模型返回用户期望的内容。提示词在LLM(Large Language Models,大语言模型)领域中扮演着关键角色,它不仅是模型接收信息的入口,也是模型生成输出的起点。提示词也是用于生成语言模型提示词的预定义脚本。语言模型能够接受的提示词是字符串或聊天消息列表。提示词中提供了两个提示词模版:PromptTemplate:字符提示词模版,模版支持任意数量的变量,包括无边量。
2024-09-25 09:40:20
451
原创 langchain Runnable和内置方法
为了尽可能轻松创建自定义链,Langchain实现了“Runnable”协议(接口)。这是一个标准接口,可以轻松定义自定义链并以标准方式调用它们。比如 chat model、LLMs、output parser、retrievers、Prompt 等。都是实现了这个实现了这个协议。stream:流式返回响应的块invoke:在输入上调用链batch:在输入列表上调用链astream:异步流式返回响应的块ainvoke:异步在输入上调用链abatch:异步在输入列表上调用链。
2024-09-24 14:19:06
708
原创 langchain的构成
langchain的构成其包含langchain-core,langchain-community,langchain,langgraph,langserve,langSmith。
2024-09-23 18:01:21
1111
原创 langchain介绍以及简单实用
LangChain是一个用于开发由大语言模型支持的应用程序的框架。它提供了大量组件来帮助我们构建LLM支持的应用程序。其主要是有六大功能组成。LLMs(大语言模型(生成式语言模型)),Prompts(提示词),Memory(记忆力),chains,Document Loaders(各种格式文件的加载器),Vector Stores(向量的存储)
2024-09-23 11:11:37
914
原创 nginx 自定义http模块
1,想让nginx识别自己定义的http模块,需要创建一个config文件,这样Nginx在编译的时候,会将你自定义的模块编译进去。2,自定义的http模块必须遵守Nginx的模块规范。ngx_command_t 命令行解析结构ngx_http_module_t 模块的上下文结构ngx_module_t 模块结构以上是自定义http两大原则。//处理配置项0,NULL},//模块上下文//新模块定义//配置项对应的回调函数。
2024-08-08 14:47:59
325
原创 nginx 配置详解
Nginx是一个高性能的HTTP和反向代理服务器,特点是占用内存少,并发能力强,事实上Nginx的并发能力确实在同类型的网页服务器中表现好。Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率,能经受高负载的考验,有报告表明能支持高达50000个并发连接数。单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们说的负载均衡。降低原来单个服务器的压力。
2024-08-08 11:37:56
1966
1
原创 linux离线安装nginx,redis
下载:二、环境依赖检查nginx安装需要很多外部依赖,先登录到linux服务器2.1 gcc检查gcc -v出现如下,说明gcc是安装了的如果最后一行没有出现对应gcc版本信息,那就要去手动下载了 ,下面的部分是下载安装各种依赖gcc 清单一个个找到下载,小技巧:可以直接复制名字定位,ctrl+f把下载好的gcc依赖统一上传到服务器的某个文件夹下,或者把笔者提供的zip包上传上去,解压即可,以下是几个解压相关的命令不想安装unzip,那就都单独上传到同一个文件夹下即可。
2024-08-06 15:24:40
690
原创 mac 开发用具安装
2,继续访问 https://www.jetbrains.com.cn/,下载与你的操作系统(macOS)兼容的版本:。4,在步骤2的页面上,有一个大方的块,鼠标放上去会变成复制到剪贴板图标,点击复制激活码。1,访问网站 https://3.jetbra.in,选择第一个网速比较快的连接。3,完成下载后,安装IntelliJ IDEA(其他jetbrains工具)。安装完成后,找到下载的文件中的 scripts 文件夹。5,粘贴复制的激活码,点击 Activate。
2024-07-18 11:43:57
1128
原创 Netty 基础知识和基本使用
Netty 是一个广受欢迎的异步事件驱动的Java开源网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。Netty 的一个特点就是入门相对比较容易,但是真正掌握并精通是非常困难的。原因有如下几个:1)涉及的知识面比较广。
2024-06-18 10:15:19
906
原创 Java NIO(非阻塞读写)和BIO(阻塞读写)
一个线程可以处理成千上万的客户端连接,底层调用的3个epoll函数,通过事件响应机制(监听机制)实现事件的轮询。epoll实现事件的监听机制,有事件收发就处理,没有就会堵塞进行监听。
2024-06-17 19:10:16
690
原创 spring boot连接数据库报错问题
事情是老项目部署新环境中且需要更换就数据库,由原来的的MySQL替换为国产瀚高数据库,我处理的方式是将驱动替换掉,在对配置中的url和driver-class-name进行替换就可以了。除此外我将原来的nacos-config做了去除,因为这是项目的配置基本不会改变,所以做了操作。对于这个问题网上还有一种存在的问题,就是spring boot项目没有自动加载到application.yml,那么我们在启动类上添加这个注解就可以了。这种报错在创建一个新的项目时,填写完配置,在本地启动项目时,很常见的报错。
2024-05-30 20:23:20
373
原创 java spring boot 将不同环境配置迁入common中
继上篇文章讲解真实开发中对spring boot单机架构搭建。真实的开发中,我们会有多个环境,如果将yml的数据库配置直接放到web-api中。那么部署项目不同环境中,都要提前进行更改,这样极不方便,而且容易出错。这里选择一种将数据库配置放到common中,依据环境不同选择对应环境。具体看下面详情。
2024-05-27 16:57:03
263
2
原创 java 保姆级,创建spring boot简单工程
在快速发展的软件开发领域,快速构建并部署健壮、可维护的应用程序是每个开发者的追求。Spring Boot,作为Spring框架的一个子集,凭借其自动配置、简化部署和强大的社区支持,成为了开发者们的首选工具。今天,我们将通过一个简单的教程,带你走进Spring Boot的世界,学习如何快速构建一个基于Spring Boot的简单Web应用。
2024-05-27 14:06:59
690
原创 spring boot集成极光推送,创建应用,生成app Demo, api实现
如果使用到了微服务架构,那么极光推送,可能是单独是一个服务,可能公司存在多个应用,那么这个推送就要兼容多个应用的,这是构建架构时需要考虑的。java的极光推送api中用于发送消息的入口类是JPushClient,什么类型的发送通过这个类调用对应的方法就可以实现。在开发中主要考虑的是网络,在测试环境中都是内网环境中,是不能直接对外访问的。2,这个sdk是对应应用开发的SDK集成,用于对应应用的推送,这里主要是app开发人员使用。注意,这里是步骤是必须的,这里会影响后面的调试,如果不做的话,后面无法进行调试。
2024-04-18 16:02:06
767
原创 shiro 源码
session是前后端会话认证,通过会话可以确认请求的有效性,针对安全做处理。下面就是主要的源码,文字说明的比较少,主要是自己画的流程图,图里带了源码。
2024-04-16 16:54:10
172
原创 mac Anaconda创建环境Pycharm使用
在Anaconda也能看到所创建的所有环境,点击那个环境就是激活那个环境,有播放图标的说明那个环境被激活。(1) 进入环境 conda activate pythonProject3。最后点击ok就可以了。Pycharm就可以使用新创建的环境了。(2) 输入which python查询环境路径。这里就选择上面第一步通过终端获取的环境路径。使用终端用1,2行命令就可以创建环境了。选择Preferences。
2024-03-18 22:17:04
673
原创 shiro真实开发使用以及需要处理的问题
在实际开发中使用shiro,那就要考虑集群部署和多端登录问题。之前出了一篇简单使用,为了让我们初步对shiro认识。真实使用那么就要shiro原码和执行流程要有一个基础的了解,不然就不知从哪里下手。开发中的集群部署和多端登录问题,主要考虑的就是Session。Session 运行流程主要涉及到用户认证、授权、会话创建、管理及销毁等多个方面。处理好Session那么集群部署和多端登录问题也就得以解决。subject:主体,可以是用户也可以是程序,主体要访问系统,系统需要对主体进行认证、授权。
2024-03-17 18:36:23
838
原创 SMTP服务器、Mailu部署、Java实现邮件发送
SMTP服务器是一种专门用于发送电子邮件的互联网服务器。SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)是一种用于电子邮件传输的标准互联网协议。这些服务器充当电子邮件的“邮递员”,负责将发出的邮件从发送者传输到接收者的邮箱。让我们通过一个例子来更好地理解SMTP服务器的工作原理:示例:A发送电子邮件给BA编写邮件:A在他的电子邮件客户端(如Outlook、Gmail网页版等)上撰写一封邮件,准备发送给B。邮件发送至SMTP服务器。
2024-03-16 15:07:48
2220
原创 Java shiro 详解以及使用
SecurityManager 是 Shiro 架构的心脏,它负责协调内部各安全组件,管理内部组件实例,并通过它来提供安全管理的各种服务。在运行时,Shiro 会根据用户的角色和权限来决定是否允许其访问特定的资源或执行特定的操作。同时,Shiro 提供了丰富的配置文件和注解支持,允许开发者通过配置文件或注解来配置安全策略,而无需编写大量的代码。Shiro 支持缓存机制,用于提高身份验证和授权的性能。Shiro 的设计目标是简化应用程序的安全性,让开发者能够快速地集成安全特性,而无需深入了解复杂的安全概念。
2024-03-07 19:57:25
1514
原创 Java 跨域产生以及Java中的常用处理方法
跨域,或者称为跨源资源共享(CORS),是Web开发中经常遇到的一个概念。它涉及到浏览器安全策略和不同源之间的资源共享问题。当一个Web页面(源A)尝试去请求另一个不同源的Web资源(源B)时,由于浏览器的同源策略限制,这种请求通常会被阻止,这就是跨域。
2024-02-29 17:08:24
610
1
原创 CABasicAnimation,CAKeyframeAnimation,CATransition,CAAnimationGroup,UIBezierPath之间做动画的不同点和各自的使用范围。
CABasicAnimation,CAKeyframeAnimation,CATransition,CAAnimationGroup,UIBezierPath之间做动画的不同点和各自的使用范围。 CABasicAnimation:定义:通过设定起始点,终点,时间,动画会沿着你这设定点进行移动。可以看做特殊的CAKeyFrameAnimation,它是与CAKeyFrameAnimati
2015-12-28 14:44:17
1370
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人