Tensorflow 开发者认证记录

Jul 07, 2021-记录


又名:我是如何在 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)微信公众号文章 也提供了一些帮助。

资源

以下资源按重要程度排序。

  1. TF 开发者证书候选人手册(中文版 link,[英文版 link](TF_Certificate_Candidate_Handbook.pdf (tensorflow.org))) TF 开发者证书考试指导,TF 开发者证书考试环境配置(考前可从考试平台下载)

    必须。《候选人手册》是最重要的官方文档,需要详细阅读。其中有一个技能清单(Skill Checklist),基本上也就是考试会覆盖的主要内容了。《考试指导》和《环境配置》两个文档在为考试缴费后才在考试平台上可见,建议在开考前先通读一遍,并试着自己建立环境,以避免开考后遇到环境配置问题。

  2. 在线课程《DeepLearning.AI TensorFlow Developer 专业证书》(Coursera课程 Notebook Repo

    必须。 实际上是四门课程的集合,分别覆盖深度学习基础、CNN、NLP和时间序列。和技能清单几乎完全重合(实际上课程主讲和证书发放签名人是同一位)。课程内有视频和在线测评环境,习题也和真正的考试试题差不多,基本上能跟着完成课程,考试也就不会有太大问题了。课程本身价格是 $59,但是有一周的免费试用(需要银行卡),可以快速刷完后取消付款方式关联。

  3. 书籍 (HOML)《Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow, 2nd Edition》(中文版:《Scikit-LearnKerasTensorFlow 机器学习实用指南(第二版)》)(O’Reilly书 NoteBook Repo)

    **推荐。**这本书更接近延伸阅读材料,内容本身超出考试很多,但是对构建知识体系更有帮助。有些内容在线课程里说的不是很清楚(如 tf.Dataset 的使用),书里会有更详细的讲解。和考试相关的部分是第 10 章至第 16 章。我所在的学校购买了 O’Reilly 的电子订阅,因此我选择在 iPad 上进行阅读,但是也可以购买纸质版本阅读。

  4. TF 官方文档(教程指南

    **可选。**教程类似于 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 个题目是:

  1. 一个很简单的回归

  2. 一个你绝对已经遇到过多次的数据集的分类

  3. 图像分类

  4. 自然语言处理(文本分类)

  5. 时间序列预测

考试结束后

如果通过,几分钟内就会收到通过邮件,并可以填写信息注册到 Google 的认证网络。数字证书需要几个工作日才会通过电子邮件发送。

回顾与总结

回顾这一周,我认为这是一次有趣的经历。可能对我而言,花钱是强迫自己学习的有效方式,至少这一周我是好好把 HOML 中的部分章节给啃下来了。考试本身比想象中容易很多,更说明通过这场考试只是一个开始,仅仅证明自己具备了基本的,跟随教程完成部分简单任务的技能,但是离真正掌握还有很远。

之前我自己定下的目标的完成情况如下:

  • 熟悉 TF 的架构和使用

    • 完成(至少从完全没有经验到能快速上手构建原型了)

  • 掌握使用 TF 构建 DL 模型,完成数据科学任务的全流程(从数据输入到模型在生产环境上线)

    • 部分完成(本次学习主要覆盖的是从数据输入到模型建立,但是后续部署到生产环境没有怎么覆盖)

  • 能够完成常见的 DL 任务(图像/文本/时间序列/结构化数据)

    • 基本完成(每个大分类下都还有很多细分任务,本次学习只是覆盖了最基本的一些任务,但是作为基础知识与入门的介绍已经足够好了)

所以你应该参加这个认证吗?

在我看来,对于未来的计算机/数据科学专业的学生,ML/DL 的技能会被认为是「默认掌握」的。TF 的这个开发者认证,会更接近当前「计算机二级」认证的认可层级:对专业外的学生是额外技能的体现,对于专业内的学生则没有太大的意义。但是就当前而言,获得这一认证可能还是有其意义的,至少在一些小公司可能更容易让你通过 HR 筛。

表格:如果满足以下条件,你…参加这个认证

(0)

相关推荐