|
Add this skill
npx mdskills install sickn33/azure-mgmt-weightsandbiases-dotnetWell-structured Azure SDK documentation with clear examples and workflow coverage
1---2name: azure-mgmt-weightsandbiases-dotnet3description: |4 Azure Weights & Biases SDK for .NET. ML experiment tracking and model management via Azure Marketplace. Use for creating W&B instances, managing SSO, marketplace integration, and ML observability. Triggers: "Weights and Biases", "W&B", "WeightsAndBiases", "ML experiment tracking", "model registry", "experiment management", "wandb".5package: Azure.ResourceManager.WeightsAndBiases6---78# Azure.ResourceManager.WeightsAndBiases (.NET)910Azure Resource Manager SDK for deploying and managing Weights & Biases ML experiment tracking instances via Azure Marketplace.1112## Installation1314```bash15dotnet add package Azure.ResourceManager.WeightsAndBiases --prerelease16dotnet add package Azure.Identity17```1819**Current Version**: v1.0.0-beta.1 (preview)20**API Version**: 2024-09-18-preview2122## Environment Variables2324```bash25AZURE_SUBSCRIPTION_ID=<your-subscription-id>26AZURE_RESOURCE_GROUP=<your-resource-group>27AZURE_WANDB_INSTANCE_NAME=<your-wandb-instance>28```2930## Authentication3132```csharp33using Azure.Identity;34using Azure.ResourceManager;35using Azure.ResourceManager.WeightsAndBiases;3637ArmClient client = new ArmClient(new DefaultAzureCredential());38```3940## Resource Hierarchy4142```43Subscription44└── ResourceGroup45 └── WeightsAndBiasesInstance # W&B deployment from Azure Marketplace46 ├── Properties47 │ ├── Marketplace # Offer details, plan, publisher48 │ ├── User # Admin user info49 │ ├── PartnerProperties # W&B-specific config (region, subdomain)50 │ └── SingleSignOnPropertiesV2 # Entra ID SSO configuration51 └── Identity # Managed identity (optional)52```5354## Core Workflows5556### 1. Create Weights & Biases Instance5758```csharp59using Azure.ResourceManager.WeightsAndBiases;60using Azure.ResourceManager.WeightsAndBiases.Models;6162ResourceGroupResource resourceGroup = await client63 .GetDefaultSubscriptionAsync()64 .Result65 .GetResourceGroupAsync("my-resource-group");6667WeightsAndBiasesInstanceCollection instances = resourceGroup.GetWeightsAndBiasesInstances();6869WeightsAndBiasesInstanceData data = new WeightsAndBiasesInstanceData(AzureLocation.EastUS)70{71 Properties = new WeightsAndBiasesInstanceProperties72 {73 // Marketplace configuration74 Marketplace = new WeightsAndBiasesMarketplaceDetails75 {76 SubscriptionId = "<marketplace-subscription-id>",77 OfferDetails = new WeightsAndBiasesOfferDetails78 {79 PublisherId = "wandb",80 OfferId = "wandb-pay-as-you-go",81 PlanId = "wandb-payg",82 PlanName = "Pay As You Go",83 TermId = "monthly",84 TermUnit = "P1M"85 }86 },87 // Admin user88 User = new WeightsAndBiasesUserDetails89 {90 FirstName = "Admin",91 LastName = "User",92 EmailAddress = "admin@example.com",93 Upn = "admin@example.com"94 },95 // W&B-specific configuration96 PartnerProperties = new WeightsAndBiasesPartnerProperties97 {98 Region = WeightsAndBiasesRegion.EastUS,99 Subdomain = "my-company-wandb"100 }101 },102 // Optional: Enable managed identity103 Identity = new ManagedServiceIdentity(ManagedServiceIdentityType.SystemAssigned)104};105106ArmOperation<WeightsAndBiasesInstanceResource> operation = await instances107 .CreateOrUpdateAsync(WaitUntil.Completed, "my-wandb-instance", data);108109WeightsAndBiasesInstanceResource instance = operation.Value;110111Console.WriteLine($"W&B Instance created: {instance.Data.Name}");112Console.WriteLine($"Provisioning state: {instance.Data.Properties.ProvisioningState}");113```114115### 2. Get Existing Instance116117```csharp118WeightsAndBiasesInstanceResource instance = await resourceGroup119 .GetWeightsAndBiasesInstanceAsync("my-wandb-instance");120121Console.WriteLine($"Instance: {instance.Data.Name}");122Console.WriteLine($"Location: {instance.Data.Location}");123Console.WriteLine($"State: {instance.Data.Properties.ProvisioningState}");124125if (instance.Data.Properties.PartnerProperties != null)126{127 Console.WriteLine($"Region: {instance.Data.Properties.PartnerProperties.Region}");128 Console.WriteLine($"Subdomain: {instance.Data.Properties.PartnerProperties.Subdomain}");129}130```131132### 3. List All Instances133134```csharp135// List in resource group136await foreach (WeightsAndBiasesInstanceResource instance in137 resourceGroup.GetWeightsAndBiasesInstances())138{139 Console.WriteLine($"Instance: {instance.Data.Name}");140 Console.WriteLine($" Location: {instance.Data.Location}");141 Console.WriteLine($" State: {instance.Data.Properties.ProvisioningState}");142}143144// List in subscription145SubscriptionResource subscription = await client.GetDefaultSubscriptionAsync();146await foreach (WeightsAndBiasesInstanceResource instance in147 subscription.GetWeightsAndBiasesInstancesAsync())148{149 Console.WriteLine($"{instance.Data.Name} in {instance.Id.ResourceGroupName}");150}151```152153### 4. Configure Single Sign-On (SSO)154155```csharp156WeightsAndBiasesInstanceResource instance = await resourceGroup157 .GetWeightsAndBiasesInstanceAsync("my-wandb-instance");158159// Update with SSO configuration160WeightsAndBiasesInstanceData updateData = instance.Data;161162updateData.Properties.SingleSignOnPropertiesV2 = new WeightsAndBiasSingleSignOnPropertiesV2163{164 Type = WeightsAndBiasSingleSignOnType.Saml,165 State = WeightsAndBiasSingleSignOnState.Enable,166 EnterpriseAppId = "<entra-app-id>",167 AadDomains = { "example.com", "contoso.com" }168};169170ArmOperation<WeightsAndBiasesInstanceResource> operation = await resourceGroup171 .GetWeightsAndBiasesInstances()172 .CreateOrUpdateAsync(WaitUntil.Completed, "my-wandb-instance", updateData);173```174175### 5. Update Instance176177```csharp178WeightsAndBiasesInstanceResource instance = await resourceGroup179 .GetWeightsAndBiasesInstanceAsync("my-wandb-instance");180181// Update tags182WeightsAndBiasesInstancePatch patch = new WeightsAndBiasesInstancePatch183{184 Tags =185 {186 { "environment", "production" },187 { "team", "ml-platform" },188 { "costCenter", "CC-ML-001" }189 }190};191192instance = await instance.UpdateAsync(patch);193Console.WriteLine($"Updated instance: {instance.Data.Name}");194```195196### 6. Delete Instance197198```csharp199WeightsAndBiasesInstanceResource instance = await resourceGroup200 .GetWeightsAndBiasesInstanceAsync("my-wandb-instance");201202await instance.DeleteAsync(WaitUntil.Completed);203Console.WriteLine("Instance deleted");204```205206### 7. Check Resource Name Availability207208```csharp209// Check if name is available before creating210// (Implement via direct ARM call if SDK doesn't expose this)211try212{213 await resourceGroup.GetWeightsAndBiasesInstanceAsync("desired-name");214 Console.WriteLine("Name is already taken");215}216catch (RequestFailedException ex) when (ex.Status == 404)217{218 Console.WriteLine("Name is available");219}220```221222## Key Types Reference223224| Type | Purpose |225|------|---------|226| `WeightsAndBiasesInstanceResource` | W&B instance resource |227| `WeightsAndBiasesInstanceData` | Instance configuration data |228| `WeightsAndBiasesInstanceCollection` | Collection of instances |229| `WeightsAndBiasesInstanceProperties` | Instance properties |230| `WeightsAndBiasesMarketplaceDetails` | Marketplace subscription info |231| `WeightsAndBiasesOfferDetails` | Marketplace offer details |232| `WeightsAndBiasesUserDetails` | Admin user information |233| `WeightsAndBiasesPartnerProperties` | W&B-specific configuration |234| `WeightsAndBiasSingleSignOnPropertiesV2` | SSO configuration |235| `WeightsAndBiasesInstancePatch` | Patch for updates |236| `WeightsAndBiasesRegion` | Supported regions enum |237238## Available Regions239240| Region Enum | Azure Region |241|-------------|--------------|242| `WeightsAndBiasesRegion.EastUS` | East US |243| `WeightsAndBiasesRegion.CentralUS` | Central US |244| `WeightsAndBiasesRegion.WestUS` | West US |245| `WeightsAndBiasesRegion.WestEurope` | West Europe |246| `WeightsAndBiasesRegion.JapanEast` | Japan East |247| `WeightsAndBiasesRegion.KoreaCentral` | Korea Central |248249## Marketplace Offer Details250251For Azure Marketplace integration:252253| Property | Value |254|----------|-------|255| Publisher ID | `wandb` |256| Offer ID | `wandb-pay-as-you-go` |257| Plan ID | `wandb-payg` (Pay As You Go) |258259## Best Practices2602611. **Use DefaultAzureCredential** — Supports multiple auth methods automatically2622. **Enable managed identity** — For secure access to other Azure resources2633. **Configure SSO** — Enable Entra ID SSO for enterprise security2644. **Tag resources** — Use tags for cost tracking and organization2655. **Check provisioning state** — Wait for `Succeeded` before using instance2666. **Use appropriate region** — Choose region closest to your compute2677. **Monitor with Azure** — Use Azure Monitor for resource health268269## Error Handling270271```csharp272using Azure;273274try275{276 ArmOperation<WeightsAndBiasesInstanceResource> operation = await instances277 .CreateOrUpdateAsync(WaitUntil.Completed, "my-wandb", data);278}279catch (RequestFailedException ex) when (ex.Status == 409)280{281 Console.WriteLine("Instance already exists or name conflict");282}283catch (RequestFailedException ex) when (ex.Status == 400)284{285 Console.WriteLine($"Invalid configuration: {ex.Message}");286}287catch (RequestFailedException ex)288{289 Console.WriteLine($"Azure error: {ex.Status} - {ex.Message}");290}291```292293## Integration with W&B SDK294295After creating the Azure resource, use the W&B Python SDK for experiment tracking:296297```python298# Install: pip install wandb299import wandb300301# Login with your W&B API key from the Azure-deployed instance302wandb.login(host="https://my-company-wandb.wandb.ai")303304# Initialize a run305run = wandb.init(project="my-ml-project")306307# Log metrics308wandb.log({"accuracy": 0.95, "loss": 0.05})309310# Finish run311run.finish()312```313314## Related SDKs315316| SDK | Purpose | Install |317|-----|---------|---------|318| `Azure.ResourceManager.WeightsAndBiases` | W&B instance management (this SDK) | `dotnet add package Azure.ResourceManager.WeightsAndBiases --prerelease` |319| `Azure.ResourceManager.MachineLearning` | Azure ML workspaces | `dotnet add package Azure.ResourceManager.MachineLearning` |320321## Reference Links322323| Resource | URL |324|----------|-----|325| NuGet Package | https://www.nuget.org/packages/Azure.ResourceManager.WeightsAndBiases |326| W&B Documentation | https://docs.wandb.ai/ |327| Azure Marketplace | https://azuremarketplace.microsoft.com/marketplace/apps/wandb.wandb-pay-as-you-go |328| GitHub Source | https://github.com/Azure/azure-sdk-for-net/tree/main/sdk/weightsandbiases |329
Full transparency — inspect the skill content before installing.