开始使用 Azure OpenAI

现代机器学习和 AI 研究已从实验室迅速转移到我们的 IDE,Azure 的认知服务等工具提供了对预训练模型的基于 API 的访问。提供人工智能服务有许多不同的方法,其中一种更有前途的处理语言的方法是一种称为生成预训练或 GPT 的技术,它可以处理大量文本。
OpenAI 研究实验室率先采用了这项技术,并于 2018 年发表了关于该主题的第一篇论文。它使用的模型经过了多次迭代,从无监督 GPT-2 开始,它使用未标记的数据来模仿人类。 GPT-2 建立在 40GB 的公共互联网内容之上,需要大量训练才能提供具有 15 亿个参数的模型。紧随其后的是 GPT-3,这是一个拥有 1750 亿个参数的更大模型。 GPT-3 独家授权给 Microsoft,是 GitHub Copilot 使用的以编程代码为中心的 Codex 和图像生成 DALL-E 等工具的基础。
像 GPT-3 这样的模型需要大量的计算和内存,大约为数千 petaflop/s-days,它是在专用超级计算机硬件上进行基于云的高性能计算的理想候选者。微软在 Azure 上构建了自己的基于 Nvidia 的超级计算服务器,其云实例出现在 TOP500 超级计算列表中。 Azure 的 AI 服务器围绕 Nvidia Ampere A12000 Tensor Core GPU 构建,通过高速 InfiniBand 网络互连。
OpenAI 的生成式 AI 工具已在 Azure 服务器上构建和训练。作为 OpenAI 和微软之间长期交易的一部分,OpenAI 的工具作为 Azure 的一部分提供,具有 Azure 特定的 API 并与 Azure 的计费服务集成。经过一段时间的私人预览后,Azure OpenAI API 套件现已普遍可用,支持 GPT-3 文本生成和 Codex 代码模型。微软表示将在未来的更新中添加 DALL-E 图像生成。
这并不意味着任何人都可以构建使用 GPT-3 的应用程序;微软仍在限制访问,以确保项目符合其道德人工智能使用政策,并严格限定在特定用例范围内。您还需要成为 Microsoft 的直接客户才能访问 Azure OpenAI。 Microsoft 使用类似的过程来访问其受限访问认知服务,其中可能存在冒充或侵犯隐私的情况。
这些政策可能会保持严格,而某些领域(例如医疗服务)可能需要额外保护才能满足监管要求。微软自己在 AI 语言模型方面的经验给它上了一课,它不想重蹈覆辙。作为附加保护,输入和输出上有内容过滤器,并向 Microsoft 和开发人员发出警报。
一旦你的帐户被批准使用 Azure OpenAI,你就可以开始构建使用其 API 端点的代码。可以从门户、Azure CLI 或 Arm 模板创建适当的 Azure 资源。如果您使用的是 Azure 门户,请创建分配给您的帐户的资源以及您打算用于您的应用程序和任何关联的 Azure 服务和基础结构的资源组。接下来,为资源命名并选择定价层。目前,只有一种定价选项,但随着微软推出新的服务等级,这种情况可能会发生变化。
有了资源,你现在可以使用 Azure OpenAI Studio 部署模型。这是您使用 OpenAI 完成大部分工作的地方。目前,您可以在 GPT-3 系列模型的成员之间进行选择,包括基于代码的 Codex。其他模型使用嵌入,为搜索优化的复杂语义信息。
在每个系列中,都有一组不同的模型,其名称同时表明了成本和能力。如果你使用 GPT-3,Ada 是成本最低且能力最差的,而 Davinci 是最高的。每个模型都是前一个模型的超集,因此随着任务变得越来越复杂,您无需更改代码,只需选择不同的模型即可。有趣的是,Microsoft 建议在设计基于 OpenAI 的应用程序时从功能最强大的模型开始,因为这可以让您在投入生产时调整基础模型的价格和性能。
尽管 GPT-3 的文本完成功能已经流行起来,但实际上您的应用程序需要更加关注您的特定用例。您不希望 GPT-3 为定期提供无关建议的支持服务提供支持。您必须使用带有输入和所需输出的训练示例构建自定义模型,Azure OpenAI 将其称为“完成”。拥有大量训练数据很重要,Microsoft 建议使用数百个示例。您可以将所有提示和完成内容包含在一个 JSON 文件中,以简化训练数据的管理。
自定义模型到位后,您可以使用 Azure OpenAI Studio 来测试 GPT-3 如何适用于您的场景。一个基本的 playground 可以让你看到模型如何响应特定的提示,一个基本的控制台应用程序可以让你输入一个提示并返回一个 OpenAI 完成。微软将构建良好的提示描述为“显示,不要告诉”,这表明提示需要尽可能明确以获得最佳输出。 playground 还有助于训练您的模型,因此如果您正在构建分类器,您可以在提供输入和触发以获得响应之前提供文本和预期输出列表。
playground 的一个有用功能是能够尽早设置意图和预期行为,因此如果您使用 OpenAI 为帮助台分类工具提供支持,您可以设置输出礼貌和冷静的期望,确保它获胜’模仿愤怒的用户。相同的工具可用于 Codex 模型,因此您可以看到它如何作为代码完成工具或动态助手工作。
准备好开始编码后,您可以直接或与 OpenAI Python 库一起使用部署的 REST 端点。后者可能是您获得实时代码的最快途径。您需要端点 URL、身份验证密钥和部署名称。一旦你有了这些,为你的代码设置适当的环境变量。与往常一样,在生产中最好不要对密钥进行硬编码,而是使用 Azure Key Vault 等工具来管理它们。
调用端点非常简单:只需使用 openai.Completion.create 方法获取响应,设置包含提示及其响应所需的最大令牌数。 API 返回的响应对象包含您的模型生成的文本,可以将其提取、格式化,然后供您的其余代码使用。基本调用很简单,您的代码还可以使用其他参数来管理响应。这些控制着模型的创造力以及它如何对其结果进行采样。您可以使用这些参数来确保响应直接且准确。
如果您使用其他语言,请使用其 REST 和 JSON 解析工具。您可以在 Azure OpenAI 文档中找到 API 参考,或利用 Azure 的 GitHub 托管的 Swagger 规范来生成 API 调用并处理返回的数据。这种方法适用于 Visual Studio 等 IDE。
OpenAI 模型的一个关键要素是它们基于代币的定价模型。 Azure OpenAI 中的令牌不是我们熟悉的身份验证令牌;它们是字符串的标记化部分,是使用内部统计模型创建的。 Open AI 在其网站上提供了一个工具来显示字符串是如何标记化的,以帮助您了解您的查询是如何计费的。你可以期望一个标记大约是四个字符的文本,尽管它可以更少也可以更多;然而,它最终应该有 75 个单词,需要大约 100 个标记(大约是一段普通文本)。
模型越复杂,代币的价格就越高。基本型号 Ada 每 1,000 个代币的价格约为 0.0004 美元,高端 Davinci 为 0.02 美元。如果您应用自己的调整,则会产生存储成本,如果您使用嵌入,则由于计算需求增加,成本可能会高出一个数量级。微调模型需要支付额外费用,起价为每计算小时 20 美元。 Azure 网站提供样本价格,但实际价格可能会有所不同,具体取决于您的组织与 Microsoft 的帐户关系。
也许 Azure OpenAIclo 最令人惊讶的地方在于它的简单性。当您使用预建模型(可以进行一些微调)时,您需要做的就是应用一些基本的预训练,了解提示如何生成输出,并将工具链接到您的代码,随时生成文本内容或代码这是需要的。

关注公众号“大模型全栈程序员”回复“小程序”获取1000个小程序打包源码。更多免费资源在http://www.gitweixin.com/?p=2627