图解AI训练

文摘   2024-09-12 14:22   新加坡  

大语言模型书籍已经发布,欢迎关注、购买。

新书发布:大语言模型原理、训练及应用

本文涉及到的详细测试代码和测试步骤放置于:

https://github.com/DeepLearning/david-share.git下的:Deep-Learning/Easy-way-to-Understand-Training,本文中不再赘述代码实现。

欢迎给repo点亮Star,您的点赞是作者持续创作的动力。

  1. 获取激活值

  • 从模型中获取特定批次(如2和3)的输入激活值。这里的批次编号指的是数据集中的具体批次索引。每个批次的数据量由批次大小(batch size)决定,批次大小定义了一次训练迭代中处理的数据样本数量。

  • 图中绿色部分表示输入层的激活值。


  • 加载权重

    • 为层0和1加载权重。

    • 图中绿色部分表示加载的权重。

  • 前向传播

    • 使用权重将激活值通过网络的层进行前向传播。

    • 图中黄色部分表示经过前向传播后的激活值。


  • 绘制当前激活值

    • 绘制当前内存中的激活值。

    • 不同颜色表示不同层的激活值。

  • 计算损失

    • 在最后一层计算损失,并将其转换为梯度激活值。

    • 图中红色部分表示损失计算后的梯度激活值。

  • 反向传播

    • 执行反向传播,计算每层的梯度。

    • 图中黄色部分表示反向传播过程中计算的梯度。

  • 内存管理

    • 删除不再需要的内存以优化资源使用。

    • 图中显示内存使用的变化。

  • 梯度权重

    • 绘制梯度权重,显示它们对应的批次。

    • 图中绿色和黄色部分表示不同批次的梯度权重。


  • 错误处理

    • 尝试更新权重时处理错误。在这一步中,错误可能是因为尝试更新权重时,所需的梯度信息不完整或不匹配。具体来说,代码可能只计算了批次2和3的梯度,而在更新权重时需要所有批次的完整梯度信息。如果缺少某些批次的梯度,就会导致错误。这个错误信息提示用户当前只有批次2和3的梯度可用。

    • 显示错误信息,提示只有批次2和3的梯度。

  • 假设梯度

    • 模拟需要的梯度以继续训练。

    • 图中绿色部分表示假设的梯度。

  • 合并梯度和更新权重

    • 合并梯度以获得完整的梯度。

    • 更新权重并检查结果。

    • 图中黄色和绿色部分表示更新后的权重。

  • 最终结果

    • 展示整个训练过程的结果,包括前向和反向传播的批次以及内存使用。

    • 图中条形图表示不同时间步的内存使用和批次处理。

    参考:https://github.com/srush/LLM-Training-Puzzles/tree/main

    大魏分享
    https://github.com/davidsajare/david-share.git
     最新文章