人工智能深度学习NLP计算机视觉强化学习【免费下载链接】google-researchGoogle Research项目地址https://gitcode.com/gh_mirrors/go/google-research点击查看免费下载导读本指南以 aptamers_mlpd/learning/playbook.md 为核心系统讲解 Google Research 开源仓库aptamers_mlpd适配体机器学习驱动的配体发现项目中学习learning模块的标准训练流程从本地调试训练/评估、到集群上的 Vizier 超参数搜索、再到利用additional_output扩展多任务预测目标。读完本文你将掌握train_feedforward二进制的全部关键命令行参数、epoch/eval 规模的设定原则、meta-parameter 与 hyper-parameter 的区分逻辑并能结合源码理解数据管线与输出层的工作原理。说明本模块的共享代码因依赖 Google 内部库如 Vizier、FlumeJava、SSTable 等无法在 Google 之外直接运行见 aptamers_mlpd/README.md文中命令中的xxx、[cmd removed]均为仓库中已脱敏的内部路径或内部命令占位源码已完整开放供审阅。本文所有参数说明均以仓库实际源码为准。一、运行前置条件数据与实验元数据1.1 输入数据链路的完整视图Playbook 假定你已经完成前序数据处理链路将测序数据收集为FASTQ 文件创建包含实验元数据的Experiment protoselection_pb2.Experiment定义在 aptamers_mlpd/util/selection.proto运行处理管线把 FASTQ 转为TF Example protos存储在 SSTable 中。这对应的正是 aptamers_mlpd/README.md 中概述的数据预处理步骤preprocess/fastq_to_sstable把一对 FASTQ 转成 SSTablepreprocess/merge/merge_measurements_main把各测序对的 SSTable 合并为序列 → 各轮次计数的单一表再经聚类ScaM后最终输出 5 份 SSTable每份约 1/5 数据对应 5 折交叉验证以及描述训练文件的元数据文本。预处理的完整流程见 aptamers_mlpd/preprocess/preprocess_walkthrough.md。1.2 在config.py中注册数据集开始训练前先确认你的数据集是否已定义在 aptamers_mlpd/learning/config.py 中。如果是新数据集需要做两件事在INPUT_DATA_DIRS字典中添加数据路径INPUT_DATA_DIRS { aptitude: _BASEDIR aptitude/r3/fastq/processed4/folds, # 添加mydataset: _BASEDIR path/to/your/folds, }在DEFAULT_AFFINITY_TARGET_MAPS中添加序列计数到亲和力affinity的映射。该映射的键是筛选用的亲和分子如蛋白值是用于计算亲和力的预测输出名列表。例如aptitude数据集aptitude: { target: [round2_high_no_serum_positive, round2_medium_no_serum_positive], serum: [round2_high_with_serum_positive, round2_medium_with_serum_positive] }代码也可以用目录作为输入--input_dir但使用已定义的数据集要方便得多。从 train_feedforward.py 的入口校验逻辑可以看到--input_dir与--dataset必须且只能指定其中一个exactly one of --input_dir or --dataset required而--dataset的可选值正是由config.INPUT_DATA_DIRS的键决定的flags.DEFINE_enum(dataset, None, sorted(config.INPUT_DATA_DIRS), ...)见 train_feedforward.py。1.3 数据集目录结构与 5 折划分config.py 中定义了val_fold 0、num_folds 5并通过get_wetlab_experiment_train_pbtxt_path(fold)、get_example_sstable_path(fold)等函数生成各折文件名约定训练实验 protoexperiment_fold_%i_train.pbtxt验证实验 protoexperiment_%sfold_%i_test.pbtxttemplate可自定义文件名模板数据 SSTableexamples_%sfold_%i.sstable在_setup_foldtrain_feedforward.py中训练数据取除val_fold之外的所有折验证数据取val_fold对应折验证 proto 会被复制进训练输出目录。实践中通常以 fold 0 作为测试折、其余折作为训练数据见 aptamers_mlpd/README.md。二、本地运行训练/评估测试与调试2.1 最小训练命令使用train_feedforward二进制启动训练/评估run learning/train_feedforward \ --save_basexxx \ --epochs2 \ --run_name$RUN_NAME \ --num_fc_layers1 \ --datasetaptitude--dataset可换成其他合法数据集或直接用--input_dir指定数据目录--run_name每次运行必须设置为唯一值它决定了模型 checkpoint 与结果的保存路径这三个 flagsave_base、run_name、num_fc_layers在 train_feedforward.py 中被flags.mark_flag_as_required标记为必填。一个典型的运行名设置export RUN_NAMExxx.debug0从源码入口看train_feedforward.py实际的根输出目录为--save_base/--run_name/r3r3子目录用于规避早期空事件文件问题无--autotune时走_train_without_autotunetrain_dir root_dir/task并使用_default_study_hyperparams构造默认超参数。2.2 epoch 数量与规模的设定原则epoch 定义默认一个 epoch 是完整遍历一遍训练数据集每个 epoch 结束后执行一次评估并报告指标。--epoch_size对大数据集可用该 flag 限制每个 epoch 的样本数。经验法则是让评估报告大约每小时出现一次以保证足够频繁的反馈。源码中train_feedforward.pyepoch_size hps.epoch_size or int(tr_entries * (1 hps.ratio_random_dna))即未设置时默认取全量训练集大小若注入随机序列则乘以比例系数再除以mbsz得到每 epoch 的 batch 数。固定 epoch 数、无提前停止、学习率不衰减模型严格运行--epochs指定的轮数——不会因模型停止学习而提前终止学习率也不做退火anneal。因此必须依赖频繁的训练/验证评估报告来确认模型是否已收敛、是否过训练。这一点在源码的train()循环train_feedforward.py中可以看到训练严格按range(epoch_start, num_epochs)迭代且当瞬时训练损失超出[min_cost, MAX_COST]区间MAX_COST 5e3时会抛出TrainingDivergedException提前终止——这是唯一的中断机制通常由不良初始化或过大的学习率/动量引发。--eval_size决定评估阶段评估的样本数。默认最多评估 100 万条设为0则评估整个数据集。评估在打乱shuffled的队列上进行若不用全量数据每次评估会随机抽取子样本。源码中eval_size hps.eval_size or Nonetrain_feedforward.pyNone即表示评估全部。带 epoch/eval 规模控制的完整命令run learning/train_feedforward \ --save_basexxx/train_feedforward/$USER \ --epochs2 \ --epoch_size1e6 \ --eval_size0 \ --run_name$RUN_NAME \ --num_fc_layers1 \ --datasetaptitude2.3 本地拷贝数据集以加速调试为避免每次从远端读取数据较慢可以把input_dir拷贝到本机然后在命令中追加--input_dir/usr/local/google/home/$USER/data/aptamers/tf_data/xxx若数据在本地xxx数据集上每个 epoch 大约 2 分钟即可完成。本地运行时可直接在命令行观察输出代码完成初始化后会先执行**训练前评估pre-training evaluation**并报告指标然后逐 epoch 执行训练 → 评估。2.4 训练流程的源码级运行机制从 run_training 可以看到一次完整训练运行包含的关键环节可行性检查hps_is_infeasible校验卷积层超参数组合如 stride 与 dilation rate 不能同时大于 1、卷积输出宽度不能小于下一层宽度不可行且无 tuner 时直接抛错有 tuner 时回报为 infeasible统计量计算dataset_stats.compute_experiment_statistics依据preprocess_mode在训练数据上计算归一化统计量并写回.wstatsproto图构建data.dummy_inputs构造占位输入 →output_layers.create_output_layer构造输出层 →ff.FeedForward构造网络 →FeedForwardTrainer组装输入管线与优化器train_feedforward.py训练前评估save_and_evaluate()在训练开始前先保存并评估一次Running eval before starting training逐 epoch 训练与评估每个 epoch 结束保存 checkpoint、对训练/验证集评估并按epoch_interval_to_save_best间隔比较验证损失、维护最佳模型model.ckpt-lowest_val_loss、best_model.nc、best_epoch.txttuner 协作若使用 tunerepoch 间检查tuner.should_trial_stop()决定是否提前结束本次 trial并在结束时report_done。三、在集群上运行训练/评估本地验证模型可跑通后下一步就是在集群上训练。集群训练既可以训练单个特定模型也可以用于搜索最优超参数。3.1 meta-parameter 与 hyper-parameter 的区分Aptamer 模型对两类参数做了明确区分参数类型定义示例谁来决定取值meta-parameter模型选择开发者定义、不让 Vizier 随机变化的变量全连接层数、输出层类型、损失函数命令行固定hyper-parameterVizier 在给定范围内选取的变量学习率、动量Vizier 搜索也可命令行指定对每一种 meta-parameter 组合都会单独执行一次 hyper-parameter 优化。集群训练的第一步是构建.par文件内部命令仓库中已脱敏移除。脚本会创建训练/评估任务以及事件导出任务。对较小数据集单个训练任务通常几小时内完成更大数据集或更大 epoch 规模尤其带卷积时耗时更长。上一节关于 epoch 规模的指导同样适用。结果保存在save_base路径下若未提供save_base默认值为内部路径xxx。3.2 固定超参数与 meta-parameter 组合的单次训练以下命令启动单个训练任务适合测试某个 meta-parameter 组合[cmd to initiate a Vizier training run] \ --varsrun_group$RUN_NAME,output_layerLATENT_AFFINITY,loss_nameCROSS_ENTROPY,num_fc_layers2,num_conv_layers0在模型选择收尾阶段确定最优超参数后建议对同一组超参数启动多个副本replicas通过多次训练评估来观察该超参数组合下的训练方差。示例[cmd to initiate a Vizier training run] \ --varsrun_group$RUN_NAME,output_layerLATENT_AFFINITY,loss_nameCROSS_ENTROPY,num_fc_layers2,num_conv_layers0,num_replicas20,hpconfignonlinearitytanh,learn_rate0.01,momentum0.9,dropouts[0.1,0.4,0.001]3.3 用随机搜索探索超参数实践中通常采用 Vizier随机搜索对每种 meta-parameter 组合启动多个副本但不用 Vizier 的搜索算法依据结果动态调整超参数而是对每个超参数在给定范围内随机取 100 个值再人工分析选出最优组合。默认 run 文件包含40 种 meta-parameter 组合0/1/2/3 层全连接 × 5 种输出层 × 2 种损失函数。可在命令行显式覆盖这些默认值。例如下面命令会启动4000 个训练任务40 种组合 × 每组合 100 个副本[cmd to initiate a Vizier training run] \ --varsrun_group$RUN_NAME,num_replicas100,autotunetrue3.3.1 源码中的超参数搜索空间与默认值Vizier study 的构建在_get_studytrain_feedforward.py中与_default_study_hyperparamstrain_feedforward.py给出的默认值一一对应超参数默认值Vizier 搜索范围说明nonlinearitytanh[tanh,sigmoid,relu,elu]激活函数categoricallearn_rate0.005[0.0001, 0.01]对数刻度学习率momentum0.9[0.0, 0.99]动量momentum 优化器output_init_factor1.0固定1.0输出层初始化因子dropouts每层0.0[0.0, 0.5]长度为num_fc_layers1每层 dropoutfc_hid_sizes有 FC 层时每层256[64, 768]长度为num_fc_layers全连接隐藏层宽度conv_widths有卷积层时每层16[4, 12]卷积宽度conv_depths有卷积层时每层32[16, 64]卷积深度conv_strides有卷积层时每层1[1, max_strides]卷积步长conv_rates有卷积层时每层1[1, max_rates]膨胀卷积率conv_init_factors有卷积层时每层1.0固定1.0卷积初始化因子命令行--hpconfighp1value1,hp2value2,...会通过study.FixSelectParameters(hpconfig)固定指定超参数其余由 tuner 决定无 tuner 时hps hps.parse(FLAGS.hpconfig)直接解析为固定配置。3.3.2 tuner 相关的训练控制 flag源码定义了完整的 tuner 控制面train_feedforward.py--autotune为 true 时通过 Vizier 使用自动化超参数优化对应_train_with_autotunestudy 名为aptamer_ff.study_name or run_name--tuner_loss优化目标可选loss最小化或auc/true_top_1p最大化--tuner_algorithmRANDOM_SEARCH或DEFAULT_ALGORITHM--tuner_targettuner 优化的目标计数默认mean--metrics_measures上报给 Vizier 的度量默认[auc/true_top_1p, spearman_correlation/score_top_1p]评估端的 Spearman 相关实现在 eval_feedforward.py--epoch_interval_to_save_best每隔多少 epoch 检查当前模型是否比历史最优有更低验证损失若是则更新保存的最佳模型默认 5--task在线运行时每个副本的任务 ID。四、作为附加任务预测 1D 辅助特征4.1 用法要把**分区函数partition function**等 1D 辅助特征作为附加预测任务只需把所有要预测的特征名用逗号连接、用双引号包裹作为--additional_output的值传入。合法的特征名是 aptamers_mlpd/learning/data.py 中feature_tensors的键。预测如何生成、损失如何处理详见Predicting Affinity vs. Counts (output_layers.py) - Aptamer Tf Model文档。示例命令[cmd to initiate training] \ --save_basexxx \ --epochs2 \ --epoch_size1e6 \ --run_name$RUN_NAME \ --num_fc_layers1 \ --datasetaptitude --additional_outputpartition_function,boltzmann_probability4.2 源码中的数据特征与附加输出机制特征名常量定义在 data.pySEQUENCE_ONE_HOT、SEQUENCE_KMER_COUNT、STRUCTURE_PARTITION_FUNCTION。其中partition_function特征只有当 experiment proto 的has_partition_function为真时才会被build_features解析data.py若把STRUCTURE_PARTITION_FUNCTION加入--input_features而 proto 缺少该数据run_training_with_default_inputs 会抛出ValueError拒绝启动。附加输出轴在 output_layers.py 中hps.additional_output.split(,)被解析后传入输出层构造create_output_layer中LatentAffinity等输出层会为附加输出建立additional_output_axisLabeledTensor 轴并把它们并入logit_axislt.Axis(target, target_names additional_output)见 output_layers.py从而与计数目标一起被预测predict_additional_output则负责在推理时产出这些附加预测output_layers.py。proto 同步run_training_with_default_inputs还会把additional_output中尚未存在的特征名以name measurement_id的形式追加进 experiment proto 的additional_output字段train_feedforward.py保证下游数据管线与模型目标一致。输入特征合法性--input_features只接受_VALID_INPUT_FEATURES集合SEQUENCE_ONE_HOT、SEQUENCE_KMER_COUNT见 train_feedforward.py使用SEQUENCE_KMER_COUNT时可用--kmer_k_max默认 4控制最大 k-mer 长度其均值/标准差按二项分布近似计算data.py。五、附面向论文复现的完整模型参数aptamers_mlpd/README.md 提供了论文中三种模型Counts、Binned、SuperBin的完整train_feedforward参数可作为理解上述 flag 语义与实操参考的延伸注意内部命令需替换为你的实际运行环境Counts 模型--output_layerLATENT_AFFINITY --loss_nameSQUARED_ERROR --num_conv_layers3 --num_fc_layers3 --input_featuresSEQUENCE_ONE_HOT,SEQUENCE_KMER_COUNT --additional_outputpartition_function --epoch_size200000 --total_reads_defining_positive1000 ...Binned 模型--output_layerFULLY_OBSERVED --loss_normSKIP --num_fc_layers0 --preprocess_modePREPROCESS_ALL_COUNTS --additional_output空...Binned 三元标签定义见 learning/README.md0[0,.1)、1[.1,.9]、2(.9,1.0]SuperBin 模型基于 Binned 标签聚合出的 8 类 super_bin 标签-1歧义到6全高分同样使用FULLY_OBSERVED输出层与--dependency_normSKIP。六、常见问题与排错要点--input_dir与--dataset同时/均未指定入口直接抛ValueErrortrain_feedforward.py。训练发散diverged瞬时损失越过[min_cost, MAX_COST]边界会抛TrainingDivergedException并记录日志常见诱因是初始权重不佳或学习率/动量过大Poisson 类损失允许负值其min_cost被设为负无穷train_feedforward.py。卷积超参数不可行stride 与 rate 同时大于 1、或卷积输出宽度不足时hps_is_infeasible会拦截train_feedforward.py有 tuner 时回报为 infeasible 而非硬失败。过训练风险模型不会早停、学习率不衰减务必依据每个 epoch 的训练/验证评估报告人工判断收敛点。特征与 proto 不匹配使用STRUCTURE_PARTITION_FUNCTION输入特征但 proto 无分区函数数据时会报错train_feedforward.py。总结aptamers_mlpd/learning/playbook.md与 train_feedforward.py 一起构成了完整的适配体计数预测模型训练闭环本地用--epoch_size/--eval_size控制训练节奏快速调试集群上以meta-parameter 固定 hyper-parameter 随机搜索的方式在 40 种模型组合 × 100 副本的规模上寻找最优配置并通过--additional_output把分区函数等 1D 特征并入多任务学习目标。理解这些 flag 与源码中的实现细节是复现论文实验、或把该学习管线迁移到自有 SELEX/MLPD 数据的关键一步。赞分享人工智能深度学习NLP计算机视觉强化学习【免费下载链接】google-researchGoogle Research项目地址https://gitcode.com/gh_mirrors/go/google-research点击查看免费下载相关推荐PaddleOCR 文字检测模型训练实战基于 ICDAR2015 的完整训练、评估与部署指南PaddleOCR 文字检测模型训练实战基于 ICDAR2015 的完整训练、评估与部署指南 PaddleOCR 的文字检测Text Detection模人工智能计算机视觉深度学习Megatron-11b 实战指南基于 fairseq 的 11B 参数模型并行训练与 Wikitext-103 困惑度评估Megatron 11b 实战指南基于 fairseq 的 11B 参数模型并行训练与 Wikitext 103 困惑度评估 本文基于 kosmos 2/fa人工智能大模型预训练深度学习NLP计算机视觉多模态语音音频微调LTX Trainer 训练与微调实战指南基于 LTX-2 音视频生成模型的 LoRA 训练与全参数微调LTX Trainer 训练与微调实战指南基于 LTX 2 音视频生成模型的 LoRA 训练与全参数微调 本篇技术指南系统讲解 LTX 2 官方仓库中 ltx人工智能大模型基础模型媒体生成视频音频多模态预训练微调创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考