Exemple #1
0
 async def serve(self, q: Q) -> None:
     copy_expando(q.args, q.client)
     if not q.client.client_initialized:
         await self._initialize_client(q)
         q.client.client_initialized = True
     elif q.args.input_model:
         await self._load_model(q)
         await self._process_text(q)
         await self._update_all_cards(q)
     elif q.args.analyze_text:
         await self._process_text(q)
         await self._update_all_cards(q)
     elif q.args.select_ents:
         await self._update_entity_cards(q)
     elif any([
             q.args.split_sentences, q.args.fine_grained, q.args.add_lemma,
             q.args.collapse_punct, q.args.collapse_phrases, q.args.compact,
             q.args.color, q.args.bg, q.args.font, q.args.offset_x,
             q.args.arrow_stroke, q.args.arrow_width, q.args.arrow_spacing,
             q.args.word_spacing, q.args.word_distance
     ]):
         await self._update_dependency_cards(q)
     elif q.args.compare_texts:
         await self._process_text(q)
         await self._update_similarity_card(q)
Exemple #2
0
async def serve(q: Q):
    await init(q)
    if q.args.generate_text:
        copy_expando(q.args, q.app)
        await show_results(q)
    else:
        await get_inputs(q)
    await q.page.save()
Exemple #3
0
async def serve(q: Q):
    if q.args.train:
        # train WaveML Model using H2O-3 AutoML
        copy_expando(q.args, q.client)
        q.client.wave_model = build_model(
            train_df=q.client.train_df,
            target_column='target',
            model_type=ModelType.H2O3,
            _h2o3_max_runtime_secs=30,
            _h2o3_nfolds=2,
            _h2o3_include_algos=[q.client.algo]
        )
        model_id = q.client.wave_model.model.model_id
        accuracy = round(100 - q.client.wave_model.model.mean_per_class_error() * 100, 2)

        # show training details and prediction option
        q.page['example'].items[1].choice_group.value = q.client.algo
        q.page['example'].items[2].buttons.items[1].button.disabled = False
        q.page['example'].items[3].message_bar.type = 'success'
        q.page['example'].items[3].message_bar.text = 'Training successfully completed!'
        q.page['example'].items[4].text.content = f'''**H2O AutoML model id:** {model_id} <br />
            **Accuracy:** {accuracy}%'''
        q.page['example'].items[5].text.content = ''
    elif q.args.predict:
        # predict on test data
        preds = q.client.wave_model.predict(test_df=q.client.test_df)

        # show predictions
        q.page['example'].items[3].message_bar.text = 'Prediction successfully completed!'
        q.page['example'].items[5].text.content = f'''**Example predictions:** <br />
            {preds[0]} <br /> {preds[1]} <br /> {preds[2]}'''
    else:
        # prepare sample train and test dataframes
        data = load_wine(as_frame=True)['frame']
        q.client.train_df, q.client.test_df = train_test_split(data, train_size=0.8)

        # algos
        algo_choices = [ui.choice(x, x) for x in ['DRF', 'GLM', 'XGBoost', 'GBM', 'DeepLearning']]

        # display ui
        q.page['example'] = ui.form_card(
            box='1 1 -1 -1',
            items=[
                ui.text(content='''The sample dataset used is the
                    <a href="https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_wine.html" target="_blank">wine dataset</a>.'''),
                ui.choice_group(name='algo', label='Select Algo', choices=algo_choices, value='DRF'),
                ui.buttons(items=[
                    ui.button(name='train', label='Train', primary=True),
                    ui.button(name='predict', label='Predict', primary=True, disabled=True),
                ]),
                ui.message_bar(type='warning', text='Training will take a few seconds'),
                ui.text(content=''),
                ui.text(content='')
            ]
        )

    await q.page.save()
Exemple #4
0
async def serve(q: Q):
    if 'H2O_CLOUD_ENVIRONMENT' not in os.environ:
        # show appropriate message if app is not running on cloud
        q.page['example'] = ui.form_card(box='1 1 -1 -1',
                                         items=form_unsupported())
    elif q.args.train:
        # get DAI instance name
        copy_expando(q.args, q.client)

        for dai_instance in q.client.dai_instances:
            if dai_instance['id'] == int(q.client.dai_instance_id):
                q.client.dai_instance_name = dai_instance['name']

        # set DAI model details
        q.client.model_details = dai_experiment_url(q.client.dai_instance_id,
                                                    q.client.dai_instance_name)

        # show training progress and details
        q.page['example'].items = form_training_progress(q)
        await q.page.save()

        # train WaveML Model using Driverless AI
        q.client.wave_model = await q.run(
            func=build_model,
            train_df=q.client.train_df,
            target_column='target',
            model_type=ModelType.DAI,
            refresh_token=q.auth.refresh_token,
            _steam_dai_instance_name=q.client.dai_instance_name,
            _dai_accuracy=1,
            _dai_time=1,
            _dai_interpretability=10)

        # update DAI model details
        q.client.project_id = q.client.wave_model.project_id
        q.client.model_details += f'<br />{mlops_deployment_url(q.client.project_id)}'

        # download AutoDoc
        path_autodoc = save_autodoc(project_id=q.client.project_id,
                                    output_dir_path='.',
                                    refresh_token=q.auth.refresh_token)

        q.client.path_autodoc, *_ = await q.site.upload([path_autodoc])

        # show model outputs
        q.page['example'].items = form_training_completed(q)
    else:
        # prepare sample train and test dataframes
        data = load_wine(as_frame=True)['frame']
        q.client.train_df, q.client.test_df = train_test_split(data,
                                                               train_size=0.8)

        # DAI instances
        q.client.dai_instances = list_dai_instances(
            refresh_token=q.auth.refresh_token)
        q.client.choices_dai_instances = [
            ui.choice(name=str(x['id']),
                      label=f'{x["name"]} ({x["status"].capitalize()})',
                      disabled=x['status'] != 'running')
            for x in q.client.dai_instances
        ]

        running_dai_instances = [
            x['id'] for x in q.client.dai_instances if x['status'] == 'running'
        ]
        q.client.disable_training = False if running_dai_instances else True
        q.client.dai_instance_id = str(
            running_dai_instances[0]) if running_dai_instances else ''

        # display ui
        q.page['example'] = ui.form_card(box='1 1 -1 -1',
                                         items=form_default(q))

    await q.page.save()
Exemple #5
0
def test_expando_copy():
    e = copy_expando(Expando(dict(answer=42)), Expando())
    assert e.answer == 42
    assert e['answer'] == 42
    assert 'answer' in e