-
Notifications
You must be signed in to change notification settings - Fork 2
Add VertexEndpointHandler for online inference #6
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
base: main
Are you sure you want to change the base?
Conversation
Change-Id: I7caaf0a6012df33ca39a421c241be9b6c2669303
Summary of ChangesHello @Deependra-Patel, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request significantly enhances the Highlights
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request introduces a VertexEndpointHandler to perform online inference against a Vertex AI Endpoint from Spark. The implementation includes the handler itself, a model wrapper class, and comprehensive unit and integration tests. The code is well-structured and follows a builder pattern for easy configuration. I've identified a potential runtime error in the VertexEndpoint class due to improper handling of the batch_size parameter and a point of fragility in the integration tests due to a hardcoded resource ID. My comments provide suggestions to improve robustness and test reliability.
| aiplatform.init(project=project, location=location) | ||
| self.endpoint_client = aiplatform.Endpoint(endpoint_name=endpoint) | ||
| self.predict_parameters = predict_parameters | ||
| self.batch_size = batch_size |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The batch_size parameter can be None, but the call method doesn't handle this case, which will lead to a TypeError when it's used in range(). The docstring for __init__ also states that batch_size defaults to 10, but this default is not applied here. To prevent runtime errors and align with the documentation, you should assign a default value if None is provided.
| self.batch_size = batch_size | |
| self.batch_size = batch_size if batch_size is not None else 10 |
| location = os.getenv("GOOGLE_CLOUD_LOCATION", "us-central1") | ||
| # TODO: Replace with endpoint creation during test run which shouldn't | ||
| # take more than 20 mins | ||
| endpoint_name = "1121351227238514688" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The integration test relies on a hardcoded endpoint name. This makes the test fragile and dependent on an external resource that might change or be deleted, causing test failures. While the TODO comment acknowledges this, it's important to prioritize making this test self-contained. Consider using a test fixture that programmatically creates a temporary endpoint for the test run and tears it down afterwards to ensure the test is reliable and independent of pre-existing infrastructure.
No description provided.