自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

大多_C的博客

根正苗红好青年

  • 博客(65)
  • 收藏
  • 关注

原创 BERT推理显存爆满?7个实用技巧教你快速优化!显存优化的最佳实践指南

即使是在推理阶段,也可以将输入数据分成较小的批次(batch),这样每次推理只处理较少的数据,从而减少显存占用。具体来说可以减小 batch size,逐步降低直到显存能够容纳。BERT 的显存占用与输入序列的长度直接相关。可以尝试裁剪输入文本,使得序列长度减少。特别是对很长的文本,可以设置合理的最大长度(如128或256),从而减少计算需求。虽然主要用于训练,但在推理时可以通过减少内存开销来节省显存。可以通过调整模型以支持这种技术,减少中间计算结果的缓存。

2024-09-20 10:27:43 611

原创 torch.stack()方法在数据集构造中的应用

是沿着新维度将多个张量堆叠在一起,适用于将同一维度的张量变成更高维的张量。是沿着已有维度进行拼接,适用于将多个张量在某个维度上合并。在你的任务中,可以将<e1:xxx>和<e2:xxx>的向量拼接成一个更长的向量,用于后续处理。

2024-09-10 17:15:34 496

原创 torch.cat 在数据集构建中的作用

的作用是将存储在列表中的每个句子的input_ids张量沿着第 0 维(batch 维度)拼接,生成一个批次的张量,以便后续批量处理。

2024-09-10 16:31:00 292

原创 Dataset 和 DataLoader 常见用法

Datasetcollate_fnDataset类:用来加载和管理数据,通过实现__len__和来定义数据集的大小和如何获取一个数据样本。DataLoader类:负责将Dataset数据打包成批次,支持并行加载、数据打乱等操作。内置数据集:可以使用来加载常见数据集,如MNIST和CIFAR-10。自定义批次处理:通过collate_fn可以灵活处理特殊类型的数据,比如不同长度的文本序列。这些工具极大地方便了深度学习模型的数据处理,使得训练和评估更加高效。

2024-09-10 15:45:35 392

原创 两种常用损失函数:nn.CrossEntropyLoss 与 nn.TripletMarginLoss

适用于分类任务,用于衡量模型输出的类别分布与真实标签之间的差距。适用于对比学习,通过比较锚点、正样本和负样本的嵌入向量,确保正样本更接近锚点,负样本远离锚点。在这个训练流程中,两者结合使用,以同时优化分类任务和对比学习任务中的关系表示。

2024-09-08 22:54:39 453

原创 如何用RoBERTa高效提取事件文本结构特征:多层次上下文建模与特征融合

通过基于 RoBERTa-BASE 的特征提取器,我们能够高效地提取事件文本的结构特征,包括段落和篇章的上下文表示。通过使用 [CLS] 标记来表示整体结构特征,结合多层融合方法来捕捉不同深度的上下文信息,可以为后续事件分析、分类和关联任务提供强有力的输入特征。

2024-09-04 14:49:13 295

原创 思维链(Chain-of-Thought, CoT)和自一致提示(Self-Consistency)

思维链提示(CoT):帮助模型逐步推理问题的每一步,适合需要多步骤推理的问题。自一致提示:通过多次推理采样并聚合结果,进一步增强了推理的准确性和一致性,特别适合应对复杂推理任务。

2024-09-04 13:04:28 665

原创 揭秘GLM-130B爆火秘诀:颠覆性自回归填空和二维位置编码的训练黑科技

GLM-130B 是基于 Transformer 架构的双语(中文和英文)语言模型,拥有 1300 亿个参数。与常见的 GPT 模型不同,GLM 采用了一种独特的自回归空白填充预训练目标,以更好地捕捉上下文之间的关系。

2024-09-04 12:15:25 838

原创 python json jsonl 的用法

JSONL格式是一种非常实用的数据存储格式,特别适合处理大型、结构化的数据集。逐行读取:有效处理大文件,节省内存。简便性:每一行都是独立的JSON对象,便于解析和处理。灵活性:可以很容易地将数据追加到已有文件中。通过上述方法,您可以轻松地在Python中读取、写入和处理JSONL格式的数据。

2024-08-28 12:30:39 1791

原创 clone() 和 detach()

您提出了一个非常好的问题。

2024-08-25 20:56:36 202

原创 torch.einsum 爱因斯坦求和约定

是一个强大的函数,用于执行爱因斯坦求和约定(Einstein summation convention)。它可以简洁地表达复杂的张量运算。这两步操作共同构建了对比学习所需的相似度矩阵,使模型能够学习区分正样本和负样本,从而学习到有效的特征表示。

2024-08-25 20:48:07 322

原创 BERT模型架构

BERT中的每个BertLayer通过自注意力机制、中间层和输出层协同工作,实现了强大的上下文理解能力。自注意力机制使得模型能够关注输入序列中的不同部分,而中间层和输出层通过非线性变换和维度调整增强了模型的表达能力。通过这些组件的组合,BERT能够在各种自然语言处理任务中取得优异的性能。

2024-08-25 17:56:50 1011

原创 二分类时 sigmod 为等价 softmax

两个类别(二分类)情况下,softmax 确实等价于 sigmoid 函数。其中 z1 和 z2 是网络对两个类别的原始输出(logits)。这里,我们将分子分母同时除以 exp(z1)。这正好是 sigmoid(x) 的形式。可以一个简单的案例,展示如何使用神经网络中的Sigmoid激活函数来解决二分类问题。我们将使用Python和深度学习库Keras来实现这个示例。假设我们有一个简单的数据集用于二分类任务,例如对某些特征进行分类以预测结果是"0"还是"1"。

2024-08-25 14:43:36 454

原创 多进程并行(如 PyTorch 的 DistributedDataParallel,DDP)和多 GPU 并行(如 DataParallel)的对比

虽然不能说多 GPU 并行(DataParallel)效果一定更好,但在大多数现代深度学习应用中,特别是涉及多 GPU 或分布式训练时,多进程并行(DistributedDataParallel)通常会提供更好的性能和扩展性。选择哪种方法最终取决于具体的应用场景、可用资源和复杂度需求。多进程并行(如 PyTorch 的 DistributedDataParallel,DDP)和多 GPU 并行(如 DataParallel)确实有很大的区别,但并不能简单地说多 GPU 并行效果一定更好。

2024-08-25 10:23:53 456

原创 上采样和下采样的区别

在实际应用中,选择上采样还是下采样取决于具体的问题、数据集特征和模型需求。有时甚至会结合使用这两种方法来达到最佳效果。通过一个具体的例子来详细解释上采样和下采样的区别。让我们想象一个关于水果的数据集。现在我们要处理这个数据集。目的: 减少数据量,通常是减少多数类的样本。目的: 增加数据量,通常是增加少数类的样本。新的总数: 300个水果。新的总数: 30个水果。

2024-08-24 10:47:55 227

原创 表示崩塌(representation collapse)

表示崩塌(representation collapse)是自监督学习,特别是对比学习中的一个关键问题。

2024-08-12 14:31:38 256 1

原创 PyTorch 的多进程功能及其常见使用

PyTorch 的多进程功能强大而灵活,可以显著提升训练效率,特别是在多 GPU 环境下。根据具体需求和硬件配置,选择合适的多进程策略可以大大加速深度学习模型的训练过程。这种方法更接近原生 Python 多进程,提供更多控制。模块的封装,专门为 PyTorch 优化。这是最常用的方法,特别适合多 GPU 训练。模块实现,这是 Python 自带的。PyTorch 的多进程主要通过。

2024-08-06 12:26:52 432 1

原创 argparse模块-位置参数

位置参数是命令行参数的一种,它们根据命令行中出现的位置来解析,而不是像可选参数那样通过参数名来解析。换句话说,位置参数的解析取决于它们在命令行中的顺序,而不是它们前面的标志。在 Python 的argparse模块中,位置参数是通过在中不使用前缀(如--或)来定义的。位置参数根据命令行中出现的位置来解析。设定位置参数时,在argparse中不使用前缀。启动指令中的位置必须按照定义的顺序提供位置参数。位置参数不能随意放置,它们必须按照顺序出现在命令行中。

2024-08-06 12:16:42 254

原创 git pull 注意事项

操作并且涉及到合并操作时,Git 会打开默认的文本编辑器(在这种情况下是 nano),以便你编写合并提交(merge commit)消息。这个消息将记录在合并提交中,解释为什么进行了这次合并。完成这些步骤后,Git 会继续处理合并操作,然后你就可以继续进行其他 Git 操作了,例如推送到远程仓库。在这个页面中,你可以看到一些提示和帮助信息。

2024-08-05 18:14:39 325

原创 Python 的 `os` 模块来设置脚本的工作目录

模块来设置脚本的工作目录,这样即使你的运行路径不同,脚本也能找到相应的文件。你可以在脚本开头添加代码来切换到正确的目录。文件,无论你从哪个目录运行脚本。选择一种适合你的方式即可。这两种方法都可以确保你的脚本能找到。你可以使用 Python 的。脚本中设置工作目录为。

2024-07-24 15:13:08 167

原创 futures.index(future)用法

这一行代码用于在futures列表中查找已完成的 Future 对象future的索引。该索引代表这个 Future 对象在futures列表中的位置。

2024-07-09 17:11:39 387

原创 ACL2023 | 如何用175条种子数据打造顶级指令模型?揭秘self-instruct:媲美InstructGPT001的秘密武器

请写一封以猫的视角写的信。帮我填写一个工作申请表。编写一个将华氏度转换为摄氏度的代码。其他指令……编写一个将摄氏度转换为华氏度的代码。我们计算出新生成指令与第三条已有指令的ROUGE-L相似度为0.92(大于0.7)。因此,我们认为这条新指令与已有指令过于相似,将其排除。这样可以确保我们保留的指令是多样化的,不会有太多重复。通过这些步骤,我们可以确保生成的指令数据集是多样化的,包含丰富的内容,进而提高模型的泛化能力。

2024-07-05 15:21:42 938

原创 python @装饰器的用法

装饰器(decorators)是 Python 中的一种高级特性,它允许开发者修改函数或方法的行为,而不改变其定义。装饰器通常用于日志记录、权限检查、性能测量等场景。装饰器是通过在函数定义的前一行加上来使用的。

2024-07-03 17:25:27 401

原创 conda创建环境后jupyter插件找不到该环境

然后输入“Python: Select Interpreter”并选择你刚刚创建的 langchain 环境。打开VS Code并进入命令面板(按 Ctrl+Shift+P 或 Cmd+Shift+P)如果没有就使用输入路径选择,把刚刚创建的环境的路径输入进去。选择好之后Jupyter插件就可以看到啦。

2024-07-01 13:25:51 176

原创 LayerNorm和RMSNorm实现代码

下面是详细实现的LayerNorm和RMSNorm代码,并附有详细注释。

2024-06-11 14:15:17 601 2

原创 ROUGE指标介绍

ROUGE(Recall-Oriented Understudy for Gisting Evaluation,面向提要评估的召回导向替工)是一组用于评估摘要质量的指标。通过将生成的摘要与参考摘要进行比较,ROUGE可以衡量自动摘要系统的性能,特别在自然语言处理领域中非常受欢迎。

2024-06-10 11:28:48 673

原创 DataLoader基础用法

是 PyTorch 中一个非常有用的工具,用于将数据集进行批处理,并提供一个迭代器来简化模型训练和评估过程。以下是 的常见用法和功能介绍:创建数据集:首先,需要一个数据集。数据集可以是 PyTorch 提供的内置数据集,也可以是自定义的数据集。数据集需要继承 并实现 和 方法。创建 DataLoader: 用于将数据集封装成批次,并提供一个迭代器来进行数据的加载。常见的参数包括数据集、批量大小、是否打乱数据、使用的进程数等。迭代数据:使用 的迭代器来访问批次数据。常见参数

2024-06-09 15:42:37 800

原创 .shape 和 .size的区别

在numpy中返回数组的形状(一个元组)。array.size返回数组中元素的总数。在torch中和都返回张量的形状(torch.Size对象,行为类似于元组)。是一个与numpy中的array.size类似的方法,用于返回张量中元素的总数。

2024-06-09 15:13:51 323

原创 python中的解包操作(*和**)

在函数定义时,*args用于接收任意数量的位置参数,并将它们存储在一个元组中。print(arg)# 输出:# 1# 2# 3# 4在函数定义时,**kwargs用于接收任意数量的关键字参数,并将它们存储在一个字典中。print(f"key } : {value } ") print_kwargs(name = 'Alice' , age = 25) # 输出: # name: Alice # age: 25key } : {

2024-06-08 16:07:04 387

原创 如何利用langchian调用百度大模型API

百度智能云的乾帆平台是一个一站式的大模型开发和服务运营平台,为企业开发者提供了包括文心一言(ERNIE-Bot)和第三方开源模型在内的多种模型。EmbeddingChatCompletion本文介绍如何使用LangChain与乾帆平台的聊天模型进行集成,具体对应LangChain的包。上述文档介绍了如何使用LangChain与百度AI云的乾帆平台进行聊天模型集成,包括API初始化、支持的模型、基本调用、异步调用、批量处理、流式处理和模型参数设置等方面的内容。

2024-06-06 01:12:12 1260

原创 LangChain进行文本摘要 总结

LangChain是一个强大的工具,可以帮助您使用大型语言模型(LLM)来总结多个文档的内容。以下是一个详细指南,介绍如何使用LangChain进行文本摘要,包括使用文档加载器、三种常见的摘要方法(Stuff、Map-Reduce和Refine)以及具体的实现步骤。将所有文档内容连接成一个提示,然后传递给LLM。适用于较大上下文窗口的模型,例如OpenAI的GPT-4或Anthropic的Claude-3。# 定义提示"{text}"# 定义LLM链# 定义StuffDocumentsChain。

2024-06-02 11:07:49 939

原创 langchain构建一个 Agent 的过程

在使用大型语言模型(LLM)时,语言模型本身无法直接采取行动,只能输出文本。LangChain 的一个重要用例是创建代理(Agents)。代理是使用 LLM 作为推理引擎的系统,用于确定应采取哪些行动以及这些行动的输入应该是什么。然后,这些行动的结果可以反馈给代理,它会确定是否需要更多行动,或者是否可以结束。在这个教程中,我们将构建一个可以与多种不同工具进行交互的代理:一个是本地数据库,另一个是搜索引擎。您将能够向这个代理提问,观察它调用工具,并与它进行对话。我们需要创建一些工具供代理使用。

2024-06-01 17:09:27 564

原创 LangGraph简介

LangGraph是 LangChain 的一个扩展,旨在通过将步骤建模为图中的边缘和节点,构建具有大型语言模型(LLMs)的强大和有状态的多角色应用程序。LangGraph 提供了用于创建常见类型代理的高级接口,以及用于组合自定义流程的低级 API。

2024-06-01 17:00:31 733

原创 URL 与域名的关系

URL是一个完整的资源定位符,包括协议、域名、路径等。域名是 URL 的一部分,用于标识和访问服务器。DNS是域名系统,将域名解析为 IP 地址,使得用户可以通过易于记忆的域名访问互联网资源。通过这三个要素的协同工作,互联网得以实现高效、方便的资源定位和访问。

2024-05-31 23:33:24 489

原创 langchain `as_retriever` 方法

定义检索器应该执行的搜索类型。选项包括:: 默认选项,基于相似度的搜索。"mmr": 基于最大边际相关性(Maximal Marginal Relevance)的搜索。: 基于相似度分数阈值的搜索。传递给搜索函数的关键字参数,可能包括:k: 要返回的文档数量(默认值:4)。: 用于的最低相关性阈值。fetch_k: 传递给 MMR 算法的文档数量(默认值:20)。: MMR 返回结果的多样性;1 为最小多样性,0 为最大多样性(默认值:0.5)。filter: 根据文档元数据进行过滤。

2024-05-30 20:45:12 1764

原创 input_ids`、`attention_mask` 和 `labels` 在训练过程中的作用和数据流动变化

用一个形象的例子来解释input_ids和labels在训练过程中的作用和数据流动变化。

2024-05-28 12:31:11 1294

原创 langchain文本分割器

当处理长篇文本时,将文本分割成较小的块可以更好地处理和分析。

2024-05-23 18:17:43 438

原创 解决Vscode Jupyter插件无法启动 Kernel报错

再重新选择内核,让其自己重新加载安装,再次运行就OK了。有关更多详细信息,请查看 Jupyter log。无法启动 Kernel。

2024-05-23 17:06:43 702

原创 怎么解决nltk问题

然后,我们在cmd下输入【python】进入到python界面,然后【import nltk】,通过【nltk.download()】来下载数据包。安装完Python后,利用pip install nltk来安装nltk包,如果安装速度慢可借助镜像下载。例如 输入punkt 即可下载punkt。按d选择界面中的下载。

2024-04-13 12:27:33 249

原创 复制原conda环境生成新环境

【代码】复制原conda环境生成新环境。

2024-04-02 14:44:57 330

空空如也

空空如也

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

TA关注的人

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