From 87b7e7d5b55dbab6f0610ada5fc10d3e294f705f Mon Sep 17 00:00:00 2001 From: Andrey Velichkevich Date: Thu, 8 Dec 2022 13:35:10 +0000 Subject: [PATCH] Add Conformance Program Doc for AutoML and Training WG (#2048) * Add Conformance Program Doc for AutoML and Training WG * Address Review Comments --- docs/images/conformance-crd-test.png | Bin 0 -> 79190 bytes docs/proposals/conformance-test.md | 147 +++++++++++++++++++++++++++ 2 files changed, 147 insertions(+) create mode 100644 docs/images/conformance-crd-test.png create mode 100644 docs/proposals/conformance-test.md diff --git a/docs/images/conformance-crd-test.png b/docs/images/conformance-crd-test.png new file mode 100644 index 0000000000000000000000000000000000000000..1b56dce28228c8696e7d9a69bd3eb669469a3218 GIT binary patch literal 79190 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 N6mfPp> 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 Slh26+{>e!_mMoSq@cUoC*EzHR literal 0 HcmV?d00001 diff --git a/docs/proposals/conformance-test.md b/docs/proposals/conformance-test.md new file mode 100644 index 00000000000..900399a30de --- /dev/null +++ b/docs/proposals/conformance-test.md @@ -0,0 +1,147 @@ +# Conformance Test for AutoML and Training Working Group + +Andrey Velichkevich ([@andreyvelich](https://github.com/andreyvelich)) +Johnu George ([@johnugeorge](https://github.com/johnugeorge)) +2022-11-21 +[Original Google Doc](https://docs.google.com/document/d/1TRUKUY1zCCMdgF-nJ7QtzRwifsoQop0V8UnRo-GWlpI/edit#). + +## Motivation + +Kubeflow community needs to design conformance program so the distributions can +become +[Certified Kubeflow](https://docs.google.com/document/d/1a9ufoe_6DB1eSjpE9eK5nRBoH3ItoSkbPfxRA0AjPIc/edit?resourcekey=0-IRtbQzWfw5L_geRJ7F7GWQ#). +Recently, Kubeflow Pipelines Working Group (WG) implemented the first version of +[their conformance tests](https://github.com/kubeflow/kubeflow/issues/6485). +We should design the same program for AutoML and Training WG. + +This document is based on the original proposal for +[the Kubeflow Pipelines conformance program](https://docs.google.com/document/d/1_til1HkVBFQ1wCgyUpWuMlKRYI4zP1YPmNxr75mzcps/edit#). + +## Objective + +Conformance program for AutoML and Training WG should follow the same goals as Pipelines program: + +- The tests should be fully automated and executable by anyone who has public + access to the Kubeflow repository. +- The test results should be easy to verify by the Kubeflow Conformance Committee. +- The tests should not depend on cloud provider (e.g. AWS or GCP). +- The tests should cover basic functionality of Katib and the Training Operator. + It will not cover all features. +- The tests are expected to evolve in the future versions. +- The tests should have a well documented and short list of set-up requirements. +- The tests should install and complete in a relatively short period of time + with suggested minimum infrastructure requirements + (e.g. 3 nodes, 24 vCPU, 64 GB RAM, 500 GB Disk). + +## Kubeflow Conformance + +Initially the Kubeflow conformance will include the CRD based tests. +In the future, API and UI based tests may be added. Kubeflow conformance consists +the 3 category of tests: + +- CRD-based tests + + Most of Katib and Training Operator functionality are based on Kubernetes CRD. + + **This document will define a design for CRD-based tests for Katib and the Training Operator.** + +- API-based tests + + Currently, Katib or Training Operator doesn’t have an API server that receives + requests from the users. However, Katib has the DB Manager component that is + responsible for writing/reading ML Training metrics. + + In the following versions, we should design conformance program for the + Katib API-based tests. + +- UI-based tests + + UI tests are valuable but complex to design, document and execute. In the following + versions, we should design conformance program for the Katib UI-based tests. + +## Design for the CRD-based tests + +![conformance-crd-test](../images/conformance-crd-test.png) + +The design is similar to the KFP conformance program for the API-based tests. + +For Katib, tests will be based on +[the `run-e2e-experiment.go` script](https://github.com/kubeflow/katib/blob/570a3e68fff7b963889692d54ee1577fbf65e2ef/test/e2e/v1beta1/hack/gh-actions/run-e2e-experiment.go) +that we run for our e2e tests. + +This script will be converted to use Katib SDK. Tracking issue: https://github.com/kubeflow/katib/issues/2024. + +For the Training Operator, tests will be based on [the SDK e2e test.](https://github.com/kubeflow/training-operator/tree/05badc6ee8a071400efe9019d8d60fc242818589/sdk/python/test/e2e) + +### Test Workflow + +All tests will be run in the _kf-conformance_ namespace inside the separate container. +That will help to avoid environment variance and improve fault tolerance. Driver is required to trigger the deployment and download the results. + +- We are going to use + [the unified Makefile](https://github.com/kubeflow/kubeflow/blob/2fa0d3665234125aeb8cebe8fe44f0a5a50791c5/conformance/1.5/Makefile) + for all Kubeflow conformance tests. Distributions (_driver_ on the diagram) + need to run the following Makefile commands: + + ```makefile + + # Run the conformance program. + run: setup run-katib run-training-operator + + # Sets up the Kubernetes resources (Kubeflow Profile, RBAC) that needs to run the test. + # Create temporary folder for the conformance report. + setup: + kubectl apply -f ./setup.yaml + mkdir -p /tmp/kf-conformance + + # Create deployment and run the e2e tests for Katib and Training Operator. + run-katib: + kubectl apply -f ./katib-conformance.yaml + + run-training-operator: + kubectl apply -f ./training-operator-conformance.yaml + + # Download the test deployment results to create PR for the Kubeflow Conformance Committee. + report: + ./report-conformance.sh + + # Cleans up created resources and directories. + cleanup: + kubectl delete -f ./setup.yaml + kubectl delete -f ./katib-conformance.yaml + kubectl delete -f ./training-operator-conformance.yaml + rm -rf /tmp/kf-conformance + ``` + +- Katib and Training Operator conformance deployment will have the appropriate + RBAC to Create/Read/Delete Katib Experiment and Training Operator Jobs in the + _kf-conformance_ namespace. + +- Distribution should have access to the internet to download the training datasets + (e.g. MNIST) while running the tests. + +- When the job is finished, the script generates output. + + For Katib Experiment the output should be as follows: + + ``` + Test 1 - passed. + Experiment name: random-search + Experiment status: Experiment has succeeded because max trial count has reached + ``` + + For Training Operator the output should be as follows: + + ``` + Test 1 - passed. + TFJob name: tfjob-mnist + TFJob status: TFJob tfjob-mnist is successfully completed. + ``` + +- The above report can be downloaded from the test deployment by running `make report`. + +- When all reports have been collected, the distributions are going to create PR + to publish the reports and to update the appropriate [Kubeflow Documentation](https://www.kubeflow.org/) + on conformant Kubeflow distributions. The Kubeflow Conformance Committee will + verify it and make the distribution + [Certified Kubeflow](https://github.com/kubeflow/community/blob/master/proposals/kubeflow-conformance-program-proposal.md#overview).