百科问答小站 logo
百科问答小站 font logo



深度学习方面的科研工作中的实验代码有什么规范和写作技巧?如何妥善管理实验数据? 第1页

  

user avatar   rumor-lee 网友的相关建议: 
      

我没用什么工具,自己迭代下来一套流程,至今还是很方便的。

想法超简单,就是给每个实验创建一个「箱子」,把所有相关的尽可能存进去,评估的时候再从箱子里把模型结构、文件拿出来,这样就能保证实验结果好找、好复现。

具体操作起来就会有很多箱子,存成这个样子:

       我的主目录   /bert_base(每个结构上的大变动都单独变成大箱子)     /2021080801(具体的实验,用日期+编号或者参数设置命名都可以)     /202108080X   /sentence_bert     /20210809X     

在启动每个小任务时,具体流程是:

  1. 给每个实验单独创建文件夹
  2. 把模型代码(模型结构、训练、预处理)和超参数、数据路径保存到该文件夹
  3. 把模型存储到该文件夹
  4. 把训练log存储到该文件夹

做NLP的同学基本现在都是bert,直接把我的自动化脚本贴出来:

这个是train.sh,启动命令是 sh train.sh gpu_id modelname

       gpu=$1 model_name=$2 pretrained_model=/home/pretrained_model data_dir=/home/data  # 检查输入的实验模型名称是否为空 if [ ! "$model_name" ]; then     echo "modelname is none"     exit 1 fi  # 创建实验文件夹 if [ ! -d "$model_name" ]; then     mkdir $model_name fi  # 检查实验是否已存在 if [ -n "`find $model_name -maxdepth 1 -name '*.bin'`" ]; then     echo "model exists"     exit 1 fi  # 备份实验代码 cp main.py $model_name/ cp prepro.py $model_name/ cp model.py $model_name/ cp train.sh $model_name/  echo "use gpu: $gpu"  export CUDA_VISIBLE_DEVICES=$gpu; nohup python -u main.py      --model_type=bert      --data_dir=$data_dir      --input_train_file=train.tsv      --input_eval_file=$data_dir/dev.txt     --output_eval_file=$model_name/dev_eval.txt       --model_name_or_path=$pretrained_model      --task_name=cls      --output_dir=$model_name      --max_seq_length=20      --do_train      --do_eval      --evaluate_during_training      --per_gpu_train_batch_size=512      --per_gpu_eval_batch_size=512      --learning_rate=2e-5      --weight_decay=0.01      --warmup_steps=10000      --num_train_epochs=2      --logging_steps=5000      --save_steps=5000      --ouput_path=$model_name      --do_lower_case      --fp16      > $model_name/log.txt 2>&1 & # 保存log  echo "$model_name/log.txt"     

这个是eval.sh,启动命令是 sh eval.sh gpu_id modelname

       gpu=$1 model_name=$2 data_dir=/home/data  # 检查输入的实验模型名称是否为空 if [ ! "$model_name" ]; then     echo "modelname is none"     exit 1 fi  # 检查实验模型是否存在 if [ ! -d "$model_name" ]; then     echo "$model_name do not exist"     exit 1 fi  # 把训练时的模型文件拷贝出来(防止现在代码有变动) cp $model_name/main.py ./ cp $model_name/prepro.py ./ cp $model_name/model.py ./  echo "use gpu: $gpu"  export CUDA_VISIBLE_DEVICES=$gpu; python main.py      --model_type=bert      --do_eval      --input_eval_file=$data_dir/test.tsv      --output_eval_file=$model_name/test_eval.txt      --data_dir=$data_dir      --model_name_or_path=$model_name      --task_name=cls      --output_dir=$model_name      --max_seq_length=20      --per_gpu_eval_batch_size=512      --ouput_path=$model_name      --fp16      

如果要更大批量的预测训练,再用shell把这些脚本包一下就好了,shell太香




  

相关话题

  在NLP上,CNN、RNN(认为LSTM等变体也是RNN)、最简单全连结MLP,三者相比,各有何优劣? 
  中科院派出专项工作组调查“90多人集体离职”事件,你觉得科研人员集体离职的原因可能是什么? 
  从今年校招来看,机器学习等算法岗位应届生超多,竞争激烈,未来 3-5 年机器学习相关就业会达到饱和吗? 
  对自己深度学习方向的论文有idea,可是工程实践能力跟不上,实验搞不定怎么办? 
  从事食品研发工作的人的一天是怎样的? 
  如何看待石正丽、高福等 7 位学者发文呼吁将 SARS-CoV-2 重新命名,以免产生误导和不利影响? 
  如何看待最近一段时间旷视科技Face++、阿里、小米、京东、科大讯飞和地平线等相继在南京建立研发中心? 
  若俄语自五十年代起成为中国的科研教育语言,会对今日的中国产生什么影响? 
  如何看待暨南大学苏炳添副教授以自己为例发表中国男子 100m 短跑论文? 
  选一个知乎用户做你自己的研究生导师(或论文委员会委员),你的人选是谁? 

前一个讨论
预训练模型的训练任务在 MLM 之外还有哪些有效方式?
下一个讨论
VQA(视觉问答)现在的主要挑战是什么?





© 2024-09-19 - tinynew.org. All Rights Reserved.
© 2024-09-19 - tinynew.org. 保留所有权利