Azure Machine Learning Designer Python SDK
The mldesigner
package provide the SDK interface which work along with Azure ML Designer (drag-n-drop ML) UI experience.
Especially, the package ease the authoring experience of resources like Components
& Pipelines
:
- Components: self-contained piece of code that does one step in a machine learning pipeline: data preprocessing, model training, model scoring, a hyperparameter tuning run, etc. Such that it can be parameterized and then used in different contexts.
- Pipelines: independently executable workflow of machine learning tasks composed by Components.
Change Log
Recommended to work with azure-ai-ml==1.13
New Features
mldesigner compile
supports to compile parallel component.mldesigner generate
supports to generate package with provided authentication.
Recommended to work with azure-ai-ml==1.12
Improvements
- [Compile] Update compiled command component schema path to
https://azuremlschemas.azureedge.net/latest/commandComponent.schema.json
.
Fixed Bugs
- [Compile] Fixed the error when source component inputs is empty.
Recommended to work with azure-ai-ml==1.11
New Features
mldesigner compile
supports to compile with .amlignore:
mldesigner compile --source xxx.yaml --amlignore-file <path-to>/.amlignore
Recommended to work with azure-ai-ml==1.10
New Features
Recommended to work with azure-ai-ml==1.9.0
New Features
- Support primitive type as component return annotation and not need to write
is_control=True
. - Support
Annotated
type as component input or component return annotation. - Support
Annotated
type in @group
.
from mldesigner import command_component, Output, Meta
from typing_extensions import Annotated
@command_component()
def my_component1(input_int: int) -> int:
return input_int
@command_component()
def my_component2(input_int: Annotated[int, Meta(description="test annotation int", min=1, max=10, default=1)],) \
-> Annotated[int, Meta(description="test annotation int")]:
return input_int
Recommended to work with azure-ai-ml==1.7.0
Improvements
- Support to generate components with specified version or label:
- azureml://subscriptions//resourcegroups/<resource_group>/workspaces//components/<component_name>/labels/
- azureml://subscriptions//resourcegroups/<resource_group>/workspaces//components/<component_name>/versions/
- Refine the log content of generate component package.
Recommended to work with azure-ai-ml==1.5.0
Improvements
- Support multiple types of identity for dynamic pipeline creation, the priority is user identity > managed identity > others.
- Refine
mldesigner execute
:
- When component name is not specified, if there is only one component in the source file, execute this component, raise error when there are multiple components.
- If required parameters are not provided, list all of them and raise error.
- Improve support for
enum
values in generate_package
.
- Support enum values with no
\w
characters, e.g. empty string, -
, +
and \t
. - Support enum values with duplicate sanitized names, e.g.
A
and a
.
- Use
curated environment
as default mldesigner component environment:
- For command component:
azureml://registries/azureml/environments/mldesigner-minimal/labels/latest
- For dynamic pipeline:
azureml://registries/azureml/environments/mldesigner/labels/latest
- Support
mltable
type in @dynamic
outputs
Fixed Bugs
- Fix wrong command error when mldesigner component code is set to be a file instead of a folder.
Recommended to work with azure-ai-ml==1.4.0
Improvements
- Add python version requirements
<4.0,>=3.7
Recommended to work with azure-ai-ml==1.3.0
New Features
- Support primitive type as component return annotation.
- Support
@group
as component return annotation. - Add validation for component execution results according to return annotation.
Improvements
- Return component execution result as
mldesigner execute
result.
Fixed Bugs
- Fixed missing keyword arguments when executing component in an environment that has both mldesigner and azure-ai-ml
- Fixed compile error when compiling pipeline that has a node uses remote registered component either from workspace or registry.
- Fixed parse error when input string is a json serialized string.
Recommended to work with azure-ai-ml==1.2.0
Improvements
- Enable creating component with auto-incremented version if no version specified.
- Update mldesigner default environment image to be
mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04
- Mldesigner compile improvements:
- Exits with code 1 when there is failed compilation.
- Output yaml file with original file name if the input is a yaml.
- Generated pipeline node keys is ordered.
Fixed Bugs
- Fixed mldesigner executor does not pass
**kwargs
to component func
Fixed Bugs
- Fixed dependency issue when importing
typing_extensions
New Features
- Support mldesigner compile:
mldesigner compile
- Support list type component input for generate_package.
Fixed Bugs
- Fixed execute error when input string has space or "=" inside.
- Fixed execute error for bool parameter parsing.
Improvements
- Remove
mode
client default value ro_mount/rw_mount
from mldesigner Input/Output
class. - Refine error message when defining a component in
.ipynb
. - Refine error message when failed to create component entity.
Improvements:
- Adopted optional input new format: '$[[]]' instead of old '[]'.
- Support Enum for mldesigner input.
- Raise error if input has no annotation specified.
Fixed Bugs:
- Fixed import error when used along with azure-ai-ml<0.1.0b7.
New Features
Fixed Bugs:
- Fixed component command execution error when no inputs or outputs specified.
- Fixed incompatible issue with azure-ai-ml >=0.1.0b7: error when trying to import azure-ai-ml constants
New Features:
- Support mldesigner generate:
- Generate component package from local yaml files or remote source
- Support mldesigner execute: execute component in local host environment.
Improvements:
New Features:
Improvements:
- Handle compatibility issue for future changes. Less imports of private functions
- Remove default property for mldesigner Input class.
- Enable mldesigner to use argparser to parse incoming args.
- Compatibility handling: old azure ai ml package use different way to load component.
- Component input like "int_param=3", no longer to be processed as optional input when registering to remote.
Improvements:
- Refine code terminologies, replace old dsl with new mldesigner.
New Features:
- Support using decorator @command_component to define a component.
- Create a component:
from mldesigner import command_component, Input, Output
@command_component()
def hello_world(input: Input, output: Output, param='str_param'):
print("Hello World!")
- Register the component to server:
from azure.ai.ml import MLClient
client = MLClient.from_config(credential=credential)
client.components.create_or_update(hello_world)
- Use sdk component in pipeline:
from azure.ai.ml import dsl
@dsl.pipeline()
def my_pipeline():
node = hello_world()
return {"pipeline_output": node.outputs.output}
pipeline = my_pipeline()
client.jobs.create_or_update(pipeline)