程序员转行学习 AI 大模型: 踩坑记录:服务器内存不够,程序被killed
本文是程序员转行学习AI大模型的踩坑记录分享。当前阶段还在学习知识点由点及面从 0 到 1 搭建 AI 大模型知识体系中。系列更新关注我后续会持续记录分享转行经历踩坑问题我是在阿里云上购买了一个 99 元入门级云服务器 ECS本来就考虑到内存比较小所以我选的是小模型“distilbert/distilgpt2”。但是即使是这个小模型程序执行的时候还是 killed应该是环境内存不够这台服务器内存是 2g 的。为了后续根据环境选择合适的模型查看了如何计算训练需要的内存大小。如何根据模型计算所需内存模型参数量的内存计算FP3232 位浮点数模型内存 参数量 * 4字节FP1616 位浮点数模型内存 参数量 * 2字节INT88 位整数模型内存 参数量 * 1字节可以在代码中使用 weight.dtype 查看使用的数据类型。INT8 需要 GPU 环境。不同数据类型对比关键要点1. FP32 是默认 不指定时自动使用 2. FP16 节省 25% 权重和梯度减半 3. INT8 需要GPU CPU上训练不稳定训练时的内存占用组件训练时的内存由以下部分组成1. 模型权重Model Weights模型权重内存 参数量 * 数据类型大小如 82M 参数FP32内存 82,000,000 * 4 字节 328MB2. 梯度Gradients梯度内存 参数量 * 数据类型大小说明每个参数都需要存储梯度梯度的大小与参数相同3. 优化器状态Adam 优化器最常用一阶动量m 参数量 × 4 字节 二阶动量v 参数量 × 4 字节 优化器总内存 2 × 参数量 × 4 字节 参数量 × 8 字节SGD 优化器优化器内存 0不需要额外存储4. 激活值激活值内存 batch_size × seq_len × hidden_dim × 层数 × 数据类型大小简化估算激活值内存 ≈ 模型权重内存 × (0.5 - 2.0)影响因素batch_size越大激活值越大seq_len序列越长激活值越大模型深度层数越深激活值越大hidden_dim隐藏层维度越大激活值越大5. PyTorch 开销PyTorch Overhead包括CUDA 上下文即使不用 GPU100-200MBDataLoader 缓存100-200MB其他临时变量100-300MBPyTorch 开销 ≈ 300-700 MB总内存计算公式训练时总内存总内存 模型权重 梯度 优化器状态 激活值 PyTorch 开销详细公式总内存 参数量 × 4 字节FP32 权重 参数量 × 4 字节FP32 梯度 参数量 × 8 字节Adam 优化器 激活值内存100-500 MB PyTorch 开销300-700 MB简化公式估算总内存 ≈ 参数量 × 16 字节 500-1200 MB服务器内存查看检查服务器内存free -h
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2459944.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!