I've been working with kubeflow and kubeflow pipelines a few months shy of a year and the documentation has never failed me, so I'm writing this issue because I believe this page has room for improvement:
https://www.kubeflow.org/docs/azure/machinelearningcomponent/
I have kubeflow deployed on azure, but I'm not quite familiar with Azure's components so the links provided for Azure ML were very useful. However I think what's missing in this page is how Azure ML ties with kubeflow and/or what are the benefits of using it with kubeflow as opposed to using it on a standalone cluster. The only part that mentions kubeflow in this page is this line:
The kfp.azure extension can be used to create a secret to interact with Azure resources.
From what I understand, that means I can use Azure ML from inside kubeflow pipeline components, if so, then the prerequisite of having a kubeflow deployement not just kubeflow pipelines is a bit confusing.
It would also be nice to have a few examples as to how these Azure ML components are meant to be used inside kubeflow and/or kubeflow pipelines.
There's also a bit of overloading with the term "component". The fact that there is no mention or link to kubeflow pipelines in this page makes me confused which of Azure or Kubeflow (or both) provide this component functionality in this context:
Azure Machine Learning (Azure ML) components are pipeline components that integrate with Azure ML.
The rest of the page shows off some of the cool features in Azure ML (one of which is very similar to KFServing) and doesn't provide any kubeflow related information, so after reading this page of documentation I have more questions than I came with.
Assigning Azure OWNERS, PTAL 馃憤
/assign @aronchick @berndverst @eedorenko @sudivate
and HNY 馃帀
Happy New Year!
@yilun-msft is the original author and works on the Azure Machine Learning team. Agreed the article needs some information on how and why one uses Kubeflow Pipelines with AML [Azure Machine Learning (the service)]
Today this page seems to assume you understand Kubeflow Pipelines and its pipeline definition DSL and are familiar with AML. It certainly does not provide a lot of context.
To my knowledge, the only integration between AML and Kubeflow Pipelines is the convenience operations linked in this article, which really appear to be wrappers around the Python SDK or the REST API for AML.
You absolutely can use Kubeflow Pipeline steps to register a model with AML (that is upload and version your model to AML) and also a convenient way to serve your model with AML (AML can do this in a variety of ways including a standalone container via Azure Container instances, deployments on VMs, or deployments to Kubernetes clusters -- I'm probably missing other options).
Personally, I like to track models outside of Kubeflow and eventually want to deploy production ready models places other than my Kubeflow cluster. For this I find AML useful.
I didn't even realize we provided these Kubeflow Pipelines operations until you raised this issue. I typically roll my own pipeline operations by using the AML Python SDK directly in a container built for my custom model register/publish step. I read the credentials from env variables which I map into the pipeline from a Kubernetes secret in my namespace.
AML Python SDK: https://docs.microsoft.com/en-us/azure/machine-learning/how-to-deploy-and-where?tabs=python
I hope this makes more sense. It would be great if someone can explain these concepts better and show a good example.
/assign yilun-msft
In short AML may be more convenient for storing and versioning models and deploying these quickly. There are definitely other options for doing so.
It all depends on where you want to train, store / version and serve your models.
AML also has a pipelines component itself - which is different from Kubeflow Pipelines. https://docs.microsoft.com/en-us/azure/machine-learning/concept-ml-pipelines
What is offered in this article a Kubeflow Pipelines Components (that term is defined by Kubeflow -- https://www.kubeflow.org/docs/pipelines/sdk/build-component/) for the AML Register model and AML Deploy model steps. Of course you can do that all manually by using the AML SDKs.
/help
@berndverst:
This request has been marked as needing help from a contributor.
Please ensure the request meets the requirements listed here.
If this request no longer meets these requirements, the label can be removed
by commenting with the /remove-help command.
In response to this:
/help
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.
Thanks @NourhanKhaled for bringing it up and thanks @berndverst for the answer. AML offers a variety of capabilities that could be used in the machine learning workflow. The "AML components" are the wrapped individual operations that could be injected in Kubeflow pipeline. It would allow us to use AML functionalities within Kubeflow pipeline, and yes, it is similar to what a step operation using AML SDK; however, the use of image would help us to reduce the amount of work configuring them.
Any suggestions and comments for those components are more than welcomed. We will improve the docs and provide a better interops between AML and Kubeflow. Many thanks!
Most helpful comment
In short AML may be more convenient for storing and versioning models and deploying these quickly. There are definitely other options for doing so.
It all depends on where you want to train, store / version and serve your models.
AML also has a pipelines component itself - which is different from Kubeflow Pipelines. https://docs.microsoft.com/en-us/azure/machine-learning/concept-ml-pipelines
What is offered in this article a Kubeflow Pipelines Components (that term is defined by Kubeflow -- https://www.kubeflow.org/docs/pipelines/sdk/build-component/) for the AML Register model and AML Deploy model steps. Of course you can do that all manually by using the AML SDKs.