mcpField
A
azure-mgmt-weightsandbiases-dotnet

azure-mgmt-weightsandbiases-dotnet

github.com/sickn33クラウド・DevOps48.7k52 回インストール今日更新
リポジトリ

azure-mgmt-weightsandbiases-dotnet について

Azure Marketplace 経由でデプロイした Weights & Biases インスタンスを管理する Azure.ResourceManager.WeightsAndBiases .NET SDK を扱うスキルです。作成、確認、更新、削除、SSO 設定を案内し、Azure リソース管理と実験トラッキングを区別します。

主な機能

  1. 01W&B インスタンスの作成と管理
  2. 02Azure リソースの一覧表示と確認
  3. 03Entra ID SSO の設定
  4. 04タグとインスタンス設定の更新
  5. 05プロビジョニング状態の追跡

活用シーン

  1. 01Azure Marketplace 経由で W&B インスタンスを構築
  2. 02リソースグループ内のインスタンス確認
  3. 03インスタンスの SSO 設定
  4. 04許可されたインスタンスの更新または削除

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/sickn33/agentic-awesome-skills --skill azure-mgmt-weightsandbiases-dotnet

インストール後、Claude Code で/azure-mgmt-weightsandbiases-dotnetを入力して読み込まれたか確認します。

詳細

Azure.ResourceManager.WeightsAndBiases (.NET)

Azure Marketplace を通じて Weights & Biases の ML 実験追跡インスタンスをデプロイおよび管理するための Azure Resource Manager SDK です。

インストール

dotnet add package Azure.ResourceManager.WeightsAndBiases --prerelease
dotnet add package Azure.Identity

パッケージの基準バージョンの例:v1.0.0-beta.1(プレビュー)。利用可能なバージョンと生成された API を確認してから適用してください。 API バージョン:2024-09-18-preview

環境変数

AZURE_SUBSCRIPTION_ID=<your-subscription-id>
AZURE_RESOURCE_GROUP=<your-resource-group>
AZURE_WANDB_INSTANCE_NAME=<your-wandb-instance>

認証

using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.WeightsAndBiases;

ArmClient client = new ArmClient(new DefaultAzureCredential());

リソース階層

Subscription
└── ResourceGroup
    └── WeightsAndBiasesInstance    # W&B deployment from Azure Marketplace
        ├── Properties
        │   ├── Marketplace          # Offer details, plan, publisher
        │   ├── User                 # Admin user info
        │   ├── PartnerProperties    # W&B-specific config (region, subdomain)
        │   └── SingleSignOnPropertiesV2  # Entra ID SSO configuration
        └── Identity                 # Managed identity (optional)

課金対象のリソースを作成する場合は、既定値に依存せず、認可済みのテナント/サブスクリプション/リソースグループを明示的に選択してください。選択した SDK に必要な Azure/Azure.Core、Resources、Models の型をインポートします。以下の Marketplace のオファー/プラン/契約条件/リージョンおよび SSO の詳細は例示です。現在のプロバイダーの契約条件と権限に合わせる必要があります。ARM リソースが存在しないことは、名前がグローバルに利用可能であることの確認にはなりません。作成により Marketplace の料金が発生する場合があり、削除によりアクセス権やデータが失われる可能性があります。承認された変更を行う前に、対象のリソースを正確に確認し、エクスポートを保管してください。ARM 管理と W&B の実験追跡は別個の API です。wandb.ai のホストを推測して組み立てるのではなく、実際にプロビジョニングされたベース URL を取得してください。API キー、実験データ、管理者の個人識別情報をログに記録しないでください。実行をログに記録する前に、データ保持と外部送信の承認を確認してください。

主なワークフロー

1. Weights & Biases インスタンスを作成する
using Azure.ResourceManager.WeightsAndBiases;
using Azure.ResourceManager.WeightsAndBiases.Models;

SubscriptionResource subscription = await client.GetDefaultSubscriptionAsync();
ResourceGroupResource resourceGroup = (await subscription.GetResourceGroupAsync("my-resource-group")).Value;

WeightsAndBiasesInstanceCollection instances = resourceGroup.GetWeightsAndBiasesInstances();

WeightsAndBiasesInstanceData data = new WeightsAndBiasesInstanceData(AzureLocation.EastUS)
{
    Properties = new WeightsAndBiasesInstanceProperties
    {
        // Marketplace configuration
        Marketplace = new WeightsAndBiasesMarketplaceDetails
        {
            SubscriptionId = "<marketplace-subscription-id>",
            OfferDetails = new WeightsAndBiasesOfferDetails
            {
                PublisherId = "wandb",
                OfferId = "wandb-pay-as-you-go",
                PlanId = "wandb-payg",
                PlanName = "Pay As You Go",
                TermId = "monthly",
                TermUnit = "P1M"
            }
        },
        // Admin user
        User = new WeightsAndBiasesUserDetails
        {
            FirstName = "Admin",
            LastName = "User",
            EmailAddress = "[email protected]",
            Upn = "[email protected]"
        },
        // W&B-specific configuration
        PartnerProperties = new WeightsAndBiasesPartnerProperties
        {
            Region = WeightsAndBiasesRegion.EastUS,
            Subdomain = "my-company-wandb"
        }
    },
    // Optional: Enable managed identity
    Identity = new ManagedServiceIdentity(ManagedServiceIdentityType.SystemAssigned)
};

ArmOperation<WeightsAndBiasesInstanceResource> operation = await instances
    .CreateOrUpdateAsync(WaitUntil.Completed, "my-wandb-instance", data);

WeightsAndBiasesInstanceResource instance = operation.Value;

Console.WriteLine($"W&B Instance created: {instance.Data.Name}");
Console.WriteLine($"Provisioning state: {instance.Data.Properties.ProvisioningState}");
2. 既存のインスタンスを取得する
WeightsAndBiasesInstanceResource instance = await resourceGroup
    .GetWeightsAndBiasesInstanceAsync("my-wandb-instance");

Console.WriteLine($"Instance: {instance.Data.Name}");
Console.WriteLine($"Location: {instance.Data.Location}");
Console.WriteLine($"State: {instance.Data.Properties.ProvisioningState}");

if (instance.Data.Properties.PartnerProperties != null)
{
    Console.WriteLine($"Region: {instance.Data.Properties.PartnerProperties.Region}");
    Console.WriteLine($"Subdomain: {instance.Data.Properties.PartnerProperties.Subdomain}");
}
3. すべてのインスタンスを一覧表示する
// List in resource group
await foreach (WeightsAndBiasesInstanceResource instance in
    resourceGroup.GetWeightsAndBiasesInstances())
{
    Console.WriteLine($"Instance: {instance.Data.Name}");
    Console.WriteLine($"  Location: {instance.Data.Location}");
    Console.WriteLine($"  State: {instance.Data.Properties.ProvisioningState}");
}

// List in subscription
SubscriptionResource subscription = await client.GetDefaultSubscriptionAsync();
await foreach (WeightsAndBiasesInstanceResource instance in
    subscription.GetWeightsAndBiasesInstancesAsync())
{
    Console.WriteLine($"{instance.Data.Name} in {instance.Id.ResourceGroupName}");
}
4. シングルサインオン(SSO)を構成する
WeightsAndBiasesInstanceResource instance = await resourceGroup
    .GetWeightsAndBiasesInstanceAsync("my-wandb-instance");

// Update with SSO configuration
WeightsAndBiasesInstanceData updateData = instance.Data;

updateData.Properties.SingleSignOnPropertiesV2 = new WeightsAndBiasSingleSignOnPropertiesV2
{
    Type = WeightsAndBiasSingleSignOnType.Saml,
    State = WeightsAndBiasSingleSignOnState.Enable,
    EnterpriseAppId = "<entra-app-id>",
    AadDomains = { "example.com", "contoso.com" }
};

ArmOperation<WeightsAndBiasesInstanceResource> operation = await resourceGroup
    .GetWeightsAndBiasesInstances()
    .CreateOrUpdateAsync(WaitUntil.Completed, "my-wandb-instance", updateData);
5. インスタンスを更新する
WeightsAndBiasesInstanceResource instance = await resourceGroup
    .GetWeightsAndBiasesInstanceAsync("my-wandb-instance");

// Update tags
WeightsAndBiasesInstancePatch patch = new WeightsAndBiasesInstancePatch
{
    Tags =
    {
        { "environment", "production" },
        { "team", "ml-platform" },
        { "costCenter", "CC-ML-001" }
    }
};

instance = await instance.UpdateAsync(patch);
Console.WriteLine($"Updated instance: {instance.Data.Name}");
6. インスタンスを削除する
WeightsAndBiasesInstanceResource instance = await resourceGroup
    .GetWeightsAndBiasesInstanceAsync("my-wandb-instance");

await instance.DeleteAsync(WaitUntil.Completed);
Console.WriteLine("Instance deleted");
7. リソース名の利用可否を確認する
// Check if name is available before creating
// (Implement via direct ARM call if SDK doesn't expose this)
try
{
    await resourceGroup.GetWeightsAndBiasesInstanceAsync("desired-name");
    Console.WriteLine("Name is already taken");
}
catch (RequestFailedException ex) when (ex.Status == 404)
{
    Console.WriteLine("No resource with this name was found in this resource group; global partner/subdomain availability is unproven");
}

主要な型のリファレンス

型用途
WeightsAndBiasesInstanceResourceW&B インスタンスリソース
WeightsAndBiasesInstanceDataインスタンス構成データ
WeightsAndBiasesInstanceCollectionインスタンスのコレクション
WeightsAndBiasesInstancePropertiesインスタンスのプロパティ
WeightsAndBiasesMarketplaceDetailsMarketplace サブスクリプション情報
WeightsAndBiasesOfferDetailsMarketplace オファーの詳細
WeightsAndBiasesUserDetails管理者ユーザー情報
WeightsAndBiasesPartnerPropertiesW&B 固有の構成
WeightsAndBiasSingleSignOnPropertiesV2SSO の構成
WeightsAndBiasesInstancePatch更新用のパッチ
WeightsAndBiasesRegionサポート対象リージョンの列挙型

利用可能なリージョン

リージョンの列挙値Azure リージョン
WeightsAndBiasesRegion.EastUS米国東部
WeightsAndBiasesRegion.CentralUS米国中部
WeightsAndBiasesRegion.WestUS米国西部
WeightsAndBiasesRegion.WestEurope西ヨーロッパ
WeightsAndBiasesRegion.JapanEast東日本
WeightsAndBiasesRegion.KoreaCentral韓国中部

Marketplace オファーの詳細

Azure Marketplace との統合の場合:

プロパティ値
発行元 IDwandb
オファー IDwandb-pay-as-you-go
プラン IDwandb-payg(従量課金制)

ベストプラクティス

  1. DefaultAzureCredential を使用する — 複数の認証方法を自動的にサポートします
  2. マネージド ID を有効にする — 他の Azure リソースへの安全なアクセスに使用します
  3. SSO を構成する — エンタープライズのセキュリティを確保するため、Entra ID SSO を有効にします
  4. リソースにタグを付ける — コストの追跡と整理にタグを使用します
  5. プロビジョニング状態を確認する — インスタンスを使用する前に Succeeded になるまで待ちます
  6. 適切なリージョンを使用する — コンピューティング環境に最も近いリージョンを選択します
  7. Azure で監視する — Azure Monitor を使用してリソースの正常性を監視します

エラー処理

using Azure;

try
{
    ArmOperation<WeightsAndBiasesInstanceResource> operation = await instances
        .CreateOrUpdateAsync(WaitUntil.Completed, "my-wandb", data);
}
catch (RequestFailedException ex) when (ex.Status == 409)
{
    Console.WriteLine("Instance already exists or name conflict");
}
catch (RequestFailedException ex) when (ex.Status == 400)
{
    Console.WriteLine($"Invalid configuration: {ex.Message}");
}
catch (RequestFailedException ex)
{
    Console.WriteLine($"Azure error: {ex.Status} - {ex.Message}");
}

W&B SDK との統合

Azure リソースを作成した後、実験追跡には W&B Python SDK を使用します。

# Install: pip install wandb
import wandb

# Login with your W&B API key from the Azure-deployed instance
wandb.login(host="https://my-company-wandb.wandb.ai")

# Initialize a run
run = wandb.init(project="my-ml-project")

# Log metrics
wandb.log({"accuracy": 0.95, "loss": 0.05})

# Finish run
run.finish()

関連 SDK

SDK用途インストール
Azure.ResourceManager.WeightsAndBiasesW&B インスタンス管理(この SDK)dotnet add package Azure.ResourceManager.WeightsAndBiases --prerelease
Azure.ResourceManager.MachineLearningAzure ML ワークスペースdotnet add package Azure.ResourceManager.MachineLearning

参考リンク

リソースURL
NuGet パッケージhttps://www.nuget.org/packages/Azure.ResourceManager.WeightsAndBiases
W&B ドキュメントhttps://docs.wandb.ai/
Azure Marketplacehttps://azuremarketplace.microsoft.com/marketplace/apps/wandb.wandb-pay-as-you-go
GitHub ソースhttps://github.com/Azure/azure-sdk-for-net/tree/main/sdk/weightsandbiases

使用するタイミング

このスキルは、概要に記載されているワークフローまたはアクションを実行する場合に適用できます。

制限事項

  • このスキルは、タスクが上記の説明にある範囲に明確に該当する場合にのみ使用してください。
  • 出力を、環境固有の検証、テスト、または専門家によるレビューの代わりとして扱わないでください。
  • 必要な入力、権限、安全上の境界、または成功基準が不足している場合は、作業を中断して確認を求めてください。

コメント