1. Periodic Cleanup of AI Training Artifacts


    To perform periodic cleanup of AI training artifacts, we would ideally select resources that help manage artifacts within a machine learning workflow. One common scenario is the use of model artifacts in a machine learning project, such as datasets, trained models, or any intermediate files that were created during the training process.

    For this example, we'll pretend we have a machine learning project in Azure using Azure Machine Learning Services, where we want to clear old training artifacts that are no longer needed. In Azure, we could leverage the Machine Learning Services' DataVersion resource, which could be used to version control datasets within Azure Machine Learning Services workspace.

    Unfortunately, Pulumi does not provide a direct way to perform periodic cleanup as a standalone resource, but we can model our infrastructure using Pulumi to construct a system that includes the machine learning workspace, datasets, and then utilizes Azure functions to perform the cleanup on a schedule.

    Below is a Pulumi Python program that sets up an Azure Machine Learning workspace and an example of how you could add a dataset using the DataVersion resource. The periodic cleanup logic would have to be implemented within an Azure Function or other automation solutions in Azure, as Pulumi itself orchestrates infrastructure and does not directly execute operational tasks.

    Please note that this code doesn't include the Azure Function or the actual cleanup logic. It only sets up the workspace and dataset which you could then manage or clean up using other Azure services or manual intervention.

    import pulumi import pulumi_azure_native as azure_native # Create an Azure Resource Group resource_group = azure_native.resources.ResourceGroup('ai_trainings_resource_group') # Create an Azure Machine Learning Workspace ml_workspace = azure_native.machinelearningservices.Workspace( 'ml_workspace', resource_group_name=resource_group.name, location=resource_group.location, identity=azure_native.machinelearningservices.IdentityArgs( type="SystemAssigned" ), sku=azure_native.machinelearningservices.SkuArgs( name="Basic" ), workspace_name='my_ml_workspace' ) # Create a Machine Learning Dataset Version (DataVersion) ml_dataset_version = azure_native.machinelearningservices.DataVersion( 'ml_dataset_version', resource_group_name=resource_group.name, workspace_name=ml_workspace.name, version="1", name='my_dataset', data_version_base_properties={ 'description': 'A versioned dataset for training.', # Here you would specify the location or reference to your dataset. } ) # Export the Azure Machine Learning Workspace name pulumi.export('workspace_name', ml_workspace.name) # For the periodic cleanup, you would need to set up an Azure Function that triggers the cleanup process. # The function would execute a script or a set of commands to remove the unnecessary artifacts. # It could be triggered on a schedule (e.g., once a day, once a week) using an Azure Timer Trigger.

    In this program, we have defined a resource group and an Azure Machine Learning workspace, set up a basic SKU (as a cost-effective option), and system-assigned managed identity for the workspace. We then create a DataVersion to show how you might begin to version a specific dataset.

    To create a full system that also performs the cleanup:

    1. Write additional code for an Azure Function in your preferred language (Python, C#, etc.), integrating with the Azure Machine Learning SDK to perform the cleanup task.
    2. Set up an Azure Logic App or Azure Automation Account that runs on a schedule, triggering the function.
    3. Create infrastructure for this logic using Pulumi, similar to above, to deploy the Azure Function and set up triggers.

    Refer to Azure Machine Learning Datasets and Azure Functions references for more details on how they can be used with Pulumi to manage your machine learning project infrastructure.