-
Notifications
You must be signed in to change notification settings - Fork 30
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
(WIP) Switch ragged multi-hot columns with two Triton arrays to a single ColumnSchema
#173
Conversation
Click to view CI ResultsGitHub pull request #173 of commit 4d0a56dc6c9fa8d2368e4765b39ab97cfe5e5abb, no merge conflicts. Running as SYSTEM Setting status of 4d0a56dc6c9fa8d2368e4765b39ab97cfe5e5abb to PENDING with url https://10.20.13.93:8080/job/merlin_systems/290/console and message: 'Pending' Using context: Jenkins Building on master in workspace /var/jenkins_home/workspace/merlin_systems using credential fce1c729-5d7c-48e8-90cb-b0c314b1076e > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url https://github.com/NVIDIA-Merlin/systems # timeout=10 Fetching upstream changes from https://github.com/NVIDIA-Merlin/systems > git --version # timeout=10 using GIT_ASKPASS to set credentials login for merlin-systems user + githubtoken > git fetch --tags --force --progress -- https://github.com/NVIDIA-Merlin/systems +refs/pull/173/*:refs/remotes/origin/pr/173/* # timeout=10 > git rev-parse 4d0a56dc6c9fa8d2368e4765b39ab97cfe5e5abb^{commit} # timeout=10 Checking out Revision 4d0a56dc6c9fa8d2368e4765b39ab97cfe5e5abb (detached) > git config core.sparsecheckout # timeout=10 > git checkout -f 4d0a56dc6c9fa8d2368e4765b39ab97cfe5e5abb # timeout=10 Commit message: "Make Feast multi-hot outputs have a single `ColumnSchema`" > git rev-list --no-walk abb2fd12b59e6153e1044b04ff34917131b2cae5 # timeout=10 [merlin_systems] $ /bin/bash /tmp/jenkins9099401084282130726.sh PYTHONPATH=:/usr/local/lib/python3.8/dist-packages/:/usr/local/hugectr/lib:/var/jenkins_home/workspace/merlin_systems/systems ============================= test session starts ============================== platform linux -- Python 3.8.10, pytest-7.1.2, pluggy-1.0.0 rootdir: /var/jenkins_home/workspace/merlin_systems/systems, configfile: pyproject.toml plugins: anyio-3.6.1, xdist-2.5.0, forked-1.4.0, cov-3.0.0 collected 68 items |
Documentation preview |
Click to view CI ResultsGitHub pull request #173 of commit f20c01faebd201df31a653ea6178b09d299613c3, no merge conflicts. Running as SYSTEM Setting status of f20c01faebd201df31a653ea6178b09d299613c3 to PENDING with url https://10.20.13.93:8080/job/merlin_systems/296/console and message: 'Pending' Using context: Jenkins Building on master in workspace /var/jenkins_home/workspace/merlin_systems using credential fce1c729-5d7c-48e8-90cb-b0c314b1076e > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url https://github.com/NVIDIA-Merlin/systems # timeout=10 Fetching upstream changes from https://github.com/NVIDIA-Merlin/systems > git --version # timeout=10 using GIT_ASKPASS to set credentials login for merlin-systems user + githubtoken > git fetch --tags --force --progress -- https://github.com/NVIDIA-Merlin/systems +refs/pull/173/*:refs/remotes/origin/pr/173/* # timeout=10 > git rev-parse f20c01faebd201df31a653ea6178b09d299613c3^{commit} # timeout=10 Checking out Revision f20c01faebd201df31a653ea6178b09d299613c3 (detached) > git config core.sparsecheckout # timeout=10 > git checkout -f f20c01faebd201df31a653ea6178b09d299613c3 # timeout=10 Commit message: "(WIP) Find multi-hots via column suffixes" > git rev-list --no-walk bfc1c6d4c8654a79d769ecae8168cb0eafb10745 # timeout=10 [merlin_systems] $ /bin/bash /tmp/jenkins17946214776895484844.sh PYTHONPATH=:/usr/local/lib/python3.8/dist-packages/:/usr/local/hugectr/lib:/var/jenkins_home/workspace/merlin_systems/systems ============================= test session starts ============================== platform linux -- Python 3.8.10, pytest-7.1.2, pluggy-1.0.0 rootdir: /var/jenkins_home/workspace/merlin_systems/systems, configfile: pyproject.toml plugins: anyio-3.6.1, xdist-2.5.0, forked-1.4.0, cov-3.0.0 collected 69 items kwargs = {}, cell_indexes = [0, 1, 2, 3, 4, 5, ...] executed_cells = [{'cell_type': 'code', 'execution_count': 2, 'id': '620dd990', 'metadata': {'execution': {'iopub.status.busy': '2022-0...\nworkflow_stored_path = os.path.join(input_path, "workflow")\n\nworkflow = Workflow.load(workflow_stored_path)'}, ...] idx = 13
/usr/local/lib/python3.8/dist-packages/testbook/client.py:133: args = (<testbook.client.TestbookNotebookClient object at 0x7efc22af92e0>, {'cell_type': 'code', 'execution_count': 8, 'id': ...erving_operators = workflow.input_schema.column_names >> TransformWorkflow(workflow) >> PredictTensorflow(model)'}, 13)
/usr/local/lib/python3.8/dist-packages/nbclient/util.py:85: coro = <coroutine object NotebookClient.async_execute_cell at 0x7efb2c6f86c0>
/usr/local/lib/python3.8/dist-packages/nbclient/util.py:60: self = <_UnixSelectorEventLoop running=False closed=False debug=False>
/usr/lib/python3.8/asyncio/base_events.py:616: self = <testbook.client.TestbookNotebookClient object at 0x7efc22af92e0>
/usr/local/lib/python3.8/dist-packages/nbclient/client.py:1025: self = <testbook.client.TestbookNotebookClient object at 0x7efc22af92e0>
E nbclient.exceptions.CellExecutionError: An error occurred while executing the following cell: /usr/local/lib/python3.8/dist-packages/nbclient/client.py:919: CellExecutionError During handling of the above exception, another exception occurred: tb = <testbook.client.TestbookNotebookClient object at 0x7efc22af92e0>
tests/unit/examples/test_serving_ranking_models_with_merlin_systems.py:85: self = <testbook.client.TestbookNotebookClient object at 0x7efc22af92e0> kwargs = {}, cell_indexes = [0, 1, 2, 3, 4, 5, ...] executed_cells = [{'cell_type': 'code', 'execution_count': 2, 'id': '620dd990', 'metadata': {'execution': {'iopub.status.busy': '2022-0...\nworkflow_stored_path = os.path.join(input_path, "workflow")\n\nworkflow = Workflow.load(workflow_stored_path)'}, ...] idx = 13
E testbook.exceptions.TestbookRuntimeError: An error occurred while executing the following cell: /usr/local/lib/python3.8/dist-packages/testbook/client.py:135: TestbookRuntimeError 1/1368 [..............................] - ETA: 1:49:09 - loss: 0.6926 - auc: 0.5625 - regularization_loss: 0.0000e+00������������������������������������������������������������������������������������������������������������������������ tmpdir = local('/tmp/pytest-of-jenkins/pytest-6/test_workflow_tf_e2e_config_ve0')
tests/unit/systems/tf/test_ensemble.py:86: merlin/systems/dag/ops/tensorflow.py:62: in init self = <merlin.systems.dag.ops.tensorflow.PredictTensorflow object at 0x7efa6355b460>
E AttributeError: 'list' object has no attribute 'join' merlin/systems/dag/ops/tensorflow.py:158: AttributeError tmpdir = local('/tmp/pytest-of-jenkins/pytest-6/test_workflow_tf_e2e_multi_op_0')
tests/unit/systems/tf/test_ensemble.py:141: merlin/systems/dag/ops/tensorflow.py:62: in init self = <merlin.systems.dag.ops.tensorflow.PredictTensorflow object at 0x7efb61c3e0a0>
E AttributeError: 'list' object has no attribute 'join' merlin/systems/dag/ops/tensorflow.py:158: AttributeError tmpdir = local('/tmp/pytest-of-jenkins/pytest-6/test_tf_op_exports_own_config0')
tests/unit/systems/tf/test_tf_op.py:55: merlin/systems/dag/ops/tensorflow.py:62: in init self = <merlin.systems.dag.ops.tensorflow.PredictTensorflow object at 0x7efa6364ae80>
E AttributeError: 'list' object has no attribute 'join' merlin/systems/dag/ops/tensorflow.py:158: AttributeError
tests/unit/systems/tf/test_tf_op.py:94: merlin/systems/dag/ops/tensorflow.py:62: in init self = <merlin.systems.dag.ops.tensorflow.PredictTensorflow object at 0x7efb0c08fa00>
E AttributeError: 'list' object has no attribute 'join' merlin/systems/dag/ops/tensorflow.py:158: AttributeError
tests/unit/systems/tf/test_tf_op.py:117: merlin/systems/dag/ops/tensorflow.py:62: in init self = <merlin.systems.dag.ops.tensorflow.PredictTensorflow object at 0x7efb0c5f6e80>
E AttributeError: 'list' object has no attribute 'join' merlin/systems/dag/ops/tensorflow.py:158: AttributeError
tests/unit/systems/tf/test_tf_op.py:146: merlin/systems/dag/ops/tensorflow.py:62: in init self = <merlin.systems.dag.ops.tensorflow.PredictTensorflow object at 0x7efb2c268f70>
E AttributeError: 'list' object has no attribute 'join' merlin/systems/dag/ops/tensorflow.py:158: AttributeError
tests/unit/systems/tf/test_tf_op.py:190: merlin/systems/dag/ops/tensorflow.py:62: in init self = <merlin.systems.dag.ops.tensorflow.PredictTensorflow object at 0x7efb61b7fd60>
E AttributeError: 'list' object has no attribute 'join' merlin/systems/dag/ops/tensorflow.py:158: AttributeError tests/unit/examples/test_serving_ranking_models_with_merlin_systems.py: 1 warning tests/unit/systems/test_export.py::test_export_run_ensemble_triton[tensorflow-parquet] tests/unit/systems/test_export.py::test_export_run_ensemble_triton[tensorflow-parquet] tests/unit/systems/test_export.py::test_export_run_ensemble_triton[tensorflow-parquet] tests/unit/systems/fil/test_fil.py::test_binary_classifier_default[sklearn_forest_classifier-get_model_params4] tests/unit/systems/fil/test_forest.py::test_export_merlin_models tests/unit/systems/implicit/test_implicit.py::test_reload_from_config[AlternatingLeastSquares] tests/unit/systems/torch/test_torch.py::test_pytorch_op_serving[True-True] -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html |
This is gross, but I can't figure out how else to do it without having a saved schema that goes with the model
f20c01f
to
7cf6545
Compare
Click to view CI ResultsGitHub pull request #173 of commit 7cf6545c6b2af36ee6ddec24ccc74e7d28cdeddd, no merge conflicts. Running as SYSTEM Setting status of 7cf6545c6b2af36ee6ddec24ccc74e7d28cdeddd to PENDING with url https://10.20.13.93:8080/job/merlin_systems/301/console and message: 'Pending' Using context: Jenkins Building on master in workspace /var/jenkins_home/workspace/merlin_systems using credential fce1c729-5d7c-48e8-90cb-b0c314b1076e > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url https://github.com/NVIDIA-Merlin/systems # timeout=10 Fetching upstream changes from https://github.com/NVIDIA-Merlin/systems > git --version # timeout=10 using GIT_ASKPASS to set credentials login for merlin-systems user + githubtoken > git fetch --tags --force --progress -- https://github.com/NVIDIA-Merlin/systems +refs/pull/173/*:refs/remotes/origin/pr/173/* # timeout=10 > git rev-parse 7cf6545c6b2af36ee6ddec24ccc74e7d28cdeddd^{commit} # timeout=10 Checking out Revision 7cf6545c6b2af36ee6ddec24ccc74e7d28cdeddd (detached) > git config core.sparsecheckout # timeout=10 > git checkout -f 7cf6545c6b2af36ee6ddec24ccc74e7d28cdeddd # timeout=10 Commit message: "(WIP) Find multi-hots via column suffixes" > git rev-list --no-walk 987b0c667f12f6eaf47c75d8187cda8532a95e28 # timeout=10 [merlin_systems] $ /bin/bash /tmp/jenkins7216275840953778883.sh PYTHONPATH=:/usr/local/lib/python3.8/dist-packages/:/usr/local/hugectr/lib:/var/jenkins_home/workspace/merlin_systems/systems ============================= test session starts ============================== platform linux -- Python 3.8.10, pytest-7.1.2, pluggy-1.0.0 rootdir: /var/jenkins_home/workspace/merlin_systems/systems, configfile: pyproject.toml plugins: anyio-3.6.1, xdist-2.5.0, forked-1.4.0, cov-3.0.0 collected 69 items kwargs = {}, cell_indexes = [0, 1, 2, 3, 4, 5, ...] executed_cells = [{'cell_type': 'code', 'execution_count': 2, 'id': '620dd990', 'metadata': {'execution': {'iopub.status.busy': '2022-0...\nworkflow_stored_path = os.path.join(input_path, "workflow")\n\nworkflow = Workflow.load(workflow_stored_path)'}, ...] idx = 13
/usr/local/lib/python3.8/dist-packages/testbook/client.py:133: args = (<testbook.client.TestbookNotebookClient object at 0x7f20cb5012e0>, {'cell_type': 'code', 'execution_count': 8, 'id': ...erving_operators = workflow.input_schema.column_names >> TransformWorkflow(workflow) >> PredictTensorflow(model)'}, 13)
/usr/local/lib/python3.8/dist-packages/nbclient/util.py:85: coro = <coroutine object NotebookClient.async_execute_cell at 0x7f20204f7440>
/usr/local/lib/python3.8/dist-packages/nbclient/util.py:60: self = <_UnixSelectorEventLoop running=False closed=False debug=False>
/usr/lib/python3.8/asyncio/base_events.py:616: self = <testbook.client.TestbookNotebookClient object at 0x7f20cb5012e0>
/usr/local/lib/python3.8/dist-packages/nbclient/client.py:1025: self = <testbook.client.TestbookNotebookClient object at 0x7f20cb5012e0>
E nbclient.exceptions.CellExecutionError: An error occurred while executing the following cell: /usr/local/lib/python3.8/dist-packages/nbclient/client.py:919: CellExecutionError During handling of the above exception, another exception occurred: tb = <testbook.client.TestbookNotebookClient object at 0x7f20cb5012e0>
tests/unit/examples/test_serving_ranking_models_with_merlin_systems.py:85: self = <testbook.client.TestbookNotebookClient object at 0x7f20cb5012e0> kwargs = {}, cell_indexes = [0, 1, 2, 3, 4, 5, ...] executed_cells = [{'cell_type': 'code', 'execution_count': 2, 'id': '620dd990', 'metadata': {'execution': {'iopub.status.busy': '2022-0...\nworkflow_stored_path = os.path.join(input_path, "workflow")\n\nworkflow = Workflow.load(workflow_stored_path)'}, ...] idx = 13
E testbook.exceptions.TestbookRuntimeError: An error occurred while executing the following cell: /usr/local/lib/python3.8/dist-packages/testbook/client.py:135: TestbookRuntimeError 1/1368 [..............................] - ETA: 1:51:27 - loss: 0.6932 - auc: 0.5108 - regularization_loss: 0.0000e+00������������������������������������������������������������������������������������������������������������������������ tmpdir = local('/tmp/pytest-of-jenkins/pytest-10/test_workflow_tf_e2e_config_ve0')
tests/unit/systems/ops/tf/test_ensemble.py:86: merlin/systems/dag/ops/tensorflow.py:62: in init self = <merlin.systems.dag.ops.tensorflow.PredictTensorflow object at 0x7f202065ebb0>
E AttributeError: 'list' object has no attribute 'join' merlin/systems/dag/ops/tensorflow.py:158: AttributeError tmpdir = local('/tmp/pytest-of-jenkins/pytest-10/test_workflow_tf_e2e_multi_op_0')
tests/unit/systems/ops/tf/test_ensemble.py:141: merlin/systems/dag/ops/tensorflow.py:62: in init self = <merlin.systems.dag.ops.tensorflow.PredictTensorflow object at 0x7f20601076a0>
E AttributeError: 'list' object has no attribute 'join' merlin/systems/dag/ops/tensorflow.py:158: AttributeError tmpdir = local('/tmp/pytest-of-jenkins/pytest-10/test_tf_op_exports_own_config0')
tests/unit/systems/ops/tf/test_op.py:55: merlin/systems/dag/ops/tensorflow.py:62: in init self = <merlin.systems.dag.ops.tensorflow.PredictTensorflow object at 0x7f1f11e46070>
E AttributeError: 'list' object has no attribute 'join' merlin/systems/dag/ops/tensorflow.py:158: AttributeError
tests/unit/systems/ops/tf/test_op.py:94: merlin/systems/dag/ops/tensorflow.py:62: in init self = <merlin.systems.dag.ops.tensorflow.PredictTensorflow object at 0x7f20080f01c0>
E AttributeError: 'list' object has no attribute 'join' merlin/systems/dag/ops/tensorflow.py:158: AttributeError
tests/unit/systems/ops/tf/test_op.py:117: merlin/systems/dag/ops/tensorflow.py:62: in init self = <merlin.systems.dag.ops.tensorflow.PredictTensorflow object at 0x7f1f11da2520>
E AttributeError: 'list' object has no attribute 'join' merlin/systems/dag/ops/tensorflow.py:158: AttributeError
tests/unit/systems/ops/tf/test_op.py:146: merlin/systems/dag/ops/tensorflow.py:62: in init self = <merlin.systems.dag.ops.tensorflow.PredictTensorflow object at 0x7f1f114e7130>
E AttributeError: 'list' object has no attribute 'join' merlin/systems/dag/ops/tensorflow.py:158: AttributeError
tests/unit/systems/ops/tf/test_op.py:190: merlin/systems/dag/ops/tensorflow.py:62: in init self = <merlin.systems.dag.ops.tensorflow.PredictTensorflow object at 0x7f1f11488520>
E AttributeError: 'list' object has no attribute 'join' merlin/systems/dag/ops/tensorflow.py:158: AttributeError tests/unit/examples/test_serving_ranking_models_with_merlin_systems.py: 1 warning tests/unit/systems/test_export.py::test_export_run_ensemble_triton[tensorflow-parquet] tests/unit/systems/test_export.py::test_export_run_ensemble_triton[tensorflow-parquet] tests/unit/systems/test_export.py::test_export_run_ensemble_triton[tensorflow-parquet] tests/unit/systems/ops/fil/test_forest.py::test_export_merlin_models tests/unit/systems/ops/fil/test_op.py::test_binary_classifier_default[sklearn_forest_classifier-get_model_params4] tests/unit/systems/ops/implicit/test_op.py::test_reload_from_config[AlternatingLeastSquares] tests/unit/systems/ops/torch/test_op.py::test_pytorch_op_serving[True-True] -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html |
Depends on #170.
This PR aims to clarify how ragged multi-hot columns that are stored in
values
/offsets
format relate to Merlin schemas. Since the two arrays are a detail of the storage format and form one "logical" column together, this PR aims to standardize on a singleColumnSchema
. This will work better with the graph construction code, so that the user-facing API only involves a schema forcol_name
and doesn't rely on knowing aboutcol_name_1
andcol_name_2
.Operators that need updates: