踩坑记录——记一次训练提交baseline全过程

本文记录了一位新手如何在Windows 10专业版环境下,通过Docker提交天池比赛的BERT模型,包括环境配置、数据处理、模型训练和Docker部署的详细步骤,旨在帮助其他初学者避免踩坑。

目的

  根据Datawhale大佬们提供的baseline训练模型,并通过docker的方式提交到天池比赛,获得自己的分数。对于新手来说,并没有看起来那么轻松,特此记录踩坑历程。感谢老师们的指点!

背景

个人配置

  • 操作系统:windows10专业版(Tipis:家庭版装docker会有区别)
  • 显卡:RTX3070
  • 环境:pytorch1.7.1(GPU版)+ CUDA11.1 + Pycharm + windows版Docker

赛题要求

  Tips:之后将基于该baseline教程,详细叙述我的配置历程。

本机跑通Baseline

pytorch配置

  • 关于windows版的Anaconda+Pytorch+Pycharm+Cuda配置可以看我之前总结的博客:地址
  • 关于CuDNN的配置可以看我另一篇总结:地址

  踩了许多坑的总结~

准备环节

  git clone模型文件到本机,项目命名为tianchi-multi-task-nlp,运行环境为pytorch虚拟环境,编译器为Pycharm。

添加transformers和sklearn

  pytorch虚拟环境中并没有这两项,我们需要使用pip安装一下。不过要注意一点,我们需要将这两个包安装到pytorch虚拟环境下,而不是直接在cmd中全局安装。
  打开Anaconda->powershell prompt,我们通过powershell prompt进入pytorch虚拟环境。

conda activate <pytorch环境名称(自己命名)> #激活虚拟环境
pip install transformers #安装transformers
pip install sklearn      #安装sklearn

  安装结果如图:
在这里插入图片描述

数据文件及bert配置

  下载中文预训练BERT模型bert-base-chinese,地址:https://huggingface.co/bert-base-chinese/tree/main
在这里插入图片描述
  只需下载config.jsonvocab.txtpytorch_model.bin,把这三个文件放进tianchi-multi-task-nlp/bert_pretrain_model文件夹下。

在这里插入图片描述
  下载比赛数据集,把三个数据集分别放进tianchi-multi-task-nlp/tianchi_datasets/数据集名字/下面:

  • OCEMOTION/total.csv:
<think>嗯,用户想了解如何在代码中集成wandb来记录实验过程。我之前学过一些关于wandb的知识,得它主要用于机器学习实验的跟踪和管理。首先,用户可能需要基本的配置步骤,比如安装和登录。安装应该是通过pip安装wandb库,然后使用wandb.login()来登录,这需要API密钥。 接下来,用户可能需要初始化一个实验运行。使用wandb.init()函数,里面需要设置项目名称、运行名称、备注和标签等参数。项目名称是最高级的分类,运行名称可以具体到某次实验,备注和标签有助于后续筛选和分析。比如用户提到的project="cat-classification",name和notes的设置,这些参数应该都放在init里。 然后,记录超参数和指标。超参数可以用wandb.config来保存,比如学习率、批次大小这些。在训练循环中,用户可能需要记录损失、准确率等指标,这时候用wandb.log()函数,定期或在每个epoch结束后记录。比如wandb.log({"loss": loss, "acc": acc})。 用户可能还关心如何上传文件或保存模型。wandb.save()可以用于保存模型文件,而wandb.log_artifact()可以记录其他类型的文件,比如数据集或配置文件。此外,wandb.Image()可以用来记录图像,比如混淆矩阵或样本图片,帮助可视化结果。 需要提醒用户注意密钥的安全性,不要将API密钥直接写在代码里,而是通过环境变量或者配置文件来管理。另外,不同的框架(如PyTorch、TensorFlow)可能有特定的集成方式,用户可能需要查看相应的示例代码。例如,引用中的超参搜索colab示例可能对用户有帮助。 用户的问题还可能涉及如何查看记录的数据,这时候需要引导他们到wandb的网页端查看。生成的图表和日志信息会自动同步到那里。可能还需要提到sweep功能,用于超参数搜索,但用户的问题目前集中在基础记录上,所以可能暂时不需要深入讲解。 最后,确保用户了解代码示例中的每个步骤,并能够根据实际项目调整参数。比如修改project名称,调整记录的指标频率,或者添加更多的日志信息。可能还需要提到异常处理,比如在代码结束时调用wandb.finish(),或者在发生错误时确保运行正确关闭。 总结一下,回答应该分步骤,从安装、登录、初始化、记录参数和指标、保存文件到结束运行,每一步都给出代码示例,并引用相关的文档或示例链接供用户参考。同时,生成的相关问题可以引导用户进一步学习高级功能或解决常见问题。</think>以下是如何在代码中使用wandb记录实验过程的步骤说明: ### 一、基础集成步骤 1. **安装与登录** ```python pip install wandb # 安装库 import wandb wandb.login(key='your_api_key') # 密钥在wandb官网个人主页获取 [^3] ``` 2. **初始化实验运行** ```python run = wandb.init( project="cat-classification", # 项目名称(网站可见的顶层分类) name="vgg16-baseline", # 当前实验的标识名称 notes="添加了注意力层", # 实验改动说明 tags=["baseline", "paper1"], # 分类标签 config={ # 记录超参数 "learning_rate": 0.001, "batch_size": 32, "epochs": 50 } ) ``` ### 二、核心记录功能 3. **训练过程记录** ```python for epoch in range(epochs): train_loss = 0.0 acc = 0.0 # 训练循环... # 记录指标 wandb.log({ "epoch": epoch, "train_loss": train_loss, "val_acc": acc, "confusion_matrix": wandb.plot.confusion_matrix(...) # 可视化支持 }) ``` 4. **文件与模型保存** ```python # 保存模型检查点 torch.save(model.state_dict(), "model.pth") wandb.save("model.pth") # 上传到wandb云端 # 记录数据集版本 artifact = wandb.Artifact('dataset', type='raw-data') artifact.add_dir('data/') wandb.log_artifact(artifact) ``` ### 三、高级功能示例 5. **超参数扫描集成** ```python sweep_config = { 'method': 'random', 'parameters': { 'learning_rate': {'values': [0.1, 0.01]}, 'optimizer': {'values': ['adam', 'sgd']} } } sweep_id = wandb.sweep(sweep_config, project="hyperparam-tuning") wandb.agent(sweep_id, train_function) # 参考超参搜索示例 [^2] ```
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值