google-cloud-pipeline-components 2.19.0__py3-none-any.whl → 2.20.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of google-cloud-pipeline-components might be problematic. Click here for more details.
- google_cloud_pipeline_components/_implementation/starry_net/get_training_artifacts/component.py +2 -2
- google_cloud_pipeline_components/_implementation/starry_net/set_test_set/component.py +1 -1
- google_cloud_pipeline_components/_implementation/starry_net/upload_decomposition_plots/component.py +7 -4
- google_cloud_pipeline_components/_implementation/starry_net/version.py +3 -3
- google_cloud_pipeline_components/proto/README.md +49 -0
- google_cloud_pipeline_components/proto/gcp_resources.proto +25 -0
- google_cloud_pipeline_components/proto/task_error.proto +11 -0
- google_cloud_pipeline_components/proto/template_metadata.proto +323 -0
- google_cloud_pipeline_components/version.py +1 -1
- {google_cloud_pipeline_components-2.19.0.dist-info → google_cloud_pipeline_components-2.20.0.dist-info}/METADATA +18 -21
- {google_cloud_pipeline_components-2.19.0.dist-info → google_cloud_pipeline_components-2.20.0.dist-info}/RECORD +14 -18
- {google_cloud_pipeline_components-2.19.0.dist-info → google_cloud_pipeline_components-2.20.0.dist-info}/WHEEL +1 -1
- google_cloud_pipeline_components/_implementation/model_evaluation/import_evaluation/__init__.py +0 -14
- google_cloud_pipeline_components/_implementation/model_evaluation/import_evaluation/component.py +0 -208
- google_cloud_pipeline_components/preview/model_evaluation/evaluation_llm_classification_pipeline.py +0 -180
- google_cloud_pipeline_components/preview/model_evaluation/evaluation_llm_text_generation_pipeline.py +0 -178
- google_cloud_pipeline_components/preview/model_evaluation/model_based_llm_evaluation/__init__.py +0 -20
- google_cloud_pipeline_components/preview/model_evaluation/model_based_llm_evaluation/autosxs/__init__.py +0 -13
- google_cloud_pipeline_components/preview/model_evaluation/model_based_llm_evaluation/autosxs/autosxs_pipeline.py +0 -109
- google_cloud_pipeline_components/proto/preflight_validations_pb2.py +0 -58
- {google_cloud_pipeline_components-2.19.0.dist-info → google_cloud_pipeline_components-2.20.0.dist-info}/LICENSE +0 -0
- {google_cloud_pipeline_components-2.19.0.dist-info → google_cloud_pipeline_components-2.20.0.dist-info}/top_level.txt +0 -0
google_cloud_pipeline_components/_implementation/model_evaluation/import_evaluation/__init__.py
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
# Copyright 2023 The Kubeflow Authors. All Rights Reserved.
|
|
2
|
-
#
|
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
-
# you may not use this file except in compliance with the License.
|
|
5
|
-
# You may obtain a copy of the License at
|
|
6
|
-
#
|
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
-
#
|
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
-
# See the License for the specific language governing permissions and
|
|
13
|
-
# limitations under the License.
|
|
14
|
-
"""Google Cloud Pipeline Evaluation Import Evaluation Component."""
|
google_cloud_pipeline_components/_implementation/model_evaluation/import_evaluation/component.py
DELETED
|
@@ -1,208 +0,0 @@
|
|
|
1
|
-
# Copyright 2023 The Kubeflow Authors. All Rights Reserved.
|
|
2
|
-
#
|
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
-
# you may not use this file except in compliance with the License.
|
|
5
|
-
# You may obtain a copy of the License at
|
|
6
|
-
#
|
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
-
#
|
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
-
# See the License for the specific language governing permissions and
|
|
13
|
-
# limitations under the License.
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
from typing import List, Optional
|
|
17
|
-
|
|
18
|
-
from google_cloud_pipeline_components import _image
|
|
19
|
-
from google_cloud_pipeline_components.types.artifact_types import ClassificationMetrics
|
|
20
|
-
from google_cloud_pipeline_components.types.artifact_types import ForecastingMetrics
|
|
21
|
-
from google_cloud_pipeline_components.types.artifact_types import RegressionMetrics
|
|
22
|
-
from google_cloud_pipeline_components.types.artifact_types import VertexModel
|
|
23
|
-
from kfp import dsl
|
|
24
|
-
from kfp.dsl import Input
|
|
25
|
-
from kfp.dsl import Metrics
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
@dsl.container_component
|
|
29
|
-
def model_evaluation_import(
|
|
30
|
-
model: Input[VertexModel],
|
|
31
|
-
gcp_resources: dsl.OutputPath(str),
|
|
32
|
-
evaluation_resource_name: dsl.OutputPath(str),
|
|
33
|
-
metrics: Optional[Input[Metrics]] = None,
|
|
34
|
-
row_based_metrics: Optional[Input[Metrics]] = None,
|
|
35
|
-
problem_type: Optional[str] = None,
|
|
36
|
-
classification_metrics: Optional[Input[ClassificationMetrics]] = None,
|
|
37
|
-
forecasting_metrics: Optional[Input[ForecastingMetrics]] = None,
|
|
38
|
-
regression_metrics: Optional[Input[RegressionMetrics]] = None,
|
|
39
|
-
text_generation_metrics: Optional[Input[Metrics]] = None,
|
|
40
|
-
question_answering_metrics: Optional[Input[Metrics]] = None,
|
|
41
|
-
summarization_metrics: Optional[Input[Metrics]] = None,
|
|
42
|
-
explanation: Optional[Input[Metrics]] = None,
|
|
43
|
-
feature_attributions: Optional[Input[Metrics]] = None,
|
|
44
|
-
embedding_metrics: Optional[Input[Metrics]] = None,
|
|
45
|
-
display_name: str = "",
|
|
46
|
-
dataset_path: str = "",
|
|
47
|
-
dataset_paths: List[str] = [],
|
|
48
|
-
dataset_type: str = "",
|
|
49
|
-
):
|
|
50
|
-
# fmt: off
|
|
51
|
-
"""Imports a model evaluation artifact to an existing Vertex model with
|
|
52
|
-
ModelService.ImportModelEvaluation.
|
|
53
|
-
|
|
54
|
-
For more details, see
|
|
55
|
-
https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.models.evaluations
|
|
56
|
-
One of the four metrics inputs must be provided, metrics & problem_type,
|
|
57
|
-
classification_metrics, regression_metrics, or forecasting_metrics.
|
|
58
|
-
|
|
59
|
-
Args:
|
|
60
|
-
model: Vertex model resource that will be the parent resource of the
|
|
61
|
-
uploaded evaluation.
|
|
62
|
-
metrics: Path of metrics generated from an evaluation component.
|
|
63
|
-
row_based_metrics:
|
|
64
|
-
Path of row_based_metrics generated from an evaluation component.
|
|
65
|
-
problem_type: The problem type of the metrics being imported to the
|
|
66
|
-
VertexModel. `classification`, `regression`, `forecasting`,
|
|
67
|
-
`text-generation`, `question-answering`, and `summarization` are the
|
|
68
|
-
currently supported problem types. Must be provided when `metrics` is
|
|
69
|
-
provided.
|
|
70
|
-
classification_metrics: google.ClassificationMetrics artifact generated from
|
|
71
|
-
the ModelEvaluationClassificationOp component.
|
|
72
|
-
forecasting_metrics: google.ForecastingMetrics artifact generated from
|
|
73
|
-
the ModelEvaluationForecastingOp component.
|
|
74
|
-
regression_metrics: google.ClassificationMetrics artifact generated from
|
|
75
|
-
the ModelEvaluationRegressionOp component.
|
|
76
|
-
text_generation_metrics: system.Metrics artifact generated from
|
|
77
|
-
the LLMEvaluationTextGenerationOp component. Subject to change to
|
|
78
|
-
google.TextGenerationMetrics.
|
|
79
|
-
question_answering_metrics: system.Metrics artifact generated from
|
|
80
|
-
the LLMEvaluationTextGenerationOp component. Subject to change to
|
|
81
|
-
google.QuestionAnsweringMetrics.
|
|
82
|
-
summarization_metrics: system.Metrics artifact generated from
|
|
83
|
-
the LLMEvaluationTextGenerationOp component. Subject to change to
|
|
84
|
-
google.SummarizationMetrics.
|
|
85
|
-
explanation: Path for model explanation metrics generated from an evaluation
|
|
86
|
-
component.
|
|
87
|
-
feature_attributions: The feature attributions metrics artifact generated
|
|
88
|
-
from the feature attribution component.
|
|
89
|
-
embedding_metrics: The embedding metrics artifact generated from the
|
|
90
|
-
embedding retrieval metrics component.
|
|
91
|
-
display_name: The display name for the uploaded model evaluation resource.
|
|
92
|
-
"""
|
|
93
|
-
# fmt: on
|
|
94
|
-
return dsl.ContainerSpec(
|
|
95
|
-
image=_image.GCPC_IMAGE_TAG,
|
|
96
|
-
command=[
|
|
97
|
-
"python3",
|
|
98
|
-
"-u",
|
|
99
|
-
"-m",
|
|
100
|
-
"google_cloud_pipeline_components.container._implementation.model_evaluation.import_model_evaluation",
|
|
101
|
-
],
|
|
102
|
-
args=[
|
|
103
|
-
dsl.IfPresentPlaceholder(
|
|
104
|
-
input_name="metrics",
|
|
105
|
-
then=[
|
|
106
|
-
"--metrics",
|
|
107
|
-
metrics.uri,
|
|
108
|
-
"--metrics_explanation",
|
|
109
|
-
metrics.metadata["explanation_gcs_path"],
|
|
110
|
-
],
|
|
111
|
-
),
|
|
112
|
-
dsl.IfPresentPlaceholder(
|
|
113
|
-
input_name="row_based_metrics",
|
|
114
|
-
then=[
|
|
115
|
-
"--row_based_metrics",
|
|
116
|
-
row_based_metrics.uri,
|
|
117
|
-
],
|
|
118
|
-
),
|
|
119
|
-
dsl.IfPresentPlaceholder(
|
|
120
|
-
input_name="explanation",
|
|
121
|
-
then=[
|
|
122
|
-
"--explanation",
|
|
123
|
-
explanation.metadata["explanation_gcs_path"],
|
|
124
|
-
],
|
|
125
|
-
),
|
|
126
|
-
dsl.IfPresentPlaceholder(
|
|
127
|
-
input_name="classification_metrics",
|
|
128
|
-
then=[
|
|
129
|
-
"--classification_metrics",
|
|
130
|
-
classification_metrics.uri,
|
|
131
|
-
],
|
|
132
|
-
),
|
|
133
|
-
dsl.IfPresentPlaceholder(
|
|
134
|
-
input_name="forecasting_metrics",
|
|
135
|
-
then=[
|
|
136
|
-
"--forecasting_metrics",
|
|
137
|
-
forecasting_metrics.uri,
|
|
138
|
-
],
|
|
139
|
-
),
|
|
140
|
-
dsl.IfPresentPlaceholder(
|
|
141
|
-
input_name="regression_metrics",
|
|
142
|
-
then=[
|
|
143
|
-
"--regression_metrics",
|
|
144
|
-
regression_metrics.uri,
|
|
145
|
-
],
|
|
146
|
-
),
|
|
147
|
-
dsl.IfPresentPlaceholder(
|
|
148
|
-
input_name="text_generation_metrics",
|
|
149
|
-
then=[
|
|
150
|
-
"--text_generation_metrics",
|
|
151
|
-
text_generation_metrics.uri,
|
|
152
|
-
],
|
|
153
|
-
),
|
|
154
|
-
dsl.IfPresentPlaceholder(
|
|
155
|
-
input_name="question_answering_metrics",
|
|
156
|
-
then=[
|
|
157
|
-
"--question_answering_metrics",
|
|
158
|
-
question_answering_metrics.uri,
|
|
159
|
-
],
|
|
160
|
-
),
|
|
161
|
-
dsl.IfPresentPlaceholder(
|
|
162
|
-
input_name="summarization_metrics",
|
|
163
|
-
then=[
|
|
164
|
-
"--summarization_metrics",
|
|
165
|
-
summarization_metrics.uri,
|
|
166
|
-
],
|
|
167
|
-
),
|
|
168
|
-
dsl.IfPresentPlaceholder(
|
|
169
|
-
input_name="feature_attributions",
|
|
170
|
-
then=[
|
|
171
|
-
"--feature_attributions",
|
|
172
|
-
feature_attributions.uri,
|
|
173
|
-
],
|
|
174
|
-
),
|
|
175
|
-
dsl.IfPresentPlaceholder(
|
|
176
|
-
input_name="embedding_metrics",
|
|
177
|
-
then=[
|
|
178
|
-
"--embedding_metrics",
|
|
179
|
-
embedding_metrics.uri,
|
|
180
|
-
],
|
|
181
|
-
),
|
|
182
|
-
dsl.IfPresentPlaceholder(
|
|
183
|
-
input_name="problem_type",
|
|
184
|
-
then=[
|
|
185
|
-
"--problem_type",
|
|
186
|
-
problem_type,
|
|
187
|
-
],
|
|
188
|
-
),
|
|
189
|
-
"--display_name",
|
|
190
|
-
display_name,
|
|
191
|
-
"--dataset_path",
|
|
192
|
-
dataset_path,
|
|
193
|
-
"--dataset_paths",
|
|
194
|
-
dataset_paths,
|
|
195
|
-
"--dataset_type",
|
|
196
|
-
dataset_type,
|
|
197
|
-
"--pipeline_job_id",
|
|
198
|
-
dsl.PIPELINE_JOB_ID_PLACEHOLDER,
|
|
199
|
-
"--pipeline_job_resource_name",
|
|
200
|
-
dsl.PIPELINE_JOB_RESOURCE_NAME_PLACEHOLDER,
|
|
201
|
-
"--model_name",
|
|
202
|
-
model.metadata["resourceName"],
|
|
203
|
-
"--gcp_resources",
|
|
204
|
-
gcp_resources,
|
|
205
|
-
"--evaluation_resource_name",
|
|
206
|
-
evaluation_resource_name,
|
|
207
|
-
],
|
|
208
|
-
)
|
google_cloud_pipeline_components/preview/model_evaluation/evaluation_llm_classification_pipeline.py
DELETED
|
@@ -1,180 +0,0 @@
|
|
|
1
|
-
# Copyright 2023 The Kubeflow Authors. All Rights Reserved.
|
|
2
|
-
#
|
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
-
# you may not use this file except in compliance with the License.
|
|
5
|
-
# You may obtain a copy of the License at
|
|
6
|
-
#
|
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
-
#
|
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
-
# See the License for the specific language governing permissions and
|
|
13
|
-
# limitations under the License.
|
|
14
|
-
"""Vertex Gen AI Evaluation for text classification task."""
|
|
15
|
-
|
|
16
|
-
from typing import Dict, List, NamedTuple
|
|
17
|
-
|
|
18
|
-
from google_cloud_pipeline_components._implementation.model_evaluation import LLMEvaluationClassificationPredictionsPostprocessorOp
|
|
19
|
-
from google_cloud_pipeline_components._implementation.model_evaluation import LLMEvaluationPreprocessorOp
|
|
20
|
-
from google_cloud_pipeline_components._implementation.model_evaluation import ModelImportEvaluationOp
|
|
21
|
-
from google_cloud_pipeline_components.types.artifact_types import ClassificationMetrics
|
|
22
|
-
from google_cloud_pipeline_components.types.artifact_types import VertexModel
|
|
23
|
-
from google_cloud_pipeline_components.v1.batch_predict_job import ModelBatchPredictOp
|
|
24
|
-
from google_cloud_pipeline_components.v1.model_evaluation.classification_component import model_evaluation_classification as ModelEvaluationClassificationOp
|
|
25
|
-
from kfp import dsl
|
|
26
|
-
# pylint: disable=unused-argument, unexpected-keyword-arg
|
|
27
|
-
|
|
28
|
-
_PIPELINE_NAME = 'evaluation-llm-classification-pipeline'
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
@dsl.pipeline(name=_PIPELINE_NAME)
|
|
32
|
-
def evaluation_llm_classification_pipeline( # pylint: disable=dangerous-default-value
|
|
33
|
-
project: str,
|
|
34
|
-
location: str,
|
|
35
|
-
target_field_name: str,
|
|
36
|
-
batch_predict_gcs_source_uris: List[str],
|
|
37
|
-
batch_predict_gcs_destination_output_uri: str,
|
|
38
|
-
model_name: str = 'publishers/google/models/text-bison@002',
|
|
39
|
-
evaluation_task: str = 'text-classification',
|
|
40
|
-
evaluation_class_labels: List[str] = [],
|
|
41
|
-
input_field_name: str = 'input_text',
|
|
42
|
-
batch_predict_instances_format: str = 'jsonl',
|
|
43
|
-
batch_predict_predictions_format: str = 'jsonl',
|
|
44
|
-
batch_predict_model_parameters: Dict[str, str] = {},
|
|
45
|
-
machine_type: str = 'e2-highmem-16',
|
|
46
|
-
service_account: str = '',
|
|
47
|
-
network: str = '',
|
|
48
|
-
dataflow_machine_type: str = 'n1-standard-4',
|
|
49
|
-
dataflow_disk_size_gb: int = 50,
|
|
50
|
-
dataflow_max_num_workers: int = 5,
|
|
51
|
-
dataflow_service_account: str = '',
|
|
52
|
-
dataflow_subnetwork: str = '',
|
|
53
|
-
dataflow_use_public_ips: bool = True,
|
|
54
|
-
encryption_spec_key_name: str = '',
|
|
55
|
-
evaluation_display_name: str = 'evaluation-llm-classification-pipeline-{{$.pipeline_job_uuid}}',
|
|
56
|
-
) -> NamedTuple(
|
|
57
|
-
'outputs',
|
|
58
|
-
evaluation_metrics=ClassificationMetrics,
|
|
59
|
-
evaluation_resource_name=str,
|
|
60
|
-
):
|
|
61
|
-
# fmt: off
|
|
62
|
-
"""The LLM Text Classification Evaluation pipeline.
|
|
63
|
-
|
|
64
|
-
Args:
|
|
65
|
-
project: Required. The GCP project that runs the pipeline components.
|
|
66
|
-
location: Required. The GCP region that runs the pipeline components.
|
|
67
|
-
target_field_name: Required. The target field's name. Formatted to be able to find nested columns, delimited by `.`. Prefixed with 'instance.' on the component for Vertex Batch Prediction.
|
|
68
|
-
batch_predict_gcs_source_uris: Required. Google Cloud Storage URI(-s) to your instances data to run batch prediction on. The instances data should also contain the ground truth (target) data, used for evaluation. May contain wildcards. For more information on wildcards, see https://cloud.google.com/storage/docs/gsutil/addlhelp/WildcardNames. For more details about this input config, see https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.batchPredictionJobs#InputConfig.
|
|
69
|
-
batch_predict_gcs_destination_output_uri: Required. The Google Cloud Storage location of the directory where the output is to be written to.
|
|
70
|
-
model_name: The Model name used to run evaluation. Must be a publisher Model or a managed Model sharing the same ancestor location. Starting this job has no impact on any existing deployments of the Model and their resources.
|
|
71
|
-
evaluation_task: The task that the large language model will be evaluated on. The evaluation component computes a set of metrics relevant to that specific task. Currently supported Classification tasks is: `text-classification`.
|
|
72
|
-
evaluation_class_labels: The JSON array of class names for the target_field, in the same order they appear in the batch predictions input file.
|
|
73
|
-
input_field_name: The field name of the input eval dataset instances that contains the input prompts to the LLM.
|
|
74
|
-
batch_predict_instances_format: The format in which instances are given, must be one of the Model's supportedInputStorageFormats. For more details about this input config, see https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.batchPredictionJobs#InputConfig.
|
|
75
|
-
batch_predict_predictions_format: The format in which Vertex AI gives the predictions. Must be one of the Model's supportedOutputStorageFormats. For more details about this output config, see https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.batchPredictionJobs#OutputConfig.
|
|
76
|
-
batch_predict_model_parameters: A map of parameters that govern the predictions. Some acceptable parameters include: maxOutputTokens, topK, topP, and temperature.
|
|
77
|
-
machine_type: The machine type of the custom jobs in this pipeline. If not set, defaulted to `e2-highmem-16`. More details: https://cloud.google.com/compute/docs/machine-resource
|
|
78
|
-
service_account: Sets the default service account for workload run-as account. The service account running the pipeline (https://cloud.google.com/vertex-ai/docs/pipelines/configure-project#service-account) submitting jobs must have act-as permission on this run-as account. If unspecified, the Vertex AI Custom Code Service Agent(https://cloud.google.com/vertex-ai/docs/general/access-control#service-agents) for the CustomJob's project.
|
|
79
|
-
network: The full name of the Compute Engine network to which the job should be peered. For example, `projects/12345/global/networks/myVPC`. Format is of the form `projects/{project}/global/networks/{network}`. Where `{project}` is a project number, as in `12345`, and `{network}` is a network name, as in `myVPC`. To specify this field, you must have already configured VPC Network Peering for Vertex AI (https://cloud.google.com/vertex-ai/docs/general/vpc-peering). If left unspecified, the job is not peered with any network.
|
|
80
|
-
dataflow_machine_type: The Dataflow machine type for evaluation components.
|
|
81
|
-
dataflow_disk_size_gb: The disk size (in GB) of the machine executing the evaluation run. If not set, defaulted to `50`.
|
|
82
|
-
dataflow_max_num_workers: The max number of workers executing the evaluation run. If not set, defaulted to `5`.
|
|
83
|
-
dataflow_service_account: Custom service account to run Dataflow jobs.
|
|
84
|
-
dataflow_subnetwork: Dataflow's fully qualified subnetwork name, when empty the default subnetwork will be used. Example: https://cloud.google.com/dataflow/docs/guides/specifying-networks#example_network_and_subnetwork_specifications
|
|
85
|
-
dataflow_use_public_ips: Specifies whether Dataflow workers use public IP addresses.
|
|
86
|
-
encryption_spec_key_name: Customer-managed encryption key options. If set, resources created by this pipeline will be encrypted with the provided encryption key. Has the form: `projects/my-project/locations/my-location/keyRings/my-kr/cryptoKeys/my-key`. The key needs to be in the same region as where the compute resource is created.
|
|
87
|
-
evaluation_display_name: The display name of the uploaded evaluation resource to the Vertex AI model.
|
|
88
|
-
|
|
89
|
-
Returns:
|
|
90
|
-
evaluation_metrics: ClassificationMetrics Artifact for LLM Text Classification.
|
|
91
|
-
evaluation_resource_name: If run on an user's managed VertexModel, the imported evaluation resource name. Empty if run on a publisher model.
|
|
92
|
-
"""
|
|
93
|
-
# fmt: on
|
|
94
|
-
outputs = NamedTuple(
|
|
95
|
-
'outputs',
|
|
96
|
-
evaluation_metrics=ClassificationMetrics,
|
|
97
|
-
evaluation_resource_name=str,
|
|
98
|
-
)
|
|
99
|
-
|
|
100
|
-
get_vertex_model_task = dsl.importer(
|
|
101
|
-
artifact_uri=(
|
|
102
|
-
f'https://{location}-aiplatform.googleapis.com/v1/{model_name}'
|
|
103
|
-
),
|
|
104
|
-
artifact_class=VertexModel,
|
|
105
|
-
metadata={'resourceName': model_name},
|
|
106
|
-
)
|
|
107
|
-
get_vertex_model_task.set_display_name('get-vertex-model')
|
|
108
|
-
|
|
109
|
-
eval_dataset_preprocessor_task = LLMEvaluationPreprocessorOp(
|
|
110
|
-
project=project,
|
|
111
|
-
location=location,
|
|
112
|
-
gcs_source_uris=batch_predict_gcs_source_uris,
|
|
113
|
-
input_field_name=input_field_name,
|
|
114
|
-
machine_type=machine_type,
|
|
115
|
-
service_account=service_account,
|
|
116
|
-
network=network,
|
|
117
|
-
encryption_spec_key_name=encryption_spec_key_name,
|
|
118
|
-
)
|
|
119
|
-
batch_predict_task = ModelBatchPredictOp(
|
|
120
|
-
project=project,
|
|
121
|
-
location=location,
|
|
122
|
-
model=get_vertex_model_task.outputs['artifact'],
|
|
123
|
-
job_display_name='evaluation-batch-predict-{{$.pipeline_job_uuid}}-{{$.pipeline_task_uuid}}',
|
|
124
|
-
gcs_source_uris=eval_dataset_preprocessor_task.outputs[
|
|
125
|
-
'preprocessed_gcs_source_uris'
|
|
126
|
-
],
|
|
127
|
-
instances_format=batch_predict_instances_format,
|
|
128
|
-
predictions_format=batch_predict_predictions_format,
|
|
129
|
-
gcs_destination_output_uri_prefix=batch_predict_gcs_destination_output_uri,
|
|
130
|
-
model_parameters=batch_predict_model_parameters,
|
|
131
|
-
encryption_spec_key_name=encryption_spec_key_name,
|
|
132
|
-
)
|
|
133
|
-
|
|
134
|
-
postprocessor_task = LLMEvaluationClassificationPredictionsPostprocessorOp(
|
|
135
|
-
project=project,
|
|
136
|
-
batch_prediction_results=batch_predict_task.outputs[
|
|
137
|
-
'gcs_output_directory'
|
|
138
|
-
],
|
|
139
|
-
class_labels=evaluation_class_labels,
|
|
140
|
-
location=location,
|
|
141
|
-
machine_type=machine_type,
|
|
142
|
-
network=network,
|
|
143
|
-
service_account=service_account,
|
|
144
|
-
encryption_spec_key_name=encryption_spec_key_name,
|
|
145
|
-
)
|
|
146
|
-
|
|
147
|
-
eval_task = ModelEvaluationClassificationOp(
|
|
148
|
-
project=project,
|
|
149
|
-
location=location,
|
|
150
|
-
class_labels=postprocessor_task.outputs['postprocessed_class_labels'],
|
|
151
|
-
target_field_name=target_field_name,
|
|
152
|
-
predictions_gcs_source=postprocessor_task.outputs[
|
|
153
|
-
'postprocessed_predictions_gcs_source'
|
|
154
|
-
],
|
|
155
|
-
prediction_label_column='prediction.classes',
|
|
156
|
-
prediction_score_column='prediction.scores',
|
|
157
|
-
predictions_format=batch_predict_predictions_format,
|
|
158
|
-
dataflow_machine_type=dataflow_machine_type,
|
|
159
|
-
dataflow_max_workers_num=dataflow_max_num_workers,
|
|
160
|
-
dataflow_disk_size_gb=dataflow_disk_size_gb,
|
|
161
|
-
dataflow_service_account=dataflow_service_account,
|
|
162
|
-
dataflow_subnetwork=dataflow_subnetwork,
|
|
163
|
-
dataflow_use_public_ips=dataflow_use_public_ips,
|
|
164
|
-
encryption_spec_key_name=encryption_spec_key_name,
|
|
165
|
-
)
|
|
166
|
-
|
|
167
|
-
import_evaluation_task = ModelImportEvaluationOp(
|
|
168
|
-
classification_metrics=eval_task.outputs['evaluation_metrics'],
|
|
169
|
-
model=get_vertex_model_task.outputs['artifact'],
|
|
170
|
-
dataset_type=batch_predict_instances_format,
|
|
171
|
-
dataset_paths=batch_predict_gcs_source_uris,
|
|
172
|
-
display_name=evaluation_display_name,
|
|
173
|
-
)
|
|
174
|
-
|
|
175
|
-
return outputs(
|
|
176
|
-
evaluation_metrics=eval_task.outputs['evaluation_metrics'],
|
|
177
|
-
evaluation_resource_name=import_evaluation_task.outputs[
|
|
178
|
-
'evaluation_resource_name'
|
|
179
|
-
],
|
|
180
|
-
)
|
google_cloud_pipeline_components/preview/model_evaluation/evaluation_llm_text_generation_pipeline.py
DELETED
|
@@ -1,178 +0,0 @@
|
|
|
1
|
-
# Copyright 2023 The Kubeflow Authors. All Rights Reserved.
|
|
2
|
-
#
|
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
-
# you may not use this file except in compliance with the License.
|
|
5
|
-
# You may obtain a copy of the License at
|
|
6
|
-
#
|
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
-
#
|
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
-
# See the License for the specific language governing permissions and
|
|
13
|
-
# limitations under the License.
|
|
14
|
-
"""Vertex Gen AI Evaluation for Text Generation/QA/Summarization tasks."""
|
|
15
|
-
|
|
16
|
-
from typing import Dict, List, NamedTuple
|
|
17
|
-
|
|
18
|
-
from google_cloud_pipeline_components._implementation.model_evaluation import LLMEvaluationPreprocessorOp
|
|
19
|
-
from google_cloud_pipeline_components._implementation.model_evaluation import LLMEvaluationTextGenerationOp
|
|
20
|
-
from google_cloud_pipeline_components._implementation.model_evaluation import ModelImportEvaluationOp
|
|
21
|
-
from google_cloud_pipeline_components.types.artifact_types import VertexModel
|
|
22
|
-
from google_cloud_pipeline_components.v1.batch_predict_job import ModelBatchPredictOp
|
|
23
|
-
from kfp import dsl
|
|
24
|
-
# pylint: disable=unused-argument, unexpected-keyword-arg
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
_PIPELINE_NAME = 'evaluation-llm-text-generation-pipeline'
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
@dsl.pipeline(name=_PIPELINE_NAME)
|
|
31
|
-
def evaluation_llm_text_generation_pipeline( # pylint: disable=dangerous-default-value
|
|
32
|
-
project: str,
|
|
33
|
-
location: str,
|
|
34
|
-
batch_predict_gcs_source_uris: List[str],
|
|
35
|
-
batch_predict_gcs_destination_output_uri: str,
|
|
36
|
-
model_name: str = 'publishers/google/models/text-bison@002',
|
|
37
|
-
evaluation_task: str = 'text-generation',
|
|
38
|
-
input_field_name: str = 'input_text',
|
|
39
|
-
target_field_name: str = 'output_text',
|
|
40
|
-
batch_predict_instances_format: str = 'jsonl',
|
|
41
|
-
batch_predict_predictions_format: str = 'jsonl',
|
|
42
|
-
batch_predict_model_parameters: Dict[str, str] = {},
|
|
43
|
-
enable_row_based_metrics: bool = False,
|
|
44
|
-
machine_type: str = 'e2-highmem-16',
|
|
45
|
-
service_account: str = '',
|
|
46
|
-
network: str = '',
|
|
47
|
-
encryption_spec_key_name: str = '',
|
|
48
|
-
evaluation_display_name: str = 'evaluation-llm-text-generation-pipeline-{{$.pipeline_job_uuid}}',
|
|
49
|
-
) -> NamedTuple(
|
|
50
|
-
'outputs', evaluation_metrics=dsl.Metrics, evaluation_resource_name=str
|
|
51
|
-
):
|
|
52
|
-
# fmt: off
|
|
53
|
-
"""LLM Text Generation Evaluation pipeline.
|
|
54
|
-
|
|
55
|
-
This pipeline supports evaluating large language models, publisher or managed
|
|
56
|
-
models, performing the following generative tasks: `summarization`, `question-answering`, and `text-generation`.
|
|
57
|
-
|
|
58
|
-
Args:
|
|
59
|
-
project: Required. The GCP project that runs the pipeline components.
|
|
60
|
-
location: Required. The GCP region that runs the pipeline components.
|
|
61
|
-
batch_predict_gcs_source_uris: Required. Google Cloud Storage URI(s) to your eval dataset instances data to run batch prediction on. The instances data should also contain the ground truth (target) data, used for evaluation. May contain wildcards. For more information on [wildcards](https://cloud.google.com/storage/docs/gsutil/addlhelp/WildcardNames). For more details about this [input config](https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.batchPredictionJobs#InputConfig). The content of gcs source files should be preset to one of the following formats:
|
|
62
|
-
1) Prediction & Evaluation Dataset format, guaranteeing "prompt" and "ground_truth" attributes are included
|
|
63
|
-
{
|
|
64
|
-
"prompt": "your input/prompt text",
|
|
65
|
-
"ground_truth": "your ground truth output text"
|
|
66
|
-
}
|
|
67
|
-
or
|
|
68
|
-
2) Tuning Dataset format, guaranteeing "input_text" and "output_text" attributes are included.
|
|
69
|
-
{
|
|
70
|
-
"input_text": "your input/prompt text",
|
|
71
|
-
"output_text": "your ground truth output text"
|
|
72
|
-
}
|
|
73
|
-
batch_predict_gcs_destination_output_uri: Required. The Google Cloud Storage location of the directory where the eval pipeline output is to be written to.
|
|
74
|
-
model_name: The Model name used to run evaluation. Must be a publisher Model or a managed Model sharing the same ancestor location. Starting this job has no impact on any existing deployments of the Model and their resources.
|
|
75
|
-
evaluation_task: The task that the large language model will be evaluated on. The evaluation component computes a set of metrics relevant to that specific task. Currently supported tasks are: `summarization`, `question-answering`, `text-generation`.
|
|
76
|
-
input_field_name: The field name of the input eval dataset instances that contains the input prompts to the LLM.
|
|
77
|
-
target_field_name: The field name of the eval dataset instance that contains an example reference text response. Alternatively referred to as the ground truth (or ground_truth_column) field. If not set, defaulted to `output_text`.
|
|
78
|
-
batch_predict_instances_format: The format in which instances are given, must be one of the Model's supportedInputStorageFormats. Only "jsonl" is currently supported. For more details about this input config, see https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.batchPredictionJobs#InputConfig.
|
|
79
|
-
batch_predict_predictions_format: The format in which Vertex AI gives the predictions. Must be one of the Model's supportedOutputStorageFormats. Only "jsonl" is currently supported. For more details about this output config, see https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.batchPredictionJobs#OutputConfig.
|
|
80
|
-
batch_predict_model_parameters: A map of parameters that govern the predictions. Some acceptable parameters include: maxOutputTokens, topK, topP, and temperature.
|
|
81
|
-
enable_row_based_metrics: Flag of if row based metrics is enabled, default value is false.
|
|
82
|
-
machine_type: The machine type of this custom job. If not set, defaulted to `e2-highmem-16`. More details: https://cloud.google.com/compute/docs/machine-resource
|
|
83
|
-
service_account: Sets the default service account for workload run-as account. The service account running the pipeline (https://cloud.google.com/vertex-ai/docs/pipelines/configure-project#service-account) submitting jobs must have act-as permission on this run-as account. If unspecified, the Vertex AI Custom Code Service Agent(https://cloud.google.com/vertex-ai/docs/general/access-control#service-agents) for the CustomJob's project.
|
|
84
|
-
network: The full name of the Compute Engine network to which the job should be peered. For example, `projects/12345/global/networks/myVPC`. Format is of the form `projects/{project}/global/networks/{network}`. Where `{project}` is a project number, as in `12345`, and `{network}` is a network name, as in `myVPC`. To specify this field, you must have already configured VPC Network Peering for Vertex AI (https://cloud.google.com/vertex-ai/docs/general/vpc-peering). If left unspecified, the job is not peered with any network.
|
|
85
|
-
encryption_spec_key_name: Customer-managed encryption key options. If set, resources created by this pipeline will be encrypted with the provided encryption key. Has the form: `projects/my-project/locations/my-location/keyRings/my-kr/cryptoKeys/my-key`. The key needs to be in the same region as where the compute resource is created.
|
|
86
|
-
evaluation_display_name: The display name of the uploaded evaluation resource to the Vertex AI model.
|
|
87
|
-
|
|
88
|
-
Returns:
|
|
89
|
-
evaluation_metrics: Metrics Artifact for LLM Text Generation.
|
|
90
|
-
evaluation_resource_name: If run on a user's managed VertexModel, the imported evaluation resource name. Empty if run on a publisher model.
|
|
91
|
-
"""
|
|
92
|
-
# fmt: on
|
|
93
|
-
outputs = NamedTuple(
|
|
94
|
-
'outputs',
|
|
95
|
-
evaluation_metrics=dsl.Metrics,
|
|
96
|
-
evaluation_resource_name=str,
|
|
97
|
-
)
|
|
98
|
-
|
|
99
|
-
get_vertex_model_task = dsl.importer(
|
|
100
|
-
artifact_uri=(
|
|
101
|
-
f'https://{location}-aiplatform.googleapis.com/v1/{model_name}'
|
|
102
|
-
),
|
|
103
|
-
artifact_class=VertexModel,
|
|
104
|
-
metadata={'resourceName': model_name},
|
|
105
|
-
)
|
|
106
|
-
get_vertex_model_task.set_display_name('get-vertex-model')
|
|
107
|
-
|
|
108
|
-
eval_dataset_preprocessor_task = LLMEvaluationPreprocessorOp(
|
|
109
|
-
project=project,
|
|
110
|
-
location=location,
|
|
111
|
-
gcs_source_uris=batch_predict_gcs_source_uris,
|
|
112
|
-
input_field_name=input_field_name,
|
|
113
|
-
machine_type=machine_type,
|
|
114
|
-
service_account=service_account,
|
|
115
|
-
network=network,
|
|
116
|
-
encryption_spec_key_name=encryption_spec_key_name,
|
|
117
|
-
)
|
|
118
|
-
batch_predict_task = ModelBatchPredictOp(
|
|
119
|
-
project=project,
|
|
120
|
-
location=location,
|
|
121
|
-
model=get_vertex_model_task.outputs['artifact'],
|
|
122
|
-
job_display_name='evaluation-batch-predict-{{$.pipeline_job_uuid}}-{{$.pipeline_task_uuid}}',
|
|
123
|
-
gcs_source_uris=eval_dataset_preprocessor_task.outputs[
|
|
124
|
-
'preprocessed_gcs_source_uris'
|
|
125
|
-
],
|
|
126
|
-
instances_format=batch_predict_instances_format,
|
|
127
|
-
predictions_format=batch_predict_predictions_format,
|
|
128
|
-
gcs_destination_output_uri_prefix=batch_predict_gcs_destination_output_uri,
|
|
129
|
-
model_parameters=batch_predict_model_parameters,
|
|
130
|
-
encryption_spec_key_name=encryption_spec_key_name,
|
|
131
|
-
)
|
|
132
|
-
|
|
133
|
-
eval_task = LLMEvaluationTextGenerationOp(
|
|
134
|
-
project=project,
|
|
135
|
-
location=location,
|
|
136
|
-
evaluation_task=evaluation_task,
|
|
137
|
-
target_field_name=f'instance.{target_field_name}',
|
|
138
|
-
predictions_format=batch_predict_predictions_format,
|
|
139
|
-
enable_row_based_metrics=enable_row_based_metrics,
|
|
140
|
-
joined_predictions_gcs_source=batch_predict_task.outputs[
|
|
141
|
-
'gcs_output_directory'
|
|
142
|
-
],
|
|
143
|
-
machine_type=machine_type,
|
|
144
|
-
service_account=service_account,
|
|
145
|
-
network=network,
|
|
146
|
-
encryption_spec_key_name=encryption_spec_key_name,
|
|
147
|
-
)
|
|
148
|
-
|
|
149
|
-
with dsl.If(enable_row_based_metrics == True):
|
|
150
|
-
import_evaluation_task_with_row_based_metrics = ModelImportEvaluationOp(
|
|
151
|
-
metrics=eval_task.outputs['evaluation_metrics'],
|
|
152
|
-
row_based_metrics=eval_task.outputs['row_based_metrics'],
|
|
153
|
-
model=get_vertex_model_task.outputs['artifact'],
|
|
154
|
-
problem_type=evaluation_task,
|
|
155
|
-
dataset_type=batch_predict_predictions_format,
|
|
156
|
-
dataset_paths=batch_predict_gcs_source_uris,
|
|
157
|
-
display_name=evaluation_display_name,
|
|
158
|
-
)
|
|
159
|
-
with dsl.Else():
|
|
160
|
-
import_evaluation_task = ModelImportEvaluationOp(
|
|
161
|
-
metrics=eval_task.outputs['evaluation_metrics'],
|
|
162
|
-
model=get_vertex_model_task.outputs['artifact'],
|
|
163
|
-
problem_type=evaluation_task,
|
|
164
|
-
dataset_type=batch_predict_predictions_format,
|
|
165
|
-
dataset_paths=batch_predict_gcs_source_uris,
|
|
166
|
-
display_name=evaluation_display_name,
|
|
167
|
-
)
|
|
168
|
-
|
|
169
|
-
oneof = dsl.OneOf(
|
|
170
|
-
import_evaluation_task_with_row_based_metrics.outputs[
|
|
171
|
-
'evaluation_resource_name'
|
|
172
|
-
],
|
|
173
|
-
import_evaluation_task.outputs['evaluation_resource_name'],
|
|
174
|
-
)
|
|
175
|
-
return outputs(
|
|
176
|
-
evaluation_metrics=eval_task.outputs['evaluation_metrics'],
|
|
177
|
-
evaluation_resource_name=oneof,
|
|
178
|
-
)
|
google_cloud_pipeline_components/preview/model_evaluation/model_based_llm_evaluation/__init__.py
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
# Copyright 2023 The Kubeflow Authors. All Rights Reserved.
|
|
2
|
-
#
|
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
-
# you may not use this file except in compliance with the License.
|
|
5
|
-
# You may obtain a copy of the License at
|
|
6
|
-
#
|
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
-
#
|
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
-
# See the License for the specific language governing permissions and
|
|
13
|
-
# limitations under the License.
|
|
14
|
-
"""Model based LLM evaluation preview components."""
|
|
15
|
-
|
|
16
|
-
from google_cloud_pipeline_components.preview.model_evaluation.model_based_llm_evaluation.autosxs.autosxs_pipeline import autosxs_pipeline
|
|
17
|
-
|
|
18
|
-
__all__ = [
|
|
19
|
-
'autosxs_pipeline',
|
|
20
|
-
]
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
# Copyright 2023 The Kubeflow Authors. All Rights Reserved.
|
|
2
|
-
#
|
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
-
# you may not use this file except in compliance with the License.
|
|
5
|
-
# You may obtain a copy of the License at
|
|
6
|
-
#
|
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
-
#
|
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
-
# See the License for the specific language governing permissions and
|
|
13
|
-
# limitations under the License.
|