static async Task PerformMachineLearningOperations()

in sdk/dotnet/AzureML-Samples-CSharp/Program.cs [47:206]


    static async Task PerformMachineLearningOperations()
    {
        // First we construct our armClient
        ArmClient armClient = new ArmClient(new DefaultAzureCredential());
        SubscriptionResource subscription = await armClient.GetDefaultSubscriptionAsync();

        // Create ResourceGroup
        var resourceGroup = await ResourceGroupOperations.CreateResourceGroup(armClient, Constants.ResourceGroupName);
        Console.WriteLine($"resourceGroup is {resourceGroup.Data.Id}...");
        AzureLocation location = AzureLocation.WestUS2;

        // Create workspace, if not exists. Note, you need to have the dependent resources created by yourself.
        // Dependent resources: ApplicationInsights, KeyVault, Storage account
        MachineLearningWorkspaceResource workspace = await WorkspaceOperations.GetOrCreateWorkspaceAsync(resourceGroup, Constants.WorkspaceName, location, Constants.ApplicationInsightsId, Constants.StorageAccountId, Constants.KeyVaultId);
        Console.WriteLine($"Workspace created: {workspace.Id}...");

        //Get a list of Workspace within a specific resource group
        await WorkspaceOperations.ListAllWorkspaceAsync(resourceGroup);

        // Create AmlCompute
        var amlCompute = await AMLComputeOperations.GetOrCreateAMLComputeAsync(resourceGroup, Constants.WorkspaceName, Constants.AMLComputeName, location);
        await AMLComputeOperations.ListComputePropertiesAsync(resourceGroup, Constants.WorkspaceName, amlCompute.Data.Name);

        // Create AKSCompute
        var aksCompute = await AKSComputeOperations.GetOrCreateAKSComputeAsync(resourceGroup, Constants.WorkspaceName, Constants.AKSComputeName, location, Constants.ClusterFqdn);
        Console.WriteLine($"Aks Compute created: {aksCompute.Id}...");

        // Create CodeVersionResource
        var codeResource = await CodeOperations.GetOrCreateCodeVersionAsync(armClient, resourceGroup, Constants.WorkspaceName, Constants.CodeName, Constants.CodeVersion, Constants.CodeUri);
        Console.WriteLine($"CodeVersionResource created: {codeResource.Id}...");

        // Create EnvironmentVersionResource
        var environmentResource = await EnvironmentOperations.GetOrCreateEnvironmentVersionAsync(armClient, resourceGroup, Constants.WorkspaceName, Constants.EnvironmentName, Constants.EnvironmentVersion);
        Console.WriteLine($"EnvironmentVersionResource created: {environmentResource.Id}...");

        //// Create ComponentVersionResource
        var componentResource = await ComponentOperations.GetOrCreateComponentVersionAsync(armClient, resourceGroup, Constants.WorkspaceName, Constants.ComponentName, Constants.ComponentVersion, environmentResource.Id, codeArtifactId: codeResource.Id);
        Console.WriteLine($"ComponentVersionResource created: {componentResource.Id}...");

        //// Create ComponentVersionResource
        componentResource = await ComponentOperations.GetOrCreateComponentVersion_Pipeline_Async(armClient, resourceGroup, Constants.WorkspaceName, Constants.ComponentNameForPipeline, Constants.ComponentVersionForPipeline, environmentResource.Id, codeArtifactId: codeResource.Id);
        Console.WriteLine($"ComponentVersionResource created: {componentResource.Id}...");

        // Create DatasetVersionResource
        var dataResource = await DataOperations.GetOrCreateDataVersionAsync(armClient, resourceGroup, Constants.WorkspaceName, Constants.DataName, Constants.DataVersion);
        Console.WriteLine($"Dataset created: {dataResource.Id}...");

        await DataOperations.ListDataAsync(resourceGroup, Constants.WorkspaceName);
        await DataOperations.ListDatastoreAsync(resourceGroup, Constants.WorkspaceName);
        
        // Create ModelVersionResource
        var modelResource = await ModelOperations.GetOrCreateModelVersionAsync(armClient, resourceGroup, Constants.WorkspaceName, Constants.ModelName, Constants.ModelVersion, Constants.ModelUri);
        Console.WriteLine($"ModelVersionResource created: {modelResource.Id}...");

        //// Create OnlineEndpoint
        var OnlineEndpointResource = await ManagedOnlineEndpointOperations.GetOrCreateOnlineEndpointAsync(resourceGroup, Constants.WorkspaceName, Constants.OnlineEndpointName, location);
        Console.WriteLine($"OnlineEndpointResource created: {OnlineEndpointResource.Id}...");

        // Create OnlineDeployment
        var OnlineDeploymentResource = await ManagedOnlineEndpointOperations.GetOrCreateOnlineDeploymentAsync(resourceGroup, Constants.WorkspaceName, Constants.OnlineEndpointName, Constants.OnlineDeploymentName, modelResource.Id, environmentResource.Id, codeResource.Id, location);
        Console.WriteLine($"OnlineDeploymentResource created: {OnlineDeploymentResource.Id}...");

        // Create BatchEndpoint
        var BatchEndpointResource = await BatchEndpointOperations.GetOrCreateBatchEndpointAsync(resourceGroup, Constants.WorkspaceName, Constants.BatchEndpointName, location);
        Console.WriteLine($"BatchEndpointResource created: {BatchEndpointResource.Id}...");

        // Create BatchDeployment
        var BatchDeploymentResource = await BatchEndpointOperations.GetOrCreateBatchDeploymentAsync(resourceGroup, Constants.WorkspaceName, Constants.BatchEndpointName, Constants.BatchDeploymentName, modelResource.Id, environmentResource.Id, codeResource.Id, Constants.ComputeId, location);
        Console.WriteLine($"BatchDeploymentResource created: {BatchDeploymentResource.Id}...");

        // Submit a Command Job.
        string jobId = Common.RandomString(15, true);
        var commandJob = await CommandJobOperations.SubmitCommandJobAsync(resourceGroup, Constants.WorkspaceName, jobId, Constants.ExperimentName, environmentResource.Id, Constants.ComputeId);
        Console.WriteLine($"Experiment: {commandJob.Data.Properties.ExperimentName} returned status: {commandJob.Data.Properties.Status}...");

        commandJob = await Common.WaitForJobToFinishAsync(resourceGroup, Constants.WorkspaceName, jobId);
        if (commandJob.Data.Properties.Status == JobStatus.Completed)
        {
            Console.WriteLine($"CommandJob Experiment: {commandJob.Data.Properties.ExperimentName} ended with status: {commandJob.Data.Properties.Status}...");
        }

        // Submit a sweepJob Job.
        jobId = Common.RandomString(15, true);
        var sweepJob = await SweepJobOperations.SubmitSweepJobAsync(resourceGroup, Constants.WorkspaceName, jobId, Constants.SweepJobExperimentName, environmentResource.Id, codeResource.Id, Constants.ComputeId);
        Console.WriteLine($"Experiment: {sweepJob.Data.Properties.ExperimentName} returned status: {sweepJob.Data.Properties.Status}...");

        sweepJob = await Common.WaitForJobToFinishAsync(resourceGroup, Constants.WorkspaceName, jobId);
        if (sweepJob.Data.Properties.Status == JobStatus.Completed)
        {
            Console.WriteLine($"SweepJob Experiment: {sweepJob.Data.Properties.ExperimentName} ended with status: {sweepJob.Data.Properties.Status}...");
        }

        // Submit a pipelineJob Job.
        jobId = Common.RandomString(15, true);
        var pipelineJob = await PipelineJobOperations.SubmitPipelineJobAsync(resourceGroup, Constants.WorkspaceName, jobId, Constants.PipelineJobExperimentName, Constants.ComputeId, componentResource.Id, Constants.Datastore);
        Console.WriteLine($"PipelineJob Experiment: {pipelineJob.Data.Properties.ExperimentName} returned status: {pipelineJob.Data.Properties.Status}...");

        pipelineJob = await Common.WaitForJobToFinishAsync(resourceGroup, Constants.WorkspaceName, jobId);
        if (pipelineJob.Data.Properties.Status == JobStatus.Completed)
        {
            Console.WriteLine($"PipelineJob Experiment: {pipelineJob.Data.Properties.ExperimentName} ended with status: {pipelineJob.Data.Properties.Status}...");
        }

        jobId = Common.RandomString(15, true);
        string uniqueName = Guid.NewGuid().ToString("n").Substring(0, 6);
        // Submit an AutoML TextNer Job
        MachineLearningJobResource autoMLTextNerJob = await AutoMLJobOperations.SubmitAutoMLTextNerAsync(resourceGroup, Constants.WorkspaceName, jobId, "AutoMLTextNerJob" + uniqueName, environmentResource.Id, Constants.ComputeId);
        Console.WriteLine($"Experiment: {autoMLTextNerJob.Data.Properties.ExperimentName} returned status: {autoMLTextNerJob.Data.Properties.Status}...");

        autoMLTextNerJob = await Common.WaitForJobToFinishAsync(resourceGroup, Constants.WorkspaceName, jobId);
        if (autoMLTextNerJob.Data.Properties.Status == JobStatus.Completed)
        {
            Console.WriteLine($"AutoMLTextNerJob Experiment: {autoMLTextNerJob.Data.Properties.ExperimentName} ended with status: {autoMLTextNerJob.Data.Properties.Status}...");
        }

        jobId = Common.RandomString(15, true);
        // Submit an AutoML Forecast Job
        MachineLearningJobResource autoMLForecastJob = await AutoMLJobOperations.SubmitAutoMLForecastAsync(resourceGroup, Constants.WorkspaceName, jobId, "AutoMLForecastingJob" + uniqueName, environmentResource.Id, Constants.ComputeId);
        Console.WriteLine($"Experiment: {autoMLForecastJob.Data.Properties.ExperimentName} returned status: {autoMLForecastJob.Data.Properties.Status}...");

        autoMLForecastJob = await Common.WaitForJobToFinishAsync(resourceGroup, Constants.WorkspaceName, jobId);
        if (autoMLForecastJob.Data.Properties.Status == JobStatus.Completed)
        {
            Console.WriteLine($"AutoMLForecastJob Experiment: {autoMLForecastJob.Data.Properties.ExperimentName} ended with status: {autoMLForecastJob.Data.Properties.Status}...");
        }

        jobId = Common.RandomString(15, true);
        // Submit an AutoML TextClassification job
        MachineLearningJobResource autoMLTextClassificationJob = await AutoMLJobOperations.SubmitAutoMLTextClassificationAsync(resourceGroup, Constants.WorkspaceName, jobId, "AutoMLTextClassificationJob" + uniqueName, environmentResource.Id, Constants.ComputeId);
        Console.WriteLine($"Experiment: {autoMLTextClassificationJob.Data.Properties.ExperimentName} returned status: {autoMLTextClassificationJob.Data.Properties.Status}...");

        // autoMLTextClassificationJob = await WaitForJobToFinishAsync(resourceGroup, Constants.WorkspaceName, jobId);
        if (autoMLTextClassificationJob.Data.Properties.Status == JobStatus.Completed)
        {
            Console.WriteLine($"AutoMLForecastJob Experiment: {autoMLTextClassificationJob.Data.Properties.ExperimentName} ended with status: {autoMLTextClassificationJob.Data.Properties.Status}...");
        }

        jobId = Common.RandomString(15, true);
        // Submit an AutoML ImageClassification job
        var autoMLImageClassificationJob = await AutoMLJobOperations.SubmitAutoMLImageClassificationAsync(resourceGroup, Constants.WorkspaceName, jobId, "AutoMLImageClassificationJob" + uniqueName, environmentResource.Id, Constants.ComputeId);
        Console.WriteLine($"Experiment: {autoMLImageClassificationJob.Data.Properties.ExperimentName} returned status: {autoMLImageClassificationJob.Data.Properties.Status}...");

        // autoMLImageClassificationJob = await WaitForJobToFinishAsync(resourceGroup, Constants.WorkspaceName, jobId);
        if (autoMLImageClassificationJob.Data.Properties.Status == JobStatus.Completed)
        {
            Console.WriteLine($"AutoMLImageClassificationJob Experiment: {autoMLImageClassificationJob.Data.Properties.ExperimentName} ended with status: {autoMLImageClassificationJob.Data.Properties.Status}...");
        }

        jobId = Common.RandomString(15, true);
        // Submit an AutoML ImageObjectDetection job
        var autoMLImageObjectDetectionJob = await AutoMLJobOperations.SubmitAutoMLImageObjectDetectionAsync(resourceGroup, Constants.WorkspaceName, jobId, "AutoMLImageObjectDetectionJob" + uniqueName, environmentId: environmentResource.Id, computeId: Constants.ComputeId);
        Console.WriteLine($"Experiment: {autoMLImageObjectDetectionJob.Data.Properties.ExperimentName} returned status: {autoMLImageObjectDetectionJob.Data.Properties.Status}...");

        autoMLImageObjectDetectionJob = await Common.WaitForJobToFinishAsync(resourceGroup, Constants.WorkspaceName, jobId);
        if (autoMLImageObjectDetectionJob.Data.Properties.Status == JobStatus.Completed)
        {
            Console.WriteLine($"AutoMLImageObjectDetectionJob Experiment: {autoMLImageObjectDetectionJob.Data.Properties.ExperimentName} ended with status: {autoMLImageObjectDetectionJob.Data.Properties.Status}...");
        }
        
    }