自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 fastAPI接口(普通流式响应和大模型流式响应)

无论是流式还是非流式输出,vllm的LLM函数创建的模型对象通常以同步的方式工作,处理多并发情况时只能以队列形式一个个输出。对于流式输出,它也可以逐步返回数据给前端,但这是假流式,因为后端以及把所有的文本都输出了,然后我们又把文本一个个传给前端。:异步引擎同样可以支持流式和非流式输出,但它允许你以非阻塞的方式处理这些输出。大模型的流式输出(Streaming Output)和非流式输出(Non-streaming Output)是指在生成文本或其他输出时,如何将结果返回给用户或下游系统。

2024-12-18 21:32:28 4449

原创 fastAPI接口——设置API密钥令牌

uvicorn main:app --host 0.0.0.0 --port 8000 --reload启动后,执行以下代码即可看到效果,当密钥不同时返回:Failed to connect to 127.0.0.1 port 777 after 0 ms: 连接被拒绝。FastAPI 中设置 API 密钥令牌(API Key)是一种常见的安全措施,可以确保只有拥有有效密钥的客户端才能调用 API。

2024-12-18 19:26:01 391

原创 vllm加速(以Qwen2.5-7B-instruction为例)与流式响应

什么是vllm?vLLM 是一个高性能的大型语言模型推理引擎,采用创新的内存管理和执行架构,显著提升了大模型推理的速度和效率。它支持高度并发的请求处理,能够同时服务数千名用户,并且兼容多种深度学习框架,方便集成到现有的机器学习流程中。通过一个名为的新型注意力算法来解决传统LLM在生产环境中部署时所遇到的高内存消耗和计算成本的挑战。PagedAttention算法能有效管理注意力机制中的键和值,将它们分割成更小、更易于管理的块,从而减少了vLLM的内存占用,并使其吞吐量超过传统LLM服务方法。

2024-12-18 18:59:11 2999

原创 fastAPI接口的请求与响应——基础

Pydantic 模型提供了声明式的数据验证,这意味着你可以在模型类中定义属性及其类型,Pydantic 将自动执行验证。如果传入的数据不符合模型定义的规则,Pydantic 将抛出异常。3) 在这个例子中,Payload 类有两个属性:key1 和 key2,它们都被声明为字符串类型 (str)。当 FastAPI 接收到一个 HTTP 请求时,它会尝。

2024-12-18 14:55:56 516

原创 GPU显卡负载监测

上述代码用于自动检测gpu温度,显存占用等信息,并将结果保存到gpu_temperature_log.txt中。项目地址:https://github.com/wilicc/gpu-burn。gpu-burn是一个压力测试工具,用于测试GPU的性能问题。具体安装及用法见项目的README.md。

2024-12-18 14:19:10 216

原创 大模型的同步、异步及多并发测试

如果以异步方式与LLM进行交互时,可以发送多个请求而无需等待每个请求完成,这可以显著提高效率,尤其是在处理多个并发请求或长时间运行的任务时。虽然提供了更高的性能和灵活性,但编写和管理异步代码可能会增加开发的复杂性,需要开发者对异步编程有一定的了解。还可以通过输出底层大模型的的每一个字符,看看大模型对于多请求是否在同时推理(原大模型一次只能推理一个任务,必须要设置多并发才可以同时推理多个·任务)这就是LLM的同步,同步调用可能会导致资源利用率不高,因为每次调用都会占用线程直到操作完成,代码也易于理解编写,

2024-12-17 10:08:00 1935

原创 Linux开放端口问题(同一局域网)

跟以前版本有很大区别,CentOS7这个版本的防火墙默认使用的是firewall,与之前的版本使用iptables不一样,使用firewalld开启关闭防火墙与端口。

2024-10-28 10:40:51 430

原创 USB自动启动导致eth断开,ssh无法远程连接服务器

结果:发现原来是usb0网卡自动连接,导致eth断开,当usb网卡可以自动启动时,那么在lo下面会有一个usb0的显示(现在没有是因为我已经把它关闭了),执行ifconfig usb0 down可关闭指定的usb0网络设备。而我的问题就是usb以太网自动连接了,导致原本连接的eth1断开。执行ifconfig usb0 down后解决!在使用ssh连接服务器时,发现隔一会就连接不上了,其它都没有什么问题,当我执行ifconfig时,发现如下图所示,在lo的下面还会有一个usb0的网卡。

2024-10-23 15:54:57 240

原创 neo4j:ubuntu环境下的安装与使用

我下载的是neo4j-community-4.4.34-unix.tar.gz,所以使用:tar -axvf neo4j-community-4.4.34-unix.tar.gz 解压。MERGE (a)-[:FRIENDS{time: 2000}]->(b) 或者 CREATE (a)-[:FRIENDS]->(b)上述语法是为Person实体类型的张无忌实体和侠客实体类型的张无忌实体创建一个关系,这个关系还存在一个time属性。注意这里的箭头 -->是有方向的,表示是从a到b的关系。

2024-09-18 11:03:11 1555 1

原创 记录——深度学习、大模型常见问题

被计算和存储(大多数答模型都是transformer-decoder的结构,Transformer的计算复杂度和空间复杂度随输入长度N呈二次方增长,序列长度N -> 2N,所需的计算资源和内存就会变为4N,增长4倍;答:因为现代深度学习框架(PyTorch、Tensorflow)主要数据结构是张量(Tensor),它们的计算都是基于张量进行的,且张量支持自动求导,这对于训练神经网络至关重要。模型推理所占据的显存包括模型加载时的缓存,除此之外,还会受输入的大小和复杂性增加显存的使用,例如长输入会导致更多的。

2024-09-12 21:21:03 329

原创 深度学习:数据集处理简单记录

上述是生成一个简单数据集代码,最后的features的shape为torch.Size([1000, 2]),labels的shape为torch.Size([1000, 1])。注意数据集的所有数据都是tensor张量,用于在gpu上计算.上述为调用torch.utils.data中的Dataset和DataLoader类应用于自己的数据集,来训练模型。上述为训练模型时的数据增强代码(主要是裁剪+翻转),用于提高模型的鲁棒性。需要注意训练模型时候的模型输入的图片需要尺寸统一且为tensor格式。

2024-09-12 15:14:29 369

原创 FlashAttention介绍(1.0版本)

FlashAttention:IO感知的精确注意力。通过GPU硬件的特殊设计,尽可能的避免在HBM中读取或者写入注意力矩阵。以自注意力的计算为例,其计算流程为:1)首先从全局内存(HBM)中读取矩阵Q和K,并将计算好的矩阵S再写入全局内存。2)之后再从全局内存中获取矩阵S,计算Softmax得到矩阵P再写入全局内存。3)之后读取矩阵P和矩阵V ,计算得到矩阵O,写入HBM。我们可以发现在自注意力分数的计算过程中,不但产生了中间注意力矩阵S、P,并且还对HBM频繁的写入S和P。

2024-06-05 17:04:47 1057

原创 什么是预训练?

预训练

2024-05-20 19:58:00 1129

原创 FP32,TF32,FP16,BF16介绍

浮点数是一种数据类型,指有小数点的实数。以二进制存储在计算机中时,包括符号位,指数位和小数位(尾数位)。浮点型数据分为:单精度(float,4字节,32比特)与双精度(double,8字节,64位比特)不同于定点数,浮点型数据以二进制存储在计算机中,因此计算时一般都是有误差,都是近似。(一般期望两个浮点型的误差相互抵消,所以一般使用同类型的浮点数进行相互计算例:0.1用二进制表示,将是一个无限循环小数,因此会出现舍入误差,造成精度损失。进制相互转换:1)整数十进制转化为二进制:除2取余数。

2024-01-19 20:41:08 8858

原创 VS Code连接服务器,Ctrl + 点击 无法跳转至函数底层(python)

在使用vs code连接远程服务器,打开python项目时,发现如下图所示,试了试ctrl + 鼠标左键无法链接跳转至函数内部,对代码开发造成极大影响。随后发现没有选择环境python interpreter,可无论是设置还是vscode右下角都找不到select interpreter。后来发现vs code初次远程连接服务器时,需要在服务器上启用一个拓展,其实就在上图处重新install一下即可。

2024-01-16 11:03:04 3845 3

原创 Linux:创建用户(未完待续)

需要在/etc/passwd文件中,找到如下图所示的命令,将sh 改为 bash,最后再关闭命令窗口,重载一下即可。bash内置了跟踪和记录用户输入命令的功能,这些命令历史记录被存储在当前用户的~/.bashhistory文件中。(这是因为/etc/sudoers文件默认是只读的,对于root也是,因此需要对sudoers文件添加写权限)刚刚成功创建的用户没有sudo权限,需要现在/etc/sudoers文件中给予权限,才能使用sudo命令。3)编辑sudoers文件,用新建用户名添加一行命令即可。

2024-01-03 20:56:58 442

原创 Linux:Ubuntu下miniconda的下载安装

注:上述1-5,执行若报权限不足:Permission denied时,需要在命令前加上sudo。进入下载目录后,运行上述命令,安装过程中遇见的选择全部输入yes。3. 配置环境变量(使得conda在任意位置都可以直接使用)5. 输入conda,出现conda的信息则安装成功。或者,关闭窗口再重新打开。下载的具体目录自己设置。

2024-01-03 16:32:19 2033

原创 关于selenium库浏览器webdriver不能被找到的问题(firefox)——NoSuchDriverException

谷歌驱动的各历史版本:https://registry.npmmirror.com/binary.html?火狐的各历史版本:https://ftp.mozilla.org/pub/mozilla.org//firefox/releases/谷歌浏览器的历史版本:https://downzen.com/en/windows/google-chrome/versions/火狐各驱动历史版本:https://github.com/mozilla/geckodriver/releases/

2023-11-23 12:46:33 1696

原创 深度学习:lora微调

正常神经网络:输入x -> 全连接层(w) -> 输出y,训练时输入x,y数据来更新参数w,使得loss最小,w达到最优。但在大模型中,参数量都是几十几百亿的没计算量极大,在进行梯度计算时,内存硬件都无法支持。LoRA 的基本原理是冻结预训练好的模型权重参数,在冻结原模型参数的情况下,通过往模型中加入额外的网络层,并只训练这些新增的网络层参数。r + d*r,并且r

2023-10-27 19:13:57 2667

原创 深度学习:详解梯度下降、随机梯度下降、小批量随机梯度下降

但每次迭代中只使用一个样本计算梯度,因此每次迭代的梯度都是有噪声的,毕竟不是所有样本的均值,所以下降(下山)会走一点弯路,但总体因为总的迭代次数很多,所以随机梯度下降法最终会收敛到最优解 ,还是划得来的。我们可以其看作一个下山的过程:对于梯度下降而已,是找到了最优的下山路径,所有它的曲线比较直,而对于随机梯度下降,它因为随机选一个样本ti来近似f(x)——所有样本的损失平均,所以找的并不是最优的下山路径,但方向是对的,只是要走弯路,因此它下山的曲线比较曲折。随机梯度下降,是指在时间t,

2023-10-27 16:13:57 4256 2

原创 深度学习:什么过拟合?什么是欠拟合

上图左侧就是欠拟合,右侧就是过拟合。一个由于模型太过于简单难以拟合所有数据,一个模型记住了所有的训练数据,但泛化误差却很大(因为我们需要的模型并不是记住所有的训练数据,而是可以帮我们进行预测未知features的label)。如上图所示,模型容量就是模型复杂度,低容量模型难以拟合所有的数据(欠拟合),高容量的模型可以记住所有的训练数据(过拟合)。甚至于,为了追求低的泛化误差,甚至可以使得模型过拟合!模型对未知数据预测的误差即为泛化误差,

2023-10-27 15:31:07 183

原创 深度学习:什么是梯度爆炸/梯度消失?

梯度消失:神经网络在进行反向传播(BP)的时候会对参数W进行更新,梯度消失就是靠后面网络层能够正常的得到一个合理的偏导数,但是靠近输入层的网络层,计算的到的偏导数近乎零,W几乎无法得到更新。梯度爆炸:是靠近输入层的网络层,计算得到的偏导数极大。公式:w1 = w0 - lr * △w△w过大和过小就是梯度爆炸、消失。

2023-10-27 15:21:36 130

原创 git:建立远程仓库上传项目

token在github上设置:选择setting->developer settings->personal access tokens。再点击generate new token即可(若原本有token,需要先删除),然后自己设置事件、仓库、权限即可(一般来说上传项目,必须将权限中的workflows,contents权限选择上)。然后生成的token就是你在第7步需要输入的密码了。是因为你这个文件夹之前连接过别的仓库所以需要先:git remote rm origin。master为分支名称。

2023-10-22 12:44:55 71

原创 Java:restudy——SpringBoot中的controller

2)当需要同时返回页面和字符串时,需要使用@Controller,来注解这个Controller类,然后在返回字符串的方法上,使用@ResponseBody,来注解那个具体的方法。3)当不需要返回页面时,可以直接使用@RestController注解,来代替@Controller和@ResponseBody,即可直接返回结果。1)当Controller类存在返回页面的控制器时,不可以使用@RestController来注解这个Controller类。它主要用于提交数据,例如表单提交、文件上传等。

2023-10-01 20:10:25 86

原创 深度学习:详解word2vec + 实践操作(包括text2word)

Text2vec 的输入是整个文本序列,输出是文本序列对应的向量表示。Word2vec 的训练目标是最小化相似单词在空间中的距离或最大化不相似单词在空间中的距离。Text2vec 的训练目标是最小化文本之间的距离或最大化相似文本的相似度。Text2vec 和 Word2vec 都是用于将文本(文本中的单词或字符)转换为向量的方法。Word2vec 的输入是单个单词,输出是单词对应的向量表示。Text2vec 通常用于处理整个文本序列的任务,如文本分类、文本相似度计算、文本聚类等。

2023-09-21 21:05:05 7129 1

原创 Java:IDEA社区版创建Spring Boot

网上搜了许多方法,大多是File->Settings->Plugins,再在IEAD或者直接网站上直接下载Spring Assistant,Spring Boot Helper之类的插件。网上搜到的关于IDEA创建Spring Boot项目,通常是使用IDEA企业版通过新建项目 -> Spring Initializr进行创建,操作十分简单。在https://start.spring.io/网址中在线创建Spring Boot项目,下载后,再使用IDEA打开运行。打开项目,运行main函数。

2023-09-20 20:06:33 433

原创 Java:jdk安装 + 环境配置

下载jdk下载地址:https://www.oracle.com/cn/java/technologies/downloads/archive/选择对应版本的jdk根据自己的系统,进行下载(最好是Installer)双击下载的exe文件,傻瓜安装即可点击此电脑、点击鼠标右键选择属性再点击系统高级设置点击系统变量进行修改修改系统变量:1.新增一个JAVA_HOME (jdk地址)2.点击Path, 点击新建,写入以下内容(也可以直接写jdk地址, 而不使用JAVA_HOME)验

2023-09-20 19:32:33 65

原创 笔记:《动手学深度学习》——NLP

isinstance(net,nn.Module)判断模型是否自定义:使用库内预先包装好的模型:net.parameters() 获取模型参数使用自定义模型:net.params获取模型参数(params为自定义属性)

2023-09-19 19:53:45 300

原创 笔记:《ChatGPT原理与实战》第一章 了解ChatGPT

2017年《Attention Is All You Need》论文首次提出 基于自我注意力 机制的模型2017年前,自然语言领域的主流模型还是RNN(优点:可以很好的处理具有时间序列的数据,但在处理较长序列,如长文章、图书时,存在模型不稳定或模型过早停止有效训练的问题)Transformer模型存在6500万个可调参数,它就是一个基于自我注意力机制的模型,是当时最先进的LLM什么是GPT(2018年推出)?GPT(Generative Pre-trained Transformer),即生成式预

2023-09-19 10:07:45 211

原创 深度学习:详谈P(查准率,准确率,Precision),R(查全率,召回率,Recall),F1值

定义:acc=predict_right_num/predict_num (准确率)P=真正预测准确的数量/预测是准确的数量 (精确率)R=真正预测准确的数量/所有真正好的数量 (召回率)F值是:F(k) = ( 1 + k ) * P * R / ( ( k*k ) * P + R )   注释:k>0 度量了 查全率 对 查准率 的相对重要性。k>1查全率有更大影响;k<1查准率有更大影响。    F(1) = 2 * P * R / ( P + R )

2023-09-18 19:58:53 1879

原创 Python:word,excel,json操作

df = pd.DataFrame(data, columns=[‘列名1’, ‘列名2’])     #选择data格式为[[],[],[],[],…data.values.tolist()     # 将excel表转化为[[],[],[],[],…,[]]的格式,一个[]为一行。print(data.at[0, ‘A’])     # 打印第一行第一列的单元格数据。读取excel—openpyxl。读取excel—pandas。

2023-09-11 20:51:03 1139

原创 深度学习:huggingface简单介绍---常用函数(数据集处理+dict+model),简单使用(tokenzier + model),简单例子(中文分类+中文填空+中文句子关系推断)

huggingface是一个开源社区,它提供了先进的NLP模型,数据集、以及其它便利工具。huggingface提供的模型非常多,但主要的模型为:自回归: GPT2 Trasnformer-XL XLNet自编码: BERT ALBERT RoBERTa ELECTRA自回归模型:预测下一个词,因为使用x获取y叫做回归,所有x预测下一个x称为自回归自编码模型:还原出本身,根据上下为还原出本身的词Seq2Seq: 从一个文本序列到另一个序列,比如机器翻译。

2023-08-23 11:39:58 4261

原创 Python:jieba介绍

Inverse Document Frequency(逆文档频率):指一个词在所有文档中出现的频率的倒数( l o g ( 文档集合中的文档总数 / 包含该单词的文档数 ) ),用于衡量一个词的普遍程度。逆文档频率越大,表示一个词越独特,重要程度越高。例如,在一个包含1000篇文档的文档集合中,某个单词在100篇文档中出现过,则该单词的IDF为 l o g ( 1000 / 100 ) = 1.0。例如,在一篇包含100个单词的文档中,某个单词出现了10次,则该单词的TF为 10 / 100 = 0.1。

2023-08-18 11:03:04 107

原创 深度学习:Langchain-ChatGLM项目介绍

在图中可以发现,进行vector search时,找到对应的匹配文本后,并不是将该已知信息文本返回,还要将它的上一个和下一个分段也扩充一起返回(防止语义丢失,原本只有100字限制,经过上下文扩充后达到250字左右),并与query提问组成了prompt,交给LLM自然语言模型。注意:匹配的文本可能不是只取top1,而是top5取前五个。这时有多个上下文分段了,需要再处理,可能会有上下文分段扩充多遍的情况,此时会再进行 重新排序+去重 , 避免不同段扩充之后,扩充了相同内容,浪费了语言模型的字符总数。

2023-08-17 11:18:24 1389

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除