銀の光と碧い空

クラウドなインフラとC#なアプリ開発の狭間にいるエンジニアの日々

MS LearnのAOAIのDALL-E 3を使用して画像を生成するサンプルを動かす方法

Azure OpenAI Serviceを試しているのですが、以下のページのDALL-E 3を使うC#のサンプルコードが動かなかったので、2024年2月25日現在で動かした手順を載せておきます。フィードバック済みです。

learn.microsoft.com

まず前提条件が足りていません。DALL-E 3モデルをデプロイしておく必要があるのですが、このためにはOpenAI serviceリソースをSweden Centralに作成しておく必要があります*1

OpenAI serviceを作成したら、ドキュメントの手順通りエンドポイントとキーをメモっておきます。

次にAzure OpenAI Studioに移動して、管理>デプロイメニューを開きます。ここで、dall-e-3 モデルのモデルがデプロイされていることを確認します。自分は最初からデプロイされていましたが、ない場合は新規にデプロイすればよいと思われます。ここで、デプロイ名をメモっておきます。

そして動いたサンプルコードは以下の通りです。

using Azure.AI.OpenAI;
using Azure;

var endpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT");
var key = Environment.GetEnvironmentVariable("AZURE_OPENAI_API_KEY");

OpenAIClient client = new(new Uri(endpoint), new AzureKeyCredential(key));

var imageGenerations = await client.GetImageGenerationsAsync(
    new ImageGenerationOptions()
    {
        Prompt = "a happy monkey eating a banana, in watercolor",
        Size = ImageSize.Size1024x1024,
        DeploymentName = "Dalle3"
    });

// Image Generations responses provide URLs you can use to retrieve requested images
Uri imageUri = imageGenerations.Value.Data[0].Url;

// Print the image URI to console:
Console.WriteLine(imageUri);

Environment.GetEnvironmentVariable でないと動かないのは比較的わかりやすいですが、ImageGenerationOptions のプロパティに DeploymentName が指定されていないと例外がスローされます。値は先ほどメモっておいたdall-e-3モデルのデプロイ名です。また自分が試したときは Sizeプロパティが ImageSize.Size256x256 だとエラーになりました。

以上の手順でドキュメント通り、生成された画像のURLが表示されました。

*1:もしかしたらこのドキュメントはDALL-E 2向けかもしれませんが、いずれにせよこのドキュメントのままでは動きませんでした

.NET Aspire プレビュー3が公開されました

.NET Aspireの最新の機能などをまとめてみます。 現在はpreview3が最新です。 learn.microsoft.com

アップデートと破壊的変更

Aspireの開発ツールのアップデートは、Visual Studioを使う場合はVisual Studioをアップデートすれば自動的にアップデートされました。CLIを使う場合は手順に従ってコマンドを実行します。 既存のApisreアプリはNuGetの参照を更新することでアップデートできますが、すでに9.0.0系列のパッケージが公開されているため、最新ではなく 8.0.0-preview.3.24105.21 にアップデートするようにします。

また、builder.WithServiceBinding(...) APIが非推奨になり builder.WithEndpoint(...) に置き換える必要があります。次のプレビューで廃止される予定です。

ダッシュボード

ダッシュボードが独立した実行ファイルとして実行できるようになりました。開発時は今までとおなじように使えますが、運用環境に展開したあとにダッシュボードを独立して動作させることができるようになります。

learn.microsoft.com

その結果、ダッシュボード単体でOTLPのバックエンドとして動作し、メトリクス、トレース、ログを表示することが可能になりました。Aspire以外の、ほかの言語のアプリからであっても動作する見込みです。

github.com

また、ダッシュボードの機能そのものもローカリゼーションやアクセシビリティの改善、OTEL関連の改善などが加えられています。

コンポーネント

以下のコンポーネントが追加されました。

  • Azure AI OpenAI
  • Azure Kafka
  • Entity Frameworkを利用したOracle
  • Entity Frameworkを利用したMySQL

また以下のホスティングがサポートされAspireからプロビジョニングできるようになりました。

  • MySQL
  • CosmosDB

そのほか

Orleansをサポートしました。サンプルアプリが公開されています。そのほかにもサンプルアプリが追加されています。

github.com

コンテナランタイムとしてDockerに加えてPodmanもサポートしました。

github.com

Aspire上でNatsが動作するようになりました。Natsは分散システムのための接続テクノロジーで、M:N接続を容易に実現できるといったメリットがあります。

Microsoft Fabricをお試しするには (Microsoft AI Tour Tokyoに参加してきました)

昨日、Microsoft AI Tour Tokyoに参加してきました。その中で、Microsoft MVPとして「Microsoft Fabric でデータサイエンスを始めよう」というワークショップのお手伝いをしてきました。

envision.microsoft.com

お手伝いのために自分でもMicrosoft Fabricをいろいろ試していたのですが、どうお試しできるのかというのを簡単に紹介したいと思います。ワークショップ参加した方には、Fabricが使えるのであれば家に帰ってからも使えますというリンクが紹介されていたと思いますが、その使えるようになるための方法です。

もちろん購入すれば使えます。価格のページはこちらです。

azure.microsoft.com

お試しするのに購入はちょっとという場合は無料試用版が使えます。

learn.microsoft.com

試用は60日間となりますが、すべてのFabricのエクスペリエンスと機能へのフル アクセスに加えて、OneLakeストレージを最大1 TBまで取得でき、64容量ユニット(CU)まで使えます。試用にはPowerBIが利用できることが必要ですが、PowerBI自体も評価版を利用できます。 ただ、テナントを持つ組織アカウントが必要なので、会社のテナントだと気軽に使えないかもしれません。そんな場合はMicrosoft365の試用版を経由して利用する方法も上のドキュメントには紹介されています。M365の試用->PowerBIの試用->Fabricの試用、という三段構えになっています。

さてここからが一番紹介したいことです。いざ試用版が使えるようになっても、なにをどう動かせばFabricが使えるかわからないかもしれません。そういう場合はMicrosoft Learnがあります。Fabric関連のモジュールは以下のリンクで一覧が見れます。

learn.microsoft.com

モジュールの中には演習として実際にFabricを操作するユニットがあります。Microsoft LearnのAzureの演習だとLab用のAzure環境がブラウザ内でそのまま利用できたりしますが、Fabricの場合は自分が持ってるFabricアカウントを使って動かす前提になっています。ですので、せっかくFabricの試用版を有効にしたら、使えるうちにこれらのモジュールをコンプリートすることをおすすめします。