【LLM教程】为什么做大语言模型fine tuning时,要将 drop_last_batch设置为True?

目录

[1. drop_last_batch 是什么?](#1. drop_last_batch 是什么?)

[2. drop_last_batch有什么用?](#2. drop_last_batch有什么用?)


这是我们做tokenizer时,经常会遇到的代码,那这里的drop_last_batch 为什么要设置:

复制代码
finetuning_dataset_loaded = datasets.load_dataset("json", data_files=filename, split="train")

tokenized_dataset = finetuning_dataset_loaded.map(
    tokenize_function,
    batched=True,
    batch_size=1,
    drop_last_batch=True
)

print(tokenized_dataset)

1. drop_last_batch 是什么?

drop_last_batch=True 是一个常见的数据加载/预处理选项,用于在处理最后一批样本时丢弃不完整的批次(batch)。

2. drop_last_batch有什么用?

  • 训练神经网络模型:

    大多数神经网络模型在训练时使用批量梯度下降(mini-batch gradient descent)优化算法,这需要将数据分成若干个批次。如果最后一个批次的样本数量不足一个完整批次的大小,可能会导致计算不一致或效率低下。通过设置 drop_last_batch=True,可以确保每个批次的大小都是一致的,有利于模型的稳定性和收敛性。

  • 数据并行处理:

    在数据并行处理的场景下,例如使用多个GPU或多个进程/线程进行数据预处理,需要保证每个处理单元获得的数据批次大小相同,以平衡计算负载。丢弃最后一个不完整的批次可以确保数据的均匀分布。

  • 统一批次大小:

    某些操作(如数据增强、数据编码等)可能需要固定的批次大小,以便有效地利用向量化计算或内存缓存。在这种情况下,丢弃最后一个不完整的批次可以确保批次大小的一致性。

  • 模型并行处理:

    在模型并行处理的场景下,多个模型组件可能需要接收相同大小的批次输入,以确保同步和一致性。丢弃最后一个不完整的批次可以实现这一点。

相关推荐
奔跑中的小象4 小时前
统信UOS + 天数AI卡部署SGLang服务手册
人工智能·uos·sglang·天数智芯
DevSecOps选型指南4 小时前
中国版Mythos,为何是悬镜安全灵脉CodeAI?
人工智能·安全
Shockang4 小时前
LangGraph 状态机实战
人工智能
刹那芳华19924 小时前
循环神经网络的从零开始实现(RNN)
人工智能·rnn·深度学习
阿童木写作4 小时前
跨境图片翻译工具多合一,批量图片视频字幕翻译加智能抠图
人工智能·python·音视频·语音识别
科技之门4 小时前
AI3D从建模到贴图、绑骨和动画的完整流程怎么做?V2Fun完整工作流指南
人工智能·3d·贴图
宇宙第一小趴菜4 小时前
二、机器学习的应用领域和发展史
人工智能·机器学习
前端开发江鸟4 小时前
我写过 MCP Server,却一直以为 MCP 只有 Tool
人工智能
天国梦5 小时前
自习室智能化升级避坑指南:天学网AI智习室方案实测与选型建议
大数据·人工智能
阿里云云原生5 小时前
可用性从 99.9% 跃升至 99.995%:畅捷通如何用 AI 重塑运维底座?
运维·网络·人工智能