1. Persisting Trained Models in Azure Blob Storage


    Persisting trained models in Azure Blob Storage involves saving the output of your machine learning training processes, which are typically serialized files such as .h5 (for Keras/TensorFlow), .pt or .pth (for PyTorch), or .pkl (Python pickled objects), into Azure's cloud storage service, Blob Storage. This provides a durable and highly available location to store your models that can be easily accessed or deployed to production environments or further used for analysis or retraining.

    To achieve this using Pulumi, we need to create an Azure storage account and a container inside it to store our blobs (the serialized models). Then, we will persist trained models using the Blob resource.

    Here's a step-by-step Python program that demonstrates how to do this:

    1. Import necessary packages.
    2. Create an Azure resource group.
    3. Create a storage account.
    4. Create a blob container.
    5. (Optional) Upload a model file as a blob.

    Let's look at the code:

    import pulumi from pulumi_azure import core, storage import pulumi_azure_native as azure_native # Step 1: Create a resource group where all resources will be deployed. resource_group = core.ResourceGroup('resource_group') # Step 2: Create a new storage account, here we're using 'StorageV2' kind for general-purpose v2 account. # Adjust the parameters according to your requirements. account = storage.Account('storage_account', resource_group_name=resource_group.name, account_replication_type="LRS", # Locally redundant storage account_tier="Standard") # Step 3: Create a blob container where you can upload your models. container = storage.Container('model_container', account_name=account.name, resource_group_name=resource_group.name, container_access_type="private") # Access type can be private, blob or container. # Step 4: (Optional) If you have a model file you wish to upload, you can create a Blob resource to do so. # For the purpose of demonstrating, let's assume you have a model.pkl file in the root of your project directory. # Instead of a local path, you might use a FileAsset or StringAsset depending on your use-case. model_blob = storage.Blob('model_blob', resource_group_name=resource_group.name, account_name=account.name, container_name=container.name, source=pulumi.FileAsset('model.pkl'), type="Block") # Export the primary blob endpoint to access your models. primary_blob_endpoint = account.primary_blob_endpoint.apply(lambda endpoint: f"{endpoint}/{container.name}") pulumi.export('primary_blob_endpoint', primary_blob_endpoint)

    In the program above:

    • We begin by creating an Azure resource group to host all the resources.
    • Next, we create an Azure Storage Account. Note that we are setting the account_replication_type to "LRS" for locally redundant storage, which replicates your data within a single storage scale unit. The account_tier is set to "Standard", which is a common choice for blob storage.
    • We create a container within the storage account where our blobs, the trained models, will reside.
    • We then demonstrate how to create a Blob resource by uploading a dummy model file model.pkl as a block blob, which is suitable for storing binary data.
    • Finally, we export the primary endpoint of the blob container, which you can use to access the stored models.

    By running this Pulumi program, it will provision the necessary Azure infrastructure, making it ready for you to upload your trained models. You'll need to replace 'model.pkl' with the actual path to your model file, or automate the process of uploading your actual trained models as part of your machine learning pipeline.

    Remember to install Pulumi and configure your Azure credentials before running this program.