From 019d8476386566fb55dab024798f34a7676c8a4f Mon Sep 17 00:00:00 2001 From: Adithya S K Date: Tue, 22 Oct 2024 15:33:30 +0530 Subject: [PATCH] updated embedding and similairty notebooks - Adithya S K --- ...erstanding_embeddings_and_similarity.ipynb | 7672 +++++++++++++++++ 1 file changed, 7672 insertions(+) create mode 100644 RAG/00_RAG_from_Scratch/Understanding_embeddings_and_similarity.ipynb diff --git a/RAG/00_RAG_from_Scratch/Understanding_embeddings_and_similarity.ipynb b/RAG/00_RAG_from_Scratch/Understanding_embeddings_and_similarity.ipynb new file mode 100644 index 0000000..5905b24 --- /dev/null +++ b/RAG/00_RAG_from_Scratch/Understanding_embeddings_and_similarity.ipynb @@ -0,0 +1,7672 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "ROTfl-U9gTUQ" + }, + "source": [ + "\n", + "## Understanding Embedding Models and Similarity\n", + "\n", + "\"Open" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "HPl0oIjHgTUW" + }, + "outputs": [], + "source": [ + "!pip install -q sentence-transformers\n", + "!pip install -q wikipedia-api\n", + "!pip install -q numpy\n", + "!pip install -q scipy\n", + "!pip install rich\n", + "!pip install pypdf2" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "id": "l8YYlEl5gTUX" + }, + "outputs": [], + "source": [ + "import re\n", + "import os\n", + "from rich import print\n", + "from sentence_transformers import SentenceTransformer\n", + "import numpy as np\n", + "import textwrap\n", + "from IPython.display import display, HTML" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "GMneaEhcgTUV" + }, + "source": [ + "Load Data" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "xH4ZZ5xUgTUY", + "outputId": "97736aae-2e7b-431a-ef7d-1107db3f7d9e" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
TAMIL -LLAMA : A N EWTAMIL LANGUAGE MODEL BASED ON\n",
+              "LLAMA 2\n",
+              "Abhinand Balachandran\n",
+              "abhinandb.ml@gmail.com\n",
+              "ABSTRACT\n",
+              "Language modeling has witnessed remarkable advancements in recent years, with Large Language\n",
+              "Models (LLMs) like ChatGPT setting unparalleled benchmarks in human-like text generation. How-\n",
+              "ever, a prevailing limitation is the underrepresentation of languages like Tamil in these cutting-edge\n",
+              "models, leading to suboptimal performance in diverse linguistic contexts. This paper addresses this\n",
+              "lacuna, enhancing the open-source LLaMA model with an addition of 16,000 Tamil tokens, aiming to\n",
+              "achieve superior text generation and comprehension in the Tamil language. We strategically employ\n",
+              "the LoRA methodology for efficient model training on a comprehensive Tamil corpus, ensuring com-\n",
+              "putational feasibility and model robustness. Moreover, we introduce a Tamil-translated version of the\n",
+              "Alpaca dataset and a subset of the OpenOrca dataset tailored for instruction fine-tuning. Our results\n",
+              "showcase significant performance improvements in Tamil text generation, with potential implications\n",
+              "for the broader landscape of LLMs in Indian languages. We further underscore our commitment\n",
+              "to open research by making our models, datasets, and code1publicly accessible, fostering further\n",
+              "innovations in language modeling.\n",
+              "1 Introduction\n",
+              "The past few years have been transformative for language modeling, with groundbreaking advances and monumental\n",
+              "achievements. At the forefront of this revolution was OpenAI’s ChatGPT (OpenAI, 2022), which not only raised the\n",
+              "bar in language modeling performance but also underscored the immense societal implications of such technologies.\n",
+              "Alongside ChatGPT, various Large Language Models (LLMs) have consistently demonstrated exceptional prowess in\n",
+              "natural language understanding and generation, heralding a new era in computational linguistics.\n",
+              "Central to the functionality of these modern LLMs is the Transformer architecture, a cornerstone concept brought to\n",
+              "the limelight by \"Attention is All You Need\" (Vaswani et al., 2017). This innovation transformed our approach to\n",
+              "sequence-based tasks, catalyzing pivotal models like BERT (Devlin et al., 2019) and redefining best practices in \n",
+              "Natural\n",
+              "Language Processing (NLP).\n",
+              "Subsequent developments, particularly the Generative Pre-trained Transformer (GPT) (Radford et al., 2018), \n",
+              "showcased\n",
+              "the profound potential of unsupervised pre-training on vast datasets. Models like GPT-3 and its successor, GPT-4\n",
+              "(OpenAI, 2023), have redefined benchmarks and fueled a renaissance in natural language understanding and \n",
+              "generation.\n",
+              "Beyond their technical prowess, they have prompted a renewed vigor in exploring the limits of Artificial General\n",
+              "Intelligence (AGI). These advancements, paired with exemplary performance in numerous applications, have galvanized\n",
+              "the NLP community, sparking widespread application and research from sentiment analysis to machine translation.\n",
+              "However, progress is not without its pitfalls. The elite LLMs, despite their remarkable capabilities, grapple with\n",
+              "challenges—primarily, their proprietary nature, which constricts open research. Furthermore, an English-centric\n",
+              "bias and the enormous computational requirements for training such behemoths further accentuate the call for more\n",
+              "accessible and diverse solutions.\n",
+              "In response, the open-source community has championed the creation of models like LLaMA (Touvron et al., 2023a)\n",
+              "and Mistral (Jiang et al., 2023). Such models, despite their compact nature, challenge the hegemony of giants like\n",
+              "ChatGPT in select benchmarks, heralding a promising direction for future research.\n",
+              "1GitHub Repository: https://github.com/abhinand5/tamil-llamaarXiv:2311.05845v1    10 Nov 2023However, as robust as \n",
+              "these models, like LLaMA and Mistral, might be, their proficiency in generating coherent text in\n",
+              "Tamil and several other Indian languages remains noticeably deficient. A fundamental limitation lies in their \n",
+              "minimal\n",
+              "vocabulary of Tamil characters, which is essential for effective text encoding and generation. This paper aims to \n",
+              "bridge\n",
+              "this gap by augmenting the existing LLaMA models’ vocabulary with an additional 16,000 Tamil tokens, markedly\n",
+              "enhancing their capability in processing and producing Tamil content. This method draws inspiration from a parallel\n",
+              "endeavor in the Chinese adaptation of LLaMA, as documented in Cui et al. (2023). To ensure efficient pre-training\n",
+              "and fine-tuning while maintaining computational feasibility, we leverage the LoRA (Hu et al., 2021) methodology. We\n",
+              "aspire that this initiative catalyzes further research endeavors, refining LLaMA and other open-source models \n",
+              "tailored\n",
+              "for Indian languages. A succinct overview of the principal contributions of this paper is as follows:\n",
+              "•We bolster the LLaMA model’s encoding and decoding proficiencies for Tamil by incorporating an additional\n",
+              "16,000 Tamil tokens, thereby expanding its vocabulary.\n",
+              "•Through the LoRA methodology, the augmented model undergoes training on an extensive Tamil corpus,\n",
+              "resulting in a marked enhancement of its text generation capabilities relative to its predecessor models.\n",
+              "•We present a Tamil-translated version of the original Alpaca dataset (Taori et al., 2023), paired with a subset of\n",
+              "the OpenOrca (Lian et al., 2023) dataset, both curated for instruction fine-tuning in Tamil.\n",
+              "•Our newly trained instruction and chat models, built upon the Alpaca and OpenOrca datasets, demonstrate\n",
+              "notable advancements in performance for the Tamil language compared to other open-source language models.\n",
+              "•To stimulate continuous innovation and broader adaptability, we grant public access to the models, datasets,\n",
+              "and associated code, inviting further exploration and encouraging the refinement of LLaMA models for diverse\n",
+              "languages.\n",
+              "2 Related Work\n",
+              "Within the broad field of Natural Language Processing (NLP), the advent of Large Language Models (LLMs) marks a\n",
+              "transformative moment. These models have heralded new capabilities in understanding, generating, and processing\n",
+              "various human languages, underpinning innovations from automated content creation to nuanced sentiment analysis.\n",
+              "While their proficiency in mainstream languages like English is widely recognized and leveraged, a disparity exists\n",
+              "in\n",
+              "their performance and availability for numerous non-European languages.\n",
+              "Tamil, a language with ancient roots and spoken by a substantial global population, epitomizes this disparity. \n",
+              "Despite\n",
+              "its linguistic depth and cultural significance, dedicated pre-trained LLMs for Tamil are conspicuously \n",
+              "underrepresented.\n",
+              "Most current offerings are generic, multipurpose LLMs, which do not cater specifically to the unique attributes of \n",
+              "the\n",
+              "Tamil language.\n",
+              "A survey of the existing literature reveals that many attempts to cater to the Tamil language through LLMs rely \n",
+              "heavily\n",
+              "on multilingual models. Works such as Scao et al. (2022), Shliazhko et al. (2022), and Lin et al. (2022) have all \n",
+              "ventured\n",
+              "into this domain. However, it is crucial to note that, except \"GPT-2 Tamil\" by Mahendiran (2021), all these models\n",
+              "are not exclusive to Tamil. While they can process Tamil to a certain extent, their capabilities are inherently \n",
+              "limited.\n",
+              "This limitation arises because the training data for these models often comprise a low fraction of Tamil content \n",
+              "relative\n",
+              "to other languages. Consequently, the nuances and intricacies specific to Tamil are often lost, leading to \n",
+              "suboptimal\n",
+              "performance.\n",
+              "The effort by Mahendiran (2021) represents a notable deviation from this trend. Here, the GPT-2 base model, \n",
+              "equipped\n",
+              "with 117 million parameters as outlined in Radford et al. (2019), was fine-tuned with a focus on Tamil, using both \n",
+              "the\n",
+              "Oscar dataset (Caswell et al., 2020) and The IndicNLP (Kunchukuttan, 2020) dataset. This approach signifies a \n",
+              "targeted\n",
+              "attempt to adapt LLM capabilities for the Tamil language specifically.\n",
+              "However, the broader landscape of Tamil-specific LLM research remains relatively uncharted. This context \n",
+              "underscores\n",
+              "the motivation for our present research. We endeavor to delve deeper into this space, addressing existing \n",
+              "shortcomings\n",
+              "and advancing the capabilities of LLMs tailored for Tamil.\n",
+              "3 Tamil LLaMA\n",
+              "3.1 Datasets Used\n",
+              "The development of Tamil-LLaMA involved using several different datasets, each chosen for specific parts of the\n",
+              "training and fine-tuning process. This approach was vital to ensure the model’s effectiveness across various tasks.\n",
+              "23.1.1 Datasets used for Pre-Training\n",
+              "For the initial pre-training phase of LLaMA 2 (Touvron et al., 2023a), we mainly used the CulturaX dataset (Nguyen\n",
+              "et al., 2023). This dataset is a combination of many popular datasets, including the Oscar dataset (Caswell et al.,\n",
+              "2020).\n",
+              "Out of the 4.72 million documents in CulturaX, we selected 600k documents (12 GB) for training. This choice was\n",
+              "made to manage training costs while aiming for high performance. Our approach was successful, as the model showed\n",
+              "strong results in text completion tasks even with this smaller dataset.\n",
+              "3.1.2 Datasets used for Instruction Tuning\n",
+              "The \"Instruction Tuning\" phase was a pivotal stage in refining LLaMA’s proficiency in precisely adhering to textual\n",
+              "instructions. For this enhancement, we incorporated a translated version of the Stanford Alpaca dataset (Taori et \n",
+              "al.,\n",
+              "2023), comprising 52,000 instructions. Concurrently, we integrated a specialized no-code section from the OpenOrca\n",
+              "dataset (Lian et al., 2023), which consists of around 93,000 instructions. The deliberate focus on no-code \n",
+              "instructions\n",
+              "was to streamline the training process, eliminating the intricacies presented by coding instructions during \n",
+              "translation.\n",
+              "To ensure translation uniformity and accuracy across the datasets, the Google Translation API service was our tool \n",
+              "of\n",
+              "choice. We meticulously translated the entirety of the Alpaca dataset while also applying a similar methodology to \n",
+              "the\n",
+              "OpenOrca subset.\n",
+              "We believe that leveraging diverse datasets has bolstered LLaMA’s enhanced capability to discern and generate\n",
+              "contextually pertinent responses across a spectrum of prompts.\n",
+              "3.2 Background on the LLaMA Models\n",
+              "Introduced by Touvron et al. (2023a), LLaMA has emerged as an essential milestone in the world of open-source\n",
+              "large language models (LLMs), with the renowned Transformer architecture (Vaswani et al., 2017) as its foundation.\n",
+              "While it draws inspiration from models like GPT for its basic structure—comprising an embedding layer and multiple\n",
+              "transformer blocks—LLaMA has its unique features. LLaMA has brought forward several innovative techniques such\n",
+              "as pre-normalization (Zhang and Sennrich, 2019), SwiGLU activation (Shazeer, 2020), and rotary embeddings (Su\n",
+              "et al., 2022). Offered in sizes ranging from 7B (7 Billion) to 65B (65 Billion) parameters, LLaMA has been trained\n",
+              "on a rich mixture of content sources, including web pages, books, and academic papers. Its strong performance on\n",
+              "benchmarks, especially given its relatively compact size compared to other models, has made it a noteworthy \n",
+              "contender\n",
+              "in the LLM landscape, drawing considerable attention in the AI research community.\n",
+              "Building upon its predecessor’s foundation, LLaMA 2 (Touvron et al., 2023b) introduces monumental enhancements to\n",
+              "the LLaMA lineage. With a dataset expanded by 40% relative to LLaMA 1, the models under LLaMA 2 exhibit an\n",
+              "enriched comprehension of diverse content, leading to improved text generation. An extended context length of 4,096\n",
+              "tokens empowers LLaMA 2 to process and understand more extensive textual segments, significantly benefiting tasks\n",
+              "such as translation and intricate question answering. Another pivotal innovation in LLaMA 2 is adopting the \n",
+              "grouped-\n",
+              "query attention mechanism (Ainslie et al., 2023), facilitating faster inference despite its expanded size compared \n",
+              "to\n",
+              "LLaMA 1.\n",
+              "In the course of our research, we made a conscious choice to employ LLaMA 2 as our primary language model. Several\n",
+              "factors influenced this decision. Firstly, LLaMA 2 is a recent addition to the lineage of Large Language Models, \n",
+              "which\n",
+              "implies that it benefits from the latest advancements in model training and architectural innovations. This recent \n",
+              "launch\n",
+              "incorporates the most up-to-date techniques and methodologies. Secondly, compared with its predecessor, LLaMA\n",
+              "1, the enhancements in LLaMA 2 are undeniably compelling. These improvements are not just incremental; they\n",
+              "represent substantial strides in areas such as data exposure, context length, and attention mechanisms. The \n",
+              "evolution\n",
+              "from LLaMA 1 to LLaMA 2 is emblematic of the rapid advancements in the field, and by leveraging the latter, we\n",
+              "aimed to ensure our research was grounded in the most cutting-edge tools available.\n",
+              "3.3 Expansion of Tamil Vocabulary\n",
+              "LLaMA 2, as outlined in the seminal work of Touvron et al. (2023b), is backed by an expansive pre-training corpus \n",
+              "of 2\n",
+              "Trillion tokens. A detailed linguistic analysis of this vast corpus reveals a striking imbalance in language \n",
+              "representation.\n",
+              "An overwhelming 89.7% of the tokens are sourced from English, with other European languages collectively \n",
+              "contributing\n",
+              "to nearly 10% of the dataset. In stark contrast, diverse languages such as Tamil and Hindi represent a meager \n",
+              "presence,\n",
+              "with their combined token count along with other under-represented languages accounting for less than 0.21%.\n",
+              "This skewed distribution raises concerns about the genuine multilingual and cross-lingual capabilities of LLaMA 2.\n",
+              "While it is evident that the model is proficient in several European languages, its ability to comprehend and \n",
+              "generate\n",
+              "3content in languages like Tamil needs to be improved substantially. Our preliminary experiments further \n",
+              "underscored\n",
+              "this limitation. When presented with tasks in Tamil, LLaMA 2 exhibited a remarkable lack of coherence in its \n",
+              "responses.\n",
+              "In fact, its performance was notably inferior to smaller models, underscoring a noticeable shortcoming in LLaMA 2’s\n",
+              "coverage of worldwide languages. There is a clear need for the open-source community to focus on languages like\n",
+              "Tamil, spoken by millions globally across multiple countries.\n",
+              "To bolster the text generation and understanding abilities of LLaMA 2 in Tamil, we advocate extending its \n",
+              "pre-training\n",
+              "phase with an expansive Tamil corpus, as recommended by Cui et al. (2023). However, this alone is not sufficient. A\n",
+              "limitation arises from LLaMA’s existing vocabulary, which has a tiny number of Tamil characters. Although LLaMA\n",
+              "can bypass this by encoding unknown tokens, this process considerably lengthens the sequences, leading to \n",
+              "substantial\n",
+              "delays during encoding and decoding. Typically, a single Tamil character is translated into 3-4 byte tokens. \n",
+              "Moreover,\n",
+              "these byte tokens are not uniquely purposed for Tamil characters but represent UTF-8 tokens from various languages.\n",
+              "This dual role complicates the task for transformer encoders and byte-tokens to understand and capture the nuanced\n",
+              "semantics of Tamil characters proficiently.\n",
+              "To overcome these problems and to enhance the text generation capabilities in Tamil, we propose the incorporation \n",
+              "of\n",
+              "an additional 16,000 Tamil tokens to the pre-existing vocabulary of the LLAMA 2 model. This methodology echoes the\n",
+              "strategies employed in developing Chinese LLaMA (Cui et al., 2023). The subsequent steps explain the process of\n",
+              "vocabulary extension:\n",
+              "1.Employ SentencePiece (Kudo and Richardson, 2018) to train a Tamil Tokenizer on an extensive corpus\n",
+              "of contemporary Tamil text, capturing the essence of modern linguistic nuances necessary for coherent\n",
+              "communication.\n",
+              "2.Integrate the original tokenizer of the LLaMA 2 model with the vocabulary derived from the newly trained\n",
+              "SentencePiece tokenizer. This amalgamation culminates in an augmented tokenizer encompassing an additional\n",
+              "16,000 Tamil tokens, leading to an aggregated vocabulary size of 48,000 (32,000 original + 16,000 new).\n",
+              "3.Drawing parallels from Cui et al. (2023), the LLaMA model is then tailored to accommodate the Tamil LLaMA\n",
+              "tokenizer. This modification necessitates resizing the word embeddings and the language model head from\n",
+              "a matrix shape V ×H to V’ ×H. Herein, V represents the original vocabulary size of 32,000, whereas V’\n",
+              "signifies the extended size of 48,000. Importantly, this adjustment ensures the preservation of the embeddings\n",
+              "associated with the original vocabulary by appending the new rows to the concluding segments of the initial\n",
+              "embedding matrices.\n",
+              "In Figure 1, we can see that the Tamil LLaMA tokenizer needs only 20% to 25% of the tokens that the original LLaMA\n",
+              "model uses to encode Tamil text. This makes the Tamil LLaMA much more efficient. With this crucial update, the\n",
+              "model can handle over three times more information and works three times faster. In conclusion, our modifications \n",
+              "to\n",
+              "LLaMA 2 significantly bolster its capabilities in understanding and generating Tamil content. By adding 16,000 \n",
+              "Tamil\n",
+              "tokens, we ensure a more efficient and nuanced representation. The new Tamil LLaMA tokenizer drastically reduces\n",
+              "the required tokens, making encoding more efficient.\n",
+              "Figure 1: Tokenizer comparisons between original LLaMA and Tamil LLaMA.\n",
+              "43.4 Pre-Training Phase\n",
+              "In order to harness the full potential of the expanded vocabulary of Tamil LLaMA, a robust pre-training phase is\n",
+              "implemented using a comprehensive Tamil text corpus. The datasets utilized during this training phase are detailed \n",
+              "in\n",
+              "3.1.1.\n",
+              "Causal Language Modelling Approach The central mechanism for this pre-training is Causal Language Modelling\n",
+              "(CLM). This method specializes in predicting a given token xtrelying entirely on its preceding tokens. Formally, \n",
+              "the\n",
+              "objective during this training phase is to maximize the likelihood of the entire sequence, as represented by:\n",
+              "P(x1, x2, . . . , x T) =TY\n",
+              "t=1P(xt|x1, x2, . . . , x t−1) (1)\n",
+              "Breaking down the elements of this equation:\n",
+              "•x1, x2, . . . , x T: The individual tokens that constitute the sequence.\n",
+              "•P(xt|x1, x2, . . . , x t−1): Represents the conditional probability of the token xt, which depends on the preced-\n",
+              "ing tokens in the sequence.\n",
+              "Significance of the CLM in Language Adaptation The CLM stage is integral to enhancing LLaMA’s capability in\n",
+              "Tamil and other languages. It facilitates the model in learning the intricate syntactic patterns, semantic \n",
+              "subtleties, and\n",
+              "unique linguistic features of Tamil. Due to its autoregressive characteristics, the CLM mimics the human approach \n",
+              "to\n",
+              "comprehending and generating language, which is primarily shaped by the previous context. Hence, at the end of this\n",
+              "initial training period, LLaMA becomes capable of interpreting and creating Tamil text that is pertinent to the \n",
+              "given\n",
+              "context. This sets a strong foundation for further fine-tuning and specific task-based training sessions.\n",
+              "3.5 Fine-Tuning Phase\n",
+              "Following the foundational pre-training phase, the fine-tuning phase emerges as a crucial step, especially for \n",
+              "modern\n",
+              "Large Language Models (LLMs) deployed in real-world scenarios. A broad understanding of language structure and\n",
+              "semantics, while essential, does not suffice for such applications. This gap is addressed by instruction \n",
+              "fine-tuning, a\n",
+              "tailored process enabling LLMs to interpret and execute task-oriented instructions conveyed in natural language. \n",
+              "Rather\n",
+              "than the traditional approach of adapting to specific datasets, instruction fine-tuning focuses on a wide array of \n",
+              "tasks\n",
+              "articulated through language, ensuring the LLM’s adaptability without task-specific alterations. The datasets \n",
+              "employed\n",
+              "in this phase are elaborated in Section 3.1.2.\n",
+              "Instruction fine-tuning’s transformative essence lies in its ability to enhance an LLM’s dynamism and \n",
+              "responsiveness.\n",
+              "While pre-training equips the model with general linguistic proficiency, instruction fine-tuning refines it to \n",
+              "interact\n",
+              "seamlessly with users through natural language, bridging the gap between overarching language mastery and nuanced,\n",
+              "task-specific agility.\n",
+              "The instruction format employed closely resembles the one described in the original Alpaca dataset (Taori et al., \n",
+              "2023).\n",
+              "Both prompt templates suggested by Alpaca have been utilized: one that includes an input field within the \n",
+              "instruction\n",
+              "and another that does not. The prompt templates used during training are given in Figure 2.\n",
+              "It is essential to clarify that in both templates, the first line signifies the system prompts. For the Alpaca \n",
+              "dataset (Taori\n",
+              "et al., 2023), we utilize the two system prompts as mentioned in Figure 2. However, for the OpenOrca subset (Lian\n",
+              "et al., 2023), a distinct approach is taken: given that this subset already includes a dedicated field for the \n",
+              "system prompt\n",
+              "within its dataset, we utilize that specific prompt.\n",
+              "3.6 Experimental Setup and Training Details\n",
+              "3.6.1 LoRA Approach for Pre-Training and Fine-Tuning\n",
+              "LoRA (Low-Rank Adapters) is a technique that offers an efficient pathway to fine-tuning large language models, as\n",
+              "introduced by Hu et al. (2021). This approach is especially beneficial for its computational efficiency, enabling \n",
+              "the\n",
+              "fine-tuning of language models without the need for extensive GPU resources. We employed the LoRA method to\n",
+              "moderate training expenses while also accelerating the training timeline. Training the complete set of parameters\n",
+              "for models like LLaMA can be exceedingly expensive and resource-intensive, which is often beyond the budget of\n",
+              "individual research teams or small organizations.\n",
+              "5Figure 2: Prompt Template for Instruction Tasks\n",
+              "1. Prompt T emplate Without Input\n",
+              "ஒரு பணிைய எவ ் வாறு நிைறேவற ் ற ேவண ் டும ் என ் று கூறும ் அறB-\n",
+              "வுைரகீேழஉள ் ளது. ேவண ் டுேகாைளப ் ெபாருத ் தமாகநிைறவுெசய ் -\n",
+              "கின ் ற பதில ் ஒன ் ைற எழுதுக.\n",
+              "### Instruction:\n",
+              "{instruction}\n",
+              "### Response:\n",
+              "{output}\n",
+              "2. Prompt T emplate With Input\n",
+              "ஒரு பணிைய எவ ் வாறு நிைறேவற ் ற ேவண ் டும ் என ் று கூறும ் அறB-\n",
+              "வுைர கீேழ உள ் ளது. ேமலும ் விரிவான பின ் னணிைய வழங ் கும ் ஓர ்\n",
+              "உள ் ளீடும ் ெகாடுக ் கப ் பட ் டுள ் ளது. ேவண ் டுேகாைளப ் ெபாருத ் தமாக\n",
+              "நிைறவு ெசய ் கின ் ற பதில ் ஒன ் ைற எழுதுக.\n",
+              "### Instruction:\n",
+              "{instruction}\n",
+              "### Input:\n",
+              "{input}\n",
+              "### Response:\n",
+              "{output}\n",
+              "3.6.2 Experimental Setups for Pre-Training\n",
+              "The foundational models of Tamil LLaMA are initiated with the original LLaMA weights and undergo pre-training\n",
+              "using the fp16precision setting for both the 7B2and 13B3parameter versions. We utilize 12GB of Tamil text sourced\n",
+              "from Nguyen et al. (2023) during this pre-training phase. Further insights on the dataset can be found in section \n",
+              "3.1.1.\n",
+              "Our pre-training strategy incorporates the LoRA method Hu et al. (2021), where we integrate LoRA adapters into the\n",
+              "attention vectors and subsequently train the embeddings, LM heads, and the newly incorporated LoRA parameters. A\n",
+              "noteworthy deviation from the methodology of the Chinese LLaMA (Cui et al., 2023) in our approach is the \n",
+              "elimination\n",
+              "of the initial exclusive training of embeddings. Instead of following it with a two-stage LoRA training of \n",
+              "attention\n",
+              "blocks, embeddings, and LM heads, we’ve opted for a streamlined approach to curb costs.\n",
+              "For the training infrastructure, we harnessed an Nvidia A100 GPU with 80GB of VRAM. The models were trained for\n",
+              "1 epoch on the entire dataset, and the training time spanned 48 hours for 7B model and 60 hours for the 13B model \n",
+              "on\n",
+              "Microsoft Azure’s Standard NC24adsA 100v4instance.\n",
+              "The detailed hyperparameters used for training are listed in Table 1.\n",
+              "3.6.3 Experimental Setups for Instruction Fine-Tuning\n",
+              "The 7B4and 13B5models, once pre-trained, undergo fine-tuning in alignment with the procedures outlined in Section\n",
+              "3.5. The datasets employed for this phase are elaborated upon in Section 3.1.2. We persist with the LoRA \n",
+              "methodology\n",
+              "for fine-tuning, executing it under the fp16precision setting for both models. Our datasets comprise translated \n",
+              "variants\n",
+              "of Alpaca (Taori et al., 2023) and a select subset from OpenOrca (Lian et al., 2023).\n",
+              "2Tamil LLaMA 7B Pretrained: https://huggingface.co/abhinand/tamil-llama-7b-base-v0.1\n",
+              "3Tamil LLaMA 13B Pretrained: https://huggingface.co/abhinand/tamil-llama-13b-base-v0.1\n",
+              "4Tamil LLaMA 7B Instruct: https://huggingface.co/abhinand/tamil-llama-7b-instruct-v0.1\n",
+              "5Tamil LLaMA 13B Instruct: https://huggingface.co/abhinand/tamil-llama-13b-instruct-v0.1\n",
+              "6Table 1: Pre-Training Hyperparameters\n",
+              "Configurations 7B 13B\n",
+              "Training Data 12GB 4GB\n",
+              "Epochs 1 1\n",
+              "Batch Size 64 64\n",
+              "Initial Learning Rate 2e-4 2e-4\n",
+              "Max Sequence Length 512 512\n",
+              "LoRA Rank 64 64\n",
+              "LoRA Alpha 128 128\n",
+              "LoRA Target Modules QKVO, MLP QKVO, MLP\n",
+              "Training Precision FP16 FP16\n",
+              "In a bid to augment the models’ proficiency with Tamil-centric literature, cultural nuances, and historical \n",
+              "contexts, we\n",
+              "leverage a tailored dataset sourced from Wikipedia. Additionally, to extract instructions from this text, we \n",
+              "utilize the\n",
+              "Self-Instruct method, as highlighted in Wang et al. (2023). This approach involves the GPT-4 (OpenAI, 2023) APIs\n",
+              "from OpenAI to generate the new instruction dataset. It is crucial to note that the system prompts, referenced in \n",
+              "Section\n",
+              "3.1.2, remain consistent during this supplemental fine-tuning phase. For the hardware, the same A100 GPU with 80GB\n",
+              "of VRAM was utilized.\n",
+              "In summary, our fine-tuning approach employs a new translated dataset consisting of roughly 145,000 instructions. A\n",
+              "detailed account of the hyperparameters used for fine-tuning can be found in the Table 2.\n",
+              "Table 2: Fine-tuning Hyperparameters\n",
+              "Configurations 7B 13B\n",
+              "Training Data 145k 145k\n",
+              "Epochs 2 1\n",
+              "Batch Size 64 64\n",
+              "Dropout Rate 0.1 0.1\n",
+              "Initial Learning Rate 2e-4 2e-4\n",
+              "Max Sequence Length 512 512\n",
+              "LoRA Rank 64 64\n",
+              "LoRA Alpha 128 128\n",
+              "LoRA Target Modules QKVO, MLP QKVO, MLP\n",
+              "Training Precision FP16 FP16\n",
+              "4 Results on Instruction Following Tasks\n",
+              "4.1 Task Design and Evaluation Method\n",
+              "Evaluating the outcomes of text generation tasks is intricate due to their multifaceted formats, distinguishing \n",
+              "them\n",
+              "from typical Natural Language Understanding (NLU) tasks. Drawing inspiration from previous studies that employed\n",
+              "GPT-4 (OpenAI, 2023) for scoring, we similarly engage GPT-4 to assign a grade on a 10-point scale to each instance.\n",
+              "This approach is more efficient than human evaluations. However, understanding the potential inaccuracies of \n",
+              "GPT-4’s\n",
+              "evaluations, we supplement its scores with manual reviews, adjusting them as necessary. Such hands-on inspections\n",
+              "affirm the consistency and authenticity of the scores, ensuring they genuinely mirror the efficacy of the models \n",
+              "under\n",
+              "review.\n",
+              "With the GPT-4-based scoring and manual verifications, we have established a robust evaluation framework for our\n",
+              "Tamil LLaMA. Our assessment suite is diligently designed to provide a basic evaluation of Tamil LLaMA. This suite\n",
+              "comprises over 120 diverse examples, covering areas such as Question Answering, Reasoning, Literature, \n",
+              "Entertainment,\n",
+              "Translation, Programming, and Ethics, among others. The overall score for a specific task is computed by summing\n",
+              "the scores from its constituent samples and normalizing it to a 100-point scale. Such an approach ensures a \n",
+              "holistic\n",
+              "reflection of the models’ capabilities across varying tasks, yielding a well-rounded measure of their overall \n",
+              "performance.\n",
+              "74.2 Generation Parameters\n",
+              "The choice of generation parameters during inference greatly affects the caliber of the results in tasks involving \n",
+              "text\n",
+              "generation. Additionally, the degree of quantization can also affect performance. Below are the generation \n",
+              "parameters\n",
+              "we adopted for model evaluations:\n",
+              "•Quantization Config : The model is loaded in 8−bit, with the torch data type specified as bfloat 16.\n",
+              "•Context Size: The context size is maintained at the model’s default of 4096 tokens.\n",
+              "•Temperature: We assign a temperature value of 0.2 to guide the randomness during sampling. A lower\n",
+              "temperature prompts the model to produce more deterministic outputs, whereas a higher value boosts diversity,\n",
+              "potentially compromising coherence. For creative instructions, we adjust the temperature to 0.7 to encourage\n",
+              "varied outputs.\n",
+              "•Top-k Sampling : With k set to 50, the model selects its succeeding token from the 50 most probable candidates,\n",
+              "introducing a level of unpredictability and variety to the resulting text.\n",
+              "•Top-p Sampling : Complementing Top-k sampling, we employ Top-p sampling with a threshold of 0.90. This\n",
+              "ensures the model weighs a fluid set of tokens, which, combined, represent 90\n",
+              "•Maximum Sequence Length : To keep the output concise and pertinent, we cap the generated sequence at 512\n",
+              "tokens.\n",
+              "•Repetition Penalty : A repetition penalty of 1.1 is applied to deter the model from producing redundant text,\n",
+              "disincentivizing previously chosen tokens.\n",
+              "For these evaluations, we utilized a Google Colab notebook powered by a T4 GPU.\n",
+              "4.3 Results from Instruction Tasks\n",
+              "The evaluation scores of the Tamil LLaMA models, as rated by GPT-4, are presented in Table 3. A noteworthy\n",
+              "observation during our evaluation is the superior performance of our models compared to gpt-3.5-turbo in manual\n",
+              "assessments, which is further reinforced by the commendable scores in GPT-4’s evaluations. However, it is essential\n",
+              "to\n",
+              "consider that GPT-4 might inherently favor responses from other GPT model lineages. Even though our model excels in\n",
+              "numerous tasks, there are areas of exception, such as ethics, and this was anticipated, given that we did not \n",
+              "undertake\n",
+              "any alignment efforts. Challenges in literature/entertainment and other areas can be attributed to data limitations\n",
+              "during\n",
+              "the pre-training phase, primarily due to cost constraints. Despite these nuances, our models establish a robust \n",
+              "foundation\n",
+              "for subsequent enhancements and progress in large language models tailored to Tamil.\n",
+              "Table 3: GPT-4 rated performance scores for different models on Tamil instructions\n",
+              "Task Type Tamil-LLaMA-7B Tamil-LLaMA-13B gpt-3.5-turbo\n",
+              "Question Answering 77.00 75.33 54.33\n",
+              "Open-ended QA 84.47 85.26 58.68\n",
+              "Reasoning 47.50 64.25 63.50\n",
+              "Literature 45.50 40.00 71.00\n",
+              "Entertainment 43.33 50.00 60.00\n",
+              "Creative Writing 92.50 95.62 59.69\n",
+              "Translation 60.56 66.67 92.78\n",
+              "Coding 63.57 76.07 57.14\n",
+              "Ethics 23.75 57.50 40.00\n",
+              "Overall 63.83 71.17 61.33\n",
+              "By observing Table 3, several intriguing outcomes emerge. Notably, the gpt-3.5-turbo , despite its prowess in \n",
+              "numerous\n",
+              "languages, appears to be eclipsed by the Tamil LLaMA models in multiple domains. A standout observation was\n",
+              "the Ethics category, where the gpt-3.5-turbo model demonstrated a propensity to respond to potentially dangerous\n",
+              "queries in Tamil. Additionally, in the Coding section, the gpt-3.5-turbo ’s responses either seemed to exhibit a \n",
+              "lack of\n",
+              "comprehension or overlooked critical details, leading to a subdued score. While gpt-3.5-turbo excels in tasks \n",
+              "related to\n",
+              "English and other languages, its performance in the context of Tamil reveals areas for weaknesses.\n",
+              "84.3.1 Reasoning:\n",
+              "In reasoning tasks, the models demonstrate commendable performance. While minor discrepancies occasionally arise in\n",
+              "areas such as dates, quantities, and formulas, they predominantly excel in reasoning exercises. According to our \n",
+              "manual\n",
+              "evaluations, even our smaller Tamil-LLaMA 7B model surpasses the performance of the much larger LLaMA 2 70B in\n",
+              "Tamil text generation. In comparison, even gpt-3.5-turbo (OpenAI, 2022) often falters in several reasoning \n",
+              "instructions,\n",
+              "producing outputs that miss the mark in relevance, clarity, fluency, and accuracy. This inadequacy in performance \n",
+              "is\n",
+              "also observed in LLaMA 2 70B, rendering their generated Tamil text less beneficial. Examples of responses related \n",
+              "to\n",
+              "reasoning tasks are given in the Figure 5.\n",
+              "We conducted our comparisons with LLaMA 2 70B using the model hosted by Perplexity Labs.\n",
+              "4.3.2 Translation:\n",
+              "For translation tasks, our models exhibit satisfactory performance, particularly when translating from a foreign \n",
+              "language\n",
+              "to Tamil. However, the accuracy diminishes when translating from Tamil to other languages—a shortcoming we aim to\n",
+              "address in future iterations. Based on our manual evaluations, our models outperform the original LLaMA 2 70B in\n",
+              "Tamil text translations. However, their efficacy is roughly on par with gpt-3.5-turbo . Examples of outputs for \n",
+              "translation\n",
+              "tasks are given in Figure 6.\n",
+              "4.3.3 Code Generation:\n",
+              "Our models exhibit impressive performance in code generation tasks despite the limited code instructions present\n",
+              "in the training dataset. They capably provide coherent explanations in Tamil for the generated code. Based on our\n",
+              "hands-on evaluations, our models markedly surpass the performance of the more sizable LLaMA 2 70B model, which\n",
+              "when instructed in Tamil, often either misconstrues the task or produces erroneous answers in English. However, it \n",
+              "is\n",
+              "important to highlight that our model is not tailored for coding tasks. While it handles more straightforward \n",
+              "problems\n",
+              "adeptly, it encounters challenges with more intricate ones. Example responses from our models for Code Generation\n",
+              "tasks can be found in Figure 7.\n",
+              "4.3.4 Open Question Answering\n",
+              "In open question answering tasks, much like in reasoning, the model displays a commendable performance. Despite\n",
+              "occasional inaccuracies in areas like dates and other factual information, its proficiency often exceeded our \n",
+              "expectations,\n",
+              "delivering surprising results on multiple instances. Example responses from our models for Open Question Answering\n",
+              "tasks can be found in Figure 8.\n",
+              "4.3.5 Creative Writing / Text Generation\n",
+              "Text generation is a foundational capability for Large Language Models (LLMs), with creative text generation—such \n",
+              "as\n",
+              "crafting letters or applications—being a particularly notable use case. In general, larger models have an edge in \n",
+              "this\n",
+              "domain, often outshining their smaller counterparts. The quality and quantity of training data play pivotal roles \n",
+              "in this\n",
+              "context. While the sheer volume of data can improve performance, the richness and quality of the data are equally \n",
+              "vital.\n",
+              "With abundant high-quality training data, even smaller models can sometimes surpass the performance of larger ones.\n",
+              "In our experiments, our models showed decent performance in standard tasks. However, they faced challenges when\n",
+              "assigned with more complicated tasks. Example responses from our models for Creative Writing tasks can be found in\n",
+              "Figure 9.\n",
+              "4.3.6 Mathematical reasoning\n",
+              "Mathematical reasoning presents a significant challenge for our models. Like many Large Language Models (LLMs),\n",
+              "they don’t excel in handling mathematical tasks. From our hands-on experiments, we observed that the performance of\n",
+              "our models, mainly when dealing with Tamil, lagged behind that of the original English LLaMA models. Recognizing\n",
+              "this as an area of improvement, we intend to prioritize and enhance the model’s capabilities in subsequent \n",
+              "iterations.\n",
+              "Examples of outputs for mathematical reasoning tasks are given in Figure 10.\n",
+              "4.4 Results from Natural Language Understanding (NLU) tasks\n",
+              "Understanding natural language (NLU) is a vital element within the field of natural language processing (NLP) that\n",
+              "enables computers to comprehend and interpret human language. NLU focuses on comprehending and extracting\n",
+              "9meaning from text, whereas text generation is concerned with generating human-like text based on a given input, \n",
+              "often\n",
+              "without any specific understanding of the text’s meaning.\n",
+              "To ascertain the prowess of a model, its performance in Natural Language Understanding (NLU) tasks is paramount.\n",
+              "However, the availability of standard benchmarks for Tamil in this domain remains sparse. Notable exceptions \n",
+              "include\n",
+              "the IndicNLP (Kunchukuttan, 2020), IndicNLP Corpus (Kunchukuttan et al., 2020), and IndicSentiment (AI4Bharat,\n",
+              "2023) datasets. We opted to assess our models utilizing the test set from the IndicSentiment dataset (AI4Bharat, \n",
+              "2023),\n",
+              "and a text classification dataset sourced from the IndicNLP Corpus (Kunchukuttan et al., 2020).\n",
+              "The test set of the IndicSentiment dataset encompasses 1,000 sentiment samples in Tamil. It is important to note \n",
+              "that\n",
+              "our evaluation was concentrated solely on this Tamil subset.\n",
+              "Figure 3: Performance comparison on the IndicSentiment-7B dataset\n",
+              "From Figure 3, it is evident that our Tamil LLaMA model remarkably surpasses the original LLaMA in this specific\n",
+              "NLU task. The latter’s performance mirrors that of random guessing, registering an accuracy of 50.5%. In stark \n",
+              "contrast,\n",
+              "our model impressively scores an accuracy of 81.3%. This enhanced NLU capability underscores the efficacy of our\n",
+              "methodologies—such as vocabulary expansion and retraining in facilitating the model to comprehend a new language\n",
+              "like Tamil with heightened proficiency.\n",
+              "We further extended our evaluation to the iNLTK Headline Classification subset within the IndicNLP suite (Kakwani\n",
+              "et al., 2020). It is essential to highlight that our analysis was focused strictly on the Tamil language subset of \n",
+              "this dataset.\n",
+              "The outcomes of this evaluation are graphically depicted in Figure 4.\n",
+              "Insight from Figure 4 reveals that the original LLaMA model’s performance aligns closely with random predictions.\n",
+              "In contrast, our Tamil LLaMA model showcases a compelling lead, achieving an accuracy rate of 80.12%, further\n",
+              "affirming its superior capability in natural language understanding.\n",
+              "5 Limitations\n",
+              "The Tamil LLaMA suite of models we introduce in this paper heralds several advancements in Tamil language \n",
+              "processing.\n",
+              "However, in the spirit of rigorous research, it is imperative to discuss the inherent limitations accompanying \n",
+              "these\n",
+              "models.\n",
+              "10Figure 4: Performance comparison on the IndicGLUE Text Classification dataset\n",
+              "•Constrained Knowledge Base : Due to computational and cost constraints, our models were trained on a\n",
+              "relatively limited Tamil dataset. This translates to gaps in the models’ knowledge, especially regarding nuances\n",
+              "and specifics native to Tamil culture and literature. While the current version lays the foundation, the true\n",
+              "potential can be unlocked with access to a broader data spectrum, enriching its contextual understanding.\n",
+              "•Ethical Concerns : Detoxification procedures were not implemented in our training process, making these\n",
+              "models prone to generating potentially harmful or offensive content. Their uncensored nature necessitates\n",
+              "caution during deployment.\n",
+              "•Lack of Robustness : Our models may, at times, produce outputs that veer off-topic or deviate substantially\n",
+              "from anticipated responses. This vulnerability is more pronounced under adversarial conditions or tricky\n",
+              "prompts.\n",
+              "•Reasoning and Mathematical Challenges : While our models showcase competence in specific reasoning\n",
+              "scenarios, they falter in many others, underscoring the repercussions of not having a comprehensive training\n",
+              "set.\n",
+              "•Over-Generation Tendencies : On occasions, the models tend to generate verbose content, extending beyond\n",
+              "logical termination points, leading to potential redundancy.\n",
+              "•Evaluation Hurdles : Assessment of LLMs is a crucial yet challenging endeavor. The scarcity of standardized\n",
+              "benchmarks, particularly for languages like Tamil, which are outside the European linguistic group, complicates\n",
+              "comparative evaluations. Although we propose an evaluative approach tailored for Tamil within this paper, it\n",
+              "is not exhaustive enough to gauge models’ efficacy across diverse domains.\n",
+              "•Translation Loss : Given that the instructional prompts used for fine-tuning the Tamil LLaMA base models are\n",
+              "derived from English datasets translated into Tamil, there is a potential for nuanced inaccuracies—commonly\n",
+              "referred to as translation loss. This can potentially affect the models’ abilities in both text generation and\n",
+              "comprehension due to subtle shifts in meaning that can occur during the translation process.\n",
+              "While some of these challenges are addressable in subsequent iterations, we envision this work serving as an \n",
+              "anchor,\n",
+              "inspiring the research community to propel advancements in LLMs for Indian languages.\n",
+              "116 Conclusion\n",
+              "In this research endeavor, we have not only filled a critical void in the domain of Tamil text generation but have \n",
+              "also\n",
+              "elevated the status of this venerable language within the realm of large language models with the advent of our \n",
+              "Tamil\n",
+              "LLaMA.To assess the performance of our models, we curated an evaluation dataset consisting of 120 Tamil \n",
+              "instructions\n",
+              "covering a wide range of topics. We then employed GPT-4 to assess and rate the responses generated by our model. \n",
+              "The\n",
+              "7B variant of our model has surpassed the performance of OpenAI’s gpt-3.5-turbo in tasks involving Tamil \n",
+              "instructions\n",
+              "within our evaluation methodology. Even more impressively, the 13B iteration has outperformed its counterparts,\n",
+              "demonstrating an almost 10% higher proficiency in these tasks.\n",
+              "The significance of our findings is accentuated by the efficiency of our models in generating Tamil text. Equipped \n",
+              "with\n",
+              "a refined tokenizer, the 7B and 13B variants demonstrate exceptional proficiency, eclipsing the original LLaMA \n",
+              "models\n",
+              "in processing speed without sacrificing textual quality. This stride is not just a modest step forward but a major \n",
+              "leap in\n",
+              "the models’ ability to process and generate Tamil language content, thus forging a new avenue for practical \n",
+              "applications\n",
+              "that necessitate precision and promptness.\n",
+              "Nevertheless, our exploration in this field continues. We acknowledge the triumphs and yet remain mindful of the\n",
+              "impending obstacles. The possibility of generating unintended or adverse content, the financial limitations \n",
+              "associated\n",
+              "with model training, and the need for comprehensive evaluation benchmarks tailored for Tamil are challenges we are\n",
+              "committed to surmounting.\n",
+              "As we chart our path forward, we acknowledge the value of continuous learning and adaptation. We aspire to delve\n",
+              "deeper into strategies to mitigate the limitations observed, perhaps even leveraging advancements like \n",
+              "Reinforcement\n",
+              "Learning With Human Feedback (RLHF) and more advanced quantization techniques. The horizon looks promising,\n",
+              "and we remain committed to elevating the capabilities of LLaMA for Tamil and other Indian languages.\n",
+              "Appendix\n",
+              "Example Outputs\n",
+              "Figure 5: Example Output for Reasoning Tasks\n",
+              "Prompt ேமைஜயில ் 4 ஆப ் பிள ் கள ் இருந ் தன. குமார ் ஒன ் ைறச ்\n",
+              "சாப ் பிட ் டான ் , ராம ் எடுத ் துச ் ெசன ் றான ் 2. மீதி எத ் -\n",
+              "தைன ஆப ் பிள ் கள ் உள ் ளன?\n",
+              "7B Model முதலில ் , நாம ் 4 - 1 = 3 ஆப ் பிள ் கைள எடுத ் துக ் ெகாள ் -\n",
+              "ளலாம ் , ஏெனனில ் குமார ் ஒன ் று சாப ் பிட ் டார ் . அடுத ் து,\n",
+              "ராம ் 2 ஆப ் பிள ் கைள எடுத ் துச ் ெசன ் றார ் , எனேவ மீத-\n",
+              "முள ் ள ஆப ் பிள ் களின ் எண ் ணிக ் ைக 3 - 2 = 1 ஆகும ் .\n",
+              "எனேவ, மீதமுள ் ள ஆப ் பிள ் 1 உள ் ளது.\n",
+              "13B Model இப ் ேபாது, இந ் தக ் ேகள ் விக ் கு பதிலளிக ் க, நாம ் சூத ் தி-\n",
+              "ரத ் ைதப ் பயன ் படுத ் தலாம ் :\n",
+              "ெமாத ் த ஆப ் பிள ் கள ் = ஆரம ் ப ஆப ் பிள ் கள ் - சாப ் பிட ் ட\n",
+              "ஆப ் பிள ் கள ் - எடுத ் துச ் ெசன ் ற ஆப ் பிள ் கள ்\n",
+              "ஆரம ் ப ஆப ் பிள ் கள ் = 4\n",
+              "சாப ் பிட ் ட ஆப ் பிள ் கள ் = 1\n",
+              "எடுக ் கப ் பட ் ட ஆப ் பிள ் கள ் = 2\n",
+              "இப ் ேபாது இந ் த மதிப ் புகைள சூத ் திரத ் தில ் ெசருகலாம ் :\n",
+              "ெமாத ் த ஆப ் பிள ் கள ் = 4 - 1 - 2 = 1\n",
+              "எனேவ, ேமைஜயில ் 1 ஆப ் பிள ் உள ் ளது.\n",
+              "12Figure 6: Example Outputs for Translation Tasks\n",
+              "Example 1\n",
+              "Prompt தயவுெசய ் துபின ் வரும் வாக்கியத்ைததமBழBல ் ெமாழB-\n",
+              "ெபயர்க்கவும்:\n",
+              "”W e’ve trained a model called ChatGPT which interacts in\n",
+              "a conversational way . The dialogue format makes it possible\n",
+              "for ChatGPT to answer followup questions, admit its mis-\n",
+              "takes, challenge incorrect premises, and reject inappropriate\n",
+              "requests. ”\n",
+              "7B Model நாங ் கள ் சாட்ேபாட் என ் ற ெபயரில ் பயிற ் சியளிக்கப ் -\n",
+              "பட்ட மாதிரிையக் ெகாண ் டுள ் ேளாம், இது உைரயாட-\n",
+              "லில ் ேபசுவதுேபால ் ெசயல ் படுகிறது.உைரயாடல ் வடி-\n",
+              "வைமப ் பின ் மூலம், ேகள ் விகளுக்கு பதிலளிக்கும் தி-\n",
+              "றன ் மற ் றும் தவறானஅறBக்ைககைளமறுக்கும் திறன ்\n",
+              "ேபான ் றபலவிஷயங ் கைளச் ெசய ் யசாட்ேபாட் அனு-\n",
+              "மதிக்கிறது. கூடுதலாக, சாட்ேபாட் சில ேநரங ் களில ்\n",
+              "அதன ் தவறுகளில ் ஒப ் புக்ெகாள ் கிறார் மற ் றும் ெபா-\n",
+              "ருத்தமற ் றேகாரிக்ைககைளக் கூடநிராகரிக்கிறார்.\n",
+              "13B Model நாங ் கள ் ”ChatGPT”என ் றமாதிரிையபயிற ் றுவித்துள ் -\n",
+              "ேளாம், இது உைரயாடல ் முைறயில ் ெதாடர்பு ெகாள ் -\n",
+              "கிறது. இந்தேபச்சுவழக்குவடிவமானது,பின ் ெதாடர்-\n",
+              "தல ் ேகள ் விகளுக்குபதிலளிக்கவும்,தவறுகைளச் சரி-\n",
+              "பார்க்கவும்,தவறானமுன ் ெமாழBவுகைளசவால ் ெசய ் -\n",
+              "யவும் மற ் றும் ெபாருத்தமற ் றேகாரிக்ைககள ் மீதுநிரா-\n",
+              "கரிக்கவும் ChatGPTஐஅனுமதிக்கிறது.\n",
+              "Example 2\n",
+              "Prompt தயவுெசய ் துபின ் வரும் வாக்கியத்ைததமBழBல ் ெமாழB-\n",
+              "ெபயர்க்கவும்:\n",
+              "”Estoy pensando en viajar a Inglaterra para ver el partido\n",
+              "entre Inglaterra y España de este fin de semana. ¡V a a ser\n",
+              "emocionante!”\n",
+              "7B Model நான ் இந்த வார இறுதியில ் இங ் கிலாந்தில ் கால ் பந்து\n",
+              "விைளயாட்ைடப ் பார்க்கவிரும்புகிேறன ் ,இதுமBகவும்\n",
+              "சுவாரஸ ் யமாகஇருக்கும்!\n",
+              "13B Model நான ் இந்த வார இறுதியில ் இங ் கிலாந்து மற ் றும் ஸ ் -\n",
+              "ெபயின ் இைடேயயான கால ் பந்து விைளயாட்ைடப ்\n",
+              "பார்க்க இங ் கிலாந்ைதச் ெசல ் லத் திட்டமBடுகிேறன ் !\n",
+              "இதுமBகவும் உற ் சாகமாகஇருக்கும்!\n",
+              "13Figure 7: Example Output for Coding Tasks\n",
+              "Prompt :ைபத ் தானில ் ”Quick Sort” அல ் காரிதத ் ைத ெசயல ் ப-\n",
+              "டுத ் தவும ் .\n",
+              "7B Model :\n",
+              "நிச ் சயம ் ! ைபதான ் குறBயீடுதுணுக ் குஇேதா,இது QuickSort அல ் -\n",
+              "காரிதத ் ைதப ் பயன ் படுத ் திவரிைசப ் படுத ் தப ் பட ் டபட ் டியைல\n",
+              "உருவாக ் கப ் பயன ் படும ் :\n",
+              "def quick_sort ( arr ) :\n",
+              "if len ( arr ) <= 1:\n",
+              "return arr\n",
+              "pivot = arr [0]\n",
+              "less = [ x for x in arr [1:] if x < pivot ]\n",
+              "greater = [ x for x in arr [1:] if x > pivot ]\n",
+              "return quick_sort ( less ) + [ pivot ] + quick_sort\n",
+              "( greater )\n",
+              "my_list = [5 , 3 , 7 , 2 , 9 , 4]\n",
+              "result = quick_sort ( my_list )\n",
+              "print ( result ) # Output : [2 , 3 , 5 , 4 , 7 , 9]\n",
+              "குறBயீட ் டின ் ெவளியீடு,வரிைசப ் படுத ் தப ் பட ் டபட ் டியலில ் உள ் ள\n",
+              "உறுப ் புகளின ் மறுசீரைமக ் கப ் பட ் டவரிைசையவழங ் குகிறது.\n",
+              "இது உதவும ் என ் று நான ் நம ் புகிேறன ் ! உங ் களுக ் கு ஏேதனும ்\n",
+              "ேகள ் விகள ் இருந ் தால ் எனக ் கு ெதரியப ் படுத ் தவும ் .\n",
+              "13B Model :\n",
+              "ைபத ் தானில ் QuickSort அல ் காரிதம ் ெசயல ் படுத ் துவதற ் கான\n",
+              "எடுத ் துக ் காட ் டு இங ் ேக:\n",
+              "def quick_sort ( arr ) :\n",
+              "if len ( arr ) <= 1:\n",
+              "return arr\n",
+              "pivot = arr [0]\n",
+              "left , right = [] , []\n",
+              "for i in range (1 , len ( arr ) ) :\n",
+              "if arr [ i ] < pivot :\n",
+              "left . append ( arr [ i ])\n",
+              "else :\n",
+              "right . append ( arr [ i ])\n",
+              "return quick_sort ( left ) + [ pivot ] + quick_sort\n",
+              "( right )\n",
+              "arr = [2 , 3 , 5 , 7 , 9 , 10 , 11]\n",
+              "result = quick_sort ( arr )\n",
+              "print (\"The sorted array is :\", result )\n",
+              "14Figure 8: Example Output for Open Question Answering Tasks\n",
+              "Prompt :நான ் ெபரியபணக ் காரன ் இல ் ைல,சமீபத ் திய iPhone\n",
+              "15'க ் கு நிைறய பணம ் ெசலவழBக ் க ேவண ் டுமா?\n",
+              "7B Model :\n",
+              "AIஆக,எனக ் குதனிப ் பட ் டவிருப ் பங ் கள ் அல ் லதுநிதிஇலக ் -\n",
+              "குகள ் இல ் ைல. இருப ் பினும ் ,உங ் கள ் ேதைவகளுக ் குஏற ் றெதா-\n",
+              "ைலேபசிையத ் ேதர ் ந ் ெதடுப ் பதுமற ் றும ் உங ் கள ் பட ் ெஜட ் ைடக ்\n",
+              "கருத ் தில ் ெகாள ் வது முக ் கியம ் . சமீபத ் திய ஐேபான ் களில ் வி-\n",
+              "ைலகள ் அதிகமாக இருக ் கலாம ் , ஆனால ் நீங ் கள ் விரும ் பிய\n",
+              "அம ் சங ் கைளவழங ் குவதில ் அைவஇன ் னும ் சிறந ் தைவ. உங ் -\n",
+              "கள ் ேதைவகைளப ் பூர ் த ் தி ெசய ் யும ் ஒன ் ைறத ் ேதர ் வுெசய ் ய-\n",
+              "வும ் ,ேமலும ் கூடுதல ் ெசலவுகைளச ் ேசமBக ் கஉதவும ் வைகயில ் ,\n",
+              "தள ் ளுபடிகள ் அல ் லது ஒப ் பந ் தங ் கைளப ் பார ் க ் கவும ் .\n",
+              "உங ் கள ் பட ் ெஜட ் டுக ் குள ் இருக ் கமுயற ் சிப ் பதும ் முக ் கியம ் . உங ் -\n",
+              "கள ் ெசலவினங ் கைளக ் கண ் காணித ் து, உங ் கள ் ெசலவினங ் -\n",
+              "களுக ் கு முன ் னுரிைம அளிக ் கவும ் . இது ேதைவயற ் ற ெசலவு-\n",
+              "கைளத ் தவிர ் க ் கவும ் ,உங ் கள ் பணத ் ைதச ் ேசமBப ் பதற ் கானவழB-\n",
+              "கைளக ் கண ் டறBயவும ் உதவும ் .\n",
+              "இறுதியில ் ,உங ் கள ் ேதைவகள ் மற ் றும ் பட ் ெஜட ் டிற ் குஏற ் றெதா-\n",
+              "ைலேபசிையத ் ேதர ் ந ் ெதடுப ் பது முக ் கியம ் . உங ் கள ் பட ் ெஜட ் -\n",
+              "டில ் ஒட ் டிக ் ெகாண ் டு,உங ் களுக ் குத ் ேதைவயானஅம ் சங ் கைளத ்\n",
+              "ேதடுங ் கள ் .\n",
+              "இருப ் பினும ் ,சமீபத ் தியஐேபான ் களில ் ஒன ் றுநிச ் சயமாகஅதிக\n",
+              "விைலயில ் இருக ் கும ் என ் பைத நிைனவில ் ெகாள ் ளுங ் கள ் .\n",
+              "15Figure 9: Example Output for Creative Writing Tasks\n",
+              "Example:\n",
+              "Prompt :ஐபிஎல ் ெதாடைரெசன ் ைனசூப ் பர் கிங ் ஸ ் (சிஎஸ ் -\n",
+              "ேக)ெவன ் றதுஎன ் றதைலப ் பில ் ஒருசிறுெசய ் திக் கட்டுைர-\n",
+              "ையஎழுதுங ் கள ் .\n",
+              "7B Model :\n",
+              "ெசன ் ைனசூப ் பர் கிங ் ஸ ் (சிஎஸ ் ேக)2021இந்தியன ் பிரீமBயர்\n",
+              "லீக்கில ் (ஐபிஎல ் )இறுதிப ் ேபாட்டிையெவன ் றது,அவர்களின ்\n",
+              "மூன ் றாவதுஐபிஎல ் பட்டத்ைதஉறுதிெசய ் தது. இந்தெவற ் -\n",
+              "றBயின ் மூலம், சிஎஸ ் ேகஅணிக்காகவிைளயாடியேகப ் டன ்\n",
+              "ேதானிதைலைமயிலானஇளம் மற ் றும் திறைமயானவீரர்க-\n",
+              "ளின ் குழுவிற ் குஇதுஒருகுறBப ் பிடத்தக்கசாதைனயாகும்.\n",
+              "சமீபத்தியசீசன ் முழுவதும்,சிஎஸ ் ேகஅணிபலசவால ் கைள\n",
+              "எதிர்ெகாண ் டது,ஆனால ் அவர்கள ் ெதாடர்ந்துதங ் கள ் திற-\n",
+              "ைமகைளயும் நம்பிக்ைகையயும் ெவளிப ் படுத்தினர். அணி-\n",
+              "யின ் ேவகப ் பந்துவீச்சு,ேபட்டிங ் மற ் றும் ஃபீல ் டிங ் ஆகியவற ் -\n",
+              "றBன ் வலுவானகலைவயானதுஅவர்களின ் ேபாட்டியாளர்-\n",
+              "களின ் பலேமாசமானஆட்டங ் களுக்குவழBவகுத்தது,ேமலும்\n",
+              "அவர்கள ் இறுதிப ் ேபாட்டியில ் அவர்களின ் ெசாந்தவிைளயாட்-\n",
+              "டுகளில ் ஆதிக்கம் ெசலுத்தமுடிந்தது.\n",
+              "இந்தெவற ் றBயின ் மூலம்,சிஎஸ ் ேகஅணிமூன ் றுஐபிஎல ் சாம்-\n",
+              "பியன ் ஷCப ் கைளெவன ் றுள ் ளது,ேமலும் அவர்களின ் ரசிகர்-\n",
+              "கள ் மகிழ்ச்சியில ் மூழ்கிஉள ் ளனர்.ேதானியும் அவரதுஅணி-\n",
+              "யும் பலஆண ் டுகளாகஇந்தியகிரிக்ெகட் அரங ் கில ் முக்கிய\n",
+              "நபராகஇருந்துவருகின ் றனர்,ேமலும் இந்தெவற ் றBஅவர்க-\n",
+              "ளின ் பாரம்பரியத்ைதேமலும் உயர்த்துகிறது.\n",
+              "ஒட்டுெமாத்தமாக,சிஎஸ ் ேகஅணிஇந்தசீசனின ் ஐபிஎல ் ெதா-\n",
+              "டர் இறுதிப ் ேபாட்டிக்குமுன ் ேனறBயதில ் ஒருெபரியசாதைன-\n",
+              "ையக் ெகாண ் டிருந்தது,ேமலும் அவர்களின ் ரசிகர்கள ் இப ் ேபா-\n",
+              "துஒருவருடம் கழBத்துதங ் கள ் அணிக்குஉற ் சாகத்ைதயும் ஆத-\n",
+              "ரைவயும் காட்டஎதிர்பார்க்கிறார்கள ் .\n",
+              "16Figure 10: Example Outputs for Mathematical Reasoning Tasks\n",
+              "Example 1\n",
+              "Prompt 7! என ் றால ் என ் ன என ் பைதக ் கணக ் கிடுங ் கள ்\n",
+              "7B Model 7! என ் பது 7 x 6 x 5 x 4 x 3 x 2 x 1 என ் ற ெபருக ் கல ்\n",
+              "ெவளிப ் பாட ் ைடக ் குறBக ் கிறது, இது ேதாராயமாக 870\n",
+              "ஆகும ் .\n",
+              "எனேவ, 7! = 870\n",
+              "13B Model 7! என ் பது 7 இன ் காரணிகளின ் எண ் ணிக ் ைக, அதா-\n",
+              "வது 1 x 2 x 3 x 4 x 5 x 6 x 7 ஆகும ் . எனேவ, 7! = 5040\n",
+              "ஆகும ் .\n",
+              "Example 2\n",
+              "Prompt 3x+1=10 என ் றால ் , xஎதற ் கு சமம ் ?\n",
+              "7B Model ெகாடுக ் கப ் பட ் ட சமன ் பாடு 3x+ 1 = 10 எனில ் , xக ் கு தீர ் -\n",
+              "வு காண, நாம ் பின ் வரும ் படிகைளப ் பின ் பற ் றலாம ் :\n",
+              "படி 1: சமன ் பாட ் டின ் இரு பக ் கங ் களிலிருந ் தும ் 1 ஐக ்\n",
+              "கழBக ் கவும ் . இது நமக ் கு அளிக ் கிறது:\n",
+              "3x+ 11 = 101\n",
+              "3x= 9\n",
+              "படி 2: இப ் ேபாது எங ் களிடம ் 4xஇன ் மதிப ் பு இருப ் ப-\n",
+              "தால ் , அைத அசல ் சமன ் பாட ் டில ் மாற ் றலாம ் : 3x+1 = 10\n",
+              "3(9) + 1 = 10\n",
+              "29 + 1 = 10\n",
+              "30 = 10\n",
+              "எனேவ, xக ் கான தீர ் வு 30 ஆகும ் .\n",
+              "இருப ் பினும ் , ெகாடுக ் கப ் பட ் ட சமன ் பாட ் டிற ் கான சரி-\n",
+              "யான தீர ் ைவ நீங ் கள ் ேதடுகிறீர ் களானால ் , xஇன ் மதிப ் -\n",
+              "ைபப ் ெபற, இரு பக ் கங ் கைளயும ் 3 ஆல ் வகுக ் க ேவண ் -\n",
+              "டும ் .\n",
+              "x= (30/3)\n",
+              "x= 10\n",
+              "எனேவ, xஎன ் பது 10க ் கு சமம ் .\n",
+              "13B Model 3x+ 1 = 10 சமன ் பாட ் டில ் xக ் கு தீர ் வு காணும ் ேபா-\n",
+              "து, சமன ் பாட ் டின ் ஒரு பக ் கத ் தில ் மாறBைய தனிைமப ் -\n",
+              "படுத ் த ேவண ் டும ் .\n",
+              "முதலில ் , சமன ் பாட ் டின ் இரு பக ் கங ் களிலிருந ் தும ் 1 ஐக ்\n",
+              "கழBப ் பதன ் மூலம ் ெதாடங ் கலாம ் :\n",
+              "3x+ 11 = 101\n",
+              "இது எளிதாக ் குகிறது:\n",
+              "3x= 9\n",
+              "அடுத ் து, சமன ் பாட ் டின ் இரு பக ் கங ் கைளயும ் 3 ஆல ்\n",
+              "வகுப ் பதன ் மூலம ் xஐ தனிைமப ் படுத ் துேவாம ் :\n",
+              "(3x)/3 = (9)/3\n",
+              "இது எளிதாக ் குகிறது:\n",
+              "x= 3\n",
+              "எனேவ, 3x+ 1 = 10 சமன ் பாட ் டிற ் கான தீர ் வு x= 3\n",
+              "ஆகும ் .\n",
+              "17Acknowledgments\n",
+              "We gratefully acknowledge the assistance of OpenAI’s GPT-4 in the preparation of this manuscript. The AI’s advanced\n",
+              "language understanding and generation capabilities were invaluable in refining the structure, clarity, and overall\n",
+              "coherence of the original draft.\n",
+              "References\n",
+              "AI4Bharat. Indic sentiment dataset by ai4bharat. https://huggingface.co/datasets/ai4bharat/\n",
+              "IndicSentiment , 2023.\n",
+              "J. Ainslie, J. Lee-Thorp, M. de Jong, Y . Zemlyanskiy, F. Lebrón, and S. Sanghai. Gqa: Training generalized \n",
+              "multi-query\n",
+              "transformer models from multi-head checkpoints, 2023.\n",
+              "I. Caswell, T. Breiner, D. van Esch, and A. Bapna. Language id in the wild: Unexpected challenges on the path to a\n",
+              "thousand-language web text corpus, 2020.\n",
+              "Y . Cui, Z. Yang, and X. Yao. Efficient and effective text encoding for chinese llama and alpaca, 2023.\n",
+              "J. Devlin, M.-W. Chang, K. Lee, and K. Toutanova. Bert: Pre-training of deep bidirectional transformers for \n",
+              "language\n",
+              "understanding, 2019.\n",
+              "E. J. Hu, Y . Shen, P. Wallis, Z. Allen-Zhu, Y . Li, S. Wang, L. Wang, and W. Chen. Lora: Low-rank adaptation of \n",
+              "large\n",
+              "language models, 2021.\n",
+              "A. Q. Jiang, A. Sablayrolles, A. Mensch, C. Bamford, D. S. Chaplot, D. de las Casas, F. Bressand, G. Lengyel,\n",
+              "G. Lample, L. Saulnier, L. R. Lavaud, M.-A. Lachaux, P. Stock, T. L. Scao, T. Lavril, T. Wang, T. Lacroix, and W. \n",
+              "E.\n",
+              "Sayed. Mistral 7b, 2023.\n",
+              "D. Kakwani, A. Kunchukuttan, S. Golla, G. N.C., A. Bhattacharyya, M. M. Khapra, and P. Kumar. IndicNLPSuite:\n",
+              "Monolingual corpora, evaluation benchmarks and pre-trained multilingual language models for Indian languages.\n",
+              "InFindings of the Association for Computational Linguistics: EMNLP 2020 , pages 49484961, Online, Nov.\n",
+              "2020. Association for Computational Linguistics. doi: 10.18653/v1/2020.findings-emnlp.445. URL https://\n",
+              "aclanthology.org/2020.findings-emnlp.445 .\n",
+              "T. Kudo and J. Richardson. Sentencepiece: A simple and language independent subword tokenizer and detokenizer for\n",
+              "neural text processing, 2018.\n",
+              "A. Kunchukuttan. The IndicNLP Library. https://github.com/anoopkunchukuttan/indic_nlp_library/\n",
+              "blob/master/docs/indicnlp.pdf , 2020.\n",
+              "A. Kunchukuttan, D. Kakwani, S. Golla, G. N.C., A. Bhattacharyya, M. M. Khapra, and P. Kumar. Ai4bharat-indicnlp\n",
+              "corpus: Monolingual corpora and word embeddings for indic languages. arXiv preprint arXiv:2005.00085 , 2020.\n",
+              "W. Lian, B. Goodson, E. Pentland, A. Cook, C. V ong, and \"Teknium\". Openorca: An open dataset of gpt augmented\n",
+              "flan reasoning traces. https://https://huggingface.co/Open-Orca/OpenOrca , 2023.\n",
+              "X. V . Lin, T. Mihaylov, M. Artetxe, T. Wang, S. Chen, D. Simig, M. Ott, N. Goyal, S. Bhosale, J. Du, R. Pasunuru,\n",
+              "S. Shleifer, P. S. Koura, V . Chaudhary, B. O’Horo, J. Wang, L. Zettlemoyer, Z. Kozareva, M. Diab, V . Stoyanov, \n",
+              "and\n",
+              "X. Li. Few-shot learning with multilingual language models, 2022.\n",
+              "A. Mahendiran. abinayam/gpt-2-tamil. https://huggingface.co/abinayam/gpt-2-tamil , 2021.\n",
+              "T. Nguyen, C. V . Nguyen, V . D. Lai, H. Man, N. T. Ngo, F. Dernoncourt, R. A. Rossi, and T. H. Nguyen. Culturax: A\n",
+              "cleaned, enormous, and multilingual dataset for large language models in 167 languages, 2023.\n",
+              "OpenAI. Introducing chatgpt. https://openai.com/blog/chatgpt , 2022.\n",
+              "OpenAI. Gpt-4 technical report, 2023.\n",
+              "A. Radford, K. Narasimhan, T. Salimans, and I. Sutskever. Improving language understanding by\n",
+              "generative pre-training. https://s3-us-west-2.amazonaws.com/openai-assets/research-covers/\n",
+              "language-unsupervised/language_understanding_paper.pdf , 2018.\n",
+              "A. Radford, J. Wu, R. Child, D. Luan, D. Amodei, and I. Sutskever. Language models are unsupervised mul-\n",
+              "titask learners. https://d4mucfpksywv.cloudfront.net/better-language-models/language_models_\n",
+              "are_unsupervised_multitask_learners.pdf , 2019.\n",
+              "T. L. Scao, A. Fan, C. Akiki, E. Pavlick, S. Ili ´c, D. Hesslow, R. Castagné, A. S. Luccioni, F. Yvon, M. Gallé, et\n",
+              "al.\n",
+              "Bloom: A 176b-parameter open-access multilingual language model. arXiv preprint arXiv:2211.05100 , 2022.\n",
+              "N. Shazeer. Glu variants improve transformer, 2020.\n",
+              "18O. Shliazhko, A. Fenogenova, M. Tikhonova, V . Mikhailov, A. Kozlova, and T. Shavrina. mgpt: Few-shot learners go\n",
+              "multilingual, 2022. URL https://arxiv.org/abs/2204.07580 .\n",
+              "J. Su, Y . Lu, S. Pan, A. Murtadha, B. Wen, and Y . Liu. Roformer: Enhanced transformer with rotary position \n",
+              "embedding,\n",
+              "2022.\n",
+              "R. Taori, I. Gulrajani, T. Zhang, Y . Dubois, X. Li, C. Guestrin, P. Liang, and T. B. Hashimoto. Stanford alpaca: \n",
+              "An\n",
+              "instruction-following llama model. https://github.com/tatsu-lab/stanford_alpaca , 2023.\n",
+              "H. Touvron, T. Lavril, G. Izacard, X. Martinet, M.-A. Lachaux, T. Lacroix, B. Rozière, N. Goyal, E. Hambro, F. \n",
+              "Azhar,\n",
+              "A. Rodriguez, A. Joulin, E. Grave, and G. Lample. Llama: Open and efficient foundation language models, 2023a.\n",
+              "H. Touvron, L. Martin, K. Stone, P. Albert, A. Almahairi, Y . Babaei, N. Bashlykov, S. Batra, P. Bhargava, S. \n",
+              "Bhosale,\n",
+              "D. Bikel, L. Blecher, C. C. Ferrer, M. Chen, G. Cucurull, D. Esiobu, J. Fernandes, J. Fu, W. Fu, B. Fuller, C. Gao,\n",
+              "V . Goswami, N. Goyal, A. Hartshorn, S. Hosseini, R. Hou, H. Inan, M. Kardas, V . Kerkez, M. Khabsa, I. Kloumann,\n",
+              "A. Korenev, P. S. Koura, M.-A. Lachaux, T. Lavril, J. Lee, D. Liskovich, Y . Lu, Y . Mao, X. Martinet, T. Mihaylov,\n",
+              "P. Mishra, I. Molybog, Y . Nie, A. Poulton, J. Reizenstein, R. Rungta, K. Saladi, A. Schelten, R. Silva, E. M. \n",
+              "Smith,\n",
+              "R. Subramanian, X. E. Tan, B. Tang, R. Taylor, A. Williams, J. X. Kuan, P. Xu, Z. Yan, I. Zarov, Y . Zhang, A. Fan,\n",
+              "M. Kambadur, S. Narang, A. Rodriguez, R. Stojnic, S. Edunov, and T. Scialom. Llama 2: Open foundation and\n",
+              "fine-tuned chat models, 2023b.\n",
+              "A. Vaswani, N. Shazeer, N. Parmar, J. Uszkoreit, L. Jones, A. N. Gomez, Ł. Kaiser, and I. Polosukhin. Attention is \n",
+              "all\n",
+              "you need. Advances in neural information processing systems , 30, 2017.\n",
+              "Y . Wang, Y . Kordi, S. Mishra, A. Liu, N. A. Smith, D. Khashabi, and H. Hajishirzi. Self-instruct: Aligning \n",
+              "language\n",
+              "models with self-generated instructions, 2023.\n",
+              "B. Zhang and R. Sennrich. Root mean square layer normalization, 2019.\n",
+              "19\n",
+              "
\n" + ], + "text/plain": [ + "TAMIL -LLAMA : A N EWTAMIL LANGUAGE MODEL BASED ON\n", + "LLAMA \u001b[1;36m2\u001b[0m\n", + "Abhinand Balachandran\n", + "abhinandb.ml@gmail.com\n", + "ABSTRACT\n", + "Language modeling has witnessed remarkable advancements in recent years, with Large Language\n", + "Models \u001b[1m(\u001b[0mLLMs\u001b[1m)\u001b[0m like ChatGPT setting unparalleled benchmarks in human-like text generation. How-\n", + "ever, a prevailing limitation is the underrepresentation of languages like Tamil in these cutting-edge\n", + "models, leading to suboptimal performance in diverse linguistic contexts. This paper addresses this\n", + "lacuna, enhancing the open-source LLaMA model with an addition of \u001b[1;36m16\u001b[0m,\u001b[1;36m000\u001b[0m Tamil tokens, aiming to\n", + "achieve superior text generation and comprehension in the Tamil language. We strategically employ\n", + "the LoRA methodology for efficient model training on a comprehensive Tamil corpus, ensuring com-\n", + "putational feasibility and model robustness. Moreover, we introduce a Tamil-translated version of the\n", + "Alpaca dataset and a subset of the OpenOrca dataset tailored for instruction fine-tuning. Our results\n", + "showcase significant performance improvements in Tamil text generation, with potential implications\n", + "for the broader landscape of LLMs in Indian languages. We further underscore our commitment\n", + "to open research by making our models, datasets, and code1publicly accessible, fostering further\n", + "innovations in language modeling.\n", + "\u001b[1;36m1\u001b[0m Introduction\n", + "The past few years have been transformative for language modeling, with groundbreaking advances and monumental\n", + "achievements. At the forefront of this revolution was OpenAI’s ChatGPT \u001b[1m(\u001b[0mOpenAI, \u001b[1;36m2022\u001b[0m\u001b[1m)\u001b[0m, which not only raised the\n", + "bar in language modeling performance but also underscored the immense societal implications of such technologies.\n", + "Alongside ChatGPT, various Large Language Models \u001b[1m(\u001b[0mLLMs\u001b[1m)\u001b[0m have consistently demonstrated exceptional prowess in\n", + "natural language understanding and generation, heralding a new era in computational linguistics.\n", + "Central to the functionality of these modern LLMs is the Transformer architecture, a cornerstone concept brought to\n", + "the limelight by \u001b[32m\"Attention is All You Need\"\u001b[0m \u001b[1m(\u001b[0mVaswani et al., \u001b[1;36m2017\u001b[0m\u001b[1m)\u001b[0m. This innovation transformed our approach to\n", + "sequence-based tasks, catalyzing pivotal models like BERT \u001b[1m(\u001b[0mDevlin et al., \u001b[1;36m2019\u001b[0m\u001b[1m)\u001b[0m and redefining best practices in \n", + "Natural\n", + "Language Processing \u001b[1m(\u001b[0mNLP\u001b[1m)\u001b[0m.\n", + "Subsequent developments, particularly the Generative Pre-trained Transformer \u001b[1m(\u001b[0mGPT\u001b[1m)\u001b[0m \u001b[1m(\u001b[0mRadford et al., \u001b[1;36m2018\u001b[0m\u001b[1m)\u001b[0m, \n", + "showcased\n", + "the profound potential of unsupervised pre-training on vast datasets. Models like GPT-\u001b[1;36m3\u001b[0m and its successor, GPT-\u001b[1;36m4\u001b[0m\n", + "\u001b[1m(\u001b[0mOpenAI, \u001b[1;36m2023\u001b[0m\u001b[1m)\u001b[0m, have redefined benchmarks and fueled a renaissance in natural language understanding and \n", + "generation.\n", + "Beyond their technical prowess, they have prompted a renewed vigor in exploring the limits of Artificial General\n", + "Intelligence \u001b[1m(\u001b[0mAGI\u001b[1m)\u001b[0m. These advancements, paired with exemplary performance in numerous applications, have galvanized\n", + "the NLP community, sparking widespread application and research from sentiment analysis to machine translation.\n", + "However, progress is not without its pitfalls. The elite LLMs, despite their remarkable capabilities, grapple with\n", + "challenges—primarily, their proprietary nature, which constricts open research. Furthermore, an English-centric\n", + "bias and the enormous computational requirements for training such behemoths further accentuate the call for more\n", + "accessible and diverse solutions.\n", + "In response, the open-source community has championed the creation of models like LLaMA \u001b[1m(\u001b[0mTouvron et al., 2023a\u001b[1m)\u001b[0m\n", + "and Mistral \u001b[1m(\u001b[0mJiang et al., \u001b[1;36m2023\u001b[0m\u001b[1m)\u001b[0m. Such models, despite their compact nature, challenge the hegemony of giants like\n", + "ChatGPT in select benchmarks, heralding a promising direction for future research.\n", + "1GitHub Repository: \u001b[4;94mhttps://github.com/abhinand5/tamil-llamaarXiv:2311.05845v1\u001b[0m \u001b[1;36m10\u001b[0m Nov 2023However, as robust as \n", + "these models, like LLaMA and Mistral, might be, their proficiency in generating coherent text in\n", + "Tamil and several other Indian languages remains noticeably deficient. A fundamental limitation lies in their \n", + "minimal\n", + "vocabulary of Tamil characters, which is essential for effective text encoding and generation. This paper aims to \n", + "bridge\n", + "this gap by augmenting the existing LLaMA models’ vocabulary with an additional \u001b[1;36m16\u001b[0m,\u001b[1;36m000\u001b[0m Tamil tokens, markedly\n", + "enhancing their capability in processing and producing Tamil content. This method draws inspiration from a parallel\n", + "endeavor in the Chinese adaptation of LLaMA, as documented in Cui et al. \u001b[1m(\u001b[0m\u001b[1;36m2023\u001b[0m\u001b[1m)\u001b[0m. To ensure efficient pre-training\n", + "and fine-tuning while maintaining computational feasibility, we leverage the LoRA \u001b[1m(\u001b[0mHu et al., \u001b[1;36m2021\u001b[0m\u001b[1m)\u001b[0m methodology. We\n", + "aspire that this initiative catalyzes further research endeavors, refining LLaMA and other open-source models \n", + "tailored\n", + "for Indian languages. A succinct overview of the principal contributions of this paper is as follows:\n", + "•We bolster the LLaMA model’s encoding and decoding proficiencies for Tamil by incorporating an additional\n", + "\u001b[1;36m16\u001b[0m,\u001b[1;36m000\u001b[0m Tamil tokens, thereby expanding its vocabulary.\n", + "•Through the LoRA methodology, the augmented model undergoes training on an extensive Tamil corpus,\n", + "resulting in a marked enhancement of its text generation capabilities relative to its predecessor models.\n", + "•We present a Tamil-translated version of the original Alpaca dataset \u001b[1m(\u001b[0mTaori et al., \u001b[1;36m2023\u001b[0m\u001b[1m)\u001b[0m, paired with a subset of\n", + "the OpenOrca \u001b[1m(\u001b[0mLian et al., \u001b[1;36m2023\u001b[0m\u001b[1m)\u001b[0m dataset, both curated for instruction fine-tuning in Tamil.\n", + "•Our newly trained instruction and chat models, built upon the Alpaca and OpenOrca datasets, demonstrate\n", + "notable advancements in performance for the Tamil language compared to other open-source language models.\n", + "•To stimulate continuous innovation and broader adaptability, we grant public access to the models, datasets,\n", + "and associated code, inviting further exploration and encouraging the refinement of LLaMA models for diverse\n", + "languages.\n", + "\u001b[1;36m2\u001b[0m Related Work\n", + "Within the broad field of Natural Language Processing \u001b[1m(\u001b[0mNLP\u001b[1m)\u001b[0m, the advent of Large Language Models \u001b[1m(\u001b[0mLLMs\u001b[1m)\u001b[0m marks a\n", + "transformative moment. These models have heralded new capabilities in understanding, generating, and processing\n", + "various human languages, underpinning innovations from automated content creation to nuanced sentiment analysis.\n", + "While their proficiency in mainstream languages like English is widely recognized and leveraged, a disparity exists\n", + "in\n", + "their performance and availability for numerous non-European languages.\n", + "Tamil, a language with ancient roots and spoken by a substantial global population, epitomizes this disparity. \n", + "Despite\n", + "its linguistic depth and cultural significance, dedicated pre-trained LLMs for Tamil are conspicuously \n", + "underrepresented.\n", + "Most current offerings are generic, multipurpose LLMs, which do not cater specifically to the unique attributes of \n", + "the\n", + "Tamil language.\n", + "A survey of the existing literature reveals that many attempts to cater to the Tamil language through LLMs rely \n", + "heavily\n", + "on multilingual models. Works such as Scao et al. \u001b[1m(\u001b[0m\u001b[1;36m2022\u001b[0m\u001b[1m)\u001b[0m, Shliazhko et al. \u001b[1m(\u001b[0m\u001b[1;36m2022\u001b[0m\u001b[1m)\u001b[0m, and Lin et al. \u001b[1m(\u001b[0m\u001b[1;36m2022\u001b[0m\u001b[1m)\u001b[0m have all \n", + "ventured\n", + "into this domain. However, it is crucial to note that, except \u001b[32m\"GPT-2 Tamil\"\u001b[0m by Mahendiran \u001b[1m(\u001b[0m\u001b[1;36m2021\u001b[0m\u001b[1m)\u001b[0m, all these models\n", + "are not exclusive to Tamil. While they can process Tamil to a certain extent, their capabilities are inherently \n", + "limited.\n", + "This limitation arises because the training data for these models often comprise a low fraction of Tamil content \n", + "relative\n", + "to other languages. Consequently, the nuances and intricacies specific to Tamil are often lost, leading to \n", + "suboptimal\n", + "performance.\n", + "The effort by Mahendiran \u001b[1m(\u001b[0m\u001b[1;36m2021\u001b[0m\u001b[1m)\u001b[0m represents a notable deviation from this trend. Here, the GPT-\u001b[1;36m2\u001b[0m base model, \n", + "equipped\n", + "with \u001b[1;36m117\u001b[0m million parameters as outlined in Radford et al. \u001b[1m(\u001b[0m\u001b[1;36m2019\u001b[0m\u001b[1m)\u001b[0m, was fine-tuned with a focus on Tamil, using both \n", + "the\n", + "Oscar dataset \u001b[1m(\u001b[0mCaswell et al., \u001b[1;36m2020\u001b[0m\u001b[1m)\u001b[0m and The IndicNLP \u001b[1m(\u001b[0mKunchukuttan, \u001b[1;36m2020\u001b[0m\u001b[1m)\u001b[0m dataset. This approach signifies a \n", + "targeted\n", + "attempt to adapt LLM capabilities for the Tamil language specifically.\n", + "However, the broader landscape of Tamil-specific LLM research remains relatively uncharted. This context \n", + "underscores\n", + "the motivation for our present research. We endeavor to delve deeper into this space, addressing existing \n", + "shortcomings\n", + "and advancing the capabilities of LLMs tailored for Tamil.\n", + "\u001b[1;36m3\u001b[0m Tamil LLaMA\n", + "\u001b[1;36m3.1\u001b[0m Datasets Used\n", + "The development of Tamil-LLaMA involved using several different datasets, each chosen for specific parts of the\n", + "training and fine-tuning process. This approach was vital to ensure the model’s effectiveness across various tasks.\n", + "\u001b[1;36m23.1\u001b[0m.\u001b[1;36m1\u001b[0m Datasets used for Pre-Training\n", + "For the initial pre-training phase of LLaMA \u001b[1;36m2\u001b[0m \u001b[1m(\u001b[0mTouvron et al., 2023a\u001b[1m)\u001b[0m, we mainly used the CulturaX dataset \u001b[1m(\u001b[0mNguyen\n", + "et al., \u001b[1;36m2023\u001b[0m\u001b[1m)\u001b[0m. This dataset is a combination of many popular datasets, including the Oscar dataset \u001b[1m(\u001b[0mCaswell et al.,\n", + "\u001b[1;36m2020\u001b[0m\u001b[1m)\u001b[0m.\n", + "Out of the \u001b[1;36m4.72\u001b[0m million documents in CulturaX, we selected 600k documents \u001b[1m(\u001b[0m\u001b[1;36m12\u001b[0m GB\u001b[1m)\u001b[0m for training. This choice was\n", + "made to manage training costs while aiming for high performance. Our approach was successful, as the model showed\n", + "strong results in text completion tasks even with this smaller dataset.\n", + "\u001b[1;36m3.1\u001b[0m.\u001b[1;36m2\u001b[0m Datasets used for Instruction Tuning\n", + "The \u001b[32m\"Instruction Tuning\"\u001b[0m phase was a pivotal stage in refining LLaMA’s proficiency in precisely adhering to textual\n", + "instructions. For this enhancement, we incorporated a translated version of the Stanford Alpaca dataset \u001b[1m(\u001b[0mTaori et \n", + "al.,\n", + "\u001b[1;36m2023\u001b[0m\u001b[1m)\u001b[0m, comprising \u001b[1;36m52\u001b[0m,\u001b[1;36m000\u001b[0m instructions. Concurrently, we integrated a specialized no-code section from the OpenOrca\n", + "dataset \u001b[1m(\u001b[0mLian et al., \u001b[1;36m2023\u001b[0m\u001b[1m)\u001b[0m, which consists of around \u001b[1;36m93\u001b[0m,\u001b[1;36m000\u001b[0m instructions. The deliberate focus on no-code \n", + "instructions\n", + "was to streamline the training process, eliminating the intricacies presented by coding instructions during \n", + "translation.\n", + "To ensure translation uniformity and accuracy across the datasets, the Google Translation API service was our tool \n", + "of\n", + "choice. We meticulously translated the entirety of the Alpaca dataset while also applying a similar methodology to \n", + "the\n", + "OpenOrca subset.\n", + "We believe that leveraging diverse datasets has bolstered LLaMA’s enhanced capability to discern and generate\n", + "contextually pertinent responses across a spectrum of prompts.\n", + "\u001b[1;36m3.2\u001b[0m Background on the LLaMA Models\n", + "Introduced by Touvron et al. \u001b[1m(\u001b[0m2023a\u001b[1m)\u001b[0m, LLaMA has emerged as an essential milestone in the world of open-source\n", + "large language models \u001b[1m(\u001b[0mLLMs\u001b[1m)\u001b[0m, with the renowned Transformer architecture \u001b[1m(\u001b[0mVaswani et al., \u001b[1;36m2017\u001b[0m\u001b[1m)\u001b[0m as its foundation.\n", + "While it draws inspiration from models like GPT for its basic structure—comprising an embedding layer and multiple\n", + "transformer blocks—LLaMA has its unique features. LLaMA has brought forward several innovative techniques such\n", + "as pre-normalization \u001b[1m(\u001b[0mZhang and Sennrich, \u001b[1;36m2019\u001b[0m\u001b[1m)\u001b[0m, SwiGLU activation \u001b[1m(\u001b[0mShazeer, \u001b[1;36m2020\u001b[0m\u001b[1m)\u001b[0m, and rotary embeddings \u001b[1m(\u001b[0mSu\n", + "et al., \u001b[1;36m2022\u001b[0m\u001b[1m)\u001b[0m. Offered in sizes ranging from 7B \u001b[1m(\u001b[0m\u001b[1;36m7\u001b[0m Billion\u001b[1m)\u001b[0m to 65B \u001b[1m(\u001b[0m\u001b[1;36m65\u001b[0m Billion\u001b[1m)\u001b[0m parameters, LLaMA has been trained\n", + "on a rich mixture of content sources, including web pages, books, and academic papers. Its strong performance on\n", + "benchmarks, especially given its relatively compact size compared to other models, has made it a noteworthy \n", + "contender\n", + "in the LLM landscape, drawing considerable attention in the AI research community.\n", + "Building upon its predecessor’s foundation, LLaMA \u001b[1;36m2\u001b[0m \u001b[1m(\u001b[0mTouvron et al., 2023b\u001b[1m)\u001b[0m introduces monumental enhancements to\n", + "the LLaMA lineage. With a dataset expanded by \u001b[1;36m40\u001b[0m% relative to LLaMA \u001b[1;36m1\u001b[0m, the models under LLaMA \u001b[1;36m2\u001b[0m exhibit an\n", + "enriched comprehension of diverse content, leading to improved text generation. An extended context length of \u001b[1;36m4\u001b[0m,\u001b[1;36m096\u001b[0m\n", + "tokens empowers LLaMA \u001b[1;36m2\u001b[0m to process and understand more extensive textual segments, significantly benefiting tasks\n", + "such as translation and intricate question answering. Another pivotal innovation in LLaMA \u001b[1;36m2\u001b[0m is adopting the \n", + "grouped-\n", + "query attention mechanism \u001b[1m(\u001b[0mAinslie et al., \u001b[1;36m2023\u001b[0m\u001b[1m)\u001b[0m, facilitating faster inference despite its expanded size compared \n", + "to\n", + "LLaMA \u001b[1;36m1\u001b[0m.\n", + "In the course of our research, we made a conscious choice to employ LLaMA \u001b[1;36m2\u001b[0m as our primary language model. Several\n", + "factors influenced this decision. Firstly, LLaMA \u001b[1;36m2\u001b[0m is a recent addition to the lineage of Large Language Models, \n", + "which\n", + "implies that it benefits from the latest advancements in model training and architectural innovations. This recent \n", + "launch\n", + "incorporates the most up-to-date techniques and methodologies. Secondly, compared with its predecessor, LLaMA\n", + "\u001b[1;36m1\u001b[0m, the enhancements in LLaMA \u001b[1;36m2\u001b[0m are undeniably compelling. These improvements are not just incremental; they\n", + "represent substantial strides in areas such as data exposure, context length, and attention mechanisms. The \n", + "evolution\n", + "from LLaMA \u001b[1;36m1\u001b[0m to LLaMA \u001b[1;36m2\u001b[0m is emblematic of the rapid advancements in the field, and by leveraging the latter, we\n", + "aimed to ensure our research was grounded in the most cutting-edge tools available.\n", + "\u001b[1;36m3.3\u001b[0m Expansion of Tamil Vocabulary\n", + "LLaMA \u001b[1;36m2\u001b[0m, as outlined in the seminal work of Touvron et al. \u001b[1m(\u001b[0m2023b\u001b[1m)\u001b[0m, is backed by an expansive pre-training corpus \n", + "of \u001b[1;36m2\u001b[0m\n", + "Trillion tokens. A detailed linguistic analysis of this vast corpus reveals a striking imbalance in language \n", + "representation.\n", + "An overwhelming \u001b[1;36m89.7\u001b[0m% of the tokens are sourced from English, with other European languages collectively \n", + "contributing\n", + "to nearly \u001b[1;36m10\u001b[0m% of the dataset. In stark contrast, diverse languages such as Tamil and Hindi represent a meager \n", + "presence,\n", + "with their combined token count along with other under-represented languages accounting for less than \u001b[1;36m0.21\u001b[0m%.\n", + "This skewed distribution raises concerns about the genuine multilingual and cross-lingual capabilities of LLaMA \u001b[1;36m2\u001b[0m.\n", + "While it is evident that the model is proficient in several European languages, its ability to comprehend and \n", + "generate\n", + "3content in languages like Tamil needs to be improved substantially. Our preliminary experiments further \n", + "underscored\n", + "this limitation. When presented with tasks in Tamil, LLaMA \u001b[1;36m2\u001b[0m exhibited a remarkable lack of coherence in its \n", + "responses.\n", + "In fact, its performance was notably inferior to smaller models, underscoring a noticeable shortcoming in LLaMA \u001b[1;36m2\u001b[0m’s\n", + "coverage of worldwide languages. There is a clear need for the open-source community to focus on languages like\n", + "Tamil, spoken by millions globally across multiple countries.\n", + "To bolster the text generation and understanding abilities of LLaMA \u001b[1;36m2\u001b[0m in Tamil, we advocate extending its \n", + "pre-training\n", + "phase with an expansive Tamil corpus, as recommended by Cui et al. \u001b[1m(\u001b[0m\u001b[1;36m2023\u001b[0m\u001b[1m)\u001b[0m. However, this alone is not sufficient. A\n", + "limitation arises from LLaMA’s existing vocabulary, which has a tiny number of Tamil characters. Although LLaMA\n", + "can bypass this by encoding unknown tokens, this process considerably lengthens the sequences, leading to \n", + "substantial\n", + "delays during encoding and decoding. Typically, a single Tamil character is translated into \u001b[1;36m3\u001b[0m-\u001b[1;36m4\u001b[0m byte tokens. \n", + "Moreover,\n", + "these byte tokens are not uniquely purposed for Tamil characters but represent UTF-\u001b[1;36m8\u001b[0m tokens from various languages.\n", + "This dual role complicates the task for transformer encoders and byte-tokens to understand and capture the nuanced\n", + "semantics of Tamil characters proficiently.\n", + "To overcome these problems and to enhance the text generation capabilities in Tamil, we propose the incorporation \n", + "of\n", + "an additional \u001b[1;36m16\u001b[0m,\u001b[1;36m000\u001b[0m Tamil tokens to the pre-existing vocabulary of the LLAMA \u001b[1;36m2\u001b[0m model. This methodology echoes the\n", + "strategies employed in developing Chinese LLaMA \u001b[1m(\u001b[0mCui et al., \u001b[1;36m2023\u001b[0m\u001b[1m)\u001b[0m. The subsequent steps explain the process of\n", + "vocabulary extension:\n", + "\u001b[1;36m1.\u001b[0mEmploy SentencePiece \u001b[1m(\u001b[0mKudo and Richardson, \u001b[1;36m2018\u001b[0m\u001b[1m)\u001b[0m to train a Tamil Tokenizer on an extensive corpus\n", + "of contemporary Tamil text, capturing the essence of modern linguistic nuances necessary for coherent\n", + "communication.\n", + "\u001b[1;36m2.\u001b[0mIntegrate the original tokenizer of the LLaMA \u001b[1;36m2\u001b[0m model with the vocabulary derived from the newly trained\n", + "SentencePiece tokenizer. This amalgamation culminates in an augmented tokenizer encompassing an additional\n", + "\u001b[1;36m16\u001b[0m,\u001b[1;36m000\u001b[0m Tamil tokens, leading to an aggregated vocabulary size of \u001b[1;36m48\u001b[0m,\u001b[1;36m000\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m32\u001b[0m,\u001b[1;36m000\u001b[0m original + \u001b[1;36m16\u001b[0m,\u001b[1;36m000\u001b[0m new\u001b[1m)\u001b[0m.\n", + "\u001b[1;36m3.\u001b[0mDrawing parallels from Cui et al. \u001b[1m(\u001b[0m\u001b[1;36m2023\u001b[0m\u001b[1m)\u001b[0m, the LLaMA model is then tailored to accommodate the Tamil LLaMA\n", + "tokenizer. This modification necessitates resizing the word embeddings and the language model head from\n", + "a matrix shape V ×H to V’ ×H. Herein, V represents the original vocabulary size of \u001b[1;36m32\u001b[0m,\u001b[1;36m000\u001b[0m, whereas V’\n", + "signifies the extended size of \u001b[1;36m48\u001b[0m,\u001b[1;36m000\u001b[0m. Importantly, this adjustment ensures the preservation of the embeddings\n", + "associated with the original vocabulary by appending the new rows to the concluding segments of the initial\n", + "embedding matrices.\n", + "In Figure \u001b[1;36m1\u001b[0m, we can see that the Tamil LLaMA tokenizer needs only \u001b[1;36m20\u001b[0m% to \u001b[1;36m25\u001b[0m% of the tokens that the original LLaMA\n", + "model uses to encode Tamil text. This makes the Tamil LLaMA much more efficient. With this crucial update, the\n", + "model can handle over three times more information and works three times faster. In conclusion, our modifications \n", + "to\n", + "LLaMA \u001b[1;36m2\u001b[0m significantly bolster its capabilities in understanding and generating Tamil content. By adding \u001b[1;36m16\u001b[0m,\u001b[1;36m000\u001b[0m \n", + "Tamil\n", + "tokens, we ensure a more efficient and nuanced representation. The new Tamil LLaMA tokenizer drastically reduces\n", + "the required tokens, making encoding more efficient.\n", + "Figure \u001b[1;36m1\u001b[0m: Tokenizer comparisons between original LLaMA and Tamil LLaMA.\n", + "\u001b[1;36m43.4\u001b[0m Pre-Training Phase\n", + "In order to harness the full potential of the expanded vocabulary of Tamil LLaMA, a robust pre-training phase is\n", + "implemented using a comprehensive Tamil text corpus. The datasets utilized during this training phase are detailed \n", + "in\n", + "\u001b[1;36m3.1\u001b[0m.\u001b[1;36m1\u001b[0m.\n", + "Causal Language Modelling Approach The central mechanism for this pre-training is Causal Language Modelling\n", + "\u001b[1m(\u001b[0mCLM\u001b[1m)\u001b[0m. This method specializes in predicting a given token xtrelying entirely on its preceding tokens. Formally, \n", + "the\n", + "objective during this training phase is to maximize the likelihood of the entire sequence, as represented by:\n", + "\u001b[1;35mP\u001b[0m\u001b[1m(\u001b[0mx1, x2, . . . , x T\u001b[1m)\u001b[0m =TY\n", + "\u001b[33mt\u001b[0m=\u001b[1;35m1P\u001b[0m\u001b[1m(\u001b[0mxt|x1, x2, . . . , x t−\u001b[1;36m1\u001b[0m\u001b[1m)\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1m)\u001b[0m\n", + "Breaking down the elements of this equation:\n", + "•x1, x2, . . . , x T: The individual tokens that constitute the sequence.\n", + "•\u001b[1;35mP\u001b[0m\u001b[1m(\u001b[0mxt|x1, x2, . . . , x t−\u001b[1;36m1\u001b[0m\u001b[1m)\u001b[0m: Represents the conditional probability of the token xt, which depends on the preced-\n", + "ing tokens in the sequence.\n", + "Significance of the CLM in Language Adaptation The CLM stage is integral to enhancing LLaMA’s capability in\n", + "Tamil and other languages. It facilitates the model in learning the intricate syntactic patterns, semantic \n", + "subtleties, and\n", + "unique linguistic features of Tamil. Due to its autoregressive characteristics, the CLM mimics the human approach \n", + "to\n", + "comprehending and generating language, which is primarily shaped by the previous context. Hence, at the end of this\n", + "initial training period, LLaMA becomes capable of interpreting and creating Tamil text that is pertinent to the \n", + "given\n", + "context. This sets a strong foundation for further fine-tuning and specific task-based training sessions.\n", + "\u001b[1;36m3.5\u001b[0m Fine-Tuning Phase\n", + "Following the foundational pre-training phase, the fine-tuning phase emerges as a crucial step, especially for \n", + "modern\n", + "Large Language Models \u001b[1m(\u001b[0mLLMs\u001b[1m)\u001b[0m deployed in real-world scenarios. A broad understanding of language structure and\n", + "semantics, while essential, does not suffice for such applications. This gap is addressed by instruction \n", + "fine-tuning, a\n", + "tailored process enabling LLMs to interpret and execute task-oriented instructions conveyed in natural language. \n", + "Rather\n", + "than the traditional approach of adapting to specific datasets, instruction fine-tuning focuses on a wide array of \n", + "tasks\n", + "articulated through language, ensuring the LLM’s adaptability without task-specific alterations. The datasets \n", + "employed\n", + "in this phase are elaborated in Section \u001b[1;36m3.1\u001b[0m.\u001b[1;36m2\u001b[0m.\n", + "Instruction fine-tuning’s transformative essence lies in its ability to enhance an LLM’s dynamism and \n", + "responsiveness.\n", + "While pre-training equips the model with general linguistic proficiency, instruction fine-tuning refines it to \n", + "interact\n", + "seamlessly with users through natural language, bridging the gap between overarching language mastery and nuanced,\n", + "task-specific agility.\n", + "The instruction format employed closely resembles the one described in the original Alpaca dataset \u001b[1m(\u001b[0mTaori et al., \n", + "\u001b[1;36m2023\u001b[0m\u001b[1m)\u001b[0m.\n", + "Both prompt templates suggested by Alpaca have been utilized: one that includes an input field within the \n", + "instruction\n", + "and another that does not. The prompt templates used during training are given in Figure \u001b[1;36m2\u001b[0m.\n", + "It is essential to clarify that in both templates, the first line signifies the system prompts. For the Alpaca \n", + "dataset \u001b[1m(\u001b[0mTaori\n", + "et al., \u001b[1;36m2023\u001b[0m\u001b[1m)\u001b[0m, we utilize the two system prompts as mentioned in Figure \u001b[1;36m2\u001b[0m. However, for the OpenOrca subset \u001b[1m(\u001b[0mLian\n", + "et al., \u001b[1;36m2023\u001b[0m\u001b[1m)\u001b[0m, a distinct approach is taken: given that this subset already includes a dedicated field for the \n", + "system prompt\n", + "within its dataset, we utilize that specific prompt.\n", + "\u001b[1;36m3.6\u001b[0m Experimental Setup and Training Details\n", + "\u001b[1;36m3.6\u001b[0m.\u001b[1;36m1\u001b[0m LoRA Approach for Pre-Training and Fine-Tuning\n", + "LoRA \u001b[1m(\u001b[0mLow-Rank Adapters\u001b[1m)\u001b[0m is a technique that offers an efficient pathway to fine-tuning large language models, as\n", + "introduced by Hu et al. \u001b[1m(\u001b[0m\u001b[1;36m2021\u001b[0m\u001b[1m)\u001b[0m. This approach is especially beneficial for its computational efficiency, enabling \n", + "the\n", + "fine-tuning of language models without the need for extensive GPU resources. We employed the LoRA method to\n", + "moderate training expenses while also accelerating the training timeline. Training the complete set of parameters\n", + "for models like LLaMA can be exceedingly expensive and resource-intensive, which is often beyond the budget of\n", + "individual research teams or small organizations.\n", + "5Figure \u001b[1;36m2\u001b[0m: Prompt Template for Instruction Tasks\n", + "\u001b[1;36m1\u001b[0m. Prompt T emplate Without Input\n", + "ஒரு பணிைய எவ ் வாறு நிைறேவற ் ற ேவண ் டும ் என ் று கூறும ் அறB-\n", + "வுைரகீேழஉள ் ளது. ேவண ் டுேகாைளப ் ெபாருத ் தமாகநிைறவுெசய ் -\n", + "கின ் ற பதில ் ஒன ் ைற எழுதுக.\n", + "### Instruction:\n", + "\u001b[1m{\u001b[0minstruction\u001b[1m}\u001b[0m\n", + "### Response:\n", + "\u001b[1m{\u001b[0moutput\u001b[1m}\u001b[0m\n", + "\u001b[1;36m2\u001b[0m. Prompt T emplate With Input\n", + "ஒரு பணிைய எவ ் வாறு நிைறேவற ் ற ேவண ் டும ் என ் று கூறும ் அறB-\n", + "வுைர கீேழ உள ் ளது. ேமலும ் விரிவான பின ் னணிைய வழங ் கும ் ஓர ்\n", + "உள ் ளீடும ் ெகாடுக ் கப ் பட ் டுள ் ளது. ேவண ் டுேகாைளப ் ெபாருத ் தமாக\n", + "நிைறவு ெசய ் கின ் ற பதில ் ஒன ் ைற எழுதுக.\n", + "### Instruction:\n", + "\u001b[1m{\u001b[0minstruction\u001b[1m}\u001b[0m\n", + "### Input:\n", + "\u001b[1m{\u001b[0minput\u001b[1m}\u001b[0m\n", + "### Response:\n", + "\u001b[1m{\u001b[0moutput\u001b[1m}\u001b[0m\n", + "\u001b[1;36m3.6\u001b[0m.\u001b[1;36m2\u001b[0m Experimental Setups for Pre-Training\n", + "The foundational models of Tamil LLaMA are initiated with the original LLaMA weights and undergo pre-training\n", + "using the fp16precision setting for both the 7B2and 13B3parameter versions. We utilize 12GB of Tamil text sourced\n", + "from Nguyen et al. \u001b[1m(\u001b[0m\u001b[1;36m2023\u001b[0m\u001b[1m)\u001b[0m during this pre-training phase. Further insights on the dataset can be found in section \n", + "\u001b[1;36m3.1\u001b[0m.\u001b[1;36m1\u001b[0m.\n", + "Our pre-training strategy incorporates the LoRA method Hu et al. \u001b[1m(\u001b[0m\u001b[1;36m2021\u001b[0m\u001b[1m)\u001b[0m, where we integrate LoRA adapters into the\n", + "attention vectors and subsequently train the embeddings, LM heads, and the newly incorporated LoRA parameters. A\n", + "noteworthy deviation from the methodology of the Chinese LLaMA \u001b[1m(\u001b[0mCui et al., \u001b[1;36m2023\u001b[0m\u001b[1m)\u001b[0m in our approach is the \n", + "elimination\n", + "of the initial exclusive training of embeddings. Instead of following it with a two-stage LoRA training of \n", + "attention\n", + "blocks, embeddings, and LM heads, we’ve opted for a streamlined approach to curb costs.\n", + "For the training infrastructure, we harnessed an Nvidia A100 GPU with 80GB of VRAM. The models were trained for\n", + "\u001b[1;36m1\u001b[0m epoch on the entire dataset, and the training time spanned \u001b[1;36m48\u001b[0m hours for 7B model and \u001b[1;36m60\u001b[0m hours for the 13B model \n", + "on\n", + "Microsoft Azure’s Standard NC24adsA 100v4instance.\n", + "The detailed hyperparameters used for training are listed in Table \u001b[1;36m1\u001b[0m.\n", + "\u001b[1;36m3.6\u001b[0m.\u001b[1;36m3\u001b[0m Experimental Setups for Instruction Fine-Tuning\n", + "The 7B4and 13B5models, once pre-trained, undergo fine-tuning in alignment with the procedures outlined in Section\n", + "\u001b[1;36m3.5\u001b[0m. The datasets employed for this phase are elaborated upon in Section \u001b[1;36m3.1\u001b[0m.\u001b[1;36m2\u001b[0m. We persist with the LoRA \n", + "methodology\n", + "for fine-tuning, executing it under the fp16precision setting for both models. Our datasets comprise translated \n", + "variants\n", + "of Alpaca \u001b[1m(\u001b[0mTaori et al., \u001b[1;36m2023\u001b[0m\u001b[1m)\u001b[0m and a select subset from OpenOrca \u001b[1m(\u001b[0mLian et al., \u001b[1;36m2023\u001b[0m\u001b[1m)\u001b[0m.\n", + "2Tamil LLaMA 7B Pretrained: \u001b[4;94mhttps://huggingface.co/abhinand/tamil-llama-7b-base-v0.1\u001b[0m\n", + "3Tamil LLaMA 13B Pretrained: \u001b[4;94mhttps://huggingface.co/abhinand/tamil-llama-13b-base-v0.1\u001b[0m\n", + "4Tamil LLaMA 7B Instruct: \u001b[4;94mhttps://huggingface.co/abhinand/tamil-llama-7b-instruct-v0.1\u001b[0m\n", + "5Tamil LLaMA 13B Instruct: \u001b[4;94mhttps://huggingface.co/abhinand/tamil-llama-13b-instruct-v0.1\u001b[0m\n", + "6Table \u001b[1;36m1\u001b[0m: Pre-Training Hyperparameters\n", + "Configurations 7B 13B\n", + "Training Data 12GB 4GB\n", + "Epochs \u001b[1;36m1\u001b[0m \u001b[1;36m1\u001b[0m\n", + "Batch Size \u001b[1;36m64\u001b[0m \u001b[1;36m64\u001b[0m\n", + "Initial Learning Rate \u001b[1;36m2e-4\u001b[0m \u001b[1;36m2e-4\u001b[0m\n", + "Max Sequence Length \u001b[1;36m512\u001b[0m \u001b[1;36m512\u001b[0m\n", + "LoRA Rank \u001b[1;36m64\u001b[0m \u001b[1;36m64\u001b[0m\n", + "LoRA Alpha \u001b[1;36m128\u001b[0m \u001b[1;36m128\u001b[0m\n", + "LoRA Target Modules QKVO, MLP QKVO, MLP\n", + "Training Precision FP16 FP16\n", + "In a bid to augment the models’ proficiency with Tamil-centric literature, cultural nuances, and historical \n", + "contexts, we\n", + "leverage a tailored dataset sourced from Wikipedia. Additionally, to extract instructions from this text, we \n", + "utilize the\n", + "Self-Instruct method, as highlighted in Wang et al. \u001b[1m(\u001b[0m\u001b[1;36m2023\u001b[0m\u001b[1m)\u001b[0m. This approach involves the GPT-\u001b[1;36m4\u001b[0m \u001b[1m(\u001b[0mOpenAI, \u001b[1;36m2023\u001b[0m\u001b[1m)\u001b[0m APIs\n", + "from OpenAI to generate the new instruction dataset. It is crucial to note that the system prompts, referenced in \n", + "Section\n", + "\u001b[1;36m3.1\u001b[0m.\u001b[1;36m2\u001b[0m, remain consistent during this supplemental fine-tuning phase. For the hardware, the same A100 GPU with 80GB\n", + "of VRAM was utilized.\n", + "In summary, our fine-tuning approach employs a new translated dataset consisting of roughly \u001b[1;36m145\u001b[0m,\u001b[1;36m000\u001b[0m instructions. A\n", + "detailed account of the hyperparameters used for fine-tuning can be found in the Table \u001b[1;36m2\u001b[0m.\n", + "Table \u001b[1;36m2\u001b[0m: Fine-tuning Hyperparameters\n", + "Configurations 7B 13B\n", + "Training Data 145k 145k\n", + "Epochs \u001b[1;36m2\u001b[0m \u001b[1;36m1\u001b[0m\n", + "Batch Size \u001b[1;36m64\u001b[0m \u001b[1;36m64\u001b[0m\n", + "Dropout Rate \u001b[1;36m0.1\u001b[0m \u001b[1;36m0.1\u001b[0m\n", + "Initial Learning Rate \u001b[1;36m2e-4\u001b[0m \u001b[1;36m2e-4\u001b[0m\n", + "Max Sequence Length \u001b[1;36m512\u001b[0m \u001b[1;36m512\u001b[0m\n", + "LoRA Rank \u001b[1;36m64\u001b[0m \u001b[1;36m64\u001b[0m\n", + "LoRA Alpha \u001b[1;36m128\u001b[0m \u001b[1;36m128\u001b[0m\n", + "LoRA Target Modules QKVO, MLP QKVO, MLP\n", + "Training Precision FP16 FP16\n", + "\u001b[1;36m4\u001b[0m Results on Instruction Following Tasks\n", + "\u001b[1;36m4.1\u001b[0m Task Design and Evaluation Method\n", + "Evaluating the outcomes of text generation tasks is intricate due to their multifaceted formats, distinguishing \n", + "them\n", + "from typical Natural Language Understanding \u001b[1m(\u001b[0mNLU\u001b[1m)\u001b[0m tasks. Drawing inspiration from previous studies that employed\n", + "GPT-\u001b[1;36m4\u001b[0m \u001b[1m(\u001b[0mOpenAI, \u001b[1;36m2023\u001b[0m\u001b[1m)\u001b[0m for scoring, we similarly engage GPT-\u001b[1;36m4\u001b[0m to assign a grade on a \u001b[1;36m10\u001b[0m-point scale to each instance.\n", + "This approach is more efficient than human evaluations. However, understanding the potential inaccuracies of \n", + "GPT-\u001b[1;36m4\u001b[0m’s\n", + "evaluations, we supplement its scores with manual reviews, adjusting them as necessary. Such hands-on inspections\n", + "affirm the consistency and authenticity of the scores, ensuring they genuinely mirror the efficacy of the models \n", + "under\n", + "review.\n", + "With the GPT-\u001b[1;36m4\u001b[0m-based scoring and manual verifications, we have established a robust evaluation framework for our\n", + "Tamil LLaMA. Our assessment suite is diligently designed to provide a basic evaluation of Tamil LLaMA. This suite\n", + "comprises over \u001b[1;36m120\u001b[0m diverse examples, covering areas such as Question Answering, Reasoning, Literature, \n", + "Entertainment,\n", + "Translation, Programming, and Ethics, among others. The overall score for a specific task is computed by summing\n", + "the scores from its constituent samples and normalizing it to a \u001b[1;36m100\u001b[0m-point scale. Such an approach ensures a \n", + "holistic\n", + "reflection of the models’ capabilities across varying tasks, yielding a well-rounded measure of their overall \n", + "performance.\n", + "\u001b[1;36m74.2\u001b[0m Generation Parameters\n", + "The choice of generation parameters during inference greatly affects the caliber of the results in tasks involving \n", + "text\n", + "generation. Additionally, the degree of quantization can also affect performance. Below are the generation \n", + "parameters\n", + "we adopted for model evaluations:\n", + "•Quantization Config : The model is loaded in \u001b[1;36m8\u001b[0m−bit, with the torch data type specified as bfloat \u001b[1;36m16\u001b[0m.\n", + "•Context Size: The context size is maintained at the model’s default of \u001b[1;36m4096\u001b[0m tokens.\n", + "•Temperature: We assign a temperature value of \u001b[1;36m0.2\u001b[0m to guide the randomness during sampling. A lower\n", + "temperature prompts the model to produce more deterministic outputs, whereas a higher value boosts diversity,\n", + "potentially compromising coherence. For creative instructions, we adjust the temperature to \u001b[1;36m0.7\u001b[0m to encourage\n", + "varied outputs.\n", + "•Top-k Sampling : With k set to \u001b[1;36m50\u001b[0m, the model selects its succeeding token from the \u001b[1;36m50\u001b[0m most probable candidates,\n", + "introducing a level of unpredictability and variety to the resulting text.\n", + "•Top-p Sampling : Complementing Top-k sampling, we employ Top-p sampling with a threshold of \u001b[1;36m0.90\u001b[0m. This\n", + "ensures the model weighs a fluid set of tokens, which, combined, represent \u001b[1;36m90\u001b[0m\n", + "•Maximum Sequence Length : To keep the output concise and pertinent, we cap the generated sequence at \u001b[1;36m512\u001b[0m\n", + "tokens.\n", + "•Repetition Penalty : A repetition penalty of \u001b[1;36m1.1\u001b[0m is applied to deter the model from producing redundant text,\n", + "disincentivizing previously chosen tokens.\n", + "For these evaluations, we utilized a Google Colab notebook powered by a T4 GPU.\n", + "\u001b[1;36m4.3\u001b[0m Results from Instruction Tasks\n", + "The evaluation scores of the Tamil LLaMA models, as rated by GPT-\u001b[1;36m4\u001b[0m, are presented in Table \u001b[1;36m3\u001b[0m. A noteworthy\n", + "observation during our evaluation is the superior performance of our models compared to gpt-\u001b[1;36m3.5\u001b[0m-turbo in manual\n", + "assessments, which is further reinforced by the commendable scores in GPT-\u001b[1;36m4\u001b[0m’s evaluations. However, it is essential\n", + "to\n", + "consider that GPT-\u001b[1;36m4\u001b[0m might inherently favor responses from other GPT model lineages. Even though our model excels in\n", + "numerous tasks, there are areas of exception, such as ethics, and this was anticipated, given that we did not \n", + "undertake\n", + "any alignment efforts. Challenges in literature/entertainment and other areas can be attributed to data limitations\n", + "during\n", + "the pre-training phase, primarily due to cost constraints. Despite these nuances, our models establish a robust \n", + "foundation\n", + "for subsequent enhancements and progress in large language models tailored to Tamil.\n", + "Table \u001b[1;36m3\u001b[0m: GPT-\u001b[1;36m4\u001b[0m rated performance scores for different models on Tamil instructions\n", + "Task Type Tamil-LLaMA-7B Tamil-LLaMA-13B gpt-\u001b[1;36m3.5\u001b[0m-turbo\n", + "Question Answering \u001b[1;36m77.00\u001b[0m \u001b[1;36m75.33\u001b[0m \u001b[1;36m54.33\u001b[0m\n", + "Open-ended QA \u001b[1;36m84.47\u001b[0m \u001b[1;36m85.26\u001b[0m \u001b[1;36m58.68\u001b[0m\n", + "Reasoning \u001b[1;36m47.50\u001b[0m \u001b[1;36m64.25\u001b[0m \u001b[1;36m63.50\u001b[0m\n", + "Literature \u001b[1;36m45.50\u001b[0m \u001b[1;36m40.00\u001b[0m \u001b[1;36m71.00\u001b[0m\n", + "Entertainment \u001b[1;36m43.33\u001b[0m \u001b[1;36m50.00\u001b[0m \u001b[1;36m60.00\u001b[0m\n", + "Creative Writing \u001b[1;36m92.50\u001b[0m \u001b[1;36m95.62\u001b[0m \u001b[1;36m59.69\u001b[0m\n", + "Translation \u001b[1;36m60.56\u001b[0m \u001b[1;36m66.67\u001b[0m \u001b[1;36m92.78\u001b[0m\n", + "Coding \u001b[1;36m63.57\u001b[0m \u001b[1;36m76.07\u001b[0m \u001b[1;36m57.14\u001b[0m\n", + "Ethics \u001b[1;36m23.75\u001b[0m \u001b[1;36m57.50\u001b[0m \u001b[1;36m40.00\u001b[0m\n", + "Overall \u001b[1;36m63.83\u001b[0m \u001b[1;36m71.17\u001b[0m \u001b[1;36m61.33\u001b[0m\n", + "By observing Table \u001b[1;36m3\u001b[0m, several intriguing outcomes emerge. Notably, the gpt-\u001b[1;36m3.5\u001b[0m-turbo , despite its prowess in \n", + "numerous\n", + "languages, appears to be eclipsed by the Tamil LLaMA models in multiple domains. A standout observation was\n", + "the Ethics category, where the gpt-\u001b[1;36m3.5\u001b[0m-turbo model demonstrated a propensity to respond to potentially dangerous\n", + "queries in Tamil. Additionally, in the Coding section, the gpt-\u001b[1;36m3.5\u001b[0m-turbo ’s responses either seemed to exhibit a \n", + "lack of\n", + "comprehension or overlooked critical details, leading to a subdued score. While gpt-\u001b[1;36m3.5\u001b[0m-turbo excels in tasks \n", + "related to\n", + "English and other languages, its performance in the context of Tamil reveals areas for weaknesses.\n", + "\u001b[1;36m84.3\u001b[0m.\u001b[1;36m1\u001b[0m Reasoning:\n", + "In reasoning tasks, the models demonstrate commendable performance. While minor discrepancies occasionally arise in\n", + "areas such as dates, quantities, and formulas, they predominantly excel in reasoning exercises. According to our \n", + "manual\n", + "evaluations, even our smaller Tamil-LLaMA 7B model surpasses the performance of the much larger LLaMA \u001b[1;36m2\u001b[0m 70B in\n", + "Tamil text generation. In comparison, even gpt-\u001b[1;36m3.5\u001b[0m-turbo \u001b[1m(\u001b[0mOpenAI, \u001b[1;36m2022\u001b[0m\u001b[1m)\u001b[0m often falters in several reasoning \n", + "instructions,\n", + "producing outputs that miss the mark in relevance, clarity, fluency, and accuracy. This inadequacy in performance \n", + "is\n", + "also observed in LLaMA \u001b[1;36m2\u001b[0m 70B, rendering their generated Tamil text less beneficial. Examples of responses related \n", + "to\n", + "reasoning tasks are given in the Figure \u001b[1;36m5\u001b[0m.\n", + "We conducted our comparisons with LLaMA \u001b[1;36m2\u001b[0m 70B using the model hosted by Perplexity Labs.\n", + "\u001b[1;36m4.3\u001b[0m.\u001b[1;36m2\u001b[0m Translation:\n", + "For translation tasks, our models exhibit satisfactory performance, particularly when translating from a foreign \n", + "language\n", + "to Tamil. However, the accuracy diminishes when translating from Tamil to other languages—a shortcoming we aim to\n", + "address in future iterations. Based on our manual evaluations, our models outperform the original LLaMA \u001b[1;36m2\u001b[0m 70B in\n", + "Tamil text translations. However, their efficacy is roughly on par with gpt-\u001b[1;36m3.5\u001b[0m-turbo . Examples of outputs for \n", + "translation\n", + "tasks are given in Figure \u001b[1;36m6\u001b[0m.\n", + "\u001b[1;36m4.3\u001b[0m.\u001b[1;36m3\u001b[0m Code Generation:\n", + "Our models exhibit impressive performance in code generation tasks despite the limited code instructions present\n", + "in the training dataset. They capably provide coherent explanations in Tamil for the generated code. Based on our\n", + "hands-on evaluations, our models markedly surpass the performance of the more sizable LLaMA \u001b[1;36m2\u001b[0m 70B model, which\n", + "when instructed in Tamil, often either misconstrues the task or produces erroneous answers in English. However, it \n", + "is\n", + "important to highlight that our model is not tailored for coding tasks. While it handles more straightforward \n", + "problems\n", + "adeptly, it encounters challenges with more intricate ones. Example responses from our models for Code Generation\n", + "tasks can be found in Figure \u001b[1;36m7\u001b[0m.\n", + "\u001b[1;36m4.3\u001b[0m.\u001b[1;36m4\u001b[0m Open Question Answering\n", + "In open question answering tasks, much like in reasoning, the model displays a commendable performance. Despite\n", + "occasional inaccuracies in areas like dates and other factual information, its proficiency often exceeded our \n", + "expectations,\n", + "delivering surprising results on multiple instances. Example responses from our models for Open Question Answering\n", + "tasks can be found in Figure \u001b[1;36m8\u001b[0m.\n", + "\u001b[1;36m4.3\u001b[0m.\u001b[1;36m5\u001b[0m Creative Writing \u001b[35m/\u001b[0m Text Generation\n", + "Text generation is a foundational capability for Large Language Models \u001b[1m(\u001b[0mLLMs\u001b[1m)\u001b[0m, with creative text generation—such \n", + "as\n", + "crafting letters or applications—being a particularly notable use case. In general, larger models have an edge in \n", + "this\n", + "domain, often outshining their smaller counterparts. The quality and quantity of training data play pivotal roles \n", + "in this\n", + "context. While the sheer volume of data can improve performance, the richness and quality of the data are equally \n", + "vital.\n", + "With abundant high-quality training data, even smaller models can sometimes surpass the performance of larger ones.\n", + "In our experiments, our models showed decent performance in standard tasks. However, they faced challenges when\n", + "assigned with more complicated tasks. Example responses from our models for Creative Writing tasks can be found in\n", + "Figure \u001b[1;36m9\u001b[0m.\n", + "\u001b[1;36m4.3\u001b[0m.\u001b[1;36m6\u001b[0m Mathematical reasoning\n", + "Mathematical reasoning presents a significant challenge for our models. Like many Large Language Models \u001b[1m(\u001b[0mLLMs\u001b[1m)\u001b[0m,\n", + "they don’t excel in handling mathematical tasks. From our hands-on experiments, we observed that the performance of\n", + "our models, mainly when dealing with Tamil, lagged behind that of the original English LLaMA models. Recognizing\n", + "this as an area of improvement, we intend to prioritize and enhance the model’s capabilities in subsequent \n", + "iterations.\n", + "Examples of outputs for mathematical reasoning tasks are given in Figure \u001b[1;36m10\u001b[0m.\n", + "\u001b[1;36m4.4\u001b[0m Results from Natural Language Understanding \u001b[1m(\u001b[0mNLU\u001b[1m)\u001b[0m tasks\n", + "Understanding natural language \u001b[1m(\u001b[0mNLU\u001b[1m)\u001b[0m is a vital element within the field of natural language processing \u001b[1m(\u001b[0mNLP\u001b[1m)\u001b[0m that\n", + "enables computers to comprehend and interpret human language. NLU focuses on comprehending and extracting\n", + "9meaning from text, whereas text generation is concerned with generating human-like text based on a given input, \n", + "often\n", + "without any specific understanding of the text’s meaning.\n", + "To ascertain the prowess of a model, its performance in Natural Language Understanding \u001b[1m(\u001b[0mNLU\u001b[1m)\u001b[0m tasks is paramount.\n", + "However, the availability of standard benchmarks for Tamil in this domain remains sparse. Notable exceptions \n", + "include\n", + "the IndicNLP \u001b[1m(\u001b[0mKunchukuttan, \u001b[1;36m2020\u001b[0m\u001b[1m)\u001b[0m, IndicNLP Corpus \u001b[1m(\u001b[0mKunchukuttan et al., \u001b[1;36m2020\u001b[0m\u001b[1m)\u001b[0m, and IndicSentiment \u001b[1m(\u001b[0mAI4Bharat,\n", + "\u001b[1;36m2023\u001b[0m\u001b[1m)\u001b[0m datasets. We opted to assess our models utilizing the test set from the IndicSentiment dataset \u001b[1m(\u001b[0mAI4Bharat, \n", + "\u001b[1;36m2023\u001b[0m\u001b[1m)\u001b[0m,\n", + "and a text classification dataset sourced from the IndicNLP Corpus \u001b[1m(\u001b[0mKunchukuttan et al., \u001b[1;36m2020\u001b[0m\u001b[1m)\u001b[0m.\n", + "The test set of the IndicSentiment dataset encompasses \u001b[1;36m1\u001b[0m,\u001b[1;36m000\u001b[0m sentiment samples in Tamil. It is important to note \n", + "that\n", + "our evaluation was concentrated solely on this Tamil subset.\n", + "Figure \u001b[1;36m3\u001b[0m: Performance comparison on the IndicSentiment-7B dataset\n", + "From Figure \u001b[1;36m3\u001b[0m, it is evident that our Tamil LLaMA model remarkably surpasses the original LLaMA in this specific\n", + "NLU task. The latter’s performance mirrors that of random guessing, registering an accuracy of \u001b[1;36m50.5\u001b[0m%. In stark \n", + "contrast,\n", + "our model impressively scores an accuracy of \u001b[1;36m81.3\u001b[0m%. This enhanced NLU capability underscores the efficacy of our\n", + "methodologies—such as vocabulary expansion and retraining in facilitating the model to comprehend a new language\n", + "like Tamil with heightened proficiency.\n", + "We further extended our evaluation to the iNLTK Headline Classification subset within the IndicNLP suite \u001b[1m(\u001b[0mKakwani\n", + "et al., \u001b[1;36m2020\u001b[0m\u001b[1m)\u001b[0m. It is essential to highlight that our analysis was focused strictly on the Tamil language subset of \n", + "this dataset.\n", + "The outcomes of this evaluation are graphically depicted in Figure \u001b[1;36m4\u001b[0m.\n", + "Insight from Figure \u001b[1;36m4\u001b[0m reveals that the original LLaMA model’s performance aligns closely with random predictions.\n", + "In contrast, our Tamil LLaMA model showcases a compelling lead, achieving an accuracy rate of \u001b[1;36m80.12\u001b[0m%, further\n", + "affirming its superior capability in natural language understanding.\n", + "\u001b[1;36m5\u001b[0m Limitations\n", + "The Tamil LLaMA suite of models we introduce in this paper heralds several advancements in Tamil language \n", + "processing.\n", + "However, in the spirit of rigorous research, it is imperative to discuss the inherent limitations accompanying \n", + "these\n", + "models.\n", + "10Figure \u001b[1;36m4\u001b[0m: Performance comparison on the IndicGLUE Text Classification dataset\n", + "•Constrained Knowledge Base : Due to computational and cost constraints, our models were trained on a\n", + "relatively limited Tamil dataset. This translates to gaps in the models’ knowledge, especially regarding nuances\n", + "and specifics native to Tamil culture and literature. While the current version lays the foundation, the true\n", + "potential can be unlocked with access to a broader data spectrum, enriching its contextual understanding.\n", + "•Ethical Concerns : Detoxification procedures were not implemented in our training process, making these\n", + "models prone to generating potentially harmful or offensive content. Their uncensored nature necessitates\n", + "caution during deployment.\n", + "•Lack of Robustness : Our models may, at times, produce outputs that veer off-topic or deviate substantially\n", + "from anticipated responses. This vulnerability is more pronounced under adversarial conditions or tricky\n", + "prompts.\n", + "•Reasoning and Mathematical Challenges : While our models showcase competence in specific reasoning\n", + "scenarios, they falter in many others, underscoring the repercussions of not having a comprehensive training\n", + "set.\n", + "•Over-Generation Tendencies : On occasions, the models tend to generate verbose content, extending beyond\n", + "logical termination points, leading to potential redundancy.\n", + "•Evaluation Hurdles : Assessment of LLMs is a crucial yet challenging endeavor. The scarcity of standardized\n", + "benchmarks, particularly for languages like Tamil, which are outside the European linguistic group, complicates\n", + "comparative evaluations. Although we propose an evaluative approach tailored for Tamil within this paper, it\n", + "is not exhaustive enough to gauge models’ efficacy across diverse domains.\n", + "•Translation Loss : Given that the instructional prompts used for fine-tuning the Tamil LLaMA base models are\n", + "derived from English datasets translated into Tamil, there is a potential for nuanced inaccuracies—commonly\n", + "referred to as translation loss. This can potentially affect the models’ abilities in both text generation and\n", + "comprehension due to subtle shifts in meaning that can occur during the translation process.\n", + "While some of these challenges are addressable in subsequent iterations, we envision this work serving as an \n", + "anchor,\n", + "inspiring the research community to propel advancements in LLMs for Indian languages.\n", + "\u001b[1;36m116\u001b[0m Conclusion\n", + "In this research endeavor, we have not only filled a critical void in the domain of Tamil text generation but have \n", + "also\n", + "elevated the status of this venerable language within the realm of large language models with the advent of our \n", + "Tamil\n", + "LLaMA.To assess the performance of our models, we curated an evaluation dataset consisting of \u001b[1;36m120\u001b[0m Tamil \n", + "instructions\n", + "covering a wide range of topics. We then employed GPT-\u001b[1;36m4\u001b[0m to assess and rate the responses generated by our model. \n", + "The\n", + "7B variant of our model has surpassed the performance of OpenAI’s gpt-\u001b[1;36m3.5\u001b[0m-turbo in tasks involving Tamil \n", + "instructions\n", + "within our evaluation methodology. Even more impressively, the 13B iteration has outperformed its counterparts,\n", + "demonstrating an almost \u001b[1;36m10\u001b[0m% higher proficiency in these tasks.\n", + "The significance of our findings is accentuated by the efficiency of our models in generating Tamil text. Equipped \n", + "with\n", + "a refined tokenizer, the 7B and 13B variants demonstrate exceptional proficiency, eclipsing the original LLaMA \n", + "models\n", + "in processing speed without sacrificing textual quality. This stride is not just a modest step forward but a major \n", + "leap in\n", + "the models’ ability to process and generate Tamil language content, thus forging a new avenue for practical \n", + "applications\n", + "that necessitate precision and promptness.\n", + "Nevertheless, our exploration in this field continues. We acknowledge the triumphs and yet remain mindful of the\n", + "impending obstacles. The possibility of generating unintended or adverse content, the financial limitations \n", + "associated\n", + "with model training, and the need for comprehensive evaluation benchmarks tailored for Tamil are challenges we are\n", + "committed to surmounting.\n", + "As we chart our path forward, we acknowledge the value of continuous learning and adaptation. We aspire to delve\n", + "deeper into strategies to mitigate the limitations observed, perhaps even leveraging advancements like \n", + "Reinforcement\n", + "Learning With Human Feedback \u001b[1m(\u001b[0mRLHF\u001b[1m)\u001b[0m and more advanced quantization techniques. The horizon looks promising,\n", + "and we remain committed to elevating the capabilities of LLaMA for Tamil and other Indian languages.\n", + "Appendix\n", + "Example Outputs\n", + "Figure \u001b[1;36m5\u001b[0m: Example Output for Reasoning Tasks\n", + "Prompt ேமைஜயில ் \u001b[1;36m4\u001b[0m ஆப ் பிள ் கள ் இருந ் தன. குமார ் ஒன ் ைறச ்\n", + "சாப ் பிட ் டான ் , ராம ் எடுத ் துச ் ெசன ் றான ் \u001b[1;36m2\u001b[0m. மீதி எத ் -\n", + "தைன ஆப ் பிள ் கள ் உள ் ளன?\n", + "7B Model முதலில ் , நாம ் \u001b[1;36m4\u001b[0m - \u001b[1;36m1\u001b[0m = \u001b[1;36m3\u001b[0m ஆப ் பிள ் கைள எடுத ் துக ் ெகாள ் -\n", + "ளலாம ் , ஏெனனில ் குமார ் ஒன ் று சாப ் பிட ் டார ் . அடுத ் து,\n", + "ராம ் \u001b[1;36m2\u001b[0m ஆப ் பிள ் கைள எடுத ் துச ் ெசன ் றார ் , எனேவ மீத-\n", + "முள ் ள ஆப ் பிள ் களின ் எண ் ணிக ் ைக \u001b[1;36m3\u001b[0m - \u001b[1;36m2\u001b[0m = \u001b[1;36m1\u001b[0m ஆகும ் .\n", + "எனேவ, மீதமுள ் ள ஆப ் பிள ் \u001b[1;36m1\u001b[0m உள ் ளது.\n", + "13B Model இப ் ேபாது, இந ் தக ் ேகள ் விக ் கு பதிலளிக ் க, நாம ் சூத ் தி-\n", + "ரத ் ைதப ் பயன ் படுத ் தலாம ் :\n", + "ெமாத ் த ஆப ் பிள ் கள ் = ஆரம ் ப ஆப ் பிள ் கள ் - சாப ் பிட ் ட\n", + "ஆப ் பிள ் கள ் - எடுத ் துச ் ெசன ் ற ஆப ் பிள ் கள ்\n", + "ஆரம ் ப ஆப ் பிள ் கள ் = \u001b[1;36m4\u001b[0m\n", + "சாப ் பிட ் ட ஆப ் பிள ் கள ் = \u001b[1;36m1\u001b[0m\n", + "எடுக ் கப ் பட ் ட ஆப ் பிள ் கள ் = \u001b[1;36m2\u001b[0m\n", + "இப ் ேபாது இந ் த மதிப ் புகைள சூத ் திரத ் தில ் ெசருகலாம ் :\n", + "ெமாத ் த ஆப ் பிள ் கள ் = \u001b[1;36m4\u001b[0m - \u001b[1;36m1\u001b[0m - \u001b[1;36m2\u001b[0m = \u001b[1;36m1\u001b[0m\n", + "எனேவ, ேமைஜயில ் \u001b[1;36m1\u001b[0m ஆப ் பிள ் உள ் ளது.\n", + "12Figure \u001b[1;36m6\u001b[0m: Example Outputs for Translation Tasks\n", + "Example \u001b[1;36m1\u001b[0m\n", + "Prompt தயவுெசய ் துபின ் வரும் வாக்கியத்ைததமBழBல ் ெமாழB-\n", + "ெபயர்க்கவும்:\n", + "”W e’ve trained a model called ChatGPT which interacts in\n", + "a conversational way . The dialogue format makes it possible\n", + "for ChatGPT to answer followup questions, admit its mis-\n", + "takes, challenge incorrect premises, and reject inappropriate\n", + "requests. ”\n", + "7B Model நாங ் கள ் சாட்ேபாட் என ் ற ெபயரில ் பயிற ் சியளிக்கப ் -\n", + "பட்ட மாதிரிையக் ெகாண ் டுள ் ேளாம், இது உைரயாட-\n", + "லில ் ேபசுவதுேபால ் ெசயல ் படுகிறது.உைரயாடல ் வடி-\n", + "வைமப ் பின ் மூலம், ேகள ் விகளுக்கு பதிலளிக்கும் தி-\n", + "றன ் மற ் றும் தவறானஅறBக்ைககைளமறுக்கும் திறன ்\n", + "ேபான ் றபலவிஷயங ் கைளச் ெசய ் யசாட்ேபாட் அனு-\n", + "மதிக்கிறது. கூடுதலாக, சாட்ேபாட் சில ேநரங ் களில ்\n", + "அதன ் தவறுகளில ் ஒப ் புக்ெகாள ் கிறார் மற ் றும் ெபா-\n", + "ருத்தமற ் றேகாரிக்ைககைளக் கூடநிராகரிக்கிறார்.\n", + "13B Model நாங ் கள ் ”ChatGPT”என ் றமாதிரிையபயிற ் றுவித்துள ் -\n", + "ேளாம், இது உைரயாடல ் முைறயில ் ெதாடர்பு ெகாள ் -\n", + "கிறது. இந்தேபச்சுவழக்குவடிவமானது,பின ் ெதாடர்-\n", + "தல ் ேகள ் விகளுக்குபதிலளிக்கவும்,தவறுகைளச் சரி-\n", + "பார்க்கவும்,தவறானமுன ் ெமாழBவுகைளசவால ் ெசய ் -\n", + "யவும் மற ் றும் ெபாருத்தமற ் றேகாரிக்ைககள ் மீதுநிரா-\n", + "கரிக்கவும் ChatGPTஐஅனுமதிக்கிறது.\n", + "Example \u001b[1;36m2\u001b[0m\n", + "Prompt தயவுெசய ் துபின ் வரும் வாக்கியத்ைததமBழBல ் ெமாழB-\n", + "ெபயர்க்கவும்:\n", + "”Estoy pensando en viajar a Inglaterra para ver el partido\n", + "entre Inglaterra y España de este fin de semana. ¡V a a ser\n", + "emocionante!”\n", + "7B Model நான ் இந்த வார இறுதியில ் இங ் கிலாந்தில ் கால ் பந்து\n", + "விைளயாட்ைடப ் பார்க்கவிரும்புகிேறன ் ,இதுமBகவும்\n", + "சுவாரஸ ் யமாகஇருக்கும்!\n", + "13B Model நான ் இந்த வார இறுதியில ் இங ் கிலாந்து மற ் றும் ஸ ் -\n", + "ெபயின ் இைடேயயான கால ் பந்து விைளயாட்ைடப ்\n", + "பார்க்க இங ் கிலாந்ைதச் ெசல ் லத் திட்டமBடுகிேறன ் !\n", + "இதுமBகவும் உற ் சாகமாகஇருக்கும்!\n", + "13Figure \u001b[1;36m7\u001b[0m: Example Output for Coding Tasks\n", + "Prompt :ைபத ் தானில ் ”Quick Sort” அல ் காரிதத ் ைத ெசயல ் ப-\n", + "டுத ் தவும ் .\n", + "7B Model :\n", + "நிச ் சயம ் ! ைபதான ் குறBயீடுதுணுக ் குஇேதா,இது QuickSort அல ் -\n", + "காரிதத ் ைதப ் பயன ் படுத ் திவரிைசப ் படுத ் தப ் பட ் டபட ் டியைல\n", + "உருவாக ் கப ் பயன ் படும ் :\n", + "def quick_sort \u001b[1m(\u001b[0m arr \u001b[1m)\u001b[0m :\n", + "if len \u001b[1m(\u001b[0m arr \u001b[1m)\u001b[0m \u001b[1m<\u001b[0m\u001b[39m= \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m:\u001b[0m\n", + "\u001b[39mreturn arr\u001b[0m\n", + "\u001b[39mpivot = arr \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;39m]\u001b[0m\n", + "\u001b[39mless = \u001b[0m\u001b[1;39m[\u001b[0m\u001b[39m x for x in arr \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m:\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m if x < pivot \u001b[0m\u001b[1;39m]\u001b[0m\n", + "\u001b[39mgreater = \u001b[0m\u001b[1;39m[\u001b[0m\u001b[39m x for x in arr \u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m:\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m if x \u001b[0m\u001b[1m>\u001b[0m pivot \u001b[1m]\u001b[0m\n", + "return quick_sort \u001b[1m(\u001b[0m less \u001b[1m)\u001b[0m + \u001b[1m[\u001b[0m pivot \u001b[1m]\u001b[0m + quick_sort\n", + "\u001b[1m(\u001b[0m greater \u001b[1m)\u001b[0m\n", + "my_list = \u001b[1m[\u001b[0m\u001b[1;36m5\u001b[0m , \u001b[1;36m3\u001b[0m , \u001b[1;36m7\u001b[0m , \u001b[1;36m2\u001b[0m , \u001b[1;36m9\u001b[0m , \u001b[1;36m4\u001b[0m\u001b[1m]\u001b[0m\n", + "result = quick_sort \u001b[1m(\u001b[0m my_list \u001b[1m)\u001b[0m\n", + "print \u001b[1m(\u001b[0m result \u001b[1m)\u001b[0m # Output : \u001b[1m[\u001b[0m\u001b[1;36m2\u001b[0m , \u001b[1;36m3\u001b[0m , \u001b[1;36m5\u001b[0m , \u001b[1;36m4\u001b[0m , \u001b[1;36m7\u001b[0m , \u001b[1;36m9\u001b[0m\u001b[1m]\u001b[0m\n", + "குறBயீட ் டின ் ெவளியீடு,வரிைசப ் படுத ் தப ் பட ் டபட ் டியலில ் உள ் ள\n", + "உறுப ் புகளின ் மறுசீரைமக ் கப ் பட ் டவரிைசையவழங ் குகிறது.\n", + "இது உதவும ் என ் று நான ் நம ் புகிேறன ் ! உங ் களுக ் கு ஏேதனும ்\n", + "ேகள ் விகள ் இருந ் தால ் எனக ் கு ெதரியப ் படுத ் தவும ் .\n", + "13B Model :\n", + "ைபத ் தானில ் QuickSort அல ் காரிதம ் ெசயல ் படுத ் துவதற ் கான\n", + "எடுத ் துக ் காட ் டு இங ் ேக:\n", + "def quick_sort \u001b[1m(\u001b[0m arr \u001b[1m)\u001b[0m :\n", + "if len \u001b[1m(\u001b[0m arr \u001b[1m)\u001b[0m <= \u001b[1;36m1\u001b[0m:\n", + "return arr\n", + "pivot = arr \u001b[1m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m]\u001b[0m\n", + "left , right = \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m , \u001b[1m[\u001b[0m\u001b[1m]\u001b[0m\n", + "for i in range \u001b[1m(\u001b[0m\u001b[1;36m1\u001b[0m , len \u001b[1m(\u001b[0m arr \u001b[1m)\u001b[0m \u001b[1m)\u001b[0m :\n", + "if arr \u001b[1m[\u001b[0m i \u001b[1m]\u001b[0m < pivot :\n", + "left . append \u001b[1m(\u001b[0m arr \u001b[1m[\u001b[0m i \u001b[1m]\u001b[0m\u001b[1m)\u001b[0m\n", + "else :\n", + "right . append \u001b[1m(\u001b[0m arr \u001b[1m[\u001b[0m i \u001b[1m]\u001b[0m\u001b[1m)\u001b[0m\n", + "return quick_sort \u001b[1m(\u001b[0m left \u001b[1m)\u001b[0m + \u001b[1m[\u001b[0m pivot \u001b[1m]\u001b[0m + quick_sort\n", + "\u001b[1m(\u001b[0m right \u001b[1m)\u001b[0m\n", + "arr = \u001b[1m[\u001b[0m\u001b[1;36m2\u001b[0m , \u001b[1;36m3\u001b[0m , \u001b[1;36m5\u001b[0m , \u001b[1;36m7\u001b[0m , \u001b[1;36m9\u001b[0m , \u001b[1;36m10\u001b[0m , \u001b[1;36m11\u001b[0m\u001b[1m]\u001b[0m\n", + "result = quick_sort \u001b[1m(\u001b[0m arr \u001b[1m)\u001b[0m\n", + "print \u001b[1m(\u001b[0m\u001b[32m\"The sorted array is :\"\u001b[0m, result \u001b[1m)\u001b[0m\n", + "14Figure \u001b[1;36m8\u001b[0m: Example Output for Open Question Answering Tasks\n", + "Prompt :நான ் ெபரியபணக ் காரன ் இல ் ைல,சமீபத ் திய iPhone\n", + "\u001b[1;36m15\u001b[0m'க ் கு நிைறய பணம ் ெசலவழBக ் க ேவண ் டுமா?\n", + "7B Model :\n", + "AIஆக,எனக ் குதனிப ் பட ் டவிருப ் பங ் கள ் அல ் லதுநிதிஇலக ் -\n", + "குகள ் இல ் ைல. இருப ் பினும ் ,உங ் கள ் ேதைவகளுக ் குஏற ் றெதா-\n", + "ைலேபசிையத ் ேதர ் ந ் ெதடுப ் பதுமற ் றும ் உங ் கள ் பட ் ெஜட ் ைடக ்\n", + "கருத ் தில ் ெகாள ் வது முக ் கியம ் . சமீபத ் திய ஐேபான ் களில ் வி-\n", + "ைலகள ் அதிகமாக இருக ் கலாம ் , ஆனால ் நீங ் கள ் விரும ் பிய\n", + "அம ் சங ் கைளவழங ் குவதில ் அைவஇன ் னும ் சிறந ் தைவ. உங ் -\n", + "கள ் ேதைவகைளப ் பூர ் த ் தி ெசய ் யும ் ஒன ் ைறத ் ேதர ் வுெசய ் ய-\n", + "வும ் ,ேமலும ் கூடுதல ் ெசலவுகைளச ் ேசமBக ் கஉதவும ் வைகயில ் ,\n", + "தள ் ளுபடிகள ் அல ் லது ஒப ் பந ் தங ் கைளப ் பார ் க ் கவும ் .\n", + "உங ் கள ் பட ் ெஜட ் டுக ் குள ் இருக ் கமுயற ் சிப ் பதும ் முக ் கியம ் . உங ் -\n", + "கள ் ெசலவினங ் கைளக ் கண ் காணித ் து, உங ் கள ் ெசலவினங ் -\n", + "களுக ் கு முன ் னுரிைம அளிக ் கவும ் . இது ேதைவயற ் ற ெசலவு-\n", + "கைளத ் தவிர ் க ் கவும ் ,உங ் கள ் பணத ் ைதச ் ேசமBப ் பதற ் கானவழB-\n", + "கைளக ் கண ் டறBயவும ் உதவும ் .\n", + "இறுதியில ் ,உங ் கள ் ேதைவகள ் மற ் றும ் பட ் ெஜட ் டிற ் குஏற ் றெதா-\n", + "ைலேபசிையத ் ேதர ் ந ் ெதடுப ் பது முக ் கியம ் . உங ் கள ் பட ் ெஜட ் -\n", + "டில ் ஒட ் டிக ் ெகாண ் டு,உங ் களுக ் குத ் ேதைவயானஅம ் சங ் கைளத ்\n", + "ேதடுங ் கள ் .\n", + "இருப ் பினும ் ,சமீபத ் தியஐேபான ் களில ் ஒன ் றுநிச ் சயமாகஅதிக\n", + "விைலயில ் இருக ் கும ் என ் பைத நிைனவில ் ெகாள ் ளுங ் கள ் .\n", + "15Figure \u001b[1;36m9\u001b[0m: Example Output for Creative Writing Tasks\n", + "Example:\n", + "Prompt :ஐபிஎல ் ெதாடைரெசன ் ைனசூப ் பர் கிங ் ஸ ் \u001b[1m(\u001b[0mசிஎஸ ் -\n", + "ேக\u001b[1m)\u001b[0mெவன ் றதுஎன ் றதைலப ் பில ் ஒருசிறுெசய ் திக் கட்டுைர-\n", + "ையஎழுதுங ் கள ் .\n", + "7B Model :\n", + "ெசன ் ைனசூப ் பர் கிங ் ஸ ் \u001b[1m(\u001b[0mசிஎஸ ் ேக\u001b[1m)\u001b[0m2021இந்தியன ் பிரீமBயர்\n", + "லீக்கில ் \u001b[1m(\u001b[0mஐபிஎல ் \u001b[1m)\u001b[0mஇறுதிப ் ேபாட்டிையெவன ் றது,அவர்களின ்\n", + "மூன ் றாவதுஐபிஎல ் பட்டத்ைதஉறுதிெசய ் தது. இந்தெவற ் -\n", + "றBயின ் மூலம், சிஎஸ ் ேகஅணிக்காகவிைளயாடியேகப ் டன ்\n", + "ேதானிதைலைமயிலானஇளம் மற ் றும் திறைமயானவீரர்க-\n", + "ளின ் குழுவிற ் குஇதுஒருகுறBப ் பிடத்தக்கசாதைனயாகும்.\n", + "சமீபத்தியசீசன ் முழுவதும்,சிஎஸ ் ேகஅணிபலசவால ் கைள\n", + "எதிர்ெகாண ் டது,ஆனால ் அவர்கள ் ெதாடர்ந்துதங ் கள ் திற-\n", + "ைமகைளயும் நம்பிக்ைகையயும் ெவளிப ் படுத்தினர். அணி-\n", + "யின ் ேவகப ் பந்துவீச்சு,ேபட்டிங ் மற ் றும் ஃபீல ் டிங ் ஆகியவற ் -\n", + "றBன ் வலுவானகலைவயானதுஅவர்களின ் ேபாட்டியாளர்-\n", + "களின ் பலேமாசமானஆட்டங ் களுக்குவழBவகுத்தது,ேமலும்\n", + "அவர்கள ் இறுதிப ் ேபாட்டியில ் அவர்களின ் ெசாந்தவிைளயாட்-\n", + "டுகளில ் ஆதிக்கம் ெசலுத்தமுடிந்தது.\n", + "இந்தெவற ் றBயின ் மூலம்,சிஎஸ ் ேகஅணிமூன ் றுஐபிஎல ் சாம்-\n", + "பியன ் ஷCப ் கைளெவன ் றுள ் ளது,ேமலும் அவர்களின ் ரசிகர்-\n", + "கள ் மகிழ்ச்சியில ் மூழ்கிஉள ் ளனர்.ேதானியும் அவரதுஅணி-\n", + "யும் பலஆண ் டுகளாகஇந்தியகிரிக்ெகட் அரங ் கில ் முக்கிய\n", + "நபராகஇருந்துவருகின ் றனர்,ேமலும் இந்தெவற ் றBஅவர்க-\n", + "ளின ் பாரம்பரியத்ைதேமலும் உயர்த்துகிறது.\n", + "ஒட்டுெமாத்தமாக,சிஎஸ ் ேகஅணிஇந்தசீசனின ் ஐபிஎல ் ெதா-\n", + "டர் இறுதிப ் ேபாட்டிக்குமுன ் ேனறBயதில ் ஒருெபரியசாதைன-\n", + "ையக் ெகாண ் டிருந்தது,ேமலும் அவர்களின ் ரசிகர்கள ் இப ் ேபா-\n", + "துஒருவருடம் கழBத்துதங ் கள ் அணிக்குஉற ் சாகத்ைதயும் ஆத-\n", + "ரைவயும் காட்டஎதிர்பார்க்கிறார்கள ் .\n", + "16Figure \u001b[1;36m10\u001b[0m: Example Outputs for Mathematical Reasoning Tasks\n", + "Example \u001b[1;36m1\u001b[0m\n", + "Prompt \u001b[1;36m7\u001b[0m! என ் றால ் என ் ன என ் பைதக ் கணக ் கிடுங ் கள ்\n", + "7B Model \u001b[1;36m7\u001b[0m! என ் பது \u001b[1;36m7\u001b[0m x \u001b[1;36m6\u001b[0m x \u001b[1;36m5\u001b[0m x \u001b[1;36m4\u001b[0m x \u001b[1;36m3\u001b[0m x \u001b[1;36m2\u001b[0m x \u001b[1;36m1\u001b[0m என ் ற ெபருக ் கல ்\n", + "ெவளிப ் பாட ் ைடக ் குறBக ் கிறது, இது ேதாராயமாக \u001b[1;36m870\u001b[0m\n", + "ஆகும ் .\n", + "எனேவ, \u001b[1;36m7\u001b[0m! = \u001b[1;36m870\u001b[0m\n", + "13B Model \u001b[1;36m7\u001b[0m! என ் பது \u001b[1;36m7\u001b[0m இன ் காரணிகளின ் எண ் ணிக ் ைக, அதா-\n", + "வது \u001b[1;36m1\u001b[0m x \u001b[1;36m2\u001b[0m x \u001b[1;36m3\u001b[0m x \u001b[1;36m4\u001b[0m x \u001b[1;36m5\u001b[0m x \u001b[1;36m6\u001b[0m x \u001b[1;36m7\u001b[0m ஆகும ் . எனேவ, \u001b[1;36m7\u001b[0m! = \u001b[1;36m5040\u001b[0m\n", + "ஆகும ் .\n", + "Example \u001b[1;36m2\u001b[0m\n", + "Prompt 3x+\u001b[1;36m1\u001b[0m=\u001b[1;36m10\u001b[0m என ் றால ் , xஎதற ் கு சமம ் ?\n", + "7B Model ெகாடுக ் கப ் பட ் ட சமன ் பாடு 3x+ \u001b[1;36m1\u001b[0m = \u001b[1;36m10\u001b[0m எனில ் , xக ் கு தீர ் -\n", + "வு காண, நாம ் பின ் வரும ் படிகைளப ் பின ் பற ் றலாம ் :\n", + "படி \u001b[1;36m1\u001b[0m: சமன ் பாட ் டின ் இரு பக ் கங ் களிலிருந ் தும ் \u001b[1;36m1\u001b[0m ஐக ்\n", + "கழBக ் கவும ் . இது நமக ் கு அளிக ் கிறது:\n", + "3x+ \u001b[1;36m1\u001b[0m−\u001b[1;36m1\u001b[0m = \u001b[1;36m10\u001b[0m −\u001b[1;36m1\u001b[0m\n", + "\u001b[33m3x\u001b[0m= \u001b[1;36m9\u001b[0m\n", + "படி \u001b[1;36m2\u001b[0m: இப ் ேபாது எங ் களிடம ் 4xஇன ் மதிப ் பு இருப ் ப-\n", + "தால ் , அைத அசல ் சமன ் பாட ் டில ் மாற ் றலாம ் : 3x+\u001b[1;36m1\u001b[0m = \u001b[1;36m10\u001b[0m\n", + "\u001b[1;35m3\u001b[0m\u001b[1m(\u001b[0m\u001b[1;36m9\u001b[0m\u001b[1m)\u001b[0m + \u001b[1;36m1\u001b[0m = \u001b[1;36m10\u001b[0m\n", + "\u001b[1;36m29\u001b[0m + \u001b[1;36m1\u001b[0m = \u001b[1;36m10\u001b[0m\n", + "\u001b[1;36m30\u001b[0m = \u001b[1;36m10\u001b[0m\n", + "எனேவ, xக ் கான தீர ் வு \u001b[1;36m30\u001b[0m ஆகும ் .\n", + "இருப ் பினும ் , ெகாடுக ் கப ் பட ் ட சமன ் பாட ் டிற ் கான சரி-\n", + "யான தீர ் ைவ நீங ் கள ் ேதடுகிறீர ் களானால ் , xஇன ் மதிப ் -\n", + "ைபப ் ெபற, இரு பக ் கங ் கைளயும ் \u001b[1;36m3\u001b[0m ஆல ் வகுக ் க ேவண ் -\n", + "டும ் .\n", + "\u001b[33mx\u001b[0m= \u001b[1m(\u001b[0m\u001b[1;36m30\u001b[0m/\u001b[1;36m3\u001b[0m\u001b[1m)\u001b[0m\n", + "\u001b[33mx\u001b[0m= \u001b[1;36m10\u001b[0m\n", + "எனேவ, xஎன ் பது 10க ் கு சமம ் .\n", + "13B Model 3x+ \u001b[1;36m1\u001b[0m = \u001b[1;36m10\u001b[0m சமன ் பாட ் டில ் xக ் கு தீர ் வு காணும ் ேபா-\n", + "து, சமன ் பாட ் டின ் ஒரு பக ் கத ் தில ் மாறBைய தனிைமப ் -\n", + "படுத ் த ேவண ் டும ் .\n", + "முதலில ் , சமன ் பாட ் டின ் இரு பக ் கங ் களிலிருந ் தும ் \u001b[1;36m1\u001b[0m ஐக ்\n", + "கழBப ் பதன ் மூலம ் ெதாடங ் கலாம ் :\n", + "3x+ \u001b[1;36m1\u001b[0m−\u001b[1;36m1\u001b[0m = \u001b[1;36m10\u001b[0m −\u001b[1;36m1\u001b[0m\n", + "இது எளிதாக ் குகிறது:\n", + "\u001b[33m3x\u001b[0m= \u001b[1;36m9\u001b[0m\n", + "அடுத ் து, சமன ் பாட ் டின ் இரு பக ் கங ் கைளயும ் \u001b[1;36m3\u001b[0m ஆல ்\n", + "வகுப ் பதன ் மூலம ் xஐ தனிைமப ் படுத ் துேவாம ் :\n", + "\u001b[1m(\u001b[0m3x\u001b[1m)\u001b[0m\u001b[35m/\u001b[0m\u001b[95m3\u001b[0m = \u001b[1m(\u001b[0m\u001b[1;36m9\u001b[0m\u001b[1m)\u001b[0m\u001b[35m/\u001b[0m\u001b[95m3\u001b[0m\n", + "இது எளிதாக ் குகிறது:\n", + "\u001b[33mx\u001b[0m= \u001b[1;36m3\u001b[0m\n", + "எனேவ, 3x+ \u001b[1;36m1\u001b[0m = \u001b[1;36m10\u001b[0m சமன ் பாட ் டிற ் கான தீர ் வு \u001b[33mx\u001b[0m= \u001b[1;36m3\u001b[0m\n", + "ஆகும ் .\n", + "17Acknowledgments\n", + "We gratefully acknowledge the assistance of OpenAI’s GPT-\u001b[1;36m4\u001b[0m in the preparation of this manuscript. The AI’s advanced\n", + "language understanding and generation capabilities were invaluable in refining the structure, clarity, and overall\n", + "coherence of the original draft.\n", + "References\n", + "AI4Bharat. Indic sentiment dataset by ai4bharat. \u001b[4;94mhttps://huggingface.co/datasets/ai4bharat/\u001b[0m\n", + "IndicSentiment , \u001b[1;36m2023\u001b[0m.\n", + "J. Ainslie, J. Lee-Thorp, M. de Jong, Y . Zemlyanskiy, F. Lebrón, and S. Sanghai. Gqa: Training generalized \n", + "multi-query\n", + "transformer models from multi-head checkpoints, \u001b[1;36m2023\u001b[0m.\n", + "I. Caswell, T. Breiner, D. van Esch, and A. Bapna. Language id in the wild: Unexpected challenges on the path to a\n", + "thousand-language web text corpus, \u001b[1;36m2020\u001b[0m.\n", + "Y . Cui, Z. Yang, and X. Yao. Efficient and effective text encoding for chinese llama and alpaca, \u001b[1;36m2023\u001b[0m.\n", + "J. Devlin, M.-W. Chang, K. Lee, and K. Toutanova. Bert: Pre-training of deep bidirectional transformers for \n", + "language\n", + "understanding, \u001b[1;36m2019\u001b[0m.\n", + "E. J. Hu, Y . Shen, P. Wallis, Z. Allen-Zhu, Y . Li, S. Wang, L. Wang, and W. Chen. Lora: Low-rank adaptation of \n", + "large\n", + "language models, \u001b[1;36m2021\u001b[0m.\n", + "A. Q. Jiang, A. Sablayrolles, A. Mensch, C. Bamford, D. S. Chaplot, D. de las Casas, F. Bressand, G. Lengyel,\n", + "G. Lample, L. Saulnier, L. R. Lavaud, M.-A. Lachaux, P. Stock, T. L. Scao, T. Lavril, T. Wang, T. Lacroix, and W. \n", + "E.\n", + "Sayed. Mistral 7b, \u001b[1;36m2023\u001b[0m.\n", + "D. Kakwani, A. Kunchukuttan, S. Golla, G. N.C., A. Bhattacharyya, M. M. Khapra, and P. Kumar. IndicNLPSuite:\n", + "Monolingual corpora, evaluation benchmarks and pre-trained multilingual language models for Indian languages.\n", + "InFindings of the Association for Computational Linguistics: EMNLP \u001b[1;36m2020\u001b[0m , pages \u001b[1;36m4948\u001b[0m–\u001b[1;36m4961\u001b[0m, Online, Nov.\n", + "\u001b[1;36m2020\u001b[0m. Association for Computational Linguistics. doi: \u001b[1;36m10.18653\u001b[0m/v1/\u001b[1;36m2020.\u001b[0mfindings-emnlp.\u001b[1;36m445\u001b[0m. URL \u001b[4;94mhttps://\u001b[0m\n", + "aclanthology.org/\u001b[1;36m2020.\u001b[0mfindings-emnlp.\u001b[1;36m445\u001b[0m .\n", + "T. Kudo and J. Richardson. Sentencepiece: A simple and language independent subword tokenizer and detokenizer for\n", + "neural text processing, \u001b[1;36m2018\u001b[0m.\n", + "A. Kunchukuttan. The IndicNLP Library. \u001b[4;94mhttps://github.com/anoopkunchukuttan/indic_nlp_library/\u001b[0m\n", + "blob/master/docs/indicnlp.pdf , \u001b[1;36m2020\u001b[0m.\n", + "A. Kunchukuttan, D. Kakwani, S. Golla, G. N.C., A. Bhattacharyya, M. M. Khapra, and P. Kumar. Ai4bharat-indicnlp\n", + "corpus: Monolingual corpora and word embeddings for indic languages. arXiv preprint arXiv:\u001b[1;36m2005.00085\u001b[0m , \u001b[1;36m2020\u001b[0m.\n", + "W. Lian, B. Goodson, E. Pentland, A. Cook, C. V ong, and \u001b[32m\"Teknium\"\u001b[0m. Openorca: An open dataset of gpt augmented\n", + "flan reasoning traces. \u001b[4;94mhttps://https://huggingface.co/Open-Orca/OpenOrca\u001b[0m , \u001b[1;36m2023\u001b[0m.\n", + "X. V . Lin, T. Mihaylov, M. Artetxe, T. Wang, S. Chen, D. Simig, M. Ott, N. Goyal, S. Bhosale, J. Du, R. Pasunuru,\n", + "S. Shleifer, P. S. Koura, V . Chaudhary, B. O’Horo, J. Wang, L. Zettlemoyer, Z. Kozareva, M. Diab, V . Stoyanov, \n", + "and\n", + "X. Li. Few-shot learning with multilingual language models, \u001b[1;36m2022\u001b[0m.\n", + "A. Mahendiran. abinayam/gpt-\u001b[1;36m2\u001b[0m-tamil. \u001b[4;94mhttps://huggingface.co/abinayam/gpt-2-tamil\u001b[0m , \u001b[1;36m2021\u001b[0m.\n", + "T. Nguyen, C. V . Nguyen, V . D. Lai, H. Man, N. T. Ngo, F. Dernoncourt, R. A. Rossi, and T. H. Nguyen. Culturax: A\n", + "cleaned, enormous, and multilingual dataset for large language models in \u001b[1;36m167\u001b[0m languages, \u001b[1;36m2023\u001b[0m.\n", + "OpenAI. Introducing chatgpt. \u001b[4;94mhttps://openai.com/blog/chatgpt\u001b[0m , \u001b[1;36m2022\u001b[0m.\n", + "OpenAI. Gpt-\u001b[1;36m4\u001b[0m technical report, \u001b[1;36m2023\u001b[0m.\n", + "A. Radford, K. Narasimhan, T. Salimans, and I. Sutskever. Improving language understanding by\n", + "generative pre-training. \u001b[4;94mhttps://s3-us-west-2.amazonaws.com/openai-assets/research-covers/\u001b[0m\n", + "language-unsupervised/language_understanding_paper.pdf , \u001b[1;36m2018\u001b[0m.\n", + "A. Radford, J. Wu, R. Child, D. Luan, D. Amodei, and I. Sutskever. Language models are unsupervised mul-\n", + "titask learners. \u001b[4;94mhttps://d4mucfpksywv.cloudfront.net/better-language-models/language_models_\u001b[0m\n", + "are_unsupervised_multitask_learners.pdf , \u001b[1;36m2019\u001b[0m.\n", + "T. L. Scao, A. Fan, C. Akiki, E. Pavlick, S. Ili ´c, D. Hesslow, R. Castagné, A. S. Luccioni, F. Yvon, M. Gallé, et\n", + "al.\n", + "Bloom: A 176b-parameter open-access multilingual language model. arXiv preprint arXiv:\u001b[1;36m2211.05100\u001b[0m , \u001b[1;36m2022\u001b[0m.\n", + "N. Shazeer. Glu variants improve transformer, \u001b[1;36m2020\u001b[0m.\n", + "18O. Shliazhko, A. Fenogenova, M. Tikhonova, V . Mikhailov, A. Kozlova, and T. Shavrina. mgpt: Few-shot learners go\n", + "multilingual, \u001b[1;36m2022\u001b[0m. URL \u001b[4;94mhttps://arxiv.org/abs/2204.07580\u001b[0m .\n", + "J. Su, Y . Lu, S. Pan, A. Murtadha, B. Wen, and Y . Liu. Roformer: Enhanced transformer with rotary position \n", + "embedding,\n", + "\u001b[1;36m2022\u001b[0m.\n", + "R. Taori, I. Gulrajani, T. Zhang, Y . Dubois, X. Li, C. Guestrin, P. Liang, and T. B. Hashimoto. Stanford alpaca: \n", + "An\n", + "instruction-following llama model. \u001b[4;94mhttps://github.com/tatsu-lab/stanford_alpaca\u001b[0m , \u001b[1;36m2023\u001b[0m.\n", + "H. Touvron, T. Lavril, G. Izacard, X. Martinet, M.-A. Lachaux, T. Lacroix, B. Rozière, N. Goyal, E. Hambro, F. \n", + "Azhar,\n", + "A. Rodriguez, A. Joulin, E. Grave, and G. Lample. Llama: Open and efficient foundation language models, 2023a.\n", + "H. Touvron, L. Martin, K. Stone, P. Albert, A. Almahairi, Y . Babaei, N. Bashlykov, S. Batra, P. Bhargava, S. \n", + "Bhosale,\n", + "D. Bikel, L. Blecher, C. C. Ferrer, M. Chen, G. Cucurull, D. Esiobu, J. Fernandes, J. Fu, W. Fu, B. Fuller, C. Gao,\n", + "V . Goswami, N. Goyal, A. Hartshorn, S. Hosseini, R. Hou, H. Inan, M. Kardas, V . Kerkez, M. Khabsa, I. Kloumann,\n", + "A. Korenev, P. S. Koura, M.-A. Lachaux, T. Lavril, J. Lee, D. Liskovich, Y . Lu, Y . Mao, X. Martinet, T. Mihaylov,\n", + "P. Mishra, I. Molybog, Y . Nie, A. Poulton, J. Reizenstein, R. Rungta, K. Saladi, A. Schelten, R. Silva, E. M. \n", + "Smith,\n", + "R. Subramanian, X. E. Tan, B. Tang, R. Taylor, A. Williams, J. X. Kuan, P. Xu, Z. Yan, I. Zarov, Y . Zhang, A. Fan,\n", + "M. Kambadur, S. Narang, A. Rodriguez, R. Stojnic, S. Edunov, and T. Scialom. Llama \u001b[1;36m2\u001b[0m: Open foundation and\n", + "fine-tuned chat models, 2023b.\n", + "A. Vaswani, N. Shazeer, N. Parmar, J. Uszkoreit, L. Jones, A. N. Gomez, Ł. Kaiser, and I. Polosukhin. Attention is \n", + "all\n", + "you need. Advances in neural information processing systems , \u001b[1;36m30\u001b[0m, \u001b[1;36m2017\u001b[0m.\n", + "Y . Wang, Y . Kordi, S. Mishra, A. Liu, N. A. Smith, D. Khashabi, and H. Hajishirzi. Self-instruct: Aligning \n", + "language\n", + "models with self-generated instructions, \u001b[1;36m2023\u001b[0m.\n", + "B. Zhang and R. Sennrich. Root mean square layer normalization, \u001b[1;36m2019\u001b[0m.\n", + "\u001b[1;36m19\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from wikipediaapi import Wikipedia\n", + "wiki = Wikipedia('RAGBot/0.0', 'en')\n", + "data = wiki.page('Hayao_Miyazaki').text\n", + "\n", + "## After Uploading a pdf\n", + "# data = load_document(\"/content/R_Tamil_LLama.pdf\")\n", + "\n", + "print(data)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "RcN_opcCgTUY" + }, + "source": [ + "Perform Chunking" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "id": "NKkGc9edgTUZ", + "outputId": "6efe0b8a-aa1d-4e7c-ee84-dfc0b10ebe6a" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
Total number of chunks 10\n",
+              "
\n" + ], + "text/plain": [ + "Total number of chunks \u001b[1;36m10\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def chunk_text(text, chunk_size=1000, overlap=20):\n", + " \"\"\"\n", + " Split the text into chunks based on the number of words and word overlap.\n", + " \"\"\"\n", + " words = text.split()\n", + " chunks = []\n", + " for i in range(0, len(words), chunk_size - overlap):\n", + " chunk = ' '.join(words[i:i + chunk_size])\n", + " chunks.append(chunk)\n", + " return chunks\n", + "\n", + "chunked_data = chunk_text(data)\n", + "\n", + "print(\"Total number of chunks\", len(chunked_data))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "6dVGhlpNgTUZ" + }, + "source": [ + "Visualise Chunking" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "Ztv2QtXRgTUa", + "outputId": "ac09962a-ad1d-403a-8f2e-e6e7fda0d07b" + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + "
\n", + "
Chunk 1
\n", + "
TAMIL -LLAMA : A N EWTAMIL LANGUAGE MODEL BASED ON LLAMA 2 Abhinand Balachandran\n", + "abhinandb.ml@gmail.com ABSTRACT Language modeling has witnessed remarkable advancements in recent\n", + "years, with Large Language Models (LLMs) like ChatGPT setting unparalleled benchmarks in human-like\n", + "text generation. How- ever, a prevailing limitation is the underrepresentation of languages like\n", + "Tamil in these cutting-edge models, leading to suboptimal performance in diverse linguistic\n", + "contexts. This paper addresses this lacuna, enhancing the open-source LLaMA model with an addition\n", + "of 16,000 Tamil tokens, aiming to achieve superior text generation and comprehension in the Tamil\n", + "language. We strategically employ the LoRA methodology for efficient model training on a\n", + "comprehensive Tamil corpus, ensuring com- putational feasibility and model robustness. Moreover, we\n", + "introduce a Tamil-translated version of the Alpaca dataset and a subset of the OpenOrca dataset\n", + "tailored for instruction fine-tuning. Our results showcase significant performance improvements in\n", + "Tamil text generation, with potential implications for the broader landscape of LLMs in Indian\n", + "languages. We further underscore our commitment to open research by making our models, datasets, and\n", + "code1publicly accessible, fostering further innovations in language modeling. 1 Introduction The\n", + "past few years have been transformative for language modeling, with groundbreaking advances and\n", + "monumental achievements. At the forefront of this revolution was OpenAI’s ChatGPT (OpenAI, 2022),\n", + "which not only raised the bar in language modeling performance but also underscored the immense\n", + "societal implications of such technologies. Alongside ChatGPT, various Large Language Models (LLMs)\n", + "have consistently demonstrated exceptional prowess in natural language understanding and generation,\n", + "heralding a new era in computational linguistics. Central to the functionality of these modern LLMs\n", + "is the Transformer architecture, a cornerstone concept brought to the limelight by \"Attention is All\n", + "You Need\" (Vaswani et al., 2017). This innovation transformed our approach to sequence-based tasks,\n", + "catalyzing pivotal models like BERT (Devlin et al., 2019) and redefining best practices in Natural\n", + "Language Processing (NLP). Subsequent developments, particularly the Generative Pre-trained\n", + "Transformer (GPT) (Radford et al., 2018), showcased the profound potential of unsupervised pre-\n", + "training on vast datasets. Models like GPT-3 and its successor, GPT-4 (OpenAI, 2023), have redefined\n", + "benchmarks and fueled a renaissance in natural language understanding and generation. Beyond their\n", + "technical prowess, they have prompted a renewed vigor in exploring the limits of Artificial General\n", + "Intelligence (AGI). These advancements, paired with exemplary performance in numerous applications,\n", + "have galvanized the NLP community, sparking widespread application and research from sentiment\n", + "analysis to machine translation. However, progress is not without its pitfalls. The elite LLMs,\n", + "despite their remarkable capabilities, grapple with challenges—primarily, their proprietary nature,\n", + "which constricts open research. Furthermore, an English-centric bias and the enormous computational\n", + "requirements for training such behemoths further accentuate the call for more accessible and diverse\n", + "solutions. In response, the open-source community has championed the creation of models like LLaMA\n", + "(Touvron et al., 2023a) and Mistral (Jiang et al., 2023). Such models, despite their compact nature,\n", + "challenge the hegemony of giants like ChatGPT in select benchmarks, heralding a promising direction\n", + "for future research. 1GitHub Repository: https://github.com/abhinand5/tamil-llamaarXiv:2311.05845v1\n", + "[cs.CL] 10 Nov 2023However, as robust as these models, like LLaMA and Mistral, might be, their\n", + "proficiency in generating coherent text in Tamil and several other Indian languages remains\n", + "noticeably deficient. A fundamental limitation lies in their minimal vocabulary of Tamil characters,\n", + "which is essential for effective text encoding and generation. This paper aims to bridge this gap by\n", + "augmenting the existing LLaMA models’ vocabulary with an additional 16,000 Tamil tokens, markedly\n", + "enhancing their capability in processing and producing Tamil content. This method draws inspiration\n", + "from a parallel endeavor in the Chinese adaptation of LLaMA, as documented in Cui et al. (2023). To\n", + "ensure efficient pre-training and fine-tuning while maintaining computational feasibility, we\n", + "leverage the LoRA (Hu et al., 2021) methodology. We aspire that this initiative catalyzes further\n", + "research endeavors, refining LLaMA and other open-source models tailored for Indian languages. A\n", + "succinct overview of the principal contributions of this paper is as follows: •We bolster the LLaMA\n", + "model’s encoding and decoding proficiencies for Tamil by incorporating an additional 16,000 Tamil\n", + "tokens, thereby expanding its vocabulary. •Through the LoRA methodology, the augmented model\n", + "undergoes training on an extensive Tamil corpus, resulting in a marked enhancement of its text\n", + "generation capabilities relative to its predecessor models. •We present a Tamil-translated version\n", + "of the original Alpaca dataset (Taori et al., 2023), paired with a subset of the OpenOrca (Lian et\n", + "al., 2023) dataset, both curated for instruction fine-tuning in Tamil. •Our newly trained\n", + "instruction and chat models, built upon the Alpaca and OpenOrca datasets, demonstrate notable\n", + "advancements in performance for the Tamil language compared to other open-source language models.\n", + "•To stimulate continuous innovation and broader adaptability, we grant public access to the models,\n", + "datasets, and associated code, inviting further exploration and encouraging the refinement of LLaMA\n", + "models for diverse languages. 2 Related Work Within the broad field of Natural Language Processing\n", + "(NLP), the advent of Large Language Models (LLMs) marks a transformative moment. These models have\n", + "heralded new capabilities in understanding, generating, and processing various human languages,\n", + "underpinning innovations from automated content creation to nuanced sentiment analysis. While their\n", + "proficiency in mainstream languages like English is widely recognized and leveraged, a disparity\n", + "exists in their performance and availability for numerous non-European languages. Tamil, a language\n", + "with ancient roots and spoken by a substantial global population, epitomizes this disparity. Despite\n", + "its linguistic depth and cultural significance, dedicated pre-trained LLMs for Tamil are\n", + "conspicuously underrepresented. Most current offerings are generic, multipurpose LLMs, which do not\n", + "cater specifically to the unique attributes of the Tamil language. A survey of the existing\n", + "literature reveals that many attempts to cater to the Tamil language through LLMs rely heavily on\n", + "multilingual models. Works such as Scao et al. (2022), Shliazhko et al. (2022), and Lin et al.\n", + "(2022) have all ventured into this domain. However, it is crucial to note that, except \"GPT-2 Tamil\"\n", + "by Mahendiran (2021), all these models are not exclusive to Tamil. While they can process Tamil to a\n", + "certain extent, their capabilities are inherently limited. This limitation arises because the\n", + "training data for
\n", + "
\n", + " \n", + "
\n", + "
Chunk 2
\n", + "
can process Tamil to a certain extent, their capabilities are inherently limited. This limitation\n", + "arises because the training data for these models often comprise a low fraction of Tamil content\n", + "relative to other languages. Consequently, the nuances and intricacies specific to Tamil are often\n", + "lost, leading to suboptimal performance. The effort by Mahendiran (2021) represents a notable\n", + "deviation from this trend. Here, the GPT-2 base model, equipped with 117 million parameters as\n", + "outlined in Radford et al. (2019), was fine-tuned with a focus on Tamil, using both the Oscar\n", + "dataset (Caswell et al., 2020) and The IndicNLP (Kunchukuttan, 2020) dataset. This approach\n", + "signifies a targeted attempt to adapt LLM capabilities for the Tamil language specifically. However,\n", + "the broader landscape of Tamil-specific LLM research remains relatively uncharted. This context\n", + "underscores the motivation for our present research. We endeavor to delve deeper into this space,\n", + "addressing existing shortcomings and advancing the capabilities of LLMs tailored for Tamil. 3 Tamil\n", + "LLaMA 3.1 Datasets Used The development of Tamil-LLaMA involved using several different datasets,\n", + "each chosen for specific parts of the training and fine-tuning process. This approach was vital to\n", + "ensure the model’s effectiveness across various tasks. 23.1.1 Datasets used for Pre-Training For the\n", + "initial pre-training phase of LLaMA 2 (Touvron et al., 2023a), we mainly used the CulturaX dataset\n", + "(Nguyen et al., 2023). This dataset is a combination of many popular datasets, including the Oscar\n", + "dataset (Caswell et al., 2020). Out of the 4.72 million documents in CulturaX, we selected 600k\n", + "documents (12 GB) for training. This choice was made to manage training costs while aiming for high\n", + "performance. Our approach was successful, as the model showed strong results in text completion\n", + "tasks even with this smaller dataset. 3.1.2 Datasets used for Instruction Tuning The \"Instruction\n", + "Tuning\" phase was a pivotal stage in refining LLaMA’s proficiency in precisely adhering to textual\n", + "instructions. For this enhancement, we incorporated a translated version of the Stanford Alpaca\n", + "dataset (Taori et al., 2023), comprising 52,000 instructions. Concurrently, we integrated a\n", + "specialized no-code section from the OpenOrca dataset (Lian et al., 2023), which consists of around\n", + "93,000 instructions. The deliberate focus on no-code instructions was to streamline the training\n", + "process, eliminating the intricacies presented by coding instructions during translation. To ensure\n", + "translation uniformity and accuracy across the datasets, the Google Translation API service was our\n", + "tool of choice. We meticulously translated the entirety of the Alpaca dataset while also applying a\n", + "similar methodology to the OpenOrca subset. We believe that leveraging diverse datasets has\n", + "bolstered LLaMA’s enhanced capability to discern and generate contextually pertinent responses\n", + "across a spectrum of prompts. 3.2 Background on the LLaMA Models Introduced by Touvron et al.\n", + "(2023a), LLaMA has emerged as an essential milestone in the world of open-source large language\n", + "models (LLMs), with the renowned Transformer architecture (Vaswani et al., 2017) as its foundation.\n", + "While it draws inspiration from models like GPT for its basic structure—comprising an embedding\n", + "layer and multiple transformer blocks—LLaMA has its unique features. LLaMA has brought forward\n", + "several innovative techniques such as pre-normalization (Zhang and Sennrich, 2019), SwiGLU\n", + "activation (Shazeer, 2020), and rotary embeddings (Su et al., 2022). Offered in sizes ranging from\n", + "7B (7 Billion) to 65B (65 Billion) parameters, LLaMA has been trained on a rich mixture of content\n", + "sources, including web pages, books, and academic papers. Its strong performance on benchmarks,\n", + "especially given its relatively compact size compared to other models, has made it a noteworthy\n", + "contender in the LLM landscape, drawing considerable attention in the AI research community.\n", + "Building upon its predecessor’s foundation, LLaMA 2 (Touvron et al., 2023b) introduces monumental\n", + "enhancements to the LLaMA lineage. With a dataset expanded by 40% relative to LLaMA 1, the models\n", + "under LLaMA 2 exhibit an enriched comprehension of diverse content, leading to improved text\n", + "generation. An extended context length of 4,096 tokens empowers LLaMA 2 to process and understand\n", + "more extensive textual segments, significantly benefiting tasks such as translation and intricate\n", + "question answering. Another pivotal innovation in LLaMA 2 is adopting the grouped- query attention\n", + "mechanism (Ainslie et al., 2023), facilitating faster inference despite its expanded size compared\n", + "to LLaMA 1. In the course of our research, we made a conscious choice to employ LLaMA 2 as our\n", + "primary language model. Several factors influenced this decision. Firstly, LLaMA 2 is a recent\n", + "addition to the lineage of Large Language Models, which implies that it benefits from the latest\n", + "advancements in model training and architectural innovations. This recent launch incorporates the\n", + "most up-to-date techniques and methodologies. Secondly, compared with its predecessor, LLaMA 1, the\n", + "enhancements in LLaMA 2 are undeniably compelling. These improvements are not just incremental; they\n", + "represent substantial strides in areas such as data exposure, context length, and attention\n", + "mechanisms. The evolution from LLaMA 1 to LLaMA 2 is emblematic of the rapid advancements in the\n", + "field, and by leveraging the latter, we aimed to ensure our research was grounded in the most\n", + "cutting-edge tools available. 3.3 Expansion of Tamil Vocabulary LLaMA 2, as outlined in the seminal\n", + "work of Touvron et al. (2023b), is backed by an expansive pre-training corpus of 2 Trillion tokens.\n", + "A detailed linguistic analysis of this vast corpus reveals a striking imbalance in language\n", + "representation. An overwhelming 89.7% of the tokens are sourced from English, with other European\n", + "languages collectively contributing to nearly 10% of the dataset. In stark contrast, diverse\n", + "languages such as Tamil and Hindi represent a meager presence, with their combined token count along\n", + "with other under-represented languages accounting for less than 0.21%. This skewed distribution\n", + "raises concerns about the genuine multilingual and cross-lingual capabilities of LLaMA 2. While it\n", + "is evident that the model is proficient in several European languages, its ability to comprehend and\n", + "generate 3content in languages like Tamil needs to be improved substantially. Our preliminary\n", + "experiments further underscored this limitation. When presented with tasks in Tamil, LLaMA 2\n", + "exhibited a remarkable lack of coherence in its responses. In fact, its performance was notably\n", + "inferior to smaller models, underscoring a noticeable shortcoming in LLaMA
\n", + "
\n", + " \n", + "
\n", + "
Chunk 3
\n", + "
coherence in its responses. In fact, its performance was notably inferior to smaller models,\n", + "underscoring a noticeable shortcoming in LLaMA 2’s coverage of worldwide languages. There is a clear\n", + "need for the open-source community to focus on languages like Tamil, spoken by millions globally\n", + "across multiple countries. To bolster the text generation and understanding abilities of LLaMA 2 in\n", + "Tamil, we advocate extending its pre-training phase with an expansive Tamil corpus, as recommended\n", + "by Cui et al. (2023). However, this alone is not sufficient. A limitation arises from LLaMA’s\n", + "existing vocabulary, which has a tiny number of Tamil characters. Although LLaMA can bypass this by\n", + "encoding unknown tokens, this process considerably lengthens the sequences, leading to substantial\n", + "delays during encoding and decoding. Typically, a single Tamil character is translated into 3-4 byte\n", + "tokens. Moreover, these byte tokens are not uniquely purposed for Tamil characters but represent\n", + "UTF-8 tokens from various languages. This dual role complicates the task for transformer encoders\n", + "and byte-tokens to understand and capture the nuanced semantics of Tamil characters proficiently. To\n", + "overcome these problems and to enhance the text generation capabilities in Tamil, we propose the\n", + "incorporation of an additional 16,000 Tamil tokens to the pre-existing vocabulary of the LLAMA 2\n", + "model. This methodology echoes the strategies employed in developing Chinese LLaMA (Cui et al.,\n", + "2023). The subsequent steps explain the process of vocabulary extension: 1.Employ SentencePiece\n", + "(Kudo and Richardson, 2018) to train a Tamil Tokenizer on an extensive corpus of contemporary Tamil\n", + "text, capturing the essence of modern linguistic nuances necessary for coherent communication.\n", + "2.Integrate the original tokenizer of the LLaMA 2 model with the vocabulary derived from the newly\n", + "trained SentencePiece tokenizer. This amalgamation culminates in an augmented tokenizer encompassing\n", + "an additional 16,000 Tamil tokens, leading to an aggregated vocabulary size of 48,000 (32,000\n", + "original + 16,000 new). 3.Drawing parallels from Cui et al. (2023), the LLaMA model is then tailored\n", + "to accommodate the Tamil LLaMA tokenizer. This modification necessitates resizing the word\n", + "embeddings and the language model head from a matrix shape V ×H to V’ ×H. Herein, V represents the\n", + "original vocabulary size of 32,000, whereas V’ signifies the extended size of 48,000. Importantly,\n", + "this adjustment ensures the preservation of the embeddings associated with the original vocabulary\n", + "by appending the new rows to the concluding segments of the initial embedding matrices. In Figure 1,\n", + "we can see that the Tamil LLaMA tokenizer needs only 20% to 25% of the tokens that the original\n", + "LLaMA model uses to encode Tamil text. This makes the Tamil LLaMA much more efficient. With this\n", + "crucial update, the model can handle over three times more information and works three times faster.\n", + "In conclusion, our modifications to LLaMA 2 significantly bolster its capabilities in understanding\n", + "and generating Tamil content. By adding 16,000 Tamil tokens, we ensure a more efficient and nuanced\n", + "representation. The new Tamil LLaMA tokenizer drastically reduces the required tokens, making\n", + "encoding more efficient. Figure 1: Tokenizer comparisons between original LLaMA and Tamil LLaMA.\n", + "43.4 Pre-Training Phase In order to harness the full potential of the expanded vocabulary of Tamil\n", + "LLaMA, a robust pre-training phase is implemented using a comprehensive Tamil text corpus. The\n", + "datasets utilized during this training phase are detailed in 3.1.1. Causal Language Modelling\n", + "Approach The central mechanism for this pre-training is Causal Language Modelling (CLM). This method\n", + "specializes in predicting a given token xtrelying entirely on its preceding tokens. Formally, the\n", + "objective during this training phase is to maximize the likelihood of the entire sequence, as\n", + "represented by: P(x1, x2, . . . , x T) =TY t=1P(xt|x1, x2, . . . , x t−1) (1) Breaking down the\n", + "elements of this equation: •x1, x2, . . . , x T: The individual tokens that constitute the sequence.\n", + "•P(xt|x1, x2, . . . , x t−1): Represents the conditional probability of the token xt, which depends\n", + "on the preced- ing tokens in the sequence. Significance of the CLM in Language Adaptation The CLM\n", + "stage is integral to enhancing LLaMA’s capability in Tamil and other languages. It facilitates the\n", + "model in learning the intricate syntactic patterns, semantic subtleties, and unique linguistic\n", + "features of Tamil. Due to its autoregressive characteristics, the CLM mimics the human approach to\n", + "comprehending and generating language, which is primarily shaped by the previous context. Hence, at\n", + "the end of this initial training period, LLaMA becomes capable of interpreting and creating Tamil\n", + "text that is pertinent to the given context. This sets a strong foundation for further fine-tuning\n", + "and specific task-based training sessions. 3.5 Fine-Tuning Phase Following the foundational pre-\n", + "training phase, the fine-tuning phase emerges as a crucial step, especially for modern Large\n", + "Language Models (LLMs) deployed in real-world scenarios. A broad understanding of language structure\n", + "and semantics, while essential, does not suffice for such applications. This gap is addressed by\n", + "instruction fine-tuning, a tailored process enabling LLMs to interpret and execute task-oriented\n", + "instructions conveyed in natural language. Rather than the traditional approach of adapting to\n", + "specific datasets, instruction fine-tuning focuses on a wide array of tasks articulated through\n", + "language, ensuring the LLM’s adaptability without task-specific alterations. The datasets employed\n", + "in this phase are elaborated in Section 3.1.2. Instruction fine-tuning’s transformative essence lies\n", + "in its ability to enhance an LLM’s dynamism and responsiveness. While pre-training equips the model\n", + "with general linguistic proficiency, instruction fine-tuning refines it to interact seamlessly with\n", + "users through natural language, bridging the gap between overarching language mastery and nuanced,\n", + "task-specific agility. The instruction format employed closely resembles the one described in the\n", + "original Alpaca dataset (Taori et al., 2023). Both prompt templates suggested by Alpaca have been\n", + "utilized: one that includes an input field within the instruction and another that does not. The\n", + "prompt templates used during training are given in Figure 2. It is essential to clarify that in both\n", + "templates, the first line signifies the system prompts. For the Alpaca dataset (Taori et al., 2023),\n", + "we utilize the two system prompts as mentioned in Figure 2. However, for the OpenOrca subset (Lian\n", + "et al., 2023),
\n", + "
\n", + " \n", + "
\n", + "
Chunk 4
\n", + "
we utilize the two system prompts as mentioned in Figure 2. However, for the OpenOrca subset (Lian\n", + "et al., 2023), a distinct approach is taken: given that this subset already includes a dedicated\n", + "field for the system prompt within its dataset, we utilize that specific prompt. 3.6 Experimental\n", + "Setup and Training Details 3.6.1 LoRA Approach for Pre-Training and Fine-Tuning LoRA (Low-Rank\n", + "Adapters) is a technique that offers an efficient pathway to fine-tuning large language models, as\n", + "introduced by Hu et al. (2021). This approach is especially beneficial for its computational\n", + "efficiency, enabling the fine-tuning of language models without the need for extensive GPU\n", + "resources. We employed the LoRA method to moderate training expenses while also accelerating the\n", + "training timeline. Training the complete set of parameters for models like LLaMA can be exceedingly\n", + "expensive and resource-intensive, which is often beyond the budget of individual research teams or\n", + "small organizations. 5Figure 2: Prompt Template for Instruction Tasks 1. Prompt T emplate Without\n", + "Input ஒரு பணிைய எவ ் வாறு நிைறேவற ் ற ேவண ் டும ் என ் று கூறும ் அறB- வுைரகீேழஉள ் ளது. ேவண ்\n", + "டுேகாைளப ் ெபாருத ் தமாகநிைறவுெசய ் - கின ் ற பதில ் ஒன ் ைற எழுதுக. ### Instruction: {instruction}\n", + "### Response: {output} 2. Prompt T emplate With Input ஒரு பணிைய எவ ் வாறு நிைறேவற ் ற ேவண ் டும ் என\n", + "் று கூறும ் அறB- வுைர கீேழ உள ் ளது. ேமலும ் விரிவான பின ் னணிைய வழங ் கும ் ஓர ் உள ் ளீடும ்\n", + "ெகாடுக ் கப ் பட ் டுள ் ளது. ேவண ் டுேகாைளப ் ெபாருத ் தமாக நிைறவு ெசய ் கின ் ற பதில ் ஒன ் ைற\n", + "எழுதுக. ### Instruction: {instruction} ### Input: {input} ### Response: {output} 3.6.2 Experimental\n", + "Setups for Pre-Training The foundational models of Tamil LLaMA are initiated with the original LLaMA\n", + "weights and undergo pre-training using the fp16precision setting for both the 7B2and 13B3parameter\n", + "versions. We utilize 12GB of Tamil text sourced from Nguyen et al. (2023) during this pre-training\n", + "phase. Further insights on the dataset can be found in section 3.1.1. Our pre-training strategy\n", + "incorporates the LoRA method Hu et al. (2021), where we integrate LoRA adapters into the attention\n", + "vectors and subsequently train the embeddings, LM heads, and the newly incorporated LoRA parameters.\n", + "A noteworthy deviation from the methodology of the Chinese LLaMA (Cui et al., 2023) in our approach\n", + "is the elimination of the initial exclusive training of embeddings. Instead of following it with a\n", + "two-stage LoRA training of attention blocks, embeddings, and LM heads, we’ve opted for a streamlined\n", + "approach to curb costs. For the training infrastructure, we harnessed an Nvidia A100 GPU with 80GB\n", + "of VRAM. The models were trained for 1 epoch on the entire dataset, and the training time spanned 48\n", + "hours for 7B model and 60 hours for the 13B model on Microsoft Azure’s Standard NC24adsA\n", + "100v4instance. The detailed hyperparameters used for training are listed in Table 1. 3.6.3\n", + "Experimental Setups for Instruction Fine-Tuning The 7B4and 13B5models, once pre-trained, undergo\n", + "fine-tuning in alignment with the procedures outlined in Section 3.5. The datasets employed for this\n", + "phase are elaborated upon in Section 3.1.2. We persist with the LoRA methodology for fine-tuning,\n", + "executing it under the fp16precision setting for both models. Our datasets comprise translated\n", + "variants of Alpaca (Taori et al., 2023) and a select subset from OpenOrca (Lian et al., 2023).\n", + "2Tamil LLaMA 7B Pretrained: https://huggingface.co/abhinand/tamil-llama-7b-base-v0.1 3Tamil LLaMA\n", + "13B Pretrained: https://huggingface.co/abhinand/tamil-llama-13b-base-v0.1 4Tamil LLaMA 7B Instruct:\n", + "https://huggingface.co/abhinand/tamil-llama-7b-instruct-v0.1 5Tamil LLaMA 13B Instruct:\n", + "https://huggingface.co/abhinand/tamil-llama-13b-instruct-v0.1 6Table 1: Pre-Training Hyperparameters\n", + "Configurations 7B 13B Training Data 12GB 4GB Epochs 1 1 Batch Size 64 64 Initial Learning Rate 2e-4\n", + "2e-4 Max Sequence Length 512 512 LoRA Rank 64 64 LoRA Alpha 128 128 LoRA Target Modules QKVO, MLP\n", + "QKVO, MLP Training Precision FP16 FP16 In a bid to augment the models’ proficiency with Tamil-\n", + "centric literature, cultural nuances, and historical contexts, we leverage a tailored dataset\n", + "sourced from Wikipedia. Additionally, to extract instructions from this text, we utilize the Self-\n", + "Instruct method, as highlighted in Wang et al. (2023). This approach involves the GPT-4 (OpenAI,\n", + "2023) APIs from OpenAI to generate the new instruction dataset. It is crucial to note that the\n", + "system prompts, referenced in Section 3.1.2, remain consistent during this supplemental fine-tuning\n", + "phase. For the hardware, the same A100 GPU with 80GB of VRAM was utilized. In summary, our fine-\n", + "tuning approach employs a new translated dataset consisting of roughly 145,000 instructions. A\n", + "detailed account of the hyperparameters used for fine-tuning can be found in the Table 2. Table 2:\n", + "Fine-tuning Hyperparameters Configurations 7B 13B Training Data 145k 145k Epochs 2 1 Batch Size 64\n", + "64 Dropout Rate 0.1 0.1 Initial Learning Rate 2e-4 2e-4 Max Sequence Length 512 512 LoRA Rank 64 64\n", + "LoRA Alpha 128 128 LoRA Target Modules QKVO, MLP QKVO, MLP Training Precision FP16 FP16 4 Results on\n", + "Instruction Following Tasks 4.1 Task Design and Evaluation Method Evaluating the outcomes of text\n", + "generation tasks is intricate due to their multifaceted formats, distinguishing them from typical\n", + "Natural Language Understanding (NLU) tasks. Drawing inspiration from previous studies that employed\n", + "GPT-4 (OpenAI, 2023) for scoring, we similarly engage GPT-4 to assign a grade on a 10-point scale to\n", + "each instance. This approach is more efficient than human evaluations. However, understanding the\n", + "potential inaccuracies of GPT-4’s evaluations, we supplement its scores with manual reviews,\n", + "adjusting them as necessary. Such hands-on inspections affirm the consistency and authenticity of\n", + "the scores, ensuring they genuinely mirror the efficacy of the models under review. With the\n", + "GPT-4-based scoring and manual verifications, we have established a robust evaluation framework for\n", + "our Tamil LLaMA. Our assessment suite is diligently designed to provide a basic evaluation of Tamil\n", + "LLaMA. This suite comprises over 120 diverse examples, covering areas such as Question Answering,\n", + "Reasoning, Literature, Entertainment, Translation, Programming, and Ethics, among others. The\n", + "overall score for a specific task is computed by summing the scores from its constituent samples and\n", + "normalizing it to a 100-point scale. Such an approach ensures a holistic reflection of
\n", + "
\n", + " \n", + "
\n", + "
Chunk 5
\n", + "
scores from its constituent samples and normalizing it to a 100-point scale. Such an approach\n", + "ensures a holistic reflection of the models’ capabilities across varying tasks, yielding a well-\n", + "rounded measure of their overall performance. 74.2 Generation Parameters The choice of generation\n", + "parameters during inference greatly affects the caliber of the results in tasks involving text\n", + "generation. Additionally, the degree of quantization can also affect performance. Below are the\n", + "generation parameters we adopted for model evaluations: •Quantization Config : The model is loaded\n", + "in 8−bit, with the torch data type specified as bfloat 16. •Context Size: The context size is\n", + "maintained at the model’s default of 4096 tokens. •Temperature: We assign a temperature value of 0.2\n", + "to guide the randomness during sampling. A lower temperature prompts the model to produce more\n", + "deterministic outputs, whereas a higher value boosts diversity, potentially compromising coherence.\n", + "For creative instructions, we adjust the temperature to 0.7 to encourage varied outputs. •Top-k\n", + "Sampling : With k set to 50, the model selects its succeeding token from the 50 most probable\n", + "candidates, introducing a level of unpredictability and variety to the resulting text. •Top-p\n", + "Sampling : Complementing Top-k sampling, we employ Top-p sampling with a threshold of 0.90. This\n", + "ensures the model weighs a fluid set of tokens, which, combined, represent 90 •Maximum Sequence\n", + "Length : To keep the output concise and pertinent, we cap the generated sequence at 512 tokens.\n", + "•Repetition Penalty : A repetition penalty of 1.1 is applied to deter the model from producing\n", + "redundant text, disincentivizing previously chosen tokens. For these evaluations, we utilized a\n", + "Google Colab notebook powered by a T4 GPU. 4.3 Results from Instruction Tasks The evaluation scores\n", + "of the Tamil LLaMA models, as rated by GPT-4, are presented in Table 3. A noteworthy observation\n", + "during our evaluation is the superior performance of our models compared to gpt-3.5-turbo in manual\n", + "assessments, which is further reinforced by the commendable scores in GPT-4’s evaluations. However,\n", + "it is essential to consider that GPT-4 might inherently favor responses from other GPT model\n", + "lineages. Even though our model excels in numerous tasks, there are areas of exception, such as\n", + "ethics, and this was anticipated, given that we did not undertake any alignment efforts. Challenges\n", + "in literature/entertainment and other areas can be attributed to data limitations during the pre-\n", + "training phase, primarily due to cost constraints. Despite these nuances, our models establish a\n", + "robust foundation for subsequent enhancements and progress in large language models tailored to\n", + "Tamil. Table 3: GPT-4 rated performance scores for different models on Tamil instructions Task Type\n", + "Tamil-LLaMA-7B Tamil-LLaMA-13B gpt-3.5-turbo Question Answering 77.00 75.33 54.33 Open-ended QA\n", + "84.47 85.26 58.68 Reasoning 47.50 64.25 63.50 Literature 45.50 40.00 71.00 Entertainment 43.33 50.00\n", + "60.00 Creative Writing 92.50 95.62 59.69 Translation 60.56 66.67 92.78 Coding 63.57 76.07 57.14\n", + "Ethics 23.75 57.50 40.00 Overall 63.83 71.17 61.33 By observing Table 3, several intriguing outcomes\n", + "emerge. Notably, the gpt-3.5-turbo , despite its prowess in numerous languages, appears to be\n", + "eclipsed by the Tamil LLaMA models in multiple domains. A standout observation was the Ethics\n", + "category, where the gpt-3.5-turbo model demonstrated a propensity to respond to potentially\n", + "dangerous queries in Tamil. Additionally, in the Coding section, the gpt-3.5-turbo ’s responses\n", + "either seemed to exhibit a lack of comprehension or overlooked critical details, leading to a\n", + "subdued score. While gpt-3.5-turbo excels in tasks related to English and other languages, its\n", + "performance in the context of Tamil reveals areas for weaknesses. 84.3.1 Reasoning: In reasoning\n", + "tasks, the models demonstrate commendable performance. While minor discrepancies occasionally arise\n", + "in areas such as dates, quantities, and formulas, they predominantly excel in reasoning exercises.\n", + "According to our manual evaluations, even our smaller Tamil-LLaMA 7B model surpasses the performance\n", + "of the much larger LLaMA 2 70B in Tamil text generation. In comparison, even gpt-3.5-turbo (OpenAI,\n", + "2022) often falters in several reasoning instructions, producing outputs that miss the mark in\n", + "relevance, clarity, fluency, and accuracy. This inadequacy in performance is also observed in LLaMA\n", + "2 70B, rendering their generated Tamil text less beneficial. Examples of responses related to\n", + "reasoning tasks are given in the Figure 5. We conducted our comparisons with LLaMA 2 70B using the\n", + "model hosted by Perplexity Labs. 4.3.2 Translation: For translation tasks, our models exhibit\n", + "satisfactory performance, particularly when translating from a foreign language to Tamil. However,\n", + "the accuracy diminishes when translating from Tamil to other languages—a shortcoming we aim to\n", + "address in future iterations. Based on our manual evaluations, our models outperform the original\n", + "LLaMA 2 70B in Tamil text translations. However, their efficacy is roughly on par with gpt-3.5-turbo\n", + ". Examples of outputs for translation tasks are given in Figure 6. 4.3.3 Code Generation: Our models\n", + "exhibit impressive performance in code generation tasks despite the limited code instructions\n", + "present in the training dataset. They capably provide coherent explanations in Tamil for the\n", + "generated code. Based on our hands-on evaluations, our models markedly surpass the performance of\n", + "the more sizable LLaMA 2 70B model, which when instructed in Tamil, often either misconstrues the\n", + "task or produces erroneous answers in English. However, it is important to highlight that our model\n", + "is not tailored for coding tasks. While it handles more straightforward problems adeptly, it\n", + "encounters challenges with more intricate ones. Example responses from our models for Code\n", + "Generation tasks can be found in Figure 7. 4.3.4 Open Question Answering In open question answering\n", + "tasks, much like in reasoning, the model displays a commendable performance. Despite occasional\n", + "inaccuracies in areas like dates and other factual information, its proficiency often exceeded our\n", + "expectations, delivering surprising results on multiple instances. Example responses from our models\n", + "for Open Question Answering tasks can be found in Figure 8. 4.3.5 Creative Writing / Text Generation\n", + "Text generation is a foundational capability for Large Language Models (LLMs), with creative text\n", + "generation—such as crafting letters or applications—being a particularly notable use case. In\n", + "general, larger models have an edge in this domain, often outshining their smaller counterparts. The\n", + "quality and quantity of training data play pivotal roles in this context. While the
\n", + "
\n", + " \n", + "
\n", + "
Chunk 6
\n", + "
often outshining their smaller counterparts. The quality and quantity of training data play pivotal\n", + "roles in this context. While the sheer volume of data can improve performance, the richness and\n", + "quality of the data are equally vital. With abundant high-quality training data, even smaller models\n", + "can sometimes surpass the performance of larger ones. In our experiments, our models showed decent\n", + "performance in standard tasks. However, they faced challenges when assigned with more complicated\n", + "tasks. Example responses from our models for Creative Writing tasks can be found in Figure 9. 4.3.6\n", + "Mathematical reasoning Mathematical reasoning presents a significant challenge for our models. Like\n", + "many Large Language Models (LLMs), they don’t excel in handling mathematical tasks. From our hands-\n", + "on experiments, we observed that the performance of our models, mainly when dealing with Tamil,\n", + "lagged behind that of the original English LLaMA models. Recognizing this as an area of improvement,\n", + "we intend to prioritize and enhance the model’s capabilities in subsequent iterations. Examples of\n", + "outputs for mathematical reasoning tasks are given in Figure 10. 4.4 Results from Natural Language\n", + "Understanding (NLU) tasks Understanding natural language (NLU) is a vital element within the field\n", + "of natural language processing (NLP) that enables computers to comprehend and interpret human\n", + "language. NLU focuses on comprehending and extracting 9meaning from text, whereas text generation is\n", + "concerned with generating human-like text based on a given input, often without any specific\n", + "understanding of the text’s meaning. To ascertain the prowess of a model, its performance in Natural\n", + "Language Understanding (NLU) tasks is paramount. However, the availability of standard benchmarks\n", + "for Tamil in this domain remains sparse. Notable exceptions include the IndicNLP (Kunchukuttan,\n", + "2020), IndicNLP Corpus (Kunchukuttan et al., 2020), and IndicSentiment (AI4Bharat, 2023) datasets.\n", + "We opted to assess our models utilizing the test set from the IndicSentiment dataset (AI4Bharat,\n", + "2023), and a text classification dataset sourced from the IndicNLP Corpus (Kunchukuttan et al.,\n", + "2020). The test set of the IndicSentiment dataset encompasses 1,000 sentiment samples in Tamil. It\n", + "is important to note that our evaluation was concentrated solely on this Tamil subset. Figure 3:\n", + "Performance comparison on the IndicSentiment-7B dataset From Figure 3, it is evident that our Tamil\n", + "LLaMA model remarkably surpasses the original LLaMA in this specific NLU task. The latter’s\n", + "performance mirrors that of random guessing, registering an accuracy of 50.5%. In stark contrast,\n", + "our model impressively scores an accuracy of 81.3%. This enhanced NLU capability underscores the\n", + "efficacy of our methodologies—such as vocabulary expansion and retraining in facilitating the model\n", + "to comprehend a new language like Tamil with heightened proficiency. We further extended our\n", + "evaluation to the iNLTK Headline Classification subset within the IndicNLP suite (Kakwani et al.,\n", + "2020). It is essential to highlight that our analysis was focused strictly on the Tamil language\n", + "subset of this dataset. The outcomes of this evaluation are graphically depicted in Figure 4.\n", + "Insight from Figure 4 reveals that the original LLaMA model’s performance aligns closely with random\n", + "predictions. In contrast, our Tamil LLaMA model showcases a compelling lead, achieving an accuracy\n", + "rate of 80.12%, further affirming its superior capability in natural language understanding. 5\n", + "Limitations The Tamil LLaMA suite of models we introduce in this paper heralds several advancements\n", + "in Tamil language processing. However, in the spirit of rigorous research, it is imperative to\n", + "discuss the inherent limitations accompanying these models. 10Figure 4: Performance comparison on\n", + "the IndicGLUE Text Classification dataset •Constrained Knowledge Base : Due to computational and\n", + "cost constraints, our models were trained on a relatively limited Tamil dataset. This translates to\n", + "gaps in the models’ knowledge, especially regarding nuances and specifics native to Tamil culture\n", + "and literature. While the current version lays the foundation, the true potential can be unlocked\n", + "with access to a broader data spectrum, enriching its contextual understanding. •Ethical Concerns :\n", + "Detoxification procedures were not implemented in our training process, making these models prone to\n", + "generating potentially harmful or offensive content. Their uncensored nature necessitates caution\n", + "during deployment. •Lack of Robustness : Our models may, at times, produce outputs that veer off-\n", + "topic or deviate substantially from anticipated responses. This vulnerability is more pronounced\n", + "under adversarial conditions or tricky prompts. •Reasoning and Mathematical Challenges : While our\n", + "models showcase competence in specific reasoning scenarios, they falter in many others, underscoring\n", + "the repercussions of not having a comprehensive training set. •Over-Generation Tendencies : On\n", + "occasions, the models tend to generate verbose content, extending beyond logical termination points,\n", + "leading to potential redundancy. •Evaluation Hurdles : Assessment of LLMs is a crucial yet\n", + "challenging endeavor. The scarcity of standardized benchmarks, particularly for languages like\n", + "Tamil, which are outside the European linguistic group, complicates comparative evaluations.\n", + "Although we propose an evaluative approach tailored for Tamil within this paper, it is not\n", + "exhaustive enough to gauge models’ efficacy across diverse domains. •Translation Loss : Given that\n", + "the instructional prompts used for fine-tuning the Tamil LLaMA base models are derived from English\n", + "datasets translated into Tamil, there is a potential for nuanced inaccuracies—commonly referred to\n", + "as translation loss. This can potentially affect the models’ abilities in both text generation and\n", + "comprehension due to subtle shifts in meaning that can occur during the translation process. While\n", + "some of these challenges are addressable in subsequent iterations, we envision this work serving as\n", + "an anchor, inspiring the research community to propel advancements in LLMs for Indian languages. 116\n", + "Conclusion In this research endeavor, we have not only filled a critical void in the domain of Tamil\n", + "text generation but have also elevated the status of this venerable language within the realm of\n", + "large language models with the advent of our Tamil LLaMA.To assess the performance of our models, we\n", + "curated an evaluation dataset consisting of 120 Tamil instructions covering a wide range of topics.\n", + "We then employed GPT-4 to assess and rate the responses generated by our model. The 7B variant of\n", + "our model has surpassed the performance of OpenAI’s gpt-3.5-turbo in tasks involving Tamil\n", + "instructions within our evaluation methodology. Even more impressively, the 13B iteration has\n", + "outperformed its counterparts, demonstrating an almost
\n", + "
\n", + " \n", + "
\n", + "
Chunk 7
\n", + "
involving Tamil instructions within our evaluation methodology. Even more impressively, the 13B\n", + "iteration has outperformed its counterparts, demonstrating an almost 10% higher proficiency in these\n", + "tasks. The significance of our findings is accentuated by the efficiency of our models in generating\n", + "Tamil text. Equipped with a refined tokenizer, the 7B and 13B variants demonstrate exceptional\n", + "proficiency, eclipsing the original LLaMA models in processing speed without sacrificing textual\n", + "quality. This stride is not just a modest step forward but a major leap in the models’ ability to\n", + "process and generate Tamil language content, thus forging a new avenue for practical applications\n", + "that necessitate precision and promptness. Nevertheless, our exploration in this field continues. We\n", + "acknowledge the triumphs and yet remain mindful of the impending obstacles. The possibility of\n", + "generating unintended or adverse content, the financial limitations associated with model training,\n", + "and the need for comprehensive evaluation benchmarks tailored for Tamil are challenges we are\n", + "committed to surmounting. As we chart our path forward, we acknowledge the value of continuous\n", + "learning and adaptation. We aspire to delve deeper into strategies to mitigate the limitations\n", + "observed, perhaps even leveraging advancements like Reinforcement Learning With Human Feedback\n", + "(RLHF) and more advanced quantization techniques. The horizon looks promising, and we remain\n", + "committed to elevating the capabilities of LLaMA for Tamil and other Indian languages. Appendix\n", + "Example Outputs Figure 5: Example Output for Reasoning Tasks Prompt ேமைஜயில ் 4 ஆப ் பிள ் கள ் இருந\n", + "் தன. குமார ் ஒன ் ைறச ் சாப ் பிட ் டான ் , ராம ் எடுத ் துச ் ெசன ் றான ் 2. மீதி எத ் - தைன ஆப ்\n", + "பிள ் கள ் உள ் ளன? 7B Model முதலில ் , நாம ் 4 - 1 = 3 ஆப ் பிள ் கைள எடுத ் துக ் ெகாள ் - ளலாம ்\n", + ", ஏெனனில ் குமார ் ஒன ் று சாப ் பிட ் டார ் . அடுத ் து, ராம ் 2 ஆப ் பிள ் கைள எடுத ் துச ் ெசன ்\n", + "றார ் , எனேவ மீத- முள ் ள ஆப ் பிள ் களின ் எண ் ணிக ் ைக 3 - 2 = 1 ஆகும ் . எனேவ, மீதமுள ் ள ஆப ்\n", + "பிள ் 1 உள ் ளது. 13B Model இப ் ேபாது, இந ் தக ் ேகள ் விக ் கு பதிலளிக ் க, நாம ் சூத ் தி- ரத ்\n", + "ைதப ் பயன ் படுத ் தலாம ் : ெமாத ் த ஆப ் பிள ் கள ் = ஆரம ் ப ஆப ் பிள ் கள ் - சாப ் பிட ் ட ஆப ்\n", + "பிள ் கள ் - எடுத ் துச ் ெசன ் ற ஆப ் பிள ் கள ் ஆரம ் ப ஆப ் பிள ் கள ் = 4 சாப ் பிட ் ட ஆப ் பிள\n", + "் கள ் = 1 எடுக ் கப ் பட ் ட ஆப ் பிள ் கள ் = 2 இப ் ேபாது இந ் த மதிப ் புகைள சூத ் திரத ் தில ்\n", + "ெசருகலாம ் : ெமாத ் த ஆப ் பிள ் கள ் = 4 - 1 - 2 = 1 எனேவ, ேமைஜயில ் 1 ஆப ் பிள ் உள ் ளது.\n", + "12Figure 6: Example Outputs for Translation Tasks Example 1 Prompt தயவுெசய ் துபின ் வரும்\n", + "வாக்கியத்ைததமBழBல ் ெமாழB- ெபயர்க்கவும்: ”W e’ve trained a model called ChatGPT which interacts in a\n", + "conversational way . The dialogue format makes it possible for ChatGPT to answer followup questions,\n", + "admit its mis- takes, challenge incorrect premises, and reject inappropriate requests. ” 7B Model\n", + "நாங ் கள ் சாட்ேபாட் என ் ற ெபயரில ் பயிற ் சியளிக்கப ் - பட்ட மாதிரிையக் ெகாண ் டுள ் ேளாம், இது\n", + "உைரயாட- லில ் ேபசுவதுேபால ் ெசயல ் படுகிறது.உைரயாடல ் வடி- வைமப ் பின ் மூலம், ேகள ் விகளுக்கு\n", + "பதிலளிக்கும் தி- றன ் மற ் றும் தவறானஅறBக்ைககைளமறுக்கும் திறன ் ேபான ் றபலவிஷயங ் கைளச் ெசய ்\n", + "யசாட்ேபாட் அனு- மதிக்கிறது. கூடுதலாக, சாட்ேபாட் சில ேநரங ் களில ் அதன ் தவறுகளில ் ஒப ் புக்ெகாள ்\n", + "கிறார் மற ் றும் ெபா- ருத்தமற ் றேகாரிக்ைககைளக் கூடநிராகரிக்கிறார். 13B Model நாங ் கள ் ”ChatGPT”என\n", + "் றமாதிரிையபயிற ் றுவித்துள ் - ேளாம், இது உைரயாடல ் முைறயில ் ெதாடர்பு ெகாள ் - கிறது.\n", + "இந்தேபச்சுவழக்குவடிவமானது,பின ் ெதாடர்- தல ் ேகள ் விகளுக்குபதிலளிக்கவும்,தவறுகைளச் சரி-\n", + "பார்க்கவும்,தவறானமுன ் ெமாழBவுகைளசவால ் ெசய ் - யவும் மற ் றும் ெபாருத்தமற ் றேகாரிக்ைககள ்\n", + "மீதுநிரா- கரிக்கவும் ChatGPTஐஅனுமதிக்கிறது. Example 2 Prompt தயவுெசய ் துபின ் வரும்\n", + "வாக்கியத்ைததமBழBல ் ெமாழB- ெபயர்க்கவும்: ”Estoy pensando en viajar a Inglaterra para ver el partido\n", + "entre Inglaterra y España de este fin de semana. ¡V a a ser emocionante!” 7B Model நான ் இந்த வார\n", + "இறுதியில ் இங ் கிலாந்தில ் கால ் பந்து விைளயாட்ைடப ் பார்க்கவிரும்புகிேறன ் ,இதுமBகவும் சுவாரஸ ்\n", + "யமாகஇருக்கும்! 13B Model நான ் இந்த வார இறுதியில ் இங ் கிலாந்து மற ் றும் ஸ ் - ெபயின ் இைடேயயான\n", + "கால ் பந்து விைளயாட்ைடப ் பார்க்க இங ் கிலாந்ைதச் ெசல ் லத் திட்டமBடுகிேறன ் ! இதுமBகவும் உற ்\n", + "சாகமாகஇருக்கும்! 13Figure 7: Example Output for Coding Tasks Prompt :ைபத ் தானில ் ”Quick Sort” அல ்\n", + "காரிதத ் ைத ெசயல ் ப- டுத ் தவும ் . 7B Model : நிச ் சயம ் ! ைபதான ் குறBயீடுதுணுக ் குஇேதா,இது\n", + "QuickSort அல ் - காரிதத ் ைதப ் பயன ் படுத ் திவரிைசப ் படுத ் தப ் பட ் டபட ் டியைல உருவாக ் கப ்\n", + "பயன ் படும ் : def quick_sort ( arr ) : if len ( arr ) <= 1: return arr pivot = arr [0] less = [ x\n", + "for x in arr [1:] if x < pivot ] greater = [ x for x in arr [1:] if x > pivot ] return quick_sort (\n", + "less ) + [ pivot ] + quick_sort ( greater ) my_list = [5 , 3 , 7 , 2 , 9 , 4] result = quick_sort (\n", + "my_list ) print ( result ) # Output : [2 , 3 , 5 , 4 ,
\n", + "
\n", + " \n", + "
\n", + "
Chunk 8
\n", + "
= quick_sort ( my_list ) print ( result ) # Output : [2 , 3 , 5 , 4 , 7 , 9] குறBயீட ் டின ்\n", + "ெவளியீடு,வரிைசப ் படுத ் தப ் பட ் டபட ் டியலில ் உள ் ள உறுப ் புகளின ் மறுசீரைமக ் கப ் பட ்\n", + "டவரிைசையவழங ் குகிறது. இது உதவும ் என ் று நான ் நம ் புகிேறன ் ! உங ் களுக ் கு ஏேதனும ் ேகள ் விகள\n", + "் இருந ் தால ் எனக ் கு ெதரியப ் படுத ் தவும ் . 13B Model : ைபத ் தானில ் QuickSort அல ் காரிதம ்\n", + "ெசயல ் படுத ் துவதற ் கான எடுத ் துக ் காட ் டு இங ் ேக: def quick_sort ( arr ) : if len ( arr ) <=\n", + "1: return arr pivot = arr [0] left , right = [] , [] for i in range (1 , len ( arr ) ) : if arr [ i\n", + "] < pivot : left . append ( arr [ i ]) else : right . append ( arr [ i ]) return quick_sort ( left )\n", + "+ [ pivot ] + quick_sort ( right ) arr = [2 , 3 , 5 , 7 , 9 , 10 , 11] result = quick_sort ( arr )\n", + "print (\"The sorted array is :\", result ) 14Figure 8: Example Output for Open Question Answering\n", + "Tasks Prompt :நான ் ெபரியபணக ் காரன ் இல ் ைல,சமீபத ் திய iPhone 15'க ் கு நிைறய பணம ் ெசலவழBக ் க\n", + "ேவண ் டுமா? 7B Model : AIஆக,எனக ் குதனிப ் பட ் டவிருப ் பங ் கள ் அல ் லதுநிதிஇலக ் - குகள ் இல ்\n", + "ைல. இருப ் பினும ் ,உங ் கள ் ேதைவகளுக ் குஏற ் றெதா- ைலேபசிையத ் ேதர ் ந ் ெதடுப ் பதுமற ் றும ் உங\n", + "் கள ் பட ் ெஜட ் ைடக ் கருத ் தில ் ெகாள ் வது முக ் கியம ் . சமீபத ் திய ஐேபான ் களில ் வி- ைலகள ்\n", + "அதிகமாக இருக ் கலாம ் , ஆனால ் நீங ் கள ் விரும ் பிய அம ் சங ் கைளவழங ் குவதில ் அைவஇன ் னும ் சிறந\n", + "் தைவ. உங ் - கள ் ேதைவகைளப ் பூர ் த ் தி ெசய ் யும ் ஒன ் ைறத ் ேதர ் வுெசய ் ய- வும ் ,ேமலும ்\n", + "கூடுதல ் ெசலவுகைளச ் ேசமBக ் கஉதவும ் வைகயில ் , தள ் ளுபடிகள ் அல ் லது ஒப ் பந ் தங ் கைளப ் பார ்\n", + "க ் கவும ் . உங ் கள ் பட ் ெஜட ் டுக ் குள ் இருக ் கமுயற ் சிப ் பதும ் முக ் கியம ் . உங ் - கள ்\n", + "ெசலவினங ் கைளக ் கண ் காணித ் து, உங ் கள ் ெசலவினங ் - களுக ் கு முன ் னுரிைம அளிக ் கவும ் . இது\n", + "ேதைவயற ் ற ெசலவு- கைளத ் தவிர ் க ் கவும ் ,உங ் கள ் பணத ் ைதச ் ேசமBப ் பதற ் கானவழB- கைளக ் கண ்\n", + "டறBயவும ் உதவும ் . இறுதியில ் ,உங ் கள ் ேதைவகள ் மற ் றும ் பட ் ெஜட ் டிற ் குஏற ் றெதா-\n", + "ைலேபசிையத ் ேதர ் ந ் ெதடுப ் பது முக ் கியம ் . உங ் கள ் பட ் ெஜட ் - டில ் ஒட ் டிக ் ெகாண ்\n", + "டு,உங ் களுக ் குத ் ேதைவயானஅம ் சங ் கைளத ் ேதடுங ் கள ் . இருப ் பினும ் ,சமீபத ் தியஐேபான ் களில\n", + "் ஒன ் றுநிச ் சயமாகஅதிக விைலயில ் இருக ் கும ் என ் பைத நிைனவில ் ெகாள ் ளுங ் கள ் . 15Figure 9:\n", + "Example Output for Creative Writing Tasks Example: Prompt :ஐபிஎல ் ெதாடைரெசன ் ைனசூப ் பர் கிங ் ஸ ்\n", + "(சிஎஸ ் - ேக)ெவன ் றதுஎன ் றதைலப ் பில ் ஒருசிறுெசய ் திக் கட்டுைர- ையஎழுதுங ் கள ் . 7B Model : ெசன\n", + "் ைனசூப ் பர் கிங ் ஸ ் (சிஎஸ ் ேக)2021இந்தியன ் பிரீமBயர் லீக்கில ் (ஐபிஎல ் )இறுதிப ் ேபாட்டிையெவன\n", + "் றது,அவர்களின ் மூன ் றாவதுஐபிஎல ் பட்டத்ைதஉறுதிெசய ் தது. இந்தெவற ் - றBயின ் மூலம், சிஎஸ ்\n", + "ேகஅணிக்காகவிைளயாடியேகப ் டன ் ேதானிதைலைமயிலானஇளம் மற ் றும் திறைமயானவீரர்க- ளின ் குழுவிற ்\n", + "குஇதுஒருகுறBப ் பிடத்தக்கசாதைனயாகும். சமீபத்தியசீசன ் முழுவதும்,சிஎஸ ் ேகஅணிபலசவால ் கைள எதிர்ெகாண ்\n", + "டது,ஆனால ் அவர்கள ் ெதாடர்ந்துதங ் கள ் திற- ைமகைளயும் நம்பிக்ைகையயும் ெவளிப ் படுத்தினர். அணி- யின\n", + "் ேவகப ் பந்துவீச்சு,ேபட்டிங ் மற ் றும் ஃபீல ் டிங ் ஆகியவற ் - றBன ் வலுவானகலைவயானதுஅவர்களின ்\n", + "ேபாட்டியாளர்- களின ் பலேமாசமானஆட்டங ் களுக்குவழBவகுத்தது,ேமலும் அவர்கள ் இறுதிப ் ேபாட்டியில ்\n", + "அவர்களின ் ெசாந்தவிைளயாட்- டுகளில ் ஆதிக்கம் ெசலுத்தமுடிந்தது. இந்தெவற ் றBயின ் மூலம்,சிஎஸ ்\n", + "ேகஅணிமூன ் றுஐபிஎல ் சாம்- பியன ் ஷCப ் கைளெவன ் றுள ் ளது,ேமலும் அவர்களின ் ரசிகர்- கள ்\n", + "மகிழ்ச்சியில ் மூழ்கிஉள ் ளனர்.ேதானியும் அவரதுஅணி- யும் பலஆண ் டுகளாகஇந்தியகிரிக்ெகட் அரங ் கில ்\n", + "முக்கிய நபராகஇருந்துவருகின ் றனர்,ேமலும் இந்தெவற ் றBஅவர்க- ளின ் பாரம்பரியத்ைதேமலும் உயர்த்துகிறது.\n", + "ஒட்டுெமாத்தமாக,சிஎஸ ் ேகஅணிஇந்தசீசனின ் ஐபிஎல ் ெதா- டர் இறுதிப ் ேபாட்டிக்குமுன ் ேனறBயதில ்\n", + "ஒருெபரியசாதைன- ையக் ெகாண ் டிருந்தது,ேமலும் அவர்களின ் ரசிகர்கள ் இப ் ேபா- துஒருவருடம் கழBத்துதங ்\n", + "கள ் அணிக்குஉற ் சாகத்ைதயும் ஆத- ரைவயும் காட்டஎதிர்பார்க்கிறார்கள ் . 16Figure 10: Example Outputs\n", + "for Mathematical Reasoning Tasks Example 1 Prompt 7! என ் றால ் என ் ன என ் பைதக ் கணக ் கிடுங ் கள\n", + "் 7B Model 7! என ் பது 7 x 6 x 5 x 4 x 3 x 2 x 1 என ் ற ெபருக ் கல ் ெவளிப ் பாட ் ைடக ் குறBக ்\n", + "கிறது, இது ேதாராயமாக 870 ஆகும ் . எனேவ, 7! = 870 13B Model 7! என ் பது 7 இன ் காரணிகளின ் எண ் ணிக ்\n", + "ைக, அதா- வது 1 x 2 x 3 x 4 x 5 x 6 x 7 ஆகும ் . எனேவ, 7! = 5040 ஆகும ் . Example 2 Prompt
\n", + "
\n", + " \n", + "
\n", + "
Chunk 9
\n", + "
4 x 5 x 6 x 7 ஆகும ் . எனேவ, 7! = 5040 ஆகும ் . Example 2 Prompt 3x+1=10 என ் றால ் , xஎதற ் கு சமம\n", + "் ? 7B Model ெகாடுக ் கப ் பட ் ட சமன ் பாடு 3x+ 1 = 10 எனில ் , xக ் கு தீர ் - வு காண, நாம ் பின ்\n", + "வரும ் படிகைளப ் பின ் பற ் றலாம ் : படி 1: சமன ் பாட ் டின ் இரு பக ் கங ் களிலிருந ் தும ் 1 ஐக ்\n", + "கழBக ் கவும ் . இது நமக ் கு அளிக ் கிறது: 3x+ 1−1 = 10 −1 3x= 9 படி 2: இப ் ேபாது எங ் களிடம ் 4xஇன\n", + "் மதிப ் பு இருப ் ப- தால ் , அைத அசல ் சமன ் பாட ் டில ் மாற ் றலாம ் : 3x+1 = 10 3(9) + 1 = 10 29\n", + "+ 1 = 10 30 = 10 எனேவ, xக ் கான தீர ் வு 30 ஆகும ் . இருப ் பினும ் , ெகாடுக ் கப ் பட ் ட சமன ் பாட\n", + "் டிற ் கான சரி- யான தீர ் ைவ நீங ் கள ் ேதடுகிறீர ் களானால ் , xஇன ் மதிப ் - ைபப ் ெபற, இரு பக ்\n", + "கங ் கைளயும ் 3 ஆல ் வகுக ் க ேவண ் - டும ் . x= (30/3) x= 10 எனேவ, xஎன ் பது 10க ் கு சமம ் . 13B\n", + "Model 3x+ 1 = 10 சமன ் பாட ் டில ் xக ் கு தீர ் வு காணும ் ேபா- து, சமன ் பாட ் டின ் ஒரு பக ் கத ்\n", + "தில ் மாறBைய தனிைமப ் - படுத ் த ேவண ் டும ் . முதலில ் , சமன ் பாட ் டின ் இரு பக ் கங ் களிலிருந ்\n", + "தும ் 1 ஐக ் கழBப ் பதன ் மூலம ் ெதாடங ் கலாம ் : 3x+ 1−1 = 10 −1 இது எளிதாக ் குகிறது: 3x= 9 அடுத ்\n", + "து, சமன ் பாட ் டின ் இரு பக ் கங ் கைளயும ் 3 ஆல ் வகுப ் பதன ் மூலம ் xஐ தனிைமப ் படுத ் துேவாம ்\n", + ": (3x)/3 = (9)/3 இது எளிதாக ் குகிறது: x= 3 எனேவ, 3x+ 1 = 10 சமன ் பாட ் டிற ் கான தீர ் வு x= 3\n", + "ஆகும ் . 17Acknowledgments We gratefully acknowledge the assistance of OpenAI’s GPT-4 in the\n", + "preparation of this manuscript. The AI’s advanced language understanding and generation capabilities\n", + "were invaluable in refining the structure, clarity, and overall coherence of the original draft.\n", + "References AI4Bharat. Indic sentiment dataset by ai4bharat.\n", + "https://huggingface.co/datasets/ai4bharat/ IndicSentiment , 2023. J. Ainslie, J. Lee-Thorp, M. de\n", + "Jong, Y . Zemlyanskiy, F. Lebrón, and S. Sanghai. Gqa: Training generalized multi-query transformer\n", + "models from multi-head checkpoints, 2023. I. Caswell, T. Breiner, D. van Esch, and A. Bapna.\n", + "Language id in the wild: Unexpected challenges on the path to a thousand-language web text corpus,\n", + "2020. Y . Cui, Z. Yang, and X. Yao. Efficient and effective text encoding for chinese llama and\n", + "alpaca, 2023. J. Devlin, M.-W. Chang, K. Lee, and K. Toutanova. Bert: Pre-training of deep\n", + "bidirectional transformers for language understanding, 2019. E. J. Hu, Y . Shen, P. Wallis, Z.\n", + "Allen-Zhu, Y . Li, S. Wang, L. Wang, and W. Chen. Lora: Low-rank adaptation of large language\n", + "models, 2021. A. Q. Jiang, A. Sablayrolles, A. Mensch, C. Bamford, D. S. Chaplot, D. de las Casas,\n", + "F. Bressand, G. Lengyel, G. Lample, L. Saulnier, L. R. Lavaud, M.-A. Lachaux, P. Stock, T. L. Scao,\n", + "T. Lavril, T. Wang, T. Lacroix, and W. E. Sayed. Mistral 7b, 2023. D. Kakwani, A. Kunchukuttan, S.\n", + "Golla, G. N.C., A. Bhattacharyya, M. M. Khapra, and P. Kumar. IndicNLPSuite: Monolingual corpora,\n", + "evaluation benchmarks and pre-trained multilingual language models for Indian languages. InFindings\n", + "of the Association for Computational Linguistics: EMNLP 2020 , pages 4948–4961, Online, Nov. 2020.\n", + "Association for Computational Linguistics. doi: 10.18653/v1/2020.findings-emnlp.445. URL https://\n", + "aclanthology.org/2020.findings-emnlp.445 . T. Kudo and J. Richardson. Sentencepiece: A simple and\n", + "language independent subword tokenizer and detokenizer for neural text processing, 2018. A.\n", + "Kunchukuttan. The IndicNLP Library. https://github.com/anoopkunchukuttan/indic_nlp_library/\n", + "blob/master/docs/indicnlp.pdf , 2020. A. Kunchukuttan, D. Kakwani, S. Golla, G. N.C., A.\n", + "Bhattacharyya, M. M. Khapra, and P. Kumar. Ai4bharat-indicnlp corpus: Monolingual corpora and word\n", + "embeddings for indic languages. arXiv preprint arXiv:2005.00085 , 2020. W. Lian, B. Goodson, E.\n", + "Pentland, A. Cook, C. V ong, and \"Teknium\". Openorca: An open dataset of gpt augmented flan\n", + "reasoning traces. https://https://huggingface.co/Open-Orca/OpenOrca , 2023. X. V . Lin, T. Mihaylov,\n", + "M. Artetxe, T. Wang, S. Chen, D. Simig, M. Ott, N. Goyal, S. Bhosale, J. Du, R. Pasunuru, S.\n", + "Shleifer, P. S. Koura, V . Chaudhary, B. O’Horo, J. Wang, L. Zettlemoyer, Z. Kozareva, M. Diab, V .\n", + "Stoyanov, and X. Li. Few-shot learning with multilingual language models, 2022. A. Mahendiran.\n", + "abinayam/gpt-2-tamil. https://huggingface.co/abinayam/gpt-2-tamil , 2021. T. Nguyen, C. V . Nguyen,\n", + "V . D. Lai, H. Man, N. T. Ngo, F. Dernoncourt, R. A. Rossi, and T. H. Nguyen. Culturax: A cleaned,\n", + "enormous, and multilingual dataset for large language models in 167 languages, 2023. OpenAI.\n", + "Introducing chatgpt. https://openai.com/blog/chatgpt , 2022. OpenAI. Gpt-4 technical report, 2023.\n", + "A. Radford, K. Narasimhan, T. Salimans, and I. Sutskever. Improving language understanding by\n", + "generative pre-training. https://s3-us-west-2.amazonaws.com/openai-assets/research-covers/ language-\n", + "unsupervised/language_understanding_paper.pdf , 2018. A. Radford, J. Wu, R. Child, D. Luan, D.\n", + "Amodei, and I. Sutskever. Language models are unsupervised mul- titask learners.\n", + "https://d4mucfpksywv.cloudfront.net/better-language-models/language_models_\n", + "are_unsupervised_multitask_learners.pdf , 2019. T. L. Scao, A. Fan, C. Akiki, E. Pavlick, S. Ili ´c,\n", + "D. Hesslow, R. Castagné, A. S. Luccioni, F. Yvon, M. Gallé, et al. Bloom: A 176b-parameter open-\n", + "access multilingual language model. arXiv preprint arXiv:2211.05100 , 2022. N. Shazeer. Glu variants\n", + "improve transformer, 2020. 18O. Shliazhko, A. Fenogenova, M. Tikhonova, V . Mikhailov, A. Kozlova,\n", + "and T. Shavrina. mgpt: Few-shot learners go multilingual, 2022. URL https://arxiv.org/abs/2204.07580\n", + ". J. Su, Y . Lu, S. Pan, A. Murtadha, B. Wen, and Y . Liu. Roformer: Enhanced transformer with\n", + "rotary position embedding, 2022. R. Taori, I.
\n", + "
\n", + " \n", + "
\n", + "
Chunk 10
\n", + "
Pan, A. Murtadha, B. Wen, and Y . Liu. Roformer: Enhanced transformer with rotary position\n", + "embedding, 2022. R. Taori, I. Gulrajani, T. Zhang, Y . Dubois, X. Li, C. Guestrin, P. Liang, and T.\n", + "B. Hashimoto. Stanford alpaca: An instruction-following llama model. https://github.com/tatsu-\n", + "lab/stanford_alpaca , 2023. H. Touvron, T. Lavril, G. Izacard, X. Martinet, M.-A. Lachaux, T.\n", + "Lacroix, B. Rozière, N. Goyal, E. Hambro, F. Azhar, A. Rodriguez, A. Joulin, E. Grave, and G.\n", + "Lample. Llama: Open and efficient foundation language models, 2023a. H. Touvron, L. Martin, K.\n", + "Stone, P. Albert, A. Almahairi, Y . Babaei, N. Bashlykov, S. Batra, P. Bhargava, S. Bhosale, D.\n", + "Bikel, L. Blecher, C. C. Ferrer, M. Chen, G. Cucurull, D. Esiobu, J. Fernandes, J. Fu, W. Fu, B.\n", + "Fuller, C. Gao, V . Goswami, N. Goyal, A. Hartshorn, S. Hosseini, R. Hou, H. Inan, M. Kardas, V .\n", + "Kerkez, M. Khabsa, I. Kloumann, A. Korenev, P. S. Koura, M.-A. Lachaux, T. Lavril, J. Lee, D.\n", + "Liskovich, Y . Lu, Y . Mao, X. Martinet, T. Mihaylov, P. Mishra, I. Molybog, Y . Nie, A. Poulton, J.\n", + "Reizenstein, R. Rungta, K. Saladi, A. Schelten, R. Silva, E. M. Smith, R. Subramanian, X. E. Tan, B.\n", + "Tang, R. Taylor, A. Williams, J. X. Kuan, P. Xu, Z. Yan, I. Zarov, Y . Zhang, A. Fan, M. Kambadur,\n", + "S. Narang, A. Rodriguez, R. Stojnic, S. Edunov, and T. Scialom. Llama 2: Open foundation and fine-\n", + "tuned chat models, 2023b. A. Vaswani, N. Shazeer, N. Parmar, J. Uszkoreit, L. Jones, A. N. Gomez, Ł.\n", + "Kaiser, and I. Polosukhin. Attention is all you need. Advances in neural information processing\n", + "systems , 30, 2017. Y . Wang, Y . Kordi, S. Mishra, A. Liu, N. A. Smith, D. Khashabi, and H.\n", + "Hajishirzi. Self-instruct: Aligning language models with self-generated instructions, 2023. B. Zhang\n", + "and R. Sennrich. Root mean square layer normalization, 2019. 19
\n", + "
\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def print_chunks(chunks):\n", + " \"\"\"\n", + " Display text chunks in a clean, readable format using HTML styling.\n", + "\n", + " Args:\n", + " chunks (list): List of text chunks to display\n", + " \"\"\"\n", + " # Create the HTML for the chunks display\n", + " html_content = \"\"\"\n", + " \n", + " \"\"\"\n", + "\n", + " # Add each chunk to the HTML content\n", + " for i, chunk in enumerate(chunks, 1):\n", + " # Wrap text for better readability\n", + " wrapped_text = textwrap.fill(chunk, width=100)\n", + "\n", + " html_content += f\"\"\"\n", + "
\n", + "
Chunk {i}
\n", + "
{wrapped_text}
\n", + "
\n", + " \"\"\"\n", + "\n", + " # Display the HTML\n", + " display(HTML(html_content))\n", + "print_chunks(chunked_data)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "nujzva66gTUa" + }, + "source": [ + "Setting Up embedding model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 609, + "referenced_widgets": [ + "b7e99d7d2bc640379e555623dcbccf3d", + "5b3cb5f78d404863a5df996af46b7b60", + "14ba4fc8abdf4d37a929b4681b25ca6d", + "41adc806108a496eb88ebc0030040f31", + "2083f0f2431c4acb8705b8a0afb5bbcd", + "bae8483a62db4ce5b6394c465c7b2ca1", + "8af2377eddfa4f7faccbfbd0845aa36a", + "038dd736237c4ef988b53817181337d9", + "883659a4a01d445eb901e8adb4dc945f", + "95efb79acd5d48baa35eebcb6399eae3", + "b86e0642e7dc42c48a72fcd7d26d6d7c", + "e337b61be79843ffad37621fa7209136", + "e4a3a70c68554b45b46b4ce93512a56a", + "1fac92e5756d4b7f87212af93f6e9782", + "cc001e0fc9474213af516a933a137393", + "29db2124df1e42a29ddd084a4f25d6e7", + "e0bf3d65e0a041328c8b0a655a00abbf", + "5d548b748c7c4da29734ed9c17deba2b", + "aef71247a9984e3faabae9fe75e346ca", + "167048dbaa2449369c854364b98f9601", + "50636521c0e142ef8b2bb2fc155f2860", + "32781face99f4f0bbd0388ee6d759c42", + "94e3dea9dff6409aa9a20b5c0e041904", + "d45e752ff3ba43778d76650ce9507aab", + "46fce341aa5e4a388943a18d3dfb76dd", + "744f85e34a3d4e118c395b6ee915e94d", + "a7e2cb0593ac4c0d9bf5100d3c414768", + "e5fc8ffd8cc64d5aa2c44f3754b00f3b", + "d74e1ec2633342f5a9fe1759c5acabba", + "e0f26cd908ac462f8d5a9596821b1747", + "62eece2c76f24b7abc1ea426e8a59890", + "17f35184c80b42888a1f61540fd675d3", + "de256434b32a4fdc86a27a3e995538f6", + "884e8f0781c3484690ac1ea9cebe7e4b", + "21c1ed708ae5434594fa0a3f88d05ced", + "2712f7e873df4ce19764e1df208b471e", + "db791cb77a674b9baf7de9e9bd987311", + "598516e5476242cc9f8d88ca21fb95a3", + "fcc7dbe659b14a1792dad2d310a00a6c", + "cd70ac8c7d894d099ad7fd5a95d63d70", + "3c75a4365fd5498dadcdc9e194b0f354", + "f6b634f30b3d4e4eba18736a1f5cdd52", + "daead2353dd04f418609adef55b0ad5d", + "bf3634e7f64d4ba5acb137fee2b6c908", + "bf85729fedd04573bba3fa93d7a4c2d0", + "8281b86d9ffa406e9fc5c5a543085950", + "9c249fb24bb542e986642412ccdc5844", + "1d6505423d9c416aa7d5a242f1a86fdc", + "01e8d0960ce84b7cb45ff40d625ab1bd", + "8733495f98964d288f47df86b032220b", + "ce872bfafdfd4530b32f7731bfb6da4f", + "ce8b3bf73acc4aea968d3884c3aa686f", + "2902284c28d647af81811b47eedc0a60", + "70ee2e822377451f87056a6b9ce5306b", + "dddf6ce35bd5484789b7b3adb44b8f58", + "f4f4bb3499904e9cbe921631f80f9c6c", + "0a01ef9feb8c4fca99a75efc1519b95b", + "2cd95ffa17a447e98d0a79b23b25a21d", + "90e65239465744489872cdf2582070c3", + "04e70b6a757c4539953934fd498c8999", + "30da0516931e475cbfd3ae470899aabc", + "cd89b43596d649089ef6e644ac177949", + "27dd97fdae2449019d20db03b0ad95a2", + "e9ea33046652490cb41103e959594a38", + "7021a6fdf4534eb8b47b6d26ab57940f", + "37671f6237dd431d91cdfb52d4eb0c98", + "ea7a7ecc2d9b44af915b5fc976307e2c", + "0146da1036924f70abdd374fd473ae96", + "86c42370bb124e01a18d82fe034abfeb", + "10f5556e2f014fbb8fac9cb22b48534a", + "962c14d92f944c85ac7abaee41ec2457", + "b28907a17a764054a68bac997021c0da", + "5a0746263a4541088c7140c8a4b6a874", + "dc6f65c85f694377b2886c559e103dfc", + "9dbfb80534ba4e3e82eafbfaf59459d8", + "3694cb065ab84c3cb200f4005cf7da1d", + "e2fc64930b7240c2b5f41ae164dadda2", + "eb191cb0df974bd0be65bc87c5eb4708", + "963c7d5fe0b849878c847f64eecc6d13", + "d33c2cf80f784b8a8c0e170d3e4c2224", + "c680ffb91a3e4306a741ec3dee20d7a7", + "62c50131529e42c1a0eb5f07416827f8", + "8e4a53fe6fe24406a8f899118da38826", + "af00d6196dab437ba3714bbb066f2463", + "79c06642158d47cbb0dd9c816fbe7a12", + "c3c60381013d47598974fe6865b82001", + "003ded18cd7c429881c1f64346b1d687", + "f0539f77a3434be89799d7d9a7ea557a", + "2c0e633467744316a0602a3eb721e1b0", + "35628cc462654f93bac86ab8742780f5", + "832edca5307d41abbf05481cdbad15eb", + "bc9e98439f7c41d598e677171be95653", + "38b3cef09c664d15a9737aaa92af52e0", + "d9696351a25e4cf29ee3cbb7f147a02c", + "c70f4361d53e436caa53edb8ea15854c", + "1df1c9c254fd4fb88e50efe6f74778cf", + "6269e7454ccc4ab5afe5d9d1dcc64b3f", + "88bd0484bd194d7e83181823c2c23516", + "8ca87ef282ad4398b4347e0884bb34ab", + "b6a634f7ce5146f9ae4466bb7da59e02", + "e76fdbaeac814afe875af0d5575834c9", + "488de6218e1d405fad948d36a3a9e4a3", + "606872ae4528415da726281a18d92650", + "3792aee989da4157971ddc24280b3e9b", + "d82dd55ba0e044a0b38c2f75a1c4057c", + "2b6595ecfd3c45a187184f093f427c3f", + "9d3316ab268e46c393309c69207e0b3b", + "941d25cd435e48fa9b279f41f09ac593", + "9505a4ba49eb4801a5511fee6d1ad042", + "c82ce21bc13d4b9e9cf126aacc298e8c", + "db6db8a7c3dd451a952891655a8abf58", + "73f6a92893ca4e59b0fa3273c9bb0d6f", + "389e019c875c42d296b65acaf485c4d7", + "6f4cef97229c4ee2871397cd44b7db6a", + "08ac9141e9394e91a04a03982b235f76", + "6fe12ce993574f398e04b4ca52ed8607", + "50d2cc6aca784d089db410636068498e", + "2c1375cfaea44323b7d557863b30261c", + "b822759d4d524fabbbcf4da3997e2576", + "12196ce362b242a4a4a1f5190af1feda", + "4f51c9fe49e54739bd9d8e0b8302571b", + "943a40caaa82476c9a0812068d02e18e", + "20ca40770ad24ca797f4ff08f169118c", + "28597a46a2d4428d883e95b717b6240a", + "2783d9fa4b2545d08d710a5a71f834a9", + "5a9b0c48ad51406680028cb75aaa5fe6", + "1b10cc5175a744f49e0846e32d5ff640", + "3031347f437e49da9baba8b3d3713095", + "6f7a8eba042d454498431c56528386f9", + "44fa10f01d174283a939e34ff2b59e65", + "93b0e55411a1495086eabbb8cb40a746", + "0f9e4f4ad8874501a60d9aab3050dbf7" + ] + }, + "id": "xl6ezjXlgTUa", + "outputId": "7c2fbddd-b8ca-4432-a36d-a3b183f1533a" + }, + "outputs": [], + "source": [ + "# Load the sentence transformer model for embeddings\n", + "\n", + "model = SentenceTransformer(\"Alibaba-NLP/gte-base-en-v1.5\", trust_remote_code=True)\n", + "# model = SentenceTransformer(\"BAAI/bge-small-en-v1.5\", trust_remote_code=True)\n", + "# model = SentenceTransformer(\"all-MiniLM-L6-v2\", trust_remote_code=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "stlnYPzUgTUb" + }, + "source": [ + "set up similarity function\n", + "\n", + "\n", + "Understanding Cosine Similarity : [refrence video](https://www.youtube.com/watch?v=zcUGLp5vwaQ)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "jmd3w0sygTUb" + }, + "outputs": [], + "source": [ + "def cosine_similarity(vector_a, vector_b):\n", + " \"\"\"\n", + " Calculate the cosine similarity between two vectors.\n", + " Cosine similarity measures how similar two vectors are by calculating the cosine of the angle between them.\n", + "\n", + " Args:\n", + " vector_a: First vector (numpy array)\n", + " vector_b: Second vector (numpy array)\n", + "\n", + " Returns:\n", + " float: Similarity score between -1 and 1\n", + " 1: Vectors are identical\n", + " 0: Vectors are perpendicular\n", + " -1: Vectors are opposite\n", + " \"\"\"\n", + " # Step 1: Calculate the dot product between the vectors\n", + " # Dot product measures how much vectors point in the same direction\n", + " dot_product = np.dot(vector_a, vector_b)\n", + "\n", + " # Step 2: Calculate the magnitude (length) of each vector\n", + " # Magnitude is the square root of the sum of squared values\n", + " magnitude_a = np.linalg.norm(vector_a) # √(a1² + a2² + ... + an²)\n", + " magnitude_b = np.linalg.norm(vector_b) # √(b1² + b2² + ... + bn²)\n", + "\n", + " # Step 3: Calculate the cosine similarity\n", + " # Divide dot product by the product of magnitudes\n", + " similarity = dot_product / (magnitude_a * magnitude_b)\n", + "\n", + " return similarity" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "vDNKEoyBk9gj" + }, + "source": [ + "understanding similarity between two sentences" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "id": "tM5Dpk6imGze" + }, + "outputs": [], + "source": [ + "## Change the sentences accordingly\n", + "\n", + "sentence1 = \"The cat sat on the mat\"\n", + "sentence2 = \"A cat is sitting on a mat\"" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "id": "Pzd02eEwk9Bc", + "outputId": "bdfda60e-aceb-49e6-c524-53f1718ebabf" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
Similarity score: 0.9067\n",
+              "
\n" + ], + "text/plain": [ + "Similarity score: \u001b[1;36m0.9067\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def get_similarity_score(sentence1, sentence2):\n", + " \"\"\"\n", + " Calculate similarity score between two sentences.\n", + "\n", + " Args:\n", + " sentence1 (str): First sentence\n", + " sentence2 (str): Second sentence\n", + "\n", + " Returns:\n", + " float: Similarity score between 0 and 1\n", + " \"\"\"\n", + " # Get embeddings\n", + " embedding1 = model.encode(sentence1, normalize_embeddings=True)\n", + " embedding2 = model.encode(sentence2, normalize_embeddings=True)\n", + "\n", + " # Calculate similarity\n", + " similarity = np.dot(embedding1, embedding2)\n", + "\n", + " return similarity\n", + "\n", + "# change the sentences\n", + "\n", + "\n", + "score = get_similarity_score(sentence1, sentence2)\n", + "print(f\"Similarity score: {score:.4f}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "u3KmJNu8gTUb" + }, + "source": [ + "visualise embeddings" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "btCdCWevlZ_0", + "outputId": "d7768436-2ca3-496f-8989-3d099df6d8e5" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
Similarity Score: 0.9067\n",
+              "
\n" + ], + "text/plain": [ + "Similarity Score: \u001b[1;36m0.9067\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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nhSGhobiq6++EjExMSIoKIiP+quiyvZ9fn6+pg5wcHAQM2fOFBcuXBDXr1/XVQp6q7J9v2jRImFsbCx+/fVXrff1rKwsXaVQKhb/z/Ddd98JJycnYWxsLLp16ybOnDmj65DKVfzomqeHsWPHCiGKHgv12WefiSZNmggTExPRr18/ERsbq7WMhw8filGjRgkLCwuhUCjEG2+8odMdt7R8AIj169dr2jx+/Fi88847wsbGRpibm4thw4aJpKQkreUkJCSIAQMGCDMzM9G4cWPxwQcf6OyxSm+++aZwdnYWxsbGwtbWVvTr109T+Auhf/mU5eniXx/zCgwMFA4ODsLY2Fg0bdpUBAYGihs3bmim62NOQgjx+++/Cw8PD2FiYiLc3NzE6tWrtabr43uFEELs379fACgRqxD6ua0yMzPFu+++K5ycnISpqalo2bKlmDNnjtajB/V1W0nFs/o2Pj5eABCHDx8WQpT9OQ1AxMfH6yYJPVXZvhei6PGtz/pOQSWV9324d+/emu+ZxbZu3Sratm0rjI2NRfv27cUff/xRxxFLR2X6vniff3ro3bt33QcuAZXpe2dn51L7PigoqO4DL4dMCCFq9dQCIiIiIiIiItIpXvNPREREREREJHEs/omIiIiIiIgkjsU/ERERERERkcSx+CciIiIiIiKSOBb/RERERERERBLH4p+IiIiIiIhI4lj8ExEREREREUkci38iIiIiIiIiiWPxT0RERERERCRxLP6JiIiIiIiIJI7FPxEREREREZHEsfgnIiIiIiIikrj/B1rIQx2VP4j5AAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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7u7uwtHRUVSpUkWEhYWJP//80xCTdXye3Pc5uX//vhgyZIjw9PQUzs7OIjg42Oz6/fz8TPbtqlWrRP369YWLi4soUaKEePHFF83uHyGE0Ol0YtasWcLPz084ODiI2rVri3Xr1pmNvXTpkujevbtwc3MTTk5Ook2bNuLIkSNmY/v27Svs7e1FXFxcttuo0+mEr6+vmDhxYrYxRERE2VEJYaFRT4mIiMhqTp48iQYNGmDdunXSOxRs1b179+Dr64vJkydj0qRJhV0d6HQ6BAQEoHfv3oansVHOunfvjtOnTysek4yeLVu3bkX//v1x6dIl+Pr6FnZ1iIioiOEYUERERDYmJSXFZN7ChQuhVqvRqlWrQqiRZaxevRo6nQ4DBgwo7KoAeDym0PTp07FkyRKLdaF8lt2+fRvbt2+3meNHBW/OnDkYOXIkG5+IiChPeAcUERGRjZk2bRqOHTuG1q1bw87ODjt27MCOHTswbNgwfPbZZ4VdvVz75ZdfcObMGUyaNAmtW7c2GqiZbN+VK1dw8OBBrFixAkePHsWlS5cK9SmAREREVDRxEHIiIiIb06xZM+zZswczZsxAYmIiKlasiKlTp+KDDz4o7KrlyfTp03Ho0CE0b95c8dP8yHYcOHAAgwYNQsWKFbFmzRo2PhEREVGe8A4oIiIiIiIiIiKyKo4BRUREREREREREVsUGKCIiIiIiIiIisio2QBERERERERERkVWxAYqIiIiIiIiIiKyKDVBERERERERERGRVbIAiIiIiIiIiIiKrYgMUERERERERERFZFRugiIiIiIiIiIjIqtgARUREREREREREVsUGKCIiIiIiIiIisio2QBERERERERERkVWxAYqIiIiIiIiIiKyKDVBERERERERERGRVbIAiIiIiIiIiIiKrYgMUERERERERERFZFRugiIiIiIiIiIjIqtgARUREREREREREVsUGKCIiIiIiIiIisio2QBERERERERERkVWxAYqIiIiIiIiIiKyKDVBERERERERERGRVbIAiIiIiIiIiIiKrYgMUERERERERERFZFRugiIiIiIiIiIjIqtgARUREREREREREVsUGKCIiIiIiIiIisio2QBERERERERERkVWxAYqIiIiIiIiIiKyKDVBERERERERERGRVbIAiIiIiIiIiIiKrYgMUERERERERERFZFRugiIiIiIiIiIjIqtgARUREREREREREVsUGKCIiIiIiIiIisio2QBERERERERERkVWxAYqIiIiIiIiIiKyKDVBERERERERERGRVbIAiIiIiIiIiIiKrYgMUERERERERERFZFRugiIiIiIiIiIjIqtgARUREREREREREVsUGKCIiIiIiIiIisio2QBERERERERERkVWxAYqIiIiIiIiIiKyKDVBERERERERERGRVbIAiIiIiIiIiIiKrYgMUERERERERERFZFRugiIiIiIiIiIjIqtgARUREREREREREVsUGKCIiIiIiIiIisio2QBERERERERERkVWxAYqIiIiIiIiIiKyKDVBERERERERERGRVbIAiIiIiIiIiIiKrYgMUwd/fH506dbL6eq5evQqVSoXVq1dLY8PCwuDv7280T6VSYerUqVapGxER5Yy5goiIiIjygw1QNmr16tVQqVTZTocPHy7sKhYry5YtQ69evVCxYkWoVCqEhYUVdpWIiJgrbMiNGzcwbdo0NG7cGCVLloSXlxdeeOEF/Pzzz4VdNSIiIiKbYFfYFaCcTZ8+HZUqVTKZX7Vq1UKoTeFKSUmBnV3hvGXnzJmDR48eoXHjxrh9+3ah1IGIKDvMFf9TWLni+++/x5w5c9CtWzeEhoYiMzMTa9euRbt27bBy5UoMGjSowOtEREREZEvYAGXjOnTogIYNGxZ2NWyCo6Njoa37wIEDhrufXF1dC60eRETmMFf8T2HlitatW+P69evw8vIyzHvzzTcRGBiIyZMnswGKiIiIij12wSvissbKmDdvHpYsWYLKlSvD2dkZL730Em7cuAEhBGbMmIHy5cvDyckJXbt2xf37982WtXv3bgQGBsLR0REBAQHYsmWLSUx8fDxGjx6NChUqQKvVomrVqpgzZw70er1JXFhYGNzd3eHh4YHQ0FDEx8ebXe/WrVtRp04dODo6ok6dOvjuu+/Mxj09rsfUqVOhUqlw8eJFhIWFwcPDA+7u7hg0aBCSk5ONlk1JScHbb78NLy8vlChRAl26dMHNmzcVjxXi5+cHlUoljSMiskXMFdbPFbVr1zZqfAIArVaLl19+Gf/99x8ePXqU4/JEREREzzreAWXjHj58iHv37hnNU6lU8PT0NJoXFRWF9PR0jBo1Cvfv38fcuXPRu3dvtGnTBvv378d7772HixcvYtGiRRg7dixW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zs4oV64c5s6dKy1fpVIhKSkJa9asMdTp6bsBrH18s27xPX/+PF577TW4u7vD29sbkyZNghACN27cQNeuXeHm5gYfHx/Mnz9fWiYR2a6oqCi0a9cOrVu3Rq1atRAVFaV4Wb1ej08++QR169aFo6MjvL290b59e/z555+GmFWrVqFNmzYoXbo0tFotAgICsGzZMqNy/P398c8//+DAgQOGc5/sF9inx/dQkh/MUbLck2NcXL16Fd7e3gCAadOmGeo7depUaW55us5Z59uLFy9Kz+spKSl4++234eXlhRIlSqBLly64efOm4nGl7ty5gyFDhqBMmTJwdHRE/fr1sWbNGqOYq1evQqVSYd68efj8889RpUoVaLVaNGrUCEePHpWug4goy6VLl1C7dm2TxicAKF26tNHfT48BldUF9/fff8fbb78Nb29veHh44I033kB6ejri4+MxcOBAlCxZEiVLlsT48eMhhDAqU8m58fvvv0fHjh0N1zNVqlTBjBkzoNPpjOKyvtsfO3YMrVq1grOzM95//33Da1n5KqdrmylTpsDe3h537941qcewYcPg4eGB1NTUHOsLAP3798fJkydx9uxZw7yYmBj88ssv6N+/v0l8eno6Jk+ejKCgILi7u8PFxQUtW7bEvn37DDE55TXgcQ50dXXFpUuX8PLLL6NEiRJ49dVXDa89OQbUlClToFarsXfvXpNtdHBwMLoWJLJlxfIOqLzq3bs3KlWqhMjISBw/fhwrVqxA6dKlMWfOHEPMhx9+iEmTJqF37954/fXXcffuXSxatAitWrXCiRMnzCaLLLdu3ULjxo0RHx+PYcOGoWbNmrh58yY2bdqE5ORkODg44PLly9i6dSt69eqFSpUqITY2Fp999hmCg4Nx5swZlC1bFrVq1cL06dMxefJkDBs2DC1btgQANGvWLNt1v/nmm9i0aRNGjhyJgIAAxMXF4ffff8e///6L5557DgCwceNGJCcnY/jw4fD09MSRI0ewaNEi/Pfff9i4cSMA4I033sCtW7ewZ88ek26O2Zk6dSqmTZuGtm3bYvjw4Th37hyWLVuGo0eP4uDBg0a/ADx48ADt27fHK6+8gt69e2PTpk147733ULduXXTo0CHbdXz11Vd4/fXX0bhxYwwbNgwAUKVKFaMYax/fLH369EGtWrUwe/ZsbN++HTNnzkSpUqXw2Wef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upE7i11d8ACgqqoKn332GY4ePVpvWXV1NTZv3uyQihERkftiriAiT9ecbhUnT55EZmYm8vLycObMGezduxd33nknfHx8kJKSAgAYMWIEYmNjcc899+Dw4cP48MMPMX/+fMyYMcPtxj1iriAi8ix2NUB9++23iImJwZAhQ9CnTx8kJibi/Pnz1uWlpaWYMmWKwytJRB5GWBw3UatjriCiVuEGuWLLli2Ijo7GsGHDkJKSgkGDBuG5556zLv91twpvb2/85z//QUpKCnr27Im7774bfn5+2Lt3r/VuJ61Wix07dkCr1SIhIQETJ07EpEmT8MQTTzhtO5yBuYKIyPPY1Zdh7ty56N27Nw4cOICSkhLMmjULAwcOxCeffIKIiAhn1ZGIiNwIcwUR0WX2dqvo2rUr3n//fWm5kZGRquJcGXMFEbUGCxz3FDxqObvugNq7dy8yMzMREhKCnj17Yvv27UhKSsLgwYNx8uRJZ9WRiIjcCHMFERHJMFcQEXkgYQc/Pz9x9OjRevNnzJghrr76avHpp58KjUZjT5ENqq6uFgsXLhTV1dUuUY4r1onluF+dWA55CuYK16kTy3G/OrEc8hTuliscWRbLca9yXLFOLIfclV0NUDfeeKPYvHlzg8tmzJghAgMDHZIoSktLBQBRWlrqEuW4Yp1YjvvVieWQp2CucJ06sRz3qxPLIU/hbrnCkWWxHPcqxxXrxHLIXdnVBe/222/HK6+80uCyNWvWYPz48fUeD0hERJ6FuYKIiGSYK4iIPI9dDVAZGRlNDni4bt06WCx86hQRkSdjriAiIhnmCiIiz2NXAxQREREREREREZG9XLIBymAwYOHChTAYDC5RjivWieW4X51YDpFjueI+7Gp1YjnuVyeWQ+RYPF6wHH72nlcOuS5FsHM1ERERERERERE5kUveAUVERERERERERO0HG6CIiIiIiIiIiMip2ABFREREREREREROxQYolThUFhERyTBXEBGRDHMFEXkqlxiE/OLFi9i4cSNycnJgNBoBAOHh4bj55psxefJkhIaGtnENAS8vLxw+fBgxMTFtXRUiIo/EXEFERDLMFURErqvNG6D279+PpKQkdOjQAcOHD0dYWBgA4MKFC9i1axcqKyvx4Ycfon///tKyqqqqkJeXh+DgYMTGxtosq66uxmuvvYZJkyY1WUZ6enqD85955hlM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Ll26JKZNmyZ69+4tUlNThclkEn//+9+Fl5eXUBRFDB06VNVTJq4oLS0Vu3fvFllZWSIrK0vs3r27wX7yjSkuLrbpl/9rZWVlTd6S25R3331XzJo1y67t+aXCwkLxxRdfiL1794pTp041qwwicl3MFY1jrlCPuYKofWOuaBxzhXrMFZ5DEUIIkEc6deoUjEYjACA8PBzdu3dX/dra2lpUVlbC39+/0eXnzp1DZGSk3fXKy8vDZ599hkmTJiEoKMju1wshUFhYCIvFgpCQEOj1ervL+LXq6mqYzWb4+fm1uCwiInfCXKEecwUReSrmCvWYK8iTadq6AtR2unfvjoSEBCQkJFiTxNmzZ3HfffdJX6vT6RpNEgBw/vx5PP74482qV1xcHB5++GEEBQWprs8vKYqCsLAwdOnSxZokmlPOL3l7e8PPz8+ucqqqqvDZZ5/h6NGj9ZZVV1dj8+bNHl0OEbkH5gr1mCscXw4RuQfmCvWYKxxfDrmRNr3/ilzOoUOHmjUAL8uxlZ+fLyIjI623Iw8ZMkScO3fOulzt0zwaKqegoMDtyyEi9+aux2ZXK4e5gojaM3c9NrtaOcwV1J7o2roBjFrXtm3bmlx+8uRJluOAcubOnYvevXvjwIEDKCkpwaxZszBo0CB88skniIiIUFVGY+UMHDjQ7cshItfmasfU9loOcwURuTNXO6a213KYK6hdaesWMGpdV1qYf/2kgV9OalqaWU7TOnfuLL766ivr3xaLRTzwwAMiIiJCfP/996pb9NtrOUTk2lztmNpey3G1Y7OrlUNErs3VjqnttRxXOza7WjnkXjgGlIfp0qUL3nrrLVgslgangwcPshwHlFNVVQWd7n83GCqKgvXr1+PWW29FYmIivv32W48uh4hcm6sdU9trOa52bHa1cojItbnaMbW9luNqx2ZXK4fcCxugPExcXBzy8vIaXa4oCoSKByOynKZFR0fjwIED9eavWbMGt912G0aPHi0toz2XQ0SuzdWOqe21HFc7NrtaOUTk2lztmNpey3G1Y7OrlUNupg3uuqI29Omnn4oPPvig0eWXLl0Sn3zyCctpYTlLly4VI0eObHT5n/70J6EoiseWQ0SuzdWOqe21HFc7NrtaOUTk2lztmNpey3G1Y7OrlUPuRRFCRbMrERERERERERFRM7ELHhERERERERERORUboIiIiIiIiIiIyKnYAEVERERERERERE7FBigiIiIiIiIiInIqNkAREREREREREZFTsQGKiIiIiIiIiIicig1QRERERERERETkVGyAIiIiIiIiIiIip/p/O7Ns3bqPHnMAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "0.90672314" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from sklearn.decomposition import PCA\n", + "\n", + "def visualize_embeddings(sentence1, sentence2):\n", + " \"\"\"\n", + " Visualize the relationship between two sentence embeddings using\n", + " multiple visualization techniques.\n", + "\n", + " Args:\n", + " sentence1 (str): First sentence\n", + " sentence2 (str): Second sentence\n", + " \"\"\"\n", + " # Get embeddings\n", + " embedding1 = model.encode(sentence1, normalize_embeddings=True)\n", + " embedding2 = model.encode(sentence2, normalize_embeddings=True)\n", + " dimensions = range(len(embedding1))\n", + "\n", + " # Create figure with subplots\n", + " fig = plt.figure(figsize=(15, 5))\n", + "\n", + "\n", + " # Dimension-wise Comparison\n", + " plt.subplot(132)\n", + " plt.plot(dimensions, embedding1,\n", + " label=f'Sentence 1: \"{sentence1[:30]}...\"',\n", + " alpha=0.7,\n", + " linewidth=1)\n", + " plt.plot(dimensions, embedding2,\n", + " label=f'Sentence 2: \"{sentence2[:30]}...\"',\n", + " alpha=0.7,\n", + " linewidth=1)\n", + " plt.title('Comparison')\n", + " plt.legend()\n", + " plt.grid(True)\n", + "\n", + " # 2D PCA Projection\n", + " plt.subplot(133)\n", + " # Combine embeddings and apply PCA\n", + " combined_embeddings = np.vstack([embedding1, embedding2])\n", + " pca = PCA(n_components=2)\n", + " projected = pca.fit_transform(combined_embeddings)\n", + "\n", + " plt.scatter(projected[0, 0], projected[0, 1], c='blue', label='Sentence 1', s=100)\n", + " plt.scatter(projected[1, 0], projected[1, 1], c='red', label='Sentence 2', s=100)\n", + " plt.plot([projected[0, 0], projected[1, 0]],\n", + " [projected[0, 1], projected[1, 1]],\n", + " 'k--', alpha=0.5)\n", + " plt.title('2D PCA Projection')\n", + " plt.legend()\n", + " plt.grid(True)\n", + "\n", + " # Add overall title and adjust layout\n", + " plt.suptitle(f'Embedding Relationship Analysis\\n\"{sentence1}\" vs \"{sentence2}\"',\n", + " fontsize=12, y=1.05)\n", + " plt.tight_layout()\n", + "\n", + " # Calculate and display similarity score\n", + " similarity = np.dot(embedding1, embedding2)\n", + " print(f\"Similarity Score: {similarity:.4f}\")\n", + "\n", + " plt.show()\n", + "\n", + "def plot_embedding_heatmap(sentence1, sentence2):\n", + " \"\"\"\n", + " Create an improved heatmap visualization of embedding similarities.\n", + "\n", + " Args:\n", + " sentence1 (str): First sentence\n", + " sentence2 (str): Second sentence\n", + " \"\"\"\n", + " # Get embeddings\n", + " embedding1 = model.encode(sentence1, normalize_embeddings=True)\n", + " embedding2 = model.encode(sentence2, normalize_embeddings=True)\n", + "\n", + " # Reshape embeddings to 2D matrices for better visualization\n", + " size = int(np.sqrt(len(embedding1)))\n", + " matrix1 = embedding1[:size*size].reshape(size, size)\n", + " matrix2 = embedding2[:size*size].reshape(size, size)\n", + "\n", + " # Create similarity matrix\n", + " similarity_matrix = np.dot(matrix1, matrix2.T)\n", + "\n", + " # Plot setup\n", + " plt.figure(figsize=(12, 5))\n", + "\n", + " # Create subplots for both individual embeddings and their similarity\n", + " plt.subplot(131)\n", + " sns.heatmap(matrix1,\n", + " cmap='viridis',\n", + " center=0,\n", + " cbar_kws={'label': 'Embedding Values'})\n", + " plt.title(f'Embedding 1\\n\"{sentence1[:20]}...\"')\n", + "\n", + " plt.subplot(132)\n", + " sns.heatmap(matrix2,\n", + " cmap='viridis',\n", + " center=0,\n", + " cbar_kws={'label': 'Embedding Values'})\n", + " plt.title(f'Embedding 2\\n\"{sentence2[:20]}...\"')\n", + "\n", + " plt.subplot(133)\n", + " sns.heatmap(similarity_matrix,\n", + " cmap='coolwarm',\n", + " center=0,\n", + " cbar_kws={'label': 'Similarity'})\n", + " plt.title('Similarity Matrix')\n", + "\n", + " # Calculate overall similarity score\n", + " similarity = np.dot(embedding1, embedding2)\n", + "\n", + " # Add overall title with similarity score\n", + " plt.suptitle(f'Embedding Analysis (Similarity Score: {similarity:.4f})',\n", + " y=1.05)\n", + "\n", + " plt.tight_layout()\n", + " plt.show()\n", + "\n", + " return similarity\n", + "\n", + "visualize_embeddings(sentence1, sentence2)\n", + "plot_embedding_heatmap(sentence1, sentence2)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "TGrGo3oGgTUb" + }, + "source": [ + "embed chunks" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 639, + "referenced_widgets": [ + "4ebedac7a1e24412939d073a8a3eacfc", + "561c85d40cf743b5a72c75b546521711", + "3af7a9a02e914690b502fcdee03684b6", + "a15d0728aa6f433a8f4bde7e6afa392b", + "a6a719b425174238951c97a43446714e", + "09d119c556a34f189264f00f410664df", + "7b2033dcdb0343dfbaec48554d59b19d", + "ab57df42ddb443beb451bedcd3ab695c", + "cfabe36bbfe04f1aba7dea0b4d3a8da2", + "ebc6baf750364d3197eada52f49889f3", + "7c0313ca37c4498ba3b9ba7d959c5b40" + ] + }, + "id": "rKjXm7SWgTUc", + "outputId": "00a35b8a-caa7-4fa0-8d42-55e32e8e06b6" + }, + "outputs": [], + "source": [ + "def simple_visualize_chunks(chunks):\n", + " \"\"\"\n", + " Create a simple 2D visualization of text chunk relationships.\n", + "\n", + " Args:\n", + " chunks (list): List of text chunks to visualize\n", + " \"\"\"\n", + " # Get embeddings and reduce dimensions\n", + " embeddings = model.encode(chunks, normalize_embeddings=True, show_progress_bar=True)\n", + " pca = PCA(n_components=2)\n", + " reduced = pca.fit_transform(embeddings)\n", + "\n", + " # Create plot\n", + " plt.figure(figsize=(10, 6))\n", + " plt.scatter(reduced[:, 0], reduced[:, 1], c=range(len(chunks)), cmap='viridis')\n", + "\n", + " # Add labels\n", + " for i, (x, y) in enumerate(reduced):\n", + " plt.annotate(f\"Chunk {i+1}\", (x, y), xytext=(5, 5), textcoords='offset points')\n", + "\n", + " plt.title(\"Text Chunks in 2D Space\")\n", + " plt.grid(True, alpha=0.3)\n", + " plt.colorbar(label='Chunk Order')\n", + "\n", + " plt.tight_layout()\n", + " plt.show()\n", + "\n", + "# Example usage:\n", + "# chunked_data = [\"hello\", \"bird\", \"how are you doing\" , \"king\"]\n", + "simple_visualize_chunks(chunked_data)" + ] + } + ], + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.0" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "003ded18cd7c429881c1f64346b1d687": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "0146da1036924f70abdd374fd473ae96": { + "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_b28907a17a764054a68bac997021c0da", + "placeholder": "​", + "style": "IPY_MODEL_5a0746263a4541088c7140c8a4b6a874", + "value": "model.safetensors: 100%" + } + }, + "01e8d0960ce84b7cb45ff40d625ab1bd": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "038dd736237c4ef988b53817181337d9": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "04e70b6a757c4539953934fd498c8999": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "08ac9141e9394e91a04a03982b235f76": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "09d119c556a34f189264f00f410664df": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "0a01ef9feb8c4fca99a75efc1519b95b": { + "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_30da0516931e475cbfd3ae470899aabc", + "placeholder": "​", + "style": "IPY_MODEL_cd89b43596d649089ef6e644ac177949", + "value": "modeling.py: 100%" + } + }, + "0f9e4f4ad8874501a60d9aab3050dbf7": { + "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": "" + } + }, + "10f5556e2f014fbb8fac9cb22b48534a": { + "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_3694cb065ab84c3cb200f4005cf7da1d", + "placeholder": "​", + "style": "IPY_MODEL_e2fc64930b7240c2b5f41ae164dadda2", + "value": " 547M/547M [00:33<00:00, 34.5MB/s]" + } + }, + "12196ce362b242a4a4a1f5190af1feda": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "14ba4fc8abdf4d37a929b4681b25ca6d": { + "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_038dd736237c4ef988b53817181337d9", + "max": 229, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_883659a4a01d445eb901e8adb4dc945f", + "value": 229 + } + }, + "167048dbaa2449369c854364b98f9601": { + "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": "" + } + }, + "17f35184c80b42888a1f61540fd675d3": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1b10cc5175a744f49e0846e32d5ff640": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1d6505423d9c416aa7d5a242f1a86fdc": { + "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_70ee2e822377451f87056a6b9ce5306b", + "placeholder": "​", + "style": "IPY_MODEL_dddf6ce35bd5484789b7b3adb44b8f58", + "value": " 7.13k/7.13k [00:00<00:00, 224kB/s]" + } + }, + "1df1c9c254fd4fb88e50efe6f74778cf": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1fac92e5756d4b7f87212af93f6e9782": { + "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_aef71247a9984e3faabae9fe75e346ca", + "max": 71847, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_167048dbaa2449369c854364b98f9601", + "value": 71847 + } + }, + "2083f0f2431c4acb8705b8a0afb5bbcd": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "20ca40770ad24ca797f4ff08f169118c": { + "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_1b10cc5175a744f49e0846e32d5ff640", + "placeholder": "​", + "style": "IPY_MODEL_3031347f437e49da9baba8b3d3713095", + "value": "1_Pooling/config.json: 100%" + } + }, + "21c1ed708ae5434594fa0a3f88d05ced": { + "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_fcc7dbe659b14a1792dad2d310a00a6c", + "placeholder": "​", + "style": "IPY_MODEL_cd70ac8c7d894d099ad7fd5a95d63d70", + "value": "config.json: 100%" + } + }, + "2712f7e873df4ce19764e1df208b471e": { + "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_3c75a4365fd5498dadcdc9e194b0f354", + "max": 1348, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_f6b634f30b3d4e4eba18736a1f5cdd52", + "value": 1348 + } + }, + "2783d9fa4b2545d08d710a5a71f834a9": { + "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_93b0e55411a1495086eabbb8cb40a746", + "placeholder": "​", + "style": "IPY_MODEL_0f9e4f4ad8874501a60d9aab3050dbf7", + "value": " 297/297 [00:00<00:00, 18.1kB/s]" + } + }, + "27dd97fdae2449019d20db03b0ad95a2": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "28597a46a2d4428d883e95b717b6240a": { + "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_6f7a8eba042d454498431c56528386f9", + "max": 297, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_44fa10f01d174283a939e34ff2b59e65", + "value": 297 + } + }, + "2902284c28d647af81811b47eedc0a60": { + "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": "" + } + }, + "29db2124df1e42a29ddd084a4f25d6e7": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "2b6595ecfd3c45a187184f093f427c3f": { + "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": "" + } + }, + "2c0e633467744316a0602a3eb721e1b0": { + "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_35628cc462654f93bac86ab8742780f5", + "IPY_MODEL_832edca5307d41abbf05481cdbad15eb", + "IPY_MODEL_bc9e98439f7c41d598e677171be95653" + ], + "layout": "IPY_MODEL_38b3cef09c664d15a9737aaa92af52e0" + } + }, + "2c1375cfaea44323b7d557863b30261c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "2cd95ffa17a447e98d0a79b23b25a21d": { + "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_27dd97fdae2449019d20db03b0ad95a2", + "max": 59023, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_e9ea33046652490cb41103e959594a38", + "value": 59023 + } + }, + "3031347f437e49da9baba8b3d3713095": { + "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": "" + } + }, + "30da0516931e475cbfd3ae470899aabc": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "32781face99f4f0bbd0388ee6d759c42": { + "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": "" + } + }, + "35628cc462654f93bac86ab8742780f5": { + "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_d9696351a25e4cf29ee3cbb7f147a02c", + "placeholder": "​", + "style": "IPY_MODEL_c70f4361d53e436caa53edb8ea15854c", + "value": "vocab.txt: 100%" + } + }, + "3694cb065ab84c3cb200f4005cf7da1d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "37671f6237dd431d91cdfb52d4eb0c98": { + "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": "" + } + }, + "3792aee989da4157971ddc24280b3e9b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "389e019c875c42d296b65acaf485c4d7": { + "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_2c1375cfaea44323b7d557863b30261c", + "max": 695, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_b822759d4d524fabbbcf4da3997e2576", + "value": 695 + } + }, + "38b3cef09c664d15a9737aaa92af52e0": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "3af7a9a02e914690b502fcdee03684b6": { + "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_ab57df42ddb443beb451bedcd3ab695c", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_cfabe36bbfe04f1aba7dea0b4d3a8da2", + "value": 1 + } + }, + "3c75a4365fd5498dadcdc9e194b0f354": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "41adc806108a496eb88ebc0030040f31": { + "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_95efb79acd5d48baa35eebcb6399eae3", + "placeholder": "​", + "style": "IPY_MODEL_b86e0642e7dc42c48a72fcd7d26d6d7c", + "value": " 229/229 [00:00<00:00, 3.17kB/s]" + } + }, + "44fa10f01d174283a939e34ff2b59e65": { + "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": "" + } + }, + "46fce341aa5e4a388943a18d3dfb76dd": { + "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_e0f26cd908ac462f8d5a9596821b1747", + "max": 54, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_62eece2c76f24b7abc1ea426e8a59890", + "value": 54 + } + }, + "488de6218e1d405fad948d36a3a9e4a3": { + "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_9d3316ab268e46c393309c69207e0b3b", + "max": 711661, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_941d25cd435e48fa9b279f41f09ac593", + "value": 711661 + } + }, + "4ebedac7a1e24412939d073a8a3eacfc": { + "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_561c85d40cf743b5a72c75b546521711", + "IPY_MODEL_3af7a9a02e914690b502fcdee03684b6", + "IPY_MODEL_a15d0728aa6f433a8f4bde7e6afa392b" + ], + "layout": "IPY_MODEL_a6a719b425174238951c97a43446714e" + } + }, + "4f51c9fe49e54739bd9d8e0b8302571b": { + "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": "" + } + }, + "50636521c0e142ef8b2bb2fc155f2860": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "50d2cc6aca784d089db410636068498e": { + "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": "" + } + }, + "561c85d40cf743b5a72c75b546521711": { + "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_09d119c556a34f189264f00f410664df", + "placeholder": "​", + "style": "IPY_MODEL_7b2033dcdb0343dfbaec48554d59b19d", + "value": "Batches: 100%" + } + }, + "598516e5476242cc9f8d88ca21fb95a3": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5a0746263a4541088c7140c8a4b6a874": { + "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": "" + } + }, + "5a9b0c48ad51406680028cb75aaa5fe6": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5b3cb5f78d404863a5df996af46b7b60": { + "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_bae8483a62db4ce5b6394c465c7b2ca1", + "placeholder": "​", + "style": "IPY_MODEL_8af2377eddfa4f7faccbfbd0845aa36a", + "value": "modules.json: 100%" + } + }, + "5d548b748c7c4da29734ed9c17deba2b": { + "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": "" + } + }, + "606872ae4528415da726281a18d92650": { + "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_9505a4ba49eb4801a5511fee6d1ad042", + "placeholder": "​", + "style": "IPY_MODEL_c82ce21bc13d4b9e9cf126aacc298e8c", + "value": " 712k/712k [00:00<00:00, 1.01MB/s]" + } + }, + "6269e7454ccc4ab5afe5d9d1dcc64b3f": { + "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": "" + } + }, + "62c50131529e42c1a0eb5f07416827f8": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "62eece2c76f24b7abc1ea426e8a59890": { + "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": "" + } + }, + "6f4cef97229c4ee2871397cd44b7db6a": { + "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_12196ce362b242a4a4a1f5190af1feda", + "placeholder": "​", + "style": "IPY_MODEL_4f51c9fe49e54739bd9d8e0b8302571b", + "value": " 695/695 [00:00<00:00, 34.0kB/s]" + } + }, + "6f7a8eba042d454498431c56528386f9": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6fe12ce993574f398e04b4ca52ed8607": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "7021a6fdf4534eb8b47b6d26ab57940f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "70ee2e822377451f87056a6b9ce5306b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "73f6a92893ca4e59b0fa3273c9bb0d6f": { + "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_6fe12ce993574f398e04b4ca52ed8607", + "placeholder": "​", + "style": "IPY_MODEL_50d2cc6aca784d089db410636068498e", + "value": "special_tokens_map.json: 100%" + } + }, + "744f85e34a3d4e118c395b6ee915e94d": { + "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_17f35184c80b42888a1f61540fd675d3", + "placeholder": "​", + "style": "IPY_MODEL_de256434b32a4fdc86a27a3e995538f6", + "value": " 54.0/54.0 [00:00<00:00, 3.79kB/s]" + } + }, + "79c06642158d47cbb0dd9c816fbe7a12": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "7b2033dcdb0343dfbaec48554d59b19d": { + "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": "" + } + }, + "7c0313ca37c4498ba3b9ba7d959c5b40": { + "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": "" + } + }, + "8281b86d9ffa406e9fc5c5a543085950": { + "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_8733495f98964d288f47df86b032220b", + "placeholder": "​", + "style": "IPY_MODEL_ce872bfafdfd4530b32f7731bfb6da4f", + "value": "configuration.py: 100%" + } + }, + "832edca5307d41abbf05481cdbad15eb": { + "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_1df1c9c254fd4fb88e50efe6f74778cf", + "max": 231508, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_6269e7454ccc4ab5afe5d9d1dcc64b3f", + "value": 231508 + } + }, + "86c42370bb124e01a18d82fe034abfeb": { + "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_dc6f65c85f694377b2886c559e103dfc", + "max": 547119128, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_9dbfb80534ba4e3e82eafbfaf59459d8", + "value": 547119128 + } + }, + "8733495f98964d288f47df86b032220b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "883659a4a01d445eb901e8adb4dc945f": { + "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": "" + } + }, + "884e8f0781c3484690ac1ea9cebe7e4b": { + "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_21c1ed708ae5434594fa0a3f88d05ced", + "IPY_MODEL_2712f7e873df4ce19764e1df208b471e", + "IPY_MODEL_db791cb77a674b9baf7de9e9bd987311" + ], + "layout": "IPY_MODEL_598516e5476242cc9f8d88ca21fb95a3" + } + }, + "88bd0484bd194d7e83181823c2c23516": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "8af2377eddfa4f7faccbfbd0845aa36a": { + "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": "" + } + }, + "8ca87ef282ad4398b4347e0884bb34ab": { + "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": "" + } + }, + "8e4a53fe6fe24406a8f899118da38826": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "90e65239465744489872cdf2582070c3": { + "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_7021a6fdf4534eb8b47b6d26ab57940f", + "placeholder": "​", + "style": "IPY_MODEL_37671f6237dd431d91cdfb52d4eb0c98", + "value": " 59.0k/59.0k [00:00<00:00, 348kB/s]" + } + }, + "93b0e55411a1495086eabbb8cb40a746": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "941d25cd435e48fa9b279f41f09ac593": { + "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": "" + } + }, + "943a40caaa82476c9a0812068d02e18e": { + "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_20ca40770ad24ca797f4ff08f169118c", + "IPY_MODEL_28597a46a2d4428d883e95b717b6240a", + "IPY_MODEL_2783d9fa4b2545d08d710a5a71f834a9" + ], + "layout": "IPY_MODEL_5a9b0c48ad51406680028cb75aaa5fe6" + } + }, + "94e3dea9dff6409aa9a20b5c0e041904": { + "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_d45e752ff3ba43778d76650ce9507aab", + "IPY_MODEL_46fce341aa5e4a388943a18d3dfb76dd", + "IPY_MODEL_744f85e34a3d4e118c395b6ee915e94d" + ], + "layout": "IPY_MODEL_a7e2cb0593ac4c0d9bf5100d3c414768" + } + }, + "9505a4ba49eb4801a5511fee6d1ad042": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "95efb79acd5d48baa35eebcb6399eae3": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "962c14d92f944c85ac7abaee41ec2457": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "963c7d5fe0b849878c847f64eecc6d13": { + "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_8e4a53fe6fe24406a8f899118da38826", + "placeholder": "​", + "style": "IPY_MODEL_af00d6196dab437ba3714bbb066f2463", + "value": "tokenizer_config.json: 100%" + } + }, + "9c249fb24bb542e986642412ccdc5844": { + "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_ce8b3bf73acc4aea968d3884c3aa686f", + "max": 7127, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_2902284c28d647af81811b47eedc0a60", + "value": 7127 + } + }, + "9d3316ab268e46c393309c69207e0b3b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9dbfb80534ba4e3e82eafbfaf59459d8": { + "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": "" + } + }, + "a15d0728aa6f433a8f4bde7e6afa392b": { + "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_ebc6baf750364d3197eada52f49889f3", + "placeholder": "​", + "style": "IPY_MODEL_7c0313ca37c4498ba3b9ba7d959c5b40", + "value": " 1/1 [00:00<00:00,  5.09it/s]" + } + }, + "a6a719b425174238951c97a43446714e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a7e2cb0593ac4c0d9bf5100d3c414768": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ab57df42ddb443beb451bedcd3ab695c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "aef71247a9984e3faabae9fe75e346ca": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "af00d6196dab437ba3714bbb066f2463": { + "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": "" + } + }, + "b28907a17a764054a68bac997021c0da": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b6a634f7ce5146f9ae4466bb7da59e02": { + "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_e76fdbaeac814afe875af0d5575834c9", + "IPY_MODEL_488de6218e1d405fad948d36a3a9e4a3", + "IPY_MODEL_606872ae4528415da726281a18d92650" + ], + "layout": "IPY_MODEL_3792aee989da4157971ddc24280b3e9b" + } + }, + "b7e99d7d2bc640379e555623dcbccf3d": { + "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_5b3cb5f78d404863a5df996af46b7b60", + "IPY_MODEL_14ba4fc8abdf4d37a929b4681b25ca6d", + "IPY_MODEL_41adc806108a496eb88ebc0030040f31" + ], + "layout": "IPY_MODEL_2083f0f2431c4acb8705b8a0afb5bbcd" + } + }, + "b822759d4d524fabbbcf4da3997e2576": { + "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": "" + } + }, + "b86e0642e7dc42c48a72fcd7d26d6d7c": { + "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": "" + } + }, + "bae8483a62db4ce5b6394c465c7b2ca1": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "bc9e98439f7c41d598e677171be95653": { + "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_88bd0484bd194d7e83181823c2c23516", + "placeholder": "​", + "style": "IPY_MODEL_8ca87ef282ad4398b4347e0884bb34ab", + "value": " 232k/232k [00:00<00:00, 1.35MB/s]" + } + }, + "bf3634e7f64d4ba5acb137fee2b6c908": { + "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": "" + } + }, + "bf85729fedd04573bba3fa93d7a4c2d0": { + "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_8281b86d9ffa406e9fc5c5a543085950", + "IPY_MODEL_9c249fb24bb542e986642412ccdc5844", + "IPY_MODEL_1d6505423d9c416aa7d5a242f1a86fdc" + ], + "layout": "IPY_MODEL_01e8d0960ce84b7cb45ff40d625ab1bd" + } + }, + "c3c60381013d47598974fe6865b82001": { + "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": "" + } + }, + "c680ffb91a3e4306a741ec3dee20d7a7": { + "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_003ded18cd7c429881c1f64346b1d687", + "placeholder": "​", + "style": "IPY_MODEL_f0539f77a3434be89799d7d9a7ea557a", + "value": " 1.38k/1.38k [00:00<00:00, 58.3kB/s]" + } + }, + "c70f4361d53e436caa53edb8ea15854c": { + "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": "" + } + }, + "c82ce21bc13d4b9e9cf126aacc298e8c": { + "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": "" + } + }, + "cc001e0fc9474213af516a933a137393": { + "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_50636521c0e142ef8b2bb2fc155f2860", + "placeholder": "​", + "style": "IPY_MODEL_32781face99f4f0bbd0388ee6d759c42", + "value": " 71.8k/71.8k [00:00<00:00, 410kB/s]" + } + }, + "cd70ac8c7d894d099ad7fd5a95d63d70": { + "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": "" + } + }, + "cd89b43596d649089ef6e644ac177949": { + "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": "" + } + }, + "ce872bfafdfd4530b32f7731bfb6da4f": { + "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": "" + } + }, + "ce8b3bf73acc4aea968d3884c3aa686f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "cfabe36bbfe04f1aba7dea0b4d3a8da2": { + "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": "" + } + }, + "d33c2cf80f784b8a8c0e170d3e4c2224": { + "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_79c06642158d47cbb0dd9c816fbe7a12", + "max": 1383, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_c3c60381013d47598974fe6865b82001", + "value": 1383 + } + }, + "d45e752ff3ba43778d76650ce9507aab": { + "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_e5fc8ffd8cc64d5aa2c44f3754b00f3b", + "placeholder": "​", + "style": "IPY_MODEL_d74e1ec2633342f5a9fe1759c5acabba", + "value": "sentence_bert_config.json: 100%" + } + }, + "d74e1ec2633342f5a9fe1759c5acabba": { + "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": "" + } + }, + "d82dd55ba0e044a0b38c2f75a1c4057c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d9696351a25e4cf29ee3cbb7f147a02c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "daead2353dd04f418609adef55b0ad5d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "db6db8a7c3dd451a952891655a8abf58": { + "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_73f6a92893ca4e59b0fa3273c9bb0d6f", + "IPY_MODEL_389e019c875c42d296b65acaf485c4d7", + "IPY_MODEL_6f4cef97229c4ee2871397cd44b7db6a" + ], + "layout": "IPY_MODEL_08ac9141e9394e91a04a03982b235f76" + } + }, + "db791cb77a674b9baf7de9e9bd987311": { + "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_daead2353dd04f418609adef55b0ad5d", + "placeholder": "​", + "style": "IPY_MODEL_bf3634e7f64d4ba5acb137fee2b6c908", + "value": " 1.35k/1.35k [00:00<00:00, 78.7kB/s]" + } + }, + "dc6f65c85f694377b2886c559e103dfc": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "dddf6ce35bd5484789b7b3adb44b8f58": { + "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": "" + } + }, + "de256434b32a4fdc86a27a3e995538f6": { + "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": "" + } + }, + "e0bf3d65e0a041328c8b0a655a00abbf": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e0f26cd908ac462f8d5a9596821b1747": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e2fc64930b7240c2b5f41ae164dadda2": { + "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": "" + } + }, + "e337b61be79843ffad37621fa7209136": { + "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_e4a3a70c68554b45b46b4ce93512a56a", + "IPY_MODEL_1fac92e5756d4b7f87212af93f6e9782", + "IPY_MODEL_cc001e0fc9474213af516a933a137393" + ], + "layout": "IPY_MODEL_29db2124df1e42a29ddd084a4f25d6e7" + } + }, + "e4a3a70c68554b45b46b4ce93512a56a": { + "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_e0bf3d65e0a041328c8b0a655a00abbf", + "placeholder": "​", + "style": "IPY_MODEL_5d548b748c7c4da29734ed9c17deba2b", + "value": "README.md: 100%" + } + }, + "e5fc8ffd8cc64d5aa2c44f3754b00f3b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e76fdbaeac814afe875af0d5575834c9": { + "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_d82dd55ba0e044a0b38c2f75a1c4057c", + "placeholder": "​", + "style": "IPY_MODEL_2b6595ecfd3c45a187184f093f427c3f", + "value": "tokenizer.json: 100%" + } + }, + "e9ea33046652490cb41103e959594a38": { + "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": "" + } + }, + "ea7a7ecc2d9b44af915b5fc976307e2c": { + "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_0146da1036924f70abdd374fd473ae96", + "IPY_MODEL_86c42370bb124e01a18d82fe034abfeb", + "IPY_MODEL_10f5556e2f014fbb8fac9cb22b48534a" + ], + "layout": "IPY_MODEL_962c14d92f944c85ac7abaee41ec2457" + } + }, + "eb191cb0df974bd0be65bc87c5eb4708": { + "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_963c7d5fe0b849878c847f64eecc6d13", + "IPY_MODEL_d33c2cf80f784b8a8c0e170d3e4c2224", + "IPY_MODEL_c680ffb91a3e4306a741ec3dee20d7a7" + ], + "layout": "IPY_MODEL_62c50131529e42c1a0eb5f07416827f8" + } + }, + "ebc6baf750364d3197eada52f49889f3": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f0539f77a3434be89799d7d9a7ea557a": { + "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": "" + } + }, + "f4f4bb3499904e9cbe921631f80f9c6c": { + "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_0a01ef9feb8c4fca99a75efc1519b95b", + "IPY_MODEL_2cd95ffa17a447e98d0a79b23b25a21d", + "IPY_MODEL_90e65239465744489872cdf2582070c3" + ], + "layout": "IPY_MODEL_04e70b6a757c4539953934fd498c8999" + } + }, + "f6b634f30b3d4e4eba18736a1f5cdd52": { + "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": "" + } + }, + "fcc7dbe659b14a1792dad2d310a00a6c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + } + } + } + }, + "nbformat": 4, + "nbformat_minor": 0 +}