Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

support PMML server #1141

Merged
merged 1 commit into from Nov 10, 2020
Merged

support PMML server #1141

merged 1 commit into from Nov 10, 2020

Conversation

AnyISalIn
Copy link
Contributor

What this PR does / why we need it:
This request will provide KFServing with PMML model support. It completes the PMML Server package based on pypmml and InferenceService PMML API definition, e2e test cases and some documents

Which issue(s) this PR fixes *
Fixes # #462

Special notes for your reviewer:

  1. The mirrors and gfs currently used my private repositories, which are public and can be verified
  2. After ISVC adds pmml's api definition The CustomResourceDefinition "inferenceservices.serving.kubeflow.org" is invalid: metadata.annotations: Too long: must have at most 262144 bytes, Exceeds the limit of kubernetes, so the kubectl apply in make deploy-dev cannot take effect normally, need to use kubectl replace or create to replace

Release note:

@kubeflow-bot
Copy link

This change is Reviewable

@google-cla
Copy link

google-cla bot commented Oct 18, 2020

Thanks for your pull request. It looks like this may be your first contribution to a Google open source project (if not, look below for help). Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

📝 Please visit https://cla.developers.google.com/ to sign.

Once you've signed (or fixed any issues), please reply here with @googlebot I signed it! and we'll verify it.


What to do if you already signed the CLA

Individual signers
Corporate signers

ℹ️ Googlers: Go here for more info.

@k8s-ci-robot
Copy link
Contributor

Hi @AnyISalIn. Thanks for your PR.

I'm waiting for a kubeflow member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

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.

@AnyISalIn
Copy link
Contributor Author

@googlebot I signed it!

@animeshsingh
Copy link
Member

/ok-to-test

@AnyISalIn
Copy link
Contributor Author

@animeshsingh Hi, I see that the build fails, The log in Prow only shows

INFO|2020-10-22T00:03:09|/src/kubeflow/testing/py/kubeflow/testing/run_e2e_workflow.py|547| Workflow kubeflow-test-infra/kubeflow-kfserving-presubmit-e2e-1141-493a810-0192-5cb5 finished phase: Failed

Where can I see more detailed logs?

@AnyISalIn
Copy link
Contributor Author

AnyISalIn commented Oct 22, 2020

I found the log of argo, It seems to be stuck in kubectl apply

The CustomResourceDefinition "inferenceservices.serving.kubeflow.org" is invalid: metadata.annotations: Too long: must have at most 262144 characters

@animeshsingh
Copy link
Member

cc @yuzisun

@AnyISalIn
Copy link
Contributor Author

@yuzisun Maybe we can try this solution.
https://community.spinnaker.io/t/halyard-with-v2-metadata-annotations-too-long/894

To circumvent the issue for now, we’ve modified Halyard to not use kubectl apply -f while submitting resources to Kubernetes, but use kubectl replace --force --save-config=false -f - instead. This will delete the old resource and recreate it without the aforementioned field (and also works if the resource wasn’t present to begin with). Still testing if this works for all cases and situations though…

@yuzisun
Copy link
Member

yuzisun commented Oct 23, 2020

/retest

@AnyISalIn
Copy link
Contributor Author

@yuzisun

It seems that the main problem is the expansion caused by PodSpec, We might be able to learn from Tekton
Delete the definition of some fields, and add x-kubernetes-preserve-unknown-fields: true

Like this

yq d -i config/crd/serving.kubeflow.org_inferenceservices.yaml 'spec.versions[1].schema.openAPIV3Schema.properties.spec.properties.*.properties.affinity.properties'

@AnyISalIn AnyISalIn force-pushed the pmml-support branch 9 times, most recently from b8a97e2 to 3df4fe7 Compare October 26, 2020 14:41
@AnyISalIn
Copy link
Contributor Author

/retest

1 similar comment
@AnyISalIn
Copy link
Contributor Author

/retest

@AnyISalIn AnyISalIn force-pushed the pmml-support branch 2 times, most recently from fbdf0bc to 0019151 Compare October 27, 2020 03:24
@AnyISalIn AnyISalIn force-pushed the pmml-support branch 3 times, most recently from 0854851 to 8ca26d7 Compare November 4, 2020 13:11
@yuzisun
Copy link
Member

yuzisun commented Nov 4, 2020

/retest

@@ -5,7 +5,7 @@ XGBoostSpec defines arguments for configuring XGBoost model serving.
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**nthread** | **int** | Number of thread to be used by XGBoost | [optional]
**resources** | [**V1ResourceRequirements**](https://github.com/kubernetes-client/python/blob/master/kubernetes/docs/V1ResourceRequirements.md) | Defaults to requests and limits of 1CPU, 2Gb MEM. | [optional]
**resources** | [**V1ResourceRequirements**](V1ResourceRequirements.md) | Defaults to requests and limits of 1CPU, 2Gb MEM. | [optional]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jinchihe How are we generating these reference links?

@AnyISalIn AnyISalIn force-pushed the pmml-support branch 4 times, most recently from 83d967f to 468645e Compare November 7, 2020 16:52
@AnyISalIn
Copy link
Contributor Author

@yuzisun Hi, I already rebase to the latest, and the e2e test passed, when can we merge this PR?

of course, I have another question, Do I still need to write the definition of v1alpha API?

Thanks.

Copy link
Member

@yuzisun yuzisun left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@AnyISalIn Great job, left a final comment otherwise good to merge.

pkg/apis/serving/v1alpha2/openapi_generated.go Outdated Show resolved Hide resolved
pkg/apis/serving/v1alpha2/openapi_generated.go Outdated Show resolved Hide resolved
@AnyISalIn
Copy link
Contributor Author

AnyISalIn commented Nov 8, 2020

@yuzisun How do we upload PMML samples to KFServing public GCS and release docker image to DockerHub?

docs/samples/pmml/pmml.yaml Outdated Show resolved Hide resolved
@yuzisun
Copy link
Member

yuzisun commented Nov 8, 2020

@yuzisun How do we upload PMML samples to KFServing public GCS and release docker image to DockerHub?

@yuzisun How do we upload PMML samples to KFServing public GCS and release docker image to DockerHub?

@AnyISalIn We will take care of the docker image publish when releasing 0.5, please also add a OWNER file under pmmlserver directory, I am assuming you are going to own and maintain this server going forward?

@AnyISalIn
Copy link
Contributor Author

AnyISalIn commented Nov 9, 2020

@AnyISalIn We will take care of the docker image publish when releasing 0.5, please also add a OWNER file under pmmlserver directory, I am assuming you are going to own and maintain this server going forward?

@yuzisun I hope to be able to push pmmlserver image to KFServing public gcr.io, maintenance refers to maintaining code or docker image?

@yuzisun
Copy link
Member

yuzisun commented Nov 10, 2020

@AnyISalIn We will take care of the docker image publish when releasing 0.5, please also add a OWNER file under pmmlserver directory, I am assuming you are going to own and maintain this server going forward?

@yuzisun I hope to be able to push pmmlserver image to KFServing public gcr.io, maintenance refers to maintaining code or docker image?

@AnyISalIn I meant for maintaining the pmmlserver related code, OWNER file is for that purpose. Also I created the github action to push pmmlserver to KFS docker registry here #1198.

@yuzisun
Copy link
Member

yuzisun commented Nov 10, 2020

Thanks @AnyISalIn for this great contribution! 🚀

/lgtm
/approve

@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: AnyISalIn, yuzisun

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants