Press "Enter" to skip to content

Azure 轻量级生成式人工智能着陆区

人工智能(AI)现在处于热潮之中,一些产品过度使用AI主题——然而,许多公司和产品正在使用这种技术自动化其流程。在本文中,我们将探索AI产品并构建一个AI着陆区。让我们来看看从使用AI中受益的前3家公司。

Github Copilot

Github Copilot的主要目标是通过提供代码建议和自动完成代码行或代码块来帮助程序员编写代码。通过智能分析上下文和现有代码,它加快了编码过程并提高了开发者的生产力。它成为开发者在编码过程中的宝贵伴侣,能够支持各种编程语言并理解代码模式。

Neuraltext

Neuraltext致力于涵盖整个内容工作流程,包括从生成想法到执行想法的一切,全部由AI驱动。它是一个基于AI的文案撰写、SEO内容和关键词研究工具。通过利用AI文案撰写能力,您可以轻松为您的活动生成引人注目的文案,并生成多种变体。Neuraltext还提供了50多个预设计的模板,用于不同目的,例如Facebook广告、口号创意、博客部分等,简化了内容创作过程。

Motum

Motum是用于运营车队管理的智能操作系统。它具有使用计算机视觉和机器学习算法自动检测和评估车辆损坏的损伤识别功能。通过分析车辆图像,AI系统可以准确识别凹痕、划痕、裂纹和其他类型的损伤。这项技术简化了保险理赔、汽车维修店和车辆评估的检查过程,节省时间并提高了评估损伤程度的准确性。

什么是云着陆区?

AI云着陆区是一个包括基本云服务、工具和基础设施的框架,用于开发和部署人工智能(AI)解决方案。

着陆区包括哪些AI服务?

Azure AI着陆区包括以下AI服务:

  • Azure Open AI – 提供预构建的AI模型和API,用于图像识别、自然语言处理和情感分析等任务,使开发人员更容易将AI功能整合到应用中;Azure AI服务还包括用于构建自定义模型和进行数据分析的机器学习工具和框架。
  • Azure AI服务 – 一项服务,使组织能够为其用户创建更具吸引力、个性化和智能的体验,推动各个行业的创新和效率提升;开发人员可以利用这些预构建的API为其应用添加智能功能,例如人脸识别、语言理解和情感分析,而无需广泛的AI专业知识。
  • Azure Bot服务 – 这是Microsoft Azure提供的一个平台,是AI服务的一部分。它使开发人员能够创建聊天机器人和对话代理,与各种渠道的用户进行交互,如Web聊天、Microsoft Teams、Skype、Telegram和其他平台。

架构

我们开始将Azure AI着陆区集成和部署到我们的环境中。三个逻辑框将AI着陆区分离:

  • Azure DevOps流水线
  • Terraform模块和环境
  • 部署到Azure订阅的资源

我们可以在下面的图表中看到它。

图1:AI着陆区架构(作者:Boris Zaikin)

该架构包含了每个Azure订阅的CI/CD YAML流水线和Terraform模块。

它包含两个YAML文件:

  • tf-provision-ci.yaml是基于阶段的主要流水线。它为每个环境重用tf-provision-ci.jobs.yaml流水线。
  • tf-provision-ci.jobs.yaml包含用于部署Terraform模块的工作流。

tf-provision-ci.yaml – 包含主要配置、变量和阶段:Dev、Test和Prod;流水线通过提供不同的参数,在每个阶段中重用tf-provision-ci.jobs.yaml

在我们将流水线添加并执行到AzureDevOps之后,我们可以看到以下分阶段的结构。

图2:Azure DevOps分阶段UI

Azure DevOps会自动识别主要YAML流水线中的阶段,并提供适当的UI。

让我们看一下tf-provision-ci.jobs.yaml

tf-provision-ci.jobs.yaml – 包含Terraform任务,包括init、show、validate、plan和apply。下面我们可以看到执行过程。

图3:Azure DevOps着陆区部署界面

正如我们所见,所有流水线的执行都成功完成,并且每个作业都提供了有关状态、配置和验证错误的详细信息。

另外,我们不要忘记填写“请求访问表单”。需要几天时间才能收到回复。否则,流水线将因配额错误而失败。

Terraform脚本和模块

通过利用Terraform,我们可以将代码封装在一个Terraform模块中,让它在代码库的各个部分之间可以重复使用。这消除了在多个环境(如staging和production)中复制和复制相同代码的需要。相反,两个环境都可以利用来自共享模块的代码,促进代码的重用性并减少冗余。

一个Terraform模块可以被定义为一个包含在文件夹中组织的一组Terraform配置文件。从技术上讲,到目前为止你编写的所有配置都可以被视为模块,尽管它们可能不复杂或可重用。当你通过运行“apply”直接部署一个模块时,它被称为根模块。然而,为了真正探索模块的能力,你需要创建可重用的模块,用于其他模块内部使用。这些可重用的模块提供了更大的灵活性,并且可以显著增强你的Terraform基础设施部署。让我们看一下下面的项目结构。

图4:Terraform项目结构模块

上面的图片显示了所有资源都放在一个Module目录中。每个环境都有自己的目录、index terraform文件和变量,所有资源都在一个带有不同参数的index.tf文件中被重用。

我们将把所有资源放在模块的一个单独文件中,所有值都将放入Terraform变量中。这样可以快速管理代码并减少硬编码的值。此外,资源的细粒度允许与GIT或其他源代码控制进行组织化的团队合作(减少合并冲突)。

让我们来看一下open-ai tf模块。

Open AI的关键参数列表:

  • prefix:为所有Azure资源设置前缀
  • domain:指定用于通过Ingress Controller公开聊天机器人的主机名的域部分
  • subdomain:定义用于通过Ingress Controller公开聊天机器人的子域部分
  • namespace:指定访问Azure OpenAI服务的工作负载应用程序的命名空间
  • service_account_name:指定工作负载应用程序用于访问Azure OpenAI服务的服务帐户的名称
  • vm_enabled:一个布尔值,确定是否在与AKS集群相同的虚拟网络中部署虚拟机
  • location:指定部署Azure资源的区域(例如westeurope)
  • admin_group_object_ids:数组参数包含具有对集群的管理角色访问权限的Azure AD组对象ID的列表。

我们需要注意subdomain参数。Azure认知服务利用自定义子域名为通过Azure工具(如Azure门户、Azure Cloud Shell、Azure CLI、Bicep、Azure资源管理器(ARM)或Terraform)创建的每个资源分配唯一的子域名,并与以前在特定Azure区域中共享给客户的区域终结点不同。自定义子域名对于启用Azure Active Directory(Azure AD)等身份验证功能是必需的。在某些情况下,为我们的Azure OpenAI服务指定自定义子域名是必要的。其他参数可以在“使用Azure OpenAI创建资源和部署模型”中找到。

下一篇文章中

  • 将Az私有终端点添加到配置中:Azure Open AI的一个重要方面是其利用私有终端点,可以精确控制对Azure Open AI服务的访问。通过私有终端点,您可以将对服务的访问限制为仅限于虚拟网络内的必要资源。这样可以确保服务的安全性和可靠性,同时仍然允许授权的资源根据需要访问它们。
  • 将OpenAI与Azure Kubernetes Services集成:将OpenAI服务与Kubernetes集群集成,可以实现AI应用程序的高效管理、可扩展性和高可用性,使其成为在生产环境中运行AI工作负载的理想选择。
  • 描述并比较我们的轻量级着陆区和Microsoft的OpenAI着陆区。

项目代码库

  • GitHub – Boriszn/Azure-AI-LandingZone

结论

本文探讨了人工智能产品和创建人工智能着陆区。我们重点介绍了从人工智能中受益的三个关键参与者:用于销售互动的Reply.io,用于编码辅助的Github Copilot以及用于基于人工智能的内容的Neuraltext。在转向人工智能着陆区时,我们专注于Azure AI服务,如Open AI,其中包括预构建的模型和API。我们深入探讨了使用Terraform和CI/CD流水线的架构。Terraform的模块化方法非常重要,强调可重用性。我们深入研究了Open AI模块参数,特别是Azure认知服务的自定义子域。在这个基于人工智能的时代,自动化和智能决策正在革新技术。

Leave a Reply

Your email address will not be published. Required fields are marked *