在Copilot+ PC上进行人工智能开发?
微软及其硬件合作伙伴最近推出了Copilot+ PC,由内置神经处理单元的Arm CPU提供支持。它们是来自之前主流x64平台的有趣重定向,最初专注于高通的Snapdragon X Arm处理器,并在Arm上运行微软Windows的最新版本。现在买一个,它已经在运行Windows 11的24H2版本,至少在24H2到达其他硬件之前几个月。
开箱即用,Copilot+是一款快速的PC,具有我们期望从现代笔记本电脑中获得的所有功能。电池续航能力优秀,Arm-native基准与大多数基于英特尔或AMD的硬件一样好,或者在某些情况下更好。他们甚至让苹果的M2和M3 Arm处理器赚钱。这使得它们非常适合使用Visual Studio和Visual Studio Code进行最常见的开发任务。两者都有Arm64构建,因此它们不需要运行Windows On Arm的Prism仿真层带来的额外复杂性。
用于Arm开发的Arm PC
使用GitHub或其他版本控制系统来管理代码,开发Arm版本的应用程序的开发人员可以快速克隆存储库,设置一个新的分支,构建,测试并进行本地更改,然后将其分支推送到主存储库,准备使用拉取请求来合并任何更改。这种方法应该可以加快现有应用程序的Arm版本的开发,有能力的硬件现在是软件开发生命周期的一部分。
老实说,这与任何早期的Windows On Arm硬件都没有太大变化。如果这就是你所需要的,新一代硬件只是带来了更广泛的来源。如果您与戴尔、惠普或联想签订了购买协议,您可以快速将Arm硬件添加到您的车队中,并且您不会被锁定使用微软的Surface。
新设备最有趣的功能是内置的神经处理单元(NPU)。NPU提供至少40个TOP的额外计算能力,为PC带来了先进的本地推理功能,支持小语言模型和其他机器学习功能。微软最初使用实时字幕工具和设备相机处理路径中选择不同的实时视频过滤器来展示这些。(计划中的召回人工智能索引工具正在重新开发,以解决安全问题。)
在人工智能硬件上构建自己的人工智能
捆绑的人工智能应用程序很有趣,并且可能很有用,但也许它们最好被认为是硬件功能的指针。一如既往,微软依靠其开发人员提供更复杂的应用程序,这些应用程序可以将硬件推向极限。这就是Copilot Runtime的用法,支持ONNX推理运行时,如果没有在即将发布的Windows版本中,则支持其适用于Copilot+ PC及其高通NPU的DirectML推理API版本。
虽然DirectML支持将简化构建和运行人工智能应用程序,但微软已经开始提供一些必要的工具来构建您自己的人工智能应用程序。不过,不要指望这很容易,因为许多部分仍然缺失,使人工智能开发工作流程难以实施。
你从哪里开始?显而易见的地方是Visual Studio Code的AI工具包。它旨在帮助您尝试和调整可以在PC和笔记本电脑上运行的小型语言模型,使用CPU、GPU和NPU。最新版本支持Arm64,因此您可以在开发设备上安装AI工具包和Visual Studio Code。
使用适用于Visual Studio的AI工具包
使用内置的Marketplace工具,安装速度很快。如果您计划构建人工智能应用程序,则值得同时安装Python和C#工具,以及连接到GitHub或其他源代码存储库的工具。要添加的其他有用功能包括Azure支持和与Windows Subsystem for Linux(WSL)配合使用的必要扩展。
安装后,您可以使用AI Toolkit来评估打算在PC和边缘硬件上运行的小语言模型库。目前有五个可用:微软自己的Phi-3的四个不同版本和一个Mistral 7b的实例。它们都在本地下载,您可以使用AI Toolkit的模型游乐场来尝试上下文指令和用户提示。
不幸的是,模型游乐场不使用NPU,因此您无法了解模型在NPU上如何运行。即便如此,尝试为您的应用程序开发上下文并查看模型如何响应用户输入也是不错的。如果能有办法围绕模型构建一个功能更齐全的应用程序,那就太好了——例如,实现Prompt Flow或类似的AI编排工具,以尝试将小语言模型基于您自己的数据。
不要指望能够在Copilot+ PC上微调模型。它们满足大多数要求,支持Ubuntu的正确Arm64 WSL版本,但高通硬件不包括Nvidia GPU。它的NPU仅用于推理,因此它不提供微调算法所需的功能。
这不会阻止您使用Arm设备作为微调工作流程的一部分,因为它仍然可以与云托管的虚拟机一起使用,该虚拟机可以访问整个或部分GPU。Microsoft Dev Box和GitHub Codespaces都有支持GPU的虚拟机选项,尽管如果您正在运行大型作业,这些选项可能会很昂贵。或者,如果您正在处理机密数据,您可以使用带有Nvidia GPU的PC。
一旦你有一个你满意的模型,你就可以开始把它构建成一个应用程序。这就是Copilot+ PC AI开发工作流程中存在大漏洞的地方,因为您无法直接从AI工具包进入代码编辑。相反,首先找到保存您一直在测试的模型的本地副本的隐藏目录(或从您选择的微调服务中下载调优版本),设置支持PC NPU的ONNX运行时,并使用它开始构建和测试代码。
为高通NPU构建人工智能运行时
虽然您可以从源代码构建Arm ONNX环境,但您需要的所有部件都已经可用,因此您所要做的就是组装自己的运行时环境。AI Toolkit确实包括一个用于加载模型的基本Web服务器端点,您可以将其与Postman等工具一起使用,以查看它如何与REST输入和输出配合使用,就像您在Web应用程序中使用它一样。
如果您更喜欢构建自己的代码,有适用于Windows的Python 3的Arm64构建,以及高通QNN NPU的ONNX执行提供程序的预构建版本。一旦您在AI工具包中使用CPU推理验证了模型,这应该允许您从Visual Studio Code中构建和测试Python代码。虽然这不是一个理想的方法,但它确实为您提供了使用Copilot+ PC作为人工智能开发环境的途径。您甚至可以将其与微软语义内核AI代理编排框架的Python版本一起使用。
C#开发人员没有被排除在外。有一个。NuGet上可用的QNN ONNX工具的NET构建,因此您可以快速获取本地模型并将其包含在代码中。您可以使用AI工具包和Python在嵌入模型之前对其进行验证。NET应用程序。
了解QNN ONNX工具的局限性很重要。它仅为量化模型设计,这需要确保您使用的任何模型都量化为使用8位或16位整数。在使用现成模型之前,您应该检查文档,看看在将其包含在应用程序中之前是否需要进行任何更改。
这么近,但又这么远
尽管Copilot+ PC平台(以及相关的Copilot Runtime)显示了很多希望,但工具链仍然支离破碎。就目前而言,如果不走出你的IDE,就很难从模型到代码再到应用程序。然而,可以看看未来版本的AI Toolkit for Visual Studio Code如何捆绑QNN ONNX运行时,以及通过DirectML使用它们。NET应用程序开发。
未来的版本需要尽快发布,因为设备已经掌握在开发人员手中。将人工智能推理放到本地设备上是减少Azure数据中心负载的重要一步。
是的,Windows上Arm64 AI开发的现状令人失望,但这更多的是因为它有可能看到它可能是什么,而不是因为缺乏工具。许多必要的元素都在这里;需要的是一种将它们捆绑在一起的方法,为我们提供一个端到端的人工智能应用程序开发平台,以便我们能够充分利用硬件。
目前,最好坚持使用Copilot Runtime和内置的Phi-Silica模型及其现成的API。毕竟,我买了一台新的Arm-powered Surface笔记本电脑,并希望看到它兑现承诺,作为我一直希望使用的人工智能开发硬件。希望微软(和高通)能填补空白,给我提供我想要的NPU编码经验。