使用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创建的模型已经成功部署。
另外,您可以通过“聊天”功能验证刚刚部署的模型是否能进行聊天。
此外,如果尝试在非Terraform定义的地址上进行聊天,则会收到由于虚拟网络/防火墙规则而被拒绝访问的消息,并且可以确认已应用IP限制。
可以通过在Azure门户中创建的Azure OpenAI服务资源的“网络”部分来查看IP限制的详细信息。
示例代码
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