第五集:文字稿
“MZ: 为了在合理的时间计划内训练你的网络,我们需要像 GPU 这样的东西,而 GPU 需要非自由的驱动程序,非自由的固件,所以如果 Debian 社区想要在我们自己的基础设施中重现神经网络,这将是一个问题。如果我们不能做到这一点,那么任何集成在 Debian 本身的深度学习应用程序都不是自包含的。这件软件 Debian 本身无法重现。这是一个真正的问题。”
[介绍]
[00:00:47] SF: 欢迎来到 Deep Dive AI,这是来自开源促进会的播客。我们将探索人工智能如何影响自由和开源软件,从开发者到企业,再到我们所有人。
[赞助商信息]
[00:01:01] SF: Deep Dive AI 由我们的赞助商 GitHub 支持,开源人工智能框架和模型将推动转型性的影响进入软件的下一个时代,发展每个行业,普及知识,并降低成为开发者的门槛。随着这场革命的继续,GitHub 很高兴参与并支持 Deep Dive AI,并欢迎所有人为对话做出贡献。
播音员: 没有赞助商有权或有机会批准或不批准本播客的内容。
[00:01:33] SF: 这一集我们请到了 Mo Zhou,他是约翰斯·霍普金斯大学的一年级博士生,自 2018 年以来一直是 Debian 的官方开发者。他最近为 Debian 研究提出了机器学习策略。他对深度学习和计算机视觉以及其他方面感兴趣。
[00:01:53] MZ: 大家好。
[00:01:54] SF: 感谢您抽出时间与我们交谈。我想在 Deep Dive AI 的背景下与您交谈。我想更好地了解人工智能的引入对于自由软件和开源意味着什么,这些限制是什么?它引入了哪些新事物?是什么让您有兴趣在 Debian 社区中志愿并思考机器学习?
[00:02:21] MZ: 嗯,实际上,人工智能是一个长期存在的研究课题。我认为我们可以把你的问题分成小问题,这样我就可以处理了。
[00:02:34] SF: 当然。
[00:02:36] MZ: 我们应该从哪里开始?让我们从简要介绍什么是人工智能开始。在上个世纪,已经有一些关于人工智能的研究。你可能听说过一些旧闻,计算机可以和人类棋手下棋,人类棋手被计算机击败。这是一个非常经典的人工智能例子。在过去,人工智能涉及许多手工制作的东西,比如你设计一个可以和你下棋的计算机程序,基本上有一个搜索算法,根据棋盘上的当前情况搜索下一步的好棋。有很多手工制作的东西。
最近,有一些因素给人工智能研究界带来了一些变化。最重要的两个因素是大数据和硬件容量的增加。有很多硬件能够进行并行计算,比如 GPU 和 FPGA。这些硬件非常重要,没有它们,深度学习的最新进展是不可能的。
[00:04:05] SF: 对。所以基本上,您是说旧的下棋游戏,它们有一个可能的走法数据库,它们所做的是,它们在可能的替代方案之间快速搜索并评估最佳选项?
[00:04:19] MZ: 是的。那是经典算法。现在,如果你看 AlphaGo,那和过去的算法非常不同。
[00:04:29] SF: 对。AlphaGo 是围棋的自动玩家。
[00:04:34] MZ: 是的。
[00:04:35] SF: 据我记忆,围棋现在比象棋复杂得多。
[00:04:39] MZ: 是的。基本上,最近的算法可以处理非常非常复杂的情况。我可以给你一个非常简单的例子。想象一下你是一个程序员。现在我给你展示两张图片,一张是猫,一张是狗。你如何编写一个程序来对这两张图片进行分类,以及如何分辨哪张是狗,哪张是猫?所以基本上,最近的人工智能可以处理如此复杂的场景,并且比我所说的更有能力。
[00:05:16] SF: 对。好的,他们是怎么做到的?
[00:05:18] MZ: 最近的进展是基于两个因素,大数据和计算能力。让我们从大数据开始。如果你想对猫和狗的图像进行分类,首先,你必须准备一个训练数据集。例如,你拍摄 100 张各种猫的照片,另外 100 张各种狗的照片。然后你可以标记你收集的所有图像。这被称为训练数据集。
[00:05:59] SF: 训练数据集基本上是原始图片加上一些描述它们的人工输入的元数据。
[00:06:08] MZ: 完全正确。给定这样一个数据集,我们然后构建一个神经网络。这个神经网络由许多层组成,例如卷积层、非线性激活层和全连接层。几乎所有这些层都带有一些可学习的参数,神经网络学习到的知识就存储在这些参数中,好的。给定这样一个神经网络,你向它输入一个图像,它会给你一个预测,它会预测它是猫还是狗。当然,在没有训练的情况下,它会做出错误的预测,这就是为什么我们必须设计一个损失函数来反映它的真实输出和我们的期望之间的差异。然后,给定这样一个损失函数,我们可以进行反向传播和随机梯度下降。经过这个过程,神经网络将逐渐学习如何分辨哪个图像是猫,哪个图像是狗。
[00:07:23] SF: 好的,那么运行在你手机上的软件,告诉你你拍摄的是狗还是猫的照片,如果我们在谈论非人工智能系统,传统上,如果你拍摄某物的照片,你把它存储在你的电脑上,你拍了照片。软件没有参与做任何事情,只是存储和从文件系统中检索它。现在,如果你在该应用程序内部添加一个搜索引擎,它可以检测你图片收藏中的宠物,我们就增加了一点复杂性。已经训练好的神经网络来检测猫和狗,现在,如果我们想在 Debian 内部或少数几个自由软件移动开源系统内部分发这件软件,以帮助检索我们的图片,我们需要什么?
[00:08:20] MZ: 实际上,我们需要很多东西,特别是如果我们正在分发自由软件。如果我们创建一个人工智能应用程序,我们将需要数据。我们将需要用于训练神经网络的代码。我们将需要推理代码,用于在你的设备上实际运行神经网络。缺少其中任何一个,应用程序都不是完整的。它们都不能缺少。
[00:08:52] SF: 我们现在对什么是完整和相应的源代码的定义,以及如何将其应用于人工智能系统,应用于像这样检测狗图片的应用程序?
[00:09:04] MZ: 嗯,实际上,如果我们不关心神经网络的内部结构,神经网络是一个非常简单的结构。你可以把它想象成矩阵乘法。你的输入是一个图像,我们只是做大量的矩阵乘法,它会给你一个输出向量。这仅仅是软件中发生的事情。训练代码和推理代码都在做类似的事情。
除了代码之外,数据是可以改变的东西。例如,我们可以对不同的数据集使用相同的训练和推理代码。例如,我发布了一个用于猫和狗分类问题的代码,但你可以解码并说,“哦,我对分类花卉更感兴趣。”然后你可以收集关于不同种类花卉的新数据集,并使用相同的代码来训练神经网络并自己进行分类。
如果你想提供一个在任何地方都表现一致的神经网络,你还必须发布预训练的神经网络。如果你正在发布自由软件,这也要求你发布训练数据,因为自由软件需要一些自由,允许你学习、修改或重现作品。在没有任何训练数据的情况下,不可能重现你下载的神经网络。这是一个非常大的问题。
如今,在研究界,人们基本上都在使用在非自由数据集上训练的神经网络。所有现有的模型在许可证方面都有些问题。
[00:11:10] SF: 为什么会这样?你知道吗?你有什么感觉?
[00:11:12] MZ: 是的,这背后的原因非常简单。因为要训练一个功能性神经网络,你必须收集很多很多数据。例如,你想做一个面部识别应用程序。然后你必须收集面部数据。那么谁能收集如此大规模的数据集呢?只有大公司才能做到这一点。对于任何人来说,这都非常非常困难。
[00:11:43] SF: 这绝对不是像业余爱好者在卧室里业余时间可以做的事情。
[00:11:51] MZ: 是的。没有人可以做一个大规模的数据集。例如,如今,人工智能领域最流行的数据集叫做 ImageNet。它包含超过 100 万张图像,有 1000 个类别。如果你想做一个自由软件替代品,你需要很多人来做标记工作和图像校正。
[00:12:18] SF: 当然,因为现在这个 ImageNet 数据集,我假设不是在自由开源或自由数据、开放数据许可下提供的。
[00:12:28] MZ: 是的。它不是自由的。它基本上仅用于学术目的。互联网上有很多预训练模型。基本上,每个人都可以使用它们、下载它们并使用它们。这背后存在潜在的许可问题。
[00:12:48] SF: 因为您说这个数据库有图像和标签,应用它们并以这种方式分类图像是一个耗时的过程。
[00:12:59] MZ: 是的,这非常耗时并且花费大量金钱。
[00:13:03] SF: 当然。基于文本的数据和其他类型的非图像数据呢?
[00:13:10] MZ: 嗯,你提到了文本。那是另一个有趣的话题,因为人工智能的最新进展给研究领域带来了重大变化。第一个研究领域是计算机视觉。这就像我们所说的,你对猫和狗的图像进行分类。另一个领域是计算语言学,或自然语言处理。它有很多应用,例如机器翻译。例如,谷歌翻译,它是基于神经网络的。现在,基于文本的数据相对容易收集,因为你知道,我们可以简单地下载整个维基百科转储作为训练数据。它是以许可方式提供的,并且是自由的。
[00:14:02] SF: 对。你仍然需要分类,你仍然需要做其他处理,还是?
[00:14:08] MZ: 嗯,这取决于你想处理哪种测试。例如,如果你想做机器翻译,那么你可以简单地下载 - 例如,英文版的维基百科和中文版的维基百科。然后,只要你能找到英文和中文中心词的对应关系,你就已经得到了一个可用的机器翻译训练集。
[00:14:39] SF: 我们有这些专有的且难以分发的数据集。正在分发的训练模型依赖于这个原始数据集。现在,自由和开源软件用户的权利之一是他们可以修改软件来修复错误。如果我们有一个模型在识别人脸时遇到困难,例如,在面部识别算法中,欧洲人脸与非洲人脸,或者狗和猫的其他问题,我们需要让软件的接收者从知识开始来修复这个错误吗?
[00:15:18] MZ: 是的。实际上,你提到的问题是一个非常好的问题。例如,如果我们训练一个面部识别网络,在某些情况下,如果你的训练数据集只包含少量,例如,亚洲人脸,那么你的网络预计会在亚洲人脸上表现不佳。这是一个臭名昭著且著名的问题,叫做数据集偏差。这是一个前沿研究课题。人们正在研究这个问题。我认为,这个问题在未来某个时候会被克服。这个问题是存在的。
如果我们想在今天处理这样的问题,我们可以做的是收集更多数据。例如,你的神经网络在猫数据上表现不佳。然后你只需简单地收集更多猫数据,并再次训练你的神经网络。如果你想这样做,你会发现要再次训练神经网络,你需要原始训练集,这样你就可以在其中放入更多图像。你还需要训练代码来生成一个新的神经网络。
[00:16:40] SF: 这是理解起来非常重要的事情。为了修改现有模型,我们需要访问的不仅是原始数据集,还有训练它的软件。我们需要了解该训练模型是如何配置进行训练的。我们需要调整什么?例如,在训练集的输入参数中。如果我们看到黑狗经常被误解为猫,我们知道如何重新训练系统以在这方面给出更好的答案吗,除了仅仅给它更多数据之外?
[00:17:21] MZ: 在研究界的实践中,除了训练数据集之外,我们还收集一个验证数据集。验证集基本上与训练数据集具有相同的设置,但有新的图像和新的标签。这两个数据集不重叠。如果你在训练集上进行训练,你的神经网络没有同步验证数据集中的任何数据。在你的训练过程之后,你可以在验证数据集上对你的神经网络进行测试。如果神经网络在训练和验证数据集上的性能都很好,那么这个神经网络就足够好了。在你调整神经网络之后,你也会进行验证过程,以确保你获得的神经网络是合理的。
[00:18:18] SF: 重新训练的结果有多可预测?如果我更改训练数据集的输入参数,我知道我修复了错误,或者我将如何知道?
[00:18:31] MZ: 实际上,这个过程需要一些背景知识和一些经验。如果你是相关领域的工程师,你会发现这非常容易,因为如果你获得了一份已知运行良好的代码副本,基本上你就不会遇到任何麻烦。 只要你不更改太多引用的代码,或者显着更改参数,例如学习率或类似的参数。
[00:19:04] SF: 假设我们有原始数据集,我们拥有重新训练模型的所有要素。 现在,让我们进入硬件层面。 你说,我们肯定需要存储,而且需要快速存储。 那么计算方面,我们还需要什么?
[00:19:20] MZ: 如果你在互联网上搜索深度学习框架,你会发现很多很多适用于各种硬件平台的解决方案,例如手机、平板电脑、个人电脑。 这些框架的设计并非特定于任何硬件。 你可以从一些强大的硬件中获得的是速度。 例如,如果你在配备强大 GPU 的个人电脑上运行相同的神经网络,它可能会比你的手机快几百倍。 如果你是这个领域的研究人员,你很快就会意识到速度问题至关重要,因为如果你在 CPU 上训练神经网络,可能需要几年时间。 如果你有一个强大的 GPU,只需要几个小时。 这太夸张了。
[MESSAGE]
[00:20:20] SF: Deep Dive AI 由我们的赞助商 DataStax 支持。 DataStax 是一家实时数据公司。 借助 DataStax,任何企业都可以调动实时数据,并快速构建智能、高度可扩展的应用程序,以成为数据驱动型企业并释放 AI 的全部潜力。 借助 AstraDB 和 Astra Streaming,DataStax 以独特的开放数据堆栈,在任何云上提供世界最具可扩展性数据库 Apache Cassandra 的强大功能,以及先进的 Apache Pulsar 流技术。 DataStax 每天都在新兴的 AI 无处不在的未来中留下开源创新周期,请访问 datastax.com 了解更多信息。
[00:21:00] ANNOUNCER: 没有任何赞助商有权或有机会批准或不批准本播客的内容。
[INTERVIEW CONTINUED]
[00:21:05] SF: 谈到 Debian,并回到关于训练数据集的自由软件和开源社区的担忧,关于硬件,你几年前的一篇论文提到了访问加速 CPU、GPU 以及 Debian 中不易获得的一些处理器内部功能方面的困难。 你能详细说明一下吗?
[00:21:32] MZ: Debian 是一个开源和自由软件社区。 它在自由软件的实践中非常严格,因为我们的官方基础设施都基于自由软件。 为了在合理的时间表内训练神经网络,我们需要类似 GPU 的东西,而 GPU 需要非自由驱动程序、非自由固件。 如果 Debian 社区想在我们自己的基础设施中重现神经网络,这将是一个问题。 如果我们做不到这一点,那么集成到 Debian 本身中的任何深度学习应用程序都不是独立的。 这款软件 Debian 本身无法重现。 这是一个真正的问题。
[00:22:32] SF: 我完全理解。 我的意思是,对我来说,Debian 一直是你看向的灯塔。 如果你想知道一个软件包是否真的给予用户运行、修改、复制和分发的自由。
[00:22:47] MZ: 是的。 在这方面非常严格。
[00:22:51] SF: 对。 你基本上是在完全开源的 AI 系统中添加了一个新的限制因素。 你将硬件作为这个因素的一部分,因为如果你在某种程度上拥有数据集,拥有训练模型和参数以及所有这些东西都没问题。 你拥有所有源代码,但你仍然无法重新训练你的系统来修复错误,除非你愿意等待 10 年,那么你就有问题了。 为了克服硬件驱动程序方面的这个问题,有哪些努力?
[00:23:31] MZ: 是的,这对开源社区来说是一个棘手的话题。 很多人都在努力进行 Nvidia 驱动程序的逆向工程。 如今,Nvidia GPU 的免费驱动程序仍然不可用于 CUDA 计算。 CUDA 是我们在神经网络训练中需要的。
[00:23:57] SF: 此外,Nvidia 最近的公告实际上并没有真正帮助 AI 训练方面。
[00:24:04] MZ: 那只是稍微有所帮助。 Nvidia 有很多软件。 开源驱动程序只是整个生态系统的一小部分。
[00:24:17] SF: 好的,那么其他硬件制造商呢,比如 LD 新发布的来自 Google、Apple 的芯片组。 他们似乎提到了他们有一些 AI 功能,其中包含一些 AI 指令。 你怎么看这些?
[00:24:33] MZ: 有很多新的硬件制造商。 你提到了 Google,对吧? 他们有自己的 Tensor 处理单元。 目前,我没有看到市场上销售任何此类 TPU。 就我个人而言,我们买不到。 个人自由软件开发者无法研究这类东西。 你还提到了 Apple。 是的,他们在他们的新芯片上做了很好的广告,但他们相应的生态系统不是自由的。 如果你想将你的自由软件移植到这些平台上,这也是一个棘手的问题。
基本上,我认为大公司有责任做这件事,个人开发者是无法做到的。 除了 Apple,还有 AMD 和 Intel。 这两家制造商正在发布开源计算软件,以与 Nvidia 竞争。 目前,Nvidia 的 CUDA 计算软件在这个市场上占主导地位。 AMD 发布了他们的 [听不清 00:25:48] 作为竞争对手。 最近,Intel 也提出了一个 API 来与 Nvidia 竞争。 如今,只有 Nvidia 为深度学习提供专有软件解决方案。
我认为 AMD 和 Intel 还有很长的路要走,因为 Nvidia 的产品在现阶段已经非常成熟。 Role cam 和 Intel 的 one API 仍然很新。 我们的市场仍然需要一些时间来验证他们的新产品,看看它们是否有效。
[00:26:29] SF: 对,对,对。 哦,过去也发生过,更开放的小型架构最终凭借包括 Debian 和其他开源世界在内的大型团体的工作而接管。 开始思考未来,你认为未来会怎样? 你希望在 Debian 中看到什么,一个理想的场景?
[00:26:51] MZ: 我不得不说,我的观点有点悲观,因为如果我们想做一些硬件支持或数据中心支持,存在各种各样的障碍。 这两个因素都需要大量的资金才能做到。 即使对于大公司来说也很困难。 我对自由软件社区的期望是,我们可以继续为生产、研究提供一个可靠的系统。 我们可以支持这些应用程序和深度神经网络框架。 我们可以做得很好。 只要我们的用户想要训练你的网络,他们可能不得不依赖外部软件,例如从 GitHub 下载的一些随机代码,或者类似的东西——
[00:27:47] SF: 哪种许可方案在 AI 研究社区中更受欢迎?
[00:27:54] MZ: 嗯,根据我自己的经验,这个研究社区中最流行的许可证是 Apache 2。 其中一些是 BSD 风格的许可证,或者是 MIT 风格的许可证。 嗯,这些许可证在研究社区中非常受欢迎。 如果你对某篇研究论文感兴趣,你会找到相应的代码,而代码基本上是开源的。 问题仍然源于相应的训练数据,因为许多有用的数据集不是自由软件。 你获得了自由软件的训练代码和推理代码,但数据不是。
[00:28:39] SF: 是的,所以我们回到这样一个事实,即对 copyleft 概念没有明确的理解,或者在 AI 应用程序中不常见。
[00:28:53] MZ: 是的。 对这个问题没有明确的理解。 许多研究人员只是发布了他们的神经网络,但是我们应该给训练好的神经网络什么许可证呢? 基本上,没有人能回答这个问题。 我们知道,如果我们没有明确声明许可证,就会有问题。
[00:29:17] SF: 在你理想的世界里,什么是开源 AI?
[00:29:21] MZ: 嗯,我是 Debian 开发者,所以我坚持 Debian 的自由软件指南。 我们追求软件自由。 只要我获得一个自由软件 AI 应用程序,我就希望能够下载训练数据集。 我可以研究训练代码、推理代码,我可以重现神经网络,我也可以修改神经网络。 这就是我所期望的。 我知道这在可预见的未来很难实现。
[00:30:00] SF: 是的。 好的。 设定高标准并抱最好的希望是件好事。 在某个时候,我们会达到的。 这也包括获得免费驱动程序,以便在显着较短的时间内运行训练模型。 好的,Mo。 很高兴。 很高兴和你谈话。 我认为我们已经涵盖了很多方面。 你帮助我们理解了什么是开源系统。 你帮助我们理解了什么是 AI 系统,我们需要关注哪些组件,从训练数据集到模型本身,以及运行它所需的硬件。 谢谢。 非常感谢你。 你未来的计划是什么? 你在做什么?
[00:30:41] MZ: 我还没有完全决定。 我喜欢做研究。 我享受研究过程。 因为通过做研究,你正在探索人类知识的边界。 我真的很享受这个过程,只要我们能取得一些进展。 因为你正在研究一些没有人知道的东西。 你是地球上第一个知道新知识的人。 这非常令人兴奋。
[00:31:10] SF: 这确实令人兴奋。 非常感谢你,Mo Zhou。
[00:31:13] MZ: 是的。 谢谢你的时间。
[END OF INTERVIEW]
[00:31:16] SF: 感谢收听。 感谢我们的赞助商 Google。 记得在你的播客播放器上订阅以获取更多剧集。 请评论和分享。 这有助于更多人找到我们。 访问 deepdive.opensource.org,在那里你可以找到更多剧集,了解这些问题,你可以捐款成为会员。 会员是我们能够完成这项工作的唯一原因。 如果你对本集或对 Deep Dive AI 有任何反馈,请发送电子邮件至 [email protected]。
本播客由开源促进会制作,Nicole Martinelli 提供帮助,Jason Shaw of audionautix.com 提供音乐,根据知识共享署名 4.0 国际许可协议获得许可。 链接在剧集注释中。
[00:31:59] ANNOUNCER: 本播客中表达的观点是演讲者个人的观点,不代表其雇主、他们所属的组织、他们的客户或他们的顾客的观点。 所提供的信息不是法律建议。 没有任何赞助商有权或有机会批准或不批准本播客的内容。
[END]