From ce78bee0eb641786af4c874464a99258aceb0bf4 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Wed, 12 Jan 2022 15:06:05 +0100 Subject: [PATCH 01/76] Fist attempt at using setup.cfg for dependency management --- MANIFEST.in | 3 - mypy.ini | 4 - pyproject.toml | 8 ++ requirements-dev.txt | 7 -- requirements.txt | 66 ----------------- setup.cfg | 169 +++++++++++++++++++++++++++++++++++++++++++ setup.py | 102 +++++--------------------- tox.ini | 20 ----- ui/requirements.txt | 3 - 9 files changed, 196 insertions(+), 186 deletions(-) delete mode 100644 MANIFEST.in delete mode 100644 mypy.ini create mode 100644 pyproject.toml delete mode 100644 requirements-dev.txt delete mode 100644 requirements.txt create mode 100644 setup.cfg delete mode 100644 tox.ini delete mode 100644 ui/requirements.txt diff --git a/MANIFEST.in b/MANIFEST.in deleted file mode 100644 index 3e1903d904..0000000000 --- a/MANIFEST.in +++ /dev/null @@ -1,3 +0,0 @@ -include LICENSE -include requirements.txt -include README.rst \ No newline at end of file diff --git a/mypy.ini b/mypy.ini deleted file mode 100644 index 8a11344d30..0000000000 --- a/mypy.ini +++ /dev/null @@ -1,4 +0,0 @@ -# Global options: -[mypy] -ignore_missing_imports = True -plugins = pydantic.mypy \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000000..03669e95f3 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,8 @@ +[build-system] +requires = [ + "setuptools>=51.0", + "wheel", + "setuptools_scm>=1.15", + "setuptools_scm_git_archive>=1.0", +] +build-backend = "setuptools.build_meta" \ No newline at end of file diff --git a/requirements-dev.txt b/requirements-dev.txt deleted file mode 100644 index 6ffd5e03a9..0000000000 --- a/requirements-dev.txt +++ /dev/null @@ -1,7 +0,0 @@ -# Add extra dependencies only required for tests and local dev setup -mypy -pytest -selenium -webdriver-manager -beautifulsoup4 -markdown diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 95828adf34..0000000000 --- a/requirements.txt +++ /dev/null @@ -1,66 +0,0 @@ -# basics -setuptools -wheel -# PyTorch -# Temp. disabled the next line as it gets currently resolved to https://download.pytorch.org/whl/rocm3.8/torch-1.7.1%2Brocm3.8-cp38-cp38-linux_x86_64.whl -# --find-links=https://download.pytorch.org/whl/torch_stable.html -torch>1.9,<1.11 -# progress bars in model download and training scripts -tqdm -# Used for downloading models over HTTP -requests -# Scipy & sklearn for stats in run_classifier -scipy>=1.3.2 -scikit-learn>=1.0.0 -# Metrics or logging related -seqeval -mlflow<=1.13.1 -# huggingface repository -transformers==4.13.0 -# pickle extension for (de-)serialization -dill -# Inference with ONNX models. Install onnxruntime-gpu for Inference on GPUs -# onnxruntime -# onnxruntime_tools -psutil -# haystack -fastapi -uvicorn -gunicorn -pandas -psycopg2-binary; sys_platform != 'win32' and sys_platform != 'cygwin' -elasticsearch>=7.7,<=7.10 -elastic-apm -tox -coverage -langdetect # for PDF conversions -# for PDF conversions using OCR -pytesseract==0.3.7 -pillow==9.0.0 -pdf2image==1.14.0 -sentence-transformers>=0.4.0 -python-multipart -python-docx -sqlalchemy>=1.4.2 -sqlalchemy_utils -# for using FAISS with GPUs, install faiss-gpu -faiss-cpu>=1.6.3 -tika -uvloop==0.14; sys_platform != 'win32' and sys_platform != 'cygwin' -httptools -nltk -more_itertools -networkx -# Refer milvus version support matrix at https://github.com/milvus-io/pymilvus#install-pymilvus -# For milvus 2.x version use this library `pymilvus===2.0.0rc6` -pymilvus -# Optional: For crawling -#selenium -#webdriver-manager -SPARQLWrapper -mmh3 -weaviate-client==2.5.0 -ray>=1.9.1 -dataclasses-json -quantulum3 -azure-ai-formrecognizer==3.2.0b2 diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 0000000000..8bfcfc754a --- /dev/null +++ b/setup.cfg @@ -0,0 +1,169 @@ +[bdist_wheel] +universal = 1 + +[metadata] +name = farm-haystack +url = https://github.com/deepset-ai/haystack, +project_urls = + Docs: RTD = https://haystack.deepset.ai/overview/intro + CI: GitHub = https://github.com/deepset-ai/haystack/actions + GitHub: issues = https://github.com/deepset-ai/haystack/issues + GitHub: repo = https://github.com/deepset-ai/haystack +description = Neural Question Answering & Semantic Search at Scale. Use modern transformer based models like BERT to find answers in large document collections +long_description = file: README.md +long_description_content_type = text/markdown +keywords=QA Question-Answering Reader Retriever semantic-search search BERT roberta albert squad mrc transfer-learning language-model transformer +author = Malte Pietsch, Timo Moeller, Branden Chan, Tanay Soni +author_email = malte.pietsch@deepset.ai +license_file = LICENSE +platforms = any +license = Apache License 2.0 +classifiers = + Development Status :: 5 - Production/Stable + Intended Audience :: Science/Research + License :: Freely Distributable + License :: OSI Approved :: Apache Software License + Topic :: Scientific/Engineering :: Artificial Intelligence + Operating System :: OS Independent + Programming Language :: Python + Programming Language :: Python :: 3 + Programming Language :: Python :: 3.7 + Programming Language :: Python :: 3.8 + Programming Language :: Python :: 3.9 + Programming Language :: Python :: 3.10 + +[options] +use_scm_version = True +python_requires = >=3.7 +packages = find: +include_package_data = True + +setup_requires = + pytest_runner + setuptools_scm>=1.15.0 + setuptools_scm_git_archive>=1.0 + +install_requires = + torch>1.9,<1.11 # pytorch + tqdm # progress bars in model download and training scripts + requests # Used for downloading models over HTTP + scipy>=1.3.2 # for stats in run_classifier + scikit-learn>=1.0.0 # for stats in run_classifier + seqeval # Metrics or logging related + mlflow<=1.13.1 # Metrics or logging related + transformers==4.13.0 # huggingface transformers + dill # pickle extension for (de-)serialization + #onnxruntime # Inference with ONNX models. Install onnxruntime-gpu for Inference on GPUs + #onnxruntime_tools # Inference with ONNX models. Install onnxruntime-gpu for Inference on GPUs + psutil + pandas + langdetect # for PDF conversions + pytesseract==0.3.7 # for PDF conversions using OCR + pillow==8.3.2 # for PDF conversions using OCR + pdf2image==1.14.0 # for PDF conversions using OCR + sentence-transformers>=0.4.0 + python-multipart + python-docx # To read DOCX files + tika + uvloop==0.14; sys_platform != 'win32' and sys_platform != 'cygwin' + httptools + nltk + more_itertools + networkx + #selenium # For crawling + #webdriver-manager # For crawling + mmh3 + dataclasses-json + quantulum3 + azure-ai-formrecognizer==3.2.0b2 + +[options.extras_require] +gpu = + onnxruntime-gpu + faiss-gpu + +elasticsearch= + elasticsearch>=7.7,<=7.10 + elastic-apm + +faiss = + sqlalchemy>=1.4.2 + sqlalchemy_utils + psycopg2-binary; sys_platform != 'win32' and sys_platform != 'cygwin' + faiss-cpu>=1.6.3 # for FAISS wionth GPUs: install faiss-gpu + +milvus = + sqlalchemy>=1.4.2 + sqlalchemy_utils + psycopg2-binary; sys_platform != 'win32' and sys_platform != 'cygwin' + pymilvus # Refer milvus version support matrix at https://github.com/milvus-io/pymilvus#install-pymilvus + +milvus2 = + sqlalchemy>=1.4.2 + sqlalchemy_utils + pymilvus==2.0.0rc6 # Refer milvus version support matrix at https://github.com/milvus-io/pymilvus#install-pymilvus + +weaviate = + weaviate-client==2.5.0 + +graphdb = + SPARQLWrapper + +ray = + ray>=1.9.1 + +rest = + fastapi + uvicorn + gunicorn + +ui = + streamlit>=1.2.0 + st-annotated-text==2.0.0 + markdown>=3.3.4 + +dev = + mypy + pytest + selenium + webdriver-manager + beautifulsoup4 + markdown + tox + coverage + + +[tool:pytest] +testpaths = tests +python_files = + test_*.py +addopts = + -vv + + +[tool:mypy] +ignore_missing_imports = True +plugins = pydantic.mypy + + +[tool:tox] +requires = tox-venv + setuptools >= 30.0.0 +envlist = py36,py37 + + +[tool:testenv] +changedir = test +deps = + coverage + pytest + pandas +setenv = + COVERAGE_FILE = test-reports/.coverage + PYTEST_ADDOPTS = --junitxml=test-reports/{envname}/junit.xml -vv +commands = + coverage run --source haystack --parallel-mode -m pytest {posargs} + coverage combine + coverage report -m + coverage html -d test-reports/coverage-html + coverage xml -o test-reports/coverage.xml diff --git a/setup.py b/setup.py index 9a40b4bcf0..bcc066ee05 100644 --- a/setup.py +++ b/setup.py @@ -1,88 +1,24 @@ import os -import re -from io import open +from setuptools import setup -from setuptools import find_packages, setup - -def parse_requirements(filename): +def get_version() -> str: """ - Parse a requirements pip file returning the list of required packages. It exclude commented lines and --find-links directives. - - Args: - filename: pip requirements requirements - - Returns: - list of required package with versions constraints - + Read the version from haystack/_version.py without importing haystack. """ - with open(filename) as file: - parsed_requirements = file.read().splitlines() - parsed_requirements = [line.strip() - for line in parsed_requirements - if not ((line.strip()[0] == "#") or line.strip().startswith('--find-links') or ("git+https" in line))] - - return parsed_requirements - - -def get_dependency_links(filename): - """ - Parse a requirements pip file looking for the --find-links directive. - Args: - filename: pip requirements requirements - - Returns: - list of find-links's url - """ - with open(filename) as file: - parsed_requirements = file.read().splitlines() - dependency_links = list() - for line in parsed_requirements: - line = line.strip() - if line.startswith('--find-links'): - dependency_links.append(line.split('=')[1]) - return dependency_links - - -dependency_links = get_dependency_links('requirements.txt') -parsed_requirements = parse_requirements('requirements.txt') - - -def versionfromfile(*filepath): - infile = os.path.join(*filepath) - with open(infile) as fp: - version_match = re.search( - r"^__version__\s*=\s*['\"]([^'\"]*)['\"]", fp.read(), re.M - ) - if version_match: - return version_match.group(1) - raise RuntimeError("Unable to find version string in {}.".format(infile)) - - -here = os.path.abspath(os.path.dirname(__file__)) -_version: str = versionfromfile(here, "haystack", "_version.py") - -setup( - name="farm-haystack", - version=_version, - author="Malte Pietsch, Timo Moeller, Branden Chan, Tanay Soni", - author_email="malte.pietsch@deepset.ai", - description="Neural Question Answering & Semantic Search at Scale. Use modern transformer based models like BERT to find answers in large document collections", - long_description=open("README.md", "r", encoding="utf-8").read(), - long_description_content_type="text/markdown", - keywords="QA Question-Answering Reader Retriever semantic-search search BERT roberta albert squad mrc transfer-learning language-model transformer", - license="Apache", - url="https://github.com/deepset-ai/haystack", - download_url=f"https://github.com/deepset-ai/haystack/archive/{_version}.tar.gz", - packages=find_packages(exclude=["*.tests", "*.tests.*", "tests.*", "tests"]), - dependency_links=dependency_links, - install_requires=parsed_requirements, - python_requires=">=3.7.0", - tests_require=["pytest"], - classifiers=[ - "Intended Audience :: Science/Research", - "License :: OSI Approved :: Apache Software License", - "Programming Language :: Python :: 3", - "Topic :: Scientific/Engineering :: Artificial Intelligence", - ] -) + path = os.path.join(os.path.dirname(__file__), "haystack/_version.py") + path = os.path.normpath(os.path.abspath(path)) + with open(path) as f: + for line in f: + if line.startswith("__version__"): + _, version = line.split(" = ", 1) + version = version.replace("\"", "").strip() + return version + raise RuntimeError("Unable to find version string in {}.".format(path)) + + +if __name__ == '__main__': + setup( + name="haystack", + version=get_version() + ) \ No newline at end of file diff --git a/tox.ini b/tox.ini deleted file mode 100644 index 475a64491b..0000000000 --- a/tox.ini +++ /dev/null @@ -1,20 +0,0 @@ -[tox] -requires = tox-venv - setuptools >= 30.0.0 -envlist = py36,py37 - -[testenv] -changedir = test -deps = - coverage - pytest - pandas -setenv = - COVERAGE_FILE = test-reports/.coverage - PYTEST_ADDOPTS = --junitxml=test-reports/{envname}/junit.xml -vv -commands = - coverage run --source haystack --parallel-mode -m pytest {posargs} - coverage combine - coverage report -m - coverage html -d test-reports/coverage-html - coverage xml -o test-reports/coverage.xml diff --git a/ui/requirements.txt b/ui/requirements.txt deleted file mode 100644 index f31311deae..0000000000 --- a/ui/requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -streamlit>=1.2.0 -st-annotated-text==2.0.0 -markdown>=3.3.4 From 6c90f79f8b55a620509dcc6fcfbc495271887011 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Wed, 12 Jan 2022 15:42:06 +0100 Subject: [PATCH 02/76] Trying the new package on the CI and in Docker too --- .github/workflows/cml.yaml | 3 +-- .github/workflows/linux_ci.yml | 4 +--- .github/workflows/windows_ci.yml | 4 +--- Dockerfile | 3 +-- Dockerfile-GPU | 5 +++-- pyproject.toml | 4 +--- 6 files changed, 8 insertions(+), 15 deletions(-) diff --git a/.github/workflows/cml.yaml b/.github/workflows/cml.yaml index 7badc8fc19..f96afbc6d2 100644 --- a/.github/workflows/cml.yaml +++ b/.github/workflows/cml.yaml @@ -78,8 +78,7 @@ jobs: run: | apt-get update -y apt-get install python3-dev -y - pip install -r requirements.txt - pip install . + pip install .[elasticsearch,faiss,milvus,weaviate,graphdb,ray,rest,ui,dev] cd test/benchmarks && python run.py --retriever_index --retriever_query --reader --ci --save_markdown echo -en "## Benchmarks: Retriever Indexing\n" >> report.md cat retriever_index_results.md >> report.md diff --git a/.github/workflows/linux_ci.yml b/.github/workflows/linux_ci.yml index 4047b5e336..3ccec7201e 100644 --- a/.github/workflows/linux_ci.yml +++ b/.github/workflows/linux_ci.yml @@ -39,9 +39,7 @@ jobs: if: steps.cache-python-env.outputs.cache-hit != 'true' run: | python -m pip install --upgrade pip - pip install --upgrade --upgrade-strategy eager -r requirements-dev.txt -e . - pip install --upgrade --upgrade-strategy eager -r requirements.txt -e . - pip install --upgrade --upgrade-strategy eager -r ui/requirements.txt -e . + pip install --upgrade --upgrade-strategy eager .[elasticsearch,faiss,milvus,weaviate,graphdb,ray,rest,ui,dev] pip install torch-scatter -f https://data.pyg.org/whl/torch-1.10.0+cpu.html prepare-build: diff --git a/.github/workflows/windows_ci.yml b/.github/workflows/windows_ci.yml index ce911c3728..336c82d61f 100644 --- a/.github/workflows/windows_ci.yml +++ b/.github/workflows/windows_ci.yml @@ -43,9 +43,7 @@ jobs: if: steps.cache-python-env.outputs.cache-hit != 'true' run: | python -m pip install --upgrade pip - pip install --upgrade --upgrade-strategy eager -r requirements-dev.txt -e . - pip install --upgrade --upgrade-strategy eager -r ui/requirements.txt -e . - pip install --upgrade --upgrade-strategy eager -f https://download.pytorch.org/whl/torch_stable.html -r requirements.txt -e . + pip install --upgrade --upgrade-strategy eager .[elasticsearch,faiss,milvus,weaviate,graphdb,ray,rest,ui,dev] pip install torch-scatter -f https://data.pyg.org/whl/torch-1.10.0+cpu.html prepare-build: diff --git a/Dockerfile b/Dockerfile index f3e2a3fddb..6dbe661331 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,8 +19,7 @@ COPY haystack /home/user/haystack # install as a package COPY setup.py requirements.txt README.md /home/user/ RUN pip install --upgrade pip -RUN pip install -r requirements.txt -RUN pip install -e . +RUN pip install -e .[elasticsearch,faiss,milvus,weaviate,graphdb,ray,rest] RUN python3 -c "from haystack.utils.docker import cache_models;cache_models()" # create folder for /file-upload API endpoint with write permissions, this might be adjusted depending on FILE_UPLOAD_PATH diff --git a/Dockerfile-GPU b/Dockerfile-GPU index b7a582f9eb..07d93cbfad 100644 --- a/Dockerfile-GPU +++ b/Dockerfile-GPU @@ -53,8 +53,9 @@ COPY rest_api /home/user/rest_api # copy code COPY haystack /home/user/haystack -# Install package -RUN pip3 install -e . +# Install package +# FIXME Add GPU deps! +RUN pip install -e .[elasticsearch,faiss,milvus,weaviate,graphdb,ray,rest] # Cache Roberta and NLTK data RUN python3 -c "from haystack.utils.docker import cache_models;cache_models()" diff --git a/pyproject.toml b/pyproject.toml index 03669e95f3..51f8f45a8b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,8 +1,6 @@ [build-system] requires = [ - "setuptools>=51.0", + "setuptools", "wheel", - "setuptools_scm>=1.15", - "setuptools_scm_git_archive>=1.0", ] build-backend = "setuptools.build_meta" \ No newline at end of file From 1d0a8f6531a44629cc094f2307d815b25b6ded84 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Wed, 12 Jan 2022 15:47:41 +0100 Subject: [PATCH 03/76] Remove tool: prefix from a few entries --- setup.cfg | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/setup.cfg b/setup.cfg index 8bfcfc754a..a10f1e3c8d 100644 --- a/setup.cfg +++ b/setup.cfg @@ -133,26 +133,26 @@ dev = coverage -[tool:pytest] -testpaths = tests +[pytest] +testpaths = test python_files = test_*.py addopts = -vv -[tool:mypy] +[mypy] ignore_missing_imports = True plugins = pydantic.mypy -[tool:tox] +[tox] requires = tox-venv setuptools >= 30.0.0 envlist = py36,py37 -[tool:testenv] +[testenv] changedir = test deps = coverage From c84a9a2a62202615a86b0d7aac291faf3ccd5a50 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Thu, 13 Jan 2022 14:08:57 +0100 Subject: [PATCH 04/76] Reintroduce ui module installation in linux_ci.yml --- .github/workflows/linux_ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/linux_ci.yml b/.github/workflows/linux_ci.yml index 3ccec7201e..cac32c5b35 100644 --- a/.github/workflows/linux_ci.yml +++ b/.github/workflows/linux_ci.yml @@ -40,6 +40,7 @@ jobs: run: | python -m pip install --upgrade pip pip install --upgrade --upgrade-strategy eager .[elasticsearch,faiss,milvus,weaviate,graphdb,ray,rest,ui,dev] + pip install --upgrade --upgrade-strategy eager ui/ pip install torch-scatter -f https://data.pyg.org/whl/torch-1.10.0+cpu.html prepare-build: From 2941818fc8911db0e30dbd6fd646ae9570d20c94 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Thu, 13 Jan 2022 14:55:41 +0100 Subject: [PATCH 05/76] Add composite extras_require --- setup.cfg | 22 ++++++---------------- setup.py | 24 +----------------------- 2 files changed, 7 insertions(+), 39 deletions(-) diff --git a/setup.cfg b/setup.cfg index a10f1e3c8d..8366b00079 100644 --- a/setup.cfg +++ b/setup.cfg @@ -37,12 +37,6 @@ use_scm_version = True python_requires = >=3.7 packages = find: include_package_data = True - -setup_requires = - pytest_runner - setuptools_scm>=1.15.0 - setuptools_scm_git_archive>=1.0 - install_requires = torch>1.9,<1.11 # pytorch tqdm # progress bars in model download and training scripts @@ -81,47 +75,37 @@ install_requires = gpu = onnxruntime-gpu faiss-gpu - elasticsearch= elasticsearch>=7.7,<=7.10 elastic-apm - faiss = sqlalchemy>=1.4.2 sqlalchemy_utils psycopg2-binary; sys_platform != 'win32' and sys_platform != 'cygwin' faiss-cpu>=1.6.3 # for FAISS wionth GPUs: install faiss-gpu - milvus = sqlalchemy>=1.4.2 sqlalchemy_utils psycopg2-binary; sys_platform != 'win32' and sys_platform != 'cygwin' pymilvus # Refer milvus version support matrix at https://github.com/milvus-io/pymilvus#install-pymilvus - milvus2 = sqlalchemy>=1.4.2 sqlalchemy_utils pymilvus==2.0.0rc6 # Refer milvus version support matrix at https://github.com/milvus-io/pymilvus#install-pymilvus - weaviate = weaviate-client==2.5.0 - graphdb = SPARQLWrapper - ray = ray>=1.9.1 - rest = fastapi uvicorn gunicorn - ui = streamlit>=1.2.0 st-annotated-text==2.0.0 markdown>=3.3.4 - dev = mypy pytest @@ -131,6 +115,12 @@ dev = markdown tox coverage +docstores = + farm-haystack[elasticsearch,faiss,milvus,weaviate,graphdb] +ci = + farm-haystack[docstores,rest,ui,dev] +all = + farm-haystack[gpu,docstores,ray,rest,ui,dev] [pytest] diff --git a/setup.py b/setup.py index bcc066ee05..8ab824cc7c 100644 --- a/setup.py +++ b/setup.py @@ -1,24 +1,2 @@ -import os from setuptools import setup - - -def get_version() -> str: - """ - Read the version from haystack/_version.py without importing haystack. - """ - path = os.path.join(os.path.dirname(__file__), "haystack/_version.py") - path = os.path.normpath(os.path.abspath(path)) - with open(path) as f: - for line in f: - if line.startswith("__version__"): - _, version = line.split(" = ", 1) - version = version.replace("\"", "").strip() - return version - raise RuntimeError("Unable to find version string in {}.".format(path)) - - -if __name__ == '__main__': - setup( - name="haystack", - version=get_version() - ) \ No newline at end of file +setup() \ No newline at end of file From e3920b2ca35e328a0b3b91726262c4b89f0f575e Mon Sep 17 00:00:00 2001 From: ZanSara Date: Thu, 13 Jan 2022 15:21:21 +0100 Subject: [PATCH 06/76] Simplify version management and update CI --- .github/workflows/linux_ci.yml | 2 +- .github/workflows/windows_ci.yml | 3 ++- VERSION.txt | 1 + haystack/__init__.py | 3 ++- haystack/_version.py | 1 - setup.cfg | 11 ++++++----- 6 files changed, 12 insertions(+), 9 deletions(-) create mode 100644 VERSION.txt delete mode 100644 haystack/_version.py diff --git a/.github/workflows/linux_ci.yml b/.github/workflows/linux_ci.yml index cac32c5b35..a8822f8d5b 100644 --- a/.github/workflows/linux_ci.yml +++ b/.github/workflows/linux_ci.yml @@ -39,7 +39,7 @@ jobs: if: steps.cache-python-env.outputs.cache-hit != 'true' run: | python -m pip install --upgrade pip - pip install --upgrade --upgrade-strategy eager .[elasticsearch,faiss,milvus,weaviate,graphdb,ray,rest,ui,dev] + pip install --upgrade --upgrade-strategy eager .[ci] pip install --upgrade --upgrade-strategy eager ui/ pip install torch-scatter -f https://data.pyg.org/whl/torch-1.10.0+cpu.html diff --git a/.github/workflows/windows_ci.yml b/.github/workflows/windows_ci.yml index 336c82d61f..edb32b5497 100644 --- a/.github/workflows/windows_ci.yml +++ b/.github/workflows/windows_ci.yml @@ -43,7 +43,8 @@ jobs: if: steps.cache-python-env.outputs.cache-hit != 'true' run: | python -m pip install --upgrade pip - pip install --upgrade --upgrade-strategy eager .[elasticsearch,faiss,milvus,weaviate,graphdb,ray,rest,ui,dev] + pip install --upgrade --upgrade-strategy eager .[ci] + pip install --upgrade --upgrade-strategy eager ui/ pip install torch-scatter -f https://data.pyg.org/whl/torch-1.10.0+cpu.html prepare-build: diff --git a/VERSION.txt b/VERSION.txt new file mode 100644 index 0000000000..3eefcb9dd5 --- /dev/null +++ b/VERSION.txt @@ -0,0 +1 @@ +1.0.0 diff --git a/haystack/__init__.py b/haystack/__init__.py index 8399aad764..aca3d3ff84 100644 --- a/haystack/__init__.py +++ b/haystack/__init__.py @@ -1,4 +1,6 @@ import logging +import importlib.metadata +__version__ = importlib.metadata.version('haystack') # This configuration must be done before any import to apply to all submodules logging.basicConfig(format="%(levelname)s - %(name)s - %(message)s", datefmt="%m/%d/%Y %H:%M:%S", level=logging.WARNING) @@ -8,7 +10,6 @@ from haystack.schema import Document, Answer, Label, MultiLabel, Span from haystack.nodes import BaseComponent from haystack.pipelines import Pipeline -from haystack._version import __version__ import pandas as pd pd.options.display.max_colwidth = 80 diff --git a/haystack/_version.py b/haystack/_version.py deleted file mode 100644 index 5becc17c04..0000000000 --- a/haystack/_version.py +++ /dev/null @@ -1 +0,0 @@ -__version__ = "1.0.0" diff --git a/setup.cfg b/setup.cfg index 8366b00079..7eb34b4a2e 100644 --- a/setup.cfg +++ b/setup.cfg @@ -3,6 +3,7 @@ universal = 1 [metadata] name = farm-haystack +version = file: VERSION.txt url = https://github.com/deepset-ai/haystack, project_urls = Docs: RTD = https://haystack.deepset.ai/overview/intro @@ -72,9 +73,6 @@ install_requires = azure-ai-formrecognizer==3.2.0b2 [options.extras_require] -gpu = - onnxruntime-gpu - faiss-gpu elasticsearch= elasticsearch>=7.7,<=7.10 elastic-apm @@ -96,6 +94,11 @@ weaviate = weaviate-client==2.5.0 graphdb = SPARQLWrapper +docstores = + farm-haystack[elasticsearch,faiss,milvus,weaviate,graphdb] +gpu = + onnxruntime-gpu + faiss-gpu ray = ray>=1.9.1 rest = @@ -115,8 +118,6 @@ dev = markdown tox coverage -docstores = - farm-haystack[elasticsearch,faiss,milvus,weaviate,graphdb] ci = farm-haystack[docstores,rest,ui,dev] all = From 5d219c5e06f75bb8302e7118b87bab3fed56185c Mon Sep 17 00:00:00 2001 From: ZanSara Date: Thu, 13 Jan 2022 17:21:21 +0100 Subject: [PATCH 07/76] Add the safe_import function for document store imports and add some try-catch statements on rest_api and ui imports --- haystack/__init__.py | 37 +++++++++++++++++++++------- haystack/document_stores/__init__.py | 24 ++++++++++-------- haystack/utils/import_utils.py | 36 +++++++++++++++++++++++++++ rest_api/application.py | 22 +++++++++-------- rest_api/schema.py | 2 ++ setup.cfg | 12 ++++----- setup.py | 3 +++ ui/webapp.py | 22 ++++++++++------- 8 files changed, 114 insertions(+), 44 deletions(-) diff --git a/haystack/__init__.py b/haystack/__init__.py index aca3d3ff84..0ecb4ae355 100644 --- a/haystack/__init__.py +++ b/haystack/__init__.py @@ -1,5 +1,6 @@ import logging import importlib.metadata + __version__ = importlib.metadata.version('haystack') # This configuration must be done before any import to apply to all submodules @@ -15,6 +16,7 @@ pd.options.display.max_colwidth = 80 + # ########################################### # Enable old style imports (temporary) import sys @@ -58,9 +60,23 @@ def __getattr__(self, attr): summarizer, translator ) -from haystack import document_stores -from haystack.nodes.retriever import text2sparql as graph_retriever -from haystack.document_stores import graphdb as knowledge_graph + +# Note that we ignore the ImportError here because if the user did not install +# the correct dependency group for a document store, we don't need to setup +# import warnings for that, so the import here is useless and should fail silently. +try: + from haystack import document_stores +except ImportError: + document_stores = None +try: + from haystack.nodes.retriever import text2sparql as graph_retriever +except ImportError: + graph_retriever = None +try: + from haystack.document_stores import graphdb as knowledge_graph +except ImportError: + knowledge_graph = None + from haystack.modeling.evaluation import eval from haystack.modeling.logger import MLFlowLogger, StdoutLogger, TensorBoardLogger from haystack.nodes.other import JoinDocuments, Docs2Answers @@ -74,8 +90,9 @@ def __getattr__(self, attr): # modules need to be set as attributes of their parent model. # To make chain imports work (`from haystack.reader import FARMReader`) the module # needs to be also present in sys.modules with its complete import path. -setattr(knowledge_graph, "graphdb", DeprecatedModule(knowledge_graph)) -sys.modules["haystack.knowledge_graph.graphdb"] = DeprecatedModule(knowledge_graph) +if knowledge_graph: + setattr(knowledge_graph, "graphdb", DeprecatedModule(knowledge_graph)) + sys.modules["haystack.knowledge_graph.graphdb"] = DeprecatedModule(knowledge_graph) setattr(preprocessor, "utils", DeprecatedModule(preprocessing)) setattr(preprocessor, "cleaning", DeprecatedModule(cleaning)) @@ -89,7 +106,6 @@ def __getattr__(self, attr): setattr(haystack, "extractor", DeprecatedModule(extractor)) setattr(haystack, "eval", DeprecatedModule(eval)) setattr(haystack, "file_converter", DeprecatedModule(file_converter, deprecated_attributes=["FileTypeClassifier"])) -setattr(haystack, "graph_retriever", DeprecatedModule(graph_retriever)) setattr(haystack, "knowledge_graph", DeprecatedModule(knowledge_graph, deprecated_attributes=["graphdb"])) setattr(haystack, "pipeline", DeprecatedModule(pipelines, deprecated_attributes=["JoinDocuments", "Docs2Answers", "SklearnQueryClassifier", "TransformersQueryClassifier"])) setattr(haystack, "preprocessor", DeprecatedModule(preprocessor, deprecated_attributes=["utils", "cleaning"])) @@ -106,7 +122,6 @@ def __getattr__(self, attr): sys.modules["haystack.extractor"] = DeprecatedModule(extractor) sys.modules["haystack.eval"] = DeprecatedModule(eval) sys.modules["haystack.file_converter"] = DeprecatedModule(file_converter) -sys.modules["haystack.graph_retriever"] = DeprecatedModule(graph_retriever) sys.modules["haystack.knowledge_graph"] = DeprecatedModule(knowledge_graph) sys.modules["haystack.pipeline"] = DeprecatedModule(pipelines) sys.modules["haystack.preprocessor"] = DeprecatedModule(preprocessor, deprecated_attributes=["utils", "cleaning"]) @@ -116,6 +131,9 @@ def __getattr__(self, attr): sys.modules["haystack.retriever"] = DeprecatedModule(retriever) sys.modules["haystack.summarizer"] = DeprecatedModule(summarizer) sys.modules["haystack.translator"] = DeprecatedModule(translator) +if graph_retriever: + setattr(haystack, "graph_retriever", DeprecatedModule(graph_retriever)) + sys.modules["haystack.graph_retriever"] = DeprecatedModule(graph_retriever) # To be imported from modules, classes need only to be set as attributes, # they don't need to be present in sys.modules too. @@ -139,7 +157,6 @@ def __getattr__(self, attr): "extractor", "eval", "file_converter", - "graph_retriever", "knowledge_graph", "pipeline", "preprocessor", @@ -150,4 +167,6 @@ def __getattr__(self, attr): "summarizer", "translator" ] -sys.modules["haystack"] = DeprecatedModule(haystack, is_module_deprecated=False, deprecated_attributes=deprecated_attributes) \ No newline at end of file +if graph_retriever: + deprecated_attributes.append("graph_retriever") +sys.modules["haystack"] = DeprecatedModule(haystack, is_module_deprecated=False, deprecated_attributes=deprecated_attributes) diff --git a/haystack/document_stores/__init__.py b/haystack/document_stores/__init__.py index 50803bba79..2fac4deb8d 100644 --- a/haystack/document_stores/__init__.py +++ b/haystack/document_stores/__init__.py @@ -1,16 +1,20 @@ +import os +import importlib +from haystack.utils.import_utils import safe_import from haystack.document_stores.base import BaseDocumentStore, BaseKnowledgeGraph -from haystack.document_stores.elasticsearch import ElasticsearchDocumentStore, OpenDistroElasticsearchDocumentStore, OpenSearchDocumentStore -from haystack.document_stores.faiss import FAISSDocumentStore -from haystack.document_stores.memory import InMemoryDocumentStore -import os +ElasticsearchDocumentStore = safe_import("haystack.document_stores.elasticsearch", "ElasticsearchDocumentStore", "elasticsearch") +OpenDistroElasticsearchDocumentStore = safe_import("haystack.document_stores.elasticsearch", "OpenDistroElasticsearchDocumentStore", "elasticsearch") +OpenSearchDocumentStore = safe_import("haystack.document_stores.elasticsearch", "OpenSearchDocumentStore", "elasticsearch") + +SQLDocumentStore = safe_import("haystack.document_stores.sql", "SQLDocumentStore", "sql") +FAISSDocumentStore = safe_import("haystack.document_stores.faiss", "FAISSDocumentStore", "faiss") if os.getenv("MILVUS2_ENABLED"): - print("Using experimental Milvus2DocumentStore") - from haystack.document_stores.milvus2x import Milvus2DocumentStore as MilvusDocumentStore + MilvusDocumentStore = safe_import("haystack.document_stores.milvus2x", "MilvusDocumentStore", "milvus2") else: - from haystack.document_stores.milvus import MilvusDocumentStore # type: ignore + MilvusDocumentStore = safe_import("haystack.document_stores.milvus", "MilvusDocumentStore", "milvus") +WeaviateDocumentStore = safe_import("haystack.document_stores.weaviate", "WeaviateDocumentStore", "weaviate") +GraphDBKnowledgeGraph = safe_import("haystack.document_stores.graphdb", "GraphDBKnowledgeGraph", "graphdb") -from haystack.document_stores.sql import SQLDocumentStore -from haystack.document_stores.weaviate import WeaviateDocumentStore -from haystack.document_stores.graphdb import GraphDBKnowledgeGraph +from haystack.document_stores.memory import InMemoryDocumentStore from haystack.document_stores.utils import eval_data_from_json, eval_data_from_jsonl, squad_json_to_jsonl diff --git a/haystack/utils/import_utils.py b/haystack/utils/import_utils.py index 03aa5ca54a..8227213395 100644 --- a/haystack/utils/import_utils.py +++ b/haystack/utils/import_utils.py @@ -5,12 +5,48 @@ import zipfile import requests import logging +import importlib from pathlib import Path logger = logging.getLogger(__name__) +def safe_import(import_path, classname, dep_group): + """ + Method that allows the import of "non-existing" document stores. + Doc stores can be installed one by one with extras_require (see setup.cfg) + but they need to be all imported in haystack.document_stores.__init__() + + Therefore, in case of an ImportError, the class to import is replaced by + a hollow MissingDependency function, which will throw an error when + inizialized. + """ + try: + module = importlib.import_module(import_path) + except ImportError as ie: + module = _missing_dependency_stub_factory(classname, dep_group, ie) + return module + + +def _missing_dependency_stub_factory(classname, dep_group, import_error): + """ + Create custom versions of MissingDependency using the given parameters. + See `safe_import()` + """ + class MissingDependency: + + def __init__(self, *args, **kwargs): + raise ImportError(f"Failed to import {classname}. " + f"Make sure you installed the proper dependencies by executing " + f"'pip install farm-haystack[{dep_group}]'") from import_error + + def __getattr__(self, *a, **k): + return None + + return MissingDependency + + def fetch_archive_from_http(url: str, output_dir: str, proxies: Optional[dict] = None) -> bool: """ Fetch an archive (zip or tar.gz) from a url via http and extract content to an output directory. diff --git a/rest_api/application.py b/rest_api/application.py index f88a914219..0e3f8d750c 100644 --- a/rest_api/application.py +++ b/rest_api/application.py @@ -1,22 +1,24 @@ import logging - from pathlib import Path -import uvicorn -from fastapi import FastAPI, HTTPException -from fastapi.routing import APIRoute -from starlette.middleware.cors import CORSMiddleware - -from rest_api.controller.errors.http_error import http_error_handler -from rest_api.config import ROOT_PATH - logging.basicConfig(format="%(asctime)s %(message)s", datefmt="%m/%d/%Y %I:%M:%S %p") logger = logging.getLogger(__name__) logging.getLogger("elasticsearch").setLevel(logging.WARNING) logging.getLogger("haystack").setLevel(logging.INFO) +try: + import uvicorn + from fastapi import FastAPI, HTTPException + from fastapi.routing import APIRoute + from starlette.middleware.cors import CORSMiddleware + + from rest_api.controller.errors.http_error import http_error_handler + from rest_api.config import ROOT_PATH + from rest_api.controller.router import router as api_router + +except ImportError as ie: + raise ImportError("Failed to import the REST API due to missing dependencies. Run 'pip install farm-haystack[rest]' to install them.") from ie -from rest_api.controller.router import router as api_router def get_application() -> FastAPI: diff --git a/rest_api/schema.py b/rest_api/schema.py index a77ec15ab5..7b7b9c53d0 100644 --- a/rest_api/schema.py +++ b/rest_api/schema.py @@ -9,8 +9,10 @@ except ImportError: from typing_extensions import Literal #type: ignore + BaseConfig.arbitrary_types_allowed = True + class QueryRequest(BaseModel): query: str params: Optional[dict] = None diff --git a/setup.cfg b/setup.cfg index 7eb34b4a2e..ef02050eeb 100644 --- a/setup.cfg +++ b/setup.cfg @@ -42,6 +42,7 @@ install_requires = torch>1.9,<1.11 # pytorch tqdm # progress bars in model download and training scripts requests # Used for downloading models over HTTP + pydantic # Validation of the core dataclasses (Document, Label, etc...) scipy>=1.3.2 # for stats in run_classifier scikit-learn>=1.0.0 # for stats in run_classifier seqeval # Metrics or logging related @@ -76,19 +77,18 @@ install_requires = elasticsearch= elasticsearch>=7.7,<=7.10 elastic-apm -faiss = +sql = sqlalchemy>=1.4.2 sqlalchemy_utils psycopg2-binary; sys_platform != 'win32' and sys_platform != 'cygwin' +faiss = + farm-haystack[sql] faiss-cpu>=1.6.3 # for FAISS wionth GPUs: install faiss-gpu milvus = - sqlalchemy>=1.4.2 - sqlalchemy_utils - psycopg2-binary; sys_platform != 'win32' and sys_platform != 'cygwin' + farm-haystack[sql] pymilvus # Refer milvus version support matrix at https://github.com/milvus-io/pymilvus#install-pymilvus milvus2 = - sqlalchemy>=1.4.2 - sqlalchemy_utils + farm-haystack[sql] pymilvus==2.0.0rc6 # Refer milvus version support matrix at https://github.com/milvus-io/pymilvus#install-pymilvus weaviate = weaviate-client==2.5.0 diff --git a/setup.py b/setup.py index 8ab824cc7c..95b043cef9 100644 --- a/setup.py +++ b/setup.py @@ -1,2 +1,5 @@ +# setup.py will still be needed for a while to allow editable installs. +# Check regularly in the future if this is still the case, or it can be safely removed. + from setuptools import setup setup() \ No newline at end of file diff --git a/ui/webapp.py b/ui/webapp.py index cb4f86afa7..fbbb570ca6 100644 --- a/ui/webapp.py +++ b/ui/webapp.py @@ -5,15 +5,19 @@ import pandas as pd from json import JSONDecodeError from pathlib import Path -import streamlit as st -from annotated_text import annotation -from markdown import markdown - -# streamlit does not support any states out of the box. On every button click, streamlit reload the whole page -# and every value gets lost. To keep track of our feedback state we use the official streamlit gist mentioned -# here https://gist.github.com/tvst/036da038ab3e999a64497f42de966a92 -import SessionState -from utils import haystack_is_ready, query, send_feedback, upload_doc, haystack_version, get_backlink + +try: + import streamlit as st + from annotated_text import annotation + from markdown import markdown + # streamlit does not support any states out of the box. On every button click, streamlit reload the whole page + # and every value gets lost. To keep track of our feedback state we use the official streamlit gist mentioned + # here https://gist.github.com/tvst/036da038ab3e999a64497f42de966a92 + import SessionState + + from utils import haystack_is_ready, query, send_feedback, upload_doc, haystack_version, get_backlink +except ImportError as ie: + raise ImportError("Failed to load the Streamlit app due to missing dependencies. Run 'pip install farm-haystack[ui]' to install them.") from ie # Adjust to a question that you would like users to see in the search bar when they load the UI: From 0e8a8a2d27a8761d75042a6d39237b6db9763dc4 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Thu, 13 Jan 2022 17:51:08 +0100 Subject: [PATCH 08/76] Try to fix mypy --- haystack/document_stores/faiss.py | 5 +---- haystack/nodes/retriever/sparse.py | 9 +++++---- haystack/utils/import_utils.py | 4 +++- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/haystack/document_stores/faiss.py b/haystack/document_stores/faiss.py index a462e4adc0..30e6857e65 100644 --- a/haystack/document_stores/faiss.py +++ b/haystack/document_stores/faiss.py @@ -10,10 +10,7 @@ from tqdm.auto import tqdm import warnings -try: - import faiss -except ImportError: - faiss = None +import faiss import numpy as np from haystack.schema import Document diff --git a/haystack/nodes/retriever/sparse.py b/haystack/nodes/retriever/sparse.py index 3b574275df..08fe9e2be2 100644 --- a/haystack/nodes/retriever/sparse.py +++ b/haystack/nodes/retriever/sparse.py @@ -6,17 +6,18 @@ from sklearn.feature_extraction.text import TfidfVectorizer from haystack.schema import Document -from haystack.document_stores import BaseDocumentStore, ElasticsearchDocumentStore from haystack.nodes.retriever import BaseRetriever +from haystack.document_stores import BaseDocumentStore + logger = logging.getLogger(__name__) class ElasticsearchRetriever(BaseRetriever): - def __init__(self, document_store: ElasticsearchDocumentStore, top_k: int = 10, custom_query: str = None): + def __init__(self, document_store: BaseDocumentStore, top_k: int = 10, custom_query: str = None): """ - :param document_store: an instance of a DocumentStore to retrieve documents from. + :param document_store: an instance of an ElasticsearchDocumentStore to retrieve documents from. :param custom_query: query string as per Elasticsearch DSL with a mandatory query placeholder(query). Optionally, ES `filter` clause can be added where the values of `terms` are placeholders @@ -54,7 +55,7 @@ def __init__(self, document_store: ElasticsearchDocumentStore, top_k: int = 10, # save init parameters to enable export of component config as YAML self.set_config(document_store=document_store, top_k=top_k, custom_query=custom_query) - self.document_store: ElasticsearchDocumentStore = document_store + self.document_store: BaseDocumentStore = document_store self.top_k = top_k self.custom_query = custom_query diff --git a/haystack/utils/import_utils.py b/haystack/utils/import_utils.py index 8227213395..72cd002437 100644 --- a/haystack/utils/import_utils.py +++ b/haystack/utils/import_utils.py @@ -8,6 +8,8 @@ import importlib from pathlib import Path +from haystack.document_stores.base import BaseDocumentStore + logger = logging.getLogger(__name__) @@ -34,7 +36,7 @@ def _missing_dependency_stub_factory(classname, dep_group, import_error): Create custom versions of MissingDependency using the given parameters. See `safe_import()` """ - class MissingDependency: + class MissingDependency(BaseDocumentStore): def __init__(self, *args, **kwargs): raise ImportError(f"Failed to import {classname}. " From 986cd59c92a4dc65aa2304fab1bfa3ed93d83d1f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 13 Jan 2022 16:53:45 +0000 Subject: [PATCH 09/76] Add latest docstring and tutorial changes --- docs/_src/api/api/retriever.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/_src/api/api/retriever.md b/docs/_src/api/api/retriever.md index 25ccd74099..2e17acc010 100644 --- a/docs/_src/api/api/retriever.md +++ b/docs/_src/api/api/retriever.md @@ -96,12 +96,12 @@ class ElasticsearchRetriever(BaseRetriever) #### \_\_init\_\_ ```python - | __init__(document_store: ElasticsearchDocumentStore, top_k: int = 10, custom_query: str = None) + | __init__(document_store: BaseDocumentStore, top_k: int = 10, custom_query: str = None) ``` **Arguments**: -- `document_store`: an instance of a DocumentStore to retrieve documents from. +- `document_store`: an instance of an ElasticsearchDocumentStore to retrieve documents from. - `custom_query`: query string as per Elasticsearch DSL with a mandatory query placeholder(query). Optionally, ES `filter` clause can be added where the values of `terms` are placeholders From f87815337ae90e4337fa43334dc2892c5d4ef6a2 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Fri, 14 Jan 2022 10:17:24 +0100 Subject: [PATCH 10/76] Fix bug on class import and rephrase error message --- haystack/utils/import_utils.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/haystack/utils/import_utils.py b/haystack/utils/import_utils.py index 72cd002437..e14a310928 100644 --- a/haystack/utils/import_utils.py +++ b/haystack/utils/import_utils.py @@ -25,10 +25,11 @@ def safe_import(import_path, classname, dep_group): inizialized. """ try: - module = importlib.import_module(import_path) + module = importlib.import_module(f"{import_path}") + classs = vars(module).get(classname) except ImportError as ie: - module = _missing_dependency_stub_factory(classname, dep_group, ie) - return module + classs = _missing_dependency_stub_factory(classname, dep_group, ie) + return classs def _missing_dependency_stub_factory(classname, dep_group, import_error): @@ -40,8 +41,7 @@ class MissingDependency(BaseDocumentStore): def __init__(self, *args, **kwargs): raise ImportError(f"Failed to import {classname}. " - f"Make sure you installed the proper dependencies by executing " - f"'pip install farm-haystack[{dep_group}]'") from import_error + f"Run 'pip install farm-haystack[{dep_group}]' to install them.") from import_error def __getattr__(self, *a, **k): return None From 097b8acde6d0a73b260b1e27b2aadf68b021f20c Mon Sep 17 00:00:00 2001 From: ZanSara Date: Fri, 14 Jan 2022 10:55:55 +0100 Subject: [PATCH 11/76] Try using string types in retriever --- haystack/nodes/retriever/sparse.py | 4 ++-- haystack/utils/import_utils.py | 4 +--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/haystack/nodes/retriever/sparse.py b/haystack/nodes/retriever/sparse.py index 08fe9e2be2..796201e951 100644 --- a/haystack/nodes/retriever/sparse.py +++ b/haystack/nodes/retriever/sparse.py @@ -15,7 +15,7 @@ class ElasticsearchRetriever(BaseRetriever): - def __init__(self, document_store: BaseDocumentStore, top_k: int = 10, custom_query: str = None): + def __init__(self, document_store: "ElasticsearchDocumentStore", top_k: int = 10, custom_query: str = None): """ :param document_store: an instance of an ElasticsearchDocumentStore to retrieve documents from. :param custom_query: query string as per Elasticsearch DSL with a mandatory query placeholder(query). @@ -55,7 +55,7 @@ def __init__(self, document_store: BaseDocumentStore, top_k: int = 10, custom_qu # save init parameters to enable export of component config as YAML self.set_config(document_store=document_store, top_k=top_k, custom_query=custom_query) - self.document_store: BaseDocumentStore = document_store + self.document_store: "ElasticsearchDocumentStore" = document_store self.top_k = top_k self.custom_query = custom_query diff --git a/haystack/utils/import_utils.py b/haystack/utils/import_utils.py index e14a310928..8c574ba0a1 100644 --- a/haystack/utils/import_utils.py +++ b/haystack/utils/import_utils.py @@ -8,8 +8,6 @@ import importlib from pathlib import Path -from haystack.document_stores.base import BaseDocumentStore - logger = logging.getLogger(__name__) @@ -37,7 +35,7 @@ def _missing_dependency_stub_factory(classname, dep_group, import_error): Create custom versions of MissingDependency using the given parameters. See `safe_import()` """ - class MissingDependency(BaseDocumentStore): + class MissingDependency: def __init__(self, *args, **kwargs): raise ImportError(f"Failed to import {classname}. " From 5cb77b246062ced154170e3bacac642d28e230b0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 14 Jan 2022 10:03:56 +0000 Subject: [PATCH 12/76] Add latest docstring and tutorial changes --- docs/_src/api/api/retriever.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/_src/api/api/retriever.md b/docs/_src/api/api/retriever.md index 2e17acc010..a9819203a5 100644 --- a/docs/_src/api/api/retriever.md +++ b/docs/_src/api/api/retriever.md @@ -96,7 +96,7 @@ class ElasticsearchRetriever(BaseRetriever) #### \_\_init\_\_ ```python - | __init__(document_store: BaseDocumentStore, top_k: int = 10, custom_query: str = None) + | __init__(document_store: "ElasticsearchDocumentStore", top_k: int = 10, custom_query: str = None) ``` **Arguments**: From 665a8b743a818c00af58cabcd83ac3898ad0eb83 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Fri, 14 Jan 2022 11:13:41 +0100 Subject: [PATCH 13/76] Introduce typing for optional modules and add type: ignore in sparse.py --- haystack/__init__.py | 15 ++++++++++++--- haystack/nodes/retriever/sparse.py | 4 ++-- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/haystack/__init__.py b/haystack/__init__.py index 0ecb4ae355..329044ead0 100644 --- a/haystack/__init__.py +++ b/haystack/__init__.py @@ -1,3 +1,6 @@ +from typing import Union +from types import ModuleType + import logging import importlib.metadata @@ -64,18 +67,24 @@ def __getattr__(self, attr): # Note that we ignore the ImportError here because if the user did not install # the correct dependency group for a document store, we don't need to setup # import warnings for that, so the import here is useless and should fail silently. + +document_stores: Union[ModuleType, None] = None try: from haystack import document_stores except ImportError: - document_stores = None + pass + +graph_retriever: Union[ModuleType, None] = None try: from haystack.nodes.retriever import text2sparql as graph_retriever except ImportError: - graph_retriever = None + pass + +knowledge_graph: Union[ModuleType, None] = None try: from haystack.document_stores import graphdb as knowledge_graph except ImportError: - knowledge_graph = None + pass from haystack.modeling.evaluation import eval from haystack.modeling.logger import MLFlowLogger, StdoutLogger, TensorBoardLogger diff --git a/haystack/nodes/retriever/sparse.py b/haystack/nodes/retriever/sparse.py index 796201e951..ed03c1ee35 100644 --- a/haystack/nodes/retriever/sparse.py +++ b/haystack/nodes/retriever/sparse.py @@ -15,7 +15,7 @@ class ElasticsearchRetriever(BaseRetriever): - def __init__(self, document_store: "ElasticsearchDocumentStore", top_k: int = 10, custom_query: str = None): + def __init__(self, document_store: "ElasticsearchDocumentStore", top_k: int = 10, custom_query: str = None): # type: ignore """ :param document_store: an instance of an ElasticsearchDocumentStore to retrieve documents from. :param custom_query: query string as per Elasticsearch DSL with a mandatory query placeholder(query). @@ -55,7 +55,7 @@ def __init__(self, document_store: "ElasticsearchDocumentStore", top_k: int = 10 # save init parameters to enable export of component config as YAML self.set_config(document_store=document_store, top_k=top_k, custom_query=custom_query) - self.document_store: "ElasticsearchDocumentStore" = document_store + self.document_store: "ElasticsearchDocumentStore" = document_store # type: ignore self.top_k = top_k self.custom_query = custom_query From 3f85f32c59c7761b7a778a62cde97434051d3619 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Fri, 14 Jan 2022 12:22:52 +0100 Subject: [PATCH 14/76] Installing ui/ should be no longer necessary --- .github/workflows/linux_ci.yml | 3 +-- .github/workflows/windows_ci.yml | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/linux_ci.yml b/.github/workflows/linux_ci.yml index a8822f8d5b..65ca644294 100644 --- a/.github/workflows/linux_ci.yml +++ b/.github/workflows/linux_ci.yml @@ -39,8 +39,7 @@ jobs: if: steps.cache-python-env.outputs.cache-hit != 'true' run: | python -m pip install --upgrade pip - pip install --upgrade --upgrade-strategy eager .[ci] - pip install --upgrade --upgrade-strategy eager ui/ + pip install --upgrade --upgrade-strategy eager .[ci] pip install torch-scatter -f https://data.pyg.org/whl/torch-1.10.0+cpu.html prepare-build: diff --git a/.github/workflows/windows_ci.yml b/.github/workflows/windows_ci.yml index edb32b5497..0810d95766 100644 --- a/.github/workflows/windows_ci.yml +++ b/.github/workflows/windows_ci.yml @@ -44,7 +44,6 @@ jobs: run: | python -m pip install --upgrade pip pip install --upgrade --upgrade-strategy eager .[ci] - pip install --upgrade --upgrade-strategy eager ui/ pip install torch-scatter -f https://data.pyg.org/whl/torch-1.10.0+cpu.html prepare-build: From 8c14e561cab58abda516b274578bee103061cc81 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Fri, 14 Jan 2022 13:58:17 +0100 Subject: [PATCH 15/76] Include importlib_metadata backport for py3.7 --- haystack/__init__.py | 7 +++++-- setup.cfg | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/haystack/__init__.py b/haystack/__init__.py index 329044ead0..3422a200c0 100644 --- a/haystack/__init__.py +++ b/haystack/__init__.py @@ -2,9 +2,12 @@ from types import ModuleType import logging -import importlib.metadata +try: + import importlib.metadata as metadata +except ImportError: + import importlib_metadata as metadata # Python <= 3.7 -__version__ = importlib.metadata.version('haystack') +__version__ = metadata.version('haystack') # This configuration must be done before any import to apply to all submodules logging.basicConfig(format="%(levelname)s - %(name)s - %(message)s", datefmt="%m/%d/%Y %H:%M:%S", level=logging.WARNING) diff --git a/setup.cfg b/setup.cfg index ef02050eeb..cfa5bb8f59 100644 --- a/setup.cfg +++ b/setup.cfg @@ -39,6 +39,7 @@ python_requires = >=3.7 packages = find: include_package_data = True install_requires = + importlib-metadata; python_version < '3.8' torch>1.9,<1.11 # pytorch tqdm # progress bars in model download and training scripts requests # Used for downloading models over HTTP From 51df2e738e7976bad3ee54d3f614d765e848fa57 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Fri, 14 Jan 2022 14:57:58 +0100 Subject: [PATCH 16/76] Type ignore --- haystack/__init__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/haystack/__init__.py b/haystack/__init__.py index 3422a200c0..f670793e25 100644 --- a/haystack/__init__.py +++ b/haystack/__init__.py @@ -5,7 +5,8 @@ try: import importlib.metadata as metadata except ImportError: - import importlib_metadata as metadata # Python <= 3.7 + # Python <= 3.7 + import importlib_metadata as metadata # type: ignore __version__ = metadata.version('haystack') From d1623a513caa9dc16cc3a8101be493093d47697d Mon Sep 17 00:00:00 2001 From: ZanSara Date: Fri, 14 Jan 2022 15:09:52 +0100 Subject: [PATCH 17/76] Wrong error name --- haystack/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/haystack/__init__.py b/haystack/__init__.py index f670793e25..ad41f4d5d0 100644 --- a/haystack/__init__.py +++ b/haystack/__init__.py @@ -4,7 +4,7 @@ import logging try: import importlib.metadata as metadata -except ImportError: +except ModuleNotFoundError: # Python <= 3.7 import importlib_metadata as metadata # type: ignore From 57eab9e389bba249d6e0e7e17752dd3dab22c050 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Fri, 14 Jan 2022 15:32:06 +0100 Subject: [PATCH 18/76] Seems like caching in the CI --- haystack/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/haystack/__init__.py b/haystack/__init__.py index ad41f4d5d0..aed235e4ac 100644 --- a/haystack/__init__.py +++ b/haystack/__init__.py @@ -1,7 +1,6 @@ from typing import Union from types import ModuleType -import logging try: import importlib.metadata as metadata except ModuleNotFoundError: @@ -11,6 +10,7 @@ __version__ = metadata.version('haystack') # This configuration must be done before any import to apply to all submodules +import logging logging.basicConfig(format="%(levelname)s - %(name)s - %(message)s", datefmt="%m/%d/%Y %H:%M:%S", level=logging.WARNING) logging.getLogger("haystack").setLevel(logging.INFO) From cd0524b22a812981c06677b95dedef3d53f37507 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Fri, 14 Jan 2022 15:37:30 +0100 Subject: [PATCH 19/76] Add colab group to extra_requires --- setup.cfg | 3 +++ 1 file changed, 3 insertions(+) diff --git a/setup.cfg b/setup.cfg index cfa5bb8f59..be29f31fa2 100644 --- a/setup.cfg +++ b/setup.cfg @@ -102,6 +102,9 @@ gpu = faiss-gpu ray = ray>=1.9.1 +colab = + grpcio>=1.42.0 + pillow==7.1.3 rest = fastapi uvicorn From d23118fd50be79c3487f38ac329acee322c37f7c Mon Sep 17 00:00:00 2001 From: ZanSara Date: Fri, 14 Jan 2022 15:52:59 +0100 Subject: [PATCH 20/76] Fix pillow version --- setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index be29f31fa2..f4538d63cc 100644 --- a/setup.cfg +++ b/setup.cfg @@ -104,7 +104,7 @@ ray = ray>=1.9.1 colab = grpcio>=1.42.0 - pillow==7.1.3 + pillow==7.1.2 rest = fastapi uvicorn From f2d3ed644e1c9eef975f336b2ea8e01f61a9e9af Mon Sep 17 00:00:00 2001 From: ZanSara Date: Fri, 14 Jan 2022 15:59:44 +0100 Subject: [PATCH 21/76] Unpin pillow --- setup.cfg | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/setup.cfg b/setup.cfg index f4538d63cc..0ce18eaf6b 100644 --- a/setup.cfg +++ b/setup.cfg @@ -56,7 +56,7 @@ install_requires = pandas langdetect # for PDF conversions pytesseract==0.3.7 # for PDF conversions using OCR - pillow==8.3.2 # for PDF conversions using OCR + pillow # for PDF conversions using OCR pdf2image==1.14.0 # for PDF conversions using OCR sentence-transformers>=0.4.0 python-multipart @@ -104,7 +104,6 @@ ray = ray>=1.9.1 colab = grpcio>=1.42.0 - pillow==7.1.2 rest = fastapi uvicorn From 42e676726a4d8f77229fb183d0e2f5ad84192c7b Mon Sep 17 00:00:00 2001 From: ZanSara Date: Fri, 14 Jan 2022 16:07:46 +0100 Subject: [PATCH 22/76] Fix grpcio --- setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index 0ce18eaf6b..cb1b9d87a7 100644 --- a/setup.cfg +++ b/setup.cfg @@ -103,7 +103,7 @@ gpu = ray = ray>=1.9.1 colab = - grpcio>=1.42.0 + grpcio==1.37.1 rest = fastapi uvicorn From 335911176e1a2cfb36fa1690ec94de97a7faf764 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Fri, 14 Jan 2022 16:55:21 +0100 Subject: [PATCH 23/76] Fix grpcio again --- setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index cb1b9d87a7..efde49c20a 100644 --- a/setup.cfg +++ b/setup.cfg @@ -103,7 +103,7 @@ gpu = ray = ray>=1.9.1 colab = - grpcio==1.37.1 + grpcio==1.43.0 rest = fastapi uvicorn From 32f9c0c8fedfbf901e964112a2098b9f99d9a508 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Fri, 14 Jan 2022 17:05:34 +0100 Subject: [PATCH 24/76] Fix package name --- haystack/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/haystack/__init__.py b/haystack/__init__.py index aed235e4ac..0af1eded18 100644 --- a/haystack/__init__.py +++ b/haystack/__init__.py @@ -7,7 +7,7 @@ # Python <= 3.7 import importlib_metadata as metadata # type: ignore -__version__ = metadata.version('haystack') +__version__ = metadata.version('farm-haystack') # This configuration must be done before any import to apply to all submodules import logging From 4a6bc86ffb0182576e74f5950d23208e89918f20 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Mon, 17 Jan 2022 12:11:29 +0100 Subject: [PATCH 25/76] Add check on pip version and fix some more unchecked imports in the tests --- pyproject.toml | 6 ------ rest_api/application.py | 2 +- setup.cfg | 27 ++++++++++++++++++++++----- setup.py | 10 ++++++++++ test/conftest.py | 31 +++++++++++++++++-------------- ui/utils.py | 6 +++++- ui/webapp.py | 2 +- 7 files changed, 56 insertions(+), 28 deletions(-) delete mode 100644 pyproject.toml diff --git a/pyproject.toml b/pyproject.toml deleted file mode 100644 index 51f8f45a8b..0000000000 --- a/pyproject.toml +++ /dev/null @@ -1,6 +0,0 @@ -[build-system] -requires = [ - "setuptools", - "wheel", -] -build-backend = "setuptools.build_meta" \ No newline at end of file diff --git a/rest_api/application.py b/rest_api/application.py index 0e3f8d750c..d33acbbfa1 100644 --- a/rest_api/application.py +++ b/rest_api/application.py @@ -16,7 +16,7 @@ from rest_api.config import ROOT_PATH from rest_api.controller.router import router as api_router -except ImportError as ie: +except (ImportError, ModuleNotFoundError) as ie: raise ImportError("Failed to import the REST API due to missing dependencies. Run 'pip install farm-haystack[rest]' to install them.") from ie diff --git a/setup.cfg b/setup.cfg index efde49c20a..21bfed61c3 100644 --- a/setup.cfg +++ b/setup.cfg @@ -4,7 +4,7 @@ universal = 1 [metadata] name = farm-haystack version = file: VERSION.txt -url = https://github.com/deepset-ai/haystack, +url = https://github.com/deepset-ai/haystack project_urls = Docs: RTD = https://haystack.deepset.ai/overview/intro CI: GitHub = https://github.com/deepset-ai/haystack/actions @@ -13,12 +13,26 @@ project_urls = description = Neural Question Answering & Semantic Search at Scale. Use modern transformer based models like BERT to find answers in large document collections long_description = file: README.md long_description_content_type = text/markdown -keywords=QA Question-Answering Reader Retriever semantic-search search BERT roberta albert squad mrc transfer-learning language-model transformer +keywords= + QA + Question-Answering + Reader + Retriever + semantic-search + search + BERT + roberta + albert + squad + mrc + transfer-learning + language-model + transformer author = Malte Pietsch, Timo Moeller, Branden Chan, Tanay Soni author_email = malte.pietsch@deepset.ai +license = Apache License 2.0 license_file = LICENSE platforms = any -license = Apache License 2.0 classifiers = Development Status :: 5 - Production/Stable Intended Audience :: Science/Research @@ -38,6 +52,9 @@ use_scm_version = True python_requires = >=3.7 packages = find: include_package_data = True +test_suite = tests +setup_requires = + setuptools >= 46.4.0 install_requires = importlib-metadata; python_version < '3.8' torch>1.9,<1.11 # pytorch @@ -84,7 +101,7 @@ sql = psycopg2-binary; sys_platform != 'win32' and sys_platform != 'cygwin' faiss = farm-haystack[sql] - faiss-cpu>=1.6.3 # for FAISS wionth GPUs: install faiss-gpu + faiss-cpu>=1.6.3 # for FAISS with GPUs: install faiss-gpu milvus = farm-haystack[sql] pymilvus # Refer milvus version support matrix at https://github.com/milvus-io/pymilvus#install-pymilvus @@ -99,7 +116,7 @@ docstores = farm-haystack[elasticsearch,faiss,milvus,weaviate,graphdb] gpu = onnxruntime-gpu - faiss-gpu + # faiss-gpu ray = ray>=1.9.1 colab = diff --git a/setup.py b/setup.py index 95b043cef9..b5f4be6eab 100644 --- a/setup.py +++ b/setup.py @@ -1,5 +1,15 @@ # setup.py will still be needed for a while to allow editable installs. # Check regularly in the future if this is still the case, or it can be safely removed. +# Make sure the correct pip is used. Pip below 21.3 will be stuck in a loop on the self referencing extra_requires +# Note: these two lines are incompatible with the existence of a pyproject.toml file, as it will not involve pip +# in the execution of setup.py and therefore break this check. Re evaluate later if this is still the case, and +# if this check is still needed. +import pkg_resources +try: + pkg_resources.require(['pip >= 21.3.0']) +except pkg_resources.VersionConflict as vce: + raise pkg_resources.VersionConflict("Please upgrade your pip to >= 21.3.1 by running 'pip install --upgrade pip'.") from vce + from setuptools import setup setup() \ No newline at end of file diff --git a/test/conftest.py b/test/conftest.py index b95c5cae75..90abf786c2 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -8,30 +8,33 @@ import psutil import pytest import requests -from elasticsearch import Elasticsearch -from haystack.nodes.answer_generator.transformers import Seq2SeqGenerator -from haystack.document_stores.graphdb import GraphDBKnowledgeGraph -from milvus import Milvus +try: + from elasticsearch import Elasticsearch + from milvus import Milvus + import weaviate + + from haystack.document_stores.weaviate import WeaviateDocumentStore + from haystack.document_stores.milvus import MilvusDocumentStore + from haystack.document_stores.graphdb import GraphDBKnowledgeGraph + from haystack.document_stores.elasticsearch import ElasticsearchDocumentStore + from haystack.document_stores.faiss import FAISSDocumentStore + from haystack.document_stores.sql import SQLDocumentStore + +except (ImportError, ModuleNotFoundError) as ie: + raise ImportError("Some test dependencies are missing. Run 'pip install -e .[dev,docstores]' to install them.") from ie + +from haystack.document_stores.memory import InMemoryDocumentStore -import weaviate -from haystack.document_stores.weaviate import WeaviateDocumentStore +from haystack.nodes.answer_generator.transformers import Seq2SeqGenerator -from haystack.document_stores.milvus import MilvusDocumentStore from haystack.nodes.answer_generator.transformers import RAGenerator, RAGeneratorType from haystack.modeling.infer import Inferencer, QAInferencer from haystack.nodes.ranker import SentenceTransformersRanker from haystack.nodes.document_classifier.transformers import TransformersDocumentClassifier - from haystack.nodes.retriever.sparse import ElasticsearchFilterOnlyRetriever, ElasticsearchRetriever, TfidfRetriever - from haystack.nodes.retriever.dense import DensePassageRetriever, EmbeddingRetriever, TableTextRetriever - from haystack.schema import Document -from haystack.document_stores.elasticsearch import ElasticsearchDocumentStore -from haystack.document_stores.faiss import FAISSDocumentStore -from haystack.document_stores.memory import InMemoryDocumentStore -from haystack.document_stores.sql import SQLDocumentStore from haystack.nodes.reader.farm import FARMReader from haystack.nodes.reader.transformers import TransformersReader from haystack.nodes.reader.table import TableReader, RCIReader diff --git a/ui/utils.py b/ui/utils.py index c5b743f1f5..a615a0b395 100644 --- a/ui/utils.py +++ b/ui/utils.py @@ -5,7 +5,11 @@ import requests from time import sleep from uuid import uuid4 -import streamlit as st + +try: + import streamlit as st +except (ImportError, ModuleNotFoundError) as ie: + raise ImportError("Failed to load the Streamlit app due to missing dependencies. Run 'pip install farm-haystack[ui]' to install them.") from ie API_ENDPOINT = os.getenv("API_ENDPOINT", "http://localhost:8000") diff --git a/ui/webapp.py b/ui/webapp.py index fbbb570ca6..ccfae4f3d2 100644 --- a/ui/webapp.py +++ b/ui/webapp.py @@ -16,7 +16,7 @@ import SessionState from utils import haystack_is_ready, query, send_feedback, upload_doc, haystack_version, get_backlink -except ImportError as ie: +except (ImportError, ModuleNotFoundError) as ie: raise ImportError("Failed to load the Streamlit app due to missing dependencies. Run 'pip install farm-haystack[ui]' to install them.") from ie From e7313b77208284b1c5ed8f09bb4f46183c91302b Mon Sep 17 00:00:00 2001 From: ZanSara Date: Mon, 17 Jan 2022 14:47:09 +0100 Subject: [PATCH 26/76] Separate out the crawler as another extra --- haystack/nodes/__init__.py | 6 ++++-- haystack/nodes/connector/crawler.py | 15 +++------------ setup.cfg | 19 ++++++++++++++----- setup.py | 3 +++ 4 files changed, 24 insertions(+), 19 deletions(-) diff --git a/haystack/nodes/__init__.py b/haystack/nodes/__init__.py index f9cd1008be..84c8b2688d 100644 --- a/haystack/nodes/__init__.py +++ b/haystack/nodes/__init__.py @@ -1,6 +1,8 @@ +from haystack.utils.import_utils import safe_import + from haystack.nodes.base import BaseComponent +Crawler = safe_import("haystack.nodes.connector", "Crawler", "crawler") # Has optional dependencies from haystack.nodes.answer_generator import BaseGenerator, RAGenerator, Seq2SeqGenerator -from haystack.nodes.connector import Crawler from haystack.nodes.document_classifier import BaseDocumentClassifier, TransformersDocumentClassifier from haystack.nodes.evaluator import EvalDocuments, EvalAnswers from haystack.nodes.extractor import EntityExtractor, simplify_ner_for_qa @@ -35,4 +37,4 @@ TableTextRetriever, ) from haystack.nodes.summarizer import BaseSummarizer, TransformersSummarizer -from haystack.nodes.translator import BaseTranslator, TransformersTranslator \ No newline at end of file +from haystack.nodes.translator import BaseTranslator, TransformersTranslator diff --git a/haystack/nodes/connector/crawler.py b/haystack/nodes/connector/crawler.py index 27fa9ea9b2..2e6299a680 100644 --- a/haystack/nodes/connector/crawler.py +++ b/haystack/nodes/connector/crawler.py @@ -9,6 +9,9 @@ from haystack.nodes.base import BaseComponent +from webdriver_manager.chrome import ChromeDriverManager +from selenium import webdriver + logger = logging.getLogger(__name__) @@ -44,18 +47,6 @@ def __init__(self, output_dir: str, urls: Optional[List[str]] = None, crawler_de :param overwrite_existing_files: Whether to overwrite existing files in output_dir with new content """ IN_COLAB = "google.colab" in sys.modules - - try: - from webdriver_manager.chrome import ChromeDriverManager - except ImportError: - raise ImportError("Can't find package `webdriver-manager` \n" - "You can install it via `pip install webdriver-manager`") - - try: - from selenium import webdriver - except ImportError: - raise ImportError("Can't find package `selenium` \n" - "You can install it via `pip install selenium`") options = webdriver.chrome.options.Options() options.add_argument('--headless') diff --git a/setup.cfg b/setup.cfg index 21bfed61c3..8d21d3f2ee 100644 --- a/setup.cfg +++ b/setup.cfg @@ -84,13 +84,20 @@ install_requires = nltk more_itertools networkx - #selenium # For crawling - #webdriver-manager # For crawling mmh3 dataclasses-json quantulum3 azure-ai-formrecognizer==3.2.0b2 + +[options.packages.find] +exclude = + rest_api* + test* + tutorials* + ui* + + [options.extras_require] elasticsearch= elasticsearch>=7.7,<=7.10 @@ -119,6 +126,9 @@ gpu = # faiss-gpu ray = ray>=1.9.1 +crawler = + selenium + webdriver-manager colab = grpcio==1.43.0 rest = @@ -132,14 +142,13 @@ ui = dev = mypy pytest - selenium - webdriver-manager beautifulsoup4 markdown tox coverage + farm-haystack[crawler] ci = - farm-haystack[docstores,rest,ui,dev] + farm-haystack[docstores,ray,rest,ui,dev] all = farm-haystack[gpu,docstores,ray,rest,ui,dev] diff --git a/setup.py b/setup.py index b5f4be6eab..e7aeb04ad3 100644 --- a/setup.py +++ b/setup.py @@ -5,6 +5,9 @@ # Note: these two lines are incompatible with the existence of a pyproject.toml file, as it will not involve pip # in the execution of setup.py and therefore break this check. Re evaluate later if this is still the case, and # if this check is still needed. +import sys +print(sys.argv) + import pkg_resources try: pkg_resources.require(['pip >= 21.3.0']) From 320d3a42b4f2ea9483bc98b7ce2a4849fb4964b9 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Mon, 17 Jan 2022 15:04:37 +0100 Subject: [PATCH 27/76] Make paths relative in rest_api and ui --- rest_api/application.py | 6 +++--- rest_api/controller/document.py | 6 +++--- rest_api/controller/feedback.py | 4 ++-- rest_api/controller/file_upload.py | 5 +++-- rest_api/controller/router.py | 2 +- rest_api/controller/search.py | 8 ++++---- setup.py | 3 --- test/test_rest_api.py | 3 ++- test/test_ui_utils.py | 4 ++-- ui/webapp.py | 2 +- 10 files changed, 21 insertions(+), 22 deletions(-) diff --git a/rest_api/application.py b/rest_api/application.py index d33acbbfa1..3a45b6e4c8 100644 --- a/rest_api/application.py +++ b/rest_api/application.py @@ -12,9 +12,9 @@ from fastapi.routing import APIRoute from starlette.middleware.cors import CORSMiddleware - from rest_api.controller.errors.http_error import http_error_handler - from rest_api.config import ROOT_PATH - from rest_api.controller.router import router as api_router + from .controller.errors.http_error import http_error_handler + from .config import ROOT_PATH + from .controller.router import router as api_router except (ImportError, ModuleNotFoundError) as ie: raise ImportError("Failed to import the REST API due to missing dependencies. Run 'pip install farm-haystack[rest]' to install them.") from ie diff --git a/rest_api/controller/document.py b/rest_api/controller/document.py index 4d06e104e3..5bf6b5ea7d 100644 --- a/rest_api/controller/document.py +++ b/rest_api/controller/document.py @@ -4,9 +4,9 @@ from fastapi import APIRouter -from rest_api.controller.search import DOCUMENT_STORE -from rest_api.config import LOG_LEVEL -from rest_api.schema import FilterRequest, DocumentSerialized +from .search import DOCUMENT_STORE +from ..config import LOG_LEVEL +from ..schema import FilterRequest, DocumentSerialized logging.getLogger("haystack").setLevel(LOG_LEVEL) diff --git a/rest_api/controller/feedback.py b/rest_api/controller/feedback.py index 7151430805..0b2cae1aec 100644 --- a/rest_api/controller/feedback.py +++ b/rest_api/controller/feedback.py @@ -2,8 +2,8 @@ import logging from fastapi import APIRouter -from rest_api.schema import FilterRequest, LabelSerialized -from rest_api.controller.search import DOCUMENT_STORE +from ..schema import FilterRequest, LabelSerialized +from .search import DOCUMENT_STORE router = APIRouter() diff --git a/rest_api/controller/file_upload.py b/rest_api/controller/file_upload.py index 0d2cd034c3..e572bf8d59 100644 --- a/rest_api/controller/file_upload.py +++ b/rest_api/controller/file_upload.py @@ -10,8 +10,9 @@ from pydantic import BaseModel from haystack.pipelines.base import Pipeline -from rest_api.config import PIPELINE_YAML_PATH, FILE_UPLOAD_PATH, INDEXING_PIPELINE_NAME -from rest_api.controller.utils import as_form +from ..config import PIPELINE_YAML_PATH, FILE_UPLOAD_PATH, INDEXING_PIPELINE_NAME +from .utils import as_form + logger = logging.getLogger(__name__) router = APIRouter() diff --git a/rest_api/controller/router.py b/rest_api/controller/router.py index 52c362da14..c60f4acfc7 100644 --- a/rest_api/controller/router.py +++ b/rest_api/controller/router.py @@ -1,6 +1,6 @@ from fastapi import APIRouter -from rest_api.controller import file_upload, search, feedback, document +from . import file_upload, search, feedback, document router = APIRouter() diff --git a/rest_api/controller/search.py b/rest_api/controller/search.py index 23abbd1557..59471e059f 100644 --- a/rest_api/controller/search.py +++ b/rest_api/controller/search.py @@ -7,10 +7,10 @@ import haystack from haystack.pipelines.base import Pipeline -from rest_api.config import PIPELINE_YAML_PATH, QUERY_PIPELINE_NAME -from rest_api.config import LOG_LEVEL, CONCURRENT_REQUEST_PER_WORKER -from rest_api.schema import QueryRequest, QueryResponse -from rest_api.controller.utils import RequestLimiter +from ..config import PIPELINE_YAML_PATH, QUERY_PIPELINE_NAME +from ..config import LOG_LEVEL, CONCURRENT_REQUEST_PER_WORKER +from ..schema import QueryRequest, QueryResponse +from .utils import RequestLimiter logging.getLogger("haystack").setLevel(LOG_LEVEL) diff --git a/setup.py b/setup.py index e7aeb04ad3..b5f4be6eab 100644 --- a/setup.py +++ b/setup.py @@ -5,9 +5,6 @@ # Note: these two lines are incompatible with the existence of a pyproject.toml file, as it will not involve pip # in the execution of setup.py and therefore break this check. Re evaluate later if this is still the case, and # if this check is still needed. -import sys -print(sys.argv) - import pkg_resources try: pkg_resources.require(['pip >= 21.3.0']) diff --git a/test/test_rest_api.py b/test/test_rest_api.py index 37d28bdf73..ab110f6a97 100644 --- a/test/test_rest_api.py +++ b/test/test_rest_api.py @@ -5,7 +5,8 @@ from fastapi.testclient import TestClient -from rest_api.application import app +from ..rest_api.application import app + FEEDBACK={ "id": "123", diff --git a/test/test_ui_utils.py b/test/test_ui_utils.py index 5566a65c13..6b0abe3234 100644 --- a/test/test_ui_utils.py +++ b/test/test_ui_utils.py @@ -1,6 +1,6 @@ -from unittest.mock import MagicMock, patch +from unittest.mock import patch -from ui.utils import haystack_is_ready +from ..ui.utils import haystack_is_ready def test_haystack_is_ready(): diff --git a/ui/webapp.py b/ui/webapp.py index ccfae4f3d2..02c218dc04 100644 --- a/ui/webapp.py +++ b/ui/webapp.py @@ -15,7 +15,7 @@ # here https://gist.github.com/tvst/036da038ab3e999a64497f42de966a92 import SessionState - from utils import haystack_is_ready, query, send_feedback, upload_doc, haystack_version, get_backlink + from .utils import haystack_is_ready, query, send_feedback, upload_doc, haystack_version, get_backlink except (ImportError, ModuleNotFoundError) as ie: raise ImportError("Failed to load the Streamlit app due to missing dependencies. Run 'pip install farm-haystack[ui]' to install them.") from ie From 14feb76824fc5398c0224d028c7f6ca1f5f7c9ef Mon Sep 17 00:00:00 2001 From: ZanSara Date: Mon, 17 Jan 2022 15:32:32 +0100 Subject: [PATCH 28/76] Remove relative imports, but move rest and ui tests under the respective folders --- rest_api/application.py | 6 +- rest_api/controller/document.py | 6 +- rest_api/controller/feedback.py | 4 +- rest_api/controller/file_upload.py | 4 +- rest_api/controller/router.py | 2 +- rest_api/controller/search.py | 8 +- rest_api/test/__init__.py | 0 rest_api/test/samples/docs/doc_1.txt | 2 + rest_api/test/samples/docs/doc_2.txt | 2 + rest_api/test/samples/pdf/sample_pdf_1.pdf | Bin 0 -> 44524 bytes rest_api/test/samples/pdf/sample_pdf_2.pdf | Bin 0 -> 26093 bytes .../test/samples/pipeline/test_pipeline.yaml | 103 ++++++++ .../test_pipeline_faiss_indexing.yaml | 31 +++ .../test_pipeline_faiss_retrieval.yaml | 19 ++ .../test_pipeline_tfidfretriever.yaml | 25 ++ rest_api/test/test_rest_api.py | 240 ++++++++++++++++++ setup.cfg | 7 +- ui/__init__.py | 0 ui/test/__init__.py | 0 {test => ui/test}/test_ui_utils.py | 2 +- ui/webapp.py | 2 +- 21 files changed, 444 insertions(+), 19 deletions(-) create mode 100644 rest_api/test/__init__.py create mode 100644 rest_api/test/samples/docs/doc_1.txt create mode 100644 rest_api/test/samples/docs/doc_2.txt create mode 100644 rest_api/test/samples/pdf/sample_pdf_1.pdf create mode 100644 rest_api/test/samples/pdf/sample_pdf_2.pdf create mode 100644 rest_api/test/samples/pipeline/test_pipeline.yaml create mode 100644 rest_api/test/samples/pipeline/test_pipeline_faiss_indexing.yaml create mode 100644 rest_api/test/samples/pipeline/test_pipeline_faiss_retrieval.yaml create mode 100644 rest_api/test/samples/pipeline/test_pipeline_tfidfretriever.yaml create mode 100644 rest_api/test/test_rest_api.py create mode 100644 ui/__init__.py create mode 100644 ui/test/__init__.py rename {test => ui/test}/test_ui_utils.py (89%) diff --git a/rest_api/application.py b/rest_api/application.py index 3a45b6e4c8..d33acbbfa1 100644 --- a/rest_api/application.py +++ b/rest_api/application.py @@ -12,9 +12,9 @@ from fastapi.routing import APIRoute from starlette.middleware.cors import CORSMiddleware - from .controller.errors.http_error import http_error_handler - from .config import ROOT_PATH - from .controller.router import router as api_router + from rest_api.controller.errors.http_error import http_error_handler + from rest_api.config import ROOT_PATH + from rest_api.controller.router import router as api_router except (ImportError, ModuleNotFoundError) as ie: raise ImportError("Failed to import the REST API due to missing dependencies. Run 'pip install farm-haystack[rest]' to install them.") from ie diff --git a/rest_api/controller/document.py b/rest_api/controller/document.py index 5bf6b5ea7d..4d06e104e3 100644 --- a/rest_api/controller/document.py +++ b/rest_api/controller/document.py @@ -4,9 +4,9 @@ from fastapi import APIRouter -from .search import DOCUMENT_STORE -from ..config import LOG_LEVEL -from ..schema import FilterRequest, DocumentSerialized +from rest_api.controller.search import DOCUMENT_STORE +from rest_api.config import LOG_LEVEL +from rest_api.schema import FilterRequest, DocumentSerialized logging.getLogger("haystack").setLevel(LOG_LEVEL) diff --git a/rest_api/controller/feedback.py b/rest_api/controller/feedback.py index 0b2cae1aec..7151430805 100644 --- a/rest_api/controller/feedback.py +++ b/rest_api/controller/feedback.py @@ -2,8 +2,8 @@ import logging from fastapi import APIRouter -from ..schema import FilterRequest, LabelSerialized -from .search import DOCUMENT_STORE +from rest_api.schema import FilterRequest, LabelSerialized +from rest_api.controller.search import DOCUMENT_STORE router = APIRouter() diff --git a/rest_api/controller/file_upload.py b/rest_api/controller/file_upload.py index e572bf8d59..f63096b0c7 100644 --- a/rest_api/controller/file_upload.py +++ b/rest_api/controller/file_upload.py @@ -10,8 +10,8 @@ from pydantic import BaseModel from haystack.pipelines.base import Pipeline -from ..config import PIPELINE_YAML_PATH, FILE_UPLOAD_PATH, INDEXING_PIPELINE_NAME -from .utils import as_form +from rest_api.config import PIPELINE_YAML_PATH, FILE_UPLOAD_PATH, INDEXING_PIPELINE_NAME +from rest_api.controller.utils import as_form logger = logging.getLogger(__name__) diff --git a/rest_api/controller/router.py b/rest_api/controller/router.py index c60f4acfc7..52c362da14 100644 --- a/rest_api/controller/router.py +++ b/rest_api/controller/router.py @@ -1,6 +1,6 @@ from fastapi import APIRouter -from . import file_upload, search, feedback, document +from rest_api.controller import file_upload, search, feedback, document router = APIRouter() diff --git a/rest_api/controller/search.py b/rest_api/controller/search.py index 59471e059f..23abbd1557 100644 --- a/rest_api/controller/search.py +++ b/rest_api/controller/search.py @@ -7,10 +7,10 @@ import haystack from haystack.pipelines.base import Pipeline -from ..config import PIPELINE_YAML_PATH, QUERY_PIPELINE_NAME -from ..config import LOG_LEVEL, CONCURRENT_REQUEST_PER_WORKER -from ..schema import QueryRequest, QueryResponse -from .utils import RequestLimiter +from rest_api.config import PIPELINE_YAML_PATH, QUERY_PIPELINE_NAME +from rest_api.config import LOG_LEVEL, CONCURRENT_REQUEST_PER_WORKER +from rest_api.schema import QueryRequest, QueryResponse +from rest_api.controller.utils import RequestLimiter logging.getLogger("haystack").setLevel(LOG_LEVEL) diff --git a/rest_api/test/__init__.py b/rest_api/test/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/rest_api/test/samples/docs/doc_1.txt b/rest_api/test/samples/docs/doc_1.txt new file mode 100644 index 0000000000..13d7350d47 --- /dev/null +++ b/rest_api/test/samples/docs/doc_1.txt @@ -0,0 +1,2 @@ +Some text for testing. +Two lines in here. \ No newline at end of file diff --git a/rest_api/test/samples/docs/doc_2.txt b/rest_api/test/samples/docs/doc_2.txt new file mode 100644 index 0000000000..a3f276dcb9 --- /dev/null +++ b/rest_api/test/samples/docs/doc_2.txt @@ -0,0 +1,2 @@ +A Doc specifically talking about haystack. +Haystack can be used to scale QA models to large document collections. \ No newline at end of file diff --git a/rest_api/test/samples/pdf/sample_pdf_1.pdf b/rest_api/test/samples/pdf/sample_pdf_1.pdf new file mode 100644 index 0000000000000000000000000000000000000000..87259b897f83b462f521276bf32d210ea008bcd3 GIT binary patch literal 44524 zcmc$GbzGHO(>C4GEwSlPy1TnWx*O^4E-7g#=@5_(r5ou6>5}elkdM&k=zGq4&UxN{ zzMpRP-fORW*0pA?nR{kf8xmPTVJbRm1{jj|)uYwz569_4?O$LR0ki-sz1J|DoB$e0 zLrY_O69CiwkUW4!*wozK(Dwe>T-V-E&`{sXz!1RA4P$3-Yp81h;|yG+G4pno8QEi9 z`G6qQ1W5hsZ8;PO@iOr?;0yb9i=}rzH!I4*w@s|N8OI%W^E2g76H&&CtfuR}0xL3uvFHwkz|K`M)rS z>Q_jpcZqr=&!kX=kWzgtEYH>iuPnrw#)?8{t4bv$WKR^eVki63TtU6XI9T^Jn)H^d zpHYhE6Ra~tC524oT=2V^jTuL!8SI>Kp*{suh1B#=P{H%Y0YPaQJJ)E^uQ(^rtBTXH zWE*dd-!ZG2VMpTh`WPhFhq6&x^dOz2QD=QQ&P^-WpR$m@v3W{#>6{?tJG z;X2d^V?!&knD5zfMAIo7ylzE|OQw3Y2YoY@Js*WJO}$2J@zDrmWKb#tY+;CmWyhIK zCthW8m?*!iEQlZ!<@c$CmKhNmkR0(NhL08`j;tm3l+3wbZzzSSu5yof#qX2286wZ? zs*uY3wQPs49|E!|ROX1(Ty)g|6+QkW;Oc=NxkE5=m7$3j@idO_y?xF6O4sW@~qAiqpgq z0=DQuv2e=msi?FlAAzul`)Yy;2ocX=OFhS%8sx4x$4lj@wz9pxTtDl*UKfDwFI4Pe zk*Cz;dM2(hQ!N>dab|1WR9`B@#CYIE?RYldAw>P2I(2FV*3G%x&Es^8yY{Z?R`Yx6 zRH*ijGKM^7ldCfxyaglRs6w6~Q1O&sRoI;yNe|O8}0Er9w1-)0Uy-0~+ZH zJB--Ltwr*%n>CregK?P(O?gAk9uVua;Si8#e9ncc)ZQ5w)^Tnji9AL2Hoon}(m};Csll+K!TY73ot1p=HJj&}J*nB{EbQvR{K?C+~Euh zqGbq)HGw$7Nw_e}N``l1mDnC=b<^UvG-IXQ?eJIlkj&aLTtbapr|v>8>p#rn4;lod zd}1C(62X5jz{)(g>ntWbbo4wTiYwVU2CN0O+NFY5K8&G|^bky`6?-oHTIjEZg8kIL&DN7;}#Hs3UuvY8J9 zLN!u2@Dp@#uS7;;pviowxrUj;rey00V)4qJkvkgzs*S7K^B+wS8Zq7KkuUzC>U zuJ3~DaEtUk8s31@mXE}uh;CICyAK(#E!~~{uASu5nV=`**erbWldwZq@80FKzBGG}GoLuV2cpXLoJR5+ zjrqvZ*LsAUEGSeQc~_2E$7ueKLU3OEj@Fb#MjvbAisDctzS^KsO~E*SWAsJlje(rk z8AH=_mk1V`&(s|XtR~_8_Q@Xo=E8|5vlyf+zM)&?UA5;h*Yi;mQX`rTR5F5D7dUDI zw`XmmB=tFqoK*0z0IZN#k~Y1BRY7z-T!&>5qK9$%jcSm=JdWMsE#DBwst_O&a|5 z;tZkqu*&Fq1!-p&N9l-BFdP02Q7dKZot!gOzYQBr3-5)5!U2d<7P$`_m%%#>Z%e!H ziUZi6re@(_?M|B``fe0Yt0OgFQG{&X#Nd;e)LMyH@C?Zi@0O|CiyAvXkbdwk9j6kA zu0T&aHQDM=?WG+)*8A>K_2w98(j=yEXomd(g|0oo~{} z#N0t*pHETa&dCnZ$3>H{`CC4CDZPWxroOU&hK^|@8BhtjUy3maSeRNNqLTjHe1gAE zC`_kaxdm_g%>>6E8Ywk;+QB>!fw>G76;kTWt54u}lXKN=1!9n8d9>wI$**vTkjrA2 zTB0^!(kX8z2;POyEQ_S#V7esGakE)dJS!L~h`K_IXBpF^<&5Grq;YXzH4%{xp`+Y| zkglyb4#C;$L&g@+k{GQFjum#yO>?2Mcpl6C8p-)J7&^3ImXUGvhI9`kRRgV>(Q?kA zW(wB^Gp^7Y=6r06B)tB65TWt#=gSi5Zyb?X=Y3yR77louu#N#-aYmvDa0j^M8hmZ+ zjiI1cvguFXm_#M7b9YqZjgKy3iI4gadL%G?^?)hBzF7F+azYTVLMPhKA?j2OY({s& zil^3$dW8z>lv%TIcjpdC*}zK?T2Jm*LYi8@)|iN=8@9w>@+ zP849~t`jn}Bs$vI@-3n507NQ(G#EP3iO|6Zk?}c{fv9o$Aghrqb2^bfaKv&FSAwrR z%8~`&W;i908x)n*H^r&VaAV7FI$NlcFn1dt>GCHOlxRToTt2xhL6@1@3xO~o`z9rF znx49_Y1Y`N(bBwaN9SrXR9h55>n6lRVKspA=2f76N6w+#8KyO_Ha)$TU=IH^HdJ0v z3Lv$E0^tKY{mMITuDYz=RQQMt1n#vhS?pB8#*#Z=Kxs^7K}Z)Qv`=tDTLv%Ed6e)> ziB*A3K4HgZ(bhA(rq6C0k5*xR&XO}%m&P7XLh9TSW$5Nyi5AWZ>MdsCQp;f^03#=I zJFY^@6=<-C6oI|$)Gc?Ng}=_aa1eZe zqN1}^q8UxgAf*XcWBJSZT0gC+l^UCQOs{ToA^Gf!{i^;|K+DeihMI`w-GcwufD&#>YzYhwlV@{%ow5)V`jw&1YYu@C^q4ReP+_EBLJfHk+_heDL zVUl14hCtr#JRiatJV+Ptb4NzBs1w`~Jqd!Ws4QN+_+rhS5se~e+aq0ItYEL1e7fh} z+F-R3yL9Y#73L!}8&n1nN?7=1nQ?UGTf}Hzg`UjR30zQ|`8tA4wZ>+(vXB+-d2ZAw zUrja9i|1@g32U0Mv_V-oF%0M~WY-d)e%w?H!{cd0)&$=)B$Lr>* z;&3+(N;@?!I9ap?h9INk2^#8scbbP+Pa!tLakg;`6GgRqqH3dB$hp?CKjhF1^c9?N z+R;U&g7-D>?s}^j$e+9mw^|#gWcDP{I>J#}b=vl{*|lE#qOPqJVRxAVNk~&j>M zPRD)J0fdAKj`wkf5v3aSYtF!@_n?-315)tt@^iiXtS^ZMHZ@#Rn%=}c8;f!Q5roSJ z2QkzjyXIAW=O&PjYAaqE=OVh)p#_clMiYI!b}_m|WF{$iF_f-c&U!h$36lu%=1s#~ z4K)-s*{&l^NwLv$6{T!7rG&WlF#lW)i!Y>fBU7R$#b5ZLkuKv{&24|RV zI(S4K@?n#isy*7^`t625;Sdz-F()sY)SZ~$ua86!(}qKw*VZXmv0?M?ySudF!c9Ww zVG^}XAqci*&OWdADVHk@<+2f0oy&(!3^Fd0;1`o1@T7_C$qesZ#q~ca7I9 zzT|!LAxl*$9)l)znq^;0tFfGCcd(H7%gWk>+4atvpJn1?1~~$exaPsQ*xIqW$8~Sr z-1Y~andEbs^Rps2r_&Xd&+Z}x6CYq#s20d4-z2A5rGDsnov#+#$B7a|+er4xYU=EH zXDlM<$gdWl8}t!7$ZRIj+Pxjl@oWl_C5+{U+~b2=8dDZS z@a=2+-Ue{Tc-yOi09Te7HO@EZp5l; z%yBO>%vAX&YTSVY(UE;AFAe-w%B;m&a-PM9)xM<92Jg+($>_h=xxJ}z<2AOKf@9S$ULb|YzZ@WJtBpXn*Xq=bDe$| z6QO%PZjcBtDRKF=uattKwBPVn$uYcNA(3`D9;~1+%s}kU*?OKCULXG`a!y)x;=EkB zG(b!a&2*+mPcPPw2b6DCsfG3hTW(Kb%no|gCZGqxLqiY_KP`{rO>3GDIayJN^n4`2 zXi;W0Rse%AiITYiO;PmzjzL^@LsV&h;aeYfsC?><&pJB7t&R{i?l#$oNL?+iJ#jY0 z4m0B*0#i9VfmE;ASt980lZ91&aaF%q}#9zaNTP(AA@WN{}6U2 zFn{^o%O*;O7RJ!h;77CO{?$W|=b^Fl@XW|W$N2E+!)y9q`ag;;)`kEYSzY7DpSFgU z_5g;bUXZ+@ot1;FzM&m}`DsAF%F_P+b34F8|LDG1BxPt|s>^TX3{a=NA7El*qNZmB zurkt7v$AQz+;@$BtoCsA&u){ft(Crlp*=wTen~-L0F9!dvpql)KqFvfZe^=rt*dVc zcxXxq*wF!49v9)}2G9sO+lwgJ-#4TlKNGQ|gQ0uaf&6`E>b_HT59)DTQIQ_N_Bc$V zs7ME3{rQpsK=%OearPge9wq!l^`wJ8mZ8zty}#m@$qyR&Ir&G!jP8dLr0>;5!}riN zvwT2EBWUPos&6PS!vD|Bw3K&FiV9QcL4yq}4MWI;0Fo1IS7^WphbS7DT(Fq8EJ&a~ zsiPpcFe(y-l7V6~ut*T0z7Q&`pRe8o^bw-$mlioeq1CxCGwA&yrsMgf+fLPmsrAnj zQ^xxq6SY9HH@;x4_A0>Mj2SAZd)qA<$SA$-=OCDf!0;--%}Yi`U?LZSAY(TTT#1Q! zqF*Y`_NcuL>SkUx$&%WAz4MA9WDy{S0D=)3XXf-I#aIQ2RjBB|qQ3*{IfBwTJUF+cmT_M)ykA)a(416y?ftDZ46tWI`5iDW4&3@k$PDB*)nSFgr5@dj*fy!9H_noSCzWt-X)(M@tlkL$lc-uGnndju;q30JeqA%U zY?@lY^HjLy>Toi}ho~A&y^Tgi0YbB0c3?3gMF*F84 zq1D_Exe|hXeQ@ycg9f+fh z8ej6lWF~{e@=P&9HF3}e@(5s)trmmqvf=^~AOa<}eN3Tz4-nBZ`3fS@vk?;czaljRNf4rW zWMj!mQDww&g!reV*~DvjU3gsta^#=oS&pd`B-Ey;$utOhhPo3f_G!auT3iv9?Ca5(&5jfNjfN9w zLlQ&vRq|DwRqWM@9(jmXTAd39d90kUn6SFAh-1dJn!)A48RimGt-E@PxJyb)O7}Rz zIHNe=xQGJDS61Vw<0%Ce1u|o_uSs9)zMgu0Jx={GeDK4dQ|e%fHsjsOP0&_pZLn+g z)$7x?Ev~H?>?G_)Y%J_o*zt^Cn6Q#8le&{ulhzqKD^1j3tH9J&)z+)DXyX$1`V@^w zDni*Zii&qXPz`fu&wb=7($A|gR)0OlF_7_s++Z>PgD@~ahNhoEsNs|tNtgOkVEceb<)z{ z6tQTr@NOxE$+3Awo!Y_5K{&HD6H>;HOm&@^rL(H4g~DIc+1fa}+_PMgFJHiNg{p+6 zpwFRezubMPK(+l6UzI`?T*abttMsaEx;@EEQ{SUA@b$8O#X#=dT2)a#)q-Qwt_Mew zX6YPyopjyc8T=XHHR&}SBv+7gPy_t=q`f0~oxjI8()Pwu^}u1+G9;NBS=p%AhlLc? z0g8cV16iJw>V8UQZkle8J(8%BpU~MhHEp@*5G$Y!?8e`}n{5JxQ z0i4iGaGGdWc9_&J84F2wT&iC=dpbLTQRxW@3bfaWMs$sIiG+ruOQ1UmcZ+lgjf+SL zxe3J!NyMwXRIOMM4pR#Q*0r*7lt=cVDbLt{=*V#Q);V#^>hd{v7M<=RI+EBUdJu~`%h`NR4Brv8-|m81M5x*?@6G#R+a8fe-W zvuFisdrZgoUZG_24o69n+o>AWCA|GEc`6!4oJ``U3S05IeBM~ZFs(hR_r=4j@-b4C?KuV>;3wT4gidcTEylOdUn z-d<4kP`;e&JM-Ud$T`coc3O0Va+;mntUXpq)Kk@(8Y*7YEL!b5$~^j9r@Ygsq^oYD zgJ2qA5K&2=SKc6A@>*p4!&df|4|YV-TEmvx=iQX)&Y6j(1q-iH;Be3mNNzk-oO-XW zb6K+@K8p_B*`>m^!R^eg+9qQ!Z7;!H(Zi@gkpPjL&ejNragMPGmOPeN=GO4&FJ;R% zomRJtrvh#$A2($gvT82CSP9q;zja>V@2A3XPPv456l{{+rk#BnQVUVb_&WPF_)|8s zshgzR!lw6V3hn?d6;JY=`$^bYVp2tqvBY510NVRxwlpWtBmOS|hoQk3LF~%*+_jY} zBPqqD#q+&B@g-V^HMaRP4c9lX;y)S}vuSd8q>bv(XeS< zar54t;g!yyOigkp%7Pl)QxU;TC-f69`m=ukogE&JbkXLw>1w2K!;};V~`3)yK=@UAG6>p3q0;>gR?&2;>WZJ+7^9NrDR|;>56p0Lm zU53rMmYsAQ^oGTcE(bJGeE)PFH~cZp)9JdwSg*VNz-)Lskw<(!uaWKQ>zT#6!N$s{ zlj(l$hmiS?jXY;Qw;9*^C!JB7J2DqCacSW^PVUe*N6w@cMr#Y_{>RsUPVXPn(8rvf znU4Nv#{G~wKaAaH*Q-k+J@^+i+#T$EgCBDz}gO4=Z)q)u8u$0v(I>=I68Nm95&!`m=I-h8MX ziG&zN|6LB>(wq5-4pQ(uG6;&OFf2ug|u>gJkLp#Qud|f9jB) zj_yAy`&mmplqmnEZle29g#4#)dQ|!^l@rWgR8GIv9S_(4tULZsrPD9f(T|b{=Ds>& z1kgQIO7{iSA5{)L-7l;CUpP-}v6=@UsvC@=^F;H2}TS_bkb z@dJSHEiuCWY?nts4=Q10`)L;Xhw|>Hmi~=d=zkQr|1rzs&i}nx9y8H=uEYJdO`luo^Fwk^JR`hoUnQw zhF9iYkLkzOkUrg`#fEw-2pn48BTQreo+vZqnl?8-w|YVfVSX;(H7v8URW)dR5(4Y? z?>%|Rt8u984$?8goolcz{Gr*cuHgpSv$3@P{SY(d30PsMv1%f;N|C)#Nj}+?FsiTp z>6owD82Kb zS5Pkucjud8TsqfS?XSc$bT=+fYAcUQRb_x)YnLKm7RhxXZud$B!`h2S0wCj``W}_y@P8 z{~0?T;>7>p$G_`%{Da%xyYOFkHRvDQ`X@7=wyI!n>!5G1XlrOFZ)IfQ zA^%a(uVLobtAxxAEdVqM_e~8eeFuw&))0*>;Bk$6XOXyX;xIgQRu~>4hdhAcDOfN( zx)%(?Q-g%zNp}oS)Mj{6ttQ}?xbrCFuR#B2dD+Kxe*{xmW5AD~BmtoNP0p|J>o2$Q zzsjNiP0oY({~I2L-{kz-HTv)HF#aaz&-{Hd>VNd3sH5Jhh(*LgU ze>AwFsG+XGgTxz{CnY|55j){qxpjxeERkdy5^7FMRFkvYkL=fzM;7}#XW0bSbx>+BZmKCg-7^L zjQ(8>zee-_-PS+0{0q=~4%7Yy=pRX=_}i8r0X_NF?|^;=!as7A|3R8ZXZWG~-vRyR z4UcyDZ#DE6Ue5SyQ2ZMWJ<;HIK)<`g{}$u^a0h-X1D8LM_lbavPwv3dh`sYCn_^NQJLv!4@^IK@(ZIMC;q)Q1s@sxi@PxWg?S&x{#MSTd4J&g zU7No-z$4_p6{PrQK!0IgrhjMN9~$}%(0%^)%iZ8ndH*e-CvE*^My7u>~G~f?)C?+-*?OMtNI@y|E-`O>i-qcPtW@m&_9~-3DA>< zeh0+%8=!wo5B>tsU$`*yzl+d6Z1o$U`+V!yo&EDInHX9i13f$ndOP^zr}~gvA+fR#D^zbzweg$ zH}(IcU;hQ5pPu)N8Cm|(j8A}m@cfTlN8%y5`c=?_^8R*be*x$(T$try>~G~f0{UUA z-!yceko^ki!Hj<^=yyPWZ0&E-xcl7jmn9x=;tp`1h5fSIN67yrAl4_B`VG+I*x$-|0`#Pz z-!1%`4?HUGZw39Z@Q>*FkhQY@bnag^_Bi&pa-IM^+3I&dzx%+yjS@cq{X5G2b{}{w zZ2uYSk81k?E8P#nN&xPI(=WSztd0LGN%TLmmU~IRxxr(3{ePA8Th{aEVDxZA#P078 zeLS4waJcUhFy8xsse#?Sk)HzZ)5c*Q8+G!4AK*2A(E#h8@2LX1_PXX)#`nqa z6D5s`s@i>^dOE;z|KdNb@;|%nV}FK5!9mad@$`)1{hCiD%|oyK$A^+CiUNW!L=DXy z4ed?u50pHfR1q|^)3-IXwzsl{Vg0csA*Yb}MVN+W>djS(& z+lSr?jim06H}v-%NSgbTxb`NGI%Z*od2sHZ|LEB001Wp{n1{#182x=rdwBiue1A;m zzI6EY@pRQMBQQ_%eoCVSFh3>+EcaRQ!{gx{^S$m^?xj7vf0)fg`!M@K2J7RR51-x7 zyGQlw6+b0C$@@e8&ubqs+)Mh2;QFW>!tlk{^pzd6vK{q=!{f6(oTe$u)Y_kALTKU33O*Vyin zV-HvHKc4BLV!MwmRE+l_nU0Z>2|!0jPp=6>BX;kVruuxA#`g^;+WUh~cKQ!(L6-X@ z;Qr*((;F)K`;H!sfUdQup{cRS{fBfc_iNf4S||b7SOGLDPs1=w4x6}!#_p7Kiv3n;AhDD(MP|R_t200@!iJz4X`oY z-$4KIml)&jF7B^7&<^@$Pm5fx8`oAXrp^Pvj^L(L4CO@g_&)IhMF~NL>SdJ+hrpIY zSylsmiv~ghd6NSJGES)?)RFTEB*I*;SGSGlwnl4xvrhYo z48{ZR?Tjqf2Gxh&Fy?{NnY332+vO5oDjWm&cMiKNNC(6g*CG&GlSx?y&q=KJSo!;s z^6hf_#TP@85#_m9cRzJ-HGTdLp3zq!6^`*ZkUB1bA|O z?%4pxn(uJnp2~sLmCqb<>5A*q{#QW9Gw~Z# zPh=@Rts5MeZzOr>LI-PH!!z|L>6HRR5-}mNRLY#TeeuoI*XVjTX4f7q zkf5x*`)E4dbT?UA=g}59?6Au*ce-0sIka2cdbTQ6~%)kGLuWy{2XKdEHWtl)8Q_^usDc-$@nNL-_4|Iz*x zqfAbJzfX^*$?I_`hq~M^*e{$|I+H$vpuE^Vmn=w_u%4?>I_Eai>WJX{=sRzY=kb;J z(#a!roHvbso>9i zhN~d{)or4kxco@P;B1pGSA_De^}QJw<1P2N2k*}>n<||zB+6rs-=e-z)Cz>p(oUz! zdv<678B1isIqfgKh(%jt#fQ7Wc$O}y@?2#sI56|Gjng>=BN`X%#Gpt?)~N}Ge4CXK z0YhbRN6Q|GcV{{$G}X2zc22rpB?vA*iSCJM&!L3I5lYpgk4Kei+Ff;bFeXLfs!SFU2Yxplq`kpIi@SJg-{c}SIhagw|lvJ zYkM(sO^~Wp1Q^)Q7ILaV?@~?mmF;=H-oE+__Wn(}qVpD5B|I1Cxs~6(uI%kAXVTP& ziKSCw;XM-E9oqrQ4j%-$pP8P#e6-AFa?z3J)H=;XMKZAE<`5ZXY z{xRFC7QqpJ`#X@TuIdF=QqW%De8XGm%+L*FqeU%hoc5e*kcc2F*m?f5HMg0i++tPULVEuol3SE{*w zsH?m_pIh*Gix!11oD1?yK?IT1yvo z0<~jN5Gd!v))H{?t+W)D7=FEmURiZbWJGp_NE|SYL1n_B?lU_pjG5vl$1FOGu;4(u zC6j@nt5px=&QC5?tD5TMxyOY1R!AW$%9=a@S@i5$N6MNF*D-lqj~VNkYl?7@Jf)z| zx=NrY^Efl!>u`&-6502qY!rhMmhK0MxQ zf#)cNNvt^@?OnA6;vW{Y5gcTh3gA&bsKy0H zr+j?ZCZ6TMu;(UPTc77ry6&8{Gru>qF@B!&Sb^;d3fnRS%Ef_#17V->h*=E+^Pbd8 zVnomS+TGDib}^>Ev1Xrctiu7EsO!6{VLjA-_HJ0Y+oV7ekwsT{)iPj?phO<+)cV$6 zNs|YYqFM{%pvn`p_tKwtLc6#maZ;fT(qREGEectytTcVt{&Cf)HVGnQLh2JQ3hsiD zizG0@WI=I0(EIYhky%S$G*7{lra5Hf06Gep%bz zG8?4MdWG{->gI(d`;h0|ndd%f&8tPH)XAf^>{kN)Nq5!et6-3u(Z zrSX;*hDfsNK3idrkW_LU*f57cefJp-ct9u zIi&9;yNOrfKKxMXJ|d%cxuPXrqJN2+?m}K^yo;J}g^#07N3O-0TgwqTciLjUn1aUcjk&As;jb@GSEP*&!vnJ4t z;2*lw=Cl5Sm)aLR7wnGtP)^`LIyBm~R1gA~FdOo2_KoD?xq7ox6<;_m8^EDw(18dc zoTvF1@gl*4r<)uo$_D_GLF>FGcaT5QJTd6aDu8~W!e;G4-235=ILQ| zct@cX(qqsAn_=v*$n_mKxj7yWeE!CTKH`v8s?g8Em}eDdR$8k+VsRf$K0vG$dFjL6pBk0!3R?_S%$ye{ zb@il{r7-$sk{2o%RoRQ+w>hl`UI3^)k-rJTg`G7EBC7Ol3BL5s+ZNm)2I|P@bB8hP z0`J1=LQBg8Ee{J5;{bB{Hk44g^PaOo8y_N1XTnkI64Ys9q*>Z=(h!Q$H=FBAUq{x8 zae$ui5vw2T$8n#`u#{ELRUQ>s;Kn74ppGDACZ$x7)wWvOayk^91M)j}9w+j7zQ7T; z!niLn!LyJ6Gf+L47%kn(W-e67Lw!I#>5Yoyb3apBMPnBA@0(2)u|*19n$!!QdJhw` zwr`75ljGYOf}6J;ltSqugWEE!^LUjNO^BEA2Me$g>nso3#)tJn3o=ds=RPNUercjj z@!WSaL?g<^`;EI%xcXM@Q9Q+Md^Iw0yb)*{beXLQYGXuMSR1-Qq*xSUr9wc&6oPf# zH!@zADZ%g{Xla@PLBq0&c@qHwlBtmDT$6<;&be#deXqqk)}HfE4Ikz}W*=5t?*>gq z+mk@O2Zq|HBxIaW)L)QeO#%W5NPq??Ac`Db##yQ1-qJd&`9z`jjwDO6FBCYVF7g2%8>%YsSnsxFMw^ zfrnCO);d|2!y`H}H`<$Q!?*oOh=!|%`s10QWWD1i2USAU2=vAlr})gyyR%$yT&Nz*Cr^Rw{^azll#jItpz9 z{)!IQEaYvTX{63x2lX6_rm>uhYJFk7gcW%=y@~|wN?poS?lRx= zo=Kcf_)mIBc7Whqp7nN&mlUQda(1+sln9>dx4oYdfDs zlXwDNn`XwyHsFgYP2M#;$?X5)G^I2rF8k%cd#QT41un^imGKp=wz%R@=oZjijj*%{ zhfQ)Xaw~&(s78h}0-`Mevn?x#5eZOwSai=PmtdTUx{xY`XhXqul+lUtnoyk4eY2G@ z@B5wD`!$fxfzMUsBaMNldUIk}BKu&$@!rS3kXZ$LeoXP4pcV=TEI^MR*qrUWfL*@9 zYB#jRoCz$vI5Ouj&?On0qkw;QZ*q6?rhDP_$j9~X8dsf8y5?M-UYD~{p?IcWF2n*a zLh#?SdC7G|e^|ru(!VR0bFthnezzcsT#9Dk1l6UEJ^^xUYhM_tFeO%2kX9?mpkl{> z)h11N4YsP81m7?BOaN6SYd0ubB_PQ}N5bKg(o3cKyzz+*19)GR6i{h70?2Lgno{r?hz^29%7<0a? zkUa$5LVVEB4j9Ka^|B;7=R!RV`34&pOT|9PBufoUMYxeUQ!DsB*mBc z3HI$x~{c z3FM&d!YS@V62@f%R-QqV+b>{Pg#q z+@u0{943RviFfJ$zP#4_PKwZ^w* z-;`#Q*_hc-$1@iZf?#9Clbd)u%fJWpnZtQ|z+~XfIp%Q`Ol8MhWW>uz)le>d0uG~d z1ca&7q76Zx!BgTGA*TpHOYJ?I!lfiKg5yILmlh8Oq|JjCmiu*J$^&B$T@g*1`Gavx zLctWYO_qAHz7_OgWv>uop4ob6z@F_IhSauYDD%Wb?q zZ_;Wefqh|FFT;K|j}=|F-OUkip<0C(p|1Vy5)q-+0h83K!G~z%lFBQ((M!Vha@2zL zB=n5z(~he_zg?`dcB|l~&TY9z+;cnYe2|zBXTE%IlE^j%6$1=3g`3bl@t3}U@5)rM zy6OD9OKswLkQYa&?kabQ7qzKO!=R+DUZpuuD(i74=D_C5dqoAHy)S!f@aZnPfS@va z&~Sr7v zV7MINouwEb;SS&CZtGtiXrX=sxf>G4UK8#N+UZ;t-+)oFqV&9Gn6RR?Xd?O2(^7bD zu)V+sIyQ#=uHG zV^Kr76~b___|Rup#3_p)VFHrWU;GVYnH{Lb>3Ip+FEnIxB4q=D?<0mCsl2M6?-gnp znq=dBd9V$qXo0@!6CI`OR0?zp{MGOHwB$Ns@4L#?+P=1ztBBX&_S>MDY=pYu-gPZb zZ!^MKw#~kls+nx3oUCZ#+oQ{?AZkuelU}QX(CV!fd|n!4FwjA%z_MX)GDfO3&HM!& zKuu;(j9_FZWeA&akO0cq^zPfy?`z}AMfg3Sig+{;y|@Uvq1-0$hahC7AVi2h%W>>T zu4X=hy0WW!Enrtt%&+A6L>R$LWj53bh=7|?53ieF(?Ju5ba#JwzJ@^UKuv+Puro29#pVlwcD%HQgXlEXIj}kNC)lfWU)_5D#z3ffn(xk=F;HiipqBOI1+Y7k9pDJ@G3X7b6Q%z{GSIqB_6&As) z71#{er{I;o3B3zg_96K|j3Wwq#_Uy(2v$&C(XKt=L; zA7Zi}Mkc(~wM&rK9NK`QwBtNOWu2q5i17OIetU(BIvEN&D!vN$K(v_BG~E&OrC&L5 zHpi{#F3eSP=q^bNiZJt94;dQMV9GNn|J+2(%`%tG^cdxf}0%i)RkEH2>ml z4TZ3mk2XG(-wDAsD2=37+NF<% zk`s>LC8;={K>%QojZpgcg~ z@Q}}`0A=a-Zz{-|v1Y|B8yF)iJ4AX0Ie=g9=sM&16`o9v0Mkk>R$`e5PC1aMPO(|1 zH3y>{^h$tc&<)+vF~AnHWQM4e`+hziRg}00_g8P%3-Dz^>~AaN#}|aJpeOg<{u(T@ zcUV$md5{+Y-1;(^LdU2DWCY(20h}4DkJkf_;iE~xNzi&DJFDGZ3|nfJ^S+O1$sQYv z$5m!W1q7asr-TKWHT)C-FKCdhp0FV1H(jj@Zma=b4vV$93-`5Vy+ldoEx#_69 zx5aDp&UhTdG^**5YfmDWs~3b>eT?F+Pm~H9kr8yEBGAIXXA%+UjN7TdWZM>Weq&$r zxPd-y+(M~}epQ}CS?*g()Gf@P+4Ck>MYS-WKwpdj$yb3rtTWGnm#9RXv zUHC|E-bFQbO!XJoZ;gf}NK;bwfR;`$n89h9cd^ZByDxD^{28nQ2*9<02Ud4R@;D9$ z;6aXnMjh8J`4i%1OZ!M{95x=~U5Zq9 z$b19mh@+Pim^H$>$Fw)Jis-gB!fRyvr8^)#YbOXRAZ=CK1;-y~fY#BgS<|~Fg}5_Q zO@H$R0k0!m6W`lVve+Bm;aQqsn==$t>TkCBaBN|1`n_^fbEy$mFJ&4+V>l`7qWoOn zad{e2pT4jw6R2F3Z=#RCimMqb=>u;XNrd$zA-3l}yNdIe700cP>yk|uu#ZlH^9-D` zJy_Zm$vz#CC}}$BGP8c!acR7{@5TMX<50%@tL-{<13^mcS<0rcw!1&%^4NLV-pHu) zA&a$Owj?`ggPYuRM>u4Iu*13&07X3AO0Q6-*0ol*%r)4jh-o}ANm4?x5a4>ko`P%^ zlV_wH;?I(&8qgiv#{NmYlftIlz@OVmTKndBAmo0pz zMB5QJyC>`Ndvv*maviuM?)63;j(bDKo!UEZOZ3mrkH!1yA@kt_8BAvh(_aBIuM*Mu zrDOS<)wpVOO0DN6pxb1w0&ud+h{zl}C_y~6O?-8Wb$x>Aoa;&B6A#^9k}?~JLc2!t zFQIZ$BHOYFX%Fo@Q%iWCy(ulC2nXIK?ndl7-NdcyL~MjsD2E8^g8y#5y!^;HlY`{S zUtQvM8bY?i6p`w6^VnSUb;pHWew0+o3mPVhA|u%nRZKn6%6-ZHB;&QyG)lI&QMepN z4IE}831#n_^WYLO;$ACJNm8g1#^LE}*x`BBw}TQy7qKlb_d2eCuT|kRP^eiPJ@5VE zeysDBVIGDvap)HKnyQOB+)upha5&o8N&_;i|dcfde6 ze>eVpbfJMtyhQ-Tix>UlgYBiaBdAk?`DmvU-SeW3pXSjk;gS82M2cDR@cn&N&)&~| zxM6TrvM6o!r2PWts^Sk+OxLr~W&GtBd#$HJM}=5nUx*MoN>(^Bh!r*lzHBB;l5JVO zgK>x1bu@C+T%yhK`GC%7Bw?X=8z0($e>q}6yS_DF7C5p?;D-GXh%lK%>w3f1X-_W4 zsZAR};yCyvg-cB#8*fc&UortYQAEI0`^c*zDE){?p39N<>W&ClS0`mG!o@9tyV=id7~|GeWJYh=w@znZAjtWh;r zeb?t(kVtz=qixz+z$Iw|YqUMLO)m3=MTForAV1*C%s@{e#osN(CvhxVZ{cO2;}SNo zCIlP;?QC&*5K27|_yWaYHUmOHcZJtnr3$O1*C-RKMa8DN=&7MFT{8Xav$ipW*j12y zp%Uq3?I8HNR|D($1966`V8fC=dKT?M5bUxVdrOSRWvU?K!t$}YY2Y{pxkGdY1el(H z1C>z8ucCVaBfJ*LT+W$(KJGr%aPb!loBebztZ!sftv2@`9k;Jm%DqxH4;})F8w)F$ zA2cL2>6n@mCR2npX;`1K3uq}+X{Z>YDmCjDe&%kesji+LvS28{mY%EVu+VIQVuc>4 z?k)WE2o*#brD_;d7dL*1oPanBiOj%_P)d1U&_Kany;hCcka_o)y3VQXuwE-s$KJEe z&xupYj;|C{dB)A7x##qaj7-uKj*CW)+ug8lK0pV<-c#Cxo53oKUQuW}Puj6DcJJ{& z;yU9RcQ2yXT)enL)_^R>zMsqPD_V-%;a04@lsYHCEW^l-slze3KzZgtY+O z9Yaw-w#iu0P8DIyD|nU=H@C5v%0^7jcn!3KF{fX>|7>Y zv`#F5FXVC&ZWa*TMBlSubH1idBM8SJS{}f5)_eJPQaCTdW%|{!npN5Vjaqc$&+(oX=6u@T7Hj2He_x=yazZQ+0vaBQ4oxw8{8(YHr%r zrnr0^dGk=hBzfPWgAk!K<7%YjZW8lKy(N>`*?R)4c~ReV#Q#ShVZQrJG4s zhvtHCfA(iQ3$j!?R1Us#TjkG@XvgQ@&vaGIOVYL7zZ|&BT4Q%Y|3DM4Q;6djh6~DI zAzQ&6U9lNVv*PN@U^S`wzG+~9j&$J!fyt)k<~M6T9|()y6YmzJiP5m4ZRe%Ew42pf zCu(41h()N(_v7n28LQ`=JNRD{RXXmTr$;Ge5+cvp@4 zdL%W(ZPtK}b<`-XO4txfoUT9|uLbqeY!~Nf;HH&sE)$;jtdpB?9nO$g8_w0et95uYb%yn;%Lf@+a?CNrjc_40 zje1I-8kPHvF`2%~w|8$V2jVzIITv{A^w+OPWr5ON{jC1Fqy3U5t8*u<0DcA<9mo2(fyWbNT#c4Y>_Y zrGxtVusa7P;gY8g+y1RfSynj{ZoX=9oWZUP-GTZ7G-xK9=~#+0Q58HcgMwgB@Eqa3 z2}OkZz`ENd%1Sfu#i(avZ8^O40he=P4WiVfyTc7_w*``N-dKdQvqyGuve=u*=8 zY|GB4JjL~9Xcdg_b!_@uPwGq%qiB<3RmD}+Pi3(j(D{dR^ZqQ-1tv5pPO1l7q1d4Q z84$KgM<(`RC4=cpumT)ZjdBsZdQ1?(*o9J(6)Mu!aj$;9v-5!9ek_Sdxm7jivmIU9 zi&l(KC;}}@7E`~WOB2j(e_H{aZYtkvIM2{|W7UZ3v-72PFCNtxZ)k$aPaZd;mX%Wa zxSFlN5QcKz#qrGmH9HB;!w>!6P*TA{{E@#Jv>PP+bUlE3xY@Qgf6gdL9#V_VTOk@T zQd3alJ#L_awJ}yGj7}MDPL`515s7y&Dy`Qa_mNvNo*d~g@zXk`%=v`C_Y52EC94Hj zr$@+75asTMzjOKhmO?#rTO(A>wrp9;*IL$1r`rr!5tvu9cGxWJ ziYsm|59MjP9CNI$7{k$LiN;+@C5qHlQ893}B6UzI3}fFSpaVd2&E^n@to)AG+w@eZ zSmXcQ!iK0@HjhKoQ8+8TO3jW(dw!+{DT zoEc*{gx@IdnCQGDKRF+cKtCokbMb~WX%wvPzmuA?0O#CQL0rai=&ZSpsl(qki((W$0zpphiQJ%hX(Jlnu?Dt! z&&~vaG=m%IXfR&y=dR*heX=v}kETZ@m|YBguTx=jPMW{8M%2Ghs)7qqd+I*@C{?L+ z5xKuOX^oMYsc`SOE843FKY`79uT^QqSlzURzj69TaMzII`O%PD-xUdumF4CJbRwUWG!3qdt#4IHB52DF z|Etor-L{nGT;!QidP6mC~bZa;!S&!`T1OYPBV z@U7?hX{+IMcR$7iTpP|I9^dhBwe0K@N3m7tfPy@|v)hX{KB`Cy@_q8FURp814_i_A zfos+fEXOE~Ohf13RmVw9&i>tsEU9BJ!ixq-i;v#~p`AK0L6UK#hgL10`*;e2 zs+sXn+4Ue^%(p`(Ko7QkrpyCUk>r8Y?}j3g0VXLB$MJiD3NZup51;-_SXsm@4jf0) zj}K1wy$Gf?sOk_K9(o?I&Y!g%5VAx*d9+Cm23x_fHfd}ieUl>vcXa?xO&7hwpG~L%0ixO zAe{5v6~QZEA4%tXP6TODr7);hy0+fB=6 z#&=&%FSK01U>{V z)urd-imPq@Dzjb^q+fDMxAr-C5q*Z0t|MdudTG(*zDDq{m^~fCJzK3hWL3{)u5S3l z$|@=!q&M)*!dqHG+C^$)>2faKJg5J-Ked15N7qaIQ}VBU~iGW6~O*z_F!)UB<5FjD9 zgNZ~>U{AoZ?FxCgOr0yoAt;IUnc@$#g<3UZLCs}BAn)&t5@I26VEZwMjlM<4=$_mW zfwnD%5?JhsR`DGV+5pdSNVD?YlaM^e@Tr#~_Db-jDg}60 zhL(A2x_GvfuotaEhv9X1vXhr|%hRQ=>9pF=TO|Q#!O8wO+nu$&#Ys!?eJypn`dF!T zIwL{nZU~r+&nwgezQ*Y6EtS0KOE!*3d+x9j?m~}x*0ox6eY_fmPU##MzjiN{m%PzJ zY8*P9U@{fz5&?*N&7k3lp{$8K2@c)KO#kFa7WHu;0Gxp(Z%jmVL8c%q_G3~tfQmxt7@-|!d=o_`cTr= zX`9eX=oEPUYTaDO5uC5-p+=gx6ZD7vO-nJJo23cekr~9%eAesD(-@BK^g4``-aV0DqL9w^6=iQ_ z+mEK@ONT|_IQaAdA(JXn*X9Z*6W`DD7%Ay8{nR6 zrRPR&9v@*&1WsQ+mUz}}-G<{QgJAT$6XvpsfaSOF&$1nBtV)e1+C`nY_(vkGGP-J~<31mto#XT_9@*LXp z)YPbH31P~kfhq~HI+7O2fo6z<;Sp+tTd=hSP4S)pd|lU2s7#bgQG4@tHfl;G=mN!{ zxZM?Zs4@Cc3P(VX8KQjk21E(eV(H1HPl|N2daBKwN@V2$ZXQq55im z3En%OXqP^p$}I1O+1jvxVlJ8S%#)4Ud8U_pFE& zSJC|*iQq5y3v!CK=WES+XB^_0an}l8ZVufgc+MB%*Qg;7rNE)+ud&pbA0`;r=&T${8r<|{a0FNCS?zG(|lQ{=eE$XJ1D z#-_$)@_9bLlFf*;J+|GJ6KC{?EmND5=#2H#4f1uvOE$*gXQY{!N1tBEkM1m1uWF8$ zTCG~c)PLwE_1`#qne_>3<N-_;H~#8IN^xlu#iY81XUt8?1;sHDELS~XRv&*lf^ceYVWpKbMUIv{Dgp4&;^TtZDB%RQ##k`9>K629v_9=^~C%Xo!Ta>8w=X5(R@pukU)~6b`Kt=PoUJtXz1q5F4`I=xGXkC9Opb4scV=^owOx7+p1$OCJRfKX0f(&^n6p zr5o??_E&^K6u<^$@9@XcNbqQ{1bh57_%}+KKHkzw;uGa1uX!;v2&K+IB0HgJc zhAJE&Qo%EE$OA|};!2t}fBnW!={9ug9f>0WFGn^3&Ntqtvv`yk(Wq`SB#>`-FzMUh zUKM_l0!P%gL}L-!du~c+bJ^dP2lR14k{~=(3Mqfrc;f@~-|{w`dIzJ2*~ssde~SXm z+v-GE3m=dZ5V|wNZd>+-#y;Sp?ktvJVM-j{*>I1>gz)!=E!;jQO z=%Wmf2H*tX2!sv(2(bm!<=jP%*ae0FNDlTL^gFN_kQzu8lpazSoR5spE&v{&7QiFi zi^JdVF>#&=f97F}L8Obvy#^k2+nwimdCSWl0i^BzKE~_fgqPkCXMc9r?0MP7>mrYb z{nK;(Vp}@@O zx>3xNpf{~Vmdkh0f*>H&fA=o>javCdvM?}m{9!uw?;zv<0zQ*c5*CqD{R2LeG5%^y z^V!zQ=y#On4=f0Z{U2=SAI#bR1%>v(r2R(L`v8G{ z{eAFT9KVxnf8G0^92x6xh6sPn`{NS}8}mO%t&h}il-MtN?VtIKA2tyj^dGd?#}$6X z|Cz_~8%gMO%Vl#TE)obZBywlCmnI*g`) z;&X<(xUhXX;nMXYxd(TY`@~bng>%PZ0j=ltHDUd%@~2|AP)q%fm;CUCm7N?2CCdMUWd1tqWbD> zH8;-0zCBaGBuS$GLato>EmC-WQo|y*-}$ zz1{S_gWonfCRI1oe*wxS`1J0?Bf|U2!~Gurmgx3rbLOQzxLaZHW8dLLhdhzosmSos)YA(QI_ zSC_=_Q!NZsokOuu`3)uK7wmmsYU{Za50uuHVQ>=_Mgyrz14+Q5AbMj3Gzj!SaZ;?k zZae&?8MJiC|hKtygCdd9;ht;JWw4RcE%bC8;mSe4Jq*JURl0Eal!^B2n-Q|;9)>X zS3}H0dNv_)=q}iri3}{*61p4<2}IFWvcA&$Vor;tmGfF_dgZCdTBnc^$JP?&;DC~z zw|k%mok%yn9Z-ZxmaSY=179tcwSuCBn2@sEUQ4AqxSw$Rn2rqvYDrZ&K337jN*na! zN7YCb0R{07)$Czv0TV%>NzFRN`&}4phQ_+S$v!c;&s3E(G{cfpLKz_eDi|!J*%Z1& zB9^6PoJ^y5%0vVyvO=F@5cZO>2A9i=wVzEbqlx=S7&_n;FgHQWSHESet-@WcD2Z|L z5{gOVfhpVs`OVc39HEMpM=$pfoOy8P$LIndg7wS~;(I6yJ{}t)G*}BPy`3OBSq;Gw zWJE9I5T5=FMsV^*58%Or+OB{VZ^Wk-{6QO8Q@8o8v3aHd?-qMUT!@k^tKfNw^%so?&bC0WyVDc4(6jN*Tos z!*^GhVNt3%dY(D+)O)lCa{760vae20dk@S{!} z_OTvbrD{`8xLukbbhCWUrfvayg9FjrL?8Oh^EtuR=4xRPTi2;7zP?vlcp-{*xgnn}GGK-IMM&9hK zPV8)MxtK=YKX8VAfR|hm}c!dj9!3ye?~juC{mqt=*N~H)dI~ z?I16O&_9dNZzzAq#_uht=v7Y?1K;6#Iqv@}y_E*O$^H1Fo9(wyX_LF1#wHK`IuzZHMe$euRP9+^`QUx<9@yEdm!(6F5ZiPI4c5dHC-83^M;CCZq4QWx=2;_Y`sy*5~) zp~Lrq%sT_MO{cGr`~&k8hpQ!cvzEN@cmfH@5Ru zd)`KJI&uVY{Ek9CJC!UV6;C9L#x>VIKFT>ml5*ZHM-D5c+8q`MFpwRE=n?`=@Frkxo|DyVYxj zUYmEP*UgD;=a^1e){}LWt~aR z%98gav}lL&dlcWXsr5czMd$eGn4EV|`*qdJeC3W*WM|ErZ4b^i8TsC1WelFwqpuhA z+PF^+QohefHsln+l=&1>_9kFEfE(m3)FF6wq$~Pa)YKEGSn}YyyAL7Xj6WBvoX{E8 zmT_4$VzVH}=?dtBuvGY_i}+XGPW%8HiTzho@CVOxFK0u)5x$+N%V^4yDAU zs98bSyO5186?Be)E!5ZjdT;-Nz(q?I5K|dcQJ%4;~8|`f0M* z_5(vQpE*47S_-gO#Ubb~L|e=TQ`qX1oep!nw9nhU;;DVvtaaag>dh+AHr#}dz@~*i zr(zEb3EJ=2UCc~wWlihx{Nf3gBTFTKRIDHKsSe@1htq|6!wMzX0xNj643x?M%r0m8|WpYRo`Yr){C@h>22$ah-q61B47$FawW3CY33$W5Lo{b|{$Y!CVoe zbk{Kbo+kUGCp<3tc7uW168Z)+9iH9`2Jqypx;kGV*=m_&?++qnP4fh2ua<7*=F)~Z zfD()rJ0o%Mt^$ML_kx^Eu{ld;m-p?S&S*rO3EAzNHfNPLR+B1?Jq8+NoEv2$mq;A4 z(VRXBZP-JzwjroO?ySi3S|MHWZhp4H&ERcv$x{>#qE{{yxV0k6bxTlbokbb0TKd+A zWl*93Hf;RKwZ*#6UqMDH0#9ndWZ)Cc0NwE|^$S+B84DTsb>4hTdQu7xfhJ**rey-K zeksWoW6GLe3>FaP=W>EAH zqyqGi*L6;^Y`C)zhXouhcRD2!aq%ZOK(?QGN)S% z6t{h4)nL@g4>#Qv2S)Gg7ai`*5ZtWfqh4#qg4&r z0@DT?N^p_LZiANfw^d=#>vxvZ&%~~!+J~-zJpe!~=XEt>4giTedFM!`cB4l72+6uejaIYi zF72X#y!JY)OANbdXiKapzl)+enEv(GBOLvqb zaL#DdyJ-)BHVGc#x}7091TS&?E)YDx`M~|X04$WOKsEuX9%bNV?uaBY>O+Tusm-iR z1c>~y5N-5?ju{D|F=Id@hWtc~1c+*~5!I(Y@`X^DKf)jTt_7!X%ZO~{Vvj&fo{y(l z?^UZY-LuWCjh=OAIXiDGZk&%gJ0EzQjgIsUZ*MCig))AzaCzJV@w$b8G4|*flf$P^ zzH_Vf_l@~jizP)19YZ}myq^@USwTr>lO(+Kk>qfKvcOKBRtp}j7u4EyYnS9J)GIzS zn`LTRPIGfHhiW&>`1sV?e|WQaJ1DZO{ss;Y-mHYTT?=_BWwadu2Z01Cr-go&A*S-I zu@^J%(#wWLQL-|VhZsaai}qrb$LQxQBwbZ&C{*L~m@L2R+USE$PT!2=^&CQ;%x$wdDOa8GQS`&1bw87o3-V| z;H0*-RdV0-3TazdT0Toues6niF&n;k8651BD-$r_H;EO?FRrTzURNy@rbe=a42ls~ z;IrUd`_apYH>(};Wh9*CAsRVccr}s=t;^Q6OX0bdWNamBW78J4>{wOeiF#8%7$ikR z#gyA&_~NfxJ23IWBb-TykhkCcw_GmSpaA=T(}6W^t`Z-8g0pFvzh41Pe{NTNF)-M_ zXq5Yl*BQy(cfy5LPrxm|d*(%$ZfB0M(f6TW19{H2C)rSwz zzpSl3e4YN7Q~dDY`jbi6Z%6)@d6^HZtKZK5KRM=WN4MMb;UfgNXBv!3e(7;SgCr0} z%h)623ylNss%nUyfY#XUvBkrm5SFM0WxDCEx}M>C*h3m}hI8ryi6a|q`W8Xc^YPpM zX{W6=>A_+PCkFW;82IN@yCZX`?0A4^JPdWD3p+P^{l1{w_G-a<=H8*=G(#?~q9z!ab1`GjGb}ExU*TLabEz?}gLHZu3CH zueES`>5)c@7Rp6OxR!5=6lPC5?Xm004rwhx8gA&Hk-k ze$^Etbm{l{eR?~}v7dqn+rxA?c2zF&Sy|L}_X|H(uj$M0rze@yiK7Wl6X z>eo#3U#z44Hxqs3%F?!2%E&yn1DPJHxMbFGQi7&-Ga?wOa5

1p2->@_y0X+Ac~V za}tFSVHraG6v9B;!c_T)j>9GDHF(4zG8!c6&cLIzp#gfccnHMAE6Geu=ihAvQF3^P zJ1#cdH`)(yCbbqT%T^CXff;MU>aQ_h3f6KkwA(Zmfps}WpI7?pCF>jBVG&Z=lwMy9 zwx~L1Rg%uG6}EN>&Q2MDed#8qBIy>77lCx2Vj5aoT9ziL9uBGMuj`$>*NQ4D<1L+h zE`Iv4wm1AVZ$ImlWp;*%Y_I~(n! z>Dzpf3?G8$9+JIyIh!ABAHR6__xn);U`D4jq2lyADT4Jtjh~Rx`GQ85H+iIFR&?YiKmp)11IAgt&Zl z39uV92pm0ws`Dbh3C=ci({bL93!DieX^fd&vznNJ5u9vo4UBC~n}r!Alz>c$t$siP zNpBrePci7=`mSIEn^=WCSSl{dY2MTtna9xxR*friN>JbXhT>uImPh>krkb)bN z@k~yQ=s;d}dpD;?eO&l)N@06IF^c-_2IH+WHj0O!d1==NN`=0++dTgfX=bZ$$MJrV z+Qgj1!1yX?Pr9A9ZGYUj!wX{q)2ju^1J8S(tX5plK5Dv;luW}OzA+@qp$#^z5hJ*E zri$Y=lwQeDjz#I}?hTm1!;6oI=2VdL{jlt|c5~ErttAk{`{owy-8W#azC$4;CDV0X z7AkVXr?Q73yxAZpnJ)QaWxmv@y+-Y=OQ%t`vt2{Gr*jOwRsU~#(0@AWaj-J|%Kg<( z{I-zjKRb*+w2}{H;=gl(RFaUD7ZLmGX!(2R`A63a#qkeE&;J)4j{d_i?{9RtUkV!o z{fB+tpI^V5JO2Luy9D=NMY+ESbAJ+-SeZXe9X~Y6U#5y|^uLPx-@Sf`ZGXxC)0uvW zYrmwmKW`a1K18^WV}4!zUuKUVs}%ia_W0o%|63`4<#RAW{W|uSq2(`YK&B6G(ckhu z(rh1M9?OT|^efK%o44&>O7Pe6{QC5#GW`#G{`;|ijr?Dq>9-s6m#3Rw_4V&<>yIY# z=h68;G^xLn;QnxN=K9e0{U{Ydcxmi&O zEe$DfAYVB8sQ@rBDl^C$A5x@D2Kqb46*&djZxn(ng(=K5;)e)z#}AvWRHLN)U~3rZ zFP!f@4;$|<2i_SM>8%GFFAIueJrhi@SR7yOmolWDirx_nUmB2{GoVWsU+AXYY?^Nt zYR6B=&}W@C-Bx)Tzb_8th4(KXDGth%ES{R0jTTMk=-lwuRnMAEu9xeayy2W(TRW$l zZLnE<@!UGCZcW>*Ep39^^g2DIxO>8FIq$fMY)rS*!4r1B$gt&|_sFE%ayz(NTv^2s zwN2#dT3IqLGzO|bhi0T-u^CIEdbpC>UmnHdnvr)848xoW<7v1fXF1KHnw)M8=V z(A&_8WOM;!Jw;I&S_=aSsBALYYGXl3%Nv1Ak6eui>bUB+)>TEQXyEvwlJ=KSxSdrH zkhT^Q{H2cji`5@#N!YRWqFg2?+v+igEIpP7#46o_p%S)tjscgvowW!}sRiswD;-oA*iAc{} z1WD_y&D=7?g%7QW;+#4<#0zu{reL9?+9CrdOHp~>IZ+#QP4x%q8mk-xZOM=P8f5x= z&eM$aC$Xxl9$?j*ECpvzs89VTw2k!NzXghVj9L+y>2Ke#1yDZ+GQ6Cma#s!Sy%?+P z(9U&G-{g+q0CgroESg7yBLh4Md?F`kbAK)B$+Jqjgr_Fr_HCE|=^i!cpC8PXQE$gMo z8}JW5FX!xu;=2_6uQNBjO>nicwsY!$pkHtJH256xd4{^ezk89IY`k=V+3KH-jc~G7 z=w?;7d$G9*FNAzL*OU2SVDm#?XQAI?Y!XOK{qqzQ)w|X6=)!}u5m)A^%kaI|s)K?08kr7q=UVaE={Yz2Fc1~PL?@94G%iz> zVI6I5{6V#iZ#e7RJyrG#3HNtbjP?deHDDGxCTgW!Xf@qy-edZCv@{&f<0%H3uVz>D zB3+i8c50To=QNkW=+$9}F?>spv~&rWjZkbK5OaooXrGQlAwH9a6kbwH%(zFinAPa&HjI)XXEA9_vsXN&SD@yq(IBq=>H?j@$# zGf;|PwuSD4pIs`el|ow_UY7=Qd?gfL!>@-?RYAWh(coMFtrv?PxkIH?h;GdwX|9NQ zw*Q=QPA{!Op2U zET!6$IV02D@GP!tJExy??cRPA-E^12WXp86oCmAwglwOuUO91J;$pC!Z+`NfR4e6t zc!4SBen3{L6;+36<#m{!9j^v*HH*#BZC86l2U-Vr1GuF>WSC;(m!=R9gN#KE4IN{_&XkbNB^d6f9!J0urzae-4#ep|YmS_2}Ei zY3kn~OELu)sP`!ZTFZy4`3jJ@_`%TlUUb>@Is0Up@IdidpU^BlAAc@JM%U-*B%q$p|2#SVgXS^AaK2WL9f`-U@C<&W{# zAb@%FVGEF7ry0n+b5#`hqhDeHu?5;PsdxhgNku_YcL{^go|v|xJTzN@s#B)3(0)@V zx^uJpfZL9tvH0M7$Ca074I^gAoI9|BHS1z0{oz4UZ*RYxDKlR1!^4l)ik-uqOUL|p zY0mWKW226yygf-P9-(`Pvd$i?D$xwd(lM}0!I7mcX1v@Cmn`WJNFpnJtK}XDO>}+e zk7NK%cvT=`1APyw$kLyK5-d;xEwaTT^0x@!&t1Ukx2y4`)MazP&vElc^WcmF37Wej z=&A!vA1Q{4@Gr*UREAm@e+rd7c7dA{sp{W2DLJPqa1|yAN-#7)`Ww&X%M5($aL(7?vTll8RerdMl4Vu)`~rS9;A8( z^Y6GWhz_WAT*ww-^#v(0uuew3 z`e9<3m%tAmmln?~w?3|q1)Hdq!Dvf^O9Elqy|x?MZiGg19u6QCZ`AS7j~0+pJ)r7h z{NvF3#y=wHk&jiv9oNf6W0(o@OFgO9=S-fG9~i#oj5W|ZAi)KReU`%qTSNh0m9jLq z93)2%P#@QTekGwjYkNTC4ux{p1zh4eCmpAjY@>n@hc9;t{_M4j+)EFck3JL+y&pb&2VCR|IPcL{{^j>D zOfEjoM_$&L1Ud;QR*?p)O!olAekbLdj4!HyDgT4dIXDl58;B$1Epo7hCRUq@-{PrR zX}m5+9}Y#T|BMEJ*-rfy&k_ydMYq2My-r|;uRw7=B2fE8)7PaH8~ zd{Ylv_2g2?Wxr@nZYp?>dMYM#Nab1`TQ~eq7-KH_?{`@{lfvnZ=5kHDL(ou?BN427 zU}x;&-rt%b>R99n`v)bRVCj?z&p&w|<8E7LnR9zveLHZnZm%cGromk z&|=Jk=CY!c6FXuNdPEX=mx*9h8$cS%5s|;#^nAD(NNGOVusi_&l*_GoB^#bd2|Bzm zOV;|n^W6O=wb-El){TeBy)0BeB57${+`_}*HblvOuQIxtK^hlXx&DAuOGh?8kPT^? za+ee!3;hm+m!%DApz4XB#B{MCoCLXx)8(AE+1hq4dKMwl{-q#9Ly+YS-vmvH6P!@aJsJ&g?IBfv4P)~HSauv;@ie|rP*2Rw9OJ=zF z=d7PxiE`Z)TU?lx%pxCOn73ixo^+TqV69+ZRWVJOJ4zPIT*q`Z^i=R%#(>kqQF+2K zfCrbee;eT`zm-@Pl_X&a;-&f_=}Dty1$v=uI1@HV@kx09CimJ^ z{;BP|hmI029c9+ttW=fzw%2wCNRf=wFKN1Z?jdMOGP3|SW}ZPW06VKX-t6=_MsI8r%|Y5`OH zMvuP!Z6T+kooy~RLQIfm2TyZ~1kBka2o4rhP!JqkwynQqv&p*29iMb%=T6Ht0B_iO zoRev`2n;Mznpg&}JmTAawVHhipN5K|pZ$1faupG2M}96JrxZyqSB_uJs9#WSa8O!f z5DB-rpAu63r_B`-q%09{%$(?M!hIzby5n&jfdKaDb>DRW3eh4Q-yalWJ|#=AMHrm& zp9)S!U51}zG|Li~v0+|vKQVC({zx`oLx7%yNW!XY5p*&X2}wR%7BcxfOjeTtcBK#0 z!_^e3i1iig%*SHFL?;Fo2Y;myp`tOnesB9Zl5`^1)sf{PL3^v&K3+u5FtGm+G!*cZ zx;VOtq<&0^(D)8wP@F>kN0x<$tR2Z71i@-E$Bhez_Qm<$%LAzC{#H|46A5X+G587e zfs3x(xl?Q0N578p`jlh#cKf;B{rYihYk2q^G(0>HIkRUuGwp0ct9M>ef2IS+SG?T6 zO`w%FmCM!t^5+kVS;15)3y33Di}rwB36OG4QubnayJ1&@x4mJrp*7=%0BR(~=O+t8 zze*Wd5gyDlr*fy!OBpLUkUf3eXB~MCg%>CRRg^Xa$AZ8hWPAt6Y%iD<`2Is+ht5wt zb0=-N=^c9rOB|1s;LMr8n3I4J2R;K1{JR|4SJ+c7aAw@UhwFc(u~G2UX#A=jLbW)} z;d*hI?K9{T;A6#6@a7n|h=W}?yJWg0`ic+=zR254q;)$sE3B|<%Qw*O?}5$8MV-4C zertU|ZooZ$00Fy)MMl&1OGX#tauCPMLTd>sGXf$Ok zSRb^%jVjKFh$1EkRQ7D5FD86wRw1rqsh7d>|aq<;OY9T{lx@ za-+a6A8!#&=!6z31*spOMFatX=@vjuUXN6c`yoLlt|Ml>BU*MluFd+z;uMqki_u2r zcT(ur8w0npJ=)toDIjH2+&Hk>%(smJvPUhqwnH`!B3#;@9Hj(Ers+m#7^l1o^B{?h zDMiPbqvv`YVtqA=E{2~$2M2+>MY43|?W9{s2~}^qcin|jT%~erY6*~L1VIA0^+0Vf zDW$<*=i^An&cT*tP8)=SaLFJ-@{vkCF?PqeUNSWNC$=kW3J4Yx148O;zXq{q&A=Iw zrvLEw+%raR5~A1A4jE_8P1U8W%PGb*=MKO*sv0h_@7I}8BKBwJ<-2KKt?+sn|M)Kb zWVwp<-doi1Qu(5Ij6VL<%yv*0+quVu5)?5x8zv__Z3&Xf9%E~M-#>mK_hvg?MFe2r z0XgQbDb>_ZO$CEWr#2=y*?|Ti=z1>}2HBWw94OGDS46nYbEgy%>DZ$GU?asTj4E#* zF=dx1!%sd@hEHchmRg8JMK2Cfk3`D7niMac?28p2PTf2auGaq#lJSs z%Ey5%(Gq^Mk-2ST-Z9!x`f%!lf4HEtn}@@5l#MRojumx1y<%iaeg^o!wLYJmEcxI> zNAA**z(;6t@Mw~zoyEt@MK+foI5wZI?Vz$~8g-n2WiKM{qBzhdtisYppbd8+Z~24j zGn$9krg?|-y$~SKS3zKKW;>rw*ArJL1^>%tap7;I_=1Yi7^!j)QkMmgLsK9|WQ1IfycpxbRghUK0T(C*}qW?tf=Tw>TvU*Oi1O_DbGxnC@PZaVhBh8_e~H6IkF{E zDXf3M#WWEsWr*RF61uEII(xV6C?eterC?m z>{Au@c6czJ-lps)ZQsq*K8hpw-;|Cna`s~*6ZU1ft3vH^msd@zczezYz3N1>ajA6S zx;?kH7AfbNq(;4G=ms`leQa=uO>A26&$ew%X${h>Uo*!)Oj9hS>MgH!j7=C35uMW7 zzpNs#>ccy+3W?rqe5{@_!+dcgxAor3Nt(qC8DnRTNzIG78?+$bJ8iJ($n2ZviW|op z+4<7OL)z4r{Jofx{KZ2XM=Q73$<8x7NanvS~s-lz{caJMed~`HLfUQ{vn@A{4WnZKo+hQtuB*VrQTE@j|JG zD!8XC;`}_*17{0|_kvHB50iUZpKNNmecDRV^?uteuGz05>(6Vm_8&=I+PreG>qjf@ zjK~;1W}<(Ry3IfJk#tS}_K40!c}43V`M$El>E;ugM8^{k4ZBATn0oBpjIP2@-@N$I z+7yki!O}^Qx;f3h(z3wKWM8K@-}KqPj(k1Z_WN`O zxU*Y%_Kh6Lw!mw<9238G4X(8sGGqD;L;L0Q*QyLH4+>7U)E%z9y!!U-{e|79Jres> zNv>Fbk{6<}z_)zWS?v*}m=HNaZt~@FP8H^4ciK55C2cO=S-mMrr*kyg)yRqyx1|-X z-#4$mDI*>H5aIMeZT$Q zAA@S{EKCi%bR}odGRpy;voBhDG%3%UtWs>h)>MyPqa8W9eRcX*nIl#v7E}j7AAafH ztXH@1w6DIhFz{T4t=ryE2jZ=aVWAxt(%<=Im0#F~p4gu3`01SmJ-5tRW_|CW<~`Tf z+2VdRx3AqhyP(7wevp>QC~9CBWBYMw$?=-fRrOSYe7EYbW|+YXt7tlyS6gKtFkx7J z%AMiLC7FSP8q7x}tq#qft}t7+)jqs_*lz32pXL@^kN>lFr(MM=Q(0cg)!u&k%nQmF zBxs*Dt}zVutj2{e2YQ-13X0T$NSVt@RZN^ly(lg`0_5KVw6WpwVQQ_+B}NtIKUelt zPY}o4aT+8ALtMP$BcV+a=X?oP9^xtsj8|!OdRc&Cnh#XFs8{P;tvr0RY85E>$z1xR z31QSe0AvXjDjiIym_T3zhA|icl4){+U4UWZ;177SV#EKN@|;rmYOOi~vWgt2=smk+ z3{8XVWQ6Q*3<|k;Ek*v4E&m6@CbGsiI&dTmAH!6qO) z=<7v!B=QUb4JtIm<1v`nPjOrhwI*U7iQ0zKFR+b4ZNph~|8NeCR|F2q>Y{legd_e! zP^j+`7-}0FFJc=(qP7tXx>tNaMb^Th)AU6 zr%2Q{D4JKM7w}-oNDL!boG)z>@>mLq5hNi;<|QE>i01%^S8f-K2fP zAR(+FN*#PD>HC5}!Ri^S LF=KrFr&;|4#k|z* literal 0 HcmV?d00001 diff --git a/rest_api/test/samples/pdf/sample_pdf_2.pdf b/rest_api/test/samples/pdf/sample_pdf_2.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6384246e891c59abf174e7225ed7f793e814ed69 GIT binary patch literal 26093 zcmcG#1yo(jvM7oZBoH9DEeP)J?(PH&?oM!bcXti$?h@RC1P$))uE}4Jz0cYEopay4 z_l*C>8f(t(>e*G@)m2?Jt7{U=35ihC(=fsk_ikTo9~NF_PxSV~G6CoS)_P{JTwDNJ zDMKq`dlLXN5TpR06*0B2H?#%bEp+V-g$(tr4GaN1Jg|25wuZWvu+E^GQQu&@>E8LD zdW4=AKsSmnERz86%3$#z0=$jMf9eIOui`i6A;>%Yc6An3ym4}GV$bdq4FqD?5{Y3;Hv8|4kK_n=emd<(FKRtA4e30QjJ#LM(w?hJHv zFO9Fozc5M3#l{doE2nGxdbKsQvIj8!W|)GZowb9lzM&m}njl+9^i@r>Ar%Ml;{C$FJM?&B_##``=3wz zlNLSwUx@v&{`3s5&(X>NCq~QvA_P`I2>{Rv89JKk8!Ctj{P(hvk?5qP_ya9yyq&du z0+|p%e1+u-1NhDk@OwBvU%fe)i+6JU zUGhT0+sonRFsJ3rmn*5y18S>3b{pq@7@vB~wSdSy`9gHttActn<*2?tIqdp`j55-D z3x@Fy6hRfVbKS@YLiA1uZ2GC4J0+z^tiSf=gvQ&Tb&=|;9EsiRFRvIvRzV^t5Ln?E z7A{W`^lh+s#o9hhhF=iFR|(_{f%FV$IWS+!2se8xEp7^TC|ie;lSsC5u++vd+n6%L zTjf?#iPv+(A#y$?6R#QPxyK4DPsL~MLDxs+bCRR+O#bjpwN;CwGTL@D zkQ*ZPG~C*b1Z9vqODMkW^)lI00LTR-NZm^MC0?L~R&4JEJSkk*(UFB6XqGt*qt%k`8pm$MlWw**nxP{3X$7d59?jv+uCg-?#|! z%dx!&?-LA(eizGkKS5H2LE%@DBPhpx^}!yi<&CD_LpJmTfC=gu)WaVs8Ei`T?L0_> z_m3)0oHwG~BWps=sOiw?or~)dO=vs_jos+$*k>SA0ovVhZ}6-m8 zdz_&ujTkQ+cgh^k&}RCz^%Qha)e_>`^k8<~bHIHNhn0%efrW{sjFrUH&y1OBl{%EV zox003P-mhJR}Z1St-f2YMVF9rGOA=mTpPxoQ(kdgNIl7uw_M6yu3uEEYMd)mJBFee zOQXTc-}tFf(Mdp7l2(;gyHfr%hetlEJS*?3=vNJ|;m!%bf=(EJT31m{XwFyNOx@gd z{SPHErIQr7>bac#Z2AqKL(h3OHAt#LGQ?xWBZj0E=ciYcbXvyi#^KF(Oh}kYnOg_G zR4u8gm5Iz|v-fZfy63v2-BZGGhpC2Tpe>_mQyo(&QXf*`tC6cgs#?|^R6X=8^ro6? z>U#_Xnr-UWjukBL)Rz}iuR4A`_TWs_tXf8Em1!NnLAW7&BzdHV<_>ZWYDc)8w|69K z_4k-TI^0`t8aof)geG+(t)3DuT+L7$BOiM^mJ0`ueuh3xjbS_adA$k8HipK4CS2Ru zCTCiCF=12v@L^PXE@IcQ*Rpqcp8Lmh(<3FKBw~zc*g$+?+%DEQoK|pBrAmxSWn=8E z-l^GXArA*n2u}nLN{3@dsR!+y?lai4DA<)0q=xlrMafF;Zl9YDTTekw2xb#lnfw zi2c;yYRzg^j71HzhUG_*cCNNkx2#5Rhc1U6J(-P|og9oi9DfErbupiqBa{csR(x7) zmT}VTYFWSTIE=CcSc?5P8xa|aFvMQ93SF6&&z7(1&@rh!-RT!-7LZ?WrykQlu;{Zu zwK!fjsx3ELOd`~pyw)4p2;Gn+UWz?jRr64}Umm^jKW@*z$$xZObA02pw7lPPshXmv zruAc@VokGrd-USVMPsYVQO8GJjn6uWrcnk_bqqx{?Glw{qBDgDc?UjNQK>ua2X2kW z84Cl8b6;02y{14T!26(i@ZRIJc@5smnV0ih_USIIm-UPvemQ9QYV4)$C3Gxy9y2Z) zAeukW9px~?IX%Z(#2U}i9TD4Kz4>{-`g!eI&<&+@Uyd=i`3{1Ofc<=9;12&Z6Q1jb zOQ=W5KIwDTO~ZtGsCv%q(ridW9*e1)l-ugQ_f!V%7%nw$+AsI3@SBv>+F@hK@t85x z^fdM?C(jFk{($qa5cD7p6?>kRx~=aS6;%~0BR)x$TIbES#f$BaPs&N9#uemO}?A%&Ht$SmP4f1bIUGb(PsI?A5Y8LtgCjtXoN zr2Um}Un$!IIbJ+YDN-kLAX+Xu9)2Ib>{@-*cQz89G_@JK; z(}gpMrP0pnt^eiYzxv^?Zs@D`%|g%cr*Hh?#j{~x~8B&aT0ZHgd!%&APfvU)?z*Ey3q`GKGqqj6$Gh*v@FbZrKa{Al3V5#H$w zy{NvVb}LECBhz5vK7+SdkyXyHD`~;scXG{R_I#ReOb;d;Z}^gICZ1KCH&WVPP)DHg zi;4UsjB5b)1H~C19nO|}RgDR&$?Fyb}A%y2M@aMa! zgr9Av>W(=5cmeVTeLjNK#*n(fx18pbk$P>9n0QcaBx^1ZbU&v^c&mKpLvUe{f)5D- z>$34Hha5-W?#ww zcI$_$z7Om^`h7W^got`04$CkXyD3~gOE6$UxDlP`g+5cDcNeUmX-$RayfA`;s75&=P=vW?&D z_uwbQ;<6?O5v#Drk%<1dDuhd0H7gH4JT7m1@8fvDKbf?h4;8w=7N|5*yDl_dvu(vj zzjS^(1D22$f61@8A&nnfVqR=0!lJBV)NH1%=BYNhE6b}b7QzcJf2*O^crl*Xpcz}L zR98YlUVib3NI4>xH04y>OW^XBFVasaI+b-JozG9mpg=t(hK!Ly2xh}D{z$z3t#WIu zP!hRXK`euEC7PrE;}qKJDVFkz;786BIWV>J1hctt*j&WvlSaO*G$9#OC)jFS)80!6 zh>bc5jhx}YP#WtQmZUn!qrj6Ato?*(`yqV35D+tGvHAolua2r?!J<1`{PRp?afNkT z>85&r8H5!Z*!=};Th5-(087eCO--@DxKaUQZ1ffpLgsAn*iRb^W}t3bD`5)Hh7x1z z?}Ov?w+-yXZFmZ*6 za)ag^epd5acgK*yGKbHFyv3jDnxF#FTyExtZDSEtm5x zS<~4`V|HgEOIft&bCBZ+;5?N|`D4WtO$6~h9+a&qs>Ni-Yx`u$OP{-uwM7`kR`t4?QTQ!u2$gm)B*D%5~jpJ9TWr zR-HUv30h}&vlGklkcD!Ewoyn6G=8zdtfUXvmB2Mz@+qws!%wcWd$(LXL!B8_hf)eI zw5eY;^(zNQQFKOY*;v_$K?<|orSOfRlNj$O5x*=RpOvDl@`n1@@}gTxSnlxQ9YzxG zK6CJ(Q+K~f-8O!d>GYFzWp-uRvto9rt4Kz}PEC~pE&ww|m2JqRm?BI8LE6s9fwn72 zv={6f2yz_>TXr*tul$VE5aaUJECgQ9E$&gq7D`5MEWq#A8R?qCso^rJ3v$BHW>7wm z>CD$7Hw%BYHK$j7*nN99`OUa#Q`+4?%s)TF5#{y8GP0w6Lc0Mv9mWL(F`~ab^&|TPESU4 z5th`qnT8SJ@`TAobEXq0eRNnb-rn}It(7z5gHzq(n+}AIY5djV@WM+{Vy8hguXtmY zw^k}ME{TULKG@tp)cgqx5@lyiwBNJ+vQoQ4`n@aZa0yFhs>6~O8JKKT<{p`DV0DE+s& z40QhIHMsAf`yUGq%sFmY!gzFh{X3aNmKa2w#`f_hWH=&Vx-s%#^bjg9wM?m9&dfS# zj(G~`_uxNUB1ZI5?J>cv*T|lMWFCFTF{hI2=Ay$$O(c~~wpL!n3t(DpN0fxD9i0+9 zk0x2Bus735--WQvhTfZ<`KTPpXsY~Pvsiufr-&3=;S9v?yL^kuD5E@o%{V6s7?D1s z3#4hKZ##PFM*XmYLLz4qE?+HT<#;M%5YvT|K9W-%WpOF__54Z{U(TuIR~vJ6gmC=u zq0B`?^Ggyv-f|Zhg;Hj%S>X5w+P0`3#t6)mq}6>C(%Vd5Rub{KlpSj$vAZ@x*1T;x zBSZU{gtp+NH)Y=Q6pSYcHp)~8qg#*lB2X#5w6l2Wj?Z4gJS*fVRwl5xGKfWtShmMb zyYz9=>ZK5YMY@1|<8UR}#!o99%?4jk+h7GTRNv(*CmEkT70APcqmw-9WGp)~HthH2 zqI`qf4fo^iai_P!kDu=l_qi-U^kk^wS;YlQVozPfPJI8Pv4>{dt5=3BAb|H>ng^=X zDRP(>M%NGhLIs4LukA2a*4>LqS@(;jIO_i3LC(8QOFVwpQ1brIjM&(n75EVvm6g^y z9ZN!I?&i1;KEGyLs#b|PE!tL;gWC#fD3PCP5Cd=AF;S&`+^Sf-j(^yLoGhSyR8(9G z+sC^J$xs=;DP!yRTy^ulJ;3qC?{SR0e17}|>Zs4+_ir4Xe?%PVnb`i}#JmI*|BM3u zPhyVr|7Xzg)eZVf)DiaIL>*rOx_?9+U;F<_@c(((@g*wxC$T@nj=#f`|83kkLv7J& zQS8M^D2}JD6lO3QHcE1QN9*JX==?d9c|bxw zR3qdP12P+6mdWFAprm{m$uof~eKroqHF7iLRG5e_N4}4;ZSPQC@SY;|z>A{Sp~GCG zmfi5KtIQ+rBCTt?*Y*f-W~3R1 zn&z9wDy$I;B#jmQz{5>1>=TGNZ&!~uDFl}jNIz}i*0(Y>9cY$s)kp(K4Z2F?a|eBWSwFa&k~y7cLkKT8Jd2)tk{ z^T$UzCyu?^PFoyf=m$lLEFY_Jqxpta0(`Eh^oGHpQ(+=gp)hNx&BVZ!`t;`QZ+t_9 zi<(iP*Ow!Zb|VAV)WybpcA0+L^NQwyAlCYf&Lk|Y!Ar*s&`8NVrFerTJk?0n=nNM* zim99xs1USB<5bD2D7@Z#kG+g-k;3HN5{V%t$XmgQv9Y=d@7cE%DzZyvDApSZ^XZBq zzADwxNVE)8dipS5L_U4W68<@YwW>`&oD@{WlDZvqBdu=^{x9gFq#KWv`I3|XOs@GsNlGi3| zqH$hqVO0BZQ-ir-gfS(!_%8;#&w!3p#R0oWp8ddUnX^A9ZeoN24IWF=JwbRd$FE*_y=$^0+wA_w}c=b|CAQb0>?{d7YXiuY@B6c-rPU0EH zQ0xxs&Li*bBiDSNF==@hTx8)KXq4^;r6CEy?!8vBH9tv=gN1qQpJJdF7&Zi`(P`a0 zV#21=+}MPWw>vwx z+25Cl7`DoKSCi!wYTGI2@cK6^=j918Pr|s=1UuirDIhn<<+Z?OBXbF4EG}wSOIMW= z!V2S|s$;#igp^=R*5*}y14p=Y*-L?@Y)vC0MUzQjn~cNB*LNNcNx_V>9J&_TVo4TTu-J0pO@?o(wrB6zfY$0TjdKJ z28>7ouIGNHcVcWvw!H*u1*tbr6X7%>-+U7Vx;D)6EQ-rhmBBl7mrUTR8>QkKnQzlb znUC}s*wY*!xJ#O~JTN6FYx?c|_Fy$N(^~6Q+%c8Mq%&?tjrKXnrL_5%QJL~su=8@_{ za)r8CqfrnUq-h^@I9d~|y=1t(hi(>aK<>9ez)F4l`l9wQn?yk1F6T0a%(p^m81fp1 zDuEy4KPCf~WHd^15(F(g5IP#vzD}h+UH8^mHcs6z>St`GeLAGY?0kRj>{u1R))t&wY{w^Wec#XYba`>-393T^DjwY-4PY>vlvcMX-&eYvx0 zNFyneiS#)GgRv^nu|LIHboUWrnJH>69@R!GXP`KikjkEtSOK*PDQuR;6{q`L#whJ1 zf^)D**DbFz&U1?Hz_(hrc8yy3bNQRXw+q6HEz44p5vS_*J$BGRg0xc@8u$vg&PKS= z8Wy8>lnTzN`zHLDqMQs;Qw3TDMOrvcR%eUfY;cXP>z;)7I2U8A%L~a@tmJchHQL3E z(ug=En^KWwZ0it2Trm;gnn}%bLau5g7>d=<(%xFYBE+C3AH-J3cW*&}W1~DEAE8}U zOkQt(N1x54-&6ny5*(Y~s9qcue zPb=Hs8B>lBgyLV`n`Ak}cR7;U&mg0(CWd`%t}4^&Td<4MHzs!^7pz8c6iK=)>U>Jn zivzf)+a|-b%oa|u41Cm^UAM&iI%8?TczxZV%`*1%;MzY{A1(c9z6K8zDoJ6KUaPuf(UFzb_lZr;6I0;1zSF-#2CRZpB_cIfZHydt0d)?u8h2^3C8=v~cnS60D8JOAV|KZ~P z89jVCGXJ0W)C@1@^gtK-9|!sLuczt%JjwrWeCpT!f4aH~s#amh{xrfazj!MU>XkgH+ zFurk@*hnzB+e7ui*@33NB3WS*FI}Nbkh!{n%vC zs#AWG&_$il1_?2CLnI6NMU#9M^zRSodJm1IAQ!ae)(pq1YHpl&})Kl|eZ{LLaFJ;gpOl;6yHN_vZQBYx1E=d)p zrpNs7PW&}MRce)otY;or6cy}>54GHSSWtaW-PUUb49XxBzOkCob~GY@r3?C0;`vl3 zf%&8Ox-{t4XtUV**>$~@=Qt(MhW(1v!IUKwtQIn%q|971^vY&>25g@*betRjA?AvWy z(RK9=p|JKQ;7eC1~B8uzY5DgC87hM9sET0G$@w z_m3su)d^-y!$oN`teK{#gulSOGifDiS_(4Kiz;RJOjlF3R5h9x0@3?+Y0%H@g zY+bfYK*GmOV~R~Wd@^Obh7+8gFNNZgT(8I3qzVRZ6u|_wHpqAY-f>Zmm?fYfQ5+ur z7|&5^xdYf zPl$Ofh5r9)PhL0Dm(7))ft~eFd&2P7>u{zb2Cdf8wG4!)^l^{5M2@dNu!aV16&jKbZSpBVzn3qF1*5uV(ho z5i$J@(Z8y||9C{qe?#KFUp5dBvg`Cl*pKM>K={SDI#{68EL@VNaiI`XP$|0$-w3HPh6{->D!Cf%><{-0v{ zn|QzO82>9wuQma=qXV~qzsdLOrt_a-`kR2i?pyyUroTz}>(=+5V)~nizwVy@DW<>6 z_`e9|ORBZqKVP~2UGntH8=3>qqA&sZZfaonVoZQ&6ac?BEm->BTJXoxX#Pcdnf_Iy z1a<9oEv$`yr+C}_ncFR`YillUWn}%DR{c@|=A8hI;Y&t5(5U^*EW-X_)c$D`fx7ow z+x{FEt*V+j5cE6s8(8>9>dLMK}V>RSC1B4TQ5 zXD?`?Yx`noX{B`ks4xI+I<1PSfxXEqXIa@`=>SZxlYE&M9nf&I0sR2>*Z-e&MmAs_ z2xkP^YG!7Z|LPC>*S1$Yz&^jRzFb+D*Z?eS%m7xPpTtVX1YiN~J&tjBT)Z=ePEe^WmaY&ePHb1 zrOd?k&-wkYNftbesIFVgx?iTo|0GP;&P zS^Y00*h1GBsDMCGeCa6w{BQzRgPNV09ze~+Mh~E8XJZ8pjg=MnHH0`&Wli<@t&A-U zfkUC?x6^;|FWH%aU0(>kRHzw%n*pt$u8o+Xsj-PYEGzJM6sWj{mLGx7y?pwj`>GW{ z?~_*b_and+WBvVz7y!6twET|7uSx)50_qY_dz^pQfO5bL`#M5kkj0PzxW2$4DExJg z`Kwa@5tm{5?U(-X#SL&WEcC1_|NUnb+io!S=`#sCZeGXAw#5?lv?a%t!X*?lUlf#! zB@|4ni6j%LB^yQ(4Gdgjs-^WuL4!cVrx5l*9E}OsVN4SXQpWfMzZ<06rw$TIvC+K) zh)2ni#KG6evb4Cle#hySQssb1*lqo#o!>W+p3Y=9Hi|hq^Xs7Um)B{B+iB}<>uo!S z!*Wn$6^Uai`F!U(3UsC6cP}hb{ilu|)^ymxtoxoOj>@*1y^x1pQcT4L-1dh8%I)zM z^8S_;cE_!?FHb4$e&*{KR)bkC=oRbwq%zB7ULT)P9>za;T-ZFj9kbf}%0z*-E{htc z*|1wn^&^cO9KSXHY}tCVbzQhMo?zMJdAM*GIi0o3c-N-+(`s2e@`l9`eX3etY6xN< z8(&cHN8r8f6F7D_s@Fw#7A@0lN7pylv%Y!#G{lL3=f+FKpGO(zsoIxy3{g=nu87|` zL-QqJc4j=^u4c`0QC}0aEB>mr3{gXI$FzPknz^>xZ-e^L0A|M+jcY@?%6c=c9NU`O zPn`IYC=mlO{AvC3?iupbCisfpsKhVXDt4xCNyDRnBGtGvFviWptzP6Q>2K~4m$KtD z=aN~fSVrZ$UFCYZUeGNPP+%Vhg2vCm?*K%fKi~;T#=wVXDhdI!M1pI5fWOT!WAI!b zeQ5M?@(~553lSTp{a@NXTzDlgn+^4vjJ9B)E%s?0}U{(NzQqQ*8rWk@0HA8{=x? zEj<}j*T50o!z?kWyBm}{y7F+B7KmUtc>pk+ zUg$8bo}@6XD(uSuT|{TcIRExiWW2L<{ZbJ)n5>RbgCAebdcIZ;YRrYCe;u=3LYTWY zbOf8*{M7aR)8~EaI;V5lDw+M3=kJyNL}7k6zUkQ?qtS_czhukEVUrPYM>z#>(zH`^ z4U+`mSNWe2RRr;)PH5acfwP2sc7(+;LOsW98#LrF)Pqjzx%|^xOOi+I+&UglA;E;)SmDo&v=X1aYsjHN6%_US8I0I z{S6E#ngIbx4P96jSy(m8?AV5LIu7r15`=>ob-x1DHwLN^4z);!YA#AZpnWYeWi8(9 z$iq9M2Z98CmR^=x-9dwR%i^#1zq$>>BYu@ySS552e4`sRi`N_(tHHkj$=ZUx`}QQ0 zqryh?r0|*FRK-)-A>shF9qMGq@{ zC96lreungJICwuk)~eMQllF|e%B5m~`KZ}t1ocg#hPqaj`}9R)qE|Iq*+5z2LR*7y z>vzwr+^Nr<#r7wkdA8hV`#y=!k-hnk5uMt*BRdi>^xSrA3q$@lc~UP$rm)Y zoNjVnM@HFLA!W>fdM8~C;@Rk~yXs7!ydRRV%?H&cop%5);laL5l(y{W&H01d1?Rpb zw|m@~lPc<^zb*XtL5ZnsXiCwcqinJw5G=@JP)(Q?PnhC+|0lslxmT!n9^IpQ6 z_-)uV9vyERSN!Uu#=rmJAgbM}yVrjx z!{E7JF3Eiqge(gkQYig4Q|XA<{f<~H8QPD7=~K3&91IgeDkLuSG6V;B3-;BUJ+3{M ziGq7#qmDNn_6{9P&9HY8F!Ynq{nIU=A^B&WCfcWrqF#`Z6}&$@o<|y&p6mvl=JL(g zOl7*G?5Q@R%JNB65x`A#xKpnf(%<65HRt=&8*C06gf*lulbKkct_(O`+ayft(l}*s z{n)x@o6gwD$p5g{8rMGTbPgMDtuqqKf(m1@h&JkU0jQLcp1f<4-K0!5_VdIZNBQvG zMoxZg5Md+lWw4+ zwYLTEg{ugz)=tk+2Kk5Z5CaC4Ul&8Pq_+sa8(+NL5=hHid-Oem3H@wieuojADtLHE z>a9uhs|{pEE&ri5h_6qQa+;MQdoyp^v2s*CT$%Z6MNE_;xiSm<6)1EYoeGJUh877K zRs=2?x_}!UoL~B7)ZrnXrBwc%;6(jQ&^RjbRmFQjk!^gt4EA|U1ShC(92FN=Xt3>g zGwI*A4j1H)GLJ4&;%!@-{1)6-mRDC7*RLI~Zf;u_5l)Yfm)+RV7P;&5*KW}pq>c-2 zR0-aZg-ajz8?Y~i@rFg0W`>O11w(*@pZ6aa(P4$k+be=w`58?Xy|ZLz)W(?>3hP-X zUQcPD$_=6flEq+kIQ z!41s3rQZGxm{*T15aqbHg0O5?XUOSYmJyr*%T|H$1o0OC1N-h5R8U_uu?ehP0hCc_ z%1}LFemHnvv{>a8oMF+n45Zdv{iY8LpWZ1y@y_v7MxqA!c1aW{A7#imj9)q5!}~?qK>;{569PDDgPefB1F3qNMo0Y;+Tq2r6V#(wn4)_< zP)=y8iSnjF@8hN~Y7j0kSXVJvqds5$UoN!!oqj7&Gy*$mRR<=nX>{!vT!B=#h5-10 zX_`%b$YAa4CVqHIRW-fvj{R1?pLr7#Q5d29LiLCbC2#I4OsHrd`4!?w=7e4A;;>M- zhyt~2UBUWT3Mp5P@mEQdT&frp_tJ4guMzuO{kCz7pX_s#i&A}?<#b2!hFsN^D2RV` zCwEir`1+)q{NPkrn%ca4UvLTj7~yMZPQsaJ>+kBc`?UO7rFcuafhF$O`9>62i;@n% zY}{@VwFb=2P|pD!wHfw-3d;TG&M6rSEMC&hY|nC_8va)a+quTMgON zN#oo16)M_D1%c+WXB*Q#zlLsS@V0o%wjFt{qQmKg=VwA~@D7jUT{4ikhto;8)5u~`Po=pT!4|bvj(>BNFTk?+uJ?+5T z1ny7oZ#PXu&)MWed5Ub5?ot!;CkmqLrAp<>Ls0Ld%)IECPO!p*+%^!5-6qio2XH3L zn;0@mMpd5HhfnOCmk5Lc%t_3gC_Ipizlet44p^em9}nrA_XU>VdOSY3(=?uOo4~Y$ z5jvV=b0QVpZW~rnxv|qG*XrCbfrf=sv{mWRHr*0BIwNtm1>r9>Q0=kpkxXDtEN6@I?edTNy@B4#uE(h} z>Z%tyq=an!Afl+F4znd|NxUGl=4Hlto^240PGG!-sZI%D#PX&QOl^_bfmCdgB&x6X zw9+ic(R^Fw-W6)0-L_g*XGBbnK!vSc(>oT8ZWnnfk+MV+e!6d?h@Tvc z+8+D+d?I6(tB+1XlSg5X9}6$H3ztJOv%kjMH*aj~RFSR|^3I3w8dQqxXp3aWNmdH z-$1O_B3T?)Q-)z)zIk^G*aAS)3#6kpT*kzQs@hilpcej-ob{*>cm&LqM z41A8)<^6k6ttP8exWAwqhm>3FKsCC0m)m8>G_=^m?>C2iV61Gbg?DhqHjaa z&zhy!s?a0X83u)FPJ_-Rn<;ZGtRg7c;V!hXCoOZj?Slobc)LP@*=7OJQ$7P5lBDG+ z{9<_ft&HZ3?VAu=lZi>KtH%pV1Pv;Dj1t&1E=w(aB=3PeX$XcX>W2HD-S%C_)G`il zk89PP3VLkmD|E9?L z+NSTEQpmMmgj$-OYysH=e2Xz-&B5)$n2s#dI2GQ4ZXOc=9~vC#kn?v0xM@Kr)=i5O zH!9b&j(Q#mR_COQEoDj+)z`I7FmJw(kBe(AUowe6^Zog$cNS+q!*fN+P?pSQU^4gV?$S#>jDR>ykb@Ptg#^W!k6oPI%DwHPR(9P3 z_g3T&*8ilg$mDtnd6!B;j{Ma;&-DhSC;0k`bo}r`rKGQkXVOZ47H2-rEC{!^Qxj1&00B-6bmw{!fYHB1PF& z0lNIw6~Z3xiYs`-nX`gMT;#ZB^&Vv7BivIY?x)7GVIGKxIzDLfnuB-m1yNx6C7`6D z7Pc%gKE1COcXg~wA>x+Qx*;%&`2ejB4VhaVFQ8QB`MBqGg}ymPJyoA{Z{gXphl@Lm zTKlCqm-6)PmiD0q<%IhADU8-UeaNJ^*Nzghx{jH}K0vcNsGH2RJH;EqHDw!$iZTi*rbH_uL!d^xXLfW_0`|y^YT?|A0 zCq5DKSdT%HqaUb4jY4qM$^CbaJ8`jo(Edy-hp!D#P;prNH0Q!-q`@@z!Cyfso4i=X z{mLh&Id%kP9G#&cfz`-*dHLoVy3pU*U?j#T=U!s|3$m3KxjoI((2_Q{)aCkjcZ%dF zpY22+s;zD5J#lh3%o_R)ekfc6?S+=zNnhyc&Wi}IxTpFBaZit9#iyxmILd(H#saN= zC_{aCB>lZDdsRHYFF|~s0W~StrTFZHOxoYclzX>+lA_KcpR zoEqTB)-y1`Ul_zI%gsccxk1dm!HE#BuzB~6z6(maiXX*d0s@=q-xQ}`+lcxwvAX=U zxJ^w4z1OBxLqN%$wDds5%)W_!5d5q|qEK$~jmQIx!uXK-qpJP&Y{%uTZ>6!U(`ko9 z=OQETd_z8GiP{8uVN_zNmy&dzkyXmUue~Fxub(M2ju8u;aE@s*iX7Fxa34R{8p{4s z&Pv5;cc>;^jDEzIY*`kN8m=L5%Bd)oi%`Shi@z+gnTh2oGLT5%Zsrj8R-6s$$U!WY zz+@8qz)C|keG<*Az!?=vY?i}xA_ITT9A2t(s#3bt%xAqp|1^+-TTf*Vy5F@_lq?ID z@7<0DdD!r!LJ+AY>dis^M;Phr&yz;=Qw(dn=rw+NL6To>uJumsXKx(3nlFsTi>Md2 zZ;30p@TekL4D7xVVNXBK8q}J_nJ1`GA1NZT9PrGfkD$BA46G}XqVtRfV4JV5N|H}8R^~(IuzDV!OzykgIxFmQ>FdO{4qLGdyF5kk ztW*?Fj%P*PlUePjPv5_dB~-!+(Ux&hjSjkYdwvDM>+0?m$($YjWUF2gB)va%*c5wg z#x07SXEye^#52tOF};)5-a;mtT5?ar1#6R+z@p%s9Nk0u4s^B+QaSdNrkVxAjI-$N zta)GX$2#674kJ$2>#npzL+c7?qX||zKRi%AMEGoA8Juy?2lJ{E-c<*R8wgJ3M;!eF zye_mxnRrKa%I`UZ zMBe}^`k*>96o=I+cq&R28sDu`CWN6y=2)a)sZFx}S!7XmC-RFz4krWK!*BW2o*qVC zITLhfEqHj3TFt91D>{Kzp}do=^=J1P4q*f%`(c#}Z*^}$7*=@Wa;bF+dh>$s6(MrO z7Gc?2KYvw@wUbJefL91%&O`Q7(u;m6@>9@@5knRC0unI(22`VX9}yls>Y9gLB1$6A zV^t@JQFk&GUBvDV3tQ>kV*AWUK_SGaReZtTd?u^6w4A2|<16B&Y*+j7-Fqm}QQmpG z=Y$Yr?H@~r`+LNQgS9O5$ByXVy+VYOd9OO()#!xT)R;k=vfZ-!ltO^lS(#4`Wf*L@U!}id7nUW zgK;3b;t5ffq8!G%9_NgLa9(|bLC zSrT*iDt()r@!dh`q>EhgsF@=x#86Y~sbDHnJ|>?V5oW3e9#65)zTP3}c}R2w-bGDv zbEF6AmDFu57w~I`mfhdx=|7}c2aJO9dPD1A*uU}KDhnE=?SZd3mG8Oz4j!v?&_s}0 z2&E&)-=wdryXr%Ue!}hcxZBj3RqBAx=6(mF$$NRuxc5%OH*{RL%xKyHYd)A^?m7mI zYvzMxt|1W*aVfmIj^_n$Xd~MCS9f5-T=%mm{yQF*v$P=m_Z<*+ael`#-d|D@g6MZJ zZmdzO$lvPP5tSl8B3lKTu+`D(UNN^xp(G^{1y!!O91;69ZJZDM;=9{8#1=iB+x+|e-|}The{s!&pMwO0a488Yf{6Nw%V(2qwCH1@&bvSv6 zK$DZ30?s~yX<6V-Z9#V_ibRB4(**6A-+w1$BT z8dpD0A{WwlDi1iNp(4hxVCK~|>JX~iAz?cqSOqI^tGG!SaF0~;bdK}H7>p=1;!YEW z=b9A61N5?xF7w?Yp1D6P(EPw|U32;LcHFP_{hcWD4YCOi6C4LZ3yeLKJ?kFQgv-Pw z;DT$q))`c&C8uv!kc`N2a9zzNHgExL9uuCX*Tu4Zf_15IXSQ= ztC)HLKX(~ROvY~vR#828yjD9hd*-lj%^I&76MBpk^I|FB&jO}*@~G)Q=Y8T~!{T<# zb|Q<$M;PdD6@>gjVp5K&i-I=ayJ^eS06P3m!+)I&O>vt{2;l&HajwvV9&>KQ%^)HU z+@3dba)T}aB2k=jokvFN$Xmu+aTDn8+v1oVdP6` zs@CvNGDAiRv)3$&t)pmK0wNCuJ=T*XL}5Qt!%3na{=e$ZGb)N@+v5U9lH?>AWF#Zb z3^T(FFl3ROlLW~~&LBAns0c_91<3-E(|{sL5G9BQL^6^^K$7Gn2(RJjc^Bs1d*0XA zt3U0vYghHIuI}o!{=eP*KOf<4XAyiKsgAPYyKc{~pDklS%3$zDqOCYTzB|mGdge#x z7E)=$MP`4qoXIi9DPKhprhGM))bwsD^Zo471M_nBmBbMn1)5!xfk1(w>^=77?&Wbu zdfs>Zj#pBHjLK_=-_4TD|`)mz{ zno~QsF^Ch4RER(C*dqTDNKKMZs@sF#Z)o%V-IZn0(hMj%=M{TOEU_xp;uCX1vYjRy zmOUB={jo^peHTwx$XDT4q$-EcKdm+R*C0BcaJNdUhPxGMqJ|n-m`Z5Kdxjc?-?D9D zxNR<|;vZCn-P2YG;H-DMA;qtcnL&M6C6Xc#MVtGKjizB>TNWJbvpHuODr+uSNiiY!>fy4~X zonUrC9WCPt&8s}!^NbgLjY~X}a%XI--;gcLiNT)vWZK<-Y(D(G5G9`KZYkRAD~0>P ztb%)fsjKfWbS37Yhws+Q%!HII_4N*Iq1*sc60e%?M6R)jKFc(|c^n_cF!S<^Pl^gt z=>9^NZ$lM(i4*43cz#5U_z`jYRoyr5W7044ej=9%@}SMM+EnOPAFq$knu>Vsh=d0d zQ>jYJS|FN3==1EhUh=^Cin6PcBaD(S%IT%sZ@7z>F10BmI|=ruww})K_r(kh8X@{b z)~_k4YS6%E;}-e`OJDE)T+Dov*c|lPVBf_5z_4*Li1(pJ#>9Sqw_M>Shko2HV^g1l zzO(CgXLO)xZ;RA&+qxTukk<1T=%YnLWQWF^U1=}}e z>$x*xva)#{WBr)=2Fa{xdJMAdyyI2f+J~9g318nF(SLm58eP2{kx%A#XGWY5WiqF` zF8X7;eT)X7j1UR+mP3OaxcQ(?+mD}+x|a(J-yY5sI`vx4%HE*R=5L&l>11)u7-qZO z&pIR1U~%Q}6?MtOs>J45ZLwYisDFcLv5jN`g}G_{p`4pRxcf)e@Ng5?d8l82*VYY3 zBQ&P1-l0>Tq|6X9IA=w6)lhI>1Ca=+ViGwxDtYbsfPeT79yxMXy|L>&{`QW}ECFsv z$e!ZFVaU0QJ=1AUx97Y?(CMCamDBS*S!>(dYcjb#Q)}M-2Vfc*{Tc%OVG_{KMoNCI zCF8eki>~hIftwMD8-)|({6*@u-Ohh}$bRw`bWaIW%{nQMslM!&69TewSq&n)zEF|Q ztgl8E#%A|nNW+QSRYJihoEBps6S+wFwN3-{q z*RG7U<G#<1`T98*Lp>nGI^cAwbO(y*zCvWXa%_K}=0h8dL`!FqW~#_(ajex3`R zwm7K5$^9wtqLDQkv!kOw7b%Zr7P>bCY!m?n)Vw>6hYT3k+l zS~RNh(eUVa4|7QlC{2oA(^{!$Y{5=PB?Bfaib0w=Job+;`n+yN9a7F0WQDfoU*2x|!~UXG zee2HPA+dL7Z(LTi=<3}<+N0~M*V{P04yoia`g|ldc|!<^G5UyE-R8EI;Pm&JQrHyk zJbK&Vy!M(QW`=F`kU*E8$=hZ2k;~QrWJ+eAt@cZj3$sNhhac{x?g_(eq3xU<+9+Ge zblw${g~eT6A_?h6(f(j(AA(SW?ko;H4|%WvSKv-T_U&<>FEwQ*dle7UC!c?|m-s<> zyZ(o8(4Fe4Cz$xsC5Ll}cy=H4D;>&-TpP6pkD{H12FCJ_!eot;b1O48vngp=t~Z$( z&6jIP=*crVk9Lppan*NvNO&!A}OFAuyE4~qd)hdzcT-%Hzl zZUG9U!TI>DI!fXmG=u0&ektK#C%m!qzJ#0f-)^X*^>jdbI&aftit=+6j1?(m3srjq z_2to&?sd;Jszo~bgk(Zz_U+M|)P~Aiyf-;LFTf&LIs^}*y23^|uKGEWM z05`(T&&1>1^!xdvB+8_LwD|CIbfC;j+W6rJlQ1<5%TQfqA+IAO{5z8=|fd~$c$UU8JpZ8g=dPOjD%qky+@T5aTPsbZlf9hFCuMP0senb2r6mG>MI)jgF+B~EaL){tJ=;wPPQl2egUb~iRE8( zfq;hUZ(SfDmiu2>ARrS%LD->4KpZD5Ong=ib`t5gKJ=Fc3Q%YLivACEhGSKf-hnA1 zR`zJ!jmVXHzeP$Dws%OA2byjXYC$qRpj*oLsr2+z%AaD^_Sd(CM|Pxlr|u@s<}kv z@>jBsU|Wex390-(BD@jfhe|A65oYz;k-G2s1X*blq$%QGfyvK16Db&tE{5I?%W=)b z2_ulEnoGsN7OU+U49DHkZNj@%vW$i}CndZU==Sk1z8d z3S5`yswgvErwOdAyE!s+fHa*p=cz;L2alP%1aoN@C^+z&YS`F5GUk9+G~w{ct1CX! zw&OJMttcGVgzMy{^KDVtx)+e3gCEI9Khu>)Z&B!=w~gYMl7M)_Nzx$gmc?P=m6T-R z34ft|uR*7AzW5Bq%bLDUx#fzpYO_0~H6!+s^Hlpd2!BUUvzG1ZdpYUhGis$bUi(K< zm{#Z~Rr`MqXSw-@=^n|lhnuU_a?DKKVJPXdx@9H6JDM)zwDHpApVv~#{bPUdsjq?sqivQ`rn_8gG!W_k6H+3Y|`HXQ$ zLPq?}wZJK&^WCZKdhMbmXwxO7hURUFGRu4m7Kavow$~x*MAzO6T9J6s#>AfM&U?ni z^(gg{*WCEvvsz8vj_D06&O8CSS<-@$DjS~1TY)W^430!Q8bh=t4Ix%PYZ=b?`OZK8XdAx9&!)!3*+H0pTjNqsWm)V8Z7Vf(r?Td zrjAVt>|~8uTuYWB3G4n~#Y&w{p%q=?hSF?RRK8rOOFw*0w`2d_*f6n@nteSliw=nS zUZDo9*d~d&AN3x?l?z;aw={3dYj*U>FSy@(R>rpJ|2$`_Oui>#TK==QfIN1C;3S?k-CW4^vT%F#} z#9Yn(^HV7eb~&ab9ZR}mK-|+N8`)Z_RG`1rOQ7_{%{BJ48b6tjvdS*R;S~kmmIa}kB!iU+{Z2~39 zC14ur^1azZDid^4J)()-PqxJBgR;_}1D;vV)Tbxq+6FuzpZzcT2AtCpb%>}vYoQ+Ksxe_c!XS+BP zM#;Dc)KYdQ_o@X%#jGRDhO7^Dni~yQ1!iwSKfiN0kapeka&@#VU3H=~vEL*|>PmM0 zo0rLN%n1S&`ulBiit4iU0A$rX?q-fI4pt^EmewY>Z9QyEYyicym76;+07|$yTY6dm zzY5@SG_z3CV%G)Cw$4s~I9m_`7lg4J@ko2xIskP#QP-eIVIy944No&S4_|hmp#2F5 z>FvQwd{qYcs{p_$u=AYY9zfI+0}w{`xb{4ctOyhg6y!&M;b0^b0uwd>gSmkd@KbTN z{O>ORQd!^I&B_`Ozr*3gfTaD`!H$5#0ff++{Vy97hB&77j}LaIUp6rKSj>Og27#cC zk)AVt;A6nxjO`d8IBSC)W0I%+grEpuZ+FTDfkLp_LZL9>v*QE&;J_@NY6}L#k1@&9 zHX-1}ch&}nA8#Gb_z8ir#s`NVBblfD;0Od(A4nK>JYY+Rl@}xoJ022_6%T+95Lo#` zBCz5Ce#a2fsqsO;5aF|9hJb~z<_!XdBG2Xp0)`*ML1*G2j%kOpHela-)+UTNJ0B1* z@)%7$(-w7%2A#Db&*l^Y3aF zy%0Ed?jZ>5TtS4f))54l4(vXV2&_J!;Nvas>9IinO|FEFsfp8m!1_4;ZaUQ#Dg@j_ zXKhdfRv%C(3W?<>1O=d?Gx1<>)W7uM;bsPqA8seVP|>pWwE~_m>{m|!=@YyR_@p`^ z$9{cGDaZnNniv8Mg;^sImMC+$wGa$$jf9&+ktiszc&x3UR%TFf;(vDei??z203N0% S4>n+N3&DvwIj^b75&sVaB5i5_ literal 0 HcmV?d00001 diff --git a/rest_api/test/samples/pipeline/test_pipeline.yaml b/rest_api/test/samples/pipeline/test_pipeline.yaml new file mode 100644 index 0000000000..2634fe6f34 --- /dev/null +++ b/rest_api/test/samples/pipeline/test_pipeline.yaml @@ -0,0 +1,103 @@ +version: '0.7' + +components: + - name: Reader + type: FARMReader + params: + no_ans_boost: -10 + model_name_or_path: deepset/roberta-base-squad2 + num_processes: 0 + - name: ESRetriever + type: ElasticsearchRetriever + params: + document_store: DocumentStore + custom_query: null + - name: DocumentStore + type: ElasticsearchDocumentStore + params: + index: haystack_test + label_index: haystack_test_label + - name: PDFConverter + type: PDFToTextConverter + params: + remove_numeric_tables: false + - name: Preprocessor + type: PreProcessor + params: + clean_whitespace: true + - name: IndexTimeDocumentClassifier + type: TransformersDocumentClassifier + params: + batch_size: 16 + use_gpu: -1 + - name: QueryTimeDocumentClassifier + type: TransformersDocumentClassifier + params: + use_gpu: -1 + + +pipelines: + - name: query_pipeline + type: Pipeline + nodes: + - name: ESRetriever + inputs: [Query] + - name: Reader + inputs: [ESRetriever] + + - name: ray_query_pipeline + type: RayPipeline + nodes: + - name: ESRetriever + replicas: 2 + inputs: [ Query ] + - name: Reader + inputs: [ ESRetriever ] + + - name: query_pipeline_with_document_classifier + type: Pipeline + nodes: + - name: ESRetriever + inputs: [Query] + - name: QueryTimeDocumentClassifier + inputs: [ESRetriever] + - name: Reader + inputs: [QueryTimeDocumentClassifier] + + - name: indexing_pipeline + type: Pipeline + nodes: + - name: PDFConverter + inputs: [File] + - name: Preprocessor + inputs: [PDFConverter] + - name: ESRetriever + inputs: [Preprocessor] + - name: DocumentStore + inputs: [ESRetriever] + + - name: indexing_text_pipeline + type: Pipeline + nodes: + - name: TextConverter + inputs: [File] + - name: Preprocessor + inputs: [TextConverter] + - name: ESRetriever + inputs: [Preprocessor] + - name: DocumentStore + inputs: [ESRetriever] + + - name: indexing_pipeline_with_classifier + type: Pipeline + nodes: + - name: PDFConverter + inputs: [File] + - name: Preprocessor + inputs: [PDFConverter] + - name: IndexTimeDocumentClassifier + inputs: [Preprocessor] + - name: ESRetriever + inputs: [IndexTimeDocumentClassifier] + - name: DocumentStore + inputs: [ESRetriever] diff --git a/rest_api/test/samples/pipeline/test_pipeline_faiss_indexing.yaml b/rest_api/test/samples/pipeline/test_pipeline_faiss_indexing.yaml new file mode 100644 index 0000000000..8af2770a6a --- /dev/null +++ b/rest_api/test/samples/pipeline/test_pipeline_faiss_indexing.yaml @@ -0,0 +1,31 @@ +version: '0.7' + +components: + - name: DPRRetriever + type: DensePassageRetriever + params: + document_store: NewFAISSDocumentStore + - name: PDFConverter + type: PDFToTextConverter + params: + remove_numeric_tables: false + - name: Preprocessor + type: PreProcessor + params: + clean_whitespace: true + - name: NewFAISSDocumentStore + type: FAISSDocumentStore + + +pipelines: + - name: indexing_pipeline + type: Pipeline + nodes: + - name: PDFConverter + inputs: [File] + - name: Preprocessor + inputs: [PDFConverter] + - name: DPRRetriever + inputs: [Preprocessor] + - name: NewFAISSDocumentStore + inputs: [DPRRetriever] diff --git a/rest_api/test/samples/pipeline/test_pipeline_faiss_retrieval.yaml b/rest_api/test/samples/pipeline/test_pipeline_faiss_retrieval.yaml new file mode 100644 index 0000000000..e8b54546f8 --- /dev/null +++ b/rest_api/test/samples/pipeline/test_pipeline_faiss_retrieval.yaml @@ -0,0 +1,19 @@ +version: '0.7' + +components: + - name: DPRRetriever + type: DensePassageRetriever + params: + document_store: ExistingFAISSDocumentStore + - name: ExistingFAISSDocumentStore + type: FAISSDocumentStore + params: + faiss_index_path: 'existing_faiss_document_store' + + +pipelines: + - name: query_pipeline + type: Pipeline + nodes: + - name: DPRRetriever + inputs: [Query] diff --git a/rest_api/test/samples/pipeline/test_pipeline_tfidfretriever.yaml b/rest_api/test/samples/pipeline/test_pipeline_tfidfretriever.yaml new file mode 100644 index 0000000000..86249493f2 --- /dev/null +++ b/rest_api/test/samples/pipeline/test_pipeline_tfidfretriever.yaml @@ -0,0 +1,25 @@ +version: '0.9' + +components: + - name: Reader + type: FARMReader + params: + no_ans_boost: -10 + model_name_or_path: deepset/minilm-uncased-squad2 + num_processes: 0 + - name: Retriever + type: TfidfRetriever + params: + document_store: DocumentStore + - name: DocumentStore + type: InMemoryDocumentStore + + +pipelines: + - name: query_pipeline + type: Pipeline + nodes: + - name: Retriever + inputs: [Query] + - name: Reader + inputs: [Retriever] diff --git a/rest_api/test/test_rest_api.py b/rest_api/test/test_rest_api.py new file mode 100644 index 0000000000..7b719dd658 --- /dev/null +++ b/rest_api/test/test_rest_api.py @@ -0,0 +1,240 @@ +import os +from pathlib import Path + +import pytest +from fastapi.testclient import TestClient + + +from rest_api.application import app + + +FEEDBACK={ + "id": "123", + "query": "Who made the PDF specification?", + "document": { + "content": "A sample PDF file\n\nHistory and standardization\nFormat (PDF) Adobe Systems made the PDF specification available free of charge in 1993. In the early years PDF was popular mainly in desktop publishing workflows, and competed with a variety of formats such as DjVu, Envoy, Common Ground Digital Paper, Farallon Replica and even Adobe's own PostScript format. PDF was a proprietary format controlled by Adobe until it was released as an open standard on July 1, 2008, and published by the International Organization for Standardization as ISO 32000-1:2008, at which time control of the specification passed to an ISO Committee of volunteer industry experts. In 2008, Adobe published a Public Patent License to ISO 32000-1 granting royalty-free rights for all patents owned by Adobe that are necessary to make, use, sell, and distribute PDF-compliant implementations. PDF 1.7, the sixth edition of the PDF specification that became ISO 32000-1, includes some proprietary technologies defined only by Adobe, such as Adobe XML Forms Architecture (XFA) and JavaScript extension for Acrobat, which are referenced by ISO 32000-1 as normative and indispensable for the full implementation of the ISO 32000-1 specification. These proprietary technologies are not standardized and their specification is published only on Adobes website. Many of them are also not supported by popular third-party implementations of PDF. Column 1", + "content_type": "text", + "score": None, + "id": "fc18c987a8312e72a47fb1524f230bb0", + "meta": {}, + "embedding": None, + "id_hash_keys": None + }, + "answer": + { + "answer": "Adobe Systems", + "type": "extractive", + "context": "A sample PDF file\n\nHistory and standardization\nFormat (PDF) Adobe Systems made the PDF specification available free of charge in 1993. In the early ye", + "offsets_in_context": [{"start": 60, "end": 73}], + "offsets_in_document": [{"start": 60, "end": 73}], + "document_id": "fc18c987a8312e72a47fb1524f230bb0", + "meta": {}, + "score": None + }, + "is_correct_answer": True, + "is_correct_document": True, + "origin": "user-feedback", + "pipeline_id": "some-123", + } + + +def exclude_no_answer(responses): + responses["answers"] = [response for response in responses["answers"] if response.get("answer", None)] + return responses + + +@pytest.mark.elasticsearch +@pytest.fixture(scope="session") +def client() -> TestClient: + os.environ["PIPELINE_YAML_PATH"] = str((Path(__file__).parent / "samples"/"pipeline"/"test_pipeline.yaml").absolute()) + os.environ["INDEXING_PIPELINE_NAME"] = "indexing_text_pipeline" + client = TestClient(app) + yield client + # Clean up + client.post(url="/documents/delete_by_filters", data='{"filters": {}}') + + +@pytest.mark.elasticsearch +@pytest.fixture(scope="session") +def populated_client(client: TestClient) -> TestClient: + client.post(url="/documents/delete_by_filters", data='{"filters": {}}') + files_to_upload = [ + {'files': (Path(__file__).parent / "samples"/"pdf"/"sample_pdf_1.pdf").open('rb')}, + {'files': (Path(__file__).parent / "samples"/"pdf"/"sample_pdf_2.pdf").open('rb')} + ] + for index, fi in enumerate(files_to_upload): + response = client.post(url="/file-upload", files=fi, data={"meta": f'{{"meta_key": "meta_value", "meta_index": "{index}"}}'}) + assert 200 == response.status_code + yield client + client.post(url="/documents/delete_by_filters", data='{"filters": {}}') + + +def test_get_documents(): + os.environ["PIPELINE_YAML_PATH"] = str((Path(__file__).parent / "samples"/"pipeline"/"test_pipeline.yaml").absolute()) + os.environ["INDEXING_PIPELINE_NAME"] = "indexing_text_pipeline" + client = TestClient(app) + + # Clean up to make sure the docstore is empty + client.post(url="/documents/delete_by_filters", data='{"filters": {}}') + + # Upload the files + files_to_upload = [ + {'files': (Path(__file__).parent / "samples"/"docs"/"doc_1.txt").open('rb')}, + {'files': (Path(__file__).parent / "samples"/"docs"/"doc_2.txt").open('rb')} + ] + for index, fi in enumerate(files_to_upload): + response = client.post(url="/file-upload", files=fi, data={"meta": f'{{"meta_key": "meta_value_get"}}'}) + assert 200 == response.status_code + + # Get the documents + response = client.post(url="/documents/get_by_filters", data='{"filters": {"meta_key": ["meta_value_get"]}}') + assert 200 == response.status_code + response_json = response.json() + + # Make sure the right docs are found + assert len(response_json) == 2 + names = [doc["meta"]["name"] for doc in response_json] + assert "doc_1.txt" in names + assert "doc_2.txt" in names + meta_keys = [doc["meta"]["meta_key"] for doc in response_json] + assert all("meta_value_get"==meta_key for meta_key in meta_keys) + + +def test_delete_documents(): + os.environ["PIPELINE_YAML_PATH"] = str((Path(__file__).parent / "samples"/"pipeline"/"test_pipeline.yaml").absolute()) + os.environ["INDEXING_PIPELINE_NAME"] = "indexing_text_pipeline" + client = TestClient(app) + + # Clean up to make sure the docstore is empty + client.post(url="/documents/delete_by_filters", data='{"filters": {}}') + + # Upload the files + files_to_upload = [ + {'files': (Path(__file__).parent / "samples"/"docs"/"doc_1.txt").open('rb')}, + {'files': (Path(__file__).parent / "samples"/"docs"/"doc_2.txt").open('rb')} + ] + for index, fi in enumerate(files_to_upload): + response = client.post(url="/file-upload", files=fi, data={"meta": f'{{"meta_key": "meta_value_del", "meta_index": "{index}"}}'}) + assert 200 == response.status_code + + # Make sure there are two docs + response = client.post(url="/documents/get_by_filters", data='{"filters": {"meta_key": ["meta_value_del"]}}') + assert 200 == response.status_code + response_json = response.json() + assert len(response_json) == 2 + + # Delete one doc + response = client.post(url="/documents/delete_by_filters", data='{"filters": {"meta_index": ["0"]}}') + assert 200 == response.status_code + + # Now there should be only one doc + response = client.post(url="/documents/get_by_filters", data='{"filters": {"meta_key": ["meta_value_del"]}}') + assert 200 == response.status_code + response_json = response.json() + assert len(response_json) == 1 + + # Make sure the right doc was deleted + response = client.post(url="/documents/get_by_filters", data='{"filters": {"meta_index": ["0"]}}') + assert 200 == response.status_code + response_json = response.json() + assert len(response_json) == 0 + response = client.post(url="/documents/get_by_filters", data='{"filters": {"meta_index": ["1"]}}') + assert 200 == response.status_code + response_json = response.json() + assert len(response_json) == 1 + + +def test_file_upload(client: TestClient): + file_to_upload = {'files': (Path(__file__).parent / "samples"/"pdf"/"sample_pdf_1.pdf").open('rb')} + response = client.post(url="/file-upload", files=file_to_upload, data={"meta": '{"meta_key": "meta_value", "non-existing-field": "wrong-value"}'}) + assert 200 == response.status_code + + +def test_query_with_no_filter(populated_client: TestClient): + query_with_no_filter_value = {"query": "Who made the PDF specification?"} + response = populated_client.post(url="/query", json=query_with_no_filter_value) + assert 200 == response.status_code + response_json = response.json() + response_json = exclude_no_answer(response_json) + assert response_json["answers"][0]["answer"] == "Adobe Systems" + + +def test_query_with_one_filter(populated_client: TestClient): + query_with_filter = {"query": "Who made the PDF specification?", "params": {"Retriever": {"filters": {"meta_key": "meta_value"}}}} + response = populated_client.post(url="/query", json=query_with_filter) + assert 200 == response.status_code + response_json = response.json() + response_json = exclude_no_answer(response_json) + assert response_json["answers"][0]["answer"] == "Adobe Systems" + + +def test_query_with_one_global_filter(populated_client: TestClient): + query_with_filter = {"query": "Who made the PDF specification?", "params": {"filters": {"meta_key": "meta_value"}}} + response = populated_client.post(url="/query", json=query_with_filter) + assert 200 == response.status_code + response_json = response.json() + response_json = exclude_no_answer(response_json) + assert response_json["answers"][0]["answer"] == "Adobe Systems" + + +def test_query_with_filter_list(populated_client: TestClient): + query_with_filter_list = { + "query": "Who made the PDF specification?", + "params": {"Retriever": {"filters": {"meta_key": ["meta_value", "another_value"]}}} + } + response = populated_client.post(url="/query", json=query_with_filter_list) + assert 200 == response.status_code + response_json = response.json() + response_json = exclude_no_answer(response_json) + assert response_json["answers"][0]["answer"] == "Adobe Systems" + + +def test_query_with_invalid_filter(populated_client: TestClient): + query_with_invalid_filter = { + "query": "Who made the PDF specification?", "params": {"Retriever": {"filters": {"meta_key": "invalid_value"}}} + } + response = populated_client.post(url="/query", json=query_with_invalid_filter) + assert 200 == response.status_code + response_json = response.json() + response_json = exclude_no_answer(response_json) + assert len(response_json["answers"]) == 0 + + +def test_write_feedback(populated_client: TestClient): + response = populated_client.post(url="/feedback", json=FEEDBACK) + assert 200 == response.status_code + + +def test_get_feedback(client: TestClient): + response = client.post(url="/feedback", json=FEEDBACK) + assert response.status_code == 200 + response = client.get(url="/feedback") + assert response.status_code == 200 + json_response = response.json() + for response_item, expected_item in [(json_response[0][key], value) for key, value in FEEDBACK.items()]: + assert response_item == expected_item + + +def test_export_feedback(client: TestClient): + response = client.post(url="/feedback", json=FEEDBACK) + assert 200 == response.status_code + + feedback_urls = [ + "/export-feedback?full_document_context=true", + "/export-feedback?full_document_context=false&context_size=50", + "/export-feedback?full_document_context=false&context_size=50000", + ] + for url in feedback_urls: + response = client.get(url=url, json=FEEDBACK) + response_json = response.json() + context = response_json["data"][0]["paragraphs"][0]["context"] + answer_start = response_json["data"][0]["paragraphs"][0]["qas"][0]["answers"][0]["answer_start"] + answer = response_json["data"][0]["paragraphs"][0]["qas"][0]["answers"][0]["text"] + assert context[answer_start:answer_start+len(answer)] == answer + + +def test_get_feedback_malformed_query(client: TestClient): + feedback = FEEDBACK.copy() + feedback["unexpected_field"] = "misplaced-value" + response = client.post(url="/feedback", json=feedback) + assert response.status_code == 422 diff --git a/setup.cfg b/setup.cfg index 8d21d3f2ee..500bf58cb5 100644 --- a/setup.cfg +++ b/setup.cfg @@ -153,8 +153,11 @@ all = farm-haystack[gpu,docstores,ray,rest,ui,dev] -[pytest] -testpaths = test +[tool:pytest] +testpaths = + test + rest_api/test + ui/test python_files = test_*.py addopts = diff --git a/ui/__init__.py b/ui/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/ui/test/__init__.py b/ui/test/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/test_ui_utils.py b/ui/test/test_ui_utils.py similarity index 89% rename from test/test_ui_utils.py rename to ui/test/test_ui_utils.py index 6b0abe3234..e452213e3d 100644 --- a/test/test_ui_utils.py +++ b/ui/test/test_ui_utils.py @@ -1,6 +1,6 @@ from unittest.mock import patch -from ..ui.utils import haystack_is_ready +from ui.utils import haystack_is_ready def test_haystack_is_ready(): diff --git a/ui/webapp.py b/ui/webapp.py index 02c218dc04..03cb9dc286 100644 --- a/ui/webapp.py +++ b/ui/webapp.py @@ -15,7 +15,7 @@ # here https://gist.github.com/tvst/036da038ab3e999a64497f42de966a92 import SessionState - from .utils import haystack_is_ready, query, send_feedback, upload_doc, haystack_version, get_backlink + from ui.utils import haystack_is_ready, query, send_feedback, upload_doc, haystack_version, get_backlink except (ImportError, ModuleNotFoundError) as ie: raise ImportError("Failed to load the Streamlit app due to missing dependencies. Run 'pip install farm-haystack[ui]' to install them.") from ie From e1d4768b6babd9bac408ab206ad48a69b6210076 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Mon, 17 Jan 2022 15:59:13 +0100 Subject: [PATCH 29/76] Update the test matrix in the CI --- .github/workflows/linux_ci.yml | 2 +- .github/workflows/windows_ci.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/linux_ci.yml b/.github/workflows/linux_ci.yml index 65ca644294..d114c29e63 100644 --- a/.github/workflows/linux_ci.yml +++ b/.github/workflows/linux_ci.yml @@ -49,7 +49,7 @@ jobs: - uses: actions/checkout@v2 - id: set-matrix run: | - echo "::set-output name=matrix::$(cd test && ls -d test_*.py | jq -R . | jq -cs .)" + echo "::set-output name=matrix::$(find $(find . -type d -name test -not -path "./*env*/*") -type f -name test_*.py -printf "%f\n" | jq -SR . | jq -cs .)" outputs: matrix: ${{ steps.set-matrix.outputs.matrix }} build: diff --git a/.github/workflows/windows_ci.yml b/.github/workflows/windows_ci.yml index 0810d95766..cf89b6c172 100644 --- a/.github/workflows/windows_ci.yml +++ b/.github/workflows/windows_ci.yml @@ -54,7 +54,7 @@ jobs: - uses: actions/checkout@v2 - id: set-matrix run: | - echo "::set-output name=matrix::$(cd test && ls -d test_*.py | jq -R . | jq -cs .)" + echo "::set-output name=matrix::$(find $(find . -type d -name test -not -path "./*env*/*") -type f -name test_*.py -printf "%f\n" | jq -SR . | jq -cs .)" outputs: matrix: ${{ steps.set-matrix.outputs.matrix }} From 093de4844a8eb0e76b5152c9ef0ebe853df34e9c Mon Sep 17 00:00:00 2001 From: ZanSara Date: Mon, 17 Jan 2022 16:35:47 +0100 Subject: [PATCH 30/76] Add try catch statements around the optional imports too to account for direct imports --- haystack/document_stores/elasticsearch.py | 12 +++-- haystack/document_stores/faiss.py | 12 +++-- haystack/document_stores/graphdb.py | 7 ++- haystack/document_stores/milvus.py | 8 +++- haystack/document_stores/milvus2x.py | 54 ++++------------------- haystack/document_stores/sql.py | 13 ++++-- haystack/document_stores/weaviate.py | 9 ++-- haystack/nodes/connector/__init__.py | 4 +- haystack/nodes/connector/crawler.py | 8 +++- haystack/utils/import_utils.py | 2 +- test/test_connector.py | 2 +- 11 files changed, 63 insertions(+), 68 deletions(-) diff --git a/haystack/document_stores/elasticsearch.py b/haystack/document_stores/elasticsearch.py index 6e3951bba8..e87390e94d 100644 --- a/haystack/document_stores/elasticsearch.py +++ b/haystack/document_stores/elasticsearch.py @@ -1,3 +1,4 @@ +from modulefinder import Module from typing import List, Optional, Union, Dict, Any, Generator import json @@ -8,11 +9,16 @@ import numpy as np from scipy.special import expit from tqdm.auto import tqdm -from elasticsearch import Elasticsearch, RequestsHttpConnection -from elasticsearch.helpers import bulk, scan -from elasticsearch.exceptions import RequestError import pandas as pd +try: + from elasticsearch import Elasticsearch, RequestsHttpConnection + from elasticsearch.helpers import bulk, scan + from elasticsearch.exceptions import RequestError +except (ImportError, ModuleNotFoundError) as ie: + raise ImportError(f"Failed to import the 'elasticsearch' Haystack module. " + f"Run 'pip install farm-haystack[elasticsearch]' to fix this error.") from ie + from haystack.document_stores import BaseDocumentStore from haystack.schema import Document, Label from haystack.document_stores.base import get_batches_from_generator diff --git a/haystack/document_stores/faiss.py b/haystack/document_stores/faiss.py index 30e6857e65..2d8269350b 100644 --- a/haystack/document_stores/faiss.py +++ b/haystack/document_stores/faiss.py @@ -9,14 +9,18 @@ from typing import Union, List, Optional, Dict, Generator from tqdm.auto import tqdm import warnings - -import faiss import numpy as np +from inspect import Signature, signature + +try: + import faiss + from haystack.document_stores.sql import SQLDocumentStore # its deps are optional, but get installed with the `faiss` extra +except (ImportError, ModuleNotFoundError) as ie: + raise ImportError(f"Failed to import the 'faiss' Haystack module. " + f"Run 'pip install farm-haystack[faiss]' to fix this error.") from ie from haystack.schema import Document -from haystack.document_stores.sql import SQLDocumentStore from haystack.document_stores.base import get_batches_from_generator -from inspect import Signature, signature logger = logging.getLogger(__name__) diff --git a/haystack/document_stores/graphdb.py b/haystack/document_stores/graphdb.py index a2d8518297..0c6d7c856b 100644 --- a/haystack/document_stores/graphdb.py +++ b/haystack/document_stores/graphdb.py @@ -3,9 +3,14 @@ import requests from pathlib import Path -from SPARQLWrapper import SPARQLWrapper, JSON from requests.auth import HTTPBasicAuth +try: + from SPARQLWrapper import SPARQLWrapper, JSON +except (ImportError, ModuleNotFoundError) as ie: + raise ImportError(f"Failed to import the 'graphdb' Haystack module. " + f"Run 'pip install farm-haystack[graphdb]' to fix this error.") from ie + from haystack.document_stores import BaseKnowledgeGraph diff --git a/haystack/document_stores/milvus.py b/haystack/document_stores/milvus.py index cce2e1279a..dbb2a8a9f5 100644 --- a/haystack/document_stores/milvus.py +++ b/haystack/document_stores/milvus.py @@ -9,10 +9,14 @@ from tqdm import tqdm from scipy.special import expit -from milvus import IndexType, MetricType, Milvus, Status +try: + from milvus import IndexType, MetricType, Milvus, Status + from haystack.document_stores.sql import SQLDocumentStore +except (ImportError, ModuleNotFoundError) as ie: + raise ImportError(f"Failed to import the 'milvus' Haystack module. " + f"Run 'pip install farm-haystack[milvus]' to fix this error.") from ie from haystack.schema import Document -from haystack.document_stores.sql import SQLDocumentStore from haystack.document_stores.base import get_batches_from_generator diff --git a/haystack/document_stores/milvus2x.py b/haystack/document_stores/milvus2x.py index 163198a3f7..6533b00adb 100644 --- a/haystack/document_stores/milvus2x.py +++ b/haystack/document_stores/milvus2x.py @@ -11,6 +11,14 @@ from scipy.special import expit from tqdm import tqdm +try: + from pymilvus import FieldSchema, CollectionSchema, Collection, connections + from pymilvus.client.abstract import QueryResult + from pymilvus.client.types import DataType +except (ImportError, ModuleNotFoundError) as ie: + raise ImportError(f"Failed to import the 'milvus2x' Haystack module. " + f"Run 'pip install farm-haystack[milvus2]' to fix this error.") from ie + from haystack.schema import Document from haystack.document_stores.sql import SQLDocumentStore from haystack.document_stores.base import get_batches_from_generator @@ -130,10 +138,6 @@ def __init__( ) logger.warning("Milvus2DocumentStore is in experimental state until Milvus 2.0 is released") - try: - from pymilvus import connections - except: - raise ImportError("Missing client for Milvus 2.0. Install via: pip install pymilvus===2.0.0rc6 ") connections.add_connection(default={"host": host, "port": port}) connections.connect() @@ -185,12 +189,6 @@ def _create_collection_and_index_if_not_exist( index_param = index_param or self.index_param custom_fields = self.custom_fields or [] - try: - from pymilvus import FieldSchema, CollectionSchema, Collection, connections - from pymilvus.client.types import DataType - except: - raise ImportError("Missing client for Milvus 2.0. Install via: pip install pymilvus===2.0.0rc6 ") - connection = connections.get_connection() has_collection = connection.has_collection(collection_name=index) if not has_collection: @@ -272,10 +270,6 @@ def write_documents(self, documents: Union[List[dict], List[Document]], index: O mutation_result: Any = None if add_vectors: - try: - from pymilvus import connections - except: - raise ImportError("Missing client for Milvus 2.0. Install via: pip install pymilvus===2.0.0rc6 ") connection = connections.get_connection() field_to_idx, field_to_type = self._get_field_to_idx(connection, index) @@ -335,12 +329,6 @@ def write_documents(self, documents: Union[List[dict], List[Document]], index: O @staticmethod def _get_field_to_idx(connection, index): - try: - from pymilvus import CollectionSchema, connections - from pymilvus.client.types import DataType - except: - raise ImportError("Missing client for Milvus 2.0. Install via: pip install pymilvus===2.0.0rc6 ") - resp = connection.describe_collection(index) collection_schema = CollectionSchema.construct_from_dict(resp) field_to_idx: Dict[str, int] = {} @@ -385,12 +373,6 @@ def update_embeddings( return logger.info(f"Updating embeddings for {document_count} docs...") - - try: - from pymilvus import connections - except: - raise ImportError("Missing client for Milvus 2.0. Install via: pip install pymilvus===2.0.0rc6 ") - connection = connections.get_connection() field_to_idx, field_to_type = self._get_field_to_idx(connection, index) @@ -465,12 +447,6 @@ def query_by_embedding(self, raise NotImplementedError("Milvus2DocumentStore does not support headers.") index = index or self.index - try: - from pymilvus import connections - from pymilvus.client.abstract import QueryResult - except: - raise ImportError("Missing client for Milvus 2.0. Install via: pip install pymilvus===2.0.0rc6 ") - connection = connections.get_connection() has_collection = connection.has_collection(collection_name=index) if not has_collection: @@ -547,10 +523,6 @@ def delete_documents(self, index: Optional[str] = None, ids: Optional[List[str]] index = index or self.index super().delete_documents(index=index, filters=filters) - try: - from pymilvus import connections - except: - raise ImportError("Missing client for Milvus 2.0. Install via: pip install pymilvus===2.0.0rc6 ") connection = connections.get_connection() has_collection = connection.has_collection(collection_name=index) @@ -675,12 +647,6 @@ def _populate_embeddings_to_docs(self, docs: List[Document], index: Optional[str if len(docs_with_vector_ids) == 0: return - try: - from pymilvus import connections - from pymilvus.client.abstract import QueryResult - except: - raise ImportError("Missing client for Milvus 2.0. Install via: pip install pymilvus===2.0.0rc6 ") - connection = connections.get_connection() connection.load_collection(index) @@ -718,10 +684,6 @@ def get_embedding_count(self, index: Optional[str] = None, filters: Optional[Dic if filters: raise Exception("filters are not supported for get_embedding_count in MilvusDocumentStore.") index = index or self.index - try: - from pymilvus import connections - except: - raise ImportError("Missing client for Milvus 2.0. Install via: pip install pymilvus===2.0.0rc6 ") connection = connections.get_connection() stats = connection.get_collection_stats(index) diff --git a/haystack/document_stores/sql.py b/haystack/document_stores/sql.py index 666870238a..321c0d9053 100644 --- a/haystack/document_stores/sql.py +++ b/haystack/document_stores/sql.py @@ -4,10 +4,15 @@ import itertools import numpy as np from uuid import uuid4 -from sqlalchemy import and_, func, create_engine, Column, String, DateTime, ForeignKey, Boolean, Text, text, JSON -from sqlalchemy.ext.declarative import declarative_base -from sqlalchemy.orm import relationship, sessionmaker -from sqlalchemy.sql import case, null + +try: + from sqlalchemy import and_, func, create_engine, Column, String, DateTime, ForeignKey, Boolean, Text, text, JSON + from sqlalchemy.ext.declarative import declarative_base + from sqlalchemy.orm import relationship, sessionmaker + from sqlalchemy.sql import case, null +except (ImportError, ModuleNotFoundError) as ie: + raise ImportError(f"Failed to import the 'sql' Haystack module. " + f"Run 'pip install farm-haystack[sql]' to fix this error.") from ie from haystack.schema import Document, Label, Answer from haystack.document_stores.base import BaseDocumentStore diff --git a/haystack/document_stores/weaviate.py b/haystack/document_stores/weaviate.py index e17ff98fbe..d1eb950c32 100644 --- a/haystack/document_stores/weaviate.py +++ b/haystack/document_stores/weaviate.py @@ -12,9 +12,12 @@ from haystack.document_stores import BaseDocumentStore from haystack.document_stores.base import get_batches_from_generator -from weaviate import client, AuthClientPassword -from weaviate import ObjectsBatchRequest - +try: + from weaviate import client, AuthClientPassword + from weaviate import ObjectsBatchRequest +except (ImportError, ModuleNotFoundError) as ie: + raise ImportError(f"Failed to import the 'weaviate' Haystack module. " + f"Run 'pip install farm-haystack[weaviate]' to fix this error.") from ie logger = logging.getLogger(__name__) UUID_PATTERN = re.compile(r'^[\da-f]{8}-([\da-f]{4}-){3}[\da-f]{12}$', re.IGNORECASE) diff --git a/haystack/nodes/connector/__init__.py b/haystack/nodes/connector/__init__.py index 810a3de8a5..dbbc65dd9d 100644 --- a/haystack/nodes/connector/__init__.py +++ b/haystack/nodes/connector/__init__.py @@ -1 +1,3 @@ -from haystack.nodes.connector.crawler import Crawler \ No newline at end of file +from haystack.utils.import_utils import safe_import + +Crawler = safe_import("haystack.nodes.connector", "Crawler", "crawler") # Has optional dependenciesP \ No newline at end of file diff --git a/haystack/nodes/connector/crawler.py b/haystack/nodes/connector/crawler.py index 2e6299a680..ec61274b7a 100644 --- a/haystack/nodes/connector/crawler.py +++ b/haystack/nodes/connector/crawler.py @@ -9,8 +9,12 @@ from haystack.nodes.base import BaseComponent -from webdriver_manager.chrome import ChromeDriverManager -from selenium import webdriver +try: + from webdriver_manager.chrome import ChromeDriverManager + from selenium import webdriver +except (ImportError, ModuleNotFoundError) as ie: + raise ImportError(f"Failed to import the 'crawler' Haystack module. " + f"Run 'pip install farm-haystack[crawler]' to fix this error.") from ie logger = logging.getLogger(__name__) diff --git a/haystack/utils/import_utils.py b/haystack/utils/import_utils.py index 8c574ba0a1..6bf2b4f493 100644 --- a/haystack/utils/import_utils.py +++ b/haystack/utils/import_utils.py @@ -39,7 +39,7 @@ class MissingDependency: def __init__(self, *args, **kwargs): raise ImportError(f"Failed to import {classname}. " - f"Run 'pip install farm-haystack[{dep_group}]' to install them.") from import_error + f"Run 'pip install farm-haystack[{dep_group}]' to fix this error.") from import_error def __getattr__(self, *a, **k): return None diff --git a/test/test_connector.py b/test/test_connector.py index 494b213949..4d3b34aaf2 100644 --- a/test/test_connector.py +++ b/test/test_connector.py @@ -3,7 +3,7 @@ from re import search import pytest -from haystack.connector import Crawler +from haystack.nodes.connector import Crawler def test_crawler_url_none_exception(tmp_path): From 0dd1615964dd5d4694e814d82b78be057463cb6f Mon Sep 17 00:00:00 2001 From: ZanSara Date: Mon, 17 Jan 2022 16:53:15 +0100 Subject: [PATCH 31/76] Fix crawler imports --- haystack/nodes/__init__.py | 2 +- haystack/nodes/connector/__init__.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/haystack/nodes/__init__.py b/haystack/nodes/__init__.py index 84c8b2688d..91da01853f 100644 --- a/haystack/nodes/__init__.py +++ b/haystack/nodes/__init__.py @@ -1,7 +1,7 @@ from haystack.utils.import_utils import safe_import from haystack.nodes.base import BaseComponent -Crawler = safe_import("haystack.nodes.connector", "Crawler", "crawler") # Has optional dependencies +Crawler = safe_import("haystack.nodes.connector.crawler", "Crawler", "crawler") # Has optional dependencies from haystack.nodes.answer_generator import BaseGenerator, RAGenerator, Seq2SeqGenerator from haystack.nodes.document_classifier import BaseDocumentClassifier, TransformersDocumentClassifier from haystack.nodes.evaluator import EvalDocuments, EvalAnswers diff --git a/haystack/nodes/connector/__init__.py b/haystack/nodes/connector/__init__.py index dbbc65dd9d..e60c8f121d 100644 --- a/haystack/nodes/connector/__init__.py +++ b/haystack/nodes/connector/__init__.py @@ -1,3 +1,3 @@ from haystack.utils.import_utils import safe_import -Crawler = safe_import("haystack.nodes.connector", "Crawler", "crawler") # Has optional dependenciesP \ No newline at end of file +Crawler = safe_import("haystack.nodes.connector.crawler", "Crawler", "crawler") # Has optional dependenciesP \ No newline at end of file From 4f367419f998c65c496ea47a80cf8acf94d7b372 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Mon, 17 Jan 2022 17:14:11 +0100 Subject: [PATCH 32/76] try again to make the CI find the tests --- .github/workflows/linux_ci.yml | 4 ++-- .github/workflows/windows_ci.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/linux_ci.yml b/.github/workflows/linux_ci.yml index d114c29e63..a39c4bd674 100644 --- a/.github/workflows/linux_ci.yml +++ b/.github/workflows/linux_ci.yml @@ -49,7 +49,7 @@ jobs: - uses: actions/checkout@v2 - id: set-matrix run: | - echo "::set-output name=matrix::$(find $(find . -type d -name test -not -path "./*env*/*") -type f -name test_*.py -printf "%f\n" | jq -SR . | jq -cs .)" + echo "::set-output name=matrix::$(find $(find . -type d -name test -not -path "./*env*/*") -type f -name test_*.py | jq -SR . | jq -cs .)" outputs: matrix: ${{ steps.set-matrix.outputs.matrix }} build: @@ -99,4 +99,4 @@ jobs: run: sudo apt-get install tesseract-ocr libtesseract-dev poppler-utils - name: Run tests - run: cd test && pytest -s ${{ matrix.test-path }} + run: pytest -s ${{ matrix.test-path }} diff --git a/.github/workflows/windows_ci.yml b/.github/workflows/windows_ci.yml index cf89b6c172..de2a85e4d7 100644 --- a/.github/workflows/windows_ci.yml +++ b/.github/workflows/windows_ci.yml @@ -54,7 +54,7 @@ jobs: - uses: actions/checkout@v2 - id: set-matrix run: | - echo "::set-output name=matrix::$(find $(find . -type d -name test -not -path "./*env*/*") -type f -name test_*.py -printf "%f\n" | jq -SR . | jq -cs .)" + echo "::set-output name=matrix::$(find $(find . -type d -name test -not -path "./*env*/*") -type f -name test_*.py | jq -SR . | jq -cs .)" outputs: matrix: ${{ steps.set-matrix.outputs.matrix }} @@ -94,4 +94,4 @@ jobs: # Removing test_ray, test_utils, test_preprocessor, test_knowledge_graph and test_connector - name: Run tests if: ${{ !contains(fromJSON('["test_ray.py", "test_knowledge_graph.py", "test_connector.py", "test_summarizer_translation.py"]'), matrix.test-path) }} - run: cd test && pytest --document_store_type=memory,faiss,elasticsearch -m "not tika and not graphdb" -k "not test_parsr_converter" -s ${{ matrix.test-path }} + run: pytest --document_store_type=memory,faiss,elasticsearch -m "not tika and not graphdb" -k "not test_parsr_converter" -s ${{ matrix.test-path }} From 7e5731a90780d83a91613cb5c3607d9b86d4f5cc Mon Sep 17 00:00:00 2001 From: ZanSara Date: Mon, 17 Jan 2022 17:15:27 +0100 Subject: [PATCH 33/76] Remove duplicate test_rest_api.py file --- test/test_rest_api.py | 240 ------------------------------------------ 1 file changed, 240 deletions(-) delete mode 100644 test/test_rest_api.py diff --git a/test/test_rest_api.py b/test/test_rest_api.py deleted file mode 100644 index ab110f6a97..0000000000 --- a/test/test_rest_api.py +++ /dev/null @@ -1,240 +0,0 @@ -import os -from pathlib import Path - -import pytest -from fastapi.testclient import TestClient - - -from ..rest_api.application import app - - -FEEDBACK={ - "id": "123", - "query": "Who made the PDF specification?", - "document": { - "content": "A sample PDF file\n\nHistory and standardization\nFormat (PDF) Adobe Systems made the PDF specification available free of charge in 1993. In the early years PDF was popular mainly in desktop publishing workflows, and competed with a variety of formats such as DjVu, Envoy, Common Ground Digital Paper, Farallon Replica and even Adobe's own PostScript format. PDF was a proprietary format controlled by Adobe until it was released as an open standard on July 1, 2008, and published by the International Organization for Standardization as ISO 32000-1:2008, at which time control of the specification passed to an ISO Committee of volunteer industry experts. In 2008, Adobe published a Public Patent License to ISO 32000-1 granting royalty-free rights for all patents owned by Adobe that are necessary to make, use, sell, and distribute PDF-compliant implementations. PDF 1.7, the sixth edition of the PDF specification that became ISO 32000-1, includes some proprietary technologies defined only by Adobe, such as Adobe XML Forms Architecture (XFA) and JavaScript extension for Acrobat, which are referenced by ISO 32000-1 as normative and indispensable for the full implementation of the ISO 32000-1 specification. These proprietary technologies are not standardized and their specification is published only on Adobes website. Many of them are also not supported by popular third-party implementations of PDF. Column 1", - "content_type": "text", - "score": None, - "id": "fc18c987a8312e72a47fb1524f230bb0", - "meta": {}, - "embedding": None, - "id_hash_keys": None - }, - "answer": - { - "answer": "Adobe Systems", - "type": "extractive", - "context": "A sample PDF file\n\nHistory and standardization\nFormat (PDF) Adobe Systems made the PDF specification available free of charge in 1993. In the early ye", - "offsets_in_context": [{"start": 60, "end": 73}], - "offsets_in_document": [{"start": 60, "end": 73}], - "document_id": "fc18c987a8312e72a47fb1524f230bb0", - "meta": {}, - "score": None - }, - "is_correct_answer": True, - "is_correct_document": True, - "origin": "user-feedback", - "pipeline_id": "some-123", - } - - -def exclude_no_answer(responses): - responses["answers"] = [response for response in responses["answers"] if response.get("answer", None)] - return responses - - -@pytest.mark.elasticsearch -@pytest.fixture(scope="session") -def client() -> TestClient: - os.environ["PIPELINE_YAML_PATH"] = str((Path(__file__).parent / "samples"/"pipeline"/"test_pipeline.yaml").absolute()) - os.environ["INDEXING_PIPELINE_NAME"] = "indexing_text_pipeline" - client = TestClient(app) - yield client - # Clean up - client.post(url="/documents/delete_by_filters", data='{"filters": {}}') - - -@pytest.mark.elasticsearch -@pytest.fixture(scope="session") -def populated_client(client: TestClient) -> TestClient: - client.post(url="/documents/delete_by_filters", data='{"filters": {}}') - files_to_upload = [ - {'files': (Path(__file__).parent / "samples"/"pdf"/"sample_pdf_1.pdf").open('rb')}, - {'files': (Path(__file__).parent / "samples"/"pdf"/"sample_pdf_2.pdf").open('rb')} - ] - for index, fi in enumerate(files_to_upload): - response = client.post(url="/file-upload", files=fi, data={"meta": f'{{"meta_key": "meta_value", "meta_index": "{index}"}}'}) - assert 200 == response.status_code - yield client - client.post(url="/documents/delete_by_filters", data='{"filters": {}}') - - -def test_get_documents(): - os.environ["PIPELINE_YAML_PATH"] = str((Path(__file__).parent / "samples"/"pipeline"/"test_pipeline.yaml").absolute()) - os.environ["INDEXING_PIPELINE_NAME"] = "indexing_text_pipeline" - client = TestClient(app) - - # Clean up to make sure the docstore is empty - client.post(url="/documents/delete_by_filters", data='{"filters": {}}') - - # Upload the files - files_to_upload = [ - {'files': (Path(__file__).parent / "samples"/"docs"/"doc_1.txt").open('rb')}, - {'files': (Path(__file__).parent / "samples"/"docs"/"doc_2.txt").open('rb')} - ] - for index, fi in enumerate(files_to_upload): - response = client.post(url="/file-upload", files=fi, data={"meta": f'{{"meta_key": "meta_value_get"}}'}) - assert 200 == response.status_code - - # Get the documents - response = client.post(url="/documents/get_by_filters", data='{"filters": {"meta_key": ["meta_value_get"]}}') - assert 200 == response.status_code - response_json = response.json() - - # Make sure the right docs are found - assert len(response_json) == 2 - names = [doc["meta"]["name"] for doc in response_json] - assert "doc_1.txt" in names - assert "doc_2.txt" in names - meta_keys = [doc["meta"]["meta_key"] for doc in response_json] - assert all("meta_value_get"==meta_key for meta_key in meta_keys) - - -def test_delete_documents(): - os.environ["PIPELINE_YAML_PATH"] = str((Path(__file__).parent / "samples"/"pipeline"/"test_pipeline.yaml").absolute()) - os.environ["INDEXING_PIPELINE_NAME"] = "indexing_text_pipeline" - client = TestClient(app) - - # Clean up to make sure the docstore is empty - client.post(url="/documents/delete_by_filters", data='{"filters": {}}') - - # Upload the files - files_to_upload = [ - {'files': (Path(__file__).parent / "samples"/"docs"/"doc_1.txt").open('rb')}, - {'files': (Path(__file__).parent / "samples"/"docs"/"doc_2.txt").open('rb')} - ] - for index, fi in enumerate(files_to_upload): - response = client.post(url="/file-upload", files=fi, data={"meta": f'{{"meta_key": "meta_value_del", "meta_index": "{index}"}}'}) - assert 200 == response.status_code - - # Make sure there are two docs - response = client.post(url="/documents/get_by_filters", data='{"filters": {"meta_key": ["meta_value_del"]}}') - assert 200 == response.status_code - response_json = response.json() - assert len(response_json) == 2 - - # Delete one doc - response = client.post(url="/documents/delete_by_filters", data='{"filters": {"meta_index": ["0"]}}') - assert 200 == response.status_code - - # Now there should be only one doc - response = client.post(url="/documents/get_by_filters", data='{"filters": {"meta_key": ["meta_value_del"]}}') - assert 200 == response.status_code - response_json = response.json() - assert len(response_json) == 1 - - # Make sure the right doc was deleted - response = client.post(url="/documents/get_by_filters", data='{"filters": {"meta_index": ["0"]}}') - assert 200 == response.status_code - response_json = response.json() - assert len(response_json) == 0 - response = client.post(url="/documents/get_by_filters", data='{"filters": {"meta_index": ["1"]}}') - assert 200 == response.status_code - response_json = response.json() - assert len(response_json) == 1 - - -def test_file_upload(client: TestClient): - file_to_upload = {'files': (Path(__file__).parent / "samples"/"pdf"/"sample_pdf_1.pdf").open('rb')} - response = client.post(url="/file-upload", files=file_to_upload, data={"meta": '{"meta_key": "meta_value", "non-existing-field": "wrong-value"}'}) - assert 200 == response.status_code - - -def test_query_with_no_filter(populated_client: TestClient): - query_with_no_filter_value = {"query": "Who made the PDF specification?"} - response = populated_client.post(url="/query", json=query_with_no_filter_value) - assert 200 == response.status_code - response_json = response.json() - response_json = exclude_no_answer(response_json) - assert response_json["answers"][0]["answer"] == "Adobe Systems" - - -def test_query_with_one_filter(populated_client: TestClient): - query_with_filter = {"query": "Who made the PDF specification?", "params": {"Retriever": {"filters": {"meta_key": "meta_value"}}}} - response = populated_client.post(url="/query", json=query_with_filter) - assert 200 == response.status_code - response_json = response.json() - response_json = exclude_no_answer(response_json) - assert response_json["answers"][0]["answer"] == "Adobe Systems" - - -def test_query_with_one_global_filter(populated_client: TestClient): - query_with_filter = {"query": "Who made the PDF specification?", "params": {"filters": {"meta_key": "meta_value"}}} - response = populated_client.post(url="/query", json=query_with_filter) - assert 200 == response.status_code - response_json = response.json() - response_json = exclude_no_answer(response_json) - assert response_json["answers"][0]["answer"] == "Adobe Systems" - - -def test_query_with_filter_list(populated_client: TestClient): - query_with_filter_list = { - "query": "Who made the PDF specification?", - "params": {"Retriever": {"filters": {"meta_key": ["meta_value", "another_value"]}}} - } - response = populated_client.post(url="/query", json=query_with_filter_list) - assert 200 == response.status_code - response_json = response.json() - response_json = exclude_no_answer(response_json) - assert response_json["answers"][0]["answer"] == "Adobe Systems" - - -def test_query_with_invalid_filter(populated_client: TestClient): - query_with_invalid_filter = { - "query": "Who made the PDF specification?", "params": {"Retriever": {"filters": {"meta_key": "invalid_value"}}} - } - response = populated_client.post(url="/query", json=query_with_invalid_filter) - assert 200 == response.status_code - response_json = response.json() - response_json = exclude_no_answer(response_json) - assert len(response_json["answers"]) == 0 - - -def test_write_feedback(populated_client: TestClient): - response = populated_client.post(url="/feedback", json=FEEDBACK) - assert 200 == response.status_code - - -def test_get_feedback(client: TestClient): - response = client.post(url="/feedback", json=FEEDBACK) - assert response.status_code == 200 - response = client.get(url="/feedback") - assert response.status_code == 200 - json_response = response.json() - for response_item, expected_item in [(json_response[0][key], value) for key, value in FEEDBACK.items()]: - assert response_item == expected_item - - -def test_export_feedback(client: TestClient): - response = client.post(url="/feedback", json=FEEDBACK) - assert 200 == response.status_code - - feedback_urls = [ - "/export-feedback?full_document_context=true", - "/export-feedback?full_document_context=false&context_size=50", - "/export-feedback?full_document_context=false&context_size=50000", - ] - for url in feedback_urls: - response = client.get(url=url, json=FEEDBACK) - response_json = response.json() - context = response_json["data"][0]["paragraphs"][0]["context"] - answer_start = response_json["data"][0]["paragraphs"][0]["qas"][0]["answers"][0]["answer_start"] - answer = response_json["data"][0]["paragraphs"][0]["qas"][0]["answers"][0]["text"] - assert context[answer_start:answer_start+len(answer)] == answer - - -def test_get_feedback_malformed_query(client: TestClient): - feedback = FEEDBACK.copy() - feedback["unexpected_field"] = "misplaced-value" - response = client.post(url="/feedback", json=feedback) - assert response.status_code == 422 From 9896d19237604cac203f75ff62720c186d30b552 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Tue, 18 Jan 2022 15:53:39 +0100 Subject: [PATCH 34/76] Never mix direct deps with self-references and add ES deps to the base install --- setup.cfg | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/setup.cfg b/setup.cfg index 500bf58cb5..0415d19ff7 100644 --- a/setup.cfg +++ b/setup.cfg @@ -52,7 +52,6 @@ use_scm_version = True python_requires = >=3.7 packages = find: include_package_data = True -test_suite = tests setup_requires = setuptools >= 46.4.0 install_requires = @@ -89,6 +88,10 @@ install_requires = quantulum3 azure-ai-formrecognizer==3.2.0b2 + # Elasticsearch deps + elasticsearch>=7.7,<=7.10 + elastic-apm + [options.packages.find] exclude = @@ -99,28 +102,31 @@ exclude = [options.extras_require] -elasticsearch= - elasticsearch>=7.7,<=7.10 - elastic-apm sql = sqlalchemy>=1.4.2 sqlalchemy_utils psycopg2-binary; sys_platform != 'win32' and sys_platform != 'cygwin' +_faiss = + faiss-cpu>=1.6.3 # for FAISS with GPUs: install faiss-gpu faiss = farm-haystack[sql] - faiss-cpu>=1.6.3 # for FAISS with GPUs: install faiss-gpu + farm-haystack[_faiss] +_milvus = + pymilvus # Refer milvus version support matrix at https://github.com/milvus-io/pymilvus#install-pymilvus milvus = farm-haystack[sql] - pymilvus # Refer milvus version support matrix at https://github.com/milvus-io/pymilvus#install-pymilvus + farm-haystack[_milvus] +_milvus2 = + pymilvus==2.0.0rc6 # Refer milvus version support matrix at https://github.com/milvus-io/pymilvus#install-pymilvus milvus2 = farm-haystack[sql] - pymilvus==2.0.0rc6 # Refer milvus version support matrix at https://github.com/milvus-io/pymilvus#install-pymilvus + farm-haystack[_milvus2] weaviate = weaviate-client==2.5.0 graphdb = SPARQLWrapper docstores = - farm-haystack[elasticsearch,faiss,milvus,weaviate,graphdb] + farm-haystack[faiss,milvus,weaviate,graphdb] gpu = onnxruntime-gpu # faiss-gpu @@ -146,11 +152,10 @@ dev = markdown tox coverage - farm-haystack[crawler] ci = - farm-haystack[docstores,ray,rest,ui,dev] + farm-haystack[docstores,crawler,ray,rest,ui,dev] all = - farm-haystack[gpu,docstores,ray,rest,ui,dev] + farm-haystack[docstores,crawler,ray,rest,ui,dev,gpu] [tool:pytest] From f7a622125e4c6297605cd43807f96d9ffe5345b2 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Tue, 18 Jan 2022 16:16:09 +0100 Subject: [PATCH 35/76] Remove pip version check, too strict --- pyproject.toml | 6 ++++++ setup.cfg | 19 ++++++++----------- setup.py | 11 ----------- 3 files changed, 14 insertions(+), 22 deletions(-) create mode 100644 pyproject.toml diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000000..5fa7e430ba --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,6 @@ +[build-system] +requires = [ + "setuptools", + "wheel", +] +build-backend = "setuptools.build_meta" \ No newline at end of file diff --git a/setup.cfg b/setup.cfg index 0415d19ff7..4cd915fbc6 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,3 @@ -[bdist_wheel] -universal = 1 - [metadata] name = farm-haystack version = file: VERSION.txt @@ -89,8 +86,8 @@ install_requires = azure-ai-formrecognizer==3.2.0b2 # Elasticsearch deps - elasticsearch>=7.7,<=7.10 - elastic-apm + elasticsearch>=7.7,<=7.10; not os.getenv("HAYSTACK_NO_ES") + elastic-apm; not os.getenv("HAYSTACK_NO_ES") [options.packages.find] @@ -106,21 +103,21 @@ sql = sqlalchemy>=1.4.2 sqlalchemy_utils psycopg2-binary; sys_platform != 'win32' and sys_platform != 'cygwin' -_faiss = +only_faiss = faiss-cpu>=1.6.3 # for FAISS with GPUs: install faiss-gpu faiss = farm-haystack[sql] - farm-haystack[_faiss] -_milvus = + farm-haystack[only_faiss] +only_milvus = pymilvus # Refer milvus version support matrix at https://github.com/milvus-io/pymilvus#install-pymilvus milvus = farm-haystack[sql] - farm-haystack[_milvus] -_milvus2 = + farm-haystack[only_milvus] +only_milvus2 = pymilvus==2.0.0rc6 # Refer milvus version support matrix at https://github.com/milvus-io/pymilvus#install-pymilvus milvus2 = farm-haystack[sql] - farm-haystack[_milvus2] + farm-haystack[only_milvus2] weaviate = weaviate-client==2.5.0 graphdb = diff --git a/setup.py b/setup.py index b5f4be6eab..8b084b7065 100644 --- a/setup.py +++ b/setup.py @@ -1,15 +1,4 @@ # setup.py will still be needed for a while to allow editable installs. # Check regularly in the future if this is still the case, or it can be safely removed. - -# Make sure the correct pip is used. Pip below 21.3 will be stuck in a loop on the self referencing extra_requires -# Note: these two lines are incompatible with the existence of a pyproject.toml file, as it will not involve pip -# in the execution of setup.py and therefore break this check. Re evaluate later if this is still the case, and -# if this check is still needed. -import pkg_resources -try: - pkg_resources.require(['pip >= 21.3.0']) -except pkg_resources.VersionConflict as vce: - raise pkg_resources.VersionConflict("Please upgrade your pip to >= 21.3.1 by running 'pip install --upgrade pip'.") from vce - from setuptools import setup setup() \ No newline at end of file From 6749af02f46401df2bc09ee9f97b0539bec95242 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Tue, 18 Jan 2022 18:25:13 +0100 Subject: [PATCH 36/76] General review of optional deps --- haystack/document_stores/elasticsearch.py | 4 +- haystack/document_stores/faiss.py | 5 +- haystack/document_stores/graphdb.py | 4 +- haystack/document_stores/milvus.py | 4 +- haystack/document_stores/milvus2x.py | 4 +- haystack/document_stores/sql.py | 4 +- haystack/document_stores/weaviate.py | 5 +- haystack/nodes/connector/__init__.py | 2 +- haystack/nodes/connector/crawler.py | 4 +- haystack/nodes/file_converter/__init__.py | 8 +- haystack/nodes/file_converter/image.py | 11 +- haystack/nodes/file_converter/markdown.py | 19 ++- haystack/nodes/reader/transformers.py | 2 +- .../nodes/retriever/_embedding_encoder.py | 14 +-- haystack/utils/import_utils.py | 10 +- rest_api/application.py | 3 +- setup.cfg | 109 ++++++++++-------- setup.py | 14 ++- test/conftest.py | 5 +- ui/utils.py | 3 +- ui/webapp.py | 3 +- 21 files changed, 139 insertions(+), 98 deletions(-) diff --git a/haystack/document_stores/elasticsearch.py b/haystack/document_stores/elasticsearch.py index 82ff36405c..6e69b0599b 100644 --- a/haystack/document_stores/elasticsearch.py +++ b/haystack/document_stores/elasticsearch.py @@ -16,8 +16,8 @@ from elasticsearch.helpers import bulk, scan from elasticsearch.exceptions import RequestError except (ImportError, ModuleNotFoundError) as ie: - raise ImportError(f"Failed to import the 'elasticsearch' Haystack module. " - f"Run 'pip install farm-haystack[elasticsearch]' to fix this error.") from ie + from haystack.utils.import_utils import _optional_component_not_installed + _optional_component_not_installed(__name__, "elasticsearch", ie) from haystack.document_stores import BaseDocumentStore from haystack.schema import Document, Label diff --git a/haystack/document_stores/faiss.py b/haystack/document_stores/faiss.py index 7ced53c068..3fe962f8e3 100644 --- a/haystack/document_stores/faiss.py +++ b/haystack/document_stores/faiss.py @@ -16,8 +16,9 @@ import faiss from haystack.document_stores.sql import SQLDocumentStore # its deps are optional, but get installed with the `faiss` extra except (ImportError, ModuleNotFoundError) as ie: - raise ImportError(f"Failed to import the 'faiss' Haystack module. " - f"Run 'pip install farm-haystack[faiss]' to fix this error.") from ie + from haystack.utils.import_utils import _optional_component_not_installed + _optional_component_not_installed(__name__, "faiss", ie) + from haystack.schema import Document from haystack.document_stores.base import get_batches_from_generator diff --git a/haystack/document_stores/graphdb.py b/haystack/document_stores/graphdb.py index 0c6d7c856b..f30fbc7956 100644 --- a/haystack/document_stores/graphdb.py +++ b/haystack/document_stores/graphdb.py @@ -8,8 +8,8 @@ try: from SPARQLWrapper import SPARQLWrapper, JSON except (ImportError, ModuleNotFoundError) as ie: - raise ImportError(f"Failed to import the 'graphdb' Haystack module. " - f"Run 'pip install farm-haystack[graphdb]' to fix this error.") from ie + from haystack.utils.import_utils import _optional_component_not_installed + _optional_component_not_installed(__name__, "graphdb", ie) from haystack.document_stores import BaseKnowledgeGraph diff --git a/haystack/document_stores/milvus.py b/haystack/document_stores/milvus.py index 8048a42262..fdd1ea6e9e 100644 --- a/haystack/document_stores/milvus.py +++ b/haystack/document_stores/milvus.py @@ -13,8 +13,8 @@ from milvus import IndexType, MetricType, Milvus, Status from haystack.document_stores.sql import SQLDocumentStore except (ImportError, ModuleNotFoundError) as ie: - raise ImportError(f"Failed to import the 'milvus' Haystack module. " - f"Run 'pip install farm-haystack[milvus]' to fix this error.") from ie + from haystack.utils.import_utils import _optional_component_not_installed + _optional_component_not_installed(__name__, "milvus", ie) from haystack.schema import Document from haystack.document_stores.base import get_batches_from_generator diff --git a/haystack/document_stores/milvus2x.py b/haystack/document_stores/milvus2x.py index e4b26e747d..6421c97620 100644 --- a/haystack/document_stores/milvus2x.py +++ b/haystack/document_stores/milvus2x.py @@ -16,8 +16,8 @@ from pymilvus.client.abstract import QueryResult from pymilvus.client.types import DataType except (ImportError, ModuleNotFoundError) as ie: - raise ImportError(f"Failed to import the 'milvus2x' Haystack module. " - f"Run 'pip install farm-haystack[milvus2]' to fix this error.") from ie + from haystack.utils.import_utils import _optional_component_not_installed + _optional_component_not_installed(__name__, "milvus2", ie) from haystack.schema import Document from haystack.document_stores.sql import SQLDocumentStore diff --git a/haystack/document_stores/sql.py b/haystack/document_stores/sql.py index 12c133bf26..5519978841 100644 --- a/haystack/document_stores/sql.py +++ b/haystack/document_stores/sql.py @@ -11,8 +11,8 @@ from sqlalchemy.orm import relationship, sessionmaker from sqlalchemy.sql import case, null except (ImportError, ModuleNotFoundError) as ie: - raise ImportError(f"Failed to import the 'sql' Haystack module. " - f"Run 'pip install farm-haystack[sql]' to fix this error.") from ie + from haystack.utils.import_utils import _optional_component_not_installed + _optional_component_not_installed(__name__, "sql", ie) from haystack.schema import Document, Label, Answer from haystack.document_stores.base import BaseDocumentStore diff --git a/haystack/document_stores/weaviate.py b/haystack/document_stores/weaviate.py index aa1dcc37fc..4e13d1ea86 100644 --- a/haystack/document_stores/weaviate.py +++ b/haystack/document_stores/weaviate.py @@ -16,8 +16,9 @@ from weaviate import client, AuthClientPassword from weaviate import ObjectsBatchRequest except (ImportError, ModuleNotFoundError) as ie: - raise ImportError(f"Failed to import the 'weaviate' Haystack module. " - f"Run 'pip install farm-haystack[weaviate]' to fix this error.") from ie + from haystack.utils.import_utils import _optional_component_not_installed + _optional_component_not_installed(__name__, "weaviate", ie) + logger = logging.getLogger(__name__) UUID_PATTERN = re.compile(r'^[\da-f]{8}-([\da-f]{4}-){3}[\da-f]{12}$', re.IGNORECASE) diff --git a/haystack/nodes/connector/__init__.py b/haystack/nodes/connector/__init__.py index e60c8f121d..d4fd99cf3f 100644 --- a/haystack/nodes/connector/__init__.py +++ b/haystack/nodes/connector/__init__.py @@ -1,3 +1,3 @@ from haystack.utils.import_utils import safe_import -Crawler = safe_import("haystack.nodes.connector.crawler", "Crawler", "crawler") # Has optional dependenciesP \ No newline at end of file +Crawler = safe_import("haystack.nodes.connector.crawler", "Crawler", "crawler") # Has optional dependencies \ No newline at end of file diff --git a/haystack/nodes/connector/crawler.py b/haystack/nodes/connector/crawler.py index ec61274b7a..c09c0262c7 100644 --- a/haystack/nodes/connector/crawler.py +++ b/haystack/nodes/connector/crawler.py @@ -13,8 +13,8 @@ from webdriver_manager.chrome import ChromeDriverManager from selenium import webdriver except (ImportError, ModuleNotFoundError) as ie: - raise ImportError(f"Failed to import the 'crawler' Haystack module. " - f"Run 'pip install farm-haystack[crawler]' to fix this error.") from ie + from haystack.utils.import_utils import _optional_component_not_installed + _optional_component_not_installed(__name__, "crawler", ie) logger = logging.getLogger(__name__) diff --git a/haystack/nodes/file_converter/__init__.py b/haystack/nodes/file_converter/__init__.py index f7a71c32b5..db1d46f22a 100644 --- a/haystack/nodes/file_converter/__init__.py +++ b/haystack/nodes/file_converter/__init__.py @@ -1,9 +1,11 @@ from haystack.nodes.file_converter.base import BaseConverter +from haystack.utils.import_utils import safe_import +ImageToTextConverter = safe_import("haystack.nodes.file_converter.image", "ImageToTextConverter", "ocr") # Has optional dependencies +MarkdownConverter = safe_import("haystack.nodes.file_converter.markdown", "MarkdownConverter", "preprocessing") # Has optional dependencies + from haystack.nodes.file_converter.docx import DocxToTextConverter -from haystack.nodes.file_converter.image import ImageToTextConverter -from haystack.nodes.file_converter.markdown import MarkdownConverter from haystack.nodes.file_converter.pdf import PDFToTextConverter, PDFToTextOCRConverter from haystack.nodes.file_converter.tika import TikaConverter, TikaXHTMLParser from haystack.nodes.file_converter.txt import TextConverter from haystack.nodes.file_converter.azure import AzureConverter -from haystack.nodes.file_converter.parsr import ParsrConverter +from haystack.nodes.file_converter.parsr import ParsrConverter \ No newline at end of file diff --git a/haystack/nodes/file_converter/image.py b/haystack/nodes/file_converter/image.py index 74ae1ee62c..69f7c7cbbe 100644 --- a/haystack/nodes/file_converter/image.py +++ b/haystack/nodes/file_converter/image.py @@ -3,9 +3,14 @@ import logging import subprocess from pathlib import Path -import pytesseract -from PIL.PpmImagePlugin import PpmImageFile -from PIL import Image + +try: + import pytesseract + from PIL.PpmImagePlugin import PpmImageFile + from PIL import Image +except (ImportError, ModuleNotFoundError) as ie: + from haystack.utils.import_utils import _optional_component_not_installed + _optional_component_not_installed(__name__, "ocr", ie) from haystack.nodes.file_converter import BaseConverter diff --git a/haystack/nodes/file_converter/markdown.py b/haystack/nodes/file_converter/markdown.py index 0eb96ea16e..4f5835f5ac 100644 --- a/haystack/nodes/file_converter/markdown.py +++ b/haystack/nodes/file_converter/markdown.py @@ -3,6 +3,13 @@ from pathlib import Path from typing import Any, Dict, List, Optional +try: + from bs4 import BeautifulSoup + from markdown import markdown +except (ImportError, ModuleNotFoundError) as ie: + from haystack.utils.import_utils import _optional_component_not_installed + _optional_component_not_installed(__name__, "preprocessing", ie) + from haystack.nodes.file_converter import BaseConverter @@ -43,18 +50,6 @@ def markdown_to_text(markdown_string: str) -> str: :param markdown_string: String in markdown format """ - try: - from bs4 import BeautifulSoup - except ImportError: - raise ImportError("Can't find package `beautifulsoup4` \n" - "You can install it via `pip install beautifulsoup4`") - - try: - from markdown import markdown - except ImportError: - raise ImportError("Can't find package `markdown` \n" - "You can install it via `pip install markdown`") - # md -> html -> text since BeautifulSoup can extract text cleanly html = markdown(markdown_string) diff --git a/haystack/nodes/reader/transformers.py b/haystack/nodes/reader/transformers.py index c12da46f2c..e7cd7d3341 100644 --- a/haystack/nodes/reader/transformers.py +++ b/haystack/nodes/reader/transformers.py @@ -5,7 +5,7 @@ import torch import numpy as np import pandas as pd -from quantulum3 import parser +#from quantulum3 import parser from transformers import pipeline, TapasTokenizer, TapasForQuestionAnswering, BatchEncoding from haystack.schema import Document, Answer, Span diff --git a/haystack/nodes/retriever/_embedding_encoder.py b/haystack/nodes/retriever/_embedding_encoder.py index 9ad000b32e..187fb03afe 100644 --- a/haystack/nodes/retriever/_embedding_encoder.py +++ b/haystack/nodes/retriever/_embedding_encoder.py @@ -8,13 +8,11 @@ import numpy as np from tqdm.auto import tqdm import torch -from torch.nn import DataParallel from torch.utils.data.sampler import SequentialSampler from transformers import AutoTokenizer, AutoModel from haystack.schema import Document from haystack.modeling.data_handler.dataset import convert_features_to_dataset, flatten_rename -from haystack.modeling.utils import initialize_device_settings from haystack.modeling.infer import Inferencer from haystack.modeling.data_handler.dataloader import NamedDataLoader @@ -89,14 +87,14 @@ def __init__( self, retriever: 'EmbeddingRetriever' ): - try: - from sentence_transformers import SentenceTransformer - except ImportError: - raise ImportError("Can't find package `sentence-transformers` \n" - "You can install it via `pip install sentence-transformers` \n" - "For details see https://github.com/UKPLab/sentence-transformers ") # pretrained embedding models coming from: https://github.com/UKPLab/sentence-transformers#pretrained-models # e.g. 'roberta-base-nli-stsb-mean-tokens' + try: + from sentence_transformers import SentenceTransformer + except (ImportError, ModuleNotFoundError) as ie: + from haystack.utils.import_utils import _optional_component_not_installed + _optional_component_not_installed(__name__, "sentence", ie) + self.embedding_model = SentenceTransformer(retriever.embedding_model, device=str(retriever.devices[0])) self.batch_size = retriever.batch_size self.embedding_model.max_seq_length = retriever.max_seq_len diff --git a/haystack/utils/import_utils.py b/haystack/utils/import_utils.py index 6bf2b4f493..cf4d8f32be 100644 --- a/haystack/utils/import_utils.py +++ b/haystack/utils/import_utils.py @@ -38,8 +38,7 @@ def _missing_dependency_stub_factory(classname, dep_group, import_error): class MissingDependency: def __init__(self, *args, **kwargs): - raise ImportError(f"Failed to import {classname}. " - f"Run 'pip install farm-haystack[{dep_group}]' to fix this error.") from import_error + _optional_component_not_installed(classname, dep_group, import_error) def __getattr__(self, *a, **k): return None @@ -47,6 +46,13 @@ def __getattr__(self, *a, **k): return MissingDependency +def _optional_component_not_installed(component, dep_group, source_error): + raise ImportError (f"Failed to import '{component}', " \ + "which is an optional component in Haystack.\n" \ + f"Run 'pip install farm-haystack[{dep_group}]' " \ + "to install the required dependencies and make this component available.") from source_error + + def fetch_archive_from_http(url: str, output_dir: str, proxies: Optional[dict] = None) -> bool: """ Fetch an archive (zip or tar.gz) from a url via http and extract content to an output directory. diff --git a/rest_api/application.py b/rest_api/application.py index d33acbbfa1..bf8bbb515d 100644 --- a/rest_api/application.py +++ b/rest_api/application.py @@ -17,7 +17,8 @@ from rest_api.controller.router import router as api_router except (ImportError, ModuleNotFoundError) as ie: - raise ImportError("Failed to import the REST API due to missing dependencies. Run 'pip install farm-haystack[rest]' to install them.") from ie + from haystack.utils.import_utils import _optional_component_not_installed + _optional_component_not_installed(__name__, "rest", ie) diff --git a/setup.cfg b/setup.cfg index 4cd915fbc6..e16e627e6d 100644 --- a/setup.cfg +++ b/setup.cfg @@ -25,7 +25,7 @@ keywords= transfer-learning language-model transformer -author = Malte Pietsch, Timo Moeller, Branden Chan, Tanay Soni +author = deepset.ai author_email = malte.pietsch@deepset.ai license = Apache License 2.0 license_file = LICENSE @@ -48,46 +48,50 @@ classifiers = use_scm_version = True python_requires = >=3.7 packages = find: -include_package_data = True -setup_requires = - setuptools >= 46.4.0 install_requires = importlib-metadata; python_version < '3.8' - torch>1.9,<1.11 # pytorch - tqdm # progress bars in model download and training scripts - requests # Used for downloading models over HTTP - pydantic # Validation of the core dataclasses (Document, Label, etc...) - scipy>=1.3.2 # for stats in run_classifier - scikit-learn>=1.0.0 # for stats in run_classifier - seqeval # Metrics or logging related - mlflow<=1.13.1 # Metrics or logging related - transformers==4.13.0 # huggingface transformers - dill # pickle extension for (de-)serialization - #onnxruntime # Inference with ONNX models. Install onnxruntime-gpu for Inference on GPUs - #onnxruntime_tools # Inference with ONNX models. Install onnxruntime-gpu for Inference on GPUs - psutil + torch>1.9,<1.11 + requests + pydantic + transformers==4.13.0 + nltk pandas + + # Utils + dill # pickle extension for (de-)serialization + tqdm # progress bars in model download and training scripts + networkx # graphs library + mmh3 # fast hashing function (murmurhash3) + quantulum3 # quantity extraction from text + azure-ai-formrecognizer==3.2.0b2 # forms reader + + # Preprocessing + more_itertools # for windowing + python-docx langdetect # for PDF conversions - pytesseract==0.3.7 # for PDF conversions using OCR - pillow # for PDF conversions using OCR - pdf2image==1.14.0 # for PDF conversions using OCR + tika # Apache Tika (text & metadata extractor) + sentence-transformers>=0.4.0 - python-multipart - python-docx # To read DOCX files - tika - uvloop==0.14; sys_platform != 'win32' and sys_platform != 'cygwin' - httptools - nltk - more_itertools - networkx - mmh3 - dataclasses-json - quantulum3 - azure-ai-formrecognizer==3.2.0b2 - # Elasticsearch deps - elasticsearch>=7.7,<=7.10; not os.getenv("HAYSTACK_NO_ES") - elastic-apm; not os.getenv("HAYSTACK_NO_ES") + # for stats in run_classifier + scipy>=1.3.2 + scikit-learn>=1.0.0 + + # Metrics and logging + seqeval + mlflow<=1.13.1 + + # Elasticsearch (disable with "HAYSTACK_NO_ELASTICSEARCH=1") + elasticsearch>=7.7,<=7.10; extra != "no_es" + elastic-apm; extra != "no_es" + + + # Not found in repo, to review: + #psutil + #httptools + #dataclasses-json + #python-multipart + #uvloop==0.14; sys_platform != 'win32' and sys_platform != 'cygwin' [options.packages.find] @@ -104,10 +108,15 @@ sql = sqlalchemy_utils psycopg2-binary; sys_platform != 'win32' and sys_platform != 'cygwin' only_faiss = - faiss-cpu>=1.6.3 # for FAISS with GPUs: install faiss-gpu + faiss-cpu>=1.6.3 faiss = farm-haystack[sql] farm-haystack[only_faiss] +only_faiss_gpu = + faiss-gpu>=1.6.3 +faiss_gpu = + farm-haystack[sql] + farm-haystack[only_faiss_gpu] only_milvus = pymilvus # Refer milvus version support matrix at https://github.com/milvus-io/pymilvus#install-pymilvus milvus = @@ -124,14 +133,24 @@ graphdb = SPARQLWrapper docstores = farm-haystack[faiss,milvus,weaviate,graphdb] -gpu = - onnxruntime-gpu - # faiss-gpu -ray = - ray>=1.9.1 crawler = selenium webdriver-manager +preprocessing = + beautifulsoup4 + markdown +ocr = + pytesseract==0.3.7 + pillow + pdf2image==1.14.0 +onnx = + onnxruntime + onnxruntime_tools +onnx_gpu = + onnxruntime-gpu + onnxruntime_tools +ray = + ray>=1.9.1 colab = grpcio==1.43.0 rest = @@ -145,14 +164,14 @@ ui = dev = mypy pytest - beautifulsoup4 - markdown tox coverage +test = + farm-haystack[docstores,crawler,preprocessing,ocr,ray,rest,ui,dev] ci = - farm-haystack[docstores,crawler,ray,rest,ui,dev] + farm-haystack[docstores,crawler,preprocessing,ocr,ray,rest,ui,dev] all = - farm-haystack[docstores,crawler,ray,rest,ui,dev,gpu] + farm-haystack[docstores,crawler,preprocessing,ocr,ray,rest,ui,dev,onnx,onnx_gpu] [tool:pytest] diff --git a/setup.py b/setup.py index 8b084b7065..a81de4663a 100644 --- a/setup.py +++ b/setup.py @@ -1,4 +1,14 @@ -# setup.py will still be needed for a while to allow editable installs. +import os + +# Opt-out dependencies are regulated with environmental variables +# Example: `HAYSTACK_NO_ELASTICSEARCH=1 pip install farm-haystack` will not install Elasticsearch dependencies +extra = "all" +if os.getenv("HAYSTACK_NO_ELASTICSEARCH"): + extra = "no_es" + +print(extra) + +# setup.py will still be needed for a while to allow editable installs (pip < 21.1). # Check regularly in the future if this is still the case, or it can be safely removed. from setuptools import setup -setup() \ No newline at end of file +setup(extra=extra) \ No newline at end of file diff --git a/test/conftest.py b/test/conftest.py index e6c11a7a61..c39af9646b 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -23,9 +23,10 @@ from haystack.document_stores.elasticsearch import ElasticsearchDocumentStore from haystack.document_stores.faiss import FAISSDocumentStore from haystack.document_stores.sql import SQLDocumentStore - + except (ImportError, ModuleNotFoundError) as ie: - raise ImportError("Some test dependencies are missing. Run 'pip install -e .[dev,docstores]' to install them.") from ie + from haystack.utils.import_utils import _optional_component_not_installed + _optional_component_not_installed(__name__, "test", ie) from haystack.document_stores.memory import InMemoryDocumentStore diff --git a/ui/utils.py b/ui/utils.py index a615a0b395..26f780d1f6 100644 --- a/ui/utils.py +++ b/ui/utils.py @@ -9,7 +9,8 @@ try: import streamlit as st except (ImportError, ModuleNotFoundError) as ie: - raise ImportError("Failed to load the Streamlit app due to missing dependencies. Run 'pip install farm-haystack[ui]' to install them.") from ie + from haystack.utils.import_utils import _optional_component_not_installed + _optional_component_not_installed(__name__, "ui", ie) API_ENDPOINT = os.getenv("API_ENDPOINT", "http://localhost:8000") diff --git a/ui/webapp.py b/ui/webapp.py index 5bb61269b8..610396f888 100644 --- a/ui/webapp.py +++ b/ui/webapp.py @@ -13,7 +13,8 @@ from ui.utils import haystack_is_ready, query, send_feedback, upload_doc, haystack_version, get_backlink except (ImportError, ModuleNotFoundError) as ie: - raise ImportError("Failed to load the Streamlit app due to missing dependencies. Run 'pip install farm-haystack[ui]' to install them.") from ie + from haystack.utils.import_utils import _optional_component_not_installed + _optional_component_not_installed(__name__, "ui", ie) # Adjust to a question that you would like users to see in the search bar when they load the UI: From 6e6598aa3221e1b7291bef8b913784783d0e08a3 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Wed, 19 Jan 2022 14:06:50 +0100 Subject: [PATCH 37/76] Add python-multipart back --- setup.cfg | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.cfg b/setup.cfg index e16e627e6d..9138c29e1a 100644 --- a/setup.cfg +++ b/setup.cfg @@ -166,6 +166,7 @@ dev = pytest tox coverage + python-multipart test = farm-haystack[docstores,crawler,preprocessing,ocr,ray,rest,ui,dev] ci = From 162e0a004ca4601491f9d231016a3b1f33e3a233 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Wed, 19 Jan 2022 17:02:19 +0100 Subject: [PATCH 38/76] Fix Dockerfile-GPU and add psutil to the dev dependencies --- Dockerfile-GPU | 4 +--- setup.cfg | 29 +++++++++++++---------------- 2 files changed, 14 insertions(+), 19 deletions(-) diff --git a/Dockerfile-GPU b/Dockerfile-GPU index 0adbf559ed..4b2e9a9be6 100644 --- a/Dockerfile-GPU +++ b/Dockerfile-GPU @@ -42,8 +42,6 @@ RUN pip install --upgrade pip RUN echo "Install required packages" && \ # Install PyTorch for CUDA 11 pip3 install --no-cache-dir torch==1.10.1+cu111 -f https://download.pytorch.org/whl/torch_stable.html && \ - # Install from requirements.txt - pip3 install --no-cache-dir -r requirements.txt # copy saved models COPY README.md models* /home/user/models/ @@ -56,7 +54,7 @@ COPY haystack /home/user/haystack # Install package # FIXME Add GPU deps! -RUN pip install -e .[elasticsearch,faiss,milvus,weaviate,graphdb,ray,rest] +RUN pip install -e --no-cache .[docstores,crawler,preprocessing,ocr,ray,rest,] # Cache Roberta and NLTK data RUN python3 -c "from haystack.utils.docker import cache_models;cache_models()" diff --git a/setup.cfg b/setup.cfg index 9138c29e1a..18bf0a0dc3 100644 --- a/setup.cfg +++ b/setup.cfg @@ -87,10 +87,8 @@ install_requires = # Not found in repo, to review: - #psutil #httptools #dataclasses-json - #python-multipart #uvloop==0.14; sys_platform != 'win32' and sys_platform != 'cygwin' @@ -107,32 +105,30 @@ sql = sqlalchemy>=1.4.2 sqlalchemy_utils psycopg2-binary; sys_platform != 'win32' and sys_platform != 'cygwin' -only_faiss = +only-faiss = faiss-cpu>=1.6.3 faiss = - farm-haystack[sql] - farm-haystack[only_faiss] -only_faiss_gpu = + farm-haystack[sql,only-faiss] +only-faiss-gpu = faiss-gpu>=1.6.3 -faiss_gpu = - farm-haystack[sql] - farm-haystack[only_faiss_gpu] -only_milvus = +faiss-gpu = + farm-haystack[sql,[only-faiss-gpu] +only-milvus = pymilvus # Refer milvus version support matrix at https://github.com/milvus-io/pymilvus#install-pymilvus milvus = - farm-haystack[sql] - farm-haystack[only_milvus] -only_milvus2 = + farm-haystack[sql,only-milvus] +only-milvus2 = pymilvus==2.0.0rc6 # Refer milvus version support matrix at https://github.com/milvus-io/pymilvus#install-pymilvus milvus2 = - farm-haystack[sql] - farm-haystack[only_milvus2] + farm-haystack[sql,only-milvus2] weaviate = weaviate-client==2.5.0 graphdb = SPARQLWrapper docstores = farm-haystack[faiss,milvus,weaviate,graphdb] +docstores-gpu = + farm-haystack[faiss-gpu,milvus,weaviate,graphdb] crawler = selenium webdriver-manager @@ -146,7 +142,7 @@ ocr = onnx = onnxruntime onnxruntime_tools -onnx_gpu = +onnx-gpu = onnxruntime-gpu onnxruntime_tools ray = @@ -167,6 +163,7 @@ dev = tox coverage python-multipart + psutil test = farm-haystack[docstores,crawler,preprocessing,ocr,ray,rest,ui,dev] ci = From a83730ee5cd50cf1d030d1b779164ac5e8b708ca Mon Sep 17 00:00:00 2001 From: ZanSara Date: Wed, 19 Jan 2022 17:05:49 +0100 Subject: [PATCH 39/76] Typo --- setup.cfg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.cfg b/setup.cfg index 18bf0a0dc3..0de94d9663 100644 --- a/setup.cfg +++ b/setup.cfg @@ -71,6 +71,7 @@ install_requires = langdetect # for PDF conversions tika # Apache Tika (text & metadata extractor) + # See haystack/nodes/retriever/_embedding_encoder.py, _SentenceTransformersEmbeddingEncoder sentence-transformers>=0.4.0 # for stats in run_classifier @@ -85,7 +86,6 @@ install_requires = elasticsearch>=7.7,<=7.10; extra != "no_es" elastic-apm; extra != "no_es" - # Not found in repo, to review: #httptools #dataclasses-json @@ -112,7 +112,7 @@ faiss = only-faiss-gpu = faiss-gpu>=1.6.3 faiss-gpu = - farm-haystack[sql,[only-faiss-gpu] + farm-haystack[sql,only-faiss-gpu] only-milvus = pymilvus # Refer milvus version support matrix at https://github.com/milvus-io/pymilvus#install-pymilvus milvus = From 12cd502d5bb9b5da14892d29f2dc91208f1ed379 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Wed, 19 Jan 2022 17:51:15 +0100 Subject: [PATCH 40/76] Give up on opt-out dependency groups in pip --- setup.cfg | 1 + setup.py | 12 +----------- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/setup.cfg b/setup.cfg index 0de94d9663..4af5b27c6f 100644 --- a/setup.cfg +++ b/setup.cfg @@ -101,6 +101,7 @@ exclude = [options.extras_require] +no_es = sql = sqlalchemy>=1.4.2 sqlalchemy_utils diff --git a/setup.py b/setup.py index a81de4663a..a4e2ba59c4 100644 --- a/setup.py +++ b/setup.py @@ -1,14 +1,4 @@ -import os - -# Opt-out dependencies are regulated with environmental variables -# Example: `HAYSTACK_NO_ELASTICSEARCH=1 pip install farm-haystack` will not install Elasticsearch dependencies -extra = "all" -if os.getenv("HAYSTACK_NO_ELASTICSEARCH"): - extra = "no_es" - -print(extra) - # setup.py will still be needed for a while to allow editable installs (pip < 21.1). # Check regularly in the future if this is still the case, or it can be safely removed. from setuptools import setup -setup(extra=extra) \ No newline at end of file +setup() \ No newline at end of file From 66e785d384d4086c68c72ba9a5634d18d5a90770 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Wed, 19 Jan 2022 17:51:32 +0100 Subject: [PATCH 41/76] Give up on opt-out dependency groups in pip --- setup.cfg | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/setup.cfg b/setup.cfg index 4af5b27c6f..0901d0ed9f 100644 --- a/setup.cfg +++ b/setup.cfg @@ -82,9 +82,9 @@ install_requires = seqeval mlflow<=1.13.1 - # Elasticsearch (disable with "HAYSTACK_NO_ELASTICSEARCH=1") - elasticsearch>=7.7,<=7.10; extra != "no_es" - elastic-apm; extra != "no_es" + # Elasticsearch + elasticsearch>=7.7,<=7.10 + elastic-apm # Not found in repo, to review: #httptools @@ -101,7 +101,6 @@ exclude = [options.extras_require] -no_es = sql = sqlalchemy>=1.4.2 sqlalchemy_utils From 3ff27232c545ce788ca9f01e18113dd34dc70c8e Mon Sep 17 00:00:00 2001 From: ZanSara Date: Wed, 19 Jan 2022 18:24:14 +0100 Subject: [PATCH 42/76] Refactor several paths in tests to make them insensitive to the execution path --- test/test_distillation.py | 5 +++-- test/test_eval.py | 13 +++++++------ test/test_file_converter.py | 16 ++++++++-------- test/test_modeling_processor.py | 5 +++-- test/test_modeling_processor_saving_loading.py | 6 +++--- test/test_ray.py | 4 ++-- test/test_retriever.py | 3 ++- test/test_utils.py | 6 +++--- 8 files changed, 31 insertions(+), 27 deletions(-) diff --git a/test/test_distillation.py b/test/test_distillation.py index f63e6fd234..f49b0a35b0 100644 --- a/test/test_distillation.py +++ b/test/test_distillation.py @@ -1,3 +1,4 @@ +from pathlib import Path from haystack.nodes import FARMReader import torch @@ -23,7 +24,7 @@ def test_distillation(): student_weights.pop(-2) # pooler is not updated due to different attention head - student.distil_prediction_layer_from(teacher, data_dir="samples/squad", train_filename="tiny.json") + student.distil_prediction_layer_from(teacher, data_dir=Path(__name__.parent/"samples"/"squad"), train_filename="tiny.json") # create new checkpoint new_student_weights = create_checkpoint(student) @@ -47,7 +48,7 @@ def test_tinybert_distillation(): student_weights.pop(-1) # last layer is not affected by tinybert loss student_weights.pop(-1) # pooler is not updated due to different attention head - student.distil_intermediate_layers_from(teacher_model=teacher, data_dir="samples/squad", train_filename="tiny.json") + student.distil_intermediate_layers_from(teacher_model=teacher, data_dir=Path(__name__.parent/"samples"/"squad"), train_filename="tiny.json") # create new checkpoint new_student_weights = create_checkpoint(student) diff --git a/test/test_eval.py b/test/test_eval.py index 4aa7bb0b36..931bb617a2 100644 --- a/test/test_eval.py +++ b/test/test_eval.py @@ -1,4 +1,5 @@ import pytest +from pathlib import Path from haystack.document_stores.base import BaseDocumentStore from haystack.document_stores.memory import InMemoryDocumentStore from haystack.document_stores.elasticsearch import ElasticsearchDocumentStore @@ -77,7 +78,7 @@ def test_summarizer_calculate_metrics(document_store_with_docs: ElasticsearchDoc def test_add_eval_data(document_store, batch_size): # add eval data (SQUAD format) document_store.add_eval_data( - filename="samples/squad/small.json", + filename=Path(__name__.parent/"samples"/"squad"/"small.json"), doc_index="haystack_test_eval_document", label_index="haystack_test_feedback", batch_size=batch_size, @@ -121,7 +122,7 @@ def test_add_eval_data(document_store, batch_size): def test_eval_reader(reader, document_store: BaseDocumentStore): # add eval data (SQUAD format) document_store.add_eval_data( - filename="samples/squad/tiny.json", + filename=Path(__name__.parent/"samples"/"squad"/"tiny.json"), doc_index="haystack_test_eval_document", label_index="haystack_test_feedback", ) @@ -146,7 +147,7 @@ def test_eval_reader(reader, document_store: BaseDocumentStore): def test_eval_elastic_retriever(document_store: BaseDocumentStore, open_domain, retriever): # add eval data (SQUAD format) document_store.add_eval_data( - filename="samples/squad/tiny.json", + filename=Path(__name__.parent/"samples"/"squad"/"tiny.json"), doc_index="haystack_test_eval_document", label_index="haystack_test_feedback", ) @@ -170,7 +171,7 @@ def test_eval_elastic_retriever(document_store: BaseDocumentStore, open_domain, def test_eval_pipeline(document_store: BaseDocumentStore, reader, retriever): # add eval data (SQUAD format) document_store.add_eval_data( - filename="samples/squad/tiny.json", + filename=Path(__name__.parent/"samples"/"squad"/"tiny.json"), doc_index="haystack_test_eval_document", label_index="haystack_test_feedback", ) @@ -220,7 +221,7 @@ def test_eval_data_split_word(document_store): ) document_store.add_eval_data( - filename="samples/squad/tiny.json", + filename=Path(__name__.parent/"samples"/"squad"/"tiny.json"), doc_index="haystack_test_eval_document", label_index="haystack_test_feedback", preprocessor=preprocessor, @@ -245,7 +246,7 @@ def test_eval_data_split_passage(document_store): ) document_store.add_eval_data( - filename="samples/squad/tiny_passages.json", + filename=Path(__name__.parent/"samples"/"squad"/"tiny_passages.json"), doc_index="haystack_test_eval_document", label_index="haystack_test_feedback", preprocessor=preprocessor, diff --git a/test/test_file_converter.py b/test/test_file_converter.py index 76a1859cc2..f07642975b 100644 --- a/test/test_file_converter.py +++ b/test/test_file_converter.py @@ -14,7 +14,7 @@ ) def test_convert(Converter): converter = Converter() - document = converter.convert(file_path=Path("samples/pdf/sample_pdf_1.pdf"))[0] + document = converter.convert(file_path=Path(__name__.parent/"samples"/"pdf"/"sample_pdf_1.pdf"))[0] pages = document["content"].split("\f") assert len(pages) == 4 # the sample PDF file has four pages. assert pages[0] != "" # the page 1 of PDF contains text. @@ -32,7 +32,7 @@ def test_convert(Converter): @pytest.mark.parametrize("Converter", [PDFToTextConverter, TikaConverter]) def test_table_removal(Converter): converter = Converter(remove_numeric_tables=True) - document = converter.convert(file_path=Path("samples/pdf/sample_pdf_1.pdf"))[0] + document = converter.convert(file_path=Path(__name__.parent/"samples"/"pdf"/"sample_pdf_1.pdf"))[0] pages = document["content"].split("\f") # assert numeric rows are removed from the table. assert "324" not in pages[0] @@ -43,14 +43,14 @@ def test_table_removal(Converter): @pytest.mark.parametrize("Converter", [PDFToTextConverter, TikaConverter]) def test_language_validation(Converter, caplog): converter = Converter(valid_languages=["en"]) - converter.convert(file_path=Path("samples/pdf/sample_pdf_1.pdf")) + converter.convert(file_path=Path(__name__.parent/"samples"/"pdf"/"sample_pdf_1.pdf")) assert ( "The language for samples/pdf/sample_pdf_1.pdf is not one of ['en']." not in caplog.text ) converter = Converter(valid_languages=["de"]) - converter.convert(file_path=Path("samples/pdf/sample_pdf_1.pdf")) + converter.convert(file_path=Path(__name__.parent/"samples"/"pdf"/"sample_pdf_1.pdf")) assert ( "The language for samples/pdf/sample_pdf_1.pdf is not one of ['de']." in caplog.text @@ -59,13 +59,13 @@ def test_language_validation(Converter, caplog): def test_docx_converter(): converter = DocxToTextConverter() - document = converter.convert(file_path=Path("samples/docx/sample_docx.docx"))[0] + document = converter.convert(file_path=Path(__name__.parent/"samples"/"docx"/"sample_docx.docx"))[0] assert document["content"].startswith("Sample Docx File") def test_markdown_converter(): converter = MarkdownConverter() - document = converter.convert(file_path=Path("samples/markdown/sample.md"))[0] + document = converter.convert(file_path=Path(__name__.parent/"samples"/"markdown"/"sample.md"))[0] assert document["content"].startswith("What to build with Haystack") @@ -77,7 +77,7 @@ def test_azure_converter(): save_json=True, ) - docs = converter.convert(file_path="samples/pdf/sample_pdf_1.pdf") + docs = converter.convert(file_path=Path(__name__.parent/"samples"/"pdf"/"sample_pdf_1.pdf")) assert len(docs) == 2 assert docs[0]["content_type"] == "table" assert len(docs[0]["content"]) == 5 # number of rows @@ -92,7 +92,7 @@ def test_azure_converter(): def test_parsr_converter(): converter = ParsrConverter() - docs = converter.convert(file_path="samples/pdf/sample_pdf_1.pdf") + docs = converter.convert(file_path=Path(__name__.parent/"samples"/"pdf"/"sample_pdf_1.pdf")) assert len(docs) == 2 assert docs[0]["content_type"] == "table" assert len(docs[0]["content"]) == 5 # number of rows diff --git a/test/test_modeling_processor.py b/test/test_modeling_processor.py index c7ade24f9d..fb1235cbbe 100644 --- a/test/test_modeling_processor.py +++ b/test/test_modeling_processor.py @@ -1,4 +1,5 @@ import logging +from pathlib import Path from transformers import AutoTokenizer @@ -25,7 +26,7 @@ def test_dataset_from_dicts_qa_inference(caplog=None): processor = SquadProcessor(tokenizer, max_seq_len=256, data_dir=None) for sample_type in sample_types: - dicts = processor.file_to_dicts(f"samples/qa/{sample_type}.json") + dicts = processor.file_to_dicts(Path(__name__.parent/"samples"/"qa"/f"{sample_type}.json")) dataset, tensor_names, problematic_sample_ids, baskets = processor.dataset_from_dicts(dicts, indices=[1], return_baskets=True) assert tensor_names == ['input_ids', 'padding_mask', 'segment_ids', 'passage_start_t', 'start_of_word', 'labels', 'id', 'seq_2_start_t', 'span_mask'], f"Processing for {model} has changed." assert len(problematic_sample_ids) == 0, f"Processing for {model} has changed." @@ -142,7 +143,7 @@ def test_dataset_from_dicts_qa_labelconversion(caplog=None): processor = SquadProcessor(tokenizer, max_seq_len=256, data_dir=None) for sample_type in sample_types: - dicts = processor.file_to_dicts(f"samples/qa/{sample_type}.json") + dicts = processor.file_to_dicts(Path(__name__.parent/"samples"/"qa"/f"{sample_type}.json")) dataset, tensor_names, problematic_sample_ids = processor.dataset_from_dicts(dicts, indices=[1], return_baskets=False) if sample_type == "answer-wrong" or sample_type == "answer-offset-wrong": diff --git a/test/test_modeling_processor_saving_loading.py b/test/test_modeling_processor_saving_loading.py index e06d90bcd6..d98b327073 100644 --- a/test/test_modeling_processor_saving_loading.py +++ b/test/test_modeling_processor_saving_loading.py @@ -25,17 +25,17 @@ def test_processor_saving_loading(caplog): train_filename="train-sample.json", dev_filename="dev-sample.json", test_filename=None, - data_dir=Path("samples/qa"), + data_dir=Path(__name__.parent/"samples"/"qa"), ) - dicts = processor.file_to_dicts(file=Path("samples/qa/dev-sample.json")) + dicts = processor.file_to_dicts(file=Path(__name__.parent/"samples"/"qa"/"dev-sample.json")) data, tensor_names, _ = processor.dataset_from_dicts(dicts=dicts, indices=[1]) save_dir = Path("testsave/processor") processor.save(save_dir) processor = processor.load_from_dir(save_dir) - dicts = processor.file_to_dicts(file=Path("samples/qa/dev-sample.json")) + dicts = processor.file_to_dicts(file=Path(__name__.parent/"samples"/"qa"/"dev-sample.json")) data_loaded, tensor_names_loaded, _ = processor.dataset_from_dicts(dicts, indices=[1]) assert tensor_names == tensor_names_loaded diff --git a/test/test_ray.py b/test/test_ray.py index 356e595b7a..ebe0b3f307 100644 --- a/test/test_ray.py +++ b/test/test_ray.py @@ -3,13 +3,13 @@ import pytest import ray -from haystack.pipeline import RayPipeline +from haystack.pipelines import RayPipeline @pytest.mark.parametrize("document_store_with_docs", ["elasticsearch"], indirect=True) def test_load_pipeline(document_store_with_docs): pipeline = RayPipeline.load_from_yaml( - Path("samples/pipeline/test_pipeline.yaml"), pipeline_name="ray_query_pipeline", num_cpus=8, + Path(__name__.parent/"samples"/"pipeline"/"test_pipeline.yaml"), pipeline_name="ray_query_pipeline", num_cpus=8, ) prediction = pipeline.run(query="Who lives in Berlin?", params={"Retriever": {"top_k": 10}, "Reader": {"top_k": 3}}) diff --git a/test/test_retriever.py b/test/test_retriever.py index 8b479e65d8..58dbd0c9fb 100644 --- a/test/test_retriever.py +++ b/test/test_retriever.py @@ -3,6 +3,7 @@ import numpy as np import pandas as pd import pytest +from pathlib import Path from elasticsearch import Elasticsearch from haystack.document_stores import WeaviateDocumentStore @@ -342,7 +343,7 @@ def test_table_text_retriever_training(document_store): ) retriever.train( - data_dir="samples/mmr", + data_dir=Path(__name__.parent/"samples"/"mmr"), train_filename="sample.json", n_epochs=1, n_gpu=0, diff --git a/test/test_utils.py b/test/test_utils.py index c82296eeff..7b95cc4756 100644 --- a/test/test_utils.py +++ b/test/test_utils.py @@ -17,9 +17,9 @@ def test_tika_convert_files_to_dicts(): assert documents and len(documents) > 0 def test_squad_augmentation(): - input_ = Path("samples/squad/tiny.json") - output = Path("samples/squad/tiny_augmented.json") - glove_path = Path("samples/glove/tiny.txt") # dummy glove file, will not even be use when augmenting tiny.json + input_ = Path(__name__.parent/"samples"/"squad"/"tiny.json") + output = Path(__name__.parent/"samples"/"squad"/"tiny_augmented.json") + glove_path = Path(__name__.parent/"samples"/"glove"/"tiny.txt") # dummy glove file, will not even be use when augmenting tiny.json multiplication_factor = 5 augment_squad("distilbert-base-uncased", "distilbert-base-uncased", input_, output, glove_path, multiplication_factor=multiplication_factor) From ef64e45a98c23f341af206e9d53b504c12975988 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Wed, 19 Jan 2022 18:39:13 +0100 Subject: [PATCH 43/76] Path was stated incorrectly --- test/test_distillation.py | 4 ++-- test/test_eval.py | 12 ++++++------ test/test_file_converter.py | 16 ++++++++-------- test/test_modeling_processor.py | 4 ++-- test/test_modeling_processor_saving_loading.py | 6 +++--- test/test_ray.py | 2 +- test/test_retriever.py | 2 +- test/test_utils.py | 6 +++--- 8 files changed, 26 insertions(+), 26 deletions(-) diff --git a/test/test_distillation.py b/test/test_distillation.py index f49b0a35b0..7fb48495d8 100644 --- a/test/test_distillation.py +++ b/test/test_distillation.py @@ -24,7 +24,7 @@ def test_distillation(): student_weights.pop(-2) # pooler is not updated due to different attention head - student.distil_prediction_layer_from(teacher, data_dir=Path(__name__.parent/"samples"/"squad"), train_filename="tiny.json") + student.distil_prediction_layer_from(teacher, data_dir=Path(__name__).parent/"samples"/"squad"), train_filename="tiny.json" # create new checkpoint new_student_weights = create_checkpoint(student) @@ -48,7 +48,7 @@ def test_tinybert_distillation(): student_weights.pop(-1) # last layer is not affected by tinybert loss student_weights.pop(-1) # pooler is not updated due to different attention head - student.distil_intermediate_layers_from(teacher_model=teacher, data_dir=Path(__name__.parent/"samples"/"squad"), train_filename="tiny.json") + student.distil_intermediate_layers_from(teacher_model=teacher, data_dir=Path(__name__).parent/"samples"/"squad"), train_filename="tiny.json" # create new checkpoint new_student_weights = create_checkpoint(student) diff --git a/test/test_eval.py b/test/test_eval.py index 931bb617a2..b6a21e815b 100644 --- a/test/test_eval.py +++ b/test/test_eval.py @@ -78,7 +78,7 @@ def test_summarizer_calculate_metrics(document_store_with_docs: ElasticsearchDoc def test_add_eval_data(document_store, batch_size): # add eval data (SQUAD format) document_store.add_eval_data( - filename=Path(__name__.parent/"samples"/"squad"/"small.json"), + filename=Path(__name__).parent/"samples"/"squad"/"small.json", doc_index="haystack_test_eval_document", label_index="haystack_test_feedback", batch_size=batch_size, @@ -122,7 +122,7 @@ def test_add_eval_data(document_store, batch_size): def test_eval_reader(reader, document_store: BaseDocumentStore): # add eval data (SQUAD format) document_store.add_eval_data( - filename=Path(__name__.parent/"samples"/"squad"/"tiny.json"), + filename=Path(__name__).parent/"samples"/"squad"/"tiny.json", doc_index="haystack_test_eval_document", label_index="haystack_test_feedback", ) @@ -147,7 +147,7 @@ def test_eval_reader(reader, document_store: BaseDocumentStore): def test_eval_elastic_retriever(document_store: BaseDocumentStore, open_domain, retriever): # add eval data (SQUAD format) document_store.add_eval_data( - filename=Path(__name__.parent/"samples"/"squad"/"tiny.json"), + filename=Path(__name__).parent/"samples"/"squad"/"tiny.json", doc_index="haystack_test_eval_document", label_index="haystack_test_feedback", ) @@ -171,7 +171,7 @@ def test_eval_elastic_retriever(document_store: BaseDocumentStore, open_domain, def test_eval_pipeline(document_store: BaseDocumentStore, reader, retriever): # add eval data (SQUAD format) document_store.add_eval_data( - filename=Path(__name__.parent/"samples"/"squad"/"tiny.json"), + filename=Path(__name__).parent/"samples"/"squad"/"tiny.json", doc_index="haystack_test_eval_document", label_index="haystack_test_feedback", ) @@ -221,7 +221,7 @@ def test_eval_data_split_word(document_store): ) document_store.add_eval_data( - filename=Path(__name__.parent/"samples"/"squad"/"tiny.json"), + filename=Path(__name__).parent/"samples"/"squad"/"tiny.json", doc_index="haystack_test_eval_document", label_index="haystack_test_feedback", preprocessor=preprocessor, @@ -246,7 +246,7 @@ def test_eval_data_split_passage(document_store): ) document_store.add_eval_data( - filename=Path(__name__.parent/"samples"/"squad"/"tiny_passages.json"), + filename=Path(__name__).parent/"samples"/"squad"/"tiny_passages.json", doc_index="haystack_test_eval_document", label_index="haystack_test_feedback", preprocessor=preprocessor, diff --git a/test/test_file_converter.py b/test/test_file_converter.py index f07642975b..f6f82d27cd 100644 --- a/test/test_file_converter.py +++ b/test/test_file_converter.py @@ -14,7 +14,7 @@ ) def test_convert(Converter): converter = Converter() - document = converter.convert(file_path=Path(__name__.parent/"samples"/"pdf"/"sample_pdf_1.pdf"))[0] + document = converter.convert(file_path=Path(__name__).parent/"samples"/"pdf"/"sample_pdf_1.pdf")[0] pages = document["content"].split("\f") assert len(pages) == 4 # the sample PDF file has four pages. assert pages[0] != "" # the page 1 of PDF contains text. @@ -32,7 +32,7 @@ def test_convert(Converter): @pytest.mark.parametrize("Converter", [PDFToTextConverter, TikaConverter]) def test_table_removal(Converter): converter = Converter(remove_numeric_tables=True) - document = converter.convert(file_path=Path(__name__.parent/"samples"/"pdf"/"sample_pdf_1.pdf"))[0] + document = converter.convert(file_path=Path(__name__).parent/"samples"/"pdf"/"sample_pdf_1.pdf")[0] pages = document["content"].split("\f") # assert numeric rows are removed from the table. assert "324" not in pages[0] @@ -43,14 +43,14 @@ def test_table_removal(Converter): @pytest.mark.parametrize("Converter", [PDFToTextConverter, TikaConverter]) def test_language_validation(Converter, caplog): converter = Converter(valid_languages=["en"]) - converter.convert(file_path=Path(__name__.parent/"samples"/"pdf"/"sample_pdf_1.pdf")) + converter.convert(file_path=Path(__name__).parent/"samples"/"pdf"/"sample_pdf_1.pdf") assert ( "The language for samples/pdf/sample_pdf_1.pdf is not one of ['en']." not in caplog.text ) converter = Converter(valid_languages=["de"]) - converter.convert(file_path=Path(__name__.parent/"samples"/"pdf"/"sample_pdf_1.pdf")) + converter.convert(file_path=Path(__name__).parent/"samples"/"pdf"/"sample_pdf_1.pdf") assert ( "The language for samples/pdf/sample_pdf_1.pdf is not one of ['de']." in caplog.text @@ -59,13 +59,13 @@ def test_language_validation(Converter, caplog): def test_docx_converter(): converter = DocxToTextConverter() - document = converter.convert(file_path=Path(__name__.parent/"samples"/"docx"/"sample_docx.docx"))[0] + document = converter.convert(file_path=Path(__name__).parent/"samples"/"docx"/"sample_docx.docx")[0] assert document["content"].startswith("Sample Docx File") def test_markdown_converter(): converter = MarkdownConverter() - document = converter.convert(file_path=Path(__name__.parent/"samples"/"markdown"/"sample.md"))[0] + document = converter.convert(file_path=Path(__name__).parent/"samples"/"markdown"/"sample.md")[0] assert document["content"].startswith("What to build with Haystack") @@ -77,7 +77,7 @@ def test_azure_converter(): save_json=True, ) - docs = converter.convert(file_path=Path(__name__.parent/"samples"/"pdf"/"sample_pdf_1.pdf")) + docs = converter.convert(file_path=Path(__name__).parent/"samples"/"pdf"/"sample_pdf_1.pdf") assert len(docs) == 2 assert docs[0]["content_type"] == "table" assert len(docs[0]["content"]) == 5 # number of rows @@ -92,7 +92,7 @@ def test_azure_converter(): def test_parsr_converter(): converter = ParsrConverter() - docs = converter.convert(file_path=Path(__name__.parent/"samples"/"pdf"/"sample_pdf_1.pdf")) + docs = converter.convert(file_path=Path(__name__).parent/"samples"/"pdf"/"sample_pdf_1.pdf") assert len(docs) == 2 assert docs[0]["content_type"] == "table" assert len(docs[0]["content"]) == 5 # number of rows diff --git a/test/test_modeling_processor.py b/test/test_modeling_processor.py index fb1235cbbe..70e6d863e0 100644 --- a/test/test_modeling_processor.py +++ b/test/test_modeling_processor.py @@ -26,7 +26,7 @@ def test_dataset_from_dicts_qa_inference(caplog=None): processor = SquadProcessor(tokenizer, max_seq_len=256, data_dir=None) for sample_type in sample_types: - dicts = processor.file_to_dicts(Path(__name__.parent/"samples"/"qa"/f"{sample_type}.json")) + dicts = processor.file_to_dicts(Path(__name__).parent/"samples"/"qa"/f"{sample_type}.json") dataset, tensor_names, problematic_sample_ids, baskets = processor.dataset_from_dicts(dicts, indices=[1], return_baskets=True) assert tensor_names == ['input_ids', 'padding_mask', 'segment_ids', 'passage_start_t', 'start_of_word', 'labels', 'id', 'seq_2_start_t', 'span_mask'], f"Processing for {model} has changed." assert len(problematic_sample_ids) == 0, f"Processing for {model} has changed." @@ -143,7 +143,7 @@ def test_dataset_from_dicts_qa_labelconversion(caplog=None): processor = SquadProcessor(tokenizer, max_seq_len=256, data_dir=None) for sample_type in sample_types: - dicts = processor.file_to_dicts(Path(__name__.parent/"samples"/"qa"/f"{sample_type}.json")) + dicts = processor.file_to_dicts(Path(__name__).parent/"samples"/"qa"/f"{sample_type}.json") dataset, tensor_names, problematic_sample_ids = processor.dataset_from_dicts(dicts, indices=[1], return_baskets=False) if sample_type == "answer-wrong" or sample_type == "answer-offset-wrong": diff --git a/test/test_modeling_processor_saving_loading.py b/test/test_modeling_processor_saving_loading.py index d98b327073..9f0d143c65 100644 --- a/test/test_modeling_processor_saving_loading.py +++ b/test/test_modeling_processor_saving_loading.py @@ -25,17 +25,17 @@ def test_processor_saving_loading(caplog): train_filename="train-sample.json", dev_filename="dev-sample.json", test_filename=None, - data_dir=Path(__name__.parent/"samples"/"qa"), + data_dir=Path(__name__).parent/"samples"/"qa", ) - dicts = processor.file_to_dicts(file=Path(__name__.parent/"samples"/"qa"/"dev-sample.json")) + dicts = processor.file_to_dicts(file=Path(__name__).parent/"samples"/"qa"/"dev-sample.json") data, tensor_names, _ = processor.dataset_from_dicts(dicts=dicts, indices=[1]) save_dir = Path("testsave/processor") processor.save(save_dir) processor = processor.load_from_dir(save_dir) - dicts = processor.file_to_dicts(file=Path(__name__.parent/"samples"/"qa"/"dev-sample.json")) + dicts = processor.file_to_dicts(file=Path(__name__).parent/"samples"/"qa"/"dev-sample.json") data_loaded, tensor_names_loaded, _ = processor.dataset_from_dicts(dicts, indices=[1]) assert tensor_names == tensor_names_loaded diff --git a/test/test_ray.py b/test/test_ray.py index ebe0b3f307..d7721df52b 100644 --- a/test/test_ray.py +++ b/test/test_ray.py @@ -9,7 +9,7 @@ @pytest.mark.parametrize("document_store_with_docs", ["elasticsearch"], indirect=True) def test_load_pipeline(document_store_with_docs): pipeline = RayPipeline.load_from_yaml( - Path(__name__.parent/"samples"/"pipeline"/"test_pipeline.yaml"), pipeline_name="ray_query_pipeline", num_cpus=8, + Path(__name__).parent/"samples"/"pipeline"/"test_pipeline.yaml", pipeline_name="ray_query_pipeline", num_cpus=8, ) prediction = pipeline.run(query="Who lives in Berlin?", params={"Retriever": {"top_k": 10}, "Reader": {"top_k": 3}}) diff --git a/test/test_retriever.py b/test/test_retriever.py index 58dbd0c9fb..6ed9d7bc79 100644 --- a/test/test_retriever.py +++ b/test/test_retriever.py @@ -343,7 +343,7 @@ def test_table_text_retriever_training(document_store): ) retriever.train( - data_dir=Path(__name__.parent/"samples"/"mmr"), + data_dir=Path(__name__).parent/"samples"/"mmr", train_filename="sample.json", n_epochs=1, n_gpu=0, diff --git a/test/test_utils.py b/test/test_utils.py index 7b95cc4756..8efe7df8f1 100644 --- a/test/test_utils.py +++ b/test/test_utils.py @@ -17,9 +17,9 @@ def test_tika_convert_files_to_dicts(): assert documents and len(documents) > 0 def test_squad_augmentation(): - input_ = Path(__name__.parent/"samples"/"squad"/"tiny.json") - output = Path(__name__.parent/"samples"/"squad"/"tiny_augmented.json") - glove_path = Path(__name__.parent/"samples"/"glove"/"tiny.txt") # dummy glove file, will not even be use when augmenting tiny.json + input_ = Path(__name__).parent/"samples"/"squad"/"tiny.json" + output = Path(__name__).parent/"samples"/"squad"/"tiny_augmented.json" + glove_path = Path(__name__).parent/"samples"/"glove"/"tiny.txt" # dummy glove file, will not even be use when augmenting tiny.json multiplication_factor = 5 augment_squad("distilbert-base-uncased", "distilbert-base-uncased", input_, output, glove_path, multiplication_factor=multiplication_factor) From f8adaf01451be6992cbb442cae12cfc8a6815467 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Thu, 20 Jan 2022 15:27:51 +0100 Subject: [PATCH 44/76] Fix a path in test_distillation and modify slightly the Dockerfiles --- Dockerfile | 21 +++++++++++---------- Dockerfile-GPU | 27 ++++++++++++--------------- setup.cfg | 2 -- test/test_distillation.py | 2 +- 4 files changed, 24 insertions(+), 28 deletions(-) diff --git a/Dockerfile b/Dockerfile index dc51189105..9451a1f5be 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,24 +17,25 @@ RUN apt-get update && apt-get install -y \ RUN wget --no-check-certificate https://dl.xpdfreader.com/xpdf-tools-linux-4.03.tar.gz && \ tar -xvf xpdf-tools-linux-4.03.tar.gz && cp xpdf-tools-linux-4.03/bin64/pdftotext /usr/local/bin -# copy code -COPY haystack /home/user/haystack - # install as a package -COPY setup.py requirements.txt README.md /home/user/ +COPY setup.py setup.cfg pyproject.toml VERSION.txt LICENSE README.md \ + # Haystack code + haystack \ + # Saved models + models* \ + # REST API cpde + rest_api \ + /home/user/ RUN pip install --upgrade pip -RUN pip install -e --no-cache .[docstores,crawler,preprocessing,ocr,ray,rest] +RUN pip install --no-cache-dir -e .[docstores,crawler,preprocessing,ocr,ray,rest] +RUN ls /home/user +RUN pip freeze RUN python3 -c "from haystack.utils.docker import cache_models;cache_models()" # create folder for /file-upload API endpoint with write permissions, this might be adjusted depending on FILE_UPLOAD_PATH RUN mkdir -p /home/user/file-upload RUN chmod 777 /home/user/file-upload -# copy saved models -COPY README.md models* /home/user/models/ - -# Copy REST API code -COPY rest_api /home/user/rest_api # optional : copy sqlite db if needed for testing #COPY qa.db /home/user/ diff --git a/Dockerfile-GPU b/Dockerfile-GPU index 4b2e9a9be6..f56ff6953a 100644 --- a/Dockerfile-GPU +++ b/Dockerfile-GPU @@ -35,26 +35,23 @@ RUN curl -s https://dl.xpdfreader.com/xpdf-tools-linux-4.03.tar.gz | tar -xvzf - RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 1 && \ update-alternatives --set python3 /usr/bin/python3.7 -# Copy package setup files -COPY setup.py requirements.txt README.md /home/user/ +# Copy package files +COPY setup.py setup.cfg pyproject.toml VERSION.txt LICENSE README.md \ + # Haystack code + haystack \ + # Saved models + models* \ + # REST API cpde + rest_api \ + /home/user/ RUN pip install --upgrade pip RUN echo "Install required packages" && \ # Install PyTorch for CUDA 11 - pip3 install --no-cache-dir torch==1.10.1+cu111 -f https://download.pytorch.org/whl/torch_stable.html && \ + pip3 install --no-cache-dir torch==1.10.1+cu111 -f https://download.pytorch.org/whl/torch_stable.html -# copy saved models -COPY README.md models* /home/user/models/ - -# Copy REST API code -COPY rest_api /home/user/rest_api - -# copy code -COPY haystack /home/user/haystack - -# Install package -# FIXME Add GPU deps! -RUN pip install -e --no-cache .[docstores,crawler,preprocessing,ocr,ray,rest,] +# Install package +RUN pip install --no-cache .[docstores_gpu,crawler,preprocessing,ocr,ray,rest] # Cache Roberta and NLTK data RUN python3 -c "from haystack.utils.docker import cache_models;cache_models()" diff --git a/setup.cfg b/setup.cfg index 0901d0ed9f..43be84919a 100644 --- a/setup.cfg +++ b/setup.cfg @@ -166,8 +166,6 @@ dev = psutil test = farm-haystack[docstores,crawler,preprocessing,ocr,ray,rest,ui,dev] -ci = - farm-haystack[docstores,crawler,preprocessing,ocr,ray,rest,ui,dev] all = farm-haystack[docstores,crawler,preprocessing,ocr,ray,rest,ui,dev,onnx,onnx_gpu] diff --git a/test/test_distillation.py b/test/test_distillation.py index 7fb48495d8..1fa83367f8 100644 --- a/test/test_distillation.py +++ b/test/test_distillation.py @@ -48,7 +48,7 @@ def test_tinybert_distillation(): student_weights.pop(-1) # last layer is not affected by tinybert loss student_weights.pop(-1) # pooler is not updated due to different attention head - student.distil_intermediate_layers_from(teacher_model=teacher, data_dir=Path(__name__).parent/"samples"/"squad"), train_filename="tiny.json" + student.distil_intermediate_layers_from(teacher_model=teacher, data_dir=Path(__name__).parent/"samples"/"squad", train_filename="tiny.json") # create new checkpoint new_student_weights = create_checkpoint(student) From 67e988f6ddee2ac6dcbf1db72433277324ed525e Mon Sep 17 00:00:00 2001 From: ZanSara Date: Thu, 20 Jan 2022 15:53:03 +0100 Subject: [PATCH 45/76] Add black and flake8, for now not enforced anywhere --- setup.cfg | 2 ++ 1 file changed, 2 insertions(+) diff --git a/setup.cfg b/setup.cfg index 43be84919a..87cc102ec0 100644 --- a/setup.cfg +++ b/setup.cfg @@ -164,6 +164,8 @@ dev = coverage python-multipart psutil + flake8 + black test = farm-haystack[docstores,crawler,preprocessing,ocr,ray,rest,ui,dev] all = From be0cffc70cba1b90cdda7fdda2317e5b4c686277 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Thu, 20 Jan 2022 16:08:54 +0100 Subject: [PATCH 46/76] Add configuration for flake8 and black --- pyproject.toml | 6 +++++- setup.cfg | 22 ++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 5fa7e430ba..2f5bdc0883 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,4 +3,8 @@ requires = [ "setuptools", "wheel", ] -build-backend = "setuptools.build_meta" \ No newline at end of file +build-backend = "setuptools.build_meta" + + +[tool:black] +line-length = 120 diff --git a/setup.cfg b/setup.cfg index 87cc102ec0..afa4ed61e6 100644 --- a/setup.cfg +++ b/setup.cfg @@ -183,6 +183,28 @@ addopts = -vv +[flake8] +max-line-length = 120 +exclude = + .eggs, + .git, + .github, + *_cache, + .vscode, + __pycache__, + annotation_tool, + build, + data, + dist + docs, + venv, + mlruns, + tutorials, + *.egg-info, +# Compatibility with Black (https://black.readthedocs.io/en/stable/guides/using_black_with_other_tools.html) +extend-ignore = E203 + + [mypy] ignore_missing_imports = True plugins = pydantic.mypy From 02cd53c146553337c0fa7aabd9eb08ad57d52612 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Thu, 20 Jan 2022 16:21:29 +0100 Subject: [PATCH 47/76] Typo --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 2f5bdc0883..5ae621b5de 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,5 +6,5 @@ requires = [ build-backend = "setuptools.build_meta" -[tool:black] +[tool.black] line-length = 120 From 41b5d3e40c66fb0da6b14b6796a22b97c59daeb1 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Thu, 20 Jan 2022 16:43:17 +0100 Subject: [PATCH 48/76] Call pytest more explicitly --- .github/workflows/linux_ci.yml | 2 +- .github/workflows/windows_ci.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/linux_ci.yml b/.github/workflows/linux_ci.yml index a39c4bd674..5eb5cd0d9d 100644 --- a/.github/workflows/linux_ci.yml +++ b/.github/workflows/linux_ci.yml @@ -99,4 +99,4 @@ jobs: run: sudo apt-get install tesseract-ocr libtesseract-dev poppler-utils - name: Run tests - run: pytest -s ${{ matrix.test-path }} + run: python -m pytest -s ${{ matrix.test-path }} diff --git a/.github/workflows/windows_ci.yml b/.github/workflows/windows_ci.yml index de2a85e4d7..32dec85c07 100644 --- a/.github/workflows/windows_ci.yml +++ b/.github/workflows/windows_ci.yml @@ -94,4 +94,4 @@ jobs: # Removing test_ray, test_utils, test_preprocessor, test_knowledge_graph and test_connector - name: Run tests if: ${{ !contains(fromJSON('["test_ray.py", "test_knowledge_graph.py", "test_connector.py", "test_summarizer_translation.py"]'), matrix.test-path) }} - run: pytest --document_store_type=memory,faiss,elasticsearch -m "not tika and not graphdb" -k "not test_parsr_converter" -s ${{ matrix.test-path }} + run: python -m pytest --document_store_type=memory,faiss,elasticsearch -m "not tika and not graphdb" -k "not test_parsr_converter" -s ${{ matrix.test-path }} From 047396269eae34e2ac994a1ca69f9bbd9fbaefc3 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Thu, 20 Jan 2022 16:44:37 +0100 Subject: [PATCH 49/76] Change extra group on the CI install --- .github/workflows/linux_ci.yml | 4 ++-- .github/workflows/windows_ci.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/linux_ci.yml b/.github/workflows/linux_ci.yml index 5eb5cd0d9d..e7d268c16e 100644 --- a/.github/workflows/linux_ci.yml +++ b/.github/workflows/linux_ci.yml @@ -39,7 +39,7 @@ jobs: if: steps.cache-python-env.outputs.cache-hit != 'true' run: | python -m pip install --upgrade pip - pip install --upgrade --upgrade-strategy eager .[ci] + pip install --upgrade --upgrade-strategy eager .[test] pip install torch-scatter -f https://data.pyg.org/whl/torch-1.10.0+cpu.html prepare-build: @@ -99,4 +99,4 @@ jobs: run: sudo apt-get install tesseract-ocr libtesseract-dev poppler-utils - name: Run tests - run: python -m pytest -s ${{ matrix.test-path }} + run: pytest -s ${{ matrix.test-path }} diff --git a/.github/workflows/windows_ci.yml b/.github/workflows/windows_ci.yml index 32dec85c07..4a2595c933 100644 --- a/.github/workflows/windows_ci.yml +++ b/.github/workflows/windows_ci.yml @@ -43,7 +43,7 @@ jobs: if: steps.cache-python-env.outputs.cache-hit != 'true' run: | python -m pip install --upgrade pip - pip install --upgrade --upgrade-strategy eager .[ci] + pip install --upgrade --upgrade-strategy eager .[test] pip install torch-scatter -f https://data.pyg.org/whl/torch-1.10.0+cpu.html prepare-build: @@ -94,4 +94,4 @@ jobs: # Removing test_ray, test_utils, test_preprocessor, test_knowledge_graph and test_connector - name: Run tests if: ${{ !contains(fromJSON('["test_ray.py", "test_knowledge_graph.py", "test_connector.py", "test_summarizer_translation.py"]'), matrix.test-path) }} - run: python -m pytest --document_store_type=memory,faiss,elasticsearch -m "not tika and not graphdb" -k "not test_parsr_converter" -s ${{ matrix.test-path }} + run: pytest --document_store_type=memory,faiss,elasticsearch -m "not tika and not graphdb" -k "not test_parsr_converter" -s ${{ matrix.test-path }} From 87970ea1dcc10600816fc9a0b6d8d25f3d40e2c3 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Thu, 20 Jan 2022 16:56:43 +0100 Subject: [PATCH 50/76] temporarily disable cache --- .github/workflows/linux_ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/linux_ci.yml b/.github/workflows/linux_ci.yml index e7d268c16e..6585959662 100644 --- a/.github/workflows/linux_ci.yml +++ b/.github/workflows/linux_ci.yml @@ -36,7 +36,7 @@ jobs: path: ${{ env.pythonLocation }} key: linux-${{ env.pythonLocation }}-${{ env.date }}-${{ hashFiles('setup.py') }}-${{ hashFiles('requirements.txt') }}-${{ hashFiles('requirements-dev.txt') }} - name: Install dependencies - if: steps.cache-python-env.outputs.cache-hit != 'true' + #if: steps.cache-python-env.outputs.cache-hit != 'true' run: | python -m pip install --upgrade pip pip install --upgrade --upgrade-strategy eager .[test] From ea20a7c995e35aadbcdd6e5bef01bcebbd7f1388 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Thu, 20 Jan 2022 17:04:42 +0100 Subject: [PATCH 51/76] Update cache keys --- .github/workflows/linux_ci.yml | 6 +++--- .github/workflows/windows_ci.yml | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/linux_ci.yml b/.github/workflows/linux_ci.yml index 6585959662..5584ef7e5e 100644 --- a/.github/workflows/linux_ci.yml +++ b/.github/workflows/linux_ci.yml @@ -34,9 +34,9 @@ jobs: uses: actions/cache@v2 with: path: ${{ env.pythonLocation }} - key: linux-${{ env.pythonLocation }}-${{ env.date }}-${{ hashFiles('setup.py') }}-${{ hashFiles('requirements.txt') }}-${{ hashFiles('requirements-dev.txt') }} + key: linux-${{ env.pythonLocation }}-${{ env.date }}-${{ hashFiles('setup.py') }}-${{ hashFiles('setup.cfg') }}-${{ hashFiles('pyproject.toml') }} - name: Install dependencies - #if: steps.cache-python-env.outputs.cache-hit != 'true' + if: steps.cache-python-env.outputs.cache-hit != 'true' run: | python -m pip install --upgrade pip pip install --upgrade --upgrade-strategy eager .[test] @@ -70,7 +70,7 @@ jobs: uses: actions/cache@v2 with: path: ${{ env.pythonLocation }} - key: linux-${{ env.pythonLocation }}-${{ env.date }}-${{ hashFiles('setup.py') }}-${{ hashFiles('requirements.txt') }}-${{ hashFiles('requirements-dev.txt') }} + key: linux-${{ env.pythonLocation }}-${{ env.date }}-${{ hashFiles('setup.py') }}-${{ hashFiles('setup.cfg') }}-${{ hashFiles('pyproject.toml') }} - name: Run Elasticsearch run: docker run -d -p 9200:9200 -e "discovery.type=single-node" -e "ES_JAVA_OPTS=-Xms128m -Xmx128m" elasticsearch:7.9.2 diff --git a/.github/workflows/windows_ci.yml b/.github/workflows/windows_ci.yml index 4a2595c933..0e16e71e82 100644 --- a/.github/workflows/windows_ci.yml +++ b/.github/workflows/windows_ci.yml @@ -35,7 +35,7 @@ jobs: uses: actions/cache@v2 with: path: ${{ env.pythonLocation }} - key: windows-${{ env.pythonLocation }}-${{ env.date }}-${{ hashFiles('setup.py') }}-${{ hashFiles('requirements.txt') }}-${{ hashFiles('requirements-dev.txt') }} + key: windows-${{ env.pythonLocation }}-${{ env.date }}-${{ hashFiles('setup.py') }}-${{ hashFiles('setup.cfg') }}-${{ hashFiles('pyproject.toml') }} - name: Install Pytorch on windows run: | pip install torch==1.8.1+cpu -f https://download.pytorch.org/whl/lts/1.8/torch_lts.html @@ -76,7 +76,7 @@ jobs: uses: actions/cache@v2 with: path: ${{ env.pythonLocation }} - key: windows-${{ env.pythonLocation }}-${{ env.date }}-${{ hashFiles('setup.py') }}-${{ hashFiles('requirements.txt') }}-${{ hashFiles('requirements-dev.txt') }} + key: windows-${{ env.pythonLocation }}-${{ env.date }}-${{ hashFiles('setup.py') }}-${{ hashFiles('setup.cfg') }}-${{ hashFiles('pyproject.toml') }} # Windows runner can't run Linux containers. Refer https://github.com/actions/virtual-environments/issues/1143 - name: Set up Windows test env From b3229c119b3aab5a956e791bcdc3af5c40e15f79 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Thu, 20 Jan 2022 17:06:06 +0100 Subject: [PATCH 52/76] Add all-gpu group --- setup.cfg | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index afa4ed61e6..8ed8a5f409 100644 --- a/setup.cfg +++ b/setup.cfg @@ -169,7 +169,10 @@ dev = test = farm-haystack[docstores,crawler,preprocessing,ocr,ray,rest,ui,dev] all = - farm-haystack[docstores,crawler,preprocessing,ocr,ray,rest,ui,dev,onnx,onnx_gpu] + farm-haystack[docstores,crawler,preprocessing,ocr,ray,rest,ui,dev,onnx] +all-gpu = + farm-haystack[docstores-gpu,crawler,preprocessing,ocr,ray,rest,ui,dev,onnx-gpu] + [tool:pytest] From 03635cb14fd7a1f2a09394866e18eda364258d4b Mon Sep 17 00:00:00 2001 From: ZanSara Date: Thu, 20 Jan 2022 18:29:41 +0100 Subject: [PATCH 53/76] Change __name__ with __file__ --- test/test_distillation.py | 4 ++-- test/test_eval.py | 12 ++++++------ test/test_file_converter.py | 16 ++++++++-------- test/test_modeling_processor.py | 4 ++-- test/test_modeling_processor_saving_loading.py | 6 +++--- test/test_ray.py | 2 +- test/test_retriever.py | 2 +- test/test_utils.py | 13 +++++++------ 8 files changed, 30 insertions(+), 29 deletions(-) diff --git a/test/test_distillation.py b/test/test_distillation.py index 1fa83367f8..8726dd720d 100644 --- a/test/test_distillation.py +++ b/test/test_distillation.py @@ -24,7 +24,7 @@ def test_distillation(): student_weights.pop(-2) # pooler is not updated due to different attention head - student.distil_prediction_layer_from(teacher, data_dir=Path(__name__).parent/"samples"/"squad"), train_filename="tiny.json" + student.distil_prediction_layer_from(teacher, data_dir=Path(__file__).parent/"samples"/"squad"), train_filename="tiny.json" # create new checkpoint new_student_weights = create_checkpoint(student) @@ -48,7 +48,7 @@ def test_tinybert_distillation(): student_weights.pop(-1) # last layer is not affected by tinybert loss student_weights.pop(-1) # pooler is not updated due to different attention head - student.distil_intermediate_layers_from(teacher_model=teacher, data_dir=Path(__name__).parent/"samples"/"squad", train_filename="tiny.json") + student.distil_intermediate_layers_from(teacher_model=teacher, data_dir=Path(__file__).parent/"samples"/"squad", train_filename="tiny.json") # create new checkpoint new_student_weights = create_checkpoint(student) diff --git a/test/test_eval.py b/test/test_eval.py index b6a21e815b..e96465d104 100644 --- a/test/test_eval.py +++ b/test/test_eval.py @@ -78,7 +78,7 @@ def test_summarizer_calculate_metrics(document_store_with_docs: ElasticsearchDoc def test_add_eval_data(document_store, batch_size): # add eval data (SQUAD format) document_store.add_eval_data( - filename=Path(__name__).parent/"samples"/"squad"/"small.json", + filename=Path(__file__).parent/"samples"/"squad"/"small.json", doc_index="haystack_test_eval_document", label_index="haystack_test_feedback", batch_size=batch_size, @@ -122,7 +122,7 @@ def test_add_eval_data(document_store, batch_size): def test_eval_reader(reader, document_store: BaseDocumentStore): # add eval data (SQUAD format) document_store.add_eval_data( - filename=Path(__name__).parent/"samples"/"squad"/"tiny.json", + filename=Path(__file__).parent/"samples"/"squad"/"tiny.json", doc_index="haystack_test_eval_document", label_index="haystack_test_feedback", ) @@ -147,7 +147,7 @@ def test_eval_reader(reader, document_store: BaseDocumentStore): def test_eval_elastic_retriever(document_store: BaseDocumentStore, open_domain, retriever): # add eval data (SQUAD format) document_store.add_eval_data( - filename=Path(__name__).parent/"samples"/"squad"/"tiny.json", + filename=Path(__file__).parent/"samples"/"squad"/"tiny.json", doc_index="haystack_test_eval_document", label_index="haystack_test_feedback", ) @@ -171,7 +171,7 @@ def test_eval_elastic_retriever(document_store: BaseDocumentStore, open_domain, def test_eval_pipeline(document_store: BaseDocumentStore, reader, retriever): # add eval data (SQUAD format) document_store.add_eval_data( - filename=Path(__name__).parent/"samples"/"squad"/"tiny.json", + filename=Path(__file__).parent/"samples"/"squad"/"tiny.json", doc_index="haystack_test_eval_document", label_index="haystack_test_feedback", ) @@ -221,7 +221,7 @@ def test_eval_data_split_word(document_store): ) document_store.add_eval_data( - filename=Path(__name__).parent/"samples"/"squad"/"tiny.json", + filename=Path(__file__).parent/"samples"/"squad"/"tiny.json", doc_index="haystack_test_eval_document", label_index="haystack_test_feedback", preprocessor=preprocessor, @@ -246,7 +246,7 @@ def test_eval_data_split_passage(document_store): ) document_store.add_eval_data( - filename=Path(__name__).parent/"samples"/"squad"/"tiny_passages.json", + filename=Path(__file__).parent/"samples"/"squad"/"tiny_passages.json", doc_index="haystack_test_eval_document", label_index="haystack_test_feedback", preprocessor=preprocessor, diff --git a/test/test_file_converter.py b/test/test_file_converter.py index f6f82d27cd..d5e144bbff 100644 --- a/test/test_file_converter.py +++ b/test/test_file_converter.py @@ -14,7 +14,7 @@ ) def test_convert(Converter): converter = Converter() - document = converter.convert(file_path=Path(__name__).parent/"samples"/"pdf"/"sample_pdf_1.pdf")[0] + document = converter.convert(file_path=Path(__file__).parent/"samples"/"pdf"/"sample_pdf_1.pdf")[0] pages = document["content"].split("\f") assert len(pages) == 4 # the sample PDF file has four pages. assert pages[0] != "" # the page 1 of PDF contains text. @@ -32,7 +32,7 @@ def test_convert(Converter): @pytest.mark.parametrize("Converter", [PDFToTextConverter, TikaConverter]) def test_table_removal(Converter): converter = Converter(remove_numeric_tables=True) - document = converter.convert(file_path=Path(__name__).parent/"samples"/"pdf"/"sample_pdf_1.pdf")[0] + document = converter.convert(file_path=Path(__file__).parent/"samples"/"pdf"/"sample_pdf_1.pdf")[0] pages = document["content"].split("\f") # assert numeric rows are removed from the table. assert "324" not in pages[0] @@ -43,14 +43,14 @@ def test_table_removal(Converter): @pytest.mark.parametrize("Converter", [PDFToTextConverter, TikaConverter]) def test_language_validation(Converter, caplog): converter = Converter(valid_languages=["en"]) - converter.convert(file_path=Path(__name__).parent/"samples"/"pdf"/"sample_pdf_1.pdf") + converter.convert(file_path=Path(__file__).parent/"samples"/"pdf"/"sample_pdf_1.pdf") assert ( "The language for samples/pdf/sample_pdf_1.pdf is not one of ['en']." not in caplog.text ) converter = Converter(valid_languages=["de"]) - converter.convert(file_path=Path(__name__).parent/"samples"/"pdf"/"sample_pdf_1.pdf") + converter.convert(file_path=Path(__file__).parent/"samples"/"pdf"/"sample_pdf_1.pdf") assert ( "The language for samples/pdf/sample_pdf_1.pdf is not one of ['de']." in caplog.text @@ -59,13 +59,13 @@ def test_language_validation(Converter, caplog): def test_docx_converter(): converter = DocxToTextConverter() - document = converter.convert(file_path=Path(__name__).parent/"samples"/"docx"/"sample_docx.docx")[0] + document = converter.convert(file_path=Path(__file__).parent/"samples"/"docx"/"sample_docx.docx")[0] assert document["content"].startswith("Sample Docx File") def test_markdown_converter(): converter = MarkdownConverter() - document = converter.convert(file_path=Path(__name__).parent/"samples"/"markdown"/"sample.md")[0] + document = converter.convert(file_path=Path(__file__).parent/"samples"/"markdown"/"sample.md")[0] assert document["content"].startswith("What to build with Haystack") @@ -77,7 +77,7 @@ def test_azure_converter(): save_json=True, ) - docs = converter.convert(file_path=Path(__name__).parent/"samples"/"pdf"/"sample_pdf_1.pdf") + docs = converter.convert(file_path=Path(__file__).parent/"samples"/"pdf"/"sample_pdf_1.pdf") assert len(docs) == 2 assert docs[0]["content_type"] == "table" assert len(docs[0]["content"]) == 5 # number of rows @@ -92,7 +92,7 @@ def test_azure_converter(): def test_parsr_converter(): converter = ParsrConverter() - docs = converter.convert(file_path=Path(__name__).parent/"samples"/"pdf"/"sample_pdf_1.pdf") + docs = converter.convert(file_path=Path(__file__).parent/"samples"/"pdf"/"sample_pdf_1.pdf") assert len(docs) == 2 assert docs[0]["content_type"] == "table" assert len(docs[0]["content"]) == 5 # number of rows diff --git a/test/test_modeling_processor.py b/test/test_modeling_processor.py index 70e6d863e0..504d392edc 100644 --- a/test/test_modeling_processor.py +++ b/test/test_modeling_processor.py @@ -26,7 +26,7 @@ def test_dataset_from_dicts_qa_inference(caplog=None): processor = SquadProcessor(tokenizer, max_seq_len=256, data_dir=None) for sample_type in sample_types: - dicts = processor.file_to_dicts(Path(__name__).parent/"samples"/"qa"/f"{sample_type}.json") + dicts = processor.file_to_dicts(Path(__file__).parent/"samples"/"qa"/f"{sample_type}.json") dataset, tensor_names, problematic_sample_ids, baskets = processor.dataset_from_dicts(dicts, indices=[1], return_baskets=True) assert tensor_names == ['input_ids', 'padding_mask', 'segment_ids', 'passage_start_t', 'start_of_word', 'labels', 'id', 'seq_2_start_t', 'span_mask'], f"Processing for {model} has changed." assert len(problematic_sample_ids) == 0, f"Processing for {model} has changed." @@ -143,7 +143,7 @@ def test_dataset_from_dicts_qa_labelconversion(caplog=None): processor = SquadProcessor(tokenizer, max_seq_len=256, data_dir=None) for sample_type in sample_types: - dicts = processor.file_to_dicts(Path(__name__).parent/"samples"/"qa"/f"{sample_type}.json") + dicts = processor.file_to_dicts(Path(__file__).parent/"samples"/"qa"/f"{sample_type}.json") dataset, tensor_names, problematic_sample_ids = processor.dataset_from_dicts(dicts, indices=[1], return_baskets=False) if sample_type == "answer-wrong" or sample_type == "answer-offset-wrong": diff --git a/test/test_modeling_processor_saving_loading.py b/test/test_modeling_processor_saving_loading.py index 9f0d143c65..1d785a20ca 100644 --- a/test/test_modeling_processor_saving_loading.py +++ b/test/test_modeling_processor_saving_loading.py @@ -25,17 +25,17 @@ def test_processor_saving_loading(caplog): train_filename="train-sample.json", dev_filename="dev-sample.json", test_filename=None, - data_dir=Path(__name__).parent/"samples"/"qa", + data_dir=Path(__file__).parent/"samples"/"qa", ) - dicts = processor.file_to_dicts(file=Path(__name__).parent/"samples"/"qa"/"dev-sample.json") + dicts = processor.file_to_dicts(file=Path(__file__).parent/"samples"/"qa"/"dev-sample.json") data, tensor_names, _ = processor.dataset_from_dicts(dicts=dicts, indices=[1]) save_dir = Path("testsave/processor") processor.save(save_dir) processor = processor.load_from_dir(save_dir) - dicts = processor.file_to_dicts(file=Path(__name__).parent/"samples"/"qa"/"dev-sample.json") + dicts = processor.file_to_dicts(file=Path(__file__).parent/"samples"/"qa"/"dev-sample.json") data_loaded, tensor_names_loaded, _ = processor.dataset_from_dicts(dicts, indices=[1]) assert tensor_names == tensor_names_loaded diff --git a/test/test_ray.py b/test/test_ray.py index d7721df52b..d8120f0fc2 100644 --- a/test/test_ray.py +++ b/test/test_ray.py @@ -9,7 +9,7 @@ @pytest.mark.parametrize("document_store_with_docs", ["elasticsearch"], indirect=True) def test_load_pipeline(document_store_with_docs): pipeline = RayPipeline.load_from_yaml( - Path(__name__).parent/"samples"/"pipeline"/"test_pipeline.yaml", pipeline_name="ray_query_pipeline", num_cpus=8, + Path(__file__).parent/"samples"/"pipeline"/"test_pipeline.yaml", pipeline_name="ray_query_pipeline", num_cpus=8, ) prediction = pipeline.run(query="Who lives in Berlin?", params={"Retriever": {"top_k": 10}, "Reader": {"top_k": 3}}) diff --git a/test/test_retriever.py b/test/test_retriever.py index 6ed9d7bc79..5d285c7e38 100644 --- a/test/test_retriever.py +++ b/test/test_retriever.py @@ -343,7 +343,7 @@ def test_table_text_retriever_training(document_store): ) retriever.train( - data_dir=Path(__name__).parent/"samples"/"mmr", + data_dir=Path(__file__).parent/"samples"/"mmr", train_filename="sample.json", n_epochs=1, n_gpu=0, diff --git a/test/test_utils.py b/test/test_utils.py index 061fc3a14b..252adcaa97 100644 --- a/test/test_utils.py +++ b/test/test_utils.py @@ -6,20 +6,21 @@ from haystack.utils.augment_squad import augment_squad from haystack.utils.squad_data import SquadData + def test_convert_files_to_dicts(): - documents = convert_files_to_dicts(dir_path="samples", clean_func=clean_wiki_text, split_paragraphs=True) + print(Path(__file__).parent/"samples") + documents = convert_files_to_dicts(dir_path=(Path(__file__).parent/"samples").absolute(), clean_func=clean_wiki_text, split_paragraphs=True) assert documents and len(documents) > 0 - @pytest.mark.tika def test_tika_convert_files_to_dicts(): - documents = tika_convert_files_to_dicts(dir_path="samples", clean_func=clean_wiki_text, split_paragraphs=True) + documents = tika_convert_files_to_dicts(dir_path=Path(__file__).parent/"samples", clean_func=clean_wiki_text, split_paragraphs=True) assert documents and len(documents) > 0 def test_squad_augmentation(): - input_ = Path(__name__).parent/"samples"/"squad"/"tiny.json" - output = Path(__name__).parent/"samples"/"squad"/"tiny_augmented.json" - glove_path = Path(__name__).parent/"samples"/"glove"/"tiny.txt" # dummy glove file, will not even be use when augmenting tiny.json + input_ = Path(__file__).parent/"samples"/"squad"/"tiny.json" + output = Path(__file__).parent/"samples"/"squad"/"tiny_augmented.json" + glove_path = Path(__file__).parent/"samples"/"glove"/"tiny.txt" # dummy glove file, will not even be use when augmenting tiny.json multiplication_factor = 5 augment_squad(model="distilbert-base-uncased", tokenizer="distilbert-base-uncased", squad_path=input_, output_path=output, glove_path=glove_path, multiplication_factor=multiplication_factor) From b418234f449ac467ff09c06764e6cb2dc5819ba4 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Thu, 20 Jan 2022 19:11:26 +0100 Subject: [PATCH 54/76] Fix smaller bugs introduced during path refactoring --- test/test_distillation.py | 2 +- test/test_file_converter.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/test/test_distillation.py b/test/test_distillation.py index 8726dd720d..27631bae04 100644 --- a/test/test_distillation.py +++ b/test/test_distillation.py @@ -24,7 +24,7 @@ def test_distillation(): student_weights.pop(-2) # pooler is not updated due to different attention head - student.distil_prediction_layer_from(teacher, data_dir=Path(__file__).parent/"samples"/"squad"), train_filename="tiny.json" + student.distil_prediction_layer_from(teacher, data_dir=Path(__file__).parent/"samples"/"squad", train_filename="tiny.json") # create new checkpoint new_student_weights = create_checkpoint(student) diff --git a/test/test_file_converter.py b/test/test_file_converter.py index d5e144bbff..25b1054359 100644 --- a/test/test_file_converter.py +++ b/test/test_file_converter.py @@ -45,14 +45,14 @@ def test_language_validation(Converter, caplog): converter = Converter(valid_languages=["en"]) converter.convert(file_path=Path(__file__).parent/"samples"/"pdf"/"sample_pdf_1.pdf") assert ( - "The language for samples/pdf/sample_pdf_1.pdf is not one of ['en']." + "samples/pdf/sample_pdf_1.pdf is not one of ['en']." not in caplog.text ) converter = Converter(valid_languages=["de"]) converter.convert(file_path=Path(__file__).parent/"samples"/"pdf"/"sample_pdf_1.pdf") assert ( - "The language for samples/pdf/sample_pdf_1.pdf is not one of ['de']." + "samples/pdf/sample_pdf_1.pdf is not one of ['de']." in caplog.text ) @@ -92,7 +92,7 @@ def test_azure_converter(): def test_parsr_converter(): converter = ParsrConverter() - docs = converter.convert(file_path=Path(__file__).parent/"samples"/"pdf"/"sample_pdf_1.pdf") + docs = converter.convert(file_path=str((Path(__file__).parent/"samples"/"pdf"/"sample_pdf_1.pdf").absolute())) assert len(docs) == 2 assert docs[0]["content_type"] == "table" assert len(docs[0]["content"]) == 5 # number of rows From 7b96a0af5cbf595969e60f85db74834862a23dfc Mon Sep 17 00:00:00 2001 From: ZanSara Date: Tue, 25 Jan 2022 14:09:54 +0100 Subject: [PATCH 55/76] Fix Dockerfile and Dockerfile-GPU --- Dockerfile | 20 +++++++++----------- Dockerfile-GPU | 15 ++++++--------- tutorials/Tutorial1_Basic_QA_Pipeline.py | 4 ++-- 3 files changed, 17 insertions(+), 22 deletions(-) diff --git a/Dockerfile b/Dockerfile index 9451a1f5be..4e94df6b22 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,17 +17,16 @@ RUN apt-get update && apt-get install -y \ RUN wget --no-check-certificate https://dl.xpdfreader.com/xpdf-tools-linux-4.03.tar.gz && \ tar -xvf xpdf-tools-linux-4.03.tar.gz && cp xpdf-tools-linux-4.03/bin64/pdftotext /usr/local/bin -# install as a package -COPY setup.py setup.cfg pyproject.toml VERSION.txt LICENSE README.md \ - # Haystack code - haystack \ - # Saved models - models* \ - # REST API cpde - rest_api \ - /home/user/ +# Copy Haystack code +COPY haystack /home/user/haystack/ +# Copy package files & models +COPY setup.py setup.cfg pyproject.toml VERSION.txt LICENSE README.md models* /home/user/ +# Copy REST API code +COPY rest_api /home/user/rest_api + +# Install package RUN pip install --upgrade pip -RUN pip install --no-cache-dir -e .[docstores,crawler,preprocessing,ocr,ray,rest] +RUN pip install --no-cache-dir .[docstores,crawler,preprocessing,ocr,ray,rest] RUN ls /home/user RUN pip freeze RUN python3 -c "from haystack.utils.docker import cache_models;cache_models()" @@ -36,7 +35,6 @@ RUN python3 -c "from haystack.utils.docker import cache_models;cache_models()" RUN mkdir -p /home/user/file-upload RUN chmod 777 /home/user/file-upload - # optional : copy sqlite db if needed for testing #COPY qa.db /home/user/ diff --git a/Dockerfile-GPU b/Dockerfile-GPU index f56ff6953a..6c97395453 100644 --- a/Dockerfile-GPU +++ b/Dockerfile-GPU @@ -35,15 +35,12 @@ RUN curl -s https://dl.xpdfreader.com/xpdf-tools-linux-4.03.tar.gz | tar -xvzf - RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 1 && \ update-alternatives --set python3 /usr/bin/python3.7 -# Copy package files -COPY setup.py setup.cfg pyproject.toml VERSION.txt LICENSE README.md \ - # Haystack code - haystack \ - # Saved models - models* \ - # REST API cpde - rest_api \ - /home/user/ +# Copy Haystack code +COPY haystack /home/user/haystack +# Copy package files & models +COPY setup.py setup.cfg pyproject.toml VERSION.txt LICENSE README.md models* /home/user/ +# Copy REST API code +COPY rest_api /home/user/ RUN pip install --upgrade pip RUN echo "Install required packages" && \ diff --git a/tutorials/Tutorial1_Basic_QA_Pipeline.py b/tutorials/Tutorial1_Basic_QA_Pipeline.py index f2227fda3a..90918329ce 100755 --- a/tutorials/Tutorial1_Basic_QA_Pipeline.py +++ b/tutorials/Tutorial1_Basic_QA_Pipeline.py @@ -10,7 +10,7 @@ # marvellous seven kingdoms. import logging -from haystack.document_stores.elasticsearch import ElasticsearchDocumentStore +from haystack.document_stores import ElasticsearchDocumentStore, FAISSDocumentStore from haystack.utils import clean_wiki_text, convert_files_to_dicts, fetch_archive_from_http, print_answers, launch_es from haystack.nodes import FARMReader, TransformersReader, ElasticsearchRetriever @@ -38,7 +38,7 @@ def tutorial1_basic_qa_pipeline(): launch_es() # Connect to Elasticsearch - document_store = ElasticsearchDocumentStore(host="localhost", username="", password="", index="document") + document_store = FAISSDocumentStore(sql_url="sqlite://") #ElasticsearchDocumentStore(host="localhost", username="", password="", index="document") # ## Preprocessing of documents # From 5b81890d9d9397c49900153f059a13c44b0b6866 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Tue, 25 Jan 2022 17:05:55 +0100 Subject: [PATCH 56/76] Pin Milvus 1 and make Milvus2 the default --- setup.cfg | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/setup.cfg b/setup.cfg index 8ed8a5f409..c6f7123184 100644 --- a/setup.cfg +++ b/setup.cfg @@ -113,14 +113,14 @@ only-faiss-gpu = faiss-gpu>=1.6.3 faiss-gpu = farm-haystack[sql,only-faiss-gpu] +only-milvus1 = + pymilvus<2.0.0 # Refer milvus version support matrix at https://github.com/milvus-io/pymilvus#install-pymilvus +milvus1 = + farm-haystack[sql,only-milvus1] only-milvus = - pymilvus # Refer milvus version support matrix at https://github.com/milvus-io/pymilvus#install-pymilvus + pymilvus>=2.0.0 # Refer milvus version support matrix at https://github.com/milvus-io/pymilvus#install-pymilvus milvus = farm-haystack[sql,only-milvus] -only-milvus2 = - pymilvus==2.0.0rc6 # Refer milvus version support matrix at https://github.com/milvus-io/pymilvus#install-pymilvus -milvus2 = - farm-haystack[sql,only-milvus2] weaviate = weaviate-client==2.5.0 graphdb = From 4ddf7e9446fb3591b10b9791888f399a2c4fa1eb Mon Sep 17 00:00:00 2001 From: ZanSara Date: Tue, 25 Jan 2022 17:15:11 +0100 Subject: [PATCH 57/76] Clarify error message at failed import in conftest.py --- test/conftest.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/conftest.py b/test/conftest.py index c39af9646b..0c4be0f43b 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -14,19 +14,19 @@ try: from elasticsearch import Elasticsearch + from haystack.document_stores.elasticsearch import ElasticsearchDocumentStore from milvus import Milvus import weaviate from haystack.document_stores.weaviate import WeaviateDocumentStore from haystack.document_stores.milvus import MilvusDocumentStore from haystack.document_stores.graphdb import GraphDBKnowledgeGraph - from haystack.document_stores.elasticsearch import ElasticsearchDocumentStore from haystack.document_stores.faiss import FAISSDocumentStore from haystack.document_stores.sql import SQLDocumentStore except (ImportError, ModuleNotFoundError) as ie: from haystack.utils.import_utils import _optional_component_not_installed - _optional_component_not_installed(__name__, "test", ie) + _optional_component_not_installed('test', "test", ie) from haystack.document_stores.memory import InMemoryDocumentStore From 0e41024c44aea2cf5ec988ce314cbfd29344bc50 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Tue, 25 Jan 2022 17:42:34 +0100 Subject: [PATCH 58/76] Include tstadel review and re-introduce Milvus1 in the tests suite, to fix --- haystack/utils/import_utils.py | 14 +++++++------- setup.cfg | 3 +-- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/haystack/utils/import_utils.py b/haystack/utils/import_utils.py index cf4d8f32be..4282aa089d 100644 --- a/haystack/utils/import_utils.py +++ b/haystack/utils/import_utils.py @@ -12,25 +12,25 @@ logger = logging.getLogger(__name__) -def safe_import(import_path, classname, dep_group): +def safe_import(import_path: str, classname: str, dep_group: str): """ - Method that allows the import of "non-existing" document stores. - Doc stores can be installed one by one with extras_require (see setup.cfg) - but they need to be all imported in haystack.document_stores.__init__() + Method that allows the import of nodes that depend on missing dependencies. + These nodes can be installed one by one with extras_require (see setup.cfg) + but they need to be all imported in their respective package's __init__() Therefore, in case of an ImportError, the class to import is replaced by a hollow MissingDependency function, which will throw an error when inizialized. """ try: - module = importlib.import_module(f"{import_path}") + module = importlib.import_module(import_path) classs = vars(module).get(classname) except ImportError as ie: classs = _missing_dependency_stub_factory(classname, dep_group, ie) return classs -def _missing_dependency_stub_factory(classname, dep_group, import_error): +def _missing_dependency_stub_factory(classname: str, dep_group: str, import_error: Exception): """ Create custom versions of MissingDependency using the given parameters. See `safe_import()` @@ -46,7 +46,7 @@ def __getattr__(self, *a, **k): return MissingDependency -def _optional_component_not_installed(component, dep_group, source_error): +def _optional_component_not_installed(component: str, dep_group: str, source_error: Exception): raise ImportError (f"Failed to import '{component}', " \ "which is an optional component in Haystack.\n" \ f"Run 'pip install farm-haystack[{dep_group}]' " \ diff --git a/setup.cfg b/setup.cfg index c6f7123184..1abd7ce7f4 100644 --- a/setup.cfg +++ b/setup.cfg @@ -62,7 +62,6 @@ install_requires = tqdm # progress bars in model download and training scripts networkx # graphs library mmh3 # fast hashing function (murmurhash3) - quantulum3 # quantity extraction from text azure-ai-formrecognizer==3.2.0b2 # forms reader # Preprocessing @@ -167,7 +166,7 @@ dev = flake8 black test = - farm-haystack[docstores,crawler,preprocessing,ocr,ray,rest,ui,dev] + farm-haystack[faiss,milvus1,weaviate,graphdb,crawler,preprocessing,ocr,ray,rest,ui,dev] all = farm-haystack[docstores,crawler,preprocessing,ocr,ray,rest,ui,dev,onnx] all-gpu = From 26f3f72004963c2f1efd046c422980b4394210d2 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Tue, 25 Jan 2022 17:45:16 +0100 Subject: [PATCH 59/76] Remove some unused imports from transformers.py --- haystack/nodes/reader/transformers.py | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/haystack/nodes/reader/transformers.py b/haystack/nodes/reader/transformers.py index e7cd7d3341..7aad536347 100644 --- a/haystack/nodes/reader/transformers.py +++ b/haystack/nodes/reader/transformers.py @@ -1,13 +1,7 @@ -from typing import List, Optional, Tuple, Dict +from typing import List, Optional import logging -from statistics import mean -import torch -import numpy as np -import pandas as pd -#from quantulum3 import parser -from transformers import pipeline, TapasTokenizer, TapasForQuestionAnswering, BatchEncoding - +from transformers import pipeline from haystack.schema import Document, Answer, Span from haystack.nodes.reader.base import BaseReader from haystack.modeling.utils import initialize_device_settings From e947886774ec8590131201b0682c9f43b1b07103 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Tue, 25 Jan 2022 17:49:57 +0100 Subject: [PATCH 60/76] Update some import paths in tests --- test/test_extractor.py | 8 ++++---- test/test_pipeline.py | 11 +++-------- test/test_pipeline_extractive_qa.py | 2 +- test/test_preprocessor.py | 6 ++---- test/test_question_generator.py | 2 +- test/test_summarizer_translation.py | 1 - 6 files changed, 11 insertions(+), 19 deletions(-) diff --git a/test/test_extractor.py b/test/test_extractor.py index 06904437aa..3c49d33c5c 100644 --- a/test/test_extractor.py +++ b/test/test_extractor.py @@ -1,10 +1,10 @@ import pytest -from haystack.retriever.sparse import ElasticsearchRetriever -from haystack.reader import FARMReader -from haystack.pipeline import Pipeline +from haystack.nodes.retriever.sparse import ElasticsearchRetriever +from haystack.nodes.reader import FARMReader +from haystack.pipelines import Pipeline -from haystack.extractor import EntityExtractor, simplify_ner_for_qa +from haystack.nodes.extractor import EntityExtractor, simplify_ner_for_qa @pytest.mark.parametrize("document_store_with_docs", ["elasticsearch"], indirect=True) diff --git a/test/test_pipeline.py b/test/test_pipeline.py index 83a9604dc5..83d078ade8 100644 --- a/test/test_pipeline.py +++ b/test/test_pipeline.py @@ -5,19 +5,14 @@ import pytest from haystack.document_stores.elasticsearch import ElasticsearchDocumentStore -from haystack.pipeline import ( - JoinDocuments, +from haystack.pipelines import ( Pipeline, - FAQPipeline, DocumentSearchPipeline, RootNode, - SklearnQueryClassifier, - TransformersQueryClassifier, - MostSimilarDocumentsPipeline, ) from haystack.pipelines import ExtractiveQAPipeline -from haystack.nodes import DensePassageRetriever, EmbeddingRetriever, ElasticsearchRetriever, FARMReader -from haystack.schema import Document +from haystack.nodes import DensePassageRetriever, EmbeddingRetriever + @pytest.mark.elasticsearch @pytest.mark.parametrize("document_store", ["elasticsearch"], indirect=True) diff --git a/test/test_pipeline_extractive_qa.py b/test/test_pipeline_extractive_qa.py index 48910f70fe..3dd6b481d3 100644 --- a/test/test_pipeline_extractive_qa.py +++ b/test/test_pipeline_extractive_qa.py @@ -1,6 +1,6 @@ import pytest -from haystack.pipeline import ( +from haystack.pipelines import ( TranslationWrapperPipeline, ExtractiveQAPipeline ) diff --git a/test/test_preprocessor.py b/test/test_preprocessor.py index b51f9b258a..2177d55af0 100644 --- a/test/test_preprocessor.py +++ b/test/test_preprocessor.py @@ -1,9 +1,7 @@ from pathlib import Path -import pytest - -from haystack.file_converter.pdf import PDFToTextConverter -from haystack.preprocessor.preprocessor import PreProcessor +from haystack.nodes.file_converter.pdf import PDFToTextConverter +from haystack.nodes.preprocessor.preprocessor import PreProcessor TEXT = """ This is a sample sentence in paragraph_1. This is a sample sentence in paragraph_1. This is a sample sentence in diff --git a/test/test_question_generator.py b/test/test_question_generator.py index 44f725fcf8..045c193f18 100644 --- a/test/test_question_generator.py +++ b/test/test_question_generator.py @@ -1,4 +1,4 @@ -from haystack.pipeline import QuestionAnswerGenerationPipeline, QuestionGenerationPipeline, RetrieverQuestionGenerationPipeline +from haystack.pipelines import QuestionAnswerGenerationPipeline, QuestionGenerationPipeline, RetrieverQuestionGenerationPipeline from haystack.schema import Document import pytest diff --git a/test/test_summarizer_translation.py b/test/test_summarizer_translation.py index 76671c56cc..50eb808fb2 100644 --- a/test/test_summarizer_translation.py +++ b/test/test_summarizer_translation.py @@ -1,6 +1,5 @@ import pytest -from haystack.schema import Document from haystack.pipelines import TranslationWrapperPipeline, SearchSummarizationPipeline from haystack.nodes import DensePassageRetriever, EmbeddingRetriever from test_summarizer import SPLIT_DOCS From 5fbe93d4af0ed4d8b853be5cbd380f7a889427d2 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Tue, 25 Jan 2022 17:55:36 +0100 Subject: [PATCH 61/76] Replace Path(__file__).parent/'samples' with a constant from conftest.pu --- test/conftest.py | 3 +++ test/test_distillation.py | 7 +++-- test/test_eval.py | 14 +++++----- test/test_file_converter.py | 19 ++++++++------ test/test_modeling_processor.py | 6 +++-- .../test_modeling_processor_saving_loading.py | 8 +++--- test/test_pipeline.py | 26 ++++++++++--------- test/test_pipeline_debug_and_validation.py | 3 ++- test/test_ray.py | 4 ++- test/test_retriever.py | 4 ++- test/test_standard_pipelines.py | 20 +++++++------- test/test_utils.py | 13 +++++----- 12 files changed, 76 insertions(+), 51 deletions(-) diff --git a/test/conftest.py b/test/conftest.py index 0c4be0f43b..2d7f4f9d7d 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -5,6 +5,7 @@ import gc import uuid import logging +from pathlib import Path from sqlalchemy import create_engine, text import numpy as np @@ -51,6 +52,8 @@ SQL_TYPE = "sqlite" # SQL_TYPE = "postgres" +SAMPLES_PATH = SAMPLES_PATH + def pytest_addoption(parser): parser.addoption("--document_store_type", action="store", default="elasticsearch, faiss, memory, milvus, weaviate") diff --git a/test/test_distillation.py b/test/test_distillation.py index 27631bae04..da3392d80a 100644 --- a/test/test_distillation.py +++ b/test/test_distillation.py @@ -2,6 +2,9 @@ from haystack.nodes import FARMReader import torch +from conftest import SAMPLES_PATH + + def create_checkpoint(model): weights = [] for name, weight in model.inferencer.model.named_parameters(): @@ -24,7 +27,7 @@ def test_distillation(): student_weights.pop(-2) # pooler is not updated due to different attention head - student.distil_prediction_layer_from(teacher, data_dir=Path(__file__).parent/"samples"/"squad", train_filename="tiny.json") + student.distil_prediction_layer_from(teacher, data_dir=SAMPLES_PATH/"squad", train_filename="tiny.json") # create new checkpoint new_student_weights = create_checkpoint(student) @@ -48,7 +51,7 @@ def test_tinybert_distillation(): student_weights.pop(-1) # last layer is not affected by tinybert loss student_weights.pop(-1) # pooler is not updated due to different attention head - student.distil_intermediate_layers_from(teacher_model=teacher, data_dir=Path(__file__).parent/"samples"/"squad", train_filename="tiny.json") + student.distil_intermediate_layers_from(teacher_model=teacher, data_dir=SAMPLES_PATH/"squad", train_filename="tiny.json") # create new checkpoint new_student_weights = create_checkpoint(student) diff --git a/test/test_eval.py b/test/test_eval.py index e96465d104..6d99ffc865 100644 --- a/test/test_eval.py +++ b/test/test_eval.py @@ -16,6 +16,8 @@ from haystack.nodes.summarizer.transformers import TransformersSummarizer from haystack.schema import Answer, Document, EvaluationResult, Label, MultiLabel, Span +from conftest import SAMPLES_PATH + @pytest.mark.parametrize("document_store_with_docs", ["memory"], indirect=True) @pytest.mark.parametrize("retriever_with_docs", ["embedding"], indirect=True) @@ -78,7 +80,7 @@ def test_summarizer_calculate_metrics(document_store_with_docs: ElasticsearchDoc def test_add_eval_data(document_store, batch_size): # add eval data (SQUAD format) document_store.add_eval_data( - filename=Path(__file__).parent/"samples"/"squad"/"small.json", + filename=SAMPLES_PATH/"squad"/"small.json", doc_index="haystack_test_eval_document", label_index="haystack_test_feedback", batch_size=batch_size, @@ -122,7 +124,7 @@ def test_add_eval_data(document_store, batch_size): def test_eval_reader(reader, document_store: BaseDocumentStore): # add eval data (SQUAD format) document_store.add_eval_data( - filename=Path(__file__).parent/"samples"/"squad"/"tiny.json", + filename=SAMPLES_PATH/"squad"/"tiny.json", doc_index="haystack_test_eval_document", label_index="haystack_test_feedback", ) @@ -147,7 +149,7 @@ def test_eval_reader(reader, document_store: BaseDocumentStore): def test_eval_elastic_retriever(document_store: BaseDocumentStore, open_domain, retriever): # add eval data (SQUAD format) document_store.add_eval_data( - filename=Path(__file__).parent/"samples"/"squad"/"tiny.json", + filename=SAMPLES_PATH/"squad"/"tiny.json", doc_index="haystack_test_eval_document", label_index="haystack_test_feedback", ) @@ -171,7 +173,7 @@ def test_eval_elastic_retriever(document_store: BaseDocumentStore, open_domain, def test_eval_pipeline(document_store: BaseDocumentStore, reader, retriever): # add eval data (SQUAD format) document_store.add_eval_data( - filename=Path(__file__).parent/"samples"/"squad"/"tiny.json", + filename=SAMPLES_PATH/"squad"/"tiny.json", doc_index="haystack_test_eval_document", label_index="haystack_test_feedback", ) @@ -221,7 +223,7 @@ def test_eval_data_split_word(document_store): ) document_store.add_eval_data( - filename=Path(__file__).parent/"samples"/"squad"/"tiny.json", + filename=SAMPLES_PATH/"squad"/"tiny.json", doc_index="haystack_test_eval_document", label_index="haystack_test_feedback", preprocessor=preprocessor, @@ -246,7 +248,7 @@ def test_eval_data_split_passage(document_store): ) document_store.add_eval_data( - filename=Path(__file__).parent/"samples"/"squad"/"tiny_passages.json", + filename=SAMPLES_PATH/"squad"/"tiny_passages.json", doc_index="haystack_test_eval_document", label_index="haystack_test_feedback", preprocessor=preprocessor, diff --git a/test/test_file_converter.py b/test/test_file_converter.py index 25b1054359..0a541e7f89 100644 --- a/test/test_file_converter.py +++ b/test/test_file_converter.py @@ -6,6 +6,9 @@ from haystack.nodes import MarkdownConverter, DocxToTextConverter, PDFToTextConverter, PDFToTextOCRConverter, \ TikaConverter, AzureConverter, ParsrConverter +from conftest import SAMPLES_PATH + + @pytest.mark.tika @pytest.mark.parametrize( @@ -14,7 +17,7 @@ ) def test_convert(Converter): converter = Converter() - document = converter.convert(file_path=Path(__file__).parent/"samples"/"pdf"/"sample_pdf_1.pdf")[0] + document = converter.convert(file_path=SAMPLES_PATH/"pdf"/"sample_pdf_1.pdf")[0] pages = document["content"].split("\f") assert len(pages) == 4 # the sample PDF file has four pages. assert pages[0] != "" # the page 1 of PDF contains text. @@ -32,7 +35,7 @@ def test_convert(Converter): @pytest.mark.parametrize("Converter", [PDFToTextConverter, TikaConverter]) def test_table_removal(Converter): converter = Converter(remove_numeric_tables=True) - document = converter.convert(file_path=Path(__file__).parent/"samples"/"pdf"/"sample_pdf_1.pdf")[0] + document = converter.convert(file_path=SAMPLES_PATH/"pdf"/"sample_pdf_1.pdf")[0] pages = document["content"].split("\f") # assert numeric rows are removed from the table. assert "324" not in pages[0] @@ -43,14 +46,14 @@ def test_table_removal(Converter): @pytest.mark.parametrize("Converter", [PDFToTextConverter, TikaConverter]) def test_language_validation(Converter, caplog): converter = Converter(valid_languages=["en"]) - converter.convert(file_path=Path(__file__).parent/"samples"/"pdf"/"sample_pdf_1.pdf") + converter.convert(file_path=SAMPLES_PATH/"pdf"/"sample_pdf_1.pdf") assert ( "samples/pdf/sample_pdf_1.pdf is not one of ['en']." not in caplog.text ) converter = Converter(valid_languages=["de"]) - converter.convert(file_path=Path(__file__).parent/"samples"/"pdf"/"sample_pdf_1.pdf") + converter.convert(file_path=SAMPLES_PATH/"pdf"/"sample_pdf_1.pdf") assert ( "samples/pdf/sample_pdf_1.pdf is not one of ['de']." in caplog.text @@ -59,13 +62,13 @@ def test_language_validation(Converter, caplog): def test_docx_converter(): converter = DocxToTextConverter() - document = converter.convert(file_path=Path(__file__).parent/"samples"/"docx"/"sample_docx.docx")[0] + document = converter.convert(file_path=SAMPLES_PATH/"docx"/"sample_docx.docx")[0] assert document["content"].startswith("Sample Docx File") def test_markdown_converter(): converter = MarkdownConverter() - document = converter.convert(file_path=Path(__file__).parent/"samples"/"markdown"/"sample.md")[0] + document = converter.convert(file_path=SAMPLES_PATH/"markdown"/"sample.md")[0] assert document["content"].startswith("What to build with Haystack") @@ -77,7 +80,7 @@ def test_azure_converter(): save_json=True, ) - docs = converter.convert(file_path=Path(__file__).parent/"samples"/"pdf"/"sample_pdf_1.pdf") + docs = converter.convert(file_path=SAMPLES_PATH/"pdf"/"sample_pdf_1.pdf") assert len(docs) == 2 assert docs[0]["content_type"] == "table" assert len(docs[0]["content"]) == 5 # number of rows @@ -92,7 +95,7 @@ def test_azure_converter(): def test_parsr_converter(): converter = ParsrConverter() - docs = converter.convert(file_path=str((Path(__file__).parent/"samples"/"pdf"/"sample_pdf_1.pdf").absolute())) + docs = converter.convert(file_path=str((SAMPLES_PATH/"pdf"/"sample_pdf_1.pdf").absolute())) assert len(docs) == 2 assert docs[0]["content_type"] == "table" assert len(docs[0]["content"]) == 5 # number of rows diff --git a/test/test_modeling_processor.py b/test/test_modeling_processor.py index 504d392edc..6c0083ddba 100644 --- a/test/test_modeling_processor.py +++ b/test/test_modeling_processor.py @@ -6,6 +6,8 @@ from haystack.modeling.data_handler.processor import SquadProcessor from haystack.modeling.model.tokenization import Tokenizer +from conftest import SAMPLES_PATH + # during inference (parameter return_baskets = False) we do not convert labels def test_dataset_from_dicts_qa_inference(caplog=None): @@ -26,7 +28,7 @@ def test_dataset_from_dicts_qa_inference(caplog=None): processor = SquadProcessor(tokenizer, max_seq_len=256, data_dir=None) for sample_type in sample_types: - dicts = processor.file_to_dicts(Path(__file__).parent/"samples"/"qa"/f"{sample_type}.json") + dicts = processor.file_to_dicts(SAMPLES_PATH/"qa"/f"{sample_type}.json") dataset, tensor_names, problematic_sample_ids, baskets = processor.dataset_from_dicts(dicts, indices=[1], return_baskets=True) assert tensor_names == ['input_ids', 'padding_mask', 'segment_ids', 'passage_start_t', 'start_of_word', 'labels', 'id', 'seq_2_start_t', 'span_mask'], f"Processing for {model} has changed." assert len(problematic_sample_ids) == 0, f"Processing for {model} has changed." @@ -143,7 +145,7 @@ def test_dataset_from_dicts_qa_labelconversion(caplog=None): processor = SquadProcessor(tokenizer, max_seq_len=256, data_dir=None) for sample_type in sample_types: - dicts = processor.file_to_dicts(Path(__file__).parent/"samples"/"qa"/f"{sample_type}.json") + dicts = processor.file_to_dicts(SAMPLES_PATH/"qa"/f"{sample_type}.json") dataset, tensor_names, problematic_sample_ids = processor.dataset_from_dicts(dicts, indices=[1], return_baskets=False) if sample_type == "answer-wrong" or sample_type == "answer-offset-wrong": diff --git a/test/test_modeling_processor_saving_loading.py b/test/test_modeling_processor_saving_loading.py index 1d785a20ca..2bc56bbb23 100644 --- a/test/test_modeling_processor_saving_loading.py +++ b/test/test_modeling_processor_saving_loading.py @@ -6,6 +6,8 @@ from haystack.modeling.utils import set_all_seeds import torch +from conftest import SAMPLES_PATH + def test_processor_saving_loading(caplog): if caplog is not None: @@ -25,17 +27,17 @@ def test_processor_saving_loading(caplog): train_filename="train-sample.json", dev_filename="dev-sample.json", test_filename=None, - data_dir=Path(__file__).parent/"samples"/"qa", + data_dir=SAMPLES_PATH/"qa", ) - dicts = processor.file_to_dicts(file=Path(__file__).parent/"samples"/"qa"/"dev-sample.json") + dicts = processor.file_to_dicts(file=SAMPLES_PATH/"qa"/"dev-sample.json") data, tensor_names, _ = processor.dataset_from_dicts(dicts=dicts, indices=[1]) save_dir = Path("testsave/processor") processor.save(save_dir) processor = processor.load_from_dir(save_dir) - dicts = processor.file_to_dicts(file=Path(__file__).parent/"samples"/"qa"/"dev-sample.json") + dicts = processor.file_to_dicts(file=SAMPLES_PATH/"qa"/"dev-sample.json") data_loaded, tensor_names_loaded, _ = processor.dataset_from_dicts(dicts, indices=[1]) assert tensor_names == tensor_names_loaded diff --git a/test/test_pipeline.py b/test/test_pipeline.py index 83d078ade8..d687cb76ed 100644 --- a/test/test_pipeline.py +++ b/test/test_pipeline.py @@ -13,20 +13,22 @@ from haystack.pipelines import ExtractiveQAPipeline from haystack.nodes import DensePassageRetriever, EmbeddingRetriever +from conftest import SAMPLES_PATH + @pytest.mark.elasticsearch @pytest.mark.parametrize("document_store", ["elasticsearch"], indirect=True) def test_load_and_save_yaml(document_store, tmp_path): # test correct load of indexing pipeline from yaml pipeline = Pipeline.load_from_yaml( - Path(__file__).parent/"samples"/"pipeline"/"test_pipeline.yaml", pipeline_name="indexing_pipeline" + SAMPLES_PATH/"pipeline"/"test_pipeline.yaml", pipeline_name="indexing_pipeline" ) pipeline.run( - file_paths=Path(__file__).parent/"samples"/"pdf"/"sample_pdf_1.pdf" + file_paths=SAMPLES_PATH/"pdf"/"sample_pdf_1.pdf" ) # test correct load of query pipeline from yaml pipeline = Pipeline.load_from_yaml( - Path(__file__).parent/"samples"/"pipeline"/"test_pipeline.yaml", pipeline_name="query_pipeline" + SAMPLES_PATH/"pipeline"/"test_pipeline.yaml", pipeline_name="query_pipeline" ) prediction = pipeline.run( query="Who made the PDF specification?", params={"ESRetriever": {"top_k": 10}, "Reader": {"top_k": 3}} @@ -38,7 +40,7 @@ def test_load_and_save_yaml(document_store, tmp_path): # test invalid pipeline name with pytest.raises(Exception): Pipeline.load_from_yaml( - path=Path(__file__).parent/"samples"/"pipeline"/"test_pipeline.yaml", pipeline_name="invalid" + path=SAMPLES_PATH/"pipeline"/"test_pipeline.yaml", pipeline_name="invalid" ) # test config export pipeline.save_to_yaml(tmp_path / "test.yaml") @@ -82,14 +84,14 @@ def test_load_and_save_yaml(document_store, tmp_path): def test_load_and_save_yaml_prebuilt_pipelines(document_store, tmp_path): # populating index pipeline = Pipeline.load_from_yaml( - Path(__file__).parent/"samples"/"pipeline"/"test_pipeline.yaml", pipeline_name="indexing_pipeline" + SAMPLES_PATH/"pipeline"/"test_pipeline.yaml", pipeline_name="indexing_pipeline" ) pipeline.run( - file_paths=Path(__file__).parent/"samples"/"pdf"/"sample_pdf_1.pdf" + file_paths=SAMPLES_PATH/"pdf"/"sample_pdf_1.pdf" ) # test correct load of query pipeline from yaml pipeline = ExtractiveQAPipeline.load_from_yaml( - Path(__file__).parent/"samples"/"pipeline"/"test_pipeline.yaml", pipeline_name="query_pipeline" + SAMPLES_PATH/"pipeline"/"test_pipeline.yaml", pipeline_name="query_pipeline" ) prediction = pipeline.run( query="Who made the PDF specification?", params={"ESRetriever": {"top_k": 10}, "Reader": {"top_k": 3}} @@ -101,7 +103,7 @@ def test_load_and_save_yaml_prebuilt_pipelines(document_store, tmp_path): # test invalid pipeline name with pytest.raises(Exception): ExtractiveQAPipeline.load_from_yaml( - path=Path(__file__).parent/"samples"/"pipeline"/"test_pipeline.yaml", pipeline_name="invalid" + path=SAMPLES_PATH/"pipeline"/"test_pipeline.yaml", pipeline_name="invalid" ) # test config export pipeline.save_to_yaml(tmp_path / "test.yaml") @@ -147,7 +149,7 @@ def test_load_tfidfretriever_yaml(tmp_path): } ] pipeline = Pipeline.load_from_yaml( - Path(__file__).parent/"samples"/"pipeline"/"test_pipeline_tfidfretriever.yaml", pipeline_name="query_pipeline" + SAMPLES_PATH/"pipeline"/"test_pipeline_tfidfretriever.yaml", pipeline_name="query_pipeline" ) with pytest.raises(Exception) as exc_info: pipeline.run( @@ -353,10 +355,10 @@ def test_existing_faiss_document_store(): clean_faiss_document_store() pipeline = Pipeline.load_from_yaml( - Path(__file__).parent/"samples"/"pipeline"/"test_pipeline_faiss_indexing.yaml", pipeline_name="indexing_pipeline" + SAMPLES_PATH/"pipeline"/"test_pipeline_faiss_indexing.yaml", pipeline_name="indexing_pipeline" ) pipeline.run( - file_paths=Path(__file__).parent/"samples"/"pdf"/"sample_pdf_1.pdf" + file_paths=SAMPLES_PATH/"pdf"/"sample_pdf_1.pdf" ) new_document_store = pipeline.get_document_store() @@ -364,7 +366,7 @@ def test_existing_faiss_document_store(): # test correct load of query pipeline from yaml pipeline = Pipeline.load_from_yaml( - Path(__file__).parent/"samples"/"pipeline"/"test_pipeline_faiss_retrieval.yaml", pipeline_name="query_pipeline" + SAMPLES_PATH/"pipeline"/"test_pipeline_faiss_retrieval.yaml", pipeline_name="query_pipeline" ) retriever = pipeline.get_node("DPRRetriever") diff --git a/test/test_pipeline_debug_and_validation.py b/test/test_pipeline_debug_and_validation.py index caf186861c..ab33e2b1bb 100644 --- a/test/test_pipeline_debug_and_validation.py +++ b/test/test_pipeline_debug_and_validation.py @@ -12,6 +12,7 @@ ElasticsearchRetriever, ) +from conftest import SAMPLES_PATH @pytest.mark.elasticsearch @@ -150,7 +151,7 @@ def test_global_debug_attributes_override_node_ones(document_store_with_docs, tm def test_invalid_run_args(): pipeline = Pipeline.load_from_yaml( - Path(__file__).parent/"samples"/"pipeline"/"test_pipeline.yaml", pipeline_name="query_pipeline" + SAMPLES_PATH/"pipeline"/"test_pipeline.yaml", pipeline_name="query_pipeline" ) with pytest.raises(Exception) as exc: pipeline.run(params={"ESRetriever": {"top_k": 10}}) diff --git a/test/test_ray.py b/test/test_ray.py index d8120f0fc2..93adf0c576 100644 --- a/test/test_ray.py +++ b/test/test_ray.py @@ -5,11 +5,13 @@ from haystack.pipelines import RayPipeline +from conftest import SAMPLES_PATH + @pytest.mark.parametrize("document_store_with_docs", ["elasticsearch"], indirect=True) def test_load_pipeline(document_store_with_docs): pipeline = RayPipeline.load_from_yaml( - Path(__file__).parent/"samples"/"pipeline"/"test_pipeline.yaml", pipeline_name="ray_query_pipeline", num_cpus=8, + SAMPLES_PATH/"pipeline"/"test_pipeline.yaml", pipeline_name="ray_query_pipeline", num_cpus=8, ) prediction = pipeline.run(query="Who lives in Berlin?", params={"Retriever": {"top_k": 10}, "Reader": {"top_k": 3}}) diff --git a/test/test_retriever.py b/test/test_retriever.py index 5d285c7e38..deee5acbd1 100644 --- a/test/test_retriever.py +++ b/test/test_retriever.py @@ -15,6 +15,8 @@ from haystack.nodes.retriever.sparse import ElasticsearchRetriever, ElasticsearchFilterOnlyRetriever, TfidfRetriever from transformers import DPRContextEncoderTokenizerFast, DPRQuestionEncoderTokenizerFast +from conftest import SAMPLES_PATH + @pytest.fixture() def docs(): @@ -343,7 +345,7 @@ def test_table_text_retriever_training(document_store): ) retriever.train( - data_dir=Path(__file__).parent/"samples"/"mmr", + data_dir=SAMPLES_PATH/"mmr", train_filename="sample.json", n_epochs=1, n_gpu=0, diff --git a/test/test_standard_pipelines.py b/test/test_standard_pipelines.py index 3d05059a6b..597c1a002f 100644 --- a/test/test_standard_pipelines.py +++ b/test/test_standard_pipelines.py @@ -15,6 +15,8 @@ from haystack.nodes import DensePassageRetriever, ElasticsearchRetriever, SklearnQueryClassifier, TransformersQueryClassifier, JoinDocuments from haystack.schema import Document +from conftest import SAMPLES_PATH + @pytest.mark.parametrize( "retriever,document_store", @@ -244,14 +246,14 @@ def run(self, **kwargs): def test_indexing_pipeline_with_classifier(document_store): # test correct load of indexing pipeline from yaml pipeline = Pipeline.load_from_yaml( - Path(__file__).parent/"samples"/"pipeline"/"test_pipeline.yaml", pipeline_name="indexing_pipeline_with_classifier" + SAMPLES_PATH/"pipeline"/"test_pipeline.yaml", pipeline_name="indexing_pipeline_with_classifier" ) pipeline.run( - file_paths=Path(__file__).parent/"samples"/"pdf"/"sample_pdf_1.pdf" + file_paths=SAMPLES_PATH/"pdf"/"sample_pdf_1.pdf" ) # test correct load of query pipeline from yaml pipeline = Pipeline.load_from_yaml( - Path(__file__).parent/"samples"/"pipeline"/"test_pipeline.yaml", pipeline_name="query_pipeline" + SAMPLES_PATH/"pipeline"/"test_pipeline.yaml", pipeline_name="query_pipeline" ) prediction = pipeline.run( query="Who made the PDF specification?", params={"ESRetriever": {"top_k": 10}, "Reader": {"top_k": 3}} @@ -267,14 +269,14 @@ def test_indexing_pipeline_with_classifier(document_store): def test_query_pipeline_with_document_classifier(document_store): # test correct load of indexing pipeline from yaml pipeline = Pipeline.load_from_yaml( - Path(__file__).parent/"samples"/"pipeline"/"test_pipeline.yaml", pipeline_name="indexing_pipeline" + SAMPLES_PATH/"pipeline"/"test_pipeline.yaml", pipeline_name="indexing_pipeline" ) pipeline.run( - file_paths=Path(__file__).parent/"samples"/"pdf"/"sample_pdf_1.pdf" + file_paths=SAMPLES_PATH/"pdf"/"sample_pdf_1.pdf" ) # test correct load of query pipeline from yaml pipeline = Pipeline.load_from_yaml( - Path(__file__).parent/"samples"/"pipeline"/"test_pipeline.yaml", pipeline_name="query_pipeline_with_document_classifier" + SAMPLES_PATH/"pipeline"/"test_pipeline.yaml", pipeline_name="query_pipeline_with_document_classifier" ) prediction = pipeline.run( query="Who made the PDF specification?", params={"ESRetriever": {"top_k": 10}, "Reader": {"top_k": 3}} @@ -289,10 +291,10 @@ def test_existing_faiss_document_store(): clean_faiss_document_store() pipeline = Pipeline.load_from_yaml( - Path(__file__).parent/"samples"/"pipeline"/"test_pipeline_faiss_indexing.yaml", pipeline_name="indexing_pipeline" + SAMPLES_PATH/"pipeline"/"test_pipeline_faiss_indexing.yaml", pipeline_name="indexing_pipeline" ) pipeline.run( - file_paths=Path(__file__).parent/"samples"/"pdf"/"sample_pdf_1.pdf" + file_paths=SAMPLES_PATH/"pdf"/"sample_pdf_1.pdf" ) new_document_store = pipeline.get_document_store() @@ -300,7 +302,7 @@ def test_existing_faiss_document_store(): # test correct load of query pipeline from yaml pipeline = Pipeline.load_from_yaml( - Path(__file__).parent/"samples"/"pipeline"/"test_pipeline_faiss_retrieval.yaml", pipeline_name="query_pipeline" + SAMPLES_PATH/"pipeline"/"test_pipeline_faiss_retrieval.yaml", pipeline_name="query_pipeline" ) retriever = pipeline.get_node("DPRRetriever") diff --git a/test/test_utils.py b/test/test_utils.py index 252adcaa97..09700eafbd 100644 --- a/test/test_utils.py +++ b/test/test_utils.py @@ -6,21 +6,22 @@ from haystack.utils.augment_squad import augment_squad from haystack.utils.squad_data import SquadData +from conftest import SAMPLES_PATH + def test_convert_files_to_dicts(): - print(Path(__file__).parent/"samples") - documents = convert_files_to_dicts(dir_path=(Path(__file__).parent/"samples").absolute(), clean_func=clean_wiki_text, split_paragraphs=True) + documents = convert_files_to_dicts(dir_path=(SAMPLES_PATH).absolute(), clean_func=clean_wiki_text, split_paragraphs=True) assert documents and len(documents) > 0 @pytest.mark.tika def test_tika_convert_files_to_dicts(): - documents = tika_convert_files_to_dicts(dir_path=Path(__file__).parent/"samples", clean_func=clean_wiki_text, split_paragraphs=True) + documents = tika_convert_files_to_dicts(dir_path=SAMPLES_PATH, clean_func=clean_wiki_text, split_paragraphs=True) assert documents and len(documents) > 0 def test_squad_augmentation(): - input_ = Path(__file__).parent/"samples"/"squad"/"tiny.json" - output = Path(__file__).parent/"samples"/"squad"/"tiny_augmented.json" - glove_path = Path(__file__).parent/"samples"/"glove"/"tiny.txt" # dummy glove file, will not even be use when augmenting tiny.json + input_ = SAMPLES_PATH/"squad"/"tiny.json" + output = SAMPLES_PATH/"squad"/"tiny_augmented.json" + glove_path = SAMPLES_PATH/"glove"/"tiny.txt" # dummy glove file, will not even be use when augmenting tiny.json multiplication_factor = 5 augment_squad(model="distilbert-base-uncased", tokenizer="distilbert-base-uncased", squad_path=input_, output_path=output, glove_path=glove_path, multiplication_factor=multiplication_factor) From 817712b189928a124608f0b3880ada9b0f7d19bb Mon Sep 17 00:00:00 2001 From: ZanSara Date: Tue, 25 Jan 2022 18:00:10 +0100 Subject: [PATCH 62/76] Switch flake8 with pylint and configure it --- pyproject.toml | 20 ++++++++++++++++++++ setup.cfg | 29 ++++------------------------- 2 files changed, 24 insertions(+), 25 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 5ae621b5de..fa1004295a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,3 +8,23 @@ build-backend = "setuptools.build_meta" [tool.black] line-length = 120 + + +[tool.pylint.'MESSAGES CONTROL'] +max-line-length=120 +disable = [ + "missing-docstring", + "unused-argument", + "no-member", + "line-too-long", + "fixme", + "protected-access", + "too-few-public-methods", + "raise-missing-from" +] + +[tool.pylint.'DESIGN'] +max-args=7 + +[tool.pylint.'SIMILARITIES'] +min-similarity-lines=6 \ No newline at end of file diff --git a/setup.cfg b/setup.cfg index 1abd7ce7f4..a96ee80da2 100644 --- a/setup.cfg +++ b/setup.cfg @@ -163,7 +163,7 @@ dev = coverage python-multipart psutil - flake8 + pylint black test = farm-haystack[faiss,milvus1,weaviate,graphdb,crawler,preprocessing,ocr,ray,rest,ui,dev] @@ -173,7 +173,6 @@ all-gpu = farm-haystack[docstores-gpu,crawler,preprocessing,ocr,ray,rest,ui,dev,onnx-gpu] - [tool:pytest] testpaths = test @@ -185,30 +184,10 @@ addopts = -vv -[flake8] -max-line-length = 120 -exclude = - .eggs, - .git, - .github, - *_cache, - .vscode, - __pycache__, - annotation_tool, - build, - data, - dist - docs, - venv, - mlruns, - tutorials, - *.egg-info, -# Compatibility with Black (https://black.readthedocs.io/en/stable/guides/using_black_with_other_tools.html) -extend-ignore = E203 - - [mypy] -ignore_missing_imports = True +warn_return_any = true +warn_unused_configs = true +ignore_missing_imports = true plugins = pydantic.mypy From 83206bc1d34b43eaba8f9b19003e4053fc377f93 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Tue, 25 Jan 2022 18:19:37 +0100 Subject: [PATCH 63/76] Wrap pdf conversion utils into safe_import and remove unused quantulum3 import --- haystack/nodes/file_converter/__init__.py | 6 ++++-- haystack/nodes/file_converter/pdf.py | 7 ++++++- haystack/nodes/reader/table.py | 4 +--- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/haystack/nodes/file_converter/__init__.py b/haystack/nodes/file_converter/__init__.py index db1d46f22a..4e92f6672e 100644 --- a/haystack/nodes/file_converter/__init__.py +++ b/haystack/nodes/file_converter/__init__.py @@ -1,10 +1,12 @@ from haystack.nodes.file_converter.base import BaseConverter + from haystack.utils.import_utils import safe_import -ImageToTextConverter = safe_import("haystack.nodes.file_converter.image", "ImageToTextConverter", "ocr") # Has optional dependencies MarkdownConverter = safe_import("haystack.nodes.file_converter.markdown", "MarkdownConverter", "preprocessing") # Has optional dependencies +ImageToTextConverter = safe_import("haystack.nodes.file_converter.image", "ImageToTextConverter", "ocr") # Has optional dependencies +PDFToTextConverter = safe_import("haystack.nodes.file_converter.pdf", "PDFToTextConverter", "ocr") # Has optional dependencies +PDFToTextOCRConverter = safe_import("haystack.nodes.file_converter.pdf", "PDFToTextOCRConverter", "ocr") # Has optional dependencies from haystack.nodes.file_converter.docx import DocxToTextConverter -from haystack.nodes.file_converter.pdf import PDFToTextConverter, PDFToTextOCRConverter from haystack.nodes.file_converter.tika import TikaConverter, TikaXHTMLParser from haystack.nodes.file_converter.txt import TextConverter from haystack.nodes.file_converter.azure import AzureConverter diff --git a/haystack/nodes/file_converter/pdf.py b/haystack/nodes/file_converter/pdf.py index bd2655fb7a..e49b13cfe3 100644 --- a/haystack/nodes/file_converter/pdf.py +++ b/haystack/nodes/file_converter/pdf.py @@ -5,7 +5,12 @@ import tempfile import subprocess from pathlib import Path -from pdf2image import convert_from_path + +try: + from pdf2image import convert_from_path +except (ImportError, ModuleNotFoundError) as ie: + from haystack.utils.import_utils import _optional_component_not_installed + _optional_component_not_installed(__name__, "ocr", ie) from haystack.nodes.file_converter import BaseConverter, ImageToTextConverter diff --git a/haystack/nodes/reader/table.py b/haystack/nodes/reader/table.py index 711e256e1a..97056dba78 100644 --- a/haystack/nodes/reader/table.py +++ b/haystack/nodes/reader/table.py @@ -5,9 +5,7 @@ import torch import numpy as np import pandas as pd -from quantulum3 import parser -from transformers import TapasTokenizer, TapasForQuestionAnswering, AutoTokenizer, AutoModelForSequenceClassification, \ - BatchEncoding, AutoConfig +from transformers import TapasTokenizer, TapasForQuestionAnswering, AutoTokenizer, AutoModelForSequenceClassification, BatchEncoding from haystack.schema import Document, Answer, Span from haystack.nodes.reader.base import BaseReader From a5f603a4036d94a24104a49050b513ebb9e4b21a Mon Sep 17 00:00:00 2001 From: ZanSara Date: Tue, 25 Jan 2022 18:30:05 +0100 Subject: [PATCH 64/76] Update imports in tutorials, to test --- tutorials/Tutorial10_Knowledge_Graph.ipynb | 177 +- tutorials/Tutorial11_Pipelines.ipynb | 14 +- tutorials/Tutorial12_LFQA.ipynb | 293 +- .../Tutorial13_Question_generation.ipynb | 242 +- tutorials/Tutorial14_Query_Classifier.ipynb | 1183 +- tutorials/Tutorial15_TableQA.ipynb | 412 +- ...16_Document_Classifier_at_Index_Time.ipynb | 14 +- tutorials/Tutorial1_Basic_QA_Pipeline.ipynb | 231 +- ...orial2_Finetune_a_model_on_your_data.ipynb | 9 +- ...ic_QA_Pipeline_without_Elasticsearch.ipynb | 271 +- tutorials/Tutorial4_FAQ_style_QA.ipynb | 191 +- tutorials/Tutorial5_Evaluation.ipynb | 30124 ++++++++-------- .../Tutorial6_Better_Retrieval_via_DPR.ipynb | 7 +- tutorials/Tutorial7_RAG_Generator.ipynb | 239 +- tutorials/Tutorial8_Preprocessing.ipynb | 420 +- tutorials/Tutorial9_DPR_training.ipynb | 255 +- 16 files changed, 17188 insertions(+), 16894 deletions(-) diff --git a/tutorials/Tutorial10_Knowledge_Graph.ipynb b/tutorials/Tutorial10_Knowledge_Graph.ipynb index db214de66b..cad71ec4e7 100644 --- a/tutorials/Tutorial10_Knowledge_Graph.ipynb +++ b/tutorials/Tutorial10_Knowledge_Graph.ipynb @@ -2,6 +2,12 @@ "cells": [ { "cell_type": "markdown", + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "# Question Answering on a Knowledge Graph\n", "\n", @@ -10,39 +16,37 @@ "Haystack allows storing and querying knowledge graphs with the help of pre-trained models that translate text queries to SPARQL queries.\n", "This tutorial demonstrates how to load an existing knowledge graph into haystack, load a pre-trained retriever, and execute text queries on the knowledge graph.\n", "The training of models that translate text queries into SPARQL queries is currently not supported." - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } + ] }, { "cell_type": "code", "execution_count": null, - "source": [ - "# Install the latest release of Haystack in your own environment\n", - "#! pip install farm-haystack\n", - "\n", - "# Install the latest master of Haystack\n", - "!pip install grpcio-tools==1.34.1\n", - "!pip install git+https://github.com/deepset-ai/haystack.git\n", - "\n", - "# If you run this notebook on Google Colab, you might need to\n", - "# restart the runtime after installing haystack." - ], - "outputs": [], "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } - } + }, + "outputs": [], + "source": [ + "# Install the latest release of Haystack in your own environment \n", + "#! pip install farm-haystack\n", + "\n", + "# Install the latest master of Haystack\n", + "!pip install --upgrade pip\n", + "!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab]" + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], "source": [ "# Here are some imports that we'll need\n", "\n", @@ -53,30 +57,30 @@ "from haystack.nodes import Text2SparqlRetriever\n", "from haystack.document_stores import GraphDBKnowledgeGraph\n", "from haystack.utils import fetch_archive_from_http" - ], - "outputs": [], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } + ] }, { "cell_type": "markdown", - "source": [ - "## Downloading Knowledge Graph and Model" - ], "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } - } + }, + "source": [ + "## Downloading Knowledge Graph and Model" + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], "source": [ "# Let's first fetch some triples that we want to store in our knowledge graph\n", "# Here: exemplary triples from the wizarding world\n", @@ -88,30 +92,30 @@ "model_dir = \"../saved_models/tutorial10_knowledge_graph/\"\n", "s3_url = \"https://fandom-qa.s3-eu-west-1.amazonaws.com/saved_models/hp_v3.4.zip\"\n", "fetch_archive_from_http(url=s3_url, output_dir=model_dir)" - ], - "outputs": [], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } + ] }, { "cell_type": "markdown", - "source": [ - "## Launching a GraphDB instance" - ], "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } - } + }, + "source": [ + "## Launching a GraphDB instance" + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], "source": [ "# Unfortunately, there seems to be no good way to run GraphDB in colab environments\n", "# In your local environment, you could start a GraphDB server with docker\n", @@ -123,30 +127,30 @@ "if status.returncode:\n", " raise Exception(\"Failed to launch GraphDB. Maybe it is already running or you already have a container with that name that you could start?\")\n", "time.sleep(5)" - ], - "outputs": [], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } + ] }, { "cell_type": "markdown", - "source": [ - "## Creating a new GraphDB repository (also known as index in haystack's document stores)" - ], "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } - } + }, + "source": [ + "## Creating a new GraphDB repository (also known as index in haystack's document stores)" + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], "source": [ "# Initialize a knowledge graph connected to GraphDB and use \"tutorial_10_index\" as the name of the index\n", "kg = GraphDBKnowledgeGraph(index=\"tutorial_10_index\")\n", @@ -161,18 +165,18 @@ "kg.import_from_ttl_file(index=\"tutorial_10_index\", path=Path(graph_dir+\"triples.ttl\"))\n", "print(f\"The last triple stored in the knowledge graph is: {kg.get_all_triples()[-1]}\")\n", "print(f\"There are {len(kg.get_all_triples())} triples stored in the knowledge graph.\")" - ], - "outputs": [], + ] + }, + { + "cell_type": "code", + "execution_count": null, "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } - } - }, - { - "cell_type": "code", - "execution_count": null, + }, + "outputs": [], "source": [ "# Define prefixes for names of resources so that we can use shorter resource names in queries\n", "prefixes = \"\"\"PREFIX rdf: \n", @@ -183,17 +187,16 @@ "\n", "# Load a pre-trained model that translates text queries to SPARQL queries\n", "kgqa_retriever = Text2SparqlRetriever(knowledge_graph=kg, model_name_or_path=model_dir+\"hp_v3.4\")" - ], - "outputs": [], + ] + }, + { + "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { - "name": "#%%\n" + "name": "#%% md\n" } - } - }, - { - "cell_type": "markdown", + }, "source": [ "## Query Execution\n", "\n", @@ -201,17 +204,18 @@ "One limitation though: our pre-trained model can only generate questions about resources it has seen during training.\n", "Otherwise, it cannot translate the name of the resource to the identifier used in the knowledge graph.\n", "E.g. \"Harry\" -> \"hp:Harry_potter\"" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], "source": [ "query = \"In which house is Harry Potter?\"\n", "print(f\"Translating the text query \\\"{query}\\\" to a SPARQL query and executing it on the knowledge graph...\")\n", @@ -231,17 +235,13 @@ "print(result)\n", "# Paraphrased question: What is the patronus of Hermione?\n", "# Correct answer: Otter" - ], - "outputs": [], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } + ] }, { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "## About us\n", "\n", @@ -259,10 +259,7 @@ "[Twitter](https://twitter.com/deepset_ai) | [LinkedIn](https://www.linkedin.com/company/deepset-ai/) | [Slack](https://haystack.deepset.ai/community/join) | [GitHub Discussions](https://github.com/deepset-ai/haystack/discussions) | [Website](https://deepset.ai)\n", "\n", "By the way: [we're hiring!](https://www.deepset.ai/jobs)" - ], - "metadata": { - "collapsed": false - } + ] } ], "metadata": { @@ -286,4 +283,4 @@ }, "nbformat": 4, "nbformat_minor": 2 -} \ No newline at end of file +} diff --git a/tutorials/Tutorial11_Pipelines.ipynb b/tutorials/Tutorial11_Pipelines.ipynb index 076bd410f7..44876f2322 100644 --- a/tutorials/Tutorial11_Pipelines.ipynb +++ b/tutorials/Tutorial11_Pipelines.ipynb @@ -78,16 +78,16 @@ }, "outputs": [], "source": [ + "# Install the latest release of Haystack in your own environment \n", + "#! pip install farm-haystack\n", + "\n", "# Install the latest master of Haystack\n", - "!pip install grpcio-tools==1.34.1\n", - "!pip install --upgrade git+https://github.com/deepset-ai/haystack.git\n", + "!pip install --upgrade pip\n", + "!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab]\n", "\n", - "# Install pygraphviz\n", + "# Install pygraphviz\n", "!apt install libgraphviz-dev\n", - "!pip install pygraphviz\n", - "\n", - "# If you run this notebook on Google Colab, you might need to\n", - "# restart the runtime after installing haystack." + "!pip install pygraphviz" ] }, { diff --git a/tutorials/Tutorial12_LFQA.ipynb b/tutorials/Tutorial12_LFQA.ipynb index 8cc4eaaf51..4c34acdf82 100644 --- a/tutorials/Tutorial12_LFQA.ipynb +++ b/tutorials/Tutorial12_LFQA.ipynb @@ -1,45 +1,21 @@ { - "nbformat": 4, - "nbformat_minor": 2, - "metadata": { - "accelerator": "GPU", - "colab": { - "name": "LFQA_via_Haystack.ipynb", - "provenance": [], - "collapsed_sections": [] - }, - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.9" - } - }, "cells": [ { "cell_type": "markdown", + "metadata": { + "id": "bEH-CRbeA6NU" + }, "source": [ "# Long-Form Question Answering\n", "\n", "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/deepset-ai/haystack/blob/master/tutorials/Tutorial12_LFQA.ipynb)" - ], - "metadata": { - "id": "bEH-CRbeA6NU" - } + ] }, { "cell_type": "markdown", + "metadata": { + "id": "3K27Y5FbA6NV" + }, "source": [ "### Prepare environment\n", "\n", @@ -48,52 +24,53 @@ "**Runtime -> Change Runtime type -> Hardware accelerator -> GPU**\n", "\n", "" - ], - "metadata": { - "id": "3K27Y5FbA6NV" - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "id": "JlZgP8q1A6NW" + }, + "outputs": [], "source": [ "# Make sure you have a GPU running\n", "!nvidia-smi" - ], - "outputs": [], - "metadata": { - "id": "JlZgP8q1A6NW" - } + ] }, { "cell_type": "code", "execution_count": null, - "source": [ - "# Install the latest master of Haystack\n", - "!pip install git+https://github.com/deepset-ai/haystack.git\n", - "\n", - "# If you run this notebook on Google Colab, you might need to\n", - "# restart the runtime after installing haystack." - ], - "outputs": [], "metadata": { "id": "NM36kbRFA6Nc" - } + }, + "outputs": [], + "source": [ + "# Install the latest release of Haystack in your own environment \n", + "#! pip install farm-haystack\n", + "\n", + "# Install the latest master of Haystack\n", + "!pip install --upgrade pip\n", + "!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab]" + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "id": "xmRuhTQ7A6Nh" + }, + "outputs": [], "source": [ "from haystack.utils import convert_files_to_dicts, fetch_archive_from_http, clean_wiki_text\n", "from haystack.nodes import Seq2SeqGenerator" - ], - "outputs": [], - "metadata": { - "id": "xmRuhTQ7A6Nh" - } + ] }, { "cell_type": "markdown", + "metadata": { + "id": "q3dSo7ZtA6Nl" + }, "source": [ "### Document Store\n", "\n", @@ -104,44 +81,48 @@ "The default flavour of FAISSDocumentStore is \"Flat\" but can also be set to \"HNSW\" for\n", "faster search at the expense of some accuracy. Just set the faiss_index_factor_str argument in the constructor.\n", "For more info on which suits your use case: https://github.com/facebookresearch/faiss/wiki/Guidelines-to-choose-an-index" - ], - "metadata": { - "id": "q3dSo7ZtA6Nl" - } + ] }, { "cell_type": "code", "execution_count": null, - "source": [ - "from haystack.document_stores import FAISSDocumentStore\n", - "\n", - "document_store = FAISSDocumentStore(embedding_dim=128, faiss_index_factory_str=\"Flat\")" - ], - "outputs": [], "metadata": { "id": "1cYgDJmrA6Nv", "pycharm": { "name": "#%%\n" } - } + }, + "outputs": [], + "source": [ + "from haystack.document_stores import FAISSDocumentStore\n", + "\n", + "document_store = FAISSDocumentStore(embedding_dim=128, faiss_index_factory_str=\"Flat\")" + ] }, { "cell_type": "markdown", - "source": [ - "### Cleaning & indexing documents\n", - "\n", - "Similarly to the previous tutorials, we download, convert and index some Game of Thrones articles to our DocumentStore" - ], "metadata": { "id": "06LatTJBA6N0", "pycharm": { "name": "#%% md\n" } - } + }, + "source": [ + "### Cleaning & indexing documents\n", + "\n", + "Similarly to the previous tutorials, we download, convert and index some Game of Thrones articles to our DocumentStore" + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "id": "iqKnu6wxA6N1", + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], "source": [ "# Let's first get some files that we want to use\n", "doc_dir = \"data/article_txt_got\"\n", @@ -153,17 +134,13 @@ " \n", "# Now, let's write the dicts containing documents to our DB.\n", "document_store.write_documents(dicts)" - ], - "outputs": [], - "metadata": { - "id": "iqKnu6wxA6N1", - "pycharm": { - "name": "#%%\n" - } - } + ] }, { "cell_type": "markdown", + "metadata": { + "id": "wgjedxx_A6N6" + }, "source": [ "### Initalize Retriever and Reader/Generator\n", "\n", @@ -171,14 +148,18 @@ "\n", "**Here:** We use a `RetribertRetriever` and we invoke `update_embeddings` to index the embeddings of documents in the `FAISSDocumentStore`\n", "\n" - ], - "metadata": { - "id": "wgjedxx_A6N6" - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "id": "kFwiPP60A6N7", + "pycharm": { + "is_executing": true + } + }, + "outputs": [], "source": [ "from haystack.nodes import EmbeddingRetriever\n", "\n", @@ -187,27 +168,33 @@ " model_format=\"retribert\")\n", "\n", "document_store.update_embeddings(retriever)" - ], - "outputs": [], - "metadata": { - "id": "kFwiPP60A6N7", - "pycharm": { - "is_executing": true - } - } + ] }, { "cell_type": "markdown", - "source": [ - "Before we blindly use the `RetribertRetriever` let's empirically test it to make sure a simple search indeed finds the relevant documents." - ], "metadata": { "id": "sMlVEnJ2NkZZ" - } + }, + "source": [ + "Before we blindly use the `RetribertRetriever` let's empirically test it to make sure a simple search indeed finds the relevant documents." + ] }, { "cell_type": "code", "execution_count": 1, + "metadata": { + "id": "qpu-t9rndgpe" + }, + "outputs": [ + { + "ename": "SyntaxError", + "evalue": "EOL while scanning string literal (, line 7)", + "output_type": "error", + "traceback": [ + "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m7\u001b[0m\n\u001b[0;31m params={\"top_k_retriever=5\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m EOL while scanning string literal\n" + ] + } + ], "source": [ "from haystack.utils import print_documents\n", "from haystack.pipelines import DocumentSearchPipeline\n", @@ -218,23 +205,13 @@ " params={\"Retriever\": {\"top_k\": 10}}\n", ")\n", "print_documents(res, max_text_len=512)\n" - ], - "outputs": [ - { - "output_type": "error", - "ename": "SyntaxError", - "evalue": "EOL while scanning string literal (, line 7)", - "traceback": [ - "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m7\u001b[0m\n\u001b[0;31m params={\"top_k_retriever=5\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m EOL while scanning string literal\n" - ] - } - ], - "metadata": { - "id": "qpu-t9rndgpe" - } + ] }, { "cell_type": "markdown", + "metadata": { + "id": "rnVR28OXA6OA" + }, "source": [ "#### Reader/Generator\n", "\n", @@ -242,24 +219,24 @@ "\n", "Here we use a `Seq2SeqGenerator` with the *yjernite/bart_eli5* model (see: https://huggingface.co/yjernite/bart_eli5)\n", "\n" - ], - "metadata": { - "id": "rnVR28OXA6OA" - } + ] }, { "cell_type": "code", "execution_count": null, - "source": [ - "generator = Seq2SeqGenerator(model_name_or_path=\"yjernite/bart_eli5\")" - ], - "outputs": [], "metadata": { "id": "fyIuWVwhA6OB" - } + }, + "outputs": [], + "source": [ + "generator = Seq2SeqGenerator(model_name_or_path=\"yjernite/bart_eli5\")" + ] }, { "cell_type": "markdown", + "metadata": { + "id": "unhLD18yA6OF" + }, "source": [ "### Pipeline\n", "\n", @@ -267,59 +244,59 @@ "Under the hood, `Pipelines` are Directed Acyclic Graphs (DAGs) that you can easily customize for your own use cases.\n", "To speed things up, Haystack also comes with a few predefined Pipelines. One of them is the `GenerativeQAPipeline` that combines a retriever and a reader/generator to answer our questions.\n", "You can learn more about `Pipelines` in the [docs](https://haystack.deepset.ai/docs/latest/pipelinesmd)." - ], - "metadata": { - "id": "unhLD18yA6OF" - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "id": "TssPQyzWA6OG" + }, + "outputs": [], "source": [ "from haystack.pipelines import GenerativeQAPipeline\n", "pipe = GenerativeQAPipeline(generator, retriever)" - ], - "outputs": [], - "metadata": { - "id": "TssPQyzWA6OG" - } + ] }, { "cell_type": "markdown", - "source": [ - "## Voilà! Ask a question!" - ], "metadata": { "id": "bXlBBxKXA6OL" - } + }, + "source": [ + "## Voilà! Ask a question!" + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "id": "Zi97Hif2A6OM" + }, + "outputs": [], "source": [ "pipe.run(\n", " query=\"Why did Arya Stark's character get portrayed in a television adaptation?\",\n", " params={\"Retriever\": {\"top_k\": 1}}\n", ")" - ], - "outputs": [], - "metadata": { - "id": "Zi97Hif2A6OM" - } + ] }, { "cell_type": "code", "execution_count": null, - "source": [ - "pipe.run(query=\"What kind of character does Arya Stark play?\", params={\"Retriever\": {\"top_k\": 1}})" - ], - "outputs": [], "metadata": { "id": "zvHb8SvMblw9" - } + }, + "outputs": [], + "source": [ + "pipe.run(query=\"What kind of character does Arya Stark play?\", params={\"Retriever\": {\"top_k\": 1}})" + ] }, { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "## About us\n", "\n", @@ -337,10 +314,34 @@ "[Twitter](https://twitter.com/deepset_ai) | [LinkedIn](https://www.linkedin.com/company/deepset-ai/) | [Slack](https://haystack.deepset.ai/community/join) | [GitHub Discussions](https://github.com/deepset-ai/haystack/discussions) | [Website](https://deepset.ai)\n", "\n", "By the way: [we're hiring!](https://www.deepset.ai/jobs)" - ], - "metadata": { - "collapsed": false - } + ] } - ] + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "collapsed_sections": [], + "name": "LFQA_via_Haystack.ipynb", + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.9" + } + }, + "nbformat": 4, + "nbformat_minor": 2 } diff --git a/tutorials/Tutorial13_Question_generation.ipynb b/tutorials/Tutorial13_Question_generation.ipynb index 79b7ff731e..e5cf75c237 100644 --- a/tutorials/Tutorial13_Question_generation.ipynb +++ b/tutorials/Tutorial13_Question_generation.ipynb @@ -2,6 +2,12 @@ "cells": [ { "cell_type": "markdown", + "metadata": { + "collapsed": true, + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "# Question Generation\n", "\n", @@ -9,16 +15,16 @@ "\n", "This is a bare bones tutorial showing what is possible with the QuestionGenerator Nodes and Pipelines which automatically\n", "generate questions which the question generation model thinks can be answered by a given document." - ], + ] + }, + { + "cell_type": "markdown", "metadata": { - "collapsed": true, + "id": "yaaKv3_ZN-gb", "pycharm": { "name": "#%% md\n" } - } - }, - { - "cell_type": "markdown", + }, "source": [ "### Prepare environment\n", "\n", @@ -27,37 +33,37 @@ "**Runtime -> Change Runtime type -> Hardware accelerator -> GPU**\n", "\n", "" - ], - "metadata": { - "id": "yaaKv3_ZN-gb", - "pycharm": { - "name": "#%% md\n" - } - } + ] }, { "cell_type": "code", "execution_count": null, - "source": [ - "# Install needed libraries\n", - "\n", - "!pip install grpcio-tools==1.34.1\n", - "!pip install git+https://github.com/deepset-ai/haystack.git\n", - "\n", - "# If you run this notebook on Google Colab, you might need to\n", - "# restart the runtime after installing haystack." - ], - "outputs": [], "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } - } + }, + "outputs": [], + "source": [ + "# Install the latest release of Haystack in your own environment \n", + "#! pip install farm-haystack\n", + "\n", + "# Install the latest master of Haystack\n", + "!pip install --upgrade pip\n", + "!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab]" + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], "source": [ "# Imports needed to run this notebook\n", "\n", @@ -67,45 +73,45 @@ "from haystack.document_stores import ElasticsearchDocumentStore\n", "from haystack.pipelines import QuestionGenerationPipeline, RetrieverQuestionGenerationPipeline, QuestionAnswerGenerationPipeline\n", "from haystack.utils import launch_es, print_questions\n" - ], - "outputs": [], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } + ] }, { "cell_type": "markdown", - "source": [ - "Let's start an Elasticsearch instance with one of the options below:" - ], "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } - } + }, + "source": [ + "Let's start an Elasticsearch instance with one of the options below:" + ] }, { "cell_type": "code", "execution_count": null, - "source": [ - "# Option 1: Start Elasticsearch service via Docker\n", - "launch_es()" - ], - "outputs": [], "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } - } + }, + "outputs": [], + "source": [ + "# Option 1: Start Elasticsearch service via Docker\n", + "launch_es()" + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% \n" + } + }, + "outputs": [], "source": [ "# Option 2: In Colab / No Docker environments: Start Elasticsearch from source\n", "! wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.2-linux-x86_64.tar.gz -q\n", @@ -120,30 +126,30 @@ " )\n", "# wait until ES has started\n", "! sleep 30" - ], - "outputs": [], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% \n" - } - } + ] }, { "cell_type": "markdown", - "source": [ - "Let's initialize some core components" - ], "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } - } + }, + "source": [ + "Let's initialize some core components" + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], "source": [ "text1 = \"Python is an interpreted, high-level, general-purpose programming language. Created by Guido van Rossum and first released in 1991, Python's design philosophy emphasizes code readability with its notable use of significant whitespace.\"\n", "text2 = \"Princess Arya Stark is the third child and second daughter of Lord Eddard Stark and his wife, Lady Catelyn Stark. She is the sister of the incumbent Westerosi monarchs, Sansa, Queen in the North, and Brandon, King of the Andals and the First Men. After narrowly escaping the persecution of House Stark by House Lannister, Arya is trained as a Faceless Man at the House of Black and White in Braavos, using her abilities to avenge her family. Upon her return to Westeros, she exacts retribution for the Red Wedding by exterminating the Frey male line.\"\n", @@ -159,33 +165,33 @@ "\n", "# Initialize Question Generator\n", "question_generator = QuestionGenerator()" - ], - "outputs": [], + ] + }, + { + "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { - "name": "#%%\n" + "name": "#%% md\n" } - } - }, - { - "cell_type": "markdown", + }, "source": [ "## Question Generation Pipeline\n", "\n", "The most basic version of a question generator pipeline takes a document as input and outputs generated questions\n", "which the the document can answer." - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], "source": [ "question_generation_pipeline = QuestionGenerationPipeline(question_generator)\n", "for idx, document in enumerate(document_store):\n", @@ -193,32 +199,32 @@ " print(f\"\\n * Generating questions for document {idx}: {document.content[:100]}...\\n\")\n", " result = question_generation_pipeline.run(documents=[document])\n", " print_questions(result)" - ], - "outputs": [], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } + ] }, { "cell_type": "markdown", - "source": [ - "## Retriever Question Generation Pipeline\n", - "\n", - "This pipeline takes a query as input. It retrieves relevant documents and then generates questions based on these." - ], "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } - } + }, + "source": [ + "## Retriever Question Generation Pipeline\n", + "\n", + "This pipeline takes a query as input. It retrieves relevant documents and then generates questions based on these." + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], "source": [ "retriever = ElasticsearchRetriever(document_store=document_store)\n", "rqg_pipeline = RetrieverQuestionGenerationPipeline(retriever, question_generator)\n", @@ -226,33 +232,34 @@ "print(f\"\\n * Generating questions for documents matching the query 'Arya Stark'\\n\")\n", "result = rqg_pipeline.run(query=\"Arya Stark\")\n", "print_questions(result)" - ], - "outputs": [], + ] + }, + { + "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { - "name": "#%%\n" + "name": "#%% md\n" } - } - }, - { - "cell_type": "markdown", + }, "source": [ "## Question Answer Generation Pipeline\n", "\n", "This pipeline takes a document as input, generates questions on it, and attempts to answer these questions using\n", "a Reader model" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "collapsed": false, + "pycharm": { + "is_executing": true, + "name": "#%%\n" + } + }, + "outputs": [], "source": [ "reader = FARMReader(\"deepset/roberta-base-squad2\")\n", "qag_pipeline = QuestionAnswerGenerationPipeline(question_generator, reader)\n", @@ -261,33 +268,30 @@ " print(f\"\\n * Generating questions and answers for document {idx}: {document.content[:100]}...\\n\")\n", " result = qag_pipeline.run(documents=[document])\n", " print_questions(result)" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n", - "is_executing": true - } - }, - "execution_count": null, - "outputs": [] + ] }, { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "## Translated Question Answer Generation Pipeline\n", "Trained models for Question Answer Generation are not available in many languages other than English. Haystack\n", "provides a workaround for that issue by machine-translating a pipeline's inputs and outputs with the\n", "TranslationWrapperPipeline. The following example generates German questions and answers on a German text\n", "document - by using an English model for Question Answer Generation." - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "# Fill the document store with a German document.\n", @@ -311,16 +315,13 @@ " print(f\"\\n * Generating questions and answers for document {idx}: {document.content[:100]}...\\n\")\n", " result = pipeline_with_translation.run(documents=[document])\n", " print_questions(result)" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } + ] }, { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "## About us\n", "\n", @@ -338,10 +339,7 @@ "[Twitter](https://twitter.com/deepset_ai) | [LinkedIn](https://www.linkedin.com/company/deepset-ai/) | [Slack](https://haystack.deepset.ai/community/join) | [GitHub Discussions](https://github.com/deepset-ai/haystack/discussions) | [Website](https://deepset.ai)\n", "\n", "By the way: [we're hiring!](https://www.deepset.ai/jobs)" - ], - "metadata": { - "collapsed": false - } + ] } ], "metadata": { @@ -365,4 +363,4 @@ }, "nbformat": 4, "nbformat_minor": 2 -} \ No newline at end of file +} diff --git a/tutorials/Tutorial14_Query_Classifier.ipynb b/tutorials/Tutorial14_Query_Classifier.ipynb index 50689a46cd..c464e0d4cd 100644 --- a/tutorials/Tutorial14_Query_Classifier.ipynb +++ b/tutorials/Tutorial14_Query_Classifier.ipynb @@ -2,6 +2,12 @@ "cells": [ { "cell_type": "markdown", + "metadata": { + "id": "O-W2ZQ6CN-gZ", + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "# Query Classifier Tutorial\n", "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/deepset-ai/haystack/blob/master/tutorials/Tutorial14_Query_Classifier.ipynb)\n", @@ -37,16 +43,16 @@ "2. Statement vs Question Query Classifier\n", "\n", "As evident from the name the first classifier detects the keywords search queries and semantic statements like sentences/questions. The second classifier differentiates between question based queries and declarative sentences." - ], + ] + }, + { + "cell_type": "markdown", "metadata": { - "id": "O-W2ZQ6CN-gZ", + "id": "yaaKv3_ZN-gb", "pycharm": { "name": "#%% md\n" } - } - }, - { - "cell_type": "markdown", + }, "source": [ "### Prepare environment\n", "\n", @@ -55,62 +61,37 @@ "**Runtime -> Change Runtime type -> Hardware accelerator -> GPU**\n", "\n", "" - ], - "metadata": { - "id": "yaaKv3_ZN-gb", - "pycharm": { - "name": "#%% md\n" - } - } + ] }, { "cell_type": "markdown", - "source": [ - "These lines are to install Haystack through pip" - ], "metadata": { "id": "TNlqD5HeN-gc", "pycharm": { "name": "#%% md\n" } - } + }, + "source": [ + "These lines are to install Haystack through pip" + ] }, { "cell_type": "code", "execution_count": null, - "source": [ - "# Install the latest release of Haystack in your own environment\n", - "#! pip install farm-haystack\n", - "\n", - "# Install the latest master of Haystack\n", - "!pip install grpcio-tools==1.34.1\n", - "!pip install --upgrade git+https://github.com/deepset-ai/haystack.git\n", - "\n", - "# Install pygraphviz\n", - "!apt install libgraphviz-dev\n", - "!pip install pygraphviz\n", - "\n", - "# If you run this notebook on Google Colab, you might need to\n", - "# restart the runtime after installing haystack.\n", - "\n", - "# In Colab / No Docker environments: Start Elasticsearch from source\n", - "! wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.2-linux-x86_64.tar.gz -q\n", - "! tar -xzf elasticsearch-7.9.2-linux-x86_64.tar.gz\n", - "! chown -R daemon:daemon elasticsearch-7.9.2\n", - "\n", - "import os\n", - "from subprocess import Popen, PIPE, STDOUT\n", - "es_server = Popen(['elasticsearch-7.9.2/bin/elasticsearch'],\n", - " stdout=PIPE, stderr=STDOUT,\n", - " preexec_fn=lambda: os.setuid(1) # as daemon\n", - " )\n", - "# wait until ES has started\n", - "! sleep 30" - ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "CjA5n5lMN-gd", + "outputId": "da688e25-ad0e-41d3-94cf-581858fc05a4", + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ "Collecting grpcio-tools==1.34.1\n", " Downloading grpcio_tools-1.34.1-cp37-cp37m-manylinux2014_x86_64.whl (2.5 MB)\n", @@ -546,189 +527,383 @@ ] } ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "CjA5n5lMN-gd", - "outputId": "da688e25-ad0e-41d3-94cf-581858fc05a4", - "pycharm": { - "name": "#%%\n" - } - } + "source": [ + "# Install the latest release of Haystack in your own environment \n", + "#! pip install farm-haystack\n", + "\n", + "# Install the latest master of Haystack\n", + "!pip install --upgrade pip\n", + "!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab]\n", + "\n", + "# Install pygraphviz\n", + "!apt install libgraphviz-dev\n", + "!pip install pygraphviz\n", + "\n", + "# In Colab / No Docker environments: Start Elasticsearch from source\n", + "! wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.2-linux-x86_64.tar.gz -q\n", + "! tar -xzf elasticsearch-7.9.2-linux-x86_64.tar.gz\n", + "! chown -R daemon:daemon elasticsearch-7.9.2\n", + "\n", + "import os\n", + "from subprocess import Popen, PIPE, STDOUT\n", + "es_server = Popen(['elasticsearch-7.9.2/bin/elasticsearch'],\n", + " stdout=PIPE, stderr=STDOUT,\n", + " preexec_fn=lambda: os.setuid(1) # as daemon\n", + " )\n", + "# wait until ES has started\n", + "! sleep 30" + ] }, { "cell_type": "markdown", - "source": [ - "If running from Colab or a no Docker environment, you will want to start Elasticsearch from source" - ], "metadata": { "id": "fAfd2cOQN-gd", "pycharm": { "name": "#%% md\n" } - } + }, + "source": [ + "If running from Colab or a no Docker environment, you will want to start Elasticsearch from source" + ] }, { "cell_type": "markdown", - "source": [ - "## Initialization\n", - "\n", - "Here are some core imports" - ], "metadata": { "id": "Z7Tu5OQnN-ge", "pycharm": { "name": "#%% md\n" } - } + }, + "source": [ + "## Initialization\n", + "\n", + "Here are some core imports" + ] }, { "cell_type": "markdown", - "source": [ - "Then let's fetch some data (in this case, pages from the Game of Thrones wiki) and prepare it so that it can\n", - "be used indexed into our `DocumentStore`" - ], "metadata": { "id": "Vm9gqTioN-gf", "pycharm": { "name": "#%% md\n" } - } + }, + "source": [ + "Then let's fetch some data (in this case, pages from the Game of Thrones wiki) and prepare it so that it can\n", + "be used indexed into our `DocumentStore`" + ] }, { "cell_type": "code", "execution_count": null, - "source": [ - "from haystack.utils import print_answers, fetch_archive_from_http, convert_files_to_dicts, clean_wiki_text, launch_es\n", - "from haystack.pipelines import Pipeline, RootNode\n", - "from haystack.document_stores import ElasticsearchDocumentStore\n", - "from haystack.nodes import ElasticsearchRetriever, DensePassageRetriever, FARMReader, TransformersQueryClassifier, SklearnQueryClassifier\n", - "\n", - "#Download and prepare data - 517 Wikipedia articles for Game of Thrones\n", - "doc_dir = \"data/article_txt_got\"\n", - "s3_url = \"https://s3.eu-central-1.amazonaws.com/deepset.ai-farm-qa/datasets/documents/wiki_gameofthrones_txt.zip\"\n", - "fetch_archive_from_http(url=s3_url, output_dir=doc_dir)\n", - "\n", - "# convert files to dicts containing documents that can be indexed to our datastore\n", - "got_dicts = convert_files_to_dicts(\n", - " dir_path=doc_dir,\n", - " clean_func=clean_wiki_text,\n", - " split_paragraphs=True\n", - ")\n", - "\n", - "# Initialize DocumentStore and index documents\n", - "launch_es()\n", - "document_store = ElasticsearchDocumentStore()\n", - "document_store.delete_documents()\n", - "document_store.write_documents(got_dicts)\n", - "\n", - "# Initialize Sparse retriever\n", - "es_retriever = ElasticsearchRetriever(document_store=document_store)\n", - "\n", - "# Initialize dense retriever\n", - "dpr_retriever = DensePassageRetriever(document_store)\n", - "document_store.update_embeddings(dpr_retriever, update_existing_embeddings=False)\n", - "\n", - "reader = FARMReader(model_name_or_path=\"deepset/roberta-base-squad2\")" - ], - "outputs": [ - { - "output_type": "stream", - "name": "stderr", - "text": [ - "/usr/local/lib/python3.7/dist-packages/ray/autoscaler/_private/cli_logger.py:61: FutureWarning: Not all Ray CLI dependencies were found. In Ray 1.4+, the Ray CLI, autoscaler, and dashboard will only be usable via `pip install 'ray[default]'`. Please update your install command.\n", - " \"update your install command.\", FutureWarning)\n", - "08/06/2021 15:42:27 - INFO - haystack.preprocessor.utils - Fetching from https://s3.eu-central-1.amazonaws.com/deepset.ai-farm-qa/datasets/documents/wiki_gameofthrones_txt.zip to `data/article_txt_got`\n", - "100%|██████████| 1095120/1095120 [00:00<00:00, 1226455.24B/s]\n", - "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/27_Game_of_Thrones__Season_4__soundtrack_.txt\n", - "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/160_Viserys_Targaryen.txt\n", - "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/195_World_of_A_Song_of_Ice_and_Fire.txt\n", - "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/118_Dark_Wings__Dark_Words.txt\n", - "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/340_Roose_Bolton.txt\n", - "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/75_Blackwater__Game_of_Thrones_.txt\n", - "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/514_Book_of_the_Stranger.txt\n", - "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/23_Game_of_Thrones_Live_Concert_Experience.txt\n", - "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/513_Oathbreaker__Game_of_Thrones_.txt\n", - "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/1_Dragonstone__Game_of_Thrones_episode_.txt\n", - "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/394_Game_of_Thrones__2014_video_game_.txt\n", - "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/39_Renly_Baratheon.txt\n", - "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/145_Elio_M._García_Jr._and_Linda_Antonsson.txt\n", - "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/73_A_Man_Without_Honor.txt\n", - "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/356_Tales_of_Dunk_and_Egg.txt\n", - "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/358_A_Game_of_Thrones__Genesis.txt\n", - "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/446_A_Golden_Crown.txt\n", - "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/74_The_Prince_of_Winterfell.txt\n", - "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/317_The_Broken_Man.txt\n", - "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/24_Game_of_Thrones__Season_1__soundtrack_.txt\n", - "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/212_The_Children__Game_of_Thrones_.txt\n", - "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/129_Second_Sons.txt\n", - "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/359_Kill_the_Boy.txt\n", - "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/11_The_Dragon_and_the_Wolf.txt\n", - "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/12_Fire.txt\n", - "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/21_The_Bear_and_the_Maiden_Fair__song_.txt\n", - "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/453_Game_of_Thrones__2012_video_game_.txt\n", - "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/121_The_Bear_and_the_Maiden_Fair.txt\n", - "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/488_Brienne_of_Tarth.txt\n", - "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/57_The_Laws_of_Gods_and_Men.txt\n", - "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/341_Ned_Stark.txt\n", - "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/97_Tyrion_Lannister.txt\n", - "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/263_Tormund_Giantsbane.txt\n", - "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/232_Tommen_Baratheon.txt\n", - "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/306_The_Dance_of_Dragons.txt\n", - "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/443_The_Kingsroad.txt\n", - "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/360_List_of_Game_of_Thrones_episodes.txt\n", - "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/452_Fire_and_Blood__Game_of_Thrones_.txt\n", - "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/28_Jorah_Mormont.txt\n", - "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/480_Varys.txt\n", - "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/487_Ramsay_Bolton.txt\n", - "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/134_Game_of_Thrones__Season_6__soundtrack_.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/371_Cersei_Lannister.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/217_The_Rogue_Prince.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/475_A_Game_of_Thrones__role-playing_game_.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/477_A_Dance_with_Dragons.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/504_List_of_A_Song_of_Ice_and_Fire_video_games.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/369_Samwell_Tarly.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/330_Oberyn_Martell.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/378_A_Game_of_Thrones__board_game_.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/481_Sandor_Clegane.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/0_Game_of_Thrones__season_8_.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/447_You_Win_or_You_Die.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/469_Outline_of_A_Song_of_Ice_and_Fire_franchise.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/450_Baelor.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/86_Game_of_Thrones__season_4_.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/501_Khal_Drogo.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/54_Two_Swords__Game_of_Thrones_.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/456_Works_based_on_A_Song_of_Ice_and_Fire.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/198_A_Clash_of_Kings.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/40_Stannis_Baratheon.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/102_The_Princess_and_the_Queen.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/424_Night_King.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/87_Valar_Dohaeris.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/37_Joffrey_Baratheon.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/207_Jon_Snow__character_.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/84_List_of_awards_and_nominations_received_by_Game_of_Thrones.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/30_List_of_A_Song_of_Ice_and_Fire_characters.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/194_A_Song_of_Ice_and_Fire.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/402_A_Knight_of_the_Seven_Kingdoms__Game_of_Thrones_.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/151_Ellaria_Sand.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/77_Game_of_Thrones_Ascent.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/25_Game_of_Thrones__Season_2__soundtrack_.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/211_The_Watchers_on_the_Wall.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/445_The_Wolf_and_the_Lion.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/22_The_Rains_of_Castamere__song_.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/119_Walk_of_Punishment.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/508_A_Game_of_Thrones__Second_Edition__card_game_.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/347_Game_of_Thrones__season_2_.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/400_Winterfell__Game_of_Thrones_episode_.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/379_Davos_Seaworth.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/101_Titties_and_Dragons.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/229_Game_of_Thrones.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/135_Game_of_Thrones__Season_7__soundtrack_.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/53_The_Lion_and_the_Rose.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/197_A_Game_of_Thrones.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/213_Valyrian_languages.txt\n", - "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/33_David_Benioff.txt\n", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000, + "referenced_widgets": [ + "e827efc5cd744b55b7d7d702663b8250", + "d7f2e3e918514031acf261116b690c5b", + "e7c2e561bfdf49aa88814126e0471a58", + "3838eb97db0f46a8828473c0e686f5df", + "769ee7fdb9c549e2a8d7f0e0719477eb", + "b64f5d69b6dc4f57894296991279b707", + "f069997c1a114e46947c8a07cebc709b", + "9cf11e92693141e6bb06462209b67b46", + "02b9c7b799a846b6974eac600c0178ba", + "667c145e9bef4f5b99fffda361a2ea47", + "32325d4b51d04b47bde5794b174fbb26", + "2c9841a834ec4e8fbae1990bc2b07a5c", + "216fd635f06847c5a7daf25d543e321b", + "fe18331098014a22aeb390730d35fedb", + "b8dddaca70054b5cab955e0dab9d6d0a", + "490edef475d646a2ba12b429c1244de4", + "3817606563914b0ca26620da959a1fc4", + "cbe8cc2b1394456bac529507081a2263", + "a2a0402f1a63407190cf2a132a0bc2b6", + "6bf5fe6ae4bf494e9c33e0940da62951", + "9e5b65de890b446bba6ea3c24fef8588", + "d6ec9612d02c42e7bb42033d727fc03c", + "ef99a76fdfbc48669ed4d18e118bfa42", + "4de441f28ec040e995c285b1e3fcadb9", + "a8f5a18af7cf410bb065eefdb887cb92", + "9a4e9075d67b4bbaab47ff97e8ea539c", + "ff4b4d0b7fc14f05971ad09a603e55d4", + "1a9b1a31f910412bb69e4cb59170fc25", + "b2249a087bd343999a5319152d7e0548", + "1618f5a1981c4d18a67be3965745aa49", + "790f7b4b1d3d4d8e84a3693f3c8b9b85", + "a226c1daa4454c55a03b1edf595a33ae", + "6de6dbe386d447f588c982d3501bd1c1", + "dc143ea6a5594b769b3a4880d83f0e1b", + "b637557712f44674abc5e5ebd32d87cf", + "aad1b320c9fd451ab081f5c238bb91c0", + "99ae91dc416b4108b4282395f403b39a", + "68b86c5c4be34554975a77a26ea6319b", + "e80fc1c849354ee89fa0d51f7de4c78e", + "b4eb040d5e224e619414a4d4740badc5", + "30413c25f3774ef6860be4230804e31c", + "5f4b28761f204e8eaa90f22a9e7677c7", + "ec237876a762449394f0930aa6690fcb", + "983cde7e80fd4eebb0b01f444aa16579", + "4d37fd7e90a64ff68870b86334cfad7e", + "394b26eab89b410db98a07cdf6609ead", + "b5c93207802346b69b7d9178b4d67b2a", + "027441d4e1f14648919f54ba9d9a5204", + "b27ce7d9f5e74ef895b809e519673c60", + "37fcf93794cb46d491d55100a6d8fee8", + "f46b46bdc75641b6b3c8d23b939bc797", + "de371bd60c64464284f47eeef0a07bed", + "04a81edc284a4378bc841f72f729305c", + "a86a02ebcb184749bd27590067ef71bc", + "7ea5f945a5aa4eb4adc96e9f986a0d71", + "56a2181e987a4227a69038267613ffc2", + "3308704acebe439188b70c6fd238ae66", + "6b97bc4ee3924dfdbe72738d137c967e", + "c05f2ee787944a9e931f74de9831599c", + "14cd6229f5e043f8862c6fe1773df4e0", + "7541bd7ec86f4c028405e6e9ca6f4d06", + "853a80d353144e8d9cd6ce8788c7a9bb", + "f825adffa7544868a2ae665ab6434d5d", + "d4e2dd1fa16b40c3bb115ecccba69a03", + "15e1e4e3276a467c88777aae68cd693c", + "1c6f0c68669a4c34b74fcb49cdb4aa07", + "5212b2c80437450fa2a7aa49f65a23f4", + "a702fc844c5b40e2986c62da5fe92c9b", + "24a7839d950740c9958e2d88b7ad829a", + "c6d3d0bb414c4aa5ae20f006cce90f33", + "b14faabb0d6d4d30bfa8efc097e5aa23", + "ba340a739c554989849060bd29eadbc9", + "27a54e55bff94428b7c19fc35b125047", + "56660d608cbe451e9ec0701c1941a7ab", + "8dc7877695b74610a849b160008ccbab", + "ca54b4744f244922bc75447d707685e6", + "7a26b17f3b9d45a4a99b8494fc5de6dd", + "9d36e8f0ab3e4a18b519e5dc04a51061", + "5b2cc531f1e44c318488c993024a94b7", + "463ff451eab94f509f4ba6ce4e1ae1ef", + "7e59ccb05ef3494eb8ad400dd8f606e0", + "cbfecc60258e428eb51652dd36655511", + "42819b5d13df44b392be19add1bdd122", + "6aa855ad681f44dabb024d4c4d34490b", + "bc806490fb8148ca9525c3b685a377c2", + "91e3d408502b480d818df1fdbbd88afb", + "1fcbba1dc2924f0489dd6cf3f6622915", + "41635bd3da9c4c1da50fe86a01da25bf", + "3fa3082333c344d1be66344a7d0ff542", + "a2905ce60084476da1c96d46a63f138d", + "4de5d23d236646629ee2cabf08f4621b", + "2d5ce6e282b14019ab5aece4ceb4e643", + "f028104b8e9548f0a7e53f1edcd63c4e", + "4cea79778d26402dad42393c2bebfe10", + "8f52bb4d56dc4084be52840e97b22790", + "b0b7c0653441453db63d253b839144f6", + "6445465e075f4254b18874e0f7353885", + "89a23afc2b704d83927acc1835361e73", + "051606acbe974583b33f5e50402c72de", + "e0599025f4534a89932b42945c3c1e21", + "a1ce792f467c47acb4803b4c727b80a1", + "09dd2dd5a35c4f418ea1ef010e6831d2", + "7a408f3b5c644f42b88574ccffc2d7bb", + "b780dea3ed6e4057a09e432a067596fb", + "1d14929d95684c05a66c958fd8a5b89d", + "11d32ef999d94db187dab41a1bbf7723", + "3d71e9d26ebb41d980819d608ddb115a", + "a53314a74ba14e9ba7fc81a4aa39070d", + "96b976f448be47d892dc1923c51c470e", + "c151c810fc984ff79aa85178d54c3b6a", + "5fa38582019043d084a6ecb2f2fea016", + "1c10236190604ad49fa72d4d851ac316", + "2a71821c410d4cb1afaab09574982b02", + "66f26219cc6248288423c2e7ba5304c4", + "33143aed23264e82a7750d5fbc8e22a7", + "112a6f4e707a4accb18b649f671634cf", + "9aa65bb178af419bbdc15d19fa572e62", + "0cab5420cdb144e9aa3dfa907e1ed729", + "28b880a5c9864a63b2d557a1ec9458a5", + "6e5b975419994befb261100d7719e991", + "0f7ab0ce7ee24838a6cbffac4cdb3040", + "8412dd46b64444b685563081f2c3c5c2", + "ba67c6d2324d440abbd25de05161b381", + "84cea882fd1e431b9c93631ee3f4ed17", + "cea38043b06d419fa63695a316233088", + "caa201fa5bc74823bcdea73599130499", + "f53911fd1c9c47c69e69206c3169158a", + "33b89e0dfe124edaa5c90ada36a4c7a8", + "b7e2a9e5035544ba94bdeb3c56b19174", + "7b4fa73603264880ad4046d5791c76fa", + "2d476cc7b1ce45ebb82f9cf5a41d4024", + "4e35f1931b50406393ffce1c3b622986", + "814e632c690e4745a93fdef461fd48b6", + "56b67d80ef05478da31ef471eb7de385", + "1bc6ff28903f4b2e9aefb6275aa047be", + "77265036d6824670b9fc258192deac11", + "3f0c353869fe42828794cd8a14acb39e", + "409718ada73943e69bee6f73e0db5b94", + "e1e04bcfd0754a3cb1ea6ac0d8ba0efa", + "fc67d27eeac0448ba310e3fb991b9b5a", + "39547579c0b443e696121427bd3279dd", + "e7227229d21d4d7292733f373fa7f9db", + "adbe499b09574ba6853581f3f6cc21d5", + "f29213e62e9e4b33ac72454b6f407073", + "46802db8abd042fb90c811cd2ea4bb5b", + "209eb3ac83504ba3920b13e5aec28da6", + "ebd1f7d8259549b1b287cd624ff5b75d", + "e7a21b2d87c942858f1b956f9af2b06e", + "fb31d79ac3f3467d986a97bd237f26be", + "0ca3a7dc4e804cecb8c719bfef9c055b", + "399fa7054fc74dfea45d22ee20765b30", + "26be6fe237fd4b8c8d8fac787d72e823", + "52de26e5a87e44debbcf00c0c4073dca", + "d03e8b5ed27c4c97a8a25bdfa82a752e", + "f27ffc683e714a28a0842a730e736716", + "b5efbf17543a4db7a3b01ee0e28743c9", + "cddcc8af67ae4c539dec147436d4628b", + "892b9273604c4440ad179ed4a8dfc5e1", + "96f73362e4694c24acb058e1b7d69a14", + "671cf89ffa2741cb9c1ffb898199d49b", + "61e9bdf3a077438cb26f4bff9265ee4c", + "76e76e39d6d64438a24919e973e0053c", + "83dad7ffdd8747ddbb3942bb6c58445c", + "d377b1dec2a84337bc1644ff51464e4d", + "038267d5661343deb4be8a3c6d16a221", + "443739aca635464ea01e08e800dd40aa", + "484eafd3786b43219fd4103aba12c2e9", + "c87dcd38005944f2affcacb28ab8dd89", + "f591cb897745493182b1854d3be5e546", + "580a190f9eee4b0e8d3008e529535aa7", + "3fc82442548e42e887ba9ad11dfd5d77", + "c7ca455474c04af18ade2d3fd906727e", + "d31dc63868a4475fbcfc7406723ad359", + "2ed78454dfa347aaa0ab9be6be341264", + "0ace7e3fad4b430c9fb09d6736ea9ac3", + "b6c733e5327a40259700554efe576527", + "1b81083a5e9644c08eb711693d480ed2", + "ac67a20654414b0ea3b36acdc6e86171", + "0122a517adf14859b9a594f3da1a0688", + "518539c52ba54f1f9d59ec0dfdca132d", + "e058a81bbdc941fd9932f5c04a9cdc23", + "7389aaaf51f349c5aa745c29c08dcc66", + "f374072420b947c3a5a9f4d3849d3334", + "a762c482b84540beb350901ac7f0f46b", + "f1238867e4e249c1a0daa553d459e98b", + "00aaf9b5872940b8b055dbb27caccda6", + "4bbce51f2459479f8a95064c17b73e2c", + "3abc298844944bcca8615925d4cf36a5", + "854d7275b81c443cb997a975164a3b99", + "01781b50453c401785af24b5ea608440", + "6476b24e759f4ae4ba594ec63190506c", + "90755e4609454529b3246d1d5573cf26", + "6d34f638e428428f8463026b19172847", + "715a7b7b1c8444b5abc1c779f8f78cd1", + "9f8dbb42b20a43799c4c5590be22cb30", + "c3ca769e981a4e41929246c2b22bfb7c", + "3ff47ea8d9a641cd9cfece170597dd51", + "30a569a443254abebf4cb863c80c8253" + ] + }, + "id": "Ig7dgfdHN-gg", + "outputId": "62383a2b-d653-4f9f-e3a9-4b2cb90ee007", + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.7/dist-packages/ray/autoscaler/_private/cli_logger.py:61: FutureWarning: Not all Ray CLI dependencies were found. In Ray 1.4+, the Ray CLI, autoscaler, and dashboard will only be usable via `pip install 'ray[default]'`. Please update your install command.\n", + " \"update your install command.\", FutureWarning)\n", + "08/06/2021 15:42:27 - INFO - haystack.preprocessor.utils - Fetching from https://s3.eu-central-1.amazonaws.com/deepset.ai-farm-qa/datasets/documents/wiki_gameofthrones_txt.zip to `data/article_txt_got`\n", + "100%|██████████| 1095120/1095120 [00:00<00:00, 1226455.24B/s]\n", + "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/27_Game_of_Thrones__Season_4__soundtrack_.txt\n", + "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/160_Viserys_Targaryen.txt\n", + "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/195_World_of_A_Song_of_Ice_and_Fire.txt\n", + "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/118_Dark_Wings__Dark_Words.txt\n", + "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/340_Roose_Bolton.txt\n", + "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/75_Blackwater__Game_of_Thrones_.txt\n", + "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/514_Book_of_the_Stranger.txt\n", + "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/23_Game_of_Thrones_Live_Concert_Experience.txt\n", + "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/513_Oathbreaker__Game_of_Thrones_.txt\n", + "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/1_Dragonstone__Game_of_Thrones_episode_.txt\n", + "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/394_Game_of_Thrones__2014_video_game_.txt\n", + "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/39_Renly_Baratheon.txt\n", + "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/145_Elio_M._García_Jr._and_Linda_Antonsson.txt\n", + "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/73_A_Man_Without_Honor.txt\n", + "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/356_Tales_of_Dunk_and_Egg.txt\n", + "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/358_A_Game_of_Thrones__Genesis.txt\n", + "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/446_A_Golden_Crown.txt\n", + "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/74_The_Prince_of_Winterfell.txt\n", + "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/317_The_Broken_Man.txt\n", + "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/24_Game_of_Thrones__Season_1__soundtrack_.txt\n", + "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/212_The_Children__Game_of_Thrones_.txt\n", + "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/129_Second_Sons.txt\n", + "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/359_Kill_the_Boy.txt\n", + "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/11_The_Dragon_and_the_Wolf.txt\n", + "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/12_Fire.txt\n", + "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/21_The_Bear_and_the_Maiden_Fair__song_.txt\n", + "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/453_Game_of_Thrones__2012_video_game_.txt\n", + "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/121_The_Bear_and_the_Maiden_Fair.txt\n", + "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/488_Brienne_of_Tarth.txt\n", + "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/57_The_Laws_of_Gods_and_Men.txt\n", + "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/341_Ned_Stark.txt\n", + "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/97_Tyrion_Lannister.txt\n", + "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/263_Tormund_Giantsbane.txt\n", + "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/232_Tommen_Baratheon.txt\n", + "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/306_The_Dance_of_Dragons.txt\n", + "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/443_The_Kingsroad.txt\n", + "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/360_List_of_Game_of_Thrones_episodes.txt\n", + "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/452_Fire_and_Blood__Game_of_Thrones_.txt\n", + "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/28_Jorah_Mormont.txt\n", + "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/480_Varys.txt\n", + "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/487_Ramsay_Bolton.txt\n", + "08/06/2021 15:42:28 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/134_Game_of_Thrones__Season_6__soundtrack_.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/371_Cersei_Lannister.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/217_The_Rogue_Prince.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/475_A_Game_of_Thrones__role-playing_game_.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/477_A_Dance_with_Dragons.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/504_List_of_A_Song_of_Ice_and_Fire_video_games.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/369_Samwell_Tarly.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/330_Oberyn_Martell.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/378_A_Game_of_Thrones__board_game_.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/481_Sandor_Clegane.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/0_Game_of_Thrones__season_8_.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/447_You_Win_or_You_Die.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/469_Outline_of_A_Song_of_Ice_and_Fire_franchise.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/450_Baelor.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/86_Game_of_Thrones__season_4_.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/501_Khal_Drogo.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/54_Two_Swords__Game_of_Thrones_.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/456_Works_based_on_A_Song_of_Ice_and_Fire.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/198_A_Clash_of_Kings.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/40_Stannis_Baratheon.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/102_The_Princess_and_the_Queen.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/424_Night_King.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/87_Valar_Dohaeris.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/37_Joffrey_Baratheon.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/207_Jon_Snow__character_.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/84_List_of_awards_and_nominations_received_by_Game_of_Thrones.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/30_List_of_A_Song_of_Ice_and_Fire_characters.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/194_A_Song_of_Ice_and_Fire.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/402_A_Knight_of_the_Seven_Kingdoms__Game_of_Thrones_.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/151_Ellaria_Sand.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/77_Game_of_Thrones_Ascent.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/25_Game_of_Thrones__Season_2__soundtrack_.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/211_The_Watchers_on_the_Wall.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/445_The_Wolf_and_the_Lion.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/22_The_Rains_of_Castamere__song_.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/119_Walk_of_Punishment.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/508_A_Game_of_Thrones__Second_Edition__card_game_.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/347_Game_of_Thrones__season_2_.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/400_Winterfell__Game_of_Thrones_episode_.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/379_Davos_Seaworth.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/101_Titties_and_Dragons.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/229_Game_of_Thrones.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/135_Game_of_Thrones__Season_7__soundtrack_.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/53_The_Lion_and_the_Rose.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/197_A_Game_of_Thrones.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/213_Valyrian_languages.txt\n", + "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/33_David_Benioff.txt\n", "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/449_The_Pointy_End.txt\n", "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/512_Home__Game_of_Thrones_.txt\n", "08/06/2021 15:42:29 - INFO - haystack.preprocessor.utils - Converting data/article_txt_got/199_A_Storm_of_Swords.txt\n", @@ -847,7 +1022,6 @@ ] }, { - "output_type": "display_data", "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "e827efc5cd744b55b7d7d702663b8250", @@ -860,18 +1034,18 @@ }, "metadata": { "tags": [] - } + }, + "output_type": "display_data" }, { - "output_type": "stream", "name": "stderr", + "output_type": "stream", "text": [ "08/06/2021 15:42:39 - INFO - filelock - Lock 140420549184400 released on /root/.cache/huggingface/transformers/4ad08b5f983c1384baaf257d8edf51a7a3961fd8c75a1778ac604e3c0b564dd9.d789d64ebfe299b0e416afc4a169632f903f693095b4629a7ea271d5a0cf2c99.lock\n", "08/06/2021 15:42:40 - INFO - filelock - Lock 140420646316304 acquired on /root/.cache/huggingface/transformers/b305bc9085b3d0ce33551c251b75c11b6c6df1d4d51e5d3439d01cf4bb1abc9d.7f2721073f19841be16f41b0a70b600ca6b880c8f3df6f3535cbc704371bdfa4.lock\n" ] }, { - "output_type": "display_data", "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "2c9841a834ec4e8fbae1990bc2b07a5c", @@ -884,18 +1058,18 @@ }, "metadata": { "tags": [] - } + }, + "output_type": "display_data" }, { - "output_type": "stream", "name": "stderr", + "output_type": "stream", "text": [ "08/06/2021 15:42:40 - INFO - filelock - Lock 140420646316304 released on /root/.cache/huggingface/transformers/b305bc9085b3d0ce33551c251b75c11b6c6df1d4d51e5d3439d01cf4bb1abc9d.7f2721073f19841be16f41b0a70b600ca6b880c8f3df6f3535cbc704371bdfa4.lock\n", "08/06/2021 15:42:41 - INFO - filelock - Lock 140420646314128 acquired on /root/.cache/huggingface/transformers/d5b5f07ee846d5baa7142e121b6ee77d11ac68bd5d4541faab38a1ea76c2954a.20430bd8e10ef77a7d2977accefe796051e01bc2fc4aa146bc862997a1a15e79.lock\n" ] }, { - "output_type": "display_data", "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "ef99a76fdfbc48669ed4d18e118bfa42", @@ -908,18 +1082,18 @@ }, "metadata": { "tags": [] - } + }, + "output_type": "display_data" }, { - "output_type": "stream", "name": "stderr", + "output_type": "stream", "text": [ "08/06/2021 15:42:41 - INFO - filelock - Lock 140420646314128 released on /root/.cache/huggingface/transformers/d5b5f07ee846d5baa7142e121b6ee77d11ac68bd5d4541faab38a1ea76c2954a.20430bd8e10ef77a7d2977accefe796051e01bc2fc4aa146bc862997a1a15e79.lock\n", "08/06/2021 15:42:42 - INFO - filelock - Lock 140420549303760 acquired on /root/.cache/huggingface/transformers/52774638a790c9ebc5ce11005b260f79cd4cc389abdab9eaa31e8f09d15b4f46.13b559f49587470ab6d85a7dde13174670a0b61c1b942d1489c96023f5d03772.lock\n" ] }, { - "output_type": "display_data", "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "dc143ea6a5594b769b3a4880d83f0e1b", @@ -932,18 +1106,18 @@ }, "metadata": { "tags": [] - } + }, + "output_type": "display_data" }, { - "output_type": "stream", "name": "stderr", + "output_type": "stream", "text": [ "08/06/2021 15:42:42 - INFO - filelock - Lock 140420549303760 released on /root/.cache/huggingface/transformers/52774638a790c9ebc5ce11005b260f79cd4cc389abdab9eaa31e8f09d15b4f46.13b559f49587470ab6d85a7dde13174670a0b61c1b942d1489c96023f5d03772.lock\n", "08/06/2021 15:42:43 - INFO - filelock - Lock 140420532496144 acquired on /root/.cache/huggingface/transformers/41dac75f5df9070331cb0e4bf318c9fdeaef38d9ffd8ca80993c7db830d0c674.446ee898f4788c3ee90f8e7ee5a50281905f509e698f76dc0b583eb74ef973bd.lock\n" ] }, { - "output_type": "display_data", "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "4d37fd7e90a64ff68870b86334cfad7e", @@ -956,18 +1130,18 @@ }, "metadata": { "tags": [] - } + }, + "output_type": "display_data" }, { - "output_type": "stream", "name": "stderr", + "output_type": "stream", "text": [ "08/06/2021 15:42:52 - INFO - filelock - Lock 140420532496144 released on /root/.cache/huggingface/transformers/41dac75f5df9070331cb0e4bf318c9fdeaef38d9ffd8ca80993c7db830d0c674.446ee898f4788c3ee90f8e7ee5a50281905f509e698f76dc0b583eb74ef973bd.lock\n", "08/06/2021 15:42:54 - INFO - filelock - Lock 140420545513488 acquired on /root/.cache/huggingface/transformers/deacb2c219c1bfe83909173f286b60d7cbfd37fc73dc8de723805ca82cabd183.d789d64ebfe299b0e416afc4a169632f903f693095b4629a7ea271d5a0cf2c99.lock\n" ] }, { - "output_type": "display_data", "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "56a2181e987a4227a69038267613ffc2", @@ -980,18 +1154,18 @@ }, "metadata": { "tags": [] - } + }, + "output_type": "display_data" }, { - "output_type": "stream", "name": "stderr", + "output_type": "stream", "text": [ "08/06/2021 15:42:54 - INFO - filelock - Lock 140420545513488 released on /root/.cache/huggingface/transformers/deacb2c219c1bfe83909173f286b60d7cbfd37fc73dc8de723805ca82cabd183.d789d64ebfe299b0e416afc4a169632f903f693095b4629a7ea271d5a0cf2c99.lock\n", "08/06/2021 15:42:55 - INFO - filelock - Lock 140420551255952 acquired on /root/.cache/huggingface/transformers/9a42d18175a45f8dcfd587d7056cbe397e0fe49828bcc543bc3f5b4d2862f7e5.7f2721073f19841be16f41b0a70b600ca6b880c8f3df6f3535cbc704371bdfa4.lock\n" ] }, { - "output_type": "display_data", "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "5212b2c80437450fa2a7aa49f65a23f4", @@ -1004,18 +1178,18 @@ }, "metadata": { "tags": [] - } + }, + "output_type": "display_data" }, { - "output_type": "stream", "name": "stderr", + "output_type": "stream", "text": [ "08/06/2021 15:42:55 - INFO - filelock - Lock 140420551255952 released on /root/.cache/huggingface/transformers/9a42d18175a45f8dcfd587d7056cbe397e0fe49828bcc543bc3f5b4d2862f7e5.7f2721073f19841be16f41b0a70b600ca6b880c8f3df6f3535cbc704371bdfa4.lock\n", "08/06/2021 15:42:56 - INFO - filelock - Lock 140420549404048 acquired on /root/.cache/huggingface/transformers/70b0d7ed89bb3511a323f99b7cfa4a3e0c35754fda6a3ac74c3458ca8ffb5764.20430bd8e10ef77a7d2977accefe796051e01bc2fc4aa146bc862997a1a15e79.lock\n" ] }, { - "output_type": "display_data", "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "9d36e8f0ab3e4a18b519e5dc04a51061", @@ -1028,18 +1202,18 @@ }, "metadata": { "tags": [] - } + }, + "output_type": "display_data" }, { - "output_type": "stream", "name": "stderr", + "output_type": "stream", "text": [ "08/06/2021 15:42:56 - INFO - filelock - Lock 140420549404048 released on /root/.cache/huggingface/transformers/70b0d7ed89bb3511a323f99b7cfa4a3e0c35754fda6a3ac74c3458ca8ffb5764.20430bd8e10ef77a7d2977accefe796051e01bc2fc4aa146bc862997a1a15e79.lock\n", "08/06/2021 15:42:57 - INFO - filelock - Lock 140420549184400 acquired on /root/.cache/huggingface/transformers/f31ea67434695abc6c4fbe109214416d8b48a44f2fe5a0617e7faa3d6a4f8d05.be8dbf4cc0650b9c5997b3b3bc47d0d6c20749c3871e9285d3b624cd75dd9ee6.lock\n" ] }, { - "output_type": "display_data", "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "3fa3082333c344d1be66344a7d0ff542", @@ -1052,18 +1226,18 @@ }, "metadata": { "tags": [] - } + }, + "output_type": "display_data" }, { - "output_type": "stream", "name": "stderr", + "output_type": "stream", "text": [ "08/06/2021 15:42:57 - INFO - filelock - Lock 140420549184400 released on /root/.cache/huggingface/transformers/f31ea67434695abc6c4fbe109214416d8b48a44f2fe5a0617e7faa3d6a4f8d05.be8dbf4cc0650b9c5997b3b3bc47d0d6c20749c3871e9285d3b624cd75dd9ee6.lock\n", "08/06/2021 15:42:58 - INFO - filelock - Lock 140420549435984 acquired on /root/.cache/huggingface/transformers/2623d56adfe8cc7bf9275b0c620a0e271ee4004c335173bde56310dc8ea99d4f.714228ba33c6248205269978fd6d0ca0ef96508cbd4a11d894882e71d45fad7c.lock\n" ] }, { - "output_type": "display_data", "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "e0599025f4534a89932b42945c3c1e21", @@ -1076,11 +1250,12 @@ }, "metadata": { "tags": [] - } + }, + "output_type": "display_data" }, { - "output_type": "stream", "name": "stderr", + "output_type": "stream", "text": [ "08/06/2021 15:43:08 - INFO - filelock - Lock 140420549435984 released on /root/.cache/huggingface/transformers/2623d56adfe8cc7bf9275b0c620a0e271ee4004c335173bde56310dc8ea99d4f.714228ba33c6248205269978fd6d0ca0ef96508cbd4a11d894882e71d45fad7c.lock\n", "08/06/2021 15:43:17 - INFO - elasticsearch - POST http://localhost:9200/document/_count [status:200 request:0.032s]\n", @@ -1088,7 +1263,6 @@ ] }, { - "output_type": "display_data", "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "5fa38582019043d084a6ecb2f2fea016", @@ -1101,10 +1275,10 @@ }, "metadata": { "tags": [] - } + }, + "output_type": "display_data" }, { - "output_type": "display_data", "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "8412dd46b64444b685563081f2c3c5c2", @@ -1117,11 +1291,12 @@ }, "metadata": { "tags": [] - } + }, + "output_type": "display_data" }, { - "output_type": "stream", "name": "stderr", + "output_type": "stream", "text": [ "08/06/2021 15:44:10 - INFO - farm.utils - Using device: CUDA \n", "08/06/2021 15:44:10 - INFO - farm.utils - Number of GPUs: 1\n", @@ -1131,7 +1306,6 @@ ] }, { - "output_type": "display_data", "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "814e632c690e4745a93fdef461fd48b6", @@ -1144,18 +1318,18 @@ }, "metadata": { "tags": [] - } + }, + "output_type": "display_data" }, { - "output_type": "stream", "name": "stderr", + "output_type": "stream", "text": [ "08/06/2021 15:44:10 - INFO - filelock - Lock 140420529975184 released on /root/.cache/huggingface/transformers/c40d0abb589629c48763f271020d0b1f602f5208c432c0874d420491ed37e28b.122ed338b3591c07dba452777c59ff52330edb340d3d56d67aa9117ad9905673.lock\n", "08/06/2021 15:44:11 - INFO - filelock - Lock 140417512571920 acquired on /root/.cache/huggingface/transformers/eac3273a8097dda671e3bea1db32c616e74f36a306c65b4858171c98d6db83e9.084aa7284f3a51fa1c8f0641aa04c47d366fbd18711f29d0a995693cfdbc9c9e.lock\n" ] }, { - "output_type": "display_data", "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "f29213e62e9e4b33ac72454b6f407073", @@ -1168,11 +1342,12 @@ }, "metadata": { "tags": [] - } + }, + "output_type": "display_data" }, { - "output_type": "stream", "name": "stderr", + "output_type": "stream", "text": [ "08/06/2021 15:44:23 - INFO - filelock - Lock 140417512571920 released on /root/.cache/huggingface/transformers/eac3273a8097dda671e3bea1db32c616e74f36a306c65b4858171c98d6db83e9.084aa7284f3a51fa1c8f0641aa04c47d366fbd18711f29d0a995693cfdbc9c9e.lock\n", "Some weights of the model checkpoint at deepset/roberta-base-squad2 were not used when initializing RobertaModel: ['qa_outputs.weight', 'qa_outputs.bias']\n", @@ -1185,7 +1360,6 @@ ] }, { - "output_type": "display_data", "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "f27ffc683e714a28a0842a730e736716", @@ -1198,18 +1372,18 @@ }, "metadata": { "tags": [] - } + }, + "output_type": "display_data" }, { - "output_type": "stream", "name": "stderr", + "output_type": "stream", "text": [ "08/06/2021 15:44:28 - INFO - filelock - Lock 140417504669200 released on /root/.cache/huggingface/transformers/81c80edb4c6cefa5cae64ccfdb34b3b309ecaf60da99da7cd1c17e24a5d36eb5.647b4548b6d9ea817e82e7a9231a320231a1c9ea24053cc9e758f3fe68216f05.lock\n", "08/06/2021 15:44:29 - INFO - filelock - Lock 140417504268880 acquired on /root/.cache/huggingface/transformers/b87d46371731376b11768b7839b1a5938a4f77d6bd2d9b683f167df0026af432.5d12962c5ee615a4c803841266e9c3be9a691a924f72d395d3a6c6c81157788b.lock\n" ] }, { - "output_type": "display_data", "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "443739aca635464ea01e08e800dd40aa", @@ -1222,18 +1396,18 @@ }, "metadata": { "tags": [] - } + }, + "output_type": "display_data" }, { - "output_type": "stream", "name": "stderr", + "output_type": "stream", "text": [ "08/06/2021 15:44:29 - INFO - filelock - Lock 140417504268880 released on /root/.cache/huggingface/transformers/b87d46371731376b11768b7839b1a5938a4f77d6bd2d9b683f167df0026af432.5d12962c5ee615a4c803841266e9c3be9a691a924f72d395d3a6c6c81157788b.lock\n", "08/06/2021 15:44:30 - INFO - filelock - Lock 140420403278096 acquired on /root/.cache/huggingface/transformers/c9d2c178fac8d40234baa1833a3b1903d393729bf93ea34da247c07db24900d0.cb2244924ab24d706b02fd7fcedaea4531566537687a539ebb94db511fd122a0.lock\n" ] }, { - "output_type": "display_data", "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "1b81083a5e9644c08eb711693d480ed2", @@ -1246,18 +1420,18 @@ }, "metadata": { "tags": [] - } + }, + "output_type": "display_data" }, { - "output_type": "stream", "name": "stderr", + "output_type": "stream", "text": [ "08/06/2021 15:44:31 - INFO - filelock - Lock 140420403278096 released on /root/.cache/huggingface/transformers/c9d2c178fac8d40234baa1833a3b1903d393729bf93ea34da247c07db24900d0.cb2244924ab24d706b02fd7fcedaea4531566537687a539ebb94db511fd122a0.lock\n", "08/06/2021 15:44:31 - INFO - filelock - Lock 140420403278096 acquired on /root/.cache/huggingface/transformers/e8a600814b69e3ee74bb4a7398cc6fef9812475010f16a6c9f151b2c2772b089.451739a2f3b82c3375da0dfc6af295bedc4567373b171f514dd09a4cc4b31513.lock\n" ] }, { - "output_type": "display_data", "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "3abc298844944bcca8615925d4cf36a5", @@ -1270,11 +1444,12 @@ }, "metadata": { "tags": [] - } + }, + "output_type": "display_data" }, { - "output_type": "stream", "name": "stderr", + "output_type": "stream", "text": [ "08/06/2021 15:44:31 - INFO - filelock - Lock 140420403278096 released on /root/.cache/huggingface/transformers/e8a600814b69e3ee74bb4a7398cc6fef9812475010f16a6c9f151b2c2772b089.451739a2f3b82c3375da0dfc6af295bedc4567373b171f514dd09a4cc4b31513.lock\n", "08/06/2021 15:44:32 - WARNING - farm.utils - Failed to log params: Changing param values is not allowed. Param with key='processor' was already logged with value='TextSimilarityProcessor' for run ID='1b048d196ff442d781f6dccac1eaa0a1'. Attempted logging new value 'SquadProcessor'.\n", @@ -1295,220 +1470,48 @@ ] } ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 1000, - "referenced_widgets": [ - "e827efc5cd744b55b7d7d702663b8250", - "d7f2e3e918514031acf261116b690c5b", - "e7c2e561bfdf49aa88814126e0471a58", - "3838eb97db0f46a8828473c0e686f5df", - "769ee7fdb9c549e2a8d7f0e0719477eb", - "b64f5d69b6dc4f57894296991279b707", - "f069997c1a114e46947c8a07cebc709b", - "9cf11e92693141e6bb06462209b67b46", - "02b9c7b799a846b6974eac600c0178ba", - "667c145e9bef4f5b99fffda361a2ea47", - "32325d4b51d04b47bde5794b174fbb26", - "2c9841a834ec4e8fbae1990bc2b07a5c", - "216fd635f06847c5a7daf25d543e321b", - "fe18331098014a22aeb390730d35fedb", - "b8dddaca70054b5cab955e0dab9d6d0a", - "490edef475d646a2ba12b429c1244de4", - "3817606563914b0ca26620da959a1fc4", - "cbe8cc2b1394456bac529507081a2263", - "a2a0402f1a63407190cf2a132a0bc2b6", - "6bf5fe6ae4bf494e9c33e0940da62951", - "9e5b65de890b446bba6ea3c24fef8588", - "d6ec9612d02c42e7bb42033d727fc03c", - "ef99a76fdfbc48669ed4d18e118bfa42", - "4de441f28ec040e995c285b1e3fcadb9", - "a8f5a18af7cf410bb065eefdb887cb92", - "9a4e9075d67b4bbaab47ff97e8ea539c", - "ff4b4d0b7fc14f05971ad09a603e55d4", - "1a9b1a31f910412bb69e4cb59170fc25", - "b2249a087bd343999a5319152d7e0548", - "1618f5a1981c4d18a67be3965745aa49", - "790f7b4b1d3d4d8e84a3693f3c8b9b85", - "a226c1daa4454c55a03b1edf595a33ae", - "6de6dbe386d447f588c982d3501bd1c1", - "dc143ea6a5594b769b3a4880d83f0e1b", - "b637557712f44674abc5e5ebd32d87cf", - "aad1b320c9fd451ab081f5c238bb91c0", - "99ae91dc416b4108b4282395f403b39a", - "68b86c5c4be34554975a77a26ea6319b", - "e80fc1c849354ee89fa0d51f7de4c78e", - "b4eb040d5e224e619414a4d4740badc5", - "30413c25f3774ef6860be4230804e31c", - "5f4b28761f204e8eaa90f22a9e7677c7", - "ec237876a762449394f0930aa6690fcb", - "983cde7e80fd4eebb0b01f444aa16579", - "4d37fd7e90a64ff68870b86334cfad7e", - "394b26eab89b410db98a07cdf6609ead", - "b5c93207802346b69b7d9178b4d67b2a", - "027441d4e1f14648919f54ba9d9a5204", - "b27ce7d9f5e74ef895b809e519673c60", - "37fcf93794cb46d491d55100a6d8fee8", - "f46b46bdc75641b6b3c8d23b939bc797", - "de371bd60c64464284f47eeef0a07bed", - "04a81edc284a4378bc841f72f729305c", - "a86a02ebcb184749bd27590067ef71bc", - "7ea5f945a5aa4eb4adc96e9f986a0d71", - "56a2181e987a4227a69038267613ffc2", - "3308704acebe439188b70c6fd238ae66", - "6b97bc4ee3924dfdbe72738d137c967e", - "c05f2ee787944a9e931f74de9831599c", - "14cd6229f5e043f8862c6fe1773df4e0", - "7541bd7ec86f4c028405e6e9ca6f4d06", - "853a80d353144e8d9cd6ce8788c7a9bb", - "f825adffa7544868a2ae665ab6434d5d", - "d4e2dd1fa16b40c3bb115ecccba69a03", - "15e1e4e3276a467c88777aae68cd693c", - "1c6f0c68669a4c34b74fcb49cdb4aa07", - "5212b2c80437450fa2a7aa49f65a23f4", - "a702fc844c5b40e2986c62da5fe92c9b", - "24a7839d950740c9958e2d88b7ad829a", - "c6d3d0bb414c4aa5ae20f006cce90f33", - "b14faabb0d6d4d30bfa8efc097e5aa23", - "ba340a739c554989849060bd29eadbc9", - "27a54e55bff94428b7c19fc35b125047", - "56660d608cbe451e9ec0701c1941a7ab", - "8dc7877695b74610a849b160008ccbab", - "ca54b4744f244922bc75447d707685e6", - "7a26b17f3b9d45a4a99b8494fc5de6dd", - "9d36e8f0ab3e4a18b519e5dc04a51061", - "5b2cc531f1e44c318488c993024a94b7", - "463ff451eab94f509f4ba6ce4e1ae1ef", - "7e59ccb05ef3494eb8ad400dd8f606e0", - "cbfecc60258e428eb51652dd36655511", - "42819b5d13df44b392be19add1bdd122", - "6aa855ad681f44dabb024d4c4d34490b", - "bc806490fb8148ca9525c3b685a377c2", - "91e3d408502b480d818df1fdbbd88afb", - "1fcbba1dc2924f0489dd6cf3f6622915", - "41635bd3da9c4c1da50fe86a01da25bf", - "3fa3082333c344d1be66344a7d0ff542", - "a2905ce60084476da1c96d46a63f138d", - "4de5d23d236646629ee2cabf08f4621b", - "2d5ce6e282b14019ab5aece4ceb4e643", - "f028104b8e9548f0a7e53f1edcd63c4e", - "4cea79778d26402dad42393c2bebfe10", - "8f52bb4d56dc4084be52840e97b22790", - "b0b7c0653441453db63d253b839144f6", - "6445465e075f4254b18874e0f7353885", - "89a23afc2b704d83927acc1835361e73", - "051606acbe974583b33f5e50402c72de", - "e0599025f4534a89932b42945c3c1e21", - "a1ce792f467c47acb4803b4c727b80a1", - "09dd2dd5a35c4f418ea1ef010e6831d2", - "7a408f3b5c644f42b88574ccffc2d7bb", - "b780dea3ed6e4057a09e432a067596fb", - "1d14929d95684c05a66c958fd8a5b89d", - "11d32ef999d94db187dab41a1bbf7723", - "3d71e9d26ebb41d980819d608ddb115a", - "a53314a74ba14e9ba7fc81a4aa39070d", - "96b976f448be47d892dc1923c51c470e", - "c151c810fc984ff79aa85178d54c3b6a", - "5fa38582019043d084a6ecb2f2fea016", - "1c10236190604ad49fa72d4d851ac316", - "2a71821c410d4cb1afaab09574982b02", - "66f26219cc6248288423c2e7ba5304c4", - "33143aed23264e82a7750d5fbc8e22a7", - "112a6f4e707a4accb18b649f671634cf", - "9aa65bb178af419bbdc15d19fa572e62", - "0cab5420cdb144e9aa3dfa907e1ed729", - "28b880a5c9864a63b2d557a1ec9458a5", - "6e5b975419994befb261100d7719e991", - "0f7ab0ce7ee24838a6cbffac4cdb3040", - "8412dd46b64444b685563081f2c3c5c2", - "ba67c6d2324d440abbd25de05161b381", - "84cea882fd1e431b9c93631ee3f4ed17", - "cea38043b06d419fa63695a316233088", - "caa201fa5bc74823bcdea73599130499", - "f53911fd1c9c47c69e69206c3169158a", - "33b89e0dfe124edaa5c90ada36a4c7a8", - "b7e2a9e5035544ba94bdeb3c56b19174", - "7b4fa73603264880ad4046d5791c76fa", - "2d476cc7b1ce45ebb82f9cf5a41d4024", - "4e35f1931b50406393ffce1c3b622986", - "814e632c690e4745a93fdef461fd48b6", - "56b67d80ef05478da31ef471eb7de385", - "1bc6ff28903f4b2e9aefb6275aa047be", - "77265036d6824670b9fc258192deac11", - "3f0c353869fe42828794cd8a14acb39e", - "409718ada73943e69bee6f73e0db5b94", - "e1e04bcfd0754a3cb1ea6ac0d8ba0efa", - "fc67d27eeac0448ba310e3fb991b9b5a", - "39547579c0b443e696121427bd3279dd", - "e7227229d21d4d7292733f373fa7f9db", - "adbe499b09574ba6853581f3f6cc21d5", - "f29213e62e9e4b33ac72454b6f407073", - "46802db8abd042fb90c811cd2ea4bb5b", - "209eb3ac83504ba3920b13e5aec28da6", - "ebd1f7d8259549b1b287cd624ff5b75d", - "e7a21b2d87c942858f1b956f9af2b06e", - "fb31d79ac3f3467d986a97bd237f26be", - "0ca3a7dc4e804cecb8c719bfef9c055b", - "399fa7054fc74dfea45d22ee20765b30", - "26be6fe237fd4b8c8d8fac787d72e823", - "52de26e5a87e44debbcf00c0c4073dca", - "d03e8b5ed27c4c97a8a25bdfa82a752e", - "f27ffc683e714a28a0842a730e736716", - "b5efbf17543a4db7a3b01ee0e28743c9", - "cddcc8af67ae4c539dec147436d4628b", - "892b9273604c4440ad179ed4a8dfc5e1", - "96f73362e4694c24acb058e1b7d69a14", - "671cf89ffa2741cb9c1ffb898199d49b", - "61e9bdf3a077438cb26f4bff9265ee4c", - "76e76e39d6d64438a24919e973e0053c", - "83dad7ffdd8747ddbb3942bb6c58445c", - "d377b1dec2a84337bc1644ff51464e4d", - "038267d5661343deb4be8a3c6d16a221", - "443739aca635464ea01e08e800dd40aa", - "484eafd3786b43219fd4103aba12c2e9", - "c87dcd38005944f2affcacb28ab8dd89", - "f591cb897745493182b1854d3be5e546", - "580a190f9eee4b0e8d3008e529535aa7", - "3fc82442548e42e887ba9ad11dfd5d77", - "c7ca455474c04af18ade2d3fd906727e", - "d31dc63868a4475fbcfc7406723ad359", - "2ed78454dfa347aaa0ab9be6be341264", - "0ace7e3fad4b430c9fb09d6736ea9ac3", - "b6c733e5327a40259700554efe576527", - "1b81083a5e9644c08eb711693d480ed2", - "ac67a20654414b0ea3b36acdc6e86171", - "0122a517adf14859b9a594f3da1a0688", - "518539c52ba54f1f9d59ec0dfdca132d", - "e058a81bbdc941fd9932f5c04a9cdc23", - "7389aaaf51f349c5aa745c29c08dcc66", - "f374072420b947c3a5a9f4d3849d3334", - "a762c482b84540beb350901ac7f0f46b", - "f1238867e4e249c1a0daa553d459e98b", - "00aaf9b5872940b8b055dbb27caccda6", - "4bbce51f2459479f8a95064c17b73e2c", - "3abc298844944bcca8615925d4cf36a5", - "854d7275b81c443cb997a975164a3b99", - "01781b50453c401785af24b5ea608440", - "6476b24e759f4ae4ba594ec63190506c", - "90755e4609454529b3246d1d5573cf26", - "6d34f638e428428f8463026b19172847", - "715a7b7b1c8444b5abc1c779f8f78cd1", - "9f8dbb42b20a43799c4c5590be22cb30", - "c3ca769e981a4e41929246c2b22bfb7c", - "3ff47ea8d9a641cd9cfece170597dd51", - "30a569a443254abebf4cb863c80c8253" - ] - }, - "id": "Ig7dgfdHN-gg", - "outputId": "62383a2b-d653-4f9f-e3a9-4b2cb90ee007", - "pycharm": { - "name": "#%%\n" - } - } + "source": [ + "from haystack.utils import print_answers, fetch_archive_from_http, convert_files_to_dicts, clean_wiki_text, launch_es\n", + "from haystack.pipelines import Pipeline, RootNode\n", + "from haystack.document_stores import ElasticsearchDocumentStore\n", + "from haystack.nodes import ElasticsearchRetriever, DensePassageRetriever, FARMReader, TransformersQueryClassifier, SklearnQueryClassifier\n", + "\n", + "#Download and prepare data - 517 Wikipedia articles for Game of Thrones\n", + "doc_dir = \"data/article_txt_got\"\n", + "s3_url = \"https://s3.eu-central-1.amazonaws.com/deepset.ai-farm-qa/datasets/documents/wiki_gameofthrones_txt.zip\"\n", + "fetch_archive_from_http(url=s3_url, output_dir=doc_dir)\n", + "\n", + "# convert files to dicts containing documents that can be indexed to our datastore\n", + "got_dicts = convert_files_to_dicts(\n", + " dir_path=doc_dir,\n", + " clean_func=clean_wiki_text,\n", + " split_paragraphs=True\n", + ")\n", + "\n", + "# Initialize DocumentStore and index documents\n", + "launch_es()\n", + "document_store = ElasticsearchDocumentStore()\n", + "document_store.delete_documents()\n", + "document_store.write_documents(got_dicts)\n", + "\n", + "# Initialize Sparse retriever\n", + "es_retriever = ElasticsearchRetriever(document_store=document_store)\n", + "\n", + "# Initialize dense retriever\n", + "dpr_retriever = DensePassageRetriever(document_store)\n", + "document_store.update_embeddings(dpr_retriever, update_existing_embeddings=False)\n", + "\n", + "reader = FARMReader(model_name_or_path=\"deepset/roberta-base-squad2\")" + ] }, { "cell_type": "markdown", + "metadata": { + "id": "5kPAbP4EN-gk", + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "## Keyword vs Question/Statement Classifier\n", "\n", @@ -1518,28 +1521,29 @@ "* Less GPU costs (e.g. if 50% of your traffic is only keyword queries you could just use elastic here and save the GPU resources for the other 50% of traffic with semantic queries)\n", "\n", "![image](https://user-images.githubusercontent.com/6007894/127831511-f55bad86-4b4f-4b54-9889-7bba37e475c6.png)\n" - ], - "metadata": { - "id": "5kPAbP4EN-gk", - "pycharm": { - "name": "#%% md\n" - } - } + ] }, { "cell_type": "markdown", + "metadata": { + "id": "K4wZ3xkQCHjY" + }, "source": [ "Below, we define a `SklQueryClassifier` and show how to use it:\n", "\n", "Read more about the trained model and dataset used [here](https://ext-models-haystack.s3.eu-central-1.amazonaws.com/gradboost_query_classifier/readme.txt)" - ], - "metadata": { - "id": "K4wZ3xkQCHjY" - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "id": "Sz-oZ5eJN-gl", + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], "source": [ "# Here we build the pipeline\n", "sklearn_keyword_classifier = Pipeline()\n", @@ -1548,18 +1552,15 @@ "sklearn_keyword_classifier.add_node(component=es_retriever, name=\"ESRetriever\", inputs=[\"QueryClassifier.output_2\"])\n", "sklearn_keyword_classifier.add_node(component=reader, name=\"QAReader\", inputs=[\"ESRetriever\", \"DPRRetriever\"])\n", "sklearn_keyword_classifier.draw(\"pipeline_classifier.png\")\n" - ], - "outputs": [], - "metadata": { - "id": "Sz-oZ5eJN-gl", - "pycharm": { - "name": "#%%\n" - } - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "id": "fP6Cpcb-o0HK" + }, + "outputs": [], "source": [ "\n", "# Run only the dense retriever on the full sentence query\n", @@ -1575,15 +1576,15 @@ ")\n", "print(\"ES Results\" + \"\\n\" + \"=\"*15)\n", "print_answers(res_2, details=\"minimum\")\n" - ], - "outputs": [], - "metadata": { - "id": "fP6Cpcb-o0HK" - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "id": "EZru--pao1UG" + }, + "outputs": [], "source": [ "\n", "# Run only the dense retriever on the full sentence query\n", @@ -1599,15 +1600,15 @@ ")\n", "print(\"ES Results\" + \"\\n\" + \"=\"*15)\n", "print_answers(res_4, details=\"minimum\")" - ], - "outputs": [], - "metadata": { - "id": "EZru--pao1UG" - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "id": "MWCMG8MJo1tB" + }, + "outputs": [], "source": [ "# Run only the dense retriever on the full sentence query\n", "res_5 = sklearn_keyword_classifier.run(\n", @@ -1622,14 +1623,13 @@ ")\n", "print(\"ES Results\" + \"\\n\" + \"=\"*15)\n", "print_answers(res_6, details=\"minimum\")" - ], - "outputs": [], - "metadata": { - "id": "MWCMG8MJo1tB" - } + ] }, { "cell_type": "markdown", + "metadata": { + "id": "dQ5YMyd4CQPC" + }, "source": [ "## Transformer Keyword vs Question/Statement Classifier\n", "\n", @@ -1638,14 +1638,15 @@ "Below, we define a `TransformersQueryClassifier` and show how to use it:\n", "\n", "Read more about the trained model and dataset used [here](https://huggingface.co/shahrukhx01/bert-mini-finetune-question-detection)" - ], - "metadata": { - "id": "dQ5YMyd4CQPC" - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "id": "yuddZL3FCPeq" + }, + "outputs": [], "source": [ "# Here we build the pipeline\n", "transformer_keyword_classifier = Pipeline()\n", @@ -1654,15 +1655,15 @@ "transformer_keyword_classifier.add_node(component=es_retriever, name=\"ESRetriever\", inputs=[\"QueryClassifier.output_2\"])\n", "transformer_keyword_classifier.add_node(component=reader, name=\"QAReader\", inputs=[\"ESRetriever\", \"DPRRetriever\"])\n", "transformer_keyword_classifier.draw(\"pipeline_classifier.png\")" - ], - "outputs": [], - "metadata": { - "id": "yuddZL3FCPeq" - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "id": "uFmJJIb_q-X7" + }, + "outputs": [], "source": [ "\n", "# Run only the dense retriever on the full sentence query\n", @@ -1678,15 +1679,15 @@ ")\n", "print(\"ES Results\" + \"\\n\" + \"=\"*15)\n", "print_answers(res_2, details=\"minimum\")\n" - ], - "outputs": [], - "metadata": { - "id": "uFmJJIb_q-X7" - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "id": "GMPNcTz8rdix" + }, + "outputs": [], "source": [ "\n", "# Run only the dense retriever on the full sentence query\n", @@ -1702,15 +1703,15 @@ ")\n", "print(\"ES Results\" + \"\\n\" + \"=\"*15)\n", "print_answers(res_4, details=\"minimum\")" - ], - "outputs": [], - "metadata": { - "id": "GMPNcTz8rdix" - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "id": "jN5zdLJbrzOh" + }, + "outputs": [], "source": [ "# Run only the dense retriever on the full sentence query\n", "res_5 = transformer_keyword_classifier.run(\n", @@ -1725,39 +1726,39 @@ ")\n", "print(\"ES Results\" + \"\\n\" + \"=\"*15)\n", "print_answers(res_6, details=\"minimum\")" - ], - "outputs": [], - "metadata": { - "id": "jN5zdLJbrzOh" - } + ] }, { "cell_type": "markdown", + "metadata": { + "id": "zLwdVwMXDcoS" + }, "source": [ "## Question vs Statement Classifier\n", "\n", "One possible use case of this classifier could be to route queries after the document retrieval to only send questions to QA reader and in case of declarative sentence, just return the DPR/ES results back to user to enhance user experience and only show answers when user explicitly asks it.\n", "\n", "![image](https://user-images.githubusercontent.com/6007894/127864452-f931ea7f-2e62-4f59-85dc-056d56eb9295.png)\n" - ], - "metadata": { - "id": "zLwdVwMXDcoS" - } + ] }, { "cell_type": "markdown", + "metadata": { + "id": "SMVFFRtMPVIt" + }, "source": [ "Below, we define a `TransformersQueryClassifier` and show how to use it:\n", "\n", "Read more about the trained model and dataset used [here](https://huggingface.co/shahrukhx01/question-vs-statement-classifier)" - ], - "metadata": { - "id": "SMVFFRtMPVIt" - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "id": "BIisEJrzDr-9" + }, + "outputs": [], "source": [ "# Here we build the pipeline\n", "transformer_question_classifier = Pipeline()\n", @@ -1779,25 +1780,40 @@ ")\n", "print(\"ES Results\" + \"\\n\" + \"=\"*15)\n", "print_answers(res_2, details=\"minimum\")" - ], - "outputs": [], - "metadata": { - "id": "BIisEJrzDr-9" - } + ] }, { "cell_type": "markdown", + "metadata": { + "id": "sJcWRK4Hwyx2" + }, "source": [ "## Standalone Query Classifier\n", "Below we run queries classifiers standalone to better understand their outputs on each of the three types of queries" - ], - "metadata": { - "id": "sJcWRK4Hwyx2" - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "XhPMEqBzxA8V", + "outputId": "be3ba2ac-b557-4cb3-9eed-41928f644b6e" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Query: arya stark father, raw_output: ({'query': 'arya stark father'}, 'output_2'), class: keyword\n", + "Query: jon snow country, raw_output: ({'query': 'jon snow country'}, 'output_2'), class: keyword\n", + "Query: who is the father of arya stark, raw_output: ({'query': 'who is the father of arya stark'}, 'output_1'), class: question/statement\n", + "Query: which country was jon snow filmed?, raw_output: ({'query': 'which country was jon snow filmed?'}, 'output_1'), class: question/statement\n" + ] + } + ], "source": [ "# Here we create the keyword vs question/statement query classifier\n", "from haystack.pipelines import TransformersQueryClassifier\n", @@ -1815,30 +1831,30 @@ " category = \"keyword\"\n", "\n", " print(f\"Query: {query}, raw_output: {result}, class: {category}\")\n" - ], + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "l4eH3SSaxZ0O", + "outputId": "53384108-3d4c-4547-d32a-4a63aa1b74a0" + }, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ - "Query: arya stark father, raw_output: ({'query': 'arya stark father'}, 'output_2'), class: keyword\n", - "Query: jon snow country, raw_output: ({'query': 'jon snow country'}, 'output_2'), class: keyword\n", - "Query: who is the father of arya stark, raw_output: ({'query': 'who is the father of arya stark'}, 'output_1'), class: question/statement\n", - "Query: which country was jon snow filmed?, raw_output: ({'query': 'which country was jon snow filmed?'}, 'output_1'), class: question/statement\n" + "Query: Lord Eddard was the father of Arya Stark., raw_output: ({'query': 'Lord Eddard was the father of Arya Stark.'}, 'output_2'), class: statement\n", + "Query: Jon Snow was filmed in United Kingdom., raw_output: ({'query': 'Jon Snow was filmed in United Kingdom.'}, 'output_2'), class: statement\n", + "Query: who is the father of arya stark?, raw_output: ({'query': 'who is the father of arya stark?'}, 'output_1'), class: question\n", + "Query: Which country was jon snow filmed in?, raw_output: ({'query': 'Which country was jon snow filmed in?'}, 'output_1'), class: question\n" ] } ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "XhPMEqBzxA8V", - "outputId": "be3ba2ac-b557-4cb3-9eed-41928f644b6e" - } - }, - { - "cell_type": "code", - "execution_count": null, "source": [ "# Here we create the question vs statement query classifier \n", "from haystack.pipelines import TransformersQueryClassifier\n", @@ -1856,45 +1872,27 @@ " category = \"statement\"\n", "\n", " print(f\"Query: {query}, raw_output: {result}, class: {category}\")" - ], - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Query: Lord Eddard was the father of Arya Stark., raw_output: ({'query': 'Lord Eddard was the father of Arya Stark.'}, 'output_2'), class: statement\n", - "Query: Jon Snow was filmed in United Kingdom., raw_output: ({'query': 'Jon Snow was filmed in United Kingdom.'}, 'output_2'), class: statement\n", - "Query: who is the father of arya stark?, raw_output: ({'query': 'who is the father of arya stark?'}, 'output_1'), class: question\n", - "Query: Which country was jon snow filmed in?, raw_output: ({'query': 'Which country was jon snow filmed in?'}, 'output_1'), class: question\n" - ] - } - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "l4eH3SSaxZ0O", - "outputId": "53384108-3d4c-4547-d32a-4a63aa1b74a0" - } + ] }, { "cell_type": "markdown", + "metadata": { + "id": "9VMUHR-BN-gl", + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "## Conclusion\n", "\n", "The query classifier gives you more possibility to be more creative with the pipelines and use different retrieval nodes in a flexible fashion. Moreover, as in the case of Question vs Statement classifier you can also choose the queries which you want to send to the reader.\n", "\n", "Finally, you also have the possible of bringing your own classifier and plugging it into either `TransformersQueryClassifier(model_name_or_path=\"\")` or using the `SklearnQueryClassifier(model_name_or_path=\"url_to_classifier_or_file_path_as_pickle\", vectorizer_name_or_path=\"url_to_vectorizer_or_file_path_as_pickle\")`" - ], - "metadata": { - "id": "9VMUHR-BN-gl", - "pycharm": { - "name": "#%% md\n" - } - } + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "## About us\n", "\n", @@ -1912,8 +1910,7 @@ "[Twitter](https://twitter.com/deepset_ai) | [LinkedIn](https://www.linkedin.com/company/deepset-ai/) | [Slack](https://haystack.deepset.ai/community/join) | [GitHub Discussions](https://github.com/deepset-ai/haystack/discussions) | [Website](https://deepset.ai)\n", "\n", "By the way: [we're hiring!](https://www.deepset.ai/jobs) " - ], - "metadata": {} + ] } ], "metadata": { @@ -1923,9 +1920,12 @@ "name": "Tutorial14_Query_Classifier.ipynb", "provenance": [] }, + "interpreter": { + "hash": "01829e1eb67c4f5275a41f9336c92adbb77a108c8fc957dfe99d03e96dd1f349" + }, "kernelspec": { - "name": "python3", - "display_name": "Python 3.9.5 64-bit ('venv': venv)" + "display_name": "Python 3.9.5 64-bit ('venv': venv)", + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -7900,11 +7900,8 @@ } } } - }, - "interpreter": { - "hash": "01829e1eb67c4f5275a41f9336c92adbb77a108c8fc957dfe99d03e96dd1f349" } }, "nbformat": 4, "nbformat_minor": 1 -} \ No newline at end of file +} diff --git a/tutorials/Tutorial15_TableQA.ipynb b/tutorials/Tutorial15_TableQA.ipynb index b2d7215d42..d270e31125 100644 --- a/tutorials/Tutorial15_TableQA.ipynb +++ b/tutorials/Tutorial15_TableQA.ipynb @@ -1,35 +1,22 @@ { - "nbformat": 4, - "nbformat_minor": 2, - "metadata": { - "colab": { - "name": "Tutorial15_TableQA.ipynb", - "provenance": [] - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - }, - "language_info": { - "name": "python" - }, - "accelerator": "GPU" - }, "cells": [ { "cell_type": "markdown", + "metadata": { + "id": "DeAkZwDhufYA" + }, "source": [ "# Open-Domain QA on Tables\n", "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/deepset-ai/haystack/blob/master/tutorials/Tutorial15_TableQA.ipynb)\n", "\n", "This tutorial shows you how to perform question-answering on tables using the `TableTextRetriever` or `ElasticsearchRetriever` as retriever node and the `TableReader` as reader node." - ], - "metadata": { - "id": "DeAkZwDhufYA" - } + ] }, { "cell_type": "markdown", + "metadata": { + "id": "vbR3bETlvi-3" + }, "source": [ "### Prepare environment\n", "\n", @@ -38,72 +25,73 @@ "**Runtime -> Change Runtime type -> Hardware accelerator -> GPU**\n", "\n", "" - ], - "metadata": { - "id": "vbR3bETlvi-3" - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "id": "HW66x0rfujyO" + }, + "outputs": [], "source": [ "# Make sure you have a GPU running\n", "!nvidia-smi" - ], - "outputs": [], - "metadata": { - "id": "HW66x0rfujyO" - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "id": "_ZXoyhOAvn7M" + }, + "outputs": [], "source": [ "# Install the latest release of Haystack in your own environment \n", "#! pip install farm-haystack\n", "\n", "# Install the latest master of Haystack\n", - "!pip install grpcio-tools==1.34.1\n", - "!pip install git+https://github.com/deepset-ai/haystack.git\n", + "!pip install --upgrade pip\n", + "!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab]\n", "\n", "# The TaPAs-based TableReader requires the torch-scatter library\n", "!pip install torch-scatter -f https://data.pyg.org/whl/torch-1.10.0+cu113.html\n", "\n", "# If you run this notebook on Google Colab, you might need to\n", "# restart the runtime after installing haystack." - ], - "outputs": [], - "metadata": { - "id": "_ZXoyhOAvn7M" - } + ] }, { "cell_type": "markdown", + "metadata": { + "id": "K_XJhluXwF5_" + }, "source": [ "### Start an Elasticsearch server\n", "You can start Elasticsearch on your local machine instance using Docker. If Docker is not readily available in your environment (e.g. in Colab notebooks), then you can manually download and execute Elasticsearch from source." - ], - "metadata": { - "id": "K_XJhluXwF5_" - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "id": "frDqgzK7v2i1" + }, + "outputs": [], "source": [ "# Recommended: Start Elasticsearch using Docker via the Haystack utility function\n", "from haystack.utils import launch_es\n", "\n", "launch_es()" - ], - "outputs": [], - "metadata": { - "id": "frDqgzK7v2i1" - } + ] }, { "cell_type": "code", "execution_count": 1, + "metadata": { + "id": "S4PGj1A6wKWu" + }, + "outputs": [], "source": [ "# In Colab / No Docker environments: Start Elasticsearch from source\n", "! wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.2-linux-x86_64.tar.gz -q\n", @@ -118,15 +106,15 @@ " )\n", "# wait until ES has started\n", "! sleep 30" - ], - "outputs": [], - "metadata": { - "id": "S4PGj1A6wKWu" - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "id": "RmxepXZtwQ0E" + }, + "outputs": [], "source": [ "# Connect to Elasticsearch\n", "from haystack.document_stores import ElasticsearchDocumentStore\n", @@ -138,27 +126,27 @@ " password=\"\",\n", " index=document_index,\n", " embedding_dim=512)" - ], - "outputs": [], - "metadata": { - "id": "RmxepXZtwQ0E" - } + ] }, { "cell_type": "markdown", + "metadata": { + "id": "fFh26LIlxldw" + }, "source": [ "## Add Tables to DocumentStore\n", "To quickly demonstrate the capabilities of the `TableTextRetriever` and the `TableReader` we use a subset of 1000 tables of the [Open Table-and-Text Question Answering (OTT-QA) dataset](https://github.com/wenhuchen/OTT-QA).\n", "\n", "Just as text passages, tables are represented as `Document` objects in Haystack. The content field, though, is a pandas DataFrame instead of a string." - ], - "metadata": { - "id": "fFh26LIlxldw" - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "id": "nM63uwbd8zd6" + }, + "outputs": [], "source": [ "# Let's first fetch some tables that we want to query\n", "# Here: 1000 tables from OTT-QA\n", @@ -167,15 +155,38 @@ "doc_dir = \"data\"\n", "s3_url = \"https://s3.eu-central-1.amazonaws.com/deepset.ai-farm-qa/datasets/documents/ottqa_tables_sample.json.zip\"\n", "fetch_archive_from_http(url=s3_url, output_dir=doc_dir)" - ], - "outputs": [], - "metadata": { - "id": "nM63uwbd8zd6" - } + ] }, { "cell_type": "code", "execution_count": 4, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "SKjw2LuXxlGh", + "outputId": "c24f8ca0-1a58-44ea-f01d-414db4c8f1f4" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Result ... Score\n", + "0 Winner ... 6-1 , 6-1\n", + "1 Winner ... 6-2 , 4-6 , 6-3\n", + "2 Winner ... 6-2 , 6-2\n", + "3 Runner-up ... 3-6 , 2-6\n", + "4 Winner ... 6-7 , 6-3 , 6-0\n", + "5 Winner ... 6-1 , 6-0\n", + "6 Winner ... 6-2 , 2-6 , 6-2\n", + "7 Winner ... 6-0 , 6-4\n", + "\n", + "[8 rows x 8 columns]\n", + "{'title': 'Rewa Hudson', 'section_title': 'ITF finals ( 7–3 ) -- Doubles ( 7–1 )'}\n" + ] + } + ], "source": [ "# Add the tables to the DocumentStore\n", "\n", @@ -210,37 +221,13 @@ "# Showing content field and meta field of one of the Documents of content_type 'table'\n", "print(tables[0].content)\n", "print(tables[0].meta)" - ], - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - " Result ... Score\n", - "0 Winner ... 6-1 , 6-1\n", - "1 Winner ... 6-2 , 4-6 , 6-3\n", - "2 Winner ... 6-2 , 6-2\n", - "3 Runner-up ... 3-6 , 2-6\n", - "4 Winner ... 6-7 , 6-3 , 6-0\n", - "5 Winner ... 6-1 , 6-0\n", - "6 Winner ... 6-2 , 2-6 , 6-2\n", - "7 Winner ... 6-0 , 6-4\n", - "\n", - "[8 rows x 8 columns]\n", - "{'title': 'Rewa Hudson', 'section_title': 'ITF finals ( 7–3 ) -- Doubles ( 7–1 )'}\n" - ] - } - ], - "metadata": { - "id": "SKjw2LuXxlGh", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "c24f8ca0-1a58-44ea-f01d-414db4c8f1f4" - } + ] }, { "cell_type": "markdown", + "metadata": { + "id": "hmQC1sDmw3d7" + }, "source": [ "## Initalize Retriever, Reader, & Pipeline\n", "\n", @@ -255,14 +242,15 @@ "**Alternatives:**\n", "\n", "- `ElasticsearchRetriever` that uses BM25 algorithm\n" - ], - "metadata": { - "id": "hmQC1sDmw3d7" - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "id": "EY_qvdV6wyK5" + }, + "outputs": [], "source": [ "from haystack.nodes.retriever import TableTextRetriever\n", "\n", @@ -273,52 +261,47 @@ " table_embedding_model=\"deepset/bert-small-mm_retrieval-table_encoder\",\n", " embed_meta_fields=[\"title\", \"section_title\"]\n", ")" - ], - "outputs": [], - "metadata": { - "id": "EY_qvdV6wyK5" - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "id": "jasi1RM2zIJ7" + }, + "outputs": [], "source": [ "# Add table embeddings to the tables in DocumentStore\n", "document_store.update_embeddings(retriever=retriever)" - ], - "outputs": [], - "metadata": { - "id": "jasi1RM2zIJ7" - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "id": "XM-ijy6Zz11L" + }, + "outputs": [], "source": [ "## Alternative: ElasticsearchRetriever\n", "#from haystack.nodes.retriever import ElasticsearchRetriever\n", "#retriever = ElasticsearchRetriever(document_store=document_store)" - ], - "outputs": [], - "metadata": { - "id": "XM-ijy6Zz11L" - } + ] }, { "cell_type": "code", "execution_count": 7, - "source": [ - "# Try the Retriever\n", - "from haystack.utils import print_documents\n", - "\n", - "retrieved_tables = retriever.retrieve(\"How many twin buildings are under construction?\", top_k=5)\n", - "# Get highest scored table\n", - "print(retrieved_tables[0].content)" - ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "YHfQWxVI0N2e", + "outputId": "05976ac9-bee3-4eb8-b36d-01f1db5250db" + }, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ " Name ... Status\n", "0 Twin Towers II ... Never built\n", @@ -346,52 +329,54 @@ ] } ], - "metadata": { - "id": "YHfQWxVI0N2e", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "05976ac9-bee3-4eb8-b36d-01f1db5250db" - } + "source": [ + "# Try the Retriever\n", + "from haystack.utils import print_documents\n", + "\n", + "retrieved_tables = retriever.retrieve(\"How many twin buildings are under construction?\", top_k=5)\n", + "# Get highest scored table\n", + "print(retrieved_tables[0].content)" + ] }, { "cell_type": "markdown", + "metadata": { + "id": "zbwkXScm2-gy" + }, "source": [ "### Reader\n", "The `TableReader` is based on TaPas, a transformer-based language model capable of grasping the two-dimensional structure of a table. It scans the tables returned by the retriever and extracts the anser. The available TableReader models can be found [here](https://huggingface.co/models?pipeline_tag=table-question-answering&sort=downloads).\n", "\n", "**Notice**: The `TableReader` will return an answer for each table, even if the query cannot be answered by the table. Furthermore, the confidence scores are not useful as of now, given that they will *always* be very high (i.e. 1 or close to 1)." - ], - "metadata": { - "id": "zbwkXScm2-gy" - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "id": "4APcRoio2RxG" + }, + "outputs": [], "source": [ "from haystack.nodes import TableReader\n", "\n", "reader = TableReader(model_name_or_path=\"google/tapas-base-finetuned-wtq\", max_seq_len=512)" - ], - "outputs": [], - "metadata": { - "id": "4APcRoio2RxG" - } + ] }, { "cell_type": "code", "execution_count": 9, - "source": [ - "# Try the TableReader on one Table (highest-scored retrieved table from previous section)\n", - "\n", - "table_doc = document_store.get_document_by_id(\"List_of_tallest_twin_buildings_and_structures_in_the_world_1\")\n", - "print(table_doc.content)" - ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "ILuAXkyN4F7x", + "outputId": "7bdb7190-fcf8-4296-c237-cffc78dac4aa" + }, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ " Name ... Status\n", "0 Twin Towers II ... Never built\n", @@ -419,27 +404,27 @@ ] } ], - "metadata": { - "id": "ILuAXkyN4F7x", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "7bdb7190-fcf8-4296-c237-cffc78dac4aa" - } + "source": [ + "# Try the TableReader on one Table (highest-scored retrieved table from previous section)\n", + "\n", + "table_doc = document_store.get_document_by_id(\"List_of_tallest_twin_buildings_and_structures_in_the_world_1\")\n", + "print(table_doc.content)" + ] }, { "cell_type": "code", "execution_count": 12, - "source": [ - "from haystack.utils import print_answers\n", - "\n", - "prediction = reader.predict(query=\"How many twin buildings are under construction?\", documents=[table_doc])\n", - "print_answers(prediction, details=\"all\")" - ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "ilbsecgA4vfN", + "outputId": "5f4e8f0b-bc9e-485b-c933-546fcad2b411" + }, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ "{ 'answers': [ Answer(answer='12', type='extractive', score=1.0, context= Name ... Status\n", "0 Twin Towers II ... Never built\n", @@ -468,65 +453,68 @@ ] } ], - "metadata": { - "id": "ilbsecgA4vfN", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "5f4e8f0b-bc9e-485b-c933-546fcad2b411" - } + "source": [ + "from haystack.utils import print_answers\n", + "\n", + "prediction = reader.predict(query=\"How many twin buildings are under construction?\", documents=[table_doc])\n", + "print_answers(prediction, details=\"all\")" + ] }, { "cell_type": "markdown", + "metadata": { + "id": "jkAYNMb7R9qu" + }, "source": [ "The offsets in the `offsets_in_document` and `offsets_in_context` field indicate the table cells that the model predicts to be part of the answer. They need to be interpreted on the linearized table, i.e., a flat list containing all of the table cells.\n", "\n", "In the `Answer`'s meta field, you can find the aggreagtion operator used to construct the answer (in this case `COUNT`) and the answer cells as strings." - ], - "metadata": { - "id": "jkAYNMb7R9qu" - } + ] }, { "cell_type": "code", "execution_count": 16, - "source": [ - "print(f\"Predicted answer: {prediction['answers'][0].answer}\")\n", - "print(f\"Meta field: {prediction['answers'][0].meta}\")" - ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "It8XYT2ZTVJs", + "outputId": "5bd712a0-9f22-4fc0-a4f1-b01b15cb9916" + }, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ "Predicted answer: 12\n", "Meta field: {'aggregation_operator': 'COUNT', 'answer_cells': ['Three Sixty West', 'Gateway Towers', 'Rustomjee Crown', 'Lokhandwala Minerva', 'Lamar Towers', 'Indonesia One Towers', 'India Bulls Sky Forest Tower', 'Capital Towers', 'One Avighna Park', 'The Destiny ( Tower )', 'Oberoi Esquire Towers', 'Bhoomi Celestia']}\n" ] } ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "It8XYT2ZTVJs", - "outputId": "5bd712a0-9f22-4fc0-a4f1-b01b15cb9916" - } + "source": [ + "print(f\"Predicted answer: {prediction['answers'][0].answer}\")\n", + "print(f\"Meta field: {prediction['answers'][0].meta}\")" + ] }, { "cell_type": "markdown", + "metadata": { + "id": "pgmG7pzL5ceh" + }, "source": [ "### Pipeline\n", "The Retriever and the Reader can be sticked together to a pipeline in order to first retrieve relevant tables and then extract the answer.\n", "\n", "**Notice**: Given that the `TableReader` does not provide useful confidence scores and returns an answer for each of the tables, the sorting of the answers might be not helpful." - ], - "metadata": { - "id": "pgmG7pzL5ceh" - } + ] }, { "cell_type": "code", "execution_count": 17, + "metadata": { + "id": "G-aZZvyv4-Mf" + }, + "outputs": [], "source": [ "# Initialize pipeline\n", "from haystack import Pipeline\n", @@ -534,23 +522,22 @@ "table_qa_pipeline = Pipeline()\n", "table_qa_pipeline.add_node(component=retriever, name=\"TableTextRetriever\", inputs=[\"Query\"])\n", "table_qa_pipeline.add_node(component=reader, name=\"TableReader\", inputs=[\"TableTextRetriever\"])" - ], - "outputs": [], - "metadata": { - "id": "G-aZZvyv4-Mf" - } + ] }, { "cell_type": "code", "execution_count": 18, - "source": [ - "prediction = table_qa_pipeline.run(\"How many twin buildings are under construction?\")\n", - "print_answers(prediction, details=\"minimum\")" - ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "m8evexnW6dev", + "outputId": "290168b1-294e-42ed-c970-e5ddfefb3396" + }, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ "[ { 'answer': '12',\n", " 'context': Name ... Status\n", @@ -726,16 +713,16 @@ ] } ], - "metadata": { - "id": "m8evexnW6dev", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "290168b1-294e-42ed-c970-e5ddfefb3396" - } + "source": [ + "prediction = table_qa_pipeline.run(\"How many twin buildings are under construction?\")\n", + "print_answers(prediction, details=\"minimum\")" + ] }, { "cell_type": "markdown", + "metadata": { + "id": "RyeK3s28_X1C" + }, "source": [ "## About us\n", "\n", @@ -753,10 +740,23 @@ "[Twitter](https://twitter.com/deepset_ai) | [LinkedIn](https://www.linkedin.com/company/deepset-ai/) | [Slack](https://haystack.deepset.ai/community/join) | [GitHub Discussions](https://github.com/deepset-ai/haystack/discussions) | [Website](https://deepset.ai)\n", "\n", "By the way: [we're hiring!](https://www.deepset.ai/jobs)\n" - ], - "metadata": { - "id": "RyeK3s28_X1C" - } + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "name": "Tutorial15_TableQA.ipynb", + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "name": "python3" + }, + "language_info": { + "name": "python" } - ] + }, + "nbformat": 4, + "nbformat_minor": 2 } diff --git a/tutorials/Tutorial16_Document_Classifier_at_Index_Time.ipynb b/tutorials/Tutorial16_Document_Classifier_at_Index_Time.ipynb index 1f92d4036a..41d46b0321 100644 --- a/tutorials/Tutorial16_Document_Classifier_at_Index_Time.ipynb +++ b/tutorials/Tutorial16_Document_Classifier_at_Index_Time.ipynb @@ -41,23 +41,19 @@ }, "outputs": [], "source": [ - "# Let's start by installing Haystack\n", - "\n", - "# Install the latest release of Haystack in your own environment\n", + "# Install the latest release of Haystack in your own environment \n", "#! pip install farm-haystack\n", "\n", "# Install the latest master of Haystack\n", - "!pip install grpcio-tools==1.34.1\n", - "!pip install git+https://github.com/deepset-ai/haystack.git\n", + "!pip install --upgrade pip\n", + "!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab]\n", + "\n", "!wget --no-check-certificate https://dl.xpdfreader.com/xpdf-tools-linux-4.03.tar.gz\n", "!tar -xvf xpdf-tools-linux-4.03.tar.gz && sudo cp xpdf-tools-linux-4.03/bin64/pdftotext /usr/local/bin\n", "\n", "# Install pygraphviz\n", "!apt install libgraphviz-dev\n", - "!pip install pygraphviz\n", - "\n", - "# If you run this notebook on Google Colab, you might need to\n", - "# restart the runtime after installing haystack." + "!pip install pygraphviz" ] }, { diff --git a/tutorials/Tutorial1_Basic_QA_Pipeline.ipynb b/tutorials/Tutorial1_Basic_QA_Pipeline.ipynb index fcd5397946..9910864f19 100644 --- a/tutorials/Tutorial1_Basic_QA_Pipeline.ipynb +++ b/tutorials/Tutorial1_Basic_QA_Pipeline.ipynb @@ -2,6 +2,7 @@ "cells": [ { "cell_type": "markdown", + "metadata": {}, "source": [ "# Build Your First QA System\n", "\n", @@ -16,11 +17,13 @@ "\n", "Let's see how we can use a bunch of Wikipedia articles to answer a variety of questions about the \n", "marvellous seven kingdoms.\n" - ], - "metadata": {} + ] }, { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "### Prepare environment\n", "\n", @@ -29,55 +32,50 @@ "**Runtime -> Change Runtime type -> Hardware accelerator -> GPU**\n", "\n", "" - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "code", "execution_count": null, - "source": [ - "# Make sure you have a GPU running\n", - "!nvidia-smi" - ], - "outputs": [], "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } - } + }, + "outputs": [], + "source": [ + "# Make sure you have a GPU running\n", + "!nvidia-smi" + ] }, { "cell_type": "code", "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "# Install the latest release of Haystack in your own environment \n", "#! pip install farm-haystack\n", "\n", "# Install the latest master of Haystack\n", - "!pip install grpcio-tools==1.34.1\n", - "!pip install git+https://github.com/deepset-ai/haystack.git\n", - "\n", - "# If you run this notebook on Google Colab, you might need to\n", - "# restart the runtime after installing haystack." - ], - "outputs": [], - "metadata": {} + "!pip install --upgrade pip\n", + "!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab]" + ] }, { "cell_type": "code", "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "from haystack.utils import clean_wiki_text, convert_files_to_dicts, fetch_archive_from_http, print_answers\n", "from haystack.nodes import FARMReader, TransformersReader" - ], - "outputs": [], - "metadata": {} + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "## Document Store\n", "\n", @@ -91,24 +89,25 @@ "\n", "### Start an Elasticsearch server\n", "You can start Elasticsearch on your local machine instance using Docker. If Docker is not readily available in your environment (e.g. in Colab notebooks), then you can manually download and execute Elasticsearch from source." - ], - "metadata": {} + ] }, { "cell_type": "code", "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "# Recommended: Start Elasticsearch using Docker via the Haystack utility function\n", "from haystack.utils import launch_es\n", "\n", "launch_es()" - ], - "outputs": [], - "metadata": {} + ] }, { "cell_type": "code", "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "# In Colab / No Docker environments: Start Elasticsearch from source\n", "! wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.2-linux-x86_64.tar.gz -q\n", @@ -123,28 +122,31 @@ " )\n", "# wait until ES has started\n", "! sleep 30" - ], - "outputs": [], - "metadata": {} + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], "source": [ "# Connect to Elasticsearch\n", "\n", "from haystack.document_stores import ElasticsearchDocumentStore\n", "document_store = ElasticsearchDocumentStore(host=\"localhost\", username=\"\", password=\"\", index=\"document\")" - ], - "outputs": [], - "metadata": { - "pycharm": { - "name": "#%%\n" - } - } + ] }, { "cell_type": "markdown", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "## Preprocessing of documents\n", "\n", @@ -155,16 +157,17 @@ " - writing them to a Document Store\n", "\n", "In this tutorial, we download Wikipedia articles about Game of Thrones, apply a basic cleaning function, and index them in Elasticsearch." - ], - "metadata": { - "pycharm": { - "name": "#%% md\n" - } - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], "source": [ "# Let's first fetch some documents that we want to query\n", "# Here: 517 Wikipedia articles for Game of Thrones\n", @@ -192,16 +195,11 @@ "\n", "# Now, let's write the dicts containing documents to our DB.\n", "document_store.write_documents(dicts)" - ], - "outputs": [], - "metadata": { - "pycharm": { - "name": "#%%\n" - } - } + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "## Initalize Retriever, Reader, & Pipeline\n", "\n", @@ -218,38 +216,38 @@ "- Use `TfidfRetriever` in combination with a SQL or InMemory Document store for simple prototyping and debugging\n", "- Use `EmbeddingRetriever` to find candidate documents based on the similarity of embeddings (e.g. created via Sentence-BERT)\n", "- Use `DensePassageRetriever` to use different embedding models for passage and query (see Tutorial 6)" - ], - "metadata": {} + ] }, { "cell_type": "code", "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "from haystack.nodes import ElasticsearchRetriever\n", "retriever = ElasticsearchRetriever(document_store=document_store)" - ], - "outputs": [], - "metadata": {} + ] }, { "cell_type": "code", "execution_count": null, - "source": [ - "# Alternative: An in-memory TfidfRetriever based on Pandas dataframes for building quick-prototypes with SQLite document store.\n", - "\n", - "# from haystack.nodes import TfidfRetriever\n", - "# retriever = TfidfRetriever(document_store=document_store)" - ], - "outputs": [], "metadata": { "pycharm": { "is_executing": false, "name": "#%%\n" } - } + }, + "outputs": [], + "source": [ + "# Alternative: An in-memory TfidfRetriever based on Pandas dataframes for building quick-prototypes with SQLite document store.\n", + "\n", + "# from haystack.nodes import TfidfRetriever\n", + "# retriever = TfidfRetriever(document_store=document_store)" + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "### Reader\n", "\n", @@ -268,44 +266,44 @@ "**Hint:** You can adjust the model to return \"no answer possible\" with the no_ans_boost. Higher values mean the model prefers \"no answer possible\"\n", "\n", "#### FARMReader" - ], - "metadata": {} + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "pycharm": { + "is_executing": false + } + }, + "outputs": [], "source": [ "# Load a local model or any of the QA models on\n", "# Hugging Face's model hub (https://huggingface.co/models)\n", "\n", "reader = FARMReader(model_name_or_path=\"deepset/roberta-base-squad2\", use_gpu=True)" - ], - "outputs": [], - "metadata": { - "pycharm": { - "is_executing": false - } - } + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "#### TransformersReader" - ], - "metadata": {} + ] }, { "cell_type": "code", "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "# Alternative:\n", "# reader = TransformersReader(model_name_or_path=\"distilbert-base-uncased-distilled-squad\", tokenizer=\"distilbert-base-uncased\", use_gpu=-1)" - ], - "outputs": [], - "metadata": {} + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "### Pipeline\n", "\n", @@ -313,60 +311,61 @@ "Under the hood, `Pipelines` are Directed Acyclic Graphs (DAGs) that you can easily customize for your own use cases.\n", "To speed things up, Haystack also comes with a few predefined Pipelines. One of them is the `ExtractiveQAPipeline` that combines a retriever and a reader to answer our questions.\n", "You can learn more about `Pipelines` in the [docs](https://haystack.deepset.ai/docs/latest/pipelinesmd)." - ], - "metadata": {} + ] }, { "cell_type": "code", "execution_count": null, - "source": [ - "from haystack.pipelines import ExtractiveQAPipeline\n", - "pipe = ExtractiveQAPipeline(reader, retriever)" - ], - "outputs": [], "metadata": { "pycharm": { "is_executing": false } - } + }, + "outputs": [], + "source": [ + "from haystack.pipelines import ExtractiveQAPipeline\n", + "pipe = ExtractiveQAPipeline(reader, retriever)" + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "## Voilà! Ask a question!" - ], - "metadata": {} + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "pycharm": { + "is_executing": false + } + }, + "outputs": [], "source": [ "# You can configure how many candidates the reader and retriever shall return\n", "# The higher top_k_retriever, the better (but also the slower) your answers. \n", "prediction = pipe.run(\n", " query=\"Who is the father of Arya Stark?\", params={\"Retriever\": {\"top_k\": 10}, \"Reader\": {\"top_k\": 5}}\n", ")" - ], - "outputs": [], - "metadata": { - "pycharm": { - "is_executing": false - } - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "# prediction = pipe.run(query=\"Who created the Dothraki vocabulary?\", params={\"Reader\": {\"top_k\": 5}})\n", "# prediction = pipe.run(query=\"Who is the sister of Sansa?\", params={\"Reader\": {\"top_k\": 5}})" - ], - "outputs": [], - "metadata": {} + ] }, { "cell_type": "code", "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "# Now you can either print the object directly...\n", "from pprint import pprint\n", @@ -389,28 +388,32 @@ "# 'query': 'Who is the father of Arya Stark?',\n", "# 'root_node': 'Query'\n", "# }\n" - ], - "outputs": [], - "metadata": {} + ] }, { "cell_type": "code", "execution_count": null, - "source": [ - "# ...or use a util to simplify the output\n", - "# Change `minimum` to `medium` or `all` to raise the level of detail\n", - "print_answers(prediction, details=\"minimum\")" - ], - "outputs": [], "metadata": { "pycharm": { "is_executing": false, "name": "#%%\n" } - } + }, + "outputs": [], + "source": [ + "# ...or use a util to simplify the output\n", + "# Change `minimum` to `medium` or `all` to raise the level of detail\n", + "print_answers(prediction, details=\"minimum\")" + ] }, { "cell_type": "markdown", + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "## About us\n", "\n", @@ -428,13 +431,7 @@ "[Twitter](https://twitter.com/deepset_ai) | [LinkedIn](https://www.linkedin.com/company/deepset-ai/) | [Slack](https://haystack.deepset.ai/community/join) | [GitHub Discussions](https://github.com/deepset-ai/haystack/discussions) | [Website](https://deepset.ai)\n", "\n", "By the way: [we're hiring!](https://www.deepset.ai/jobs)\n" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } + ] } ], "metadata": { @@ -453,9 +450,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.6" + "version": "3.9.7" } }, "nbformat": 4, "nbformat_minor": 2 -} \ No newline at end of file +} diff --git a/tutorials/Tutorial2_Finetune_a_model_on_your_data.ipynb b/tutorials/Tutorial2_Finetune_a_model_on_your_data.ipynb index 1a86a22e63..603c18deac 100644 --- a/tutorials/Tutorial2_Finetune_a_model_on_your_data.ipynb +++ b/tutorials/Tutorial2_Finetune_a_model_on_your_data.ipynb @@ -55,11 +55,8 @@ "#! pip install farm-haystack\n", "\n", "# Install the latest master of Haystack\n", - "!pip install grpcio-tools==1.34.1\n", - "!pip install git+https://github.com/deepset-ai/haystack.git\n", - "\n", - "# If you run this notebook on Google Colab, you might need to\n", - "# restart the runtime after installing haystack." + "!pip install --upgrade pip\n", + "!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab]" ] }, { @@ -267,7 +264,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.6" + "version": "3.9.7" } }, "nbformat": 4, diff --git a/tutorials/Tutorial3_Basic_QA_Pipeline_without_Elasticsearch.ipynb b/tutorials/Tutorial3_Basic_QA_Pipeline_without_Elasticsearch.ipynb index c4b4788c5e..49e261aa72 100644 --- a/tutorials/Tutorial3_Basic_QA_Pipeline_without_Elasticsearch.ipynb +++ b/tutorials/Tutorial3_Basic_QA_Pipeline_without_Elasticsearch.ipynb @@ -2,6 +2,7 @@ "cells": [ { "cell_type": "markdown", + "metadata": {}, "source": [ "# Build a QA System Without Elasticsearch\n", "\n", @@ -12,11 +13,13 @@ "You can use an `InMemoryDocumentStore` or a `SQLDocumentStore`(with SQLite) as the document store.\n", "\n", "If you are interested in more feature-rich Elasticsearch, then please refer to the Tutorial 1. " - ], - "metadata": {} + ] }, { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "### Prepare environment\n", "\n", @@ -25,88 +28,87 @@ "**Runtime -> Change Runtime type -> Hardware accelerator -> GPU**\n", "\n", "" - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "code", "execution_count": null, - "source": [ - "# Make sure you have a GPU running\n", - "!nvidia-smi" - ], - "outputs": [], "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } - } + }, + "outputs": [], + "source": [ + "# Make sure you have a GPU running\n", + "!nvidia-smi" + ] }, { "cell_type": "code", "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "# Install the latest release of Haystack in your own environment \n", "#! pip install farm-haystack\n", "\n", "# Install the latest master of Haystack\n", - "!pip install grpcio-tools==1.34.1\n", - "!pip install git+https://github.com/deepset-ai/haystack.git\n", - "\n", - "# If you run this notebook on Google Colab, you might need to\n", - "# restart the runtime after installing haystack." - ], - "outputs": [], - "metadata": {} + "!pip install --upgrade pip\n", + "!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab]" + ] }, { "cell_type": "code", "execution_count": 3, - "source": [ - "from haystack.utils import clean_wiki_text, convert_files_to_dicts, fetch_archive_from_http, print_answers\n", - "from haystack.nodes import FARMReader, TransformersReader" - ], - "outputs": [], "metadata": { "pycharm": { "is_executing": false } - } + }, + "outputs": [], + "source": [ + "from haystack.utils import clean_wiki_text, convert_files_to_dicts, fetch_archive_from_http, print_answers\n", + "from haystack.nodes import FARMReader, TransformersReader" + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "## Document Store\n" - ], - "metadata": {} + ] }, { "cell_type": "code", "execution_count": 5, + "metadata": {}, + "outputs": [], "source": [ "# In-Memory Document Store\n", "from haystack.document_stores import InMemoryDocumentStore\n", "document_store = InMemoryDocumentStore()" - ], - "outputs": [], - "metadata": {} + ] }, { "cell_type": "code", "execution_count": 1, + "metadata": {}, + "outputs": [], "source": [ "# SQLite Document Store\n", "# from haystack.document_stores import SQLDocumentStore\n", "# document_store = SQLDocumentStore(url=\"sqlite:///qa.db\")" - ], - "outputs": [], - "metadata": {} + ] }, { "cell_type": "markdown", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "## Preprocessing of documents\n", "\n", @@ -117,16 +119,26 @@ " - writing them to a Document Store\n", "\n", "In this tutorial, we download Wikipedia articles on Game of Thrones, apply a basic cleaning function, and index them in Elasticsearch." - ], - "metadata": { - "pycharm": { - "name": "#%% md\n" - } - } + ] }, { "cell_type": "code", "execution_count": 6, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "04/28/2020 15:06:07 - INFO - haystack.indexing.io - Found data stored in `data/article_txt_got`. Delete this first if you really want to fetch new data.\n", + "04/28/2020 15:06:07 - INFO - haystack.indexing.io - Wrote 517 docs to DB\n" + ] + } + ], "source": [ "# Let's first get some documents that we want to query\n", "# Here: 517 Wikipedia articles for Game of Thrones\n", @@ -147,25 +159,11 @@ "print(dicts[:3])\n", "# Now, let's write the docs to our DB.\n", "document_store.write_documents(dicts)" - ], - "outputs": [ - { - "output_type": "stream", - "name": "stderr", - "text": [ - "04/28/2020 15:06:07 - INFO - haystack.indexing.io - Found data stored in `data/article_txt_got`. Delete this first if you really want to fetch new data.\n", - "04/28/2020 15:06:07 - INFO - haystack.indexing.io - Wrote 517 docs to DB\n" - ] - } - ], - "metadata": { - "pycharm": { - "name": "#%%\n" - } - } + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "## Initalize Retriever, Reader & Pipeline\n", "\n", @@ -174,36 +172,36 @@ "Retrievers help narrowing down the scope for the Reader to smaller units of text where a given question could be answered. \n", "\n", "With InMemoryDocumentStore or SQLDocumentStore, you can use the TfidfRetriever. For more retrievers, please refer to the tutorial-1." - ], - "metadata": {} + ] }, { "cell_type": "code", "execution_count": 7, - "source": [ - "# An in-memory TfidfRetriever based on Pandas dataframes\n", - "\n", - "from haystack.nodes import TfidfRetriever\n", - "retriever = TfidfRetriever(document_store=document_store)" - ], + "metadata": { + "pycharm": { + "is_executing": false, + "name": "#%%\n" + } + }, "outputs": [ { - "output_type": "stream", "name": "stderr", + "output_type": "stream", "text": [ "04/28/2020 15:07:34 - INFO - haystack.retriever.tfidf - Found 2811 candidate paragraphs from 517 docs in DB\n" ] } ], - "metadata": { - "pycharm": { - "is_executing": false, - "name": "#%%\n" - } - } + "source": [ + "# An in-memory TfidfRetriever based on Pandas dataframes\n", + "\n", + "from haystack.nodes import TfidfRetriever\n", + "retriever = TfidfRetriever(document_store=document_store)" + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "### Reader\n", "\n", @@ -222,22 +220,20 @@ "**Hint:** You can adjust the model to return \"no answer possible\" with the no_ans_boost. Higher values mean the model prefers \"no answer possible\"\n", "\n", "#### FARMReader" - ], - "metadata": {} + ] }, { "cell_type": "code", "execution_count": 8, - "source": [ - "# Load a local model or any of the QA models on\n", - "# Hugging Face's model hub (https://huggingface.co/models)\n", - "\n", - "reader = FARMReader(model_name_or_path=\"deepset/roberta-base-squad2\", use_gpu=True)" - ], + "metadata": { + "pycharm": { + "is_executing": false + } + }, "outputs": [ { - "output_type": "stream", "name": "stderr", + "output_type": "stream", "text": [ "04/28/2020 15:07:40 - INFO - farm.utils - device: cpu n_gpu: 0, distributed training: False, automatic mixed precision training: None\n", "04/28/2020 15:07:40 - INFO - farm.infer - Could not find `deepset/roberta-base-squad2` locally. Try to download from model hub ...\n", @@ -249,31 +245,33 @@ ] } ], - "metadata": { - "pycharm": { - "is_executing": false - } - } + "source": [ + "# Load a local model or any of the QA models on\n", + "# Hugging Face's model hub (https://huggingface.co/models)\n", + "\n", + "reader = FARMReader(model_name_or_path=\"deepset/roberta-base-squad2\", use_gpu=True)" + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "#### TransformersReader" - ], - "metadata": {} + ] }, { "cell_type": "code", "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "# Alternative:\n", "# reader = TransformersReader(model_name_or_path=\"distilbert-base-uncased-distilled-squad\", tokenizer=\"distilbert-base-uncased\", use_gpu=-1)" - ], - "outputs": [], - "metadata": {} + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "### Pipeline\n", "\n", @@ -281,44 +279,41 @@ "Under the hood, `Pipelines` are Directed Acyclic Graphs (DAGs) that you can easily customize for your own use cases.\n", "To speed things up, Haystack also comes with a few predefined Pipelines. One of them is the `ExtractiveQAPipeline` that combines a retriever and a reader to answer our questions.\n", "You can learn more about `Pipelines` in the [docs](https://haystack.deepset.ai/docs/latest/pipelinesmd)." - ], - "metadata": {} + ] }, { "cell_type": "code", "execution_count": 9, - "source": [ - "from haystack.pipelines import ExtractiveQAPipeline\n", - "pipe = ExtractiveQAPipeline(reader, retriever)" - ], - "outputs": [], "metadata": { "pycharm": { "is_executing": false } - } + }, + "outputs": [], + "source": [ + "from haystack.pipelines import ExtractiveQAPipeline\n", + "pipe = ExtractiveQAPipeline(reader, retriever)" + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "## Voilà! Ask a question!" - ], - "metadata": {} + ] }, { "cell_type": "code", "execution_count": 10, - "source": [ - "# You can configure how many candidates the reader and retriever shall return\n", - "# The higher top_k for retriever, the better (but also the slower) your answers.\n", - "prediction = pipe.run(\n", - " query=\"Who is the father of Arya Stark?\", params={\"Retriever\": {\"top_k\": 10}, \"Reader\": {\"top_k\": 5}}\n", - ")" - ], + "metadata": { + "pycharm": { + "is_executing": false + } + }, "outputs": [ { - "output_type": "stream", "name": "stderr", + "output_type": "stream", "text": [ "04/28/2020 15:07:54 - INFO - haystack.retriever.tfidf - Identified 10 candidates via retriever:\n", " paragraph_id document_id text\n", @@ -335,32 +330,36 @@ ] }, { - "output_type": "stream", "name": "stderr", + "output_type": "stream", "text": [ "04/28/2020 15:07:54 - INFO - haystack.finder - Reader is looking for detailed answer in 12569 chars ...\n" ] } ], - "metadata": { - "pycharm": { - "is_executing": false - } - } + "source": [ + "# You can configure how many candidates the reader and retriever shall return\n", + "# The higher top_k for retriever, the better (but also the slower) your answers.\n", + "prediction = pipe.run(\n", + " query=\"Who is the father of Arya Stark?\", params={\"Retriever\": {\"top_k\": 10}, \"Reader\": {\"top_k\": 5}}\n", + ")" + ] }, { "cell_type": "code", "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "# prediction = pipe.run(query=\"Who created the Dothraki vocabulary?\", params={\"Reader\": {\"top_k\": 5}})\n", "# prediction = pipe.run(query=\"Who is the sister of Sansa?\", params={\"Reader\": {\"top_k\": 5}})" - ], - "outputs": [], - "metadata": {} + ] }, { "cell_type": "code", "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "# Now you can either print the object directly...\n", "from pprint import pprint\n", @@ -383,22 +382,21 @@ "# 'query': 'Who is the father of Arya Stark?',\n", "# 'root_node': 'Query'\n", "# }" - ], - "outputs": [], - "metadata": {} + ] }, { "cell_type": "code", "execution_count": 11, - "source": [ - "# ...or use a util to simplify the output\n", - "# Change `minimum` to `medium` or `all` to raise the level of detail\n", - "print_answers(prediction, details=\"minimum\")" - ], + "metadata": { + "pycharm": { + "is_executing": false, + "name": "#%%\n" + } + }, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ "[ { 'answer': 'Eddard',\n", " 'context': 's Nymeria after a legendary warrior queen. She travels '\n", @@ -426,15 +424,17 @@ ] } ], - "metadata": { - "pycharm": { - "is_executing": false, - "name": "#%%\n" - } - } + "source": [ + "# ...or use a util to simplify the output\n", + "# Change `minimum` to `medium` or `all` to raise the level of detail\n", + "print_answers(prediction, details=\"minimum\")" + ] }, { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "## About us\n", "\n", @@ -452,10 +452,7 @@ "[Twitter](https://twitter.com/deepset_ai) | [LinkedIn](https://www.linkedin.com/company/deepset-ai/) | [Slack](https://haystack.deepset.ai/community/join) | [GitHub Discussions](https://github.com/deepset-ai/haystack/discussions) | [Website](https://deepset.ai)\n", "\n", "By the way: [we're hiring!](https://www.deepset.ai/jobs)" - ], - "metadata": { - "collapsed": false - } + ] } ], "metadata": { @@ -479,4 +476,4 @@ }, "nbformat": 4, "nbformat_minor": 2 -} \ No newline at end of file +} diff --git a/tutorials/Tutorial4_FAQ_style_QA.ipynb b/tutorials/Tutorial4_FAQ_style_QA.ipynb index 23ab7c167d..d9e7f8cdbc 100644 --- a/tutorials/Tutorial4_FAQ_style_QA.ipynb +++ b/tutorials/Tutorial4_FAQ_style_QA.ipynb @@ -2,6 +2,7 @@ "cells": [ { "cell_type": "markdown", + "metadata": {}, "source": [ "# Utilizing existing FAQs for Question Answering\n", "\n", @@ -20,11 +21,13 @@ "- Generalizability: We can only answer questions that are similar to existing ones in FAQ\n", "\n", "In some use cases, a combination of extractive QA and FAQ-style can also be an interesting option." - ], - "metadata": {} + ] }, { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "### Prepare environment\n", "\n", @@ -33,83 +36,79 @@ "**Runtime -> Change Runtime type -> Hardware accelerator -> GPU**\n", "\n", "" - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "code", "execution_count": null, - "source": [ - "# Make sure you have a GPU running\n", - "!nvidia-smi" - ], - "outputs": [], "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } - } + }, + "outputs": [], + "source": [ + "# Make sure you have a GPU running\n", + "!nvidia-smi" + ] }, { "cell_type": "code", "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "# Install the latest release of Haystack in your own environment \n", "#! pip install farm-haystack\n", "\n", "# Install the latest master of Haystack\n", - "!pip install grpcio-tools==1.34.1\n", - "!pip install git+https://github.com/deepset-ai/haystack.git\n", - "\n", - "# If you run this notebook on Google Colab, you might need to\n", - "# restart the runtime after installing haystack." - ], - "outputs": [], - "metadata": {} + "!pip install --upgrade pip\n", + "!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab]" + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "pycharm": { + "is_executing": false + } + }, + "outputs": [], "source": [ "from haystack.document_stores import ElasticsearchDocumentStore\n", "\n", "from haystack.nodes import EmbeddingRetriever\n", "import pandas as pd\n", "import requests\n" - ], - "outputs": [], - "metadata": { - "pycharm": { - "is_executing": false - } - } + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "### Start an Elasticsearch server\n", "You can start Elasticsearch on your local machine instance using Docker. If Docker is not readily available in your environment (eg., in Colab notebooks), then you can manually download and execute Elasticsearch from source." - ], - "metadata": {} + ] }, { "cell_type": "code", "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "# Recommended: Start Elasticsearch using Docker via the Haystack utility function\n", "from haystack.utils import launch_es\n", "\n", "launch_es()" - ], - "outputs": [], - "metadata": {} + ] }, { "cell_type": "code", "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "# In Colab / No Docker environments: Start Elasticsearch from source\n", "! wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.2-linux-x86_64.tar.gz -q\n", @@ -124,12 +123,13 @@ " )\n", "# wait until ES has started\n", "! sleep 30\n" - ], - "outputs": [], - "metadata": {} + ] }, { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "### Init the DocumentStore\n", "In contrast to Tutorial 1 (extractive QA), we:\n", @@ -137,76 +137,80 @@ "* specify the name of our `text_field` in Elasticsearch that we want to return as an answer\n", "* specify the name of our `embedding_field` in Elasticsearch where we'll store the embedding of our question and that is used later for calculating our similarity to the incoming user question\n", "* set `excluded_meta_data=[\"question_emb\"]` so that we don't return the huge embedding vectors in our search results" - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "code", "execution_count": 2, - "source": [ - "from haystack.document_stores import ElasticsearchDocumentStore\n", - "document_store = ElasticsearchDocumentStore(host=\"localhost\", username=\"\", password=\"\",\n", - " index=\"document\",\n", - " embedding_field=\"question_emb\",\n", - " embedding_dim=384,\n", - " excluded_meta_data=[\"question_emb\"])" - ], + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [ { - "output_type": "stream", "name": "stderr", + "output_type": "stream", "text": [ "04/28/2020 12:27:32 - INFO - elasticsearch - PUT http://localhost:9200/document [status:400 request:0.010s]\n" ] } ], - "metadata": { - "pycharm": { - "name": "#%%\n" - } - } + "source": [ + "from haystack.document_stores import ElasticsearchDocumentStore\n", + "document_store = ElasticsearchDocumentStore(host=\"localhost\", username=\"\", password=\"\",\n", + " index=\"document\",\n", + " embedding_field=\"question_emb\",\n", + " embedding_dim=384,\n", + " excluded_meta_data=[\"question_emb\"])" + ] }, { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "### Create a Retriever using embeddings\n", "Instead of retrieving via Elasticsearch's plain BM25, we want to use vector similarity of the questions (user question vs. FAQ ones).\n", "We can use the `EmbeddingRetriever` for this purpose and specify a model that we use for the embeddings." - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "code", "execution_count": null, - "source": [ - "retriever = EmbeddingRetriever(document_store=document_store, embedding_model=\"sentence-transformers/all-MiniLM-L6-v2\", use_gpu=True)" - ], - "outputs": [], "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } - } + }, + "outputs": [], + "source": [ + "retriever = EmbeddingRetriever(document_store=document_store, embedding_model=\"sentence-transformers/all-MiniLM-L6-v2\", use_gpu=True)" + ] }, { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "### Prepare & Index FAQ data\n", "We create a pandas dataframe containing some FAQ data (i.e curated pairs of question + answer) and index those in elasticsearch.\n", "Here: We download some question-answer pairs related to COVID-19" - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], "source": [ "# Download\n", "temp = requests.get(\"https://raw.githubusercontent.com/deepset-ai/COVID-QA/master/data/faqs/faq_covidbert.csv\")\n", @@ -227,59 +231,55 @@ "# Convert Dataframe to list of dicts and index them in our DocumentStore\n", "docs_to_index = df.to_dict(orient=\"records\")\n", "document_store.write_documents(docs_to_index)" - ], - "outputs": [], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } + ] }, { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "### Ask questions\n", "Initialize a Pipeline (this time without a reader) and ask questions" - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "code", "execution_count": null, - "source": [ - "from haystack.pipelines import FAQPipeline\n", - "pipe = FAQPipeline(retriever=retriever)" - ], - "outputs": [], "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } - } + }, + "outputs": [], + "source": [ + "from haystack.pipelines import FAQPipeline\n", + "pipe = FAQPipeline(retriever=retriever)" + ] }, { "cell_type": "code", "execution_count": null, - "source": [ - "from haystack.utils import print_answers\n", - "\n", - "prediction = pipe.run(query=\"How is the virus spreading?\", params={\"Retriever\": {\"top_k\": 10}})\n", - "print_answers(prediction, details=\"medium\")" - ], - "outputs": [], "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } - } + }, + "outputs": [], + "source": [ + "from haystack.utils import print_answers\n", + "\n", + "prediction = pipe.run(query=\"How is the virus spreading?\", params={\"Retriever\": {\"top_k\": 10}})\n", + "print_answers(prediction, details=\"medium\")" + ] }, { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "## About us\n", "\n", @@ -297,10 +297,7 @@ "[Twitter](https://twitter.com/deepset_ai) | [LinkedIn](https://www.linkedin.com/company/deepset-ai/) | [Slack](https://haystack.deepset.ai/community/join) | [GitHub Discussions](https://github.com/deepset-ai/haystack/discussions) | [Website](https://deepset.ai)\n", "\n", "By the way: [we're hiring!](https://www.deepset.ai/jobs)" - ], - "metadata": { - "collapsed": false - } + ] } ], "metadata": { @@ -324,4 +321,4 @@ }, "nbformat": 4, "nbformat_minor": 2 -} \ No newline at end of file +} diff --git a/tutorials/Tutorial5_Evaluation.ipynb b/tutorials/Tutorial5_Evaluation.ipynb index 21727f457e..32415ae6ee 100644 --- a/tutorials/Tutorial5_Evaluation.ipynb +++ b/tutorials/Tutorial5_Evaluation.ipynb @@ -1,14689 +1,370 @@ { - "nbformat": 4, - "nbformat_minor": 2, - "metadata": { - "accelerator": "GPU", - "colab": { - "name": "Tutorial5_Evaluation.ipynb", - "provenance": [] - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3.9.5 64-bit ('venv': venv)" + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "collapsed": true, + "id": "MGSXn0USOhtu", + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "# Evaluation of a Pipeline and its Components\n", + "\n", + "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/deepset-ai/haystack/blob/master/tutorials/Tutorial5_Evaluation.ipynb)\n", + "\n", + "To be able to make a statement about the quality of results a question-answering pipeline or any other pipeline in haystack produces, it is important to evaluate it. Furthermore, evaluation allows determining which components of the pipeline can be improved.\n", + "The results of the evaluation can be saved as CSV files, which contain all the information to calculate additional metrics later on or inspect individual predictions." + ] }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 + { + "cell_type": "markdown", + "metadata": { + "collapsed": false, + "id": "lEKOjCS5U7so" }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.5" + "source": [ + "### Prepare environment\n", + "\n", + "#### Colab: Enable the GPU runtime\n", + "Make sure you enable the GPU runtime to experience decent speed in this tutorial.\n", + "**Runtime -> Change Runtime type -> Hardware accelerator -> GPU**\n", + "\n", + "" + ] }, - "widgets": { - "application/vnd.jupyter.widget-state+json": { - "118aedffeecd4f109ae04a4561baeb08": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_59efb57b419242a1aba4d20084e29d38", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_ddaf59cedca143c8b4fe005a51077323", - "IPY_MODEL_25d7818d6f7b4b628ab3f83f2c2fa6a3", - "IPY_MODEL_48431fa7696540fc9696799f75166680" - ] - } + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - "59efb57b419242a1aba4d20084e29d38": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } + "id": "xhFIMX_7U7ss", + "outputId": "285b2491-01e5-4bfd-cba9-c2279d4417c4", + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "# Make sure you have a GPU running\n", + "!nvidia-smi" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 }, - "ddaf59cedca143c8b4fe005a51077323": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_a21f4958105f4b3ca32f0977bcfd7d48", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "Downloading: 100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_3d211e6614f4451e9d14866cb3a8332d" - } + "id": "vgmFOp82Oht_", + "outputId": "5bbcbb42-3a90-43a9-ebfd-598a98fa7143", + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "# Install the latest release of Haystack in your own environment \n", + "#! pip install farm-haystack\n", + "\n", + "# Install the latest master of Haystack\n", + "!pip install --upgrade pip\n", + "!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "from haystack.modeling.utils import initialize_device_settings\n", + "devices, n_gpu = initialize_device_settings(use_cuda=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": false + }, + "source": [ + "## Start an Elasticsearch server\n", + "You can start Elasticsearch on your local machine instance using Docker. If Docker is not readily available in your environment (eg., in Colab notebooks), then you can manually download and execute Elasticsearch from source." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "tNoaWcDKOhuL", + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "# If Docker is available: Start Elasticsearch as docker container\n", + "# from haystack.utils import launch_es\n", + "# launch_es()\n", + "\n", + "# Alternative in Colab / No Docker environments: Start Elasticsearch from source\n", + "! wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.2-linux-x86_64.tar.gz -q\n", + "! tar -xzf elasticsearch-7.9.2-linux-x86_64.tar.gz\n", + "! chown -R daemon:daemon elasticsearch-7.9.2\n", + "\n", + "import os\n", + "from subprocess import Popen, PIPE, STDOUT\n", + "es_server = Popen(['elasticsearch-7.9.2/bin/elasticsearch'],\n", + " stdout=PIPE, stderr=STDOUT,\n", + " preexec_fn=lambda: os.setuid(1) # as daemon\n", + " )\n", + "# wait until ES has started\n", + "! sleep 30" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": false + }, + "source": [ + "## Fetch, Store And Preprocess the Evaluation Dataset" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - "25d7818d6f7b4b628ab3f83f2c2fa6a3": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_3df3da3d04d5448c810bd00f66bd3a0e", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 571, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 571, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_8dfc1480100f43e0b4ea2fc2fb9279d3" - } - }, - "48431fa7696540fc9696799f75166680": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_0618a236cc14473f92257aebbc3d930d", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 571/571 [00:00<00:00, 12.0kB/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_8e0958b5dc27412e9f0332da3457ffdb" - } + "id": "tTXxr6TAOhuz", + "outputId": "586d4775-4354-4ed9-a72c-c30bedcdfbee", + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "from haystack.utils import fetch_archive_from_http\n", + "\n", + "# Download evaluation data, which is a subset of Natural Questions development set containing 50 documents with one question per document and multiple annotated answers\n", + "doc_dir = \"../data/nq\"\n", + "s3_url = \"https://s3.eu-central-1.amazonaws.com/deepset.ai-farm-qa/datasets/nq_dev_subset_v2.json.zip\"\n", + "fetch_archive_from_http(url=s3_url, output_dir=doc_dir)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "T-G7Ay2jU7s_" + }, + "outputs": [], + "source": [ + "# make sure these indices do not collide with existing ones, the indices will be wiped clean before data is inserted\n", + "doc_index = \"tutorial5_docs\"\n", + "label_index = \"tutorial5_labels\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "B_NEtezLOhu5", + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "# Connect to Elasticsearch\n", + "from haystack.document_stores import ElasticsearchDocumentStore\n", + "\n", + "# Connect to Elasticsearch\n", + "document_store = ElasticsearchDocumentStore(host=\"localhost\", username=\"\", password=\"\", index=doc_index,\n", + " label_index=label_index, embedding_field=\"emb\",\n", + " embedding_dim=768, excluded_meta_data=[\"emb\"])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - "a21f4958105f4b3ca32f0977bcfd7d48": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } + "id": "bRFsQUAJOhu_", + "outputId": "477031b9-5c2c-4128-ef5f-54db86259734", + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "from haystack.nodes import PreProcessor\n", + "\n", + "# Add evaluation data to Elasticsearch Document Store\n", + "# We first delete the custom tutorial indices to not have duplicate elements\n", + "# and also split our documents into shorter passages using the PreProcessor\n", + "preprocessor = PreProcessor(\n", + " split_length=200,\n", + " split_overlap=0,\n", + " split_respect_sentence_boundary=False,\n", + " clean_empty_lines=False,\n", + " clean_whitespace=False\n", + ")\n", + "document_store.delete_documents(index=doc_index)\n", + "document_store.delete_documents(index=label_index)\n", + "\n", + "# The add_eval_data() method converts the given dataset in json format into Haystack document and label objects. Those objects are then indexed in their respective document and label index in the document store. The method can be used with any dataset in SQuAD format.\n", + "document_store.add_eval_data(\n", + " filename=\"../data/nq/nq_dev_subset_v2.json\",\n", + " doc_index=doc_index,\n", + " label_index=label_index,\n", + " preprocessor=preprocessor\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "gy8YwmSYOhvE", + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "## Initialize the Two Components of an ExtractiveQAPipeline: Retriever and Reader" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "JkhaPMIJOhvF", + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "# Initialize Retriever\n", + "from haystack.nodes import ElasticsearchRetriever\n", + "retriever = ElasticsearchRetriever(document_store=document_store)\n", + "# Alternative: Evaluate dense retrievers (DensePassageRetriever or EmbeddingRetriever)\n", + "# DensePassageRetriever uses two separate transformer based encoders for query and document.\n", + "# In contrast, EmbeddingRetriever uses a single encoder for both.\n", + "# Please make sure the \"embedding_dim\" parameter in the DocumentStore above matches the output dimension of your models!\n", + "# Please also take care that the PreProcessor splits your files into chunks that can be completely converted with\n", + "# the max_seq_len limitations of Transformers\n", + "# The SentenceTransformer model \"all-mpnet-base-v2\" generally works well with the EmbeddingRetriever on any kind of English text.\n", + "# For more information check out the documentation at: https://www.sbert.net/docs/pretrained_models.html\n", + "# from haystack.retriever import DensePassageRetriever, EmbeddingRetriever\n", + "# retriever = DensePassageRetriever(document_store=document_store,\n", + "# query_embedding_model=\"facebook/dpr-question_encoder-single-nq-base\",\n", + "# passage_embedding_model=\"facebook/dpr-ctx_encoder-single-nq-base\",\n", + "# use_gpu=True,\n", + "# max_seq_len_passage=256,\n", + "# embed_title=True)\n", + "# retriever = EmbeddingRetriever(document_store=document_store, model_format=\"sentence_transformers\",\n", + "# embedding_model=\"all-mpnet-base-v2\")\n", + "# document_store.update_embeddings(retriever, index=doc_index)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 313, + "referenced_widgets": [ + "118aedffeecd4f109ae04a4561baeb08", + "59efb57b419242a1aba4d20084e29d38", + "ddaf59cedca143c8b4fe005a51077323", + "25d7818d6f7b4b628ab3f83f2c2fa6a3", + "48431fa7696540fc9696799f75166680", + "a21f4958105f4b3ca32f0977bcfd7d48", + "3d211e6614f4451e9d14866cb3a8332d", + "3df3da3d04d5448c810bd00f66bd3a0e", + "8dfc1480100f43e0b4ea2fc2fb9279d3", + "0618a236cc14473f92257aebbc3d930d", + "8e0958b5dc27412e9f0332da3457ffdb", + "6f7ddc1720344ba9b939a8e4ac593d67", + "b480c97c1d9944b9a8dd09ed6e1e9bd3", + "ed683929822b4084ba33e89b23936b16", + "94c88d0fc3f949fbacfb6b4fcd99cc63", + "b262e92ff6484405a0e9364f6ecafb6a", + "bacf1704dbaf4176afbe2cbcc8e036ef", + "fe56b1d86ab84675b82781a1f8edd40a", + "d7e3c8e1e0424cec9dc1b97090b5af87", + "98da94a8d7b94fb4a08adcebea15e114", + "13b75146701145808315dc87d598b3f9", + "2bd3bd51ae644c1894a2ddca09d14e85", + "59039df74ce64c2f9e91663b6498c29c", + "9e130b97f0f4463f85df834d0f99d6ef", + "2c028a3f096344d68071d78387efa117", + "4d922fb301f944fbb0218335a28cf6e5", + "05d82995d5a94b5db39bf639d1cc05c2", + "76f4af76b42f460fa34d5f00a9656dc5", + "73d7fdd3f38349b4882124d8351eace5", + "ea439e2251ed467fb3a775f0c8e0c3bb", + "b6729cc6ba084677af55ac63c819b72f", + "fc011913e8464d439a97fe75ef5f9fa1", + "8a9f9b7bab8e40278430a35720066a61", + "5db857b352964db3a617568ff1dce86d", + "7752437041f745a4af4b9130df3fefa7", + "5f94d400ea884c1cadfc966e44849b3a", + "0d34710578ac4c1db6fe372b5d1215b4", + "994ae85181664e2e87a2ee18a7a237ba", + "368a61e33c3144bfa3cc94af10691146", + "ccfd1a0b6f494d8a9d78e7387261fba8", + "db57281b3d7a448fbd2d63d8f127ea3e", + "978b165c69dd4e14b8479ea7bd8cb1e5", + "6f028c7e888e4ae5ab5c1e42ff142b5f", + "c8ba8c2a210b45f6a9b5257589babac3", + "36f855f41cc1488f9d92ec34bb8d30b0", + "1d5d220bedc54dbdbacb9c43767bf64d", + "0523b10429d04f3d81d7078a13a12168", + "64cd5b6f0c4d4631a1049ee7ee50f063", + "eb11ea5785284bf6a15cc31ad643ed88", + "807e4eee3b2c440c8799afcc6344ff5d", + "6ca6dc2c6b4349fcb39ed8c44f65bdb0", + "4837b34ccb4d4688865dc24dc58a7c1e", + "d4dbfa5e89e7432dbed34606a786fd6f", + "7e058076836e438daf5399428eabac5e", + "a529dbbfdd6b469dbfe80cee993c9a33", + "69750fea2e7149eab8928282ba9bae29", + "08a1d1a6fb884c769d409170d6cda556", + "548ef6c85056414cb0ce79164a086d35", + "cf58b340496b4d62b610451cedbd709a", + "4dad7e58cc47436aafe38230514325a1", + "f36dc87a4af7481cb3c2cba23d57eb5a", + "2a9ef1f2f43d47b28cd0ff7ef4a21ade", + "caa374f7dc5045218c6f71f322d8e6be", + "e567fab4446544f795be2eb0a6705f9c", + "2b17ffac93b8406fac55b695d93d963b", + "3096cae7388e4b988df306be9cc58afd" + ] }, - "3d211e6614f4451e9d14866cb3a8332d": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "3df3da3d04d5448c810bd00f66bd3a0e": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "8dfc1480100f43e0b4ea2fc2fb9279d3": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "0618a236cc14473f92257aebbc3d930d": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "8e0958b5dc27412e9f0332da3457ffdb": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "6f7ddc1720344ba9b939a8e4ac593d67": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_b480c97c1d9944b9a8dd09ed6e1e9bd3", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_ed683929822b4084ba33e89b23936b16", - "IPY_MODEL_94c88d0fc3f949fbacfb6b4fcd99cc63", - "IPY_MODEL_b262e92ff6484405a0e9364f6ecafb6a" - ] - } - }, - "b480c97c1d9944b9a8dd09ed6e1e9bd3": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "ed683929822b4084ba33e89b23936b16": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_bacf1704dbaf4176afbe2cbcc8e036ef", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "Downloading: 100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_fe56b1d86ab84675b82781a1f8edd40a" - } - }, - "94c88d0fc3f949fbacfb6b4fcd99cc63": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_d7e3c8e1e0424cec9dc1b97090b5af87", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 496313727, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 496313727, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_98da94a8d7b94fb4a08adcebea15e114" - } - }, - "b262e92ff6484405a0e9364f6ecafb6a": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_13b75146701145808315dc87d598b3f9", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 496M/496M [00:15<00:00, 30.4MB/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_2bd3bd51ae644c1894a2ddca09d14e85" - } - }, - "bacf1704dbaf4176afbe2cbcc8e036ef": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "fe56b1d86ab84675b82781a1f8edd40a": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "d7e3c8e1e0424cec9dc1b97090b5af87": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "98da94a8d7b94fb4a08adcebea15e114": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "13b75146701145808315dc87d598b3f9": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "2bd3bd51ae644c1894a2ddca09d14e85": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "59039df74ce64c2f9e91663b6498c29c": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_9e130b97f0f4463f85df834d0f99d6ef", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_2c028a3f096344d68071d78387efa117", - "IPY_MODEL_4d922fb301f944fbb0218335a28cf6e5", - "IPY_MODEL_05d82995d5a94b5db39bf639d1cc05c2" - ] - } - }, - "9e130b97f0f4463f85df834d0f99d6ef": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "2c028a3f096344d68071d78387efa117": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_76f4af76b42f460fa34d5f00a9656dc5", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "Downloading: 100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_73d7fdd3f38349b4882124d8351eace5" - } - }, - "4d922fb301f944fbb0218335a28cf6e5": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_ea439e2251ed467fb3a775f0c8e0c3bb", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 898822, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 898822, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_b6729cc6ba084677af55ac63c819b72f" - } - }, - "05d82995d5a94b5db39bf639d1cc05c2": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_fc011913e8464d439a97fe75ef5f9fa1", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 899k/899k [00:00<00:00, 1.33MB/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_8a9f9b7bab8e40278430a35720066a61" - } - }, - "76f4af76b42f460fa34d5f00a9656dc5": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "73d7fdd3f38349b4882124d8351eace5": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "ea439e2251ed467fb3a775f0c8e0c3bb": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "b6729cc6ba084677af55ac63c819b72f": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "fc011913e8464d439a97fe75ef5f9fa1": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "8a9f9b7bab8e40278430a35720066a61": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "5db857b352964db3a617568ff1dce86d": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_7752437041f745a4af4b9130df3fefa7", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_5f94d400ea884c1cadfc966e44849b3a", - "IPY_MODEL_0d34710578ac4c1db6fe372b5d1215b4", - "IPY_MODEL_994ae85181664e2e87a2ee18a7a237ba" - ] - } - }, - "7752437041f745a4af4b9130df3fefa7": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "5f94d400ea884c1cadfc966e44849b3a": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_368a61e33c3144bfa3cc94af10691146", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "Downloading: 100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_ccfd1a0b6f494d8a9d78e7387261fba8" - } - }, - "0d34710578ac4c1db6fe372b5d1215b4": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_db57281b3d7a448fbd2d63d8f127ea3e", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 456318, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 456318, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_978b165c69dd4e14b8479ea7bd8cb1e5" - } - }, - "994ae85181664e2e87a2ee18a7a237ba": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_6f028c7e888e4ae5ab5c1e42ff142b5f", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 456k/456k [00:00<00:00, 714kB/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_c8ba8c2a210b45f6a9b5257589babac3" - } - }, - "368a61e33c3144bfa3cc94af10691146": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "ccfd1a0b6f494d8a9d78e7387261fba8": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "db57281b3d7a448fbd2d63d8f127ea3e": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "978b165c69dd4e14b8479ea7bd8cb1e5": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "6f028c7e888e4ae5ab5c1e42ff142b5f": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "c8ba8c2a210b45f6a9b5257589babac3": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "36f855f41cc1488f9d92ec34bb8d30b0": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_1d5d220bedc54dbdbacb9c43767bf64d", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_0523b10429d04f3d81d7078a13a12168", - "IPY_MODEL_64cd5b6f0c4d4631a1049ee7ee50f063", - "IPY_MODEL_eb11ea5785284bf6a15cc31ad643ed88" - ] - } - }, - "1d5d220bedc54dbdbacb9c43767bf64d": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "0523b10429d04f3d81d7078a13a12168": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_807e4eee3b2c440c8799afcc6344ff5d", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "Downloading: 100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_6ca6dc2c6b4349fcb39ed8c44f65bdb0" - } - }, - "64cd5b6f0c4d4631a1049ee7ee50f063": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_4837b34ccb4d4688865dc24dc58a7c1e", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 772, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 772, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_d4dbfa5e89e7432dbed34606a786fd6f" - } - }, - "eb11ea5785284bf6a15cc31ad643ed88": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_7e058076836e438daf5399428eabac5e", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 772/772 [00:00<00:00, 15.6kB/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_a529dbbfdd6b469dbfe80cee993c9a33" - } - }, - "807e4eee3b2c440c8799afcc6344ff5d": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "6ca6dc2c6b4349fcb39ed8c44f65bdb0": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "4837b34ccb4d4688865dc24dc58a7c1e": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "d4dbfa5e89e7432dbed34606a786fd6f": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "7e058076836e438daf5399428eabac5e": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "a529dbbfdd6b469dbfe80cee993c9a33": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "69750fea2e7149eab8928282ba9bae29": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_08a1d1a6fb884c769d409170d6cda556", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_548ef6c85056414cb0ce79164a086d35", - "IPY_MODEL_cf58b340496b4d62b610451cedbd709a", - "IPY_MODEL_4dad7e58cc47436aafe38230514325a1" - ] - } - }, - "08a1d1a6fb884c769d409170d6cda556": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "548ef6c85056414cb0ce79164a086d35": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_f36dc87a4af7481cb3c2cba23d57eb5a", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "Downloading: 100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_2a9ef1f2f43d47b28cd0ff7ef4a21ade" - } - }, - "cf58b340496b4d62b610451cedbd709a": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_caa374f7dc5045218c6f71f322d8e6be", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 79, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 79, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_e567fab4446544f795be2eb0a6705f9c" - } - }, - "4dad7e58cc47436aafe38230514325a1": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_2b17ffac93b8406fac55b695d93d963b", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 79.0/79.0 [00:00<00:00, 1.81kB/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_3096cae7388e4b988df306be9cc58afd" - } - }, - "f36dc87a4af7481cb3c2cba23d57eb5a": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "2a9ef1f2f43d47b28cd0ff7ef4a21ade": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "caa374f7dc5045218c6f71f322d8e6be": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "e567fab4446544f795be2eb0a6705f9c": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "2b17ffac93b8406fac55b695d93d963b": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "3096cae7388e4b988df306be9cc58afd": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "697432dd99b946688ba52fdf5d5542c1": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_042038fce6024fbbba45d9afc21c4dc9", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_26f3c26b0c5a4e7d945029e516f17ff8", - "IPY_MODEL_7acf9b34256b41909f27cf6552fa8499", - "IPY_MODEL_5254f681c78941c9a3679fbbf6853d3a" - ] - } - }, - "042038fce6024fbbba45d9afc21c4dc9": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "26f3c26b0c5a4e7d945029e516f17ff8": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_c9025edb46eb43a98a9259380de08a36", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "Downloading: 100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_8262368800754a6db7490a90dc94cbf8" - } - }, - "7acf9b34256b41909f27cf6552fa8499": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_8d9368d2c2284625932361fe790d30ca", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 723, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 723, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_60dfc3ed0c8a45eebeaf8e35868e7708" - } - }, - "5254f681c78941c9a3679fbbf6853d3a": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_9480ca5448ad4a54ba09bd40356e9cf5", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 723/723 [00:00<00:00, 14.9kB/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_7abf0d496b76497882548ebde72f91cd" - } - }, - "c9025edb46eb43a98a9259380de08a36": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "8262368800754a6db7490a90dc94cbf8": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "8d9368d2c2284625932361fe790d30ca": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "60dfc3ed0c8a45eebeaf8e35868e7708": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "9480ca5448ad4a54ba09bd40356e9cf5": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "7abf0d496b76497882548ebde72f91cd": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "ffa7713a91ff4af2bc7c4bdc3ecd7467": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_d5d5aae1f1084c82ba5ecc9ee0b6c473", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_c08ac5e6c7be413d9daf19ab5ecfeec3", - "IPY_MODEL_82d32df32d244290aea5f10cdc03e652", - "IPY_MODEL_365ec9a2c50d4e7385ef438bed36b5d8" - ] - } - }, - "d5d5aae1f1084c82ba5ecc9ee0b6c473": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "c08ac5e6c7be413d9daf19ab5ecfeec3": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_0ee7399f4e2148b38ad2dd0ef1816e78", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "Downloading: 100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_7d9a11beefe5478b97ca0a31005a6147" - } - }, - "82d32df32d244290aea5f10cdc03e652": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_6fae51602c934f6fbc6eb7b0d37e2c26", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 690, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 690, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_86759f2581904ff1a2736bcbe9d58fff" - } - }, - "365ec9a2c50d4e7385ef438bed36b5d8": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_409228238c94434eaa63fbb715df4f80", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 690/690 [00:00<00:00, 15.0kB/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_fad323f7b8fb49e79c65ddb87f9f5346" - } - }, - "0ee7399f4e2148b38ad2dd0ef1816e78": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "7d9a11beefe5478b97ca0a31005a6147": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "6fae51602c934f6fbc6eb7b0d37e2c26": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "86759f2581904ff1a2736bcbe9d58fff": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "409228238c94434eaa63fbb715df4f80": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "fad323f7b8fb49e79c65ddb87f9f5346": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "435328b6647d4d2986ca27179aa9a3cb": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_66afe6aa36534f4897afdf035037c66c", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_d27877c6ad6148078e176ae4ce363c35", - "IPY_MODEL_8c88d2fa52474307a130a2d9ae6f1810", - "IPY_MODEL_b0744737aba1427aa04d33402e0c7a2a" - ] - } - }, - "66afe6aa36534f4897afdf035037c66c": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "d27877c6ad6148078e176ae4ce363c35": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_427f364bc9644745ad3f7abfc43b7b6e", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "Downloading: 100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_ed3b4899817c47d6b196558e49cc59b2" - } - }, - "8c88d2fa52474307a130a2d9ae6f1810": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_aa334bfffc9d4476b34351a9c3d62a7b", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 3769, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 3769, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_28c517182585423aa28e3b2d949678c4" - } - }, - "b0744737aba1427aa04d33402e0c7a2a": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_9ebec730f45746ac8ddb4fc710f90f54", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 3.77k/3.77k [00:00<00:00, 89.7kB/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_a30bb6e73ecb450b9e94ceca871f4958" - } - }, - "427f364bc9644745ad3f7abfc43b7b6e": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "ed3b4899817c47d6b196558e49cc59b2": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "aa334bfffc9d4476b34351a9c3d62a7b": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "28c517182585423aa28e3b2d949678c4": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "9ebec730f45746ac8ddb4fc710f90f54": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "a30bb6e73ecb450b9e94ceca871f4958": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "746adb0fb9964e27b9f9a92a94022d25": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_959e2396a101463e9796ae461f189e5d", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_8e52fb3f81ba4607bfd12c3302a98ee8", - "IPY_MODEL_6533e9e24e5c4ecfbb12de41cc170975", - "IPY_MODEL_ea2992e1f7144cc29c3bfffbbf64e2ac" - ] - } - }, - "959e2396a101463e9796ae461f189e5d": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "8e52fb3f81ba4607bfd12c3302a98ee8": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_e8eac538b81143b6a1e3b30746a15722", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "Downloading: 100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_90acd09e75c34642aff6bfbb9ab29f89" - } - }, - "6533e9e24e5c4ecfbb12de41cc170975": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_18359b5df7574a289e8b4582f65ab0a3", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 723, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 723, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_d345a0d6a7a84e51bbbcd282082b1186" - } - }, - "ea2992e1f7144cc29c3bfffbbf64e2ac": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_9f91aaa7eef54c55aa1ba46eb3baa617", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 723/723 [00:00<00:00, 19.3kB/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_c9e8420edbab45429112a7884b57306d" - } - }, - "e8eac538b81143b6a1e3b30746a15722": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "90acd09e75c34642aff6bfbb9ab29f89": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "18359b5df7574a289e8b4582f65ab0a3": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "d345a0d6a7a84e51bbbcd282082b1186": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "9f91aaa7eef54c55aa1ba46eb3baa617": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "c9e8420edbab45429112a7884b57306d": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "b140eb98a700455a902dcfbd871593e9": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_443a8a6c17964705931974c420229649", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_92e22c5bafcd4a51ba54203776dde02f", - "IPY_MODEL_420f93d2f7474dc38922c2277b5bcfcc", - "IPY_MODEL_a1dd2c997cc34344aa83fc1bf59560c9" - ] - } - }, - "443a8a6c17964705931974c420229649": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "92e22c5bafcd4a51ba54203776dde02f": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_b0108675bf6b4457bfce64cead45ec31", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "Downloading: 100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_08c0344f4cfc4ba7b9271e4301ee9095" - } - }, - "420f93d2f7474dc38922c2277b5bcfcc": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_ceb036e9f5bd4e9da47db5dff3eb3acb", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 122, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 122, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_1873a766e7c64601b4be489d700e4b9b" - } - }, - "a1dd2c997cc34344aa83fc1bf59560c9": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_307f6af0ea724573a59c5ef0a429fd0c", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 122/122 [00:00<00:00, 2.31kB/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_edba6fb34578451ab5e4a08ea3a5eb25" - } - }, - "b0108675bf6b4457bfce64cead45ec31": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "08c0344f4cfc4ba7b9271e4301ee9095": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "ceb036e9f5bd4e9da47db5dff3eb3acb": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "1873a766e7c64601b4be489d700e4b9b": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "307f6af0ea724573a59c5ef0a429fd0c": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "edba6fb34578451ab5e4a08ea3a5eb25": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "397fea90e5944348b0ab71f87a3c42aa": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_53cf5abeba59442fa559ba35ad96f279", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_2458d71e71554da3bd7edf35a340f700", - "IPY_MODEL_1bd03e9d1a994d96866759d0eeab61e1", - "IPY_MODEL_a867e816d795422ba16cfb3b4295e7f2" - ] - } - }, - "53cf5abeba59442fa559ba35ad96f279": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "2458d71e71554da3bd7edf35a340f700": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_b1845caaff584163b6d9723f4e67f5b2", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "Downloading: 100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_3f96ab0342bc416ab7b2fad271be8100" - } - }, - "1bd03e9d1a994d96866759d0eeab61e1": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_e4f7466fd5964628b32ffe8a773c4ff6", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 229, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 229, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_ecbc440b3bd341e6b0e19f0088c58930" - } - }, - "a867e816d795422ba16cfb3b4295e7f2": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_29317e31312545c49d51cde6c617fe3f", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 229/229 [00:00<00:00, 5.50kB/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_735cb17199d9403b9d65f598067fb17f" - } - }, - "b1845caaff584163b6d9723f4e67f5b2": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "3f96ab0342bc416ab7b2fad271be8100": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "e4f7466fd5964628b32ffe8a773c4ff6": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "ecbc440b3bd341e6b0e19f0088c58930": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "29317e31312545c49d51cde6c617fe3f": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "735cb17199d9403b9d65f598067fb17f": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "7b874e92087d45019bd381d8307084f7": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_cc26364d10054a7a850f514c8e4d0334", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_629d1895d93a44b29c7748e11268580a", - "IPY_MODEL_b60fa302bb5c40d5b224afb0dd69d05a", - "IPY_MODEL_829b1cb886824151b9579022eeaa3566" - ] - } - }, - "cc26364d10054a7a850f514c8e4d0334": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "629d1895d93a44b29c7748e11268580a": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_77a3254e2c404c129ce7f43d850f3b7a", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "Downloading: 100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_312b5718b838451d896f3447b9f9880c" - } - }, - "b60fa302bb5c40d5b224afb0dd69d05a": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_7189cebe70004a4293a9d868cada294e", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 1112253233, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 1112253233, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_45a892664d8d4a2abba2bc805208868e" - } - }, - "829b1cb886824151b9579022eeaa3566": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_e313f0433c7442efab35dc7e942d6de2", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 1.11G/1.11G [00:34<00:00, 30.3MB/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_21444149a59e4761a47d0ef483c7aa45" - } - }, - "77a3254e2c404c129ce7f43d850f3b7a": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "312b5718b838451d896f3447b9f9880c": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "7189cebe70004a4293a9d868cada294e": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "45a892664d8d4a2abba2bc805208868e": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "e313f0433c7442efab35dc7e942d6de2": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "21444149a59e4761a47d0ef483c7aa45": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "572742602e624001a1e3732444a6f43b": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_b6e52e3a6ee54efbaa1291320b47f411", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_9ca52d8d4e7148f7bead223fa5740d16", - "IPY_MODEL_4ebe093dbae1435eb6b032fbfae21a77", - "IPY_MODEL_34a4db43ae9f481ea86e79a5bff2e3ef" - ] - } - }, - "b6e52e3a6ee54efbaa1291320b47f411": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "9ca52d8d4e7148f7bead223fa5740d16": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_5bbf16f90e5a44ba953943e51af0a384", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "Downloading: 100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_bcdf21e10d1c4307b92821b3a73786c8" - } - }, - "4ebe093dbae1435eb6b032fbfae21a77": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_3f915b2f0bba48c48865ac5b45487822", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 53, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 53, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_277e1f68e583461694dbfbd7354154c9" - } - }, - "34a4db43ae9f481ea86e79a5bff2e3ef": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_b2955f26a1b34b21881c6a98f92234ad", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 53.0/53.0 [00:00<00:00, 1.11kB/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_b794ab54698f4db18ae5edabc7d96783" - } - }, - "5bbf16f90e5a44ba953943e51af0a384": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "bcdf21e10d1c4307b92821b3a73786c8": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "3f915b2f0bba48c48865ac5b45487822": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "277e1f68e583461694dbfbd7354154c9": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "b2955f26a1b34b21881c6a98f92234ad": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "b794ab54698f4db18ae5edabc7d96783": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "7efc0f6ef85348fc9e63e281ff4e3fac": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_50e872048a9b4fe58800126c39a0d027", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_c4858bf392de41ef8f9f0d7712831961", - "IPY_MODEL_d0aaca4a935441058eddc873e6d63b39", - "IPY_MODEL_05dd9db4d2e94210ae4b62fad5f6f302" - ] - } - }, - "50e872048a9b4fe58800126c39a0d027": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "c4858bf392de41ef8f9f0d7712831961": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_81118afd469847e4b552c17f67bdeb81", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "Downloading: 100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_fc84f721213f407b8831398dce1984ad" - } - }, - "d0aaca4a935441058eddc873e6d63b39": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_48182100536a425f9a9955fecf19627d", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 5069051, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 5069051, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_34620791c5d145bfbb0a787f0ca4eb6b" - } - }, - "05dd9db4d2e94210ae4b62fad5f6f302": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_caae193b34644af7950e2e3eac81a5bb", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 5.07M/5.07M [00:00<00:00, 22.4MB/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_83aee8bf612345a18aea950c9a1fa143" - } - }, - "81118afd469847e4b552c17f67bdeb81": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "fc84f721213f407b8831398dce1984ad": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "48182100536a425f9a9955fecf19627d": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "34620791c5d145bfbb0a787f0ca4eb6b": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "caae193b34644af7950e2e3eac81a5bb": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "83aee8bf612345a18aea950c9a1fa143": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "3478990a21b54ac090ae93e5a3bbd084": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_5e3141a3a8584caaae4a2134a21d15a4", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_798c7b005e1a490e9a4a9de4569e9351", - "IPY_MODEL_44aaf2ebc82c4331ac7f1eed39f3706d", - "IPY_MODEL_331bc9eb57ce4c5d8deaa47e5aaa078a" - ] - } - }, - "5e3141a3a8584caaae4a2134a21d15a4": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "798c7b005e1a490e9a4a9de4569e9351": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_a9552d04ed6045718cc60ad1c2764a32", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "Downloading: 100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_c10f5dc8d3684757bc6102d734c555f6" - } - }, - "44aaf2ebc82c4331ac7f1eed39f3706d": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_56206fe85d3744589433ac7cd8dd756d", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 239, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 239, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_2da12d480a1d4907beada5f8d80cdf1e" - } - }, - "331bc9eb57ce4c5d8deaa47e5aaa078a": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_eb8e6976ca9e4a58851ec0a51107d74f", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 239/239 [00:00<00:00, 5.12kB/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_30f65cab87754a3e9cf0ff90ac6a6658" - } - }, - "a9552d04ed6045718cc60ad1c2764a32": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "c10f5dc8d3684757bc6102d734c555f6": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "56206fe85d3744589433ac7cd8dd756d": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "2da12d480a1d4907beada5f8d80cdf1e": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "eb8e6976ca9e4a58851ec0a51107d74f": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "30f65cab87754a3e9cf0ff90ac6a6658": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "5d65e5693e64421da29ea68e5bf806fc": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_016b6c1acdd04369ab22c635e69382bb", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_8aa11778066445eab63794589f241463", - "IPY_MODEL_bb9530a97bdf4221995c34ecdac01177", - "IPY_MODEL_a47599795dff439fa7133ed5d786edcb" - ] - } - }, - "016b6c1acdd04369ab22c635e69382bb": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "8aa11778066445eab63794589f241463": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_09cb41d0bbc14a24b8dde747c249a78e", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "Downloading: 100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_5581c851216e48c7b128f11bd93ca8e4" - } - }, - "bb9530a97bdf4221995c34ecdac01177": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_4e09d22438dc434d99c6ce15051a06b3", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 9081518, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 9081518, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_359fd318bace46468f7972a24a87a52b" - } - }, - "a47599795dff439fa7133ed5d786edcb": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_7b4ab3ae9e264f468ed3860f1652f3ec", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 9.08M/9.08M [00:00<00:00, 11.5MB/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_5b481a669c6b4443af672436df2e0f87" - } - }, - "09cb41d0bbc14a24b8dde747c249a78e": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "5581c851216e48c7b128f11bd93ca8e4": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "4e09d22438dc434d99c6ce15051a06b3": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "359fd318bace46468f7972a24a87a52b": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "7b4ab3ae9e264f468ed3860f1652f3ec": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "5b481a669c6b4443af672436df2e0f87": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "09537583625f4f4aac01a51dd06a6cca": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_829c0d5f7b614e97b4fda0a9e62dc5ae", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_3f6f4ce515db44d3a365a9d34a0d3a2e", - "IPY_MODEL_43a5ce7b197d46b79d74cc3fbfb6dc53", - "IPY_MODEL_d520129190494e17a338b9e9dc02cdaa" - ] - } - }, - "829c0d5f7b614e97b4fda0a9e62dc5ae": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "3f6f4ce515db44d3a365a9d34a0d3a2e": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_0efc973f96af4d7fa2118f72099a3724", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "Downloading: 100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_e781609438004ae0ba1efb4a877065ae" - } - }, - "43a5ce7b197d46b79d74cc3fbfb6dc53": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_f4b22763b32945a78822d9027ab93c5c", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 402, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 402, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_c7fd461142854331937a6ada7ff8f64c" - } - }, - "d520129190494e17a338b9e9dc02cdaa": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_fa46a43575ee4c52af77f226e438d896", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 402/402 [00:00<00:00, 6.76kB/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_6e697b2f47024ba78b4de46587b82d4b" - } - }, - "0efc973f96af4d7fa2118f72099a3724": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "e781609438004ae0ba1efb4a877065ae": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "f4b22763b32945a78822d9027ab93c5c": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "c7fd461142854331937a6ada7ff8f64c": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "fa46a43575ee4c52af77f226e438d896": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "6e697b2f47024ba78b4de46587b82d4b": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "5fd41c40b79a49a5b5ec135134b91f6a": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_abcf2fc37c8e429da2d0fca4ee437a74", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_18626d41312c4b60b68375614682dee6", - "IPY_MODEL_38bab693920d447b8bb1a5f1e6c2de39", - "IPY_MODEL_5acc7081c57645cda08f722a80a82618" - ] - } - }, - "abcf2fc37c8e429da2d0fca4ee437a74": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "18626d41312c4b60b68375614682dee6": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_93dd5983dd31466e862732cc991f0590", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "Downloading: 100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_bf017ec69a084b2fae86b5e24282fa2b" - } - }, - "38bab693920d447b8bb1a5f1e6c2de39": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_627e45096be0470f8ba6e7650ae1038b", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 190, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 190, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_45f7c1377bd2498496d8aad327da5a25" - } - }, - "5acc7081c57645cda08f722a80a82618": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_3681c9063cf1428b8a757090453321db", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 190/190 [00:00<00:00, 4.28kB/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_2f9ea952cead4eb8a9dd7a4be0f360fc" - } - }, - "93dd5983dd31466e862732cc991f0590": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "bf017ec69a084b2fae86b5e24282fa2b": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "627e45096be0470f8ba6e7650ae1038b": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "45f7c1377bd2498496d8aad327da5a25": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "3681c9063cf1428b8a757090453321db": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "2f9ea952cead4eb8a9dd7a4be0f360fc": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "252f1fab09d4425599b108012bf99993": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_bde4901baa744b7bac106ac3630ee31c", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_67ee3f0117bc4e7bb4c7b9351845cdd4", - "IPY_MODEL_1fce85ef81284a0eaf9f439b5e255163", - "IPY_MODEL_e3026ca9693547abab2baacd5aa3dece" - ] - } - }, - "bde4901baa744b7bac106ac3630ee31c": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "67ee3f0117bc4e7bb4c7b9351845cdd4": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_79b6c5bfa584487586da0caecad5acc9", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "Batches: 100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_56fb299136054a08a950201d3e7bc51e" - } - }, - "1fce85ef81284a0eaf9f439b5e255163": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_2194f54585b141d085f1f17ef200ab65", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 1, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 1, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_b62c8b64f87a4209a74cd5bfb5522109" - } - }, - "e3026ca9693547abab2baacd5aa3dece": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_f45c83955aa84554a075a0db94916e7b", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 1/1 [00:00<00:00, 10.59it/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_841993e4585b45d9bafc4cbeddff4033" - } - }, - "79b6c5bfa584487586da0caecad5acc9": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "56fb299136054a08a950201d3e7bc51e": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "2194f54585b141d085f1f17ef200ab65": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "b62c8b64f87a4209a74cd5bfb5522109": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "f45c83955aa84554a075a0db94916e7b": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "841993e4585b45d9bafc4cbeddff4033": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "833ee63ee4ba41f086e7fea0914b7f71": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_dc48c774b8954d8dbabc4d792dd0c397", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_303fd4fd657f4181a7d5aaf125bacea2", - "IPY_MODEL_87002ec5a9e64b3da19ccee273b40932", - "IPY_MODEL_1ad8f4afb35e4ee69a0cde1f98be5ea6" - ] - } - }, - "dc48c774b8954d8dbabc4d792dd0c397": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "303fd4fd657f4181a7d5aaf125bacea2": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_33ae1c20ae0a4207ab3be3bfef640907", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "Batches: 100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_bd7121c2a3e244ef91ff5150d2d8838b" - } - }, - "87002ec5a9e64b3da19ccee273b40932": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_74b281989cd84b01ad957259c78265fd", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 1, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 1, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_48dd9a6aa6e04253993e692d727876f1" - } - }, - "1ad8f4afb35e4ee69a0cde1f98be5ea6": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_7e725f96b7894fa6abb34a286d8cc3a4", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 1/1 [00:00<00:00, 11.15it/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_4ac053bc3db6423ba5f0d143919d1cca" - } - }, - "33ae1c20ae0a4207ab3be3bfef640907": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "bd7121c2a3e244ef91ff5150d2d8838b": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "74b281989cd84b01ad957259c78265fd": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "48dd9a6aa6e04253993e692d727876f1": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "7e725f96b7894fa6abb34a286d8cc3a4": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "4ac053bc3db6423ba5f0d143919d1cca": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "693afa9584a34f97ae3ebbc3a775e72a": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_43fa7009112741c89725963985cb9f08", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_cd2c571f25384077a5a1a592931f7f7a", - "IPY_MODEL_c15d324309e14d0c913177d745176265", - "IPY_MODEL_398c87412a4b41a48f8ed8538e0a7b91" - ] - } - }, - "43fa7009112741c89725963985cb9f08": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "cd2c571f25384077a5a1a592931f7f7a": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_8a06126bd2714badbc1dd9ace47873aa", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "Batches: 100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_7751d434164249b79f863d1cb59b4bee" - } - }, - "c15d324309e14d0c913177d745176265": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_c255f1c9ced3405cbfe308eeb0e5f390", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 1, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 1, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_83378c4b2beb4aa89849a7fc3afce5c6" - } - }, - "398c87412a4b41a48f8ed8538e0a7b91": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_1c419cfc78214e80a6e21448eb8ceaab", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 1/1 [00:00<00:00, 11.61it/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_8f3b276f21474fb78e11e2a5dae516bd" - } - }, - "8a06126bd2714badbc1dd9ace47873aa": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "7751d434164249b79f863d1cb59b4bee": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "c255f1c9ced3405cbfe308eeb0e5f390": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "83378c4b2beb4aa89849a7fc3afce5c6": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "1c419cfc78214e80a6e21448eb8ceaab": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "8f3b276f21474fb78e11e2a5dae516bd": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "2b30500a465d4343a1f6ed6cd85dfb62": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_9016e2b714fa4f7daaab4a99299190e8", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_66c808ddecba493482ba0ec96b267d83", - "IPY_MODEL_f9dcdbbe20114ff78c2d980a1924bd9e", - "IPY_MODEL_8bd47dc1fba04e50b57a646fdff4d08a" - ] - } - }, - "9016e2b714fa4f7daaab4a99299190e8": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "66c808ddecba493482ba0ec96b267d83": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_b15355099b7a4b88b9ce876378d03367", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "Batches: 100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_c880c3a9c45042e69d13ffd5dd1c6403" - } - }, - "f9dcdbbe20114ff78c2d980a1924bd9e": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_c429d64cb3e747a6bdd33763720a10d2", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 1, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 1, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_576765482f3d4ee8851db9845c34a246" - } - }, - "8bd47dc1fba04e50b57a646fdff4d08a": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_cb418736d5444d3b8e820ef0e1be8d0e", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 1/1 [00:00<00:00, 13.24it/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_efc925a4b5fa4144a9435ba998584b2c" - } - }, - "b15355099b7a4b88b9ce876378d03367": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "c880c3a9c45042e69d13ffd5dd1c6403": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "c429d64cb3e747a6bdd33763720a10d2": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "576765482f3d4ee8851db9845c34a246": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "cb418736d5444d3b8e820ef0e1be8d0e": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "efc925a4b5fa4144a9435ba998584b2c": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "e8864d4baf1f45248bd2fe979507c27b": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_9acbd5d07b4a42bebb968e83f3500f34", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_ee76869cfde744e78063c9002420689e", - "IPY_MODEL_608c3c6002d248d0a4e8463c558f3464", - "IPY_MODEL_6eeafcdcdf894b33a58e1d7c99fe3918" - ] - } - }, - "9acbd5d07b4a42bebb968e83f3500f34": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "ee76869cfde744e78063c9002420689e": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_04e887b2d2cd471994f65685a81a0bfc", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "Batches: 100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_76f40571571b4ddd87df3a29718b835e" - } - }, - "608c3c6002d248d0a4e8463c558f3464": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_66e0737384154c58a8fa44ccd69b7477", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 1, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 1, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_8262d554e9de4c7fa498e949cedefc99" - } - }, - "6eeafcdcdf894b33a58e1d7c99fe3918": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_8e67ff4e2fdf45bb840cee3db416a7cf", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 1/1 [00:00<00:00, 11.94it/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_4c9fcae8ba86441e98dc6c68b3303659" - } - }, - "04e887b2d2cd471994f65685a81a0bfc": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "76f40571571b4ddd87df3a29718b835e": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "66e0737384154c58a8fa44ccd69b7477": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "8262d554e9de4c7fa498e949cedefc99": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "8e67ff4e2fdf45bb840cee3db416a7cf": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "4c9fcae8ba86441e98dc6c68b3303659": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "1096b427606f47ae920f4313cbee232b": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_311b248f13e446739340b070f02ce6ba", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_512226094de24fb58f94c1cd240250e4", - "IPY_MODEL_197840b3350e40ab866625ac932efee9", - "IPY_MODEL_0f58901ab69e49e7947193681e2ab5f3" - ] - } - }, - "311b248f13e446739340b070f02ce6ba": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "512226094de24fb58f94c1cd240250e4": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_2972765858b94d91a525a1e99ab16e07", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "Batches: 100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_88783d2c81054461b9b44086f9691ce2" - } - }, - "197840b3350e40ab866625ac932efee9": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_5c0562c932764d50a34251e32aad1b9a", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 1, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 1, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_d59b565796fe4a3b9fe3b0b12dd73da4" - } - }, - "0f58901ab69e49e7947193681e2ab5f3": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_f16710c9831d476b85c48213d05e1aea", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 1/1 [00:00<00:00, 13.38it/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_0864e13086e44b40bd71433caec618e3" - } - }, - "2972765858b94d91a525a1e99ab16e07": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "88783d2c81054461b9b44086f9691ce2": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "5c0562c932764d50a34251e32aad1b9a": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "d59b565796fe4a3b9fe3b0b12dd73da4": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "f16710c9831d476b85c48213d05e1aea": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "0864e13086e44b40bd71433caec618e3": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "37482b3d784245dd9044da86a5afe464": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_0593f2471d4244378a68721a422ffafa", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_9de62b03f720467fa45c34fb485771d8", - "IPY_MODEL_1171111ff1244c68bc2b0269a9f8047b", - "IPY_MODEL_bd6c06e82de34ff7b3b0cb30b914ce81" - ] - } - }, - "0593f2471d4244378a68721a422ffafa": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "9de62b03f720467fa45c34fb485771d8": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_99275f997bcc44929df837687c596414", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "Batches: 100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_a18992e493b942b08a55b7a641715c1d" - } - }, - "1171111ff1244c68bc2b0269a9f8047b": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_d6a66e1346d849b9802898417d34697c", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 1, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 1, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_cd0a32b06546428193dd7fa89fbf7e9e" - } - }, - "bd6c06e82de34ff7b3b0cb30b914ce81": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_7b11f8ba932b47c1aa51efc38175b8e1", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 1/1 [00:00<00:00, 13.09it/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_bab3859cebba4383b7692b7d3265a43b" - } - }, - "99275f997bcc44929df837687c596414": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "a18992e493b942b08a55b7a641715c1d": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "d6a66e1346d849b9802898417d34697c": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "cd0a32b06546428193dd7fa89fbf7e9e": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "7b11f8ba932b47c1aa51efc38175b8e1": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "bab3859cebba4383b7692b7d3265a43b": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "1b35fdad27d348299ebf9a3376a332c0": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_8b097bc82a2a4479895400362c5e2782", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_21753241fd42429595ea9288afa2d41f", - "IPY_MODEL_51f95102471a416887e19ff8753750d8", - "IPY_MODEL_961b8ed89e63441ead537ff2b502c857" - ] - } - }, - "8b097bc82a2a4479895400362c5e2782": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "21753241fd42429595ea9288afa2d41f": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_acc7988ac6a94afdaf980e4d1ab871b5", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "Batches: 100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_cdf6ee9d1d1c422795e82dbb5691053e" - } - }, - "51f95102471a416887e19ff8753750d8": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_167f8f83ec114f42921645ddfd3ce9ed", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 1, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 1, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_3b896b94d6af4857952193f34add9e88" - } - }, - "961b8ed89e63441ead537ff2b502c857": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_9970e6ebe0b34fb38964fbd21246c447", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 1/1 [00:00<00:00, 13.65it/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_936869567f72424ea18fcaa87f20818e" - } - }, - "acc7988ac6a94afdaf980e4d1ab871b5": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "cdf6ee9d1d1c422795e82dbb5691053e": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "167f8f83ec114f42921645ddfd3ce9ed": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "3b896b94d6af4857952193f34add9e88": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "9970e6ebe0b34fb38964fbd21246c447": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "936869567f72424ea18fcaa87f20818e": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "d4144eb10fcb43eea2ca864ce213e3cc": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_03698f5714bc477c9a0b7dec7542fd50", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_920d76460f204a69a4ddbf1a0aaa5242", - "IPY_MODEL_cab40c4a19604774a2a9edbc47b19308", - "IPY_MODEL_d5e4aa32c50e48dabafcba153b95ef32" - ] - } - }, - "03698f5714bc477c9a0b7dec7542fd50": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "920d76460f204a69a4ddbf1a0aaa5242": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_982e773a0dcc408f800cf1eb139a8b2e", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "Batches: 100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_e60c4734f0424daaaeec0ee34948dabb" - } - }, - "cab40c4a19604774a2a9edbc47b19308": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_4681de508aac4dbb975199dc57df33d7", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 1, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 1, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_534b3e6ed51648c081a9a3c9b1188e45" - } - }, - "d5e4aa32c50e48dabafcba153b95ef32": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_2e3ff8ff7d7244e09a9a954d15c9d40e", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 1/1 [00:00<00:00, 11.42it/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_0138ab99398e44c69ee0d92191e7d142" - } - }, - "982e773a0dcc408f800cf1eb139a8b2e": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "e60c4734f0424daaaeec0ee34948dabb": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "4681de508aac4dbb975199dc57df33d7": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "534b3e6ed51648c081a9a3c9b1188e45": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "2e3ff8ff7d7244e09a9a954d15c9d40e": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "0138ab99398e44c69ee0d92191e7d142": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "0c481a8213f84529b2c1ff8b02af7e01": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_258c09dd5fdd49ea8d428a4a7de9cfdc", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_312f4cf044da40eca4cf099ac4d19654", - "IPY_MODEL_b63ca14fc0cb46e88e5d86f0ff4609fc", - "IPY_MODEL_3c1f87725b1f410eb81509369edf3de1" - ] - } - }, - "258c09dd5fdd49ea8d428a4a7de9cfdc": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "312f4cf044da40eca4cf099ac4d19654": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_86a2aa7f86c840b8ba3feb351ef9cdba", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "Batches: 100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_50a9ecd07ef24c728777b63b1e6982fe" - } - }, - "b63ca14fc0cb46e88e5d86f0ff4609fc": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_79b013bf213d41e1a3e285028a7707c6", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 1, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 1, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_b851a1ded89a4620a694fb7a845754f5" - } - }, - "3c1f87725b1f410eb81509369edf3de1": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_e822001de9ef4cf99d593f930f41f96a", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 1/1 [00:00<00:00, 12.69it/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_f0c8ddd71eff40df8332fcf83d31c0bf" - } - }, - "86a2aa7f86c840b8ba3feb351ef9cdba": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "50a9ecd07ef24c728777b63b1e6982fe": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "79b013bf213d41e1a3e285028a7707c6": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "b851a1ded89a4620a694fb7a845754f5": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "e822001de9ef4cf99d593f930f41f96a": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "f0c8ddd71eff40df8332fcf83d31c0bf": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "78a5e21ae14d49a1b43d583ed4c9ccb0": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_e0c76e0937db4e3d916710d7172da3f1", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_3efe97c2a0824f4e9c31977d315b1ab2", - "IPY_MODEL_af462d4f283c43cfb86ab7909cebaa31", - "IPY_MODEL_5817e7254041439692a9f9fc8d26d05f" - ] - } - }, - "e0c76e0937db4e3d916710d7172da3f1": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "3efe97c2a0824f4e9c31977d315b1ab2": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_93b48c87a738442b885ea68f20e17f9b", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "Batches: 100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_e2d9085a4252424082cf9238694d871b" - } - }, - "af462d4f283c43cfb86ab7909cebaa31": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_ebed91eca5d5439997b4aaec5a7d953e", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 1, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 1, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_4fc88278033a4eaea62acd7cf7e4c228" - } - }, - "5817e7254041439692a9f9fc8d26d05f": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_f8a6d02669224f5e9d8d09be5451b08b", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 1/1 [00:00<00:00, 9.50it/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_68f8afd75269413abd300740692d13eb" - } - }, - "93b48c87a738442b885ea68f20e17f9b": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "e2d9085a4252424082cf9238694d871b": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "ebed91eca5d5439997b4aaec5a7d953e": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "4fc88278033a4eaea62acd7cf7e4c228": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "f8a6d02669224f5e9d8d09be5451b08b": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "68f8afd75269413abd300740692d13eb": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "fc7c6b5bf4934c0194c12b6aa4bee24e": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_a7dfc0089edd47678dd411093c3cf664", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_071a2e5641624c7ea6bf57d764fa5a90", - "IPY_MODEL_b4511a00a65f40f8879209e63cc4044c", - "IPY_MODEL_b0ae975eb94143fda0ac6c748148a7cc" - ] - } - }, - "a7dfc0089edd47678dd411093c3cf664": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "071a2e5641624c7ea6bf57d764fa5a90": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_d579129ca5c04c6a8400c2483a952386", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "Batches: 100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_553183603f114fefa03c2f251ac38ddc" - } - }, - "b4511a00a65f40f8879209e63cc4044c": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_c652f9773b604b1d9dc357052aaba437", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 1, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 1, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_40a7c2ba203f42deb6c7010959c8f2c9" - } - }, - "b0ae975eb94143fda0ac6c748148a7cc": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_3ba492ab49d64d9a9010e46d293c3053", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 1/1 [00:00<00:00, 13.38it/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_5726eac63ec24b20a667084ff1614cad" - } - }, - "d579129ca5c04c6a8400c2483a952386": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "553183603f114fefa03c2f251ac38ddc": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "c652f9773b604b1d9dc357052aaba437": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "40a7c2ba203f42deb6c7010959c8f2c9": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "3ba492ab49d64d9a9010e46d293c3053": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "5726eac63ec24b20a667084ff1614cad": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "a548cf8ad9004eb1ae5a8e76bdb5f88a": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_8d40aa5382db4c64acba90541bc87dd3", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_dc4df32c929d428593b68476285425e0", - "IPY_MODEL_36c9dc024fed498cb76edd9f18447979", - "IPY_MODEL_578b058ce8414637bcd7d660a3ea8adc" - ] - } - }, - "8d40aa5382db4c64acba90541bc87dd3": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "dc4df32c929d428593b68476285425e0": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_5a828469ff1d4e0aa10346776ebe6ed8", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "Batches: 100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_656e26469505445e8bcefd253e0c7c30" - } - }, - "36c9dc024fed498cb76edd9f18447979": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_f92fb75d397d47ac967febf7d38efc35", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 1, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 1, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_035e40aab316467987b05fe9157ca1ce" - } - }, - "578b058ce8414637bcd7d660a3ea8adc": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_2e6177cd6f7941e7b948aeac0dafd05c", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 1/1 [00:00<00:00, 10.59it/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_acda5822bf844c2780f96150983f1274" - } - }, - "5a828469ff1d4e0aa10346776ebe6ed8": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "656e26469505445e8bcefd253e0c7c30": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "f92fb75d397d47ac967febf7d38efc35": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "035e40aab316467987b05fe9157ca1ce": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "2e6177cd6f7941e7b948aeac0dafd05c": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "acda5822bf844c2780f96150983f1274": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "763dc9a81242444183854e8f65882c27": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_86d167621f81425b9a2b0369146fa314", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_e85e291b0c50401abd9d7588ce1467cb", - "IPY_MODEL_df007844178f4b63b67831b4d38576df", - "IPY_MODEL_85908f2604094196a0c86cb6dd731615" - ] - } - }, - "86d167621f81425b9a2b0369146fa314": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "e85e291b0c50401abd9d7588ce1467cb": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_14462288182e490fbbf8086972008a22", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "Batches: 100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_675951a59fb441bbb8a5dc2c4b2c753e" - } - }, - "df007844178f4b63b67831b4d38576df": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_bb7f0fbb54274fb9a654eb6ee938ba66", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 1, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 1, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_fc911f5408814c2ab17c5c1a357dc23f" - } - }, - "85908f2604094196a0c86cb6dd731615": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_e17d2dc542c14f98a2a19ecefb447d38", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 1/1 [00:00<00:00, 10.85it/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_a746473dcbdf4a21915398141008da17" - } - }, - "14462288182e490fbbf8086972008a22": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "675951a59fb441bbb8a5dc2c4b2c753e": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "bb7f0fbb54274fb9a654eb6ee938ba66": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "fc911f5408814c2ab17c5c1a357dc23f": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "e17d2dc542c14f98a2a19ecefb447d38": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "a746473dcbdf4a21915398141008da17": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "f302b68764444e44aacecaaa89cdc95f": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_e483cae2d41844df99054b2ddfdbc65b", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_f375507608564a12b6dd26170d659399", - "IPY_MODEL_60eb65d6a8ce4ee288a8aabea9d33094", - "IPY_MODEL_de7355b63d2f4682b15f8ca9c07e674f" - ] - } - }, - "e483cae2d41844df99054b2ddfdbc65b": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "f375507608564a12b6dd26170d659399": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_32c43233c8e64a8eb5c4badbb01420f5", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "Batches: 100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_7fa656358f524f93a310a8076bd48cdf" - } - }, - "60eb65d6a8ce4ee288a8aabea9d33094": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_3200cd718a4c439386994d13e1b0e173", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 1, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 1, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_0cdff9bf98da47789a75f2beeb5727b4" - } - }, - "de7355b63d2f4682b15f8ca9c07e674f": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_565bdcb1739643119edcafd4df6e8f11", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 1/1 [00:00<00:00, 14.11it/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_c2ba6b6c20ed419fae2a6fe625261382" - } - }, - "32c43233c8e64a8eb5c4badbb01420f5": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "7fa656358f524f93a310a8076bd48cdf": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "3200cd718a4c439386994d13e1b0e173": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "0cdff9bf98da47789a75f2beeb5727b4": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "565bdcb1739643119edcafd4df6e8f11": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "c2ba6b6c20ed419fae2a6fe625261382": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "82f31100018e412b9598186060b33fc5": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_6f2a17a8dc19494998ab2dd2d81bcaa8", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_2da7b278298e4a5996fb9bc8ab91be18", - "IPY_MODEL_7770031e5dcb4f398df87332c8091f2e", - "IPY_MODEL_a03aff3544f14439ac7b1bc6d02a4860" - ] - } - }, - "6f2a17a8dc19494998ab2dd2d81bcaa8": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "2da7b278298e4a5996fb9bc8ab91be18": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_843cfba29fd046638f79ca44d340b091", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "Batches: 100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_5e3ad720118240188fef69ad77cd72e3" - } - }, - "7770031e5dcb4f398df87332c8091f2e": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_f5417b7abd5a48178fd0c0a8aefeae05", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 1, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 1, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_e7658ccda51c46a6b560a260c38f933d" - } - }, - "a03aff3544f14439ac7b1bc6d02a4860": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_51eeedf54ce0473797c98793ebfb0225", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 1/1 [00:00<00:00, 13.03it/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_eef6238b512249d993d1b6c9b76e3946" - } - }, - "843cfba29fd046638f79ca44d340b091": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "5e3ad720118240188fef69ad77cd72e3": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "f5417b7abd5a48178fd0c0a8aefeae05": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "e7658ccda51c46a6b560a260c38f933d": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "51eeedf54ce0473797c98793ebfb0225": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "eef6238b512249d993d1b6c9b76e3946": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "3914e344ed9e4f85b9d8670ec062ef30": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_4523fbfdd66049ed83265f166f5d6f16", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_5ab8cf3f17e84139bca02f42e72f48a6", - "IPY_MODEL_5280dbd3704e4c1bb84d058fee8b5e78", - "IPY_MODEL_ade97ddccca24f4c9e01fb19e2d8bfb7" - ] - } - }, - "4523fbfdd66049ed83265f166f5d6f16": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "5ab8cf3f17e84139bca02f42e72f48a6": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_d69bff579d794cd18920cef35b9cea2a", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "Batches: 100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_5c8ae6b463cb4c7bbba2b4c00eb6972b" - } - }, - "5280dbd3704e4c1bb84d058fee8b5e78": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_8289aad6c2b04cd2931a6ddc25d679bf", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 1, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 1, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_3c391b52b10941979277f20802e540ef" - } - }, - "ade97ddccca24f4c9e01fb19e2d8bfb7": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_e63ed6b6266f47ae8c0106089b1cd85e", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 1/1 [00:00<00:00, 13.03it/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_60c6f5edec98476fb2794712ed499206" - } - }, - "d69bff579d794cd18920cef35b9cea2a": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "5c8ae6b463cb4c7bbba2b4c00eb6972b": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "8289aad6c2b04cd2931a6ddc25d679bf": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "3c391b52b10941979277f20802e540ef": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "e63ed6b6266f47ae8c0106089b1cd85e": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "60c6f5edec98476fb2794712ed499206": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "1618b6a1272741a484107d64b0892919": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_1e21f3f2addd4089a21bdf43fcc3dc13", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_c2a10377a4104f0db40385232e02ddeb", - "IPY_MODEL_64ac622c81094854b887754eb507438a", - "IPY_MODEL_58c2ec2a05024f1081dce3ad466e6c5a" - ] - } - }, - "1e21f3f2addd4089a21bdf43fcc3dc13": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "c2a10377a4104f0db40385232e02ddeb": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_c03219a376ed425f9d275ad3a0ff86c8", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "Batches: 100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_88a03527abc544f3bbe30fabd7577098" - } - }, - "64ac622c81094854b887754eb507438a": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_223e5e8dfd48473d95dc159f970c2bbe", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 1, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 1, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_3b8baa9a443c417996fb82eed060c6ba" - } - }, - "58c2ec2a05024f1081dce3ad466e6c5a": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_81b3ce0858bd4bf8a168538397b73970", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 1/1 [00:00<00:00, 16.68it/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_720453f72c9d4681ae0db5cdf297cc71" - } - }, - "c03219a376ed425f9d275ad3a0ff86c8": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "88a03527abc544f3bbe30fabd7577098": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "223e5e8dfd48473d95dc159f970c2bbe": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "3b8baa9a443c417996fb82eed060c6ba": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "81b3ce0858bd4bf8a168538397b73970": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "720453f72c9d4681ae0db5cdf297cc71": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "40d75e4d444e4d8792fbd1a660c732e2": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_1abc887bedb6415eb5c15ac9ca3e2a2c", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_912e6dd1ff544e8d9c94609ec899fbbe", - "IPY_MODEL_a6963c7d4e1a46c2a0c86ef3faa36548", - "IPY_MODEL_95013e8d9b16488e8f95750134a09b90" - ] - } - }, - "1abc887bedb6415eb5c15ac9ca3e2a2c": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "912e6dd1ff544e8d9c94609ec899fbbe": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_61395f952fff44ddbf35195f08890b3a", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "Batches: 100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_197130c97a6f4113bb70f9872f65dede" - } - }, - "a6963c7d4e1a46c2a0c86ef3faa36548": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_c674148cbf294431a48faa9378d17c82", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 1, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 1, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_694158e7816f4b10bf8cb6cae954aeaa" - } - }, - "95013e8d9b16488e8f95750134a09b90": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_e1c796fba9cf4336846d6bbd1d7bbc47", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 1/1 [00:00<00:00, 8.69it/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_ddaa3410e1f740198bcac431184ee37e" - } - }, - "61395f952fff44ddbf35195f08890b3a": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "197130c97a6f4113bb70f9872f65dede": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "c674148cbf294431a48faa9378d17c82": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "694158e7816f4b10bf8cb6cae954aeaa": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "e1c796fba9cf4336846d6bbd1d7bbc47": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "ddaa3410e1f740198bcac431184ee37e": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "c373178edb624ad39973c6b34c2fd540": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_f9b1e0c3cb304cf58a9bdce3cc03239c", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_50432636bd864dc5bd99302283f62f93", - "IPY_MODEL_fa230a8644bd4e7a85a3c8b888bf2d27", - "IPY_MODEL_47e629b53187448f8eb54bd8b31af735" - ] - } - }, - "f9b1e0c3cb304cf58a9bdce3cc03239c": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "50432636bd864dc5bd99302283f62f93": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_d1fec191a2b94bf0bbde31707f3637b1", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "Batches: 100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_4d4beedccc5248679201df2cd2481429" - } - }, - "fa230a8644bd4e7a85a3c8b888bf2d27": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_da2985b6824449f6982434a5a0bdbd39", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 1, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 1, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_3e23763ee2944110b0899fcbb805e3bd" - } - }, - "47e629b53187448f8eb54bd8b31af735": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_93d3a93cd8634149b96cbd528bdb9e82", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 1/1 [00:00<00:00, 12.34it/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_cbfb512f58c44b879e89fc6917799fd4" - } - }, - "d1fec191a2b94bf0bbde31707f3637b1": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "4d4beedccc5248679201df2cd2481429": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "da2985b6824449f6982434a5a0bdbd39": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "3e23763ee2944110b0899fcbb805e3bd": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "93d3a93cd8634149b96cbd528bdb9e82": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "cbfb512f58c44b879e89fc6917799fd4": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "fcfbbc1f44454546b9ceca5ba106b0e6": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_1a372fb42b29492691dc7fc04fed105b", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_267928e896124f6087b197b255e53360", - "IPY_MODEL_f2f11b50f31b40d9abd06080b0ce9502", - "IPY_MODEL_e9c72053e0344c699abc03221d1e422a" - ] - } - }, - "1a372fb42b29492691dc7fc04fed105b": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "267928e896124f6087b197b255e53360": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_03ea7c0ef54c4d0f96493415aaf461d3", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "Batches: 100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_d7fe543399db4a64b23761e6f8e967ce" - } - }, - "f2f11b50f31b40d9abd06080b0ce9502": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_b046241482c7485b9037ed039eb48649", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 1, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 1, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_d3bcb223dd7943dbb85d8c93a3ed0bc1" - } - }, - "e9c72053e0344c699abc03221d1e422a": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_f91436bf954d4a939a615dfa6e839b15", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 1/1 [00:00<00:00, 12.31it/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_af46cfb222cf4d5ba1b34d2d462c8e6f" - } - }, - "03ea7c0ef54c4d0f96493415aaf461d3": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "d7fe543399db4a64b23761e6f8e967ce": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "b046241482c7485b9037ed039eb48649": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "d3bcb223dd7943dbb85d8c93a3ed0bc1": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "f91436bf954d4a939a615dfa6e839b15": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "af46cfb222cf4d5ba1b34d2d462c8e6f": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "ff9438afcccb4372b258d20ac5c11f49": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_5f2eedf3c8b74abca674ec0bf28f36a1", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_4d46dfc8082246568e7cc69f74baac14", - "IPY_MODEL_08cd116989124f919aa151c4535bbcba", - "IPY_MODEL_9d46ed6e9cff463b8e527773b931e935" - ] - } - }, - "5f2eedf3c8b74abca674ec0bf28f36a1": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "4d46dfc8082246568e7cc69f74baac14": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_c357ff588a474c59924747141954d81e", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "Batches: 100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_9ba1c4bac8014f38a1dc24f2a7b3c3cd" - } - }, - "08cd116989124f919aa151c4535bbcba": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_13996ad0065d4573885e0140c1dc91a1", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 1, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 1, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_fbee94f4d7674f54b75c42d33c2a0907" - } - }, - "9d46ed6e9cff463b8e527773b931e935": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_1c003f6cf2064ffeb152e5bf5dee3780", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 1/1 [00:00<00:00, 10.94it/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_d2ab768dc09d4482b84a2c929dee7cd6" - } - }, - "c357ff588a474c59924747141954d81e": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "9ba1c4bac8014f38a1dc24f2a7b3c3cd": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "13996ad0065d4573885e0140c1dc91a1": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "fbee94f4d7674f54b75c42d33c2a0907": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "1c003f6cf2064ffeb152e5bf5dee3780": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "d2ab768dc09d4482b84a2c929dee7cd6": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "d867294bd4944f3086f335cadc6e1204": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_d6125036c6cd4b04badcda02419be090", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_a28f716145f046fcb101ae6eb5d55e2f", - "IPY_MODEL_e65ae480d2d04ab48c8624eb1fca45d8", - "IPY_MODEL_2bfc05c7ef514354bfb41fe6290dbf33" - ] - } - }, - "d6125036c6cd4b04badcda02419be090": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "a28f716145f046fcb101ae6eb5d55e2f": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_51f5c4ae62124c2eb09cd655d50a042c", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "Batches: 100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_76a9a9ff30384c63bbafac8dad7e6b6f" - } - }, - "e65ae480d2d04ab48c8624eb1fca45d8": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_9f23dc687bb54d8ca102ebd1f35b45ee", - "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 1, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 1, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_54a4a9ebf2b24542a97157643fc8760e" - } - }, - "2bfc05c7ef514354bfb41fe6290dbf33": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_b0fda0f7f1694c958fabb866c8837b07", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 1/1 [00:00<00:00, 11.61it/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_bcca8127f74f4e36813a902020d9cb4e" - } - }, - "51f5c4ae62124c2eb09cd655d50a042c": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "76a9a9ff30384c63bbafac8dad7e6b6f": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "9f23dc687bb54d8ca102ebd1f35b45ee": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" - } - }, - "54a4a9ebf2b24542a97157643fc8760e": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "b0fda0f7f1694c958fabb866c8837b07": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "bcca8127f74f4e36813a902020d9cb4e": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - } - } - }, - "interpreter": { - "hash": "01829e1eb67c4f5275a41f9336c92adbb77a108c8fc957dfe99d03e96dd1f349" - } - }, - "cells": [ - { - "cell_type": "markdown", - "source": [ - "# Evaluation of a Pipeline and its Components\n", - "\n", - "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/deepset-ai/haystack/blob/master/tutorials/Tutorial5_Evaluation.ipynb)\n", - "\n", - "To be able to make a statement about the quality of results a question-answering pipeline or any other pipeline in haystack produces, it is important to evaluate it. Furthermore, evaluation allows determining which components of the pipeline can be improved.\n", - "The results of the evaluation can be saved as CSV files, which contain all the information to calculate additional metrics later on or inspect individual predictions." - ], - "metadata": { - "collapsed": true, - "id": "MGSXn0USOhtu", - "pycharm": { - "name": "#%% md\n" - } - } - }, - { - "cell_type": "markdown", - "source": [ - "### Prepare environment\n", - "\n", - "#### Colab: Enable the GPU runtime\n", - "Make sure you enable the GPU runtime to experience decent speed in this tutorial.\n", - "**Runtime -> Change Runtime type -> Hardware accelerator -> GPU**\n", - "\n", - "" - ], - "metadata": { - "collapsed": false, - "id": "lEKOjCS5U7so" - } - }, - { - "cell_type": "code", - "execution_count": null, - "source": [ - "# Make sure you have a GPU running\n", - "!nvidia-smi" - ], - "outputs": [], - "metadata": { - "pycharm": { - "name": "#%%\n" - }, - "id": "xhFIMX_7U7ss", - "outputId": "285b2491-01e5-4bfd-cba9-c2279d4417c4", - "colab": { - "base_uri": "https://localhost:8080/" - } - } - }, - { - "cell_type": "code", - "execution_count": null, - "source": [ - "# Install the latest release of Haystack in your own environment \n", - "#! pip install farm-haystack\n", - "\n", - "# Install the latest master of Haystack\n", - "!pip install grpcio-tools==1.34.1\n", - "!pip install git+https://github.com/deepset-ai/haystack.git\n", - "\n", - "# If you run this notebook on Google Colab, you might need to\n", - "# restart the runtime after installing haystack." - ], - "outputs": [], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 1000 - }, - "id": "vgmFOp82Oht_", - "pycharm": { - "name": "#%%\n" - }, - "outputId": "5bbcbb42-3a90-43a9-ebfd-598a98fa7143" - } - }, - { - "cell_type": "code", - "execution_count": null, - "outputs": [], - "source": [ - "from haystack.modeling.utils import initialize_device_settings\n", - "devices, n_gpu = initialize_device_settings(use_cuda=True)" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "markdown", - "source": [ - "## Start an Elasticsearch server\n", - "You can start Elasticsearch on your local machine instance using Docker. If Docker is not readily available in your environment (eg., in Colab notebooks), then you can manually download and execute Elasticsearch from source." - ], - "metadata": { - "collapsed": false - } - }, - { - "cell_type": "code", - "execution_count": null, - "source": [ - "# If Docker is available: Start Elasticsearch as docker container\n", - "# from haystack.utils import launch_es\n", - "# launch_es()\n", - "\n", - "# Alternative in Colab / No Docker environments: Start Elasticsearch from source\n", - "! wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.2-linux-x86_64.tar.gz -q\n", - "! tar -xzf elasticsearch-7.9.2-linux-x86_64.tar.gz\n", - "! chown -R daemon:daemon elasticsearch-7.9.2\n", - "\n", - "import os\n", - "from subprocess import Popen, PIPE, STDOUT\n", - "es_server = Popen(['elasticsearch-7.9.2/bin/elasticsearch'],\n", - " stdout=PIPE, stderr=STDOUT,\n", - " preexec_fn=lambda: os.setuid(1) # as daemon\n", - " )\n", - "# wait until ES has started\n", - "! sleep 30" - ], - "outputs": [], - "metadata": { - "id": "tNoaWcDKOhuL", - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "markdown", - "source": [ - "## Fetch, Store And Preprocess the Evaluation Dataset" - ], - "metadata": { - "collapsed": false - } - }, - { - "cell_type": "code", - "execution_count": null, - "source": [ - "from haystack.utils import fetch_archive_from_http\n", - "\n", - "# Download evaluation data, which is a subset of Natural Questions development set containing 50 documents with one question per document and multiple annotated answers\n", - "doc_dir = \"../data/nq\"\n", - "s3_url = \"https://s3.eu-central-1.amazonaws.com/deepset.ai-farm-qa/datasets/nq_dev_subset_v2.json.zip\"\n", - "fetch_archive_from_http(url=s3_url, output_dir=doc_dir)" - ], - "outputs": [], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "tTXxr6TAOhuz", - "pycharm": { - "name": "#%%\n" - }, - "outputId": "586d4775-4354-4ed9-a72c-c30bedcdfbee" - } - }, - { - "cell_type": "code", - "execution_count": null, - "source": [ - "# make sure these indices do not collide with existing ones, the indices will be wiped clean before data is inserted\n", - "doc_index = \"tutorial5_docs\"\n", - "label_index = \"tutorial5_labels\"" - ], - "outputs": [], - "metadata": { - "id": "T-G7Ay2jU7s_" - } - }, - { - "cell_type": "code", - "execution_count": null, - "source": [ - "# Connect to Elasticsearch\n", - "from haystack.document_stores import ElasticsearchDocumentStore\n", - "\n", - "# Connect to Elasticsearch\n", - "document_store = ElasticsearchDocumentStore(host=\"localhost\", username=\"\", password=\"\", index=doc_index,\n", - " label_index=label_index, embedding_field=\"emb\",\n", - " embedding_dim=768, excluded_meta_data=[\"emb\"])" - ], - "outputs": [], - "metadata": { - "id": "B_NEtezLOhu5", - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "code", - "execution_count": null, - "source": [ - "from haystack.nodes import PreProcessor\n", - "\n", - "# Add evaluation data to Elasticsearch Document Store\n", - "# We first delete the custom tutorial indices to not have duplicate elements\n", - "# and also split our documents into shorter passages using the PreProcessor\n", - "preprocessor = PreProcessor(\n", - " split_length=200,\n", - " split_overlap=0,\n", - " split_respect_sentence_boundary=False,\n", - " clean_empty_lines=False,\n", - " clean_whitespace=False\n", - ")\n", - "document_store.delete_documents(index=doc_index)\n", - "document_store.delete_documents(index=label_index)\n", - "\n", - "# The add_eval_data() method converts the given dataset in json format into Haystack document and label objects. Those objects are then indexed in their respective document and label index in the document store. The method can be used with any dataset in SQuAD format.\n", - "document_store.add_eval_data(\n", - " filename=\"../data/nq/nq_dev_subset_v2.json\",\n", - " doc_index=doc_index,\n", - " label_index=label_index,\n", - " preprocessor=preprocessor\n", - ")" - ], - "outputs": [], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "bRFsQUAJOhu_", + "id": "cW3Ypn_gOhvK", + "outputId": "4b5feff7-ae9f-4cd8-de1e-944f0eb66f66", "pycharm": { "name": "#%%\n" - }, - "outputId": "477031b9-5c2c-4128-ef5f-54db86259734" - } - }, - { - "cell_type": "markdown", - "source": [ - "## Initialize the Two Components of an ExtractiveQAPipeline: Retriever and Reader" - ], - "metadata": { - "id": "gy8YwmSYOhvE", - "pycharm": { - "name": "#%% md\n" } - } - }, - { - "cell_type": "code", - "execution_count": null, - "source": [ - "# Initialize Retriever\n", - "from haystack.nodes import ElasticsearchRetriever\n", - "retriever = ElasticsearchRetriever(document_store=document_store)\n", - "# Alternative: Evaluate dense retrievers (DensePassageRetriever or EmbeddingRetriever)\n", - "# DensePassageRetriever uses two separate transformer based encoders for query and document.\n", - "# In contrast, EmbeddingRetriever uses a single encoder for both.\n", - "# Please make sure the \"embedding_dim\" parameter in the DocumentStore above matches the output dimension of your models!\n", - "# Please also take care that the PreProcessor splits your files into chunks that can be completely converted with\n", - "# the max_seq_len limitations of Transformers\n", - "# The SentenceTransformer model \"all-mpnet-base-v2\" generally works well with the EmbeddingRetriever on any kind of English text.\n", - "# For more information check out the documentation at: https://www.sbert.net/docs/pretrained_models.html\n", - "# from haystack.retriever import DensePassageRetriever, EmbeddingRetriever\n", - "# retriever = DensePassageRetriever(document_store=document_store,\n", - "# query_embedding_model=\"facebook/dpr-question_encoder-single-nq-base\",\n", - "# passage_embedding_model=\"facebook/dpr-ctx_encoder-single-nq-base\",\n", - "# use_gpu=True,\n", - "# max_seq_len_passage=256,\n", - "# embed_title=True)\n", - "# retriever = EmbeddingRetriever(document_store=document_store, model_format=\"sentence_transformers\",\n", - "# embedding_model=\"all-mpnet-base-v2\")\n", - "# document_store.update_embeddings(retriever, index=doc_index)" - ], + }, "outputs": [], - "metadata": { - "id": "JkhaPMIJOhvF", - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "code", - "execution_count": null, "source": [ "# Initialize Reader\n", "from haystack.nodes import FARMReader\n", @@ -14698,90 +379,16 @@ "# For example you could use a DocumentSearchPipeline as an alternative:\n", "# from haystack.pipelines import DocumentSearchPipeline\n", "# pipeline = DocumentSearchPipeline(retriever=retriever)" - ], - "outputs": [], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 313, - "referenced_widgets": [ - "118aedffeecd4f109ae04a4561baeb08", - "59efb57b419242a1aba4d20084e29d38", - "ddaf59cedca143c8b4fe005a51077323", - "25d7818d6f7b4b628ab3f83f2c2fa6a3", - "48431fa7696540fc9696799f75166680", - "a21f4958105f4b3ca32f0977bcfd7d48", - "3d211e6614f4451e9d14866cb3a8332d", - "3df3da3d04d5448c810bd00f66bd3a0e", - "8dfc1480100f43e0b4ea2fc2fb9279d3", - "0618a236cc14473f92257aebbc3d930d", - "8e0958b5dc27412e9f0332da3457ffdb", - "6f7ddc1720344ba9b939a8e4ac593d67", - "b480c97c1d9944b9a8dd09ed6e1e9bd3", - "ed683929822b4084ba33e89b23936b16", - "94c88d0fc3f949fbacfb6b4fcd99cc63", - "b262e92ff6484405a0e9364f6ecafb6a", - "bacf1704dbaf4176afbe2cbcc8e036ef", - "fe56b1d86ab84675b82781a1f8edd40a", - "d7e3c8e1e0424cec9dc1b97090b5af87", - "98da94a8d7b94fb4a08adcebea15e114", - "13b75146701145808315dc87d598b3f9", - "2bd3bd51ae644c1894a2ddca09d14e85", - "59039df74ce64c2f9e91663b6498c29c", - "9e130b97f0f4463f85df834d0f99d6ef", - "2c028a3f096344d68071d78387efa117", - "4d922fb301f944fbb0218335a28cf6e5", - "05d82995d5a94b5db39bf639d1cc05c2", - "76f4af76b42f460fa34d5f00a9656dc5", - "73d7fdd3f38349b4882124d8351eace5", - "ea439e2251ed467fb3a775f0c8e0c3bb", - "b6729cc6ba084677af55ac63c819b72f", - "fc011913e8464d439a97fe75ef5f9fa1", - "8a9f9b7bab8e40278430a35720066a61", - "5db857b352964db3a617568ff1dce86d", - "7752437041f745a4af4b9130df3fefa7", - "5f94d400ea884c1cadfc966e44849b3a", - "0d34710578ac4c1db6fe372b5d1215b4", - "994ae85181664e2e87a2ee18a7a237ba", - "368a61e33c3144bfa3cc94af10691146", - "ccfd1a0b6f494d8a9d78e7387261fba8", - "db57281b3d7a448fbd2d63d8f127ea3e", - "978b165c69dd4e14b8479ea7bd8cb1e5", - "6f028c7e888e4ae5ab5c1e42ff142b5f", - "c8ba8c2a210b45f6a9b5257589babac3", - "36f855f41cc1488f9d92ec34bb8d30b0", - "1d5d220bedc54dbdbacb9c43767bf64d", - "0523b10429d04f3d81d7078a13a12168", - "64cd5b6f0c4d4631a1049ee7ee50f063", - "eb11ea5785284bf6a15cc31ad643ed88", - "807e4eee3b2c440c8799afcc6344ff5d", - "6ca6dc2c6b4349fcb39ed8c44f65bdb0", - "4837b34ccb4d4688865dc24dc58a7c1e", - "d4dbfa5e89e7432dbed34606a786fd6f", - "7e058076836e438daf5399428eabac5e", - "a529dbbfdd6b469dbfe80cee993c9a33", - "69750fea2e7149eab8928282ba9bae29", - "08a1d1a6fb884c769d409170d6cda556", - "548ef6c85056414cb0ce79164a086d35", - "cf58b340496b4d62b610451cedbd709a", - "4dad7e58cc47436aafe38230514325a1", - "f36dc87a4af7481cb3c2cba23d57eb5a", - "2a9ef1f2f43d47b28cd0ff7ef4a21ade", - "caa374f7dc5045218c6f71f322d8e6be", - "e567fab4446544f795be2eb0a6705f9c", - "2b17ffac93b8406fac55b695d93d963b", - "3096cae7388e4b988df306be9cc58afd" - ] - }, - "id": "cW3Ypn_gOhvK", - "pycharm": { - "name": "#%%\n" - }, - "outputId": "4b5feff7-ae9f-4cd8-de1e-944f0eb66f66" - } + ] }, { "cell_type": "markdown", + "metadata": { + "id": "7i84KXONOhvc", + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "## Evaluation of an ExtractiveQAPipeline\n", "Here we evaluate retriever and reader in open domain fashion on the full corpus of documents i.e. a document is considered\n", @@ -14789,17 +396,17 @@ "predicted answer string, regardless of which document this came from and the position of the extracted span.\n", "\n", "The generation of predictions is seperated from the calculation of metrics. This allows you to run the computation-heavy model predictions only once and then iterate flexibly on the metrics or reports you want to generate.\n" - ], - "metadata": { - "id": "7i84KXONOhvc", - "pycharm": { - "name": "#%% md\n" - } - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "from haystack.schema import EvaluationResult, MultiLabel\n", @@ -14826,22 +433,170 @@ " labels=eval_labels,\n", " params={\"Retriever\": {\"top_k\": 5}}\n", ")" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } + ] }, { "cell_type": "code", "execution_count": 9, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [ { "data": { - "text/plain": " content \\\n0 people considered righteous before God. God has such a book, and to be blott... \n1 as adversaries (of God). Also, according to ib. xxxvi. 10, one who contrives... \n2 the citizens' registers. The life which the righteous participate in is to b... \n3 apostles' names are ``written in heaven'' (Luke x. 20), or ``the fellow-work... \n4 The Absolutely True Diary of a Part-Time Indian - wikipedia The Absolutely T... \n\n document_id type \\\n0 1b090aec7dbd1af6739c4c80f8995877-1 document \n1 1b090aec7dbd1af6739c4c80f8995877-2 document \n2 1b090aec7dbd1af6739c4c80f8995877-6 document \n3 1b090aec7dbd1af6739c4c80f8995877-3 document \n4 e9260cbbc129f4246ee8fcfbbe385822-0 document \n\n gold_document_ids \\\n0 [1b090aec7dbd1af6739c4c80f8995877-0, 1b090aec7dbd1af6739c4c80f8995877-0] \n1 [1b090aec7dbd1af6739c4c80f8995877-0, 1b090aec7dbd1af6739c4c80f8995877-0] \n2 [1b090aec7dbd1af6739c4c80f8995877-0, 1b090aec7dbd1af6739c4c80f8995877-0] \n3 [1b090aec7dbd1af6739c4c80f8995877-0, 1b090aec7dbd1af6739c4c80f8995877-0] \n4 [1b090aec7dbd1af6739c4c80f8995877-0, 1b090aec7dbd1af6739c4c80f8995877-0] \n\n gold_document_contents \\\n0 [Book of Life - wikipedia Book of Life Jump to: navigation, search This arti... \n1 [Book of Life - wikipedia Book of Life Jump to: navigation, search This arti... \n2 [Book of Life - wikipedia Book of Life Jump to: navigation, search This arti... \n3 [Book of Life - wikipedia Book of Life Jump to: navigation, search This arti... \n4 [Book of Life - wikipedia Book of Life Jump to: navigation, search This arti... \n\n gold_id_match answer_match gold_id_or_answer_match rank node \\\n0 0.0 0.0 0.0 1 Retriever \n1 0.0 0.0 0.0 2 Retriever \n2 0.0 0.0 0.0 3 Retriever \n3 0.0 0.0 0.0 4 Retriever \n4 0.0 0.0 0.0 5 Retriever \n\n query \n0 who is written in the book of life \n1 who is written in the book of life \n2 who is written in the book of life \n3 who is written in the book of life \n4 who is written in the book of life ", - "text/html": "

\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
contentdocument_idtypegold_document_idsgold_document_contentsgold_id_matchanswer_matchgold_id_or_answer_matchranknodequery
0people considered righteous before God. God has such a book, and to be blott...1b090aec7dbd1af6739c4c80f8995877-1document[1b090aec7dbd1af6739c4c80f8995877-0, 1b090aec7dbd1af6739c4c80f8995877-0][Book of Life - wikipedia Book of Life Jump to: navigation, search This arti...0.00.00.01Retrieverwho is written in the book of life
1as adversaries (of God). Also, according to ib. xxxvi. 10, one who contrives...1b090aec7dbd1af6739c4c80f8995877-2document[1b090aec7dbd1af6739c4c80f8995877-0, 1b090aec7dbd1af6739c4c80f8995877-0][Book of Life - wikipedia Book of Life Jump to: navigation, search This arti...0.00.00.02Retrieverwho is written in the book of life
2the citizens' registers. The life which the righteous participate in is to b...1b090aec7dbd1af6739c4c80f8995877-6document[1b090aec7dbd1af6739c4c80f8995877-0, 1b090aec7dbd1af6739c4c80f8995877-0][Book of Life - wikipedia Book of Life Jump to: navigation, search This arti...0.00.00.03Retrieverwho is written in the book of life
3apostles' names are ``written in heaven'' (Luke x. 20), or ``the fellow-work...1b090aec7dbd1af6739c4c80f8995877-3document[1b090aec7dbd1af6739c4c80f8995877-0, 1b090aec7dbd1af6739c4c80f8995877-0][Book of Life - wikipedia Book of Life Jump to: navigation, search This arti...0.00.00.04Retrieverwho is written in the book of life
4The Absolutely True Diary of a Part-Time Indian - wikipedia The Absolutely T...e9260cbbc129f4246ee8fcfbbe385822-0document[1b090aec7dbd1af6739c4c80f8995877-0, 1b090aec7dbd1af6739c4c80f8995877-0][Book of Life - wikipedia Book of Life Jump to: navigation, search This arti...0.00.00.05Retrieverwho is written in the book of life
\n
" + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
contentdocument_idtypegold_document_idsgold_document_contentsgold_id_matchanswer_matchgold_id_or_answer_matchranknodequery
0people considered righteous before God. God has such a book, and to be blott...1b090aec7dbd1af6739c4c80f8995877-1document[1b090aec7dbd1af6739c4c80f8995877-0, 1b090aec7dbd1af6739c4c80f8995877-0][Book of Life - wikipedia Book of Life Jump to: navigation, search This arti...0.00.00.01Retrieverwho is written in the book of life
1as adversaries (of God). Also, according to ib. xxxvi. 10, one who contrives...1b090aec7dbd1af6739c4c80f8995877-2document[1b090aec7dbd1af6739c4c80f8995877-0, 1b090aec7dbd1af6739c4c80f8995877-0][Book of Life - wikipedia Book of Life Jump to: navigation, search This arti...0.00.00.02Retrieverwho is written in the book of life
2the citizens' registers. The life which the righteous participate in is to b...1b090aec7dbd1af6739c4c80f8995877-6document[1b090aec7dbd1af6739c4c80f8995877-0, 1b090aec7dbd1af6739c4c80f8995877-0][Book of Life - wikipedia Book of Life Jump to: navigation, search This arti...0.00.00.03Retrieverwho is written in the book of life
3apostles' names are ``written in heaven'' (Luke x. 20), or ``the fellow-work...1b090aec7dbd1af6739c4c80f8995877-3document[1b090aec7dbd1af6739c4c80f8995877-0, 1b090aec7dbd1af6739c4c80f8995877-0][Book of Life - wikipedia Book of Life Jump to: navigation, search This arti...0.00.00.04Retrieverwho is written in the book of life
4The Absolutely True Diary of a Part-Time Indian - wikipedia The Absolutely T...e9260cbbc129f4246ee8fcfbbe385822-0document[1b090aec7dbd1af6739c4c80f8995877-0, 1b090aec7dbd1af6739c4c80f8995877-0][Book of Life - wikipedia Book of Life Jump to: navigation, search This arti...0.00.00.05Retrieverwho is written in the book of life
\n", + "
" + ], + "text/plain": [ + " content \\\n", + "0 people considered righteous before God. God has such a book, and to be blott... \n", + "1 as adversaries (of God). Also, according to ib. xxxvi. 10, one who contrives... \n", + "2 the citizens' registers. The life which the righteous participate in is to b... \n", + "3 apostles' names are ``written in heaven'' (Luke x. 20), or ``the fellow-work... \n", + "4 The Absolutely True Diary of a Part-Time Indian - wikipedia The Absolutely T... \n", + "\n", + " document_id type \\\n", + "0 1b090aec7dbd1af6739c4c80f8995877-1 document \n", + "1 1b090aec7dbd1af6739c4c80f8995877-2 document \n", + "2 1b090aec7dbd1af6739c4c80f8995877-6 document \n", + "3 1b090aec7dbd1af6739c4c80f8995877-3 document \n", + "4 e9260cbbc129f4246ee8fcfbbe385822-0 document \n", + "\n", + " gold_document_ids \\\n", + "0 [1b090aec7dbd1af6739c4c80f8995877-0, 1b090aec7dbd1af6739c4c80f8995877-0] \n", + "1 [1b090aec7dbd1af6739c4c80f8995877-0, 1b090aec7dbd1af6739c4c80f8995877-0] \n", + "2 [1b090aec7dbd1af6739c4c80f8995877-0, 1b090aec7dbd1af6739c4c80f8995877-0] \n", + "3 [1b090aec7dbd1af6739c4c80f8995877-0, 1b090aec7dbd1af6739c4c80f8995877-0] \n", + "4 [1b090aec7dbd1af6739c4c80f8995877-0, 1b090aec7dbd1af6739c4c80f8995877-0] \n", + "\n", + " gold_document_contents \\\n", + "0 [Book of Life - wikipedia Book of Life Jump to: navigation, search This arti... \n", + "1 [Book of Life - wikipedia Book of Life Jump to: navigation, search This arti... \n", + "2 [Book of Life - wikipedia Book of Life Jump to: navigation, search This arti... \n", + "3 [Book of Life - wikipedia Book of Life Jump to: navigation, search This arti... \n", + "4 [Book of Life - wikipedia Book of Life Jump to: navigation, search This arti... \n", + "\n", + " gold_id_match answer_match gold_id_or_answer_match rank node \\\n", + "0 0.0 0.0 0.0 1 Retriever \n", + "1 0.0 0.0 0.0 2 Retriever \n", + "2 0.0 0.0 0.0 3 Retriever \n", + "3 0.0 0.0 0.0 4 Retriever \n", + "4 0.0 0.0 0.0 5 Retriever \n", + "\n", + " query \n", + "0 who is written in the book of life \n", + "1 who is written in the book of life \n", + "2 who is written in the book of life \n", + "3 who is written in the book of life \n", + "4 who is written in the book of life " + ] }, "execution_count": 9, "metadata": {}, @@ -14854,22 +609,203 @@ "\n", "retriever_result = eval_result[\"Retriever\"]\n", "retriever_result.head()" - ], + ] + }, + { + "cell_type": "code", + "execution_count": 10, "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } - } - }, - { - "cell_type": "code", - "execution_count": 10, + }, "outputs": [ { "data": { - "text/plain": " answer \\\n0 \n1 those whose names are written in the Book of Life from the foundation of the... \n2 only the names of the righteous \n3 those who are found written in the book and who shall escape the troubles pr... \n0 her cousin \n\n document_id offsets_in_document \\\n0 None [{'start': 0, 'end': 0}] \n1 1b090aec7dbd1af6739c4c80f8995877-3 [{'start': 576, 'end': 658}] \n2 1b090aec7dbd1af6739c4c80f8995877-1 [{'start': 498, 'end': 529}] \n3 1b090aec7dbd1af6739c4c80f8995877-6 [{'start': 135, 'end': 305}] \n0 965a125f65658579529b39f8e4344969-3 [{'start': 423, 'end': 433}] \n\n context \\\n0 None \n1 ohn of Patmos. As described, only those whose names are written in the Book ... \n2 . The Psalmist likewise speaks of the Book of Life in which only the names o... \n3 those who are found written in the book and who shall escape the troubles pr... \n0 ng a story in the newspaper of a 12-year-old girl getting pregnant by her co... \n\n type \\\n0 answer \n1 answer \n2 answer \n3 answer \n0 answer \n\n gold_answers \\\n0 [all people considered righteous before God, every person who is destined fo... \n1 [all people considered righteous before God, every person who is destined fo... \n2 [all people considered righteous before God, every person who is destined fo... \n3 [all people considered righteous before God, every person who is destined fo... \n0 [Ethel ``Edy'' Proctor] \n\n gold_offsets_in_documents \\\n0 [[Span(start=1107, end=1149)], [Span(start=374, end=434)]] \n1 [[Span(start=1107, end=1149)], [Span(start=374, end=434)]] \n2 [[Span(start=1107, end=1149)], [Span(start=374, end=434)]] \n3 [[Span(start=1107, end=1149)], [Span(start=374, end=434)]] \n0 [[Span(start=181, end=202)]] \n\n gold_document_ids \\\n0 [1b090aec7dbd1af6739c4c80f8995877-0, 1b090aec7dbd1af6739c4c80f8995877-0] \n1 [1b090aec7dbd1af6739c4c80f8995877-0, 1b090aec7dbd1af6739c4c80f8995877-0] \n2 [1b090aec7dbd1af6739c4c80f8995877-0, 1b090aec7dbd1af6739c4c80f8995877-0] \n3 [1b090aec7dbd1af6739c4c80f8995877-0, 1b090aec7dbd1af6739c4c80f8995877-0] \n0 [965a125f65658579529b39f8e4344969-3] \n\n exact_match f1 rank node \\\n0 0.0 0.000000 1 Reader \n1 0.0 0.083333 2 Reader \n2 0.0 0.200000 3 Reader \n3 0.0 0.111111 4 Reader \n0 0.0 0.000000 1 Reader \n\n query \n0 who is written in the book of life \n1 who is written in the book of life \n2 who is written in the book of life \n3 who is written in the book of life \n0 who was the girl in the video brenda got a baby ", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
answerdocument_idoffsets_in_documentcontexttypegold_answersgold_offsets_in_documentsgold_document_idsexact_matchf1ranknodequery
0None[{'start': 0, 'end': 0}]Noneanswer[all people considered righteous before God, every person who is destined fo...[[Span(start=1107, end=1149)], [Span(start=374, end=434)]][1b090aec7dbd1af6739c4c80f8995877-0, 1b090aec7dbd1af6739c4c80f8995877-0]0.00.0000001Readerwho is written in the book of life
1those whose names are written in the Book of Life from the foundation of the...1b090aec7dbd1af6739c4c80f8995877-3[{'start': 576, 'end': 658}]ohn of Patmos. As described, only those whose names are written in the Book ...answer[all people considered righteous before God, every person who is destined fo...[[Span(start=1107, end=1149)], [Span(start=374, end=434)]][1b090aec7dbd1af6739c4c80f8995877-0, 1b090aec7dbd1af6739c4c80f8995877-0]0.00.0833332Readerwho is written in the book of life
2only the names of the righteous1b090aec7dbd1af6739c4c80f8995877-1[{'start': 498, 'end': 529}]. The Psalmist likewise speaks of the Book of Life in which only the names o...answer[all people considered righteous before God, every person who is destined fo...[[Span(start=1107, end=1149)], [Span(start=374, end=434)]][1b090aec7dbd1af6739c4c80f8995877-0, 1b090aec7dbd1af6739c4c80f8995877-0]0.00.2000003Readerwho is written in the book of life
3those who are found written in the book and who shall escape the troubles pr...1b090aec7dbd1af6739c4c80f8995877-6[{'start': 135, 'end': 305}]those who are found written in the book and who shall escape the troubles pr...answer[all people considered righteous before God, every person who is destined fo...[[Span(start=1107, end=1149)], [Span(start=374, end=434)]][1b090aec7dbd1af6739c4c80f8995877-0, 1b090aec7dbd1af6739c4c80f8995877-0]0.00.1111114Readerwho is written in the book of life
0her cousin965a125f65658579529b39f8e4344969-3[{'start': 423, 'end': 433}]ng a story in the newspaper of a 12-year-old girl getting pregnant by her co...answer[Ethel ``Edy'' Proctor][[Span(start=181, end=202)]][965a125f65658579529b39f8e4344969-3]0.00.0000001Readerwho was the girl in the video brenda got a baby
\n
" + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
answerdocument_idoffsets_in_documentcontexttypegold_answersgold_offsets_in_documentsgold_document_idsexact_matchf1ranknodequery
0None[{'start': 0, 'end': 0}]Noneanswer[all people considered righteous before God, every person who is destined fo...[[Span(start=1107, end=1149)], [Span(start=374, end=434)]][1b090aec7dbd1af6739c4c80f8995877-0, 1b090aec7dbd1af6739c4c80f8995877-0]0.00.0000001Readerwho is written in the book of life
1those whose names are written in the Book of Life from the foundation of the...1b090aec7dbd1af6739c4c80f8995877-3[{'start': 576, 'end': 658}]ohn of Patmos. As described, only those whose names are written in the Book ...answer[all people considered righteous before God, every person who is destined fo...[[Span(start=1107, end=1149)], [Span(start=374, end=434)]][1b090aec7dbd1af6739c4c80f8995877-0, 1b090aec7dbd1af6739c4c80f8995877-0]0.00.0833332Readerwho is written in the book of life
2only the names of the righteous1b090aec7dbd1af6739c4c80f8995877-1[{'start': 498, 'end': 529}]. The Psalmist likewise speaks of the Book of Life in which only the names o...answer[all people considered righteous before God, every person who is destined fo...[[Span(start=1107, end=1149)], [Span(start=374, end=434)]][1b090aec7dbd1af6739c4c80f8995877-0, 1b090aec7dbd1af6739c4c80f8995877-0]0.00.2000003Readerwho is written in the book of life
3those who are found written in the book and who shall escape the troubles pr...1b090aec7dbd1af6739c4c80f8995877-6[{'start': 135, 'end': 305}]those who are found written in the book and who shall escape the troubles pr...answer[all people considered righteous before God, every person who is destined fo...[[Span(start=1107, end=1149)], [Span(start=374, end=434)]][1b090aec7dbd1af6739c4c80f8995877-0, 1b090aec7dbd1af6739c4c80f8995877-0]0.00.1111114Readerwho is written in the book of life
0her cousin965a125f65658579529b39f8e4344969-3[{'start': 423, 'end': 433}]ng a story in the newspaper of a 12-year-old girl getting pregnant by her co...answer[Ethel ``Edy'' Proctor][[Span(start=181, end=202)]][965a125f65658579529b39f8e4344969-3]0.00.0000001Readerwho was the girl in the video brenda got a baby
\n", + "
" + ], + "text/plain": [ + " answer \\\n", + "0 \n", + "1 those whose names are written in the Book of Life from the foundation of the... \n", + "2 only the names of the righteous \n", + "3 those who are found written in the book and who shall escape the troubles pr... \n", + "0 her cousin \n", + "\n", + " document_id offsets_in_document \\\n", + "0 None [{'start': 0, 'end': 0}] \n", + "1 1b090aec7dbd1af6739c4c80f8995877-3 [{'start': 576, 'end': 658}] \n", + "2 1b090aec7dbd1af6739c4c80f8995877-1 [{'start': 498, 'end': 529}] \n", + "3 1b090aec7dbd1af6739c4c80f8995877-6 [{'start': 135, 'end': 305}] \n", + "0 965a125f65658579529b39f8e4344969-3 [{'start': 423, 'end': 433}] \n", + "\n", + " context \\\n", + "0 None \n", + "1 ohn of Patmos. As described, only those whose names are written in the Book ... \n", + "2 . The Psalmist likewise speaks of the Book of Life in which only the names o... \n", + "3 those who are found written in the book and who shall escape the troubles pr... \n", + "0 ng a story in the newspaper of a 12-year-old girl getting pregnant by her co... \n", + "\n", + " type \\\n", + "0 answer \n", + "1 answer \n", + "2 answer \n", + "3 answer \n", + "0 answer \n", + "\n", + " gold_answers \\\n", + "0 [all people considered righteous before God, every person who is destined fo... \n", + "1 [all people considered righteous before God, every person who is destined fo... \n", + "2 [all people considered righteous before God, every person who is destined fo... \n", + "3 [all people considered righteous before God, every person who is destined fo... \n", + "0 [Ethel ``Edy'' Proctor] \n", + "\n", + " gold_offsets_in_documents \\\n", + "0 [[Span(start=1107, end=1149)], [Span(start=374, end=434)]] \n", + "1 [[Span(start=1107, end=1149)], [Span(start=374, end=434)]] \n", + "2 [[Span(start=1107, end=1149)], [Span(start=374, end=434)]] \n", + "3 [[Span(start=1107, end=1149)], [Span(start=374, end=434)]] \n", + "0 [[Span(start=181, end=202)]] \n", + "\n", + " gold_document_ids \\\n", + "0 [1b090aec7dbd1af6739c4c80f8995877-0, 1b090aec7dbd1af6739c4c80f8995877-0] \n", + "1 [1b090aec7dbd1af6739c4c80f8995877-0, 1b090aec7dbd1af6739c4c80f8995877-0] \n", + "2 [1b090aec7dbd1af6739c4c80f8995877-0, 1b090aec7dbd1af6739c4c80f8995877-0] \n", + "3 [1b090aec7dbd1af6739c4c80f8995877-0, 1b090aec7dbd1af6739c4c80f8995877-0] \n", + "0 [965a125f65658579529b39f8e4344969-3] \n", + "\n", + " exact_match f1 rank node \\\n", + "0 0.0 0.000000 1 Reader \n", + "1 0.0 0.083333 2 Reader \n", + "2 0.0 0.200000 3 Reader \n", + "3 0.0 0.111111 4 Reader \n", + "0 0.0 0.000000 1 Reader \n", + "\n", + " query \n", + "0 who is written in the book of life \n", + "1 who is written in the book of life \n", + "2 who is written in the book of life \n", + "3 who is written in the book of life \n", + "0 who was the girl in the video brenda got a baby " + ] }, "execution_count": 10, "metadata": {}, @@ -14879,75 +815,75 @@ "source": [ "reader_result = eval_result[\"Reader\"]\n", "reader_result.head()" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } + ] }, { "cell_type": "code", "execution_count": null, - "outputs": [], - "source": [ - "# We can filter for all documents retrieved for a given query\n", - "retriever_book_of_life = retriever_result[retriever_result['query'] == \"who is written in the book of life\"]" - ], "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } - } + }, + "outputs": [], + "source": [ + "# We can filter for all documents retrieved for a given query\n", + "retriever_book_of_life = retriever_result[retriever_result['query'] == \"who is written in the book of life\"]" + ] }, { "cell_type": "code", "execution_count": null, - "outputs": [], - "source": [ - "# We can also filter for all answers predicted for a given query\n", - "reader_book_of_life = reader_result[reader_result['query'] == \"who is written in the book of life\"]" - ], "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } - } + }, + "outputs": [], + "source": [ + "# We can also filter for all answers predicted for a given query\n", + "reader_book_of_life = reader_result[reader_result['query'] == \"who is written in the book of life\"]" + ] }, { "cell_type": "code", "execution_count": null, - "outputs": [], - "source": [ - "# Save the evaluation result so that we can reload it later and calculate evaluation metrics without running the pipeline again.\n", - "eval_result.save(\"../\")" - ], "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } - } + }, + "outputs": [], + "source": [ + "# Save the evaluation result so that we can reload it later and calculate evaluation metrics without running the pipeline again.\n", + "eval_result.save(\"../\")" + ] }, { "cell_type": "markdown", - "source": [ - "## Calculating Evaluation Metrics\n", - "Load an EvaluationResult to quickly calculate standard evaluation metrics for all predictions, such as F1-score of each individual prediction of the Reader node or recall of the retriever." - ], "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } - } + }, + "source": [ + "## Calculating Evaluation Metrics\n", + "Load an EvaluationResult to quickly calculate standard evaluation metrics for all predictions, such as F1-score of each individual prediction of the Reader node or recall of the retriever." + ] }, { "cell_type": "code", "execution_count": 10, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [ { "name": "stdout", @@ -14974,30 +910,30 @@ "\n", "print(f'Reader - F1-Score: {metrics[\"Reader\"][\"f1\"]}')\n", "print(f'Reader - Exact Match: {metrics[\"Reader\"][\"exact_match\"]}')" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } + ] }, { "cell_type": "markdown", - "source": [ - "## Generating an Evaluation Report\n", - "A summary of the evaluation results can be printed to get a quick overview. It includes some aggregated metrics and also shows a few wrongly predicted examples." - ], "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } - } + }, + "source": [ + "## Generating an Evaluation Report\n", + "A summary of the evaluation results can be printed to get a quick overview. It includes some aggregated metrics and also shows a few wrongly predicted examples." + ] }, { "cell_type": "code", "execution_count": 15, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [ { "name": "stdout", @@ -15305,29 +1241,29 @@ ], "source": [ "pipeline.print_eval_report(saved_eval_result)" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } + ] }, { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "## Advanced Evaluation Metrics\n", "As an advanced evaluation metric, semantic answer similarity (SAS) can be calculated. This metric takes into account whether the meaning of a predicted answer is similar to the annotated gold answer rather than just doing string comparison.\n", "To this end SAS relies on pre-trained models. For English, we recommend \"cross-encoder/stsb-roberta-large\", whereas for German we recommend \"deepset/gbert-large-sts\". A good multilingual model is \"sentence-transformers/paraphrase-multilingual-mpnet-base-v2\".\n", "More info on this metric can be found in our [paper](https://arxiv.org/abs/2108.06130) or in our [blog post](https://www.deepset.ai/blog/semantic-answer-similarity-to-evaluate-qa)." - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "advanced_eval_result = pipeline.eval(\n", @@ -15338,28 +1274,28 @@ "\n", "metrics = advanced_eval_result.calculate_metrics()\n", "print(metrics[\"Reader\"][\"sas\"])" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } + ] }, { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "## Isolated Evaluation Mode to Understand Upper Bounds of the Reader's Performance\n", "The isolated node evaluation uses labels as input to the reader node instead of the output of the preceeding retriever node.\n", "Thereby, we can additionally calculate the upper bounds of the evaluation metrics of the reader." - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "eval_result_with_upper_bounds = pipeline.eval(\n", @@ -15367,42 +1303,42 @@ " params={\"Retriever\": {\"top_k\": 1}},\n", " add_isolated_node_eval=True\n", " )" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } + ] }, { "cell_type": "code", "execution_count": null, - "outputs": [], - "source": [ - "pipeline.print_eval_report(eval_result_with_upper_bounds)" - ], "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } - } + }, + "outputs": [], + "source": [ + "pipeline.print_eval_report(eval_result_with_upper_bounds)" + ] }, { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "## Evaluation of Individual Components: Retriever\n", "Sometimes you might want to evaluate individual components, for example, if you don't have a pipeline but only a retriever or a reader with a model that you trained yourself.\n", "Here we evaluate only the retriever, based on whether the gold_label document is retrieved." - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "## Evaluate Retriever on its own\n", @@ -15412,29 +1348,29 @@ "print(\"Retriever Recall:\", retriever_eval_results[\"recall\"])\n", "# Retriever Mean Avg Precision rewards retrievers that give relevant documents a higher rank\n", "print(\"Retriever Mean Avg Precision:\", retriever_eval_results[\"map\"])" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } + ] }, { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "## Evaluation of Individual Components: Reader\n", "Here we evaluate only the reader in a closed domain fashion i.e. the reader is given one query\n", "and its corresponding relevant document and metrics are calculated on whether the right position in this text is selected by\n", "the model as the answer span (i.e. SQuAD style)" - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "# Evaluate Reader on its own\n", @@ -15448,38 +1384,14428 @@ "print(\"Reader Exact Match:\", reader_eval_results[\"EM\"])\n", "# Reader F1-Score is the average overlap between the predicted answers and the correct answers\n", "print(\"Reader F1-Score:\", reader_eval_results[\"f1\"])" - ], + ] + }, + { + "cell_type": "markdown", "metadata": { "collapsed": false, - "pycharm": { - "name": "#%%\n" + "id": "8QJ68G12U7tb" + }, + "source": [ + "## About us\n", + "\n", + "This [Haystack](https://github.com/deepset-ai/haystack/) notebook was made with love by [deepset](https://deepset.ai/) in Berlin, Germany\n", + "\n", + "We bring NLP to the industry via open source! \n", + "Our focus: Industry specific language models & large scale QA systems. \n", + " \n", + "Some of our other work: \n", + "- [German BERT](https://deepset.ai/german-bert)\n", + "- [GermanQuAD and GermanDPR](https://deepset.ai/germanquad)\n", + "- [FARM](https://github.com/deepset-ai/FARM)\n", + "\n", + "Get in touch:\n", + "[Twitter](https://twitter.com/deepset_ai) | [LinkedIn](https://www.linkedin.com/company/deepset-ai/) | [Slack](https://haystack.deepset.ai/community/join) | [GitHub Discussions](https://github.com/deepset-ai/haystack/discussions) | [Website](https://deepset.ai)\n", + "\n", + "By the way: [we're hiring!](https://www.deepset.ai/jobs)" + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "name": "Tutorial5_Evaluation.ipynb", + "provenance": [] + }, + "interpreter": { + "hash": "01829e1eb67c4f5275a41f9336c92adbb77a108c8fc957dfe99d03e96dd1f349" + }, + "kernelspec": { + "display_name": "Python 3.9.5 64-bit ('venv': venv)", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.5" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "0138ab99398e44c69ee0d92191e7d142": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "016b6c1acdd04369ab22c635e69382bb": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "035e40aab316467987b05fe9157ca1ce": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "03698f5714bc477c9a0b7dec7542fd50": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "03ea7c0ef54c4d0f96493415aaf461d3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "042038fce6024fbbba45d9afc21c4dc9": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "04e887b2d2cd471994f65685a81a0bfc": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "0523b10429d04f3d81d7078a13a12168": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_6ca6dc2c6b4349fcb39ed8c44f65bdb0", + "placeholder": "​", + "style": "IPY_MODEL_807e4eee3b2c440c8799afcc6344ff5d", + "value": "Downloading: 100%" + } + }, + "0593f2471d4244378a68721a422ffafa": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "05d82995d5a94b5db39bf639d1cc05c2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_8a9f9b7bab8e40278430a35720066a61", + "placeholder": "​", + "style": "IPY_MODEL_fc011913e8464d439a97fe75ef5f9fa1", + "value": " 899k/899k [00:00<00:00, 1.33MB/s]" + } + }, + "05dd9db4d2e94210ae4b62fad5f6f302": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_83aee8bf612345a18aea950c9a1fa143", + "placeholder": "​", + "style": "IPY_MODEL_caae193b34644af7950e2e3eac81a5bb", + "value": " 5.07M/5.07M [00:00<00:00, 22.4MB/s]" + } + }, + "0618a236cc14473f92257aebbc3d930d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "071a2e5641624c7ea6bf57d764fa5a90": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_553183603f114fefa03c2f251ac38ddc", + "placeholder": "​", + "style": "IPY_MODEL_d579129ca5c04c6a8400c2483a952386", + "value": "Batches: 100%" + } + }, + "0864e13086e44b40bd71433caec618e3": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "08a1d1a6fb884c769d409170d6cda556": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "08c0344f4cfc4ba7b9271e4301ee9095": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "08cd116989124f919aa151c4535bbcba": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_fbee94f4d7674f54b75c42d33c2a0907", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_13996ad0065d4573885e0140c1dc91a1", + "value": 1 + } + }, + "09537583625f4f4aac01a51dd06a6cca": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_3f6f4ce515db44d3a365a9d34a0d3a2e", + "IPY_MODEL_43a5ce7b197d46b79d74cc3fbfb6dc53", + "IPY_MODEL_d520129190494e17a338b9e9dc02cdaa" + ], + "layout": "IPY_MODEL_829c0d5f7b614e97b4fda0a9e62dc5ae" + } + }, + "09cb41d0bbc14a24b8dde747c249a78e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "0c481a8213f84529b2c1ff8b02af7e01": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_312f4cf044da40eca4cf099ac4d19654", + "IPY_MODEL_b63ca14fc0cb46e88e5d86f0ff4609fc", + "IPY_MODEL_3c1f87725b1f410eb81509369edf3de1" + ], + "layout": "IPY_MODEL_258c09dd5fdd49ea8d428a4a7de9cfdc" + } + }, + "0cdff9bf98da47789a75f2beeb5727b4": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "0d34710578ac4c1db6fe372b5d1215b4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_978b165c69dd4e14b8479ea7bd8cb1e5", + "max": 456318, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_db57281b3d7a448fbd2d63d8f127ea3e", + "value": 456318 + } + }, + "0ee7399f4e2148b38ad2dd0ef1816e78": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "0efc973f96af4d7fa2118f72099a3724": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "0f58901ab69e49e7947193681e2ab5f3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_0864e13086e44b40bd71433caec618e3", + "placeholder": "​", + "style": "IPY_MODEL_f16710c9831d476b85c48213d05e1aea", + "value": " 1/1 [00:00<00:00, 13.38it/s]" + } + }, + "1096b427606f47ae920f4313cbee232b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_512226094de24fb58f94c1cd240250e4", + "IPY_MODEL_197840b3350e40ab866625ac932efee9", + "IPY_MODEL_0f58901ab69e49e7947193681e2ab5f3" + ], + "layout": "IPY_MODEL_311b248f13e446739340b070f02ce6ba" + } + }, + "1171111ff1244c68bc2b0269a9f8047b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_cd0a32b06546428193dd7fa89fbf7e9e", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_d6a66e1346d849b9802898417d34697c", + "value": 1 + } + }, + "118aedffeecd4f109ae04a4561baeb08": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_ddaf59cedca143c8b4fe005a51077323", + "IPY_MODEL_25d7818d6f7b4b628ab3f83f2c2fa6a3", + "IPY_MODEL_48431fa7696540fc9696799f75166680" + ], + "layout": "IPY_MODEL_59efb57b419242a1aba4d20084e29d38" + } + }, + "13996ad0065d4573885e0140c1dc91a1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "13b75146701145808315dc87d598b3f9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "14462288182e490fbbf8086972008a22": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "1618b6a1272741a484107d64b0892919": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_c2a10377a4104f0db40385232e02ddeb", + "IPY_MODEL_64ac622c81094854b887754eb507438a", + "IPY_MODEL_58c2ec2a05024f1081dce3ad466e6c5a" + ], + "layout": "IPY_MODEL_1e21f3f2addd4089a21bdf43fcc3dc13" + } + }, + "167f8f83ec114f42921645ddfd3ce9ed": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "18359b5df7574a289e8b4582f65ab0a3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "18626d41312c4b60b68375614682dee6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_bf017ec69a084b2fae86b5e24282fa2b", + "placeholder": "​", + "style": "IPY_MODEL_93dd5983dd31466e862732cc991f0590", + "value": "Downloading: 100%" + } + }, + "1873a766e7c64601b4be489d700e4b9b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "197130c97a6f4113bb70f9872f65dede": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "197840b3350e40ab866625ac932efee9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_d59b565796fe4a3b9fe3b0b12dd73da4", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_5c0562c932764d50a34251e32aad1b9a", + "value": 1 + } + }, + "1a372fb42b29492691dc7fc04fed105b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1abc887bedb6415eb5c15ac9ca3e2a2c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1ad8f4afb35e4ee69a0cde1f98be5ea6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_4ac053bc3db6423ba5f0d143919d1cca", + "placeholder": "​", + "style": "IPY_MODEL_7e725f96b7894fa6abb34a286d8cc3a4", + "value": " 1/1 [00:00<00:00, 11.15it/s]" + } + }, + "1b35fdad27d348299ebf9a3376a332c0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_21753241fd42429595ea9288afa2d41f", + "IPY_MODEL_51f95102471a416887e19ff8753750d8", + "IPY_MODEL_961b8ed89e63441ead537ff2b502c857" + ], + "layout": "IPY_MODEL_8b097bc82a2a4479895400362c5e2782" + } + }, + "1bd03e9d1a994d96866759d0eeab61e1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_ecbc440b3bd341e6b0e19f0088c58930", + "max": 229, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_e4f7466fd5964628b32ffe8a773c4ff6", + "value": 229 + } + }, + "1c003f6cf2064ffeb152e5bf5dee3780": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "1c419cfc78214e80a6e21448eb8ceaab": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "1d5d220bedc54dbdbacb9c43767bf64d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1e21f3f2addd4089a21bdf43fcc3dc13": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1fce85ef81284a0eaf9f439b5e255163": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_b62c8b64f87a4209a74cd5bfb5522109", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_2194f54585b141d085f1f17ef200ab65", + "value": 1 + } + }, + "21444149a59e4761a47d0ef483c7aa45": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "21753241fd42429595ea9288afa2d41f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_cdf6ee9d1d1c422795e82dbb5691053e", + "placeholder": "​", + "style": "IPY_MODEL_acc7988ac6a94afdaf980e4d1ab871b5", + "value": "Batches: 100%" + } + }, + "2194f54585b141d085f1f17ef200ab65": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "223e5e8dfd48473d95dc159f970c2bbe": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "2458d71e71554da3bd7edf35a340f700": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_3f96ab0342bc416ab7b2fad271be8100", + "placeholder": "​", + "style": "IPY_MODEL_b1845caaff584163b6d9723f4e67f5b2", + "value": "Downloading: 100%" + } + }, + "252f1fab09d4425599b108012bf99993": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_67ee3f0117bc4e7bb4c7b9351845cdd4", + "IPY_MODEL_1fce85ef81284a0eaf9f439b5e255163", + "IPY_MODEL_e3026ca9693547abab2baacd5aa3dece" + ], + "layout": "IPY_MODEL_bde4901baa744b7bac106ac3630ee31c" + } + }, + "258c09dd5fdd49ea8d428a4a7de9cfdc": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "25d7818d6f7b4b628ab3f83f2c2fa6a3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_8dfc1480100f43e0b4ea2fc2fb9279d3", + "max": 571, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_3df3da3d04d5448c810bd00f66bd3a0e", + "value": 571 + } + }, + "267928e896124f6087b197b255e53360": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_d7fe543399db4a64b23761e6f8e967ce", + "placeholder": "​", + "style": "IPY_MODEL_03ea7c0ef54c4d0f96493415aaf461d3", + "value": "Batches: 100%" + } + }, + "26f3c26b0c5a4e7d945029e516f17ff8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_8262368800754a6db7490a90dc94cbf8", + "placeholder": "​", + "style": "IPY_MODEL_c9025edb46eb43a98a9259380de08a36", + "value": "Downloading: 100%" + } + }, + "277e1f68e583461694dbfbd7354154c9": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "28c517182585423aa28e3b2d949678c4": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "29317e31312545c49d51cde6c617fe3f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "2972765858b94d91a525a1e99ab16e07": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "2a9ef1f2f43d47b28cd0ff7ef4a21ade": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "2b17ffac93b8406fac55b695d93d963b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "2b30500a465d4343a1f6ed6cd85dfb62": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_66c808ddecba493482ba0ec96b267d83", + "IPY_MODEL_f9dcdbbe20114ff78c2d980a1924bd9e", + "IPY_MODEL_8bd47dc1fba04e50b57a646fdff4d08a" + ], + "layout": "IPY_MODEL_9016e2b714fa4f7daaab4a99299190e8" + } + }, + "2bd3bd51ae644c1894a2ddca09d14e85": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "2bfc05c7ef514354bfb41fe6290dbf33": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_bcca8127f74f4e36813a902020d9cb4e", + "placeholder": "​", + "style": "IPY_MODEL_b0fda0f7f1694c958fabb866c8837b07", + "value": " 1/1 [00:00<00:00, 11.61it/s]" + } + }, + "2c028a3f096344d68071d78387efa117": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_73d7fdd3f38349b4882124d8351eace5", + "placeholder": "​", + "style": "IPY_MODEL_76f4af76b42f460fa34d5f00a9656dc5", + "value": "Downloading: 100%" + } + }, + "2da12d480a1d4907beada5f8d80cdf1e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "2da7b278298e4a5996fb9bc8ab91be18": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_5e3ad720118240188fef69ad77cd72e3", + "placeholder": "​", + "style": "IPY_MODEL_843cfba29fd046638f79ca44d340b091", + "value": "Batches: 100%" + } + }, + "2e3ff8ff7d7244e09a9a954d15c9d40e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "2e6177cd6f7941e7b948aeac0dafd05c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "2f9ea952cead4eb8a9dd7a4be0f360fc": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "303fd4fd657f4181a7d5aaf125bacea2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_bd7121c2a3e244ef91ff5150d2d8838b", + "placeholder": "​", + "style": "IPY_MODEL_33ae1c20ae0a4207ab3be3bfef640907", + "value": "Batches: 100%" + } + }, + "307f6af0ea724573a59c5ef0a429fd0c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "3096cae7388e4b988df306be9cc58afd": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "30f65cab87754a3e9cf0ff90ac6a6658": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "311b248f13e446739340b070f02ce6ba": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "312b5718b838451d896f3447b9f9880c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "312f4cf044da40eca4cf099ac4d19654": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_50a9ecd07ef24c728777b63b1e6982fe", + "placeholder": "​", + "style": "IPY_MODEL_86a2aa7f86c840b8ba3feb351ef9cdba", + "value": "Batches: 100%" + } + }, + "3200cd718a4c439386994d13e1b0e173": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "32c43233c8e64a8eb5c4badbb01420f5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "331bc9eb57ce4c5d8deaa47e5aaa078a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_30f65cab87754a3e9cf0ff90ac6a6658", + "placeholder": "​", + "style": "IPY_MODEL_eb8e6976ca9e4a58851ec0a51107d74f", + "value": " 239/239 [00:00<00:00, 5.12kB/s]" + } + }, + "33ae1c20ae0a4207ab3be3bfef640907": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "34620791c5d145bfbb0a787f0ca4eb6b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "3478990a21b54ac090ae93e5a3bbd084": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_798c7b005e1a490e9a4a9de4569e9351", + "IPY_MODEL_44aaf2ebc82c4331ac7f1eed39f3706d", + "IPY_MODEL_331bc9eb57ce4c5d8deaa47e5aaa078a" + ], + "layout": "IPY_MODEL_5e3141a3a8584caaae4a2134a21d15a4" + } + }, + "34a4db43ae9f481ea86e79a5bff2e3ef": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_b794ab54698f4db18ae5edabc7d96783", + "placeholder": "​", + "style": "IPY_MODEL_b2955f26a1b34b21881c6a98f92234ad", + "value": " 53.0/53.0 [00:00<00:00, 1.11kB/s]" + } + }, + "359fd318bace46468f7972a24a87a52b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "365ec9a2c50d4e7385ef438bed36b5d8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_fad323f7b8fb49e79c65ddb87f9f5346", + "placeholder": "​", + "style": "IPY_MODEL_409228238c94434eaa63fbb715df4f80", + "value": " 690/690 [00:00<00:00, 15.0kB/s]" + } + }, + "3681c9063cf1428b8a757090453321db": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "368a61e33c3144bfa3cc94af10691146": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "36c9dc024fed498cb76edd9f18447979": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_035e40aab316467987b05fe9157ca1ce", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_f92fb75d397d47ac967febf7d38efc35", + "value": 1 + } + }, + "36f855f41cc1488f9d92ec34bb8d30b0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_0523b10429d04f3d81d7078a13a12168", + "IPY_MODEL_64cd5b6f0c4d4631a1049ee7ee50f063", + "IPY_MODEL_eb11ea5785284bf6a15cc31ad643ed88" + ], + "layout": "IPY_MODEL_1d5d220bedc54dbdbacb9c43767bf64d" + } + }, + "37482b3d784245dd9044da86a5afe464": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_9de62b03f720467fa45c34fb485771d8", + "IPY_MODEL_1171111ff1244c68bc2b0269a9f8047b", + "IPY_MODEL_bd6c06e82de34ff7b3b0cb30b914ce81" + ], + "layout": "IPY_MODEL_0593f2471d4244378a68721a422ffafa" + } + }, + "38bab693920d447b8bb1a5f1e6c2de39": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_45f7c1377bd2498496d8aad327da5a25", + "max": 190, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_627e45096be0470f8ba6e7650ae1038b", + "value": 190 + } + }, + "3914e344ed9e4f85b9d8670ec062ef30": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_5ab8cf3f17e84139bca02f42e72f48a6", + "IPY_MODEL_5280dbd3704e4c1bb84d058fee8b5e78", + "IPY_MODEL_ade97ddccca24f4c9e01fb19e2d8bfb7" + ], + "layout": "IPY_MODEL_4523fbfdd66049ed83265f166f5d6f16" + } + }, + "397fea90e5944348b0ab71f87a3c42aa": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_2458d71e71554da3bd7edf35a340f700", + "IPY_MODEL_1bd03e9d1a994d96866759d0eeab61e1", + "IPY_MODEL_a867e816d795422ba16cfb3b4295e7f2" + ], + "layout": "IPY_MODEL_53cf5abeba59442fa559ba35ad96f279" + } + }, + "398c87412a4b41a48f8ed8538e0a7b91": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_8f3b276f21474fb78e11e2a5dae516bd", + "placeholder": "​", + "style": "IPY_MODEL_1c419cfc78214e80a6e21448eb8ceaab", + "value": " 1/1 [00:00<00:00, 11.61it/s]" + } + }, + "3b896b94d6af4857952193f34add9e88": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "3b8baa9a443c417996fb82eed060c6ba": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "3ba492ab49d64d9a9010e46d293c3053": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "3c1f87725b1f410eb81509369edf3de1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_f0c8ddd71eff40df8332fcf83d31c0bf", + "placeholder": "​", + "style": "IPY_MODEL_e822001de9ef4cf99d593f930f41f96a", + "value": " 1/1 [00:00<00:00, 12.69it/s]" + } + }, + "3c391b52b10941979277f20802e540ef": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "3d211e6614f4451e9d14866cb3a8332d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "3df3da3d04d5448c810bd00f66bd3a0e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "3e23763ee2944110b0899fcbb805e3bd": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "3efe97c2a0824f4e9c31977d315b1ab2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_e2d9085a4252424082cf9238694d871b", + "placeholder": "​", + "style": "IPY_MODEL_93b48c87a738442b885ea68f20e17f9b", + "value": "Batches: 100%" + } + }, + "3f6f4ce515db44d3a365a9d34a0d3a2e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_e781609438004ae0ba1efb4a877065ae", + "placeholder": "​", + "style": "IPY_MODEL_0efc973f96af4d7fa2118f72099a3724", + "value": "Downloading: 100%" + } + }, + "3f915b2f0bba48c48865ac5b45487822": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "3f96ab0342bc416ab7b2fad271be8100": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "409228238c94434eaa63fbb715df4f80": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "40a7c2ba203f42deb6c7010959c8f2c9": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "40d75e4d444e4d8792fbd1a660c732e2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_912e6dd1ff544e8d9c94609ec899fbbe", + "IPY_MODEL_a6963c7d4e1a46c2a0c86ef3faa36548", + "IPY_MODEL_95013e8d9b16488e8f95750134a09b90" + ], + "layout": "IPY_MODEL_1abc887bedb6415eb5c15ac9ca3e2a2c" + } + }, + "420f93d2f7474dc38922c2277b5bcfcc": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_1873a766e7c64601b4be489d700e4b9b", + "max": 122, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_ceb036e9f5bd4e9da47db5dff3eb3acb", + "value": 122 + } + }, + "427f364bc9644745ad3f7abfc43b7b6e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "435328b6647d4d2986ca27179aa9a3cb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_d27877c6ad6148078e176ae4ce363c35", + "IPY_MODEL_8c88d2fa52474307a130a2d9ae6f1810", + "IPY_MODEL_b0744737aba1427aa04d33402e0c7a2a" + ], + "layout": "IPY_MODEL_66afe6aa36534f4897afdf035037c66c" + } + }, + "43a5ce7b197d46b79d74cc3fbfb6dc53": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_c7fd461142854331937a6ada7ff8f64c", + "max": 402, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_f4b22763b32945a78822d9027ab93c5c", + "value": 402 + } + }, + "43fa7009112741c89725963985cb9f08": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "443a8a6c17964705931974c420229649": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "44aaf2ebc82c4331ac7f1eed39f3706d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_2da12d480a1d4907beada5f8d80cdf1e", + "max": 239, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_56206fe85d3744589433ac7cd8dd756d", + "value": 239 + } + }, + "4523fbfdd66049ed83265f166f5d6f16": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "45a892664d8d4a2abba2bc805208868e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "45f7c1377bd2498496d8aad327da5a25": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4681de508aac4dbb975199dc57df33d7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "47e629b53187448f8eb54bd8b31af735": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_cbfb512f58c44b879e89fc6917799fd4", + "placeholder": "​", + "style": "IPY_MODEL_93d3a93cd8634149b96cbd528bdb9e82", + "value": " 1/1 [00:00<00:00, 12.34it/s]" + } + }, + "48182100536a425f9a9955fecf19627d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "4837b34ccb4d4688865dc24dc58a7c1e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "48431fa7696540fc9696799f75166680": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_8e0958b5dc27412e9f0332da3457ffdb", + "placeholder": "​", + "style": "IPY_MODEL_0618a236cc14473f92257aebbc3d930d", + "value": " 571/571 [00:00<00:00, 12.0kB/s]" + } + }, + "48dd9a6aa6e04253993e692d727876f1": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4ac053bc3db6423ba5f0d143919d1cca": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4c9fcae8ba86441e98dc6c68b3303659": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4d46dfc8082246568e7cc69f74baac14": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_9ba1c4bac8014f38a1dc24f2a7b3c3cd", + "placeholder": "​", + "style": "IPY_MODEL_c357ff588a474c59924747141954d81e", + "value": "Batches: 100%" + } + }, + "4d4beedccc5248679201df2cd2481429": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4d922fb301f944fbb0218335a28cf6e5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_b6729cc6ba084677af55ac63c819b72f", + "max": 898822, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_ea439e2251ed467fb3a775f0c8e0c3bb", + "value": 898822 + } + }, + "4dad7e58cc47436aafe38230514325a1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_3096cae7388e4b988df306be9cc58afd", + "placeholder": "​", + "style": "IPY_MODEL_2b17ffac93b8406fac55b695d93d963b", + "value": " 79.0/79.0 [00:00<00:00, 1.81kB/s]" + } + }, + "4e09d22438dc434d99c6ce15051a06b3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "4ebe093dbae1435eb6b032fbfae21a77": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_277e1f68e583461694dbfbd7354154c9", + "max": 53, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_3f915b2f0bba48c48865ac5b45487822", + "value": 53 + } + }, + "4fc88278033a4eaea62acd7cf7e4c228": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "50432636bd864dc5bd99302283f62f93": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_4d4beedccc5248679201df2cd2481429", + "placeholder": "​", + "style": "IPY_MODEL_d1fec191a2b94bf0bbde31707f3637b1", + "value": "Batches: 100%" + } + }, + "50a9ecd07ef24c728777b63b1e6982fe": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "50e872048a9b4fe58800126c39a0d027": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "512226094de24fb58f94c1cd240250e4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_88783d2c81054461b9b44086f9691ce2", + "placeholder": "​", + "style": "IPY_MODEL_2972765858b94d91a525a1e99ab16e07", + "value": "Batches: 100%" + } + }, + "51eeedf54ce0473797c98793ebfb0225": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "51f5c4ae62124c2eb09cd655d50a042c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "51f95102471a416887e19ff8753750d8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_3b896b94d6af4857952193f34add9e88", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_167f8f83ec114f42921645ddfd3ce9ed", + "value": 1 + } + }, + "5254f681c78941c9a3679fbbf6853d3a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_7abf0d496b76497882548ebde72f91cd", + "placeholder": "​", + "style": "IPY_MODEL_9480ca5448ad4a54ba09bd40356e9cf5", + "value": " 723/723 [00:00<00:00, 14.9kB/s]" + } + }, + "5280dbd3704e4c1bb84d058fee8b5e78": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_3c391b52b10941979277f20802e540ef", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_8289aad6c2b04cd2931a6ddc25d679bf", + "value": 1 + } + }, + "534b3e6ed51648c081a9a3c9b1188e45": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "53cf5abeba59442fa559ba35ad96f279": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "548ef6c85056414cb0ce79164a086d35": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_2a9ef1f2f43d47b28cd0ff7ef4a21ade", + "placeholder": "​", + "style": "IPY_MODEL_f36dc87a4af7481cb3c2cba23d57eb5a", + "value": "Downloading: 100%" + } + }, + "54a4a9ebf2b24542a97157643fc8760e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "553183603f114fefa03c2f251ac38ddc": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5581c851216e48c7b128f11bd93ca8e4": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "56206fe85d3744589433ac7cd8dd756d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "565bdcb1739643119edcafd4df6e8f11": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "56fb299136054a08a950201d3e7bc51e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5726eac63ec24b20a667084ff1614cad": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "572742602e624001a1e3732444a6f43b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_9ca52d8d4e7148f7bead223fa5740d16", + "IPY_MODEL_4ebe093dbae1435eb6b032fbfae21a77", + "IPY_MODEL_34a4db43ae9f481ea86e79a5bff2e3ef" + ], + "layout": "IPY_MODEL_b6e52e3a6ee54efbaa1291320b47f411" + } + }, + "576765482f3d4ee8851db9845c34a246": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "578b058ce8414637bcd7d660a3ea8adc": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_acda5822bf844c2780f96150983f1274", + "placeholder": "​", + "style": "IPY_MODEL_2e6177cd6f7941e7b948aeac0dafd05c", + "value": " 1/1 [00:00<00:00, 10.59it/s]" + } + }, + "5817e7254041439692a9f9fc8d26d05f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_68f8afd75269413abd300740692d13eb", + "placeholder": "​", + "style": "IPY_MODEL_f8a6d02669224f5e9d8d09be5451b08b", + "value": " 1/1 [00:00<00:00, 9.50it/s]" + } + }, + "58c2ec2a05024f1081dce3ad466e6c5a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_720453f72c9d4681ae0db5cdf297cc71", + "placeholder": "​", + "style": "IPY_MODEL_81b3ce0858bd4bf8a168538397b73970", + "value": " 1/1 [00:00<00:00, 16.68it/s]" + } + }, + "59039df74ce64c2f9e91663b6498c29c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_2c028a3f096344d68071d78387efa117", + "IPY_MODEL_4d922fb301f944fbb0218335a28cf6e5", + "IPY_MODEL_05d82995d5a94b5db39bf639d1cc05c2" + ], + "layout": "IPY_MODEL_9e130b97f0f4463f85df834d0f99d6ef" + } + }, + "59efb57b419242a1aba4d20084e29d38": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5a828469ff1d4e0aa10346776ebe6ed8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "5ab8cf3f17e84139bca02f42e72f48a6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_5c8ae6b463cb4c7bbba2b4c00eb6972b", + "placeholder": "​", + "style": "IPY_MODEL_d69bff579d794cd18920cef35b9cea2a", + "value": "Batches: 100%" + } + }, + "5acc7081c57645cda08f722a80a82618": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_2f9ea952cead4eb8a9dd7a4be0f360fc", + "placeholder": "​", + "style": "IPY_MODEL_3681c9063cf1428b8a757090453321db", + "value": " 190/190 [00:00<00:00, 4.28kB/s]" + } + }, + "5b481a669c6b4443af672436df2e0f87": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5bbf16f90e5a44ba953943e51af0a384": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "5c0562c932764d50a34251e32aad1b9a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "5c8ae6b463cb4c7bbba2b4c00eb6972b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5d65e5693e64421da29ea68e5bf806fc": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_8aa11778066445eab63794589f241463", + "IPY_MODEL_bb9530a97bdf4221995c34ecdac01177", + "IPY_MODEL_a47599795dff439fa7133ed5d786edcb" + ], + "layout": "IPY_MODEL_016b6c1acdd04369ab22c635e69382bb" + } + }, + "5db857b352964db3a617568ff1dce86d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_5f94d400ea884c1cadfc966e44849b3a", + "IPY_MODEL_0d34710578ac4c1db6fe372b5d1215b4", + "IPY_MODEL_994ae85181664e2e87a2ee18a7a237ba" + ], + "layout": "IPY_MODEL_7752437041f745a4af4b9130df3fefa7" + } + }, + "5e3141a3a8584caaae4a2134a21d15a4": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5e3ad720118240188fef69ad77cd72e3": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5f2eedf3c8b74abca674ec0bf28f36a1": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5f94d400ea884c1cadfc966e44849b3a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_ccfd1a0b6f494d8a9d78e7387261fba8", + "placeholder": "​", + "style": "IPY_MODEL_368a61e33c3144bfa3cc94af10691146", + "value": "Downloading: 100%" + } + }, + "5fd41c40b79a49a5b5ec135134b91f6a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_18626d41312c4b60b68375614682dee6", + "IPY_MODEL_38bab693920d447b8bb1a5f1e6c2de39", + "IPY_MODEL_5acc7081c57645cda08f722a80a82618" + ], + "layout": "IPY_MODEL_abcf2fc37c8e429da2d0fca4ee437a74" + } + }, + "608c3c6002d248d0a4e8463c558f3464": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_8262d554e9de4c7fa498e949cedefc99", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_66e0737384154c58a8fa44ccd69b7477", + "value": 1 + } + }, + "60c6f5edec98476fb2794712ed499206": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "60dfc3ed0c8a45eebeaf8e35868e7708": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "60eb65d6a8ce4ee288a8aabea9d33094": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_0cdff9bf98da47789a75f2beeb5727b4", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_3200cd718a4c439386994d13e1b0e173", + "value": 1 + } + }, + "61395f952fff44ddbf35195f08890b3a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "627e45096be0470f8ba6e7650ae1038b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "629d1895d93a44b29c7748e11268580a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_312b5718b838451d896f3447b9f9880c", + "placeholder": "​", + "style": "IPY_MODEL_77a3254e2c404c129ce7f43d850f3b7a", + "value": "Downloading: 100%" + } + }, + "64ac622c81094854b887754eb507438a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_3b8baa9a443c417996fb82eed060c6ba", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_223e5e8dfd48473d95dc159f970c2bbe", + "value": 1 + } + }, + "64cd5b6f0c4d4631a1049ee7ee50f063": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_d4dbfa5e89e7432dbed34606a786fd6f", + "max": 772, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_4837b34ccb4d4688865dc24dc58a7c1e", + "value": 772 + } + }, + "6533e9e24e5c4ecfbb12de41cc170975": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_d345a0d6a7a84e51bbbcd282082b1186", + "max": 723, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_18359b5df7574a289e8b4582f65ab0a3", + "value": 723 + } + }, + "656e26469505445e8bcefd253e0c7c30": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "66afe6aa36534f4897afdf035037c66c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "66c808ddecba493482ba0ec96b267d83": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_c880c3a9c45042e69d13ffd5dd1c6403", + "placeholder": "​", + "style": "IPY_MODEL_b15355099b7a4b88b9ce876378d03367", + "value": "Batches: 100%" + } + }, + "66e0737384154c58a8fa44ccd69b7477": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "675951a59fb441bbb8a5dc2c4b2c753e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "67ee3f0117bc4e7bb4c7b9351845cdd4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_56fb299136054a08a950201d3e7bc51e", + "placeholder": "​", + "style": "IPY_MODEL_79b6c5bfa584487586da0caecad5acc9", + "value": "Batches: 100%" + } + }, + "68f8afd75269413abd300740692d13eb": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "693afa9584a34f97ae3ebbc3a775e72a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_cd2c571f25384077a5a1a592931f7f7a", + "IPY_MODEL_c15d324309e14d0c913177d745176265", + "IPY_MODEL_398c87412a4b41a48f8ed8538e0a7b91" + ], + "layout": "IPY_MODEL_43fa7009112741c89725963985cb9f08" + } + }, + "694158e7816f4b10bf8cb6cae954aeaa": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "697432dd99b946688ba52fdf5d5542c1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_26f3c26b0c5a4e7d945029e516f17ff8", + "IPY_MODEL_7acf9b34256b41909f27cf6552fa8499", + "IPY_MODEL_5254f681c78941c9a3679fbbf6853d3a" + ], + "layout": "IPY_MODEL_042038fce6024fbbba45d9afc21c4dc9" + } + }, + "69750fea2e7149eab8928282ba9bae29": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_548ef6c85056414cb0ce79164a086d35", + "IPY_MODEL_cf58b340496b4d62b610451cedbd709a", + "IPY_MODEL_4dad7e58cc47436aafe38230514325a1" + ], + "layout": "IPY_MODEL_08a1d1a6fb884c769d409170d6cda556" + } + }, + "6ca6dc2c6b4349fcb39ed8c44f65bdb0": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6e697b2f47024ba78b4de46587b82d4b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6eeafcdcdf894b33a58e1d7c99fe3918": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_4c9fcae8ba86441e98dc6c68b3303659", + "placeholder": "​", + "style": "IPY_MODEL_8e67ff4e2fdf45bb840cee3db416a7cf", + "value": " 1/1 [00:00<00:00, 11.94it/s]" + } + }, + "6f028c7e888e4ae5ab5c1e42ff142b5f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "6f2a17a8dc19494998ab2dd2d81bcaa8": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6f7ddc1720344ba9b939a8e4ac593d67": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_ed683929822b4084ba33e89b23936b16", + "IPY_MODEL_94c88d0fc3f949fbacfb6b4fcd99cc63", + "IPY_MODEL_b262e92ff6484405a0e9364f6ecafb6a" + ], + "layout": "IPY_MODEL_b480c97c1d9944b9a8dd09ed6e1e9bd3" + } + }, + "6fae51602c934f6fbc6eb7b0d37e2c26": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "7189cebe70004a4293a9d868cada294e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "720453f72c9d4681ae0db5cdf297cc71": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "735cb17199d9403b9d65f598067fb17f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "73d7fdd3f38349b4882124d8351eace5": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "746adb0fb9964e27b9f9a92a94022d25": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_8e52fb3f81ba4607bfd12c3302a98ee8", + "IPY_MODEL_6533e9e24e5c4ecfbb12de41cc170975", + "IPY_MODEL_ea2992e1f7144cc29c3bfffbbf64e2ac" + ], + "layout": "IPY_MODEL_959e2396a101463e9796ae461f189e5d" + } + }, + "74b281989cd84b01ad957259c78265fd": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "763dc9a81242444183854e8f65882c27": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_e85e291b0c50401abd9d7588ce1467cb", + "IPY_MODEL_df007844178f4b63b67831b4d38576df", + "IPY_MODEL_85908f2604094196a0c86cb6dd731615" + ], + "layout": "IPY_MODEL_86d167621f81425b9a2b0369146fa314" + } + }, + "76a9a9ff30384c63bbafac8dad7e6b6f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "76f40571571b4ddd87df3a29718b835e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "76f4af76b42f460fa34d5f00a9656dc5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "7751d434164249b79f863d1cb59b4bee": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "7752437041f745a4af4b9130df3fefa7": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "7770031e5dcb4f398df87332c8091f2e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_e7658ccda51c46a6b560a260c38f933d", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_f5417b7abd5a48178fd0c0a8aefeae05", + "value": 1 + } + }, + "77a3254e2c404c129ce7f43d850f3b7a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "78a5e21ae14d49a1b43d583ed4c9ccb0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_3efe97c2a0824f4e9c31977d315b1ab2", + "IPY_MODEL_af462d4f283c43cfb86ab7909cebaa31", + "IPY_MODEL_5817e7254041439692a9f9fc8d26d05f" + ], + "layout": "IPY_MODEL_e0c76e0937db4e3d916710d7172da3f1" + } + }, + "798c7b005e1a490e9a4a9de4569e9351": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_c10f5dc8d3684757bc6102d734c555f6", + "placeholder": "​", + "style": "IPY_MODEL_a9552d04ed6045718cc60ad1c2764a32", + "value": "Downloading: 100%" + } + }, + "79b013bf213d41e1a3e285028a7707c6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "79b6c5bfa584487586da0caecad5acc9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "7abf0d496b76497882548ebde72f91cd": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "7acf9b34256b41909f27cf6552fa8499": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_60dfc3ed0c8a45eebeaf8e35868e7708", + "max": 723, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_8d9368d2c2284625932361fe790d30ca", + "value": 723 + } + }, + "7b11f8ba932b47c1aa51efc38175b8e1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "7b4ab3ae9e264f468ed3860f1652f3ec": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "7b874e92087d45019bd381d8307084f7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_629d1895d93a44b29c7748e11268580a", + "IPY_MODEL_b60fa302bb5c40d5b224afb0dd69d05a", + "IPY_MODEL_829b1cb886824151b9579022eeaa3566" + ], + "layout": "IPY_MODEL_cc26364d10054a7a850f514c8e4d0334" + } + }, + "7d9a11beefe5478b97ca0a31005a6147": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "7e058076836e438daf5399428eabac5e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "7e725f96b7894fa6abb34a286d8cc3a4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "7efc0f6ef85348fc9e63e281ff4e3fac": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_c4858bf392de41ef8f9f0d7712831961", + "IPY_MODEL_d0aaca4a935441058eddc873e6d63b39", + "IPY_MODEL_05dd9db4d2e94210ae4b62fad5f6f302" + ], + "layout": "IPY_MODEL_50e872048a9b4fe58800126c39a0d027" + } + }, + "7fa656358f524f93a310a8076bd48cdf": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "807e4eee3b2c440c8799afcc6344ff5d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "81118afd469847e4b552c17f67bdeb81": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "81b3ce0858bd4bf8a168538397b73970": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "8262368800754a6db7490a90dc94cbf8": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "8262d554e9de4c7fa498e949cedefc99": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "8289aad6c2b04cd2931a6ddc25d679bf": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "829b1cb886824151b9579022eeaa3566": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_21444149a59e4761a47d0ef483c7aa45", + "placeholder": "​", + "style": "IPY_MODEL_e313f0433c7442efab35dc7e942d6de2", + "value": " 1.11G/1.11G [00:34<00:00, 30.3MB/s]" + } + }, + "829c0d5f7b614e97b4fda0a9e62dc5ae": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "82d32df32d244290aea5f10cdc03e652": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_86759f2581904ff1a2736bcbe9d58fff", + "max": 690, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_6fae51602c934f6fbc6eb7b0d37e2c26", + "value": 690 + } + }, + "82f31100018e412b9598186060b33fc5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_2da7b278298e4a5996fb9bc8ab91be18", + "IPY_MODEL_7770031e5dcb4f398df87332c8091f2e", + "IPY_MODEL_a03aff3544f14439ac7b1bc6d02a4860" + ], + "layout": "IPY_MODEL_6f2a17a8dc19494998ab2dd2d81bcaa8" + } + }, + "83378c4b2beb4aa89849a7fc3afce5c6": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "833ee63ee4ba41f086e7fea0914b7f71": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_303fd4fd657f4181a7d5aaf125bacea2", + "IPY_MODEL_87002ec5a9e64b3da19ccee273b40932", + "IPY_MODEL_1ad8f4afb35e4ee69a0cde1f98be5ea6" + ], + "layout": "IPY_MODEL_dc48c774b8954d8dbabc4d792dd0c397" + } + }, + "83aee8bf612345a18aea950c9a1fa143": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "841993e4585b45d9bafc4cbeddff4033": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "843cfba29fd046638f79ca44d340b091": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "85908f2604094196a0c86cb6dd731615": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_a746473dcbdf4a21915398141008da17", + "placeholder": "​", + "style": "IPY_MODEL_e17d2dc542c14f98a2a19ecefb447d38", + "value": " 1/1 [00:00<00:00, 10.85it/s]" + } + }, + "86759f2581904ff1a2736bcbe9d58fff": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "86a2aa7f86c840b8ba3feb351ef9cdba": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "86d167621f81425b9a2b0369146fa314": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "87002ec5a9e64b3da19ccee273b40932": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_48dd9a6aa6e04253993e692d727876f1", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_74b281989cd84b01ad957259c78265fd", + "value": 1 + } + }, + "88783d2c81054461b9b44086f9691ce2": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "88a03527abc544f3bbe30fabd7577098": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "8a06126bd2714badbc1dd9ace47873aa": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "8a9f9b7bab8e40278430a35720066a61": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "8aa11778066445eab63794589f241463": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_5581c851216e48c7b128f11bd93ca8e4", + "placeholder": "​", + "style": "IPY_MODEL_09cb41d0bbc14a24b8dde747c249a78e", + "value": "Downloading: 100%" + } + }, + "8b097bc82a2a4479895400362c5e2782": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "8bd47dc1fba04e50b57a646fdff4d08a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_efc925a4b5fa4144a9435ba998584b2c", + "placeholder": "​", + "style": "IPY_MODEL_cb418736d5444d3b8e820ef0e1be8d0e", + "value": " 1/1 [00:00<00:00, 13.24it/s]" + } + }, + "8c88d2fa52474307a130a2d9ae6f1810": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_28c517182585423aa28e3b2d949678c4", + "max": 3769, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_aa334bfffc9d4476b34351a9c3d62a7b", + "value": 3769 + } + }, + "8d40aa5382db4c64acba90541bc87dd3": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "8d9368d2c2284625932361fe790d30ca": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "8dfc1480100f43e0b4ea2fc2fb9279d3": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "8e0958b5dc27412e9f0332da3457ffdb": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "8e52fb3f81ba4607bfd12c3302a98ee8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_90acd09e75c34642aff6bfbb9ab29f89", + "placeholder": "​", + "style": "IPY_MODEL_e8eac538b81143b6a1e3b30746a15722", + "value": "Downloading: 100%" + } + }, + "8e67ff4e2fdf45bb840cee3db416a7cf": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "8f3b276f21474fb78e11e2a5dae516bd": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9016e2b714fa4f7daaab4a99299190e8": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "90acd09e75c34642aff6bfbb9ab29f89": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "912e6dd1ff544e8d9c94609ec899fbbe": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_197130c97a6f4113bb70f9872f65dede", + "placeholder": "​", + "style": "IPY_MODEL_61395f952fff44ddbf35195f08890b3a", + "value": "Batches: 100%" + } + }, + "920d76460f204a69a4ddbf1a0aaa5242": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_e60c4734f0424daaaeec0ee34948dabb", + "placeholder": "​", + "style": "IPY_MODEL_982e773a0dcc408f800cf1eb139a8b2e", + "value": "Batches: 100%" + } + }, + "92e22c5bafcd4a51ba54203776dde02f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_08c0344f4cfc4ba7b9271e4301ee9095", + "placeholder": "​", + "style": "IPY_MODEL_b0108675bf6b4457bfce64cead45ec31", + "value": "Downloading: 100%" + } + }, + "936869567f72424ea18fcaa87f20818e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "93b48c87a738442b885ea68f20e17f9b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "93d3a93cd8634149b96cbd528bdb9e82": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "93dd5983dd31466e862732cc991f0590": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "9480ca5448ad4a54ba09bd40356e9cf5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "94c88d0fc3f949fbacfb6b4fcd99cc63": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_98da94a8d7b94fb4a08adcebea15e114", + "max": 496313727, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_d7e3c8e1e0424cec9dc1b97090b5af87", + "value": 496313727 + } + }, + "95013e8d9b16488e8f95750134a09b90": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_ddaa3410e1f740198bcac431184ee37e", + "placeholder": "​", + "style": "IPY_MODEL_e1c796fba9cf4336846d6bbd1d7bbc47", + "value": " 1/1 [00:00<00:00, 8.69it/s]" + } + }, + "959e2396a101463e9796ae461f189e5d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "961b8ed89e63441ead537ff2b502c857": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_936869567f72424ea18fcaa87f20818e", + "placeholder": "​", + "style": "IPY_MODEL_9970e6ebe0b34fb38964fbd21246c447", + "value": " 1/1 [00:00<00:00, 13.65it/s]" + } + }, + "978b165c69dd4e14b8479ea7bd8cb1e5": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "982e773a0dcc408f800cf1eb139a8b2e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "98da94a8d7b94fb4a08adcebea15e114": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "99275f997bcc44929df837687c596414": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "994ae85181664e2e87a2ee18a7a237ba": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_c8ba8c2a210b45f6a9b5257589babac3", + "placeholder": "​", + "style": "IPY_MODEL_6f028c7e888e4ae5ab5c1e42ff142b5f", + "value": " 456k/456k [00:00<00:00, 714kB/s]" + } + }, + "9970e6ebe0b34fb38964fbd21246c447": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "9acbd5d07b4a42bebb968e83f3500f34": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9ba1c4bac8014f38a1dc24f2a7b3c3cd": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9ca52d8d4e7148f7bead223fa5740d16": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_bcdf21e10d1c4307b92821b3a73786c8", + "placeholder": "​", + "style": "IPY_MODEL_5bbf16f90e5a44ba953943e51af0a384", + "value": "Downloading: 100%" + } + }, + "9d46ed6e9cff463b8e527773b931e935": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_d2ab768dc09d4482b84a2c929dee7cd6", + "placeholder": "​", + "style": "IPY_MODEL_1c003f6cf2064ffeb152e5bf5dee3780", + "value": " 1/1 [00:00<00:00, 10.94it/s]" + } + }, + "9de62b03f720467fa45c34fb485771d8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_a18992e493b942b08a55b7a641715c1d", + "placeholder": "​", + "style": "IPY_MODEL_99275f997bcc44929df837687c596414", + "value": "Batches: 100%" + } + }, + "9e130b97f0f4463f85df834d0f99d6ef": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9ebec730f45746ac8ddb4fc710f90f54": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "9f23dc687bb54d8ca102ebd1f35b45ee": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "9f91aaa7eef54c55aa1ba46eb3baa617": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "a03aff3544f14439ac7b1bc6d02a4860": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_eef6238b512249d993d1b6c9b76e3946", + "placeholder": "​", + "style": "IPY_MODEL_51eeedf54ce0473797c98793ebfb0225", + "value": " 1/1 [00:00<00:00, 13.03it/s]" + } + }, + "a18992e493b942b08a55b7a641715c1d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a1dd2c997cc34344aa83fc1bf59560c9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_edba6fb34578451ab5e4a08ea3a5eb25", + "placeholder": "​", + "style": "IPY_MODEL_307f6af0ea724573a59c5ef0a429fd0c", + "value": " 122/122 [00:00<00:00, 2.31kB/s]" + } + }, + "a21f4958105f4b3ca32f0977bcfd7d48": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "a28f716145f046fcb101ae6eb5d55e2f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_76a9a9ff30384c63bbafac8dad7e6b6f", + "placeholder": "​", + "style": "IPY_MODEL_51f5c4ae62124c2eb09cd655d50a042c", + "value": "Batches: 100%" + } + }, + "a30bb6e73ecb450b9e94ceca871f4958": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a47599795dff439fa7133ed5d786edcb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_5b481a669c6b4443af672436df2e0f87", + "placeholder": "​", + "style": "IPY_MODEL_7b4ab3ae9e264f468ed3860f1652f3ec", + "value": " 9.08M/9.08M [00:00<00:00, 11.5MB/s]" + } + }, + "a529dbbfdd6b469dbfe80cee993c9a33": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a548cf8ad9004eb1ae5a8e76bdb5f88a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_dc4df32c929d428593b68476285425e0", + "IPY_MODEL_36c9dc024fed498cb76edd9f18447979", + "IPY_MODEL_578b058ce8414637bcd7d660a3ea8adc" + ], + "layout": "IPY_MODEL_8d40aa5382db4c64acba90541bc87dd3" + } + }, + "a6963c7d4e1a46c2a0c86ef3faa36548": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_694158e7816f4b10bf8cb6cae954aeaa", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_c674148cbf294431a48faa9378d17c82", + "value": 1 + } + }, + "a746473dcbdf4a21915398141008da17": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a7dfc0089edd47678dd411093c3cf664": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a867e816d795422ba16cfb3b4295e7f2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_735cb17199d9403b9d65f598067fb17f", + "placeholder": "​", + "style": "IPY_MODEL_29317e31312545c49d51cde6c617fe3f", + "value": " 229/229 [00:00<00:00, 5.50kB/s]" + } + }, + "a9552d04ed6045718cc60ad1c2764a32": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "aa334bfffc9d4476b34351a9c3d62a7b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "abcf2fc37c8e429da2d0fca4ee437a74": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "acc7988ac6a94afdaf980e4d1ab871b5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "acda5822bf844c2780f96150983f1274": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ade97ddccca24f4c9e01fb19e2d8bfb7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_60c6f5edec98476fb2794712ed499206", + "placeholder": "​", + "style": "IPY_MODEL_e63ed6b6266f47ae8c0106089b1cd85e", + "value": " 1/1 [00:00<00:00, 13.03it/s]" + } + }, + "af462d4f283c43cfb86ab7909cebaa31": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_4fc88278033a4eaea62acd7cf7e4c228", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_ebed91eca5d5439997b4aaec5a7d953e", + "value": 1 + } + }, + "af46cfb222cf4d5ba1b34d2d462c8e6f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b0108675bf6b4457bfce64cead45ec31": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "b046241482c7485b9037ed039eb48649": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "b0744737aba1427aa04d33402e0c7a2a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_a30bb6e73ecb450b9e94ceca871f4958", + "placeholder": "​", + "style": "IPY_MODEL_9ebec730f45746ac8ddb4fc710f90f54", + "value": " 3.77k/3.77k [00:00<00:00, 89.7kB/s]" + } + }, + "b0ae975eb94143fda0ac6c748148a7cc": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_5726eac63ec24b20a667084ff1614cad", + "placeholder": "​", + "style": "IPY_MODEL_3ba492ab49d64d9a9010e46d293c3053", + "value": " 1/1 [00:00<00:00, 13.38it/s]" + } + }, + "b0fda0f7f1694c958fabb866c8837b07": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "b140eb98a700455a902dcfbd871593e9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_92e22c5bafcd4a51ba54203776dde02f", + "IPY_MODEL_420f93d2f7474dc38922c2277b5bcfcc", + "IPY_MODEL_a1dd2c997cc34344aa83fc1bf59560c9" + ], + "layout": "IPY_MODEL_443a8a6c17964705931974c420229649" + } + }, + "b15355099b7a4b88b9ce876378d03367": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "b1845caaff584163b6d9723f4e67f5b2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "b262e92ff6484405a0e9364f6ecafb6a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_2bd3bd51ae644c1894a2ddca09d14e85", + "placeholder": "​", + "style": "IPY_MODEL_13b75146701145808315dc87d598b3f9", + "value": " 496M/496M [00:15<00:00, 30.4MB/s]" + } + }, + "b2955f26a1b34b21881c6a98f92234ad": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "b4511a00a65f40f8879209e63cc4044c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_40a7c2ba203f42deb6c7010959c8f2c9", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_c652f9773b604b1d9dc357052aaba437", + "value": 1 + } + }, + "b480c97c1d9944b9a8dd09ed6e1e9bd3": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b60fa302bb5c40d5b224afb0dd69d05a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_45a892664d8d4a2abba2bc805208868e", + "max": 1112253233, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_7189cebe70004a4293a9d868cada294e", + "value": 1112253233 + } + }, + "b62c8b64f87a4209a74cd5bfb5522109": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b63ca14fc0cb46e88e5d86f0ff4609fc": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_b851a1ded89a4620a694fb7a845754f5", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_79b013bf213d41e1a3e285028a7707c6", + "value": 1 + } + }, + "b6729cc6ba084677af55ac63c819b72f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b6e52e3a6ee54efbaa1291320b47f411": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b794ab54698f4db18ae5edabc7d96783": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b851a1ded89a4620a694fb7a845754f5": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "bab3859cebba4383b7692b7d3265a43b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "bacf1704dbaf4176afbe2cbcc8e036ef": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "bb7f0fbb54274fb9a654eb6ee938ba66": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "bb9530a97bdf4221995c34ecdac01177": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_359fd318bace46468f7972a24a87a52b", + "max": 9081518, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_4e09d22438dc434d99c6ce15051a06b3", + "value": 9081518 + } + }, + "bcca8127f74f4e36813a902020d9cb4e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "bcdf21e10d1c4307b92821b3a73786c8": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "bd6c06e82de34ff7b3b0cb30b914ce81": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_bab3859cebba4383b7692b7d3265a43b", + "placeholder": "​", + "style": "IPY_MODEL_7b11f8ba932b47c1aa51efc38175b8e1", + "value": " 1/1 [00:00<00:00, 13.09it/s]" + } + }, + "bd7121c2a3e244ef91ff5150d2d8838b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "bde4901baa744b7bac106ac3630ee31c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "bf017ec69a084b2fae86b5e24282fa2b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c03219a376ed425f9d275ad3a0ff86c8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "c08ac5e6c7be413d9daf19ab5ecfeec3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_7d9a11beefe5478b97ca0a31005a6147", + "placeholder": "​", + "style": "IPY_MODEL_0ee7399f4e2148b38ad2dd0ef1816e78", + "value": "Downloading: 100%" + } + }, + "c10f5dc8d3684757bc6102d734c555f6": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c15d324309e14d0c913177d745176265": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_83378c4b2beb4aa89849a7fc3afce5c6", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_c255f1c9ced3405cbfe308eeb0e5f390", + "value": 1 + } + }, + "c255f1c9ced3405cbfe308eeb0e5f390": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "c2a10377a4104f0db40385232e02ddeb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_88a03527abc544f3bbe30fabd7577098", + "placeholder": "​", + "style": "IPY_MODEL_c03219a376ed425f9d275ad3a0ff86c8", + "value": "Batches: 100%" + } + }, + "c2ba6b6c20ed419fae2a6fe625261382": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c357ff588a474c59924747141954d81e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "c373178edb624ad39973c6b34c2fd540": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_50432636bd864dc5bd99302283f62f93", + "IPY_MODEL_fa230a8644bd4e7a85a3c8b888bf2d27", + "IPY_MODEL_47e629b53187448f8eb54bd8b31af735" + ], + "layout": "IPY_MODEL_f9b1e0c3cb304cf58a9bdce3cc03239c" + } + }, + "c429d64cb3e747a6bdd33763720a10d2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "c4858bf392de41ef8f9f0d7712831961": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_fc84f721213f407b8831398dce1984ad", + "placeholder": "​", + "style": "IPY_MODEL_81118afd469847e4b552c17f67bdeb81", + "value": "Downloading: 100%" + } + }, + "c652f9773b604b1d9dc357052aaba437": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "c674148cbf294431a48faa9378d17c82": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "c7fd461142854331937a6ada7ff8f64c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c880c3a9c45042e69d13ffd5dd1c6403": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c8ba8c2a210b45f6a9b5257589babac3": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c9025edb46eb43a98a9259380de08a36": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "c9e8420edbab45429112a7884b57306d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "caa374f7dc5045218c6f71f322d8e6be": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "caae193b34644af7950e2e3eac81a5bb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "cab40c4a19604774a2a9edbc47b19308": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_534b3e6ed51648c081a9a3c9b1188e45", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_4681de508aac4dbb975199dc57df33d7", + "value": 1 + } + }, + "cb418736d5444d3b8e820ef0e1be8d0e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "cbfb512f58c44b879e89fc6917799fd4": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "cc26364d10054a7a850f514c8e4d0334": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ccfd1a0b6f494d8a9d78e7387261fba8": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "cd0a32b06546428193dd7fa89fbf7e9e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "cd2c571f25384077a5a1a592931f7f7a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_7751d434164249b79f863d1cb59b4bee", + "placeholder": "​", + "style": "IPY_MODEL_8a06126bd2714badbc1dd9ace47873aa", + "value": "Batches: 100%" + } + }, + "cdf6ee9d1d1c422795e82dbb5691053e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ceb036e9f5bd4e9da47db5dff3eb3acb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "cf58b340496b4d62b610451cedbd709a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_e567fab4446544f795be2eb0a6705f9c", + "max": 79, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_caa374f7dc5045218c6f71f322d8e6be", + "value": 79 + } + }, + "d0aaca4a935441058eddc873e6d63b39": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_34620791c5d145bfbb0a787f0ca4eb6b", + "max": 5069051, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_48182100536a425f9a9955fecf19627d", + "value": 5069051 + } + }, + "d1fec191a2b94bf0bbde31707f3637b1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "d27877c6ad6148078e176ae4ce363c35": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_ed3b4899817c47d6b196558e49cc59b2", + "placeholder": "​", + "style": "IPY_MODEL_427f364bc9644745ad3f7abfc43b7b6e", + "value": "Downloading: 100%" + } + }, + "d2ab768dc09d4482b84a2c929dee7cd6": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d345a0d6a7a84e51bbbcd282082b1186": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d3bcb223dd7943dbb85d8c93a3ed0bc1": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d4144eb10fcb43eea2ca864ce213e3cc": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_920d76460f204a69a4ddbf1a0aaa5242", + "IPY_MODEL_cab40c4a19604774a2a9edbc47b19308", + "IPY_MODEL_d5e4aa32c50e48dabafcba153b95ef32" + ], + "layout": "IPY_MODEL_03698f5714bc477c9a0b7dec7542fd50" + } + }, + "d4dbfa5e89e7432dbed34606a786fd6f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d520129190494e17a338b9e9dc02cdaa": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_6e697b2f47024ba78b4de46587b82d4b", + "placeholder": "​", + "style": "IPY_MODEL_fa46a43575ee4c52af77f226e438d896", + "value": " 402/402 [00:00<00:00, 6.76kB/s]" + } + }, + "d579129ca5c04c6a8400c2483a952386": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "d59b565796fe4a3b9fe3b0b12dd73da4": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d5d5aae1f1084c82ba5ecc9ee0b6c473": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d5e4aa32c50e48dabafcba153b95ef32": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_0138ab99398e44c69ee0d92191e7d142", + "placeholder": "​", + "style": "IPY_MODEL_2e3ff8ff7d7244e09a9a954d15c9d40e", + "value": " 1/1 [00:00<00:00, 11.42it/s]" + } + }, + "d6125036c6cd4b04badcda02419be090": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d69bff579d794cd18920cef35b9cea2a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "d6a66e1346d849b9802898417d34697c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "d7e3c8e1e0424cec9dc1b97090b5af87": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "d7fe543399db4a64b23761e6f8e967ce": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d867294bd4944f3086f335cadc6e1204": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_a28f716145f046fcb101ae6eb5d55e2f", + "IPY_MODEL_e65ae480d2d04ab48c8624eb1fca45d8", + "IPY_MODEL_2bfc05c7ef514354bfb41fe6290dbf33" + ], + "layout": "IPY_MODEL_d6125036c6cd4b04badcda02419be090" + } + }, + "da2985b6824449f6982434a5a0bdbd39": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "db57281b3d7a448fbd2d63d8f127ea3e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "dc48c774b8954d8dbabc4d792dd0c397": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "dc4df32c929d428593b68476285425e0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_656e26469505445e8bcefd253e0c7c30", + "placeholder": "​", + "style": "IPY_MODEL_5a828469ff1d4e0aa10346776ebe6ed8", + "value": "Batches: 100%" + } + }, + "ddaa3410e1f740198bcac431184ee37e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ddaf59cedca143c8b4fe005a51077323": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_3d211e6614f4451e9d14866cb3a8332d", + "placeholder": "​", + "style": "IPY_MODEL_a21f4958105f4b3ca32f0977bcfd7d48", + "value": "Downloading: 100%" + } + }, + "de7355b63d2f4682b15f8ca9c07e674f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_c2ba6b6c20ed419fae2a6fe625261382", + "placeholder": "​", + "style": "IPY_MODEL_565bdcb1739643119edcafd4df6e8f11", + "value": " 1/1 [00:00<00:00, 14.11it/s]" + } + }, + "df007844178f4b63b67831b4d38576df": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_fc911f5408814c2ab17c5c1a357dc23f", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_bb7f0fbb54274fb9a654eb6ee938ba66", + "value": 1 + } + }, + "e0c76e0937db4e3d916710d7172da3f1": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e17d2dc542c14f98a2a19ecefb447d38": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "e1c796fba9cf4336846d6bbd1d7bbc47": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "e2d9085a4252424082cf9238694d871b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e3026ca9693547abab2baacd5aa3dece": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_841993e4585b45d9bafc4cbeddff4033", + "placeholder": "​", + "style": "IPY_MODEL_f45c83955aa84554a075a0db94916e7b", + "value": " 1/1 [00:00<00:00, 10.59it/s]" + } + }, + "e313f0433c7442efab35dc7e942d6de2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "e483cae2d41844df99054b2ddfdbc65b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e4f7466fd5964628b32ffe8a773c4ff6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "e567fab4446544f795be2eb0a6705f9c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e60c4734f0424daaaeec0ee34948dabb": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e63ed6b6266f47ae8c0106089b1cd85e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "e65ae480d2d04ab48c8624eb1fca45d8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_54a4a9ebf2b24542a97157643fc8760e", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_9f23dc687bb54d8ca102ebd1f35b45ee", + "value": 1 + } + }, + "e7658ccda51c46a6b560a260c38f933d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e781609438004ae0ba1efb4a877065ae": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e822001de9ef4cf99d593f930f41f96a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "e85e291b0c50401abd9d7588ce1467cb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_675951a59fb441bbb8a5dc2c4b2c753e", + "placeholder": "​", + "style": "IPY_MODEL_14462288182e490fbbf8086972008a22", + "value": "Batches: 100%" + } + }, + "e8864d4baf1f45248bd2fe979507c27b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_ee76869cfde744e78063c9002420689e", + "IPY_MODEL_608c3c6002d248d0a4e8463c558f3464", + "IPY_MODEL_6eeafcdcdf894b33a58e1d7c99fe3918" + ], + "layout": "IPY_MODEL_9acbd5d07b4a42bebb968e83f3500f34" + } + }, + "e8eac538b81143b6a1e3b30746a15722": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "e9c72053e0344c699abc03221d1e422a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_af46cfb222cf4d5ba1b34d2d462c8e6f", + "placeholder": "​", + "style": "IPY_MODEL_f91436bf954d4a939a615dfa6e839b15", + "value": " 1/1 [00:00<00:00, 12.31it/s]" + } + }, + "ea2992e1f7144cc29c3bfffbbf64e2ac": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_c9e8420edbab45429112a7884b57306d", + "placeholder": "​", + "style": "IPY_MODEL_9f91aaa7eef54c55aa1ba46eb3baa617", + "value": " 723/723 [00:00<00:00, 19.3kB/s]" + } + }, + "ea439e2251ed467fb3a775f0c8e0c3bb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "eb11ea5785284bf6a15cc31ad643ed88": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_a529dbbfdd6b469dbfe80cee993c9a33", + "placeholder": "​", + "style": "IPY_MODEL_7e058076836e438daf5399428eabac5e", + "value": " 772/772 [00:00<00:00, 15.6kB/s]" + } + }, + "eb8e6976ca9e4a58851ec0a51107d74f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "ebed91eca5d5439997b4aaec5a7d953e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "ecbc440b3bd341e6b0e19f0088c58930": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ed3b4899817c47d6b196558e49cc59b2": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ed683929822b4084ba33e89b23936b16": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_fe56b1d86ab84675b82781a1f8edd40a", + "placeholder": "​", + "style": "IPY_MODEL_bacf1704dbaf4176afbe2cbcc8e036ef", + "value": "Downloading: 100%" + } + }, + "edba6fb34578451ab5e4a08ea3a5eb25": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ee76869cfde744e78063c9002420689e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_76f40571571b4ddd87df3a29718b835e", + "placeholder": "​", + "style": "IPY_MODEL_04e887b2d2cd471994f65685a81a0bfc", + "value": "Batches: 100%" + } + }, + "eef6238b512249d993d1b6c9b76e3946": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "efc925a4b5fa4144a9435ba998584b2c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f0c8ddd71eff40df8332fcf83d31c0bf": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f16710c9831d476b85c48213d05e1aea": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "f2f11b50f31b40d9abd06080b0ce9502": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_d3bcb223dd7943dbb85d8c93a3ed0bc1", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_b046241482c7485b9037ed039eb48649", + "value": 1 + } + }, + "f302b68764444e44aacecaaa89cdc95f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_f375507608564a12b6dd26170d659399", + "IPY_MODEL_60eb65d6a8ce4ee288a8aabea9d33094", + "IPY_MODEL_de7355b63d2f4682b15f8ca9c07e674f" + ], + "layout": "IPY_MODEL_e483cae2d41844df99054b2ddfdbc65b" + } + }, + "f36dc87a4af7481cb3c2cba23d57eb5a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "f375507608564a12b6dd26170d659399": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_7fa656358f524f93a310a8076bd48cdf", + "placeholder": "​", + "style": "IPY_MODEL_32c43233c8e64a8eb5c4badbb01420f5", + "value": "Batches: 100%" + } + }, + "f45c83955aa84554a075a0db94916e7b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "f4b22763b32945a78822d9027ab93c5c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "f5417b7abd5a48178fd0c0a8aefeae05": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "f8a6d02669224f5e9d8d09be5451b08b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "f91436bf954d4a939a615dfa6e839b15": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "f92fb75d397d47ac967febf7d38efc35": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "f9b1e0c3cb304cf58a9bdce3cc03239c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f9dcdbbe20114ff78c2d980a1924bd9e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_576765482f3d4ee8851db9845c34a246", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_c429d64cb3e747a6bdd33763720a10d2", + "value": 1 + } + }, + "fa230a8644bd4e7a85a3c8b888bf2d27": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_3e23763ee2944110b0899fcbb805e3bd", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_da2985b6824449f6982434a5a0bdbd39", + "value": 1 + } + }, + "fa46a43575ee4c52af77f226e438d896": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "fad323f7b8fb49e79c65ddb87f9f5346": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "fbee94f4d7674f54b75c42d33c2a0907": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "fc011913e8464d439a97fe75ef5f9fa1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "fc7c6b5bf4934c0194c12b6aa4bee24e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_071a2e5641624c7ea6bf57d764fa5a90", + "IPY_MODEL_b4511a00a65f40f8879209e63cc4044c", + "IPY_MODEL_b0ae975eb94143fda0ac6c748148a7cc" + ], + "layout": "IPY_MODEL_a7dfc0089edd47678dd411093c3cf664" + } + }, + "fc84f721213f407b8831398dce1984ad": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "fc911f5408814c2ab17c5c1a357dc23f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "fcfbbc1f44454546b9ceca5ba106b0e6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_267928e896124f6087b197b255e53360", + "IPY_MODEL_f2f11b50f31b40d9abd06080b0ce9502", + "IPY_MODEL_e9c72053e0344c699abc03221d1e422a" + ], + "layout": "IPY_MODEL_1a372fb42b29492691dc7fc04fed105b" + } + }, + "fe56b1d86ab84675b82781a1f8edd40a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ff9438afcccb4372b258d20ac5c11f49": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_4d46dfc8082246568e7cc69f74baac14", + "IPY_MODEL_08cd116989124f919aa151c4535bbcba", + "IPY_MODEL_9d46ed6e9cff463b8e527773b931e935" + ], + "layout": "IPY_MODEL_5f2eedf3c8b74abca674ec0bf28f36a1" + } + }, + "ffa7713a91ff4af2bc7c4bdc3ecd7467": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_c08ac5e6c7be413d9daf19ab5ecfeec3", + "IPY_MODEL_82d32df32d244290aea5f10cdc03e652", + "IPY_MODEL_365ec9a2c50d4e7385ef438bed36b5d8" + ], + "layout": "IPY_MODEL_d5d5aae1f1084c82ba5ecc9ee0b6c473" + } } } - }, - { - "cell_type": "markdown", - "source": [ - "## About us\n", - "\n", - "This [Haystack](https://github.com/deepset-ai/haystack/) notebook was made with love by [deepset](https://deepset.ai/) in Berlin, Germany\n", - "\n", - "We bring NLP to the industry via open source! \n", - "Our focus: Industry specific language models & large scale QA systems. \n", - " \n", - "Some of our other work: \n", - "- [German BERT](https://deepset.ai/german-bert)\n", - "- [GermanQuAD and GermanDPR](https://deepset.ai/germanquad)\n", - "- [FARM](https://github.com/deepset-ai/FARM)\n", - "\n", - "Get in touch:\n", - "[Twitter](https://twitter.com/deepset_ai) | [LinkedIn](https://www.linkedin.com/company/deepset-ai/) | [Slack](https://haystack.deepset.ai/community/join) | [GitHub Discussions](https://github.com/deepset-ai/haystack/discussions) | [Website](https://deepset.ai)\n", - "\n", - "By the way: [we're hiring!](https://www.deepset.ai/jobs)" - ], - "metadata": { - "collapsed": false, - "id": "8QJ68G12U7tb" - } } - ] -} \ No newline at end of file + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/tutorials/Tutorial6_Better_Retrieval_via_DPR.ipynb b/tutorials/Tutorial6_Better_Retrieval_via_DPR.ipynb index 62a0c31f43..c35b1a572f 100644 --- a/tutorials/Tutorial6_Better_Retrieval_via_DPR.ipynb +++ b/tutorials/Tutorial6_Better_Retrieval_via_DPR.ipynb @@ -285,11 +285,8 @@ "#! pip install farm-haystack\n", "\n", "# Install the latest master of Haystack\n", - "!pip install grpcio-tools==1.34.1\n", - "!pip install git+https://github.com/deepset-ai/haystack.git\n", - "\n", - "# If you run this notebook on Google Colab, you might need to\n", - "# restart the runtime after installing haystack." + "!pip install --upgrade pip\n", + "!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab]" ] }, { diff --git a/tutorials/Tutorial7_RAG_Generator.ipynb b/tutorials/Tutorial7_RAG_Generator.ipynb index 53c8ff859f..e6f778e0f5 100644 --- a/tutorials/Tutorial7_RAG_Generator.ipynb +++ b/tutorials/Tutorial7_RAG_Generator.ipynb @@ -2,6 +2,9 @@ "cells": [ { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "# Generative QA with \"Retrieval-Augmented Generation\"\n", "\n", @@ -12,13 +15,13 @@ "In this tutorial, you will learn how to set up a generative system using the\n", "[RAG model](https://arxiv.org/abs/2005.11401) which conditions the\n", "answer generator on a set of retrieved documents." - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "### Prepare environment\n", "\n", @@ -27,56 +30,61 @@ "**Runtime -> Change Runtime type -> Hardware accelerator -> GPU**\n", "\n", "" - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "code", "execution_count": null, - "source": [ - "# Make sure you have a GPU running\n", - "!nvidia-smi" - ], - "outputs": [], "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } - } + }, + "outputs": [], + "source": [ + "# Make sure you have a GPU running\n", + "!nvidia-smi" + ] }, { "cell_type": "markdown", - "source": [ - "Here are the packages and imports that we'll need:" - ], "metadata": { "collapsed": false - } + }, + "source": [ + "Here are the packages and imports that we'll need:" + ] }, { "cell_type": "code", "execution_count": null, - "source": [ - "!pip install grpcio-tools==1.34.1\n", - "!pip install git+https://github.com/deepset-ai/haystack.git\n", - "\n", - "# If you run this notebook on Google Colab, you might need to\n", - "# restart the runtime after installing haystack." - ], - "outputs": [], "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } - } + }, + "outputs": [], + "source": [ + "# Install the latest release of Haystack in your own environment \n", + "#! pip install farm-haystack\n", + "\n", + "# Install the latest master of Haystack\n", + "!pip install --upgrade pip\n", + "!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab]" + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], "source": [ "from typing import List\n", "import requests\n", @@ -84,27 +92,27 @@ "from haystack import Document\n", "from haystack.document_stores import FAISSDocumentStore\n", "from haystack.nodes import RAGenerator, DensePassageRetriever" - ], - "outputs": [], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } + ] }, { "cell_type": "markdown", - "source": [ - "Let's download a csv containing some sample text and preprocess the data.\n" - ], "metadata": { "collapsed": false - } + }, + "source": [ + "Let's download a csv containing some sample text and preprocess the data.\n" + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], "source": [ "# Download sample\n", "temp = requests.get(\"https://raw.githubusercontent.com/deepset-ai/haystack/master/tutorials/small_generator_dataset.csv\")\n", @@ -116,28 +124,28 @@ "df.fillna(value=\"\", inplace=True)\n", "\n", "print(df.head())" - ], - "outputs": [], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } + ] }, { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "We can cast our data into Haystack Document objects.\n", "Alternatively, we can also just use dictionaries with \"text\" and \"meta\" fields" - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], "source": [ "# Use data to initialize Document objects\n", "titles = list(df[\"title\"].values)\n", @@ -152,28 +160,28 @@ " }\n", " )\n", " )" - ], - "outputs": [], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } + ] }, { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "Here we initialize the FAISSDocumentStore, DensePassageRetriever and RAGenerator.\n", "FAISS is chosen here since it is optimized vector storage." - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], "source": [ "# Initialize FAISS document store.\n", "# Set `return_embedding` to `True`, so generator doesn't have to perform re-embedding\n", @@ -201,28 +209,28 @@ " embed_title=True,\n", " num_beams=2,\n", ")" - ], - "outputs": [], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } + ] }, { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "We write documents to the DocumentStore, first by deleting any remaining documents then calling `write_documents()`.\n", "The `update_embeddings()` method uses the retriever to create an embedding for each document.\n" - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], "source": [ "# Delete existing documents in documents store\n", "document_store.delete_documents()\n", @@ -234,27 +242,27 @@ "document_store.update_embeddings(\n", " retriever=retriever\n", ")" - ], - "outputs": [], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } + ] }, { "cell_type": "markdown", - "source": [ - "Here are our questions:" - ], "metadata": { "collapsed": false - } + }, + "source": [ + "Here are our questions:" + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], "source": [ "QUESTIONS = [\n", " \"who got the first nobel prize in physics\",\n", @@ -273,30 +281,30 @@ " \"panda is a national animal of which country\",\n", " \"what is the name of manchester united stadium\",\n", "]" - ], - "outputs": [], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } + ] }, { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "Now let's run our system!\n", "The retriever will pick out a small subset of documents that it finds relevant.\n", "These are used to condition the generator as it generates the answer.\n", "What it should return then are novel text spans that form and answer to your question!" - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], "source": [ "# Now generate an answer for each question\n", "for question in QUESTIONS:\n", @@ -315,18 +323,18 @@ " # Print you answer\n", " answers = predicted_result[\"answers\"]\n", " print(f'Generated answer is \\'{answers[0][\"answer\"]}\\' for the question = \\'{question}\\'')" - ], - "outputs": [], + ] + }, + { + "cell_type": "code", + "execution_count": null, "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } - } - }, - { - "cell_type": "code", - "execution_count": null, + }, + "outputs": [], "source": [ "# Or alternatively use the Pipeline class\n", "from haystack.pipelines import GenerativeQAPipeline\n", @@ -336,17 +344,13 @@ "for question in QUESTIONS:\n", " res = pipe.run(query=question, params={\"Generator\": {\"top_k\": 1}, \"Retriever\": {\"top_k\": 5}})\n", " print_answers(res, details=\"minimum\")" - ], - "outputs": [], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } + ] }, { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "## About us\n", "\n", @@ -364,10 +368,7 @@ "[Twitter](https://twitter.com/deepset_ai) | [LinkedIn](https://www.linkedin.com/company/deepset-ai/) | [Slack](https://haystack.deepset.ai/community/join) | [GitHub Discussions](https://github.com/deepset-ai/haystack/discussions) | [Website](https://deepset.ai)\n", "\n", "By the way: [we're hiring!](https://www.deepset.ai/jobs)" - ], - "metadata": { - "collapsed": false - } + ] } ], "metadata": { @@ -391,4 +392,4 @@ }, "nbformat": 4, "nbformat_minor": 2 -} \ No newline at end of file +} diff --git a/tutorials/Tutorial8_Preprocessing.ipynb b/tutorials/Tutorial8_Preprocessing.ipynb index 3b519d7935..a9fe2c2a9d 100644 --- a/tutorials/Tutorial8_Preprocessing.ipynb +++ b/tutorials/Tutorial8_Preprocessing.ipynb @@ -2,6 +2,9 @@ "cells": [ { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "# Preprocessing\n", "\n", @@ -10,13 +13,16 @@ "Haystack includes a suite of tools to extract text from different file types, normalize white space\n", "and split text into smaller pieces to optimize retrieval.\n", "These data preprocessing steps can have a big impact on the systems performance and effective handling of data is key to getting the most out of Haystack." - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "markdown", + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "Ultimately, Haystack expects data to be provided as a list documents in the following dictionary format:\n", "``` python\n", @@ -27,116 +33,112 @@ " }, ...\n", "]\n", "```" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } + ] }, { "cell_type": "markdown", - "source": [ - "This tutorial will show you all the tools that Haystack provides to help you cast your data into this format." - ], "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } - } + }, + "source": [ + "This tutorial will show you all the tools that Haystack provides to help you cast your data into this format." + ] }, { "cell_type": "code", "execution_count": 26, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], "source": [ - "# Let's start by installing Haystack\n", - "\n", - "# Install the latest release of Haystack in your own environment\n", + "# Install the latest release of Haystack in your own environment \n", "#! pip install farm-haystack\n", "\n", "# Install the latest master of Haystack\n", - "!pip install grpcio-tools==1.34.1\n", - "!pip install git+https://github.com/deepset-ai/haystack.git\n", - "!wget --no-check-certificate https://dl.xpdfreader.com/xpdf-tools-linux-4.03.tar.gz\n", - "!tar -xvf xpdf-tools-linux-4.03.tar.gz && sudo cp xpdf-tools-linux-4.03/bin64/pdftotext /usr/local/bin\n", + "!pip install --upgrade pip\n", + "!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab]\n", "\n", - "# If you run this notebook on Google Colab, you might need to\n", - "# restart the runtime after installing haystack." - ], - "outputs": [], + "!wget --no-check-certificate https://dl.xpdfreader.com/xpdf-tools-linux-4.03.tar.gz\n", + "!tar -xvf xpdf-tools-linux-4.03.tar.gz && sudo cp xpdf-tools-linux-4.03/bin64/pdftotext /usr/local/bin" + ] + }, + { + "cell_type": "code", + "execution_count": 2, "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } - } - }, - { - "cell_type": "code", - "execution_count": 2, - "source": [ - "# Here are the imports we need\n", - "from haystack.nodes import TextConverter, PDFToTextConverter, DocxToTextConverter, PreProcessor\n", - "from haystack.utils import convert_files_to_dicts, fetch_archive_from_http" - ], + }, "outputs": [ { - "output_type": "stream", "name": "stderr", + "output_type": "stream", "text": [ "01/06/2021 14:49:14 - INFO - faiss - Loading faiss with AVX2 support.\n", "01/06/2021 14:49:14 - INFO - faiss - Loading faiss.\n" ] } ], + "source": [ + "# Here are the imports we need\n", + "from haystack.nodes import TextConverter, PDFToTextConverter, DocxToTextConverter, PreProcessor\n", + "from haystack.utils import convert_files_to_dicts, fetch_archive_from_http" + ] + }, + { + "cell_type": "code", + "execution_count": 29, "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } - } - }, - { - "cell_type": "code", - "execution_count": 29, - "source": [ - "# This fetches some sample files to work with\n", - "\n", - "doc_dir = \"data/preprocessing_tutorial\"\n", - "s3_url = \"https://s3.eu-central-1.amazonaws.com/deepset.ai-farm-qa/datasets/documents/preprocessing_tutorial.zip\"\n", - "fetch_archive_from_http(url=s3_url, output_dir=doc_dir)" - ], + }, "outputs": [ { - "output_type": "stream", "name": "stderr", + "output_type": "stream", "text": [ "01/05/2021 12:02:30 - INFO - haystack.preprocessor.utils - Fetching from https://s3.eu-central-1.amazonaws.com/deepset.ai-farm-qa/datasets/documents/preprocessing_tutorial.zip to `data/preprocessing_tutorial`\n", "100%|██████████| 595119/595119 [00:00<00:00, 5299765.39B/s]\n" ] }, { - "output_type": "execute_result", "data": { "text/plain": [ "True" ] }, + "execution_count": 29, "metadata": {}, - "execution_count": 29 + "output_type": "execute_result" } ], + "source": [ + "# This fetches some sample files to work with\n", + "\n", + "doc_dir = \"data/preprocessing_tutorial\"\n", + "s3_url = \"https://s3.eu-central-1.amazonaws.com/deepset.ai-farm-qa/datasets/documents/preprocessing_tutorial.zip\"\n", + "fetch_archive_from_http(url=s3_url, output_dir=doc_dir)" + ] + }, + { + "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { - "name": "#%%\n" + "name": "#%% md\n" } - } - }, - { - "cell_type": "markdown", + }, "source": [ "## Converters\n", "\n", @@ -145,17 +147,18 @@ "There are file converters for txt, pdf, docx files as well as a converter that is powered by Apache Tika.\n", "The parameter `valid_langugages` does not convert files to the target language, but checks if the conversion worked as expected.\n", "For converting PDFs, try changing the encoding to UTF-8 if the conversion isn't great." - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } + ] }, { "cell_type": "code", "execution_count": 8, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], "source": [ "# Here are some examples of how you would use file converters\n", "\n", @@ -167,27 +170,21 @@ "\n", "converter = DocxToTextConverter(remove_numeric_tables=False, valid_languages=[\"en\"])\n", "doc_docx = converter.convert(file_path=\"data/preprocessing_tutorial/heavy_metal.docx\", meta=None)[0]\n" - ], - "outputs": [], + ] + }, + { + "cell_type": "code", + "execution_count": 9, "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } - } - }, - { - "cell_type": "code", - "execution_count": 9, - "source": [ - "# Haystack also has a convenience function that will automatically apply the right converter to each file in a directory.\n", - "\n", - "all_docs = convert_files_to_dicts(dir_path=\"data/preprocessing_tutorial\")" - ], + }, "outputs": [ { - "output_type": "stream", "name": "stderr", + "output_type": "stream", "text": [ "01/06/2021 14:51:06 - INFO - haystack.preprocessor.utils - Converting data/preprocessing_tutorial/heavy_metal.docx\n", "01/06/2021 14:51:06 - INFO - haystack.preprocessor.utils - Converting data/preprocessing_tutorial/bert.pdf\n", @@ -195,15 +192,20 @@ ] } ], + "source": [ + "# Haystack also has a convenience function that will automatically apply the right converter to each file in a directory.\n", + "\n", + "all_docs = convert_files_to_dicts(dir_path=\"data/preprocessing_tutorial\")" + ] + }, + { + "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { - "name": "#%%\n" + "name": "#%% md\n" } - } - }, - { - "cell_type": "markdown", + }, "source": [ "## PreProcessor\n", "\n", @@ -213,17 +215,35 @@ "and no more than 10,000 words for sparse methods.\n", "Have a look at the [Preprocessing](https://haystack.deepset.ai/docs/latest/preprocessingmd)\n", "and [Optimization](https://haystack.deepset.ai/docs/latest/optimizationmd) pages on our website for more details." - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } + ] }, { "cell_type": "code", "execution_count": 10, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "n_docs_input: 1\n", + "n_docs_output: 51\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[nltk_data] Downloading package punkt to /home/branden/nltk_data...\n", + "[nltk_data] Package punkt is already up-to-date!\n" + ] + } + ], "source": [ "# This is a default usage of the PreProcessor.\n", "# Here, it performs cleaning of consecutive whitespaces\n", @@ -241,85 +261,53 @@ ")\n", "docs_default = preprocessor.process(doc_txt)\n", "print(f\"n_docs_input: 1\\nn_docs_output: {len(docs_default)}\")" - ], - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "n_docs_input: 1\n", - "n_docs_output: 51\n" - ] - }, - { - "output_type": "stream", - "name": "stderr", - "text": [ - "[nltk_data] Downloading package punkt to /home/branden/nltk_data...\n", - "[nltk_data] Package punkt is already up-to-date!\n" - ] - } - ], + ] + }, + { + "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { - "name": "#%%\n" + "name": "#%% md\n" } - } - }, - { - "cell_type": "markdown", + }, "source": [ "## Cleaning\n", "\n", "- `clean_empty_lines` will normalize 3 or more consecutive empty lines to be just a two empty lines\n", "- `clean_whitespace` will remove any whitespace at the beginning or end of each line in the text\n", "- `clean_header_footer` will remove any long header or footer texts that are repeated on each page" - ], + ] + }, + { + "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } - } - }, - { - "cell_type": "markdown", + }, "source": [ "## Splitting\n", "By default, the PreProcessor will respect sentence boundaries, meaning that documents will not start or end\n", "midway through a sentence.\n", "This will help reduce the possibility of answer phrases being split between two documents.\n", "This feature can be turned off by setting `split_respect_sentence_boundary=False`." - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } + ] }, { "cell_type": "code", "execution_count": 11, - "source": [ - "# Not respecting sentence boundary vs respecting sentence boundary\n", - "\n", - "preprocessor_nrsb = PreProcessor(split_respect_sentence_boundary=False)\n", - "docs_nrsb = preprocessor_nrsb.process(doc_txt)\n", - "\n", - "print(\"RESPECTING SENTENCE BOUNDARY\")\n", - "end_text = docs_default[0][\"content\"][-50:]\n", - "print(\"End of document: \\\"...\" + end_text + \"\\\"\")\n", - "print()\n", - "print(\"NOT RESPECTING SENTENCE BOUNDARY\")\n", - "end_text_nrsb = docs_nrsb[0][\"content\"][-50:]\n", - "print(\"End of document: \\\"...\" + end_text_nrsb + \"\\\"\")" - ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ "RESPECTING SENTENCE BOUNDARY\n", "End of document: \"...cornerstone of a typical elite European education.\"\n", @@ -329,23 +317,37 @@ ] }, { - "output_type": "stream", "name": "stderr", + "output_type": "stream", "text": [ "[nltk_data] Downloading package punkt to /home/branden/nltk_data...\n", "[nltk_data] Package punkt is already up-to-date!\n" ] } ], + "source": [ + "# Not respecting sentence boundary vs respecting sentence boundary\n", + "\n", + "preprocessor_nrsb = PreProcessor(split_respect_sentence_boundary=False)\n", + "docs_nrsb = preprocessor_nrsb.process(doc_txt)\n", + "\n", + "print(\"RESPECTING SENTENCE BOUNDARY\")\n", + "end_text = docs_default[0][\"content\"][-50:]\n", + "print(\"End of document: \\\"...\" + end_text + \"\\\"\")\n", + "print()\n", + "print(\"NOT RESPECTING SENTENCE BOUNDARY\")\n", + "end_text_nrsb = docs_nrsb[0][\"content\"][-50:]\n", + "print(\"End of document: \\\"...\" + end_text_nrsb + \"\\\"\")" + ] + }, + { + "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { - "name": "#%%\n" + "name": "#%% md\n" } - } - }, - { - "cell_type": "markdown", + }, "source": [ "A commonly used strategy to split long documents, especially in the field of Question Answering,\n", "is the sliding window approach. If `split_length=10` and `split_overlap=3`, your documents will look like this:\n", @@ -356,39 +358,21 @@ "- ...\n", "\n", "You can use this strategy by following the code below." - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } + ] }, { "cell_type": "code", "execution_count": 12, - "source": [ - "# Sliding window approach\n", - "\n", - "preprocessor_sliding_window = PreProcessor(\n", - " split_overlap=3,\n", - " split_length=10,\n", - " split_respect_sentence_boundary=False\n", - ")\n", - "docs_sliding_window = preprocessor_sliding_window.process(doc_txt)\n", - "\n", - "doc1 = docs_sliding_window[0][\"content\"][:200]\n", - "doc2 = docs_sliding_window[1][\"content\"][:100]\n", - "doc3 = docs_sliding_window[2][\"content\"][:100]\n", - "\n", - "print(\"Document 1: \\\"\" + doc1 + \"...\\\"\")\n", - "print(\"Document 2: \\\"\" + doc2 + \"...\\\"\")\n", - "print(\"Document 3: \\\"\" + doc3 + \"...\\\"\")" - ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ "Document 1: \"Classics or classical studies is the study of classical antiquity,...\"\n", "Document 2: \"of classical antiquity, and in the Western world traditionally refers...\"\n", @@ -396,54 +380,58 @@ ] }, { - "output_type": "stream", "name": "stderr", + "output_type": "stream", "text": [ "[nltk_data] Downloading package punkt to /home/branden/nltk_data...\n", "[nltk_data] Package punkt is already up-to-date!\n" ] } ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } + "source": [ + "# Sliding window approach\n", + "\n", + "preprocessor_sliding_window = PreProcessor(\n", + " split_overlap=3,\n", + " split_length=10,\n", + " split_respect_sentence_boundary=False\n", + ")\n", + "docs_sliding_window = preprocessor_sliding_window.process(doc_txt)\n", + "\n", + "doc1 = docs_sliding_window[0][\"content\"][:200]\n", + "doc2 = docs_sliding_window[1][\"content\"][:100]\n", + "doc3 = docs_sliding_window[2][\"content\"][:100]\n", + "\n", + "print(\"Document 1: \\\"\" + doc1 + \"...\\\"\")\n", + "print(\"Document 2: \\\"\" + doc2 + \"...\\\"\")\n", + "print(\"Document 3: \\\"\" + doc3 + \"...\\\"\")" + ] }, { "cell_type": "markdown", - "source": [ - "## Bringing it all together" - ], "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } - } + }, + "source": [ + "## Bringing it all together" + ] }, { "cell_type": "code", "execution_count": 16, - "source": [ - "all_docs = convert_files_to_dicts(dir_path=\"data/preprocessing_tutorial\")\n", - "preprocessor = PreProcessor(\n", - " clean_empty_lines=True,\n", - " clean_whitespace=True,\n", - " clean_header_footer=False,\n", - " split_by=\"word\",\n", - " split_length=100,\n", - " split_respect_sentence_boundary=True\n", - ")\n", - "docs = preprocessor.process(all_docs)\n", - "\n", - "print(f\"n_files_input: {len(all_docs)}\\nn_docs_output: {len(docs)}\")" - ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [ { - "output_type": "stream", "name": "stderr", + "output_type": "stream", "text": [ "01/06/2021 14:56:12 - INFO - haystack.preprocessor.utils - Converting data/preprocessing_tutorial/heavy_metal.docx\n", "01/06/2021 14:56:12 - INFO - haystack.preprocessor.utils - Converting data/preprocessing_tutorial/bert.pdf\n", @@ -453,23 +441,37 @@ ] }, { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ "n_files_input: 3\n", "n_docs_output: 150\n" ] } ], + "source": [ + "all_docs = convert_files_to_dicts(dir_path=\"data/preprocessing_tutorial\")\n", + "preprocessor = PreProcessor(\n", + " clean_empty_lines=True,\n", + " clean_whitespace=True,\n", + " clean_header_footer=False,\n", + " split_by=\"word\",\n", + " split_length=100,\n", + " split_respect_sentence_boundary=True\n", + ")\n", + "docs = preprocessor.process(all_docs)\n", + "\n", + "print(f\"n_files_input: {len(all_docs)}\\nn_docs_output: {len(docs)}\")" + ] + }, + { + "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { - "name": "#%%\n" + "name": "#%% md\n" } - } - }, - { - "cell_type": "markdown", + }, "source": [ "## About us\n", "\n", @@ -487,13 +489,7 @@ "[Twitter](https://twitter.com/deepset_ai) | [LinkedIn](https://www.linkedin.com/company/deepset-ai/) | [Slack](https://haystack.deepset.ai/community/join) | [GitHub Discussions](https://github.com/deepset-ai/haystack/discussions) | [Website](https://deepset.ai)\n", "\n", "By the way: [we're hiring!](https://www.deepset.ai/jobs)\n" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } + ] } ], "metadata": { @@ -517,4 +513,4 @@ }, "nbformat": 4, "nbformat_minor": 2 -} \ No newline at end of file +} diff --git a/tutorials/Tutorial9_DPR_training.ipynb b/tutorials/Tutorial9_DPR_training.ipynb index 33795a569d..0b70325828 100644 --- a/tutorials/Tutorial9_DPR_training.ipynb +++ b/tutorials/Tutorial9_DPR_training.ipynb @@ -2,6 +2,12 @@ "cells": [ { "cell_type": "markdown", + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "# Training Your Own \"Dense Passage Retrieval\" Model\n", "\n", @@ -9,56 +15,53 @@ "\n", "Haystack contains all the tools needed to train your own Dense Passage Retrieval model.\n", "This tutorial will guide you through the steps required to create a retriever that is specifically tailored to your domain." - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } + ] }, { "cell_type": "code", "execution_count": null, - "source": [ - "# Install the latest release of Haystack in your own environment\n", - "#! pip install farm-haystack\n", - "\n", - "# Install the latest master of Haystack\n", - "!pip install grpcio-tools==1.34.1\n", - "!pip install git+https://github.com/deepset-ai/haystack.git\n", - "\n", - "# If you run this notebook on Google Colab, you might need to\n", - "# restart the runtime after installing haystack." - ], - "outputs": [], "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } - } + }, + "outputs": [], + "source": [ + "# Install the latest release of Haystack in your own environment \n", + "#! pip install farm-haystack\n", + "\n", + "# Install the latest master of Haystack\n", + "!pip install --upgrade pip\n", + "!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab]" + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], "source": [ "# Here are some imports that we'll need\n", "\n", "from haystack.nodes import DensePassageRetriever\n", "from haystack.utils import fetch_archive_from_http\n", "from haystack.document_stores import InMemoryDocumentStore" - ], - "outputs": [], + ] + }, + { + "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { - "name": "#%%\n" + "name": "#%% md\n" } - } - }, - { - "cell_type": "markdown", + }, "source": [ "## Training Data\n", "\n", @@ -99,16 +102,16 @@ "\n", "If you'd like to convert your SQuAD format data into something that can train a DPR model,\n", "check out the utility script at [`haystack/retriever/squad_to_dpr.py`](https://github.com/deepset-ai/haystack/blob/master/haystack/retriever/squad_to_dpr.py)" - ], + ] + }, + { + "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } - } - }, - { - "cell_type": "markdown", + }, "source": [ "## Using Question Answering Data\n", "\n", @@ -119,16 +122,16 @@ "\n", "The SQuAD dataset, however, is not as suited to this use case since its question and answer pairs\n", "are created on only a very small slice of wikipedia documents." - ], + ] + }, + { + "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } - } - }, - { - "cell_type": "markdown", + }, "source": [ "## Download Original DPR Training Data\n", "\n", @@ -136,17 +139,18 @@ "\n", "We can download the original DPR training data with the following cell.\n", "Note that this data is probably only useful if you are trying to train from scratch." - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], "source": [ "# Download original DPR data\n", "# WARNING: the train set is 7.4GB and the dev set is 800MB\n", @@ -158,17 +162,16 @@ "\n", "fetch_archive_from_http(s3_url_train, output_dir=doc_dir + \"train/\")\n", "fetch_archive_from_http(s3_url_dev, output_dir=doc_dir + \"dev/\")" - ], - "outputs": [], + ] + }, + { + "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { - "name": "#%%\n" + "name": "#%% md\n" } - } - }, - { - "cell_type": "markdown", + }, "source": [ "## Option 1: Training DPR from Scratch\n", "\n", @@ -179,17 +182,18 @@ "If you are working in a language other than English,\n", "you will want to initialize the passage and query embedding models with a language model that supports your language\n", "and also provide a dataset in your language." - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], "source": [ "# Here are the variables to specify our training data, the models that we use to initialize DPR\n", "# and the directory where we'll be saving the model\n", @@ -203,17 +207,16 @@ "passage_model = \"bert-base-uncased\"\n", "\n", "save_dir = \"../saved_models/dpr\"" - ], - "outputs": [], + ] + }, + { + "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { - "name": "#%%\n" + "name": "#%% md\n" } - } - }, - { - "cell_type": "markdown", + }, "source": [ "## Option 2: Finetuning DPR\n", "\n", @@ -221,17 +224,18 @@ "you might instead be interested in finetuning a pretrained DPR model.\n", "In this case, you would initialize both query and passage models using the original pretrained model.\n", "You will want to load something like this set of variables instead of the ones above" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], "source": [ "# Here are the variables you might want to use instead of the set above\n", "# in order to perform pretraining\n", @@ -244,17 +248,16 @@ "passage_model = \"facebook/dpr-ctx_encoder-single-nq-base\"\n", "\n", "save_dir = \"../saved_models/dpr\"" - ], - "outputs": [], + ] + }, + { + "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { - "name": "#%%\n" + "name": "#%% md\n" } - } - }, - { - "cell_type": "markdown", + }, "source": [ "## Initialization\n", "\n", @@ -262,17 +265,18 @@ "or else with pretrained DPR weights for finetuning.\n", "We follow the [original DPR parameters](https://github.com/facebookresearch/DPR#best-hyperparameter-settings)\n", "for their max passage length but set max query length to 64 since queries are very rarely longer." - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], "source": [ "## Initialize DPR model\n", "\n", @@ -283,17 +287,16 @@ " max_seq_len_query=64,\n", " max_seq_len_passage=256\n", ")" - ], - "outputs": [], + ] + }, + { + "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { - "name": "#%%\n" + "name": "#%% md\n" } - } - }, - { - "cell_type": "markdown", + }, "source": [ "## Training\n", "\n", @@ -304,16 +307,16 @@ "\n", "When `embed_title=True`, the document title is prepended to the input text sequence with a `[SEP]` token\n", "between it and document text." - ], + ] + }, + { + "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } - } - }, - { - "cell_type": "markdown", + }, "source": [ "When training from scratch with the above variables, 1 epoch takes around an hour and we reached the following performance:\n", "\n", @@ -335,17 +338,18 @@ " weighted avg 0.9925 0.9925 0.9925 208402\n", "\n", "```" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], "source": [ "# Start training our model and save it when it is finished\n", "\n", @@ -363,45 +367,41 @@ " num_positives=1,\n", " num_hard_negatives=1\n", ")" - ], - "outputs": [], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } + ] }, { "cell_type": "markdown", - "source": [ - "## Loading\n", - "\n", - "Loading our newly trained model is simple!" - ], "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } - } + }, + "source": [ + "## Loading\n", + "\n", + "Loading our newly trained model is simple!" + ] }, { "cell_type": "code", "execution_count": null, - "source": [ - "reloaded_retriever = DensePassageRetriever.load(load_dir=save_dir, document_store=None)" - ], - "outputs": [], "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } - } + }, + "outputs": [], + "source": [ + "reloaded_retriever = DensePassageRetriever.load(load_dir=save_dir, document_store=None)" + ] }, { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "## About us\n", "\n", @@ -419,10 +419,7 @@ "[Twitter](https://twitter.com/deepset_ai) | [LinkedIn](https://www.linkedin.com/company/deepset-ai/) | [Slack](https://haystack.deepset.ai/community/join) | [GitHub Discussions](https://github.com/deepset-ai/haystack/discussions) | [Website](https://deepset.ai)\n", "\n", "By the way: [we're hiring!](https://www.deepset.ai/jobs)" - ], - "metadata": { - "collapsed": false - } + ] } ], "metadata": { @@ -446,4 +443,4 @@ }, "nbformat": 4, "nbformat_minor": 2 -} \ No newline at end of file +} From e5055d4e8bce61d5254a9a3ed18ccb9ba888d6f3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 25 Jan 2022 17:38:31 +0000 Subject: [PATCH 65/76] Add latest docstring and tutorial changes --- docs/_src/tutorials/tutorials/1.md | 7 ++----- docs/_src/tutorials/tutorials/10.md | 9 +++------ docs/_src/tutorials/tutorials/11.md | 12 ++++++------ docs/_src/tutorials/tutorials/12.md | 9 +++++---- docs/_src/tutorials/tutorials/13.md | 11 +++++------ docs/_src/tutorials/tutorials/14.md | 9 +++------ docs/_src/tutorials/tutorials/15.md | 4 ++-- docs/_src/tutorials/tutorials/16.md | 12 ++++-------- docs/_src/tutorials/tutorials/2.md | 7 ++----- docs/_src/tutorials/tutorials/3.md | 7 ++----- docs/_src/tutorials/tutorials/4.md | 7 ++----- docs/_src/tutorials/tutorials/5.md | 7 ++----- docs/_src/tutorials/tutorials/6.md | 7 ++----- docs/_src/tutorials/tutorials/7.md | 9 +++++---- docs/_src/tutorials/tutorials/8.md | 12 ++++-------- docs/_src/tutorials/tutorials/9.md | 9 +++------ 16 files changed, 52 insertions(+), 86 deletions(-) diff --git a/docs/_src/tutorials/tutorials/1.md b/docs/_src/tutorials/tutorials/1.md index 05eb10a80a..7fa9dafe1e 100644 --- a/docs/_src/tutorials/tutorials/1.md +++ b/docs/_src/tutorials/tutorials/1.md @@ -42,11 +42,8 @@ Make sure you enable the GPU runtime to experience decent speed in this tutorial #! pip install farm-haystack # Install the latest master of Haystack -!pip install grpcio-tools==1.34.1 -!pip install git+https://github.com/deepset-ai/haystack.git - -# If you run this notebook on Google Colab, you might need to -# restart the runtime after installing haystack. +!pip install --upgrade pip +!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab] ``` diff --git a/docs/_src/tutorials/tutorials/10.md b/docs/_src/tutorials/tutorials/10.md index b5c99ba800..5b2758ebb6 100644 --- a/docs/_src/tutorials/tutorials/10.md +++ b/docs/_src/tutorials/tutorials/10.md @@ -17,15 +17,12 @@ The training of models that translate text queries into SPARQL queries is curren ```python -# Install the latest release of Haystack in your own environment +# Install the latest release of Haystack in your own environment #! pip install farm-haystack # Install the latest master of Haystack -!pip install grpcio-tools==1.34.1 -!pip install git+https://github.com/deepset-ai/haystack.git - -# If you run this notebook on Google Colab, you might need to -# restart the runtime after installing haystack. +!pip install --upgrade pip +!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab] ``` diff --git a/docs/_src/tutorials/tutorials/11.md b/docs/_src/tutorials/tutorials/11.md index b350d75d2f..e2b7979df0 100644 --- a/docs/_src/tutorials/tutorials/11.md +++ b/docs/_src/tutorials/tutorials/11.md @@ -35,16 +35,16 @@ These lines are to install Haystack through pip ```python +# Install the latest release of Haystack in your own environment +#! pip install farm-haystack + # Install the latest master of Haystack -!pip install grpcio-tools==1.34.1 -!pip install --upgrade git+https://github.com/deepset-ai/haystack.git +!pip install --upgrade pip +!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab] -# Install pygraphviz +# Install pygraphviz !apt install libgraphviz-dev !pip install pygraphviz - -# If you run this notebook on Google Colab, you might need to -# restart the runtime after installing haystack. ``` If running from Colab or a no Docker environment, you will want to start Elasticsearch from source diff --git a/docs/_src/tutorials/tutorials/12.md b/docs/_src/tutorials/tutorials/12.md index 6ffc649c2e..996ff8867b 100644 --- a/docs/_src/tutorials/tutorials/12.md +++ b/docs/_src/tutorials/tutorials/12.md @@ -27,11 +27,12 @@ Make sure you enable the GPU runtime to experience decent speed in this tutorial ```python -# Install the latest master of Haystack -!pip install git+https://github.com/deepset-ai/haystack.git +# Install the latest release of Haystack in your own environment +#! pip install farm-haystack -# If you run this notebook on Google Colab, you might need to -# restart the runtime after installing haystack. +# Install the latest master of Haystack +!pip install --upgrade pip +!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab] ``` diff --git a/docs/_src/tutorials/tutorials/13.md b/docs/_src/tutorials/tutorials/13.md index 8d63be3f3c..bf20a56a64 100644 --- a/docs/_src/tutorials/tutorials/13.md +++ b/docs/_src/tutorials/tutorials/13.md @@ -24,13 +24,12 @@ Make sure you enable the GPU runtime to experience decent speed in this tutorial ```python -# Install needed libraries +# Install the latest release of Haystack in your own environment +#! pip install farm-haystack -!pip install grpcio-tools==1.34.1 -!pip install git+https://github.com/deepset-ai/haystack.git - -# If you run this notebook on Google Colab, you might need to -# restart the runtime after installing haystack. +# Install the latest master of Haystack +!pip install --upgrade pip +!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab] ``` diff --git a/docs/_src/tutorials/tutorials/14.md b/docs/_src/tutorials/tutorials/14.md index 16c3f4a203..140c3f84fa 100644 --- a/docs/_src/tutorials/tutorials/14.md +++ b/docs/_src/tutorials/tutorials/14.md @@ -54,20 +54,17 @@ These lines are to install Haystack through pip ```python -# Install the latest release of Haystack in your own environment +# Install the latest release of Haystack in your own environment #! pip install farm-haystack # Install the latest master of Haystack -!pip install grpcio-tools==1.34.1 -!pip install --upgrade git+https://github.com/deepset-ai/haystack.git +!pip install --upgrade pip +!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab] # Install pygraphviz !apt install libgraphviz-dev !pip install pygraphviz -# If you run this notebook on Google Colab, you might need to -# restart the runtime after installing haystack. - # In Colab / No Docker environments: Start Elasticsearch from source ! wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.2-linux-x86_64.tar.gz -q ! tar -xzf elasticsearch-7.9.2-linux-x86_64.tar.gz diff --git a/docs/_src/tutorials/tutorials/15.md b/docs/_src/tutorials/tutorials/15.md index 73ec80ad9f..09c3bf2207 100644 --- a/docs/_src/tutorials/tutorials/15.md +++ b/docs/_src/tutorials/tutorials/15.md @@ -32,8 +32,8 @@ Make sure you enable the GPU runtime to experience decent speed in this tutorial #! pip install farm-haystack # Install the latest master of Haystack -!pip install grpcio-tools==1.34.1 -!pip install git+https://github.com/deepset-ai/haystack.git +!pip install --upgrade pip +!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab] # The TaPAs-based TableReader requires the torch-scatter library !pip install torch-scatter -f https://data.pyg.org/whl/torch-1.10.0+cu113.html diff --git a/docs/_src/tutorials/tutorials/16.md b/docs/_src/tutorials/tutorials/16.md index 1948ed5ecd..20fb3739d0 100644 --- a/docs/_src/tutorials/tutorials/16.md +++ b/docs/_src/tutorials/tutorials/16.md @@ -21,23 +21,19 @@ This tutorial will show you how to integrate a classification model into your pr ```python -# Let's start by installing Haystack - -# Install the latest release of Haystack in your own environment +# Install the latest release of Haystack in your own environment #! pip install farm-haystack # Install the latest master of Haystack -!pip install grpcio-tools==1.34.1 -!pip install git+https://github.com/deepset-ai/haystack.git +!pip install --upgrade pip +!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab] + !wget --no-check-certificate https://dl.xpdfreader.com/xpdf-tools-linux-4.03.tar.gz !tar -xvf xpdf-tools-linux-4.03.tar.gz && sudo cp xpdf-tools-linux-4.03/bin64/pdftotext /usr/local/bin # Install pygraphviz !apt install libgraphviz-dev !pip install pygraphviz - -# If you run this notebook on Google Colab, you might need to -# restart the runtime after installing haystack. ``` diff --git a/docs/_src/tutorials/tutorials/2.md b/docs/_src/tutorials/tutorials/2.md index 48854daac0..ce5721f641 100644 --- a/docs/_src/tutorials/tutorials/2.md +++ b/docs/_src/tutorials/tutorials/2.md @@ -37,11 +37,8 @@ Make sure you enable the GPU runtime to experience decent speed in this tutorial #! pip install farm-haystack # Install the latest master of Haystack -!pip install grpcio-tools==1.34.1 -!pip install git+https://github.com/deepset-ai/haystack.git - -# If you run this notebook on Google Colab, you might need to -# restart the runtime after installing haystack. +!pip install --upgrade pip +!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab] ``` diff --git a/docs/_src/tutorials/tutorials/3.md b/docs/_src/tutorials/tutorials/3.md index 38256fe1f0..48bf5b7c23 100644 --- a/docs/_src/tutorials/tutorials/3.md +++ b/docs/_src/tutorials/tutorials/3.md @@ -37,11 +37,8 @@ Make sure you enable the GPU runtime to experience decent speed in this tutorial #! pip install farm-haystack # Install the latest master of Haystack -!pip install grpcio-tools==1.34.1 -!pip install git+https://github.com/deepset-ai/haystack.git - -# If you run this notebook on Google Colab, you might need to -# restart the runtime after installing haystack. +!pip install --upgrade pip +!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab] ``` diff --git a/docs/_src/tutorials/tutorials/4.md b/docs/_src/tutorials/tutorials/4.md index 66dc55cf9e..e7d73802b9 100644 --- a/docs/_src/tutorials/tutorials/4.md +++ b/docs/_src/tutorials/tutorials/4.md @@ -45,11 +45,8 @@ Make sure you enable the GPU runtime to experience decent speed in this tutorial #! pip install farm-haystack # Install the latest master of Haystack -!pip install grpcio-tools==1.34.1 -!pip install git+https://github.com/deepset-ai/haystack.git - -# If you run this notebook on Google Colab, you might need to -# restart the runtime after installing haystack. +!pip install --upgrade pip +!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab] ``` diff --git a/docs/_src/tutorials/tutorials/5.md b/docs/_src/tutorials/tutorials/5.md index 736ba65eaf..9196e75721 100644 --- a/docs/_src/tutorials/tutorials/5.md +++ b/docs/_src/tutorials/tutorials/5.md @@ -34,11 +34,8 @@ Make sure you enable the GPU runtime to experience decent speed in this tutorial #! pip install farm-haystack # Install the latest master of Haystack -!pip install grpcio-tools==1.34.1 -!pip install git+https://github.com/deepset-ai/haystack.git - -# If you run this notebook on Google Colab, you might need to -# restart the runtime after installing haystack. +!pip install --upgrade pip +!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab] ``` diff --git a/docs/_src/tutorials/tutorials/6.md b/docs/_src/tutorials/tutorials/6.md index e4d4f7b2ed..fb142ceb81 100644 --- a/docs/_src/tutorials/tutorials/6.md +++ b/docs/_src/tutorials/tutorials/6.md @@ -78,11 +78,8 @@ Make sure you enable the GPU runtime to experience decent speed in this tutorial #! pip install farm-haystack # Install the latest master of Haystack -!pip install grpcio-tools==1.34.1 -!pip install git+https://github.com/deepset-ai/haystack.git - -# If you run this notebook on Google Colab, you might need to -# restart the runtime after installing haystack. +!pip install --upgrade pip +!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab] ``` diff --git a/docs/_src/tutorials/tutorials/7.md b/docs/_src/tutorials/tutorials/7.md index e1e9ad12c7..815f96f46a 100644 --- a/docs/_src/tutorials/tutorials/7.md +++ b/docs/_src/tutorials/tutorials/7.md @@ -35,11 +35,12 @@ Here are the packages and imports that we'll need: ```python -!pip install grpcio-tools==1.34.1 -!pip install git+https://github.com/deepset-ai/haystack.git +# Install the latest release of Haystack in your own environment +#! pip install farm-haystack -# If you run this notebook on Google Colab, you might need to -# restart the runtime after installing haystack. +# Install the latest master of Haystack +!pip install --upgrade pip +!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab] ``` diff --git a/docs/_src/tutorials/tutorials/8.md b/docs/_src/tutorials/tutorials/8.md index 430e05d846..00a6f21d8f 100644 --- a/docs/_src/tutorials/tutorials/8.md +++ b/docs/_src/tutorials/tutorials/8.md @@ -29,19 +29,15 @@ This tutorial will show you all the tools that Haystack provides to help you cas ```python -# Let's start by installing Haystack - -# Install the latest release of Haystack in your own environment +# Install the latest release of Haystack in your own environment #! pip install farm-haystack # Install the latest master of Haystack -!pip install grpcio-tools==1.34.1 -!pip install git+https://github.com/deepset-ai/haystack.git +!pip install --upgrade pip +!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab] + !wget --no-check-certificate https://dl.xpdfreader.com/xpdf-tools-linux-4.03.tar.gz !tar -xvf xpdf-tools-linux-4.03.tar.gz && sudo cp xpdf-tools-linux-4.03/bin64/pdftotext /usr/local/bin - -# If you run this notebook on Google Colab, you might need to -# restart the runtime after installing haystack. ``` diff --git a/docs/_src/tutorials/tutorials/9.md b/docs/_src/tutorials/tutorials/9.md index fa1757dc6f..3b88a2efa5 100644 --- a/docs/_src/tutorials/tutorials/9.md +++ b/docs/_src/tutorials/tutorials/9.md @@ -16,15 +16,12 @@ This tutorial will guide you through the steps required to create a retriever th ```python -# Install the latest release of Haystack in your own environment +# Install the latest release of Haystack in your own environment #! pip install farm-haystack # Install the latest master of Haystack -!pip install grpcio-tools==1.34.1 -!pip install git+https://github.com/deepset-ai/haystack.git - -# If you run this notebook on Google Colab, you might need to -# restart the runtime after installing haystack. +!pip install --upgrade pip +!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab] ``` From 7e9ec23ddef9747d6a5a4f990628666e90bde814 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Wed, 26 Jan 2022 10:38:54 +0100 Subject: [PATCH 66/76] Update some tutorials and rever Milvus1 as default for now, see #2067 --- setup.cfg | 6 +++--- tutorials/Tutorial10_Knowledge_Graph.ipynb | 2 +- tutorials/Tutorial6_Better_Retrieval_via_DPR.ipynb | 2 +- tutorials/Tutorial6_Better_Retrieval_via_DPR.py | 4 ++++ 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/setup.cfg b/setup.cfg index a96ee80da2..30d600b11a 100644 --- a/setup.cfg +++ b/setup.cfg @@ -125,9 +125,9 @@ weaviate = graphdb = SPARQLWrapper docstores = - farm-haystack[faiss,milvus,weaviate,graphdb] + farm-haystack[faiss,milvus1,weaviate,graphdb] docstores-gpu = - farm-haystack[faiss-gpu,milvus,weaviate,graphdb] + farm-haystack[faiss-gpu,milvus1,weaviate,graphdb] crawler = selenium webdriver-manager @@ -166,7 +166,7 @@ dev = pylint black test = - farm-haystack[faiss,milvus1,weaviate,graphdb,crawler,preprocessing,ocr,ray,rest,ui,dev] + farm-haystack[docstores,crawler,preprocessing,ocr,ray,rest,ui,dev] all = farm-haystack[docstores,crawler,preprocessing,ocr,ray,rest,ui,dev,onnx] all-gpu = diff --git a/tutorials/Tutorial10_Knowledge_Graph.ipynb b/tutorials/Tutorial10_Knowledge_Graph.ipynb index cad71ec4e7..1dfa70dbd6 100644 --- a/tutorials/Tutorial10_Knowledge_Graph.ipynb +++ b/tutorials/Tutorial10_Knowledge_Graph.ipynb @@ -34,7 +34,7 @@ "\n", "# Install the latest master of Haystack\n", "!pip install --upgrade pip\n", - "!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab]" + "!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab,graphdb]" ] }, { diff --git a/tutorials/Tutorial6_Better_Retrieval_via_DPR.ipynb b/tutorials/Tutorial6_Better_Retrieval_via_DPR.ipynb index c35b1a572f..921d08d882 100644 --- a/tutorials/Tutorial6_Better_Retrieval_via_DPR.ipynb +++ b/tutorials/Tutorial6_Better_Retrieval_via_DPR.ipynb @@ -286,7 +286,7 @@ "\n", "# Install the latest master of Haystack\n", "!pip install --upgrade pip\n", - "!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab]" + "!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab,faiss,milvus]" ] }, { diff --git a/tutorials/Tutorial6_Better_Retrieval_via_DPR.py b/tutorials/Tutorial6_Better_Retrieval_via_DPR.py index 02d2a01de2..9b223ef897 100755 --- a/tutorials/Tutorial6_Better_Retrieval_via_DPR.py +++ b/tutorials/Tutorial6_Better_Retrieval_via_DPR.py @@ -10,12 +10,16 @@ def tutorial6_better_retrieval_via_dpr(): # The default flavour of FAISSDocumentStore is "Flat" but can also be set to "HNSW" for # faster search at the expense of some accuracy. Just set the faiss_index_factor_str argument in the constructor. # For more info on which suits your use case: https://github.com/facebookresearch/faiss/wiki/Guidelines-to-choose-an-index + + # Do not forget to install its dependencies with `pip install farm-haystack[faiss]` document_store = FAISSDocumentStore(faiss_index_factory_str="Flat") # OPTION2: Milvus is an open source database library that is also optimized for vector similarity searches like FAISS. # Like FAISS it has both a "Flat" and "HNSW" mode but it outperforms FAISS when it comes to dynamic data management. # It does require a little more setup, however, as it is run through Docker and requires the setup of some config files. # See https://milvus.io/docs/v1.0.0/milvus_docker-cpu.md + + # Do not forget to install its dependencies with `pip install farm-haystack[milvus1]` # launch_milvus() # document_store = MilvusDocumentStore() From 057d94ea33c60f6cd453cbfed09e00a57d3e1daa Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 26 Jan 2022 09:42:46 +0000 Subject: [PATCH 67/76] Add latest docstring and tutorial changes --- docs/_src/tutorials/tutorials/10.md | 2 +- docs/_src/tutorials/tutorials/6.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/_src/tutorials/tutorials/10.md b/docs/_src/tutorials/tutorials/10.md index 5b2758ebb6..a93ee646b3 100644 --- a/docs/_src/tutorials/tutorials/10.md +++ b/docs/_src/tutorials/tutorials/10.md @@ -22,7 +22,7 @@ The training of models that translate text queries into SPARQL queries is curren # Install the latest master of Haystack !pip install --upgrade pip -!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab] +!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab,graphdb] ``` diff --git a/docs/_src/tutorials/tutorials/6.md b/docs/_src/tutorials/tutorials/6.md index fb142ceb81..bac808f0de 100644 --- a/docs/_src/tutorials/tutorials/6.md +++ b/docs/_src/tutorials/tutorials/6.md @@ -79,7 +79,7 @@ Make sure you enable the GPU runtime to experience decent speed in this tutorial # Install the latest master of Haystack !pip install --upgrade pip -!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab] +!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab,faiss,milvus] ``` From ddc848a1d8dd618e45f83e67c1d2ce059f6e5ea3 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Wed, 26 Jan 2022 15:29:51 +0100 Subject: [PATCH 68/76] Some more small changes to the tutorials --- tutorials/Tutorial7_RAG_Generator.ipynb | 2 +- tutorials/Tutorial7_RAG_Generator.py | 1 + tutorials/Tutorial8_Preprocessing.ipynb | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/tutorials/Tutorial7_RAG_Generator.ipynb b/tutorials/Tutorial7_RAG_Generator.ipynb index e6f778e0f5..8a9ca4bc33 100644 --- a/tutorials/Tutorial7_RAG_Generator.ipynb +++ b/tutorials/Tutorial7_RAG_Generator.ipynb @@ -72,7 +72,7 @@ "\n", "# Install the latest master of Haystack\n", "!pip install --upgrade pip\n", - "!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab]" + "!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab,faiss]" ] }, { diff --git a/tutorials/Tutorial7_RAG_Generator.py b/tutorials/Tutorial7_RAG_Generator.py index 30b0e3e88e..0fa45cedd5 100644 --- a/tutorials/Tutorial7_RAG_Generator.py +++ b/tutorials/Tutorial7_RAG_Generator.py @@ -38,6 +38,7 @@ def tutorial7_rag_generator(): # Initialize FAISS document store to documents and corresponding index for embeddings # Set `return_embedding` to `True`, so generator doesn't have to perform re-embedding + # Don't forget to install FAISS dependencies with `pip install farm-haystack[faiss]` document_store = FAISSDocumentStore( faiss_index_factory_str="Flat", return_embedding=True diff --git a/tutorials/Tutorial8_Preprocessing.ipynb b/tutorials/Tutorial8_Preprocessing.ipynb index a9fe2c2a9d..110091ac6f 100644 --- a/tutorials/Tutorial8_Preprocessing.ipynb +++ b/tutorials/Tutorial8_Preprocessing.ipynb @@ -63,7 +63,7 @@ "\n", "# Install the latest master of Haystack\n", "!pip install --upgrade pip\n", - "!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab]\n", + "!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab,ocr]\n", "\n", "!wget --no-check-certificate https://dl.xpdfreader.com/xpdf-tools-linux-4.03.tar.gz\n", "!tar -xvf xpdf-tools-linux-4.03.tar.gz && sudo cp xpdf-tools-linux-4.03/bin64/pdftotext /usr/local/bin" From d3cc05c1df3c91f7ae98e5c67d7405d16cbe2a95 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 26 Jan 2022 14:37:50 +0000 Subject: [PATCH 69/76] Add latest docstring and tutorial changes --- docs/_src/tutorials/tutorials/7.md | 2 +- docs/_src/tutorials/tutorials/8.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/_src/tutorials/tutorials/7.md b/docs/_src/tutorials/tutorials/7.md index 815f96f46a..5824f52763 100644 --- a/docs/_src/tutorials/tutorials/7.md +++ b/docs/_src/tutorials/tutorials/7.md @@ -40,7 +40,7 @@ Here are the packages and imports that we'll need: # Install the latest master of Haystack !pip install --upgrade pip -!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab] +!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab,faiss] ``` diff --git a/docs/_src/tutorials/tutorials/8.md b/docs/_src/tutorials/tutorials/8.md index 00a6f21d8f..929d490645 100644 --- a/docs/_src/tutorials/tutorials/8.md +++ b/docs/_src/tutorials/tutorials/8.md @@ -34,7 +34,7 @@ This tutorial will show you all the tools that Haystack provides to help you cas # Install the latest master of Haystack !pip install --upgrade pip -!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab] +!pip install git+https://github.com/deepset-ai/haystack.git#egg=farm-haystack[colab,ocr] !wget --no-check-certificate https://dl.xpdfreader.com/xpdf-tools-linux-4.03.tar.gz !tar -xvf xpdf-tools-linux-4.03.tar.gz && sudo cp xpdf-tools-linux-4.03/bin64/pdftotext /usr/local/bin From 3415273a1e1a5a5129b911939994c4d43cfab72a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 26 Jan 2022 14:42:27 +0000 Subject: [PATCH 70/76] Add latest docstring and tutorial changes --- docs/_src/tutorials/tutorials/7.md | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/docs/_src/tutorials/tutorials/7.md b/docs/_src/tutorials/tutorials/7.md index 5824f52763..36b426a4bb 100644 --- a/docs/_src/tutorials/tutorials/7.md +++ b/docs/_src/tutorials/tutorials/7.md @@ -170,27 +170,6 @@ These are used to condition the generator as it generates the answer. What it should return then are novel text spans that form and answer to your question! -```python -# Now generate an answer for each question -for question in QUESTIONS: - # Retrieve related documents from retriever - retriever_results = retriever.retrieve( - query=question - ) - - # Now generate answer from question and retrieved documents - predicted_result = generator.predict( - query=question, - documents=retriever_results, - top_k=1 - ) - - # Print you answer - answers = predicted_result["answers"] - print(f'Generated answer is \'{answers[0]["answer"]}\' for the question = \'{question}\'') -``` - - ```python # Or alternatively use the Pipeline class from haystack.pipelines import GenerativeQAPipeline From ed393a192bc4066fe580ec0f0e366635d2eff9b5 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Wed, 26 Jan 2022 15:44:29 +0100 Subject: [PATCH 71/76] Forgot one merge conflict --- haystack/nodes/retriever/sparse.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/haystack/nodes/retriever/sparse.py b/haystack/nodes/retriever/sparse.py index d038c8f315..d1eb8a63fb 100644 --- a/haystack/nodes/retriever/sparse.py +++ b/haystack/nodes/retriever/sparse.py @@ -55,12 +55,7 @@ def __init__(self, document_store: KeywordDocumentStore, top_k: int = 10, custom """ # save init parameters to enable export of component config as YAML self.set_config(document_store=document_store, top_k=top_k, custom_query=custom_query) - -<<<<<<< HEAD - self.document_store: "ElasticsearchDocumentStore" = document_store # type: ignore -======= self.document_store: KeywordDocumentStore = document_store ->>>>>>> master self.top_k = top_k self.custom_query = custom_query From 7d8c471a0586c8842aa279caed5ca970d40690c5 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Wed, 26 Jan 2022 15:55:47 +0100 Subject: [PATCH 72/76] Fix mypy config --- setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index 343b809ce1..8dc9074efa 100644 --- a/setup.cfg +++ b/setup.cfg @@ -186,7 +186,7 @@ addopts = [mypy] -warn_return_any = true +warn_return_any = false warn_unused_configs = true ignore_missing_imports = true plugins = pydantic.mypy From 1dffda6d43a71b9eb710fd4413e8c61eb1b38520 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Wed, 26 Jan 2022 16:03:46 +0100 Subject: [PATCH 73/76] Reintroduce quantulum3 --- haystack/nodes/reader/table.py | 1 + setup.cfg | 1 + 2 files changed, 2 insertions(+) diff --git a/haystack/nodes/reader/table.py b/haystack/nodes/reader/table.py index 97056dba78..5bebe0eb7a 100644 --- a/haystack/nodes/reader/table.py +++ b/haystack/nodes/reader/table.py @@ -5,6 +5,7 @@ import torch import numpy as np import pandas as pd +from quantulum3 import parser from transformers import TapasTokenizer, TapasForQuestionAnswering, AutoTokenizer, AutoModelForSequenceClassification, BatchEncoding from haystack.schema import Document, Answer, Span diff --git a/setup.cfg b/setup.cfg index 8dc9074efa..190637a439 100644 --- a/setup.cfg +++ b/setup.cfg @@ -62,6 +62,7 @@ install_requires = tqdm # progress bars in model download and training scripts networkx # graphs library mmh3 # fast hashing function (murmurhash3) + quantulum3 # quantities extraction from text azure-ai-formrecognizer==3.2.0b2 # forms reader # Preprocessing From 92989057f0117c08d4f28843f854df9a8fe5b64b Mon Sep 17 00:00:00 2001 From: ZanSara Date: Wed, 26 Jan 2022 16:22:54 +0100 Subject: [PATCH 74/76] Fix some more paths and add back InMemoryDocumentStore (disappeared in merge) --- test/conftest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/conftest.py b/test/conftest.py index 50a0617fdf..46548144d9 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -30,7 +30,7 @@ from haystack.utils.import_utils import _optional_component_not_installed _optional_component_not_installed('test', "test", ie) -from haystack.document_stores import DeepsetCloudDocumentStore +from haystack.document_stores import DeepsetCloudDocumentStore, InMemoryDocumentStore from haystack.nodes.answer_generator.transformers import Seq2SeqGenerator From cbb4581d894b198a13cea46b91161904a89a3664 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Wed, 26 Jan 2022 17:01:03 +0100 Subject: [PATCH 75/76] Fix some more paths --- test/test_distillation.py | 4 ++-- test/test_document_store.py | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/test/test_distillation.py b/test/test_distillation.py index af14513072..2f1c3c4951 100644 --- a/test/test_distillation.py +++ b/test/test_distillation.py @@ -77,8 +77,8 @@ def test_intermediate_layer_distillation_from_scratch(): student_weights.pop(-1) # last layer is not affected by tinybert loss student_weights.pop(-1) # pooler is not updated due to different attention head - processor = UnlabeledTextProcessor(tokenizer=teacher.inferencer.processor.tokenizer, max_seq_len=128, train_filename="doc_2.txt", data_dir="samples/docs") - student.distil_intermediate_layers_from(teacher_model=teacher, data_dir="samples/squad", train_filename="tiny.json", processor=processor) + processor = UnlabeledTextProcessor(tokenizer=teacher.inferencer.processor.tokenizer, max_seq_len=128, train_filename="doc_2.txt", data_dir=SAMPLES_PATH/"docs") + student.distil_intermediate_layers_from(teacher_model=teacher, data_dir=SAMPLES_PATH/"squad", train_filename="tiny.json", processor=processor) # create new checkpoint new_student_weights = create_checkpoint(student) diff --git a/test/test_document_store.py b/test/test_document_store.py index e960641b36..887e245e57 100644 --- a/test/test_document_store.py +++ b/test/test_document_store.py @@ -8,7 +8,7 @@ from elasticsearch import Elasticsearch from elasticsearch.exceptions import RequestError -from conftest import deepset_cloud_fixture, get_document_store, MOCK_DC, DC_API_ENDPOINT, DC_API_KEY, DC_TEST_INDEX +from conftest import deepset_cloud_fixture, get_document_store, MOCK_DC, DC_API_ENDPOINT, DC_API_KEY, DC_TEST_INDEX, SAMPLES_PATH from haystack.document_stores import WeaviateDocumentStore, DeepsetCloudDocumentStore from haystack.document_stores.base import BaseDocumentStore from haystack.errors import DuplicateDocumentError @@ -1085,7 +1085,7 @@ def test_DeepsetCloudDocumentStore_invalid_index(): @responses.activate def test_DeepsetCloudDocumentStore_documents(deepset_cloud_document_store): if MOCK_DC: - with open('samples/dc/documents-stream.response', 'r') as f: + with open(SAMPLES_PATH/"dc"/"documents-stream.response", 'r') as f: documents_stream_response = f.read() docs = [json.loads(l) for l in documents_stream_response.splitlines()] filtered_docs = [doc for doc in docs if doc["meta"]["file_id"] == docs[0]["meta"]["file_id"]] @@ -1139,7 +1139,7 @@ def test_DeepsetCloudDocumentStore_documents(deepset_cloud_document_store): @responses.activate def test_DeepsetCloudDocumentStore_query(deepset_cloud_document_store): if MOCK_DC: - with open('samples/dc/query_winterfell.response', 'r') as f: + with open(SAMPLES_PATH/"dc"/"query_winterfell.response", 'r') as f: query_winterfell_response = f.read() query_winterfell_docs = json.loads(query_winterfell_response) query_winterfell_filtered_docs = [doc for doc in query_winterfell_docs if doc["meta"]["file_id"] == query_winterfell_docs[0]["meta"]["file_id"]] From 2b63b142cea71a7e77fdab820d716362fcbdd695 Mon Sep 17 00:00:00 2001 From: ZanSara Date: Wed, 26 Jan 2022 17:22:16 +0100 Subject: [PATCH 76/76] Fixing more paths in the preprocessor --- test/test_preprocessor.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/test_preprocessor.py b/test/test_preprocessor.py index 2177d55af0..937046080f 100644 --- a/test/test_preprocessor.py +++ b/test/test_preprocessor.py @@ -3,6 +3,8 @@ from haystack.nodes.file_converter.pdf import PDFToTextConverter from haystack.nodes.preprocessor.preprocessor import PreProcessor +from conftest import SAMPLES_PATH + TEXT = """ This is a sample sentence in paragraph_1. This is a sample sentence in paragraph_1. This is a sample sentence in paragraph_1. This is a sample sentence in paragraph_1. This is a sample sentence in paragraph_1. @@ -65,7 +67,7 @@ def test_preprocess_passage_split(): def test_clean_header_footer(): converter = PDFToTextConverter() - document = converter.convert(file_path=Path("samples/pdf/sample_pdf_2.pdf")) # file contains header/footer + document = converter.convert(file_path=Path(SAMPLES_PATH/"pdf"/"sample_pdf_2.pdf")) # file contains header/footer preprocessor = PreProcessor(clean_header_footer=True, split_by=None) documents = preprocessor.process(document)