Search code examples
pythonmachine-learningazure-machine-learning-serviceazureml-python-sdkazuremlsdk

pass extra file argument to azureml inference config class


Currently crating inf_conf from entry script (score.py) and environment however, I have a json file that i also want to include in this.

Is there a way i can do this?

I have seen source_directory argument but json file is not in the same folder as score.py file. https://learn.microsoft.com/en-us/python/api/azureml-core/azureml.core.model.inferenceconfig?view=azure-ml-py

inf_conf = InferenceConfig(entry_script="score.py",environment=environment)

Solution

  • Currently, it is required that all the necessary files and objects related to the endpoint be placed in the source_directory:

    inference_config = InferenceConfig(
        environment=env,
        source_directory='./endpoint_source',
        entry_script="./score.py",
    )
    

    One workaround is to upload your JSON file somewhere else, e.g., on the Blob Storage, and download it in the init() function of your entry script. For example:

    score.py:

    import requests
    
    
    def init():
        """
        This function is called when the container is initialized/started,
        typically after create/update of the deployment.
        """
        global model
        
        # things related to initializing the model
        model = ...  
        
        # download your JSON file
        json_file_rul = 'https://sampleazurestorage.blob.core.windows.net/data/my-configs.json'
        response = requests.get(json_file_rul)
        open('my_configs.json', "wb").write(response.content)