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

End to end mnist pipeline use case #2628

Merged
merged 1 commit into from
Jan 6, 2020

Conversation

hougangliu
Copy link
Member

@hougangliu hougangliu commented Nov 19, 2019

A mnist pipeline including katib, tfjob and kfserving


This change is Reviewable

@karlschriek
Copy link

karlschriek commented Nov 20, 2019

Hey @hougangliu, thanks very much for this example, very useful!

Could I give a some input from a target audience perspective?

The first thing anyone looking at this example will do is to ask "how could I do this in my use case?". Which will come down to "how to I replace liuhougangxa/tf-estimator-mnist with my own image? What is it supposed to look like? How do I set it up?". It would be really useful if you could include the Dockerfile and the model.py file so that someone could use this as a template for setting up their own.

Might I also suggest moving the follwoing outside of the def mnist_pipeline(..) function scope?

  • input dictionaries
  • the def convert_mnist_experiment_result(...) function
  • ops definitions convert_op = func_to_container_op(convert_mnist_experiment_result) and katib_experiment_launcher_op = components.load_component_from_url(...)

That would make the example much cleaner to read.

@hougangliu
Copy link
Member Author

hougangliu commented Nov 22, 2019

@karlschriek thanks for your comment.
This sample mainly aims to show how to integrate katib, Tfjob and inferenceservice in pipeline, as for better understanding this sample or even modify it for your use case, I think user need to know katib, tfjob and inferenceservice more. Then it is easy to implement your case just following this pipeline way

{
"attachments": {
"image.png": {
"image/png": "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AQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQCEiAAGRAbnRBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAIJwCBCDDqc/cCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCAQkAAByIDY6IQAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAuEUIAAZTn3mRgABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQACBgAQIQAbERicEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEAinAAHIcOozNwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIBCRAADIgNjohgAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEA4BQhAhlOfuRFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAICABApABsdEJAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQTCKUAAMpz6zI0AAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgEJEIAMiI1OCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCAQTgECkOHUZ24EEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEAhIgABkQGx0QgABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQACBcAoQgAynPnMjgAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEBAAgQgA2KjEwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIhFOAAGQ49ZkbAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQCEiAAGRAbnRBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAIJwCBCDDqc/cCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCAQkAAByIDY6IQAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAuEUIAAZTn3mRgABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQACBgAQIQAbERicEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEAinAAHIcOozNwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIBCRAADIgNjohgAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEA4BQhAhlOfuRFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAICABApABsdEJAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQTCKUAAMpz6zI0AAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgEJEIAMiI1OCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCAQTgECkOHUZ24EEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEAhIgABkQGx0QgABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQACBcAoQgAynPnMjgAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEBAAgQgA2KjEwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIhFOAAGQ49ZkbAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQCEiAAGRAbnRBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAIJwCBCDDqc/cCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCAQkAAByIDY6IQAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAuEUIAAZTn3mRgABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQACBgAQIQAbERicEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEAinAAHIcOozNwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIBCRAADIgNjohgAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEA4BQhAhlOfuRFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAICABApABsdEJAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQTCKUAAMpz6zI0AAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgEJEIAMiI1OCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCAQTgECkOHUZ24EEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEAhIgABkQGx0QgABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQACBcAoQgAynPnMjgAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEBAAgQgA2KjEwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIhFOAAGQ49ZkbAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEE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GRVgf3PamVXb8sqw995L8d0stxjHT368ezF1fGwfMeKjdNoZZ6e333m33M0yAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKBbC/SIKbAH9u9ThTh23KSq9baujP5sYsNDFppzQDpuu9kq4cfouMDsk4ODUY3xb4fMk7Zdc4b0wAtj08W3j0z/eHB0eubNz9PQIf3T4kOrA26vDBvX8FpRQfKcH81RhB+jU98+Ka299OB0xm5zVB0zcszE9MLbjc9z6i5zFOHHOGiGQX3TnhvNXHV8rLwxvLoSYJMONkxRgR222yatvtqqU/QacfItt9y8CD/Gcr9+/dJa31gzzThDdfXQ995/v8VxPPTIo1V9IlgZYcQcfoydM800Yzr80J+l2WebrarvXffcW7Xe1Sv777tXWmnF5YvwY4xl+umnTwcdsG+ab77q6qz3PzDOJHFMAAAgAElEQVQ5YNbVY3b9tglMM0317+748Y1/L1tz5ggm1gYBf/Kj3YrvcIQfo0UgOEKutd/ru+++r+El4pgcfoxOc8w+e9pkow2r+n/00UdV652x8uijT1SdJoK4MY7pBk+uphyBy58dsE9RnbKqsxUCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQDcW6BEVIOebvXpq59fe61iYLyomNmq7rNd85bCo6rj/he+n595qXcBm1NjGYctt15ihKmiZx7TmEoNSjDGCj7m98cH4JuHK2BfTXi+/4DS5W/EZIchlF5gmPfX65OlQx37esdBo1QWstFpggfnnSz/ceccOT8fb2guut85aTbqu8tWV0u133FXZHtUdW2pvvz25kmn0XXyJxdIcc8ze5LAIdEXIMqbLzu2tmmPz9q74HDRoUFp+uWWaXLp///7pm+utU1Udc9h71ZVXmxxkQ7cVmH326ndz9OhP04QJE1I85/a0d98dVnXYgAED0qqrrFy1La9s+M310gMPPpxXU1QTnThxYlElsrLx/xbWWP1rTarARji3tk2aNKkS2K3d15714R9UTxFebxxx3llmmSUtsujCVdVR23M9xxAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEppZA+9IhU2t0/3ed+WcbkB55aXJo65qHRqd9Np2lqJhYHkpMXR0VHGvbHU+PSZffNaqyeeG5qquF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AQIECBAgQIAAAQIECBAgQIAAAQIEmgoIQDY1sYUAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDo5gICkN38ARkeAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0FSgf9NNXbfl97d8nC64dWTXDaAXX3mPDWZKP9pw5l4s4NYJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoCcJdJsKkMKPXfvaRPA0noFGgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgR6gkC3CEAKP3aPV0UIsns8B6MgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgZYFujwAKfzY8kOamj2EIKemtmsRIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQHsFujQAKfzY3sc2ZY8Tgpyyvs5OgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAh0X6LIApPBjxx/elDyDEOSU1HVuAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEOioQJ9hw4ZN6uhJHE+AAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQmJoCXVYBcmrepGsRIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECXy6B/oMHD/5y3ZG7IUCAAAECBAgQIECAQCcLDB8+vDjjQgst1MlndjoCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBNoroAJke+UcR4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECHSZgABkl9G7MAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINBeAQHI9so5jgABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEOgyAQHILqN3YQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKC9AgKQ7ZVzHAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINBlAgKQXUbvwgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEB7BQQg2yvnOAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKDLBAQgu4zehQkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIH2CghAtlfOcQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgECXCQhAdhm9CxMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLtFRCAbK+c4wgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIEuExCA7DJ6FyZAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTaKyAA2V45xxEgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJdJiAA2WX0LkyAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAi0V0AAsr1yjiNAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgS6TEAAssvoXZgAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBBor4AAZHvlHEeAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAh0mYAAZJfRuzABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECDQXgEByPbKOY4AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDoMgEByC6jd2ECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgvQICkO2VcxwBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECDQZQICkF1G78IECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAewUEINsr5zgCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgywQEILuM3oUJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB9goIQLZXznEECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAlwkIQHYZvQsTIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC7RUQgGyvnOMIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBLhMQgOwyehcmQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE2isgANleOccRIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECXSYgANll9C5MgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQItFdAALK9co4jQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEukxAALLL6F2YAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQaK+AAGR75RxHgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIdJmAAGSX0bswAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0F4BAcj2yjmOAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ6DIBAcguo3dhAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoL0CApDtlXMcAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0GUCApBdRu/CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQHsFBCDbK+c4AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoMsEBCC7jN6FCRAgQIAAAQIECBAgMGUE/nDRpene+x7o9JPHOS+8+LJOP68TEiBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEGiPQP/2HOQYAgQIECBAgAABAgQIEOieAhF+vO/+B4u/GOHX11y9UwZaG37cbZedO+W8TkKAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgvQIqQLZXznEECBAgQIAAAQIECBDoZgI5/JiHFdUaO6MSZG34sXY9X88nAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgakpIAA5NbVdiwABAgQIECBAgAABAlNQYInFF2ty9o6GIBuFHRdfbNEm17KBAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwNQUEICcmtquRYAAAQIECBAgQIAAgSkoENNd15uaur0hyEbhx7hGZ02tPQU5nJoAAQIECBAgQIAAAQIEeonApEmT0ogRI7r93X766afps88+6/bj7K0DHDt2rOfTWx+++yZAgAABAgR6tED/Hj16gydAgAABAgQIECBAgACBKoEcTIzQY7nl9by/vK/esvBjPRXbCBAgQIAAAQIECBDoCQLXXXdduuGGG9JMM82Ufv3rX/eEIffoMZFlRWgAACAASURBVD733HPpjDPOKO7hhBNOSHPMMcdUvZ8vvvgiHXnkkem1115LK6+8cjr44IOn6vVrLxZhzL322ivFuLbaaqu04YYbFl0eeOCBdOaZZxbLRx99dFpqqaVqD+3x6yeffHJ69dVX02qrrZZ22WWX4n7iuZx00knF8qGHHpoWWmihbneft9xyS7rjjjuKdygGN+uss6bf/va3qU+fPu0aazz7F154IQ0bNqx4D77yla+kBRZYIA0YMKBN53v00UfTkksumaabbrqGx8W1IrjZUhs0aFDq169fk27jxo1Lzz77bHr//feLffH9jWtOM800Tfo2t6E8jkbXau74uIc4R9++fdPgwYOb65o+//zz4ln973//S0OGDEmLLrpomnnmmZs9Ju+M+3355ZeLZzN+/Pg055xzFu/kjDPOmLtUfeZxVW1ssBK+ce+NWmueZ6NjbSdAgAABAgSaFxCAbN7HXgIECBAgQIAAAQIECPQ4gRxyzKHHfAN5Pe/P22s/hR9rRawTIECAAAECBAgQINCTBD7++OM0cuTIDg85zvPGG28U51l88cXbHAjq8AB6yAlGjx5d8Z44ceJUH/Urr7xSCa499thjRSXICLB1VStXoyxXe7zzzjsrQ4ow5JcxADl8+PDiXRgzZkzlXiOslr+PEXDrbu2vf/1r+vvf/141rI5UE40w4QUXXJDefffdqnPGyjbbbJO23HLLVgUrI6R3yimnFEHu5oKjTz31VCVg2uSCpQ3HHntsWmKJJUpbUnrwwQfT+eef3yRAGSG+CLCutdZaVf2bW7nqqqvSNddcU3TZbrvt0hZbbNFc96p9H330UTrwwAMr4/jTn/5UN6wZ789ll12Wbr755qrjYyVCpoccckiaZZZZmuzLG+655550+eWXV97HvD0+t9566/Sd73wnDRw4sLw5nXXWWemJJ56o2tbcyhVXXFH3+bb2eTZ3bvsIECBAgACBxgICkI1t7CFAgAABAgQIECBAgECPFcghxxx6zDeS1/P+vD1/Cj9mCZ8ECBAgQIAAAQIECPR2gajgdvrppxcMUbkvKoVp3U8ggk9R7TNCdrHcXACqK0e/yiqrpP/+97/FEFZcccWuHIpr/5/AJ598Ugk/xju02Wabpfnmmy89//zz7TKKaqjHH398w2MjJPjBBx+k3XffvW7ALx8YVQqjAmW0eK9rQ3m5X3xG6LQ97b777ktnn3123UOj6uG5555bBPm+8Y1v1O1T3vjSSy9Vwo+xvS1B1wgM//73v6+EH+P4CFLXVqucMGFCYRLh4XotKo3+/Oc/T1Fdda655mrSJUKuEXZt1K6++uoUYeoIYra1Umejc+btbXme+RifBAgQIECAQNsEBCDb5qU3AQIECBAgQIAAAQIEeoxADjnm0GMeeF7P+/N24ccs4ZMAAQIECBAgQIAAAQIEeopAhJXOOeec9NZbb6X555+/bvW17nAv3/zmN9Nyyy2X+vfvX0yx3B3G1NvHUA46br/99mmdddYpSFZYYYU200To73e/+13luG233baYCjyClY8//ni6/vrri4qyMdV2XCeqyjZqf/vb3yoVJHfdddc077zzNupaCUBG1dM99tijYb/y1ONR0TCHH6Pa409/+tOiImkED5955plKVcgIYc4wwwypOY+o8Blhyfa2u+++u1UVFmPMOfwYlSw32WST4vsU3/t777033XTTTUX117CLKejLLSpd5vBj3G84rbzyysV3MUKPF198cVFFNq4RFSLz9O1xjvI09uVz5uV47lGpM1qj6a/b8jzzeX0SIECAAAECbRMQgGybl94ECBAgQIAAAQIECBDoUQI55JhDj3nweT3vF37MMj4JECBAgAABAgQIECBAoKcJRAgyqj929zbHHHN09yH2qvGVqydGIK4jLSo1Rgjx/fffT9/61reKqa7z+aKKYoRff/zjHxebnnzyyYYByJgq+dprry36xZg22GCDfJq6n3G9aPH+t7ayaEzTHC0Ce7/4xS/S0KFDi/X4z2qrrVasRyXFqAR51113NRuAjGBhvem+KydsZiGqYZZDo810TU8//XSxOwKlMSV4DhsussgiKf7yWB999NEUVSX79OlT9B8/fnwxbXY+90EHHZSWXnrpvJoWW2yxdPjhh6f99tuvOEdMrx3mOXQa526uRaA1twjR5uvmbW19nvk4nwQIECBAgEDbBAQg2+alNwECBAgQIECAAAECBHqcQA455tBjvoHyenk5799tl51TPjZv80mAAAECBAgQIECAAIGywMcff5xuvfXW9J///Ce98847xVStMf3o1772tbT22mun6aabrty9CAf9+9//Tn379k2bb755Mb3r/fffXxz/+uuvF1OXRuBkyy23bDiV8WeffZaialhM4frGG28UQZjll18+LbvsssV1qy7YjpUYT5w3KovlFtOn5qmVI8xUDgxF1bSY2jjuK+4hAkkRdFtggQXSeuutl2Jscb+d0aLaWlQ7u+eee4rQUUytOvvssxfhqqgwWDv1awSBrrzyyuLSa621VnEP4RbjjUDRzDPPnBZccMFi6t+FF1647hDj/qIy2m233VbcXwSNIswVIaLVV1+97jFt3fjII48U088OGTKkCB9FZb6omvfUU0+lYcOGFfcYjhtuuGGxXHv+W265paj+Fs8lT9kb48xBsgikxTTCUUEuKtzF+xrrERpbd91101e/+tUmU+7ma4RheMX9x3sRz3fuuecuQlfrr79+imp0rWnx/Yj3NlqMJ79PMZ64zwjPxf3FdMLhEff/4YcfFu9ReH/7299uODVvW7+HrRlvvT4jRoxIYR0e5ecSwbulllqq3iEtbhszZky64YYbKtMmb7TRRsWU5uX3dvDgwSm+lw8//HDx3i+55JJp//33b/fvyT/+8Y8U36UXX3yxMr54V6I6Z7QIHi666KKVfa1ZiOd37LHHpjfffDPNNttsTQ6J4F5UKI13qHzdcscI6+WpryPgF4HJ2kBduX8s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vRZT3IdRBB2j4nBuK620UmEevxvNvb/ZMo6Ld7xeoPmhhx6qBDEjxFnvd78jzzOP2ScBAgQIECDQdoG+bT/EEQQIECBAgAABAgQIECDQUwRaG36MkGOuBlm+twhBxjk0AgQIECBAgAABAgQIZIFyNbynn346b27yGdXAylXqmnRow4YIt+T2zDPP5MUmnxEOipBQZ7cIx5Rbaw3imLJR+bjy+ZpbjlBPbv/5z3/yYpPPGGNLYcUmBzXYEFU2c9Atxj9x4sS6PeOaTz31VN197d0YU8w2auVpphsFvuodG2NszT1ECC8Cf+X7f+SRR+qdsrItwlkxve/UbuV3qfyO1Y6jo9/DsnNM39yotSZ4HOHHH//4x8W0wdttt11xqghWXnbZZY1O22O2xzt21FFHFVNDlyuIlm9g1KhRldUc4I3gYW7lac3ztvz55JNPFou5omKsRFDwhBNOSOeee27D97tc+TAqJTZqDz/8cLr99tuL3TF1dm3f9rzjfft2LIqQq2GWp7JurvLrmDFjivGXK75GADK3Sy65JC82+fz3v/9dqWgZU5Hna+eO48ePr7yn8Tux+eab511Vnx15nlUnskKAAAECBAi0SUAFyDZx6UyAAAECBAgQIECAAIGeI9Da8GO+o1zpMVd+zNvzet6ft/skQIAAAQIECBAgQKB3CqyyyiqVqVCvuOKKIihTWwkrpno++eSTUwSm1l133bT77rs3O31uS5IRgFx44YWL6ls333xzWmqppdLXvva1qsNiqt7TTz+9altHVsrTdkdFsXLwKO532WWXLcJ/UeksQi/f+MY3mlzuzjvvTHfddVexPfrPNttsTfq0tCGum+89rhX+yy23XJPD4llcd911aemll0577rlnu66VTxrhn3XWWSdde+21RUW1CKj98Ic/zLsrn3/5y186PXAaVehiyt9y6DUuGFPkxvS8udU+/7y93mdUf7v00kuLaXFr91955ZWVe4jpgvM0z/HeXnPNNcV1//GPf6Tvfve7tYemxx9/PP36179OUbkvgn1hP7Xa1PoexnXOP//84rbCPwKR9Z5N7tPc/X/zm98spiWOPjH1clTUi8ByTAu96qqrFtX+mju+O++LYF6e4jmqHUYFxXKL/bfddluxKQJ0uRJj
Copy link
Contributor

Choose a reason for hiding this comment

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

This image is pretty big. Would you mind removing it from the notebook to keep the source repo smaller?

Copy link
Member Author

Choose a reason for hiding this comment

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

I can do it, but the picture can show how user can get inferenceservice name well. it can help user to run this example successfully.

@Ark-kun
Copy link
Contributor

Ark-kun commented Nov 27, 2019

The notebook size seems to be quite big.
Other than that,
/lgtm

@karlschriek
Copy link

@karlschriek thanks for your comment.
This sample mainly aims to show how to integrate katib, Tfjob and inferenceservice in pipeline, as for better understanding this sample or even modify it for your use case, I think user need to know katib, tfjob and inferenceservice more. Then it is easy to implement your case just following this pipeline way

Thanks for the response.

Perhaps my point could be made for the Katib examples in general (and so probably should go on the Katib board), but one of the main difficulties I have with the examples is that they typically just call a pre-built Docker image from somewhere... but it is quite important to understand how that image was built in order to understand how the metric collector picks up its inputs! (In most cases I ended up running the Docker container and then manually copying out the model.py file in order to scrutinize what was happening. I did the same with this example)

@hougangliu
Copy link
Member Author

Thanks for the response.

Perhaps my point could be made for the Katib examples in general (and so probably should go on the Katib board), but one of the main difficulties I have with the examples is that they typically just call a pre-built Docker image from somewhere... but it is quite important to understand how that image was built in order to understand how the metric collector picks up its inputs! (In most cases I ended up running the Docker container and then manually copying out the model.py file in order to scrutinize what was happening. I did the same with this example)

Yes, user need understand how katib metrics collector works and how metrics should print.
For now, in 0.7 release, katib in fact only can read two kinds of metric format:

  1. tensorflow event file;
  2. stdout or log file, but in each line, only one metrics can exist with format "$metricsName=$value"
    Anyway, I think here we should move on katib repo instead of here :)

@Ark-kun
Copy link
Contributor

Ark-kun commented Jan 4, 2020

/approve

@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: Ark-kun

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

@hougangliu
Copy link
Member Author

/retest

@hougangliu
Copy link
Member Author

/test kubeflow-pipeline-e2e-test

@hougangliu
Copy link
Member Author

/test kubeflow-pipeline-sample-test

@k8s-ci-robot k8s-ci-robot merged commit 8d21f81 into kubeflow:master Jan 6, 2020
@pretidav
Copy link

@hougangliu I am trying to use yout e2e mnist tutorial with both katib and tfjob launchers. However, the latter get stuck all the time and never meets "success condition" before going after the time limit (even using a huge limit).
Could you please suggest me something to do? Probably I am doing something wrong.

Jeffwan pushed a commit to Jeffwan/pipelines that referenced this pull request Dec 9, 2020
magdalenakuhn17 pushed a commit to magdalenakuhn17/pipelines that referenced this pull request Oct 22, 2023
* Bump kube-rbac-proxy version for kserve-controller

Signed-off-by: ddelange <14880945+ddelange@users.noreply.github.com>

* PR suggestion

Signed-off-by: ddelange <14880945+ddelange@users.noreply.github.com>

Signed-off-by: ddelange <14880945+ddelange@users.noreply.github.com>
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.

5 participants