Azure OpenAI のデプロイと開発環境について
はじめに
Microsoft Azure で提供される AI サービスの1つである、Azure OpenAI Service についてまとめてみました。
Azure OpenAI Service とは
Azure OpenAI Service とは、OpenAI社が開発したAIモデルをAzure上で提供されるサービスです。
GPT-4、GPT-4 Turbo with Vision、GPT-3.5-Turbo、埋め込みモデルシリーズなど OpenAI の言語モデルを提供するサービスとなります。
REST API、Python SDK、または Azure OpenAI Studio の Web ベースのインターフェイスを介してサービスにアクセス可能です。
OpenAI (ChatGPT) との違い
OpenAI のモデルを使うには、「Azure OpenAI Service」または「OpenAI」を使用する方法があります。
ですが、提供方法やセキュリティ周りに違いがあり利用するユースケースにより選択する必要があると思います。
まず、違いの1つ目としては提供方法です。
OpenAI (ChatGPT) では「Webサービス」「API利用」の2種で提供されているのに対して、Azure OpenAI Service は「API利用」のみとなります。
Azure で利用する場合は利用者がUIを別途用意する必要があるため、開発コストがかかってきます。
お手軽に利用するには OpenAI (ChatGPT) となりますね。
次に、セキュリティ面に違いがあります。
OpenAI (ChatGPT) は Web サービスとなっているため、パブリックなデータとして扱われます。
入力したデータがAIの学習データとして利用されたりする可能性があるため、企業の機密データ利用としての場合は考慮が必要となります。
Azure OpenAI Service の場合は、既定ではAIの学習データとして利用されないのと、Azure セキュリティの構成が利用可能となるので、インプットデータをクローズドなネットワークに配置したり、ExpressRoute を利用してオンプレミスから閉域網でデータの連携が可能となるといった違いがあります。
他の違いは、モデルの提供速度が OpenAI 側で提供された後に、 Azure OpenAI Service の方にも順次追加となるため少し提供範囲が異なります。
機密データを利用するような企業利用の場合は、Azure OpenAI Service の方が向いていると言えると思います。
利用するには
Azure OpenAI にアクセスするには現状は、「高い需要、今後の製品の機能強化、Microsoft の責任ある AI へのコミットメントを考慮」しているとされ、アクセスは制限されています。
現在対象とされているのは、Microsoft と既存のパートナーシップ関係がある顧客、リスクの低いユース ケース、軽減策の取り入れに取り組んでいる顧客とされています。
申請フォームより申請してサブスクリプションに対して利用権限を付与してもらうという運用となっております。
利用する場合には公式サイトから利用申請してみてください。
Azure OpenAI Service のデプロイ
Azure OpenAI Service をデプロイするには以下の3つの方法があります。
ポータル
CLI、PowerShell、REST API、クライアントライブラリ
Azure Resource Manager (ARM) テンプレート
ポータルでのデプロイ
Azure ポータルからリソースの作成に進み、[openai]を検索します。
[Azure OpenAI]を選択して作成に進みます。

リソースグループ、リージョン、名前、価格レベルをそれぞれ指定して次へ進みます。
現時点(2024年3月時点)ではリージョンにより利用できるモデルが異なりますので、利用したいモデルが利用できるリージョンを選択してください。

次にネットワークの指定をします。
クローズドなネットワークで利用したい場合は、[Selected networks, configure network security for your Azure AI services resource.]を選択します。
この部分は後からも変更できます。

タグは必要に応じて入力します。
最終確認が完了したら作成します。

リソースの作成が出来たら以下のようにリソースを表示できます。
次にモデルを作成します。
モデルを作成するには Azure OpenAI Studio から作成します。
[Azure OpenAI Studio に移動する]をクリックします。

Azure OpenAI Studio から[新しいデプロイの作成]をクリックしてデプロイを作成します。
サブメニューの[管理]→[デプロイ]からも同じ画面を表示できます。

[新しいデプロイの作成]をクリックしてデプロイの作成を実行します。

モデルを選択してデプロイ名に名称を入力して作成します。

作成が完了したら以下のように一覧に表示されます。

Azure CLI でのデプロイ
Azure CLI でコマンドラインベースによるリソースの作成も可能です。
順序としては以下となります。
リソースグループの作成
Azure OpenAI Service リソースの作成
モデルをデプロイする
順に作成方法を見ていきます。
リソースグループの作成
リソースを作成するには、Azure リソース グループが必要となるため、まずはリソースグループを作成します。
Azure CLI でリソースグループを作成するには、az group create コマンドを使用して 新しいリソース グループを作成する命令を発行できます。
以下のコマンドでは米国東部に OpenAI-rg という名称でリソースグループが作成されます。
az group create \
--name OpenAI-rg \
--location eastus
Azure OpenAI Service リソースの作成
Azure OpenAI Service リソースを作成するには az cognitiveservices account create コマンドを使用して、先ほど作成したリソース グループに リソースを作成します。
以下のコマンドでは、OpenAI-rg リソース グループに OpenAIdemoResource という名前のリソースを作成します。
az cognitiveservices account create
--name OpenAIdemoResource
--resource-group OpenAI-rg
--location eastus
--kind OpenAI
--sku s0
モデルをデプロイする
OpenAI Service を使用するにはモデルのデプロイが必要となります。
以下のコマンドでは、ModelTest という名称で gpt-36-turbo モデルのインスタンスをデプロイします。
az cognitiveservices account deployment create
--name OpenAIdemoResource
--resource-group OpenAI-rg
--deployment-name ModelTest
--model-name gpt-35-turbo
--model-version "1"
--model-format OpenAI
--sku-capacity "1"
--sku-name "Standard"
事前トレーニング済みの生成AIモデルを使った検証
Azure OpenAI Studio からデプロイしたAIモデルの動作確認ができるようになっています。
以下は画像生成のサンプル画面です。
指定したのは、[container]と[森]です。
左部メニューのDALL-Eから確認ができます。

また、チャットの動作確認は左部メニューのチャットから確認ができます。
以下は「OpenAIについて」と入力した返答が表示されています。

チャットをコード化することも可能となっています。
[コードの表示]をクリックすると Python のサンプルコードが表示されるので、修正してアプリケーションに組み込む等して利用してください。

以下は作成されたサンプルコードです。
参考までに。
#Note: The openai-python library support for Azure OpenAI is in preview.
#Note: This code sample requires OpenAI Python library version 1.0.0 or higher.
import os
from openai import AzureOpenAI
client = AzureOpenAI(
azure_endpoint = "https://opstopenaidemo.openai.azure.com/",
api_key=os.getenv("AZURE_OPENAI_KEY"),
api_version="2024-02-15-preview"
)
message_text = [{"role":"system","content":"You are an AI assistant that helps people find information."}]
completion = client.chat.completions.create(
model="gpt35-demo", # model = "deployment_name"
messages = message_text,
temperature=0.7,
max_tokens=800,
top_p=0.95,
frequency_penalty=0,
presence_penalty=0,
stop=None
)
アクセス制御
Azure OpenAI Service へのアクセス制御は、ネットワークと認証による制御が可能です。
制御方法を確認していきます。
Microsoft Entra ID による制御
Microsoft Entra ID を使った認証制御が可能です。
利用可能な手法としては、以下アカウントで認証する方式となります。
ユーザーアカウント
リソースID
ユーザーアカウント
アカウントは「Cognitive Services ユーザー」ロールを付与することで、OpenAI へのアクセス許可をすることができます。

リソースID
また、リソースID

ネットワークによる制御
前述したようにネットワークの構成は3種類構成できます。
すべてのネットワーク
選択したネットワークとプライベートエンドポイント
無効

すべてのネットワーク
すべてのネットワークではインターネットを含めたすべてのネットワークからアクセスが可能です。
選択したネットワークとプライベートエンドポイント
以下のネットワークを指定できます。
仮想ネットワーク
Firewall
プライベートエンドポイント
無効
仮想ネットワークないのプライベートエンドポイント経由でのアクセスとなります。
まとめ
Microsoft Azure で提供される OpenAI サービスとしての Azure OpenAI Service を紹介しました。
Azure OpenAI Serviceを導入することで、安全な環境でAIモデルを活用するサービスの構築が可能となります。
日本リージョンで利用できるモデルはまだ少ないですが、今後リリース予定とのことでより活用の幅が広がるかと思います。
独自データを活用することで自社向けサービスや独自サービスの構築もできるため、サービス構築のAI基盤利用として検討してみてはいかがでしょうか。
料金について
モデルはリージョンにより利用できるものとできないものがあります。(2024/03現在)
以下の公式ドキュメントを参照していただき、利用したいモデルが動作するリージョンの料金等を確認していただければと思います。