Tensorflow 开发者认证记录
- 记录
又名:我是如何在 7 天内通过 Tensorflow 开发者认证的,以及你应该这样做吗?
作者在 2021/7/4 参加考试。本文写于 2021/7/7。文中内容可能在未来发生变化。
下文简称 Tensorflow 为 TF,机器学习(Machine Learning)为 ML,深度学习(Deep Learning)为 DL。虽然 DL 在分类上而言是 ML 的一部分,但鉴于 DL 在各大领域取得的进展,常常将 ML 和 DL 并列。
TL;DR
- 7天(甚至更短时间内)通过 TF 开发者认证是可行的。
- 就实践水平而言,这一认证的含金量并不高(有点水),通过认证只意味着认证人具有基本的,使用 TF 进行图像分类/文本分类/时间序列预测任务的能力。
- 与其代表的实际水平相比,这一认证更大的意义可能在于强迫自己去阅读/学习,以及向潜在的雇主证明自己有能力/意向进行 ML/DL 的相关工作。
预备知识
这个证书是什么?
- Tensorflow 是一个 Google 创建的开源的 DL 框架,使用广泛,也在 Google 内部支持着许多服务
- Tensorflow Developer Certification 是 Google 的一个认证项目,在 2020 年 3 月开始,旨在证明认证人有能力使用 Tensorflow 建立 DL 模型,完成指定任务。
为什么你可能会想要这个证书?
- 通过考证的过程学习 ML/DL 的相关知识
- 向未来的雇主证明自己有意愿/有能力完成 ML/DL 相关的工作
考试如何进行?
-
报名费 $100,缴费后 180 天内需参加考试
-
5 小时时限,5 个任务,全部完成后可以提前结束
-
每个任务需要提交一个模型,可以随时提交,提交后几乎立刻可以得到一个五分制的反馈
-
不同任务的分值不同,但是没有明确列出。理论上要求总分在 90% 以上通过
-
每个任务包含题目描述和代码框架,并不是从零开始,更接近填空
-
因为模型需要在远端测评架构上进行评分,模型输入和输出是被严格限定的,主要能调整的是模型架构和训练过程
-
考试要求 Pycharm,但 Pycharm 实际上只是考试 UI,实际的模型建立/训练可以在其他设备/平台上进行(如 Colab,Jupyter Notebook),只需要把最后得到的模型文件(.h5)放回考试目录下即可
-
不限制网络使用,可以使用任何资源答题
-
考试失败后,需要间隔一段时间才能再次参加(首次 14 日,第二次一个月,第三次一年)
我的个人背景
- 我自己从大三开始,陆陆续续修了一些数据科学/深度学习相关的课程,但是除了课程作业之外没有多少实践。
- 自己之前主要使用的 DL 框架是 PyTorch,对于 TensorFlow 了解不多。
- 现在算是暑假期间,暂时有一些自己的空闲时间。
- 之前一直想通过读 HOML (Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow, 2nd Edition)来学习使用 TF 的知识,但是静不下心去强迫自己学习。
- 好奇 Google 会如何通过证书考试的形式量化开发者的能力。
我参加这一考试的目标
-
熟悉 TF 的架构和使用。
-
掌握使用 TF 构建 DL 模型,完成数据科学任务的全流程(从数据输入到模型在生产环境上线)。
-
能够完成常见的 DL 任务(图像/文本/时间序列/结构化数据)。
后文将会回顾这些目标的完成度。
考前准备
我首次听说这个考试是在 Daniel Bourke 的视频 (YouTube),主要使用的相关资料也主要参考了他的博客。此外,TFUG 苏州的这一视频讲解 (Bilibili) 及 微信公众号文章 也提供了一些帮助。
资源
以下资源按重要程度排序。
-
TF 开发者证书候选人手册(中文版 link,英文版 link) TF 开发者证书考试指导,TF 开发者证书考试环境配置(考前可从考试平台下载)
必须。《候选人手册》是最重要的官方文档,需要详细阅读。其中有一个技能清单(Skill Checklist),基本上也就是考试会覆盖的主要内容了。《考试指导》和《环境配置》两个文档在为考试缴费后才在考试平台上可见,建议在开考前先通读一遍,并试着自己建立环境,以避免开考后遇到环境配置问题。
-
在线课程《DeepLearning.AI TensorFlow Developer 专业证书》(Coursera, 课程 Notebook Repo)
必须。 实际上是四门课程的集合,分别覆盖深度学习基础、CNN、NLP和时间序列。和技能清单几乎完全重合(实际上课程主讲和证书发放签名人是同一位)。课程内有视频和在线测评环境,习题也和真正的考试试题差不多,基本上能跟着完成课程,考试也就不会有太大问题了。课程本身价格是 $59,但是有一周的免费试用(需要银行卡),可以快速刷完后取消付款方式关联。
-
书籍 (HOML)《Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow, 2nd Edition》(中文版:《Scikit-Learn、Keras 与TensorFlow 机器学习实用指南(第二版)》)(O’Reilly ,书 NoteBook Repo)
推荐。 这本书更接近延伸阅读材料,内容本身超出考试很多,但是对构建知识体系更有帮助。有些内容在线课程里说的不是很清楚(如
tf.Dataset
的使用),书里会有更详细的讲解。和考试相关的部分是第 10 章至第 16 章。我所在的学校购买了 O’Reilly 的电子订阅,因此我选择在 iPad 上进行阅读,但是也可以购买纸质版本阅读。 -
可选。 教程类似于 Cookbook,有解决各种任务的示例。指南则更注重底层原理和基础知识。可以先浏览一遍目录,在遇到不懂之处的时候进行查阅。如有时间也可通读。
学习思路
面对这种多种资源覆盖同一主题的情况,一般有两种学习思路:
- 纵深:一次学习所有和这个主题相关的资源
- 重复:一次学习一个特定资源,在不同主题间重复
纵深 | 重复 |
---|---|
在 Daniel Bourke 的博客分享中,他使用的是纵深的学习思路(tribird approach,一石三鸟),每天选定一个主题,首先看对应的在线课程,然后阅读书籍,再花时间写代码练习,最后看 MIT 的视频收尾。但是根据我自己的经验,我更习惯于重复的学习思路,需要让大脑把知识在后台处理一段时间,才能找到一些没想清楚的地方,从而进一步学习。各位读者可以根据自己的习惯选择合适的路线。
学习时间线
-
Day 1:通读《候选人手册》,打印技能清单作为速查备忘。在考试平台上注册考试并缴费(需要提前完成,身份审核需要一段时间)。学习在线课程的前两个课程,完成课后习题。(学习时间约 8h)
-
Day 2:学习在线课程的后两个课程,完成课后习题。(学习时间约 10h)
-
Day 3:阅读书籍的 10 ~ 13 章并做笔记,同时查看相关笔记本的代码示例。(学习时间约 8h)
-
Day 4:阅读书籍的 14 ~ 16 章并做笔记,同时查看相关笔记本的代码示例。阅读 TF 官方指南中的「Keras」部分。(学习时间约 10h)
-
Day 5:阅读 TF 官方教程中的「Keras 机器学习基础知识」、「加载和预处理数据」、「图像」、「文本」、「结构化数据」部分。处理之前笔记中遗留的部分问题。开始尝试从零实现 Day 1 中的作业(首先复现,然后使用不同的数据集)。(学习时间约 12h)
-
Day 6:开始尝试从零实现 Day 2 中的作业。复现 TF 官方教程中的几个自己认为有趣的示例。尝试使用 Keras-tuner。根据环境配置文档准备准备考试环境。(学习时间约 12h)
-
Day 7:复习笔记。重新阅读《候选人手册》和《考试指导》。在 Pycharm 下复现一个之前的作业。(学习时间约 8h)
-
Day 8:参加考试。
学习建议
- 建立自己的 code snippet (代码片段)集合,在需要的时候可以快速查阅(常用的网络结构、常用的预处理代码、常用的 Callback…)
- 建立 checklist(检查清单),如
- 模型精度不符合预期的可能出错点(根据自己完成作业的经历建立)
- 过拟合的处理方式(根据自己的经验和阅读的相关资料)
- 保留所有自己写过的代码,以备查阅
设备与环境
我自己使用的是实验室内的工作站,GPU (Quardo M2000, 4G VRAM) 比较老旧,系统是 Ubuntu 18.04,Pycharm 版本 2021.1.3 Community。为了保险,考前在学校的超算上申请了一个 GPU 示例备用,GPU 为 RTX2080。
考试本身需要训练的模型其实都不会太大,根据《考试指导》中的描述,如果能在本地跑通 图像分类 和 文本分类 这两个示例,基本就不会有问题了。再加上有五个小时的时间,一般情况下是不用担心本地算力过低导致训练失败的。如果条件是在比较有限,可以使用 Colab 进行训练,或者是在主流的云厂商平台上购买带有 GPU 或是为深度学习优化过的实例。
考试是在 virtualenv 的虚拟环境中建立的,需要提前在系统级别安装 Python 3.8 版本。官方的《考试指导》中特别注明了不可以使用 Anaconda,不太确定原因,但是最好遵守。
需要注意的是,Pycharm 本身虽然可以设定使用远程 SSH 连接下的 Python Interpreter,但是这一配置是不受到考试插件支持的,因此最好直接在具有 GPU 的设备上安装 Pycharm 和考试插件。
网络环境方面,因为考试本身需要从 Google 的服务器下载数据集和上传模型,建议自行确保到国际互联网的连接质量,或是在网络低峰期参加考试。数据集在代码中使用 request
库进行下载,但是也可以手动使用其他工具下载后放置于考试目录内。
考试中
- 需要提前准备系统的 Python 3.8 环境,并在 Pycharm 内安装一个 TF Certification Exam 插件。
- 插件运行后首先需要登录 Google 账户认证,然后会自动创建 venv 并安装依赖。完成后显示「Start Exam」按钮,点击后即考试开始。
- 插件会自动建立一个 Pycharm 工程,其中有 5 个文件夹,命名为 Category1 到 Category5。每个文件夹内有一个
starter.py
为基本的代码框架,内部有#TODO
注释标注需要填写的部分。在编辑starter.py
时,插件会自动显示本题的描述。 - 完成训练后,会在题目目录下生成
mymodel.h5
文件。如果使用其他设备训练,也可以从其他设备下载模型文件后,手动放置到文件夹内(需要为 h5 格式)。在插件内选择Submit and Test model
就会自动提交到服务器进行测评,右下角进度条会显示上传进度,一般上传完成后 30s 内就会返回评分(0/5 到 5/5)。如果太久没有返回评分,可能是模型过大/过复杂,可以取消当前测评。 - 可以无限次提交模型。测评本身是基于后台的一部分隐藏数据的,根据部分参加者的反馈,数据存在一定随机性,即使是同一模型的多次提交,返回的分数也可能存在浮动。
- 所有题目都拿到 5/5 评分后,即可点击插件,选择「End Exam」,确认后结束考试。
我自己的这一次考试比较幸运,因为事前自己根据《环境配置》文档验证过环境,没有遇到环境导致的问题。5 个题目都不是很难,我在开考后的 40 分钟就完成了 4 个题目并拿到 5/5,但是 NLP 的题目十分诡异,尝试了各种架构都只能得到 4/5 评分。最后换了优化器,调小学习率,增大 epoch 数慢慢训练,总算 5/5 了。最后结束考试的时候,还剩余 3 小时 10 分钟。
本次我遇到的 5 个题目是:
- 一个很简单的回归
- 一个你绝对已经遇到过多次的数据集的分类
- 图像分类
- 自然语言处理(文本分类)
- 时间序列预测
考试结束后
如果通过,几分钟内就会收到通过邮件,并可以填写信息注册到 Google 的认证网络。数字证书需要几个工作日才会通过电子邮件发送。
回顾与总结
回顾这一周,我认为这是一次有趣的经历。可能对我而言,花钱是强迫自己学习的有效方式,至少这一周我是好好把 HOML 中的部分章节给啃下来了。考试本身比想象中容易很多,更说明通过这场考试只是一个开始,仅仅证明自己具备了基本的,跟随教程完成部分简单任务的技能,但是离真正掌握还有很远。
之前我自己定下的目标的完成情况如下:
- 熟悉 TF 的架构和使用
- 完成(至少从完全没有经验到能快速上手构建原型了)
- 掌握使用 TF 构建 DL 模型,完成数据科学任务的全流程(从数据输入到模型在生产环境上线)
- 部分完成(本次学习主要覆盖的是从数据输入到模型建立,但是后续部署到生产环境没有怎么覆盖)
- 能够完成常见的 DL 任务(图像/文本/时间序列/结构化数据)
- 基本完成(每个大分类下都还有很多细分任务,本次学习只是覆盖了最基本的一些任务,但是作为基础知识与入门的介绍已经足够好了)
所以你应该参加这个认证吗?
在我看来,对于未来的计算机/数据科学专业的学生,ML/DL 的技能会被认为是「默认掌握」的。TF 的这个开发者认证,会更接近当前「计算机二级」认证的认可层级:对专业外的学生是额外技能的体现,对于专业内的学生则没有太大的意义。但是就当前而言,获得这一认证可能还是有其意义的,至少在一些小公司可能更容易让你通过 HR 筛。
表格:如果满足以下条件,你…参加这个认证
可能应该 | 可能不应该 |
---|---|
- 想强迫自己学点东西 - 从其他专业转行,需要证明自己的能力和求职意向 - 简历上没有太多能写的经历 |
- 已经有了成熟、丰富的 ML/DL 经验 - 手头没有闲钱/时间 - 觉得 TensorFlow 太难用了,PyTorch 万岁 |