- 博客(44)
- 资源 (14)
- 问答 (1)
- 收藏
- 关注
原创 跟代码执行流程,读Megatron源码(五)megatron训练脚本training.py之setup_model_and_optimizer()配置模型和优化器
上文详细讲解了megatron初始化的详细过程,尤其重点分析了megatron分组的逻辑,本文将继续跟踪代码执行流程,分析pretrain()的第二个重要步骤:配置模型和优化器。
2024-07-23 15:16:17 718
原创 跟代码执行流程,读Megatron源码(四)megatron初始化脚本initialize.py之initialize_megatron()分布式环境初始化
在前文中,我们讲述了pretrain函数的执行流程,其首要步骤是megatron分组的初始化与环境的配置。本文将深入initialize_megatron函数源码,剖析其初始化分布式训练环境的内部机制。注:在此假设读者具备3D并行相关知识。
2024-07-22 17:19:20 1346
原创 跟代码执行流程,读Megatron源码(三)megatron训练脚本training.py之pretrain()
在Megatron-LM的代码仓中,megatron/training目录扮演着至关重要的角色,承载着模型训练流程的全面实现,涵盖训练逻辑的构建、训练参数的精密配置、训练数据的处理以及并行训练策略的优化部署。以下是对megatron/training目录主要代码文件的介绍:1. megatron/training/initialize.py:该文件通常包含初始化Megatron环境的函数,如设置CUDA设备、初始化分布式环境等。
2024-07-22 17:12:20 964
原创 跟代码执行流程,读Megatron源码(二)训练入口pretrain_gpt.py
trochrun是PyTorch官方推荐用于替代torch.distributed.launch的分布式数据并行训练模块。它旨在提供一种更灵活、更健壮的方式来启动和管理分布式训练任务。
2024-07-22 17:05:25 1238
原创 跟代码执行流程,读Megatron源码(一)从目录结构开始
最近看了很多篇写Megatron的文章,但大部分都是按其功能模块划分做源码的解析,很少有人会从程序的入口开始,跟随代码运行的流程,将Megatron从训练开始到结束,端到端分析完整。我会用面向过程的方式,以代码debug的视角,分析Megatron源码,从入门到精通。本文假设读者已经具备了机器学习和深度学习的基础。
2024-07-22 16:56:20 938
原创 BERT(Transformer Encoder)详解和TensorFlow实现(附源码)
单向语言模型会限制模型的表征能力,使其只能获取单方向的上下文信息,而BERT利用双向注意力来构建整个神经网络,因此最终生成能融合左右上下文信息的深层双向语言表征,即真正意义上的Bi-Directional Context信息。在实际的训练中,通常另训练集中的50%符合IsNext关系,另外50%的第二句话随机从语料中提取,它们的关系是NotNext,并将这个关系保存在[CLS]中。下图展示了BERT在11种各不同任务中的模型,它们只需要在BERT的基础上再添加一个输出层便可以完成对特定任务的微调。
2023-06-07 16:55:43 4208 1
原创 基于TensorFlow Object Detection API实现RetinaNet目标检测网络(附源码)
RetinaNet是作者Tsung-Yi Lin和Kaiming He于2018年发表的论文Focal Loss for Dense Object Detection中提出的网络。RetinaNet凭借其结构精简清晰、可扩展性强、检测准确率高等特点,成为了很多目标检测算法的baseline。在模型的训练过程中,经常会遇到这样的场景:我们需要保存某个时刻训练好的模型参数,这样在对模型进行微调时,才能使用保存好的参数继续训练,而不是再随机生成参数大范围的拟合。
2023-05-26 15:07:22 1356
原创 目标检测常用模型之R-CNN、Fast R-CNN、Faster R-CNN
R-CNN是由Ross Girshick于2014年提出,首先通过选择性搜索算法Selective Search从一组对象候选框中选择可能出现的对象框,然后将这些选择出来的对象框中的图像resize到某一固定尺寸,并喂入到CNN模型(如AlexNet等)提取特征,最后将提取出的特征送入到分类器来预测该对象框中的图像是否存在待检测目标,并进一步预测该检测目标具体属于哪一类。计算region两两之间的相似性,合并具有最大相似性的两个region,得到新的更大的 region,加入region集合中;
2023-05-23 21:33:21 727
原创 GPT-2(Transformer Decoder)的TensorFlow实现(附源码)
3. 定义模型的单步训练(train_step)函数,损失计算函数,优化器,metric函数(准确率度量函数)等,以完成单步的模型训练;4. 定义循环训练函数(train_loop),循环调用第3步的函数,完成多轮次(epoch),多批次(batch)的训练;6. 构造训练数据,包括train、validation、test等,输入到模型并开始训练;5. 定义评估函数(evaluate),测试并评估模型训练结果是否符合预期;1. 遵照模型的网络架构,实现每一层(Layer/Block)的函数;
2023-05-22 14:51:08 1487
原创 Multi-Head Attention和Transformer Decoder(GPT)详解
而在实际的自然语言生成过程中,句子都是逐字生成的,当前字正在生成时,该字后边的句子内容还是未知的,即为空,因此,影响当前字的只有当前位置之前的句子,而不包括当前位置之后还处于未知状态的内容。8. Linear&Softmax:输出层,输出一个固定长度的文字序列,每个文字有不同的准确率(由于存在Softmax,所有的概率相加为1),如果想让模型输出更加多样化,则可以随机选择准确率最大的几个字,反之,则减小选择的范围;注:图中的N,代表重复N次,不同的GPT版本N的大小不同,代表的参数规模也不同。
2023-05-22 11:21:27 1248
原创 Scaled dot-prodect Attention的原理和实现(附源码)
如上图,由于一个hidden无法涵盖所有的Source句子信息,故将句子中每个字对应的hidden信息都输入到Attention中,再将Attention作为Decoder的输入,这样就可以防止Source句子信息的丢失。
2023-05-16 11:24:45 2901
原创 基于MobileNetV2的目标检测和TensorFlow + Transfer Learning实现(附源码)
整个网络结构中除了第一层是标准的卷积层,最后添加了一层全连接层以外,其余部分都是由深度可分离卷积(3×3×通道数的逐深度卷积 + 1×1×通道数×过滤器个数的逐点卷积)构成的,减少了计算的参数数量,提高了计算的效率。深度可分离卷积是卷积神经网络中对标准的卷积计算进行改进所得到的算法,它通过拆分空间维度和通道(深度)维度的相关性,减少了卷积计算所需要的参数个数,并被证明是轻量化网络的有效设计。原因如上所述,是因为作者认为激活函数在高维空间能够有效的增加非线性,而在低维空间时则会破坏特征,不如线性的效果好。
2023-04-20 17:53:52 1218
原创 基于TensorFlow的模型和训练的自定义方法(附源码)
在一些场景下,使用tensorflow默认的训练过程无法满足我们的需求,故需要自定义模型训练,以下是自定义模型及其训练的全过程。
2023-04-18 15:18:30 799 1
原创 VGG Network的原理和TensorFlow实现(附源码)
1. VGG没有使用像AlexNet(11x11,步幅为4)这样的大感受野,而是使用非常小的感受野(3x3,步幅为1)。VGG中的卷积层使用非常小的感受野(3x3,捕获左/右和上/下的最小可能尺寸)。VGG的所有隐藏层都使用relu(AlexNet的一项巨大创新,可以缩短训练时间)。它改进了传统的卷积神经网络 (CNN),并成为图像分类的最佳模型之一。VGG有三个全连接层:前两个各有4096个通道,第三个有1000个通道,每个类1个。至此,基于以上VGG模型的源码,可以自行构造输入样本,并训练模型。
2023-04-17 12:07:09 611
原创 Siamese network详解和TensorFlow实现(附源码)
下图是Siamese network的基础架构,其中Input 1和Input 2是需要比较相似度的输入,它们通过两个具有相同架构、参数和权重的相似子网络(Network 1和Network 2)并输出特征编码,最终经过损失函数(Loss)的计算,得到两个输入的相似度量。例如,第一个分量的单位是kg,第二个分量的单位是g,这意味着所计算的距离可能会根据特征的单位发生倾斜。而马氏距离的目的,就是计算所有分量不相关后两个变量间的差异,而令所有分量不相关的方法,便是公式中的协方差矩阵(即上上图的“旋转”过程)。
2023-04-14 11:44:32 1643
原创 Inception Network详解和TensorFlow实现(附源码)
Inception Network又称GoogleNet,是2014年Christian Szegedy提出的一种全新的深度学习结构,并在当年的ILSVRC比赛中获得第一名的成绩。相比于传统CNN模型通过不断增加神经网络的深度来提升训练表现,Inception Network另辟蹊径,通过Inception model的设计和运用,在有限的网络深度下,大大提高了模型的训练速度(即减少了训练参数)和准确率,是一个CNN历史上里程碑式的进步。
2023-04-11 15:27:18 1184
Hadoop源码分析(client端提交job到rm端)
2016-06-24
Extjs 中文手册
2010-06-03
关于hadoop 2.6源码中ApplicationClientProtocol的问题
2016-05-25
TA创建的收藏夹 TA关注的收藏夹
TA关注的人