zhiminy/EvalEng huggingface dataset:
Repository: Giskard-AI/giskard-oss
Issue: [GSK-813] [GSK-812] test another 2



<sub>From [SyncLinear.com](https://synclinear.com) | [GSK-812](https://linear.app/giskard/issue/GSK-812/test-another-2)</sub>

<sub>[GSK-813](https://linear.app/giskard/issue/GSK-813/[gsk-812]-test-another-2)</sub>
Repository: Giskard-AI/giskard-oss
Issue: [GSK-826] Cannot load model with internal ML worker
Root cause: Configuration Error

Branch: [https://github.com/Giskard-AI/giskard/tree/feature/ai-test-v2](https://github.com/Giskard-AI/giskard/tree/feature/ai-test-v2)

# Issue:

When using internal ML worker, the load method try to read the cache folder, however it is empty due to not having a `GiskardClient` to load the artifact

# Logs

```
2023-02-16 15:06:52,088 pid:1003 MainThread giskard.ml_worker.utils.error_interceptor ERROR    Cannot find existing model credit.93112387-7bce-4b71-826e-933cfb235a65 in /Users/kevinmessiaen/giskard-home/cache/credit/models/93112387-7bce-4b71-826e-933cfb235a65
Traceback (most recent call last):
  File "/Users/kevinmessiaen/work/giskard/python-client/giskard/ml_worker/utils/error_interceptor.py", line 49, in wrapper
    res = await loop.run_in_executor(pool, behavior, request, context)
  File "/usr/local/Cellar/python@3.7/3.7.16/Frameworks/Python.framework/Versions/3.7/lib/python3.7/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/Users/kevinmessiaen/work/giskard/python-client/giskard/ml_worker/server/ml_worker_service.py", line 144, in runTestSuite
    global_arguments = self.parse_test_arguments(request.globalArguments)
  File "/Users/kevinmessiaen/work/giskard/python-client/giskard/ml_worker/server/ml_worker_service.py", line 173, in parse_test_arguments
    value = Model.download(self.client, arg.model.project_key, arg.model.id)
  File "/Users/kevinmessiaen/work/giskard/python-client/giskard/core/model.py", line 214, in download
    assert local_dir.exists(), f"Cannot find existing model {project_key}.{model_id} in {local_dir}"
```

<sub>From [SyncLinear.com](https://synclinear.com) | [GSK-826](https://linear.app/giskard/issue/GSK-826/cannot-load-model-with-internal-ml-worker)</sub>

To fix start internal ML Worker with`GSK_CACHE_DIR=projects`

<!-- From Andrey Avtomonov on Linear -->
Repository: Giskard-AI/giskard-oss
Issue: [GSK-828] Add test execution logs to the UI
Root cause: Unimplemented Feature Gap

Currently, when a test fails it's impossible to know the reason why it failed and thus, impossible to debug. We need to show the execution logs (at least the error stack trace) in the test execution UI.

<sub>From [SyncLinear.com](https://synclinear.com) | [GSK-828](https://linear.app/giskard/issue/GSK-828/add-test-execution-logs-to-the-ui)</sub>
Repository: Giskard-AI/giskard-oss
Issue: [GSK-830] Business names
Root cause: Unimplemented Feature Gap

The user should :

* Add business names to the dataset columns (asked by Malakoff)
* Add business names to the categories of categorical columns (asked by Etam)

This can be an additional argument in the Dataset object where the user provides a list of mappings

<sub>From [SyncLinear.com](https://synclinear.com) | [GSK-830](https://linear.app/giskard/issue/GSK-830/business-names)</sub>

ok

@jmsquare What do you think about a display in parenthesis for the business names in the UI:

![image.png](https://uploads.linear.app/5cb5c438-2552-41c0-89ac-b08d19e80d42/d9f297c5-b61f-46d8-b71c-6cfe4465fcbc/5080267d-a1cd-4295-87b3-d38728851eb7)

![image.png](https://uploads.linear.app/5cb5c438-2552-41c0-89ac-b08d19e80d42/f6fcae24-9fc1-4e12-8696-0d6f5714a607/60283304-3ab0-41a5-863d-df525c1a581a)

To provide in the API, we should simply have an optional dictionary I guess, something like this:

```
business_names = {
'Content': 'mail body'
}

category_business_names = {
  'days': {
    '1': 'Monday',
    ...
    '7': 'Sunday'
  }
}

Dataset(df, ...., business_names=business_names, category_business_names=category_business_names)
```

 

For editing in the UI I'm not sure where to put, maybe an edit in the `dataset`tab add a setting icon that open a modal to setup business names(⚙️):

![image.png](https://uploads.linear.app/5cb5c438-2552-41c0-89ac-b08d19e80d42/48b6db4e-b288-4898-8c95-4f778dc1b289/f68c57c7-bc8c-4723-9a5c-626423950ea1)

<!-- From kevin on Linear -->

That’s really great what you did! @kevinmessiaen . Here are my remarks:

* Have parenthesis looks good to me. Maybe the parenthesis part can have a different colour and/or font to be really distinguishable
* What about adding a tooltip too. This can help if the description is really long
* About the API, a possibility could be to have one single dictionnary called `business_names`. This list would contain `columns` and `category`
* On the UI, your idea looks great

<!-- From jmjm on Linear -->

@kevinmessiaen , did you start working on this feature or the screenshots you've posted were mockups?

<!-- From Andrey Avtomonov on Linear -->

@andreybavt Not yet, but I can do it ASAP

<!-- From kevin on Linear -->

let's keep it for the last moment in case there's time. Test part is more important

<!-- From Andrey Avtomonov on Linear -->
Repository: Giskard-AI/giskard-oss
Issue: [GSK-832] working on HuggingFace implementation
Root cause: Unimplemented Feature Gap

A HuggingFace specific class for model-specific serialisation with the new upload API.

<sub>From [SyncLinear.com](https://synclinear.com) | [GSK-832](https://linear.app/giskard/issue/GSK-832/working-on-huggingface-implementation)</sub>

@jmsquare to contact altaroad and XHR for user tests

@andreybavt to start a user test document

<!-- From Andrey Avtomonov on Linear -->
Repository: Giskard-AI/giskard-oss
Issue: [GSK-834] Blank screen when selecting connected ML worker in the setting page
Root cause: Validation Gap

[20638e52-e2d1-4b93-b56a-229c8a4ec258](https://uploads.linear.app/5cb5c438-2552-41c0-89ac-b08d19e80d42/ab24f182-451c-485a-8bb5-a75dbda445d4/20638e52-e2d1-4b93-b56a-229c8a4ec258)

On branch `feature/new-upload-api`, when trying to see the details of a connected ML worker API, the screen become blank.

<sub>From [SyncLinear.com](https://synclinear.com) | [GSK-834](https://linear.app/giskard/issue/GSK-834/blank-screen-when-selecting-connected-ml-worker-in-the-setting-page)</sub>
Repository: Giskard-AI/giskard-oss
Issue: [GSK-835] Add support for large datasets
Root cause: Architectural Constraint

Currently, in case of inspection of a large dataset if a response is too large there's an error:

```
2023-02-22 18:39:49.029 ERROR 11510 --- [  XNIO-1 task-4] a.g.w.r.c.InspectionController           : Exception in createInspection() with cause = 'ai.giskard.exception.MLWorkerException' and exception = 'RESOURCE_EXHAUSTED: gRPC message exceeds maximum size 4194304: 40063058'

io.grpc.StatusRuntimeException: RESOURCE_EXHAUSTED: gRPC message exceeds maximum size 4194304: 40063058
	at io.grpc.stub.ClientCalls.toStatusRuntimeException(ClientCalls.java:271)
	at io.grpc.stub.ClientCalls.getUnchecked(ClientCalls.java:252)
	at io.grpc.stub.ClientCalls.blockingUnaryCall(ClientCalls.java:165)
	at ai.giskard.worker.MLWorkerGrpc$MLWorkerBlockingStub.runModel(MLWorkerGrpc.java:768)
	at ai.giskard.service.ModelService.predictSerializedDataset(ModelService.java:133)
```

to reproduce:

```
    client = GiskardClient("http://localhost:9000", "...")
    german_credit_data.meta.name = 'big_data'
    german_credit_data.df = pd.concat([german_credit_data.df]*500)
    
    german_credit_model.meta.name = 'my model'
    german_credit_model.upload(client, 'credit')
    german_credit_data.save(client, 'credit')
```

<sub>From [SyncLinear.com](https://synclinear.com) | [GSK-835](https://linear.app/giskard/issue/GSK-835/add-support-for-large-datasets)</sub>

with sampling and dataset upload through http this is less of an issue

<!-- From Andrey Avtomonov on Linear -->
Repository: Giskard-AI/giskard-oss
Issue: [GSK-852] TensorFlow 2.11.0 not working on arm64
Root cause: Environment Incompatibility

Reported error by @Googleton :

```
Hash for tensorflow (2.11.0) from archive tensorflow-2.11.0-cp37-cp37m-macosx_10_14_x86_64.whl not found in known hashes (was: sha256:2c8bde1bbffc2475809d7624bfebf1aec33ca222b60897f65e45e10719450f8e)
```

To try:

* Setup arm instance on GCP
* try to install py env with tensorflow 2.9

<sub>From [SyncLinear.com](https://synclinear.com) | [GSK-852](https://linear.app/giskard/issue/GSK-852/tensorflow-2110-not-working-on-arm64)</sub>

![image.png](https://uploads.linear.app/5cb5c438-2552-41c0-89ac-b08d19e80d42/88127b98-5fff-44bf-9cc1-3d563f1a3330/fb1522ee-7d3b-46a4-98a4-5111e01be166)

After setting tesorflow and tensorflow-text version to 2.9, I got the following error during the `gradle build` execution (python 3.7.16 arch x86_64 rosetta 2):

<!-- From kevin on Linear -->

just for completeness: even though @kevinmessiaen's python is built on `x86_64`, his arch is `arm64`

<!-- From rabah on Linear -->
Repository: Giskard-AI/giskard-oss
Issue: [GSK-853] Incorrect test_disparate_impact error message
GitHub labels: v1.5

python-client/giskard/ml_worker/testing/statistical_tests.py:198

The validation is done on target column value, but error message is about target column name

<sub>From [SyncLinear.com](https://synclinear.com) | [GSK-853](https://linear.app/giskard/issue/GSK-853/incorrect-test-disparate-impact-error-message)</sub>

fixed here: [https://github.com/Giskard-AI/giskard/pull/878](https://github.com/Giskard-AI/giskard/pull/878)

<!-- From rabah on Linear -->
Repository: Giskard-AI/giskard-oss
Issue: [GSK-854] Disparate impact test doesn't work in case of numeric classification_labels
Root cause: Validation Gap

to reproduce:

1. Take "Credit scoring classification_model" demo notebook
2. add `credit.default = credit.default.apply(lambda x: 1 if x=='Default' else 0)`  after the credit dataset is created
3. follow the rest of the notebook until the upload_model_and_df
4. create a test suite automatically
5. run disparate impact test

<sub>From [SyncLinear.com](https://synclinear.com) | [GSK-854](https://linear.app/giskard/issue/GSK-854/disparate-impact-test-doesnt-work-in-case-of-numeric-classification)</sub>

Thanks Andrey, I'll have a look asap!

fixed here: [https://github.com/Giskard-AI/giskard/pull/878](https://github.com/Giskard-AI/giskard/pull/878)

<!-- From rabah on Linear -->
Repository: Giskard-AI/giskard-oss
Issue: [GSK-856] Giskard gallery

The goal is to give a public access to [gallery.giskard.ai](http://gallery.giskard.ai).

In this environment, we should

* disable new artifact upload
* disable new filter creation/existing filter editing (because it’s arbitrary code)
* disable test creation/editing (because it’s arbitrary code)

The environment should contain german credit scoring, house pricing and twitter analysis data with feedback and a test suite

This demo environment will also be useful to document the tests

<sub>From [SyncLinear.com](https://synclinear.com) | [GSK-856](https://linear.app/giskard/issue/GSK-856/giskard-gallery)</sub>

Replaced by GSK-1591
Repository: Giskard-AI/giskard-oss
Issue: GSK-857 Create a better error message for when a user keeps the target in the feature_names
Root cause: Validation Gap

### Issue Type

Performance

### Source

source

### Giskard Library Version

N/R

### Giskard Server Version

N/R

### OS Platform and Distribution

_No response_

### Python version

_No response_

### Installed python packages

_No response_

### Current Behaviour?

```shell
f"The following columns are not found in the dataset: {', '.join(sorted(column_names))}"
E   ValueError: The following columns are not found in the dataset: target
```


### Standalone code OR list down the steps to reproduce the issue

```shell
put the target in the feature_names list
```


### Relevant log output

_No response_

fixed
Repository: Giskard-AI/giskard-oss
Issue: [GSK-859] Improve the `infer_column_types` in Dataset
Root cause: Unimplemented Feature Gap

Today we implement a very minimal inference: [https://github.com/Giskard-AI/giskard/blob/8ea2077173bb739a6fa526e45fd1ec90ee0317ae/python-client/giskard/ml_worker/core/dataset.py#L60-L71](https://github.com/Giskard-AI/giskard/blob/8ea2077173bb739a6fa526e45fd1ec90ee0317ae/python-client/giskard/ml_worker/core/dataset.py#L60-L71)

We should do better. One way to do it, is implemented by DeepChecks: [https://github.com/deepchecks/deepchecks/blob/279ea72d8f5ff79e567cc6734a47b02311bbfb9d/deepchecks/utils/features.py#L348](https://github.com/deepchecks/deepchecks/blob/279ea72d8f5ff79e567cc6734a47b02311bbfb9d/deepchecks/utils/features.py#L348)

<sub>From [SyncLinear.com](https://synclinear.com) | [GSK-859](https://linear.app/giskard/issue/GSK-859/improve-the-infer-column-types-in-dataset)</sub>

@mattbit, is this solved. If yes can you put it as Done? 

<!-- From jmjm on Linear -->

Yep, it was handled by @rabah-khalek-khalek, it is done!

<!-- From Matteo Dora on Linear -->
Repository: Giskard-AI/giskard-oss
Issue: [GSK-860] Propagating new upload API to giskard-examples
Root cause: Unimplemented Feature Gap

Migrate [giskard-examples](https://github.com/Giskard-AI/giskard-examples/tree/feature/new-upload-api) to the [new API](https://github.com/Giskard-AI/giskard/pull/618)

* [X] Credit scoring classification model.ipynb (RAK) — [branch](https://github.com/Giskard-AI/giskard-examples/tree/feature/new-upload-api)
* [ ] Email Classification Model.ipynb (WIP, RAK ) — [branch](https://github.com/Giskard-AI/giskard-examples/tree/feature/new-upload-api)
* [ ] House pricing regression model.ipynb (WIP, RAK) — [branch](https://github.com/Giskard-AI/giskard-examples/tree/feature/new-upload-api)
* [ ] sst2_classification_non_distributed.ipynb (WIP, @mattbit) — [PR](https://github.com/Giskard-AI/giskard-examples/pull/15)
* [X] Newspaper_classification.ipynb (@mattbit) — [branch](https://github.com/Giskard-AI/giskard-examples/tree/feature/new-upload-api)
* [ ] Lead_Scoring_Algorithm_Notebook.ipynb
* [ ] Churn_Telco_Kaggle_with_pipeline.ipynb
* [ ] Churn_Telco_Kaggle_with_pipeline_article.ipynb
* [X] SST2_binary_text_classification.ipynb
* [ ] Churn_Telco_Kaggle_without_pipeline.ipynb
* [ ] Sentiment_Analysis_for_Twitter_Data.ipynb
* [ ] Text_classification_Using_Tensorflow_Neural_Network.ipynb
* [ ] Email Classification Model for Single Text Feature.ipynb
* [X] Iris_demo.ipynb

Most unit-tests for the new upload API are based on the notebooks in giskard-examples. Example:

(old API): [https://github.com/Giskard-AI/giskard-examples/blob/feature/new-upload-api/Newspaper_classification.ipynb](https://github.com/Giskard-AI/giskard-examples/blob/feature/new-upload-api/Newspaper_classification.ipynb)

(new API): [https://github.com/Giskard-AI/giskard/blob/feature/new-upload-api/python-client/tests/pytorch/test_newspaper_classification_pytorch_dataset.py](https://github.com/Giskard-AI/giskard/blob/feature/new-upload-api/python-client/tests/pytorch/test_newspaper_classification_pytorch_dataset.py)

<sub>From [SyncLinear.com](https://synclinear.com) | [GSK-860](https://linear.app/giskard/issue/GSK-860/propagating-new-upload-api-to-giskard-examples)</sub>

<sub>From [SyncLinear.com](https://synclinear.com) | [GSK-860](https://linear.app/giskard/issue/GSK-860/propagating-new-upload-api-to-giskard-examples)</sub>
Repository: Giskard-AI/giskard-oss
Issue: [GSK-874] Dataset related issues
Root cause: Unimplemented Feature Gap

Couple of features that'll be nice to have:

* [ ] \~showing some dataset stats (like the number of entries, columns, etc.) on the frontend projects/datasets — @kevinmessiaen WDYT?\~
* [ ] \~showing the name of the dataset in the inspection window — @kevinmessiaen WDYT?\~
* [X] change infer_cat_column -> infer_column_types because we're also kind of guessing what is numeric and what is text, due to the "object" dtype. — solved in [https://github.com/Giskard-AI/giskard/commit/dce427bbe457ed3a42eb726878526d7c809bbc72](https://github.com/Giskard-AI/giskard/commit/dce427bbe457ed3a42eb726878526d7c809bbc72)
* [X] finding a final solution to the name of `feature_types` in Dataset (based on @mattbit's feedback) — solved in [https://github.com/Giskard-AI/giskard/pull/618/commits/b809e4ad7946dc137a505264f875e2189199987c](https://github.com/Giskard-AI/giskard/pull/618/commits/b809e4ad7946dc137a505264f875e2189199987c)
* [ ] Dataset inheriting from `pd.DataFrame`? (based on @mattbit's feedback) — @andreybavt WDYT?

<sub>From [SyncLinear.com](https://synclinear.com) | [GSK-874](https://linear.app/giskard/issue/GSK-874/dataset-related-issues)</sub>

To me this issue is not very urgent.

<!-- From jmjm on Linear -->

this comment was on the inheriting from `pd.DataFrame` point. I will close this issue and migrate the two first points about the UI to a new issue. 

<!-- From rabah on Linear -->

I also think that inheriting from pd.Dataframe may not be the best idea because it'll be more difficult to migrate other implementations like `arrow` (something HF did for their datasets).

<!-- From Andrey Avtomonov on Linear -->

Same for me actually, by experience `pandas` objects are quite complex and it would be painful to maintain with inheritance.

<!-- From Matteo Dora on Linear -->

anyway a rule of thumb is composition > inheritance, unless there are really good reasons for the opposite

<!-- From Andrey Avtomonov on Linear -->

Ok I will close this issue. I migrated the first two points to https://github.com/Giskard-AI/giskard/issues/910.
Repository: Giskard-AI/giskard-oss
Issue: [GSK-875] Update the credit scoring model CD with AI test v2
GitHub labels: new-upload-api

Low priority

update the following workflow: [https://github.com/Giskard-AI/giskard-examples/tree/main/Giskard-deployment](https://github.com/Giskard-AI/giskard-examples/tree/main/Giskard-deployment)

<sub>From [SyncLinear.com](https://synclinear.com) | [GSK-875](https://linear.app/giskard/issue/GSK-875/update-the-credit-scoring-model-cd-with-ai-test-v2)</sub>
Repository: Giskard-AI/giskard-oss
Issue: [GSK-877] Migrate giskard-examples to the new API
Root cause: Unimplemented Feature Gap

Migrate [giskard-examples](https://github.com/Giskard-AI/giskard-examples/tree/feature/new-upload-api) to the [new API](https://github.com/Giskard-AI/giskard/pull/618)

* [ ] House pricing regression model.ipynb (WIP,
* [ ] sst2_classification_non_distributed.ipynb (WIP, @mattbit) — [related issue](https://github.com/Giskard-AI/giskard/issues/867)
* [ ] Newspaper_classification.ipynb (WIP, @mattbit) — [related issue](https://github.com/Giskard-AI/giskard/issues/867)
* [ ] Lead_Scoring_Algorithm_Notebook.ipynb
* [ ] Churn_Telco_Kaggle_with_pipeline.ipynb
* [ ] Churn_Telco_Kaggle_with_pipeline_article.ipynb
* [ ] SST2_binary_text_classification.ipynb
* [ ] Churn_Telco_Kaggle_without_pipeline.ipynb
* [ ] Sentiment_Analysis_for_Twitter_Data.ipynb
* [ ] Text_classification_Using_Tensorflow_Neural_Network.ipynb
* [ ] Email Classification Model for Single Text Feature.ipynb
* [ ] Iris_demo.ipynb

<sub>From [SyncLinear.com](https://synclinear.com) | [GSK-877](https://linear.app/giskard/issue/GSK-877/migrate-giskard-examples-to-the-new-api)</sub>

duplicate of https://github.com/Giskard-AI/giskard/issues/867
Repository: Giskard-AI/giskard-oss
Issue: [GSK-541] Migrate vue component declaration from @Component to composition API
GitHub labels: good first issue

yt

p:normal

d:easy

[GSK-351](https://giskard.youtrack.cloud/issue/GSK-351)

## Newly created components should ONLY use composition API of Vue 2.7

### Migration:

`vue-property-decorator` library doesn't support Vue 3, so in order to migrate to Vue 3 we have to migrate component definition from @Component to composition API

* [X] Admin.vue
* [X] AdminUsers.vue
* [X] App.vue
* [X] AuthPortal.vue
* [X] ButtonModalConfirmation.vue
* [X] CreateUser.vue
* [X] CustomInspectionFilter.vue
* [X] Dashboard.vue
* [X] DatasetSelector.vue
* [X] Datasets.vue
* [X] EditUser.vue
* [X] EditableLabel.vue
* [X] Dashboard.vue
* [X] ErrorToast.vue
* [X] FeedbackDetail.vue
* [X] FeedbackList.vue
* [X] FeedbackPopover.vue
* [X] InspectionFilter.vue
* [X] Inspector.vue
* [X] InspectorLauncher.vue
* [X] InspectorWrapper.vue
* [X] InviteUsers.vue
* [X] Login.vue
* [X] Main.vue
* [X] MessageReply.vue
* [X] ModelSelector.vue
* [X] MultiSelector.vue
* [X] OverlayLoader.vue
* [X] PasswordRecovery.vue
* [X] **PredictionExplanations.vue**
* [X] PredictionResults.vue
* [X] Project.vue
* [X] ProjectsHome.vue
* [X] ResetPassword.vue
* [X] ResultPopover.vue
* [X] RouterComponent.vue
* [X] Signup.vue
* [X] Start.vue
* [X] TestExecutionResultBadge.vue
* [X] TestSuite.vue
* [X] TestSuites.vue
* [X] TextExplanation.vue
* [X] UploadButton.vue
* [X] UserProfile.vue
* [X] UserProfileEditPassword.vue

Project: Giskard
Reporter: aavtomonov
Created: 2022-11-13

<sub>From [SyncLinear.com](https://synclinear.com) | [GSK-541](https://linear.app/giskard/issue/GSK-541/migrate-vue-component-declaration-from-component-to-composition-api)</sub>

We can take this article as a base and see what it takes for us to migrate our codebase

[https://vuetifyjs.com/en/getting-started/upgrade-guide/](https://vuetifyjs.com/en/getting-started/upgrade-guide/)

<!-- From Andrey Avtomonov on Linear -->

@henrique could you make sure the list of checkboxes is up to date

<!-- From Andrey Avtomonov on Linear -->
Repository: Giskard-AI/giskard-oss
Issue: [GSK-880] Move docs to Sphinx
GitHub labels: user-test

webedia



<sub>From [SyncLinear.com](https://synclinear.com) | [GSK-880](https://linear.app/giskard/issue/GSK-880/move-docs-to-sphinx)</sub>

After a discussion with @jmsquare , he pointed out that he's in favour of keeping GitBook for the guide documentation as it'll allow for non-tech people to also edit easily. I see his point, the only downsides to this I see are:

* homogeneity (the API reference will have a different stylings and format from the guide)
* referencing although manageable between gitbook's and sphinx's documentation, it'll be certainly more natural to have references and links within one framework.

<!-- From rabah on Linear -->
Repository: Giskard-AI/giskard-oss
Issue: [GSK-886] AutoModel class
Root cause: Unimplemented Feature Gap

Inferring the `clf` module to define the Giskard model in the new API.

![Screenshot 2023-03-27 at 12.49.29.png](https://uploads.linear.app/5cb5c438-2552-41c0-89ac-b08d19e80d42/d786cb9e-c12a-4745-8d05-d42aab5e2d71/4b9b7ada-d1fa-477a-bf34-be7cf55546d5)

<sub>From [SyncLinear.com](https://synclinear.com) | [GSK-886](https://linear.app/giskard/issue/GSK-886/automodel-class)</sub>
Repository: Giskard-AI/giskard-oss
Issue: [GSK-894] wrap modules' import inside methods that need them
Root cause: Validation Gap

wrap the imports so that we print a nice error message if the user tries to use certain features without having installed the proper package. For example, if the user tries to setup a sklearn model but the `sklearn` library is missing, we may show a message "Please install `giskard[sklearn]` to use this functionality" or similar.

<sub>From [SyncLinear.com](https://synclinear.com) | [GSK-894](https://linear.app/giskard/issue/GSK-894/wrap-modules-import-inside-methods-that-need-them)</sub>
Repository: Giskard-AI/giskard-oss
Issue: [GSK-895] Caching preprocessed dataset in the UI
Root cause: Unimplemented Feature Gap

for webedia for example, Preprocessing function takes a long time (10mins).

<sub>From [SyncLinear.com](https://synclinear.com) | [GSK-895](https://linear.app/giskard/issue/GSK-895/caching-preprocessed-dataset-in-the-ui)</sub>

WDYM "in UI"? Isn't it related to [https://github.com/Giskard-AI/giskard/pull/1002](https://github.com/Giskard-AI/giskard/pull/1002) ?

<!-- From Andrey Avtomonov on Linear -->

Yes, this is a duplicate of https://github.com/Giskard-AI/giskard/pull/1002