大语言模型常见的文本切分方式整理汇总

整理

本文整理了一些简单的文本切分方式,适用于大语言模型经典应用RAG或相似场景。

一般切分

如果不借助任何包,很容易想到如下切分方案:


text = "我是一个名为 ChatGLM3-6B 的人工智能助手,是基于清华大学 KEG 实验室和智谱 AI 公司于 2023 年共同训练的语言模型开发的。我的目标是通过回答用户提出的问题来帮助他们解决问题。由于我是一个计算机程序,所以我没有实际的存在,只能通过互联网来与用户交流。"
chunks = []
chunk_size = 128 

for i in range(0, len(text), chunk_size):
    chunk = text[i:i + chunk_size]
    chunks.append(chunk)
chunks
['我是一个名为 ChatGLM3-6B 的人工智能助手,是基于清华大学 KEG 实验室和智谱 AI 公司于 2023 年共同训练的语言模型开发的。我的目标是通过回答用户提出的问题来帮助他们解决问题。由于我是一个计算机程序,所以我没有实际的存在,只能通过互联网',
 '来与用户交流。']

字符切分

使用CharacterTextSplitter,一般的设置参数为:chunk_size、 chunk_overlap、separator和strip_whitespace。

from langchain.text_splitter import CharacterTextSplitter
text_splitter = CharacterTextSplitter(chunk_size = 35, chunk_overlap=0, separator='', strip_whitespace=False)
text_splitter.create_documents([text])
### 大模型训练数据切分方法和技术 对于大规模机器学习模型而言,有效地管理与利用计算资源至关重要。当面对海量的数据集时,合理的数据切分策略不仅有助于加速训练过程,还能提升最终模型的表现。 #### 序列并行技术的应用 一种常见的做法是在时间维度或者序列长度方向上分割输入样本,即采用所谓的“序列并行”。这种方法特别适用于自然语言处理任务中的长文本或其他具有明显顺序特征的任务。通过这种方式,可以在不改变原有算法逻辑的前提下充分利用集群内的GPU/CPU资源[^2]。 例如,在处理一段较长的文章时,可以将其按照固定大小的窗口划分为若干子片段;这些子片段随后被分配给不同节点上的处理器单元分别执行前向传播运算。值得注意的是,为了确保各部分之间的一致性和连续性,通常还需要设计额外机制来进行边界处信息交换以及全局状态同步。 #### 数据并行下的批量划分 另一种广泛使用的手段则是基于批尺寸(batch size) 的拆解方式——也就是常说的数据并行(Data Parallelism),它涉及到将整个批次的数据均匀地分布到各个工作进程中去。这样做可以让每台机器只负责一小部分总负载的同时保持较高的硬件利用率。然而,这也带来了新的挑战:由于每次迭代都会产生局部梯度估计值差异,因此必须采取措施使得所有副本之间的权重能够及时收敛至一致的状态[^3]。 具体来说,这往往依赖于AllReduce操作或者其他形式的通信协议来完成跨节点间的参数平均化作业。此外,还应考虑网络带宽限制等因素可能造成的延迟影响,并据此调整超参配置以达到最佳性能平衡点。 ```python import torch.distributed as dist from torch.nn.parallel import DistributedDataParallel as DDP model = YourModel() ddp_model = DDP(model) for data, target in dataloader: output = ddp_model(data) loss = criterion(output, target) optimizer.zero_grad() loss.backward() optimizer.step() dist.barrier() # Ensure all processes have completed their work. ``` 上述代码展示了如何使用PyTorch框架搭建一个简单的分布式训练环境,其中包含了必要的初始化设置、正向传递流程定义以及反向传播后的优化器更新步骤。最后一步`dist.barrier()`用于等待所有参与方都到达同一位置再继续前进,从而维护整体一致性。 #### 组合多种策略 实际上,在很多情况下单纯依靠某单一模式并不能满足复杂应用场景的需求。比如针对某些特定类型的神经架构(如Transformer),除了前述两种途径外还可以探索其他可能性,像管道并行(Pipeline Parallelism) 或者混合精度(Mixed Precision Training) 等高级特性组合起来共同作用,进而获得更优的结果。 综上所述,选择合适的大规模预训练模型数据切割方案需综合考量目标领域特点、现有基础设施条件和个人经验积累等多个方面因素的影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值