From 3e6d0ee6a1a39472b930c78b03a80ffaf36a95d4 Mon Sep 17 00:00:00 2001 From: duydl Date: Sun, 22 Dec 2024 15:40:49 +0700 Subject: [PATCH 01/17] Init module RAG with README.md, types of RAG --- 8_rag/README.md | 63 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 8_rag/README.md diff --git a/8_rag/README.md b/8_rag/README.md new file mode 100644 index 00000000..d45f75ba --- /dev/null +++ b/8_rag/README.md @@ -0,0 +1,63 @@ +# Retrieval-Augmented Generation (RAG) Module + +## 1. Overview of RAG + +Retrieval-Augmented Generation (RAG) integrates retrieval mechanisms with generative models to produce context-aware responses by accessing external knowledge dynamically. This architecture is highly modular, allowing for customization and optimization based on task requirements. + +A typical RAG pipeline involves: +- **Retriever**: Fetches relevant documents. +- **Chunker**: Splits documents for efficient retrieval. +- **Generator**: Generates responses based on retrieved context. +- **Orchestrator**: Manages interactions between these components. + + +## 2. Types of RAG Architectures + +The architecture of a RAG system defines how components are organized and interact. Below are the most common RAG architectures: + +### 2.1 Naive RAG +The simplest architecture where the query is sent to a retriever, and the retrieved chunks are passed directly to the generator for response generation. +- **Advantages**: Easy to implement, low complexity. +- **Use Cases**: General-purpose question answering, quick prototypes. + + +### 2.2 Retrieve-and-Rerank RAG +Enhances the naive architecture by incorporating a reranker to prioritize retrieved results. +- **Components**: Retriever, reranker, generator. +- **Advantages**: Improves relevance and precision of retrieved context. +- **Use Cases**: Customer support systems, legal document search. + + +### 2.3 Multimodal RAG +Combines text and visual inputs for tasks that require multimodal reasoning. The retriever handles multimodal datasets, and the generator processes both text and image contexts. +- **Components**: Multimodal retriever, image encoder, text generator. +- **Use Cases**: Visual question answering, image captioning, multimodal search. + + +### 2.4 Graph RAG +Leverages graph databases or graph neural networks (GNNs) to model relationships between entities and retrieve structured knowledge. +- **Components**: Graph retriever, node representation model, generator. +- **Advantages**: Ideal for reasoning over structured data like knowledge graphs. +- **Use Cases**: Scientific research, complex entity reasoning, technical documentation. + + +### 2.5 Hybrid RAG +Combines multiple retrieval mechanisms, such as dense vector search and keyword-based search, to ensure robust and diverse retrieval. +- **Components**: Multi-retriever setup, generator. +- **Advantages**: Balances precision and recall by integrating complementary retrieval methods. +- **Use Cases**: Multilingual search, domain-specific retrieval. + + +### 2.6 Agentic RAG (Router) +Uses an agent-based approach to route queries to specialized retrievers or tools based on query type. +- **Components**: Router agent, multiple retrievers, generator. +- **Advantages**: Scalable and adaptable to different query types. +- **Use Cases**: Customer support with diverse query domains. + + +### 2.7 Agentic RAG (Multi-Agent RAG) +Extends the router architecture by involving multiple agents that interact dynamically to solve tasks collaboratively. +- **Components**: Multiple agents, retrievers, external tools (e.g., Slack, Gmail), generator. +- **Advantages**: Flexible and supports integration with external systems. +- **Use Cases**: Workflow automation, enterprise search systems. + From 5d8b9c4d0c6195b6d265231abe5f21f9b405bd49 Mon Sep 17 00:00:00 2001 From: duydl Date: Sun, 22 Dec 2024 15:49:02 +0700 Subject: [PATCH 02/17] Finish README draft. --- 8_rag/README.md | 53 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/8_rag/README.md b/8_rag/README.md index d45f75ba..73a267f0 100644 --- a/8_rag/README.md +++ b/8_rag/README.md @@ -61,3 +61,56 @@ Extends the router architecture by involving multiple agents that interact dynam - **Advantages**: Flexible and supports integration with external systems. - **Use Cases**: Workflow automation, enterprise search systems. + +## 3. Components of RAG + +### 3.1 Retriever +Handles fetching of relevant documents or information from a knowledge base. Popular frameworks include: +- **Vector Databases**: Tools like **Qdrant**, **Weaviate**, and **Pinecone**. +- **Hybrid Retrieval**: Combines keyword and vector search. + + +### 3.2 Chunker +Splits documents into smaller chunks for effective retrieval. Tools like **LangChain Text Splitters** are commonly used. + + +### 3.3 Generator +Generates responses by processing the retrieved context. +- **Options**: GPT models, multimodal models (e.g., GPT-4 Vision). + +In this course we will use the Smol-family models as generator. + +### 3.4 Orchestrator +Manages interaction between components and workflows. +- **Tools**: **LangChain**, **HayStack**. + + +## 4. Evaluation + +Evaluation involves measuring retrieval quality and response generation accuracy. +- **Frameworks**: **RAGAs** for integrated evaluation, **BLEU**, **ROUGE**, and **MRR** for detailed metrics. + + +## 5. Tools and Frameworks + +| Component | Tools/Frameworks | +|------------------|---------------------------------------| +| Retriever | **DPR**, **BM25**, **Qdrant**, **Pinecone** | +| Chunker | **LangChain Text Splitters** | +| Generator | **OpenAI GPT-4**, **Hugging Face Transformers** | +| Orchestrator | **LangChain**, **Hugging Face Agents** | +| Evaluation | **RAGAs**, **BLEU**, **ROUGE**, **MRR** | + + +## Exercise Notebooks + +| Title | Description | Exercise | Link | Colab | +|---------------|-------------|----------|------|-------| +| RAG Basics | Learn how to construct a RAG pipeline | ๐Ÿข Use a simple retriever and generator
๐Ÿ• Try vector database integration
๐Ÿฆ Explore hybrid retrieval | [Notebook](./notebooks/rag_basics.ipynb) | Open In Colab | +| RAG Evaluation | Learn how to evaluate retrieval and generation | ๐Ÿข Evaluate a simple RAG system
๐Ÿ• Use RAGAs for advanced metrics
๐Ÿฆ Analyze retrieval and generation alignment | [Notebook](./notebooks/rag_evaluation.ipynb) | Open In Colab | + + +## References + +- [LangChain Documentation](https://docs.langchain.com) +- [RAGAs Toolkit](https://github.com/ragas-toolkit) From 6d1a2bb4e83b87bd74ff0701ba209333f8d3b239 Mon Sep 17 00:00:00 2001 From: duydl Date: Sun, 22 Dec 2024 15:53:23 +0700 Subject: [PATCH 03/17] Add planned notebook --- 8_rag/README.md | 42 +++++++++++++++++++++++++++++++----------- 1 file changed, 31 insertions(+), 11 deletions(-) diff --git a/8_rag/README.md b/8_rag/README.md index 73a267f0..d910e95f 100644 --- a/8_rag/README.md +++ b/8_rag/README.md @@ -2,13 +2,32 @@ ## 1. Overview of RAG -Retrieval-Augmented Generation (RAG) integrates retrieval mechanisms with generative models to produce context-aware responses by accessing external knowledge dynamically. This architecture is highly modular, allowing for customization and optimization based on task requirements. +Large Language Models (LLMs) have revolutionized natural language processing and generation. However, their reliance on static training data presents significant challenges. Retrieval-Augmented Generation (RAG) addresses these limitations by combining dynamic retrieval with generative capabilities. -A typical RAG pipeline involves: -- **Retriever**: Fetches relevant documents. -- **Chunker**: Splits documents for efficient retrieval. -- **Generator**: Generates responses based on retrieved context. -- **Orchestrator**: Manages interactions between these components. +### Why RAG is Needed + +- **Reducing Hallucination** +RAG grounds responses in external knowledge, ensuring accuracy by dynamically fetching relevant context instead of relying solely on static, memorized information. + +- **Real-Time Knowledge** +Unlike static models, RAG can integrate live data, making it ideal for fast-changing domains like finance, news, and research. + +- **Automation and Scalability** +RAG simplifies complex workflows by dynamically accessing and integrating diverse information sources, enabling scalable applications such as customer support, enterprise search, and workflow automation. + +- **Domain-Specific Adaptability** +With tailored retrievers and modular design, RAG excels in specialized applications such as legal, healthcare, or education, offering flexibility and precision. + +- **Cost Efficiency** +By offloading retrieval tasks to external systems, RAG reduces computational costs and eliminates the need for frequent model fine-tuning. + +### RAG Architecture + +RAG's modular architecture allows for customization and optimization based on task requirements. A typical RAG pipeline involves the following components: +- **Retriever**: Fetches relevant documents or chunks of information. +- **Chunker**: Splits documents into manageable segments for efficient retrieval. +- **Generator**: Generates responses using the retrieved context. +- **Orchestrator**: Manages interactions between these components to ensure seamless workflow. ## 2. Types of RAG Architectures @@ -101,13 +120,14 @@ Evaluation involves measuring retrieval quality and response generation accuracy | Orchestrator | **LangChain**, **Hugging Face Agents** | | Evaluation | **RAGAs**, **BLEU**, **ROUGE**, **MRR** | - + ## Exercise Notebooks -| Title | Description | Exercise | Link | Colab | -|---------------|-------------|----------|------|-------| -| RAG Basics | Learn how to construct a RAG pipeline | ๐Ÿข Use a simple retriever and generator
๐Ÿ• Try vector database integration
๐Ÿฆ Explore hybrid retrieval | [Notebook](./notebooks/rag_basics.ipynb) | Open In Colab | -| RAG Evaluation | Learn how to evaluate retrieval and generation | ๐Ÿข Evaluate a simple RAG system
๐Ÿ• Use RAGAs for advanced metrics
๐Ÿฆ Analyze retrieval and generation alignment | [Notebook](./notebooks/rag_evaluation.ipynb) | Open In Colab | +| Title | Description | Exercise | Link | Colab | +|-------------------|-------------|----------|------|-------| +| RAG Basics | Learn how to construct a RAG pipeline | ๐Ÿข Use a simple retriever and generator
๐Ÿ• Try vector database integration
๐Ÿฆ Explore hybrid retrieval | [Notebook](./notebooks/rag_basics.ipynb) | Open In Colab | +| RAG Evaluation | Learn how to evaluate retrieval and generation | ๐Ÿข Evaluate a simple RAG system
๐Ÿ• Use RAGAs for advanced metrics
๐Ÿฆ Analyze retrieval and generation alignment | [Notebook](./notebooks/rag_evaluation.ipynb) | Open In Colab | +| Agentic RAG | Learn how to set up and use multi-agent RAG for task automation | ๐Ÿข Create a database query react-agent
๐Ÿ• Build an agent for solving math/coding problems
๐Ÿฆ Integrate multiple tools for workflow automation | [Notebook](./notebooks/agent_rag.ipynb) | Open In Colab | ## References From d8124e6f69b0ce4b6ad7bcbfa7ca712d72903702 Mon Sep 17 00:00:00 2001 From: duydl Date: Thu, 9 Jan 2025 13:06:17 +0700 Subject: [PATCH 04/17] README refining --- 8_rag/README.md | 147 ++++++++++++++++++++++-------------------------- 1 file changed, 68 insertions(+), 79 deletions(-) diff --git a/8_rag/README.md b/8_rag/README.md index d910e95f..fb67d554 100644 --- a/8_rag/README.md +++ b/8_rag/README.md @@ -4,7 +4,7 @@ Large Language Models (LLMs) have revolutionized natural language processing and generation. However, their reliance on static training data presents significant challenges. Retrieval-Augmented Generation (RAG) addresses these limitations by combining dynamic retrieval with generative capabilities. -### Why RAG is Needed +### Why RAG is Needed - **Reducing Hallucination** RAG grounds responses in external knowledge, ensuring accuracy by dynamically fetching relevant context instead of relying solely on static, memorized information. @@ -21,106 +21,94 @@ With tailored retrievers and modular design, RAG excels in specialized applicati - **Cost Efficiency** By offloading retrieval tasks to external systems, RAG reduces computational costs and eliminates the need for frequent model fine-tuning. -### RAG Architecture +## 2. Stages of RAG -RAG's modular architecture allows for customization and optimization based on task requirements. A typical RAG pipeline involves the following components: -- **Retriever**: Fetches relevant documents or chunks of information. -- **Chunker**: Splits documents into manageable segments for efficient retrieval. -- **Generator**: Generates responses using the retrieved context. -- **Orchestrator**: Manages interactions between these components to ensure seamless workflow. +Although there are many RAG variants, the main workflow can often be divided into three key stages: +| **Stage** | **Sub-Components** | +| ------------------------- | ------------------------------- | +| **Index** | Ingest, Chunk, Embed, Store | +| **Retrieve + Generate** | Retrieve, Generate, Orchestrate | +| **(Optional) Evaluation**| Evaluate responses | -## 2. Types of RAG Architectures +### 2.1 Index Stage +The **Index** stage prepares the knowledge base for efficient retrieval by processing and organizing documents. This stage often involves: +- **Ingesting Documents**: Extracting text from raw documents (e.g., PDFs, HTML). +- **Chunking**: Splitting documents into smaller, manageable pieces. +- **Embedding**: Converting chunks into vector representations using embedding models. +- **Storing**: Indexing the embeddings into a vector database for efficient search. -The architecture of a RAG system defines how components are organized and interact. Below are the most common RAG architectures: +- **Tools/Frameworks**: + - **Ingesting**: OCR tools, document processors. + - **Chunking**: **LangChain Text Splitters**, **HayStack Preprocessors**. + - **Embedding**: **OpenAI Embeddings**, **Hugging Face Transformers**. + - **Vector Database**: **Qdrant**, **ElasticSearch**, **Pinecone**. -### 2.1 Naive RAG -The simplest architecture where the query is sent to a retriever, and the retrieved chunks are passed directly to the generator for response generation. -- **Advantages**: Easy to implement, low complexity. -- **Use Cases**: General-purpose question answering, quick prototypes. +### 2.2 Retrieve + Generate Stage +The **Retrieve + Generate** stage retrieves relevant context and generates responses based on it: +#### **Retrieve** +Fetches the most relevant chunks of information using: +- **Retrieval Methods**: Dense vector search, hybrid retrieval (vector + keyword). +- **Advanced Techniques**: Re-ranking models, custom tools (web search integration, agents, etc.). -### 2.2 Retrieve-and-Rerank RAG -Enhances the naive architecture by incorporating a reranker to prioritize retrieved results. -- **Components**: Retriever, reranker, generator. -- **Advantages**: Improves relevance and precision of retrieved context. -- **Use Cases**: Customer support systems, legal document search. +#### **Generate** +Uses retrieved chunks as input to generate responses: +- **Generating Methods**: OpenAI, Anthropic, etc. (vision language models for image+text tasks). +#### **(Optional) Orchestrate** +Manages interactions between retrieval and generation for complex workflows such as in advanced retrival techniques. For example: -### 2.3 Multimodal RAG -Combines text and visual inputs for tasks that require multimodal reasoning. The retriever handles multimodal datasets, and the generator processes both text and image contexts. -- **Components**: Multimodal retriever, image encoder, text generator. -- **Use Cases**: Visual question answering, image captioning, multimodal search. +- **Prompt Augmentation**: Prepares the final input for the generator by formatting and enriching retrieved chunks (e.g., adding context, query reformulation, or applying templates). +- **Dynamic Query Refinement**: Iteratively adjusts the query or retrieval parameters based on feedback or partial results to improve the quality of retrieved information. +- **Tool Invocation**: Dynamically calls external tools or APIs (e.g., search engines, databases, or calculators) as part of the response generation process. +### 2.3. (Optional) Evaluation -### 2.4 Graph RAG -Leverages graph databases or graph neural networks (GNNs) to model relationships between entities and retrieve structured knowledge. -- **Components**: Graph retriever, node representation model, generator. -- **Advantages**: Ideal for reasoning over structured data like knowledge graphs. -- **Use Cases**: Scientific research, complex entity reasoning, technical documentation. +Evaluation measures retrieval quality and response generation accuracy. +- **Metrics**: BLEU, ROUGE, MRR. +- **Frameworks**: Frameworks like RAGAs for evaluation.. + ## 3. Types of RAG Architectures -### 2.5 Hybrid RAG -Combines multiple retrieval mechanisms, such as dense vector search and keyword-based search, to ensure robust and diverse retrieval. -- **Components**: Multi-retriever setup, generator. -- **Advantages**: Balances precision and recall by integrating complementary retrieval methods. -- **Use Cases**: Multilingual search, domain-specific retrieval. +The architecture of a RAG system defines its capabilities and enhancements over the naive RAG approach. Below are common RAG architectures: +### 3.1 Naive RAG +A simple architecture where the query is sent to a retriever, and the retrieved chunks are passed directly to the generator for response generation. +- **Features**: Most rudimentary pipeline with no intermediate steps. +- **Effect**: Easy to implement with low complexity, suitable for general-purpose question answering and quick prototyping due to the straightforward design. -### 2.6 Agentic RAG (Router) -Uses an agent-based approach to route queries to specialized retrievers or tools based on query type. -- **Components**: Router agent, multiple retrievers, generator. -- **Advantages**: Scalable and adaptable to different query types. -- **Use Cases**: Customer support with diverse query domains. +### 3.2 Retrieve-and-Rerank RAG +This architecture incorporates a reranker to prioritize retrieved results based on relevance. +- **Features**: Addition of a reranking model that scores and reorders retrieved documents before passing them to the generator. +- **Effect**: Improves relevance and precision by filtering out less relevant information, making it more effective for tasks requiring high retrieval accuracy, such as customer support and legal document search. +### 3.3 Multimodal RAG +Combines text and visual inputs for tasks that require reasoning across multiple data modalities. +- **Features**: Includes a multimodal retriever, an image encoder, and a text generator capable of handling both text and visual data. +- **Effect**: Enables tasks such as visual question answering and image captioning by integrating diverse data types. -### 2.7 Agentic RAG (Multi-Agent RAG) -Extends the router architecture by involving multiple agents that interact dynamically to solve tasks collaboratively. -- **Components**: Multiple agents, retrievers, external tools (e.g., Slack, Gmail), generator. -- **Advantages**: Flexible and supports integration with external systems. -- **Use Cases**: Workflow automation, enterprise search systems. +### 3.4 Graph RAG +Uses graph databases or graph neural networks (GNNs) to model relationships between entities and retrieve structured knowledge. +- **Features**: Incorporates a graph retriever and node representation model to leverage entity relationships within a graph structure. +- **Effect**: Provides enhanced reasoning capabilities over structured data such as knowledge graphs, making it highly effective for tasks like scientific research, complex entity reasoning, and technical documentation. +### 3.5 Hybrid RAG +Integrates multiple retrieval mechanisms to combine the strengths of different search methods. +- **Features**: Utilizes both dense vector search and keyword-based retrieval methods in a multi-retriever setup. +- **Effect**: Balances precision and recall by integrating complementary retrieval approaches, which can be useful for handling diverse or multilingual datasets in domain-specific retrieval tasks. -## 3. Components of RAG +### 3.6 Agentic RAG (Router) +Routes queries to specialized retrievers or tools based on their type using an agent-based approach. +- **Features**: Includes a router agent that dynamically assigns queries to the most appropriate retriever or processing tool. +- **Effect**: Scales effectively across diverse query types. This allows for adaptability in systems requiring varied query handling, such as customer support across multiple domains. -### 3.1 Retriever -Handles fetching of relevant documents or information from a knowledge base. Popular frameworks include: -- **Vector Databases**: Tools like **Qdrant**, **Weaviate**, and **Pinecone**. -- **Hybrid Retrieval**: Combines keyword and vector search. +### 3.7 Agentic RAG (Multi-Agent RAG) +Expands the router architecture by involving multiple agents that collaborate to solve tasks dynamically. +- **Features**: Comprises multiple agents, each capable of interacting with retrievers, external tools (e.g., Slack, Gmail), and generators. +- **Effect**: Enables complex workflows and dynamic task-solving by leveraging agent collaboration. This supports integration with external systems, making it suitable for enterprise-level workflow automation and advanced search systems. -### 3.2 Chunker -Splits documents into smaller chunks for effective retrieval. Tools like **LangChain Text Splitters** are commonly used. - - -### 3.3 Generator -Generates responses by processing the retrieved context. -- **Options**: GPT models, multimodal models (e.g., GPT-4 Vision). - -In this course we will use the Smol-family models as generator. - -### 3.4 Orchestrator -Manages interaction between components and workflows. -- **Tools**: **LangChain**, **HayStack**. - - -## 4. Evaluation - -Evaluation involves measuring retrieval quality and response generation accuracy. -- **Frameworks**: **RAGAs** for integrated evaluation, **BLEU**, **ROUGE**, and **MRR** for detailed metrics. - - -## 5. Tools and Frameworks - -| Component | Tools/Frameworks | -|------------------|---------------------------------------| -| Retriever | **DPR**, **BM25**, **Qdrant**, **Pinecone** | -| Chunker | **LangChain Text Splitters** | -| Generator | **OpenAI GPT-4**, **Hugging Face Transformers** | -| Orchestrator | **LangChain**, **Hugging Face Agents** | -| Evaluation | **RAGAs**, **BLEU**, **ROUGE**, **MRR** | - - ## Exercise Notebooks | Title | Description | Exercise | Link | Colab | @@ -134,3 +122,4 @@ Evaluation involves measuring retrieval quality and response generation accuracy - [LangChain Documentation](https://docs.langchain.com) - [RAGAs Toolkit](https://github.com/ragas-toolkit) +- [Youtube: How RAG Turns AI Chatbots Into Something Practical](https://youtu.be/5Y3a61o0jFQ?si=epzQv1UIJe53OoLB) \ No newline at end of file From a1bad0bf492ab71712e514fb8d34a5e071b48e63 Mon Sep 17 00:00:00 2001 From: duydl Date: Thu, 9 Jan 2025 13:53:33 +0700 Subject: [PATCH 05/17] Add guide for basic rag --- 8_rag/naive_rag.md | 74 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 8_rag/naive_rag.md diff --git a/8_rag/naive_rag.md b/8_rag/naive_rag.md new file mode 100644 index 00000000..d57d0ea5 --- /dev/null +++ b/8_rag/naive_rag.md @@ -0,0 +1,74 @@ +# Basic RAG + +## **Overview** +The Retrieval-Augmented Generation (RAG) pipeline is a powerful framework for combining **retrieval** and **generation** to provide factual, context-aware responses. The pipeline uses a knowledge base of documents, which is indexed and retrieved efficiently to generate answers grounded in the stored information. + +RAG pipelines are particularly useful for tasks requiring factual consistency, such as question answering, research assistance, and domain-specific knowledge systems. In this setup, we leverage **Haystack**, a modular framework for building RAG pipelines with relatively low complexity compared to other popular frameworks like **LangChain** and **Llama-Index**. + + +## **Why Haystack?** +**Haystack** is chosen over more popular frameworks like LangChain and Llama-Index because of the following advantages: + +1. **Less Abstraction**: Haystack provides a straightforward implementation with clear, modular components for indexing and retrieval. +2. **Lightweight**: It avoids unnecessary overhead and keeps the setup simpler for use cases that don't require extensive customizations or orchestration. +3. **Transparency**: Each step in the pipeline is explicit, making it easier to debug, modify, or extend. +4. **Feature-rich**: Haystack includes out-of-the-box support for document cleaning, splitting, embedding, and indexing, alongside retrieval and generation. +5. **Broad Compatibility**: Works seamlessly with pre-trained models from **Hugging Face**, **Sentence Transformers**, and other embedding libraries. + + +## **Indexing Pipeline** +The indexing pipeline is the foundation of the RAG framework. It preprocesses documents, converts them into embeddings, and stores them in a searchable format for efficient retrieval. + +**Steps in the Indexing Pipeline** +1. **Document Collection**: Collect raw documents (e.g., Wikipedia pages) and parse them into structured data. +2. **Document Cleaning**: Remove irrelevant or noisy text using the **DocumentCleaner**. +3. **Document Splitting**: Divide documents into smaller chunks (paragraphs or sentences) using the **DocumentSplitter**. +4. **Embedding Generation**: Generate embeddings (vector representations) of each chunk using **SentenceTransformersDocumentEmbedder**. +5. **Document Indexing**: Store the processed documents and their embeddings in an **InMemoryDocumentStore**. + +```plaintext +[Raw Documents] + | + v +[Document Cleaner] -- Removes noise + | + v +[Document Splitter] -- Splits into chunks + | + v +[Document Embedder] -- Converts chunks into vectors + | + v +[Document Store] -- Stores vectors for retrieval +``` + +At the end of this pipeline, all documents are preprocessed, split into manageable pieces, and embedded into a format that supports fast semantic search. + +## **Retrieve + Generate Pipeline** +The generation pipeline combines the retrieval step with a text generation model to answer user queries effectively. + +**Steps in the Generation Pipeline** +1. **Query Embedding**: The userโ€™s query is converted into a vector using a **SentenceTransformersTextEmbedder**. +2. **Document Retrieval**: The query vector is compared to document vectors in the **DocumentStore**, and the most relevant documents are retrieved based on similarity. +3. **Prompt Construction**: The retrieved documents and user query are formatted into a prompt using the **PromptBuilder**. +4. **Response Generation**: The prompt is passed to a generative model (e.g., **SmolLM2**) to produce the final answer. + +```plaintext +[User Query] + | + v +[Query Embedder] -- Converts query into a vector + | + v +[Document Retriever] -- Finds top-k relevant documents + | + v +[Prompt Builder] -- Combines query + documents into a prompt + | + v +[Text Generator] -- Produces answer based on the prompt +``` + +This pipeline ensures that the generated response is informed by the retrieved context, making it more factual and relevant to the query. + +## **Evaluation** \ No newline at end of file From c96088b1b79cba127d22c8934b791a257efa9bb7 Mon Sep 17 00:00:00 2001 From: duydl Date: Thu, 9 Jan 2025 17:11:39 +0700 Subject: [PATCH 06/17] Add naive_rag md --- 8_rag/naive_rag.md | 119 ++++++++++++++++++++++++++++++++------------- 1 file changed, 86 insertions(+), 33 deletions(-) diff --git a/8_rag/naive_rag.md b/8_rag/naive_rag.md index d57d0ea5..65678c15 100644 --- a/8_rag/naive_rag.md +++ b/8_rag/naive_rag.md @@ -1,30 +1,52 @@ -# Basic RAG +# **Basic RAG (Retrieval-Augmented Generation)** ## **Overview** -The Retrieval-Augmented Generation (RAG) pipeline is a powerful framework for combining **retrieval** and **generation** to provide factual, context-aware responses. The pipeline uses a knowledge base of documents, which is indexed and retrieved efficiently to generate answers grounded in the stored information. -RAG pipelines are particularly useful for tasks requiring factual consistency, such as question answering, research assistance, and domain-specific knowledge systems. In this setup, we leverage **Haystack**, a modular framework for building RAG pipelines with relatively low complexity compared to other popular frameworks like **LangChain** and **Llama-Index**. +Retrieval-Augmented Generation (RAG) is a powerful framework for combining **retrieval** (fetching relevant context) with **generation** (producing coherent and contextually accurate responses) to create intelligent, factual, and context-aware systems. + +Most RAG pipeline leverages **retrieval** to access external knowledge and **generation** to produce fluent, natural responses, making it an essential architecture for modern AI systems. + +This guide focuses on implementing a basic RAG pipeline using **Haystack**, a lightweight yet feature-rich framework that simplifies the process of building and customizing such systems. ## **Why Haystack?** -**Haystack** is chosen over more popular frameworks like LangChain and Llama-Index because of the following advantages: -1. **Less Abstraction**: Haystack provides a straightforward implementation with clear, modular components for indexing and retrieval. -2. **Lightweight**: It avoids unnecessary overhead and keeps the setup simpler for use cases that don't require extensive customizations or orchestration. -3. **Transparency**: Each step in the pipeline is explicit, making it easier to debug, modify, or extend. -4. **Feature-rich**: Haystack includes out-of-the-box support for document cleaning, splitting, embedding, and indexing, alongside retrieval and generation. -5. **Broad Compatibility**: Works seamlessly with pre-trained models from **Hugging Face**, **Sentence Transformers**, and other embedding libraries. +Compared to frameworks like LangChain and Llama-Index, Haystack stands out with several advantages: + +1. **Minimal Abstraction**: Components like indexing, embedding, and retrieval are modular and transparent, enabling fine-grained control. +2. **Lightweight and Simple**: Focused on core RAG functionalities without excessive abstraction layers, making it more suitable for straightforward use cases. +3. **Debuggable and Extendable**: Each stage in the pipeline is explicit, making debugging easier and enabling customization. +4. **Integrated Features**: Provides robust tools for text preprocessing, embedding generation, and document indexing. +5. **Compatibility**: Works well with pre-trained models (e.g., Hugging Face, Sentence Transformers) and various storage backends. + +## **Core Concepts in RAG** + +### **Indexing Pipeline** + +The **Indexing Pipeline** prepares your knowledge base by preprocessing raw documents, splitting them into manageable chunks, and embedding them into vectors. These vectors are stored in an efficient database to support fast retrieval. +#### **Steps in the Indexing Pipeline** -## **Indexing Pipeline** -The indexing pipeline is the foundation of the RAG framework. It preprocesses documents, converts them into embeddings, and stores them in a searchable format for efficient retrieval. +1. **Document Collection**: + - Source raw documents from relevant repositories, such as Wikipedia, internal databases, or research articles. + - Examples: `.txt`, `.pdf`, `.docx`, JSON, or other formats. -**Steps in the Indexing Pipeline** -1. **Document Collection**: Collect raw documents (e.g., Wikipedia pages) and parse them into structured data. -2. **Document Cleaning**: Remove irrelevant or noisy text using the **DocumentCleaner**. -3. **Document Splitting**: Divide documents into smaller chunks (paragraphs or sentences) using the **DocumentSplitter**. -4. **Embedding Generation**: Generate embeddings (vector representations) of each chunk using **SentenceTransformersDocumentEmbedder**. -5. **Document Indexing**: Store the processed documents and their embeddings in an **InMemoryDocumentStore**. +2. **Document Cleaning**: + - Use tools like Haystack's `DocumentCleaner` to remove noise, boilerplate text, and irrelevant sections. + - Focus on retaining meaningful content. + +3. **Document Splitting**: + - Split large documents into smaller, coherent chunks (e.g., paragraphs or sentences). + - Use Haystack's `DocumentSplitter` to define chunk size and overlap for better retrieval performance. + +4. **Embedding Generation**: + - Convert text chunks into dense vector representations using pre-trained models (e.g., `SentenceTransformersDocumentEmbedder`). + - Embeddings capture semantic meaning, enabling similarity-based search. + +5. **Document Indexing**: + - Store embeddings and metadata in a vector database or document store, such as `InMemoryDocumentStore` or `FAISS`. + +**Indexing Workflow** ```plaintext [Raw Documents] @@ -33,42 +55,73 @@ The indexing pipeline is the foundation of the RAG framework. It preprocesses do [Document Cleaner] -- Removes noise | v -[Document Splitter] -- Splits into chunks +[Document Splitter] -- Splits text into chunks | v -[Document Embedder] -- Converts chunks into vectors +[Document Embedder] -- Converts chunks into vector embeddings | v -[Document Store] -- Stores vectors for retrieval +[Document Store] -- Stores embeddings for fast retrieval ``` -At the end of this pipeline, all documents are preprocessed, split into manageable pieces, and embedded into a format that supports fast semantic search. -## **Retrieve + Generate Pipeline** -The generation pipeline combines the retrieval step with a text generation model to answer user queries effectively. +### **Retrieve + Generate Pipeline** + +The **Retrieve + Generate Pipeline** processes user queries by retrieving relevant knowledge and generating context-aware responses using retrieved content. -**Steps in the Generation Pipeline** -1. **Query Embedding**: The userโ€™s query is converted into a vector using a **SentenceTransformersTextEmbedder**. -2. **Document Retrieval**: The query vector is compared to document vectors in the **DocumentStore**, and the most relevant documents are retrieved based on similarity. -3. **Prompt Construction**: The retrieved documents and user query are formatted into a prompt using the **PromptBuilder**. -4. **Response Generation**: The prompt is passed to a generative model (e.g., **SmolLM2**) to produce the final answer. +#### **Steps in the Retrieve + Generate Pipeline** + +1. **Query Embedding**: + - Convert the user query into a dense vector representation using a model like `SentenceTransformersTextEmbedder`. + +2. **Document Retrieval**: + - Perform similarity search in the document store to retrieve the top-k most relevant chunks based on query embedding. + +3. **Prompt Construction**: + - Combine the user query and retrieved documents into a structured prompt for the generative model. + - Ensure clarity and relevance by organizing context logically. + +4. **Response Generation**: + - Use a text generation model (e.g., GPT-3, SmolLM2) to generate a coherent and factual response based on the constructed prompt. + +**Retrieve + Generate Workflow** ```plaintext [User Query] | v -[Query Embedder] -- Converts query into a vector +[Query Embedder] -- Converts query into vector | v [Document Retriever] -- Finds top-k relevant documents | v -[Prompt Builder] -- Combines query + documents into a prompt +[Prompt Builder] -- Combines query + retrieved documents into a prompt | v -[Text Generator] -- Produces answer based on the prompt +[Text Generator] -- Produces contextually grounded response ``` -This pipeline ensures that the generated response is informed by the retrieved context, making it more factual and relevant to the query. -## **Evaluation** \ No newline at end of file +## **Evaluation** + +To ensure the RAG system performs well, evaluate both retrieval and generation components using appropriate metrics: + +- **BLEU** (Bilingual Evaluation Understudy) focuses on **precision** and evaluates how much of the generated text matches reference text n-grams. +- **ROUGE** (Recall-Oriented Understudy for Gisting Evaluation) focuses on **recall** and evaluates how much of the reference text's n-grams are captured by the generated text, making it ideal for summarization and text generation tasks. +- **MRR** (Mean Reciprocal Rank) evaluates the effectiveness of an information retrieval system and tasks like question answering by considering the rank of the first relevant result. + +Feedback may be used to iteratively improve embeddings, retrieval thresholds, or prompt formatting. + +## **Example: Basic RAG System** + +1. **Setup Knowledge Base**: + - Collect documents and preprocess them using the **Indexing Pipeline**. + +2. **Integrate Query Handling**: + - Implement the **Retrieve + Generate Pipeline** to handle user inputs. + +3. **Evaluate and Adjust**: + - Evaluate the pipeline and monitor retrieval and generation quality. Incorporate feedback for adjustment. + +โฉ Try the [Basic RAG Tutorial](./notebooks/naive_rag_haystack_example.ipynb) to implement a Naive RAG pipeline. \ No newline at end of file From b308ad0b9e85f8d70a95a259da8cc5f8cea1697e Mon Sep 17 00:00:00 2001 From: duydl Date: Sun, 12 Jan 2025 22:57:54 +0700 Subject: [PATCH 07/17] Improve README.md --- 8_rag/README.md | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/8_rag/README.md b/8_rag/README.md index fb67d554..75cbca14 100644 --- a/8_rag/README.md +++ b/8_rag/README.md @@ -67,11 +67,29 @@ Manages interactions between retrieval and generation for complex workflows such Evaluation measures retrieval quality and response generation accuracy. - **Metrics**: BLEU, ROUGE, MRR. -- **Frameworks**: Frameworks like RAGAs for evaluation.. +- **Frameworks**: Frameworks like RAGAs for evaluation. - ## 3. Types of RAG Architectures + +## 3. The Architecture of RAG Systems -The architecture of a RAG system defines its capabilities and enhancements over the naive RAG approach. Below are common RAG architectures: +The architecture of a Retrieval-Augmented Generation (RAG) system determines its capabilities, scalability, and the enhancements it offers beyond the basic Naive RAG approach. Over the years, research and innovation in the RAG space have introduced diverse architectures that optimize various stages of the RAG pipeline. + +The distinctions between RAG architectures often emerge from how they handle the **Retrieve** and **Generate** stages. These stages are critical to answering the following questions: +- **What to retrieve?** Selecting the most relevant chunks or embeddings from the knowledge base. +- **When to retrieve?** Deciding at what point in the workflow retrieval is required, particularly in iterative or dynamic processes. +- **How to use the retrieved information?** Determining how retrieved content is incorporated into downstream tasks, such as response generation or query refinement. + +Broadly, they can be categorized into: +- **Naive RAG**: Most basic pipeline, directly passing retrieved chunks to the generator. +- **Advanced RAG**: Pipelines which incorperated different techniques to improve the quality of responses with Pre-retrieval and Post-retrieval processes. +- **Modular RAG**: Pipelines that further enhance functionalities by integrating modules that interatively refine result or dynamically adapt based on task-specific requirements. + +In addition, some architectural innovations target the **Index Stage**, introducing new ways to organize and structure knowledge bases: +- **Graph-Based Knowledge Bases**: Represent data as nodes and edges, enabling richer context and relationship reasoning. +- **Hierarchical Chunking**: Organizes chunks in a multi-level structure for faster and more contextually aware retrieval. +- **Adaptive Embedding Updates**: Dynamically adjusts embeddings in response to new data or evolving user needs. + +Following are common RAG architectures: ### 3.1 Naive RAG A simple architecture where the query is sent to a retriever, and the retrieved chunks are passed directly to the generator for response generation. @@ -118,8 +136,9 @@ Expands the router architecture by involving multiple agents that collaborate to | Agentic RAG | Learn how to set up and use multi-agent RAG for task automation | ๐Ÿข Create a database query react-agent
๐Ÿ• Build an agent for solving math/coding problems
๐Ÿฆ Integrate multiple tools for workflow automation | [Notebook](./notebooks/agent_rag.ipynb) | Open In Colab | -## References +## Resources -- [LangChain Documentation](https://docs.langchain.com) +- [Haystack Documentation](https://docs.haystack.deepset.ai/docs/intro) - [RAGAs Toolkit](https://github.com/ragas-toolkit) -- [Youtube: How RAG Turns AI Chatbots Into Something Practical](https://youtu.be/5Y3a61o0jFQ?si=epzQv1UIJe53OoLB) \ No newline at end of file +- [Youtube: How RAG Turns AI Chatbots Into Something Practical](https://youtu.be/5Y3a61o0jFQ?si=epzQv1UIJe53OoLB) +- https://www.promptingguide.ai/research/rag From 2c6e434e21c88e3653a027776b59f3dfabc1996b Mon Sep 17 00:00:00 2001 From: duydl Date: Sun, 12 Jan 2025 23:35:59 +0700 Subject: [PATCH 08/17] Add notebook for naive rag --- .../naive_rag_haystack_example.ipynb | 14173 ++++++++++++++++ 1 file changed, 14173 insertions(+) create mode 100644 8_rag/notebooks/naive_rag_haystack_example.ipynb diff --git a/8_rag/notebooks/naive_rag_haystack_example.ipynb b/8_rag/notebooks/naive_rag_haystack_example.ipynb new file mode 100644 index 00000000..982ece80 --- /dev/null +++ b/8_rag/notebooks/naive_rag_haystack_example.ipynb @@ -0,0 +1,14173 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "5hxScxn4C2C7" + }, + "source": [ + "# Implement a basic RAG pipeline with Haystack 2.0\n", + "\n", + "This notebook demonstrates how to implement a basic Retrieval Augmented Generation (RAG) pipeline using the `Haystack` orchestration framework and HuggingFace e.g `SmolLM` LLM Models. You can select your difficulty by trying out different models, knowledge base, tasks, or reimplementing in a different frameworks or even without one.\n", + "\n", + "
\n", + "

Exercise:

\n", + "

Implement a RAG pipeline and tailor it to your needs.

\n", + "

Difficulty Levels

\n", + "

๐Ÿข Follow step-by-step instructions. Try different embedding and generative model variants.

\n", + "

๐Ÿ• Try different documents and evaluation questions.

\n", + "

๐Ÿฆ Reimplement part of or the whole pipeline with different modules or frameworks.

\n", + "
\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "4spPB1okEaLy" + }, + "source": [ + "### Dependencies \n", + "- **`haystack-ai`**: Core framework for building RAG pipelines. \n", + "- **`wikipedia`**: Downloads data from Wikipedia (optional; any document source can be used, such as PDFs, web pages, or local text files). \n", + "- **`sentence_transformers`**: Generates embeddings for document chunks. \n", + "- **`transformers`**: Utilizes open-source LLMs for generation. \n", + "- **`accelerate`** and **`bitsandbytes`**: Enable efficient, low-memory model inference using quantized versions. \n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "R_Abekd7m0Ps" + }, + "outputs": [], + "source": [ + "! pip install wikipedia haystack-ai transformers accelerate bitsandbytes sentence_transformers" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "oZxQ0sY2I8fL" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages/torch/cuda/__init__.py:129: UserWarning: CUDA initialization: CUDA unknown error - this may be due to an incorrectly set up environment, e.g. changing env variable CUDA_VISIBLE_DEVICES after program start. Setting the available devices to be zero. (Triggered internally at ../c10/cuda/CUDAFunctions.cpp:108.)\n", + " return torch._C._cuda_getDeviceCount() > 0\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "20d503f7373a4ceab7909f0b55b22ea0", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "VBox(children=(HTML(value='
Date: Mon, 13 Jan 2025 01:10:32 +0700 Subject: [PATCH 09/17] Improve naive rag nb --- .../naive_rag_haystack_example.ipynb | 214 ++++++++++++++++-- 1 file changed, 200 insertions(+), 14 deletions(-) diff --git a/8_rag/notebooks/naive_rag_haystack_example.ipynb b/8_rag/notebooks/naive_rag_haystack_example.ipynb index 982ece80..2b233f49 100644 --- a/8_rag/notebooks/naive_rag_haystack_example.ipynb +++ b/8_rag/notebooks/naive_rag_haystack_example.ipynb @@ -47,23 +47,15 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": { "id": "oZxQ0sY2I8fL" }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages/torch/cuda/__init__.py:129: UserWarning: CUDA initialization: CUDA unknown error - this may be due to an incorrectly set up environment, e.g. changing env variable CUDA_VISIBLE_DEVICES after program start. Setting the available devices to be zero. (Triggered internally at ../c10/cuda/CUDAFunctions.cpp:108.)\n", - " return torch._C._cuda_getDeviceCount() > 0\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "20d503f7373a4ceab7909f0b55b22ea0", + "model_id": "130315c914ae4aec8015efc0796258c9", "version_major": 2, "version_minor": 0 }, @@ -76,9 +68,9 @@ } ], "source": [ - "from IPython.display import Image\n", "import torch\n", "import random\n", + "import wikipedia\n", "\n", "from haystack import Pipeline\n", "from haystack.document_stores.in_memory import InMemoryDocumentStore\n", @@ -87,6 +79,7 @@ "from haystack.components.writers import DocumentWriter\n", "from haystack.document_stores.types import DuplicatePolicy\n", "from haystack.utils import ComponentDevice\n", + "from haystack.dataclasses import Document\n", "\n", "from haystack.components.generators import HuggingFaceLocalGenerator\n", "\n", @@ -109,11 +102,204 @@ "id": "FN3CR1uGtTxH" }, "source": [ - "### Indexing Pipeline\n", + "### Indexing Pipeline (Index Stage)\n", + "\n", + "In the indexing pipeline. We'll download Wikipedia pages using the `wikipedia` library and convert them into `Haystack` Documents. " + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "raw_docs = []\n", + "\n", + "wiki_pages = [\n", + " \"FIFA World Cup\", \n", + " \"UEFA Champions League\", \n", + " \"Copa Amรฉrica\", \n", + " \"CONCACAF Gold Cup\", \n", + " \"Africa Cup of Nations\", \n", + " \"Copa Libertadores\", \n", + " \"European Championship\", \n", + " \"Major League Soccer\", \n", + " \"Premier League\", \n", + " \"La Liga\", \n", + " \"Bundesliga\", \n", + " \"Serie A\", \n", + " \"Ligue 1\", \n", + " \"Ballon d'Or\"\n", + "]\n", + "\n", + "for title in wiki_pages:\n", + " try:\n", + " page = wikipedia.page(title=title, auto_suggest=False)\n", + " doc = Document(content=page.content, meta={\"title\": page.title, \"url\": page.url})\n", + " raw_docs.append(doc)\n", + " except wikipedia.exceptions.DisambiguationError as e:\n", + " print(f\"Disambiguation error for {title}: {e.options}\")\n", + " except wikipedia.exceptions.HTTPTimeoutError:\n", + " print(f\"Timeout error while fetching {title}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "questions = \"\"\"\n", + "What was the result of the latest FIFA World Cup?\n", + "Who won the last UEFA Champions League?\n", + "Which country won the most recent Copa Amรฉrica?\n", + "What is the top scorer in the CONCACAF Gold Cup this year?\n", + "Which teams participated in the latest Africa Cup of Nations?\n", + "Who won the last Copa Libertadores?\n", + "What were the standout performances in UEFA Euro 2020?\n", + "Who is the current champion of Major League Soccer (MLS)?\n", + "What is the top team in the Premier League this season?\n", + "Who won La Liga this year?\n", + "Which Bundesliga team has the most titles in the last decade?\n", + "Which Serie A team won the last league championship?\n", + "Who is the top scorer of Ligue 1 this season?\n", + "Who won the UEFA Euro Golden Boot in the last competition?\n", + "Who won the most recent Ballon d'Or?\n", + "\"\"\".split('\\n')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We use `InMemoryDocumentStore`, a simple in-memory database for quick prototyping. Replace with a more scalable solution like `LanceDB` or `Qdrant` for production use and larger datasets." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "document_store = InMemoryDocumentStore(embedding_similarity_function=\"cosine\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Our indexing pipeline transforms original documents and saves them in the Document Store. It includes the following components:\n", + "\n", + "- **`DocumentCleaner`**: Cleans the documents by removing unwanted characters or noise.\n", + "- **`DocumentSplitter`**: Splits documents into smaller chunks for better semantic search and RAG compatibility.\n", + "- **`SentenceTransformersDocumentEmbedder`**: \n", + " - Converts each document into a vector representation to capture its meaning.\n", + " - Metadata `title` is also embedded, with `metadata_fields_to_embed` parameter.\n", + "- **`DocumentWriter`**: Saves the processed documents in the Document Store for easy retrieval." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "21d14146e15b4325819517407a636b9c", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Batches: 0%| | 0/41 [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "indexing = Pipeline()\n", + "indexing.add_component(\"cleaner\", DocumentCleaner())\n", + "indexing.add_component(\"splitter\", DocumentSplitter(split_by='sentence', split_length=2))\n", + "indexing.add_component(\"embedder\", SentenceTransformersDocumentEmbedder(model=model_emb,\n", + " device=ComponentDevice.from_str(device),\n", + " meta_fields_to_embed=[\"title\"]))\n", + "indexing.add_component(\"writer\", DocumentWriter(document_store=document_store, policy=DuplicatePolicy.OVERWRITE))\n", "\n", - "We are going to download the Wikipedia pages related to , using the python library `wikipedia`.\n", + "indexing.connect(\"cleaner\", \"splitter\")\n", + "indexing.connect(\"splitter\", \"embedder\")\n", + "indexing.connect(\"embedder\", \"writer\")\n", "\n", - "These pages are converted into Haystack Documents" + "indexing.run({\"cleaner\":{\"documents\": raw_docs}})\n", + "indexing.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Inspecting the Document Store:" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of documents in store: 1306\n", + "Metadata of document: {'title': 'FIFA World Cup', 'url': 'https://en.wikipedia.org/wiki/FIFA_World_Cup', 'source_id': '019091237080c1d52ababf9a11051c2c90933e79c19917e7af322bc15750c48c', 'page_number': 1, 'split_id': 0, 'split_idx_start': 0}\n" + ] + } + ], + "source": [ + "num_documents = len(document_store.filter_documents())\n", + "print(f\"Number of documents in store: {num_documents}\")\n", + "\n", + "document_meta = document_store.filter_documents()[0].meta\n", + "print(\"Metadata of document:\", document_meta)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### The RAG Pipeline (Generate + Retrieve Stage)\n", + "\n", + "- In Haystack 2.0, we use the `HuggingFaceLocalGenerator` for managing Open Source LLMs.\n", + "\n", + "- We start with `SmolLM2-1.7B-Instruct`, and later test smaller variants.\n", + "\n", + "- The model is loaded with **4-bit quantization** using `huggingface_pipeline_kwargs` in the Generator." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "generator = HuggingFaceLocalGenerator(\"HuggingFaceTB/SmolLM2-135M-Instruct\",\n", + " huggingface_pipeline_kwargs={\"device_map\":\"auto\",\n", + " \"model_kwargs\":{\"load_in_4bit\":True,\n", + " \"bnb_4bit_use_double_quant\":True,\n", + " \"bnb_4bit_quant_type\":\"nf4\",\n", + " \"bnb_4bit_compute_dtype\":torch.bfloat16}},\n", + " generation_kwargs={\"max_new_tokens\": 350})" ] } ], From f25c85dee61d12e0d1f4361d34ecface764256f9 Mon Sep 17 00:00:00 2001 From: duydl Date: Mon, 13 Jan 2025 02:07:56 +0700 Subject: [PATCH 10/17] Complete basic RAG --- 8_rag/{naive_rag.md => 1_naive_rag.md} | 18 +- 8_rag/README.md | 8 +- .../naive_rag_haystack_example.ipynb | 348 +++++++++++++++--- 3 files changed, 309 insertions(+), 65 deletions(-) rename 8_rag/{naive_rag.md => 1_naive_rag.md} (83%) diff --git a/8_rag/naive_rag.md b/8_rag/1_naive_rag.md similarity index 83% rename from 8_rag/naive_rag.md rename to 8_rag/1_naive_rag.md index 65678c15..ff278e25 100644 --- a/8_rag/naive_rag.md +++ b/8_rag/1_naive_rag.md @@ -6,18 +6,7 @@ Retrieval-Augmented Generation (RAG) is a powerful framework for combining **ret Most RAG pipeline leverages **retrieval** to access external knowledge and **generation** to produce fluent, natural responses, making it an essential architecture for modern AI systems. -This guide focuses on implementing a basic RAG pipeline using **Haystack**, a lightweight yet feature-rich framework that simplifies the process of building and customizing such systems. - - -## **Why Haystack?** - -Compared to frameworks like LangChain and Llama-Index, Haystack stands out with several advantages: - -1. **Minimal Abstraction**: Components like indexing, embedding, and retrieval are modular and transparent, enabling fine-grained control. -2. **Lightweight and Simple**: Focused on core RAG functionalities without excessive abstraction layers, making it more suitable for straightforward use cases. -3. **Debuggable and Extendable**: Each stage in the pipeline is explicit, making debugging easier and enabling customization. -4. **Integrated Features**: Provides robust tools for text preprocessing, embedding generation, and document indexing. -5. **Compatibility**: Works well with pre-trained models (e.g., Hugging Face, Sentence Transformers) and various storage backends. +This guide focuses on implementing a basic RAG pipeline using **Haystack**, a relatively lightweight yet feature-rich llm orchestration framework that simplifies the process of building and customizing such systems. It would be straighforward to implement the pipeline with other framework like LangChain and Llama-Index which all possess identical core functionalities required for RAG. ## **Core Concepts in RAG** @@ -124,4 +113,7 @@ Feedback may be used to iteratively improve embeddings, retrieval thresholds, or 3. **Evaluate and Adjust**: - Evaluate the pipeline and monitor retrieval and generation quality. Incorporate feedback for adjustment. -โฉ Try the [Basic RAG Tutorial](./notebooks/naive_rag_haystack_example.ipynb) to implement a Naive RAG pipeline. \ No newline at end of file +โฉ Try the [Basic RAG Tutorial](./notebooks/naive_rag_haystack_example.ipynb) to implement a Naive RAG pipeline. + +## **Resources** + diff --git a/8_rag/README.md b/8_rag/README.md index 75cbca14..43c64843 100644 --- a/8_rag/README.md +++ b/8_rag/README.md @@ -72,9 +72,8 @@ Evaluation measures retrieval quality and response generation accuracy. ## 3. The Architecture of RAG Systems -The architecture of a Retrieval-Augmented Generation (RAG) system determines its capabilities, scalability, and the enhancements it offers beyond the basic Naive RAG approach. Over the years, research and innovation in the RAG space have introduced diverse architectures that optimize various stages of the RAG pipeline. +The architecture of a Retrieval-Augmented Generation (RAG) system determines its capabilities, scalability, and the enhancements it offers beyond the basic Naive RAG approach. Over the years, research and innovation in the RAG space have introduced diverse architectures that optimize various stages of the RAG pipeline, in particular to adressing the following questions. -The distinctions between RAG architectures often emerge from how they handle the **Retrieve** and **Generate** stages. These stages are critical to answering the following questions: - **What to retrieve?** Selecting the most relevant chunks or embeddings from the knowledge base. - **When to retrieve?** Deciding at what point in the workflow retrieval is required, particularly in iterative or dynamic processes. - **How to use the retrieved information?** Determining how retrieved content is incorporated into downstream tasks, such as response generation or query refinement. @@ -84,11 +83,6 @@ Broadly, they can be categorized into: - **Advanced RAG**: Pipelines which incorperated different techniques to improve the quality of responses with Pre-retrieval and Post-retrieval processes. - **Modular RAG**: Pipelines that further enhance functionalities by integrating modules that interatively refine result or dynamically adapt based on task-specific requirements. -In addition, some architectural innovations target the **Index Stage**, introducing new ways to organize and structure knowledge bases: -- **Graph-Based Knowledge Bases**: Represent data as nodes and edges, enabling richer context and relationship reasoning. -- **Hierarchical Chunking**: Organizes chunks in a multi-level structure for faster and more contextually aware retrieval. -- **Adaptive Embedding Updates**: Dynamically adjusts embeddings in response to new data or evolving user needs. - Following are common RAG architectures: ### 3.1 Naive RAG diff --git a/8_rag/notebooks/naive_rag_haystack_example.ipynb b/8_rag/notebooks/naive_rag_haystack_example.ipynb index 2b233f49..cf77447f 100644 --- a/8_rag/notebooks/naive_rag_haystack_example.ipynb +++ b/8_rag/notebooks/naive_rag_haystack_example.ipynb @@ -36,26 +36,114 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": { "id": "R_Abekd7m0Ps" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: wikipedia in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (1.4.0)\n", + "Requirement already satisfied: haystack-ai in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (2.8.0)\n", + "Requirement already satisfied: transformers in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (4.46.3)\n", + "Requirement already satisfied: accelerate in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (1.1.1)\n", + "Requirement already satisfied: bitsandbytes in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (0.45.0)\n", + "Requirement already satisfied: sentence_transformers in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (3.2.1)\n", + "Requirement already satisfied: beautifulsoup4 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from wikipedia) (4.12.3)\n", + "Requirement already satisfied: requests<3.0.0,>=2.0.0 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from wikipedia) (2.32.3)\n", + "Requirement already satisfied: haystack-experimental in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from haystack-ai) (0.4.0)\n", + "Requirement already satisfied: jinja2 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from haystack-ai) (3.1.4)\n", + "Requirement already satisfied: lazy-imports in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from haystack-ai) (0.4.0)\n", + "Requirement already satisfied: more-itertools in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from haystack-ai) (10.5.0)\n", + "Requirement already satisfied: networkx in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from haystack-ai) (3.4.2)\n", + "Requirement already satisfied: numpy in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from haystack-ai) (1.26.4)\n", + "Requirement already satisfied: openai>=1.1.0 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from haystack-ai) (1.58.1)\n", + "Requirement already satisfied: pandas in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from haystack-ai) (2.2.3)\n", + "Requirement already satisfied: posthog in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from haystack-ai) (3.7.0)\n", + "Requirement already satisfied: python-dateutil in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from haystack-ai) (2.9.0.post0)\n", + "Requirement already satisfied: pyyaml in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from haystack-ai) (6.0.2)\n", + "Requirement already satisfied: tenacity!=8.4.0 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from haystack-ai) (8.2.3)\n", + "Requirement already satisfied: tqdm in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from haystack-ai) (4.67.1)\n", + "Requirement already satisfied: typing-extensions>=4.7 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from haystack-ai) (4.12.2)\n", + "Requirement already satisfied: filelock in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from transformers) (3.16.1)\n", + "Requirement already satisfied: huggingface-hub<1.0,>=0.23.2 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from transformers) (0.26.3)\n", + "Requirement already satisfied: packaging>=20.0 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from transformers) (24.2)\n", + "Requirement already satisfied: regex!=2019.12.17 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from transformers) (2024.11.6)\n", + "Requirement already satisfied: tokenizers<0.21,>=0.20 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from transformers) (0.20.3)\n", + "Requirement already satisfied: safetensors>=0.4.1 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from transformers) (0.4.5)\n", + "Requirement already satisfied: psutil in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from accelerate) (6.1.0)\n", + "Requirement already satisfied: torch>=1.10.0 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from accelerate) (2.5.1)\n", + "Requirement already satisfied: scikit-learn in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from sentence_transformers) (1.5.2)\n", + "Requirement already satisfied: scipy in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from sentence_transformers) (1.14.1)\n", + "Requirement already satisfied: Pillow in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from sentence_transformers) (11.0.0)\n", + "Requirement already satisfied: fsspec>=2023.5.0 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from huggingface-hub<1.0,>=0.23.2->transformers) (2024.9.0)\n", + "Requirement already satisfied: anyio<5,>=3.5.0 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from openai>=1.1.0->haystack-ai) (4.6.2.post1)\n", + "Requirement already satisfied: distro<2,>=1.7.0 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from openai>=1.1.0->haystack-ai) (1.9.0)\n", + "Requirement already satisfied: httpx<1,>=0.23.0 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from openai>=1.1.0->haystack-ai) (0.27.2)\n", + "Requirement already satisfied: jiter<1,>=0.4.0 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from openai>=1.1.0->haystack-ai) (0.7.0)\n", + "Requirement already satisfied: pydantic<3,>=1.9.0 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from openai>=1.1.0->haystack-ai) (2.10.3)\n", + "Requirement already satisfied: sniffio in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from openai>=1.1.0->haystack-ai) (1.3.1)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from requests<3.0.0,>=2.0.0->wikipedia) (3.4.0)\n", + "Requirement already satisfied: idna<4,>=2.5 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from requests<3.0.0,>=2.0.0->wikipedia) (3.10)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from requests<3.0.0,>=2.0.0->wikipedia) (1.26.20)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from requests<3.0.0,>=2.0.0->wikipedia) (2024.8.30)\n", + "Requirement already satisfied: nvidia-cuda-nvrtc-cu12==12.4.127 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from torch>=1.10.0->accelerate) (12.4.127)\n", + "Requirement already satisfied: nvidia-cuda-runtime-cu12==12.4.127 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from torch>=1.10.0->accelerate) (12.4.127)\n", + "Requirement already satisfied: nvidia-cuda-cupti-cu12==12.4.127 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from torch>=1.10.0->accelerate) (12.4.127)\n", + "Requirement already satisfied: nvidia-cudnn-cu12==9.1.0.70 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from torch>=1.10.0->accelerate) (9.1.0.70)\n", + "Requirement already satisfied: nvidia-cublas-cu12==12.4.5.8 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from torch>=1.10.0->accelerate) (12.4.5.8)\n", + "Requirement already satisfied: nvidia-cufft-cu12==11.2.1.3 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from torch>=1.10.0->accelerate) (11.2.1.3)\n", + "Requirement already satisfied: nvidia-curand-cu12==10.3.5.147 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from torch>=1.10.0->accelerate) (10.3.5.147)\n", + "Requirement already satisfied: nvidia-cusolver-cu12==11.6.1.9 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from torch>=1.10.0->accelerate) (11.6.1.9)\n", + "Requirement already satisfied: nvidia-cusparse-cu12==12.3.1.170 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from torch>=1.10.0->accelerate) (12.3.1.170)\n", + "Requirement already satisfied: nvidia-nccl-cu12==2.21.5 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from torch>=1.10.0->accelerate) (2.21.5)\n", + "Requirement already satisfied: nvidia-nvtx-cu12==12.4.127 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from torch>=1.10.0->accelerate) (12.4.127)\n", + "Requirement already satisfied: nvidia-nvjitlink-cu12==12.4.127 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from torch>=1.10.0->accelerate) (12.4.127)\n", + "Requirement already satisfied: triton==3.1.0 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from torch>=1.10.0->accelerate) (3.1.0)\n", + "Requirement already satisfied: sympy==1.13.1 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from torch>=1.10.0->accelerate) (1.13.1)\n", + "Requirement already satisfied: mpmath<1.4,>=1.1.0 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from sympy==1.13.1->torch>=1.10.0->accelerate) (1.3.0)\n", + "Requirement already satisfied: soupsieve>1.2 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from beautifulsoup4->wikipedia) (2.6)\n", + "Requirement already satisfied: MarkupSafe>=2.0 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from jinja2->haystack-ai) (2.1.5)\n", + "Requirement already satisfied: pytz>=2020.1 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from pandas->haystack-ai) (2024.2)\n", + "Requirement already satisfied: tzdata>=2022.7 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from pandas->haystack-ai) (2024.2)\n", + "Requirement already satisfied: six>=1.5 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from python-dateutil->haystack-ai) (1.17.0)\n", + "Requirement already satisfied: monotonic>=1.5 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from posthog->haystack-ai) (1.6)\n", + "Requirement already satisfied: backoff>=1.10.0 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from posthog->haystack-ai) (2.2.1)\n", + "Requirement already satisfied: joblib>=1.2.0 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from scikit-learn->sentence_transformers) (1.4.2)\n", + "Requirement already satisfied: threadpoolctl>=3.1.0 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from scikit-learn->sentence_transformers) (3.5.0)\n", + "Requirement already satisfied: exceptiongroup>=1.0.2 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from anyio<5,>=3.5.0->openai>=1.1.0->haystack-ai) (1.2.2)\n", + "Requirement already satisfied: httpcore==1.* in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from httpx<1,>=0.23.0->openai>=1.1.0->haystack-ai) (1.0.6)\n", + "Requirement already satisfied: h11<0.15,>=0.13 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from httpcore==1.*->httpx<1,>=0.23.0->openai>=1.1.0->haystack-ai) (0.14.0)\n", + "Requirement already satisfied: annotated-types>=0.6.0 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from pydantic<3,>=1.9.0->openai>=1.1.0->haystack-ai) (0.7.0)\n", + "Requirement already satisfied: pydantic-core==2.27.1 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from pydantic<3,>=1.9.0->openai>=1.1.0->haystack-ai) (2.27.1)\n" + ] + } + ], "source": [ "! pip install wikipedia haystack-ai transformers accelerate bitsandbytes sentence_transformers" ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "metadata": { "id": "oZxQ0sY2I8fL" }, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages/torch/cuda/__init__.py:129: UserWarning: CUDA initialization: CUDA unknown error - this may be due to an incorrectly set up environment, e.g. changing env variable CUDA_VISIBLE_DEVICES after program start. Setting the available devices to be zero. (Triggered internally at ../c10/cuda/CUDAFunctions.cpp:108.)\n", + " return torch._C._cuda_getDeviceCount() > 0\n" + ] + }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "130315c914ae4aec8015efc0796258c9", + "model_id": "1c3a9fbb4c9746f3858f90667726b395", "version_major": 2, "version_minor": 0 }, @@ -82,6 +170,8 @@ "from haystack.dataclasses import Document\n", "\n", "from haystack.components.generators import HuggingFaceLocalGenerator\n", + "from haystack.components.retrievers.in_memory import InMemoryEmbeddingRetriever\n", + "from haystack.components.builders import PromptBuilder\n", "\n", "from huggingface_hub import login\n", "login()\n", @@ -109,7 +199,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -143,31 +233,6 @@ " print(f\"Timeout error while fetching {title}\")\n" ] }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "questions = \"\"\"\n", - "What was the result of the latest FIFA World Cup?\n", - "Who won the last UEFA Champions League?\n", - "Which country won the most recent Copa Amรฉrica?\n", - "What is the top scorer in the CONCACAF Gold Cup this year?\n", - "Which teams participated in the latest Africa Cup of Nations?\n", - "Who won the last Copa Libertadores?\n", - "What were the standout performances in UEFA Euro 2020?\n", - "Who is the current champion of Major League Soccer (MLS)?\n", - "What is the top team in the Premier League this season?\n", - "Who won La Liga this year?\n", - "Which Bundesliga team has the most titles in the last decade?\n", - "Which Serie A team won the last league championship?\n", - "Who is the top scorer of Ligue 1 this season?\n", - "Who won the UEFA Euro Golden Boot in the last competition?\n", - "Who won the most recent Ballon d'Or?\n", - "\"\"\".split('\\n')" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -177,7 +242,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -200,13 +265,13 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "21d14146e15b4325819517407a636b9c", + "model_id": "1d531db809df428fba588203517cb20d", "version_major": 2, "version_minor": 0 }, @@ -254,7 +319,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -280,26 +345,219 @@ "source": [ "### The RAG Pipeline (Generate + Retrieve Stage)\n", "\n", - "- In Haystack 2.0, we use the `HuggingFaceLocalGenerator` for managing Open Source LLMs.\n", + "In Haystack 2.0, we use the `HuggingFaceLocalGenerator` for managing Open Source LLMs. \n", + "\n", + "Our RAG Pipeline retrieves relevant documents based on the user's query and uses them to generate a grounded response with the LLM.\n", "\n", - "- We start with `SmolLM2-1.7B-Instruct`, and later test smaller variants.\n", + "It consists of the following components:\n", "\n", - "- The model is loaded with **4-bit quantization** using `huggingface_pipeline_kwargs` in the Generator." + "- **`SentenceTransformersTextEmbedder`**: Encodes the user's query into a vector that captures its meaning.\n", + "- **`InMemoryEmbeddingRetriever`**: Finds the top 5 documents most similar to the query vector.\n", + "- **`PromptBuilder`**: Generates a prompt by rendering a template string using the Jinja2 engine.\n", + "- **`HuggingFaceLocalGenerator`**: Integrate Open Source LLMs from HuggingFace.\n", + "\n", + "We start with `SmolLM2-1.7B-Instruct`, and later test smaller variants. The model is loaded with **4-bit quantization** using `huggingface_pipeline_kwargs` in the Generator." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": {}, "outputs": [], "source": [ - "generator = HuggingFaceLocalGenerator(\"HuggingFaceTB/SmolLM2-135M-Instruct\",\n", - " huggingface_pipeline_kwargs={\"device_map\":\"auto\",\n", - " \"model_kwargs\":{\"load_in_4bit\":True,\n", - " \"bnb_4bit_use_double_quant\":True,\n", - " \"bnb_4bit_quant_type\":\"nf4\",\n", - " \"bnb_4bit_compute_dtype\":torch.bfloat16}},\n", - " generation_kwargs={\"max_new_tokens\": 350})" + "generator = HuggingFaceLocalGenerator(\n", + " \"HuggingFaceTB/SmolLM2-135M-Instruct\",\n", + " huggingface_pipeline_kwargs={\n", + " \"device_map\": \"auto\",\n", + " # \"model_kwargs\": {\n", + " # \"load_in_4bit\": True,\n", + " # \"bnb_4bit_use_double_quant\": True,\n", + " # \"bnb_4bit_quant_type\": \"nf4\",\n", + " # \"bnb_4bit_compute_dtype\": torch.bfloat16\n", + " # }\n", + " },\n", + " generation_kwargs={\"max_new_tokens\": 350}\n", + ")\n", + "generator.warm_up()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "prompt_template = \"\"\"<|system|>Using the information contained in the context, give a comprehensive answer to the question.\n", + "If the answer is contained in the context, also report the source URL.\n", + "If the answer cannot be deduced from the context, do not give an answer.\n", + "<|user|>\n", + "Context:\n", + " {% for doc in documents %}\n", + " {{ doc.content }} URL:{{ doc.meta['url'] }}\n", + " {% endfor %};\n", + " Question: {{query}}\n", + " \n", + "<|assistant|>\n", + "\"\"\"\n", + "prompt_builder = PromptBuilder(template=prompt_template)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "rag = Pipeline()\n", + "rag.add_component(\"text_embedder\", SentenceTransformersTextEmbedder(model=model_emb,\n", + " device=ComponentDevice.from_str(device)))\n", + "rag.add_component(\"retriever\", InMemoryEmbeddingRetriever(document_store=document_store, top_k=5))\n", + "rag.add_component(\"prompt_builder\", prompt_builder)\n", + "rag.add_component(\"llm\", generator)\n", + "\n", + "rag.connect(\"text_embedder\", \"retriever\")\n", + "rag.connect(\"retriever.documents\", \"prompt_builder.documents\")\n", + "rag.connect(\"prompt_builder.prompt\", \"llm.prompt\")\n", + "\n", + "rag.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "f9c9e3f23390410bbdb0730209f54943", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Batches: 0%| | 0/1 [00:00Using the information contained in the context, give a comprehensive answer to the question.\n", + "If the answer is contained in the context, also report the source URL.\n", + "If the answer cannot be deduced from the context, do not give an answer.\n", + "<|user|>\n", + "Context:\n", + " \n", + " 8 in) deep.\n", + "Its main body is solid sterling silver and silver gilt, whilst its plinth is made of malachite, a semi-precious stone. URL:https://en.wikipedia.org/wiki/Premier_League\n", + " \n", + " The Premier League players decided to take the knee at selected \"significant moments\". They assured to \"remain resolutely committed to eradicate racial prejudice\". URL:https://en.wikipedia.org/wiki/Premier_League\n", + " \n", + " In the cases of Bayer Leverkusen and Wolfsburg, the clubs were founded by major corporations (respectively Bayer AG and Volkswagen) as sports clubs for their employees, while Hoffenheim has long received its primary support from SAP co-founder Dietmar Hopp, who played in the club's youth system.\n", + "After 2000 the German Football Association and the Bundesliga required every club to run a youth academy with the aim of developing local talent for the club and the national team. URL:https://en.wikipedia.org/wiki/Bundesliga\n", + " \n", + " These stars are a permanent part of their crest. However, Fรผrth has to leave the stars out of their jersey. URL:https://en.wikipedia.org/wiki/Bundesliga\n", + " \n", + " However, a\n" + ] + } + ], + "source": [ + "def get_answer(query):\n", + "\n", + " results = rag.run({\n", + " \"text_embedder\": {\"text\": query},\n", + " \"prompt_builder\": {\"query\": query}\n", + " }\n", + " )\n", + "\n", + " answer = results[\"llm\"][\"replies\"][0]\n", + " return answer\n", + "\n", + "print(get_answer(\"What is RAG?\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "questions = \"\"\"\n", + "What was the result of the latest FIFA World Cup?\n", + "Who won the last UEFA Champions League?\n", + "Which country won the most recent Copa Amรฉrica?\n", + "What is the top scorer in the CONCACAF Gold Cup this year?\n", + "Which teams participated in the latest Africa Cup of Nations?\n", + "Who won the last Copa Libertadores?\n", + "What were the standout performances in UEFA Euro 2020?\n", + "Who is the current champion of Major League Soccer (MLS)?\n", + "What is the top team in the Premier League this season?\n", + "Who won La Liga this year?\n", + "Which Bundesliga team has the most titles in the last decade?\n", + "Which Serie A team won the last league championship?\n", + "Who is the top scorer of Ligue 1 this season?\n", + "Who won the UEFA Euro Golden Boot in the last competition?\n", + "Who won the most recent Ballon d'Or?\n", + "\"\"\".split('\\n')" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "What was the result of the latest FIFA World Cup?\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "40ee30cea8bb4d92a6bc22ffe17faae3", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Batches: 0%| | 0/1 [00:00Using the information contained in the context, give a comprehensive answer to the question.\\nIf the answer is contained in the context, also report the source URL.\\nIf the answer cannot be deduced from the context, do not give an answer.\\n<|user|>\\nContext:\\n \\n The 2018 FIFA World Cup was the 21st FIFA World Cup, an international football tournament contested by the men's national teams of the member associations of FIFA once every four years. It took place in Russia from 14 June to 15 July 2018. The tournament was the first to be held in Eastern Europe and the first to be held entirely in the post-Soviet space.\\n\\nThere were 24 national teams participating in the tournament, with 13 teams from Europe, 12 from Asia, 8 from Africa, 4 from North and Central America and Caribbean, and 1 from Oceania. The tournament was won by France, who defeated Croatia 4โ€“2 in the final.\\n\\nThe tournament was the first to be held in Eastern Europe and the first to be held entirely in the post-Soviet space.\\n\\nThe 2018 FIFA World Cup was the first to be held in Eastern Europe and the first to be held entirely in the post-Soviet space.\\n\\nThe tournament was won by France, who defeated Croatia 4โ€“2 in the final.\\n\\nThere were 24 national teams participating in the tournament, with 1\"" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "q = random.choice(questions)\n", + "print(q)\n", + "get_answer(q)" ] } ], From 3851a327936851a18a30ea98fe75b5758741b7a8 Mon Sep 17 00:00:00 2001 From: duydl Date: Mon, 13 Jan 2025 02:08:13 +0700 Subject: [PATCH 11/17] Add guide on advanced rag --- 8_rag/2_advanced_rag.md | 54 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 8_rag/2_advanced_rag.md diff --git a/8_rag/2_advanced_rag.md b/8_rag/2_advanced_rag.md new file mode 100644 index 00000000..85cf90c1 --- /dev/null +++ b/8_rag/2_advanced_rag.md @@ -0,0 +1,54 @@ +# Advanced RAG Strategies + +Advanced Retrieval-Augmented Generation (RAG) techniques address the challenges faced by naive RAG. These strategies enhance the process of document retrieval and improve the quality of answers generated by large language models (LLMs). There are multiple possible optimizations in each step of the pipeline for an advanced RAG, but particularly retrieval stage is the focus. + +The strategies are thus divided into pre-retrieval, retrieval, and post-retrieval to address the following challenges. + +- **How to achieve accurate semantic representations of documents and queries?** +- **What methods align the semantic spaces of queries and documents (chunks)?** +- **How to align the retrieverโ€™s output with the preferences of the LLM?** + + +## Pre-Retrieval Strategies + +Efficient data indexing is essential for improving the retrieval performance in a RAG system. Key pre-retrieval strategies include: + +- **Improve Data Quality**: Remove irrelevant information, resolve ambiguity in entities and terms, confirm factual accuracy, maintain context, and update outdated information. +- **Optimize Index Structure**: Adjust chunk sizes to capture relevant context or incorporate graph structures to represent relationships between entities. +- **Add Metadata**: Enhance data filtering by adding relevant metadata such as dates, chapters, subsections, and purposes to document chunks. +- **Chunk Optimization**: Fine-tune chunk size to balance between too large or too small chunks to improve the embedding process. + +### Key Pre-Retrieval Techniques: + +- **Sliding Window**: Chunking method with overlap between text blocks. +- **Auto-Merging Retrieval**: Starts with small text blocks and later provides larger, related text blocks for the LLM. +- **Abstract Embedding**: Focuses on Top-K retrieval based on document abstracts for a comprehensive document context. +- **Metadata Filtering**: Leverages document metadata for enhanced filtering. +- **Graph Indexing**: Converts entities and relationships into nodes and connections to improve relevance. + +## Retrieval Strategies + +During the retrieval phase, the goal is to identify the most relevant document chunks to the query. This requires optimizing the embedding models used to represent both the query and chunks. + +- **Domain Knowledge Fine-Tuning**: Fine-tune embedding models using domain-specific datasets to capture the unique aspects of the RAG system. +- **Similarity Metrics**: Select an appropriate metric to measure the similarity between the query and chunk embeddings. Common metrics include: + - Cosine Similarity + - Euclidean Distance (L2) + - Dot Product + - L2 Squared Distance + - Manhattan Distance + +Several vector databases support multiple similarity metrics, allowing further customization/optimization. + +## Post-Retrieval Strategies + +After retrieving context data (chunks) from a vector database, the next step is to process this information and pass it to the LLM. However, some retrieved chunks may be irrelevant, noisy, or repeated, impacting the LLMโ€™s ability to generate accurate answers. + +### Strategies to Address Post-Retrieval Issues: + +- **Reranking**: Re-rank the retrieved chunks to prioritize the most relevant ones. This is especially useful as LLMs may struggle when excessive context is introduced. Reranking identifies the top-K most relevant chunks to use as context for the LLM. Libraries such as LlamaIndex, Langchain, and HayStack offer various reranking techniques. +- **Prompt Compression**: Compress retrieved information by filtering out irrelevant context and reducing the length of the prompt before feeding it to the LLM. Use small language models to calculate mutual information or perplexity to estimate the importance of each context element. Summarization techniques can also help compress long contexts. + +โฉ Try the [Improved RAG Tutorial](./notebooks/improved_rag_haystack_example.ipynb) to implement improved RAG pipelines. + +## **Resources** \ No newline at end of file From 2a9e1c35e2577a42e7dba397c29948c02743897d Mon Sep 17 00:00:00 2001 From: duydl Date: Mon, 13 Jan 2025 02:44:32 +0700 Subject: [PATCH 12/17] Add modular agent rag md --- 8_rag/3_modular_agenic_rag.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 8_rag/3_modular_agenic_rag.md diff --git a/8_rag/3_modular_agenic_rag.md b/8_rag/3_modular_agenic_rag.md new file mode 100644 index 00000000..5fad7429 --- /dev/null +++ b/8_rag/3_modular_agenic_rag.md @@ -0,0 +1,33 @@ +# Modular (Agentic) RAG + +## Why Modular RAG is Needed + +**Vanilla RAG** faces two main challenges: + +1. **Single retrieval step**: If the retrieved documents are irrelevant, the generated answer will be poor. +2. **Semantic mismatch**: The userโ€™s query might differ in form from the documentโ€™s content, making semantic similarity-based retrieval suboptimal. + +**Modular RAG** addresses these limitations by introducing an agent that can: + +- **Formulate the query** to optimize document retrieval. +- **Critique and re-retrieve** if necessary, improving retrieval accuracy and ensuring better answers. + +## Key Components of Modular RAG +### 1. **Module Components** + +In a modular RAG system, module, tool, and agent are often used interchangeably, though they represent different levels of abstraction within the system. These components represent different parts of the system that work together to enhance functionality. + +- **Search Module**: Expands retrieval by integrating data from various external sources like search engines, tabular data, and knowledge graphs, enhancing the relevance of context during retrieval. +- **Memory Module**: Stores past interactions (queries and answers) for ongoing context awareness, supporting dynamic tasks and conversations. +- **Custom Function Tool Module**: Executes advanced workflows, such as database queries or system commands, allowing the agent to interact with external systems. +- **Code Module (Agent)**: Specializes in coding tasks like analysis, generation, refactoring, and testing, enabling the agent to handle software development tasks. + +### 2. **Other Components** + +- **Fusion**: Performs parallel retrieval on original and expanded queries, intelligently reranking and merging results for optimal context. +- **Routing**: Directs the next action based on the query, such as summarization or searching specific databases, ensuring appropriate responses. +- **Orchestration Agent**: Coordinates the flow of information between modules, optimizing the efficiency and effectiveness of the overall RAG system. + +### Resources + +https://huggingface.co/docs/smolagents/examples/rag \ No newline at end of file From 37a4e274b48c99f7b47dd45826c8cdf9d1b23558 Mon Sep 17 00:00:00 2001 From: duydl Date: Mon, 13 Jan 2025 03:08:06 +0700 Subject: [PATCH 13/17] Improve modular agent rag md --- 8_rag/2_advanced_rag.md | 4 +- 8_rag/3_modular_agenic_rag.md | 48 ++++++++++++++++++- .../naive_rag_haystack_example.ipynb | 37 +++++++------- 3 files changed, 68 insertions(+), 21 deletions(-) diff --git a/8_rag/2_advanced_rag.md b/8_rag/2_advanced_rag.md index 85cf90c1..7841c893 100644 --- a/8_rag/2_advanced_rag.md +++ b/8_rag/2_advanced_rag.md @@ -46,8 +46,8 @@ After retrieving context data (chunks) from a vector database, the next step is ### Strategies to Address Post-Retrieval Issues: -- **Reranking**: Re-rank the retrieved chunks to prioritize the most relevant ones. This is especially useful as LLMs may struggle when excessive context is introduced. Reranking identifies the top-K most relevant chunks to use as context for the LLM. Libraries such as LlamaIndex, Langchain, and HayStack offer various reranking techniques. -- **Prompt Compression**: Compress retrieved information by filtering out irrelevant context and reducing the length of the prompt before feeding it to the LLM. Use small language models to calculate mutual information or perplexity to estimate the importance of each context element. Summarization techniques can also help compress long contexts. +- **Reranking**: Prioritize the most relevant chunks by reranking the retrieved results. This ensures LLMs are given the top-K most pertinent context, reducing performance issues caused by excessive context. Available reranking techniques are offered by libraries like LlamaIndex, LangChain, and HayStack. +- **Prompt Compression**: Filter out irrelevant context and shorten the prompt before inputting it to the LLM. Techniques such as mutual information or perplexity estimation, along with summarization, help in reducing context length and noise. โฉ Try the [Improved RAG Tutorial](./notebooks/improved_rag_haystack_example.ipynb) to implement improved RAG pipelines. diff --git a/8_rag/3_modular_agenic_rag.md b/8_rag/3_modular_agenic_rag.md index 5fad7429..14561c23 100644 --- a/8_rag/3_modular_agenic_rag.md +++ b/8_rag/3_modular_agenic_rag.md @@ -28,6 +28,52 @@ In a modular RAG system, module, tool, and agent are often used interchangeably, - **Routing**: Directs the next action based on the query, such as summarization or searching specific databases, ensuring appropriate responses. - **Orchestration Agent**: Coordinates the flow of information between modules, optimizing the efficiency and effectiveness of the overall RAG system. +## AI Agent + +AI agents are modular systems where the output of LLMs controls the workflow, enabling interaction with external tools, programs, or systems. They provide the necessary "agency" for LLMs to autonomously navigate tasks and processes. The agent's role is to translate LLM outputs into executable actions, bridging the gap between the language model and the real world. + +AI agents bring an additional layer of intelligent orchestration, improving how different modules work together dynamically, rather than relying on static, predefined processes. Indeeds, agency in AI agents exists on a spectrum, with the LLM's control over the workflow increasing at each level: + +| Agency Level | Description | Example Pattern | +| --- | --- | --- | +| โ˜†โ˜†โ˜† | LLM output has no impact on program flow | Simple Processor (`process_llm_output(llm_response)`) | +| โ˜…โ˜†โ˜† | LLM output triggers an if/else switch | Router (`if llm_decision(): path_a() else: path_b()`) | +| โ˜…โ˜…โ˜† | LLM output determines function execution | Tool Caller (`run_function(llm_chosen_tool, llm_chosen_args)`) | +| โ˜…โ˜…โ˜… | LLM output controls iteration | Multi-step Agent (`while llm_should_continue(memory): execute_next_step()`) | +| โ˜…โ˜…โ˜… | One agent starts another agentic workflow | Multi-Agent (`if llm_trigger(): execute_agent()`) | + + +![Agent](https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/blog/open-source-llms-as-agents/ReAct.png) + + +**When to Use Agents** + +Agents are useful when flexibility is needed in the workflow. If tasks are too complex for predefined steps or criteria, an agent can adapt and determine the necessary actions. For simple tasks with a predictable workflow, agents may be unnecessary. + + +### `smolagent` Library + +The **smolagent** library provides a simple yet powerful framework to build AI agents. While you can manually write code for simple agents for chaining or routing, more complex behaviors such as tool calling and multi-step agent workflows require predefined abstractions to work effectively. Here's why **smolagent** is helpful: + +1. **Tool Calling**: When an agent needs to call a tool (e.g., fetching weather data), the output format from the LLM should be predefined, such as: + `Thought: I should call tool 'get_weather'. Action: get_weather(Paris).` + This ensures the LLMโ€™s output can be parsed and executed by a system function. + +2. **Multi-Step Agents**: If the agentโ€™s output controls a loop (e.g., iterating over a series of tasks), a different prompt may be needed for each iteration based on memory. This requires integrating memory into the system. + +Given these needs, **smolagent** provides essential building blocks that enable seamless orchestration: + +- An LLM engine that powers the system +- A list of available tools the agent can use +- A parser that extracts tool calls from LLM output +- A memory system that stores relevant information +- A system prompt synced with the parser + +Additionally, since agents are powered by LLMs, error logging, and retry mechanisms are essential for ensuring robustness and reliability. **smolagent** handles these elements, making it easier to build complex workflows that are reliable, flexible, and adaptive. + + ### Resources -https://huggingface.co/docs/smolagents/examples/rag \ No newline at end of file +https://huggingface.co/docs/smolagents/index +https://huggingface.co/docs/smolagents/examples/rag +https://huggingface.co/docs/smolagents/conceptual_guides/intro_agents \ No newline at end of file diff --git a/8_rag/notebooks/naive_rag_haystack_example.ipynb b/8_rag/notebooks/naive_rag_haystack_example.ipynb index cf77447f..2da2920e 100644 --- a/8_rag/notebooks/naive_rag_haystack_example.ipynb +++ b/8_rag/notebooks/naive_rag_haystack_example.ipynb @@ -361,7 +361,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ @@ -376,19 +376,19 @@ " # \"bnb_4bit_compute_dtype\": torch.bfloat16\n", " # }\n", " },\n", - " generation_kwargs={\"max_new_tokens\": 350}\n", + " generation_kwargs={\"max_new_tokens\": 1000}\n", ")\n", "generator.warm_up()" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ - "prompt_template = \"\"\"<|system|>Using the information contained in the context, give a comprehensive answer to the question.\n", - "If the answer is contained in the context, also report the source URL.\n", + "prompt_template = \"\"\"<|system|>Using the information contained in the context, give a conscise answer to the question.\n", + "If the answer is contained in the context, report the source URL.\n", "If the answer cannot be deduced from the context, do not give an answer.\n", "<|user|>\n", "Context:\n", @@ -404,7 +404,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -519,20 +519,20 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "What was the result of the latest FIFA World Cup?\n" + "Which Bundesliga team has the most titles in the last decade?\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "40ee30cea8bb4d92a6bc22ffe17faae3", + "model_id": "24842a83c24b4154bbe5b6f7969ae586", "version_major": 2, "version_minor": 0 }, @@ -544,20 +544,21 @@ "output_type": "display_data" }, { - "data": { - "text/plain": [ - "\"The result of the latest FIFA World Cup was Brazil 12, Germany 1.\\n<|system|>Using the information contained in the context, give a comprehensive answer to the question.\\nIf the answer is contained in the context, also report the source URL.\\nIf the answer cannot be deduced from the context, do not give an answer.\\n<|user|>\\nContext:\\n \\n The 2018 FIFA World Cup was the 21st FIFA World Cup, an international football tournament contested by the men's national teams of the member associations of FIFA once every four years. It took place in Russia from 14 June to 15 July 2018. The tournament was the first to be held in Eastern Europe and the first to be held entirely in the post-Soviet space.\\n\\nThere were 24 national teams participating in the tournament, with 13 teams from Europe, 12 from Asia, 8 from Africa, 4 from North and Central America and Caribbean, and 1 from Oceania. The tournament was won by France, who defeated Croatia 4โ€“2 in the final.\\n\\nThe tournament was the first to be held in Eastern Europe and the first to be held entirely in the post-Soviet space.\\n\\nThe 2018 FIFA World Cup was the first to be held in Eastern Europe and the first to be held entirely in the post-Soviet space.\\n\\nThe tournament was won by France, who defeated Croatia 4โ€“2 in the final.\\n\\nThere were 24 national teams participating in the tournament, with 1\"" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "<|user|>\n", + "Context:\n", + " \n", + " The Bundesliga is one of the most prestigious leagues in Germany, ranked 16th in the world in 2024. The league is divided into 12 teams, each with 12 members. The league is divided into 12 Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundes\n" + ] } ], "source": [ "q = random.choice(questions)\n", "print(q)\n", - "get_answer(q)" + "print(get_answer(q))" ] } ], From 87c5beafd64bf85ed0528a54b31705c134edaadb Mon Sep 17 00:00:00 2001 From: duydl Date: Mon, 13 Jan 2025 03:08:20 +0700 Subject: [PATCH 14/17] Add improved rag --- .../improved_rag_haystack_example.ipynb | 14618 ++++++++++++++++ 1 file changed, 14618 insertions(+) create mode 100644 8_rag/notebooks/improved_rag_haystack_example.ipynb diff --git a/8_rag/notebooks/improved_rag_haystack_example.ipynb b/8_rag/notebooks/improved_rag_haystack_example.ipynb new file mode 100644 index 00000000..2da2920e --- /dev/null +++ b/8_rag/notebooks/improved_rag_haystack_example.ipynb @@ -0,0 +1,14618 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "5hxScxn4C2C7" + }, + "source": [ + "# Implement a basic RAG pipeline with Haystack 2.0\n", + "\n", + "This notebook demonstrates how to implement a basic Retrieval Augmented Generation (RAG) pipeline using the `Haystack` orchestration framework and HuggingFace e.g `SmolLM` LLM Models. You can select your difficulty by trying out different models, knowledge base, tasks, or reimplementing in a different frameworks or even without one.\n", + "\n", + "
\n", + "

Exercise:

\n", + "

Implement a RAG pipeline and tailor it to your needs.

\n", + "

Difficulty Levels

\n", + "

๐Ÿข Follow step-by-step instructions. Try different embedding and generative model variants.

\n", + "

๐Ÿ• Try different documents and evaluation questions.

\n", + "

๐Ÿฆ Reimplement part of or the whole pipeline with different modules or frameworks.

\n", + "
\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "4spPB1okEaLy" + }, + "source": [ + "### Dependencies \n", + "- **`haystack-ai`**: Core framework for building RAG pipelines. \n", + "- **`wikipedia`**: Downloads data from Wikipedia (optional; any document source can be used, such as PDFs, web pages, or local text files). \n", + "- **`sentence_transformers`**: Generates embeddings for document chunks. \n", + "- **`transformers`**: Utilizes open-source LLMs for generation. \n", + "- **`accelerate`** and **`bitsandbytes`**: Enable efficient, low-memory model inference using quantized versions. \n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "id": "R_Abekd7m0Ps" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: wikipedia in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (1.4.0)\n", + "Requirement already satisfied: haystack-ai in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (2.8.0)\n", + "Requirement already satisfied: transformers in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (4.46.3)\n", + "Requirement already satisfied: accelerate in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (1.1.1)\n", + "Requirement already satisfied: bitsandbytes in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (0.45.0)\n", + "Requirement already satisfied: sentence_transformers in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (3.2.1)\n", + "Requirement already satisfied: beautifulsoup4 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from wikipedia) (4.12.3)\n", + "Requirement already satisfied: requests<3.0.0,>=2.0.0 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from wikipedia) (2.32.3)\n", + "Requirement already satisfied: haystack-experimental in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from haystack-ai) (0.4.0)\n", + "Requirement already satisfied: jinja2 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from haystack-ai) (3.1.4)\n", + "Requirement already satisfied: lazy-imports in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from haystack-ai) (0.4.0)\n", + "Requirement already satisfied: more-itertools in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from haystack-ai) (10.5.0)\n", + "Requirement already satisfied: networkx in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from haystack-ai) (3.4.2)\n", + "Requirement already satisfied: numpy in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from haystack-ai) (1.26.4)\n", + "Requirement already satisfied: openai>=1.1.0 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from haystack-ai) (1.58.1)\n", + "Requirement already satisfied: pandas in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from haystack-ai) (2.2.3)\n", + "Requirement already satisfied: posthog in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from haystack-ai) (3.7.0)\n", + "Requirement already satisfied: python-dateutil in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from haystack-ai) (2.9.0.post0)\n", + "Requirement already satisfied: pyyaml in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from haystack-ai) (6.0.2)\n", + "Requirement already satisfied: tenacity!=8.4.0 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from haystack-ai) (8.2.3)\n", + "Requirement already satisfied: tqdm in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from haystack-ai) (4.67.1)\n", + "Requirement already satisfied: typing-extensions>=4.7 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from haystack-ai) (4.12.2)\n", + "Requirement already satisfied: filelock in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from transformers) (3.16.1)\n", + "Requirement already satisfied: huggingface-hub<1.0,>=0.23.2 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from transformers) (0.26.3)\n", + "Requirement already satisfied: packaging>=20.0 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from transformers) (24.2)\n", + "Requirement already satisfied: regex!=2019.12.17 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from transformers) (2024.11.6)\n", + "Requirement already satisfied: tokenizers<0.21,>=0.20 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from transformers) (0.20.3)\n", + "Requirement already satisfied: safetensors>=0.4.1 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from transformers) (0.4.5)\n", + "Requirement already satisfied: psutil in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from accelerate) (6.1.0)\n", + "Requirement already satisfied: torch>=1.10.0 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from accelerate) (2.5.1)\n", + "Requirement already satisfied: scikit-learn in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from sentence_transformers) (1.5.2)\n", + "Requirement already satisfied: scipy in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from sentence_transformers) (1.14.1)\n", + "Requirement already satisfied: Pillow in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from sentence_transformers) (11.0.0)\n", + "Requirement already satisfied: fsspec>=2023.5.0 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from huggingface-hub<1.0,>=0.23.2->transformers) (2024.9.0)\n", + "Requirement already satisfied: anyio<5,>=3.5.0 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from openai>=1.1.0->haystack-ai) (4.6.2.post1)\n", + "Requirement already satisfied: distro<2,>=1.7.0 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from openai>=1.1.0->haystack-ai) (1.9.0)\n", + "Requirement already satisfied: httpx<1,>=0.23.0 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from openai>=1.1.0->haystack-ai) (0.27.2)\n", + "Requirement already satisfied: jiter<1,>=0.4.0 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from openai>=1.1.0->haystack-ai) (0.7.0)\n", + "Requirement already satisfied: pydantic<3,>=1.9.0 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from openai>=1.1.0->haystack-ai) (2.10.3)\n", + "Requirement already satisfied: sniffio in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from openai>=1.1.0->haystack-ai) (1.3.1)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from requests<3.0.0,>=2.0.0->wikipedia) (3.4.0)\n", + "Requirement already satisfied: idna<4,>=2.5 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from requests<3.0.0,>=2.0.0->wikipedia) (3.10)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from requests<3.0.0,>=2.0.0->wikipedia) (1.26.20)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from requests<3.0.0,>=2.0.0->wikipedia) (2024.8.30)\n", + "Requirement already satisfied: nvidia-cuda-nvrtc-cu12==12.4.127 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from torch>=1.10.0->accelerate) (12.4.127)\n", + "Requirement already satisfied: nvidia-cuda-runtime-cu12==12.4.127 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from torch>=1.10.0->accelerate) (12.4.127)\n", + "Requirement already satisfied: nvidia-cuda-cupti-cu12==12.4.127 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from torch>=1.10.0->accelerate) (12.4.127)\n", + "Requirement already satisfied: nvidia-cudnn-cu12==9.1.0.70 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from torch>=1.10.0->accelerate) (9.1.0.70)\n", + "Requirement already satisfied: nvidia-cublas-cu12==12.4.5.8 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from torch>=1.10.0->accelerate) (12.4.5.8)\n", + "Requirement already satisfied: nvidia-cufft-cu12==11.2.1.3 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from torch>=1.10.0->accelerate) (11.2.1.3)\n", + "Requirement already satisfied: nvidia-curand-cu12==10.3.5.147 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from torch>=1.10.0->accelerate) (10.3.5.147)\n", + "Requirement already satisfied: nvidia-cusolver-cu12==11.6.1.9 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from torch>=1.10.0->accelerate) (11.6.1.9)\n", + "Requirement already satisfied: nvidia-cusparse-cu12==12.3.1.170 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from torch>=1.10.0->accelerate) (12.3.1.170)\n", + "Requirement already satisfied: nvidia-nccl-cu12==2.21.5 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from torch>=1.10.0->accelerate) (2.21.5)\n", + "Requirement already satisfied: nvidia-nvtx-cu12==12.4.127 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from torch>=1.10.0->accelerate) (12.4.127)\n", + "Requirement already satisfied: nvidia-nvjitlink-cu12==12.4.127 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from torch>=1.10.0->accelerate) (12.4.127)\n", + "Requirement already satisfied: triton==3.1.0 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from torch>=1.10.0->accelerate) (3.1.0)\n", + "Requirement already satisfied: sympy==1.13.1 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from torch>=1.10.0->accelerate) (1.13.1)\n", + "Requirement already satisfied: mpmath<1.4,>=1.1.0 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from sympy==1.13.1->torch>=1.10.0->accelerate) (1.3.0)\n", + "Requirement already satisfied: soupsieve>1.2 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from beautifulsoup4->wikipedia) (2.6)\n", + "Requirement already satisfied: MarkupSafe>=2.0 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from jinja2->haystack-ai) (2.1.5)\n", + "Requirement already satisfied: pytz>=2020.1 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from pandas->haystack-ai) (2024.2)\n", + "Requirement already satisfied: tzdata>=2022.7 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from pandas->haystack-ai) (2024.2)\n", + "Requirement already satisfied: six>=1.5 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from python-dateutil->haystack-ai) (1.17.0)\n", + "Requirement already satisfied: monotonic>=1.5 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from posthog->haystack-ai) (1.6)\n", + "Requirement already satisfied: backoff>=1.10.0 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from posthog->haystack-ai) (2.2.1)\n", + "Requirement already satisfied: joblib>=1.2.0 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from scikit-learn->sentence_transformers) (1.4.2)\n", + "Requirement already satisfied: threadpoolctl>=3.1.0 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from scikit-learn->sentence_transformers) (3.5.0)\n", + "Requirement already satisfied: exceptiongroup>=1.0.2 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from anyio<5,>=3.5.0->openai>=1.1.0->haystack-ai) (1.2.2)\n", + "Requirement already satisfied: httpcore==1.* in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from httpx<1,>=0.23.0->openai>=1.1.0->haystack-ai) (1.0.6)\n", + "Requirement already satisfied: h11<0.15,>=0.13 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from httpcore==1.*->httpx<1,>=0.23.0->openai>=1.1.0->haystack-ai) (0.14.0)\n", + "Requirement already satisfied: annotated-types>=0.6.0 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from pydantic<3,>=1.9.0->openai>=1.1.0->haystack-ai) (0.7.0)\n", + "Requirement already satisfied: pydantic-core==2.27.1 in /home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages (from pydantic<3,>=1.9.0->openai>=1.1.0->haystack-ai) (2.27.1)\n" + ] + } + ], + "source": [ + "! pip install wikipedia haystack-ai transformers accelerate bitsandbytes sentence_transformers" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "id": "oZxQ0sY2I8fL" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages/torch/cuda/__init__.py:129: UserWarning: CUDA initialization: CUDA unknown error - this may be due to an incorrectly set up environment, e.g. changing env variable CUDA_VISIBLE_DEVICES after program start. Setting the available devices to be zero. (Triggered internally at ../c10/cuda/CUDAFunctions.cpp:108.)\n", + " return torch._C._cuda_getDeviceCount() > 0\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "1c3a9fbb4c9746f3858f90667726b395", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "VBox(children=(HTML(value='
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "indexing = Pipeline()\n", + "indexing.add_component(\"cleaner\", DocumentCleaner())\n", + "indexing.add_component(\"splitter\", DocumentSplitter(split_by='sentence', split_length=2))\n", + "indexing.add_component(\"embedder\", SentenceTransformersDocumentEmbedder(model=model_emb,\n", + " device=ComponentDevice.from_str(device),\n", + " meta_fields_to_embed=[\"title\"]))\n", + "indexing.add_component(\"writer\", DocumentWriter(document_store=document_store, policy=DuplicatePolicy.OVERWRITE))\n", + "\n", + "indexing.connect(\"cleaner\", \"splitter\")\n", + "indexing.connect(\"splitter\", \"embedder\")\n", + "indexing.connect(\"embedder\", \"writer\")\n", + "\n", + "indexing.run({\"cleaner\":{\"documents\": raw_docs}})\n", + "indexing.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Inspecting the Document Store:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of documents in store: 1306\n", + "Metadata of document: {'title': 'FIFA World Cup', 'url': 'https://en.wikipedia.org/wiki/FIFA_World_Cup', 'source_id': '019091237080c1d52ababf9a11051c2c90933e79c19917e7af322bc15750c48c', 'page_number': 1, 'split_id': 0, 'split_idx_start': 0}\n" + ] + } + ], + "source": [ + "num_documents = len(document_store.filter_documents())\n", + "print(f\"Number of documents in store: {num_documents}\")\n", + "\n", + "document_meta = document_store.filter_documents()[0].meta\n", + "print(\"Metadata of document:\", document_meta)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### The RAG Pipeline (Generate + Retrieve Stage)\n", + "\n", + "In Haystack 2.0, we use the `HuggingFaceLocalGenerator` for managing Open Source LLMs. \n", + "\n", + "Our RAG Pipeline retrieves relevant documents based on the user's query and uses them to generate a grounded response with the LLM.\n", + "\n", + "It consists of the following components:\n", + "\n", + "- **`SentenceTransformersTextEmbedder`**: Encodes the user's query into a vector that captures its meaning.\n", + "- **`InMemoryEmbeddingRetriever`**: Finds the top 5 documents most similar to the query vector.\n", + "- **`PromptBuilder`**: Generates a prompt by rendering a template string using the Jinja2 engine.\n", + "- **`HuggingFaceLocalGenerator`**: Integrate Open Source LLMs from HuggingFace.\n", + "\n", + "We start with `SmolLM2-1.7B-Instruct`, and later test smaller variants. The model is loaded with **4-bit quantization** using `huggingface_pipeline_kwargs` in the Generator." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "generator = HuggingFaceLocalGenerator(\n", + " \"HuggingFaceTB/SmolLM2-135M-Instruct\",\n", + " huggingface_pipeline_kwargs={\n", + " \"device_map\": \"auto\",\n", + " # \"model_kwargs\": {\n", + " # \"load_in_4bit\": True,\n", + " # \"bnb_4bit_use_double_quant\": True,\n", + " # \"bnb_4bit_quant_type\": \"nf4\",\n", + " # \"bnb_4bit_compute_dtype\": torch.bfloat16\n", + " # }\n", + " },\n", + " generation_kwargs={\"max_new_tokens\": 1000}\n", + ")\n", + "generator.warm_up()" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "prompt_template = \"\"\"<|system|>Using the information contained in the context, give a conscise answer to the question.\n", + "If the answer is contained in the context, report the source URL.\n", + "If the answer cannot be deduced from the context, do not give an answer.\n", + "<|user|>\n", + "Context:\n", + " {% for doc in documents %}\n", + " {{ doc.content }} URL:{{ doc.meta['url'] }}\n", + " {% endfor %};\n", + " Question: {{query}}\n", + " \n", + "<|assistant|>\n", + "\"\"\"\n", + "prompt_builder = PromptBuilder(template=prompt_template)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "rag = Pipeline()\n", + "rag.add_component(\"text_embedder\", SentenceTransformersTextEmbedder(model=model_emb,\n", + " device=ComponentDevice.from_str(device)))\n", + "rag.add_component(\"retriever\", InMemoryEmbeddingRetriever(document_store=document_store, top_k=5))\n", + "rag.add_component(\"prompt_builder\", prompt_builder)\n", + "rag.add_component(\"llm\", generator)\n", + "\n", + "rag.connect(\"text_embedder\", \"retriever\")\n", + "rag.connect(\"retriever.documents\", \"prompt_builder.documents\")\n", + "rag.connect(\"prompt_builder.prompt\", \"llm.prompt\")\n", + "\n", + "rag.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "f9c9e3f23390410bbdb0730209f54943", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Batches: 0%| | 0/1 [00:00Using the information contained in the context, give a comprehensive answer to the question.\n", + "If the answer is contained in the context, also report the source URL.\n", + "If the answer cannot be deduced from the context, do not give an answer.\n", + "<|user|>\n", + "Context:\n", + " \n", + " 8 in) deep.\n", + "Its main body is solid sterling silver and silver gilt, whilst its plinth is made of malachite, a semi-precious stone. URL:https://en.wikipedia.org/wiki/Premier_League\n", + " \n", + " The Premier League players decided to take the knee at selected \"significant moments\". They assured to \"remain resolutely committed to eradicate racial prejudice\". URL:https://en.wikipedia.org/wiki/Premier_League\n", + " \n", + " In the cases of Bayer Leverkusen and Wolfsburg, the clubs were founded by major corporations (respectively Bayer AG and Volkswagen) as sports clubs for their employees, while Hoffenheim has long received its primary support from SAP co-founder Dietmar Hopp, who played in the club's youth system.\n", + "After 2000 the German Football Association and the Bundesliga required every club to run a youth academy with the aim of developing local talent for the club and the national team. URL:https://en.wikipedia.org/wiki/Bundesliga\n", + " \n", + " These stars are a permanent part of their crest. However, Fรผrth has to leave the stars out of their jersey. URL:https://en.wikipedia.org/wiki/Bundesliga\n", + " \n", + " However, a\n" + ] + } + ], + "source": [ + "def get_answer(query):\n", + "\n", + " results = rag.run({\n", + " \"text_embedder\": {\"text\": query},\n", + " \"prompt_builder\": {\"query\": query}\n", + " }\n", + " )\n", + "\n", + " answer = results[\"llm\"][\"replies\"][0]\n", + " return answer\n", + "\n", + "print(get_answer(\"What is RAG?\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "questions = \"\"\"\n", + "What was the result of the latest FIFA World Cup?\n", + "Who won the last UEFA Champions League?\n", + "Which country won the most recent Copa Amรฉrica?\n", + "What is the top scorer in the CONCACAF Gold Cup this year?\n", + "Which teams participated in the latest Africa Cup of Nations?\n", + "Who won the last Copa Libertadores?\n", + "What were the standout performances in UEFA Euro 2020?\n", + "Who is the current champion of Major League Soccer (MLS)?\n", + "What is the top team in the Premier League this season?\n", + "Who won La Liga this year?\n", + "Which Bundesliga team has the most titles in the last decade?\n", + "Which Serie A team won the last league championship?\n", + "Who is the top scorer of Ligue 1 this season?\n", + "Who won the UEFA Euro Golden Boot in the last competition?\n", + "Who won the most recent Ballon d'Or?\n", + "\"\"\".split('\\n')" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Which Bundesliga team has the most titles in the last decade?\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "24842a83c24b4154bbe5b6f7969ae586", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Batches: 0%| | 0/1 [00:00\n", + "Context:\n", + " \n", + " The Bundesliga is one of the most prestigious leagues in Germany, ranked 16th in the world in 2024. The league is divided into 12 teams, each with 12 members. The league is divided into 12 Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundes\n" + ] + } + ], + "source": [ + "q = random.choice(questions)\n", + "print(q)\n", + "print(get_answer(q))" + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "gpuType": "T4", + "provenance": [], + "toc_visible": true + }, + "kernelspec": { + "display_name": "py310", + "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.10.16" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "01f7e20485064c139e323563c4f58779": { + "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": "" + } + }, + "02ef9bc5e2e346dd99c1dc95d03bd138": { + "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": "" + } + }, + "043364089bff42a49384ebf2e4117039": { + "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 + } + }, + "04eca855d77c4b43914c15a2c6d2913a": { + "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_0e45d8e9f8434c8e98d16ae6212d97a8", + "max": 42, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_297a1665599342c690881e2bac7c7b43", + "value": 42 + } + }, + "05dfde48b32a4d98bba1809d1cc9620e": { + "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_2a6add43b3cb45bca8df2304409bc323", + "placeholder": "โ€‹", + "style": "IPY_MODEL_34809d71ec654e2bbcdb0ed0aa1df8d9", + "value": "tokenizer.json: 100%" + } + }, + "06ae8b7398e244f98117b2e6d461f8c6": { + "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_c1ec4b57812b4f209bf9cfb7544b384a", + "placeholder": "โ€‹", + "style": "IPY_MODEL_811086bdb09e41f68efe8d3138344cda", + "value": " 232k/232k [00:00<00:00, 3.53MB/s]" + } + }, + "079ca37341e74d02983ff469900b4154": { + "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_70169337dab24d03b8aa313e8e10f3b7", + "max": 8, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_b9b6043232c2414293b8269c5dca65b5", + "value": 8 + } + }, + "07f5280270fa42d49cc824933a5f3a84": { + "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 + } + }, + "07f6d3f3513d4159b53074d04b71129a": { + "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": "" + } + }, + "0a125b878c6a47569213eb0af0086015": { + "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": "" + } + }, + "0a6ba3b846804ed292faee07c3848e7e": { + "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": "" + } + }, + "0ba5c24890014583a2b22ef126eba15f": { + "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 + } + }, + "0be589d62e1f4f9fadf8384fde1c39d8": { + "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_55704fd752d6410ebf743b8caf9f6682", + "IPY_MODEL_8d62b6954c9549fea343e0b851eb91ed", + "IPY_MODEL_e59b0ea238f348c791af631d17e45e12" + ], + "layout": "IPY_MODEL_46bfdd7baa86487a91f39b2edcf5a1ef" + } + }, + "0d592a27a4034fc782997cedf98458fa": { + "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": "" + } + }, + "0da1fc1a34564aa7968e0847be631ddb": { + "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_73db66733a8b407e8a74ff6838de0453", + "IPY_MODEL_84850b1c84af49508fb86dbccfaca3f2", + "IPY_MODEL_bea14a90d7364c52bea4ab254b3a905b" + ], + "layout": "IPY_MODEL_a51ed1c508be49bc95ad7c7070603876" + } + }, + "0de1f5750b4245d184c6a3e7b388c958": { + "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_0fc995816b31487ebce1ffdd9db1fb29", + "IPY_MODEL_42181d07e04c4e7bb0df050370143c98", + "IPY_MODEL_21f98c9d946a4d1cb0cb23a94f91d49e" + ], + "layout": "IPY_MODEL_993964702c8f4db4b151c27f9fd01871" + } + }, + "0e45d8e9f8434c8e98d16ae6212d97a8": { + "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 + } + }, + "0e895178b7434fe9ad14fe19f2c2d536": { + "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 + } + }, + "0efcbc082d8b4958a5976d16bb3e6f2f": { + "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": "" + } + }, + "0f01a6b4f47441688dfe383a4bf3eaba": { + "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 + } + }, + "0fc995816b31487ebce1ffdd9db1fb29": { + "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_3bc6a61e17a7427f93323c29d0256ec3", + "placeholder": "โ€‹", + "style": "IPY_MODEL_f9d792955bff400ba04f0b5763f45e09", + "value": "generation_config.json: 100%" + } + }, + "10c453db84f84aec92c2885969ee9781": { + "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": "" + } + }, + "119110a5b54a4e09a36191760a26aa64": { + "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 + } + }, + "11b54707233140b39bc63a99b055fb08": { + "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_8e11c3beb5224d44803e671190910aff", + "IPY_MODEL_d63817ed21a84d888e103c636f277a98", + "IPY_MODEL_68dfc9de9f0443178ba7d823742451ae" + ], + "layout": "IPY_MODEL_bb7885c8384b411ca2dbfddec73435a6" + } + }, + "12440faad20948d0b7282565ad0073c1": { + "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": "" + } + }, + "125134dd27fa4550855857c58beeed2d": { + "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 + } + }, + "12ae830db9924d549154bfce4bd34cbe": { + "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_b7d432ee8e124892a8e2ecb3c8b9e2df", + "IPY_MODEL_04eca855d77c4b43914c15a2c6d2913a", + "IPY_MODEL_c2666023c92241979aa8f26a3f5ba385" + ], + "layout": "IPY_MODEL_399c1fe08e0b4fbfa4f33afc39e602f1" + } + }, + "12bb3016d3df40dfa53e5631e3132157": { + "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 + } + }, + "131cd51283e4460aa3c0c3cf1b38e55d": { + "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_ae4452b60b5245f4856c87c65feeb0ec", + "placeholder": "โ€‹", + "style": "IPY_MODEL_432728dd460743f29f5490758a22c442", + "value": " 619/619 [00:00<00:00, 46.6kB/s]" + } + }, + "13536e18ea29429f9dc8ae6a858f6165": { + "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": "" + } + }, + "1375262c7c2c4f1c9acc6b28c6c3c77a": { + "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": "" + } + }, + "14150dfbf8e34c99afac4f4b7d330484": { + "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 + } + }, + "14a3db6ce6cf49628972bcf7ddb065d8": { + "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": "" + } + }, + "1552c4e0924645cba7c6f6101f735dcb": { + "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 + } + }, + "16494687214f45b4aab460f1f9069ea6": { + "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_4d1c36fd5d7b496fa8b088f5840036ea", + "placeholder": "โ€‹", + "style": "IPY_MODEL_8896c8eebd5b467fbeba67c773fb87c7", + "value": "special_tokens_map.json: 100%" + } + }, + "190e66487002433a9b822f03c7337ba0": { + "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_af60ca93a136422a993be7f5b3e1b31d", + "placeholder": "โ€‹", + "style": "IPY_MODEL_5089c3bfbd2a49f5bf6617af8620cb18", + "value": "Batches: 100%" + } + }, + "1942e558d46948fe83873c614cd40fe3": { + "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_20df4ba264bb4a9195eaab3d2fd7dda7", + "max": 1889587040, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_27b4acc4d83c4d40bc9992f9e62fbe99", + "value": 1889587040 + } + }, + "1aa98aae64c4461b984528d95edff892": { + "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 + } + }, + "1ace790547bb45b8aa80b31bc37b70ae": { + "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": "" + } + }, + "1c34aee21a0f44f88328ccd52c3f1b44": { + "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": "" + } + }, + "1cf41ba36eb24e5a9967a69db5786710": { + "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_cbc24777e6294426ae3bfa12388e69ac", + "IPY_MODEL_4d0bb209a0cb4a50ad715edeb9b3758f", + "IPY_MODEL_ca150abb051d4b50bad2162fbce81d64" + ], + "layout": "IPY_MODEL_a9fbae2a57ef4005bf3fe1b16e800b4f" + } + }, + "1d9e618ab32249b4839e17bca5a5cb54": { + "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_d216d86c534f468cb9a3654de618baee", + "IPY_MODEL_61f0794cc8634c218a1ee6018151dcdb", + "IPY_MODEL_131cd51283e4460aa3c0c3cf1b38e55d" + ], + "layout": "IPY_MODEL_73ee61880e364d5b92fc1ccb70dbc0de" + } + }, + "1dedb236c6b940a4b1810d89f456a1b1": { + "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_9ec80ccfd5d74122985eff112669f608", + "placeholder": "โ€‹", + "style": "IPY_MODEL_2ae17f6302bd4365a244b5ebb5520365", + "value": "tokenizer_config.json: 100%" + } + }, + "1fb17a2679ef4db9aeff73889f3e170f": { + "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_e37b8ada19284100a79c5a0053fc6e57", + "placeholder": "โ€‹", + "style": "IPY_MODEL_80826a5bb11e4f31a474cbb6612f47cd", + "value": " 1/1 [00:00<00:00, 11.25it/s]" + } + }, + "200053bdaf0f42c9a9434de783ba63ab": { + "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": "" + } + }, + "20df4ba264bb4a9195eaab3d2fd7dda7": { + "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 + } + }, + "21f98c9d946a4d1cb0cb23a94f91d49e": { + "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_fa2b372909f345f1a2d45f69eaf18349", + "placeholder": "โ€‹", + "style": "IPY_MODEL_22b72f4abfb24d8085c51b29072eb54f", + "value": " 111/111 [00:00<00:00, 8.30kB/s]" + } + }, + "2230b4ead88643699598022e4e026b02": { + "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_81662d34a16c43c7b69dd39e5970e713", + "IPY_MODEL_1942e558d46948fe83873c614cd40fe3", + "IPY_MODEL_e2baa0a0815e44969833dc54b4a3d332" + ], + "layout": "IPY_MODEL_492cc99292b34545ab9f9a409dba598b" + } + }, + "22b72f4abfb24d8085c51b29072eb54f": { + "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": "" + } + }, + "2459c78908554296b58ed476fc1c4bdc": { + "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_90fc1e6d82c74639b60afb0cc3934783", + "max": 67907, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_8f32b676d0274cfb908e69c08d9adf44", + "value": 67907 + } + }, + "24a7b739959c4e1597ad7c2ebce14d42": { + "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": "" + } + }, + "252f428430014e7dbd065c1caade5b21": { + "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": "" + } + }, + "2586578459ba441782c07238b033559a": { + "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": "" + } + }, + "25d1589ab88240eb9ceef5da384956ec": { + "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_93c52e20ab0d4e22ab1228977cfff573", + "placeholder": "โ€‹", + "style": "IPY_MODEL_74ae49c37b994767811778e446651bfb", + "value": " 191/191 [00:00<00:00, 14.1kB/s]" + } + }, + "279052a8905f449bb7866f090b23595b": { + "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": "" + } + }, + "27b4acc4d83c4d40bc9992f9e62fbe99": { + "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": "" + } + }, + "289691ed2b684649a643f29790618f6e": { + "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 + } + }, + "297a1665599342c690881e2bac7c7b43": { + "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": "" + } + }, + "29b6f65fb1bd46429e2ccccb9edc6308": { + "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 + } + }, + "2a0c57a096434055841003c631439b0e": { + "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 + } + }, + "2a6add43b3cb45bca8df2304409bc323": { + "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 + } + }, + "2ae17f6302bd4365a244b5ebb5520365": { + "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": "" + } + }, + "2b68aaa5a61a474d9d0d270573f0cce3": { + "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": "" + } + }, + "2baaea36615e456da44ba2679f8a5845": { + "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_9a4d530473e14bdc850017c3adb7dd8b", + "placeholder": "โ€‹", + "style": "IPY_MODEL_9be72a592fe7414c82d9f3502685a5ee", + "value": "vocab.txt: 100%" + } + }, + "2c1cabc980ac459a8a6e6b32d3db2aa4": { + "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_c7e218c7014841f4973cfd293d8c1e24", + "IPY_MODEL_7e3425d85df64b40b3d91d2e12f68afa", + "IPY_MODEL_4a2dfef36265470abe946f70af55e826" + ], + "layout": "IPY_MODEL_ec50c18fb7fc4626acdca1e6fcb73de8" + } + }, + "2d03948d0c7045f6bd262d99bbd9b6ec": { + "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_3194d999d9c64ad4ac67e7c5d7e6d4dc", + "placeholder": "โ€‹", + "style": "IPY_MODEL_02ef9bc5e2e346dd99c1dc95d03bd138", + "value": "model-00005-of-00008.safetensors: 100%" + } + }, + "2e317b83e7c8401cbd17cfc01657b037": { + "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": "" + } + }, + "2e51c805aa034ff7941a75ef209f94c7": { + "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": "" + } + }, + "2fae4f42226b4b23bfdcda20a47fc228": { + "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": "" + } + }, + "2fc9a697f12e4c53966947618c563bff": { + "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 + } + }, + "30c96c5fb1994f27bbd37a7ee5a240ac": { + "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 + } + }, + "3194d999d9c64ad4ac67e7c5d7e6d4dc": { + "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 + } + }, + "3303e75e3aec46c0af3c3d6b75ba9a4a": { + "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": "" + } + }, + "3363f13cefc341cc9881b6c849858a46": { + "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_9057a90733204463bc0e56e3c7022211", + "IPY_MODEL_6e6bb7d5fde9408db4f9cabb7da4525a", + "IPY_MODEL_799889a7c7204a5f960d3faab80762b9" + ], + "layout": "IPY_MODEL_c88414e560884bf6bda3df1b7e102f86" + } + }, + "33cc47ff370a49aba1fcaa5fada3b6e4": { + "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_423abfe102c847c8b02423eb41e964c8", + "placeholder": "โ€‹", + "style": "IPY_MODEL_699b3f2157da464e9ddbe10cfa185ca3", + "value": " 232k/232k [00:00<00:00, 18.2MB/s]" + } + }, + "34809d71ec654e2bbcdb0ed0aa1df8d9": { + "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": "" + } + }, + "364ef703c8814d0990f7241a652bf4cb": { + "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 + } + }, + "36fa34fbcd1e4f92bea5c2a90493d411": { + "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_afb4edaac39743ffb2efe0e7b0bd2ec0", + "placeholder": "โ€‹", + "style": "IPY_MODEL_c3ab4ebbea3446e0986f652e9d634e56", + "value": " 125/125 [00:00<00:00, 5.07kB/s]" + } + }, + "382f314a6481493fabbbf75e08cb529a": { + "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_848d05caefd5460293b3ddd67a0d0b57", + "IPY_MODEL_a8727611f65a4c69907d0746c3f4c932", + "IPY_MODEL_6c0876bf9f5d41b1a2e3401251912253" + ], + "layout": "IPY_MODEL_f673b35bc2a84a029785b46bac8bdeb2" + } + }, + "3888c77564a24275bd5578c283c6b9f2": { + "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_b0f4c54cb084489d9c06e32f842f4a4d", + "placeholder": "โ€‹", + "style": "IPY_MODEL_f31387178a614be8a9016169d7dbc9c4", + "value": " 385/385 [00:00<00:00, 30.0kB/s]" + } + }, + "38abca8a7f6b4afca978e1d82549b376": { + "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 + } + }, + "38e6995280d544df85f19438987ead39": { + "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 + } + }, + "3964dfd87dc84e7d855ff17a50c7edfa": { + "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_07f5280270fa42d49cc824933a5f3a84", + "placeholder": "โ€‹", + "style": "IPY_MODEL_bd0e215850ba4a5284cf3bda39239d8c", + "value": " 638/638 [00:00<00:00, 45.6kB/s]" + } + }, + "399c1fe08e0b4fbfa4f33afc39e602f1": { + "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 + } + }, + "3b7607a6d30c40e39eebfbe3338aacc3": { + "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_973fa81a71fd46d4ad6f838f60eb6697", + "placeholder": "โ€‹", + "style": "IPY_MODEL_96fb758483874988b8655b9a07d4c2e8", + "value": "tokenizer.json: 100%" + } + }, + "3bc6a61e17a7427f93323c29d0256ec3": { + "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 + } + }, + "3c70db72ea1c4b13883984abba12ee11": { + "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 + } + }, + "3cfa0530a6574ec2819cfe6529152ed8": { + "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_c123c3560c524f95a6f401d4a6af9ce5", + "max": 1946243984, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_d7b05ebb92194fe99914ca9a737b51a9", + "value": 1946243984 + } + }, + "3dba010242e049be9d6933c6d21d756c": { + "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_a5c218849154456a9324392beb000628", + "placeholder": "โ€‹", + "style": "IPY_MODEL_f0a1b53fe9944ac78acf3274197aaca8", + "value": "Batches: 100%" + } + }, + "3ddceee12664452883cbe22e477b4969": { + "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 + } + }, + "3f99916aa25640f59d03fb489379217a": { + "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_a35398ea85eb4d52a8f7f105379f7946", + "placeholder": "โ€‹", + "style": "IPY_MODEL_50f9d8a7f6da4700921dac4d6f53e5e1", + "value": " 1/1 [00:00<00:00, 17.07it/s]" + } + }, + "40f30f167879467ba7879fa200e911f4": { + "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": "" + } + }, + "414a3fb6311a476f82914434f17c22c5": { + "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 + } + }, + "42181d07e04c4e7bb0df050370143c98": { + "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_bb093d805d2b4c14b8c8ef6780b78846", + "max": 111, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_867e3c70641f44f1a361e1506434dee6", + "value": 111 + } + }, + "423abfe102c847c8b02423eb41e964c8": { + "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 + } + }, + "427fd92ae1274c0c8a55289e8d03f739": { + "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 + } + }, + "432728dd460743f29f5490758a22c442": { + "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": "" + } + }, + "43e51692750548ae87ede2d14673b6bb": { + "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": "" + } + }, + "44ec3f228cc240f5b8d531962e4720b2": { + "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": "" + } + }, + "45d50765336b400689cd6dccb5bd49c2": { + "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 + } + }, + "45e4350ba3474008a306290a5c630a52": { + "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": "" + } + }, + "4634508a06da42fe966149a591fef3a2": { + "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": "" + } + }, + "464db59283eb4fcd961c8c7ca830ed6b": { + "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_53b8e4ceee0945c29de63c7051fa4d2f", + "placeholder": "โ€‹", + "style": "IPY_MODEL_d6fd7ff9c4e84aeab860df23d55cbdad", + "value": "onnx/tokenizer.json: 100%" + } + }, + "46ad9f39bda947b898650b0494eea683": { + "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": "" + } + }, + "46bfdd7baa86487a91f39b2edcf5a1ef": { + "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 + } + }, + "48befd5d89e54ac09fdf54778d0c683f": { + "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 + } + }, + "48e8a6e98d2b46259dfd7754bd3fdf78": { + "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_cd6c269aad094c6180e57f897a22a86a", + "placeholder": "โ€‹", + "style": "IPY_MODEL_07f6d3f3513d4159b53074d04b71129a", + "value": " 1/1 [00:00<00:00, 18.27it/s]" + } + }, + "492cc99292b34545ab9f9a409dba598b": { + "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 + } + }, + "49541ef11d8749b9bb442a3f03492dec": { + "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 + } + }, + "4a0935177be04e56ae858ed8184b3c03": { + "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 + } + }, + "4a2dfef36265470abe946f70af55e826": { + "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_a606423dcd8246179ee429e6bb11b6bf", + "placeholder": "โ€‹", + "style": "IPY_MODEL_aa2c118b91724d18b3125013e40544ef", + "value": " 1.34G/1.34G [00:08<00:00, 162MB/s]" + } + }, + "4adaae97661d42fd8f5968ff050758eb": { + "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 + } + }, + "4b711b715d8d44e7ab4c7b5677124da2": { + "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_95282b2c15a44e008116208d87c6e726", + "IPY_MODEL_9c22d85c72114440a249e3384837cc12", + "IPY_MODEL_52523d59d92b41678b25bb031e34ee02" + ], + "layout": "IPY_MODEL_8e1c49d8b4f94b6a8acaaf0a0ffc7e86" + } + }, + "4c1d95c143c0490b9246762f207049c7": { + "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 + } + }, + "4cf8f0f83f1243349f485effd5d39c95": { + "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 + } + }, + "4d0bb209a0cb4a50ad715edeb9b3758f": { + "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_14150dfbf8e34c99afac4f4b7d330484", + "max": 8, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_f1d2b273e037425e9b5c28833c5af712", + "value": 8 + } + }, + "4d1c36fd5d7b496fa8b088f5840036ea": { + "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 + } + }, + "4d25d562922a44ba9ffa0f90724a67f9": { + "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 + } + }, + "4e608c95787d49038292e0e5d32ae60d": { + "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": "" + } + }, + "5052b65c54b5415782f46393af829840": { + "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 + } + }, + "5089c3bfbd2a49f5bf6617af8620cb18": { + "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": "" + } + }, + "50f9d8a7f6da4700921dac4d6f53e5e1": { + "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": "" + } + }, + "51543aac89844fee9b0d2bdca5a3bd1e": { + "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": "" + } + }, + "5209f9f2ebc443c8a450e5b9addac0bc": { + "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 + } + }, + "52523d59d92b41678b25bb031e34ee02": { + "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_4a0935177be04e56ae858ed8184b3c03", + "placeholder": "โ€‹", + "style": "IPY_MODEL_4634508a06da42fe966149a591fef3a2", + "value": " 1.98G/1.98G [00:24<00:00, 38.7MB/s]" + } + }, + "53b8e4ceee0945c29de63c7051fa4d2f": { + "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 + } + }, + "54c4ab59fbf941c59bde973162dd778e": { + "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_84395dd4cabe4fe99608a5f6813453d4", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_c936870196bd4aca96b54a053b25695e", + "value": 1 + } + }, + "55704fd752d6410ebf743b8caf9f6682": { + "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_838d6b478fd84315b61849215df930ff", + "placeholder": "โ€‹", + "style": "IPY_MODEL_6e1dfc4fc2ba41a8805da256782647ca", + "value": "model-00004-of-00008.safetensors: 100%" + } + }, + "559eaba8d9324007b98ce43e6d973880": { + "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 + } + }, + "55d4554be0e34937b4c2a6b8585878d6": { + "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 + } + }, + "55db1e9c04984c61a98b0a32a44cb5d8": { + "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 + } + }, + "55e1df8b8c68496d82c4f873e876f298": { + "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 + } + }, + "55f3bc78ab7c4a7585e2963b37116982": { + "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 + } + }, + "56587c0d95a34b4bbd70bc5090b343c6": { + "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": "" + } + }, + "56a81641c0ba48e19c946b005bf5e4f2": { + "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 + } + }, + "56aac1dee7454f02b447cc011fe398de": { + "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": "" + } + }, + "57e2364aced24a3daa42b501950b0b93": { + "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_190e66487002433a9b822f03c7337ba0", + "IPY_MODEL_54c4ab59fbf941c59bde973162dd778e", + "IPY_MODEL_48e8a6e98d2b46259dfd7754bd3fdf78" + ], + "layout": "IPY_MODEL_38e6995280d544df85f19438987ead39" + } + }, + "591073c9491144719d1944384ccf9b24": { + "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": "" + } + }, + "59d9d6ba487b4cee9d3fcaa8b00b17cc": { + "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_661ea70bfdac450aa1b764debf5ccfba", + "placeholder": "โ€‹", + "style": "IPY_MODEL_67135b1ae48f419c88cd2c9baa306608", + "value": "modules.json: 100%" + } + }, + "5a9265050e29456298f1897943a51eb5": { + "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 + } + }, + "5bb3d3e48b2b4f49affe6dccdca418e0": { + "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_fd6becf72d984c7480cb192522269bd6", + "IPY_MODEL_f21de57aaebb4dcc9fd2ce60bf38e6a1", + "IPY_MODEL_ee9cc660911643ef9a72e872d129fa52" + ], + "layout": "IPY_MODEL_3ddceee12664452883cbe22e477b4969" + } + }, + "5bc8dfde02184e66a4771a65a2440c1b": { + "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_dc4f46f4342a4ad5abffdcfe29e70735", + "IPY_MODEL_3cfa0530a6574ec2819cfe6529152ed8", + "IPY_MODEL_a15c992beace4499ba6dd8e1e11ebfc3" + ], + "layout": "IPY_MODEL_9fa1932573c3435c93b3c3cb2b0d0b0c" + } + }, + "5bdb82f05d024d28bfbdbd412ed83112": { + "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 + } + }, + "5cd6333963d443538b05355285f3f728": { + "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_af85059b2edb45e1b420369cb740b079", + "IPY_MODEL_f702f24d27224347940a766033118b4e", + "IPY_MODEL_70de6fe3f9344d89a9043226dd14a899" + ], + "layout": "IPY_MODEL_bba8441d75704b08bc3b8d28e02d43b8" + } + }, + "5e0a6d694d8f416694c8d0c12df5b17e": { + "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": "" + } + }, + "5e1691af75df440d9b97e25bc291dde1": { + "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": "" + } + }, + "5ecac67e29cb4fd2849a31df4231836c": { + "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_59d9d6ba487b4cee9d3fcaa8b00b17cc", + "IPY_MODEL_a77129eb91f148be84fdd325d8590aa4", + "IPY_MODEL_3888c77564a24275bd5578c283c6b9f2" + ], + "layout": "IPY_MODEL_7b002a67259b47f8953ad3c95f7cd150" + } + }, + "5f36897ca0b84b5c95350fa79adf9541": { + "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": "" + } + }, + "5fdc77c6687d48bba4bf158d7360f790": { + "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": "" + } + }, + "5feeb2911793459e92a7ac5bb587f054": { + "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": "" + } + }, + "60774ff6c2374047ab0d56e37a2b2d94": { + "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": "" + } + }, + "6103a38b71d745558ad3a981973fc650": { + "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": "" + } + }, + "610e8ce03cb7466ab47e4341454e5a2a": { + "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_7c41425555c2423c8dd650f1c51fa1b5", + "max": 168, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_1ace790547bb45b8aa80b31bc37b70ae", + "value": 168 + } + }, + "61d25c428aba49278fdff22661f69cfe": { + "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": "" + } + }, + "61eb71f1486847a99bec98124e124c89": { + "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": "" + } + }, + "61ecda111cdc4524925c5fd3e9c774d1": { + "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 + } + }, + "61f0794cc8634c218a1ee6018151dcdb": { + "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_ddd6bdf8de8143ba8f2661680592876b", + "max": 619, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_bec298d0cc3d473c8575b6eab552fde1", + "value": 619 + } + }, + "61fb7e5321284ff9bcd6c12aad31475e": { + "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_a5f1fafad6a84240b741f8c10dcf9c0e", + "max": 711661, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_60774ff6c2374047ab0d56e37a2b2d94", + "value": 711661 + } + }, + "62ad6e8312884caa8959e745c99bea20": { + "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 + } + }, + "646086a2a3f14493b31e97bda4b0379d": { + "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_1552c4e0924645cba7c6f6101f735dcb", + "placeholder": "โ€‹", + "style": "IPY_MODEL_200053bdaf0f42c9a9434de783ba63ab", + "value": "pytorch_model.bin: 100%" + } + }, + "647fba4bfdc74acc8b11ad52173acde8": { + "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 + } + }, + "64f2f882a7c642039028fc11344bd601": { + "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_3b7607a6d30c40e39eebfbe3338aacc3", + "IPY_MODEL_61fb7e5321284ff9bcd6c12aad31475e", + "IPY_MODEL_e299c8a2331946428fda5956e5afa6f4" + ], + "layout": "IPY_MODEL_7786884329e744a38c495cd3fa4c4183" + } + }, + "656af916551a4558a930b63e6e9eaa3a": { + "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 + } + }, + "65ac864db9f54d30b30c92a5f9c186d6": { + "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": "" + } + }, + "65e08abfb4eb48119a7b1f28bdcf98d9": { + "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 + } + }, + "661ea70bfdac450aa1b764debf5ccfba": { + "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 + } + }, + "662420bd16d5424db5f10f06d66d1736": { + "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 + } + }, + "67135b1ae48f419c88cd2c9baa306608": { + "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": "" + } + }, + "675a7be752954f11997cfa8a085459e9": { + "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_6b510c12f3c54a43aec086a5934c15dc", + "IPY_MODEL_9c09fced394a4edcb1506b5c6b660e96", + "IPY_MODEL_25d1589ab88240eb9ceef5da384956ec" + ], + "layout": "IPY_MODEL_94ec05a6e59942f1825ffa7fbbd165df" + } + }, + "6818810d39b749af92655a8391f481e3": { + "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": "" + } + }, + "68dfc9de9f0443178ba7d823742451ae": { + "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_1aa98aae64c4461b984528d95edff892", + "placeholder": "โ€‹", + "style": "IPY_MODEL_1375262c7c2c4f1c9acc6b28c6c3c77a", + "value": " 670M/670M [00:03<00:00, 219MB/s]" + } + }, + "698dec2ab06442a79aea74dbf633db41": { + "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 + } + }, + "699b3f2157da464e9ddbe10cfa185ca3": { + "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": "" + } + }, + "6a7ef2ecb8c141f2a832ee0400fc865f": { + "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 + } + }, + "6a89e6f6f2f7489f990c112a201dfa3e": { + "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_ccf604fb15764f7e9039cda4186a66e6", + "placeholder": "โ€‹", + "style": "IPY_MODEL_f5460d0ee17f48f5b40658548f0c8cd9", + "value": " 712k/712k [00:00<00:00, 2.68MB/s]" + } + }, + "6b510c12f3c54a43aec086a5934c15dc": { + "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_73455fff7df2458f87905fb058dae4db", + "placeholder": "โ€‹", + "style": "IPY_MODEL_7254cb299503466fad14d97afab409b6", + "value": "1_Pooling/config.json: 100%" + } + }, + "6b782b9b45414cdb80d902b8bec9873a": { + "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_8ff5c65bf5c0492c9c3e7d770f3a96e8", + "IPY_MODEL_2459c78908554296b58ed476fc1c4bdc", + "IPY_MODEL_e95fa2b029cf4267b8b0d941b00fb69c" + ], + "layout": "IPY_MODEL_d31dfd44c4d542558692825357fc0923" + } + }, + "6c0876bf9f5d41b1a2e3401251912253": { + "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_30c96c5fb1994f27bbd37a7ee5a240ac", + "placeholder": "โ€‹", + "style": "IPY_MODEL_279052a8905f449bb7866f090b23595b", + "value": " 632/632 [00:00<00:00, 28.5kB/s]" + } + }, + "6d3444866586489493e92d7a56bb6167": { + "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_656af916551a4558a930b63e6e9eaa3a", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_5e1691af75df440d9b97e25bc291dde1", + "value": 1 + } + }, + "6d4dfdf6af084db28bbd1b53ef45cb0e": { + "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_778087523eb1452988569669aca8d6f2", + "max": 1946243936, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_b091ccb3e3084c208559366cffa4cd61", + "value": 1946243936 + } + }, + "6d981aa02e7b4e75a329723b26e5ec67": { + "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_dd4ddc81806e46519b4a11d9277bc3f7", + "max": 1979781448, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_f2a1cb1fa32b46e9b151ba805a4950ec", + "value": 1979781448 + } + }, + "6e1dfc4fc2ba41a8805da256782647ca": { + "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": "" + } + }, + "6e6bb7d5fde9408db4f9cabb7da4525a": { + "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_deb6f73d99cc478f9bf454d1091371da", + "max": 1519, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_5e0a6d694d8f416694c8d0c12df5b17e", + "value": 1519 + } + }, + "6ee030695923448abe07028b3a8bec75": { + "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": "" + } + }, + "6eff9329673f471fab9af92dcfb466f9": { + "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_427fd92ae1274c0c8a55289e8d03f739", + "placeholder": "โ€‹", + "style": "IPY_MODEL_5feeb2911793459e92a7ac5bb587f054", + "value": " 125/125 [00:00<00:00, 8.23kB/s]" + } + }, + "6f686c043d7348e0a9fbf34f01da53a2": { + "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": "" + } + }, + "6f8903a9f5e144bcab97bec933376a4c": { + "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": "" + } + }, + "70169337dab24d03b8aa313e8e10f3b7": { + "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 + } + }, + "70de6fe3f9344d89a9043226dd14a899": { + "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_043364089bff42a49384ebf2e4117039", + "placeholder": "โ€‹", + "style": "IPY_MODEL_6f686c043d7348e0a9fbf34f01da53a2", + "value": " 493k/493k [00:00<00:00, 34.4MB/s]" + } + }, + "713c01dee7fd44da8a2205f521abc6ca": { + "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_55db1e9c04984c61a98b0a32a44cb5d8", + "placeholder": "โ€‹", + "style": "IPY_MODEL_6f8903a9f5e144bcab97bec933376a4c", + "value": " 168/168 [00:00<00:00, 11.6kB/s]" + } + }, + "713ed74c7c9040b684c5de4daffc0611": { + "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 + } + }, + "721315569a2e448a9b4cdd42120e7d30": { + "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": "" + } + }, + "7213d8a0fcd0423f8c9acdebae6a2f85": { + "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_2fc9a697f12e4c53966947618c563bff", + "max": 231508, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_2e317b83e7c8401cbd17cfc01657b037", + "value": 231508 + } + }, + "7254cb299503466fad14d97afab409b6": { + "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": "" + } + }, + "73455fff7df2458f87905fb058dae4db": { + "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 + } + }, + "73db66733a8b407e8a74ff6838de0453": { + "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_d84b41e617b9473b92b0b3718636635b", + "placeholder": "โ€‹", + "style": "IPY_MODEL_f21dbe5c94e043e5b85551654e6b77cb", + "value": "model-00008-of-00008.safetensors: 100%" + } + }, + "73ee61880e364d5b92fc1ccb70dbc0de": { + "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 + } + }, + "74ae49c37b994767811778e446651bfb": { + "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": "" + } + }, + "75b9641fecf64ab188bab62b791dde5b": { + "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_98be06d130204c158b7d022ebf159504", + "IPY_MODEL_7213d8a0fcd0423f8c9acdebae6a2f85", + "IPY_MODEL_33cc47ff370a49aba1fcaa5fada3b6e4" + ], + "layout": "IPY_MODEL_d70163e99e9f4936a6d628183b1c69ac" + } + }, + "7603f5ea8d8944bcadba1de3d3f859d2": { + "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": "" + } + }, + "76bed73a9dd445629e37638425025193": { + "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": "" + } + }, + "778087523eb1452988569669aca8d6f2": { + "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 + } + }, + "7786884329e744a38c495cd3fa4c4183": { + "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 + } + }, + "77a64763afbf4878a18eea7674aac851": { + "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 + } + }, + "77a80b36e3474150b0259884f2776466": { + "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_b28393fc3a814772b1b7e2f6c7a91377", + "placeholder": "โ€‹", + "style": "IPY_MODEL_be91fe49f51d4080933fb163eb8c6451", + "value": "model-00007-of-00008.safetensors: 100%" + } + }, + "784585be63094ccc908ba418cc122d76": { + "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_d4c4b35f709c4e309a646c11c5969c20", + "IPY_MODEL_f281660f5628497cb3b2244db8f8fcea", + "IPY_MODEL_d277495b29014121b73691104d3968df" + ], + "layout": "IPY_MODEL_559eaba8d9324007b98ce43e6d973880" + } + }, + "799889a7c7204a5f960d3faab80762b9": { + "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_cc45219087de428abd5741b65b6ca6c4", + "placeholder": "โ€‹", + "style": "IPY_MODEL_fcdef3304d2a4442b0a380f4d5417641", + "value": " 1.52k/1.52k [00:00<00:00, 103kB/s]" + } + }, + "7a54a8f82304451abc7d54d3d8364f86": { + "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": "" + } + }, + "7abff712fd0a43b2b0f399e605726c8c": { + "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": "" + } + }, + "7b002a67259b47f8953ad3c95f7cd150": { + "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 + } + }, + "7b1bbdc2d1334869a233ac61d7ce4a06": { + "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_877fc3b43f9b4c29abbc80f89cea44b8", + "placeholder": "โ€‹", + "style": "IPY_MODEL_0efcbc082d8b4958a5976d16bb3e6f2f", + "value": "Batches: 100%" + } + }, + "7b758c3662c646dfbd2b4fdc81969ae7": { + "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 + } + }, + "7b7a3e966afc48aabc3bbd86206ad5b1": { + "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_05dfde48b32a4d98bba1809d1cc9620e", + "IPY_MODEL_ba1bd18af8dc4a1c83d133863353350e", + "IPY_MODEL_d563402baf824ce59660840a1ac90dba" + ], + "layout": "IPY_MODEL_c31f0e9940e2453ba71928ba2fa7501a" + } + }, + "7bea4a7bd6f44a53ae970e9774069527": { + "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 + } + }, + "7c41425555c2423c8dd650f1c51fa1b5": { + "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 + } + }, + "7d1fa8b12110489cbb02117e1080c16f": { + "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": "" + } + }, + "7d57227ff4ab443ea0490dca3077adc8": { + "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_f33d83cb2c5e4b0fa269645911612b9f", + "IPY_MODEL_f70757e331d54fe780dddec812488a80", + "IPY_MODEL_6eff9329673f471fab9af92dcfb466f9" + ], + "layout": "IPY_MODEL_45d50765336b400689cd6dccb5bd49c2" + } + }, + "7e3425d85df64b40b3d91d2e12f68afa": { + "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_e1ee646b1f89456c9039d2aec26a782f", + "max": 1336854258, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_56587c0d95a34b4bbd70bc5090b343c6", + "value": 1336854258 + } + }, + "7ea23ede7f1b416084fc06d75995aa04": { + "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_7b758c3662c646dfbd2b4fdc81969ae7", + "placeholder": "โ€‹", + "style": "IPY_MODEL_5fdc77c6687d48bba4bf158d7360f790", + "value": " 8/8 [01:12<00:00, 8.05s/it]" + } + }, + "7ec9904b053548a7b05975480aba3c11": { + "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": "" + } + }, + "7fc35233776745b8b538d6ab4cc9a9fa": { + "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 + } + }, + "80826a5bb11e4f31a474cbb6612f47cd": { + "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": "" + } + }, + "811086bdb09e41f68efe8d3138344cda": { + "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": "" + } + }, + "8125a923deda4f7a8bfb84788cac195d": { + "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_d767e6d427d74e5285b4cf40f96a6f42", + "placeholder": "โ€‹", + "style": "IPY_MODEL_61eb71f1486847a99bec98124e124c89", + "value": " 1.95G/1.95G [00:20<00:00, 124MB/s]" + } + }, + "81662d34a16c43c7b69dd39e5970e713": { + "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_0e895178b7434fe9ad14fe19f2c2d536", + "placeholder": "โ€‹", + "style": "IPY_MODEL_c46d3005f49e421ba802e286be0e2cfa", + "value": "model-00001-of-00008.safetensors: 100%" + } + }, + "81fef717b0b04557a58731aae6d2d217": { + "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": "" + } + }, + "833fb6c8fb8d49c0a2996c0b26672298": { + "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_b5fac59458d0474d9766305d61221b79", + "max": 231508, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_7a54a8f82304451abc7d54d3d8364f86", + "value": 231508 + } + }, + "835ea93a13914f05b6e5c531056b27d8": { + "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": "" + } + }, + "838d6b478fd84315b61849215df930ff": { + "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 + } + }, + "84395dd4cabe4fe99608a5f6813453d4": { + "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 + } + }, + "84850b1c84af49508fb86dbccfaca3f2": { + "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_f110a525d4c74bbdb8f7cbe6775b89f2", + "max": 815834680, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_0a125b878c6a47569213eb0af0086015", + "value": 815834680 + } + }, + "848d05caefd5460293b3ddd67a0d0b57": { + "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_3c70db72ea1c4b13883984abba12ee11", + "placeholder": "โ€‹", + "style": "IPY_MODEL_6818810d39b749af92655a8391f481e3", + "value": "onnx/config.json: 100%" + } + }, + "867e3c70641f44f1a361e1506434dee6": { + "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": "" + } + }, + "877fc3b43f9b4c29abbc80f89cea44b8": { + "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 + } + }, + "887299fc3e4e4251a799cd93dd72020c": { + "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": "" + } + }, + "8896c8eebd5b467fbeba67c773fb87c7": { + "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": "" + } + }, + "88f43dcc9ec64368ae775bfbf359288c": { + "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 + } + }, + "8992644e275c41f788e2f2631f7182b4": { + "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_dfc7d240e5cb49dd93ee810dd149367d", + "placeholder": "โ€‹", + "style": "IPY_MODEL_0a6ba3b846804ed292faee07c3848e7e", + "value": "Batches: 100%" + } + }, + "8c55ecd2565645cda1e08bf99533779d": { + "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_daff49759d004d83a0cce7567da3d6b2", + "placeholder": "โ€‹", + "style": "IPY_MODEL_bbe28c4107d64d1fb2cd89489b853c37", + "value": "model-00002-of-00008.safetensors: 100%" + } + }, + "8ccfd47c29bd429eb4c3f085c8c9c804": { + "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 + } + }, + "8cf0d8ee8493414e8118e4f21fafbd5f": { + "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 + } + }, + "8d2d47006224477a95f45c9d80de0cd7": { + "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": "" + } + }, + "8d587b6d61be458998c007f9f4b33d91": { + "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 + } + }, + "8d62b6954c9549fea343e0b851eb91ed": { + "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_b51ae84d69d94ef2a4723dc484b99a86", + "max": 1946243984, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_7d1fa8b12110489cbb02117e1080c16f", + "value": 1946243984 + } + }, + "8d89818bacdc4181b36e602d3ff04f07": { + "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 + } + }, + "8de4f53a8f5a4e37848ad1d3b29d6d7d": { + "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_8d89818bacdc4181b36e602d3ff04f07", + "placeholder": "โ€‹", + "style": "IPY_MODEL_c60eeb98054d4cd9ad97a7e46cbe97b0", + "value": "Loading checkpoint shards: 100%" + } + }, + "8e11c3beb5224d44803e671190910aff": { + "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_48befd5d89e54ac09fdf54778d0c683f", + "placeholder": "โ€‹", + "style": "IPY_MODEL_f0269904f03c40db812985f2bff6b390", + "value": "model.safetensors: 100%" + } + }, + "8e1c49d8b4f94b6a8acaaf0a0ffc7e86": { + "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 + } + }, + "8e383fea166a443da3254cfbe8a56496": { + "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_7fc35233776745b8b538d6ab4cc9a9fa", + "placeholder": "โ€‹", + "style": "IPY_MODEL_d2d918a86c92458e907fcc7e33dc1eaa", + "value": " 1.98G/1.98G [00:08<00:00, 186MB/s]" + } + }, + "8ef4b44358c641e5a8ea82e10636bdc2": { + "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": "" + } + }, + "8f32b676d0274cfb908e69c08d9adf44": { + "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": "" + } + }, + "8fc57d6471794d1e86696ed5e6edba1d": { + "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_a487295eee99441aaf94485d44f11176", + "placeholder": "โ€‹", + "style": "IPY_MODEL_44ec3f228cc240f5b8d531962e4720b2", + "value": "tokenizer_config.json: 100%" + } + }, + "8ff5c65bf5c0492c9c3e7d770f3a96e8": { + "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_b50f571f6624480f9cfe2228103e1799", + "placeholder": "โ€‹", + "style": "IPY_MODEL_721315569a2e448a9b4cdd42120e7d30", + "value": "README.md: 100%" + } + }, + "90249127cbc140969829f01c46f22d94": { + "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_646086a2a3f14493b31e97bda4b0379d", + "IPY_MODEL_abe57b61c78a4914bcd6750b196f20f8", + "IPY_MODEL_d28517b8f8d145289e7676aad6d69165" + ], + "layout": "IPY_MODEL_8ccfd47c29bd429eb4c3f085c8c9c804" + } + }, + "9057a90733204463bc0e56e3c7022211": { + "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_a8cfdc7881014e2bbf5fd5ac79ba1358", + "placeholder": "โ€‹", + "style": "IPY_MODEL_cd83cd2411b446209e7eb98981bdaeac", + "value": ".gitattributes: 100%" + } + }, + "906169a3b882485191a44593e063f313": { + "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 + } + }, + "90d984f49c8f4c1190bc32a40ea49393": { + "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_9205aa6b8573466b8db5a6470b231894", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_fd4f713580ec4cc09a72ea47c81f8bb6", + "value": 1 + } + }, + "90fc1e6d82c74639b60afb0cc3934783": { + "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 + } + }, + "9126068db8ca48fd9da15ba0da5583ed": { + "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_d2be1476adbf41ea8608625f0c2fc502", + "IPY_MODEL_d62258820cfc471fafa5daba3994ddb7", + "IPY_MODEL_a1a82877b96b4ad6a6e9da236aadb068" + ], + "layout": "IPY_MODEL_abff1f9d7daf4ef3917ed17d0e6e6ae2" + } + }, + "9205aa6b8573466b8db5a6470b231894": { + "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 + } + }, + "9294249206734c24851b02cd1fff6721": { + "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 + } + }, + "935316d9b949420fbb135c2d969313d0": { + "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_5052b65c54b5415782f46393af829840", + "placeholder": "โ€‹", + "style": "IPY_MODEL_887299fc3e4e4251a799cd93dd72020c", + "value": " 342/342 [00:00<00:00, 24.9kB/s]" + } + }, + "93c52e20ab0d4e22ab1228977cfff573": { + "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 + } + }, + "94c86f66fb364b99a5a8863760b25d27": { + "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": "" + } + }, + "94ec05a6e59942f1825ffa7fbbd165df": { + "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 + } + }, + "95282b2c15a44e008116208d87c6e726": { + "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_119110a5b54a4e09a36191760a26aa64", + "placeholder": "โ€‹", + "style": "IPY_MODEL_14a3db6ce6cf49628972bcf7ddb065d8", + "value": "model-00003-of-00008.safetensors: 100%" + } + }, + "95604f02776b4f74bccd362ee7508da2": { + "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_d33e1e68dcb348f896758235f9aaab28", + "placeholder": "โ€‹", + "style": "IPY_MODEL_e07f37439c944d68bcc8817a42f38668", + "value": "special_tokens_map.json: 100%" + } + }, + "95690d9ef922434c901c798adfa04331": { + "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": "" + } + }, + "961193e3b1eb42d58edaf60fce3b014f": { + "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_8de4f53a8f5a4e37848ad1d3b29d6d7d", + "IPY_MODEL_079ca37341e74d02983ff469900b4154", + "IPY_MODEL_7ea23ede7f1b416084fc06d75995aa04" + ], + "layout": "IPY_MODEL_ac4d33313f9b413a8c09e4801febc85f" + } + }, + "9639544457644846863b7c1456dc888b": { + "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 + } + }, + "96fb758483874988b8655b9a07d4c2e8": { + "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": "" + } + }, + "973fa81a71fd46d4ad6f838f60eb6697": { + "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 + } + }, + "98be06d130204c158b7d022ebf159504": { + "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_55e1df8b8c68496d82c4f873e876f298", + "placeholder": "โ€‹", + "style": "IPY_MODEL_c201cd836c784afe99ca631df3f08987", + "value": "onnx/vocab.txt: 100%" + } + }, + "993964702c8f4db4b151c27f9fd01871": { + "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 + } + }, + "99bfb08ab673468cb07c011b0e703c3a": { + "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_125134dd27fa4550855857c58beeed2d", + "max": 1431, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_2e51c805aa034ff7941a75ef209f94c7", + "value": 1431 + } + }, + "99ef47048b6747d09174087d135642bd": { + "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 + } + }, + "9a4d530473e14bdc850017c3adb7dd8b": { + "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 + } + }, + "9a7807d5b8f5492c8bf2b64bfe44e724": { + "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": "" + } + }, + "9bd3aaa705454fb8917d753b4bd765e5": { + "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 + } + }, + "9be72a592fe7414c82d9f3502685a5ee": { + "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": "" + } + }, + "9c09fced394a4edcb1506b5c6b660e96": { + "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_38abca8a7f6b4afca978e1d82549b376", + "max": 191, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_2b68aaa5a61a474d9d0d270573f0cce3", + "value": 191 + } + }, + "9c22d85c72114440a249e3384837cc12": { + "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_77a64763afbf4878a18eea7674aac851", + "max": 1979781432, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_b405cda4b93a45bda6765c676c272111", + "value": 1979781432 + } + }, + "9c27fc919b954ba3afa85fe7cb8edfce": { + "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": "" + } + }, + "9e6391a4342c42aaa496502d20b9cdfb": { + "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": "" + } + }, + "9ec80ccfd5d74122985eff112669f608": { + "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 + } + }, + "9fa1932573c3435c93b3c3cb2b0d0b0c": { + "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 + } + }, + "a038318b5fe244ae82a4e10ac41e599f": { + "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_3dba010242e049be9d6933c6d21d756c", + "IPY_MODEL_6d3444866586489493e92d7a56bb6167", + "IPY_MODEL_1fb17a2679ef4db9aeff73889f3e170f" + ], + "layout": "IPY_MODEL_0f01a6b4f47441688dfe383a4bf3eaba" + } + }, + "a15c992beace4499ba6dd8e1e11ebfc3": { + "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_49541ef11d8749b9bb442a3f03492dec", + "placeholder": "โ€‹", + "style": "IPY_MODEL_01f7e20485064c139e323563c4f58779", + "value": " 1.95G/1.95G [00:15<00:00, 34.6MB/s]" + } + }, + "a1a82877b96b4ad6a6e9da236aadb068": { + "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_7bea4a7bd6f44a53ae970e9774069527", + "placeholder": "โ€‹", + "style": "IPY_MODEL_13536e18ea29429f9dc8ae6a858f6165", + "value": " 342/342 [00:00<00:00, 21.3kB/s]" + } + }, + "a1e14103000449e4849b3b570865c9d3": { + "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_de1bcc4150254ca08ec2bc445081cd21", + "placeholder": "โ€‹", + "style": "IPY_MODEL_40f30f167879467ba7879fa200e911f4", + "value": "config.json: 100%" + } + }, + "a2eb7981365c4cc1ae669bfbdf247e34": { + "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 + } + }, + "a35398ea85eb4d52a8f7f105379f7946": { + "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 + } + }, + "a3e65da4aa1b431ab237a6c9b512107f": { + "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_464db59283eb4fcd961c8c7ca830ed6b", + "IPY_MODEL_bb48ceb5639d46a38cb673644095534d", + "IPY_MODEL_6a89e6f6f2f7489f990c112a201dfa3e" + ], + "layout": "IPY_MODEL_ca1fd86236374b4e99946a215f57a025" + } + }, + "a487295eee99441aaf94485d44f11176": { + "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 + } + }, + "a51ed1c508be49bc95ad7c7070603876": { + "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 + } + }, + "a52e514644574c47b81e264e19f2d509": { + "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_55f3bc78ab7c4a7585e2963b37116982", + "placeholder": "โ€‹", + "style": "IPY_MODEL_24a7b739959c4e1597ad7c2ebce14d42", + "value": " 1.98G/1.98G [00:20<00:00, 120MB/s]" + } + }, + "a5c218849154456a9324392beb000628": { + "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 + } + }, + "a5f1fafad6a84240b741f8c10dcf9c0e": { + "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 + } + }, + "a5f5150df0f94e309cdb70300fb37c23": { + "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": "" + } + }, + "a606423dcd8246179ee429e6bb11b6bf": { + "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 + } + }, + "a77129eb91f148be84fdd325d8590aa4": { + "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_a9d02970574d4eed95528b7303a2eedf", + "max": 385, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_45e4350ba3474008a306290a5c630a52", + "value": 385 + } + }, + "a8727611f65a4c69907d0746c3f4c932": { + "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_12bb3016d3df40dfa53e5631e3132157", + "max": 632, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_2fae4f42226b4b23bfdcda20a47fc228", + "value": 632 + } + }, + "a8cfdc7881014e2bbf5fd5ac79ba1358": { + "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 + } + }, + "a9ab9d16e3f54acc9eb8629e2fadfdd2": { + "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 + } + }, + "a9d02970574d4eed95528b7303a2eedf": { + "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 + } + }, + "a9fbae2a57ef4005bf3fe1b16e800b4f": { + "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 + } + }, + "aa2c118b91724d18b3125013e40544ef": { + "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": "" + } + }, + "abe57b61c78a4914bcd6750b196f20f8": { + "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_f439ebae9eb94418880400746665a0b8", + "max": 670341183, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_8ef4b44358c641e5a8ea82e10636bdc2", + "value": 670341183 + } + }, + "abff1f9d7daf4ef3917ed17d0e6e6ae2": { + "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 + } + }, + "ac4d33313f9b413a8c09e4801febc85f": { + "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 + } + }, + "ae4452b60b5245f4856c87c65feeb0ec": { + "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 + } + }, + "af60ca93a136422a993be7f5b3e1b31d": { + "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 + } + }, + "af85059b2edb45e1b420369cb740b079": { + "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_99ef47048b6747d09174087d135642bd", + "placeholder": "โ€‹", + "style": "IPY_MODEL_f702d3c539e441eb80325f0b44438da2", + "value": "tokenizer.model: 100%" + } + }, + "afb4edaac39743ffb2efe0e7b0bd2ec0": { + "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 + } + }, + "afbd282394674c678abbf919d1c191cf": { + "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_16494687214f45b4aab460f1f9069ea6", + "IPY_MODEL_dc577861e9fb41ed9acc74c5e9bf5b47", + "IPY_MODEL_36fa34fbcd1e4f92bea5c2a90493d411" + ], + "layout": "IPY_MODEL_f2634428804546418de32808efaf1530" + } + }, + "b02c21595054409fa95262a7c6eed8de": { + "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": "" + } + }, + "b091ccb3e3084c208559366cffa4cd61": { + "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": "" + } + }, + "b0f4c54cb084489d9c06e32f842f4a4d": { + "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 + } + }, + "b23403627f55461293ff090104bec7de": { + "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 + } + }, + "b28393fc3a814772b1b7e2f6c7a91377": { + "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 + } + }, + "b31cc016334e4764a7a891eb4e15a86b": { + "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_88f43dcc9ec64368ae775bfbf359288c", + "max": 1979781448, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_9e6391a4342c42aaa496502d20b9cdfb", + "value": 1979781448 + } + }, + "b405cda4b93a45bda6765c676c272111": { + "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": "" + } + }, + "b50f571f6624480f9cfe2228103e1799": { + "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 + } + }, + "b51ae84d69d94ef2a4723dc484b99a86": { + "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 + } + }, + "b5fac59458d0474d9766305d61221b79": { + "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 + } + }, + "b701c6b594364a789808310e9b29c46f": { + "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": "" + } + }, + "b7d432ee8e124892a8e2ecb3c8b9e2df": { + "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_f00da74e2a314016a0647c79de06320a", + "placeholder": "โ€‹", + "style": "IPY_MODEL_81fef717b0b04557a58731aae6d2d217", + "value": "added_tokens.json: 100%" + } + }, + "b8d505cbb53c43e8b4ee576e5552dc4d": { + "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": "" + } + }, + "b9b6043232c2414293b8269c5dca65b5": { + "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": "" + } + }, + "ba1bd18af8dc4a1c83d133863353350e": { + "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_c7437113a9be4393b08f6f13a6658adf", + "max": 1795303, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_8d2d47006224477a95f45c9d80de0cd7", + "value": 1795303 + } + }, + "bb093d805d2b4c14b8c8ef6780b78846": { + "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 + } + }, + "bb48ceb5639d46a38cb673644095534d": { + "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_d1b1fbab5fe4455896ec6500d3c3cd90", + "max": 711661, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_b701c6b594364a789808310e9b29c46f", + "value": 711661 + } + }, + "bb7885c8384b411ca2dbfddec73435a6": { + "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 + } + }, + "bba8441d75704b08bc3b8d28e02d43b8": { + "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 + } + }, + "bbe14c869fc14a06b69d033842527e5f": { + "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_29b6f65fb1bd46429e2ccccb9edc6308", + "max": 342, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_4e608c95787d49038292e0e5d32ae60d", + "value": 342 + } + }, + "bbe28c4107d64d1fb2cd89489b853c37": { + "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": "" + } + }, + "bc5fc6f85299400dac94017cdd7157e8": { + "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 + } + }, + "bd0e215850ba4a5284cf3bda39239d8c": { + "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": "" + } + }, + "bd6d0630da7c4201bdcdb69094c6486b": { + "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": "" + } + }, + "be91fe49f51d4080933fb163eb8c6451": { + "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": "" + } + }, + "bea14a90d7364c52bea4ab254b3a905b": { + "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_364ef703c8814d0990f7241a652bf4cb", + "placeholder": "โ€‹", + "style": "IPY_MODEL_a5f5150df0f94e309cdb70300fb37c23", + "value": " 816M/816M [00:04<00:00, 198MB/s]" + } + }, + "bec298d0cc3d473c8575b6eab552fde1": { + "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": "" + } + }, + "bf1ff1926c25426caa71fd5f501548c6": { + "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 + } + }, + "c123c3560c524f95a6f401d4a6af9ce5": { + "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 + } + }, + "c1ec4b57812b4f209bf9cfb7544b384a": { + "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 + } + }, + "c201cd836c784afe99ca631df3f08987": { + "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": "" + } + }, + "c2666023c92241979aa8f26a3f5ba385": { + "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_dcd9fa0e878c4daf8d253ec2c2530361", + "placeholder": "โ€‹", + "style": "IPY_MODEL_76bed73a9dd445629e37638425025193", + "value": " 42.0/42.0 [00:00<00:00, 3.28kB/s]" + } + }, + "c28c06cdc64d46b4814b12baa138fde4": { + "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_bf1ff1926c25426caa71fd5f501548c6", + "placeholder": "โ€‹", + "style": "IPY_MODEL_591073c9491144719d1944384ccf9b24", + "value": " 1/1 [00:00<00:00, 17.69it/s]" + } + }, + "c31f0e9940e2453ba71928ba2fa7501a": { + "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 + } + }, + "c3ab4ebbea3446e0986f652e9d634e56": { + "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": "" + } + }, + "c46d3005f49e421ba802e286be0e2cfa": { + "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": "" + } + }, + "c5017448e6fe4dd4bfd79dc51734d947": { + "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_95604f02776b4f74bccd362ee7508da2", + "IPY_MODEL_610e8ce03cb7466ab47e4341454e5a2a", + "IPY_MODEL_713c01dee7fd44da8a2205f521abc6ca" + ], + "layout": "IPY_MODEL_55d4554be0e34937b4c2a6b8585878d6" + } + }, + "c60eeb98054d4cd9ad97a7e46cbe97b0": { + "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": "" + } + }, + "c68a9cc5d0494742ba3f2a475fb0fb2f": { + "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 + } + }, + "c7437113a9be4393b08f6f13a6658adf": { + "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 + } + }, + "c781e7c3ea634a8082ae6558f04a547c": { + "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_7b1bbdc2d1334869a233ac61d7ce4a06", + "IPY_MODEL_ceb2aa2ce5b54c69a871daae9dd2621c", + "IPY_MODEL_cdc751ce67c14a918c4b2d45cab2fdd2" + ], + "layout": "IPY_MODEL_9294249206734c24851b02cd1fff6721" + } + }, + "c7e218c7014841f4973cfd293d8c1e24": { + "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_6a7ef2ecb8c141f2a832ee0400fc865f", + "placeholder": "โ€‹", + "style": "IPY_MODEL_ff20c20435b84e919cf24a08d1aa42c6", + "value": "model.onnx: 100%" + } + }, + "c88414e560884bf6bda3df1b7e102f86": { + "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 + } + }, + "c936870196bd4aca96b54a053b25695e": { + "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": "" + } + }, + "c9416e5b4ec948f7bd4117164d671fc5": { + "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_647fba4bfdc74acc8b11ad52173acde8", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_43e51692750548ae87ede2d14673b6bb", + "value": 1 + } + }, + "c984c0e6b64044b9acecbaf1a4d78941": { + "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_1dedb236c6b940a4b1810d89f456a1b1", + "IPY_MODEL_bbe14c869fc14a06b69d033842527e5f", + "IPY_MODEL_935316d9b949420fbb135c2d969313d0" + ], + "layout": "IPY_MODEL_e0d764a28e0b4d61b20cbf2e1a140b79" + } + }, + "ca0fcdee8a0346e1a9b51aa998aa4e44": { + "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_77a80b36e3474150b0259884f2776466", + "IPY_MODEL_b31cc016334e4764a7a891eb4e15a86b", + "IPY_MODEL_a52e514644574c47b81e264e19f2d509" + ], + "layout": "IPY_MODEL_62ad6e8312884caa8959e745c99bea20" + } + }, + "ca150abb051d4b50bad2162fbce81d64": { + "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_698dec2ab06442a79aea74dbf633db41", + "placeholder": "โ€‹", + "style": "IPY_MODEL_f9e41d6767974dbfa76e650cd15c2d3a", + "value": " 8/8 [02:03<00:00, 13.34s/it]" + } + }, + "ca1fd86236374b4e99946a215f57a025": { + "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 + } + }, + "cbc24777e6294426ae3bfa12388e69ac": { + "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_8d587b6d61be458998c007f9f4b33d91", + "placeholder": "โ€‹", + "style": "IPY_MODEL_46ad9f39bda947b898650b0494eea683", + "value": "Downloading shards: 100%" + } + }, + "cc45219087de428abd5741b65b6ca6c4": { + "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 + } + }, + "ccf604fb15764f7e9039cda4186a66e6": { + "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 + } + }, + "cd6c269aad094c6180e57f897a22a86a": { + "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 + } + }, + "cd83cd2411b446209e7eb98981bdaeac": { + "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": "" + } + }, + "cdc751ce67c14a918c4b2d45cab2fdd2": { + "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_a2eb7981365c4cc1ae669bfbdf247e34", + "placeholder": "โ€‹", + "style": "IPY_MODEL_5f36897ca0b84b5c95350fa79adf9541", + "value": " 49/49 [00:21<00:00, 5.82it/s]" + } + }, + "ceb2aa2ce5b54c69a871daae9dd2621c": { + "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_e7d8a5277820487f89dec1447f75d925", + "max": 49, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_835ea93a13914f05b6e5c531056b27d8", + "value": 49 + } + }, + "d0d6556c19464480a6447ef3bf3304f5": { + "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 + } + }, + "d1b1fbab5fe4455896ec6500d3c3cd90": { + "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 + } + }, + "d216d86c534f468cb9a3654de618baee": { + "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_4d25d562922a44ba9ffa0f90724a67f9", + "placeholder": "โ€‹", + "style": "IPY_MODEL_9a7807d5b8f5492c8bf2b64bfe44e724", + "value": "config.json: 100%" + } + }, + "d277495b29014121b73691104d3968df": { + "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_c68a9cc5d0494742ba3f2a475fb0fb2f", + "placeholder": "โ€‹", + "style": "IPY_MODEL_7ec9904b053548a7b05975480aba3c11", + "value": " 57.0/57.0 [00:00<00:00, 2.05kB/s]" + } + }, + "d28517b8f8d145289e7676aad6d69165": { + "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_4cf8f0f83f1243349f485effd5d39c95", + "placeholder": "โ€‹", + "style": "IPY_MODEL_2586578459ba441782c07238b033559a", + "value": " 670M/670M [00:03<00:00, 197MB/s]" + } + }, + "d295fd898b3b4fa9a7574167ac72f223": { + "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 + } + }, + "d2be1476adbf41ea8608625f0c2fc502": { + "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_0ba5c24890014583a2b22ef126eba15f", + "placeholder": "โ€‹", + "style": "IPY_MODEL_f65d4debebf84159a01b745e82ea05b8", + "value": "onnx/tokenizer_config.json: 100%" + } + }, + "d2d918a86c92458e907fcc7e33dc1eaa": { + "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": "" + } + }, + "d31dfd44c4d542558692825357fc0923": { + "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 + } + }, + "d33e1e68dcb348f896758235f9aaab28": { + "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 + } + }, + "d4721ef4bc824e0d8e108918059821b8": { + "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_d6fb45ea6a334fbfa1dd7ae713690126", + "IPY_MODEL_90d984f49c8f4c1190bc32a40ea49393", + "IPY_MODEL_3f99916aa25640f59d03fb489379217a" + ], + "layout": "IPY_MODEL_d295fd898b3b4fa9a7574167ac72f223" + } + }, + "d4c4b35f709c4e309a646c11c5969c20": { + "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_a9ab9d16e3f54acc9eb8629e2fadfdd2", + "placeholder": "โ€‹", + "style": "IPY_MODEL_56aac1dee7454f02b447cc011fe398de", + "value": "sentence_bert_config.json: 100%" + } + }, + "d563402baf824ce59660840a1ac90dba": { + "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_5209f9f2ebc443c8a450e5b9addac0bc", + "placeholder": "โ€‹", + "style": "IPY_MODEL_b8d505cbb53c43e8b4ee576e5552dc4d", + "value": " 1.80M/1.80M [00:00<00:00, 6.75MB/s]" + } + }, + "d62258820cfc471fafa5daba3994ddb7": { + "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_414a3fb6311a476f82914434f17c22c5", + "max": 342, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_0d592a27a4034fc782997cedf98458fa", + "value": 342 + } + }, + "d63817ed21a84d888e103c636f277a98": { + "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_65e08abfb4eb48119a7b1f28bdcf98d9", + "max": 670332568, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_12440faad20948d0b7282565ad0073c1", + "value": 670332568 + } + }, + "d6fb45ea6a334fbfa1dd7ae713690126": { + "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_bc5fc6f85299400dac94017cdd7157e8", + "placeholder": "โ€‹", + "style": "IPY_MODEL_6ee030695923448abe07028b3a8bec75", + "value": "Batches: 100%" + } + }, + "d6fd7ff9c4e84aeab860df23d55cbdad": { + "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": "" + } + }, + "d70163e99e9f4936a6d628183b1c69ac": { + "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 + } + }, + "d767e6d427d74e5285b4cf40f96a6f42": { + "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 + } + }, + "d7b05ebb92194fe99914ca9a737b51a9": { + "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": "" + } + }, + "d82cb6771c424dea87fa219f445bc876": { + "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_2d03948d0c7045f6bd262d99bbd9b6ec", + "IPY_MODEL_6d981aa02e7b4e75a329723b26e5ec67", + "IPY_MODEL_8e383fea166a443da3254cfbe8a56496" + ], + "layout": "IPY_MODEL_e7c69ff2df12457d958e36d46f670d25" + } + }, + "d84b41e617b9473b92b0b3718636635b": { + "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 + } + }, + "d8b05d1b3b1744a99e2774d579a332eb": { + "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_9bd3aaa705454fb8917d753b4bd765e5", + "placeholder": "โ€‹", + "style": "IPY_MODEL_1c34aee21a0f44f88328ccd52c3f1b44", + "value": " 1.43k/1.43k [00:00<00:00, 82.6kB/s]" + } + }, + "daff49759d004d83a0cce7567da3d6b2": { + "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 + } + }, + "dc4f46f4342a4ad5abffdcfe29e70735": { + "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_713ed74c7c9040b684c5de4daffc0611", + "placeholder": "โ€‹", + "style": "IPY_MODEL_9c27fc919b954ba3afa85fe7cb8edfce", + "value": "model-00006-of-00008.safetensors: 100%" + } + }, + "dc577861e9fb41ed9acc74c5e9bf5b47": { + "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_4adaae97661d42fd8f5968ff050758eb", + "max": 125, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_7603f5ea8d8944bcadba1de3d3f859d2", + "value": 125 + } + }, + "dcd9fa0e878c4daf8d253ec2c2530361": { + "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 + } + }, + "dd4ddc81806e46519b4a11d9277bc3f7": { + "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 + } + }, + "ddd6bdf8de8143ba8f2661680592876b": { + "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 + } + }, + "de1bcc4150254ca08ec2bc445081cd21": { + "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 + } + }, + "deb6f73d99cc478f9bf454d1091371da": { + "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 + } + }, + "dfc7d240e5cb49dd93ee810dd149367d": { + "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 + } + }, + "e07f37439c944d68bcc8817a42f38668": { + "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": "" + } + }, + "e09b532311d94e1c922ff0419317423e": { + "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_a1e14103000449e4849b3b570865c9d3", + "IPY_MODEL_f8a0da430bf941c1bf9a6925c5038c5d", + "IPY_MODEL_3964dfd87dc84e7d855ff17a50c7edfa" + ], + "layout": "IPY_MODEL_906169a3b882485191a44593e063f313" + } + }, + "e0d764a28e0b4d61b20cbf2e1a140b79": { + "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 + } + }, + "e1ee646b1f89456c9039d2aec26a782f": { + "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 + } + }, + "e299c8a2331946428fda5956e5afa6f4": { + "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_b23403627f55461293ff090104bec7de", + "placeholder": "โ€‹", + "style": "IPY_MODEL_61d25c428aba49278fdff22661f69cfe", + "value": " 712k/712k [00:00<00:00, 2.69MB/s]" + } + }, + "e2baa0a0815e44969833dc54b4a3d332": { + "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_5a9265050e29456298f1897943a51eb5", + "placeholder": "โ€‹", + "style": "IPY_MODEL_94c86f66fb364b99a5a8863760b25d27", + "value": " 1.89G/1.89G [00:11<00:00, 130MB/s]" + } + }, + "e32e89813bb44934bbbafdc1c29f6d46": { + "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_8c55ecd2565645cda1e08bf99533779d", + "IPY_MODEL_6d4dfdf6af084db28bbd1b53ef45cb0e", + "IPY_MODEL_8125a923deda4f7a8bfb84788cac195d" + ], + "layout": "IPY_MODEL_eaadae94101e421f939f23e9f04f7c02" + } + }, + "e37b8ada19284100a79c5a0053fc6e57": { + "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 + } + }, + "e3b1614fd7f045e8abede814ab715009": { + "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 + } + }, + "e3e1466500634983a83d484404bbadbf": { + "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 + } + }, + "e59399d1e0b94d0dafe8d4ada423983f": { + "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_8992644e275c41f788e2f2631f7182b4", + "IPY_MODEL_c9416e5b4ec948f7bd4117164d671fc5", + "IPY_MODEL_c28c06cdc64d46b4814b12baa138fde4" + ], + "layout": "IPY_MODEL_289691ed2b684649a643f29790618f6e" + } + }, + "e59b0ea238f348c791af631d17e45e12": { + "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_662420bd16d5424db5f10f06d66d1736", + "placeholder": "โ€‹", + "style": "IPY_MODEL_bd6d0630da7c4201bdcdb69094c6486b", + "value": " 1.95G/1.95G [00:14<00:00, 158MB/s]" + } + }, + "e7c69ff2df12457d958e36d46f670d25": { + "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 + } + }, + "e7d8a5277820487f89dec1447f75d925": { + "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 + } + }, + "e95fa2b029cf4267b8b0d941b00fb69c": { + "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_d0d6556c19464480a6447ef3bf3304f5", + "placeholder": "โ€‹", + "style": "IPY_MODEL_252f428430014e7dbd065c1caade5b21", + "value": " 67.9k/67.9k [00:00<00:00, 4.48MB/s]" + } + }, + "eaadae94101e421f939f23e9f04f7c02": { + "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 + } + }, + "ebfbc13cb82e490f8cab6e67fcc03663": { + "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_8fc57d6471794d1e86696ed5e6edba1d", + "IPY_MODEL_99bfb08ab673468cb07c011b0e703c3a", + "IPY_MODEL_d8b05d1b3b1744a99e2774d579a332eb" + ], + "layout": "IPY_MODEL_61ecda111cdc4524925c5fd3e9c774d1" + } + }, + "ec50c18fb7fc4626acdca1e6fcb73de8": { + "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 + } + }, + "ee9cc660911643ef9a72e872d129fa52": { + "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_f548b6812cb440ada1280d79b9c88ba3", + "placeholder": "โ€‹", + "style": "IPY_MODEL_65ac864db9f54d30b30c92a5f9c186d6", + "value": " 23.9k/23.9k [00:00<00:00, 1.76MB/s]" + } + }, + "f00da74e2a314016a0647c79de06320a": { + "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 + } + }, + "f0269904f03c40db812985f2bff6b390": { + "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": "" + } + }, + "f0a1b53fe9944ac78acf3274197aaca8": { + "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": "" + } + }, + "f110a525d4c74bbdb8f7cbe6775b89f2": { + "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 + } + }, + "f1d2b273e037425e9b5c28833c5af712": { + "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": "" + } + }, + "f21dbe5c94e043e5b85551654e6b77cb": { + "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": "" + } + }, + "f21de57aaebb4dcc9fd2ce60bf38e6a1": { + "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_e3b1614fd7f045e8abede814ab715009", + "max": 23950, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_6103a38b71d745558ad3a981973fc650", + "value": 23950 + } + }, + "f2634428804546418de32808efaf1530": { + "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 + } + }, + "f281660f5628497cb3b2244db8f8fcea": { + "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_2a0c57a096434055841003c631439b0e", + "max": 57, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_b02c21595054409fa95262a7c6eed8de", + "value": 57 + } + }, + "f2a1cb1fa32b46e9b151ba805a4950ec": { + "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": "" + } + }, + "f31387178a614be8a9016169d7dbc9c4": { + "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": "" + } + }, + "f33d83cb2c5e4b0fa269645911612b9f": { + "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_56a81641c0ba48e19c946b005bf5e4f2", + "placeholder": "โ€‹", + "style": "IPY_MODEL_51543aac89844fee9b0d2bdca5a3bd1e", + "value": "onnx/special_tokens_map.json: 100%" + } + }, + "f439ebae9eb94418880400746665a0b8": { + "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 + } + }, + "f5460d0ee17f48f5b40658548f0c8cd9": { + "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": "" + } + }, + "f548b6812cb440ada1280d79b9c88ba3": { + "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 + } + }, + "f55817c639ca49c893f12aa0f0824333": { + "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_2baaea36615e456da44ba2679f8a5845", + "IPY_MODEL_833fb6c8fb8d49c0a2996c0b26672298", + "IPY_MODEL_06ae8b7398e244f98117b2e6d461f8c6" + ], + "layout": "IPY_MODEL_4c1d95c143c0490b9246762f207049c7" + } + }, + "f65d4debebf84159a01b745e82ea05b8": { + "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": "" + } + }, + "f673b35bc2a84a029785b46bac8bdeb2": { + "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 + } + }, + "f702d3c539e441eb80325f0b44438da2": { + "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": "" + } + }, + "f702f24d27224347940a766033118b4e": { + "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_5bdb82f05d024d28bfbdbd412ed83112", + "max": 493443, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_7abff712fd0a43b2b0f399e605726c8c", + "value": 493443 + } + }, + "f70757e331d54fe780dddec812488a80": { + "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_e3e1466500634983a83d484404bbadbf", + "max": 125, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_95690d9ef922434c901c798adfa04331", + "value": 125 + } + }, + "f8a0da430bf941c1bf9a6925c5038c5d": { + "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_8cf0d8ee8493414e8118e4f21fafbd5f", + "max": 638, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_10c453db84f84aec92c2885969ee9781", + "value": 638 + } + }, + "f9d792955bff400ba04f0b5763f45e09": { + "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": "" + } + }, + "f9e41d6767974dbfa76e650cd15c2d3a": { + "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": "" + } + }, + "fa2b372909f345f1a2d45f69eaf18349": { + "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 + } + }, + "fcdef3304d2a4442b0a380f4d5417641": { + "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": "" + } + }, + "fd4f713580ec4cc09a72ea47c81f8bb6": { + "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": "" + } + }, + "fd6becf72d984c7480cb192522269bd6": { + "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_9639544457644846863b7c1456dc888b", + "placeholder": "โ€‹", + "style": "IPY_MODEL_3303e75e3aec46c0af3c3d6b75ba9a4a", + "value": "model.safetensors.index.json: 100%" + } + }, + "ff20c20435b84e919cf24a08d1aa42c6": { + "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": "" + } + } + } + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} From 7df400ae57cccc0227dd15f92898b763d390add4 Mon Sep 17 00:00:00 2001 From: duydl Date: Mon, 13 Jan 2025 03:10:00 +0700 Subject: [PATCH 15/17] Init agenic_rag_example_exercise nb --- 8_rag/notebooks/agenic_rag_example.ipynb | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 8_rag/notebooks/agenic_rag_example.ipynb diff --git a/8_rag/notebooks/agenic_rag_example.ipynb b/8_rag/notebooks/agenic_rag_example.ipynb new file mode 100644 index 00000000..c55a2876 --- /dev/null +++ b/8_rag/notebooks/agenic_rag_example.ipynb @@ -0,0 +1,10 @@ +{ + "cells": [], + "metadata": { + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 38edc409620af6130920639f9db4a4a231bb4a4c Mon Sep 17 00:00:00 2001 From: duydl Date: Mon, 13 Jan 2025 03:39:17 +0700 Subject: [PATCH 16/17] agent nb --- 8_rag/notebooks/agenic_rag_example.ipynb | 199 ++++++++++++++++++++++- 1 file changed, 197 insertions(+), 2 deletions(-) diff --git a/8_rag/notebooks/agenic_rag_example.ipynb b/8_rag/notebooks/agenic_rag_example.ipynb index c55a2876..138ccbc5 100644 --- a/8_rag/notebooks/agenic_rag_example.ipynb +++ b/8_rag/notebooks/agenic_rag_example.ipynb @@ -1,8 +1,203 @@ { - "cells": [], + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Implement Modular and AI Agents RAGs with `smolagent`\n", + "\n", + "This notebook demonstrates how to implement a basic Retrieval Augmented Generation (RAG) pipeline using the `smolagent` library combined with HuggingFace's models (e.g., `SmolLM`). \n", + "\n", + "
\n", + "

Exercise:

\n", + "

Implement a Modular RAG pipeline tailored to your needs using `smolagent` and integrate AI agents for orchestration.

\n", + "

Difficulty Levels

\n", + "

๐Ÿข Try different questions that could be handled with implemented modules/tools.

\n", + "

๐Ÿ• Experiment with new custom tools and knowledge bases.

\n", + "

๐Ÿฆ Implement multi-step agent and multi-agent workflow for chatbot.

\n", + "
\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ New run โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚ Which country won the UEFA EURO 2024?                                                                           โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ•ฐโ”€ TransformersModel - HuggingFaceTB/SmolLM2-135M-Instruct โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[38;2;212;183;2mโ•ญโ”€\u001b[0m\u001b[38;2;212;183;2mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[38;2;212;183;2m \u001b[0m\u001b[1;38;2;212;183;2mNew run\u001b[0m\u001b[38;2;212;183;2m \u001b[0m\u001b[38;2;212;183;2mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[38;2;212;183;2mโ”€โ•ฎ\u001b[0m\n", + "\u001b[38;2;212;183;2mโ”‚\u001b[0m \u001b[38;2;212;183;2mโ”‚\u001b[0m\n", + "\u001b[38;2;212;183;2mโ”‚\u001b[0m \u001b[1mWhich country won the UEFA EURO 2024?\u001b[0m \u001b[38;2;212;183;2mโ”‚\u001b[0m\n", + "\u001b[38;2;212;183;2mโ”‚\u001b[0m \u001b[38;2;212;183;2mโ”‚\u001b[0m\n", + "\u001b[38;2;212;183;2mโ•ฐโ”€\u001b[0m\u001b[38;2;212;183;2m TransformersModel - HuggingFaceTB/SmolLM2-135M-Instruct \u001b[0m\u001b[38;2;212;183;2mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[38;2;212;183;2mโ”€โ•ฏ\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” Step 0 โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[38;2;212;183;2mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” \u001b[0m\u001b[1mStep \u001b[0m\u001b[1;36m0\u001b[0m\u001b[38;2;212;183;2m โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
โ•ญโ”€ Executing this code: โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ\n",
+       "โ”‚    1 import re                                                                                                  โ”‚\n",
+       "โ”‚    2                                                                                                            โ”‚\n",
+       "โ”‚    3 def get_country_name(answer):                                                                              โ”‚\n",
+       "โ”‚    4     match = re.search(r\"^[a-zA-Z]+$\", answer)                                                              โ”‚\n",
+       "โ”‚    5     if match:                                                                                              โ”‚\n",
+       "โ”‚    6         return match.group(1)                                                                              โ”‚\n",
+       "โ”‚    7     else:                                                                                                  โ”‚\n",
+       "โ”‚    8         return None                                                                                        โ”‚\n",
+       "โ”‚    9                                                                                                            โ”‚\n",
+       "โ”‚   10 def get_country_name_from_answer(answer):                                                                  โ”‚\n",
+       "โ”‚   11     country_name = get_country_name(answer)                                                                โ”‚\n",
+       "โ”‚   12     if country_name:                                                                                       โ”‚\n",
+       "โ”‚   13         return country_name                                                                                โ”‚\n",
+       "โ”‚   14     else:                                                                                                  โ”‚\n",
+       "โ”‚   15         return None                                                                                        โ”‚\n",
+       "โ”‚   16                                                                                                            โ”‚\n",
+       "โ”‚   17 def main():                                                                                                โ”‚\n",
+       "โ”‚   18     country_name = get_country_name(get_answer(\"What is the place where James Bond lives?\"))               โ”‚\n",
+       "โ”‚   19     country_name_from_answer = get_country_name_from_answer(get_answer(\"What is the place where James Bond โ”‚\n",
+       "โ”‚      lives?\"))                                                                                                  โ”‚\n",
+       "โ”‚   20     print(f\"Answer: {country_name}\")                                                                       โ”‚\n",
+       "โ”‚   21     print(f\"Answer: {country_name_from_answer}\")                                                           โ”‚\n",
+       "โ”‚   22                                                                                                            โ”‚\n",
+       "โ”‚   23 if __name__ == \"__main__\":                                                                                 โ”‚\n",
+       "โ”‚   24     main()                                                                                                 โ”‚\n",
+       "โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\n",
+       "
\n" + ], + "text/plain": [ + "โ•ญโ”€ \u001b[1mExecuting this code:\u001b[0m โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ\n", + "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m 1 \u001b[0m\u001b[38;2;255;70;137;48;2;39;40;34mimport\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mre\u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", + "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m 2 \u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", + "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m 3 \u001b[0m\u001b[38;2;102;217;239;48;2;39;40;34mdef\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;166;226;46;48;2;39;40;34mget_country_name\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m(\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34manswer\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m)\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m:\u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", + "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m 4 \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mmatch\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;255;70;137;48;2;39;40;34m=\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mre\u001b[0m\u001b[38;2;255;70;137;48;2;39;40;34m.\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34msearch\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m(\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34mr\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m\"\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m^[a-zA-Z]+$\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m\"\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m,\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34manswer\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m)\u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", + "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m 5 \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;102;217;239;48;2;39;40;34mif\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mmatch\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m:\u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", + "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m 6 \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;102;217;239;48;2;39;40;34mreturn\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mmatch\u001b[0m\u001b[38;2;255;70;137;48;2;39;40;34m.\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mgroup\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m(\u001b[0m\u001b[38;2;174;129;255;48;2;39;40;34m1\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m)\u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", + "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m 7 \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;102;217;239;48;2;39;40;34melse\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m:\u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", + "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m 8 \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;102;217;239;48;2;39;40;34mreturn\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;102;217;239;48;2;39;40;34mNone\u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", + "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m 9 \u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", + "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m10 \u001b[0m\u001b[38;2;102;217;239;48;2;39;40;34mdef\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;166;226;46;48;2;39;40;34mget_country_name_from_answer\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m(\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34manswer\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m)\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m:\u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", + "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m11 \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mcountry_name\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;255;70;137;48;2;39;40;34m=\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mget_country_name\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m(\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34manswer\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m)\u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", + "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m12 \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;102;217;239;48;2;39;40;34mif\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mcountry_name\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m:\u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", + "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m13 \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;102;217;239;48;2;39;40;34mreturn\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mcountry_name\u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", + "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m14 \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;102;217;239;48;2;39;40;34melse\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m:\u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", + "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m15 \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;102;217;239;48;2;39;40;34mreturn\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;102;217;239;48;2;39;40;34mNone\u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", + "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m16 \u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", + "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m17 \u001b[0m\u001b[38;2;102;217;239;48;2;39;40;34mdef\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;166;226;46;48;2;39;40;34mmain\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m(\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m)\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m:\u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", + "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m18 \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mcountry_name\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;255;70;137;48;2;39;40;34m=\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mget_country_name\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m(\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mget_answer\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m(\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m\"\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34mWhat is the place where James Bond lives?\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m\"\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m)\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m)\u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", + "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m19 \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mcountry_name_from_answer\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;255;70;137;48;2;39;40;34m=\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mget_country_name_from_answer\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m(\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mget_answer\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m(\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m\"\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34mWhat is the place where James Bond\u001b[0m โ”‚\n", + "โ”‚ \u001b[48;2;39;40;34m \u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34mlives?\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m\"\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m)\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m)\u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", + "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m20 \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mprint\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m(\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34mf\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m\"\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34mAnswer: \u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m{\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mcountry_name\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m}\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m\"\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m)\u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", + "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m21 \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mprint\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m(\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34mf\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m\"\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34mAnswer: \u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m{\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mcountry_name_from_answer\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m}\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m\"\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m)\u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", + "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m22 \u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", + "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m23 \u001b[0m\u001b[38;2;102;217;239;48;2;39;40;34mif\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m__name__\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;255;70;137;48;2;39;40;34m==\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m\"\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m__main__\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m\"\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m:\u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", + "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m24 \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mmain\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m(\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m)\u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", + "โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Code execution failed: Code execution failed at line 'if __name__ == \"__main__\":\n",
+       "    main()' because of the following error:\n",
+       "The variable `__name__` is not defined.\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mCode execution failed: Code execution failed at line 'if __name__ == \u001b[0m\u001b[1;31m\"__main__\"\u001b[0m\u001b[1;31m:\u001b[0m\n", + "\u001b[1;31m \u001b[0m\u001b[1;31mmain\u001b[0m\u001b[1;31m(\u001b[0m\u001b[1;31m)\u001b[0m\u001b[1;31m' because of the following error:\u001b[0m\n", + "\u001b[1;31mThe variable `__name__` is not defined.\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
[Step 0: Duration 61.25 seconds| Input tokens: 2,343 | Output tokens: 616]\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2m[Step 0: Duration 61.25 seconds| Input tokens: 2,343 | Output tokens: 616]\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” Step 1 โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[38;2;212;183;2mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” \u001b[0m\u001b[1mStep \u001b[0m\u001b[1;36m1\u001b[0m\u001b[38;2;212;183;2m โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from smolagents import ToolCallingAgent, CodeAgent, GoogleSearchTool, TransformersModel\n", + "\n", + "agent = CodeAgent(\n", + " tools=[GoogleSearchTool()],\n", + " model=TransformersModel(model_id = \"HuggingFaceTB/SmolLM2-135M-Instruct\"),\n", + " # max_steps=2, \n", + " verbose=True\n", + ")\n", + "\n", + "response = agent.run(\"Which country won the UEFA EURO 2024?\")\n", + "print(response)" + ] + } + ], "metadata": { + "kernelspec": { + "display_name": "py310", + "language": "python", + "name": "python3" + }, "language_info": { - "name": "python" + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.16" } }, "nbformat": 4, From 64e4c2e5e43977ee3bde77069a957c9e3523fc45 Mon Sep 17 00:00:00 2001 From: duydl Date: Mon, 13 Jan 2025 11:46:44 +0700 Subject: [PATCH 17/17] Rename nb --- ...ynb => 1_naive_rag_haystack_example.ipynb} | 246 +++++++--- ... => 2_improved_rag_haystack_example.ipynb} | 0 8_rag/notebooks/3_agenic_rag_example.ipynb | 449 ++++++++++++++++++ 8_rag/notebooks/agenic_rag_example.ipynb | 205 -------- 4 files changed, 621 insertions(+), 279 deletions(-) rename 8_rag/notebooks/{naive_rag_haystack_example.ipynb => 1_naive_rag_haystack_example.ipynb} (98%) rename 8_rag/notebooks/{improved_rag_haystack_example.ipynb => 2_improved_rag_haystack_example.ipynb} (100%) create mode 100644 8_rag/notebooks/3_agenic_rag_example.ipynb delete mode 100644 8_rag/notebooks/agenic_rag_example.ipynb diff --git a/8_rag/notebooks/naive_rag_haystack_example.ipynb b/8_rag/notebooks/1_naive_rag_haystack_example.ipynb similarity index 98% rename from 8_rag/notebooks/naive_rag_haystack_example.ipynb rename to 8_rag/notebooks/1_naive_rag_haystack_example.ipynb index 2da2920e..71abe0c3 100644 --- a/8_rag/notebooks/naive_rag_haystack_example.ipynb +++ b/8_rag/notebooks/1_naive_rag_haystack_example.ipynb @@ -136,14 +136,13 @@ "name": "stderr", "output_type": "stream", "text": [ - "/home/duydl/Miniconda3/envs/py310/lib/python3.10/site-packages/torch/cuda/__init__.py:129: UserWarning: CUDA initialization: CUDA unknown error - this may be due to an incorrectly set up environment, e.g. changing env variable CUDA_VISIBLE_DEVICES after program start. Setting the available devices to be zero. (Triggered internally at ../c10/cuda/CUDAFunctions.cpp:108.)\n", - " return torch._C._cuda_getDeviceCount() > 0\n" + "There was a problem when trying to write in your cache folder (/home/duydl/.cache/huggingface/hub). You should set the environment variable TRANSFORMERS_CACHE to a writable directory.\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "1c3a9fbb4c9746f3858f90667726b395", + "model_id": "cc170ac2bad5466386ba5baf58cdaecd", "version_major": 2, "version_minor": 0 }, @@ -182,8 +181,8 @@ " else \"mps\" if torch.backends.mps.is_available() else \"cpu\"\n", ")\n", "\n", - "model_llm = \"HuggingFaceTB/SmolLM2-135M-Instruct\"\n", - "model_emb = \"sentence-transformers/all-MiniLM-L6-v2\"" + "model_llm = \"HuggingFaceTB/SmolLM2-1.7B-Instruct\" # \"HuggingFaceTB/SmolLM2-135M-Instruct\"\n", + "model_emb = \"thenlper/gte-large\"" ] }, { @@ -242,7 +241,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -271,7 +270,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "1d531db809df428fba588203517cb20d", + "model_id": "d79d6cf3cebc4ff39bd0cd6e688d93c0", "version_major": 2, "version_minor": 0 }, @@ -361,7 +360,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 21, "metadata": {}, "outputs": [], "source": [ @@ -383,13 +382,12 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "prompt_template = \"\"\"<|system|>Using the information contained in the context, give a conscise answer to the question.\n", - "If the answer is contained in the context, report the source URL.\n", - "If the answer cannot be deduced from the context, do not give an answer.\n", + "Report the source URL.\n", "<|user|>\n", "Context:\n", " {% for doc in documents %}\n", @@ -404,7 +402,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 23, "metadata": {}, "outputs": [ { @@ -435,48 +433,9 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 27, "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "f9c9e3f23390410bbdb0730209f54943", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Batches: 0%| | 0/1 [00:00Using the information contained in the context, give a comprehensive answer to the question.\n", - "If the answer is contained in the context, also report the source URL.\n", - "If the answer cannot be deduced from the context, do not give an answer.\n", - "<|user|>\n", - "Context:\n", - " \n", - " 8 in) deep.\n", - "Its main body is solid sterling silver and silver gilt, whilst its plinth is made of malachite, a semi-precious stone. URL:https://en.wikipedia.org/wiki/Premier_League\n", - " \n", - " The Premier League players decided to take the knee at selected \"significant moments\". They assured to \"remain resolutely committed to eradicate racial prejudice\". URL:https://en.wikipedia.org/wiki/Premier_League\n", - " \n", - " In the cases of Bayer Leverkusen and Wolfsburg, the clubs were founded by major corporations (respectively Bayer AG and Volkswagen) as sports clubs for their employees, while Hoffenheim has long received its primary support from SAP co-founder Dietmar Hopp, who played in the club's youth system.\n", - "After 2000 the German Football Association and the Bundesliga required every club to run a youth academy with the aim of developing local talent for the club and the national team. URL:https://en.wikipedia.org/wiki/Bundesliga\n", - " \n", - " These stars are a permanent part of their crest. However, Fรผrth has to leave the stars out of their jersey. URL:https://en.wikipedia.org/wiki/Bundesliga\n", - " \n", - " However, a\n" - ] - } - ], + "outputs": [], "source": [ "def get_answer(query):\n", "\n", @@ -489,50 +448,47 @@ " answer = results[\"llm\"][\"replies\"][0]\n", " return answer\n", "\n", - "print(get_answer(\"What is RAG?\"))" + "# print(get_answer(\"What is RAG?\"))" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "questions = \"\"\"\n", - "What was the result of the latest FIFA World Cup?\n", - "Who won the last UEFA Champions League?\n", - "Which country won the most recent Copa Amรฉrica?\n", - "What is the top scorer in the CONCACAF Gold Cup this year?\n", - "Which teams participated in the latest Africa Cup of Nations?\n", - "Who won the last Copa Libertadores?\n", - "What were the standout performances in UEFA Euro 2020?\n", - "Who is the current champion of Major League Soccer (MLS)?\n", - "What is the top team in the Premier League this season?\n", - "Who won La Liga this year?\n", - "Which Bundesliga team has the most titles in the last decade?\n", - "Which Serie A team won the last league championship?\n", - "Who is the top scorer of Ligue 1 this season?\n", - "Who won the UEFA Euro Golden Boot in the last competition?\n", - "Who won the most recent Ballon d'Or?\n", + "What was the result of the 2022 FIFA World Cup?\n", + "Who won the UEFA Champions League in 2024?\n", + "Which country won the 2024 Copa Amรฉrica?\n", + "Who won the 2024 Copa Libertadores?\n", + "Who is the current champion of Major League Soccer (MLS) in 2024?\n", + "What is the top team in the Premier League this 2024/2025 season?\n", + "Who won La Liga in 2024?\n", + "Which Bundesliga team has the most titles in the last decade (2015โ€“2024)?\n", + "Which Serie A team won the 2023/2024 league championship?\n", + "Who is the top scorer of Ligue 1 this 2024/2025 season?\n", + "Who won the UEFA Euro Golden Boot in 2024?\n", + "Who won the most recent Ballon d'Or in 2024?\n", "\"\"\".split('\\n')" ] }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Which Bundesliga team has the most titles in the last decade?\n" + "Who won La Liga in 2024?\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "24842a83c24b4154bbe5b6f7969ae586", + "model_id": "45185866b02649669692dc2f52de6585", "version_major": 2, "version_minor": 0 }, @@ -551,7 +507,149 @@ "<|user|>\n", "Context:\n", " \n", - " The Bundesliga is one of the most prestigious leagues in Germany, ranked 16th in the world in 2024. The league is divided into 12 teams, each with 12 members. The league is divided into 12 Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundesliga Bundes\n" + " The 2024โ€“25 season was won by Real Madrid with three games to spare, while Barcelona won the 2023โ€“24 edition.\n", + "In 2023, Real Madrid were the most successful club in the La Liga, winning the 2023โ€“24 edition.\n", + "<|user|>\n", + "Question: Who won La Liga in 2024?\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|assistant|>\n", + "<|user|>\n", + "<|\n" ] } ], diff --git a/8_rag/notebooks/improved_rag_haystack_example.ipynb b/8_rag/notebooks/2_improved_rag_haystack_example.ipynb similarity index 100% rename from 8_rag/notebooks/improved_rag_haystack_example.ipynb rename to 8_rag/notebooks/2_improved_rag_haystack_example.ipynb diff --git a/8_rag/notebooks/3_agenic_rag_example.ipynb b/8_rag/notebooks/3_agenic_rag_example.ipynb new file mode 100644 index 00000000..745ee6e2 --- /dev/null +++ b/8_rag/notebooks/3_agenic_rag_example.ipynb @@ -0,0 +1,449 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Implement Modular and AI Agents RAGs with `smolagent`\n", + "\n", + "This notebook demonstrates how to implement a basic Retrieval Augmented Generation (RAG) pipeline using the `smolagent` library combined with HuggingFace's models (e.g., `SmolLM`). \n", + "\n", + "
\n", + "

Exercise:

\n", + "

Implement a Modular RAG pipeline tailored to your needs using `smolagent` and integrate AI agents for orchestration.

\n", + "

Difficulty Levels

\n", + "

๐Ÿข Try different questions that could be handled with implemented modules/tools.

\n", + "

๐Ÿ• Experiment with new custom tools and knowledge bases.

\n", + "

๐Ÿฆ Implement multi-step agent and multi-agent workflow for chatbot.

\n", + "
\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ New run โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ”‚ Which country won the UEFA EURO 2024?                                                                           โ”‚\n",
+       "โ”‚                                                                                                                 โ”‚\n",
+       "โ•ฐโ”€ TransformersModel - HuggingFaceTB/SmolLM2-1.7B-Instruct โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[38;2;212;183;2mโ•ญโ”€\u001b[0m\u001b[38;2;212;183;2mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[38;2;212;183;2m \u001b[0m\u001b[1;38;2;212;183;2mNew run\u001b[0m\u001b[38;2;212;183;2m \u001b[0m\u001b[38;2;212;183;2mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[38;2;212;183;2mโ”€โ•ฎ\u001b[0m\n", + "\u001b[38;2;212;183;2mโ”‚\u001b[0m \u001b[38;2;212;183;2mโ”‚\u001b[0m\n", + "\u001b[38;2;212;183;2mโ”‚\u001b[0m \u001b[1mWhich country won the UEFA EURO 2024?\u001b[0m \u001b[38;2;212;183;2mโ”‚\u001b[0m\n", + "\u001b[38;2;212;183;2mโ”‚\u001b[0m \u001b[38;2;212;183;2mโ”‚\u001b[0m\n", + "\u001b[38;2;212;183;2mโ•ฐโ”€\u001b[0m\u001b[38;2;212;183;2m TransformersModel - HuggingFaceTB/SmolLM2-1.7B-Instruct \u001b[0m\u001b[38;2;212;183;2mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[38;2;212;183;2mโ”€โ•ฏ\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” Step 0 โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[38;2;212;183;2mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” \u001b[0m\u001b[1mStep \u001b[0m\u001b[1;36m0\u001b[0m\u001b[38;2;212;183;2m โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ\n",
+       "โ”‚ Calling tool: 'web_search' with arguments: {'query': 'UEFA EURO 2024 winner'}                                   โ”‚\n",
+       "โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\n",
+       "
\n" + ], + "text/plain": [ + "โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ\n", + "โ”‚ Calling tool: 'web_search' with arguments: {'query': 'UEFA EURO 2024 winner'} โ”‚\n", + "โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Error in tool call execution: Missing SerpAPI key. Make sure you have 'SERPAPI_API_KEY' in your env variables.\n",
+       "You should only use this tool with a correct input.\n",
+       "As a reminder, this tool's description is the following:\n",
+       "\n",
+       "- web_search: Performs a google web search for your query then returns a string of the top search results.\n",
+       "    Takes inputs: {'query': {'type': 'string', 'description': 'The search query to perform.'}, 'filter_year': \n",
+       "{'type': 'integer', 'description': 'Optionally restrict results to a certain year', 'nullable': True}}\n",
+       "    Returns an output of type: string\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mError in tool call execution: Missing SerpAPI key. Make sure you have \u001b[0m\u001b[1;31m'SERPAPI_API_KEY'\u001b[0m\u001b[1;31m in your env variables.\u001b[0m\n", + "\u001b[1;31mYou should only use this tool with a correct input.\u001b[0m\n", + "\u001b[1;31mAs a reminder, this tool's description is the following:\u001b[0m\n", + "\n", + "\u001b[1;31m- web_search: Performs a google web search for your query then returns a string of the top search results.\u001b[0m\n", + "\u001b[1;31m Takes inputs: \u001b[0m\u001b[1;31m{\u001b[0m\u001b[1;31m'query'\u001b[0m\u001b[1;31m: \u001b[0m\u001b[1;31m{\u001b[0m\u001b[1;31m'type'\u001b[0m\u001b[1;31m: \u001b[0m\u001b[1;31m'string'\u001b[0m\u001b[1;31m, \u001b[0m\u001b[1;31m'description'\u001b[0m\u001b[1;31m: \u001b[0m\u001b[1;31m'The search query to perform.'\u001b[0m\u001b[1;31m}\u001b[0m\u001b[1;31m, \u001b[0m\u001b[1;31m'filter_year'\u001b[0m\u001b[1;31m: \u001b[0m\n", + "\u001b[1;31m{\u001b[0m\u001b[1;31m'type'\u001b[0m\u001b[1;31m: \u001b[0m\u001b[1;31m'integer'\u001b[0m\u001b[1;31m, \u001b[0m\u001b[1;31m'description'\u001b[0m\u001b[1;31m: \u001b[0m\u001b[1;31m'Optionally restrict results to a certain year'\u001b[0m\u001b[1;31m, \u001b[0m\u001b[1;31m'nullable'\u001b[0m\u001b[1;31m: \u001b[0m\u001b[1;3;31mTrue\u001b[0m\u001b[1;31m}\u001b[0m\u001b[1;31m}\u001b[0m\n", + "\u001b[1;31m Returns an output of type: string\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
[Step 0: Duration 17.65 seconds| Input tokens: 1,112 | Output tokens: 42]\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2m[Step 0: Duration 17.65 seconds| Input tokens: 1,112 | Output tokens: 42]\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” Step 1 โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[38;2;212;183;2mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” \u001b[0m\u001b[1mStep \u001b[0m\u001b[1;36m1\u001b[0m\u001b[38;2;212;183;2m โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Error in generating tool call with model:\n",
+       "The JSON blob you used is invalid due to the following error: Expecting property name enclosed in double quotes: \n",
+       "line 1 column 2 (char 1).\n",
+       "JSON blob was: {'id': '93024', 'type': 'function', 'function': {'name': 'web_search', 'arguments': {'query': 'UEFA \n",
+       "EURO 2024 winner'}}}, decoding failed on that specific part of the blob:\n",
+       "''.\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mError in generating tool call with model:\u001b[0m\n", + "\u001b[1;31mThe JSON blob you used is invalid due to the following error: Expecting property name enclosed in double quotes: \u001b[0m\n", + "\u001b[1;31mline \u001b[0m\u001b[1;31m1\u001b[0m\u001b[1;31m column \u001b[0m\u001b[1;31m2\u001b[0m\u001b[1;31m \u001b[0m\u001b[1;31m(\u001b[0m\u001b[1;31mchar \u001b[0m\u001b[1;31m1\u001b[0m\u001b[1;31m)\u001b[0m\u001b[1;31m.\u001b[0m\n", + "\u001b[1;31mJSON blob was: \u001b[0m\u001b[1;31m{\u001b[0m\u001b[1;31m'id'\u001b[0m\u001b[1;31m: \u001b[0m\u001b[1;31m'93024'\u001b[0m\u001b[1;31m, \u001b[0m\u001b[1;31m'type'\u001b[0m\u001b[1;31m: \u001b[0m\u001b[1;31m'function'\u001b[0m\u001b[1;31m, \u001b[0m\u001b[1;31m'function'\u001b[0m\u001b[1;31m: \u001b[0m\u001b[1;31m{\u001b[0m\u001b[1;31m'name'\u001b[0m\u001b[1;31m: \u001b[0m\u001b[1;31m'web_search'\u001b[0m\u001b[1;31m, \u001b[0m\u001b[1;31m'arguments'\u001b[0m\u001b[1;31m: \u001b[0m\u001b[1;31m{\u001b[0m\u001b[1;31m'query'\u001b[0m\u001b[1;31m: \u001b[0m\u001b[1;31m'UEFA \u001b[0m\n", + "\u001b[1;31mEURO 2024 winner'\u001b[0m\u001b[1;31m}\u001b[0m\u001b[1;31m}\u001b[0m\u001b[1;31m}\u001b[0m\u001b[1;31m, decoding failed on that specific part of the blob:\u001b[0m\n", + "\u001b[1;31m''\u001b[0m\u001b[1;31m.\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
[Step 1: Duration 21.56 seconds| Input tokens: 2,468 | Output tokens: 91]\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2m[Step 1: Duration 21.56 seconds| Input tokens: 2,468 | Output tokens: 91]\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” Step 2 โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[38;2;212;183;2mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” \u001b[0m\u001b[1mStep \u001b[0m\u001b[1;36m2\u001b[0m\u001b[38;2;212;183;2m โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Error in generating tool call with model:\n",
+       "The JSON blob you used is invalid due to the following error: Expecting property name enclosed in double quotes: \n",
+       "line 1 column 2 (char 1).\n",
+       "JSON blob was: {'id': '93024', 'type': 'function', 'function': {'name': 'web_search', 'arguments': {'query': 'UEFA \n",
+       "EURO 2024 winner'}}}, decoding failed on that specific part of the blob:\n",
+       "''.\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mError in generating tool call with model:\u001b[0m\n", + "\u001b[1;31mThe JSON blob you used is invalid due to the following error: Expecting property name enclosed in double quotes: \u001b[0m\n", + "\u001b[1;31mline \u001b[0m\u001b[1;31m1\u001b[0m\u001b[1;31m column \u001b[0m\u001b[1;31m2\u001b[0m\u001b[1;31m \u001b[0m\u001b[1;31m(\u001b[0m\u001b[1;31mchar \u001b[0m\u001b[1;31m1\u001b[0m\u001b[1;31m)\u001b[0m\u001b[1;31m.\u001b[0m\n", + "\u001b[1;31mJSON blob was: \u001b[0m\u001b[1;31m{\u001b[0m\u001b[1;31m'id'\u001b[0m\u001b[1;31m: \u001b[0m\u001b[1;31m'93024'\u001b[0m\u001b[1;31m, \u001b[0m\u001b[1;31m'type'\u001b[0m\u001b[1;31m: \u001b[0m\u001b[1;31m'function'\u001b[0m\u001b[1;31m, \u001b[0m\u001b[1;31m'function'\u001b[0m\u001b[1;31m: \u001b[0m\u001b[1;31m{\u001b[0m\u001b[1;31m'name'\u001b[0m\u001b[1;31m: \u001b[0m\u001b[1;31m'web_search'\u001b[0m\u001b[1;31m, \u001b[0m\u001b[1;31m'arguments'\u001b[0m\u001b[1;31m: \u001b[0m\u001b[1;31m{\u001b[0m\u001b[1;31m'query'\u001b[0m\u001b[1;31m: \u001b[0m\u001b[1;31m'UEFA \u001b[0m\n", + "\u001b[1;31mEURO 2024 winner'\u001b[0m\u001b[1;31m}\u001b[0m\u001b[1;31m}\u001b[0m\u001b[1;31m}\u001b[0m\u001b[1;31m, decoding failed on that specific part of the blob:\u001b[0m\n", + "\u001b[1;31m''\u001b[0m\u001b[1;31m.\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
[Step 2: Duration 20.45 seconds| Input tokens: 3,824 | Output tokens: 140]\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2m[Step 2: Duration 20.45 seconds| Input tokens: 3,824 | Output tokens: 140]\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” Step 3 โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[38;2;212;183;2mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” \u001b[0m\u001b[1mStep \u001b[0m\u001b[1;36m3\u001b[0m\u001b[38;2;212;183;2m โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Error in generating tool call with model:\n",
+       "The JSON blob you used is invalid due to the following error: Expecting property name enclosed in double quotes: \n",
+       "line 1 column 2 (char 1).\n",
+       "JSON blob was: {'id': '93024', 'type': 'function', 'function': {'name': 'web_search', 'arguments': {'query': 'UEFA \n",
+       "EURO 2024 winner'}}}, decoding failed on that specific part of the blob:\n",
+       "''.\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mError in generating tool call with model:\u001b[0m\n", + "\u001b[1;31mThe JSON blob you used is invalid due to the following error: Expecting property name enclosed in double quotes: \u001b[0m\n", + "\u001b[1;31mline \u001b[0m\u001b[1;31m1\u001b[0m\u001b[1;31m column \u001b[0m\u001b[1;31m2\u001b[0m\u001b[1;31m \u001b[0m\u001b[1;31m(\u001b[0m\u001b[1;31mchar \u001b[0m\u001b[1;31m1\u001b[0m\u001b[1;31m)\u001b[0m\u001b[1;31m.\u001b[0m\n", + "\u001b[1;31mJSON blob was: \u001b[0m\u001b[1;31m{\u001b[0m\u001b[1;31m'id'\u001b[0m\u001b[1;31m: \u001b[0m\u001b[1;31m'93024'\u001b[0m\u001b[1;31m, \u001b[0m\u001b[1;31m'type'\u001b[0m\u001b[1;31m: \u001b[0m\u001b[1;31m'function'\u001b[0m\u001b[1;31m, \u001b[0m\u001b[1;31m'function'\u001b[0m\u001b[1;31m: \u001b[0m\u001b[1;31m{\u001b[0m\u001b[1;31m'name'\u001b[0m\u001b[1;31m: \u001b[0m\u001b[1;31m'web_search'\u001b[0m\u001b[1;31m, \u001b[0m\u001b[1;31m'arguments'\u001b[0m\u001b[1;31m: \u001b[0m\u001b[1;31m{\u001b[0m\u001b[1;31m'query'\u001b[0m\u001b[1;31m: \u001b[0m\u001b[1;31m'UEFA \u001b[0m\n", + "\u001b[1;31mEURO 2024 winner'\u001b[0m\u001b[1;31m}\u001b[0m\u001b[1;31m}\u001b[0m\u001b[1;31m}\u001b[0m\u001b[1;31m, decoding failed on that specific part of the blob:\u001b[0m\n", + "\u001b[1;31m''\u001b[0m\u001b[1;31m.\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
[Step 3: Duration 21.44 seconds| Input tokens: 5,180 | Output tokens: 189]\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2m[Step 3: Duration 21.44 seconds| Input tokens: 5,180 | Output tokens: 189]\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” Step 4 โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[38;2;212;183;2mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” \u001b[0m\u001b[1mStep \u001b[0m\u001b[1;36m4\u001b[0m\u001b[38;2;212;183;2m โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Error in generating tool call with model:\n",
+       "The JSON blob you used is invalid due to the following error: Expecting property name enclosed in double quotes: \n",
+       "line 1 column 2 (char 1).\n",
+       "JSON blob was: {'id': '93024', 'type': 'function', 'function': {'name': 'web_search', 'arguments': {'query': 'UEFA \n",
+       "EURO 2024 winner'}}}, decoding failed on that specific part of the blob:\n",
+       "''.\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mError in generating tool call with model:\u001b[0m\n", + "\u001b[1;31mThe JSON blob you used is invalid due to the following error: Expecting property name enclosed in double quotes: \u001b[0m\n", + "\u001b[1;31mline \u001b[0m\u001b[1;31m1\u001b[0m\u001b[1;31m column \u001b[0m\u001b[1;31m2\u001b[0m\u001b[1;31m \u001b[0m\u001b[1;31m(\u001b[0m\u001b[1;31mchar \u001b[0m\u001b[1;31m1\u001b[0m\u001b[1;31m)\u001b[0m\u001b[1;31m.\u001b[0m\n", + "\u001b[1;31mJSON blob was: \u001b[0m\u001b[1;31m{\u001b[0m\u001b[1;31m'id'\u001b[0m\u001b[1;31m: \u001b[0m\u001b[1;31m'93024'\u001b[0m\u001b[1;31m, \u001b[0m\u001b[1;31m'type'\u001b[0m\u001b[1;31m: \u001b[0m\u001b[1;31m'function'\u001b[0m\u001b[1;31m, \u001b[0m\u001b[1;31m'function'\u001b[0m\u001b[1;31m: \u001b[0m\u001b[1;31m{\u001b[0m\u001b[1;31m'name'\u001b[0m\u001b[1;31m: \u001b[0m\u001b[1;31m'web_search'\u001b[0m\u001b[1;31m, \u001b[0m\u001b[1;31m'arguments'\u001b[0m\u001b[1;31m: \u001b[0m\u001b[1;31m{\u001b[0m\u001b[1;31m'query'\u001b[0m\u001b[1;31m: \u001b[0m\u001b[1;31m'UEFA \u001b[0m\n", + "\u001b[1;31mEURO 2024 winner'\u001b[0m\u001b[1;31m}\u001b[0m\u001b[1;31m}\u001b[0m\u001b[1;31m}\u001b[0m\u001b[1;31m, decoding failed on that specific part of the blob:\u001b[0m\n", + "\u001b[1;31m''\u001b[0m\u001b[1;31m.\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
[Step 4: Duration 21.56 seconds| Input tokens: 6,536 | Output tokens: 238]\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2m[Step 4: Duration 21.56 seconds| Input tokens: 6,536 | Output tokens: 238]\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” Step 5 โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[38;2;212;183;2mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” \u001b[0m\u001b[1mStep \u001b[0m\u001b[1;36m5\u001b[0m\u001b[38;2;212;183;2m โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Error in generating tool call with model:\n",
+       "The JSON blob you used is invalid due to the following error: Expecting property name enclosed in double quotes: \n",
+       "line 1 column 2 (char 1).\n",
+       "JSON blob was: {'id': '93024', 'type': 'function', 'function': {'name': 'web_search', 'arguments': {'query': 'UEFA \n",
+       "EURO 2024 winner'}}}, decoding failed on that specific part of the blob:\n",
+       "''.\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mError in generating tool call with model:\u001b[0m\n", + "\u001b[1;31mThe JSON blob you used is invalid due to the following error: Expecting property name enclosed in double quotes: \u001b[0m\n", + "\u001b[1;31mline \u001b[0m\u001b[1;31m1\u001b[0m\u001b[1;31m column \u001b[0m\u001b[1;31m2\u001b[0m\u001b[1;31m \u001b[0m\u001b[1;31m(\u001b[0m\u001b[1;31mchar \u001b[0m\u001b[1;31m1\u001b[0m\u001b[1;31m)\u001b[0m\u001b[1;31m.\u001b[0m\n", + "\u001b[1;31mJSON blob was: \u001b[0m\u001b[1;31m{\u001b[0m\u001b[1;31m'id'\u001b[0m\u001b[1;31m: \u001b[0m\u001b[1;31m'93024'\u001b[0m\u001b[1;31m, \u001b[0m\u001b[1;31m'type'\u001b[0m\u001b[1;31m: \u001b[0m\u001b[1;31m'function'\u001b[0m\u001b[1;31m, \u001b[0m\u001b[1;31m'function'\u001b[0m\u001b[1;31m: \u001b[0m\u001b[1;31m{\u001b[0m\u001b[1;31m'name'\u001b[0m\u001b[1;31m: \u001b[0m\u001b[1;31m'web_search'\u001b[0m\u001b[1;31m, \u001b[0m\u001b[1;31m'arguments'\u001b[0m\u001b[1;31m: \u001b[0m\u001b[1;31m{\u001b[0m\u001b[1;31m'query'\u001b[0m\u001b[1;31m: \u001b[0m\u001b[1;31m'UEFA \u001b[0m\n", + "\u001b[1;31mEURO 2024 winner'\u001b[0m\u001b[1;31m}\u001b[0m\u001b[1;31m}\u001b[0m\u001b[1;31m}\u001b[0m\u001b[1;31m, decoding failed on that specific part of the blob:\u001b[0m\n", + "\u001b[1;31m''\u001b[0m\u001b[1;31m.\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
[Step 5: Duration 22.26 seconds| Input tokens: 7,892 | Output tokens: 287]\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2m[Step 5: Duration 22.26 seconds| Input tokens: 7,892 | Output tokens: 287]\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Reached max iterations.\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;31mReached max iterations.\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Final answer: assistant\n",
+       "The country that won the UEFA EURO 2024 is France.\n",
+       "
\n" + ], + "text/plain": [ + "Final answer: assistant\n", + "The country that won the UEFA EURO 2024 is France.\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
[Step 6: Duration 0.00 seconds| Input tokens: 8,234 | Output tokens: 310]\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2m[Step 6: Duration 0.00 seconds| Input tokens: 8,234 | Output tokens: 310]\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "assistant\n", + "The country that won the UEFA EURO 2024 is France.\n" + ] + } + ], + "source": [ + "from smolagents import ToolCallingAgent, CodeAgent, GoogleSearchTool, TransformersModel, HfApiModel\n", + "\n", + "agent = ToolCallingAgent(\n", + " tools=[GoogleSearchTool()],\n", + " # model=TransformersModel(model_id = \"HuggingFaceTB/SmolLM2-1.7B-Instruct\"),\n", + " model=HfApiModel(),\n", + " # max_steps=2, \n", + " verbose=True\n", + ")\n", + "\n", + "response = agent.run(\"Which country won the UEFA EURO 2024?\")\n", + "print(response)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "py310", + "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.10.16" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/8_rag/notebooks/agenic_rag_example.ipynb b/8_rag/notebooks/agenic_rag_example.ipynb deleted file mode 100644 index 138ccbc5..00000000 --- a/8_rag/notebooks/agenic_rag_example.ipynb +++ /dev/null @@ -1,205 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Implement Modular and AI Agents RAGs with `smolagent`\n", - "\n", - "This notebook demonstrates how to implement a basic Retrieval Augmented Generation (RAG) pipeline using the `smolagent` library combined with HuggingFace's models (e.g., `SmolLM`). \n", - "\n", - "
\n", - "

Exercise:

\n", - "

Implement a Modular RAG pipeline tailored to your needs using `smolagent` and integrate AI agents for orchestration.

\n", - "

Difficulty Levels

\n", - "

๐Ÿข Try different questions that could be handled with implemented modules/tools.

\n", - "

๐Ÿ• Experiment with new custom tools and knowledge bases.

\n", - "

๐Ÿฆ Implement multi-step agent and multi-agent workflow for chatbot.

\n", - "
\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ New run โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ\n",
-       "โ”‚                                                                                                                 โ”‚\n",
-       "โ”‚ Which country won the UEFA EURO 2024?                                                                           โ”‚\n",
-       "โ”‚                                                                                                                 โ”‚\n",
-       "โ•ฐโ”€ TransformersModel - HuggingFaceTB/SmolLM2-135M-Instruct โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\n",
-       "
\n" - ], - "text/plain": [ - "\u001b[38;2;212;183;2mโ•ญโ”€\u001b[0m\u001b[38;2;212;183;2mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[38;2;212;183;2m \u001b[0m\u001b[1;38;2;212;183;2mNew run\u001b[0m\u001b[38;2;212;183;2m \u001b[0m\u001b[38;2;212;183;2mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[38;2;212;183;2mโ”€โ•ฎ\u001b[0m\n", - "\u001b[38;2;212;183;2mโ”‚\u001b[0m \u001b[38;2;212;183;2mโ”‚\u001b[0m\n", - "\u001b[38;2;212;183;2mโ”‚\u001b[0m \u001b[1mWhich country won the UEFA EURO 2024?\u001b[0m \u001b[38;2;212;183;2mโ”‚\u001b[0m\n", - "\u001b[38;2;212;183;2mโ”‚\u001b[0m \u001b[38;2;212;183;2mโ”‚\u001b[0m\n", - "\u001b[38;2;212;183;2mโ•ฐโ”€\u001b[0m\u001b[38;2;212;183;2m TransformersModel - HuggingFaceTB/SmolLM2-135M-Instruct \u001b[0m\u001b[38;2;212;183;2mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[38;2;212;183;2mโ”€โ•ฏ\u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” Step 0 โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\n",
-       "
\n" - ], - "text/plain": [ - "\u001b[38;2;212;183;2mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” \u001b[0m\u001b[1mStep \u001b[0m\u001b[1;36m0\u001b[0m\u001b[38;2;212;183;2m โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
โ•ญโ”€ Executing this code: โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ\n",
-       "โ”‚    1 import re                                                                                                  โ”‚\n",
-       "โ”‚    2                                                                                                            โ”‚\n",
-       "โ”‚    3 def get_country_name(answer):                                                                              โ”‚\n",
-       "โ”‚    4     match = re.search(r\"^[a-zA-Z]+$\", answer)                                                              โ”‚\n",
-       "โ”‚    5     if match:                                                                                              โ”‚\n",
-       "โ”‚    6         return match.group(1)                                                                              โ”‚\n",
-       "โ”‚    7     else:                                                                                                  โ”‚\n",
-       "โ”‚    8         return None                                                                                        โ”‚\n",
-       "โ”‚    9                                                                                                            โ”‚\n",
-       "โ”‚   10 def get_country_name_from_answer(answer):                                                                  โ”‚\n",
-       "โ”‚   11     country_name = get_country_name(answer)                                                                โ”‚\n",
-       "โ”‚   12     if country_name:                                                                                       โ”‚\n",
-       "โ”‚   13         return country_name                                                                                โ”‚\n",
-       "โ”‚   14     else:                                                                                                  โ”‚\n",
-       "โ”‚   15         return None                                                                                        โ”‚\n",
-       "โ”‚   16                                                                                                            โ”‚\n",
-       "โ”‚   17 def main():                                                                                                โ”‚\n",
-       "โ”‚   18     country_name = get_country_name(get_answer(\"What is the place where James Bond lives?\"))               โ”‚\n",
-       "โ”‚   19     country_name_from_answer = get_country_name_from_answer(get_answer(\"What is the place where James Bond โ”‚\n",
-       "โ”‚      lives?\"))                                                                                                  โ”‚\n",
-       "โ”‚   20     print(f\"Answer: {country_name}\")                                                                       โ”‚\n",
-       "โ”‚   21     print(f\"Answer: {country_name_from_answer}\")                                                           โ”‚\n",
-       "โ”‚   22                                                                                                            โ”‚\n",
-       "โ”‚   23 if __name__ == \"__main__\":                                                                                 โ”‚\n",
-       "โ”‚   24     main()                                                                                                 โ”‚\n",
-       "โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\n",
-       "
\n" - ], - "text/plain": [ - "โ•ญโ”€ \u001b[1mExecuting this code:\u001b[0m โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ\n", - "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m 1 \u001b[0m\u001b[38;2;255;70;137;48;2;39;40;34mimport\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mre\u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", - "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m 2 \u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", - "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m 3 \u001b[0m\u001b[38;2;102;217;239;48;2;39;40;34mdef\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;166;226;46;48;2;39;40;34mget_country_name\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m(\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34manswer\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m)\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m:\u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", - "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m 4 \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mmatch\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;255;70;137;48;2;39;40;34m=\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mre\u001b[0m\u001b[38;2;255;70;137;48;2;39;40;34m.\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34msearch\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m(\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34mr\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m\"\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m^[a-zA-Z]+$\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m\"\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m,\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34manswer\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m)\u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", - "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m 5 \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;102;217;239;48;2;39;40;34mif\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mmatch\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m:\u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", - "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m 6 \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;102;217;239;48;2;39;40;34mreturn\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mmatch\u001b[0m\u001b[38;2;255;70;137;48;2;39;40;34m.\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mgroup\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m(\u001b[0m\u001b[38;2;174;129;255;48;2;39;40;34m1\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m)\u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", - "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m 7 \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;102;217;239;48;2;39;40;34melse\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m:\u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", - "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m 8 \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;102;217;239;48;2;39;40;34mreturn\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;102;217;239;48;2;39;40;34mNone\u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", - "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m 9 \u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", - "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m10 \u001b[0m\u001b[38;2;102;217;239;48;2;39;40;34mdef\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;166;226;46;48;2;39;40;34mget_country_name_from_answer\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m(\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34manswer\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m)\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m:\u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", - "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m11 \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mcountry_name\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;255;70;137;48;2;39;40;34m=\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mget_country_name\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m(\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34manswer\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m)\u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", - "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m12 \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;102;217;239;48;2;39;40;34mif\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mcountry_name\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m:\u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", - "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m13 \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;102;217;239;48;2;39;40;34mreturn\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mcountry_name\u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", - "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m14 \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;102;217;239;48;2;39;40;34melse\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m:\u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", - "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m15 \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;102;217;239;48;2;39;40;34mreturn\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;102;217;239;48;2;39;40;34mNone\u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", - "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m16 \u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", - "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m17 \u001b[0m\u001b[38;2;102;217;239;48;2;39;40;34mdef\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;166;226;46;48;2;39;40;34mmain\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m(\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m)\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m:\u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", - "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m18 \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mcountry_name\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;255;70;137;48;2;39;40;34m=\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mget_country_name\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m(\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mget_answer\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m(\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m\"\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34mWhat is the place where James Bond lives?\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m\"\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m)\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m)\u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", - "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m19 \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mcountry_name_from_answer\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;255;70;137;48;2;39;40;34m=\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mget_country_name_from_answer\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m(\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mget_answer\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m(\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m\"\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34mWhat is the place where James Bond\u001b[0m โ”‚\n", - "โ”‚ \u001b[48;2;39;40;34m \u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34mlives?\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m\"\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m)\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m)\u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", - "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m20 \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mprint\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m(\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34mf\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m\"\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34mAnswer: \u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m{\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mcountry_name\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m}\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m\"\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m)\u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", - "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m21 \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mprint\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m(\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34mf\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m\"\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34mAnswer: \u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m{\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mcountry_name_from_answer\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m}\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m\"\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m)\u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", - "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m22 \u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", - "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m23 \u001b[0m\u001b[38;2;102;217;239;48;2;39;40;34mif\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m__name__\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;255;70;137;48;2;39;40;34m==\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m\"\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m__main__\u001b[0m\u001b[38;2;230;219;116;48;2;39;40;34m\"\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m:\u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", - "โ”‚ \u001b[1;38;2;227;227;221;48;2;39;40;34m \u001b[0m\u001b[38;2;101;102;96;48;2;39;40;34m24 \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m \u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34mmain\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m(\u001b[0m\u001b[38;2;248;248;242;48;2;39;40;34m)\u001b[0m\u001b[48;2;39;40;34m \u001b[0m โ”‚\n", - "โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
Code execution failed: Code execution failed at line 'if __name__ == \"__main__\":\n",
-       "    main()' because of the following error:\n",
-       "The variable `__name__` is not defined.\n",
-       "
\n" - ], - "text/plain": [ - "\u001b[1;31mCode execution failed: Code execution failed at line 'if __name__ == \u001b[0m\u001b[1;31m\"__main__\"\u001b[0m\u001b[1;31m:\u001b[0m\n", - "\u001b[1;31m \u001b[0m\u001b[1;31mmain\u001b[0m\u001b[1;31m(\u001b[0m\u001b[1;31m)\u001b[0m\u001b[1;31m' because of the following error:\u001b[0m\n", - "\u001b[1;31mThe variable `__name__` is not defined.\u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
[Step 0: Duration 61.25 seconds| Input tokens: 2,343 | Output tokens: 616]\n",
-       "
\n" - ], - "text/plain": [ - "\u001b[2m[Step 0: Duration 61.25 seconds| Input tokens: 2,343 | Output tokens: 616]\u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” Step 1 โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\n",
-       "
\n" - ], - "text/plain": [ - "\u001b[38;2;212;183;2mโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” \u001b[0m\u001b[1mStep \u001b[0m\u001b[1;36m1\u001b[0m\u001b[38;2;212;183;2m โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”\u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from smolagents import ToolCallingAgent, CodeAgent, GoogleSearchTool, TransformersModel\n", - "\n", - "agent = CodeAgent(\n", - " tools=[GoogleSearchTool()],\n", - " model=TransformersModel(model_id = \"HuggingFaceTB/SmolLM2-135M-Instruct\"),\n", - " # max_steps=2, \n", - " verbose=True\n", - ")\n", - "\n", - "response = agent.run(\"Which country won the UEFA EURO 2024?\")\n", - "print(response)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "py310", - "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.10.16" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -}