在 Windows 应用中使用机器学习模型
本指南将通过解决常见问题,分享基本概念和资源,以及提供有关如何在 Windows 应用中使用 AI 和 ML 模型的建议,帮助应用开发人员使用人工智能 (AI) 和机器学习 (ML) 模型。
机器学习 (ML) 是人工智能 (AI) 的一个分支,使计算机能够从数据中学习并做出预测或决策。
ML 模型是可以针对数据进行训练的算法,然后部署这些算法来执行各种任务,例如内容生成、内容推理、图像识别、自然语言处理、情绪分析等。
Windows 应用程序可以利用 ML 模型增强其功能和用户体验的几种方法包括:
- 应用可以使用生成式 AI 模型来理解复杂的主题,以进行汇总、重写、报告或扩展。
- 应用可以使用模型将自由格式的内容转换为应用能理解的结构化格式。
- 应用可以使用语义搜索模型,该模型允许用户通过含义搜索内容并快速查找相关内容。
- 应用可以使用自然语言处理模型来推理复杂的自然语言要求,并且规划和执行操作来完成用户要求的任务。
- 应用可以使用图像处理模型智能地修改图像、擦除或添加主题、纵向扩展或生成新内容。
- 应用可以使用预测性诊断模型来帮助识别和预测问题,并帮助指导用户或为用户诊断问题。
Windows Copilot Runtime 将与利用 AI 的操作系统交互的多种方式集成到一起。 这包括名为 Windows Copilot Runtime APIs“随时可用的 AI 支持的”功能。 请参阅 Windows 应用中 的 AI 支持的 API 入门,获取这些现成的功能和 API 的指南,这些功能和 API 支持上面列出的方案。
在本地 Windows Copilot Runtime APIs 直接在 Windows 设备上运行,不过你也可以选择通过现成的 API 使用基于云的模型。 无论它们是在本地还是在云端运行,这些 API 都抽象出基础 ML 模型,因此无需进行任何优化、格式设置或微调。
但是,你可能想要查找自己的 ML 模型,以便在 Windows 上本地使用。 此时,可能需要优化此模型,使其在 Windows 设备上正常运行或;或者微调模型,以便使用特定于特殊用例或公司的自定义数据对其进行训练。 本文将介绍一些概念、工具和开放源代码库,以帮助指导你完成此过程。
小型语言模型 (SLM) 旨在设计得更为紧凑和高效,通常针对较小数据集上的特定任务或领域进行训练,可在本地存储和运行模型,推理性能更卓越且推理速度更快。 SLM 受到训练数据量的限制,不提供大型语言模型 (LLM) 所需的广泛知识或复杂推理能力。 然而,在本地使用时,SLM 可以提供比 LLM 更安全、更经济高效的替代方案,因为它们需要更少的计算能力来运行,并通过将聊天信息安全地保存在设备本地来提高数据隐私性。
SLM 更适合本地使用,因为在设备上运行 ML 模型意味着大小不得超过运行该模型的设备的存储和处理能力。 大多数 LLM 太大,无法在本地运行。
Microsoft Phi-2 和 Phi-3 模型是 SLM 的示例。
大型语言模型 (LLM) 经过了具有更多参数的大量数据的训练,因此更为复杂,所需的存储空间也更大。 由于其规模更大,LLM 可能更有能力捕捉语言中错综复杂的模式和细微差别,涵盖更广泛的知识范围,并能够处理更复杂的模式。 它们还需要更多的计算资源来训练和推理。 大多数 LLM 无法在本地设备上运行。
OpenAI 语言模型 GPT-4o、GPT-4 Turbo、GPT-3.5 Turbo、DALL-E 和 Whisper 都是 LLM 的示例。
有关在本地使用 SLM 与在云端使用 LLM 之间的差异的进一步指导,请参阅在 Windows 应用中使用本地 API 与基于云的支持 AI 的 API 时的注意事项。
开放源代码 ML 模型可以是现成的,也可以根据自己的数据或偏好进行定制,你可以在各种位置找到该模型,一些最常见的示例包括:
- Hugging Face:有超过 10,000 个用于自然语言处理的预训练 ML 模型的中心,由 Transformers 库提供支持。 你可以查找文本分类、问题解答、摘要、翻译、生成等模型。
- ONNX Model Zoo:ONNX 格式的预训练 ML 模型集合,涵盖广泛的领域和任务,例如计算机视觉、自然语言处理、语音识别等。
- Qualcomm AI Hub:一个平台,可用于访问针对 Qualcomm Snapdragon 设备进行优化的各种 ML 模型和工具。 可以找到用于图像、视频、音频和传感器处理的模型,以及用于在移动设备上生成和部署 ML 应用程序的框架、库和 SDK。 Qualcomm AI Hub 还为开发人员和研究人员提供教程、指南和社区支持。
- Pytorch Hub:预训练模型存储库,旨在促进研究的可重现性并实现新的研究。 它是一个简单的 API 和工作流,提供基本的构建模块从而可以改善机器学习研究的可重现性。 PyTorch Hub 由预训练模型存储库组成,专为促进研究的可重现性而设计。
- TensorFlow Hub:TensorFlow 的预训练 ML 模型和可重用组件的存储库,这是用于构建和训练 ML 模型的常用框架。 你可以查找图像、文本、视频和音频处理模型,并进行迁移学习和微调。
- Model Zoo:为各种框架和任务精选最适合的开放源代码 ML 模型并对模型进行排名的平台。 可以按类别、框架、许可证和评分浏览模型,并查看每个模型的演示、代码和相关文件。
某些模型库并非旨在通过应用程序进行定制和分发,而是作为开发生命周期过程中进行实践探索和发现的有用工具,例如:
- Ollama:Ollama 是提供适用于各种任务的现成 ML 模型的平台,例如人脸检测、情绪分析或语音识别。 只需单击几下鼠标即可浏览和测试模型并将其集成到应用中。
- LM Studio:Lmstudio 是一种工具,可让你使用拖放接口根据自己的数据创建自定义 ML 模型。 可以从不同的 ML 算法中进行选择,对数据进行预处理和可视化,并且训练和评估模型。
每当在 Windows 应用中找到符合使用目标的 ML 模型时,我们强烈建议你遵循在 Windows 上开发负责任的生成式 AI 应用程序和功能指南。 本指南将帮助你了解治理策略、实践和流程,识别风险,推荐测试方法,利用审查器和筛选器等安全措施,并在选择安全且以负责任方式处理的模型时调用特定注意事项。
在 Windows 应用中有多种方式使用 ML 模型,具体取决于模型的类型、来源和格式以及应用的类型。
你将在其中找到 ML 模型的一些格式包括:
ONNX:用于在不同的框架和平台中表示和交换 ML 模型的开放标准。 如果在 ONNX 格式中找到预训练 ML 模型,则可以使用 ONNX Runtime (ORT) 在 Windows 应用中加载并运行模型。 ORT 可让你访问设备的硬件加速推理功能并优化 ML 模型的性能。 如果具有采用不同格式(如 PyTorch 或 TensorFlow)的预训练 ML 模型,则可以使用 Olive 等模型优化工具将其转换为 ONNX 格式。 有关使用 Olive 的帮助,请参阅使用 Microsoft Olive 微调 SLM(生成式 AI 应用程序架构之旅系列)。 有关创建和使用 ONNX 模型的教程,请参阅 GitHub 上的 ONNX 教程。 有关演示如何在 Windows 应用中使用 ONNX 模型的示例,请参阅 Windows 示例库上的 AI。
PyTorch:最常用的开放源代码深度学习框架,可通过 Python 和 C++ 接口使用。 这可能是 ML 模型的最常见的格式。 如果要在 Windows(C# 或 C++)应用中或在 Web 应用中使用 PyTorch ML 模型,可以使用 TorchSharp 和 LibTorch,这是 PyTorch 库的 .NET 和 C++ 绑定。 TorchSharp 和 LibTorch 允许你创建、加载和操作张量,生成和运行神经网络,以及使用 PyTorch 格式保存和加载模型。 有关示例,请检查 TorchSharp 示例、用于部署的 TorchScript、PyTorch C++ 示例。 对于 Web 应用,请查看生成具有 ONNX Runtime 的 Web 应用程序。 有关如何使用 DirectML 运行 PyTorch 模型的示例,请参阅 Windows 示例库上的 AI。
TensorFlow 是机器学习和人工智能的另一个常用的开源软件库,用于为各种任务生成和部署机器学习模型。
适用于 Web 应用的 WebNN API:在浏览器中访问神经网络硬件加速的 Web 标准,以 WebIDL 和 JavaScript API 为基础。 它使 Web 开发人员能够在客户端高效地创建和运行机器学习模型,而无需依赖云服务或本机库。 GitHub 上的 WebNN 示例。 在 Windows 示例库上的 AI 中使用 ONNX Runtime 的 WebNN 示例。
AI Toolkit适用于 Visual Studio Code 的 是一个 VS Code 扩展,可用于在本地下载和运行 AI 模型。 AI 工具包还可以帮助你:
- 使用 REST API 在直观的操场或应用程序中测试模型。
- 在本地或云端(虚拟机上)微调 AI 模型,以创建新技能,提高响应的可靠性,设定响应的语调和格式。
- 微调常用的小型语言模型 (SLM),如 Phi-3 和 Mistral。
- 将 AI 功能部署到云端或在设备上运行的应用程序。
DirectML 是一种低级别 API,使 Windows 设备硬件能够使用设备 GPU 或 NPU 加快 ML 模型的性能。 当大规模为用户提供硬件加速的 AI 时,开发人员采用的最直接方法通常是将 DirectML 与 ONNX Runtime 配对。 了解详细信息:DirectML 概述。