Tesla自动驾驶Autopilot(第2弹):多任务分布式PyTorch训练,FSD芯片,NPU,Dojo和其他

过去十年是云计算(集中式计算)流行的十年,我们不知道什么时候分布式或其他形式的“分散式计算”会“卷土重来”,但我似乎看到了“暗流涌动”。 — David 9

补充上一期我们聊到的“Tesla自动驾驶搞定多任务学习”,这次,特斯拉AI负责人Andrej Karpathy在PyTorch DEVCON 2019上进一步讨论了内部整体架构:

来自:https://www.youtube.com/watch?v=oBklltKXtDE

其中主要谈了两点:“PyTorch distributed training” 和 infrastructure 层面的一些东西。

继续上次的讨论,我们知道特斯拉autopilot自动驾驶不借助LIDAR激光而是通过八个方向的摄像头进行环境判断:

来自:https://www.youtube.com/watch?v=oBklltKXtDE

最后对模型来说要有一个top-down的俯视图做最终决策:

来自:https://www.youtube.com/watch?v=oBklltKXtDE
这就要求autopilot模型不断接受从8个摄像头捕捉到的图像,并同时输出许多output(1000个左右),而且,模型同时承载多个任务(目标检测,深度检测,目标识别等等),整个autopilot模型会包含许多个子模型(子任务):
 
来自:https://www.youtube.com/watch?v=oBklltKXtDE

事实上,上图的8个子模型其实是简化了,其实auopilot有48个子模型。上图只是象征性地展示多模型同时有很多输出。而反向传播更新时, 继续阅读Tesla自动驾驶Autopilot(第2弹):多任务分布式PyTorch训练,FSD芯片,NPU,Dojo和其他

“低复杂度美学”理论(Low-Complexity Art):艺术,科学,创造力和美学启示 #David的人工智能启示录

艺术不仅是“压缩”的艺术。如果艺术是“做菜”,重要的不仅仅是厨艺,还有食材的选择,所以,艺术也是“选择”的艺术。 — David 9

Jürgen Schmidhuber教授的名字大家可能不熟悉,但如果说LSTM之父大家可能有点印象,事实上他也算人工智能的开创鼻祖之一。他与学术界和深度学习三巨头(Hinton、LeCun、Bengio)的恩怨纠葛David这里不多八卦,只给出【链接】。今天,David想深挖一下Schmidhuber曾经在90年代总结的“低复杂度美学”(艺术)理论,现在看来也很有意思并且启发我们。

“低复杂度美学”的原理和目标很简单:

1. 作品最终看上去是想要表达的内容,即,内容没有太大偏差

2. 创造作品的柯氏复杂性应该做到最低。通俗地说就是,如果要用一段最短的程序完成整个艺术创作过程(在计算机中叫停机过程),这样就会体现出一定美感

事实上,上述两者是矛盾的,如果太追求简洁,有可能会失去一部分你想表达的信息,反之,如果你想完整地表达所有信息,你可能会牺牲一些简洁性。

而对于第1点,艺术家想要传达什么,是非常主观的问题,所以Schmidhuber在讨论时把重点放在第2点,如果内容已经固定,艺术设计采用低复杂度美学是有效的。让我们看一个例子:

如果你要画一个花瓶和蝴蝶,大致构图已经想好,那么如果让一个程序完成创作,让它不断地画圆弧是个好主意(代码简短容易实现),另外如果加一些简单规则也很容易(比如圆弧和圆弧的交点可以衍生出圆心再画一个圆弧,可以有同时切两个圆的圆等等……),根据这些简单规则,我们就可以用一个足够简洁的程序生成如下作品:

来自:http://people.idsia.ch/~juergen/locoart/node12.html

这和我们熟悉的分形几何美感原理类似:

不断地重复一样的程序,但是每一次重复都有规则地稍作改动

这种“低复杂度美学”理论可以衍生出许多其他相关见解, 继续阅读“低复杂度美学”理论(Low-Complexity Art):艺术,科学,创造力和美学启示 #David的人工智能启示录

给普通科研人员跑TensorFlow Models项目的一点建议,编译tf,谷歌Bazel,TensorFlow Slim和其他

TensorFlow Models项目是谷歌TensorFlow项目下存放大量官方SOTA模型论文模型实现的子项目,大量的科研学习可以从这里开始(每个论题模型都是科研机构各自维护的):

但要快速上手任意模型,对于普通科研人员并不容易(除非你同时是CS系或同时熟悉C和python编程等)。这里David就带大家绕过一些不必要的坑。

models/research下的迁移学习domain_adaptation项目为例NIPS 2016论文),缺少编程经验的朋友(或者只会python的朋友)如果按照introduction走,很快就傻眼了:

普通科研人员不会知道bazel是google的一个编译工具,也不知道slim是什么东西(TF-slim其实是TensorFlow Models项目中独立出来的通用库)。事实上,对于只需研究模型本身的研究人员,这些都可以绕过!对于上述红框中的命令你完全可以用下面命令替代:

# python download_and_convert_data.py -- --dataset_dir $DSN_DATA_DIR --dataset_name=mnist

Models子项目虽然用bazel管理,但本质上都是TF的python项目,你总能找到python主入口跑这个项目,而不是用bazel这种专业工具(谷歌内部喜欢用的工具)。同样,slim本质上也是一个python库,用python脚本跑程序就可以:

$ python download_and_convert_data.py \
    --dataset_name=flowers \
    --dataset_dir="${DATA_DIR}"

另外,路径出错也是常见错误,

Traceback (most recent call last):
  File "dsn_eval.py", line 28, in <module>
    from domain_adaptation.datasets import dataset_factory
ImportError: No module named domain_adaptation.datasets

如上错误很可能是domain_adaption这个文件夹路径没有找到而已,这时对于一些不熟悉linux命令行的朋友,建软链或加环境变量不是最佳选择,最直接的方法是修改代码,比如在代码中插入下面两行,就可以把目录上两级库也添加进来,解决问题: 继续阅读给普通科研人员跑TensorFlow Models项目的一点建议,编译tf,谷歌Bazel,TensorFlow Slim和其他