Skip to content

Deployment models on Google AI Platform with ML_DSL

Anna Safonova edited this page Jun 29, 2020 · 1 revision

There are two ways to fit a model on Google AI Platform: using API or jupyter magic functions.

Using API

from com.griddynamics.dsl.ml.executors.executors import AIPlatformJobExecutor
from com.griddynamics.dsl.ml.settings.profiles import AIDeployProfile
from com.griddynamics.dsl.ml.jobs.builder import JobBuilder
from com.griddynamics.dsl.ml.sessions import SessionFactory
from com.griddynamics.dsl.ml.settings.description import Platform
from com.griddynamics.dsl.ml.settings.arguments import Arguments

define Profile for job

profile = DeployAIProfile(bucket='bucket', cluster='cluster', region='global', job_prefix='deploy',
                          root_path='demo/deploy', project='project',
                          ai_region='us-central1', job_async=False,
                          runtime_version='1.15', python_version='3.7',
                          version_name='v1', is_new_model=True,
                          path_to_saved_model='gs://ai4ops/model_path/')

set python script

script_name = 'train_script.py'
model_name = 'demo_model'

define arguments for training job

output_path = 'gs://test_bucket/models'
args_dct = {
            '--framework': 'TENSORFLOW'
           }

Set arguments of job as Argument class instance

arguments = Arguments()
arguments.set_args(**args_dct)

Define ModelBuilder class instance

m_builder = ModelBuilder()
m_builder = m_builder.name(model)
                     .files_root(profile.root_path)
deployment_artifacts = []
model = m_builder.artifacts(deployment_artifacts)
                 .is_tuning(False)
                 .build()

AIJobBuilder instance

ai_job_builder = AIJobBuilder()
ai_job_builder = ai_job_builder.model(model)
                               .package_dst(profile.package_dst)
if args[0].package_src is not None:
    ai_job_builder = ai_job_builder.package_src(args[0].package_src)
ai_job = ai_job_builder.deploy_input(args_dct).build()

Session instance for submitting train job to AI Platform

session = SessionFactory(platform=Platform.GCP)
                        .build_session(job_bucket=profile.bucket,
                                       job_region=profile.region,                                                                             
                                       cluster=profile.cluster,
                                       job_project_id=profile.project,                                                                    
                                       ml_region=profile.ai_region)                                                                   

Executor instance for submitting deployment job to AI Platform

executor = AIPlatformJobExecutor(session, ai_job)
if profile.is_new_model:
    response = executor.submit_deploy_model_job(profile.version_name,     
                                                 create_new_model=True)
else:
     response = executor.submit_deploy_model_job(profile.version_name)

Using Magic Functions

from com.griddynamics.dsl.ml.settings.profiles import AIDeployProfile
from com.griddynamics.dsl.ml.settings.description import Platform

define Profile for job and platform

platform = Platform.GCP
profile = DeployAIProfile(bucket='ai4ops', cluster='ai4ops', region='global', job_prefix='deploy',
                          root_path='demo/deploy', project='gd-gcp-techlead-experiments',
                          ai_region='us-central1', job_async=False,
                          runtime_version='1.15', python_version='3.7',
                          version_name='v1', is_new_model=True,
                          path_to_saved_model='gs://ai4ops/mldsl/train_1592767608/saved_model/')
profile.arguments = {
    "framework": "TENSORFLOW"
    }
DeployAIProfile.set('AIProfile', profile)

Deployment using magic function %py_deploy:

%py_deploy -n model_name -p AIProfile  -pm $platform
Clone this wiki locally