一、初始化1.1 数据处理MyDataset类实例化 _init_DataLoaderbatch 化和并行加载train_loader DataLoaderdataset, batch_sizeargs.batch_size,shuffleTrue, num_workers12,collate_fndataset.collate_fn对MyDataset类的函数调用顺序len→\rightarrow→getitem ( load_user_data→\rightarrow→random_neq→\rightarrow→get_time_diff_bin)→\rightarrow→collate_fn数据集self.self.data_dir 文件夹路径self.data_file_path文件seq.jsonl路径self.seq_offsets 文件seq.jsonl每一行的起始文件指针位置偏移self.maxlen 最大序列长度self.mm_emb_ids 多模态特征ID汇总self.itemnum用户数self.usernum物品数字典self.item_feat_dict物品静态特征self.mm_emb_dict多模态嵌入embeddingself.indexer索引映射用户id,物品id,特征值映射self.indexer_i_rev反查字典self.indexer_u_rev特征 feat_default_value:特征缺省值feat_types特征总字典feat_statistics特征不同类型数量一条数据格式[seq序列ID,pos正样本ID(下一个真实访问的item),neg,token_type 序列类型用户/物品,next_token_type,seq_feat序列特征,pos_feat正样本特征,neg_feat]batch[seq, pos, neg, token_type, next_token_type, next_action_type, seq_feat, pos_feat, neg_feat, time_feat]seq[seq1,seq2,…,seqnseq_1,seq_2,…,seq_nseq1,seq2,…,seqn]由n个用户组成time_feat[weekday,is_weekend,hour_feat,day_of_year,week_of_year,time_deltas,action_type]seq,pos,neg_feat全部处理成[batch,maxseqlen] 的二维或者三维 tensor1.2 模型BaselineModel类1.2.1 初始化全局配置self.user_numself.item_numself.devself.norm_firstself.maxlenID Embeddingself.item_emb,self.user_emb位置编码self.pos_embHSTU 主干-Transformer(变式)self.emb_dropoutself.emb_layernorm特征embedding容器self.sparse_emb离散特征self.emb_transform连续特征主干网络容器self.attention_layersself.attention_layernormsself.forward_layersself.forward_layernorms按特征类型分组产生不同的字典方便声明稀疏特征的Embedding Tableself.USER_SPARSE_FEAT/USER_CONTINUAL_FEAT/ITEM_SPARSE_FEAT/ITEM_CONTINUAL_FEAT/USER_ARRAY_FEAT/ITEM_ARRAY_FEAT/ITEM_EMB_FEATuser/item特征拼接 - DNN投影层序列建模主干多层 HSTU FFNmain中初始化赋值8. 初始化所有参数- user_embitem_emb全零化处理- 其他xavier_normal9. 所有emb权重 padding 位置第0行清零1.3 优化器AdamW1.4 权重衰减args.l2_emb1.5 学习率策略warmup cosine decay2 训练model.train将模式设置为训练模式从 dataloader 依次取不同的batch2.2 model.forward2.3 计算损失infonce_loss2.4 记录日志2.5 反向传播2.6 更新参数3 细节处理torch.nn.Embedding升维从 ID 变成向量 矩阵形状(B,L)→(B,L,D)(B, L) \rightarrow (B, L, D)(B,L)→(B,L,D)Dropout随机丢弃部分元素变 0其余放大1/(1-p)RMSNorm均方根归一化对输入特征进行缩放ModuleDict层字典容器按Key灵活调用不同的模块→\rightarrow→选择ModuleList层列表容器像 Python 列表一样存储子模块但会向 PyTorch 注册参数→\rightarrow→顺序执行Linear:
关于腾讯广告算法大赛2025项目分析3-重读
发布时间:2026/5/15 21:56:27
一、初始化1.1 数据处理MyDataset类实例化 _init_DataLoaderbatch 化和并行加载train_loader DataLoaderdataset, batch_sizeargs.batch_size,shuffleTrue, num_workers12,collate_fndataset.collate_fn对MyDataset类的函数调用顺序len→\rightarrow→getitem ( load_user_data→\rightarrow→random_neq→\rightarrow→get_time_diff_bin)→\rightarrow→collate_fn数据集self.self.data_dir 文件夹路径self.data_file_path文件seq.jsonl路径self.seq_offsets 文件seq.jsonl每一行的起始文件指针位置偏移self.maxlen 最大序列长度self.mm_emb_ids 多模态特征ID汇总self.itemnum用户数self.usernum物品数字典self.item_feat_dict物品静态特征self.mm_emb_dict多模态嵌入embeddingself.indexer索引映射用户id,物品id,特征值映射self.indexer_i_rev反查字典self.indexer_u_rev特征 feat_default_value:特征缺省值feat_types特征总字典feat_statistics特征不同类型数量一条数据格式[seq序列ID,pos正样本ID(下一个真实访问的item),neg,token_type 序列类型用户/物品,next_token_type,seq_feat序列特征,pos_feat正样本特征,neg_feat]batch[seq, pos, neg, token_type, next_token_type, next_action_type, seq_feat, pos_feat, neg_feat, time_feat]seq[seq1,seq2,…,seqnseq_1,seq_2,…,seq_nseq1,seq2,…,seqn]由n个用户组成time_feat[weekday,is_weekend,hour_feat,day_of_year,week_of_year,time_deltas,action_type]seq,pos,neg_feat全部处理成[batch,maxseqlen] 的二维或者三维 tensor1.2 模型BaselineModel类1.2.1 初始化全局配置self.user_numself.item_numself.devself.norm_firstself.maxlenID Embeddingself.item_emb,self.user_emb位置编码self.pos_embHSTU 主干-Transformer(变式)self.emb_dropoutself.emb_layernorm特征embedding容器self.sparse_emb离散特征self.emb_transform连续特征主干网络容器self.attention_layersself.attention_layernormsself.forward_layersself.forward_layernorms按特征类型分组产生不同的字典方便声明稀疏特征的Embedding Tableself.USER_SPARSE_FEAT/USER_CONTINUAL_FEAT/ITEM_SPARSE_FEAT/ITEM_CONTINUAL_FEAT/USER_ARRAY_FEAT/ITEM_ARRAY_FEAT/ITEM_EMB_FEATuser/item特征拼接 - DNN投影层序列建模主干多层 HSTU FFNmain中初始化赋值8. 初始化所有参数- user_embitem_emb全零化处理- 其他xavier_normal9. 所有emb权重 padding 位置第0行清零1.3 优化器AdamW1.4 权重衰减args.l2_emb1.5 学习率策略warmup cosine decay2 训练model.train将模式设置为训练模式从 dataloader 依次取不同的batch2.2 model.forward2.3 计算损失infonce_loss2.4 记录日志2.5 反向传播2.6 更新参数3 细节处理torch.nn.Embedding升维从 ID 变成向量 矩阵形状(B,L)→(B,L,D)(B, L) \rightarrow (B, L, D)(B,L)→(B,L,D)Dropout随机丢弃部分元素变 0其余放大1/(1-p)RMSNorm均方根归一化对输入特征进行缩放ModuleDict层字典容器按Key灵活调用不同的模块→\rightarrow→选择ModuleList层列表容器像 Python 列表一样存储子模块但会向 PyTorch 注册参数→\rightarrow→顺序执行Linear: