乐趣区

关于challenge:MMLab-AI-实战营从新手到大佬的修炼场

本文为作者作为 学员 + 助教 参加 2023 年初 OpenMMLab AI 实战营的教训贴,不能确保实用于将来的实战营,也不免有全面之处,心愿发现问题的小伙伴能够在评论区中踊跃探讨~

让漂亮周边奖品陪伴一段成长

  • AI 实战营真的提供了十分丰盛的激励
实战营成就 激励
优良学员 证书、周边、OpenMMLab 内推机会
优良助教 证书、进阶周边、MMS(布道师)社区最高荣誉直推通道、社区特邀专访、OpenMMLab 内推机会
优良班长 相似“优良助教”
  • 也带我摸索了很多有价值的技术和工具
  • 学会了我的项目的保护流程
  • 学会向开源社区提交 pr(pull request)和文章
  • 学会……

笔记 & 经验总结

上面我来总结实战营中学习到的技术和常识,分为 4 个方面:常用命令、常用工具、GitHub 作业保护、OpenMMLab 奉献指南

常用命令

ANACONDA 常用命令与一些解决方案

创立虚拟环境
conda create -n your_env_name python=X.X
更新 conda(慎用!!!,新 conda 可能用不了)
conda updata conda
查看虚拟环境菜单和环境内已载入库
conda env list
conda list
激活虚拟环境
Conda activate your_env_name
如果遇到 conda 装置频繁报错,应用如下语句:
conda clean -i
如果可怜要删除虚拟环境
conda remove -n your_env_name --all
PyTorch 举荐装置命令
pip install torch==1.13.1+cu117 torchvision==0.14.1+cu117 -f https://download.pytorch.org/whl/cu117/torch_stable.html
我罕用的 pip 镜像
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple # 清华  
pip install -i https://pypi.douban.com/simple # 豆瓣(举荐)
装置其余我的项目的 requirements.txt
pip install -r requirements.txt

TENSORBOARD 可视化

  • 首先学习以下 tensorboardX 怎么用。在 OpenMMLab 中,只需找到 configs/_base_/default_runtime.py 中的如下代码,解除 dict(type='TensorboardLoggerHook') 正文局部即可开启 tensorboard 记录器
log_config = dict(  
    interval=50,  
    hooks=[dict(type='TextLoggerHook', by_epoch=False),  
        # dict(type='TensorboardLoggerHook')  
        # dict(type='PaviLoggerHook') # for internal services  
    ])
  • 如果遇到环境问题,则依照提醒配置 tensorboard 环境即可
  • 个别训练代码运行之后会同时生成 tensorboardX 的日志文件。这时复制日志文件所在文件夹门路,关上 Anaconda 命令行,切换环境至 torch,输出图中语句为日志文件夹创立 tensorboardX 默认的本地端口

    tensorboard --logdir PATH {log_file_abs_path}
  • 执行失去端口地址,复制到浏览器关上即可查看训练可视化内容
  • 敞开端口占用,只需短 / 长按 CTRL + C

常用工具

代码编辑器

编写代码或配置文件的时候,次要思考怎么连贯我的项目环境、是否不便代码编写和调试、是否不便连贯近程服务器(MMLab 提供收费云 GPU 额度)

  • PyCharm 专业版或企业版

    • 只须要 Anaconda 配置好 Python 环境,并装置好环境依赖,抉择环境外部的 Python 解释器门路即可。同时,PyCharm 会自动检测我的项目中缺失的依赖库,并提供软件内的一键装置(就是很容易遇到国内网络环境的问题)
    • PyCharm 提供了十分智能的代码提醒和辅助性能,属于遗记语法也能帮你写对的那种。辅助性能如批改原始变量、函数或其余命名时,主动批改调用名、鼠标点击疾速跳转到定义等都很实用,编写 Python 我的项目十分难受。然而得吐槽一下它的 Typo 辨认常常把代码搞得花花的很难看,你想让他疏忽还得手动到设置里找
    • 最大的问题是,如果你应用的服务器对门路束缚比拟多,并且只提供无限的零碎环境的,那 PyCharm 不能给你无缝的近程服务器应用体验。因为近程 Python 环境的配置和抉择很麻烦,如果解决不了近程环境的问题就无奈间接调试
我的项目环境连贯 代码编写与调试 连贯近程服务器
⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐
  • VS Code

    • VS Code 抉择环境的过程更简略,它会间接辨认 Anaconda 的已有环境,你只须要在状态栏抉择即可。然而如果缺失依赖还是须要到终端自行装置
    • VS Code 的插件社区比 PyCharm 要发达很多,你能够装置各种性能的插件来靠近残缺 IDE 的成果。但遗憾的是,我尝试过在记不清楚根本语法的状况下借助 intellisense 搭建一个 PyTorch 下的 ResNet,后果 VS Code 没查看出我继承类和编写函数时的语法错误,导致运行脚本总是报错。最初,用 PyCharm 关上我的项目胜利锁定错误代码并做好了修复
    • VS Code 通过 Remote SSH 插件能够很不便得连贯并治理云服务器,我能够无缝拖入和导出文件,也能够不便地调试远端脚本
我的项目环境连贯 代码编写与调试 连贯近程服务器
⭐⭐⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐⭐

Obsidian 技术笔记

  • 家喻户晓,做技术摸索的时候最要害的解决步骤总是怕遗记,到须要复用的时候不晓得从何找起。所以不便复制、随时查看、跨平台同步、界面好看的电子技术笔记就十分重要。在实战营中帮忙我最多的时 Obsidian。
  • Markdown 语法:首先,Obsidian 官网默认反对的就是 Markdown 语法。花里胡哨的 OneNote 只能在 Office365 中共享文章款式,然而 Markdown 作为开源社区 Github 最重要的、自动化配置款式的、为技术人员熟知的文档技术能很好地实现 <u> 跨平台、高度一致、对外兼容 </u>
  • 完完整整的同步机制:你不仅能够借助云盘同步你的 MD 文章仓库,还能够同步你的设置、插件。这样无论你切换到哪个设施,Obsidian 都能用统一的界面主题、文本款式、偏好设置向你展示你的文章。此外,任意一个设施的更改都会疾速同步到其余设施上

GITHUB 作业保护

MMLab 实战营的作业成绩都是要求在 Github 上保护的,然而大部分学员会遇到网络环境的拜访问题,或者不了解 Github 的作用,也不分明怎么利用 Github 保护一个我的项目

网络环境问题

  • 一些非法合规的解决思路:

    • 应用 Github 的镜像网站:https://github.com.cnpmjs.org 或 https://hub.fastgit.org,但根本只能在下载的时候用
    • 应用其余 CDN 服务,对 Github 的动态文件进行减速
    • 应用 Gitee 或其余国内的代码托管平台
    • 批改 Hosts 文件,将 Github 的域名和 IP 地址绑定,从而防止 DNS 解析的提早或烦扰

创立本人的我的项目

  • 首先,在你的 Github 创立新的仓库,留神命名的格局个别是 xxx-yyy 或者 xxxYyy,名字要多用简写,要概括仓库的性能

筹备上传

  • 而后将你的仓库克隆到本地,如果你嫌命令行中更换文件目录麻烦,也能够下载下来解压缩,本人放到适合的文件门路
  • 把本地的我的项目残缺复制到克隆下来的仓库文件夹,适当疏忽一些和代码库与性能无关的文件或文件夹
  • 而后在仓库文件夹的首页增加一个 md 文件,命名为 README.md,外面遵循 Markdown 语法,Github 仓库首页会主动展现这个文档在你的代码库上面。一个优良的 README 须要装点门面,比方提供其余相干页面的跳转链接、向访客介绍仓库的概述、疏导访客配置环境并运行必要的性能,也能够提供其余更多的详细信息。留神图文联合,代码块活用

提交更改

  • 应用 git status 查看以后更改
  • 应用 git add * 将所有更改增加到上传列表
  • 应用 git commit 提交以后更改,留神在 -m 前面用字符串写此次提交的题目
git commit -m "first commit"

OpenMMLab 奉献指南

ref:
官网奉献指南:奉献代码
官网代码标准:代码标准

PR 形容标准

题目
  • sample:[Docs] Refine contribute.md
  • 在结尾应用英文括号形容批改的对象,常见批改对象有

    对象 形容
    Docs 官网文档更新 能够是 refine 也能够补充
    Feature 新性能 新性能 support 对 xxx 的反对
    Fix 修复 bug
    WIP 先提出来 期待开发实现 临时不必 review

REFINE DOCs 的一些成果

代码快 to 提示框
  • 基于代码快的语法,通过非凡的标注实现代码快到提示框的转换

    • 注解{Note}
    • 参见{SeeAlso}
    • 正告{Warning}

最初

  • 大家都来踊跃退出 MMLab 实战营吧,祝小伙伴们都能从中播种本人的成长和乐趣!

本文参加了 SegmentFault 思否写作挑战赛,欢送正在浏览的你也退出。

退出移动版