【Calico系列】1 Calico官网文章列表

前言

Calico 是容器网络的一种解决方案,提供了纯 3 层的网络模型,每个容器都通过 IP 直接通信,中间通过路由转发找到对方。容器所在的节点充当传统的路由器,提供了路由查找的功能。

我计划将 Calico/BGP 相关的内容都过一遍,把这个过程记录下来。本篇是第一篇,对目前为止官网的 blog 做了一些简单的中文备注或吐槽。calico 团队是个挺有趣的团队(笑,也一直在前进。

由于网络的水深与个人能力有限,本文不免存在错误之处。如有疑问,请查阅文末参考资料或与我线上/线下讨论。

官网

http://projectcalico.org/

  1. 为什么选择Calico?

    免费开源,简单,可伸展,安全的云网络 (simplify, scale, and secure)

    1. Scalable, distributed control plane 可分发的控制平面
    2. Policy-driven network security 安全的网络策略
    3. No overlay required 不需要overlay
    4. Pluggable Data Plane 可插拔的数据平面
    5. Integrated with all major cloud platforms 集成云平台
    6. Widely deployed, and proven at scale 可扩展
  2. 功能

    1. 路由
    2. ip管理
    3. 控制平面
    4. 数据平面
    5. 网路策略
    6. 监控
    7. 支持多架构、多公有云

github: https://github.com/projectcalico/calico

blog列表

https://www.projectcalico.org/blog/

重点感兴趣的技术文,我加粗显示。

  1. 2014-06-25 Welcome to Project Calico! 开启新项目,仅支持openstack。

  2. 2014-07-21 Update from the Calico Team – July 21 正在开发calico基于chef的自动化安装,支持centos系Linux,正在定义calico的开发路线图,正在招新。bugfix。

    每两周是一个开发周期,每个开发周期(sprint)都用猫的名字来定义。

  3. 2014-07-22 German Rex is out! 新版本可以加快openstack和calico的安装。

  4. 2014-07-25 Update from the Calico Team – July 25th 新成员加入,正在建立一套框架进行安装测试和calico的功能测试。

  5. 2014-08-04 Introducing Havana Brown! bugfix。

  6. 2014-08-06 Welcome to Red Hat / RPMs available for Calico! 支持redhat,也就是centos系Linux。

  7. 2014-09-16 New Architecture, Updated Roadmap and IPv6 Support 做了未来开发的规划,正在规划calico架构。将Felix分离出来。已经支持ipv6了。

  8. 2014-10-17 Congratulations to the OpenStack community on releasing Juno 恭喜 openstack 某版本发布,汇报进度。(对不起我们鸽了,毕竟正在迁移架构。)

  9. 2014-10-27 New packages and architecture on the way 这次不鸽了,我们已经迁移到新架构了,并准备支持的 openstack 的新版本。但是建议大家等过几天我们推出的新版本。我们下周需要更多的测试,但尽量不影响版本发布。 下周参加openstack峰会。

  10. 2014-11-07 The three P’s – Paris, Packages and Pesto 几个人参加了峰会,剩下的人在忙碌进行测试,修复bug。(流水账)

  11. 2014-11-19 Calico and Docker containers 验证了calico与docker结合的可行性,令人兴奋!但是短期内不打算进一步开发。

  12. 2014-12-03 OpenStack London meetup 活动日常广告。

  13. 2014-12-16 Exploring Juju with Project Calico 利用juju工具安装openstack与calico。

  14. 2014-12-19 Updating our Docker prototype to work on GCE 为 gce 的虚机和容器测试calico,讲了一些难点和思路。

  15. 2015-01-12 Why Calico? 技术文!这篇很有看头,可以更好地理解calico为何选择三层协议进行互联。

  16. 2015-01-15 New packages and an award 新版本0.10,得了一个杂志的奖项。

  17. 2015-01-23 Obtaining External Connectivity in OpenStack 在openstack架构中,calico如何做到外部访问内部。

  18. 2015-02-03 Why BGP? 技术文!介绍calico为何选择bgp协议。

    任何网络,特别是大型网络,都有两个不同的路由问题需要处理:

    1)发现网络的路由器间拓扑

    2)发现网络中或外部连接到网络的endpoint

    Calico的设计哲学是使用互联网工具和技术来扩展网络结构。基于VM的云可以托管成千上万的计算服务器,容器云可能会将端点计数增加一两个数量级,BGP是唯一可行的选择。在Calico设计中,这相当于数万个路由器,甚至数百万条路由或端点。BGP路由反射是Calico体系结构的关键部分。

    • 简单
    • 行业当前的最佳实践
    • 唯一可以充分扩展的协议
  19. 2015-02-03 Using Ethernet as the interconnect fabric for a Calico installation 技术文!基于以太网的calico网络架构设计

    在大多数云网络基础架构中,网络边缘是机架柜顶交换机(ToR)。ToR下的计算服务器只是将流量封装起来并将其发送到ToR。没有 可见的 (到互连结构)聚合发生在计算服务器上。

    Calico 将IP 推到了边缘,但是在Calico网络中,该边缘是计算服务器本身。

  20. 2015-02-03 See Project Calico in Action at #MWC15 活动日常广告。

  21. 2015-03-11 CoreOS London Meetup report 活动日常广告。

  22. 2015-03-16 Calico at the Docker Edinburgh meetup 活动日常广告。

  23. 2015-03-23 Calico at Docker Edinburgh 活动日常广告。

  24. 2015-03-26 Calico Introduction at FOSDEM 活动日常广告。

  25. 2015-03-31 Technical note on IP fabrics published 技术文!基于IP的calico网络架构设计

    一些相关问题:

    • Calico网络中路由表的大小,与交换机中的转发表大小的比较
    • 确保适当的自治系统边,界并确保这些自治系统的连续性
    • 确保路由通告的下一跳正确
  26. 2015-04-02 Project Calico comes to New York and does a (mini) meetup marathon 活动日常广告。

  27. 2015-04-10 Moving Calico to a distributed data store using etcd 改架构啦,把存储换成etcd。

  28. 2015-04-16 IPv6, DDoS and Project Calico 介绍calico如何解决空地址攻击问题。由于calico路由器路由表中均具有完整且准确的端点列表网络,calico只使用最长匹配,不存在的请求就放到黑洞路由中,静默丢弃。

  29. 2015-04-20 Calico version 0.16 released 版本升级,主要是换了etcd存储。

  30. 2015-04-27 Project Calico and Clocker 企划联动广告。

  31. 2015-05-07 Project Calico at the Docker London May meetup 活动日常广告。

  32. 2015-05-12 Calico at Docker Randstad 活动日常广告。

  33. 2015-05-14 Using etcd for elections 流水账说明。

  34. 2015-05-26 Fueling Mirantis OpenStack with Calico 版本联动广告。openstack。

  35. 2015-06-02 A better future for securing micro-services 活动日常广告。开始见到 kubernetes 了。

  36. 2015-06-21 Seamless OpenStack and Docker networking using Apache Brooklyn and Project Calico 与brooklyn 和 openstack 的联动广告。

  37. 2015-06-22 Calico adds simple, highly efficient networking with fine grained security policy to Docker 1.7 release 与 docker 联动!

  38. 2015-06-25 The Sharp Edges of Gevent 额,不感兴趣,与calico也没有关系。

  39. 2015-07-09 Calico and containers are flip sides of the same coin 科普文,docker 是未来趋势。

  40. 2015-07-13 When you view a scale-out network through a 1990’s enterprise lens…. 技术文!雄文。我目前还看不太懂。

  41. 2015-07-16 Calico networking for Kubernetes 为k8s 1.0 打造的第一个版本。

  42. 2015-07-17 Its obvious, Project Calico needs to communicate better 技术文!对某篇评论calico文章的的回应。涉及网络知识点较多且深,目前理解起来有困难。

  43. 2015-08-04 Calico and Weave Scope 非常有趣的项目,可视化排查故障。目前还在研究初期。

  44. 2015-08-13 Calico Network Policy Comes to Kubernetes 可以在k8s上运行网络策略,而不必使用calico网络的特性。

  45. 2015-08-14 Emerald City, here we come! 活动日常广告。

  46. 2015-08-14 Announcing Calico v1.0 1.0版本!

    拥有以下特性:

    • 针对VM和容器的虚拟化第3层网络解决方案。
    • 与 OpenStack Neutron 完全可部署的集成,支持多个Neutron服务器和API线程,以及VM的实时迁移。
    • 与容器管理和编排系统(例如Docker,Kubernetes等)的概念验证级别集成。
    • 支持IPv4和IPv6工作负载。
    • 通过白名单的灵活安全策略,将允许的流量集成到OpenStack的已配置安全组中。
    • 控制平面正常重启而不会影响数据平面–您可以重启Calico代理,Neutron插件和BGP客户端,而不会影响工作负载之间的数据流。

    达到了以下测试情况:

    • 基于Calico的OpenStack集群,其中包含10,000个VM,可跨500个计算主机运行。
    • Calico的容器部署可在500台主机上运行多达50,000个容器,且设置速率每秒超过20个容器。
    • 在10 Gb网络上的吞吐量测试显示,Calico网络VM的吞吐量接近裸机速度的100%,性能是任何其他虚拟网络技术都无法比拟的。
  47. 2015-08-20 Calico Q&A with InfoQ 活动日常广告。

  48. 2015-08-31 Mesos Networking leaps forward with Calico 活动日常广告。

  49. 2015-09-07 Calico dataplane performance calico的数据平面测试结果!

  50. 2015-09-09 Calico now works with vanilla OpenStack 版本联动广告。

  51. 2015-10-07 Calico comes to Dublin 活动日常广告。

  52. 2015-10-15 OpenStack Liberty – now with added Calico 版本联动广告。

  53. 2015-10-22 Tokyo here we come and a v1.2 sneak peek 活动日常广告,新版本预热。

  54. 2015-10-23 Docker 1.9 includes network plugin support and Calico is ready! 支持 docker 的网络插件新特性。

  55. 2015-10-26 Announcing Calico 1.2! 1.2版本!

  56. 2015-11-06 Securing Namespaces and Services in Kubernetes 对namespace和service进行访问控制,可以把service暴露出namespace。

  57. 2015-11-12 Barcelona, here we come! 活动日常广告。

  58. 2015-11-25 A Little Cat in the Big Apple 活动日常广告。

  59. 2015-12-03 Calico Networking for Tectonic 企划联动广告。支持 coreos 的企业级k8s Tectonic。今天已经改名了,叫 red hat openshift。

  60. 2015-12-15 Packet announces beta support for Project Calico 企划联动广告。

  61. 2016-01-22 Announcing 1.0 Calico CNI integration for Kubernetes 针对 Kubernetes 的 Calico 插件1.0里程碑版本。与CNI集成。

  62. 2016-02-04 A rocket reaches orbit, Project Calico is right there with it 与 Redhat的py交易,宣传rkt,互相站台。

  63. 2016-02-11 A Sneak Peek at Kubernetes Policy 科普文,Calico如何将网络策略引入Kubernetes。

  64. 2016-03-09 Announcing Calico 1.3.0 1.3版本!大规模场景下的性能和占用率优化,测试包括

    • 1000个主机中的100,000个容器,每秒的启动速度约为165个容器。该测试包括验证每个容器中的网络连接性,并强加“预定的”分布式安全规则。
    • 跨 500 个 OpenStack 主机的 10,000 个VM,每秒6个VM的变动率。
  65. 2016-04-19 DC/OS: Data center automation with a side of Calico secure networking 企划联动广告。数据中心操作系统。

  66. 2016-04-19 Calico visits the land of the Longhorns 活动日常广告。

  67. 2016-05-05 Calico-DC/OS Demo: Security, Speed, and No More Port Forwarding! 科普文,Calico-DC/OS Demo。

  68. 2016-05-09 Containers, Cloud and Currywurst: CoreOS Fest 2016 活动日常广告。

  69. 2016-05-09 Flannels, Canals and Tigers, Oh My! — Big News in the Land of Project Calico 新特性预研广告。

  70. 2016-06-01 Canal brings fine-grained policy to DC/OS and Apache Mesos via CNI canal 发布预热。

  71. 2016-07-27 Mesos 1.0 – Now with Calico CNI 企划联动广告。mesos 1.0 发布.

  72. 2016-10-31 Let’s Talk Policy (for a Change) 特性宣传广告。网络策略。

  73. 2016-11-03 See you in Seattle 活动日常广告。

  74. 2016-11-07 Celebrating two Milestone Releases 2.0 beta版本宣传预热!

  75. 2016-11-08 Primetime Kubernetes with Kismatic + Calico 企划联动广告。

  76. 2016-11-09 And The Winner Is… Project Calico 客户案例广告。

  77. 2016-11-09 Click, Deploy, Secure: Kubernetes the Easy Way 客户案例广告。

  78. 2016-11-28 The Results are In… for the 2016 Calico User Survey 用户调查。

    虚拟网络解决方案的前5个最重要的因素是:

    • 可靠性/简单性
    • 数据平面性能
    • 易于故障排除
    • 可扩展性/控制平面性能
    • 微细分/细粒度的安全策略

    calico的排名都不错。

  79. 2016-11-29 Turbo-charged Calico 客户案例广告,偏技术,实现思路很巧,使用了DPDK 。 用加速的用户空间数据平面替换了Calico默认使用的标准Linux内核数据平面。

  80. 2016-12-22 A Christmas Present from the Team… Calico 2.0! 2.0 版本发布!新特性

    • 一个新的基于资源的UX模型(类似于Kubernetes的习惯用法)
    • 重大的性能改进
    • 简化Kubernetes安装
    • 新的数据平面驱动程序API(实验性)
    • 增加对使用Kubernetes本身作为数据存储的支持,消除了对etcd的需求。
  81. 2017-01-03 Calico launches into Gravitational’s orbit 客户案例广告。

  82. 2017-03-28 New Series: Cloud Native, Microservices, Security, & Scale 演讲文!云原生系列: 微服务,安全性和规模

  83. 2017-02-24 Webinar: Simplify & Secure Your OpenShift Network 企划联动广告。OpenShift。

  84. 2017-03-01 New AWS Quick Start Features Project Calico as Default Networking Solution 企划联动广告。AWS。

  85. 2017-03-21 Project Calico 2.1 Released! 2.1 版本发布!新特性

    • IP自动检测
    • IP-in-IP模式中用于流量处理
    • … …
    • Felix和calico / node容器完全用Go编写,性能和占用率优化!
  86. 2017-03-28 From Zero to Azure: Network Policy Comes to ACS Engine 企划联动广告。Azure。

  87. 2017-04-04 Cloud Native Series: Monolithic Enterprise and Modern Needs 演讲文!云原生系列:整体企业和现代需求

  88. 2017-04-11 KubeCon Keynote: Around the (Cloud Native) World in 323 Days KubeCon主题演讲

  89. 2017-04-13 DockerCon 2017: Hot Dogs, Talks, and Kitties 活动日常广告。

  90. 2017-04-25 1,000 Community Slack Users!!! 自吹广告。

  91. 2017-04-27 Cloud Native Series: What is Cloud Native 演讲文!云原生系列:什么是Cloud Native。

  92. 2017-05-02 Join Karthik at OpenStack Summit Boston 活动日常广告。

  93. 2017-05-02 Project Calico 2.2 Released! 2.2 版本发布!新特性

    • 改进GoBGP支持
    • CNI版本更新
    • KDD(Kubernetes数据存储驱动程序)路由
    • BIRD 1.6.3的BGP多路径支持BIRD 1.6.3
    • Felix性能和占用率改进
  94. 2017-05-12 3 Takeaways on the Future of OpenStack Networking from the Boston Summit 活动日常广告。(可以看出来calico现在在战略上k8s与openstack并驾齐驱了)

  95. 2017-05-17 Video: Common Networking Operations Across Kubernetes and OpenStack with Calico 自吹广告,但还不错。使用Calico跨Kubernetes和OpenStack进行通用网络操作

  96. 2017-05-24 Network Policy and Istio: Deep Dive 新技术预热,Istio。

  97. 2017-05-24 Welcoming Istio to the Kubernetes networking community 企划联动广告。Istio。

  98. 2017-06-08 How Giant Swarm uses Calico to enable multi-tenant Kubernetes 企划联动广告。Swarm。

  99. 2017-06-15 Cloud Native Series: What are Microservices 什么是微服务。

  100. 2017-06-23 Project Calico 2.3 Released! 2.3 版本发布!新特性

    • 显着的性能改
    • v1 NetworkPolicy API支持
    • 引入Typha –以及针对KDD模式的更大规模
  101. 2017-06-26 The New NetworkPolicy API in Kubernetes 1.7 上下游版本协同。

  102. 2017-07-13 Using Network Policy in concert with Istio 企划联动广告。Istio。

  103. 2017-07-18 Using Network Policy in Concert with Istio Part 2 企划联动广告。Istio。

  104. 2017-07-25 Using Network Policy in Concert with Istio Part 3 企划联动广告。Istio。

  105. 2017-08-08 Project Calico 2.4 Released!!! 2.4 版本发布!新特性

    • Felix和Typha现在支持Kubernetes 健康检查
    • DNAT之前的策略
    • 使用calicoctl命令行工具配置bgp
    • … …
  106. 2017-08-14 Calico: Shifting into top gear with OpenShift! 企划联动广告。openshift。

  107. 2017-08-31 From Beta to Stable: Evolution of the NetworkPolicy API calico 在 k8s 网络策略的更改。

  108. **2017-09-12 Revealing the hidden host protection superpowers of Felix, the Calico secret agent 技术文!Calico 保护主机Endpoints **

  109. 2017-09-28Breaking Down the Boxes: Containers 科普文,容器。

  110. 2017-09-28 Project Calico 2.6 Released!!! 2.6 版本发布!新特性

    • 支持Kubernetes 1.8 NetworkPolicy ipBlock和出口规则
    • kube-policy-controller现已更名为kube-controllers
    • 稳定性增强功能
  111. 2017-10-26 Enable IPv6 on Kubernetes with Project Calico 操作文,k8s ipv6。

  112. 2017-11-30 Grow Your Skills with Instructor Led Training 培训广告。

  113. 2017-12-04 Introducing: Application Layer Policy 新特性,Calico的应用程序层策略。

  114. 2018-02-22 Announcing Calico v3.0 版本发布!从3.0版本开始,接下来会有一系列和容器紧密相关的更新,非常令人激动。

  115. 2018-04-10 Announcing Calico v3.1 版本发布!开始支持ipvs!

  116. 2018-08-14 Announcing Calico v3.2 版本发布!激动:正式支持ipvs!

  117. 2018-10-24 What’s new in Calico v3.3 版本发布!激动:支持路由反射器!

    • 集群内路由反射器
    • 集群内路由反射器使用标签的BGP对等配置
    • IPAM增强
    • 在网络策略中支持SCTP
  118. 2018-11-05 Calico IPAM: Explained and Enhanced 操作文!ipam操作

  119. 2018-11-13 In-cluster Route Reflection 技术文!calico的路由反射器

  120. 2018-12-10 What’s new in Calico v3.4 版本发布!激动:通过 BGP 宣告 Kubernetes service!

  121. 2019-01-14 Kubernetes Service IP Route Advertisement 操作文!Kubernetes service 路由宣告!

  122. 2019-01-28 What’s new in Calico 3.5 版本发布!激动:基于拓扑的IP地址分配!

  123. 2019-03-11 What’s new in Calico v3.6 版本发布!

  124. 2019-04-17 Comparing kube-proxy modes: iptables or IPVS? iptables或IPVS 模式讨论

  125. 2019-04-26 When Linux conntrack is no longer your friend 技术文!可以使用Calico网络策略有选择地绕过conntrack,避免不划算的开销,同时仍然加强网络安全性。

  126. 2019-05-01 What’s new in Calico v3.7 版本发布!支持vxlan,引入了XDP优化,支持 eBPF。

  127. 2019-06-03 Introducing XDP-optimized denial-of-service mitigation 技术文!Calico的doNotTrack策略通过在Linux数据包处理管道中尽早丢弃流量来帮助缓解DoS攻击。

  128. 2019-06-13 Tigera adds eBPF support to Calico 自吹广告。

  129. 2019-07-09 What’s new in Calico v3.8 版本发布!IPAM利用率报告!

  130. 2019-10-03 What’s new in Calico v3.9 版本发布!跨子网VXLAN封装,实时从flannel到calico的迁移。

  131. 2019-10-11 Everything you need to know about Kubernetes pod networking on AWS 企划联动广告。aws。

  132. 2019-11-04 What’s new in Calico v3.10 版本发布!激动:引入 service ExternalIP 的 BGP通告! namespaceSelector 支持多个选择器,calicoctl支持patch 命令。

  133. 2019-12-11 Live Migration from Flannel to Calico 操作文,不停机从flannel更换为calico。

  134. 2019-12-30 What’s new in Calico v3.11 版本发布!支持双栈Pod IP!


从零开始搭建完善的记账体系 - 少数派

我大概三四年前就已经开始尝试在生活中实行数字化和无纸化,把一切资料上传云端,并且利用 app 来管理生活的数据。但过去几年,我们能够选择和使用的工具并不像今天一样丰富,所以这些尝试一直不算很成功。

今年至今终于有了整个体系成熟的感觉,一方面是工具基本都强大到可以满足所需了,另一方面我自己的「数字化生活」体系也建立得更系统化了。

所以今天我就来介绍一下自己是如何利用 MoneyWiz 来搭建记账体系。

太长不看软件清单:

img

MoneyWiz 一个就够了。

我试用过市面上大部分记账软件,并给好几款付过费,结论:最能打的一定是 MoneyWiz。刚接触可能会有点畏难,觉得太专业难上手,但其实只要试用两三天,就可以很好进入状态。

要付费,但很值,我已经把它和其他几个必买软件的年费都列入年度固定支出了。相比之下,某些国产记账软件的年费居然也和 MonwyWiz 相差无几,而我居然也买过,只能感叹年轻时候没见过好东西。

开始记账前的误区

误区一:想要一个可以自动导入消费记录的账本,不用自己动手,自动生成账本。

这是我过去两年追求的状态,总想偷懒。——其实 MoneyWiz 也有这个功能,只是暂时不支持中国的银行卡导入,所以约等于没有。我之前试用了所有号称自动导入消费记录的工具,结论是「不行」。主要是两个方面不行:

(1)自动导入的消费分类很容易错乱。但根据自己生活实际制定的支出分类非常重要,后面也会讲到,分类分不对,也就无法进行良好的分析,并指导之后的消费

(2)花出去的钱如果自己没有记一笔,依靠机器完成,其实不会意识到自己花了这样的钱,对自己的花钱状况还是没有感知。

所以今年我开始直接放弃所谓的自动导入,完全依赖手工记账的方式,听起来很麻烦,但养成每花一笔钱就打开MoneyWiz记一笔的习惯大概只需要一周,现在我的手工记账几乎已经零误差了,在对账上花的时间也越来越短。

误区二:开始记账的时候新鲜感和干劲儿足,总想多导入一些消费记录,不断把之前的消费追加记录进来。

很简单的道理,如果一直想要往前追溯,前面的消费是追溯不完的,追溯之后也很难体现到现在的生活账单中。所以一旦开始决定记账,就从现在开始,从今天开始,除了债务和应收款项之外,过往消费一概不再纠结

开始记账

收入、支出、转账等概念过于基础,这里不赘述。开始记账只需要做一件事情,就是清点各个账户里面目前分别有多少钱,然后在 MoneyWiz 里面建立相应的账户。

中国大陆的用户直接选择「添加手动账户」即可,然后选择账户类型,填写名称和初始余额。信用卡账户会显示为负债,还信用卡的时候记为一次转账即可。


Oracle 主机移除监控程序

Oracle Cloud 中的 agent 程序,系统负载挺高的。使用下面的命令卸载掉。

# Centos 
yum remove oracle-cloud-agent
yum remove oracle-cloud-agent-updater

# Ubuntu
snap remove oracle-cloud-agent
snap remove oracle-cloud-agent-updater

Telegram 简体中文包

语言包安装: https://t.me/setlanguage/classic-zh-cn

子项目:
TGCN-群组索引计划(找群和频道): @zh_groups_bot
更新频道 @zh_groups
代理分享: @cnmtproxybot

本频道与 Telegram Messenger LLP 无任何关联。

Mac 路由表查看与操作

查看网口信息

ifconfig

目前我这里最主要的两个接口,en1en0。一个是Wi-Fi,一个是有线。一般需要关注的是本地IP、子网掩码。

查看所有路由表

netstat -rn

查看默认网关

route -n get default

添加路由:

sudo route -n add -net a.0.0.0 -netmask 255.0.0.0 a.b.c.d

删除路由

sudo route -v delete -net a.0.0.0 -gateway a.b.c.d

参考资料


在伯克利教深度学习 - 李沐

本文来源:https://zhuanlan.zhihu.com/p/66062438

2019年春季我跟Alex Smola一起在加州大学伯克利分校(下面简称Berkeley)教了一门针对本科生的实验性质的深度学习课程,旨在探索如何有效的教授深度学习。连同两位助教(Rachel和Ryan)和一百来位学生一起度过了高强度的、痛并快乐的四个月。上周刚结束了课程项目的报告。二十个报告里有好几我特别喜欢,其中一两将投到下下周截稿的NeurIPS。更欣慰的是几个我一度觉得会失败的项目也找到自己的出路。

教学是一种形式上的创作。创作有着艺术性和个人性。我们的经验不足支撑写出一篇“如何高效的教深度学习”,但我们尝试的一些方法、走过的弯路、积累下来的材料也许对诸位感兴趣的老师和同学有所帮助。所以特意在这里分享出来。

动机

在过去三年中,我所在的亚马逊云服务(AWS)人工智能部门(AI)急速的扩张了好几十倍,侧面反映了行业的火爆。但我观察这个市场的扩张并没有想象中的那样发展迅猛。原因之一是AI的头号玩家深度学习的入门门槛依然很高。虽然它比机器学习更实用,但比起其他学科来说仍然很复杂。例如如果100个人学数据库(AWS的重要收入来源),可能50个人能用学到的知识来解决实际问题。但同样这些人来学深度学习,谨慎乐观估计10个学完后可以上手就很好了。如果AI一波热潮褪去,开发者学习热情降低,市场扩张随之变慢,那冬天就不远了。

我跟多位部门同事合作对亚马逊内部员工和AWS客户进行过培训(工作的副业之一),17年的时候跟Aston一起在国内做过十九期直播。去年年底的时候萌发录一个更加正式的质量更高的MOOC的想法。但担心线上课程不能实时得到反馈,所以难易度难以包括,所以想先面对面的教一遍积累些经验。

首选是去Stanford,因为离家近(踩单车15分钟)。但Stanford已经有几门深度学习课程同时在开。幸运的是Berkeley仍有空位,而且他们非常乐意我们去教。联系上Berkeley到AWS上层批准一周内就搞定,即使是我们明确说明了将会在半年之类每周两天不在办公室。这一点上我非常喜欢亚马逊,它推崇做一些有长远影响的项目,并鼓励快速尝试。

入职当天两个有意思的小插曲。一是被告知Berkeley是公立学校,职员算政府人员,需要宣誓战争发生时要为美国而战。我说这我没做好心理准备,要不不要发我工资,当我是个志愿者好了。这样我也安心去实验教学。

二是我去的伯克利统计系是世界上最好的统计系之一了吧(这里老师觉得就是世界第一,很像我读过的CMU计算机系和我老婆读过的MIT计算机和电子工程系,他们老师都觉得自己是世界第一😂)。楼上办公室坐着各大山头,Michael Jordan,Peter Bartlett,Bin Yu,一堆如雷贯耳名字。但统计系这栋楼是我去过的学校里面最破的,没有之一。以至于约助教见面时他们委婉的建议去隔壁楼的公共空间,那里更敞亮更现代。


Linux 查看发行版和内核参数

  1. 发行版

    cat /etc/issue
    
  2. 内核参数

    cat /proc/version
    

    image-20200203131645412

  3. 查看虚拟化方式

    1. dmidecode

      最初设计来显示系统 BIOS 和硬件组件的相关信息,不适用于容器

    2. systemd-detect-virt

      KVM、QEMU、VMware、Xen、Oracle VM、VirtualBox、UML 和基于容器的虚拟化技术(例如 LXC、Docker、OpenVZ)

    3. virt-what

      QEMU/KVM、VMware、Hyper-V、VirtualBox、OpenVZ/Virtuozzo、Xen、LXC、IBM PowerVM 以及 Parallels 等平台类型,可以用apt-get 或 yum 安装 virt-what