Esempio n. 1
0
def get_conda_depencies():
    conda_dep = CondaDependencies()
    conda_dep.set_python_version("3.6.2")

    with open('compute_pip_requirements.txt') as f:
        for requirement in f:
            conda_dep.add_pip_package(str(requirement))

    with open('compute_conda_requirements.txt') as f:
        for requirement in f:
            conda_dep.add_conda_package(str(requirement))

    return conda_dep
# ***************** 1. CREATE PythonScriptStep1: DATA PREPARATION **************************

# ...which needs a RunConfiguration object that specifies the right Conda/Pip dependencies. So we proceed as follows in 3 steps:

# 1.A) Create PipelineData Object datapreparation_output
from azureml.pipeline.core import PipelineData
is_directory = False  # it's a file where we save the prepared dataframe
default_datastore = ws.get_default_datastore()
datapreparation_output = PipelineData('datapreparation_output',
                                      datastore=default_datastore,
                                      is_directory=is_directory)

# 1.B) Create the dependency object with mlextend package https://docs.microsoft.com/en-us/python/api/azureml-core/azureml.core.conda_dependencies.condadependencies?view=azure-ml-py:
from azureml.core.environment import CondaDependencies
conda_dep_prep = CondaDependencies()
conda_dep_prep.add_pip_package(
    "mlxtend==0.17.2")  # or conda_dep.add_conda_package("mlxtend==0.17.2")

# 1.C) Create the RunConfiguration object:
from azureml.core import RunConfiguration
run_config_prep = RunConfiguration(conda_dependencies=conda_dep_prep)

# 1.D) Create the PythonScriptStep
from azureml.pipeline.steps import PythonScriptStep
data_preparation_step = PythonScriptStep(
    name="1: Data preparation",
    script_name="1-data_preparation.py",
    compute_target=compute_target,
    runconfig=run_config_prep,
    arguments=[
        "--remoteDataFolder", remote_data_folder, "--localDataFolder",
        local_data_to_download_folder, "--datapreparation_output",
#création du path complet dans le blob storage
path_model_datastore = "azureml/" + step1_runid + "/outputs/"
#download en local du modele
def_data_store.download(target_path='datastore', prefix=path_model_datastore)
#chargement dans la workspace a partir du modele download en local
model = Model.register(workspace=ws,
                       model_path='datastore/' + path_model_datastore +
                       model_pklname + '.pkl',
                       model_name=model_basename)

#Create environment file
from azureml.core.conda_dependencies import CondaDependencies

myenv = CondaDependencies()
myenv.add_conda_package("scikit-learn")
myenv.add_pip_package("azureml-defaults")
myenv.add_conda_package("numpy")
myenv.add_conda_package("pandas")

# import os
# old_wd = os.getcwd()
# os.chdir(old_wd+"/source")

with open("myenv.yml", "w") as f:
    f.write(myenv.serialize_to_string())

#Review the content of the myenv.yml file:
with open("myenv.yml", "r") as f:
    print(f.read())

# register image
# In[5]:

get_ipython().run_cell_magic(
    'writefile', 'summarizer_service.py',
    '\nimport re\nimport nltk\nimport unicodedata\nfrom gensim.summarization import summarize, keywords\n\ndef clean_and_parse_document(document):\n    if isinstance(document, str):\n        document = document\n    elif isinstance(document, unicode):\n        return unicodedata.normalize(\'NFKD\', document).encode(\'ascii\', \'ignore\')\n    else:\n        raise ValueError("Document is not string or unicode.")\n    document = document.strip()\n    sentences = nltk.sent_tokenize(document)\n    sentences = [sentence.strip() for sentence in sentences]\n    return sentences\n\ndef summarize_text(text, summary_ratio=None, word_count=30):\n    sentences = clean_and_parse_document(text)\n    cleaned_text = \' \'.join(sentences)\n    summary = summarize(cleaned_text, split=True, ratio=summary_ratio, word_count=word_count)\n    return summary \n\ndef init():  \n    nltk.download(\'all\')\n    return\n\ndef run(input_str):\n    try:\n        return summarize_text(input_str)\n    except Exception as e:\n        return (str(e))'
)

# In[7]:

from azureml.core import Environment
from azureml.core.environment import CondaDependencies

myenv = Environment(name="myenv")
conda_dep = CondaDependencies()
conda_dep.add_pip_package("gensim")
conda_dep.add_pip_package("nltk")
myenv.python.conda_dependencies = conda_dep

# In[8]:

myenv.register(workspace=ws)

# In[9]:

from azureml.core.model import InferenceConfig
from azureml.core.webservice import AciWebservice

inference_config = InferenceConfig(entry_script='summarizer_service.py',
                                   environment=myenv)
aci_config = AciWebservice.deploy_configuration(cpu_cores=1,
Esempio n. 5
0
pickle.dump(model, open(filename, 'wb'))

# register the dummy model
ws = Workspace.from_config()
registration_params = {
    'model_path': "dummy.pkl",
    'model_name': "dummy-model",
    'description': "mock test deployment",
    'workspace': ws
}
model = register_model(**registration_params)

myenv = Environment(name='my_env')
myenv.get(workspace=ws, name='ls-ds-ml-env')
conda_dep = CondaDependencies()
conda_dep.add_pip_package("azureml-defaults==1.3.0")
conda_dep.add_pip_package("joblib")
conda_dep.add_pip_package("json")
myenv.python.conda_dependencies = conda_dep
inference_config = InferenceConfig(entry_script="src/dummy_score.py",
                                   environment=myenv)
aci_config = AciWebservice.deploy_configuration(cpu_cores=1, memory_gb=1)

service_name = 'dummy-service'
try:
    service = Model.deploy(ws,
                           service_name, [model],
                           inference_config,
                           deployment_config=aci_config)
    service.wait_for_deployment(True)
    logs = service.get_logs()