使用Terraform创建Azure OpenAI服务资源

首先

通过使用Azure OpenAI服务,可以安全地利用各种生成智能AI。

此外,Terraform可以使用代码构建和更改Azure的各种资源,并且还可以使用Terraform构建Azure OpenAI服务。

因此,本次我们将介绍如何使用Terraform创建Azure OpenAI服务资源,包括网络限制(IP限制)。

前提 – Qian ti

    • Azureサブスクリプションの適用およびAzure OpenAI Serviceの利用申請は既に完了しているものとします。

Azure OpenAI Serviceの利用申請については下記ドキュメントをご参照ください。

https://learn.microsoft.com/ja-jp/azure/cognitive-services/openai/overview

Terraformのインストールおよび環境構築は完了しているものとします。

Terraformのインストールについては下記ドキュメントをご参照ください。

https://learn.hashicorp.com/tutorials/terraform/install-cli

Terraformでのデプロイ対象のリソースグループは既に作成済みであるものとします。

使用Terraform定义Azure OpenAI服务资源

定义azurerm提供程序

要在Azure云中使用Terraform来配置资源,首先需要在main.tf文件中定义azurerm提供者。

请参考以下链接获取更多信息:https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs

terraform {
  # Azure Provider
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = ">= 3.59.0"
    }
  }
}

# Configure the Azure Provider
provider "azurerm" {
  features {}
}

Azure OpenAI 服务账户的定义

要定义Azure OpenAI服务的资源,需要使用azurerm_cognitive_account进行定义。

参考:https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/cognitive_account

请参考此链接:https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/cognitive_account

以下是设置项目和概要的内容。

name: OpenAIリソース名

resource_group_name: リソースグループ名

location: リージョン

本ドキュメントでは東日本を指定しています。
Azure OpenAI Serviceが提供されているリージョンは、こちらで確認できます。

kind: OpenAI(固定値)

sku_name: S0(固定値)

custom_subdomain_name: 任意のAzure OpenAI Serviceドメイン名

リソース作成後、OpenAIエンドポイントはhttps://<任意のドメイン>.openai.azure.com/となります。

network_acls: ネットワークアクセス制御

default_action: Deny

ip_rulesで指定したアドレス以外からのアクセスを拒否します。

ip_rules: Azure OpenAI Serviceのアクセスを許可するIPアドレス一覧

ネットワークアクセス制御は必須の設定ではありませんが、こちらが無いとインターネット上どこからでもAzure OpenAI Serviceにアクセスできてしまうため、IP制限等でアクセス制限しておくことをおすすめします。

# Azure OpenAI Service Account
resource "azurerm_cognitive_account" "openai_sample" {
  name                  = "openai-acc"
  resource_group_name   = "my-resource-group"
  location              = "japaneast"
  kind                  = "OpenAI"
  sku_name              = "S0"
  custom_subdomain_name = "<任意のドメイン>"
  network_acls {
    default_action = "Deny"
    ip_rules       = ["xx.xx.xx.xx", "xx.xx.xx.xx"] # 許可するIPの一覧
  }
}

Azure OpenAI 服务部署的定义

只有使用上述的Azure OpenAI Service账户无法使用聊天功能,必须将模型部署到先前创建的账户上。

这是使用azurerm_cognitive_deployment进行定义。

请参考以下链接:https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/cognitive_deployment

以下是设置项目和概述。

name: デプロイ名

cognitive_account_id: Azure OpenAI ServiceアカウントのID

上記で定義したAzure OpenAI Service Accountと紐づくように、azurerm_cognitive_account.<account名>.idとします。

model: モデル

format: OpenAI(固定値)

name: モデルの種類

version: バージョン

modelのnameおよびversionでは、Azure OpenAI Serviceで利用するモデルの種類とバージョンを指定します。
モデルの種類やバージョンは、こちらのドキュメントをご参照ください。
本ドキュメントでは、gpt-35-turboの最新バージョン0613を指定しています。

scale

type: Standard(固定値)

# Azure OpenAI Service Deployment
resource "azurerm_cognitive_deployment" "chat" {
  name                 = "my-chat-model"
  cognitive_account_id = azurerm_cognitive_account.openai_sample.id
  model {
    format  = "OpenAI"
    name    = "gpt-35-turbo"
    version = "0613"
  }
  scale {
    type = "Standard"
  }
}

资源的确认

一旦terraform plan和terraform apply完成了资源的创建,Azure Portal中将出现已创建的Azure OpenAI Service。

让我们从“资源概览”中探索,尝试访问Azure OpenAI Studio。

首先,检查一下”部署”功能,可以确认使用Terraform创建的模型已经成功部署。

1.png

另外,您可以通过“聊天”功能验证刚刚部署的模型是否能进行聊天。

2.png

此外,如果尝试在非Terraform定义的地址上进行聊天,则会收到由于虚拟网络/防火墙规则而被拒绝访问的消息,并且可以确认已应用IP限制。

可以通过在Azure门户中创建的Azure OpenAI服务资源的“网络”部分来查看IP限制的详细信息。

3.png

示例代码

terraform {
  # Azure Provider
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = ">= 3.59.0"
    }
  }
}

# Configure the Azure Provider
provider "azurerm" {
  features {}
}

# Azure OpenAI Service Account
resource "azurerm_cognitive_account" "openai_sample" {
  name                  = "openai-acc"
  resource_group_name   = "my-resource-group"
  location              = "japaneast"
  kind                  = "OpenAI"
  sku_name              = "S0"
  custom_subdomain_name = "<任意のドメイン>"
  network_acls {
    default_action = "Deny"
    ip_rules       = ["xx.xx.xx.xx", "xx.xx.xx.xx"]
  }
}

# Azure OpenAI Service Deployment
resource "azurerm_cognitive_deployment" "chat" {
  name                 = "my-chat-model"
  cognitive_account_id = azurerm_cognitive_account.openai_sample.id
  model {
    format  = "OpenAI"
    name    = "gpt-35-turbo"
    version = "0613"
  }
  scale {
    type = "Standard"
  }
}

总结

本次使用了Terraform来创建Azure OpenAI服务的资源并部署模型。

另外,除了介绍的IP限制外,还可以使用Terraform来定义一个安全的环境,以便安全地使用Azure OpenAI服务,例如私有终端连接。

相关链接

    • azurerm_cognitive_account

 

    azurerm_cognitive_deployment
广告
将在 10 秒后关闭
bannerAds