有没有觉得 AI 攻克的这两个领域很熟悉?没错,就在 2021 年,OpenAI 发布了 AI 代码补全工具 GitHub Copilot ,并公布了背后的技术 CodeX。同样,在去年下半年,DeepMind 也公布了他们解决数学难题的 AI 研究成果,并登上了 Nature。 虽然两家研究机构的新成果为 AI 解决老问题提供了新思路,但也不得不让网友感叹,AI 领域太卷了!
举个例子,在测试 AlphaCode 的一项挑战中,试题要求参赛者找到一种方法,使用一组有限的输入将一个随机、重复的 s 和 t 字母字符串转换为另一个相同字母的字符串。例如,竞争对手不能只输入新字母,而必须使用「backspace」命令删除原始字符串中的几个字母。对于 AlphaCode 来说,这只是中等难度的挑战:
其中十个挑战以与人类完全相同的格式输入 AlphaCode。然后,AlphaCode 生成大量可能的答案,并通过运行代码和检查输出来筛选这些答案,就像人类竞争对手一样。AlphaCode 论文的联合负责人 Yujia Li 和 David Choi 表示:「整个过程是自动的,无需人工选择最佳样本。」 要想在 Codeforces 的挑战中脱颖而出,原本不是一件容易的事。AlphaCode 项目开展于两年多前,随着大规模 Transformer 模型的进步与大规模采样、滤波技术的结合,DeepMind 的研究者已经在 AI 能够解决的问题数量上取得了重大进展。
受到疫情的影响,项目的大部分工作都是在家完成的。 研究者在选定的公共 GitHub 代码上预训练该模型,并在相对较小的竞赛编程数据集上对其进行微调。在评估期间,研究者为每个问题创建了大量的 C++ 和 Python 程序,且数量级比以前的工作要大。然后对这些解决方案进行筛选、聚类和重新排序,将这些解决方案分配到一个由 10 个候选程序组成的小集合中,并提交给外部评估。这个自动化系统取代了竞争对手的调试、编译、通过测试和最终提交的反复试验过程。
总体来说,AlphaCode 的排名在竞争对手中大致相当于中位数。虽然远远没能赢得比赛,但这个结果代表了人工智能解决问题能力的实质性飞跃。这一进步证明了深度学习模型在需要批判性思维的任务中的潜力。DeepMind 指出,AlphaCode 目前的技能组合目前仅适用于竞赛性质的编程领域,但它的能力为创建未来工具打开了新的大门,这些工具使编程变得更加容易,并且有朝一日完全自动化。 许多其他公司正在开发类似的应用程序。对于终端的用户来说,这些系统就像 Gmail 的 Smart Compose 功能一样工作,提供一些关于你正在编写的任何内容的建议。 近年来,AI 编程系统的开发取得了很大进展,但这些系统还远未准备好接管人类程序员的工作。他们生成的代码通常有问题,而且由于系统通常是在公共代码库上进行训练的,所以有时会复制受版权保护的材料。 在一项关于 GitHub Copilot AI 编程工具的研究中,研究人员发现其输出的代码约有 40% 包含安全漏洞。安全分析师甚至建议,不良行为者可以故意编写代码并与隐藏的后门(backdoor)在线共享代码,然后这些代码可能被用来训练 AI 程序,将这些错误插入到未来的程序中。 像这样的挑战意味着 AI 编程系统可能会慢慢融入程序员的工作中——换句话说,他们要进行学徒训练,从助理开始做起,在被信任能够自主执行工作之前,AI 给出的建议都要受到怀疑。
研究者观察到,生成策略参数所需的原始数学术语的能力出现在了他们的训练过程中,这是离开神经语言模型所无法完成的。下面的证明就是它的一个例子:证明步骤「use n + 1」(完全由模型生成)提出使用「n + 1」作为解决方案,剩下的形式证明依赖于「ring _ exp」策略来验证它确实有效。
研究者还观察到,他们的模型和搜索过程能够产生链接多个重要推理步骤的证明。在下面的证明中,模型首先使用了引出存在性命题(existential statement) (∃ (x : ℝ), f x ≠ a * x + b) 的换质换位律(contraposition)。然后,它使用 use (0 : ℝ) 为它生成一个 witness,并通过利用 norm _ num 策略来完成证明。
国内的 AI 从业者们可以趁假期研究下这两项研究,发表自己的看法。 参考链接:https://openai.com/blog/formal-math/?continueFlag=6cc759bbfb87d518f6d6948bcf276707https://deepmind.com/blog/article/Competitive-programming-with-AlphaCode?continueFlag=b34ed7683541bab09a68d7ab1d608057
本文翻译自 2019 年 Daniel Borkmann 和 Martynas Pumputis 在 Linux Plumbers Conference 的一篇分享:《Making the Kubernetes Service Abstraction Scale using eBPF》。翻译时对大家耳熟能详或已显陈旧的内容(Kubernetes 介绍、Cilium 1.6 之前的版本对 Service 实现等)略有删减,如有需要请查阅原 PDF(文末有下载方式)。 实际上,一年之后 Daniel 和 Martyna
本文翻译自 2020 年 Daniel Borkmann 和 Martynas Pumputis 在 Linux Plumbers Conference 的一篇分享:《Kubernetes service load-balancing at scale with BPF & XDP》。文章介绍了 Kubernetes 的一些核心网络模型和设计、Cilium 对 Kubernetes Service 的实现、BPF/XDP 性能优化,以及他们从中得到的一些实践经验,全是干货。 去年我们也参加了这个大会(LPC