diff --git "a/ipynb/llm/3. Integrated_model.ipynb" "b/ipynb/llm/3. Integrated_model.ipynb" --- "a/ipynb/llm/3. Integrated_model.ipynb" +++ "b/ipynb/llm/3. Integrated_model.ipynb" @@ -1 +1 @@ -{"cells":[{"cell_type":"markdown","source":["---"],"metadata":{"id":"zMzaz60DvqTR"}},{"cell_type":"markdown","metadata":{"id":"wAQMA1-DKZZ5"},"source":["# Summarisation + QnA Custom Dataset Creation\n","\n","## 1. Introduction\n","\n","High-quality data is fundamental for producing a good model; the higher the quality of the data, the better the resulting model. The following steps outline the process of creating a dataset specifically for fine-tuning our Llama2 model.\n","\n","\n","\n","![](https://i.imgur.com/IDNhAWH.png)\n","\n","\n","There are several types of datasets that can be used to fine-tune Large Language Models (LLMs):\n","\n","1. **Instruction Datasets:** These datasets contain direct instructions or prompts followed by the correct or expected outputs.\n","\n","2. **Raw Completion:** This involves providing a prompt to the model and letting it generate a response without any predefined correct answer.\n","\n","3. **Preference Datasets:** These datasets include human feedback in the form of preferences, where annotators compare pairs of model outputs to determine which is better.\n","\n","4. **Human Feedback Data:** This is specific to Reinforcement Learning from Human Feedback (RLHF) and involves direct feedback on the model's outputs from human annotators.\n","\n","5. **Demonstration Data:** Also used in RLHF, these datasets consist of examples showing ideal model outputs or actions, typically created by humans.\n","\n","6. **Reward Modeling Data:** Used to train a reward model in RLHF, this dataset predicts human feedback on model outputs based on actual feedback data.\n","\n","7. **Dialogue Data:** Particularly relevant for conversational AI, this includes annotated conversations that indicate the quality of responses or provide corrections.\n","\n","\n","---\n","\n","\n","\n","* Typically, an instruction dataset is utilized for fine-tuning the Llama 2 Model. Since we are focusing on Supervised Fine Tuning, the instruction dataset becomes our primary choice.\n","\n","Therefore, we have 2 options:\n","\n","1. Create our own Instruction Dataset.\n","2. Modify an existing instruction dataset, which involves filtering, modifying, and enriching it.\n","\n","We have decided to proceed with the 1st option: creating our own Instruction Dataset.\n","\n","* This will involve prompt engineering and incorporating sanity checks to ensure quality and relevance."]},{"cell_type":"markdown","metadata":{"id":"hU_mUK-nol-t"},"source":["## 2. Load and analyze the dataset"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"8P7g6eHuxxKe","outputId":"53c785e0-5e95-42d0-a973-17aaf53371d2"},"outputs":[{"name":"stderr","output_type":"stream","text":["huggingface/tokenizers: The current process just got forked, after parallelism has already been used. Disabling parallelism to avoid deadlocks...\n","To disable this warning, you can either:\n","\t- Avoid using `tokenizers` before the fork if possible\n","\t- Explicitly set the environment variable TOKENIZERS_PARALLELISM=(true | false)\n"]},{"name":"stdout","output_type":"stream","text":["\u001b[31mERROR: Could not find a version that satisfies the requirement faiss-gpu (from versions: none)\u001b[0m\u001b[31m\n","\u001b[0m\u001b[31mERROR: No matching distribution found for faiss-gpu\u001b[0m\u001b[31m\n","\u001b[0m"]}],"source":["# Install libraries\n","!pip install -q datasets transformers sentence_transformers faiss-gpu huggingface_hub"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"KKb-ikj4J-in"},"outputs":[],"source":["# Import the required libraries\n","import json\n","import sys\n","import pandas as pd\n","from datasets import Dataset, DatasetDict, load_dataset\n","\n","from transformers import AutoTokenizer\n","import matplotlib.pyplot as plt\n","import seaborn as sns\n","\n","from sentence_transformers import SentenceTransformer\n","import faiss\n","from tqdm.autonotebook import tqdm\n","import numpy as np"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"bGi9FdmhdBDg","outputId":"33a7788a-741a-47f5-9093-eaae5aaa0525"},"outputs":[{"name":"stdout","output_type":"stream","text":["DatasetDict({\n"," train: Dataset({\n"," features: ['instruction', 'input_content', 'expected_output'],\n"," num_rows: 448\n"," })\n"," test: Dataset({\n"," features: ['instruction', 'input_content', 'expected_output'],\n"," num_rows: 56\n"," })\n"," val: Dataset({\n"," features: ['instruction', 'input_content', 'expected_output'],\n"," num_rows: 56\n"," })\n","})\n"]}],"source":["# Load JSON data from a file\n","with open(\"my_data_non_MCQ.json\", \"r\") as f:\n"," data = json.load(f)\n","\n","# Create a Pandas DataFrame from the list of dictionaries\n","df = pd.DataFrame(data)\n","\n","# Calculate the number of rows for each dataset split\n","num_rows = len(df)\n","train_end = int(num_rows * 0.8) # 80% for training\n","test_end = train_end + int(num_rows * 0.1) # 10% for testing\n","\n","# Split the DataFrame into training, testing, and validation sets\n","df_train = df[:train_end]\n","df_test = df[train_end:test_end]\n","df_val = df[test_end:] # Ensures the remainder is used for validation\n","\n","# Create Datasets from the DataFrames\n","dataset_train = Dataset.from_pandas(df_train)\n","dataset_test = Dataset.from_pandas(df_test)\n","dataset_val = Dataset.from_pandas(df_val)\n","\n","# Create a DatasetDict containing the split datasets\n","dataset = DatasetDict({\n"," 'train': dataset_train,\n"," 'test': dataset_test,\n"," 'val': dataset_val\n","})\n","\n","# Print the structure of the created DatasetDict\n","print(dataset)"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":719},"id":"-MOvcr5mD8li","outputId":"755ebe31-20bc-42e1-feb2-e43e76a03373"},"outputs":[{"data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
instructioninput_contentexpected_output
0Summarize the concept and applications of AIAI refers to the development of computer syste...AI, or artificial intelligence, involves the c...
1Summarize the concept and applications of Mach...Machine Learning is a subset of AI that focuse...Machine Learning is a branch of AI that enable...
2Summarize the concept and applications of Deep...Deep Learning is a subset of Machine Learning ...Deep Learning, a subset of Machine Learning, e...
3Summarize the differences between AI, Machine ...AI, Machine Learning, and Deep Learning are in...
4Summarize the concept and structure of artific...Artificial neural networks are built on the pr...Artificial neural networks are structured base...
............
443Summarize the considerations when deciding to ...When considering whether to use deep learning ...Considerations when deciding to use deep learn...
444Summarize the concept of Machine LearningMachine Learning is a subset of Artificial Int...Machine Learning is a branch of AI that utiliz...
445Summarize the applications of Machine LearningMachine Learning has various applications acro...Machine Learning finds applications in image r...
446Summarize the concept of Image Recognition in ...Image recognition is one of the applications o...In Machine Learning, image recognition is the ...
447Summarize the concept of Natural Language Proc...Natural Language Processing (NLP) is another a...Natural Language Processing (NLP) in Machine L...
\n","

448 rows × 3 columns

\n","
"],"text/plain":[" instruction \\\n","0 Summarize the concept and applications of AI \n","1 Summarize the concept and applications of Mach... \n","2 Summarize the concept and applications of Deep... \n","3 Summarize the differences between AI, Machine ... \n","4 Summarize the concept and structure of artific... \n",".. ... \n","443 Summarize the considerations when deciding to ... \n","444 Summarize the concept of Machine Learning \n","445 Summarize the applications of Machine Learning \n","446 Summarize the concept of Image Recognition in ... \n","447 Summarize the concept of Natural Language Proc... \n","\n"," input_content \\\n","0 AI refers to the development of computer syste... \n","1 Machine Learning is a subset of AI that focuse... \n","2 Deep Learning is a subset of Machine Learning ... \n","3 \n","4 Artificial neural networks are built on the pr... \n",".. ... \n","443 When considering whether to use deep learning ... \n","444 Machine Learning is a subset of Artificial Int... \n","445 Machine Learning has various applications acro... \n","446 Image recognition is one of the applications o... \n","447 Natural Language Processing (NLP) is another a... \n","\n"," expected_output \n","0 AI, or artificial intelligence, involves the c... \n","1 Machine Learning is a branch of AI that enable... \n","2 Deep Learning, a subset of Machine Learning, e... \n","3 AI, Machine Learning, and Deep Learning are in... \n","4 Artificial neural networks are structured base... \n",".. ... \n","443 Considerations when deciding to use deep learn... \n","444 Machine Learning is a branch of AI that utiliz... \n","445 Machine Learning finds applications in image r... \n","446 In Machine Learning, image recognition is the ... \n","447 Natural Language Processing (NLP) in Machine L... \n","\n","[448 rows x 3 columns]"]},"execution_count":23,"metadata":{},"output_type":"execute_result"}],"source":["# Read as pandas DataFrame\n","dataset['train'].to_pandas()"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":1000},"id":"7WkFWJSQhKUV","outputId":"5ef5b8f2-d42b-4208-bba6-3986059ae6a3"},"outputs":[{"data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
instructioninput_contentexpected_output
0Summarize the hyperparameters in Support Vecto...We take into account some essential hyperparam...Support Vector Machine (SVM) is a machine lear...
1Summarize the hyperparameters in XGBoostThe following essential XGBoost hyperparameter...XGBoost is a popular gradient boosting algorit...
2Summarize other examples of model hyperparametersSome other examples of model hyperparameters i...In addition to SVM and XGBoost, other machine ...
3Summarize the importance of hyperparameter tun...Hyperparameter tuning is crucial in machine le...Hyperparameter tuning plays a critical role in...
4Summarize the concept and applications of Deep...Deep Learning is a type of Machine Learning th...Deep Learning is a subset of Machine Learning ...
5Explain the use of Deep Learning in image and ...Deep learning algorithms are used in image and...Deep Learning algorithms play a crucial role i...
6Describe the applications of Deep Learning in ...Deep Learning algorithms are used for tasks su...Deep Learning algorithms find applications in ...
7Explain the role of Deep Learning in fraud det...Deep Learning algorithms are used in financial...Deep Learning algorithms play a vital role in ...
8Summarize the concept of artificial neural net...Artificial neural networks are built on the pr...Artificial neural networks are modeled after h...
9Summarize the architecture of artificial neura...Artificial neural networks have input layers, ...Artificial neural networks consist of input, h...
10Differentiate between machine learning and dee...Machine learning and deep learning are subsets...Machine learning and deep learning are subsets...
11Highlight the differences between machine lear...Machine learning involves manual extraction of...Machine learning requires manual feature extra...
12Summarize the concept of Deep LearningDeep learning is a branch of machine learning ...Deep learning is a subfield of machine learnin...
13Explain the architecture of an artificial neur...An artificial neural network (ANN) is the basi...An artificial neural network (ANN) serves as t...
14Discuss the applications of Deep LearningDeep learning has found applications in variou...Deep learning has been applied to computer vis...
15Explain the different types of machine learnin...Deep learning employs various machine learning...Deep learning encompasses supervised learning,...
16Summarize the types of neural networks used in...Deep learning models are able to automatically...Deep learning models use various types of neur...
17Summarize the applications of deep learning in...Deep learning models can enable machines to id...Deep learning has several applications in comp...
18Summarize the applications of deep learning in...Deep learning models can enable machines to un...Deep learning plays a crucial role in natural ...
19Summarize the applications of deep learning in...Deep learning models can be used in reinforcem...Deep learning is employed in reinforcement lea...
20Summarize the concept of Artificial IntelligenceArtificial Intelligence (AI) is the incorporat...Artificial Intelligence (AI) involves incorpor...
21Summarize the concept of Machine LearningMachine Learning (ML) is the study/process tha...Machine Learning (ML) enables systems to learn...
22Summarize the concept of Deep LearningDeep Learning (DL) is a sub-part of Machine Le...Deep Learning (DL) is a sub-part of Machine Le...
23Summarize the differences between Artificial I...Artificial Intelligence (AI) is the broader fa...Artificial Intelligence (AI) encompasses Machi...
24Summarize the concept and applications of AIAI refers to the development of computer syste...AI, or artificial intelligence, involves the c...
25Summarize the concept and applications of Mach...Machine Learning is a subset of AI that focuse...Machine Learning is a branch of AI that enable...
26Summarize the concept and applications of Deep...Deep Learning is a subfield of Machine Learnin...Deep Learning is a subfield of Machine Learnin...
27Summarize the common examples of AI applicationsAI has numerous applications across various in...AI has a wide range of applications across var...
28Summarize the role and responsibilities of an ...An AI Engineer is a professional who designs, ...An AI Engineer is responsible for designing, d...
29Summarize the role and responsibilities of a M...A Machine Learning Engineer is a professional ...A Machine Learning Engineer is responsible for...
30Summarize the role and responsibilities of a D...A Deep Learning Engineer is a professional who...A Deep Learning Engineer is responsible for de...
31Differentiate between the roles of an AI Engin...AI Engineers, Machine Learning Engineers, and ...AI Engineers, Machine Learning Engineers, and ...
32Summarize the concept of Artificial Neural Net...Artificial Neural Network (ANN) is a type of n...Artificial Neural Network (ANN) is a type of n...
33Summarize the concept of Biological Neural Net...Biological Neural Network (BNN) is a structure...Biological Neural Network (BNN) is a neural ne...
34Highlight the differences between Artificial N...Artificial Neural Networks (ANNs) and Biologic...Artificial Neural Networks (ANNs) and Biologic...
35Summarize the overall differences between Arti...While ANNs and BNNs share basic components, th...Artificial Neural Networks (ANNs) and Biologic...
36Summarize the concept of hyperparameter tuning...Hyperparameter tuning is the process of select...Hyperparameter tuning is the process of findin...
37Summarize the different types of hyperparamete...Neural networks have several essential hyperpa...In neural networks, there are several importan...
38Explain the impact of learning rate and epochs...Learning rate and epochs are two critical hype...Learning rate and epochs are crucial hyperpara...
39Describe the role of architecture and activati...Architecture and activation function are impor...Architecture and activation function are cruci...
40Summarize the concept of Hyperparameter TuningHyperparameter tuning involves finding the bes...Hyperparameter tuning is the process of findin...
41Explain the advantages and disadvantages of Hy...Hyperparameter tuning offers several advantage...Hyperparameter tuning provides several advanta...
42Discuss the challenges in Hyperparameter TuningHyperparameter tuning faces several challenges...Hyperparameter tuning encounters various chall...
43Describe the applications of Hyperparameter Tu...Hyperparameter tuning has various applications...Hyperparameter tuning finds applications in di...
44Summarize the challenges in Deep LearningDeep learning has made significant advancement...The challenges in deep learning include data a...
45Summarize the advantages of Deep LearningDeep Learning offers several advantages. Here ...Advantages of deep learning include high accur...
46Summarize the disadvantages of Deep LearningDespite its advantages, Deep Learning also has...Disadvantages of deep learning include high co...
47Summarize the considerations when deciding to ...When deciding whether to use Deep Learning for...Considerations when deciding to use Deep Learn...
48Summarize the concept of Machine LearningExamples of Machine Learning: Machine Learning...Machine Learning (ML) is a subset of Artificia...
49Summarize the applications of Machine Learning...Image recognition: Machine learning algorithms...Machine Learning algorithms play a crucial rol...
50Summarize the applications of Machine Learning...Natural language processing (NLP): Machine lea...Machine Learning algorithms are extensively em...
51Summarize the applications of Machine Learning...Recommendation systems: Machine learning algor...Machine Learning algorithms are instrumental i...
52Summarize the hyperparameters in Support Vecto...Hyperparameters in Support Vector Machine We t...In Support Vector Machine (SVM), there are thr...
53Summarize the hyperparameters in XGBoostHyperparameters in XGBoost The following essen...XGBoost has several important hyperparameters ...
54Summarize some examples of model hyperparametersSome other examples of model hyperparameters i...Model hyperparameters can vary depending on th...
55Summarize the importance of hyperparameter tun...Hyperparameter tuning is a critical step in ma...Hyperparameter tuning plays a crucial role in ...
\n","
"],"text/plain":[" instruction \\\n","0 Summarize the hyperparameters in Support Vecto... \n","1 Summarize the hyperparameters in XGBoost \n","2 Summarize other examples of model hyperparameters \n","3 Summarize the importance of hyperparameter tun... \n","4 Summarize the concept and applications of Deep... \n","5 Explain the use of Deep Learning in image and ... \n","6 Describe the applications of Deep Learning in ... \n","7 Explain the role of Deep Learning in fraud det... \n","8 Summarize the concept of artificial neural net... \n","9 Summarize the architecture of artificial neura... \n","10 Differentiate between machine learning and dee... \n","11 Highlight the differences between machine lear... \n","12 Summarize the concept of Deep Learning \n","13 Explain the architecture of an artificial neur... \n","14 Discuss the applications of Deep Learning \n","15 Explain the different types of machine learnin... \n","16 Summarize the types of neural networks used in... \n","17 Summarize the applications of deep learning in... \n","18 Summarize the applications of deep learning in... \n","19 Summarize the applications of deep learning in... \n","20 Summarize the concept of Artificial Intelligence \n","21 Summarize the concept of Machine Learning \n","22 Summarize the concept of Deep Learning \n","23 Summarize the differences between Artificial I... \n","24 Summarize the concept and applications of AI \n","25 Summarize the concept and applications of Mach... \n","26 Summarize the concept and applications of Deep... \n","27 Summarize the common examples of AI applications \n","28 Summarize the role and responsibilities of an ... \n","29 Summarize the role and responsibilities of a M... \n","30 Summarize the role and responsibilities of a D... \n","31 Differentiate between the roles of an AI Engin... \n","32 Summarize the concept of Artificial Neural Net... \n","33 Summarize the concept of Biological Neural Net... \n","34 Highlight the differences between Artificial N... \n","35 Summarize the overall differences between Arti... \n","36 Summarize the concept of hyperparameter tuning... \n","37 Summarize the different types of hyperparamete... \n","38 Explain the impact of learning rate and epochs... \n","39 Describe the role of architecture and activati... \n","40 Summarize the concept of Hyperparameter Tuning \n","41 Explain the advantages and disadvantages of Hy... \n","42 Discuss the challenges in Hyperparameter Tuning \n","43 Describe the applications of Hyperparameter Tu... \n","44 Summarize the challenges in Deep Learning \n","45 Summarize the advantages of Deep Learning \n","46 Summarize the disadvantages of Deep Learning \n","47 Summarize the considerations when deciding to ... \n","48 Summarize the concept of Machine Learning \n","49 Summarize the applications of Machine Learning... \n","50 Summarize the applications of Machine Learning... \n","51 Summarize the applications of Machine Learning... \n","52 Summarize the hyperparameters in Support Vecto... \n","53 Summarize the hyperparameters in XGBoost \n","54 Summarize some examples of model hyperparameters \n","55 Summarize the importance of hyperparameter tun... \n","\n"," input_content \\\n","0 We take into account some essential hyperparam... \n","1 The following essential XGBoost hyperparameter... \n","2 Some other examples of model hyperparameters i... \n","3 Hyperparameter tuning is crucial in machine le... \n","4 Deep Learning is a type of Machine Learning th... \n","5 Deep learning algorithms are used in image and... \n","6 Deep Learning algorithms are used for tasks su... \n","7 Deep Learning algorithms are used in financial... \n","8 Artificial neural networks are built on the pr... \n","9 Artificial neural networks have input layers, ... \n","10 Machine learning and deep learning are subsets... \n","11 Machine learning involves manual extraction of... \n","12 Deep learning is a branch of machine learning ... \n","13 An artificial neural network (ANN) is the basi... \n","14 Deep learning has found applications in variou... \n","15 Deep learning employs various machine learning... \n","16 Deep learning models are able to automatically... \n","17 Deep learning models can enable machines to id... \n","18 Deep learning models can enable machines to un... \n","19 Deep learning models can be used in reinforcem... \n","20 Artificial Intelligence (AI) is the incorporat... \n","21 Machine Learning (ML) is the study/process tha... \n","22 Deep Learning (DL) is a sub-part of Machine Le... \n","23 Artificial Intelligence (AI) is the broader fa... \n","24 AI refers to the development of computer syste... \n","25 Machine Learning is a subset of AI that focuse... \n","26 Deep Learning is a subfield of Machine Learnin... \n","27 AI has numerous applications across various in... \n","28 An AI Engineer is a professional who designs, ... \n","29 A Machine Learning Engineer is a professional ... \n","30 A Deep Learning Engineer is a professional who... \n","31 AI Engineers, Machine Learning Engineers, and ... \n","32 Artificial Neural Network (ANN) is a type of n... \n","33 Biological Neural Network (BNN) is a structure... \n","34 Artificial Neural Networks (ANNs) and Biologic... \n","35 While ANNs and BNNs share basic components, th... \n","36 Hyperparameter tuning is the process of select... \n","37 Neural networks have several essential hyperpa... \n","38 Learning rate and epochs are two critical hype... \n","39 Architecture and activation function are impor... \n","40 Hyperparameter tuning involves finding the bes... \n","41 Hyperparameter tuning offers several advantage... \n","42 Hyperparameter tuning faces several challenges... \n","43 Hyperparameter tuning has various applications... \n","44 Deep learning has made significant advancement... \n","45 Deep Learning offers several advantages. Here ... \n","46 Despite its advantages, Deep Learning also has... \n","47 When deciding whether to use Deep Learning for... \n","48 Examples of Machine Learning: Machine Learning... \n","49 Image recognition: Machine learning algorithms... \n","50 Natural language processing (NLP): Machine lea... \n","51 Recommendation systems: Machine learning algor... \n","52 Hyperparameters in Support Vector Machine We t... \n","53 Hyperparameters in XGBoost The following essen... \n","54 Some other examples of model hyperparameters i... \n","55 Hyperparameter tuning is a critical step in ma... \n","\n"," expected_output \n","0 Support Vector Machine (SVM) is a machine lear... \n","1 XGBoost is a popular gradient boosting algorit... \n","2 In addition to SVM and XGBoost, other machine ... \n","3 Hyperparameter tuning plays a critical role in... \n","4 Deep Learning is a subset of Machine Learning ... \n","5 Deep Learning algorithms play a crucial role i... \n","6 Deep Learning algorithms find applications in ... \n","7 Deep Learning algorithms play a vital role in ... \n","8 Artificial neural networks are modeled after h... \n","9 Artificial neural networks consist of input, h... \n","10 Machine learning and deep learning are subsets... \n","11 Machine learning requires manual feature extra... \n","12 Deep learning is a subfield of machine learnin... \n","13 An artificial neural network (ANN) serves as t... \n","14 Deep learning has been applied to computer vis... \n","15 Deep learning encompasses supervised learning,... \n","16 Deep learning models use various types of neur... \n","17 Deep learning has several applications in comp... \n","18 Deep learning plays a crucial role in natural ... \n","19 Deep learning is employed in reinforcement lea... \n","20 Artificial Intelligence (AI) involves incorpor... \n","21 Machine Learning (ML) enables systems to learn... \n","22 Deep Learning (DL) is a sub-part of Machine Le... \n","23 Artificial Intelligence (AI) encompasses Machi... \n","24 AI, or artificial intelligence, involves the c... \n","25 Machine Learning is a branch of AI that enable... \n","26 Deep Learning is a subfield of Machine Learnin... \n","27 AI has a wide range of applications across var... \n","28 An AI Engineer is responsible for designing, d... \n","29 A Machine Learning Engineer is responsible for... \n","30 A Deep Learning Engineer is responsible for de... \n","31 AI Engineers, Machine Learning Engineers, and ... \n","32 Artificial Neural Network (ANN) is a type of n... \n","33 Biological Neural Network (BNN) is a neural ne... \n","34 Artificial Neural Networks (ANNs) and Biologic... \n","35 Artificial Neural Networks (ANNs) and Biologic... \n","36 Hyperparameter tuning is the process of findin... \n","37 In neural networks, there are several importan... \n","38 Learning rate and epochs are crucial hyperpara... \n","39 Architecture and activation function are cruci... \n","40 Hyperparameter tuning is the process of findin... \n","41 Hyperparameter tuning provides several advanta... \n","42 Hyperparameter tuning encounters various chall... \n","43 Hyperparameter tuning finds applications in di... \n","44 The challenges in deep learning include data a... \n","45 Advantages of deep learning include high accur... \n","46 Disadvantages of deep learning include high co... \n","47 Considerations when deciding to use Deep Learn... \n","48 Machine Learning (ML) is a subset of Artificia... \n","49 Machine Learning algorithms play a crucial rol... \n","50 Machine Learning algorithms are extensively em... \n","51 Machine Learning algorithms are instrumental i... \n","52 In Support Vector Machine (SVM), there are thr... \n","53 XGBoost has several important hyperparameters ... \n","54 Model hyperparameters can vary depending on th... \n","55 Hyperparameter tuning plays a crucial role in ... "]},"execution_count":24,"metadata":{},"output_type":"execute_result"}],"source":["# Read as pandas DataFrame\n","dataset['test'].to_pandas()"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":1000},"id":"03oFFWL4hM4S","outputId":"4ab2203a-2f25-4496-d7f7-76f902f06c36"},"outputs":[{"data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
instructioninput_contentexpected_output
0Summarize the concept and applications of Deep...Deep Learning is a type of Machine Learning th...Deep Learning is a subset of Machine Learning ...
1Explain the use of Deep Learning in image and ...Deep learning algorithms are used in image and...Deep Learning algorithms play a crucial role i...
2Describe the applications of Deep Learning in ...Deep Learning algorithms are used for tasks su...Deep Learning algorithms have extensive applic...
3Explain the role of Deep Learning in fraud det...Deep Learning algorithms are used in financial...Deep Learning algorithms play a crucial role i...
4Summarize the concept of artificial neural net...Artificial neural networks are built on the pr...Artificial neural networks are modeled after h...
5Explain the structure of an artificial neural ...An artificial neural network is composed of ar...An artificial neural network consists of layer...
6Differentiate between Machine Learning and Dee...Machine Learning and Deep Learning are both su...Machine Learning and Deep Learning are subsets...
7Discuss the differences between Machine Learni...Machine Learning and Deep Learning have differ...Machine Learning and Deep Learning differ in t...
8Summarize the concept of Deep LearningDeep learning is a branch of machine learning ...Deep learning is a subfield of machine learnin...
9Explain the architecture and functioning of ar...Artificial neural networks (ANNs) are the buil...Artificial neural networks (ANNs) form the fou...
10Discuss the applications of Deep LearningDeep learning has achieved significant success...Deep learning has made remarkable advancements...
11Describe the different types of machine learni...Deep learning incorporates various machine lea...Deep learning encompasses multiple machine lea...
12Summarize the types of neural networks in deep...Deep learning models are able to automatically...Deep learning models, such as feedforward neur...
13Summarize the applications of deep learning in...Deep learning models can enable machines to id...Deep learning models in computer vision enable...
14Summarize the applications of deep learning in...Deep learning models can enable machines to un...Deep learning models in NLP enable machines to...
15Summarize the applications of deep learning in...Deep learning models can be used in reinforcem...Deep learning models in reinforcement learning...
16Summarize the concept of Artificial IntelligenceArtificial Intelligence (AI) is the incorporat...Artificial Intelligence (AI) is the study of t...
17Summarize the concept of Machine LearningMachine Learning (ML) is a subset of AI that a...Machine Learning (ML) is a branch of AI that e...
18Summarize the concept of Deep LearningDeep Learning (DL) is a sub-part of Machine Le...Deep Learning (DL) is a subset of Machine Lear...
19Summarize the differences between Artificial I...Artificial Intelligence (AI) encompasses both ...Artificial Intelligence (AI) is the overall co...
20Summarize the concept of Artificial Intelligen...AI refers to the development of computer syste...Artificial Intelligence (AI) involves the deve...
21Summarize the concept of Machine LearningMachine Learning is a subset of AI that focuse...Machine Learning is a branch of AI that enable...
22Summarize the concept of Deep LearningDeep Learning is a subfield of Machine Learnin...Deep Learning is a subfield of Machine Learnin...
23Summarize the applications of AI, Machine Lear...AI, Machine Learning, and Deep Learning have n...AI, Machine Learning, and Deep Learning have w...
24Summarize the role and responsibilities of an ...AI Engineers design, develop, and implement ar...AI Engineers are professionals who design, dev...
25Summarize the role and responsibilities of a M...Machine Learning Engineers design, develop, an...Machine Learning Engineers are professionals w...
26Summarize the role and responsibilities of a D...Deep Learning Engineers design, develop, and i...Deep Learning Engineers are professionals who ...
27Differentiate between the roles of AI Engineer...AI Engineers, Machine Learning Engineers, and ...AI Engineers, Machine Learning Engineers, and ...
28Summarize the concept of Artificial Neural Net...Artificial Neural Networks (ANN) are a type of...Artificial Neural Networks (ANN) are a type of...
29Summarize the concept of Biological Neural Net...Biological Neural Networks (BNN) are structure...Biological Neural Networks (BNN) are structure...
30Explain the differences between Artificial Neu...Artificial Neural Networks (ANNs) and Biologic...Artificial Neural Networks (ANNs) and Biologic...
31Summarize the differences in parameters, compu...ANN and BNN differ in parameters, computing, r...Artificial Neural Networks (ANN) and Biologica...
32Summarize the concept of hyperparameter tuningHyperparameter tuning is the process of select...Hyperparameter tuning involves finding the bes...
33Summarize the importance of hyperparameters in...Hyperparameters are configuration variables th...Hyperparameters play a crucial role in machine...
34Summarize the different types of hyperparamete...Neural networks have several essential hyperpa...In neural networks, there are various hyperpar...
35Summarize the impact of different hyperparamet...Different hyperparameters in neural networks, ...The performance and learning ability of a neur...
36Summarize the concept of Hyperparameter TuningHyperparameter Tuning involves finding the bes...Hyperparameter Tuning is the process of findin...
37Explain the drawbacks of GridSearchCVGridSearchCV is an exhaustive approach to Hype...GridSearchCV, while effective in identifying t...
38Describe the advantages of RandomizedSearchCVRandomizedSearchCV is an alternative approach ...RandomizedSearchCV offers several advantages o...
39Explain the concept of Bayesian Optimization i...Bayesian Optimization is another strategy for ...Bayesian Optimization treats the search for op...
40Summarize the challenges in deep learningDeep learning has made significant advancement...The challenges in deep learning include data a...
41Summarize the advantages of deep learningDeep learning offers several advantages over t...The advantages of deep learning include high a...
42Summarize the disadvantages of deep learningWhile deep learning has many advantages, it al...The disadvantages of deep learning include hig...
43Summarize the key considerations when deciding...When deciding whether to use deep learning for...The key considerations when deciding to use de...
44Summarize the concept of Machine LearningExamples of Machine Learning: Machine Learning...Machine Learning (ML) is a subset of Artificia...
45Summarize the applications of Machine Learning...Examples of Machine Learning: Image recognitio...Machine Learning (ML) algorithms play a crucia...
46Summarize the applications of Machine Learning...Examples of Machine Learning: Natural language...Machine Learning (ML) algorithms are extensive...
47Summarize the applications of Machine Learning...Examples of Machine Learning: Recommendation s...Machine Learning (ML) algorithms play a vital ...
48Summarize the hyperparameters in Support Vecto...Hyperparameters in Support Vector Machine (SVM...Support Vector Machine (SVM) has three importa...
49Summarize the hyperparameters in XGBoostHyperparameters in XGBoost include learning_ra...XGBoost has five essential hyperparameters: le...
50Provide examples of model hyperparametersExamples of model hyperparameters include pena...Some examples of model hyperparameters are the...
51Summarize the importance of hyperparameter tuningHyperparameter tuning is crucial for optimizin...Hyperparameter tuning plays a vital role in op...
52Summarize the concept of Deep LearningDeep Learning is a type of Machine Learning th...Deep Learning is a subset of Machine Learning ...
53Summarize the applications of Deep Learning in...Deep learning algorithms are used in image and...Deep Learning is applied in image and video re...
54Summarize the applications of Deep Learning in...Deep learning algorithms are used for tasks su...Deep Learning is utilized in natural language ...
55Summarize the applications of Deep Learning in...Deep learning algorithms are used in financial...Deep Learning is employed in financial transac...
\n","
"],"text/plain":[" instruction \\\n","0 Summarize the concept and applications of Deep... \n","1 Explain the use of Deep Learning in image and ... \n","2 Describe the applications of Deep Learning in ... \n","3 Explain the role of Deep Learning in fraud det... \n","4 Summarize the concept of artificial neural net... \n","5 Explain the structure of an artificial neural ... \n","6 Differentiate between Machine Learning and Dee... \n","7 Discuss the differences between Machine Learni... \n","8 Summarize the concept of Deep Learning \n","9 Explain the architecture and functioning of ar... \n","10 Discuss the applications of Deep Learning \n","11 Describe the different types of machine learni... \n","12 Summarize the types of neural networks in deep... \n","13 Summarize the applications of deep learning in... \n","14 Summarize the applications of deep learning in... \n","15 Summarize the applications of deep learning in... \n","16 Summarize the concept of Artificial Intelligence \n","17 Summarize the concept of Machine Learning \n","18 Summarize the concept of Deep Learning \n","19 Summarize the differences between Artificial I... \n","20 Summarize the concept of Artificial Intelligen... \n","21 Summarize the concept of Machine Learning \n","22 Summarize the concept of Deep Learning \n","23 Summarize the applications of AI, Machine Lear... \n","24 Summarize the role and responsibilities of an ... \n","25 Summarize the role and responsibilities of a M... \n","26 Summarize the role and responsibilities of a D... \n","27 Differentiate between the roles of AI Engineer... \n","28 Summarize the concept of Artificial Neural Net... \n","29 Summarize the concept of Biological Neural Net... \n","30 Explain the differences between Artificial Neu... \n","31 Summarize the differences in parameters, compu... \n","32 Summarize the concept of hyperparameter tuning \n","33 Summarize the importance of hyperparameters in... \n","34 Summarize the different types of hyperparamete... \n","35 Summarize the impact of different hyperparamet... \n","36 Summarize the concept of Hyperparameter Tuning \n","37 Explain the drawbacks of GridSearchCV \n","38 Describe the advantages of RandomizedSearchCV \n","39 Explain the concept of Bayesian Optimization i... \n","40 Summarize the challenges in deep learning \n","41 Summarize the advantages of deep learning \n","42 Summarize the disadvantages of deep learning \n","43 Summarize the key considerations when deciding... \n","44 Summarize the concept of Machine Learning \n","45 Summarize the applications of Machine Learning... \n","46 Summarize the applications of Machine Learning... \n","47 Summarize the applications of Machine Learning... \n","48 Summarize the hyperparameters in Support Vecto... \n","49 Summarize the hyperparameters in XGBoost \n","50 Provide examples of model hyperparameters \n","51 Summarize the importance of hyperparameter tuning \n","52 Summarize the concept of Deep Learning \n","53 Summarize the applications of Deep Learning in... \n","54 Summarize the applications of Deep Learning in... \n","55 Summarize the applications of Deep Learning in... \n","\n"," input_content \\\n","0 Deep Learning is a type of Machine Learning th... \n","1 Deep learning algorithms are used in image and... \n","2 Deep Learning algorithms are used for tasks su... \n","3 Deep Learning algorithms are used in financial... \n","4 Artificial neural networks are built on the pr... \n","5 An artificial neural network is composed of ar... \n","6 Machine Learning and Deep Learning are both su... \n","7 Machine Learning and Deep Learning have differ... \n","8 Deep learning is a branch of machine learning ... \n","9 Artificial neural networks (ANNs) are the buil... \n","10 Deep learning has achieved significant success... \n","11 Deep learning incorporates various machine lea... \n","12 Deep learning models are able to automatically... \n","13 Deep learning models can enable machines to id... \n","14 Deep learning models can enable machines to un... \n","15 Deep learning models can be used in reinforcem... \n","16 Artificial Intelligence (AI) is the incorporat... \n","17 Machine Learning (ML) is a subset of AI that a... \n","18 Deep Learning (DL) is a sub-part of Machine Le... \n","19 Artificial Intelligence (AI) encompasses both ... \n","20 AI refers to the development of computer syste... \n","21 Machine Learning is a subset of AI that focuse... \n","22 Deep Learning is a subfield of Machine Learnin... \n","23 AI, Machine Learning, and Deep Learning have n... \n","24 AI Engineers design, develop, and implement ar... \n","25 Machine Learning Engineers design, develop, an... \n","26 Deep Learning Engineers design, develop, and i... \n","27 AI Engineers, Machine Learning Engineers, and ... \n","28 Artificial Neural Networks (ANN) are a type of... \n","29 Biological Neural Networks (BNN) are structure... \n","30 Artificial Neural Networks (ANNs) and Biologic... \n","31 ANN and BNN differ in parameters, computing, r... \n","32 Hyperparameter tuning is the process of select... \n","33 Hyperparameters are configuration variables th... \n","34 Neural networks have several essential hyperpa... \n","35 Different hyperparameters in neural networks, ... \n","36 Hyperparameter Tuning involves finding the bes... \n","37 GridSearchCV is an exhaustive approach to Hype... \n","38 RandomizedSearchCV is an alternative approach ... \n","39 Bayesian Optimization is another strategy for ... \n","40 Deep learning has made significant advancement... \n","41 Deep learning offers several advantages over t... \n","42 While deep learning has many advantages, it al... \n","43 When deciding whether to use deep learning for... \n","44 Examples of Machine Learning: Machine Learning... \n","45 Examples of Machine Learning: Image recognitio... \n","46 Examples of Machine Learning: Natural language... \n","47 Examples of Machine Learning: Recommendation s... \n","48 Hyperparameters in Support Vector Machine (SVM... \n","49 Hyperparameters in XGBoost include learning_ra... \n","50 Examples of model hyperparameters include pena... \n","51 Hyperparameter tuning is crucial for optimizin... \n","52 Deep Learning is a type of Machine Learning th... \n","53 Deep learning algorithms are used in image and... \n","54 Deep learning algorithms are used for tasks su... \n","55 Deep learning algorithms are used in financial... \n","\n"," expected_output \n","0 Deep Learning is a subset of Machine Learning ... \n","1 Deep Learning algorithms play a crucial role i... \n","2 Deep Learning algorithms have extensive applic... \n","3 Deep Learning algorithms play a crucial role i... \n","4 Artificial neural networks are modeled after h... \n","5 An artificial neural network consists of layer... \n","6 Machine Learning and Deep Learning are subsets... \n","7 Machine Learning and Deep Learning differ in t... \n","8 Deep learning is a subfield of machine learnin... \n","9 Artificial neural networks (ANNs) form the fou... \n","10 Deep learning has made remarkable advancements... \n","11 Deep learning encompasses multiple machine lea... \n","12 Deep learning models, such as feedforward neur... \n","13 Deep learning models in computer vision enable... \n","14 Deep learning models in NLP enable machines to... \n","15 Deep learning models in reinforcement learning... \n","16 Artificial Intelligence (AI) is the study of t... \n","17 Machine Learning (ML) is a branch of AI that e... \n","18 Deep Learning (DL) is a subset of Machine Lear... \n","19 Artificial Intelligence (AI) is the overall co... \n","20 Artificial Intelligence (AI) involves the deve... \n","21 Machine Learning is a branch of AI that enable... \n","22 Deep Learning is a subfield of Machine Learnin... \n","23 AI, Machine Learning, and Deep Learning have w... \n","24 AI Engineers are professionals who design, dev... \n","25 Machine Learning Engineers are professionals w... \n","26 Deep Learning Engineers are professionals who ... \n","27 AI Engineers, Machine Learning Engineers, and ... \n","28 Artificial Neural Networks (ANN) are a type of... \n","29 Biological Neural Networks (BNN) are structure... \n","30 Artificial Neural Networks (ANNs) and Biologic... \n","31 Artificial Neural Networks (ANN) and Biologica... \n","32 Hyperparameter tuning involves finding the bes... \n","33 Hyperparameters play a crucial role in machine... \n","34 In neural networks, there are various hyperpar... \n","35 The performance and learning ability of a neur... \n","36 Hyperparameter Tuning is the process of findin... \n","37 GridSearchCV, while effective in identifying t... \n","38 RandomizedSearchCV offers several advantages o... \n","39 Bayesian Optimization treats the search for op... \n","40 The challenges in deep learning include data a... \n","41 The advantages of deep learning include high a... \n","42 The disadvantages of deep learning include hig... \n","43 The key considerations when deciding to use de... \n","44 Machine Learning (ML) is a subset of Artificia... \n","45 Machine Learning (ML) algorithms play a crucia... \n","46 Machine Learning (ML) algorithms are extensive... \n","47 Machine Learning (ML) algorithms play a vital ... \n","48 Support Vector Machine (SVM) has three importa... \n","49 XGBoost has five essential hyperparameters: le... \n","50 Some examples of model hyperparameters are the... \n","51 Hyperparameter tuning plays a vital role in op... \n","52 Deep Learning is a subset of Machine Learning ... \n","53 Deep Learning is applied in image and video re... \n","54 Deep Learning is utilized in natural language ... \n","55 Deep Learning is employed in financial transac... "]},"execution_count":25,"metadata":{},"output_type":"execute_result"}],"source":["# Read as pandas DataFrame\n","dataset['val'].to_pandas()"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":145,"referenced_widgets":["69d87602a6884896a846f2163ba6a152","ff52e55f50c44012a1c91fe73c0c1d0a","53af06d6b1e8417a97911beaa53df19d","1f400ccfb3d24a638fa56e24a8afd6b3","d5724f184784479a952c00fa269c1b13","4231d4950aa04e25a63fbe7852f6e252","f013627453f04098b445272139c8261c","c417f77b5c6e417b8ae3d88c2d760fd3","61e79946b798433f99ff8eef584e9dd1","2f748a15848e4318a2c47298c618614d","b92057f5402f42d1bad734cc51fbf18a","06b1d360762c4762b78839bb809089df","f97ca73d0c0c406092736cc7e76b358b","e4cad9a8c9a342ceb54add4f9ae7ded4","3fb9a25d0f9f463685aba687cce93454","c4578f5c5f88467e991c981a4e8387b4","e0092621d297474eb320368a8f78ac56","40ea058255ea438a87e8cd095826f536","e7cd0016f0d14c29a72fc1b4b5381b6e","dd810bc9d1e74e93a48cda6c75a7b0f2","2090f868fcc74f61b78aa47f9aa929ca","808904a9ed4d4a1f83ff289df87334d4","47979c550cfb4c41807b9b4a774ad552","05d6f50dac9e4e29802d4a35e0f4a6e5","d21e35ce94ff4758ab876f1bf52f51d8","ceb70d3f3a014aeaa82774d8ae13877e","828cdb9891e54cc7af37e767014ce828","d6a5a31c98a04fb2bce58817a552c072","69ccba421f874c099160b543d23c323a","93fb4b1e6eb0436e8c3fb3abc2646c44","b9fb9339a1954917a37ea9c18f4c7316","d2db3e5614da457095286971f2fd5c46","d1d20672589f43ce86888288b87557c9"]},"id":"U2YZULfoCura","outputId":"ad214a6e-2f07-4d6e-bfc9-306050305104"},"outputs":[{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"d1d20672589f43ce86888288b87557c9","version_major":2,"version_minor":0},"text/plain":["VBox(children=(HTML(value='
"]},"metadata":{},"output_type":"display_data"}],"source":["# Load the tokenizer\n","tokenizer = AutoTokenizer.from_pretrained(\"meta-llama/Llama-2-7b-chat-hf\")\n","\n","\n","# Function to tokenize and calculate token counts\n","def tokenize_and_count(dataset_split):\n"," # Adjust field names based on your dataset structure\n"," instruction_token_counts = [len(tokenizer.tokenize(example[\"instruction\"])) for example in dataset_split]\n"," input_content_token_counts = [len(tokenizer.tokenize(example[\"input_content\"])) for example in dataset_split]\n"," expected_output_token_counts = [len(tokenizer.tokenize(example[\"expected_output\"])) for example in dataset_split]\n","\n"," # If you need combined token counts of specific fields, adjust as necessary:\n"," combined_token_counts = [instruction + input_content + expected_output for instruction, input_content, expected_output in zip(instruction_token_counts, input_content_token_counts, expected_output_token_counts)]\n","\n"," return instruction_token_counts, input_content_token_counts, expected_output_token_counts, combined_token_counts\n","\n","# Adjust the plot_distribution function to accept a subplot axis\n","def plot_distribution(token_counts, title, ax):\n"," sns.set_style(\"whitegrid\")\n"," ax.hist(token_counts, bins=50, color='#3498db', edgecolor='black')\n"," ax.set_title(title, fontsize=12)\n"," ax.set_xlabel(\"Number of tokens\", fontsize=10)\n"," ax.set_ylabel(\"Number of examples\", fontsize=10)\n"," ax.tick_params(axis='both', which='major', labelsize=8)\n","\n","# Assuming you have a matplotlib figure `fig` and axes `axs`\n","fig, axs = plt.subplots(3, 3, figsize=(18, 12)) # Adjust the figure size as necessary\n","\n","# Iterate over each dataset split and plot\n","split_names = ['train', 'test', 'val']\n","for i, split_name in enumerate(split_names):\n"," # Unpack the token counts from your dataset\n"," instruction_counts, input_content_counts, expected_output_counts, combined_counts = tokenize_and_count(dataset[split_name])\n","\n"," # Plotting the distributions on the specified subplot axis\n"," plot_distribution(instruction_counts, f\"{split_name} split: Instruction\", axs[i, 0]) # Changed for 3x3 grid structure\n"," plot_distribution(input_content_counts, f\"{split_name} split: Input Content\", axs[i, 1]) # Changed for 3x3 grid structure\n"," plot_distribution(expected_output_counts, f\"{split_name} split: Expected Output\", axs[i, 2]) # Changed for 3x3 grid structure\n"," # Note: Combined is not plotted due to 3x3 grid, adjust if needed\n","\n","# Adjust layout to prevent overlap\n","plt.tight_layout()\n","plt.show()\n"]},{"cell_type":"markdown","metadata":{"id":"_RXe958fNLwH"},"source":["## 3. Filter out rows with more than 2048 tokens\n","\n","We will remove samples with more than 2048 tokens (max context size of Llama 2 by default = 4096)."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"flzVgkcnvUWE","outputId":"445cecf1-58c7-40b1-e5cc-8cb6e74483ef"},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAABv0AAASlCAYAAACLEhU2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzde1yUdfr/8fdwEsXMA6iI4qoInjA06WBnMymzLQ+rZR4yt9xKO7KE5XqstKRdS/umlWJqpZum6a8Cy81WtzLLdsVCyROjgMagqS2gMMzvDx7MSpxmhhmGmXk9H499rHPPPZ/7uq/7Zubqvu6DwWKxWAQAAAAAAAAAAADAY/m5OwAAAAAAAAAAAAAA9UPTDwAAAAAAAAAAAPBwNP0AAAAAAAAAAAAAD0fTDwAAAAAAAAAAAPBwNP0AAAAAAAAAAAAAD0fTDwAAAAAAAAAAAPBwNP0AAAAAAAAAAAAAD0fTDwAAAAAAAAAAAPBwNP0AAAAAAAAAAAAAD0fTD/AggwYNUnJystPHnT17tiZNmlRpmslk0qOPPqorr7xSMTExWrlypXbt2qWYmBjt2rXLOl9ycrIGDRrk9Jhc5bfxnj59WnFxcfriiy/cGJXnc9W+CQCALaiR6o8aCQAA70ONVH/USO4zfvx4jR8/3t1hAB6Hph/gRHv27NHixYt19uxZd4dis2PHjmn9+vWaMmVKpenz58/Xjh079OCDD+qll17SddddZ9N4RUVFWrx4caWCrjFr1aqVRo0apVdeeaVe4yxevFgxMTE6deqUkyKrrDHsW40hBgCAZ/LE3xBqJM+okex18uRJLV68WJmZmXZ9zmg0aubMmbr55psVGxur/v376+6779bbb7+t4uJiF0UrHTx4UIsXL9bx48ddtowKnraPAoA3oEbyvN8fZ9dINf0vPz/fSRG7VmPZh0tKSrRq1SqNHDlS/fr1U79+/TRy5EitWrVKJSUlDo/b0Ou3dOlSffbZZw2yLHivAHcHAHiT77//XkuWLNHw4cPVokULp4+flpYmg8Hg1DFXrVqliIgIXXXVVZWmf/3117r55ps1efJk67QuXbpo7969CgwMrHG8oqIiLVmyRFOnTtWVV17p1Fhd5Z577tHq1av11Vdf6eqrr3Z3ONVy9b5V3xhcsW8CALwHNRI1UmPx888/a8mSJYqIiFDPnj1t+sz27dv12GOPKSgoSHfeeaeio6NVUlKi7777TgsXLtTBgwc1b948l8R78OBBLVmyRFdccYU6duzokmVU8MR9FAA8HTWSZ/7+OLNGmj17tpo1a1ZluruO/dirMRyvKiws1JQpU/TNN9/opptu0ogRI2QwGLRjxw49//zz+vTTT7Vs2bJq81yXhl6/ZcuWKSEhQYMHD3b5suC9aPoBblJWVqaSkhI1adLE5s8EBQU5NYaSkhJt2bJFd999d5X3CgoKqvyY+fn52RWvMxUWFjr042yLbt26KTo6Whs3bvSKA1qO7Fv15ex9EwDgu6iR7EON5FrHjh3TE088oQ4dOujtt99W27Ztre/de++9ys7O1vbt290XIADAZ1Aj2cdTaqSEhAS1bt3aSZH5pgULFuibb77RX/7yF40bN846fezYsXrnnXc0d+5cvfjii5ozZ44bowQaDrf3BJxk8eLFeumllyRJN998s/Vy/Ipb8cTExGju3LnavHmzbr/9dsXGxmrHjh2SpOXLl+vuu+/WlVdeqb59+2rEiBFKS0ursozf3ov9gw8+UExMjL777jvNnz9fV111leLi4vTII4/YdAul7777TqdPn9bAgQOrjGmxWPTOO+9Y10NStfdiv9jx48etxc6SJUusn128eLF1nkOHDunRRx/VFVdcodjYWI0YMULbtm2rNE5FDN98841mz56tq6++WjfccIP1/S+++EJjx45VXFyc+vXrpwcffFA//fRTlXg+++wzDRs2TLGxsRo2bJg+/fTTGnMxcOBAff7557JYLNZpJSUlOnTokH7++efa0lij8ePHa9iwYTp48KDGjx+vyy67TNddd53efPPNKvOuXr1at99+uy677DLFx8drxIgR2rJliyTH962attfx48cVExOjDz74oNL0Q4cO6bHHHtNVV12lvn37KiEhQX/7299siqG65wQcO3bMuq0vu+wyjR49uspBsYoYP/74Y73++uu6/vrrFRsbq4kTJyo7O9uRtAMAGhlqJGqk37K1Rrq4TvjrX/+qa665RnFxcfrTn/6kvLy8SvPW9Myii58Fs2vXLo0aNUqSNH36dOt2+G1NdLG33npLhYWFev755ys1/Cp07txZEydOtL4uLS3Va6+9psGDB6tPnz4aNGiQ/vrXv+rChQtV4p0yZYq+/fZbjRo1SrGxsbr55pu1adMm6zwffPCBHnvsMUnShAkTrPFevJ/Zss2Tk5PVr18/nTx5Ug8//LD69eunq666Si+++KLMZrMk2/ZRAIBzUSNRI9ni6aefVmxsrA4dOlRp+uTJkxUfH6+TJ09K+l8Odu/erZkzZ+rKK69U//79lZSUpDNnzlQZ19ac1OdYkSR9+OGHGjFihPr27asrrrhCTzzxRJU6TpLWrVunwYMHq2/fvho1apS+/fZbm/Jz4sQJrV+/XldddVWlhl+Fe++9V1deeaXWr1+vEydOSKr5uJikSvufPX+jCQkJ1v1z9+7dlcas6TmWFbd4vXjZhYWF2rhxo3VZrngmJ7wfV/oBTnLLLbfo6NGj+n//7/9p+vTpatWqlSRVOlvn66+/1ieffKJ7771XrVq1UkREhKTyWyMMGjRId9xxh0pKSvTRRx/pscce07Jly3TjjTfWueznnntOLVq00NSpU5WTk6O3335bc+fO1aJFi2r93Pfffy+DwaBevXpZp8XHx+ull15SUlKSrrnmGt15550256B169aaPXu2Zs+erVtuuUW33HKLJFl/wH766Sfdc889ateunR544AE1a9ZMn3zyiR555BEtXrzYOn+FOXPmqHXr1nrkkUdUWFgoSdq0aZOSk5N17bXXKjExUUVFRXrvvfc0duxYbdy40Xrbo507d2ratGmKiorSU089pdOnT2v69Olq3759tbH37t1bK1eu1E8//aTo6GhJ5c98GTp0qIYPH64FCxbYnIeLnTlzRn/84x91yy236LbbblN6erpSUlIUHR1tLUD//ve/67nnnlNCQoImTJig8+fP68CBA/rPf/6jO+64w+F9y577je/fv1/33nuvAgICNGbMGEVERMhoNOof//iHnnjiCZtiuJjJZNLdd9+toqIijR8/Xq1atdLGjRv10EMP6dVXX62yrd98800ZDAbdf//9+vXXX/XWW28pMTFR77//vl35BgA0PtRI1EjVsaVGqvD666/LYDDogQceUEFBgd5++23dd999+vDDDxUcHGzzMrt166ZHH31Ur776qsaMGaPLL79cktS/f/8aP/P555+rU6dOtc5zsRkzZmjjxo1KSEjQpEmTtHfvXi1btkyHDh3Sa6+9Vmne7OxsPfbYYxo1apSGDx+uDRs2KDk5Wb1791b37t0VHx+v8ePHa/Xq1frTn/6krl27WtdDsn2bS5LZbNbkyZPVt29fJSUl6auvvtKKFSvUqVMnjR07ts59FADgfNRI1EiSqm3IBQQEWK+afPbZZ/X111/r6aef1rp16+Tv76+1a9dq586deumll9SuXbtKn507d6512x45ckTvvfeecnNztXr1auutXm3NSX2PFb3++ut65ZVXdNttt2nUqFE6deqU1qxZo3vvvVebNm2yruP777+vmTNnql+/fpo4caKOHTumhx56SJdeeqnCw8Nrzd8///lPmc1m3XXXXTXOc9ddd2nXrl3asWOH/vCHP9iwVcrZ8je6e/duffzxxxo/fryCgoL03nvv6Y9//KPef/99635hq5deekkzZsxQ3759NXr0aElSZGSkXWMAkiQLAKd56623LNHR0ZZjx45VeS86OtrSo0cPy08//VTlvaKiokqvL1y4YBk2bJhlwoQJlabfdNNNlqefftr6esOGDZbo6GjLfffdZykrK7NOf+GFFyw9e/a0nD17ttZ4ExMTLVdccUW170VHR1vmzJlTadrXX39tiY6Otnz99dfWaU8//bTlpptusr4uKCiwREdHW1599dUqY06cONEybNgwy/nz563TysrKLGPGjLEMGTKkynrdc889ltLSUuv0X3/91TJgwADLjBkzKo2bn59vufzyyytNv/POOy3XXHNNpRzs3LnTEh0dXSneCnv27LFER0dbPvroI+u0Y8eOWaKjoyvlvCavvvqqJTo62lJQUGCdNm7cOEt0dLRl48aN1mnnz5+3XHPNNZZp06ZZpz300EOW22+/vdbxHdm3qtteF6/Xhg0brNPuvfdeS79+/Sw5OTmV5r14v6otht/um88//7wlOjrasnv3buu0X3/91TJo0CDLTTfdZDGbzZVivO222yrtF2+//bYlOjracuDAgVrzAgDwDNRI1EiO1EgVeb3uuuss586ds07/+OOPLdHR0Za3337bOu23+8DFyxo3bpz19d69e6vUQTU5d+6cJTo62vLQQw/VOa/FYrFkZmZaoqOjLc8++2yl6QsWLLBER0dbvvrqq0rx/rZWKigosPTp08eyYMEC67RPPvmk2nrOnm3+9NNPW6Kjoy1LliypNO9dd91lGT58eKXl17SPAgBcgxqJGqm6/yUkJFSad8eOHZbo6GjL//3f/1mMRqMlLi7O8vDDD1eapyIHw4cPt1y4cME6/c0337RER0dbPvvsM7tzUp9jRcePH7f07NnT8vrrr1eafuDAAUuvXr2s0y9cuGC5+uqrLXfeeWel7bxu3TpLdHR0pTquOhXHn3788cca5/nhhx8s0dHRlvnz51ssluqPi1X47b5Y199odHS0JSMjwzotJyfHEhsba3nkkUes0367z1eo2AcuFhcXZ9P+A9SG23sCDSg+Pl5RUVFVpl98hvKZM2d07tw5XX755frxxx9tGnf06NGVHsw8YMAAmc1m5eTk1Pq5X375RZdeeqmN0dfPL7/8oq+//lq33Xabfv31V506dUqnTp3S6dOnde211+ro0aPWWxJUGD16tPz9/a2vv/zyS509e1a333679fOnTp2Sn5+fLrvsMuvtIn7++WdlZmZq+PDhuuSSS6yfv+aaa6rNv/S/BySfPn3aOq1jx446cOCAw2ewS1KzZs0qneUWFBSk2NhYHTt2rNKyT5w4ob179zq8nJr2LVucOnVKu3fv1siRI9WhQ4dK7zn6wO8vvvhCffv21YABA6zTQkJCNGbMGOXk5OjgwYOV5h8xYkSlZw1UfO7iPAEAvBc1EjVSdTVShbvuukvNmze3vr711lsVFhamL774wuHl2+LXX3+VVF7D2KIinkmTJlWafv/991d6v0JUVFSlWql169bq0qWLTfWPrdv8Yvfcc0+l15dffnml228BABofaiTvr5EWL16s1NTUSv+bP39+pXmuvfZajRkzRq+99pqmTZumJk2aaO7cudWON2bMGAUGBlpf33PPPQoICLDWIbbmpL7Hij799FOVlZXptttuq7Sc0NBQde7c2bqcffv2qaCgQHfffXel40K/3RY1+e9//yup9nqt4r2K2s6Z+vXrpz59+lhfd+jQQTfffLN27txpvY060NC4vSfQgC6+xc7FPv/8c73++uvKzMys9LwPWxsuv/3xrSg8bLm9o+Wie4+7ktFolMVi0SuvvKJXXnml2nkKCgoq3Zbgt/k6evSoJFV6bsrFKg4G5ebmSip/xspvdenSpdYi2NEmV03at29fZcxLL71UBw4csL5+4IEH9OWXX+oPf/iDOnfurGuuuUbDhg2z3nLKFjXtW7aoOLBk720HapObm6vLLrusyvSK21Ll5uZWWl599mEAgOejRqJGkqrWSBV+G6/BYFDnzp3rPDBZXxV5qziYVJecnBz5+flVuQ1TWFiYWrRoUSXe6m5Xdemll1Z7m6/f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OlR33nmnoqOjdeHCBX3//fdKS0vTiBEjJEk9evTQ8OHDtW7dOp09e1bx8fHKyMjQxo0bNXjw4Epn3duqZ8+e8vf315tvvqlz584pKChIV111ldq0aWPzNrdVbfsoAMA1qJGokdLT06vd3tdcc41CQ0P11Vdf6d1339XUqVOt+8v8+fM1fvx4LVq0SElJSZU+V1JSovvuu0+33Xabjhw5onfffVeXX365br75ZrtzUp9jRZGRkXr88cf18ssvKycnR4MHD1ZISIiOHz+uzz77TKNHj9bkyZMVGBioxx9/XDNnztTEiRM1dOhQHT9+XB988IFNz/STpOnTp+vw4cOaM2eOduzYYb2ib+fOndq2bZuuuOIKJScnV/rMH/7wB73xxht69tln1adPH3377bfVXtVZ199odHS0Jk+erPHjxysoKMh6ov20adOsYwwdOlQpKSmaOnWqxo8fr+LiYr333nvq0qVLpYZhxfK++uorpaamqm3bturYsaMuu+wym/IAVKDpBzhR37599dhjj2nt2rXasWOHysrKtG3btlqLtauvvlrPP/+83nzzTb3wwgvq2LGjEhMTlZOT4/JiLSgoSHfccYfS0tL05JNPOm3c5557TvPmzdP8+fNVUlKiqVOnKjo6WlFRUdqwYYOWLFmijRs36pdfflHr1q3Vq1cvPfLIIzaNfccdd6ht27Z64403tHz5cl24cEHt2rXTgAEDrAdcpPLL+1955RUtWrRIL7/8siIjIzV//nxt27ZN33zzTaUxDx06pKysLD3zzDNOy4E9xowZoy1btig1NVWFhYVq3769xo8fr4cfftg6jyP7llReoJWWlmrt2rUKCgrSrbfeqqSkJA0bNqzSfD169NDf//53vfLKK3rvvfd0/vx5dejQQbfddptDMYSGhmrt2rVauHCh1qxZo/PnzysmJkZLly7VjTfeWL+EAQA8DjVSOWokx/zpT3/SgQMH9MYbb+i///2vrr76as2aNct65rVUftZ6cnKyUlNT9cILL6hPnz5aunSpXnzxxUpjBQYGasGCBfrrX/+q2bNnq7S0VPPnz6/1oNLNN9+szZs3a/ny5dq2bZvee+89BQUFKSYmRsnJyZWaj88995w6duyojRs36rPPPlNoaKimTJmiqVOnOrTuYWFhmjNnjpYtW6Znn31WZrNZq1atUps2bWze5vaoaR8F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kIdynp6HhoqbY1UAAAAONP127Nihhx56SD179lT//v0lSXv27NHtt9+upUuX6pprrnF6kLCN0WhUTI+eKi4qrHPe4KbNdGB/JsUvAAAu1FB1k9FoVMuWLbV06VJ9+eWXCg4O1rRp03TJJZcoLCxMAQHlJZ/BYFB4eLhyc3PtavplZGQ4JU5Hx8/KynLaskrO5EsGP02YMKHOeZsEB2vD+vVq376905ZfG1fn2ROQg3LkoRx5IAcVyEM58lAzjlUBAACUs7vp9/LLL+u+++5TYmJipekpKSlKSUmhkHIjk8mk4qJCdZmUouDwqBrnK847qCOpiTKZTDT9AABwoYaqm8xms3JychQVFaXExET9+OOPmjRpkt544w2njB8bGyt/f3+njHUxs9msjIyMOscvKytz2jJLi85KljKb66W2bdsqLi7Oacuvjq158GbkoBx5KEceyEEF8lDO0/NQEb8rcawKAACgnN1Nv0OHDmnRokVVpo8cOVJvv/22M2JCPQWHRykksre7wwAAwOc1VN0UHh4uPz8/3XHHHZKkXr16qWPHjsrJyVF+fr5KS0sVEBAgi8WivLw8dejQwa7x/f39XXqQsa7xXbFsW+slV6+7u5bVWJGDcuShHHkgBxXIQznyUDOOVQEAAJTzs/cDrVu3VmZmZpXpmZmZatOmjVOCAgAA8AYNVTe1bt1aV199tXbu3ClJOnbsmI4fP67LL79cvXv31ubNmyVJ6enpateunV239gQAAGjsOFYFAABQzu4r/f7whz9o5syZOnbsWKX7pL/55pu67777nB0fAACAx2rIumnOnDl65plnlJKSIoPBoLlz56pdu3aaM2eOpk+frmXLlikkJETz58936nK9XXUHEC8WGhrK7dIBAHAzjlUBAACUs7vp98gjj6h58+ZasWKF/vrXv0qS2rZtq6lTp2rChAlODxAAAMBTNWTd1KlTJ61evbrK9K5du2rdunVOXZYvKDmTLxn8NG7cuFrnC27aTAf2Z9L4AwDAjThWBQAAUM7upp/BYNB9992n++67T7/++qskqXnz5k4PDAAAwNNRN3mu0qKzkqVMXSalKDg8qtp5ivMO6khqokwmE00/AADciJoLAACgnN1Nv4tRQAEAANiGuskzBYdHKSSyt7vDAAAANqLmAgAAvszP3QEAAAAAAAAAAAAAqB+afgAAAAAAAAAAAICHo+kHAAAAAAAAAAAAeDi7mn4lJSWaOHGijh496qJwAAAAvAN1EwAAgOs5s+Y6f/68Hn74YSUkJOj3v/+9Jk2apOzsbElSQUGBJk+erCFDhmjYsGHavXt3vZcHAADgbHY1/QIDA3XgwAFXxQIAAOA1qJsAAABcz9k115gxY5SWlqbNmzfr5ptv1owZMyRJKSkpiouL09atW/XCCy/oqaeeUklJidOWCwAA4AwB9n7g97//vdavX6/ExERXxAMAAOA1qJsAAABcz1k1V5MmTXTDDTdYX1922WVasWKFJCktLU1bt26VJPXt21dt27bV7t27NXDgQJvHN5vN9YqvMfGmdWmszGZzlTxXvCb/9iFvjiN3jiFvjiN3NbM1J3Y3/cxms9577z19+eWX6tOnj5o2bVrp/enTp9s7JAAAgFeibgIAAHA9V9Vcq1at0qBBg3T69GmVlJQoLCzM+l5ERIRyc3PtGi8jI8OhOBqjrKwsd4fg9bKysuTnV/1N2rxpX2pI5M1x5M4x5M1x5M5xdjf9srKy1KtXL0nSkSNHKr1nMBicExUAAIAXoG4CAABwPVfUXEuXLpXRaNTKlStVXFxc7xglKTY2Vv7+/k4Zy93KysrcHYLXi46OVlxcXKVpZrNZGRkZXrUvNQTy5jhy5xjy5jhyV7OK3NTF7qbf6tWrHQoIAADA11A3AQAAuJ6za67ly5dr69atWrlypZo2baqmTZsqICBA+fn51qv9cnJy1KFDB7vG9ff395oDmN6yHo1ZbfuLN+1LDYm8OY7cOYa8OY7cOa76a8RtkJ2drR07dljPdrJYLE4LCgAAwJtQNwEAALieM2qu1NRUffTRR0pNTVWLFi2s02+99VatXbtWkrR3716dPHlS8fHxzgkcAADASey+0u/06dN6/PHHtWvXLhkMBm3dulWdOnXSM888o0svvVTJycmuiBMAAMDjUDcBAAC4nrNqrhMnTmjBggXq1KmTJkyYIEkKCgrS+++/r8TERCUlJWnIkCEKDAzUwoULFRgY6MrVAgAAsJvdV/rNnz9fAQEB2r59u4KDg63Thw4dqh07djg1OAAAAE9G3QQAAOB6zqq52rdvrwMHDuizzz7Thx9+qA8//FDvv/++JCk0NFQrVqzQ1q1b9dFHH+mqq65y+noAAADUl91X+v3rX//S8uXL1b59+0rTf/e73yk3N9dpgQEAAHg66iYAAADXo+aCN8rMzKwyzWw2KysrS2VlZfL391doaKgiIyPdEB0AoLGyu+lXWFhY6aypCr/88ouCgoKcEhQAAIA3oG4CAABwPWoueJOSM/mSwU/jxo2rc97gps10YH8mjT8AgJXdTb8BAwZo06ZNevzxx63TysrK9NZbb+nKK690ZmwAAAAejboJAADA9ai54E1Ki85KljJ1mZSi4PCoGucrzjuoI6mJMplMNP0AAFZ2N/3+/Oc/67777tO+fftUUlKihQsX6uDBgzpz5ozee+89V8QI+KwTJ05oz5498vf3r3U+bucAAI0TdRMAAIDrUXPBGwWHRykksre7wwAAeBi7m37R0dFKT0/XmjVrFBISosLCQt1yyy2699571bZtW1fECPgko9GokaNG6XxxcZ3zcjsHAGicqJsAAABcj5oLAACgnN1NP0m65JJL9NBDDzk7FgAXMZlMOl9czO0cAMDDUTcBAAC4HjUXAACAg02/M2fOaP369Tp06JAkKSoqSiNGjFDLli2dGRsAcTsHAPB01E0AAACuR80FAAAg+dn7gd27d2vQoEFavXq1zp49q7Nnz2r16tW6+eabtXv3blfECAAA4JGomwAAAFyPmgsAAKCc3Vf6zZ07V0OHDtXs2bPl7+8vSTKbzZozZ47mzp2rLVu2OD1IAAAAT0TdBAAA4HrUXAAAAOXsvtIvOztbkyZNshZRkuTv76/77rtP2dnZdo11//3364477tCdd96psWPH6scff5QkHT16VHfffbcSEhI0cuRI/fTTT/aGCQAA4HbOrJsAAABQPWouAACAcnY3/Xr16qXDhw9XmX748GH16NHDrrEWLVqkLVu26MMPP9SkSZOUnJwsSZo5c6ZGjx6t9PR0PfDAA9bpAAAAnsSZdRMAAACqR80FAABQzqbbe+7fv9/67wkTJuj5559Xdna2LrvsMknSf/7zH73zzjtKTEy0a+EtWrSw/vvcuXMyGAwqKCjQvn37tGLFCklSQkKC5s2bp+zsbHXu3Nnmsc1ms12xuIu9cZrN5ho/48yxJKmsrMxpYzXm9bRnvLrGciZ78i81bGy+oiKf5NV92Abu5cv5r886u6puAgAAwP9QcwEAAFRlU9PvrrvuksFgkMVisU5buHBhlfmeeuopDR061K4AkpKStGvXLknSG2+8oby8PIWFhSkg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9NZbb2nAgAE2bTsAAFB/1FXUVQAAoP6oqaipANiPph8Aq1tuuUU9e/bUq6++Wq9xWrZsqRkzZqhr164aNWqUunTpouLiYv3pT3/S7373O02ZMkWBgYH67rvvKn3u3nvvVUJCgrp166bZs2frkksu0fr16yVJa9asUa9evfTkk0+qW7du6tWrl1544QXt2rVLR44csY7xu9/9TklJSeratau6du1abXzLly/XAw88oNtvv11du3bVn//8Z/Xo0UNvv/22JCksLEz+/v5q1qyZwsLCFBISUmWMSy65RIGBgQoODlZYWJj1M++++67at2+vmTNnqlu3bho8eLCmTZumFStWqKysrNIY77zzjubMmaOlS5fqpptukiR9/PHHKisr0/PPP6+YmBh169ZN8+fPV15eXqWzyS699FLrMm666SbdcMMN+uqrrySVn33VtGlT3XjjjYqIiFCvXr00YcIEezcjAACoB+oq6ioAAFB/1FTUVADsE+DuAAA0LomJiZo4cWKNtxuwRVRUlPz8/ndOQWhoqLp372597e/vr5YtW6qgoKDS5/r162f9d0BAgPr06aPDhw9Lkvbv369du3ZVmqeC0WhUly5dJEm9e/euNbZff/1VP//8s/r3719pev/+/bV//34b17Bmhw4dUr9+/WQwGKzTLr/8chUWFurEiRPq0KGDJCk9PV2nTp3Su+++q759+1rn3b9/v4xGY5X4zp8/L6PRaH0dFRUlf39/6+uwsDBlZWVJKr/9RYcOHTR48GBdd911uu6663TLLbeoadOm9V4/AABgO+qq+qGuAgAAEjVVfVFTAb6Fph+ASuLj43Xttdfq5Zdf1ogRIyq9ZzAYZLFYKk2r7v7fAQGVv1oMBkO10357NlFtCgsLddNNNykxMbHKe2FhYdZ/e0qx0KtXL/3www/asGGDYmNjrYVXYWGhevfurZSUlCqfad26tfXf1eWzYts0b95cGzdu1DfffKOdO3fq1Vdf1ZIlS7R+/Xq1aNHChWsFAAAuRl3VMKirAADwbtRUDYOaCvAO3N4TQBVPPfWUPv/8c33//feVprdu3Vomk6lSMZWZmem05f773/+2/ru0tFQ//PCD9bYHvXv31k8//aSIiAh17ty50v+aNWtm8zKaN2+utm3bas+ePZWm79mzR1FRUXbFGxgYWKUY7Natm77//vtKOfruu+8U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depUSdItt9xiv13/0udSf/zxx7r77rvVrFkztWnTRiNGjNDBgwcd5tm9e7ceffRRtW/fXtHR0brppps0YsQI/f3335KkqKgoZWRkaPny5fZ9XPrs9Lx88cUXuv7662WxWOzboqKi9NFHHykjI8M+T84jkC5/Hvvl+vXrpw0bNmj//v3298bGxtpfP3funKZNm6ZOnTqpadOmuvnmmzV16lSdO3fOYZ6oqChNmDBBK1euVJcuXRQdHa2NGzdKkg4fPqzRo0fbb9nv0qWLli5dmiuWQ4cO6ZFHHlFMTIzatm2rl156Kdd+crRr104ZGRn69ttvHbYfOHBAqampBeYwPznPH//xxx81efJkXX/99YqJidGwYcN0/Phxh7FJSUkaNGiQrrvuOjVr1kyxsbEaPXq0pOzHPrRt21aSlJiYaM9rzi3/8fHxat68udLS0jR48GA1b95cI0eOlJT/evXr10/9+vVz2Hb27FlNnz5dcXFxio6O1g033KDhw4crLS2t0Bjy+ky/Cxcu6M0331THjh3tj1b497//nWsNYmNjNWTIEP3www/q2bOnoqOjdcstt2jFihVFSTsAwIdQI1EjFVYj5dQJmzZt0p133qno6GjdfvvtWrduncO4/D5f+PLPg4mNjdUff/yh77//3r4Ol9dEl/r555+1YcMG9ezZM1fDT8q+mDlq1CiHbd9995169+6tmJgYtWrVSkOHDs2Vq5x49+zZo/j4eLVq1UotW7bU6NGjdebMGfu4ws5dZ9Y85/OIVq9erRkzZuimm25SdHS0BgwYoD179tjHFXaOAgBKBvVRYNZHefnuu+/UsGFDvfHGGw7bV61apaioKL333nv2bZfmIOe6zt13362tW7fmmtfZnBTnOpEkpaam6rHHHlObNm3s8XzxxRe59vPHH3+of//+atasmW666Sb95z//UVZWllM5+s9//iOLxaIpU6Y4NPwkKSIiQk8//bSOHj2qDz74wL49r2tiUvb1tZzzz9lrcXv37tWgQYMUExOjG264QYmJiTIMwz5nfp9jmfOI15zvlfj4eC1atEiSHB71ChQXt2gAJunUqZN2796tTz75RKNHj1blypUlSVWqVJEkzZgxQ2+88YY6d+6snj176vjx41q4cKH69OmjFStWqGLFijp37pwGDRqkc+fOqW/fvgoLC9Phw4e1YcMGnTp1SldccYWmTp2qMWPGqFmzZurVq5ek7F9w+Tl8+LAOHDigxo0bO2yfOnWqPvzwQ23fvl2TJk2SJLVo0cKpY3344Yf1999/69ChQ/amVc5fPWVlZWno0KH68ccf1atXLzVo0EApKSmaN2+edu/erf/85z8Oc23evFmfffaZ+vTpo8qVK6t27dpKT09Xr169ZLFY1KdPH1WpUkXffPONnnvuOZ0+fVr333+/JCkzM1MDBgzQwYMH1a9fP1WvXl0ff/yxNm/enGfckZGRCg0N1bZt29SpUyf79lGjRun777/X77//7tTx52XSpEmqWLGihg8frv3792vevHmaMGGCXn/9dUnZfxE3aNAgVa5cWQ899JAqVqyoffv2af369ZKyz5Nx48Zp3Lhx6tSpkz2+S3/5X7hwQYMGDVLLli01atQohYaGuhSjzWbTkCFD9N1336lLly7q37+//vnnH/33v/9VSkqK2rVrV2gMlxszZoyWL1+uuLg4DRw4UNu3b9esWbOUmpqqN99802Hsnj179Pjjj6tnz57q3r27li1bpvj4eDVp0kTXXHONS8cCAPAd1EjUSAXVSDl2796tESNG6N5777XXCY8//rhmz56t9u3bu7TPZ599VhMnTlS5cuX08MMPS5LCwsLyHf/ll19KktN/hf/tt99q8ODBqlOnjoYPH67MzEwtXLhQ9913nz766CPVqVPHYfwTTzyhOnXq6Mknn9Rvv/2mJUuWqEqVKnr66aclqcBz19k1z/H222/LYrHogQce0OnTpzV79myNHDlSS5YskVTwOQoAKDnUR4FTH505cybXHzxJUsWKFRUSEqK2bduqd+/eeuutt9SxY0c1adJER44c0aRJk9SuXTvdd999Du/bunWrVq9erX79+ql06dJavHixHnzwQS1ZskRWq1WS8/VDca8T/fHHH7rvvvtUo0YNDR48WOXKldNnn32mYcOGafr06fbxR48eVf/+/WWz2fTQQw+pbNmy+vDDD526S/PMmTPavHmzWrZsqbp16+Y55vbbb9fzzz+vr776Sg899JBT6yI5dy3OZrPpwQcf1LXXXqunn35aGzdu1PTp02Wz2fT44487vS9Juueee3TkyBH997//tTf9AbcwAJhm9uzZhtVqNfbu3euwfd++fUajRo2MGTNmOGz//fffjcaNG9u3//bbb4bVajU+++yzAvcTExNjjBo1yqmYvv32W8NqtRpffvllrtdGjRplxMTE5NreoUMHh/k3b95sWK1WY/PmzfZtDz30kNGhQ4dc712xYoXRsGFDY+vWrQ7bFy9ebFitVuPHH3+0b7NarUbDhg2NP/74w2Hss88+a7Rv3944fvy4w/YRI0YYLVu2NM6cOWMYhmHMnTvXsFqtxurVq+1jMjIyjE6dOuWKN8ett95qPPjggw7b+vbta1it1lxjL7d3717DarUas2fPtm9btmyZYbVajfvvv9/Iysqyb3/ppZeMRo0aGadOnTIMwzDWr19vWK1WY/v27fnOf+zYMcNqtRrTpk3L9dqoUaMMq9VqJCQk5Hrt8vW69Lj69u1r/3rp0qWG1Wo15syZk2tsTuwFxTBt2jSHPCUnJxtWq9V47rnnHMZNmTLFsFqtxnfffecQo9VqdTgvjh07ZjRt2tSYMmVKrn0BAPwLNRI1Uo7LayTDuFgnrF271r7t77//Ntq3b2/cdddd9m2X1yKX7+vS86tLly4OdVBBhg0bZlitVuPkyZNOjb/zzjuNtm3bGidOnLBvS05ONho2bGg888wzueIdPXp0rv21adPGYVt+566za55zLnbu3Nk4e/asfdy8efMMq9Vq/P777/Zt+Z2jAICSRX0UGPVRfv9++umnXHF06dLFOHv2rPHQQw8ZLVq0MPbv3+8wZ857k5KS7Nv2799vREdHG8OGDXM5J8W9TjRgwACja9euDrVHVlaWcc899xi33nqrfduLL75oWK1W4+eff7ZvO3bsmNGyZcs8vwculXPtadKkSfmOMQzD6Natm0N9dfk1sRyjRo1yOBeduRY3ceJEh+N76KGHjCZNmhjHjh0zDCPvc94wLp4Dy5Yts28bP368U+cP4Aoe7wl4wPr165WVlaXOnTvr+PHj9n9hYWGqV6+e/fbvChUqSJI2bdrk8Mif4jhx4oSk7L8gKglr1qxRgwYNdPXVVzsc6/XXXy9JuW51b926tSIjI+1fG4ahdevWKTY2VoZhOMxxww036O+//9avv/4qSfrmm29UrVo13Xbbbfb3ly1b1v7Xa3m58sor7TnJsWDBgmL9Bbsk+19Q5WjVqpVsNpv2798vSbriiiskSRs2bND58+eLvJ/L/8LLFevWrVPlypXVt2/fXK9dGruzvv76a0nSwIEDHbY/8MADDq/niIyMVKtWrexfV6lSRfXr19fevXtd3jcAwD9QI1Ej5ahevbrDX9FXqFBBd911l3777TcdPXq0WDEU5vTp05Kcu+PtyJEjSk5OVvfu3VWpUiX79oYNG6pdu3a56h9Juvfeex2+btWqlf766y/7fvPjyprnuPvuux0+Wymn9qLeAgDfQX3kX/XRPffcozlz5uT6d+lxlC1bVpMnT1Zqaqr69OmjDRs2aPTo0apVq1au+Zo3b66mTZvav65Vq5ZuueUWbdq0STabzaWcFOc60V9//aXNmzerc+fOOn36tH0fJ06c0A033KDdu3fr8OHDkrKvD8XExKhZs2b291epUkXdunUrNH/O1mnly5cvtLYqqj59+tj/O+fuyfPnz+u7774zZX+Aq3i8J+ABu3fvlmEYuvXWW/N8PSQk+1uzbt26GjhwoObMmaNVq1apVatWio2N1R133GFvGhWVccmzps20Z88epaam2p+Jfbljx445fH3544+OHz+uU6dO6YMPPnB4FvflYyRp//79qlevXq5CpH79+vnGZxhGkRpchbm8EMspkE+dOiVJatOmjeLi4pSYmKi5c+eqTZs26tixo7p16+b0h16HhISoZs2aRY4xLS1N9evXt59vxbV//34FBQXlejRItWrVVLFixVwX88LDw3PNceWVV+rkyZNuiQcA4HuokS4K1BopR17xXnXVVZKyj6datWpujy1HzkXTf/75p9CLnAcOHJCUdy4bNGigTZs2KSMjQ+XKlbNvzy8HJ0+etO87L66seWH7ujzfAADvRX10kT/UR/Xq1VO7du0KHdeyZUvdd999WrRokW644Qb17Nkz3/kud9VVV9kfIxoUFOR0TopznSgtLU2GYeiNN97I9XmEOY4dO6YaNWrowIEDuvbaa3O9XlDuc1xapxXkn3/+MeWR5UFBQbkeK5oT9+XXvQBPoekHeEBWVpYsFovefvttBQcH53r90osC8fHx6t69u7744gv997//1aRJkzRr1ix9+OGHRWr45DwXvqT+Rz8rK0tWq9X+nPbLXX4Ml38uXc6H+N5xxx3q3r17nnMU50NuT506lWeBVFxBQXnfSJ1TKFssFk2bNk3/+9//9NVXX2njxo169tlnNWfOHH3wwQdOFSalS5fOdz95sdlseZ5v7uZsAVwSsQAAfAs10kWBWiO5Ir+aw2azuTzXpa6++mpJUkpKisNTCdylqDkoypq7M98AAM+gPrrIX+ujvJw7d07ff/+9pOw79M+cOaOyZcu6PI/ZObl8Pw888IBuvPHGPMcU9PmRzoqIiFBISEiBd1eeO3dOf/75p8MdkPkpbt2Yl/xq1JwcAWaj6QeYKL8f8hERETIMQ3Xq1HHqr1iioqIUFRWlRx55RNu2bdN9992nxYsXa8SIES7HlHMRY9++fS6/tyAFHeuOHTvUtm3bIv01VJUqVVS+fHllZWUV+pdQtWvXVkpKSq6/vPrzzz/zHH/hwgUdPHhQsbGxLsflLjExMYqJidGIESO0atUqjRw5UqtXr9a//vWvIv/12JVXXplnQX7gwAGHv0aKiIjQzz//rPPnz6tUqVJ5zuVKDLVr11ZWVpb27NmjBg0a2Lenp6fr1KlTql27tgtHAQDwZ9RI1EiF2bNnT654d+/eLUn2muLSu9YuvSMv5+67S7mS4w4dOmjWrFlauXJloU2/nDvp8srlrl27VLlyZYeLscXhypq7wow7OgEArqM+oj661LRp05SamqpRo0YpISFBr776qsaMGZNr3J49e3Jt2717t8qWLasqVapIktM5Kc51opzrTaVKlSp0P7Vq1coz7vxyf6ly5crpuuuu0+bNm7V///48rzWtXr1a586dU4cOHezbrrzyyjwfb3553VjYeZeVlaW9e/c6fC/mxH15jfr33387vDevOwGpw2AGPtMPMFHOX+Bc/kP+1ltvVXBwsBITE3P9la1hGPbng58+fVoXLlxweN1qtSooKEjnzp2zbytXrpzTf3VVo0YNhYeH65dffnH5eApStmzZXMcpSZ07d9bhw4f14Ycf5notMzNTGRkZBc4bHBysuLg4rV27VikpKblev/QRRjfddJOOHDmiNWvW2LedOXMmz31L0s6dO3X27Fk1b97cYfuBAweUmppaYFzFdfLkyVxr36hRI0myr23O+ePqX9TVrVtXP//8s8M58tVXX+ngwYMO42699VadOHFCixYtyjVHTmyuxHDzzTdLkubNm+ewfc6cOQ6vAwBAjUSNVJgjR45o/fr19q9Pnz6tFStWqFGjRvZHe+b8tfjWrVvt4zIyMrRixYpc85UtW9bpc6F58+a68cYbtWTJEn3++ee5Xj937pxefvllSdmfPdioUSOtWLHCYf6UlBT997//LXL9k9e568qauyK/cxQAULKoj6iPcvz888969913NWDAAD3wwAMaNGiQFi5caL/z71I//fSTw2f6Hjx4UF988YXat2+v4OBgl3JSnOtEVatWVZs2bfTBBx/oyJEjBe7n5ptv1v/+9z9t377d4fVVq1blm5NLDR06VIZhKD4+XpmZmQ6v7d27VwkJCapWrZruuece+/a6detq165dDnHs2LFD27Ztc3i/M9fBLs2PYRhatGiRSpUqZX8sbe3atRUcHOxQo0rS4sWLc81V1Gt/QEG40w8wUZMmTSRJr732mm6//XaVKlVKHTp0UEREhJ544gm9+uqr2r9/vzp27Kjy5ctr3759+vzzz9WrVy8NGjRImzdv1oQJE3Tbbbfpqquuks1m08cff2z/hX3pfr777jvNmTNH1atXV506dfJ8NnaOW265RevXr3frZ7U0adJEq1ev1uTJkxUdHa1y5copNjZWd955pz777DO98MIL2rJli1q0aCGbzaZdu3ZpzZo1mj17tqKjowuc+6mnntKWLVvUq1cv/etf/1JkZKROnjypX3/9Vd9995296OnVq5cWLVqkUaNG6ddff1W1atX08ccf53rcQ45vv/1WZcuWzfUXSKNGjdL333/v0gcxu2r58uVavHixOnbsqIiICP3zzz/68MMPVaFCBd10002Ssh9TERkZqc8++0xXXXWVKlWqpGuuuUZWq7XAuf/1r39p7dq1evDBB9W5c2elpaVp1apVuR6jcNddd2nFihWaPHmytm/frpYtW+rMmTP67rvvdN9996ljx44uxdCwYUN1795dH3zwgU6dOqXWrVsrKSlJy5cvV8eOHe0fvA0AADUSNVJhrrrqKj333HNKSkpS1apVtWzZMh07dkyTJ0+2j2nfvr1q1aql5557Trt27VJwcLCWLVumypUr5/qr7SZNmmjx4sX6z3/+o3r16qlKlSr5fl6QJE2dOlUPPPCAhg8frg4dOqht27YqW7as9uzZo9WrV+vIkSMaNWqUJOmZZ57R4MGDdc8996hnz57KzMzUwoULdcUVV2j48OFFOv78zl1n19zVfeV1jgIAShb1UWDUR7/99ps+/vjjXNsjIiLUvHlznT17VqNGjVK9evXsd2c++uij+uqrrzR69GitWrXK4SkCVqtVgwYNUr9+/VS6dGl7Y+nRRx91OSfFvU70wgsvqHfv3urWrZt69eqlunXrKj09Xf/73/906NAhrVy5UpL04IMP6uOPP9aDDz6o/v37q2zZsvrwww9Vq1Ytp/LYunVrjRo1SpMnT7Y/trRatWratWuXlixZoqysLL311lu68sor7e/p2bOn5s6dq0GDBqlnz546duyY3n//fUVGRjp8PmBh18HKlCmjjRs3atSoUWrWrJk2btyoDRs26OGHH7bfWXnFFVfotttu08KFC2WxWFS3bl1t2LAh12dSShe/7ydNmqQbbrhBwcHB6tKlS6E5AApC0w8wUbNmzfT444/r/fff18aNG5WVlaUvvvhC5cqV00MPPaSrrrpKc+fO1Ztvvikp+9nk7du3t/9PdlRUlG644QZ99dVXOnz4sMqWLauoqCi9/fbbiomJse8nPj5eY8eO1euvv67MzEx17969wIKtR48eWrhwoX788Ue3fU5J7969lZycrI8++khz585V7dq1FRsbq6CgIL355puaO3euPv74Y61fv15ly5ZVnTp11K9fP6ceTREWFqYlS5bozTff1Pr167V48WJVqlRJkZGRGjlypH1c2bJlNXfuXE2cOFELFy5UaGiounXrpptuukkPPvhgrnnXrFmjTp062T8EuCS1adNGSUlJWr16tdLT03XFFVeoWbNmSkhIcHgE56RJkzRx4kRNnjxZ58+f1/Dhwwtt+t14442Kj4/XnDlz9NJLL6lp06aaOXOm/S/ScwQHB+vtt9/WjBkz9Mknn2jdunWqVKmSWrRo4fA8d1dimDRpkurUqaPly5fr888/V1hYmIYMGVLkC14AAP9EjUSNVJirrrpKzz//vKZOnao///xTderU0WuvvebwGTGlSpVSYmKixo8frzfeeEPVqlXTgAEDVLFixVyfBTRs2DAdOHBAs2fP1j///KM2bdoU2PSrUqWK3n//fb333ntavXq1XnvtNZ0/f96+fv3797ePbdeunWbPnq1p06Zp2rRpCgkJUevWrfX000871HWuyO/cdXbNXZHfOQoAKFnUR4FRH33yySf65JNPcm3v3r27mjdvrn//+99KS0vT+++/rzJlykiSSpcurSlTpuiee+7R1KlTNW7cOPv7WrdurZiYGL355ps6cOCAIiMjNXnyZDVs2NDlnBT3OlFkZKSWLVumxMRELV++XH/99ZeqVKmixo0ba9iwYfb3V69eXfPnz9ekSZP01ltvqVKlSrr33ntVvXp1Pffcc07l8f7771fT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VXP98MMP2r9/v+Li4iRJR48e1c6dO3XkyBH17t3bqTmCg4N94mJjzt1xBT1O/Myh1JIMqUjcke+c9zv7aHVn9+kr54KvIr/mIbfmIr/mCpT8utz0++9//6t33nkn163qV111lQ4cOOC2wAAAAPwZNRUAAID53FVz9e7d26G5169fPw0YMEAdO3Z0W6wAAADF5fKDrTMyMhQaGppr+19//aXSpUu7JSgAAAB/R00FAABgPmouAAAQSFxu+rVq1UorVqxw2JaVlaXZs2fruuuuc1dcAAAAfo2aCgAAwHxm1VwLFizgLj8AAOB1XH6859NPP637779fv/zyi86fP69XXnlFO3fu1MmTJ7V48WIzYgQAAPA71FQAAADmo+YCAACBxOWmn9Vq1dq1a7Vw4UKVL19eGRkZ6tSpk/r06aPq1aubESMAAIDfoaYCAAAwHzUXAAAIJC43/STpiiuu0NChQ90dCwAAQEChpgIAADAfNRcAAAgURWr6nTx5UkuXLlVqaqokKTIyUnfffbcqVarkztgAAAD8GjUVAACA+ai5AABAoAhy9Q1bt25VbGysFixYoFOnTunUqVNasGCBbrnlFm3dutXtAS5btkxRUVH6/PPP3T43AACAp5R0TQUAABCIqLkAAEAgcflOvwkTJuj222/XuHHjFBwcLEmy2WwaP368JkyYoFWrVrktuH379mnJkiWKiYlx25wAAADeoCRrKgAAgEBFzQUAAAKJy02/PXv26I033rAXSpIUHBys+++/XytWrHBbYFlZWRozZozGjBmjl19+2eX322w2t8ViJlfjtNls+b7HnXO5Op8753JmvrS0NKWnpxc6T1hYmCIiIgrdl7viKik5MXhDLMjGmngX1sP7+NqalEScJVVTAQAABDJqLgAAEEhcbvo1btxYu3bt0tVXX+2wfdeuXWrYsKHbApszZ45atGihpk2bFun9SUlJbovFTCkpKS6PDwrK+6ms7pzL1fncOVdh8x06dEg9evbU2czMQucpExqqZUuXqmbNmm6JrbDjLGm+cp4HEtbEu7Ae3oc1uaikaioAAIBARs0FAAACiVNNvx07dtj/u3///nrxxRe1Z88eXXvttZKkn3/+WYsWLdLIkSPdElRKSorWrVunhQsXFnmO6Ohoh7/i8lZZWVkujbdarfk+7tSdc7k6nzvnKmy+bdu26WxmpuoP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FBjb6dOndeTIEbVo0cJhe4sWLbRjxw4njzB/qampat68uSwWi31by5YtlZGRoUOHDqlWrVqSpLVr1+r48eN677331KxZM/vYHTt2KC0tLVd8Z8+eVVpamv3ryMhIBQcH27+uVq2aUlJSJGU//qJWrVrq2LGjbrzxRt14443q1KmTypYtW+zjAwAAzqOuKh7qKgAAIFFTFRc1FRBYaPoBcNC6dWvdcMMNevXVV3X33Xc7vGaxWGQYhsO2vJ7/HRLi+KPFYrHkue3yvyYqSEZGhjp06KCRI0fmeq1atWr2//aVYqFx48b69ddftWzZMkVHR9sLr4yMDDVp0kQJCQm53lOlShX7f+eVz5y1qVChgpYvX67vv/9emzZt0rRp05SYmKilS5eqYsWKJh4VAAC4FHVVyaCuAgDAv1FTlQxqKsA/8HhPALk89dRT+uqrr/TTTz85bK9SpYrS09Mdiqnk5GS37fd///uf/b8vXLigX3/91f7YgyZNmuiPP/5Q7dq1Va9ePYd/5cqVc3ofFSpUUPXq1bVt2zaH7du2bVNkZKRL8ZYqVSpXMdigQQP99NNPDjn68ccfVb58edWsWdO+rW7dupo/f76++OILTZw40b69SZMm2rNnj6pWrZrrOK+44gqnYwsJCVG7du30zDPPaOXKldq/f782b97s0vEBAIDio65yDnUVAAAoCDWVc6ipAND0A5BLVFSUunXrpgULFjhsv+6663T8+HG9/fbbSktL06JFi7Rx40a37fe9997T+vXrlZqaqgkTJujkyZPq0aOHJKl37946efKknnzySW3fvl1paWnauHGjRo8eLZvN5tJ+Bg0apLffflurV6/Wrl27lJCQoB07drj8LPHatWvr559/1r59+3T8+HFlZWWpd+/eOnTokCZOnKjU1FR9/vnnmj59ugYOHOjwGAlJql+/vubPn69169bpxRdflCR169ZNlStX1tChQ/XDDz9o79692rJliyZNmuT0h1Z/9dVXmj9/vpKTk7V//36tWLFCWVlZ9sdKAACAkkNd5RzqKgAAUBBqKudQUwHg8Z4A8vTYY49p9erVDtsaNGigF154QbNmzdKMGTN066236oEHHtCHH37oln0+9dRTeuutt5ScnKx69eppxowZ9scE1KhRQ4sXL1ZCQoIGDRqkc+fOqVatWrrxxhtzFSiF6d+/v06fPq0pU6bo+PHjatCggf7zn//oqquucmmeBx54QPHx8erSpYsyMzP1xRdfqE6dOnrrrbc0depUffjhh6pUqZJ69uypoUOH5jnH1VdfrXnz5qlfv34KDg5WfHy8Fi5cqISEBA0fPlz//POPatSoobZt26pChQpOxXXFFVdo/fr1SkxM1NmzZ1WvXj29+uqrDs+qBwAAJYe6qnDUVQAAoDDUVIWjpgJgMS5/6DEAAAAAAAAAAAAAn8LjPQEAAAAAAAAAAAAfR9MPAAAAAAAAAAAA8HE0/QAAAAAAAAAAAAAfR9MPAAAAAAAAAAAA8HE0/QAAAAAAAAAAAAAfR9MPAAAAAAAAAAAA8HE0/QAAAAAAAAAAAAAfR9MPAAAAAAAAAAAA8HE0/QAAAAAAAAAAAAAfR9MPAAAAAAAAAAAA8HE0/QAAAAAAAAAAAAAfR9MPAAAAAAAAAAAA8HE0/QAAAAAAAAAAAAAfR9MPAAAAAAAAAAAA8HE0/QAAAAAAAAAAAAAfR9MPAAAAAAAAAAAA8HE0/QAAAAAAAAAAAAAfR9MP8FEfffSRoqKitG/fPqfGjxs3TgMHDnTYlp6erscee0zXXXedoqKiNHfuXG3ZskVRUVHasmWLfVx8fLxiY2PdGr+ZLo/3xIkTiomJ0ddff+3BqHxfbGys4uPjPR0GAAAFokbKHzUSAACBixopf9RIntOvXz/169fP02EAfoWmHxAA9u7dq6VLl2rIkCEO2ydPnqyNGzfqoYce0tSpU3XjjTc6Nd+ZM2c0ffp0h4LOm1WuXFk9e/bUG2+8Uax5pk+frqioKB0/ftxNkTnatm2bpk+frlOnTpkyv6/EAABASaFG8o0ayVWHDx/W9OnTlZyc7NL70tLSNHbsWN1yyy2Kjo5WixYtdO+992revHnKzMw0KVpp586dmj59utMXYYvD185RAIBnUCO5t0bK79/Ro0fdFLG5vOVa0fnz5zV//nz16NFDzZs3V/PmzdWjRw/Nnz9f58+fL/K8JX18M2fO1Oeff14i+0JgCvF0AADMN3/+fNWuXVvXX3+9w/bNmzfrlltu0aBBg+zb6tevr+3bt6tUqVL5znfmzBklJiZq+PDhuu6660yL253uu+8+LViwQN99953atm3r6XDy9NNPPykxMVHdu3dXxYoVvS6GNWvWyGKxeCQuAADMQI3kGzWSq44cOaLExETVrl1bjRo1cuo9GzZs0OOPP67SpUvrzjvvlNVq1fnz5/Xjjz/qlVde0c6dOzVx4kRT4t25c6cSExPVpk0b1alTx5R95PDFcxQAUPKokdxbI40bN07lypXLtd1T135c5Q3XqzIyMjRkyBB9//336tChg+6++25ZLBZt3LhRL774otavX69Zs2blmefClPTxzZo1S3FxcerYsaPp+0JgoukH+Lnz589r1apVuvfee3O9duzYsVy/zIKCglSmTJmSCs9BRkZGkX45O6NBgwayWq1avny5X1zQysrK0vnz50t0rUqXLl1i+wIAwGzUSNn8rUYqir1792rEiBGqVauW5s2bp+rVq9tf69Onj/bs2aMNGzZ4LkAAAEoQNVI2d9ZIcXFxqlKlipsiC0xTpkzR999/r+eff159+/a1b+/du7cWLVqkCRMm6OWXX9b48eM9GCXgHXi8J1AC1qxZo6ioKH3//fe5Xnv//fcVFRWllJQUSdKOHTsUHx9vf6xQ+/btNXr0aJ04caJI+/7xxx914sQJtWvXzr4t5znuhmFo0aJF9scKSMrzWeyX2rdvn73YSUxMtL93+vTp9jGpqal67LHH1KZNG0VHR+vuu+/WF1984TBPTgzff/+9xo0bp7Zt2+rmm2+2v/7111+rd+/eiomJUfPmzfXQQw/pjz/+yBXP559/rq5duyo6Olpdu3bV+vXr881Fu3bt9NVXX8kwDPu28+fPKzU1VUeOHCkojfnq16+funbtqp07d6pfv3669tprdeONN+rtt9/ONXbBggXq0qWLrr32WrVu3Vp33323Vq1aJSn7kQ9Tp06VJN1yyy32vOY85ikqKkoTJkzQypUr1aVLF0VHR2vjxo35rte+ffsUFRWljz76yGF7amqqHn/8cV1//fVq1qyZ4uLi9NprrzkVQ16f6bd37177Wl977bXq1atXrotiOTGuXr1aM2bM0E033aTo6GgNGDBAe/bsKUraAQB+ghqJGunSOuHf//632rdvr5iYGD388MM6ePCgw9j8Pl/40s+C2bJli3r27ClJGj16tH0dLq+JLjV79mxlZGToxRdfdGj45ahXr54GDBhg//rChQt688031bFjRzVt2lSxsbH697//rXPnzuWKd8iQIfrhhx/Us2dPRUdH65ZbbtGKFSvsYz766CM9/vjjkqT+/fvb4730PHNmzePj49W8eXMdPnxYjzzyiJo3b67rr79eL7/8smw2myTnzlEAgHegRvLfGikvo0aNUnR0tFJTUx22Dxo0SK1bt9bhw4clXczB1q1bNXbsWF133XVq0aKFnnnmGZ08eTLXvM7mpDjXiiTp448/1t13361mzZqpTZs2GjFiRK46TpI++OADdezYUc2aNVPPnj31ww8/OJWfQ4cOaenSpbr++usdGn45+vTpo+uuu05Lly7VoUOHJOV/XUySw/nnyvW4uLg4+/m5detWhznz+xzLnEe8XrrvjIwMLV++3L6vvOpboDi40w8oAf/3f/+ncuXK6bPPPlObNm0cXlu9erWuueYaWa1WSdK3336rvXv36u6771a1atX0xx9/6MMPP9TOnTv14Ycfuvx4xZ9++kkWi0WNGze2b2vdurWmTp2qZ555Ru3bt9edd97p9HxVqlTRuHHjNG7cOHXq1EmdOnWSJPsvsD/++EP33XefatSoocGDB9uPe9iwYZo+fbp9fI7x48erSpUqGjZsmDIyMiRJK1asUHx8vG644QaNHDlSZ86c0eLFi9W7d28tX77c/tijTZs26dFHH1VkZKSeeuopnThxQqNHj1bNmjXzjL1JkyaaO3eu/vjjD3u+Dx8+rNtvv13du3fXlClTnM7DpU6ePKkHH3xQnTp1UufOnbV27VolJCTIarXaC9APP/xQkyZNUlxcnPr376+zZ8/q999/188//6xu3bqpU6dO2r17tz755BONHj1alStXtuc7x+bNm/XZZ5+pT58+qly5smrXru3S88Z37NihPn36KCQkRPfcc49q166ttLQ0ffnllxoxYoRTMVwqPT1d9957r86cOaN+/fqpcuXKWr58uYYOHapp06blWuu3335bFotFDzzwgE6fPq3Zs2dr5MiRWrJkiUv5BgD4D2okaqQcM2bMkMVi0eDBg3Xs2DHNmzdP999/vz7++GOFhoY6vc8GDRroscce07Rp03TPPfeoZcuWkqQWLVrk+56vvvpKdevWLXDMpcaMGaPly5crLi5OAwcO1Pbt2zVr1iylpqbqzTffdBi7Z88ePf744+rZs6e6d++uZcuWKT4+Xk2aNNE111yj1q1bq1+/flqwYIEefvhhXX311fbjkJxfc0my2WwaNGiQmjVrpmeeeUbfffed3n33XdWtW1e9e/cu9BwFAHgPaiT/qpHyasiFhITY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ERFRWDwuuETtudmx4FuHZysrH3k6Zn766SdVrVq18BucNWvWLDGnApWN3/QDKtHll1+u2NhYrVq1Su+//74uvPDCIm9QlPRJmzfeeKPcfbZt21Zut1vff/99uds4V9WqVSUVf+GsW7euLr30Uv3jH//QgQMHij3u8OHDZbZ91VVXqXr16nr11Vd1+vTpEtuoX7++WrVqpWXLlhUpeH366afFfkuuwA8//KAaNWroggsuKLzt9OnT2rFjh8fxmnT29d+lM5/Ya9Gihdxud+E8C9bVl8tvNG7cWOHh4fr666+L3L548eIif9epU0cdOnTQ0qVLiwWOsz/558sYrrnmGn333XfavHlz4W3Hjx/XW2+9pcaNG5f79wcBAPZDRrJvRiqwfPnyIr/Bsnr16iJvXkln3pj69ttvderUqcLbPvroI+3fv79IWyXth5LcfffdqlatmsaNG6fc3Nxi92dnZxcea9dcc42k4sdeenp6kft9UVL+8nafl6cvLq8OANZARrJPRkpLS9P+/fs1depUjRkzRo0bN9aYMWOK5J4C//jHP4rMdfHixcrPzy/MTd6uSUXfK+rSpYvCw8M1c+bMYt8qdbvdhe+FtWnTRnXq1NGSJUuKzGfZsmVeZZL4+Hj17t1bn332mRYtWlTs/sWLF+uLL75Qnz591LBhQ0lnruZQu3Ztbdy4sci2nh5f1nthmzdvLvL7mPv379e6det0xRVXFD4HExISdOzYMW3btq1wuwMHDuiDDz4o1l61atXIYvArvukHVKLIyEjdcMMNWrlypU6cOKHHH3+8yP3Vq1dXhw4d9Nprr+n06dNq0KCBPv3008JPFpXHJZdcotjYWH3++edFPk1TEdHR0UpMTNT777+v8847T7GxsbrggguUlJSkp556Sv3791ePHj102223qWnTpsrNzdW///1v5eTkaMWKFaW2Xb16dT399NMaPXq0evfurW7duqlOnTr6+eef9cknn6hdu3YaP368JOnRRx/VsGHD1L9/f/Xp00e//fabFi5cqAsuuEDHjx8v1vZnn32m6667rsgneH755Rd169ZNvXr18ulHmH01dOhQxcXFqV27dqpbt6527typhQsX6pprrim8lnrr1q0lSS+88IK6deumyMhIXXfddaVeDqFGjRq68cYbtXDhQjkcDjVt2lQff/xxsev4S9K4ceP0l7/8Rb169VK/fv3UpEkT7du3Tx9//LHeffddn8dw7733auXKlbrnnns0YMAA1apVS8uXL9fevXs1Y8aMEi/nCQDAuchI9s1IBWrVqqX+/furd+/eOnTokN544w01a9ZMt912W+E2f/7zn7VmzRrdfffduummm5Sdna333nuv2GW/EhISVLNmTS1ZskQxMTGqVq1asTdJz90+LS1NjzzyiLp166aePXsqKSlJp06d0ubNm7V69Wr17t1bktSyZUv16tVL//jHP3T06FF16NBBmZmZWrZsmTp37lzkU/featWqlcLDwzVnzhwdO3ZMUVFR+tOf/qS6det6vc+9VdoxCgAIPmSk0MhIa9as8fi+yhVXXKG4uDh9/vnnWrRokYYPH174vsyUKVM0YMAAvfjiixo9enSRx50+fVqDBw/WTTfdpF27dmnRokW65JJLdP311/u8JhV5ryghIUEjR47UtGnTtG/fPnXu3FkxMTHau3evPvzwQ912220aOnSoIiMjNXLkSI0fP16DBg1St27dtHfvXr3zzjte/aafJI0dO1Y7d+7UhAkTtH79+sJv9G3YsEHr1q3TpZdeqjFjxhR5zJ///GfNnj1bTz75pNq0aaONGzd6/FZnWe+FJSUlaejQoRowYICioqIKP2g/YsSIwja6deumtLQ0DR8+XAMGDFBeXp4WL16s5s2bFykYFvT3+eefKz09XfXr11eTJk100UUXebUOgDco+gGVrFu3bnr77bflcDiKXJKhwLRp0zRp0iQtWrRIbrdbV1xxhebMmVPitc3LEhUVpR49emj16tXFrvteEc8884wmTZqkKVOm6PTp0xo+fLiSkpKUmJiopUuXaubMmVq2bJl+++031alTRykpKXrwwQe9artHjx6qX7++Zs+erblz5+rUqVNq0KCB2rdvX/iGi3Tm6/3Tp0/Xiy++qGnTpikhIUFTpkzRunXr9NVXXxVpc8eOHcrKytITTzxhbA180a9fP7333ntKT0/X8ePH1bBhQw0YMEAPPPBA4TYXXnihHn74YS1ZskTr16+Xy+XSunXryrwG+rhx45Sfn68lS5YoKipKN954o0aPHq2bb765yHYtW7bUW2+9penTp2vx4sU6efKkGjVqVOQ49GUMcXFxWrJkiZ5//nktXLhQJ0+eVHJysmbNmqVrr722YgsGALAdMlLZQjEjFbjvvvv0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AMDiKPoBAAAAAAAAAAAAFkfRDwAAAAAAAAAAALA4in4AAAAAAAAAAACAxVH0AxBwe/fuVXJysrZu3RrooRTasWOHbrvtNqWmpqpnz55G2x4wYIAmT55stE0AAACJXAUAAGACmQqAVVH0A6AxY8YoOTlZs2fPLnL7hx9+qOTk5ACNKrBmzJihqlWravXq1Zo3b57HbQhEAADgXOSq4shVAADAV2Sq4shUALxB0Q+AJKlKlSqaM2eOjhw5EuihGHPq1KlyPzY7O1uXXHKJGjdurNq1axscFQAACHXkqqLIVQAAoDzIVEWRqQB4g6IfAEnS5Zdfrri4OL366qslbjNjxoxilw+YN2+eOnXqVPj3mDFj9MADD2jWrFm6/PLL1b59e82cOVP5+fl69tlndemll+rqq6/W0qVLi7W/c+dO3X777UpNTdXNN9+sr776qsj9WVlZuvvuu3XxxRfr8ssv11//+lcdPny48P4BAwZo4sSJmjx5si677DINHTrU4zxcLpdmzpypq6++Wm3atFHPnj31r3/9q/D+5ORk/fDDD3r55ZeVnJysGTNmFGtjzJgx+uqrrzR//nwlJycrOTlZe/fulSR99dVX6tu3r9q0aaMrr7xSaWlpys/PL3FdP/74Y11yySVasWKFJGn//v16+OGH1b59e1166aW6//77C9s+e43nzp2rK6+8UpdddpkmTJig06dPF27z5ptvqkuXLkpNTdXll1+uhx56qMT+AQCAWeQqchUAAKg4MhWZCoDvKPoBkCSFhYXp0Ucf1cKFC5WTk1Ohtr744gsdOHBACxcu1JgxYzRjxgwNGzZMtWrV0ltvvaXbb79dTz31VLF+nnvuOQ0ZMkTLly9X27Ztdd999+nXX3+VJB09elSDBg1SSkqKMjIy9Nprr+nQoUMaOXJkkTaWLVumyMhILV68WBMmTPA4vvnz5ys9PV2PP/64VqxYoSuvvFIPPPCAfvrpJ0nShg0bdMEFF+iuu+7Shg0bdNdddxVr48knn9TFF1+s2267TRs2bNCGDRsUHx+vX375Rffee69SU1P17rvv6umnn1ZGRoZeeeUVj2N577339OijjyotLU233HKLTp8+raFDhyomJkZvvvmmFi9erGrVqunuu+8u8mmwL7/8UtnZ2XrjjTc0depULVu2TMuWLZMkZWZmavLkyXrooYe0evVqvfba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","text/plain":["
"]},"metadata":{},"output_type":"display_data"}],"source":["# Function to filter dataset based on combined token counts\n","def filter_by_token_count(dataset_split, combined_token_counts, max_tokens=2048):\n"," filtered_dataset = [example for example, count in zip(dataset_split, combined_token_counts) if count <= max_tokens]\n"," return filtered_dataset\n","\n","# Function to plot token distribution\n","def plot_distribution(token_counts, title, ax):\n"," sns.set_style(\"whitegrid\")\n"," ax.hist(token_counts, bins=50, color='#3498db', edgecolor='black')\n"," ax.set_title(title, fontsize=12)\n"," ax.set_xlabel(\"Number of tokens\", fontsize=10)\n"," ax.set_ylabel(\"Number of examples\", fontsize=10)\n"," ax.tick_params(axis='both', which='major', labelsize=8)\n","\n","\n","# Set up the figure for plotting\n","fig, axs = plt.subplots(3, 3, figsize=(18, 12)) # 3 splits, 3 metrics (instruction, input_content, expected_output)\n","\n","# Process each dataset split\n","for i, split_name in enumerate(['train', 'test', 'val']):\n"," # Tokenize and count\n"," instruction_counts, input_content_counts, expected_output_counts, combined_counts = tokenize_and_count(dataset[split_name])\n","\n"," # Filter dataset based on combined token count\n"," filtered_dataset = filter_by_token_count(dataset[split_name], combined_counts)\n","\n"," # Re-tokenize and count for the filtered dataset\n"," filtered_instruction_counts, filtered_input_content_counts, filtered_expected_output_counts, _ = tokenize_and_count(filtered_dataset)\n","\n"," # Plotting the distributions for the filtered datasets\n"," plot_distribution(filtered_instruction_counts, f\"{split_name} (filtered): Instruction\", axs[i, 0])\n"," plot_distribution(filtered_input_content_counts, f\"{split_name} (filtered): Input Content\", axs[i, 1])\n"," plot_distribution(filtered_expected_output_counts, f\"{split_name} (filtered): Expected Output\", axs[i, 2])\n","\n","# Adjust layout to prevent overlap\n","plt.tight_layout()\n","plt.show()\n"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"EtNSFWlUvUWF","outputId":"f5e95b39-8a6a-4a24-e14f-1a26a657b991"},"outputs":[{"name":"stdout","output_type":"stream","text":["Number of valid rows in train: 448\n","Removing 0 rows from train...\n","Number of valid rows in test: 56\n","Removing 0 rows from test...\n","Number of valid rows in val: 56\n","Removing 0 rows from val...\n"]},{"data":{"image/png":"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ibi4OE15YmIi3nzzTXh6emL06NH4448/qjFKIiIiqstkkzh5enpi3759aNOmjVb5smXLMHbsWERGRmLq1KkICAiopgiJiIiorpPNfZx69uxZouzRo0e4ceMGdu/eDeB5crVy5UokJSWhXbt2OrWvUqn0Eqc+Fcckx9j+KTk5GZmZmWXWsbCwgI2NTaXGUZPGTA44XrrjmOmG46U7jpluqmK8dGlbNolTadLT02FpaQkjo+dhKhQKWFlZ4d69ezonTnJ+7IqcYwOA+/fvY/SYMXiWn19mvXqmpjgcEYFWrVpVekxyHzO54XjpjmOmG46X7jhmupHLeMk6cdInOd7avqbcdv/atWt4lp+PDpOCYGplW2qd/PTbuBuyEC1atICLi0ulxVJTxkwuOF6645jphuOlO46ZbqrykStiyDpxsrKywsOHD1FUVAQjIyMIgoD09HS0bt1a57bkfGt7OccGQBObqZUtzGwcy61bFe9F7mMmNxwv3XHMdMPx0h3HTDdyGS/ZLA4vTfPmzeHo6Ijjx48DACIjI9GyZUudL9MRERER6YNszjgtW7YMFy5cQGZmJvz9/WFmZoYzZ85g+fLlWLJkCbZt2wYzMzMEBgZWd6hERERUR8kmcVqxYkWp5R07dsSXX35ZxdEQERERlSTrS3VEREREcsLEiYiIiEgkJk5EREREIjFxIiIiIhKJiRMRERGRSEyciIiIiERi4kREREQkEhMnIiIiIpGYOBERERGJxMSJiIiISCQmTkREREQiMXEiIiIiEomJExEREZFITJyIiIiIRGLiRERERCQSEyciIiIikZg4EREREYnExImIiIhIJCZORERERCIxcSIiIiISiYkTERERkUhMnIiIiIhE0nvi9OTJE5w9exYJCQn6bpqIiIioWklOnN59912Eh4cDAPLz8zF69GjMnTsXo0aNQmRkpOQAiYiIiORCcuJ05coVuLm5AQDOnDkDQRBw+fJl/N///R+2bNkiOUAiIiIiuZCcOOXm5qJJkyYAgIsXL2Lo0KGoX78+Xn75ZSQlJUkOkIiIiEguJCdOVlZWuH79OvLy8nDx4kX06dMHAJCTkwMTExPJARIRERHJhZHUBvz8/PDee++hQYMGsLKywksvvQQAuHz5Muzs7CQHSERERCQXkhOnt956C127dsX9+/fh7u4OA4PnJ7Gsra0xd+5cqc0TERERyYbkxAkAnJ2doVQqkZqaChsbGxgZGeHll1/WR9NEREREsiF5jdPTp0/x/vvvw8XFBSNGjEB6ejoAYOXKldi+fbvkAImIiIjkQnLitH79ety6dQuhoaGoV6+eprx37944efKk1OaJiIiIZEPypbpz587h008/hYuLi1Z5586dkZycLLV5je+++w6fffYZ1Go1VCoV/P398frrr+utfSIiIqLySE6csrKy0Lx58xLlT58+hUKhkNo8AEAQBLz33nsIDQ2Fvb09UlNT8eqrr2LIkCFo2LChXvogIiIiKo/kxMnJyQkXLlyAr6+vVvmhQ4dKnIWSQqFQIDc3F8Dz5+E1bdpUp/tEqVQqvcWiL8Ux6RpbcnIyMjMzy61nYWEBGxubCsX2d7rEp1KpKnWsKzpmdRXHS3ccM91wvHTHMdNNVYyXLm1LTpzmzZuHqVOn4vbt21CpVAgNDUVCQgKuX7+OsLAwqc0DeJ40ffrpp5g1axYaNGiA7OxsBAcH65Q4xcbG6iWWyqBLbPfv38foMWPwLD+/3Lr1TE1xOCICrVq1khIe4uPjdapbfEuKyiTn+ZQjjpfuOGa64XjpjmOmG7mMl+TEyc3NDV999RW2b98OOzs7/PDDD3BwcMCBAwegVCr1ESOKioqwZcsWBAcHo2fPnoiJicHMmTNx/PhxmJubi2rD2dkZhoaGeolHX1QqFWJjY3WK7dq1a3iWn48Ok4JgamX7wnr56bdxN2QhWrRoIfnMn1qtFl3Xzs5Or2ca/6kiY1aXcbx0xzHTDcdLdxwz3VTFeBX3IYZe7uNkY2ODVatW6aOpUsXFxeHBgwfo2bMnAKBr165o2bIl4uLiNI94KY+hoaFsD1BdYiuuZ2plCzMbR722XV6fYutWxTjLeT7liOOlO46ZbjheuuOY6UYu41WhxOnJkyei6+pj8baVlRUePHiAhIQEdOrUCUlJSUhJSUGHDh0kt01EREQkVoUSJzc3t3K/MScIAhQKBeLi4ioU2N9ZWFhg5cqVmDt3LhQKBQRBwH/+8x+0bt1acttEREREYlUocQoNDdV3HOUaMWIERowYUeX9EhERERWrUOLUq1cvfcdBREREJHt6WRyenZ2NiIgIJCQkAABsbW3h7e2Npk2b6qN5IiIiIlmQfMOdy5cvw8PDA2FhYcjJyUFOTg7CwsIwaNAgXL58WR8xEhEREcmC5DNOK1aswLBhw/Dhhx9qviaoUqmwfPlyrFixAidOnJAcJBEREZEcSD7jlJSUhEmTJmndW8HQ0BATJ05EUlKS1OaJiIiIZENy4uTg4IA7d+6UKL9z5w7s7e2lNk9EREQkG5Iv1fn5+WH16tVISkpCt27dAAC//vor9u7di4ULF+LWrVuaukykiIiIqCaTnDjNnz8fALBu3bpStxXfsFJfN8MkIiIiqi6SE6dz587pIw4iIiIi2ZOcOLVp00YfcRARERHJnl5ugJmRkYGrV68iKysLarVaa5ufn58+uiAiIiKqdpITpyNHjmDZsmUwNjZGs2bNtLYpFAomTkRERFRrSE6cNmzYgHfeeQfTp0+HgYHkuxsQERERyZbkTCc/Px/Dhw9n0kRERES1nuQzTqNHj8apU6cwbdo0fcRDelbeLSAsLCxgY2NTRdEQERHVbJITpwULFmD69Om4ePEi7OzsYGSk3eSSJUukdkEVUJj9EFAYwMfHp8x6pvUb4PdbcUyeiIiIRJCcOG3btg1RUVHo0KFDiW0KhUJq81RBRU9zAEGNDpOCYGplW2qd/PTbuBuyEJmZmUyciIiIRJCcOIWEhOCjjz6Ct7e3PuIhPTO1soWZjWN1h0FERFQrSF7RbWJigu7du+sjFiIiIiJZk5w4+fn5ITw8XB+xEBEREcma5Et1MTExuHTpEs6fP4/OnTuXWBweHBwstQsiIiIiWZCcODVu3BhDhw7VRyxEREREsiY5cQoMDNRHHERERESyx9t9ExEREYkk+YwTAJw6dQrffPMN0tPTUVhYqLXt6NGj+uiCiIiIqNpJPuMUGhqKJUuWwMLCAjdv3oSzszOaNm2KlJQU9O/fXx8xEhEREcmC5DNO+/btw8qVKzFixAgcOXIEU6dOhbW1NTZs2IDs7Gx9xEhEREQkC5LPOKWnp8PV1RUAYGpqir/++gsA4OXlha+//lpq80RERESyITlxsrCw0JxZsrKywi+//AIASE1NhSAIUpsnIiIikg3Jl+r+9a9/4dtvv4WDgwNGjx6NwMBAREZG4saNGxgyZIg+YiQiIiKSBcmJ08qVK6FWqwEAb731Fpo2bYrr16/Dw8MDb7zxhuQAiYiIiORCcuJkYGAAA4P/XfEbPnw4hg8fLrVZIiIiItmRvMZp06ZNmjNOf5ebm4v58+dLbZ6IiIhINiQnThERERg/fjxSUlI0ZdHR0Rg5ciSSk5OlNq9RUFCAFStWYOjQoRg5ciQWLlyot7aJiIiIxJB8qe748eNYtmwZvLy8EBAQgLt37yIsLAz+/v6YPXu2PmIEAAQFBUGhUCAyMhIKhQIPHz7UW9tEREREYkhOnJo0aYINGzbgk08+wbJly2BkZIQdO3agd+/e+ogPAJCXl4eIiAh8//33UCgUAABLS0ud2lCpVHqLR1+KY9Iltsp4HyqVqsx2dY2vMse6ImNWl3G8dMcx0w3HS3ccM91UxXjp0rZenlUXFhaG0NBQDB8+HL/99htWrVqF9evXw97eXh/NIzk5GU2bNsXWrVvx448/wtTUFLNnz9YpOYuNjdVLLJVBl9ji4+P13n98fLzWAn8pfZbXlr7IeT7liOOlO46ZbjheuuOY6UYu4yU5cfL398eNGzewZs0avPLKK8jPz0dgYCDGjh2L2bNnY+rUqZKDVKlUSEtLg62tLRYuXIibN29i0qRJ+Prrr2FhYSGqDWdnZxgaGkqORZ9UKhViY2N1iq20hfhS2dnZwcXFRS99lteWVBUZs7qM46U7jpluOF6645jppirGq7gPMSQnTmq1GsePH0fLli0BPH/syvLlyzFw4EAsXbpUL4mTlZUVDAwMMHLkSACAg4MD2rZti/j4eNGJk6GhoWwPUF1iq4z3UF7/uvRZVeMs5/mUI46X7jhmuuF46Y5jphu5jJfkayohISGapOnvXn75ZRw/flxq8wAAc3Nz9O7dG1FRUQCAlJQUpKamolOnTnppn4iIiEgMvaxxunLlCg4cOICUlBRs3LgRLVu2xLFjx9C2bVuYm5vrowssX74c77//vubbdStWrCg1YSMiIiKqLJITp8jISCxatAgjR47EzZs3UVBQAAB48uQJtm3bBjc3N8lBAoC1tTXCwsL00hYRERFRRUi+VLdlyxYsX74cq1atgpHR//Kw7t274+bNm1KbJyIiIpINyYnT3bt3Sz2r1KhRI+Tk5EhtnoiIiEg2JCdOFhYWpT5a5erVq7C2tpbaPBEREZFsSE6cxo4di9WrV+PXX3+FQqFARkYGjh8/jo8//hjjxo3TR4xEREREsiB5cfi0adOgVqsxceJEPH36FD4+PjAxMcHkyZPh6+urjxiJiIiIZEFy4qRQKDBjxgz4+/sjOTkZeXl56NSpE8zMzPQRHxEREZFs6OU+TgBgYmICW1tbfTVHREREJDuV/zRWIiIiolqCiRMRERGRSEyciIiIiESqUOL0+uuvIzs7GwAQHByMp0+f6jUoIiIiIjmqUOKUkJCgSZY2b96MvLw8vQZFREREJEcV+lZdly5dsGTJEvTo0QOCIGDXrl1o0KBBqXVnzZolKUAiIiIiuahQ4hQYGIhNmzbh/PnzUCgUuHjxIgwNDUvUUygUTJyIiIio1qhQ4tSxY0d8+umnAAB7e3vs2bMHzZs312tgdVVycjIyMzNfuD0uLk7vfZbXZmX0SUREVBNJvgHmrVu39BEH4XnSpLTvgvynVbNmrDD7IaAwgI+PT5X0R0REVNPp5c7hycnJ+OKLL5CQkAAAsLW1hZ+fH2xsbPTRfJ2RmZmJ/Kd56DApCKZWpd+FPTv2Au6d+Ewv/RU9zQEEdZn96btPIiKimkxy4nTx4kXMmDEDXbp0Qffu3QEA165dw/Dhw7F161b06dNHcpB1jamVLcxsHEvd9vR+QpX2V1l9EhER1USSE6f169dj4sSJWLhwoVZ5UFAQgoKCmDgRERFRrSH5zuEJCQkYM2ZMifLRo0fj9u3bUpsnIiIikg3JiZO5uXmp37qKi4vjN+2IiIioVpF8qe7f//43li1bhpSUFK01Tjt27MDEiROlNk9EREQkG5ITp3feeQcNGzbE7t278cknnwAAWrRogVmzZsHPz09ygERERERyITlxUigUmDhxIiZOnIgnT54AABo2bCg5MCIiIiK50ct9nIoxYSIiIqLaTPLicCIiIqK6gokTERERkUhMnIiIiIhEkpQ4FRYWYsKECUhMTNRTOERERETyJSlxMjY2xu+//66vWIiIiIhkTfKlulGjRiEiIkIfsRARERHJmuTbEahUKuzfvx8//vgjnJycUL9+fa3tS5YskdoFERERkSxITpzi4+Ph4OAAALh7967WNoVCIbV5IiIiItmQnDiFhYXpIw7RDh8+jPfffx+bN2/G4MGDq7RvIiIiqtv0djuCpKQkXLx4Efn5+QAAQRD01bRGamoqDh06BBcXF723TURERFQeyWecHj9+jLlz5yI6OhoKhQKnT5+GtbU13n//fTRp0gQBAQH6iBNqtRpLly7F0qVL8fHHH+u8v0ql0kscpUlOTkZmZmaZdSwsLGBjY1NqTP/8f02mUqkq9X3UprGqChwv3XHMdMPx0h3HTDdVMV66tC05cQoMDISRkREuXLiAV199VVM+bNgwrFmzRm+JU0hICLp37w4nJ6cK7R8bG6uXOP7p/v37GD1mDJ79/zNtL1LP1BSHIyLQqlWrF8YWHx9fKTFWpfj4eBgYVP59VStrPmsrjpfuOGa64XjpjmOmG7mMl+TE6YcffsCuXbtKJATt27fHvXv3pDYP4Pk/xqdPn0Z4eHiF23B2doahoaFe4vm7a9eu4Vl+PjpMCoKplW2pdfLTb+NuyEK0aNFC6zKjSqVCbGysJja1Wq33+KqanZ1dpV5K/eeYUdk4XrrjmOmG46U7jpluqmK8ivsQQ3LilJeXB1NT0xLlf/75J0xMTKQ2DwC4cuUK0tLS4OnpCQB4+PAhbt++jQcPHmD8+PGi2jA0NKyUAS9u09TKFmY2jhWKobi8NnyAqup91JbxqiocL91xzHTD8dIdx0w3chkvyddU3NzccOzYMa0ytVqNnTt34qWXXpLaPABg/PjxiIqKwrfffotvv/0WLi4uWLlypeikiYiIiEgfJJ9xeu+99zBx4kTcuHEDhYWFWLduHW7fvo3s7Gzs379fHzESERERyYLkxMnOzg6RkZEIDw+HmZkZ8vLyMGTIELz11lto0aKFPmIsoarvHUVEREQE6CFxAoBGjRphxowZ+miKiIiISLb0kjhlZ2cjIiICCQkJAABbW1t4e3ujadOm+mieiIiISBYkLw6/fPkyPDw8EBYWhpycHOTk5CAsLAyDBg3C5cuX9REjERERkSxIPuO0YsUKDBs2DB9++KHma4IqlQrLly/HihUrcOLECclBEhEREcmB5DNOSUlJmDRpkta9FQwNDTFx4kQkJSVJbZ6IiIhINiQnTg4ODrhz506J8jt37sDe3l5q80RERESyUaFLdbdu3dL87Ofnh9WrVyMpKQndunUDAPz666/Yu3cvFi5cqJ8oiYiIiGSgQonTa6+9BoVCAUEQNGXr1q0rUW/BggUYNmxYxaMjIiIikpEKJU7nzp3TdxxEREREslehxKlNmzb6joOIiIhI9vRyA8yMjAxcvXoVWVlZUKvVWtv8/Pz00QURERFRtZOcOB05cgTLli2DsbExmjVrprVNoVAwcSIiIqJaQ3LitGHDBrzzzjuYPn06DAwk392AiIiISLYkJ075+fkYPnw4kyYR4uLitF6rVCrEx8dDrVbD0NCwxPaaSMx7sLCwgI2NTRVEQ0REpF+SE6fRo0fj1KlTmDZtmj7iqZUKsx8CCgP4+PhUdyiVRpf3aFq/AX6/FcfkiYiIahzJidOCBQswffp0XLx4EXZ2djAy0m5yyZIlUruo8Yqe5gCCGh0mBcHUyvaF9bJjL+Deic+qLC59Evse89Nv427IQmRmZjJxIiKiGkdy4rRt2zZERUWhQ4cOJbYpFAqpzdcqpla2MLNxfOH2p/cTqjCaylHeeyQiIqrJJCdOISEh+Oijj+Dt7a2PeIiIiIhkS/KKbhMTE3Tv3l0fsRARERHJmuTEyc/PD+Hh4fqIhYiIiEjWJF+qi4mJwaVLl3D+/Hl07ty5xOLw4OBgqV0QERERyYLkxKlx48YYOnSoPmIhIiIikjXJiVNgYKA+4iAiIiKSPd7um4iIiEgkyWecPDw8yrxf07lz56R2QURERCQLkhOnCRMmaL0uKirCzZs3ERUVBX9/f6nNExEREcmG3hOnYnv37sWNGzekNk9EREQkG5W2xql///6IjIysrOaJiIiIqlylJU6nTp1C06ZNK6t5IiIioion+VLda6+9prU4XBAEZGZmIisrCx988IHU5omIiIhkQ3LiNHjwYK3XCoUC5ubm6NWrFzp16iS1eSIiIiLZkJw4zZo1Sx9xEBEREcme5MSpKjx79gzz5s1DQkIC6tWrh+bNm+PDDz9Eu3btqjs0IiIiqkMqnDjZ29uXeeNL4Pllu5s3b1a0Cy1vvPEG+vfvD4VCgfDwcCxduhRhYWF6aZuIiIhIjAonTsHBwS/c9ssvvyAsLAxqtbqizWupV68eBgwYoHndrVs37N69W6c2VCqVXmKpqnZru99++63MsXv27Bnq1atXolytVuP27dsoKiqCgYEBLCwsYGNjo5eYkpOTkZmZWWYdffZXFYrHmMepeBwz3XC8dMcx001VjJcubVc4cfrnonAAuHPnDtavX4/z589j5MiRmDNnTkWbL1NoaCg8PDx02ic2NrZSYomPj6+UdmurwuyHgMIAfn5+ZVdUGABC+Yl3PVNTHI6IQKtWrSTFdf/+fYweMwbP8vOrpL+qVlnHf23GMdMNx0t3HDPdyGW89LLGKSMjA5s2bcKxY8fQt29fHDt2DHZ2dvpouoStW7ciOTkZe/bs0Wk/Z2dnGBoa6j0efZ1VqyuKnuYAghodJgXB1Mq21DrZsRdw78RnZdYBgPz027gbshAtWrSAi4uLpLiuXbuGZ/n5Zfapz/6qikqlQmxsbKUd/7URx0w3HC/dccx0UxXjVdyHGJISp9zcXGzduhXh4eHo0qUL9uzZAzc3NylNlmnXrl04ffo09uzZg/r16+u0r6GhYaUMOA/6ijG1soWZjWOp257eTyi3zt/pY26L9xfTZ2UdS5WpJsZc3ThmuuF46Y5jphu5jFeFE6cdO3Zg586dsLCwwPr160u9dKdPISEh+PrrrxESEoLGjRtXal9EREREpalw4rR+/XqYmprCxsYGx44dw7Fjx0qtV9YicrHu37+PNWvWwNraWrM2xsTEBIcOHZLcNhEREZFYFU6c/vmolcrUqlUr/P7771XSFxEREdGLVDhxWrNmjT7jICIiIpI9g+oOgIiIiKimYOJEREREJBITJyIiIiKRmDgRERERicTEiYiIiEgkJk5EREREIjFxIiIiIhKJiRMRERGRSEyciIiIiERi4kREREQkEhMnIiIiIpGYOBERERGJxMSJiIiISCSj6g6AqKaJi4srt86zZ89Qr169MutYWFjAxsZGX2GJkpycjMzMzDLrVEdc9D+cI6qLyjruVSoV4uPjYW5ujg4dOlRxZCUxcSISqTD7IaAwgI+PT/mVFQaAoC6zimn9Bvj9VlyV/QOYnJwMpX0X5D/Nk1Vc9D+cI6qLatpxz8SJSKSipzmAoEaHSUEwtbJ9Yb3s2Au4d+KzMuvlp9/G3ZCFyMzMrLJfApmZmch/mie7uOh/OEdUF9W0456JE5GOTK1sYWbj+MLtT+8niKpXXeQaF/0P54jqoppy3HNxOBEREZFITJyIiIiIRGLiRERERCQSEyciIiIikZg4EREREYnExImIiIhIJCZORERERCIxcSIiIiISiYkTERERkUhMnIiIiIhEYuJEREREJBITJyIiIiKRmDgRERERicTEiYiIiEgkJk5EREREItWYxCkxMRFvvvkmPD09MXr0aPzxxx/VHRIRERHVMTUmcVq2bBnGjh2LyMhITJ06FQEBAdUdEhEREdUxRtUdgBiPHj3CjRs3sHv3bgCAp6cnVq5ciaSkJLRr167MfQVBAAAUFBTA0NBQ77GpVCqYmZlBkXkXKiNFqXUMs++XW0dsPbb1P4rMuzAzM0NcXBxUKtUL6xkYGECtVr9wOwDEx8dX6XsUG7vY+F9UR61W486dOygqKsLt27dlE1d1t1VWvb+PmZGRUZXGL+Y4lNscVed41dS2isdMTDtVGVd1taXLca9SqVBQUFBubLoq/iwV5wxlUQhialWzGzduYMGCBYiMjNSUjRkzBgsWLEDv3r3L3LegoACxsbGVHSIRERHVcM7OzjAxMSmzTo044ySFkZERnJ2dYWBgAIXixWcJiIiIqG4SBAFqtRpGRuWnRTUicbKyssLDhw81p4IFQUB6ejpat25d7r4GBgblZo9EREREYtSIxeHNmzeHo6Mjjh8/DgCIjIxEy5Yty13fRERERKRPNWKNEwDcuXMHS5YswZ9//gkzMzMEBgZCqVRWd1hERERUh9SYxImIiIioutWIS3VEREREcsDEiYiIiEgkJk5EREREIjFxIiIiIhKJiVMlWrVqFTw8PKBUKhEXF6cpL+uBxXX5YcbPnj3DzJkz4enpiVGjRmHSpElISkoC8PyxO/7+/hg6dChGjBiBy5cva/Yra1tdMHnyZIwcORJeXl4YP348bt68CYDHWXkOHz4MpVKJs2fPAuAxVhYPDw94enrCy8sLXl5eOHnyJAAeYy9SUFCAFStWYOjQoRg5ciQWLlwIgOP1Io8fP9YcW15eXvD09ISDgwP+/PNPeX4uBao0P//8s5Ceni4MHDhQuHnzpqbc19dXOHz4sCAIgvDNN98I3t7eorbVdvn5+cKFCxcEtVotCIIghIWFCT4+PoIgCEJAQICwceNGQRAE4ddffxX69esnFBQUlLutLsjOztb8fPr0aWHkyJGCIPA4K0tKSorwxhtvCGPHjhXOnDkjCAKPsbL883dYMR5jpVu9erWwYsUKze+yBw8eCILA8RJr586dwvTp0wVBkOfnkolTFfj7L53MzEzB1dVVKCwsFARBENRqteDu7i4kJiaWua0uiomJEQYOHCgIgiC4uLhofvkIgiCMHj1a+OGHH8rdVtccPnxYGDVqFI+zMqhUKmHChAlCbGys4OPjo0mceIy9WGmJE4+x0v3111+Cq6urkJubq1XO8RLvlVdekfXnskY8cqU2SU9Ph6WlpeZ5OAqFAlZWVrh37x4aNWr0wm118S7poaGh8PDwwOPHj1FYWAhLS0vNtjZt2uDevXtlbqtLFi1ahOjoaADA9u3beZyVISQkBN27d4eTk5OmjMdY+RYtWgTg+UNQFy5cyGPsBZKTk9G0aVNs3boVP/74I0xNTTF79uwyx6Quj9c/Xbt2DTk5OXj55Zdl+7nkGieSpa1btyI5ORkLFiyo7lBqhLVr1+K7777D3LlzERQUVN3hyFZ8fDxOnz6NGTNmVHcoNUp4eDhOnDiBI0eOoFmzZli8eHF1hyRbKpUKaWlpsLW1xZEjR7B06VLMnTsXKpWqukOrESIiIuDl5SXqYbvVhYlTFfv7A4sBaD2wuKxtdcmuXbtw+vRp7NixA/Xr10ezZs1gZGSEhw8fauqkpaWhdevWZW6ri15//XVER0ejVatWPM5KceXKFaSlpcHT0xMeHh745Zdf8J///AfffPMNj7EyFL9XY2NjTJgwAVeuXOHvshewsrKCgYEBRo4cCQBwcHBA27ZtkZaWxvEqx19//YVvvvkGo0ePBgDZ/u5n4lTFynpgMR9m/Pwyytdff42QkBA0btxYU/7KK6/gwIEDAICYmBhkZGSgZ8+e5W6r7XJycpCRkaF5ffbsWTRt2pTH2QuMHz8eUVFR+Pbbb/Htt9/CxcUFK1euxPjx43mMvUBeXh5ycnI0r7/++ms4ODjwGHsBc3Nz9O7dG1FRUQCAlJQUpKamokePHhyvcpw8eRL29vbo1KmTpkyOn0s+q64SLVu2DBcuXEBmZiaaNm0KMzMznDlzpswHFtflhxnfv38fAwYMgLW1NczMzAAAJiYmOHToEDIzM7Fo0SKkpqbC2NgY//nPf/Cvf/0LAMrcVtulpaXh3XffxbNnz6BQKGBubo7FixejS5cuPM5E8PX1xYQJEzB48GAeYy+QkpKC2bNnay41tW3bFv/3f/+Htm3b8hh7gZSUFLz//vv4888/oVAo8M4778DT05PjVY4333wT//73vzVnnICyP3vV9blk4kREREQkEi/VEREREYnExImIiIhIJCZORERERCIxcSIiIiISiYkTERERkUhMnIiIiIhEYuJEREREJBITJyKqdqmpqVAqlYiLi6vuUDQSEhIwduxYODs7w8vLS69t+/r6YvXq1Xptk4iqBhMnIkJAQACUSiW2b9+uVX727Nk6d/fiYps2bUL9+vVx6tQp7Nmzp9Q6TICI6h4mTkQEAKhXrx527NiB7Ozs6g5FbwoKCiq8b3JyMnr06IE2bdqgWbNmeoyKiGoyJk5EBABwd3eHhYUFtm3b9sI6mzZtKnHZas+ePfDw8NC8DggIwMyZM7F161a4u7vDzc0NwcHBKCoqwscff4xevXqhf//+OHz4cIn279y5gzfffBPOzs4YMWIEfv75Z63t8fHxmDJlClxdXeHu7o733nsPWVlZmu2+vr5YsWIFVq9ejZdeegn+/v6lvg+1Wo3g4GD0798fTk5O8PLywvfff6/ZrlQq8dtvv2Hz5s1QKpXYtGlTiTYCAgLw888/IzQ0FEqlEkqlEqmpqQCAn3/+GWPGjIGTkxP69u2LoKAgFBUVvXBcL1y4gB49emge8pqeno53330Xbm5u6NWrF2bMmKFp++9jvGvXLvTt2xcvvfQSli9fjsLCQk2dvXv3YujQoXB2doa7uzvmzJnzwv6JSDwmTkQEADAwMMD8+fMRHh6O+/fvS2rr0qVLePDgAcLDwxEQEIBNmzZh+vTpaNKkCQ4ePIg333wTH3zwQYl+1q5di0mTJuHYsWNwcXHB22+/jcePHwMAcnJyMGHCBDg4OCAiIgI7d+7Eo0ePMHfuXK02jh49CmNjY+zfvx/Lly8vNb7Q0FCEhIRg8eLFOH78OPr27YuZM2ciMTERABAVFYXOnTtj8uTJiIqKwuTJk0u08X//939wdXXF2LFjERUVhaioKFhZWSEjIwPTpk2Ds7MzvvrqK3z44YeIiIjAli1bSo3lxIkTmD9/PoKCgjBq1CgUFhbC398fZmZm2Lt3L/bv348GDRpgypQpWmfQoqOjkZycjC+++AJr1qzB0aNHcfToUQBAbGwsVq9ejTlz5uDUqVPYuXMn3NzcRM0dEZWNiRMRaQwZMgRdunTBxo0bJbXTtGlTLF26FB07dsSYMWPQoUMH5Ofn4+2330b79u0xffp0GBsb4+rVq1r7vfXWW/D09ESnTp3w4YcfolGjRoiIiAAAhIeHw8HBAfPnz0enTp3g4OCAjz76CNHR0bh7966mjfbt22PRokXo2LEjOnbsWGp8u3btwtSpUzF8+HB07NgR7733Huzt7fHFF18AACwtLWFoaIgGDRrA0tISZmZmJdpo1KgRjI2NYWpqCktLS80++/btQ6tWrbBs2TJ06tQJgwcPxuzZs7F7926o1WqtNvbu3Yvly5dj69atGDhwIADg5MmTUKvVWL16NZRKJTp16oTAwECkp6drnYFr0qSJpo+BAwdiwIAB+OmnnwA8P2NVv359vPzyy2jTpg0cHBzg5+en6zQSUSmMqjsAIpKXhQsXYsKECS+8zCWGra0tDAz+93eZhYUFOnfurHltaGiIpk2b4tGjR1r7ubq6an42MjKCk5MT7ty5AwC4desWoqOjteoUS05ORocOHQAAjo6OZcb25MkTPHjwAN27d9cq7969O27duiXyHb5YQkICXF1doVAoNGU9evRAXl4e7t+/j9atWwMAIiMjkZWVhX379qFr166aurdu3UJycnKJ+J49e4bk5GTNa1tbWxgaGmpeW1paIj4+HsDzy66tW7fG4MGD0a9fP/Tr1w9DhgxB/fr1Jb8/orqOiRMRaenZsyf69u2L9evXw9vbW2ubQqGAIAhaZaWt3TEy0v7VolAoSi375xmYsuTl5WHgwIFYuHBhiW2Wlpaan2tKcuDg4IDffvsNhw8fhrOzsybRysvLg6OjI4KCgkrsY25urvm5tPEsnpuGDRvi6NGj+PnnnxEVFYWNGzciODgYERERaNy4cSW+K6Laj5fqiKiEBQsW4Pz587h+/bpWubm5OTIzM7WSJ33ee+mXX37R/FxUVITffvtNc7nN0dERf/zxB9q0aYN27dpp/degQQPRfTRs2BAtWrTAtWvXtMqvXbsGW1tbneI1NjYukfx16tQJ169f1xqjq1evwszMDK1atdKUWVtbIzQ0FOfOncPKlSs15Y6OjkhKSkLz5s1LvM9GjRqJjs3IyAju7u5YtGgRjh8/jrS0NFy6dEmn90dEJTFxIqISlEolRo4cibCwMK3yl156CVlZWdixYweSk5Oxd+9eXLx4UW/97tu3D2fOnEFCQgJWrFiB7OxsjB49GgAwfvx4ZGdnY/78+YiJiUFycjIuXryIJUuWQKVS6dSPv78/duzYgZMnT+LOnTsICgrCrVu3dF4H1KZNG/z6669ITU1FVlYW1Go1xo8fj/v372PlypVISEjA2bNnsWnTJkyaNEnr8iUAdOjQAaGhoTh9+rTmflAjR45Es2bNMGPGDFy5cgUpKSmIjo7GqlWrRC/aP3/+PEJDQxEXF4e0tDQcO3YMarVaczmTiCqOl+qIqFRz5szByZMntco6deqEDz74ANu2bcOWLVswdOhQTJ48GQcPHtRLnwsWLMD27dsRFxeHdu3aYcuWLZrLUy1btsT+/fsRFBQEf39/FBQUoHXr1ujXr1+JhKQ8fn5+ePLkCdasWYOsrCx06tQJn3/+Odq3b69TO5MnT0ZAQACGDx+O/Px8nDt3Dm3btsX27duxdu1aHDx4EE2bNsWYMWMwY8aMUtvo2LEjvvjiC/j6+sLQ0BABAQEIDw9HUFAQZs2ahb/++gstW7ZE79690bBhQ1FxNWrUCGfOnEFwcDCePXuGdu3aYf369VrrzIioYhTCPxcsEBEREVGpeKmOiIiISCQmTkREREQiMXEiIiIiEomJExEREZFITJyIiIiIRGLiRERERCQSEyciIiIikZg4EREREYnExImIiIhIJCZORERERCIxcSIiIiISiYkTERERkUhMnIiIiIhEYuJEREREJBITJyIiIiKRmDgRERERicTEiYiIiEgkJk5EMuHh4YGAgADN6+joaCiVSkRHR1d635s2bYJSqdQqUyqVWLFiRaX3DQBHjhyBUqlEampqlfRXUTt37sSgQYPQpUsXeHl5VVsciYmJmDx5Mnr06AGlUomzZ8+WOoa+vr7w9fWtsrhKO45qqoCAAHh4eFR3GCRDTJyo1ij+h8PZ2RkZGRkltvv6+mLEiBHVEFnV2rp1K86ePVvdYZRKzrGVJyoqCuvWrUP37t0RGBiI+fPnIyMjA5s2bUJcXFyVxhIQEID4+HjMmzcPa9euhZOTk6j9qiteotqEiRPVOgUFBdi+fXt1hyFZz549ERMTg549e+q037Zt23ROTmbMmIGYmBid9qmIF8Xm5eWFmJgYtGnTptJjqKhLly7BwMAAq1evxmuvvYYBAwbgwYMHCA4OrtJEJD8/H9evX8fo0aPh4+MDLy8vtGrVStQYVna8VXUcEVUnJk5U63Tp0gUHDx4s9axTTWJgYIB69erBwKDyPqZ5eXkAACMjI9SrV6/S+imPoaEh6tWrB4VCUW0xlOfRo0cwNTWFiYlJpfdVPC+lycrKAgA0btxYq7w6x1AuxxFRVWDiRLXO9OnToVarsWPHDlH1v/rqK3h7e6Nr167o1asX5s2bh/T0dM320NBQdOnSBTk5OZqy3bt3Q6lUIjAwUFOmUqng6uqKdevWldmfIAj4/PPP0b9/f3Tr1g2+vr74448/StQrbY1TYmIiZs+ejT59+sDZ2Rn9+/fHvHnzkJubC+D5uqS8vDwcPXoUSqUSSqVSs26qeP3J7du3sWDBAvTs2RPjx4/X2laa48ePw9PTE87OzvD29sbly5e1tr9oLcg/2ywrthetcdq7dy+GDx8OJycn9O3bF8uXL9eaB+B/l2Bv374NX19fdOvWDf369RM9/4cPH4afnx969+4NJycnDBs2DPv27dOqo1QqceTIEeTl5WliP3LkCMaMGQMAWLJkiVZ5sV9//RX+/v7o0aMHunXrBh8fH1y9erXUcSptXkob04EDBwIA1q5dC6VSqRn78taJRUdHV3q8Za2VO3v2LEaMGAEnJycMHz4c33//fakxent7w9nZGYMHD8aBAwdErZtasWIFXF1d8fTp0xLb5s+fjz59+kClUgEAzp49i2nTpqFv375wcnLC4MGDsXnzZs12ovIYVXcARPrWtm1beHl54eDBg5g6dSpatmz5wrpbtmzBhg0b8Oqrr2LMmDHIyspCeHg43nrrLRw7dgyNGzeGm5sb1Go1rl69qvlH68qVKzAwMMCVK1c0bd28eRN5eXnlXlrbsGEDtmzZggEDBmDAgAH47bffMHnyZBQWFpa5X0FBAfz9/VFQUAAfHx9YWFggIyMDFy5cQE5ODho1aoS1a9di6dKl6Nq1K8aOHQsAsLGx0Wrn3XffRbt27TBv3jwIglBmn5cvX8bJkyfh6+sLExMT7N+/H1OmTMGhQ4dgZ2dX5r7/JCa2v9u0aROCg4Ph7u6OcePG4e7du9i/fz9iY2Oxf/9+GBsba+pmZ2djypQpGDJkCF599VVERkYiKCgIdnZ2GDBgQJlx7d+/H507d4aHhweMjIzw/9q787AmzvVv4N8QEBVQUECQAiIaBUTRUttq7QJuFZfjcrQqosVaa12rVvHocfdoLfYUxZ8LVRRQWsWi9LRVXLBqT6WKtuJWDriACG5YBBWQZN4/fEmNQJgJCQT5fq6rV5OZJ89z554n8WZmMpOUlIQlS5ZAEASMHj1aHfuuXbtw7tw5LF++HADQqlUrTJs2DWvXrsWIESPw8ssvAwC6dOkCAPjll18wYcIEdOjQAVOmTIFMJsO3336LsWPHYufOnejYsaNGHGK2S69evWBlZYWVK1eif//+ePPNN2FhYaH1/ZVxd3ev8XjLpKSkIDExEaNGjYKFhQWio6Mxbdo0JCUlwcbGBsDTz88HH3wAOzs7TJ06FSqVCuvXr0ezZs2qfG/9+vXDjh07cPToUbz77rvq5Y8fP0ZSUhIGDx4MuVwOAIiPj0fjxo3x/vvvo3Hjxjh58iTWrl2LwsJCzJ07V1QuqZ4TiF4Qe/bsERQKhXDu3DkhMzNT8PT0FJYtW6ZeHxgYKAQEBKif37hxQ/Dw8BA2bNig0c8ff/wheHp6qpcrlUqhS5cuwurVqwVBEASVSiV07dpVmDZtmuDh4SEUFhYKgiAIkZGRQvv27YX8/PxKY7x3757g5eUlfPjhh4JKpVIv/+KLLwSFQiHMnTtXvezkyZOCQqEQTp48KQiCIFy8eFFQKBTCjz/+qDUPPj4+Gv2UWbt2raBQKISZM2dWuu5ZCoVCUCgUQmpqqnpZdna24O3tLUyePFm9bO7cucI777wjqs/KYivbdllZWYIg/JWn4OBgQalUqtvFxMQICoVCiIuLUy8LDAwUFAqFEB8fr15WXFwsdO/eXZg6dWq5sZ73+PHjcsuCg4MFf39/jWVz584VfHx8NJadO3dOUCgUwp49ezSWq1QqoXfv3kJwcLDGdn78+LHg5+cnvP/+++pl2rZLRbKysgSFQiF89dVXGsufz6EgPM1NYGBgjcVb2Tzy8vISrl+/rl526dIlQaFQCNHR0eplEydOFDp16iTk5uaql127dk3w9PQs1+fzVCqV0KNHj3Lb+4cffhAUCoVw6tQpjff0vH/+859Cp06dhOLiYvWyyuY1EQ/V0QvJ2dkZAwcOxK5du3D79u0K2xw8eBAqlQrvvvsu8vLy1P/Z2trC1dVVfYjMxMQEnTt3Vu9dysjIwJ9//okPP/wQgiDgt99+A/B0L1Tbtm3LnXvyrP/+97948uQJAgMDNc5FGTt2bJXvydLSEsDTX3dVdEhCrPfee090286dO2v8Yqtly5bw9/fHiRMnDHpooyxPQUFBGud4/f3vf4elpSV++uknjfaNGzfWuDxAgwYN4O3tjaysrCrHatiwofpxQUEB8vLy0LVrV2RlZakPgUp16dIlXLt2DQMGDMD9+/fVc+vRo0d4/fXXcerUKahUKo3XSNku+mboeLt166axd7F9+/awtLRUbx+lUolffvkF/v7+GnuIXV1d0aNHjyr7l8lk6Nu3L3766Sc8fPhQvfzHH39EixYt1HvXAM3tXVhYiLy8PPj6+uLx48e4cuWK6PdE9RcP1dEL6+OPP0ZCQgI2b96MBQsWlFt/7do1CIKA3r17V/h6U9O/Ph6+vr4IDw9HUVERTp8+DTs7O3h5eaF9+/Y4ffo0unfvjpSUFI3DBBW5efMmgKeHeZ7VrFkzNG3aVOtrnZ2d8f777yMyMhLfffcdfH194efnh4EDB8LKykrra5/10ksviW7r6upablmrVq3w+PFj5OXlwc7OTnRfUpTlqXXr1hrLGzRoAGdnZ2RnZ2ssd3BwKHdSdNOmTfHHH39UOVZKSgrWrVuH3377rVxBWlBQICm3Za5duwYAWg/9FBQUaGxzKdtF3wwdr6OjY7llTZs2VZ+vdu/ePRQVFVU43ypaVpF+/fph+/btOHLkCAYMGICHDx/ip59+wogRIzTmxv/+9z98+eWXOHnyJAoLCzX60LVQpvqFhRO9sJ7d6/Thhx+WW69SqSCTyRAREaE+/+FZjRs3Vj9++eWX8eTJE5w9exanT5+Gr6+vevnp06eRkZGh/svVkEJCQjB48GAcPnwYP//8M5YvX45NmzZh165dcHBwENWHvn/1VNmvuGryZNuKtp8YmZmZGDduHFq3bo2QkBA4OjrCzMwMP/30E7Zt21ZuL4tYwv8/52fOnDnw8PCosM2z8wvQ/3aRwtDxVrZ9hCrOjZLCx8cHTk5O+PHHHzFgwAAkJSWhqKgI/fr1U7d58OABAgMDYWlpiWnTpsHFxQXm5ua4cOECQkNDdd7eVL+wcKIX2qRJk5CQkFDhL6xcXFwgCAJeeukluLm5ae2nY8eOMDMzQ0pKClJSUjB+/HgAT6+1tHv3bpw8eRIAqiycWrZsCeDpX/jOzs7q5Xl5ecjPzxf1nsp+DfXxxx/jzJkzGDlyJGJjY/HJJ5+Ier0U169fL7fs2rVraNSokfqk3SZNmpT7pRvw114jXZTl6cqVKxp5KikpwY0bN9CtWzed+37WkSNHUFJSgg0bNqjHBCD6au2VFY1lMVtaWuotVn0w1nibN28Oc3PzCudbRcsq8+677yIqKgqFhYX44Ycf4OTkBB8fH/X6X3/9FX/++SfCw8M1fsRh7FesJ+PCc5zohebi4oKBAwfim2++wZ07dzTW9e7dG3K5HOHh4eX+8hUEAffv31c/Nzc3h7e3N/7zn//g5s2b6gLJ19cXRUVFiIqKgouLC+zt7bXG061bN5iZmSEmJkZjzO3bt1f5XgoLC1FaWqqxTKFQwMTEBCUlJepljRs3rrCQ0cXZs2dx4cIF9fOcnBwcPnwY3bt3V+9FcHFxQUFBAS5fvqxud/v2bRw8eLBcf2JjK8tTdHS0Rp7i4uJQUFBQ5S/lxCp7D8+OUVBQgD179oh6faNGjQCg3Hvq0KEDXFxcsHXrVo1zbsqUXYupphlrvHK5HN26dcPhw4c1rr92/fp1HD9+XHQ//fr1Q0lJCeLj43H8+PFyh87Lzpd7dnuXlJSUu/wEkTbc40QvvI8++gj79u3D1atX0bZtW/VyFxcXzJgxA2vWrEF2djZ69uwJCwsL3LhxA4cOHcLw4cPVe5aAp0XS5s2bYWVlpf4pfvPmzeHm5oarV69iyJAhVcbSrFkzBAcHY9OmTZg4cSLeeustXLx4EceOHVP/LLsyJ0+exNKlS9G3b1+0atUKSqUS+/btg1wuR58+fdTtvLy88MsvvyAyMhL29vZ46aWX0KlTJ6lpA/C0MBs/frzG5QgAYOrUqeo2/fr1Q2hoKKZMmYIxY8agqKgIsbGxcHNz0yi6pMTWrFkzTJw4EeHh4fjggw/g5+eHq1evYufOnfD29sbAgQN1ej/P6969O8zMzPDRRx/hvffew8OHD7F79240b968XKFdERcXFzRp0gRff/01LCws0LhxY3Ts2BHOzs5Yvnw5JkyYgP79+2PIkCFo0aIFbt26heTkZFhaWmLjxo16eQ9SGHO8U6ZMwYkTJzBy5EiMHDkSKpUKMTExaNu2regrnXt5ecHV1RX//ve/UVJSonGYDnj6Y4emTZsiJCQEY8aMgUwmw759+/R6yJBefNzjRC88V1fXSv+h/fDDD7Fu3TqYmJhg/fr1WL16NY4cOYLu3buXu6hj2V6mzp07a/zS69nzncSYMWMGpk6diosXL2L16tXIzMzE1q1by51D8rx27drhjTfeQFJSElatWoXw8HA0btwYERERGocjQkJC4OXlhS+//BIzZ85UFzu6eOWVV/CPf/wDCQkJWLt2LZo2bYqIiAi0b99e3cbGxgbh4eFo1KgRPv/8c8THx2PmzJnqa149S0psU6dOxcKFC3Hz5k2sXLkSP/74I4YPH46tW7dqXMOpOlq3bo21a9dCJpPhs88+w9dff43hw4cjKChI1OvNzMywatUqyOVyLF68GDNnzlRfIPTVV1/FN998gw4dOiAmJgbLli1DfHw8bG1tRf2K0hCMOd4OHTogIiICTZs2RVhYGOLi4jBt2jS8/vrrks6nevfdd/Hw4UO4urrCy8tLY52NjQ02btwIOzs7fPnll9iyZQu6deuGTz/9VN9vh15gMoGlNhERGamPP/4Y6enpSExMrO1QiABwjxMRERmJoqIijefXrl3DsWPH0LVr11qKiKg8nuNERERGoWfPnhg8eLD6Wl1ff/01zMzM8MEHH9R2aERqLJyIiMgo9OjRA99//z3u3LmDBg0awMfHBzNnzix3wVii2sRznIiIiIhE4jlORERERCK98IfqVCoVSktLYWJiUulVc4mIiKj+EgQBKpUKpqamGpebqcgLXziVlpYiNTW1tsMgIiIiI+ft7Y0GDRpobfPCF05llaO3t7fONwLVRqlUIjU11WD9v4iYM90wb7ph3nTDvEnHnOnGGPJWFkNVe5uAelA4lR2ek8vlBt0ghu7/RcSc6YZ50w3zphvmTTrmTDfGkDcxp/Tw5HAiIiIikVg4EREREYnEwomIiIhIJBZORERERCKxcCIiIiISySgKpz179qBdu3Y4dOhQheuTkpLQt29f9O7dG1OmTEFhYWENR0hERERkBIXTjRs3sHv3bvj4+FS4/uHDh5g/fz7Wr1+PxMRE2NvbY/369TUbJBERERFq+TpOKpUKCxYswIIFC/DZZ59V2ObYsWPw8PCAu7s7AGDUqFEIDg7G3LlzJY2lVCqrHW9l/ebm5uL06dNaL5xla2sLFxcXg8RQ15RtC23bJDMzE3fv3q2yr+LiYpibm2ttIzb3YsbU53YU+x7LxhSTt5pU0/nSlbHlra5g3qRjznRjDHmTMnatFk6RkZHo0qULOnToUGmbnJwcODk5qZ87OTnhzp07KC0thamp+PANdduV3NxcDB02DMVFRVrbmTdsiD1xcXBwcDBIHHVRZdtEbE4BADITQFBpbSIm9zW9HaW8x+fHNIZbCNXFeW8MeauLmDfpmDPd1JW81VrhlJaWhsTERMTExNTIeIa6lPvp06dRXFQEt/dD0dCxTYVtinLScTVyNuzt7Ss9JFmfVHV5/TNnzlSZUwDITz2Km999qZfcixlTn9tR7Ht8dkxvb+9avy1BmZrOV3UYw+0c6iLmTTrmTDfGkLeyGMSotcLp9OnTyM7ORp8+fQAAd+7cQXp6Om7fvo1Ro0ap2zk6OuLnn39WP8/OzoadnZ2kvU2A4S7lXnZ4rqFjG1i4eNVKDHVVZfkoW1ZVTh/nZohqp20sqWOK6UsMKeM9P6YxzKOazpc+GEscdQ3zJh1zppu6krdaOzl81KhROHHiBI4cOYIjR47Ax8cHy5Yt0yiaAKBHjx64ePEiMjKe/iO5c+dOBAQE1EbIREREVM8Z5U1+w8LCYG9vj5EjR8LS0hLLly/H5MmToVQq0bZt20pPJCciIiIyJKMpnKKjo9WPp0+frrHO398f/v7+NR0SERERkYZav44TERERUV3BwomIiIhIJBZORERERCKxcCIiIiISiYUTERERkUgsnIiIiIhEYuFEREREJBILJyIiIiKRWDgRERERicTCiYiIiEgkFk5EREREIrFwIiIiIhKJhRMRERGRSCyciIiIiERi4UREREQkEgsnIiIiIpFYOBERERGJZFqbgwcHB+POnTswMTGBhYUFFixYAE9PT402ycnJmDBhAtzc3NTLvvnmGzRs2LCmwyUiIqJ6rlYLpy+//BJNmjQBABw8eBAhISFISEgo187NzQ379u2r6fCIiIiINNRq4VRWNAFAQUEBZDKZwcZSKpUG6VelUkmKwVBx1CVlOagsF4bIUVW5lzKmPraj1Nc/O6YxzKGazld1GFPe6hLmTTrmTDfGkDcpY9dq4QQAc+bMQXJyMgBg8+bNFbbJzMzE4MGDYWJigiFDhmD06NGSx0lNTa1WnJVJT08X3TYtLQ0mJjytrExl2yQtLU3vY1WVeylj6mM7Sn2Pz45pqLksRU3nSx+MIW91EfMmHXOmm7qSt1ovnFavXg0AiI+PR2hoKCIiIjTWe3l54dixY7CyskJubi4mTJgAGxsb9OvXT9I43t7ekMvleou7TGlpqei2CoUCPj4+eo+hrlEqlUhNTa10m0jZiydWVbmXMqY+tqPU96hQKODt7a01bzWppvNVHVXNN6oY8yYdc6YbY8hbWQxiVLtwKiwsxMmTJ+Hm5gZ3d3ed+xk8eDAWLVqE+/fvw8bGRr3c0tJS/djBwQH9+/dHSkqK5MJJLpcbZINI+UvaUDHUVZXlwxA5qir3UsbUx3aU+vpnxzSGeVTT+dIHY4mjrmHepGPOdFNX8iZ5//n06dMRExMDACgqKsLQoUMxY8YMDBw4EAcOHBDdz4MHD3Dr1i3180OHDsHa2hrW1tYa7W7fvq3+67awsBBJSUnw8PCQGjYRERFRtUne43T69GlMmjQJwNNfwgmCgFOnTiE+Ph4bNmxAnz59RPVTUFCA6dOno7i4GDKZDM2aNcOmTZsgk8kwf/58+Pn5wd/fH4mJiYiNjYVcLodSqUTfvn0xdOhQqWETERERVZvkwqmgoABNmzYFABw/fhy9e/dGo0aN8Pbbb+Pzzz8X3Y+TkxPi4uIqXLdixQr148DAQAQGBkoNk4iIiEjvJB+qc3R0xNmzZ/Ho0SMcP34c3bt3B/D00FuDBg30HiARERGRsZC8xykoKAiffvopGjduDEdHR7z66qsAgFOnTkGhUOg9QCIiIiJjIblwGj16NDp27Ijc3Fx069ZN/asyZ2dnzJgxQ9/xERERERkNnS5H4O3tjXbt2uHGjRtwcXGBqakp3n77bT2HRkRERGRcJJ/j9PjxY/zjH/+Aj48P+vfvj5ycHADAsmXLKr3yNxEREdGLQHLhtGbNGly+fBlRUVEwNzdXL3/99dfxww8/6DU4IiIiImMi+VDd4cOH8e9//7vcLRTatm2LzMxMfcVFREREZHQk73HKy8tD8+bNyy1//PgxZDKZXoIiIiIiMkaSC6cOHTrg6NGj5Zbv3r2bN7AlIiKiF5rkQ3WffPIJJkyYgPT0dCiVSkRFRSEjIwNnz55FdHS0IWIkIiIiMgqS9zj5+vpi3759UCqVUCgU+Pnnn9GsWTN8/fXX6NChgyFiJCIiIjIKOl3HycXFBcuXL9d3LERERERGTVThVFhYKLpDS0tLnYMhIiIiMmaiCidfX98qfzEnCAJkMhkuXbqkl8CIiIiIjI2owikqKsrQcRAREREZPVGFU9euXQ0dBxEREZHR0+nk8Pz8fMTFxSEjIwMA0KZNGwwZMgTW1tb6jI2IiIjIqEi+HMGpU6fg5+eH6OhoPHjwAA8ePEB0dDT8/f1x6tQpSX0FBwdjwIABGDRoEEaNGoWLFy9W2G737t3o3bs3evbsiQULFuDJkydSwyYiIiKqNsl7nJYuXYp+/fph8eLFkMvlAAClUoklS5Zg6dKl+O6770T39eWXX6JJkyYAgIMHDyIkJAQJCQkabbKyshAWFob4+HjY2tpi0qRJ2LVrF0aPHi01dCIiIqJqkVw4Xb9+HWFhYeqiCQDkcjnGjRuHvXv3SuqrrGgCgIKCggp/uXfgwAH4+fnBzs4OADBy5Ehs3LhRcuGkVColtRdLpVJJisFQcRhaZmYm7t69q7VNcXExzM3Nq+zr8ePHyMrKQmlpKUxMyu/0vHz5ss5xVubChQtacy9lzKr6AgBbW1u4uLhUul7qPHh27lRnDonZjlXFLjUGfeSrOvSRt/qIeZOOOdONMeRNytiSCydPT09cuXIFrVu31lh+5coVtG/fXmp3mDNnDpKTkwEAmzdvLrc+JycHTk5O6udOTk7IycmRPE5qaqrk14iRnp4uum1aWlqFhYKxy83NxdBhw1BcVKS9ocwEEEQUkmLb6cGT/DuAzARBQUE12pd5w4bYExcHBweHCtenpaVJGvvZuaPrXBa7HauKvSyequgzX/pgqO+AFx3zJh1zppu6kjfJhVNQUBBWrFiB69evo1OnTgCA33//HTt27MDs2bM1/nIXU0itXr0aABAfH4/Q0FBERERIDUkUb29vjb1k+lJaWiq6rUKhqJM3Qj5z5gyKi4rg9n4oGjq2qbBNfupR3PzuS61txLYra6MPpY8fAIJKdFz66KsoJx1XI2fD3t6+0u0tZU8l8HTueHt7IzU1Vee5LGY7iokdEBe/PvNVHUqlslp5q6+YN+mYM90YQ97KYhBDcuE0c+ZMAMDnn39e4TqZTKbTxTAHDx6MRYsW4f79+7CxsVEvd3R0RGZmpvp5dnY2HB0dpYYNuVxukA0iZQ+SoWIwtLKYGzq2gYWLV4VtHudmVNlGbLuyNvokNi599FVG2/aWOg+e7UvXeSRmO1Y0nra+xNBHvvShrn7+ahvzJh1zppu6kjfJhdPhw4f1MvCDBw/w+PFjtGjRAgBw6NAhWFtbl7ukQZ8+fTBy5EhMnToVtra2iI2NRUBAgF5iICIiIpJCcuH07PlG1VFQUIDp06ejuLgYMpkMzZo1w6ZNmyCTyTB//nz4+fnB398fzs7OmDZtGkaOHAng6cU4R4wYoZcYiIiIiKTQ6QKYt27dQkpKCvLy8sqd6yD2JFwnJyfExcVVuG7FihUaz4cPH47hw4frEioRERGR3kgunL799lssXLgQZmZmGuciAYBMJtPLr5eIiIiIjJHkwiksLAyTJ0/GxIkT6+RP64mIiIh0JbnyKSoqQkBAAIsmIiIiqnckVz9Dhw7F/v37DRELERERkVGTfKhu1qxZmDhxIo4fPw6FQgFTU80u5s2bp7fgiIiIiIyJ5MJp06ZNOHHiBNzc3Mqtq+hec0REREQvCsmFU2RkJP71r39hyJAhhoiHiIiIyGhJPsepQYMG6NKliyFiISIiIjJqkgunoKAgxMTEGCIWIiIiIqMm+VDduXPncPLkSSQlJaFt27blTg4PDw/XW3BERERExkRy4dSkSRP07t3bELEQERERGTXJhdPKlSsNEQcRERGR0ePlv4mIiIhEkrzHCQD279+PH3/8ETk5OXjy5InGuvj4eL0ERkRERGRsJO9xioqKwrx582Bra4uLFy/C29sb1tbWyMrKwptvvmmIGImIiIiMguQ9Tjt37sSyZcvQv39/fPvtt5gwYQKcnZ0RFhaG/Px8Q8RIREREZBQk73HKyclB586dAQANGzbEw4cPAQCDBg3C999/r9/oiIiIiIyI5D1Otra2yM/Ph5OTExwdHfHbb7+hffv2uHHjBgRBEN1PcXExPvnkE2RkZMDc3BzNmzfH4sWL4erqqtHuxo0b6NWrFxQKhXrZunXr4OLiIjV0IiIiomqRXDi99tprOHLkCDw9PTF06FCsXLkSBw4cwPnz59GrVy9JfY0YMQJvvvkmZDIZYmJisGDBAkRHR5drZ2FhgX379kkNlYiIiEivJBdOy5Ytg0qlAgCMHj0a1tbWOHv2LPz8/DBixAjR/Zibm+Ott95SP+/UqRO2bt0qNRzRlEqlQfoty4XYGAwVhyHVxZiNgbbtLTWnz/al6/aQ8rqq5qoh5oShPh/VzVt9xbxJx5zpxhjyJmVsyYWTiYkJTEz+OjUqICAAAQEBUrspJyoqCn5+fhWue/z4MYYOHQqVSgV/f39MmjQJcrlcUv+pqanVjrEi6enpotumpaVp5K6uSEtLq+0Q6iRt21tqTp/tS9e5LGXMquaqIeaEoT8fhvoOeNExb9IxZ7qpK3mTXDitW7cOkydPLvcFV1BQgEWLFuGLL76QHMTGjRuRmZmJbdu2lVtnb2+PY8eOoXnz5vjzzz/xySefYOvWrZgwYYKkMby9vSUXW2KUlpaKbqtQKODj46P3GAxNyl41+ou27S01pwqFAt7e3khNTdV5LksZs6q5aog5YajPh1KprFbe6ivmTTrmTDfGkLeyGMSQXDjFxcXh559/xueffw5nZ2cAQHJyMubOnQtbW1up3WHLli1ITEzEtm3b0KhRo3LrGzRogObNmwMArK2tMXToUPznP/+RXDjJ5XKDbBApfyEbKgZDq4sxGwNt21tqTp/tS9d5JOU1VY1hiDlh6M9HXf381TbmTTrmTDd1JW+S94snJCSgRYsWGDRoEHbt2oXPPvsM48ePx6BBg/D1119L6isyMhLff/89IiMj0aRJkwrb3Lt3T3118pKSEiQmJsLDw0Nq2ERERETVJnmPU9OmTREWFoYvvvgCCxcuhKmpKSIiIvD6669L6ic3NxerVq2Cs7MzgoKCADzdu7R7926EhYXB3t4eI0eOREpKCtauXQsTExMolUq89tprmDRpktSwiYiIiKpNp3vVRUdHIyoqCgEBAbhw4QKWL1+ONWvWoH379qL7cHBwwB9//FHhuunTp6sf9+7dG71799YlTCIiIiK9klw4jR8/HufPn8eqVavQt29fFBUVYeXKlRg+fDimTp0q+dwjIiIiorpC8jlOKpUKCQkJ6Nu3L4Cnt11ZsmQJ1q5di+3bt+s9QCIiIiJjIXmPU2RkZIXL3377bSQkJFQ7ICIiIiJjpdPV5k6fPo3Zs2djxIgRuHXrFgBg7969uHLlil6DIyIiIjImkgunAwcOYPz48WjYsCEuXryIkpISAEBhYSE2bdqk9wCJiIiIjIXkwmnDhg1YsmQJli9fDlPTv470denSBRcvXtRrcERERETGRHLhdPXqVfj6+pZbbmVlhQcPHuglKCIiIiJjJLlwsrW1RWZmZrnlKSkp6luwEBEREb2IJBdOw4cPx4oVK/D7779DJpPh1q1bSEhIwGeffYaRI0caIkYiIiIioyD5cgQffvghVCoVxo0bh8ePHyMwMBANGjRAcHAwxowZY4gYiYiIiIyC5MJJJpNh0qRJGD9+PDIzM/Ho0SO4u7vDwsLCEPERERERGQ2d7lUHPL0hb5s2bfQZCxEREZFR0+kCmERERET1EQsnIiIiIpFYOBERERGJJKpwGjx4MPLz8wEA4eHhePz4sUGDIiIiIjJGogqnjIwMdbG0fv16PHr0yKBBERERERkjUb+q8/DwwLx58/Dyyy9DEARs2bIFjRs3rrDtlClTRA1cXFyMTz75BBkZGTA3N0fz5s2xePFiuLq6lmublJSEzz77DCqVCgqFAqtWrYKlpaWocYiIiIj0RdQep5UrV8La2hpJSUmQyWQ4fvw4Dh06VO6/w4cPSxp8xIgR2L9/PxISEuDv748FCxaUa/Pw4UPMnz8f69evR2JiIuzt7bF+/XpJ4xARERHpg6g9Tq1bt8a///1vAED79u2xbds2NG/evFoDm5ub46233lI/79SpE7Zu3Vqu3bFjx+Dh4QF3d3cAwKhRoxAcHIy5c+dKGk+pVFYr3sqoVCpJMRgqDkOqizEbA23bW2pOn+1L1+0h5XVVzVVDzAlDfT6qm7f6inmTjjnTjTHkTcrYki+AefnyZakvESUqKgp+fn7llufk5MDJyUn93MnJCXfu3EFpaSlMTcWHn5qaqpc4n5eeni66bVpaGkxM6t4PGdPS0mo7hDpJ2/aWmtNn+9J1LksZs6q5aog5YejPh6G+A150zJt0zJlu6kredLpyeGZmJrZv346MjAwAQJs2bRAUFAQXFxedgti4cSMyMzOxbds2nV4vhre3N+Ryud77LS0tFd1WoVDAx8dH7zEYmpS9avQXbdtbak4VCgW8vb2Rmpqq81yWMmZVc9UQc8JQnw+lUlmtvNVXzJt0zJlujCFvZTGIIblwOn78OCZNmgQPDw906dIFAHDmzBkEBARg48aN6N69u6T+tmzZgsTERGzbtg2NGjUqt97R0RE///yz+nl2djbs7Owk7W0CALlcbpANIuUvZEPFYGh1MWZjoG17S83ps33pOo+kvKaqMQwxJwz9+airn7/axrxJx5zppq7kTXLhtGbNGowbNw6zZ8/WWB4aGorQ0FBJhVNkZCS+//57REZGokmTJhW26dGjB5YuXYqMjAy4u7tj586dCAgIkBo2ERERUbVJPqEgIyMDw4YNK7d86NChks73yc3NxapVq/DgwQMEBQVh0KBB+Pvf/w4ACAsLQ2xsLADA0tISy5cvx+TJk9GrVy/k5ubi448/lho2ERERUbVJ3uPUrFkzXLp0Ca1atdJYfunSJUm/tHNwcMAff/xR4brp06drPPf394e/v7/UUImIiIj0SnLh9Pe//x0LFy5EVlaWxjlOERERGDdunL7jIyIiIjIakgunyZMnw9LSElu3bsUXX3wBALC3t8eUKVMQFBSk9wCJiIiIjIXkwkkmk2HcuHEYN24cCgsLAYC3PyEiIqJ6QafrOJVhwURERET1Sd27jDURERFRLWHhRERERCQSCyciIiIikSQVTk+ePMHYsWNx7do1A4VDREREZLwkFU5mZmaVXrSSiIiI6EUn+VDdwIEDERcXZ4hYiIiIiIya5MsRKJVKxMbG4r///S86dOiARo0aaayfN2+e3oIjIiIiMiaSC6e0tDR4enoCAK5evaqxTiaT6ScqIiIiIiMkuXCKjo42RBxERERERk/nyxFcv34dx48fR1FREQBAEAS9BUVERERkjCTvcbp//z5mzJiB5ORkyGQyJCYmwtnZGf/4xz/QtGlThISEGCJOIiIioloneY/TypUrYWpqiqNHj6Jhw4bq5f369cPx48f1GhwRERGRMZG8x+nnn3/Gli1b4ODgoLG8VatWuHnzpt4CIyIiIjI2kvc4PXr0SGNPU5k///wTDRo0kNTX8uXL4efnh3bt2uHSpUsVtklOTkbHjh0xaNAg9X9l51URERER1STJhZOvry/27t2rsUylUuGrr77Cq6++KqmvPn36YOfOnXByctLazs3NDfv27VP/V1HhRkRERGRokg/Vffrppxg3bhzOnz+PJ0+e4PPPP0d6ejry8/MRGxsrqa9XXnlF6vA6UyqVBulXpVJJisFQcRhSXYzZGGjb3lJz+mxfum4PKa+raq4aYk4Y6vNR3bzVV8ybdMyZbowhb1LGllw4KRQKHDhwADExMbCwsMCjR4/Qq1cvjB49Gvb29lK7EyUzMxODBw+GiYkJhgwZgtGjR0vuIzU11QCRAenp6aLbpqWlwcRE5ytA1Jq0tLTaDqFO0ra9peb02b50nctSxqxqrhpiThj682Go74AXHfMmHXOmm7qSN8mFEwBYWVlh0qRJ+o6lQl5eXjh27BisrKyQm5uLCRMmwMbGBv369ZPUj7e3N+Ryud7jKy0tFd1WoVDAx8dH7zEYmpS9avQXbdtbak4VCgW8vb2Rmpqq81yWMmZVc9UQc8JQnw+lUlmtvNVXzJt0zJlujCFvZTGIoVPhlJ+fj7i4OGRkZAAA2rRpgyFDhsDa2lqX7rSytLRUP3ZwcED//v2RkpIiuXCSy+UG2SBS/kI2VAyGVhdjNgbatrfUnD7bl67zSMprqhrDEHPC0J+Puvr5q23Mm3TMmW7qSt4k7xc/deoU/Pz8EB0djQcPHuDBgweIjo6Gv78/Tp06pfcAb9++rf7rtrCwEElJSfDw8ND7OERERERVkbzHaenSpejXrx8WL16srgyVSiWWLFmCpUuX4rvvvhPd18KFC3H06FHcvXsX48ePh4WFBQ4ePIj58+fDz88P/v7+SExMRGxsLORyOZRKJfr27YuhQ4dKDZuIiIio2iQXTtevX0dYWJjG7jS5XI5x48aVu0xBVZYuXVrh8hUrVqgfBwYGIjAwUGqYRERERHon+VCdp6cnrly5Um75lStX0L59e70ERURERGSMRO1xunz5svpxUFAQVqxYgevXr6NTp04AgN9//x07duzA7NmzDRMlERERkREQVTj97W9/g0wmgyAI6mWff/55uXazZs2S/Gs3IiIiorpCVOF0+PBhQ8dBREREZPREFU5V3UuOiIiIqD7Q6QKYt27dQkpKCvLy8spdQTgoKEgvgREREREZG8mF07fffouFCxfCzMwMNjY2GutkMhkLJyIiInphSS6cwsLCMHnyZEycOLFO3rCWiIiISFeSK5+ioiIEBASwaCIiIqJ6R3L1M3ToUOzfv98QsRAREREZNcmH6mbNmoWJEyfi+PHjUCgUMDXV7GLevHl6C46IiIjImEgunDZt2oQTJ07Azc2t3DqZTKaXoIiIiIiMkeTCKTIyEv/6178wZMgQQ8RDREREZLQkn+PUoEEDdOnSxRCxEBERERk1yYVTUFAQYmJiDBELERERkVGTfKju3LlzOHnyJJKSktC2bdtyJ4eHh4frLTgiIiIiYyK5cGrSpAl69+5tiFiIiIiIjJrkwmnlypV6G3z58uU4cuQIsrOzsXfvXnh4eFTYbvfu3YiIiIBKpcJrr72GRYsWwczMTG9xEBEREYlRq5f/7tOnD3bu3AknJ6dK22RlZSEsLAw7duzAwYMHcffuXezatasGoyQiIiJ6SvIeJz8/P63Xazp8+LDovl555ZUq2xw4cAB+fn6ws7MDAIwcORIbN27E6NGjRY8DAEqlUlJ7sVQqlaQY9BFHZmYm7t69W2W74uJimJuba21ja2sLFxcXrW0MlbsX3YULFyrN3eXLlyX39eTJE6Snp6O0tLTcLY/EbGspY2qLXWpfYunr81FRv8/+v4yYz5GYvALiPkf6JPY7oDpxVZY3qlxt5qwm5oShKJVK5Obm4vTp01pv52bI2KVsM8mF09ixYzWel5aW4uLFizhx4gTGjx8vtbsq5eTkaOyRcnJyQk5OjuR+UlNT9RmWWnp6uui2aWlp1b7HX25uLoYOG4bioqKqG8tMAEF7YWfesCH2xMXBwcGh0jZpaWlSw6zXnuTfAWQmCAoKqrm+RGxrvY5nAPr4fGjz7HeA6M+RyLyK+Rzpi5TvAH3EZajvzhdZTeespueEvomN31hir3bhVGbHjh04f/58tQMyFG9vb8jlcr33W1paKrqtQqGAj49PtcY7c+YMiouK4PZ+KBo6tqm0XX7qUdz87kut7Ypy0nE1cjbs7e21xiVlrxoBpY8fAIJKa+7Lto8++xI7J6o7npT4pdDH56MiSqUSqampGt8BYj5HYvMq9nOkL2K/A6obV0V5I+1qK2c1NScM5fTp01XGb+jYy7adGJILp8q8+eabWLNmjV5PHgcAR0dHZGZmqp9nZ2fD0dFRcj9yudwgE1nKX8j6iKHs9Q0d28DCxavSdo9zM0S1ExMXvzR1oy33ZdtHn32JnRPVHU9qX2IZ6jNaUf9iPkdSPkPP929IYr8Dnm1fnbhq6n29SGo6ZzU9J/St7N9Rffx7VRP0tl98//79sLa21ld3an369MGRI0dw584dCIKA2NhYBAQE6H0cIiIioqpI3uP0t7/9TePkcEEQcPfuXeTl5WHRokWS+lq4cCGOHj2Ku3fvYvz48bCwsMDBgwcxf/58+Pn5wd/fH87Ozpg2bRpGjhwJAOjatStGjBghNWwiIiKiapNcOPXs2VPjuUwmQ7NmzdC1a1e4u7tL6mvp0qUVLl+xYoXG8+HDh2P48OHSAiUiIiLSM8mF05QpUwwRBxEREZHRq9ULYBIRERHVJaL3OLVv317rhS+Bp4ftLl68WO2giIiIiIyR6MIpPDy80nW//fYboqOjeb0fIiIieqGJLpyePykcAK5cuYI1a9YgKSkJAwYMwLRp0/QaHBEREZEx0ekCmLdu3cK6deuwd+9evPHGG9i7dy8UCoW+YyMiIiIyKpIKp4KCAmzcuBExMTHw8PDAtm3b4Ovra6jYiIiIiIyK6MIpIiICX331FWxtbbFmzZoKD90RERERvchEF05r1qxBw4YN4eLigr1792Lv3r0VttN2EjkRERFRXSa6cHr+VitERERE9Y3owmnVqlWGjIOIiIjI6PHK4UREREQisXAiIiIiEomFExEREZFILJyIiIiIRGLhRERERCQSCyciIiIikXS6V52+XLt2DSEhIbh//z4sLS2xatUqtG3bVqNNcnIyJkyYADc3N/Wyb775Bg0bNqzpcImIiKieq9XCaeHChRg+fDiGDBmC/fv3IyQkBHv27CnXzs3NDfv27auFCImIiIj+UmuF071793D+/Hls3boVANCnTx8sW7YM169fh6urq97HUyqVeu8TAFQqlaQYqhuHId5HVXEZKndEz9LH56Oyfp/9//OP9TlOTXxWpI6ha1wV5Y20q62c1dScMJSa/ne0sn7FqrXCKScnB3Z2djA1fRqCTCaDo6Mjbt68Wa5wyszMxODBg2FiYoIhQ4Zg9OjRksdLTU3VS9zPS09PF902LS0NJibVO60sLS2tWq+vrE9tcRliTKLn6ePzoc2z3wG18TnS5zhS21cnLkN9d77IajpnNT0n9K2m/x2trlo9VCeGl5cXjh07BisrK+Tm5mLChAmwsbFBv379JPXj7e0NuVyu9/hKS0tFt1UoFPDx8anWeFIqc7GqissQYxI9Tx+fj4oolUqkpqZqfAfUxudIX6TGrmtcFeWNtKutnNXUnDCUmv53tCJl206MWiucHB0dcefOHZSWlsLU1BSCICAnJwctW7bUaGdpaal+7ODggP79+yMlJUVy4SSXyw0ykaVUvvqIwRDvoaq4+KVJNcFQn9GK+q+Nz5E+x5Havjpx1dT7epHUdM5qek7oW03/O1pdtba/q3nz5vDy8kJCQgIA4MCBA2jRokW5w3S3b99WV9OFhYVISkqCh4dHjcdLREREVKuH6pYsWYJ58+Zh06ZNsLCwwMqVKwEA8+fPh5+fH/z9/ZGYmIjY2FjI5XIolUr07dsXQ4cOrc2wiYiIqJ6q1cKpdevW+Oabb8otX7FihfpxYGAgAgMDazIsIiIiogoZz2n1REREREaOhRMRERGRSCyciIiIiERi4UREREQkEgsnIiIiIpFYOBERERGJxMKJiIiISCQWTkREREQisXAiIiIiEomFExEREZFILJyIiIiIRGLhRERERCQSCyciIiIikVg4EREREYnEwomIiIhIJBZORERERCKxcCIiIiISqVYLp2vXruG9995Dnz59MHToUPzvf/+rsN3u3bvRu3dv9OzZEwsWLMCTJ09qOFIiIiKiWi6cFi5ciOHDh+PAgQOYMGECQkJCyrXJyspCWFgYduzYgYMHD+Lu3bvYtWtXLURLRERE9Z1pbQ187949nD9/Hlu3bgUA9OnTB8uWLcP169fh6uqqbnfgwAH4+fnBzs4OADBy5Ehs3LgRo0ePFjWOIAgAgJKSEsjlcj2/C0ClUsHCwgKyu1ehNJVV2EZ29yosLCxw6dIlKJVKrf2ZmJhApVJVuj4tLa3K8QBAnp+rt7jEjClmPLHt2Ff96kvsPKzqs1FZO5VKhStXrqC0tBQmJk//VtTnnDZ0/M8T+x1Q3biez5uY+PX1HutqX8/mzNTUtMbiqqk5oUs7MW0uX74s+t8rpVKJkpKSKmOTqiwfZTWDNjJBTCsDOH/+PGbNmoUDBw6olw0bNgyzZs3C66+/rl62bNky2NvbY+LEiQCA9PR0fPDBBzh69KiocUpKSpCamqrX2ImIiOjF4+3tjQYNGmhtU2t7nGqKqakpvL29YWJiApms8kqciIiI6idBEKBSqWBqWnVZVGuFk6OjI+7cuaPepSkIAnJyctCyZcty7TIzM9XPs7Oz4ejoKHocExOTKqtHIiIiIjFq7eTw5s2bw8vLCwkJCQCensvUokULjfObgKfnPh05cgR37tyBIAiIjY1FQEBAbYRMRERE9VytneMEAFeuXMG8efPw559/wsLCAitXrkS7du0wf/58+Pn5wd/fHwCwa9cubN68GQDQtWtXLFmyBGZmZrUVNhEREdVTtVo4EREREdUlvHI4ERERkUgsnIiIiIhEYuFEREREJBILJyIiIiKRXvgLYOqbn58fzMzM0LBhQwDAxIkT0a9fP1y7dg0hISG4f/8+LC0tsWrVKrRt27aWo60dy5cvx5EjR5CdnY29e/fCw8MDALTmiPmrPG+VzTmAeSsuLsYnn3yCjIwMmJubo3nz5li8eDFcXV1x7949zJkzB1lZWWjQoAEWLVqEV155BQC0rqsPtOVtzJgxyM7OhpWVFQBg8ODBGDduHADmDQCCg4Nx584dmJiYwMLCAgsWLICnpye/37SoLGd19rtNIEneeecd4eLFi+WWjxkzRtizZ48gCILw448/CkOGDKnp0IzGr7/+KuTk5JTLlbYcMX+V562yOScIzFtRUZFw9OhRQaVSCYIgCNHR0UJgYKAgCIIQEhIirF27VhAEQfj999+FHj16CCUlJVWuqw+05S0wMFA4ePBgha+r73kTBEHIz89XP05MTBQGDBggCAK/37SpLGd19buNh+r0oOyGxQMHDgTw9KKdubm5uH79ei1HVjteeeUVODg4aCzTliPm76mK8qYN8waYm5vjrbfeUt9OqVOnTsjOzgYA7N+/H++99x4AoGPHjrC3t8epU6eqXFcfaMubNvU9bwDQpEkT9eOCggLIZDJ+v1WhopxpY+w546E6HcyZMwfA05sBzp49Gzk5ObCzs1Pf40Ymk8HR0RE3b94sdyX0+kpbjqysrJi/Kjw/55o1a8Z5V4GoqCj4+fnh/v37ePLkCezs7NTrnJyccPPmTa3r6quyvJUJDQ1FWFgY3N3dMWvWLDg7OzNvz5gzZw6Sk5MBAJs3b+b3mwjP5+zZ5UDd+m7jHieJYmJi8N133+Hbb7+FjY0N5s6dW9sh0QuOc06cjRs3IjMzE7NmzartUOqU5/O2evVq7N+/HwkJCfD19cXEiRNrOULjs3r1avz000+YMWMGQkNDazucOqGinNXV7zYWThKV3YTYzMwMY8eOxenTpzVuWAyg0hsW12facsT8aVfRnAO057S+2bJlCxITExEREYFGjRrBxsYGpqamuHPnjrpNdnY2WrZsqXVdffN83gCob6Iuk8kQGBiIrKws3L9/n3mrwODBg5GcnAwHBwd+v4lUlrP79+/X2e82Fk4SPHr0CA8ePFA///777+Hp6Sn6hsX1mbYcMX+Vq2zOAeJvlP2ii4yMxPfff4/IyEiNcyn69u2Lr7/+GgBw7tw53Lp1S/0LMG3r6ouK8lZaWoq7d++q2xw4cAC2trawsbEBwLw9ePAAt27dUj8/dOgQrK2t+f2mRWU5Mzc3r7PfbbxXnQRZWVmYOnUqlEolAOCll17C/Pnz8dJLL1V6w+L6aOHChTh69Cju3r0La2trWFhY4ODBg1pzxPxVnLetW7dWOucA5i03NxdvvfUWnJ2dYWFhAQBo0KABdu/ejbt372LOnDm4ceMGzMzM8M9//hOvvfYaAGhdVx9Ulrft27cjMDAQT548gUwmg42NDebNm4f27dsDYN6ys7Mxffp0FBcXQyaToVmzZpg7dy48PDz4/VaJynJmaWlZZ7/bWDgRERERicRDdUREREQisXAiIiIiEomFExEREZFILJyIiIiIRGLhRERERCQSCyciIiIikVg4EREREYnEwomIat2NGzfQrl07XLp0qbZDUcvIyMDw4cPh7e2NQYMG6bXvMWPGYMWKFXrtk4hqBgsnIkJISAjatWuncddy4OntEYzlar01bd26dWjUqBH279+Pbdu2VdiGBRBR/cPCiYgAAObm5oiIiEB+fn5th6I3JSUlOr82MzMTL7/8MpycnNT3aiMiYuFERACAbt26wdbWFps2baq0zbp168odttq2bRv8/PzUz0NCQvDxxx9j48aN6NatG3x9fREeHo7S0lJ89tln6Nq1K958803s2bOnXP9XrlzBe++9B29vb/Tv3x+//vqrxvq0tDR88MEH6Ny5M7p164ZPP/0UeXl56vVjxozB0qVLsWLFCrz66qsYP358he9DpVIhPDwcb775Jjp06IBBgwbh2LFj6vXt2rXDhQsXsH79erRr1w7r1q0r10dISAh+/fVXREVFoV27dmjXrh1u3LgBAPj1118xbNgwdOjQAW+88QZCQ0PVd3qvyNGjR/Hyyy+rb2qak5OD6dOnw9fXF127dsWkSZPUfT+b4y1btuCNN97Aq6++iiVLluDJkyfqNjt27EDv3r3h7e2Nbt26Ydq0aZWOT0TisXAiIgCAiYkJZs6ciZiYGOTm5larr5MnT+L27duIiYlBSEgI1q1bh4kTJ6Jp06bYtWsX3nvvPSxatKjcOKtXr8b777+PvXv3wsfHBx999BHu378P4Old1seOHQtPT0/ExcXhq6++wr179zBjxgyNPuLj42FmZobY2FgsWbKkwviioqIQGRmJuXPnIiEhAW+88QY+/vhjXLt2DQBw4sQJtG3bFsHBwThx4gSCg4PL9TF//nx07twZw4cPx4kTJ3DixAk4Ojri1q1b+PDDD+Ht7Y19+/Zh8eLFiIuLw4YNGyqM5bvvvsPMmTMRGhqKgQMH4smTJxg/fjwsLCywY8cOxMbGonHjxvjggw809qAlJycjMzMT27dvx6pVqxAfH4/4+HgAQGpqKlasWIFp06Zh//79+Oqrr+Dr6ytq2xGRdiyciEitV69e8PDwwNq1a6vVj7W1NRYsWIDWrVtj2LBhcHNzQ1FRET766CO0atUKEydOhJmZGVJSUjReN3r0aPTp0wfu7u5YvHgxrKysEBcXBwCIiYmBp6cnZs6cCXd3d3h6euJf//oXkpOTcfXqVXUfrVq1wpw5c9C6dWu0bt26wvi2bNmCCRMmICAgAK1bt8ann36K9u3bY/v27QAAOzs7yOVyNG7cGHZ2drCwsCjXh5WVFczMzNCwYUPY2dmpX7Nz5044ODhg4cKFcHd3R8+ePTF16lRs3boVKpVKo48dO3ZgyZIl2LhxI9555x0AwA8//ACVSoUVK1agXbt2cHd3x8qVK5GTk6OxB65p06bqMd555x289dZb+OWXXwA83WPVqFEjvP3223BycoKnpyeCgoKkbkYiqoBpbQdARMZl9uzZGDt2bKWHucRo06YNTEz++rvM1tYWbdu2VT+Xy+WwtrbGvXv3NF7XuXNn9WNTU1N06NABV65cAQBcvnwZycnJGm3KZGZmws3NDQDg5eWlNbbCwkLcvn0bXbp00VjepUsXXL58WeQ7rFxGRgY6d+4MmUymXvbyyy/j0aNHyM3NRcuWLQEABw4cQF5eHnbu3ImOHTuq216+fBmZmZnl4isuLkZmZqb6eZs2bSCXy9XP7ezskJaWBuDpYdeWLVuiZ8+e6NGjB3r06IFevXqhUaNG1X5/RPUdCyci0vDKK6/gjTfewJo1azBkyBCNdTKZDIIgaCyr6NwdU1PNrxaZTFbhsuf3wGjz6NEjvPPOO5g9e3a5dXZ2durHdaU48PT0xIULF7Bnzx54e3urC61Hjx7By8sLoaGh5V7TrFkz9eOK8lm2bSwtLREfH49ff/0VJ06cwNq1axEeHo64uDg0adLEgO+K6MXHQ3VEVM6sWbOQlJSEs2fPaixv1qwZ7t69q1E86fPaS7/99pv6cWlpKS5cuKA+3Obl5YX//e9/cHJygqurq8Z/jRs3Fj2GpaUl7O3tcebMGY3lZ86cQZs2bSTFa2ZmVq74c3d3x9mzZzVylJKSAgsLCzg4OKiXOTs7IyoqCocPH8ayZcvUy728vHD9+nU0b9683Pu0srISHZupqSm6deuGOXPmICEhAdnZ2Th58qSk90dE5bFwIqJy2rVrhwEDBiA6Olpj+auvvoq8vDxEREQgMzMTO3bswPHjx/U27s6dO3Hw4EFkZGRg6dKlyM/Px9ChQwEAo0aNQn5+PmbOnIlz584hMzMTx48fx7x586BUKiWNM378eEREROCHH37AlStXEBoaisuXL0s+D8jJyQm///47bty4gby8PKhUKowaNQq5ublYtmwZMjIycOjQIaxbtw7vv/++xuFLAHBzc0NUVBQSExPV14MaMGAAbGxsMGnSJJw+fRpZWVlITk7G8uXLRZ+0n5SUhKioKFy6dAnZ2dnYu3cvVCqV+nAmEemOh+qIqELTpk3DDz/8oLHM3d0dixYtwqZNm7Bhwwb07t0bwcHB2LVrl17GnDVrFjZv3oxLly7B1dUVGzZsUB+eatGiBWJjYxEaGorx48ejpKQELVu2RI8ePcoVJFUJCgpCYWEhVq1ahby8PLi7u+P//u//0KpVK0n9BAcHIyQkBAEBASgqKsLhw4fx0ksvYfPmzVi9ejV27doFa2trDBs2DJMmTaqwj9atW2P79u0YM2YM5HI5QkJCEBMTg9DQUEyZMgUPHz5EixYt8Prrr8PS0lJUXFZWVjh48CDCw8NRXFwMV1dXrFmzRuM8MyLSjUx4/oQFIiIiIqoQD9URERERicTCiYiIiEgkFk5EREREIrFwIiIiIhKJhRMRERGRSCyciIiIiERi4UREREQkEgsnIiIiIpFYOBERERGJxMKJiIiISCQWTkREREQi/T93F9D4gtw71gAAAABJRU5ErkJggg==","text/plain":["
"]},"metadata":{},"output_type":"display_data"}],"source":["def filter_and_plot(dataset_split_name, dataset_split_data, combined_token_counts, ax):\n"," # Filter out rows with more than 2048 tokens\n"," valid_indices = [i for i, count in enumerate(combined_token_counts) if count <= 2048]\n"," print(f\"Number of valid rows in {dataset_split_name}: {len(valid_indices)}\")\n"," print(f\"Removing {len(dataset_split_data) - len(valid_indices)} rows from {dataset_split_name}...\")\n","\n"," # Extract valid rows based on indices\n"," valid_dataset = [dataset_split_data[i] for i in valid_indices]\n","\n"," # Re-calculate token counts for the valid dataset\n"," filtered_instruction_counts, filtered_input_content_counts, filtered_expected_output_counts, valid_combined_counts = tokenize_and_count(valid_dataset)\n","\n"," # Plot the new distribution for valid rows\n"," plot_distribution(valid_combined_counts, f\"New distribution after filtering {dataset_split_name}\", ax)\n","\n","\n","\n","# Create a figure with subplots\n","fig, axs = plt.subplots(3, 1, figsize=(6, 9)) # Adjust figsize as necessary\n","\n","# Assuming the 'dataset' variable is a dictionary containing data splits 'train', 'test', and 'val'\n","for i, split_name in enumerate(['train', 'test', 'val']):\n"," # Tokenize and count for the specific dataset split\n"," instruction_counts, input_content_counts, expected_output_counts, combined_counts = tokenize_and_count(dataset[split_name])\n","\n"," # Filter datasets based on token count and plot the new distribution\n"," filter_and_plot(split_name, dataset[split_name], combined_counts, axs[i])\n","\n","plt.tight_layout()\n","plt.show()"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"2sifZa8A9BwV","outputId":"0de7579c-203d-4505-8af5-8d487e9088b6"},"outputs":[{"name":"stdout","output_type":"stream","text":["No entries removed due to token count. Skipping saving.\n"]}],"source":["# Initialize a flag to indicate whether any entries were removed in any split\n","entries_removed = False\n","\n","# Iterate over each split in the dataset\n","for split_name in ['train', 'test', 'val']:\n"," # Get the original length of the split\n"," original_length = len(dataset[split_name])\n","\n"," # Tokenize and count tokens in the split\n"," _, _, _, combined_counts = tokenize_and_count(dataset[split_name]) # Corrected to unpack four values\n","\n"," # Determine valid indices (entries with <= 2048 tokens)\n"," valid_indices = [i for i, count in enumerate(combined_counts) if count <= 2048]\n","\n"," # Check if any entries were removed\n"," if len(valid_indices) < original_length:\n"," entries_removed = True\n","\n"," # Update the dataset split with filtered entries\n"," # Note: This assumes dataset[split_name] is compatible with .select() method (Hugging Face datasets)\n"," dataset[split_name] = dataset[split_name].select(valid_indices)\n","\n","# Flag to control execution of subsequent code\n","continue_execution = entries_removed # Simplified logic\n","\n","if continue_execution:\n"," # Save the filtered dataset to disk\n"," dataset.save_to_disk('new_sum_qna_data')\n"," print(\"Dataset saved successfully.\")\n","else:\n"," print(\"No entries removed due to token count. Skipping saving.\")\n"]},{"cell_type":"markdown","metadata":{"id":"kXzTKu99w3g4"},"source":["---\n","\n","## 4. Near-deduplication Using Embeddings\n","\n","* Near-deduplication with embeddings is a technique that employs vector representations to effectively identify and manage nearly identical data entries.\n","\n","* By transforming data into these vectors (embeddings), we can quantitatively measure how similar different pieces of data are. This transformation significantly improves our ability to manage large datasets, where sorting through and removing near-duplicates manually would be impractical.\n","\n","* Widely used in fields like database management, information retrieval, and machine learning, this approach is crucial for efficient data handling and analysis.\n","\n","---\n","\n","### We Will Not Perform Deduplication on Our Summarisation + Questions & Answers Dataset.\n","\n","* **Intentional Repetition for Emphasis**: In educational contexts, certain concepts may be intentionally repeated to underscore their significance. Deduplication could diminish the dataset's educational effectiveness by removing these purposeful repetitions.\n","\n","* **Variations of Similar Questions**: Dataset often feature questions that, while seemingly similar, include minor variations in wording, options, or context. Inadequately designed deduplication algorithms risk eliminating these nuances, thereby losing valuable elements of the dataset.\n","\n","* **Difficulty in Defining \"Duplicates\"**: Identifying duplicates within the dataset poses a significant challenge, as questions that appear identical might differ in subtle yet crucial ways. These distinctions often represent unique learning opportunities that would be lost through deduplication.\n","\n","---\n"]},{"cell_type":"markdown","metadata":{"id":"TOCspcgXNOav"},"source":["## 5. Top-k sampling\n","\n","Only keep the top k samples with the most tokens.\n","\n","---\n","\n","### Decision on \"Top-k Sampling\" for Our Dataset\n","\n","\n","We have decided against employing \"Top-k sampling\" to select only the top k samples with the most tokens in our dataset. This approach does not align with the core objectives of dataset development for several critical reasons:\n","\n","\n","**Practical Considerations**\n","\n","* Favoring question length over substance could detract from the dataset's quality, as longer questions do not necessarily equate to higher educational value. Succinct yet profound questions are typically the most beneficial and stimulating for learners.\n","\n","* Given these considerations, we conclude that \"Top-k sampling,\" which prioritizes token count, falls short of fulfilling the requirements of our dataset. The true merit of a valuable dataset resides in its diverse and balanced assortment of topics and difficulty levels, not merely in question length. This philosophy ensures our dataset remains versatile and effective across various educational and machine learning applications.\n","---"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":244,"referenced_widgets":["a6956d1103da4062823dc056ab9330a4","d15ec587e6da46a3b3a48327c99605a0","1fa91e6a9fee4b99ac0f6085003b1a6f","08d92d37c77343668f4745c7fb68b3b7","322f4b5be7844621b1faf996f99ea482","5eed2f994425469c9c00b961c43149e8","4d255c8d3f764ca2ad1314ee3c01273b","1c0366becc344dddbb5f933284af302d","eadcd4545c4d49ef9067972cf0bcd3bd","b9056c395f1f48689c059bff61656f46","29be20ebe8c84270bcd5494c4ff6b8b2","f2971406394c4e0580262f575b2aab56","1d9595ffd69f4c73a42e27a46c093623","0f59bb4e535942ceb234e38e4cb017d6","d51602377cdb4fd5a23ef79ddf799118","0b3bce0b92c040a9b76ddad2b07b216f","40eb69eea651428885caa2124dfca968","6e5b0f16547047b394c300b0997a3619","0fb6a225115f4b58a1169d5c4706fbac","4c3dd269401a4fe4a71a98f3f38110b0","e100b1ec01264de39c40ccba0656f914","12c8984929ff4c9bbf5ba7c9ee2f40c5","79cd790b766e4f328030d53b7fef84e4","489bb009a332405d93a646b978d8c951","6cfee80cccd04bdf9991414140ec2987","79a5cb1992a84140abb94da72bf0002a","76c48d31148b4a7a822a284a77dec0e8","5b2f81b887944852a1b641f4c971c514","c4d9e21d4cf84f97a1fb3ad543c64c3a","ccea2b134d6e426cab3c7badc6bebbb0","7eaed3f949f646ac81f8d5cb3aff1e87","b5ef43208ed743b08381f2f1aa60bfb6","db729f357d4a4a6dbdb5fae60e7496e3","5890a9b1ff6343c3a00b362be5b8cbd2","d98b4dd55d364f65942c78bc52661a00","672e1e89a6ca4226a9d582e3d24fcd30","e6ff14f7fbcd409497436400a2ec20a1","f2d1a1473c1f4c9b8d257321f20bb271","d6429fa009aa40658e805ba0ebdd863e","6baea04b2c9b49c5973407433942c38c","0811c93087fb42de829504dd58438549","ad7b29ef600c42a685f25e46062d1d55","58d0e1f247434374b64169485dde959b","5c18240e2a39456c98fd3d6d2baf2995","f3cada5a04ff4d86bcd9fec05ccd06f8","f58734e5cdfa4ac1a08f1a728afe8548","bdc222b8db974d7db527d048bd85f606","1440ddbc8f1c49779b3cbc711fbb1ef8","9f1528b09e284ce896d331ea24c52687","1940a355bf42422daa21ce7a709bada6","535362fa80414ef18cb9c6dc62b350d1","4791db5f77c142c2ba93799d3c87e0b1","a294fc0485f84deabf31609b95891d19","0b094167d51140f8847b1f0c095d18ec","8669b3af0f3041eca1f7f168afd96d89","1315bc7503944ce8830784d65e857bbc","3bf91aa087ad4390bed96ce5a1f380bb","1e75de6e5c384ee082a57f3bcf73e585","5f2da726260e4e1c8d6837d1dd5e3664","ea12b6202d9440ccbeb5fd11da76cc02","3cdfdcbd568f4427b41749226aea61eb","c778d23e7f284e5c8d89985cb7739291","329e05fca23d4e79bd3dc1c9d6268f7d","740e6aaf38394c149a98a6ec7c9212ee","d1e52ecfc5f5475a818f8816c724891d","7373f216800f409eae9ea127d46f3977","c3deeae4017a4579af28a74c2414b76f","a24f5e3c1eaa45dfb67bd7577a6f2238","05eadb782dc549c7b289473a9255ad26","2bbca5dc529a49c18e6891ccb5eff645","1dcada1289f04e389800a5ede5f37e19","38066a02c95344468b6ea715580f40b3"]},"id":"pj1b5S_68KB0","outputId":"84413cb5-038e-4f5c-a2c6-8e70b6fb64d2"},"outputs":[{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"c3deeae4017a4579af28a74c2414b76f","version_major":2,"version_minor":0},"text/plain":["Uploading the dataset shards: 0%| | 0/1 [00:00 "]},"metadata":{},"output_type":"display_data"},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='0.006 MB of 0.006 MB uploaded\\r'), FloatProgress(value=1.0, max=1.0)))"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run floating-rat-21 at: https://wandb.ai/szehanz/Education-Chatbot-Optimization/runs/izssxy0g
Synced 6 W&B file(s), 0 media file(s), 0 artifact file(s) and 0 other file(s)"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Find logs at: ./wandb/run-20240219_171830-izssxy0g/logs"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Successfully finished last run (ID:izssxy0g). Initializing new run:
"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"c712af4c6bc74fe3bb82ebf0731faab8","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='Waiting for wandb.init()...\\r'), FloatProgress(value=0.01111313893343322, max=1.0)…"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Tracking run with wandb version 0.16.3"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Run data is saved locally in /home/iot/ITI110/poc-playground/Final project/wandb/run-20240219_184243-wdbp5xpl"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Syncing run abundant-moon-22 to Weights & Biases (docs)
"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View project at https://wandb.ai/szehanz/Education-Chatbot-Optimization"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run at https://wandb.ai/szehanz/Education-Chatbot-Optimization/runs/wdbp5xpl"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"96be26e86d7640f39dc7a381f9e8ac87","version_major":2,"version_minor":0},"text/plain":["Map: 0%| | 0/448 [00:00\n"," \n"," \n"," [100/112 18:15 < 02:14, 0.09 it/s, Epoch 7/8]\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
StepTraining LossValidation Loss
102.1408001.371807
201.0889000.822470
300.7821000.707285
400.6112000.667052
500.5444000.625149
600.4872000.633841
700.4971000.602714
800.4552000.605597
900.4404000.615718
1000.4400000.617107

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","

\n"," \n"," \n"," [7/7 00:06]\n","
\n"," "],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='0.006 MB of 0.006 MB uploaded\\r'), FloatProgress(value=1.0, max=1.0)))"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","

Run history:


eval/loss█▃▂▂▁▁▁▁▁▁▁
eval/runtime▁▅▇▇█▇▇█▇▇▇
eval/samples_per_second█▄▂▂▁▂▂▁▂▂▂
eval/steps_per_second█▅▂▂▁▂▂▁▂▂▃
eval_loss
train/epoch▁▁▂▂▃▃▃▃▄▄▅▅▆▆▆▆▇▇████
train/global_step▁▁▂▂▃▃▃▃▄▄▅▅▆▆▆▆▇▇█████
train/learning_rate█▇▆▆▅▄▃▃▂▁
train/loss█▄▂▂▁▁▁▁▁▁
train/total_flos
train/train_loss
train/train_runtime
train/train_samples_per_second
train/train_steps_per_second

Run summary:


eval/loss0.60271
eval/runtime7.0512
eval/samples_per_second7.942
eval/steps_per_second0.993
eval_loss0.60271
train/epoch7.14
train/global_step100
train/learning_rate4e-05
train/loss0.44
train/total_flos3478708041547776.0
train/train_loss0.74873
train/train_runtime1107.7796
train/train_samples_per_second3.235
train/train_steps_per_second0.101

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run abundant-moon-22 at: https://wandb.ai/szehanz/Education-Chatbot-Optimization/runs/wdbp5xpl
Synced 6 W&B file(s), 0 media file(s), 0 artifact file(s) and 0 other file(s)"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Find logs at: ./wandb/run-20240219_184243-wdbp5xpl/logs"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"name":"stderr","output_type":"stream","text":["[I 2024-02-19 19:01:36,909] Trial 0 finished with value: 0.6027135848999023 and parameters: {'learning_rate': 0.0004025111363668074, 'num_train_epochs': 8, 'per_device_train_batch_size': 32, 'warmup_steps': 3}. Best is trial 0 with value: 0.6027135848999023.\n"]},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"8d7ed437bb30461db50fd93c2f619150","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='Waiting for wandb.init()...\\r'), FloatProgress(value=0.011112901077528175, max=1.0…"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Tracking run with wandb version 0.16.3"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Run data is saved locally in /home/iot/ITI110/poc-playground/Final project/wandb/run-20240219_190136-zbvi8cl0"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Syncing run thriving-fireworks-23 to Weights & Biases (docs)
"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View project at https://wandb.ai/szehanz/Education-Chatbot-Optimization"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run at https://wandb.ai/szehanz/Education-Chatbot-Optimization/runs/zbvi8cl0"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"76ef17e7b1bc40cfac453df2d5f9979b","version_major":2,"version_minor":0},"text/plain":["Map: 0%| | 0/448 [00:00\n"," \n"," \n"," [140/224 14:09 < 08:37, 0.16 it/s, Epoch 5/8]\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
StepTraining LossValidation Loss
102.3503001.578861
201.2266000.919854
301.0033000.858959
400.7369000.683791
500.6392000.672153
600.5742000.652091
700.5483000.631915
800.5296000.603841
900.4797000.605569
1000.4977000.599202
1100.4849000.598301
1200.4890000.638032
1300.4359000.633226
1400.4829000.605198

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","

\n"," \n"," \n"," [7/7 00:06]\n","
\n"," "],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='0.006 MB of 0.034 MB uploaded\\r'), FloatProgress(value=0.17041999774800135, max=1.…"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","

Run history:


eval/loss█▃▃▂▂▁▁▁▁▁▁▁▁▁▁
eval/runtime▁▄▅▅▆▆█▆▆▇▆▆█▅▅
eval/samples_per_second█▅▄▄▃▃▁▃▃▂▃▃▁▄▄
eval/steps_per_second█▅▄▅▃▄▂▃▄▂▃▃▁▄▄
eval_loss
train/epoch▁▁▂▂▂▂▃▃▃▃▄▄▄▄▅▅▅▅▆▆▆▆▇▇▇▇████
train/global_step▁▁▂▂▂▂▃▃▃▃▄▄▄▄▅▅▅▅▆▆▆▆▇▇▇▇█████
train/learning_rate█▇▇▆▆▅▅▄▄▃▃▂▂▁
train/loss█▄▃▂▂▂▁▁▁▁▁▁▁▁
train/total_flos
train/train_loss
train/train_runtime
train/train_samples_per_second
train/train_steps_per_second

Run summary:


eval/loss0.5983
eval/runtime7.0249
eval/samples_per_second7.972
eval/steps_per_second0.996
eval_loss0.5983
train/epoch5.0
train/global_step140
train/learning_rate0.00012
train/loss0.4829
train/total_flos2170063307145216.0
train/train_loss0.74847
train/train_runtime856.9078
train/train_samples_per_second4.182
train/train_steps_per_second0.261

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run thriving-fireworks-23 at: https://wandb.ai/szehanz/Education-Chatbot-Optimization/runs/zbvi8cl0
Synced 5 W&B file(s), 0 media file(s), 0 artifact file(s) and 0 other file(s)"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Find logs at: ./wandb/run-20240219_190136-zbvi8cl0/logs"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"name":"stderr","output_type":"stream","text":["[I 2024-02-19 19:16:12,165] Trial 1 finished with value: 0.5983005166053772 and parameters: {'learning_rate': 0.0003028497239265799, 'num_train_epochs': 8, 'per_device_train_batch_size': 16, 'warmup_steps': 5}. Best is trial 1 with value: 0.5983005166053772.\n"]},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"532aab0877da4d6b86a40ad31df51c38","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='Waiting for wandb.init()...\\r'), FloatProgress(value=0.011113190833323945, max=1.0…"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Tracking run with wandb version 0.16.3"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Run data is saved locally in /home/iot/ITI110/poc-playground/Final project/wandb/run-20240219_191612-pzfniief"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Syncing run dazzling-dragon-24 to Weights & Biases (docs)
"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View project at https://wandb.ai/szehanz/Education-Chatbot-Optimization"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run at https://wandb.ai/szehanz/Education-Chatbot-Optimization/runs/pzfniief"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","
\n"," \n"," \n"," [110/168 11:08 < 05:59, 0.16 it/s, Epoch 3/6]\n","
\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
StepTraining LossValidation Loss
102.2191001.546782
201.1499000.904034
300.9597000.810808
400.7054000.680841
500.6270000.652340
600.5563000.626374
700.5329000.629949
800.5229000.589803
900.4749000.596531
1000.4869000.592761
1100.4727000.596740

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","

\n"," \n"," \n"," [7/7 00:06]\n","
\n"," "],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='0.034 MB of 0.034 MB uploaded\\r'), FloatProgress(value=1.0, max=1.0)))"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","

Run history:


eval/loss█▃▃▂▁▁▁▁▁▁▁▁
eval/runtime▁▆▇█▇▅▇▇▆▄▇▆
eval/samples_per_second█▃▂▁▂▄▂▃▃▅▂▃
eval/steps_per_second█▃▂▁▂▄▂▂▃▅▂▃
eval_loss
train/epoch▁▁▂▂▂▂▃▃▄▄▄▄▅▅▆▆▇▇▇▇████
train/global_step▁▁▂▂▂▂▃▃▄▄▅▅▅▅▆▆▇▇▇▇█████
train/learning_rate█▇▇▆▅▄▄▃▂▂▁
train/loss█▄▃▂▂▁▁▁▁▁▁
train/total_flos
train/train_loss
train/train_runtime
train/train_samples_per_second
train/train_steps_per_second

Run summary:


eval/loss0.5898
eval/runtime7.0266
eval/samples_per_second7.97
eval/steps_per_second0.996
eval_loss0.5898
train/epoch3.93
train/global_step110
train/learning_rate0.00014
train/loss0.4727
train/total_flos1713943443406848.0
train/train_loss0.79161
train/train_runtime675.7172
train/train_samples_per_second3.978
train/train_steps_per_second0.249

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run dazzling-dragon-24 at: https://wandb.ai/szehanz/Education-Chatbot-Optimization/runs/pzfniief
Synced 5 W&B file(s), 0 media file(s), 0 artifact file(s) and 0 other file(s)"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Find logs at: ./wandb/run-20240219_191612-pzfniief/logs"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"name":"stderr","output_type":"stream","text":["[I 2024-02-19 19:27:45,486] Trial 2 finished with value: 0.5898026823997498 and parameters: {'learning_rate': 0.00040925708738231623, 'num_train_epochs': 6, 'per_device_train_batch_size': 16, 'warmup_steps': 4}. Best is trial 2 with value: 0.5898026823997498.\n"]},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"edd5a710ce3c41a6a72989df0b9696ee","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='Waiting for wandb.init()...\\r'), FloatProgress(value=0.011113297299986395, max=1.0…"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Tracking run with wandb version 0.16.3"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Run data is saved locally in /home/iot/ITI110/poc-playground/Final project/wandb/run-20240219_192745-srz53111"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Syncing run legendary-firecracker-25 to Weights & Biases (docs)
"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View project at https://wandb.ai/szehanz/Education-Chatbot-Optimization"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run at https://wandb.ai/szehanz/Education-Chatbot-Optimization/runs/srz53111"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","
\n"," \n"," \n"," [112/112 20:27, Epoch 8/8]\n","
\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
StepTraining LossValidation Loss
102.3289001.627960
201.3859000.988623
300.9051000.797488
400.7365000.737958
500.6112000.660954
600.5356000.659686
700.5452000.619212
800.4871000.617715
900.4685000.613847
1000.4590000.611387
1100.4414000.615416

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","

\n"," \n"," \n"," [7/7 00:06]\n","
\n"," "],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='0.006 MB of 0.034 MB uploaded\\r'), FloatProgress(value=0.17041103603603602, max=1.…"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","

Run history:


eval/loss█▄▂▂▁▁▁▁▁▁▁▁
eval/runtime▁▅▃▅▇▄▅▄▅█▆▂
eval/samples_per_second█▄▆▃▂▅▃▅▄▁▃▇
eval/steps_per_second█▄▅▄▂▅▄▅▄▁▃▆
eval_loss
train/epoch▁▁▂▂▂▂▃▃▄▄▄▄▅▅▆▆▆▆▇▇████
train/global_step▁▁▂▂▂▂▃▃▄▄▄▄▅▅▆▆▆▆▇▇█████
train/learning_rate█▇▇▆▅▄▄▃▂▂▁
train/loss█▅▃▂▂▁▁▁▁▁▁
train/total_flos
train/train_loss
train/train_runtime
train/train_samples_per_second
train/train_steps_per_second

Run summary:


eval/loss0.61139
eval/runtime7.018
eval/samples_per_second7.98
eval/steps_per_second0.997
eval_loss0.61139
train/epoch8.0
train/global_step112
train/learning_rate0.0
train/loss0.4414
train/total_flos3887818337157120.0
train/train_loss0.80241
train/train_runtime1240.3127
train/train_samples_per_second2.89
train/train_steps_per_second0.09

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run legendary-firecracker-25 at: https://wandb.ai/szehanz/Education-Chatbot-Optimization/runs/srz53111
Synced 5 W&B file(s), 0 media file(s), 0 artifact file(s) and 0 other file(s)"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Find logs at: ./wandb/run-20240219_192745-srz53111/logs"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"name":"stderr","output_type":"stream","text":["[I 2024-02-19 19:48:44,337] Trial 3 finished with value: 0.6113868951797485 and parameters: {'learning_rate': 0.00021804269178716187, 'num_train_epochs': 8, 'per_device_train_batch_size': 32, 'warmup_steps': 3}. Best is trial 2 with value: 0.5898026823997498.\n"]},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"d19268ffc4064e02bd0a33b8b30bfc2b","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='Waiting for wandb.init()...\\r'), FloatProgress(value=0.011113139222207894, max=1.0…"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Tracking run with wandb version 0.16.3"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Run data is saved locally in /home/iot/ITI110/poc-playground/Final project/wandb/run-20240219_194844-o101oodx"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Syncing run abundant-wonton-26 to Weights & Biases (docs)
"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View project at https://wandb.ai/szehanz/Education-Chatbot-Optimization"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run at https://wandb.ai/szehanz/Education-Chatbot-Optimization/runs/o101oodx"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","
\n"," \n"," \n"," [140/224 14:08 < 08:36, 0.16 it/s, Epoch 5/8]\n","
\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
StepTraining LossValidation Loss
102.3105001.594241
201.2521000.910354
301.0110000.863987
400.7431000.698877
500.6471000.673689
600.5749000.651653
700.5519000.632135
800.5292000.602036
900.4820000.604638
1000.4989000.598188
1100.4870000.596326
1200.4891000.638259
1300.4361000.628063
1400.4825000.601444

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","

\n"," \n"," \n"," [7/7 00:06]\n","
\n"," "],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='0.006 MB of 0.034 MB uploaded\\r'), FloatProgress(value=0.17057929403816924, max=1.…"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","

Run history:


eval/loss█▃▃▂▂▁▁▁▁▁▁▁▁▁▁
eval/runtime▁▄▄▅▅▇█▆▅▇▆▅▆▅▂
eval/samples_per_second█▅▅▄▄▂▁▃▄▂▃▄▃▄▇
eval/steps_per_second█▅▅▄▄▂▁▂▄▂▃▄▃▄▇
eval_loss
train/epoch���▁▂▂▂▂▃▃▃▃▄▄▄▄▅▅▅▅▆▆▆▆▇▇▇▇████
train/global_step▁▁▂▂▂▂▃▃▃▃▄▄▄▄▅▅▅▅▆▆▆▆▇▇▇▇█████
train/learning_rate█▇▇▆▆▅▅▄▄▃▃▂▂▁
train/loss█▄▃▂▂▂▁▁▁▁▁▁▁▁
train/total_flos
train/train_loss
train/train_runtime
train/train_samples_per_second
train/train_steps_per_second

Run summary:


eval/loss0.59633
eval/runtime6.9881
eval/samples_per_second8.014
eval/steps_per_second1.002
eval_loss0.59633
train/epoch5.0
train/global_step140
train/learning_rate0.00012
train/loss0.4825
train/total_flos2170063307145216.0
train/train_loss0.74968
train/train_runtime855.8976
train/train_samples_per_second4.187
train/train_steps_per_second0.262

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run abundant-wonton-26 at: https://wandb.ai/szehanz/Education-Chatbot-Optimization/runs/o101oodx
Synced 5 W&B file(s), 0 media file(s), 0 artifact file(s) and 0 other file(s)"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Find logs at: ./wandb/run-20240219_194844-o101oodx/logs"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"name":"stderr","output_type":"stream","text":["[I 2024-02-19 20:03:18,557] Trial 4 finished with value: 0.5963263511657715 and parameters: {'learning_rate': 0.0003062471523433562, 'num_train_epochs': 8, 'per_device_train_batch_size': 16, 'warmup_steps': 4}. Best is trial 2 with value: 0.5898026823997498.\n"]},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"c6b42332b56944d189e15ca4507bb147","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='Waiting for wandb.init()...\\r'), FloatProgress(value=0.011113268544431777, max=1.0…"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Tracking run with wandb version 0.16.3"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Run data is saved locally in /home/iot/ITI110/poc-playground/Final project/wandb/run-20240219_200318-1kupsvst"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Syncing run bright-pig-27 to Weights & Biases (docs)
"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View project at https://wandb.ai/szehanz/Education-Chatbot-Optimization"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run at https://wandb.ai/szehanz/Education-Chatbot-Optimization/runs/1kupsvst"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","
\n"," \n"," \n"," [140/168 14:08 < 02:52, 0.16 it/s, Epoch 5/6]\n","
\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
StepTraining LossValidation Loss
102.3100001.605123
201.2329000.919273
300.9905000.866596
400.7240000.680403
500.6344000.667967
600.5698000.646463
700.5448000.631393
800.5269000.594657
900.4735000.601250
1000.4905000.598757
1100.4788000.592457
1200.4823000.626896
1300.4265000.625595
1400.4697000.604543

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","

\n"," \n"," \n"," [7/7 00:06]\n","
\n"," "],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='0.006 MB of 0.023 MB uploaded\\r'), FloatProgress(value=0.25586993243243245, max=1.…"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","

Run history:


eval/loss█▃▃▂▂▁▁▁▁▁▁▁▁▁▁
eval/runtime▁▅▇▄▅▆▄▇▆██▇█▅▃
eval/samples_per_second█▄▂▄▄▃▅▂▃▁▁▂▁▄▆
eval/steps_per_second█▃▂▄▃▂▅▂▂▁▁▁▁▄▅
eval_loss
train/epoch▁▁▂▂▂▂▃▃▃▃▄▄▄▄▅▅▅▅▆▆▆▆▇▇▇▇████
train/global_step▁▁▂▂▂▂▃▃▃▃▄▄▄▄▅▅▅▅▆▆▆▆▇▇▇▇█████
train/learning_rate█▇▇▆▆▅▅▄▄▃▃▂▂▁
train/loss█▄▃▂▂▂▁▁▁▁▁▁▁▁
train/total_flos
train/train_loss
train/train_runtime
train/train_samples_per_second
train/train_steps_per_second

Run summary:


eval/loss0.59246
eval/runtime6.9975
eval/samples_per_second8.003
eval/steps_per_second1.0
eval_loss0.59246
train/epoch5.0
train/global_step140
train/learning_rate6e-05
train/loss0.4697
train/total_flos2170063307145216.0
train/train_loss0.73962
train/train_runtime855.0423
train/train_samples_per_second3.144
train/train_steps_per_second0.196

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run bright-pig-27 at: https://wandb.ai/szehanz/Education-Chatbot-Optimization/runs/1kupsvst
Synced 5 W&B file(s), 0 media file(s), 0 artifact file(s) and 0 other file(s)"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Find logs at: ./wandb/run-20240219_200318-1kupsvst/logs"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"name":"stderr","output_type":"stream","text":["[I 2024-02-19 20:17:52,091] Trial 5 finished with value: 0.5924574732780457 and parameters: {'learning_rate': 0.0003549720190405869, 'num_train_epochs': 6, 'per_device_train_batch_size': 16, 'warmup_steps': 5}. Best is trial 2 with value: 0.5898026823997498.\n"]},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"63a4222d599e4da4890c36a23ae52a3a","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='Waiting for wandb.init()...\\r'), FloatProgress(value=0.011112871322095291, max=1.0…"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Tracking run with wandb version 0.16.3"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Run data is saved locally in /home/iot/ITI110/poc-playground/Final project/wandb/run-20240219_201752-hvk8kkmo"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Syncing run red-chrysanthemum-28 to Weights & Biases (docs)
"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View project at https://wandb.ai/szehanz/Education-Chatbot-Optimization"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run at https://wandb.ai/szehanz/Education-Chatbot-Optimization/runs/hvk8kkmo"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","
\n"," \n"," \n"," [84/84 15:16, Epoch 6/6]\n","
\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
StepTraining LossValidation Loss
102.3320001.561446
201.2488000.888817
300.8482000.778326
400.6779000.683840
500.5710000.657031
600.5104000.637265
700.5219000.623751
800.4703000.618002

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","

\n"," \n"," \n"," [7/7 00:06]\n","
\n"," "],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='0.022 MB of 0.034 MB uploaded\\r'), FloatProgress(value=0.6506108890265188, max=1.0…"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","

Run history:


eval/loss█▃▂▁▁▁▁▁▁
eval/runtime▁▂▃▁▇▅█▇▇
eval/samples_per_second█▇▆█▂▄▁▂▂
eval/steps_per_second█▆▆█▃▄▁▃▃
eval_loss
train/epoch▁▁▂▂▃▃▄▄▅▅▆▆▇▇████
train/global_step▁▁▂▂▃▃▄▄▅▅▆▆▇▇█████
train/learning_rate█▇▆▅▄▃▂▁
train/loss█▄▂▂▁▁▁▁
train/total_flos
train/train_loss
train/train_runtime
train/train_samples_per_second
train/train_steps_per_second

Run summary:


eval/loss0.618
eval/runtime7.029
eval/samples_per_second7.967
eval/steps_per_second0.996
eval_loss0.618
train/epoch6.0
train/global_step84
train/learning_rate2e-05
train/loss0.4703
train/total_flos2927298512683008.0
train/train_loss0.87718
train/train_runtime928.7795
train/train_samples_per_second2.894
train/train_steps_per_second0.09

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run red-chrysanthemum-28 at: https://wandb.ai/szehanz/Education-Chatbot-Optimization/runs/hvk8kkmo
Synced 5 W&B file(s), 0 media file(s), 0 artifact file(s) and 0 other file(s)"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Find logs at: ./wandb/run-20240219_201752-hvk8kkmo/logs"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"name":"stderr","output_type":"stream","text":["[I 2024-02-19 20:33:38,930] Trial 6 finished with value: 0.6180019974708557 and parameters: {'learning_rate': 0.00029993812811393003, 'num_train_epochs': 6, 'per_device_train_batch_size': 32, 'warmup_steps': 5}. Best is trial 2 with value: 0.5898026823997498.\n"]},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"5c842ce8d6714182920a1750adb3d273","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='Waiting for wandb.init()...\\r'), FloatProgress(value=0.011113082922141379, max=1.0…"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Tracking run with wandb version 0.16.3"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Run data is saved locally in /home/iot/ITI110/poc-playground/Final project/wandb/run-20240219_203338-u9an5iy8"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Syncing run red-wish-29 to Weights & Biases (docs)
"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View project at https://wandb.ai/szehanz/Education-Chatbot-Optimization"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run at https://wandb.ai/szehanz/Education-Chatbot-Optimization/runs/u9an5iy8"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","
\n"," \n"," \n"," [56/56 10:07, Epoch 4/4]\n","
\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
StepTraining LossValidation Loss
102.0822001.251068
201.0079000.816748
300.7501000.686710
400.6008000.673636
500.5395000.642782

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","

\n"," \n"," \n"," [7/7 00:06]\n","
\n"," "],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='0.034 MB of 0.034 MB uploaded\\r'), FloatProgress(value=1.0, max=1.0)))"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","

Run history:


eval/loss█▃▂▁▁▁
eval/runtime▁▆█▄▅▃
eval/samples_per_second█▃▁▄▄▆
eval/steps_per_second█▃▁▅▅▆
eval_loss
train/epoch▁▁▃▃▄▄▆▆▇▇██
train/global_step▁▁▃▃▄▄▆▆▇▇███
train/learning_rate█▆▅▃▁
train/loss█▃▂▁▁
train/total_flos
train/train_loss
train/train_runtime
train/train_samples_per_second
train/train_steps_per_second

Run summary:


eval/loss0.64278
eval/runtime7.0018
eval/samples_per_second7.998
eval/steps_per_second1.0
eval_loss0.64278
train/epoch4.0
train/global_step56
train/learning_rate6e-05
train/loss0.5395
train/total_flos1969319745945600.0
train/train_loss0.94465
train/train_runtime619.7752
train/train_samples_per_second2.891
train/train_steps_per_second0.09

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run red-wish-29 at: https://wandb.ai/szehanz/Education-Chatbot-Optimization/runs/u9an5iy8
Synced 5 W&B file(s), 0 media file(s), 0 artifact file(s) and 0 other file(s)"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Find logs at: ./wandb/run-20240219_203338-u9an5iy8/logs"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"name":"stderr","output_type":"stream","text":["[I 2024-02-19 20:44:20,345] Trial 7 finished with value: 0.6427821516990662 and parameters: {'learning_rate': 0.0004921796551065912, 'num_train_epochs': 4, 'per_device_train_batch_size': 32, 'warmup_steps': 3}. Best is trial 2 with value: 0.5898026823997498.\n"]},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"2cfb2293dad348b985a23b767d53ace8","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='Waiting for wandb.init()...\\r'), FloatProgress(value=0.011113233355637122, max=1.0…"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Tracking run with wandb version 0.16.3"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Run data is saved locally in /home/iot/ITI110/poc-playground/Final project/wandb/run-20240219_204420-k8hrtsr1"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Syncing run sparkling-peony-30 to Weights & Biases (docs)
"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View project at https://wandb.ai/szehanz/Education-Chatbot-Optimization"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run at https://wandb.ai/szehanz/Education-Chatbot-Optimization/runs/k8hrtsr1"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","
\n"," \n"," \n"," [56/56 10:07, Epoch 4/4]\n","
\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
StepTraining LossValidation Loss
102.3321001.553420
201.2477000.886406
300.8577000.771762
400.7055000.712279
500.5950000.679550

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","

\n"," \n"," \n"," [7/7 00:06]\n","
\n"," "],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='0.006 MB of 0.034 MB uploaded\\r'), FloatProgress(value=0.170631457447707, max=1.0)…"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","

Run history:


eval/loss█▃▂▁▁▁
eval/runtime▁▃▆▅█▄
eval/samples_per_second█▆▃▄▁▅
eval/steps_per_second█▆▃▄▁▅
eval_loss
train/epoch▁▁▃▃▄▄▆▆▇▇██
train/global_step▁▁▃▃▄▄▆▆▇▇███
train/learning_rate█▆▅▃▁
train/loss█▄▂▁▁
train/total_flos
train/train_loss
train/train_runtime
train/train_samples_per_second
train/train_steps_per_second

Run summary:


eval/loss0.67955
eval/runtime7.0075
eval/samples_per_second7.991
eval/steps_per_second0.999
eval_loss0.67955
train/epoch4.0
train/global_step56
train/learning_rate4e-05
train/loss0.595
train/total_flos1969319745945600.0
train/train_loss1.08562
train/train_runtime620.2921
train/train_samples_per_second2.889
train/train_steps_per_second0.09

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run sparkling-peony-30 at: https://wandb.ai/szehanz/Education-Chatbot-Optimization/runs/k8hrtsr1
Synced 5 W&B file(s), 0 media file(s), 0 artifact file(s) and 0 other file(s)"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Find logs at: ./wandb/run-20240219_204420-k8hrtsr1/logs"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"name":"stderr","output_type":"stream","text":["[I 2024-02-19 20:54:59,931] Trial 8 finished with value: 0.679550051689148 and parameters: {'learning_rate': 0.0002997058981392026, 'num_train_epochs': 4, 'per_device_train_batch_size': 32, 'warmup_steps': 5}. Best is trial 2 with value: 0.5898026823997498.\n"]},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"15cedcbf21794e1895357c52edcbef03","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='Waiting for wandb.init()...\\r'), FloatProgress(value=0.01111316335575086, max=1.0)…"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Tracking run with wandb version 0.16.3"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Run data is saved locally in /home/iot/ITI110/poc-playground/Final project/wandb/run-20240219_205459-iosmgelq"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Syncing run abundant-chrysanthemum-31 to Weights & Biases (docs)
"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View project at https://wandb.ai/szehanz/Education-Chatbot-Optimization"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run at https://wandb.ai/szehanz/Education-Chatbot-Optimization/runs/iosmgelq"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","
\n"," \n"," \n"," [110/112 11:07 < 00:12, 0.16 it/s, Epoch 3/4]\n","
\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
StepTraining LossValidation Loss
102.3623001.603512
201.2776000.896908
301.0284000.843322
400.7588000.708671
500.6560000.693394
600.5846000.657635
700.5574000.658206
800.5304000.600657
900.4693000.609772
1000.4833000.610230
1100.4804000.604136

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","

\n"," \n"," \n"," [7/7 00:06]\n","
\n"," "],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='0.012 MB of 0.034 MB uploaded\\r'), FloatProgress(value=0.3512258282433079, max=1.0…"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","

Run history:


eval/loss█▃▃▂▂▁▁▁▁▁▁▁
eval/runtime▁▆▅▆█▇██▇▇▆▅
eval/samples_per_second█▃▃▃▁▂▁▁▂▂▃▄
eval/steps_per_second█▃▄▃▁▂▂▂▂▂▃▄
eval_loss
train/epoch▁▁▂▂▂▂▃▃▄▄▄▄▅▅▆▆▇▇▇▇████
train/global_step▁▁▂▂▂▂▃▃▄▄▅��▅▅▆▆▇▇▇▇█████
train/learning_rate█▇▇▆▅▅▄▃▂▂▁
train/loss█▄▃▂▂▁▁▁▁▁▁
train/total_flos
train/train_loss
train/train_runtime
train/train_samples_per_second
train/train_steps_per_second

Run summary:


eval/loss0.60066
eval/runtime6.9977
eval/samples_per_second8.003
eval/steps_per_second1.0
eval_loss0.60066
train/epoch3.93
train/global_step110
train/learning_rate1e-05
train/loss0.4804
train/total_flos1713943443406848.0
train/train_loss0.83532
train/train_runtime674.6173
train/train_samples_per_second2.656
train/train_steps_per_second0.166

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run abundant-chrysanthemum-31 at: https://wandb.ai/szehanz/Education-Chatbot-Optimization/runs/iosmgelq
Synced 5 W&B file(s), 0 media file(s), 0 artifact file(s) and 0 other file(s)"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Find logs at: ./wandb/run-20240219_205459-iosmgelq/logs"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"name":"stderr","output_type":"stream","text":["[I 2024-02-19 21:06:32,382] Trial 9 finished with value: 0.6006569266319275 and parameters: {'learning_rate': 0.0002981933140416747, 'num_train_epochs': 4, 'per_device_train_batch_size': 16, 'warmup_steps': 5}. Best is trial 2 with value: 0.5898026823997498.\n"]}],"source":["def objective(trial):\n","\n"," # Define hyperparameters outside the wandb.init to use them later in the code\n"," learning_rate = trial.suggest_float('learning_rate', 2e-4, 5e-4, log=True)\n"," num_train_epochs = trial.suggest_categorical('num_train_epochs', [4, 6, 8])\n"," per_device_train_batch_size = trial.suggest_categorical('per_device_train_batch_size', [16, 32])\n"," warmup_steps = trial.suggest_int('warmup_steps', 3, 5)\n","\n"," wandb.init(\n"," project=\"Education-Chatbot-Optimization\",\n"," entity=\"szehanz\",\n"," group=\"optuna-optimization\",\n"," job_type=\"hyperparameter_search\",\n"," reinit=True,\n"," config={\n"," \"learning_rate\": learning_rate,\n"," \"num_train_epochs\": num_train_epochs,\n"," \"per_device_train_batch_size\": per_device_train_batch_size,\n"," \"warmup_steps\": warmup_steps\n"," }\n"," )\n","\n"," # Format the current date and time\n"," current_time = datetime.now().strftime(\"%Y%m%d-%H%M%S\")\n"," output_dir = f\"train_out_dir_{current_time}\" # Append the current date and time to the directory name\n","\n"," # Create the output directory\n"," os.makedirs(output_dir, exist_ok=True) # Using exist_ok=True to avoid error if the directory already exists\n","\n","\n"," # Define TrainingArguments with the suggested hyperparameters\n"," training_args = TrainingArguments(\n"," output_dir=output_dir, # Directory for saving output models and checkpoints.\n"," save_strategy=\"steps\", # Save model checkpoints at regular step intervals.\n"," save_steps=10, # Save model checkpoints every 10 steps.\n"," learning_rate=learning_rate, # Initial learning rate for the optimizer.\n"," per_device_train_batch_size=per_device_train_batch_size, # Batch size per device during training.\n"," per_device_eval_batch_size=8, # Batch size per device during evaluation.\n"," num_train_epochs=num_train_epochs, # Total number of training epochs.\n"," warmup_steps=warmup_steps, # Number of warmup steps for the learning rate scheduler.\n"," evaluation_strategy='steps', # Perform evaluation at regular step intervals.\n"," eval_steps=10, # Perform evaluation every 10 steps.\n"," logging_steps=10,\n"," optim='paged_adamw_8bit', # Specifies the optimizer to use.\n"," lr_scheduler_type='linear', # Type of learning rate scheduler.\n"," gradient_accumulation_steps=1, # Number of steps to accumulate gradients before performing an update.\n"," load_best_model_at_end=True, # Load the best model based on evaluation metric at the end of training.\n"," report_to='wandb', # Disable automatic integrations with external reporting tools.\n"," )\n","\n","\n"," # Initialize the Trainer with early stopping callback inside the objective function\n"," trainer = SFTTrainer(\n"," model=model, # Ensure a function or a mechanism to initialize your model\n"," train_dataset=train_dataset,\n"," eval_dataset=val_dataset,\n"," peft_config=peft_config,\n"," dataset_text_field=\"instruction\",\n"," tokenizer=tokenizer,\n"," args=training_args,\n"," max_seq_length=4096,\n"," callbacks=[EarlyStoppingCallback(early_stopping_patience=3)],\n"," )\n","\n"," # Train the model and evaluate within the objective function\n"," trainer.train()\n"," eval_result = trainer.evaluate()\n","\n"," # Log the primary metric to WandB\n"," wandb.log({\"eval_loss\": eval_result[\"eval_loss\"]})\n","\n"," # Finish the WandB run for this trial\n"," wandb.finish()\n","\n"," # Return the metric to be optimized\n"," return eval_result[\"eval_loss\"]\n","\n","\n","# Run the optimization\n","study = optuna.create_study(direction='minimize')\n","study.optimize(objective, n_trials=10)"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"fmdlQTVSHT8e","outputId":"a2935a56-5cad-4dbc-c55c-53b3b5ad1368"},"outputs":[{"name":"stdout","output_type":"stream","text":["Best trial:\n"," Value: 0.5898026823997498\n"," Params: \n"," learning_rate: 0.00040925708738231623\n"," num_train_epochs: 6\n"," per_device_train_batch_size: 16\n"," warmup_steps: 4\n"]}],"source":["# Best trial results\n","print(\"Best trial:\")\n","print(f\" Value: {study.best_trial.value}\")\n","print(\" Params: \")\n","for key, value in study.best_trial.params.items():\n"," print(f\" {key}: {value}\")"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"mKlA_ahVHT8e","outputId":"6365a674-b011-48bb-94ea-7aa9d657d323","colab":{"referenced_widgets":[""]}},"outputs":[{"data":{"text/html":["Tracking run with wandb version 0.16.3"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Run data is saved locally in /home/iot/ITI110/poc-playground/Final project/wandb/run-20240219_210737-q16rpssr"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Syncing run fortuitous-fish-3 to Weights & Biases (docs)
"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View project at https://wandb.ai/szehanz/huggingface"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run at https://wandb.ai/szehanz/huggingface/runs/q16rpssr"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","
\n"," \n"," \n"," [168/168 16:51, Epoch 6/6]\n","
\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
StepTraining LossValidation Loss
102.2184001.534913
201.1365000.895845
300.9556000.814537
400.7074000.680818
500.6297000.656619
600.5569000.624320
700.5321000.632881
800.5240000.591038
900.4762000.599967
1000.4878000.594422
1100.4756000.595004
1200.4787000.627798
1300.4267000.623343
1400.4712000.604500
1500.4208000.611532
1600.4409000.603333

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='0.012 MB of 0.034 MB uploaded\\r'), FloatProgress(value=0.35244443189199876, max=1.…"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","

Run history:


eval/loss█▃▃▂▁▁▁▁▁▁▁▁▁▁▁▁
eval/runtime▁▇▅▆▆▇▇█▇██▇█▇▇█
eval/samples_per_second█▂▄▃▃▂▂▁▂▁▁▂▁▂▂▁
eval/steps_per_second█▂▄▃▃▂▂▁▂▁▁▂▁▂▂▁
train/epoch▁▁▁▁▂▂▂▂▃▃▃▃▄▄▄▄▅▅▅▅▅▅▆▆▆▆▇▇▇▇███
train/global_step▁▁▁▁▂▂▂▂▃▃▃▃▄▄▄▄▅▅▅▅▅▅▆▆▆▆▇▇▇▇███
train/learning_rate██▇▇▆▆▅▅▄▄▃▃▂▂▁▁
train/loss█▄▃▂▂▂▁▁▁▁▁▁▁▁▁▁
train/total_flos
train/train_loss
train/train_runtime
train/train_samples_per_second
train/train_steps_per_second

Run summary:


eval/loss0.60333
eval/runtime7.0342
eval/samples_per_second7.961
eval/steps_per_second0.995
train/epoch6.0
train/global_step168
train/learning_rate2e-05
train/loss0.4409
train/total_flos2600137329082368.0
train/train_loss0.67181
train/train_runtime1023.9774
train/train_samples_per_second2.625
train/train_steps_per_second0.164

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run fortuitous-fish-3 at: https://wandb.ai/szehanz/huggingface/runs/q16rpssr
Synced 5 W&B file(s), 0 media file(s), 0 artifact file(s) and 0 other file(s)"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Find logs at: ./wandb/run-20240219_210737-q16rpssr/logs"],"text/plain":[""]},"metadata":{},"output_type":"display_data"}],"source":["# Use best hyperparameters from the study\n","best_trial = study.best_trial\n","\n","best_learning_rate = best_trial.params['learning_rate']\n","best_num_train_epochs = best_trial.params['num_train_epochs']\n","best_per_device_train_batch_size = best_trial.params['per_device_train_batch_size']\n","best_warmup_steps = best_trial.params['warmup_steps']\n","\n","\n","# Define TrainingArguments with the best hyperparameters for retraining\n","best_training_args = TrainingArguments(\n"," output_dir=\"best_train_out_dir\",\n"," save_strategy=\"steps\",\n"," save_steps=10,\n"," learning_rate=best_learning_rate,\n"," per_device_train_batch_size=best_per_device_train_batch_size,\n"," per_device_eval_batch_size=8,\n"," num_train_epochs=best_num_train_epochs,\n"," warmup_steps=best_warmup_steps,\n"," evaluation_strategy='steps',\n"," eval_steps=10,\n"," logging_steps=10,\n"," optim='paged_adamw_8bit',\n"," lr_scheduler_type='linear',\n"," gradient_accumulation_steps=1,\n"," load_best_model_at_end=True,\n"," report_to='wandb',\n",")\n","\n","# Reinitialize the Trainer with the best hyperparameters\n","best_trainer = SFTTrainer(\n"," model=model,\n"," train_dataset=train_dataset,\n"," eval_dataset=val_dataset,\n"," peft_config=peft_config,\n"," dataset_text_field=\"instruction\",\n"," tokenizer=tokenizer,\n"," args=best_training_args,\n"," max_seq_length=4096,\n",")\n","\n","# Retrain the model with the best hyperparameters\n","best_trainer.train()\n","\n","\n","# Save trained model\n","best_trainer.model.save_pretrained(new_model)\n","\n","# Finish the WandB run for this trial\n","wandb.finish()"]},{"cell_type":"markdown","metadata":{"id":"_g0fB7P9s0ol"},"source":["Merging the base model with the trained adapter."]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"referenced_widgets":["aafec7a64d034e05b1aaf17bb153136b","3a01a0a298124d83a1e4fc74bcae457f"]},"id":"QQn30cRtAZ-P","outputId":"6508be7b-0a96-494e-bd33-d35c5c331f52"},"outputs":[{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"3a01a0a298124d83a1e4fc74bcae457f","version_major":2,"version_minor":0},"text/plain":["Loading checkpoint shards: 0%| | 0/3 [00:00 =4.35.2 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from -r llama.cpp/./requirements/requirements-convert.txt (line 3)) (4.37.2)\n","Requirement already satisfied: gguf>=0.1.0 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from -r llama.cpp/./requirements/requirements-convert.txt (line 4)) (0.6.0)\n","Requirement already satisfied: protobuf<5.0.0,>=4.21.0 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from -r llama.cpp/./requirements/requirements-convert.txt (line 5)) (4.25.2)\n","Requirement already satisfied: torch~=2.1.1 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from -r llama.cpp/./requirements/requirements-convert-hf-to-gguf.txt (line 2)) (2.1.2)\n","Requirement already satisfied: filelock in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from transformers<5.0.0,>=4.35.2->-r llama.cpp/./requirements/requirements-convert.txt (line 3)) (3.13.1)\n","Requirement already satisfied: huggingface-hub<1.0,>=0.19.3 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from transformers<5.0.0,>=4.35.2->-r llama.cpp/./requirements/requirements-convert.txt (line 3)) (0.19.4)\n","Requirement already satisfied: packaging>=20.0 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from transformers<5.0.0,>=4.35.2->-r llama.cpp/./requirements/requirements-convert.txt (line 3)) (23.2)\n","Requirement already satisfied: pyyaml>=5.1 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from transformers<5.0.0,>=4.35.2->-r llama.cpp/./requirements/requirements-convert.txt (line 3)) (6.0.1)\n","Requirement already satisfied: regex!=2019.12.17 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from transformers<5.0.0,>=4.35.2->-r llama.cpp/./requirements/requirements-convert.txt (line 3)) (2023.10.3)\n","Requirement already satisfied: requests in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from transformers<5.0.0,>=4.35.2->-r llama.cpp/./requirements/requirements-convert.txt (line 3)) (2.31.0)\n","Requirement already satisfied: tokenizers<0.19,>=0.14 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from transformers<5.0.0,>=4.35.2->-r llama.cpp/./requirements/requirements-convert.txt (line 3)) (0.15.1)\n","Requirement already satisfied: safetensors>=0.4.1 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from transformers<5.0.0,>=4.35.2->-r llama.cpp/./requirements/requirements-convert.txt (line 3)) (0.4.2)\n","Requirement already satisfied: tqdm>=4.27 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from transformers<5.0.0,>=4.35.2->-r llama.cpp/./requirements/requirements-convert.txt (line 3)) (4.66.1)\n","Requirement already satisfied: typing-extensions in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from torch~=2.1.1->-r llama.cpp/./requirements/requirements-convert-hf-to-gguf.txt (line 2)) (4.9.0)\n","Requirement already satisfied: sympy in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from torch~=2.1.1->-r llama.cpp/./requirements/requirements-convert-hf-to-gguf.txt (line 2)) (1.12)\n","Requirement already satisfied: networkx in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from torch~=2.1.1->-r llama.cpp/./requirements/requirements-convert-hf-to-gguf.txt (line 2)) (3.2.1)\n","Requirement already satisfied: jinja2 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from torch~=2.1.1->-r llama.cpp/./requirements/requirements-convert-hf-to-gguf.txt (line 2)) (3.1.3)\n","Requirement already satisfied: fsspec in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from torch~=2.1.1->-r llama.cpp/./requirements/requirements-convert-hf-to-gguf.txt (line 2)) (2023.10.0)\n","Requirement already satisfied: nvidia-cuda-nvrtc-cu12==12.1.105 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from torch~=2.1.1->-r llama.cpp/./requirements/requirements-convert-hf-to-gguf.txt (line 2)) (12.1.105)\n","Requirement already satisfied: nvidia-cuda-runtime-cu12==12.1.105 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from torch~=2.1.1->-r llama.cpp/./requirements/requirements-convert-hf-to-gguf.txt (line 2)) (12.1.105)\n","Requirement already satisfied: nvidia-cuda-cupti-cu12==12.1.105 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from torch~=2.1.1->-r llama.cpp/./requirements/requirements-convert-hf-to-gguf.txt (line 2)) (12.1.105)\n","Requirement already satisfied: nvidia-cudnn-cu12==8.9.2.26 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from torch~=2.1.1->-r llama.cpp/./requirements/requirements-convert-hf-to-gguf.txt (line 2)) (8.9.2.26)\n","Requirement already satisfied: nvidia-cublas-cu12==12.1.3.1 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from torch~=2.1.1->-r llama.cpp/./requirements/requirements-convert-hf-to-gguf.txt (line 2)) (12.1.3.1)\n","Requirement already satisfied: nvidia-cufft-cu12==11.0.2.54 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from torch~=2.1.1->-r llama.cpp/./requirements/requirements-convert-hf-to-gguf.txt (line 2)) (11.0.2.54)\n","Requirement already satisfied: nvidia-curand-cu12==10.3.2.106 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from torch~=2.1.1->-r llama.cpp/./requirements/requirements-convert-hf-to-gguf.txt (line 2)) (10.3.2.106)\n","Requirement already satisfied: nvidia-cusolver-cu12==11.4.5.107 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from torch~=2.1.1->-r llama.cpp/./requirements/requirements-convert-hf-to-gguf.txt (line 2)) (11.4.5.107)\n","Requirement already satisfied: nvidia-cusparse-cu12==12.1.0.106 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from torch~=2.1.1->-r llama.cpp/./requirements/requirements-convert-hf-to-gguf.txt (line 2)) (12.1.0.106)\n","Requirement already satisfied: nvidia-nccl-cu12==2.18.1 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from torch~=2.1.1->-r llama.cpp/./requirements/requirements-convert-hf-to-gguf.txt (line 2)) (2.18.1)\n","Requirement already satisfied: nvidia-nvtx-cu12==12.1.105 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from torch~=2.1.1->-r llama.cpp/./requirements/requirements-convert-hf-to-gguf.txt (line 2)) (12.1.105)\n","Requirement already satisfied: triton==2.1.0 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from torch~=2.1.1->-r llama.cpp/./requirements/requirements-convert-hf-to-gguf.txt (line 2)) (2.1.0)\n","Requirement already satisfied: nvidia-nvjitlink-cu12 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from nvidia-cusolver-cu12==11.4.5.107->torch~=2.1.1->-r llama.cpp/./requirements/requirements-convert-hf-to-gguf.txt (line 2)) (12.3.101)\n","Requirement already satisfied: MarkupSafe>=2.0 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from jinja2->torch~=2.1.1->-r llama.cpp/./requirements/requirements-convert-hf-to-gguf.txt (line 2)) (2.1.5)\n","Requirement already satisfied: charset-normalizer<4,>=2 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from requests->transformers<5.0.0,>=4.35.2->-r llama.cpp/./requirements/requirements-convert.txt (line 3)) (3.3.2)\n","Requirement already satisfied: idna<4,>=2.5 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from requests->transformers<5.0.0,>=4.35.2->-r llama.cpp/./requirements/requirements-convert.txt (line 3)) (3.6)\n","Requirement already satisfied: urllib3<3,>=1.21.1 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from requests->transformers<5.0.0,>=4.35.2->-r llama.cpp/./requirements/requirements-convert.txt (line 3)) (2.2.0)\n","Requirement already satisfied: certifi>=2017.4.17 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from requests->transformers<5.0.0,>=4.35.2->-r llama.cpp/./requirements/requirements-convert.txt (line 3)) (2024.2.2)\n","Requirement already satisfied: mpmath>=0.19 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from sympy->torch~=2.1.1->-r llama.cpp/./requirements/requirements-convert-hf-to-gguf.txt (line 2)) (1.3.0)\n","Git LFS initialized.\n","Cloning into 'llama-2-7b-combined_datasets'...\n","remote: Enumerating objects: 18, done.\u001b[K\n","remote: Counting objects: 100% (15/15), done.\u001b[K\n","remote: Compressing objects: 100% (15/15), done.\u001b[K\n","remote: Total 18 (delta 1), reused 0 (delta 0), pack-reused 3\u001b[K\n","Unpacking objects: 100% (18/18), 483.97 KiB | 891.00 KiB/s, done.\n","Filtering content: 100% (4/4), 4.55 GiB | 5.10 MiB/s, done.\n","Encountered 2 file(s) that may not have been copied correctly on Windows:\n","\tmodel-00001-of-00003.safetensors\n","\tmodel-00002-of-00003.safetensors\n","\n","See: `git lfs help smudge` for more details.\n"]}],"source":["# Set up environment and download model for llama.cpp inference.\n","# 1. Define model ID and quantization methods.\n","# 2. Parse model name from MODEL_ID.\n","# 3. Install and build the llama.cpp library with GPU support.\n","# 4. Install Python dependencies from llama.cpp's requirements.\n","# 5. Initialize Git Large File Storage (LFS) for handling large files.\n","# 6. Clone the specified model repository from Hugging Face.\n","\n","\n","MODEL_ID = \"ssoh/llama-2-7b-combined_datasets\"\n","QUANTIZATION_METHODS = [\"q5_k_m\"]\n","MODEL_NAME = MODEL_ID.split('/')[-1]\n","\n","\n","# Install and prepare llama.cpp\n","!git clone https://github.com/ggerganov/llama.cpp\n","!cd llama.cpp && git pull && make clean && LLAMA_CUBLAS=1 make\n","!pip install -r llama.cpp/requirements.txt\n","\n","\n","# Initialize Git LFS for large models\n","!git lfs install\n","\n","\n","# Download the model from Hugging Face\n","!git clone https://huggingface.co/{MODEL_ID}"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"UkMoXHX2DOrO"},"outputs":[],"source":["# # Specify the model ID from which to load the tokenizer\n","# model_id = \"meta-llama/Llama-2-7b-chat-hf\"\n","\n","# # Load the tokenizer associated with the specified model ID\n","# tokenizer = AutoTokenizer.from_pretrained(model_id)\n","\n","# # Create a temporary directory to store all downloaded tokenizer files\n","# temp_save_directory = \"temp_tokenizer_files\"\n","# tokenizer.save_pretrained(temp_save_directory)\n","\n","# # Specify the directory where the tokenizer.model file will be saved permanently\n","# MODEL_NAME = \"llama-2-7b-mini-ibased\"\n","# save_directory = MODEL_NAME\n","\n","# # Create the save directory if it does not exist\n","# os.makedirs(save_directory, exist_ok=True)\n","\n","# # Define the specific filename of the tokenizer we want to retain\n","# tokenizer_filename = \"tokenizer.model\"\n","\n","# # Check for the existence of tokenizer.model in the temporary directory\n","# source_file = os.path.join(temp_save_directory, tokenizer_filename)\n","# destination_file = os.path.join(save_directory, tokenizer_filename)\n","\n","# # Copy the tokenizer.model file to the final directory, if it exists\n","# if os.path.exists(source_file):\n","# shutil.copy(source_file, destination_file)\n","# print(f\"tokenizer.model has been saved in {save_directory}\")\n","# else:\n","# print(\"No tokenizer.model file found in the downloaded tokenizer files.\")\n","\n","# # Remove the temporary directory to clean up unnecessary files\n","# shutil.rmtree(temp_save_directory)"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":159906,"status":"ok","timestamp":1707924525074,"user":{"displayName":"szehanz","userId":"16137883221268059572"},"user_tz":-480},"id":"fD24jJxq7t3k","outputId":"9f3bd35b-2232-4baa-be8a-3a8d9205570a"},"outputs":[{"name":"stdout","output_type":"stream","text":["Loading model file llama-2-7b-combined_datasets/model-00001-of-00003.safetensors\n","Loading model file llama-2-7b-combined_datasets/model-00001-of-00003.safetensors\n","Loading model file llama-2-7b-combined_datasets/model-00002-of-00003.safetensors\n","Loading model file llama-2-7b-combined_datasets/model-00003-of-00003.safetensors\n","params = Params(n_vocab=32000, n_embd=4096, n_layer=32, n_ctx=4096, n_ff=11008, n_head=32, n_head_kv=32, n_experts=None, n_experts_used=None, f_norm_eps=1e-05, rope_scaling_type=None, f_rope_freq_base=10000.0, f_rope_scale=None, n_orig_ctx=None, rope_finetuned=None, ftype=, path_model=PosixPath('llama-2-7b-combined_datasets'))\n","Found vocab files: {'tokenizer.model': PosixPath('llama-2-7b-combined_datasets/tokenizer.model'), 'vocab.json': None, 'tokenizer.json': PosixPath('llama-2-7b-combined_datasets/tokenizer.json')}\n","Loading vocab file 'llama-2-7b-combined_datasets/tokenizer.model', type 'spm'\n","Vocab info: \n","Special vocab info: \n","Permuting layer 0\n","Permuting layer 1\n","Permuting layer 2\n","Permuting layer 3\n","Permuting layer 4\n","Permuting layer 5\n","Permuting layer 6\n","Permuting layer 7\n","Permuting layer 8\n","Permuting layer 9\n","Permuting layer 10\n","Permuting layer 11\n","Permuting layer 12\n","Permuting layer 13\n","Permuting layer 14\n","Permuting layer 15\n","Permuting layer 16\n","Permuting layer 17\n","Permuting layer 18\n","Permuting layer 19\n","Permuting layer 20\n","Permuting layer 21\n","Permuting layer 22\n","Permuting layer 23\n","Permuting layer 24\n","Permuting layer 25\n","Permuting layer 26\n","Permuting layer 27\n","Permuting layer 28\n","Permuting layer 29\n","Permuting layer 30\n","Permuting layer 31\n","model.embed_tokens.weight -> token_embd.weight | F16 | [32000, 4096]\n","model.layers.0.input_layernorm.weight -> blk.0.attn_norm.weight | F16 | [4096]\n","model.layers.0.mlp.down_proj.weight -> blk.0.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.0.mlp.gate_proj.weight -> blk.0.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.0.mlp.up_proj.weight -> blk.0.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.0.post_attention_layernorm.weight -> blk.0.ffn_norm.weight | F16 | [4096]\n","model.layers.0.self_attn.k_proj.weight -> blk.0.attn_k.weight | F16 | [4096, 4096]\n","model.layers.0.self_attn.o_proj.weight -> blk.0.attn_output.weight | F16 | [4096, 4096]\n","model.layers.0.self_attn.q_proj.weight -> blk.0.attn_q.weight | F16 | [4096, 4096]\n","model.layers.0.self_attn.v_proj.weight -> blk.0.attn_v.weight | F16 | [4096, 4096]\n","model.layers.1.input_layernorm.weight -> blk.1.attn_norm.weight | F16 | [4096]\n","model.layers.1.mlp.down_proj.weight -> blk.1.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.1.mlp.gate_proj.weight -> blk.1.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.1.mlp.up_proj.weight -> blk.1.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.1.post_attention_layernorm.weight -> blk.1.ffn_norm.weight | F16 | [4096]\n","model.layers.1.self_attn.k_proj.weight -> blk.1.attn_k.weight | F16 | [4096, 4096]\n","model.layers.1.self_attn.o_proj.weight -> blk.1.attn_output.weight | F16 | [4096, 4096]\n","model.layers.1.self_attn.q_proj.weight -> blk.1.attn_q.weight | F16 | [4096, 4096]\n","model.layers.1.self_attn.v_proj.weight -> blk.1.attn_v.weight | F16 | [4096, 4096]\n","model.layers.10.input_layernorm.weight -> blk.10.attn_norm.weight | F16 | [4096]\n","model.layers.10.mlp.down_proj.weight -> blk.10.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.10.mlp.gate_proj.weight -> blk.10.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.10.mlp.up_proj.weight -> blk.10.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.10.post_attention_layernorm.weight -> blk.10.ffn_norm.weight | F16 | [4096]\n","model.layers.10.self_attn.k_proj.weight -> blk.10.attn_k.weight | F16 | [4096, 4096]\n","model.layers.10.self_attn.o_proj.weight -> blk.10.attn_output.weight | F16 | [4096, 4096]\n","model.layers.10.self_attn.q_proj.weight -> blk.10.attn_q.weight | F16 | [4096, 4096]\n","model.layers.10.self_attn.v_proj.weight -> blk.10.attn_v.weight | F16 | [4096, 4096]\n","model.layers.11.mlp.gate_proj.weight -> blk.11.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.11.self_attn.k_proj.weight -> blk.11.attn_k.weight | F16 | [4096, 4096]\n","model.layers.11.self_attn.o_proj.weight -> blk.11.attn_output.weight | F16 | [4096, 4096]\n","model.layers.11.self_attn.q_proj.weight -> blk.11.attn_q.weight | F16 | [4096, 4096]\n","model.layers.11.self_attn.v_proj.weight -> blk.11.attn_v.weight | F16 | [4096, 4096]\n","model.layers.2.input_layernorm.weight -> blk.2.attn_norm.weight | F16 | [4096]\n","model.layers.2.mlp.down_proj.weight -> blk.2.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.2.mlp.gate_proj.weight -> blk.2.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.2.mlp.up_proj.weight -> blk.2.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.2.post_attention_layernorm.weight -> blk.2.ffn_norm.weight | F16 | [4096]\n","model.layers.2.self_attn.k_proj.weight -> blk.2.attn_k.weight | F16 | [4096, 4096]\n","model.layers.2.self_attn.o_proj.weight -> blk.2.attn_output.weight | F16 | [4096, 4096]\n","model.layers.2.self_attn.q_proj.weight -> blk.2.attn_q.weight | F16 | [4096, 4096]\n","model.layers.2.self_attn.v_proj.weight -> blk.2.attn_v.weight | F16 | [4096, 4096]\n","model.layers.3.input_layernorm.weight -> blk.3.attn_norm.weight | F16 | [4096]\n","model.layers.3.mlp.down_proj.weight -> blk.3.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.3.mlp.gate_proj.weight -> blk.3.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.3.mlp.up_proj.weight -> blk.3.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.3.post_attention_layernorm.weight -> blk.3.ffn_norm.weight | F16 | [4096]\n","model.layers.3.self_attn.k_proj.weight -> blk.3.attn_k.weight | F16 | [4096, 4096]\n","model.layers.3.self_attn.o_proj.weight -> blk.3.attn_output.weight | F16 | [4096, 4096]\n","model.layers.3.self_attn.q_proj.weight -> blk.3.attn_q.weight | F16 | [4096, 4096]\n","model.layers.3.self_attn.v_proj.weight -> blk.3.attn_v.weight | F16 | [4096, 4096]\n","model.layers.4.input_layernorm.weight -> blk.4.attn_norm.weight | F16 | [4096]\n","model.layers.4.mlp.down_proj.weight -> blk.4.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.4.mlp.gate_proj.weight -> blk.4.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.4.mlp.up_proj.weight -> blk.4.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.4.post_attention_layernorm.weight -> blk.4.ffn_norm.weight | F16 | [4096]\n","model.layers.4.self_attn.k_proj.weight -> blk.4.attn_k.weight | F16 | [4096, 4096]\n","model.layers.4.self_attn.o_proj.weight -> blk.4.attn_output.weight | F16 | [4096, 4096]\n","model.layers.4.self_attn.q_proj.weight -> blk.4.attn_q.weight | F16 | [4096, 4096]\n","model.layers.4.self_attn.v_proj.weight -> blk.4.attn_v.weight | F16 | [4096, 4096]\n","model.layers.5.input_layernorm.weight -> blk.5.attn_norm.weight | F16 | [4096]\n","model.layers.5.mlp.down_proj.weight -> blk.5.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.5.mlp.gate_proj.weight -> blk.5.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.5.mlp.up_proj.weight -> blk.5.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.5.post_attention_layernorm.weight -> blk.5.ffn_norm.weight | F16 | [4096]\n","model.layers.5.self_attn.k_proj.weight -> blk.5.attn_k.weight | F16 | [4096, 4096]\n","model.layers.5.self_attn.o_proj.weight -> blk.5.attn_output.weight | F16 | [4096, 4096]\n","model.layers.5.self_attn.q_proj.weight -> blk.5.attn_q.weight | F16 | [4096, 4096]\n","model.layers.5.self_attn.v_proj.weight -> blk.5.attn_v.weight | F16 | [4096, 4096]\n","model.layers.6.input_layernorm.weight -> blk.6.attn_norm.weight | F16 | [4096]\n","model.layers.6.mlp.down_proj.weight -> blk.6.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.6.mlp.gate_proj.weight -> blk.6.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.6.mlp.up_proj.weight -> blk.6.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.6.post_attention_layernorm.weight -> blk.6.ffn_norm.weight | F16 | [4096]\n","model.layers.6.self_attn.k_proj.weight -> blk.6.attn_k.weight | F16 | [4096, 4096]\n","model.layers.6.self_attn.o_proj.weight -> blk.6.attn_output.weight | F16 | [4096, 4096]\n","model.layers.6.self_attn.q_proj.weight -> blk.6.attn_q.weight | F16 | [4096, 4096]\n","model.layers.6.self_attn.v_proj.weight -> blk.6.attn_v.weight | F16 | [4096, 4096]\n","model.layers.7.input_layernorm.weight -> blk.7.attn_norm.weight | F16 | [4096]\n","model.layers.7.mlp.down_proj.weight -> blk.7.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.7.mlp.gate_proj.weight -> blk.7.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.7.mlp.up_proj.weight -> blk.7.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.7.post_attention_layernorm.weight -> blk.7.ffn_norm.weight | F16 | [4096]\n","model.layers.7.self_attn.k_proj.weight -> blk.7.attn_k.weight | F16 | [4096, 4096]\n","model.layers.7.self_attn.o_proj.weight -> blk.7.attn_output.weight | F16 | [4096, 4096]\n","model.layers.7.self_attn.q_proj.weight -> blk.7.attn_q.weight | F16 | [4096, 4096]\n","model.layers.7.self_attn.v_proj.weight -> blk.7.attn_v.weight | F16 | [4096, 4096]\n","model.layers.8.input_layernorm.weight -> blk.8.attn_norm.weight | F16 | [4096]\n","model.layers.8.mlp.down_proj.weight -> blk.8.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.8.mlp.gate_proj.weight -> blk.8.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.8.mlp.up_proj.weight -> blk.8.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.8.post_attention_layernorm.weight -> blk.8.ffn_norm.weight | F16 | [4096]\n","model.layers.8.self_attn.k_proj.weight -> blk.8.attn_k.weight | F16 | [4096, 4096]\n","model.layers.8.self_attn.o_proj.weight -> blk.8.attn_output.weight | F16 | [4096, 4096]\n","model.layers.8.self_attn.q_proj.weight -> blk.8.attn_q.weight | F16 | [4096, 4096]\n","model.layers.8.self_attn.v_proj.weight -> blk.8.attn_v.weight | F16 | [4096, 4096]\n","model.layers.9.input_layernorm.weight -> blk.9.attn_norm.weight | F16 | [4096]\n","model.layers.9.mlp.down_proj.weight -> blk.9.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.9.mlp.gate_proj.weight -> blk.9.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.9.mlp.up_proj.weight -> blk.9.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.9.post_attention_layernorm.weight -> blk.9.ffn_norm.weight | F16 | [4096]\n","model.layers.9.self_attn.k_proj.weight -> blk.9.attn_k.weight | F16 | [4096, 4096]\n","model.layers.9.self_attn.o_proj.weight -> blk.9.attn_output.weight | F16 | [4096, 4096]\n","model.layers.9.self_attn.q_proj.weight -> blk.9.attn_q.weight | F16 | [4096, 4096]\n","model.layers.9.self_attn.v_proj.weight -> blk.9.attn_v.weight | F16 | [4096, 4096]\n","model.layers.11.input_layernorm.weight -> blk.11.attn_norm.weight | F16 | [4096]\n","model.layers.11.mlp.down_proj.weight -> blk.11.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.11.mlp.up_proj.weight -> blk.11.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.11.post_attention_layernorm.weight -> blk.11.ffn_norm.weight | F16 | [4096]\n","model.layers.12.input_layernorm.weight -> blk.12.attn_norm.weight | F16 | [4096]\n","model.layers.12.mlp.down_proj.weight -> blk.12.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.12.mlp.gate_proj.weight -> blk.12.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.12.mlp.up_proj.weight -> blk.12.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.12.post_attention_layernorm.weight -> blk.12.ffn_norm.weight | F16 | [4096]\n","model.layers.12.self_attn.k_proj.weight -> blk.12.attn_k.weight | F16 | [4096, 4096]\n","model.layers.12.self_attn.o_proj.weight -> blk.12.attn_output.weight | F16 | [4096, 4096]\n","model.layers.12.self_attn.q_proj.weight -> blk.12.attn_q.weight | F16 | [4096, 4096]\n","model.layers.12.self_attn.v_proj.weight -> blk.12.attn_v.weight | F16 | [4096, 4096]\n","model.layers.13.input_layernorm.weight -> blk.13.attn_norm.weight | F16 | [4096]\n","model.layers.13.mlp.down_proj.weight -> blk.13.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.13.mlp.gate_proj.weight -> blk.13.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.13.mlp.up_proj.weight -> blk.13.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.13.post_attention_layernorm.weight -> blk.13.ffn_norm.weight | F16 | [4096]\n","model.layers.13.self_attn.k_proj.weight -> blk.13.attn_k.weight | F16 | [4096, 4096]\n","model.layers.13.self_attn.o_proj.weight -> blk.13.attn_output.weight | F16 | [4096, 4096]\n","model.layers.13.self_attn.q_proj.weight -> blk.13.attn_q.weight | F16 | [4096, 4096]\n","model.layers.13.self_attn.v_proj.weight -> blk.13.attn_v.weight | F16 | [4096, 4096]\n","model.layers.14.input_layernorm.weight -> blk.14.attn_norm.weight | F16 | [4096]\n","model.layers.14.mlp.down_proj.weight -> blk.14.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.14.mlp.gate_proj.weight -> blk.14.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.14.mlp.up_proj.weight -> blk.14.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.14.post_attention_layernorm.weight -> blk.14.ffn_norm.weight | F16 | [4096]\n","model.layers.14.self_attn.k_proj.weight -> blk.14.attn_k.weight | F16 | [4096, 4096]\n","model.layers.14.self_attn.o_proj.weight -> blk.14.attn_output.weight | F16 | [4096, 4096]\n","model.layers.14.self_attn.q_proj.weight -> blk.14.attn_q.weight | F16 | [4096, 4096]\n","model.layers.14.self_attn.v_proj.weight -> blk.14.attn_v.weight | F16 | [4096, 4096]\n","model.layers.15.input_layernorm.weight -> blk.15.attn_norm.weight | F16 | [4096]\n","model.layers.15.mlp.down_proj.weight -> blk.15.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.15.mlp.gate_proj.weight -> blk.15.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.15.mlp.up_proj.weight -> blk.15.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.15.post_attention_layernorm.weight -> blk.15.ffn_norm.weight | F16 | [4096]\n","model.layers.15.self_attn.k_proj.weight -> blk.15.attn_k.weight | F16 | [4096, 4096]\n","model.layers.15.self_attn.o_proj.weight -> blk.15.attn_output.weight | F16 | [4096, 4096]\n","model.layers.15.self_attn.q_proj.weight -> blk.15.attn_q.weight | F16 | [4096, 4096]\n","model.layers.15.self_attn.v_proj.weight -> blk.15.attn_v.weight | F16 | [4096, 4096]\n","model.layers.16.input_layernorm.weight -> blk.16.attn_norm.weight | F16 | [4096]\n","model.layers.16.mlp.down_proj.weight -> blk.16.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.16.mlp.gate_proj.weight -> blk.16.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.16.mlp.up_proj.weight -> blk.16.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.16.post_attention_layernorm.weight -> blk.16.ffn_norm.weight | F16 | [4096]\n","model.layers.16.self_attn.k_proj.weight -> blk.16.attn_k.weight | F16 | [4096, 4096]\n","model.layers.16.self_attn.o_proj.weight -> blk.16.attn_output.weight | F16 | [4096, 4096]\n","model.layers.16.self_attn.q_proj.weight -> blk.16.attn_q.weight | F16 | [4096, 4096]\n","model.layers.16.self_attn.v_proj.weight -> blk.16.attn_v.weight | F16 | [4096, 4096]\n","model.layers.17.input_layernorm.weight -> blk.17.attn_norm.weight | F16 | [4096]\n","model.layers.17.mlp.down_proj.weight -> blk.17.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.17.mlp.gate_proj.weight -> blk.17.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.17.mlp.up_proj.weight -> blk.17.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.17.post_attention_layernorm.weight -> blk.17.ffn_norm.weight | F16 | [4096]\n","model.layers.17.self_attn.k_proj.weight -> blk.17.attn_k.weight | F16 | [4096, 4096]\n","model.layers.17.self_attn.o_proj.weight -> blk.17.attn_output.weight | F16 | [4096, 4096]\n","model.layers.17.self_attn.q_proj.weight -> blk.17.attn_q.weight | F16 | [4096, 4096]\n","model.layers.17.self_attn.v_proj.weight -> blk.17.attn_v.weight | F16 | [4096, 4096]\n","model.layers.18.input_layernorm.weight -> blk.18.attn_norm.weight | F16 | [4096]\n","model.layers.18.mlp.down_proj.weight -> blk.18.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.18.mlp.gate_proj.weight -> blk.18.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.18.mlp.up_proj.weight -> blk.18.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.18.post_attention_layernorm.weight -> blk.18.ffn_norm.weight | F16 | [4096]\n","model.layers.18.self_attn.k_proj.weight -> blk.18.attn_k.weight | F16 | [4096, 4096]\n","model.layers.18.self_attn.o_proj.weight -> blk.18.attn_output.weight | F16 | [4096, 4096]\n","model.layers.18.self_attn.q_proj.weight -> blk.18.attn_q.weight | F16 | [4096, 4096]\n","model.layers.18.self_attn.v_proj.weight -> blk.18.attn_v.weight | F16 | [4096, 4096]\n","model.layers.19.input_layernorm.weight -> blk.19.attn_norm.weight | F16 | [4096]\n","model.layers.19.mlp.down_proj.weight -> blk.19.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.19.mlp.gate_proj.weight -> blk.19.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.19.mlp.up_proj.weight -> blk.19.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.19.post_attention_layernorm.weight -> blk.19.ffn_norm.weight | F16 | [4096]\n","model.layers.19.self_attn.k_proj.weight -> blk.19.attn_k.weight | F16 | [4096, 4096]\n","model.layers.19.self_attn.o_proj.weight -> blk.19.attn_output.weight | F16 | [4096, 4096]\n","model.layers.19.self_attn.q_proj.weight -> blk.19.attn_q.weight | F16 | [4096, 4096]\n","model.layers.19.self_attn.v_proj.weight -> blk.19.attn_v.weight | F16 | [4096, 4096]\n","model.layers.20.input_layernorm.weight -> blk.20.attn_norm.weight | F16 | [4096]\n","model.layers.20.mlp.down_proj.weight -> blk.20.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.20.mlp.gate_proj.weight -> blk.20.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.20.mlp.up_proj.weight -> blk.20.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.20.post_attention_layernorm.weight -> blk.20.ffn_norm.weight | F16 | [4096]\n","model.layers.20.self_attn.k_proj.weight -> blk.20.attn_k.weight | F16 | [4096, 4096]\n","model.layers.20.self_attn.o_proj.weight -> blk.20.attn_output.weight | F16 | [4096, 4096]\n","model.layers.20.self_attn.q_proj.weight -> blk.20.attn_q.weight | F16 | [4096, 4096]\n","model.layers.20.self_attn.v_proj.weight -> blk.20.attn_v.weight | F16 | [4096, 4096]\n","model.layers.21.input_layernorm.weight -> blk.21.attn_norm.weight | F16 | [4096]\n","model.layers.21.mlp.down_proj.weight -> blk.21.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.21.mlp.gate_proj.weight -> blk.21.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.21.mlp.up_proj.weight -> blk.21.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.21.post_attention_layernorm.weight -> blk.21.ffn_norm.weight | F16 | [4096]\n","model.layers.21.self_attn.k_proj.weight -> blk.21.attn_k.weight | F16 | [4096, 4096]\n","model.layers.21.self_attn.o_proj.weight -> blk.21.attn_output.weight | F16 | [4096, 4096]\n","model.layers.21.self_attn.q_proj.weight -> blk.21.attn_q.weight | F16 | [4096, 4096]\n","model.layers.21.self_attn.v_proj.weight -> blk.21.attn_v.weight | F16 | [4096, 4096]\n","model.layers.22.input_layernorm.weight -> blk.22.attn_norm.weight | F16 | [4096]\n","model.layers.22.mlp.down_proj.weight -> blk.22.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.22.mlp.gate_proj.weight -> blk.22.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.22.mlp.up_proj.weight -> blk.22.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.22.post_attention_layernorm.weight -> blk.22.ffn_norm.weight | F16 | [4096]\n","model.layers.22.self_attn.k_proj.weight -> blk.22.attn_k.weight | F16 | [4096, 4096]\n","model.layers.22.self_attn.o_proj.weight -> blk.22.attn_output.weight | F16 | [4096, 4096]\n","model.layers.22.self_attn.q_proj.weight -> blk.22.attn_q.weight | F16 | [4096, 4096]\n","model.layers.22.self_attn.v_proj.weight -> blk.22.attn_v.weight | F16 | [4096, 4096]\n","model.layers.23.mlp.gate_proj.weight -> blk.23.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.23.mlp.up_proj.weight -> blk.23.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.23.self_attn.k_proj.weight -> blk.23.attn_k.weight | F16 | [4096, 4096]\n","model.layers.23.self_attn.o_proj.weight -> blk.23.attn_output.weight | F16 | [4096, 4096]\n","model.layers.23.self_attn.q_proj.weight -> blk.23.attn_q.weight | F16 | [4096, 4096]\n","model.layers.23.self_attn.v_proj.weight -> blk.23.attn_v.weight | F16 | [4096, 4096]\n","lm_head.weight -> output.weight | F16 | [32000, 4096]\n","model.layers.23.input_layernorm.weight -> blk.23.attn_norm.weight | F16 | [4096]\n","model.layers.23.mlp.down_proj.weight -> blk.23.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.23.post_attention_layernorm.weight -> blk.23.ffn_norm.weight | F16 | [4096]\n","model.layers.24.input_layernorm.weight -> blk.24.attn_norm.weight | F16 | [4096]\n","model.layers.24.mlp.down_proj.weight -> blk.24.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.24.mlp.gate_proj.weight -> blk.24.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.24.mlp.up_proj.weight -> blk.24.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.24.post_attention_layernorm.weight -> blk.24.ffn_norm.weight | F16 | [4096]\n","model.layers.24.self_attn.k_proj.weight -> blk.24.attn_k.weight | F16 | [4096, 4096]\n","model.layers.24.self_attn.o_proj.weight -> blk.24.attn_output.weight | F16 | [4096, 4096]\n","model.layers.24.self_attn.q_proj.weight -> blk.24.attn_q.weight | F16 | [4096, 4096]\n","model.layers.24.self_attn.v_proj.weight -> blk.24.attn_v.weight | F16 | [4096, 4096]\n","model.layers.25.input_layernorm.weight -> blk.25.attn_norm.weight | F16 | [4096]\n","model.layers.25.mlp.down_proj.weight -> blk.25.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.25.mlp.gate_proj.weight -> blk.25.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.25.mlp.up_proj.weight -> blk.25.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.25.post_attention_layernorm.weight -> blk.25.ffn_norm.weight | F16 | [4096]\n","model.layers.25.self_attn.k_proj.weight -> blk.25.attn_k.weight | F16 | [4096, 4096]\n","model.layers.25.self_attn.o_proj.weight -> blk.25.attn_output.weight | F16 | [4096, 4096]\n","model.layers.25.self_attn.q_proj.weight -> blk.25.attn_q.weight | F16 | [4096, 4096]\n","model.layers.25.self_attn.v_proj.weight -> blk.25.attn_v.weight | F16 | [4096, 4096]\n","model.layers.26.input_layernorm.weight -> blk.26.attn_norm.weight | F16 | [4096]\n","model.layers.26.mlp.down_proj.weight -> blk.26.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.26.mlp.gate_proj.weight -> blk.26.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.26.mlp.up_proj.weight -> blk.26.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.26.post_attention_layernorm.weight -> blk.26.ffn_norm.weight | F16 | [4096]\n","model.layers.26.self_attn.k_proj.weight -> blk.26.attn_k.weight | F16 | [4096, 4096]\n","model.layers.26.self_attn.o_proj.weight -> blk.26.attn_output.weight | F16 | [4096, 4096]\n","model.layers.26.self_attn.q_proj.weight -> blk.26.attn_q.weight | F16 | [4096, 4096]\n","model.layers.26.self_attn.v_proj.weight -> blk.26.attn_v.weight | F16 | [4096, 4096]\n","model.layers.27.input_layernorm.weight -> blk.27.attn_norm.weight | F16 | [4096]\n","model.layers.27.mlp.down_proj.weight -> blk.27.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.27.mlp.gate_proj.weight -> blk.27.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.27.mlp.up_proj.weight -> blk.27.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.27.post_attention_layernorm.weight -> blk.27.ffn_norm.weight | F16 | [4096]\n","model.layers.27.self_attn.k_proj.weight -> blk.27.attn_k.weight | F16 | [4096, 4096]\n","model.layers.27.self_attn.o_proj.weight -> blk.27.attn_output.weight | F16 | [4096, 4096]\n","model.layers.27.self_attn.q_proj.weight -> blk.27.attn_q.weight | F16 | [4096, 4096]\n","model.layers.27.self_attn.v_proj.weight -> blk.27.attn_v.weight | F16 | [4096, 4096]\n","model.layers.28.input_layernorm.weight -> blk.28.attn_norm.weight | F16 | [4096]\n","model.layers.28.mlp.down_proj.weight -> blk.28.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.28.mlp.gate_proj.weight -> blk.28.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.28.mlp.up_proj.weight -> blk.28.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.28.post_attention_layernorm.weight -> blk.28.ffn_norm.weight | F16 | [4096]\n","model.layers.28.self_attn.k_proj.weight -> blk.28.attn_k.weight | F16 | [4096, 4096]\n","model.layers.28.self_attn.o_proj.weight -> blk.28.attn_output.weight | F16 | [4096, 4096]\n","model.layers.28.self_attn.q_proj.weight -> blk.28.attn_q.weight | F16 | [4096, 4096]\n","model.layers.28.self_attn.v_proj.weight -> blk.28.attn_v.weight | F16 | [4096, 4096]\n","model.layers.29.input_layernorm.weight -> blk.29.attn_norm.weight | F16 | [4096]\n","model.layers.29.mlp.down_proj.weight -> blk.29.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.29.mlp.gate_proj.weight -> blk.29.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.29.mlp.up_proj.weight -> blk.29.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.29.post_attention_layernorm.weight -> blk.29.ffn_norm.weight | F16 | [4096]\n","model.layers.29.self_attn.k_proj.weight -> blk.29.attn_k.weight | F16 | [4096, 4096]\n","model.layers.29.self_attn.o_proj.weight -> blk.29.attn_output.weight | F16 | [4096, 4096]\n","model.layers.29.self_attn.q_proj.weight -> blk.29.attn_q.weight | F16 | [4096, 4096]\n","model.layers.29.self_attn.v_proj.weight -> blk.29.attn_v.weight | F16 | [4096, 4096]\n","model.layers.30.input_layernorm.weight -> blk.30.attn_norm.weight | F16 | [4096]\n","model.layers.30.mlp.down_proj.weight -> blk.30.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.30.mlp.gate_proj.weight -> blk.30.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.30.mlp.up_proj.weight -> blk.30.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.30.post_attention_layernorm.weight -> blk.30.ffn_norm.weight | F16 | [4096]\n","model.layers.30.self_attn.k_proj.weight -> blk.30.attn_k.weight | F16 | [4096, 4096]\n","model.layers.30.self_attn.o_proj.weight -> blk.30.attn_output.weight | F16 | [4096, 4096]\n","model.layers.30.self_attn.q_proj.weight -> blk.30.attn_q.weight | F16 | [4096, 4096]\n","model.layers.30.self_attn.v_proj.weight -> blk.30.attn_v.weight | F16 | [4096, 4096]\n","model.layers.31.input_layernorm.weight -> blk.31.attn_norm.weight | F16 | [4096]\n","model.layers.31.mlp.down_proj.weight -> blk.31.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.31.mlp.gate_proj.weight -> blk.31.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.31.mlp.up_proj.weight -> blk.31.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.31.post_attention_layernorm.weight -> blk.31.ffn_norm.weight | F16 | [4096]\n","model.layers.31.self_attn.k_proj.weight -> blk.31.attn_k.weight | F16 | [4096, 4096]\n","model.layers.31.self_attn.o_proj.weight -> blk.31.attn_output.weight | F16 | [4096, 4096]\n","model.layers.31.self_attn.q_proj.weight -> blk.31.attn_q.weight | F16 | [4096, 4096]\n","model.layers.31.self_attn.v_proj.weight -> blk.31.attn_v.weight | F16 | [4096, 4096]\n","model.norm.weight -> output_norm.weight | F16 | [4096]\n","Writing llama-2-7b-combined_datasets/llama-2-7b-combined_datasets.fp16.bin, format 1\n","Ignoring added_tokens.json since model matches vocab size without it.\n","gguf: This GGUF file is for Little Endian only\n","gguf: Setting special token type bos to 1\n","gguf: Setting special token type eos to 2\n","gguf: Setting special token type unk to 0\n","gguf: Setting special token type pad to 2\n","gguf: Setting add_bos_token to True\n","gguf: Setting add_eos_token to False\n","gguf: Setting chat_template to {% if messages[0]['role'] == 'system' %}{% set loop_messages = messages[1:] %}{% set system_message = messages[0]['content'] %}{% else %}{% set loop_messages = messages %}{% set system_message = false %}{% endif %}{% for message in loop_messages %}{% if (message['role'] == 'user') != (loop.index0 % 2 == 0) %}{{ raise_exception('Conversation roles must alternate user/assistant/user/assistant/...') }}{% endif %}{% if loop.index0 == 0 and system_message != false %}{% set content = '<>\\n' + system_message + '\\n<>\\n\\n' + message['content'] %}{% else %}{% set content = message['content'] %}{% endif %}{% if message['role'] == 'user' %}{{ bos_token + '[INST] ' + content.strip() + ' [/INST]' }}{% elif message['role'] == 'assistant' %}{{ ' ' + content.strip() + ' ' + eos_token }}{% endif %}{% endfor %}\n","[ 1/291] Writing tensor token_embd.weight | size 32000 x 4096 | type F16 | T+ 0\n","[ 2/291] Writing tensor blk.0.attn_norm.weight | size 4096 | type F32 | T+ 0\n","[ 3/291] Writing tensor blk.0.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 0\n","[ 4/291] Writing tensor blk.0.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 0\n","[ 5/291] Writing tensor blk.0.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 0\n","[ 6/291] Writing tensor blk.0.ffn_norm.weight | size 4096 | type F32 | T+ 0\n","[ 7/291] Writing tensor blk.0.attn_k.weight | size 4096 x 4096 | type F16 | T+ 0\n","[ 8/291] Writing tensor blk.0.attn_output.weight | size 4096 x 4096 | type F16 | T+ 0\n","[ 9/291] Writing tensor blk.0.attn_q.weight | size 4096 x 4096 | type F16 | T+ 0\n","[ 10/291] Writing tensor blk.0.attn_v.weight | size 4096 x 4096 | type F16 | T+ 0\n","[ 11/291] Writing tensor blk.1.attn_norm.weight | size 4096 | type F32 | T+ 0\n","[ 12/291] Writing tensor blk.1.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 0\n","[ 13/291] Writing tensor blk.1.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 0\n","[ 14/291] Writing tensor blk.1.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 0\n","[ 15/291] Writing tensor blk.1.ffn_norm.weight | size 4096 | type F32 | T+ 0\n","[ 16/291] Writing tensor blk.1.attn_k.weight | size 4096 x 4096 | type F16 | T+ 0\n","[ 17/291] Writing tensor blk.1.attn_output.weight | size 4096 x 4096 | type F16 | T+ 0\n","[ 18/291] Writing tensor blk.1.attn_q.weight | size 4096 x 4096 | type F16 | T+ 0\n","[ 19/291] Writing tensor blk.1.attn_v.weight | size 4096 x 4096 | type F16 | T+ 0\n","[ 20/291] Writing tensor blk.10.attn_norm.weight | size 4096 | type F32 | T+ 0\n","[ 21/291] Writing tensor blk.10.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 0\n","[ 22/291] Writing tensor blk.10.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 0\n","[ 23/291] Writing tensor blk.10.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 0\n","[ 24/291] Writing tensor blk.10.ffn_norm.weight | size 4096 | type F32 | T+ 0\n","[ 25/291] Writing tensor blk.10.attn_k.weight | size 4096 x 4096 | type F16 | T+ 0\n","[ 26/291] Writing tensor blk.10.attn_output.weight | size 4096 x 4096 | type F16 | T+ 0\n","[ 27/291] Writing tensor blk.10.attn_q.weight | size 4096 x 4096 | type F16 | T+ 0\n","[ 28/291] Writing tensor blk.10.attn_v.weight | size 4096 x 4096 | type F16 | T+ 0\n","[ 29/291] Writing tensor blk.11.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 0\n","[ 30/291] Writing tensor blk.11.attn_k.weight | size 4096 x 4096 | type F16 | T+ 0\n","[ 31/291] Writing tensor blk.11.attn_output.weight | size 4096 x 4096 | type F16 | T+ 0\n","[ 32/291] Writing tensor blk.11.attn_q.weight | size 4096 x 4096 | type F16 | T+ 0\n","[ 33/291] Writing tensor blk.11.attn_v.weight | size 4096 x 4096 | type F16 | T+ 0\n","[ 34/291] Writing tensor blk.2.attn_norm.weight | size 4096 | type F32 | T+ 0\n","[ 35/291] Writing tensor blk.2.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 0\n","[ 36/291] Writing tensor blk.2.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 0\n","[ 37/291] Writing tensor blk.2.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 1\n","[ 38/291] Writing tensor blk.2.ffn_norm.weight | size 4096 | type F32 | T+ 1\n","[ 39/291] Writing tensor blk.2.attn_k.weight | size 4096 x 4096 | type F16 | T+ 1\n","[ 40/291] Writing tensor blk.2.attn_output.weight | size 4096 x 4096 | type F16 | T+ 1\n","[ 41/291] Writing tensor blk.2.attn_q.weight | size 4096 x 4096 | type F16 | T+ 1\n","[ 42/291] Writing tensor blk.2.attn_v.weight | size 4096 x 4096 | type F16 | T+ 1\n","[ 43/291] Writing tensor blk.3.attn_norm.weight | size 4096 | type F32 | T+ 1\n","[ 44/291] Writing tensor blk.3.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 1\n","[ 45/291] Writing tensor blk.3.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 1\n","[ 46/291] Writing tensor blk.3.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 1\n","[ 47/291] Writing tensor blk.3.ffn_norm.weight | size 4096 | type F32 | T+ 1\n","[ 48/291] Writing tensor blk.3.attn_k.weight | size 4096 x 4096 | type F16 | T+ 1\n","[ 49/291] Writing tensor blk.3.attn_output.weight | size 4096 x 4096 | type F16 | T+ 1\n","[ 50/291] Writing tensor blk.3.attn_q.weight | size 4096 x 4096 | type F16 | T+ 1\n","[ 51/291] Writing tensor blk.3.attn_v.weight | size 4096 x 4096 | type F16 | T+ 1\n","[ 52/291] Writing tensor blk.4.attn_norm.weight | size 4096 | type F32 | T+ 1\n","[ 53/291] Writing tensor blk.4.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 1\n","[ 54/291] Writing tensor blk.4.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 1\n","[ 55/291] Writing tensor blk.4.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 1\n","[ 56/291] Writing tensor blk.4.ffn_norm.weight | size 4096 | type F32 | T+ 1\n","[ 57/291] Writing tensor blk.4.attn_k.weight | size 4096 x 4096 | type F16 | T+ 1\n","[ 58/291] Writing tensor blk.4.attn_output.weight | size 4096 x 4096 | type F16 | T+ 1\n","[ 59/291] Writing tensor blk.4.attn_q.weight | size 4096 x 4096 | type F16 | T+ 1\n","[ 60/291] Writing tensor blk.4.attn_v.weight | size 4096 x 4096 | type F16 | T+ 1\n","[ 61/291] Writing tensor blk.5.attn_norm.weight | size 4096 | type F32 | T+ 1\n","[ 62/291] Writing tensor blk.5.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 1\n","[ 63/291] Writing tensor blk.5.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 1\n","[ 64/291] Writing tensor blk.5.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 1\n","[ 65/291] Writing tensor blk.5.ffn_norm.weight | size 4096 | type F32 | T+ 1\n","[ 66/291] Writing tensor blk.5.attn_k.weight | size 4096 x 4096 | type F16 | T+ 1\n","[ 67/291] Writing tensor blk.5.attn_output.weight | size 4096 x 4096 | type F16 | T+ 1\n","[ 68/291] Writing tensor blk.5.attn_q.weight | size 4096 x 4096 | type F16 | T+ 1\n","[ 69/291] Writing tensor blk.5.attn_v.weight | size 4096 x 4096 | type F16 | T+ 1\n","[ 70/291] Writing tensor blk.6.attn_norm.weight | size 4096 | type F32 | T+ 1\n","[ 71/291] Writing tensor blk.6.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 1\n","[ 72/291] Writing tensor blk.6.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 1\n","[ 73/291] Writing tensor blk.6.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 1\n","[ 74/291] Writing tensor blk.6.ffn_norm.weight | size 4096 | type F32 | T+ 1\n","[ 75/291] Writing tensor blk.6.attn_k.weight | size 4096 x 4096 | type F16 | T+ 1\n","[ 76/291] Writing tensor blk.6.attn_output.weight | size 4096 x 4096 | type F16 | T+ 1\n","[ 77/291] Writing tensor blk.6.attn_q.weight | size 4096 x 4096 | type F16 | T+ 1\n","[ 78/291] Writing tensor blk.6.attn_v.weight | size 4096 x 4096 | type F16 | T+ 1\n","[ 79/291] Writing tensor blk.7.attn_norm.weight | size 4096 | type F32 | T+ 1\n","[ 80/291] Writing tensor blk.7.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 1\n","[ 81/291] Writing tensor blk.7.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 2\n","[ 82/291] Writing tensor blk.7.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 2\n","[ 83/291] Writing tensor blk.7.ffn_norm.weight | size 4096 | type F32 | T+ 2\n","[ 84/291] Writing tensor blk.7.attn_k.weight | size 4096 x 4096 | type F16 | T+ 2\n","[ 85/291] Writing tensor blk.7.attn_output.weight | size 4096 x 4096 | type F16 | T+ 2\n","[ 86/291] Writing tensor blk.7.attn_q.weight | size 4096 x 4096 | type F16 | T+ 2\n","[ 87/291] Writing tensor blk.7.attn_v.weight | size 4096 x 4096 | type F16 | T+ 2\n","[ 88/291] Writing tensor blk.8.attn_norm.weight | size 4096 | type F32 | T+ 2\n","[ 89/291] Writing tensor blk.8.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 2\n","[ 90/291] Writing tensor blk.8.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 2\n","[ 91/291] Writing tensor blk.8.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 2\n","[ 92/291] Writing tensor blk.8.ffn_norm.weight | size 4096 | type F32 | T+ 2\n","[ 93/291] Writing tensor blk.8.attn_k.weight | size 4096 x 4096 | type F16 | T+ 2\n","[ 94/291] Writing tensor blk.8.attn_output.weight | size 4096 x 4096 | type F16 | T+ 2\n","[ 95/291] Writing tensor blk.8.attn_q.weight | size 4096 x 4096 | type F16 | T+ 2\n","[ 96/291] Writing tensor blk.8.attn_v.weight | size 4096 x 4096 | type F16 | T+ 2\n","[ 97/291] Writing tensor blk.9.attn_norm.weight | size 4096 | type F32 | T+ 2\n","[ 98/291] Writing tensor blk.9.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 2\n","[ 99/291] Writing tensor blk.9.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 2\n","[100/291] Writing tensor blk.9.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 2\n","[101/291] Writing tensor blk.9.ffn_norm.weight | size 4096 | type F32 | T+ 2\n","[102/291] Writing tensor blk.9.attn_k.weight | size 4096 x 4096 | type F16 | T+ 2\n","[103/291] Writing tensor blk.9.attn_output.weight | size 4096 x 4096 | type F16 | T+ 2\n","[104/291] Writing tensor blk.9.attn_q.weight | size 4096 x 4096 | type F16 | T+ 2\n","[105/291] Writing tensor blk.9.attn_v.weight | size 4096 x 4096 | type F16 | T+ 2\n","[106/291] Writing tensor blk.11.attn_norm.weight | size 4096 | type F32 | T+ 2\n","[107/291] Writing tensor blk.11.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 2\n","[108/291] Writing tensor blk.11.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 2\n","[109/291] Writing tensor blk.11.ffn_norm.weight | size 4096 | type F32 | T+ 2\n","[110/291] Writing tensor blk.12.attn_norm.weight | size 4096 | type F32 | T+ 2\n","[111/291] Writing tensor blk.12.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 2\n","[112/291] Writing tensor blk.12.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 2\n","[113/291] Writing tensor blk.12.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 2\n","[114/291] Writing tensor blk.12.ffn_norm.weight | size 4096 | type F32 | T+ 2\n","[115/291] Writing tensor blk.12.attn_k.weight | size 4096 x 4096 | type F16 | T+ 2\n","[116/291] Writing tensor blk.12.attn_output.weight | size 4096 x 4096 | type F16 | T+ 2\n","[117/291] Writing tensor blk.12.attn_q.weight | size 4096 x 4096 | type F16 | T+ 2\n","[118/291] Writing tensor blk.12.attn_v.weight | size 4096 x 4096 | type F16 | T+ 3\n","[119/291] Writing tensor blk.13.attn_norm.weight | size 4096 | type F32 | T+ 3\n","[120/291] Writing tensor blk.13.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 3\n","[121/291] Writing tensor blk.13.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 3\n","[122/291] Writing tensor blk.13.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 3\n","[123/291] Writing tensor blk.13.ffn_norm.weight | size 4096 | type F32 | T+ 3\n","[124/291] Writing tensor blk.13.attn_k.weight | size 4096 x 4096 | type F16 | T+ 3\n","[125/291] Writing tensor blk.13.attn_output.weight | size 4096 x 4096 | type F16 | T+ 3\n","[126/291] Writing tensor blk.13.attn_q.weight | size 4096 x 4096 | type F16 | T+ 3\n","[127/291] Writing tensor blk.13.attn_v.weight | size 4096 x 4096 | type F16 | T+ 3\n","[128/291] Writing tensor blk.14.attn_norm.weight | size 4096 | type F32 | T+ 3\n","[129/291] Writing tensor blk.14.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 3\n","[130/291] Writing tensor blk.14.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 3\n","[131/291] Writing tensor blk.14.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 3\n","[132/291] Writing tensor blk.14.ffn_norm.weight | size 4096 | type F32 | T+ 3\n","[133/291] Writing tensor blk.14.attn_k.weight | size 4096 x 4096 | type F16 | T+ 3\n","[134/291] Writing tensor blk.14.attn_output.weight | size 4096 x 4096 | type F16 | T+ 3\n","[135/291] Writing tensor blk.14.attn_q.weight | size 4096 x 4096 | type F16 | T+ 3\n","[136/291] Writing tensor blk.14.attn_v.weight | size 4096 x 4096 | type F16 | T+ 3\n","[137/291] Writing tensor blk.15.attn_norm.weight | size 4096 | type F32 | T+ 3\n","[138/291] Writing tensor blk.15.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 3\n","[139/291] Writing tensor blk.15.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 3\n","[140/291] Writing tensor blk.15.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 3\n","[141/291] Writing tensor blk.15.ffn_norm.weight | size 4096 | type F32 | T+ 3\n","[142/291] Writing tensor blk.15.attn_k.weight | size 4096 x 4096 | type F16 | T+ 3\n","[143/291] Writing tensor blk.15.attn_output.weight | size 4096 x 4096 | type F16 | T+ 3\n","[144/291] Writing tensor blk.15.attn_q.weight | size 4096 x 4096 | type F16 | T+ 3\n","[145/291] Writing tensor blk.15.attn_v.weight | size 4096 x 4096 | type F16 | T+ 3\n","[146/291] Writing tensor blk.16.attn_norm.weight | size 4096 | type F32 | T+ 3\n","[147/291] Writing tensor blk.16.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 3\n","[148/291] Writing tensor blk.16.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 3\n","[149/291] Writing tensor blk.16.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 3\n","[150/291] Writing tensor blk.16.ffn_norm.weight | size 4096 | type F32 | T+ 3\n","[151/291] Writing tensor blk.16.attn_k.weight | size 4096 x 4096 | type F16 | T+ 3\n","[152/291] Writing tensor blk.16.attn_output.weight | size 4096 x 4096 | type F16 | T+ 3\n","[153/291] Writing tensor blk.16.attn_q.weight | size 4096 x 4096 | type F16 | T+ 3\n","[154/291] Writing tensor blk.16.attn_v.weight | size 4096 x 4096 | type F16 | T+ 3\n","[155/291] Writing tensor blk.17.attn_norm.weight | size 4096 | type F32 | T+ 3\n","[156/291] Writing tensor blk.17.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 3\n","[157/291] Writing tensor blk.17.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 4\n","[158/291] Writing tensor blk.17.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 4\n","[159/291] Writing tensor blk.17.ffn_norm.weight | size 4096 | type F32 | T+ 4\n","[160/291] Writing tensor blk.17.attn_k.weight | size 4096 x 4096 | type F16 | T+ 4\n","[161/291] Writing tensor blk.17.attn_output.weight | size 4096 x 4096 | type F16 | T+ 4\n","[162/291] Writing tensor blk.17.attn_q.weight | size 4096 x 4096 | type F16 | T+ 4\n","[163/291] Writing tensor blk.17.attn_v.weight | size 4096 x 4096 | type F16 | T+ 4\n","[164/291] Writing tensor blk.18.attn_norm.weight | size 4096 | type F32 | T+ 4\n","[165/291] Writing tensor blk.18.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 4\n","[166/291] Writing tensor blk.18.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 4\n","[167/291] Writing tensor blk.18.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 4\n","[168/291] Writing tensor blk.18.ffn_norm.weight | size 4096 | type F32 | T+ 4\n","[169/291] Writing tensor blk.18.attn_k.weight | size 4096 x 4096 | type F16 | T+ 4\n","[170/291] Writing tensor blk.18.attn_output.weight | size 4096 x 4096 | type F16 | T+ 4\n","[171/291] Writing tensor blk.18.attn_q.weight | size 4096 x 4096 | type F16 | T+ 4\n","[172/291] Writing tensor blk.18.attn_v.weight | size 4096 x 4096 | type F16 | T+ 4\n","[173/291] Writing tensor blk.19.attn_norm.weight | size 4096 | type F32 | T+ 4\n","[174/291] Writing tensor blk.19.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 4\n","[175/291] Writing tensor blk.19.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 4\n","[176/291] Writing tensor blk.19.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 4\n","[177/291] Writing tensor blk.19.ffn_norm.weight | size 4096 | type F32 | T+ 4\n","[178/291] Writing tensor blk.19.attn_k.weight | size 4096 x 4096 | type F16 | T+ 4\n","[179/291] Writing tensor blk.19.attn_output.weight | size 4096 x 4096 | type F16 | T+ 4\n","[180/291] Writing tensor blk.19.attn_q.weight | size 4096 x 4096 | type F16 | T+ 4\n","[181/291] Writing tensor blk.19.attn_v.weight | size 4096 x 4096 | type F16 | T+ 4\n","[182/291] Writing tensor blk.20.attn_norm.weight | size 4096 | type F32 | T+ 4\n","[183/291] Writing tensor blk.20.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 4\n","[184/291] Writing tensor blk.20.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 4\n","[185/291] Writing tensor blk.20.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 4\n","[186/291] Writing tensor blk.20.ffn_norm.weight | size 4096 | type F32 | T+ 4\n","[187/291] Writing tensor blk.20.attn_k.weight | size 4096 x 4096 | type F16 | T+ 4\n","[188/291] Writing tensor blk.20.attn_output.weight | size 4096 x 4096 | type F16 | T+ 4\n","[189/291] Writing tensor blk.20.attn_q.weight | size 4096 x 4096 | type F16 | T+ 4\n","[190/291] Writing tensor blk.20.attn_v.weight | size 4096 x 4096 | type F16 | T+ 4\n","[191/291] Writing tensor blk.21.attn_norm.weight | size 4096 | type F32 | T+ 4\n","[192/291] Writing tensor blk.21.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 4\n","[193/291] Writing tensor blk.21.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 4\n","[194/291] Writing tensor blk.21.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 5\n","[195/291] Writing tensor blk.21.ffn_norm.weight | size 4096 | type F32 | T+ 5\n","[196/291] Writing tensor blk.21.attn_k.weight | size 4096 x 4096 | type F16 | T+ 5\n","[197/291] Writing tensor blk.21.attn_output.weight | size 4096 x 4096 | type F16 | T+ 5\n","[198/291] Writing tensor blk.21.attn_q.weight | size 4096 x 4096 | type F16 | T+ 5\n","[199/291] Writing tensor blk.21.attn_v.weight | size 4096 x 4096 | type F16 | T+ 5\n","[200/291] Writing tensor blk.22.attn_norm.weight | size 4096 | type F32 | T+ 5\n","[201/291] Writing tensor blk.22.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 5\n","[202/291] Writing tensor blk.22.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 5\n","[203/291] Writing tensor blk.22.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 5\n","[204/291] Writing tensor blk.22.ffn_norm.weight | size 4096 | type F32 | T+ 5\n","[205/291] Writing tensor blk.22.attn_k.weight | size 4096 x 4096 | type F16 | T+ 5\n","[206/291] Writing tensor blk.22.attn_output.weight | size 4096 x 4096 | type F16 | T+ 5\n","[207/291] Writing tensor blk.22.attn_q.weight | size 4096 x 4096 | type F16 | T+ 5\n","[208/291] Writing tensor blk.22.attn_v.weight | size 4096 x 4096 | type F16 | T+ 5\n","[209/291] Writing tensor blk.23.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 5\n","[210/291] Writing tensor blk.23.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 5\n","[211/291] Writing tensor blk.23.attn_k.weight | size 4096 x 4096 | type F16 | T+ 5\n","[212/291] Writing tensor blk.23.attn_output.weight | size 4096 x 4096 | type F16 | T+ 5\n","[213/291] Writing tensor blk.23.attn_q.weight | size 4096 x 4096 | type F16 | T+ 5\n","[214/291] Writing tensor blk.23.attn_v.weight | size 4096 x 4096 | type F16 | T+ 5\n","[215/291] Writing tensor output.weight | size 32000 x 4096 | type F16 | T+ 5\n","[216/291] Writing tensor blk.23.attn_norm.weight | size 4096 | type F32 | T+ 5\n","[217/291] Writing tensor blk.23.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 5\n","[218/291] Writing tensor blk.23.ffn_norm.weight | size 4096 | type F32 | T+ 5\n","[219/291] Writing tensor blk.24.attn_norm.weight | size 4096 | type F32 | T+ 5\n","[220/291] Writing tensor blk.24.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 5\n","[221/291] Writing tensor blk.24.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 5\n","[222/291] Writing tensor blk.24.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 5\n","[223/291] Writing tensor blk.24.ffn_norm.weight | size 4096 | type F32 | T+ 6\n","[224/291] Writing tensor blk.24.attn_k.weight | size 4096 x 4096 | type F16 | T+ 6\n","[225/291] Writing tensor blk.24.attn_output.weight | size 4096 x 4096 | type F16 | T+ 6\n","[226/291] Writing tensor blk.24.attn_q.weight | size 4096 x 4096 | type F16 | T+ 6\n","[227/291] Writing tensor blk.24.attn_v.weight | size 4096 x 4096 | type F16 | T+ 6\n","[228/291] Writing tensor blk.25.attn_norm.weight | size 4096 | type F32 | T+ 6\n","[229/291] Writing tensor blk.25.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 6\n","[230/291] Writing tensor blk.25.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 6\n","[231/291] Writing tensor blk.25.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 6\n","[232/291] Writing tensor blk.25.ffn_norm.weight | size 4096 | type F32 | T+ 6\n","[233/291] Writing tensor blk.25.attn_k.weight | size 4096 x 4096 | type F16 | T+ 6\n","[234/291] Writing tensor blk.25.attn_output.weight | size 4096 x 4096 | type F16 | T+ 6\n","[235/291] Writing tensor blk.25.attn_q.weight | size 4096 x 4096 | type F16 | T+ 6\n","[236/291] Writing tensor blk.25.attn_v.weight | size 4096 x 4096 | type F16 | T+ 6\n","[237/291] Writing tensor blk.26.attn_norm.weight | size 4096 | type F32 | T+ 6\n","[238/291] Writing tensor blk.26.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 6\n","[239/291] Writing tensor blk.26.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 6\n","[240/291] Writing tensor blk.26.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 6\n","[241/291] Writing tensor blk.26.ffn_norm.weight | size 4096 | type F32 | T+ 6\n","[242/291] Writing tensor blk.26.attn_k.weight | size 4096 x 4096 | type F16 | T+ 6\n","[243/291] Writing tensor blk.26.attn_output.weight | size 4096 x 4096 | type F16 | T+ 6\n","[244/291] Writing tensor blk.26.attn_q.weight | size 4096 x 4096 | type F16 | T+ 6\n","[245/291] Writing tensor blk.26.attn_v.weight | size 4096 x 4096 | type F16 | T+ 6\n","[246/291] Writing tensor blk.27.attn_norm.weight | size 4096 | type F32 | T+ 6\n","[247/291] Writing tensor blk.27.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 6\n","[248/291] Writing tensor blk.27.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 6\n","[249/291] Writing tensor blk.27.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 6\n","[250/291] Writing tensor blk.27.ffn_norm.weight | size 4096 | type F32 | T+ 6\n","[251/291] Writing tensor blk.27.attn_k.weight | size 4096 x 4096 | type F16 | T+ 6\n","[252/291] Writing tensor blk.27.attn_output.weight | size 4096 x 4096 | type F16 | T+ 6\n","[253/291] Writing tensor blk.27.attn_q.weight | size 4096 x 4096 | type F16 | T+ 6\n","[254/291] Writing tensor blk.27.attn_v.weight | size 4096 x 4096 | type F16 | T+ 6\n","[255/291] Writing tensor blk.28.attn_norm.weight | size 4096 | type F32 | T+ 6\n","[256/291] Writing tensor blk.28.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 6\n","[257/291] Writing tensor blk.28.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 6\n","[258/291] Writing tensor blk.28.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 6\n","[259/291] Writing tensor blk.28.ffn_norm.weight | size 4096 | type F32 | T+ 6\n","[260/291] Writing tensor blk.28.attn_k.weight | size 4096 x 4096 | type F16 | T+ 6\n","[261/291] Writing tensor blk.28.attn_output.weight | size 4096 x 4096 | type F16 | T+ 6\n","[262/291] Writing tensor blk.28.attn_q.weight | size 4096 x 4096 | type F16 | T+ 6\n","[263/291] Writing tensor blk.28.attn_v.weight | size 4096 x 4096 | type F16 | T+ 6\n","[264/291] Writing tensor blk.29.attn_norm.weight | size 4096 | type F32 | T+ 7\n","[265/291] Writing tensor blk.29.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 7\n","[266/291] Writing tensor blk.29.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 7\n","[267/291] Writing tensor blk.29.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 7\n","[268/291] Writing tensor blk.29.ffn_norm.weight | size 4096 | type F32 | T+ 7\n","[269/291] Writing tensor blk.29.attn_k.weight | size 4096 x 4096 | type F16 | T+ 7\n","[270/291] Writing tensor blk.29.attn_output.weight | size 4096 x 4096 | type F16 | T+ 7\n","[271/291] Writing tensor blk.29.attn_q.weight | size 4096 x 4096 | type F16 | T+ 7\n","[272/291] Writing tensor blk.29.attn_v.weight | size 4096 x 4096 | type F16 | T+ 7\n","[273/291] Writing tensor blk.30.attn_norm.weight | size 4096 | type F32 | T+ 7\n","[274/291] Writing tensor blk.30.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 7\n","[275/291] Writing tensor blk.30.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 7\n","[276/291] Writing tensor blk.30.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 7\n","[277/291] Writing tensor blk.30.ffn_norm.weight | size 4096 | type F32 | T+ 7\n","[278/291] Writing tensor blk.30.attn_k.weight | size 4096 x 4096 | type F16 | T+ 7\n","[279/291] Writing tensor blk.30.attn_output.weight | size 4096 x 4096 | type F16 | T+ 7\n","[280/291] Writing tensor blk.30.attn_q.weight | size 4096 x 4096 | type F16 | T+ 7\n","[281/291] Writing tensor blk.30.attn_v.weight | size 4096 x 4096 | type F16 | T+ 7\n","[282/291] Writing tensor blk.31.attn_norm.weight | size 4096 | type F32 | T+ 7\n","[283/291] Writing tensor blk.31.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 7\n","[284/291] Writing tensor blk.31.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 7\n","[285/291] Writing tensor blk.31.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 7\n","[286/291] Writing tensor blk.31.ffn_norm.weight | size 4096 | type F32 | T+ 7\n","[287/291] Writing tensor blk.31.attn_k.weight | size 4096 x 4096 | type F16 | T+ 7\n","[288/291] Writing tensor blk.31.attn_output.weight | size 4096 x 4096 | type F16 | T+ 7\n","[289/291] Writing tensor blk.31.attn_q.weight | size 4096 x 4096 | type F16 | T+ 7\n","[290/291] Writing tensor blk.31.attn_v.weight | size 4096 x 4096 | type F16 | T+ 7\n","[291/291] Writing tensor output_norm.weight | size 4096 | type F32 | T+ 7\n","Wrote llama-2-7b-combined_datasets/llama-2-7b-combined_datasets.fp16.bin\n"]}],"source":["# Convert to fp16\n","fp16 = f\"{MODEL_NAME}/{MODEL_NAME.lower()}.fp16.bin\"\n","!python llama.cpp/convert.py {MODEL_NAME} --outtype f16 --outfile {fp16}"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":752625,"status":"ok","timestamp":1707925277694,"user":{"displayName":"szehanz","userId":"16137883221268059572"},"user_tz":-480},"id":"mw5y-GWdkbx6","outputId":"4b95a5a4-b44c-413b-ca05-621d0f935d0f"},"outputs":[{"name":"stdout","output_type":"stream","text":["FP16 file created successfully: llama-2-7b-combined_datasets/llama-2-7b-combined_datasets.fp16.bin\n","ggml_init_cublas: GGML_CUDA_FORCE_MMQ: no\n","ggml_init_cublas: CUDA_USE_TENSOR_CORES: yes\n","ggml_init_cublas: found 1 CUDA devices:\n"," Device 0: Tesla T4, compute capability 7.5, VMM: yes\n","main: build = 2203 (9d679f0f)\n","main: built with cc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0 for x86_64-linux-gnu\n","main: quantizing 'llama-2-7b-combined_datasets/llama-2-7b-combined_datasets.fp16.bin' to 'llama-2-7b-combined_datasets/llama-2-7b-combined_datasets.Q5_K_M.gguf' as Q5_K_M\n","llama_model_loader: loaded meta data with 23 key-value pairs and 291 tensors from llama-2-7b-combined_datasets/llama-2-7b-combined_datasets.fp16.bin (version GGUF V3 (latest))\n","llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.\n","llama_model_loader: - kv 0: general.architecture str = llama\n","llama_model_loader: - kv 1: general.name str = LLaMA v2\n","llama_model_loader: - kv 2: llama.context_length u32 = 4096\n","llama_model_loader: - kv 3: llama.embedding_length u32 = 4096\n","llama_model_loader: - kv 4: llama.block_count u32 = 32\n","llama_model_loader: - kv 5: llama.feed_forward_length u32 = 11008\n","llama_model_loader: - kv 6: llama.rope.dimension_count u32 = 128\n","llama_model_loader: - kv 7: llama.attention.head_count u32 = 32\n","llama_model_loader: - kv 8: llama.attention.head_count_kv u32 = 32\n","llama_model_loader: - kv 9: llama.attention.layer_norm_rms_epsilon f32 = 0.000010\n","llama_model_loader: - kv 10: llama.rope.freq_base f32 = 10000.000000\n","llama_model_loader: - kv 11: general.file_type u32 = 1\n","llama_model_loader: - kv 12: tokenizer.ggml.model str = llama\n","llama_model_loader: - kv 13: tokenizer.ggml.tokens arr[str,32000] = [\"\", \"\", \"\", \"<0x00>\", \"<...\n","llama_model_loader: - kv 14: tokenizer.ggml.scores arr[f32,32000] = [0.000000, 0.000000, 0.000000, 0.0000...\n","llama_model_loader: - kv 15: tokenizer.ggml.token_type arr[i32,32000] = [2, 3, 3, 6, 6, 6, 6, 6, 6, 6, 6, 6, ...\n","llama_model_loader: - kv 16: tokenizer.ggml.bos_token_id u32 = 1\n","llama_model_loader: - kv 17: tokenizer.ggml.eos_token_id u32 = 2\n","llama_model_loader: - kv 18: tokenizer.ggml.unknown_token_id u32 = 0\n","llama_model_loader: - kv 19: tokenizer.ggml.padding_token_id u32 = 2\n","llama_model_loader: - kv 20: tokenizer.ggml.add_bos_token bool = true\n","llama_model_loader: - kv 21: tokenizer.ggml.add_eos_token bool = false\n","llama_model_loader: - kv 22: tokenizer.chat_template str = {% if messages[0]['role'] == 'system'...\n","llama_model_loader: - type f32: 65 tensors\n","llama_model_loader: - type f16: 226 tensors\n","llama_model_quantize_internal: meta size = 742080 bytes\n","[ 1/ 291] token_embd.weight - [ 4096, 32000, 1, 1], type = f16, quantizing to q5_K .. size = 250.00 MiB -> 85.94 MiB\n","[ 2/ 291] blk.0.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 3/ 291] blk.0.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 86.00 MiB -> 35.27 MiB\n","[ 4/ 291] blk.0.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 5/ 291] blk.0.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 6/ 291] blk.0.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 7/ 291] blk.0.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 8/ 291] blk.0.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 9/ 291] blk.0.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 10/ 291] blk.0.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 32.00 MiB -> 13.12 MiB\n","[ 11/ 291] blk.1.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 12/ 291] blk.1.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 86.00 MiB -> 35.27 MiB\n","[ 13/ 291] blk.1.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 14/ 291] blk.1.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 15/ 291] blk.1.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 16/ 291] blk.1.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 17/ 291] blk.1.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 18/ 291] blk.1.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 19/ 291] blk.1.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 32.00 MiB -> 13.12 MiB\n","[ 20/ 291] blk.10.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 21/ 291] blk.10.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 86.00 MiB -> 35.27 MiB\n","[ 22/ 291] blk.10.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 23/ 291] blk.10.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 24/ 291] blk.10.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 25/ 291] blk.10.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 26/ 291] blk.10.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 27/ 291] blk.10.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 28/ 291] blk.10.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 32.00 MiB -> 13.12 MiB\n","[ 29/ 291] blk.11.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 30/ 291] blk.11.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 31/ 291] blk.11.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 32/ 291] blk.11.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 33/ 291] blk.11.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 32.00 MiB -> 13.12 MiB\n","[ 34/ 291] blk.2.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 35/ 291] blk.2.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 86.00 MiB -> 35.27 MiB\n","[ 36/ 291] blk.2.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 37/ 291] blk.2.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 38/ 291] blk.2.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 39/ 291] blk.2.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 40/ 291] blk.2.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 41/ 291] blk.2.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 42/ 291] blk.2.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 43/ 291] blk.3.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 44/ 291] blk.3.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 45/ 291] blk.3.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 46/ 291] blk.3.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 47/ 291] blk.3.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 48/ 291] blk.3.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 49/ 291] blk.3.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 50/ 291] blk.3.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 51/ 291] blk.3.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 52/ 291] blk.4.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 53/ 291] blk.4.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 54/ 291] blk.4.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 55/ 291] blk.4.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 56/ 291] blk.4.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 57/ 291] blk.4.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 58/ 291] blk.4.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 59/ 291] blk.4.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 60/ 291] blk.4.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 32.00 MiB -> 13.12 MiB\n","[ 61/ 291] blk.5.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 62/ 291] blk.5.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 86.00 MiB -> 35.27 MiB\n","[ 63/ 291] blk.5.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 64/ 291] blk.5.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 65/ 291] blk.5.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 66/ 291] blk.5.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 67/ 291] blk.5.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 68/ 291] blk.5.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 69/ 291] blk.5.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 70/ 291] blk.6.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 71/ 291] blk.6.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 72/ 291] blk.6.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 73/ 291] blk.6.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 74/ 291] blk.6.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 75/ 291] blk.6.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 76/ 291] blk.6.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 77/ 291] blk.6.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 78/ 291] blk.6.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 79/ 291] blk.7.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 80/ 291] blk.7.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 81/ 291] blk.7.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 82/ 291] blk.7.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 83/ 291] blk.7.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 84/ 291] blk.7.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 85/ 291] blk.7.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 86/ 291] blk.7.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 87/ 291] blk.7.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 32.00 MiB -> 13.12 MiB\n","[ 88/ 291] blk.8.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 89/ 291] blk.8.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 86.00 MiB -> 35.27 MiB\n","[ 90/ 291] blk.8.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 91/ 291] blk.8.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 92/ 291] blk.8.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 93/ 291] blk.8.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 94/ 291] blk.8.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 95/ 291] blk.8.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 96/ 291] blk.8.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 97/ 291] blk.9.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 98/ 291] blk.9.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 99/ 291] blk.9.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 100/ 291] blk.9.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 101/ 291] blk.9.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 102/ 291] blk.9.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 103/ 291] blk.9.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 104/ 291] blk.9.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 105/ 291] blk.9.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 106/ 291] blk.11.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 107/ 291] blk.11.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 108/ 291] blk.11.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 109/ 291] blk.11.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 110/ 291] blk.12.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 111/ 291] blk.12.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 86.00 MiB -> 35.27 MiB\n","[ 112/ 291] blk.12.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 113/ 291] blk.12.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 114/ 291] blk.12.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 115/ 291] blk.12.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 116/ 291] blk.12.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 117/ 291] blk.12.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 118/ 291] blk.12.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 32.00 MiB -> 13.12 MiB\n","[ 119/ 291] blk.13.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 120/ 291] blk.13.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 121/ 291] blk.13.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 122/ 291] blk.13.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 123/ 291] blk.13.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 124/ 291] blk.13.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 125/ 291] blk.13.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 126/ 291] blk.13.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 127/ 291] blk.13.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 128/ 291] blk.14.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 129/ 291] blk.14.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 130/ 291] blk.14.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 131/ 291] blk.14.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 132/ 291] blk.14.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 133/ 291] blk.14.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 134/ 291] blk.14.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 135/ 291] blk.14.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 136/ 291] blk.14.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 137/ 291] blk.15.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 138/ 291] blk.15.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 86.00 MiB -> 35.27 MiB\n","[ 139/ 291] blk.15.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 140/ 291] blk.15.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 141/ 291] blk.15.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 142/ 291] blk.15.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 143/ 291] blk.15.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 144/ 291] blk.15.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 145/ 291] blk.15.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 32.00 MiB -> 13.12 MiB\n","[ 146/ 291] blk.16.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 147/ 291] blk.16.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 148/ 291] blk.16.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 149/ 291] blk.16.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 150/ 291] blk.16.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 151/ 291] blk.16.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 152/ 291] blk.16.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 153/ 291] blk.16.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 154/ 291] blk.16.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 155/ 291] blk.17.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 156/ 291] blk.17.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 157/ 291] blk.17.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 158/ 291] blk.17.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 159/ 291] blk.17.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 160/ 291] blk.17.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 161/ 291] blk.17.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 162/ 291] blk.17.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 163/ 291] blk.17.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 164/ 291] blk.18.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 165/ 291] blk.18.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 86.00 MiB -> 35.27 MiB\n","[ 166/ 291] blk.18.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 167/ 291] blk.18.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 168/ 291] blk.18.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 169/ 291] blk.18.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 170/ 291] blk.18.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 171/ 291] blk.18.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 172/ 291] blk.18.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 32.00 MiB -> 13.12 MiB\n","[ 173/ 291] blk.19.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 174/ 291] blk.19.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 175/ 291] blk.19.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 176/ 291] blk.19.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 177/ 291] blk.19.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 178/ 291] blk.19.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 179/ 291] blk.19.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 180/ 291] blk.19.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 181/ 291] blk.19.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 182/ 291] blk.20.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 183/ 291] blk.20.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 184/ 291] blk.20.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 185/ 291] blk.20.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 186/ 291] blk.20.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 187/ 291] blk.20.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 188/ 291] blk.20.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 189/ 291] blk.20.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 190/ 291] blk.20.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 191/ 291] blk.21.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 192/ 291] blk.21.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 86.00 MiB -> 35.27 MiB\n","[ 193/ 291] blk.21.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 194/ 291] blk.21.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 195/ 291] blk.21.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 196/ 291] blk.21.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 197/ 291] blk.21.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 198/ 291] blk.21.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 199/ 291] blk.21.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 32.00 MiB -> 13.12 MiB\n","[ 200/ 291] blk.22.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 201/ 291] blk.22.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 202/ 291] blk.22.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 203/ 291] blk.22.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 204/ 291] blk.22.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 205/ 291] blk.22.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 206/ 291] blk.22.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 207/ 291] blk.22.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 208/ 291] blk.22.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 209/ 291] blk.23.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 210/ 291] blk.23.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 211/ 291] blk.23.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 212/ 291] blk.23.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 213/ 291] blk.23.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 214/ 291] blk.23.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 215/ 291] output.weight - [ 4096, 32000, 1, 1], type = f16, quantizing to q6_K .. size = 250.00 MiB -> 102.54 MiB\n","[ 216/ 291] blk.23.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 217/ 291] blk.23.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 218/ 291] blk.23.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 219/ 291] blk.24.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 220/ 291] blk.24.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 86.00 MiB -> 35.27 MiB\n","[ 221/ 291] blk.24.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 222/ 291] blk.24.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 223/ 291] blk.24.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 224/ 291] blk.24.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 225/ 291] blk.24.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 226/ 291] blk.24.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 227/ 291] blk.24.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 32.00 MiB -> 13.12 MiB\n","[ 228/ 291] blk.25.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 229/ 291] blk.25.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 230/ 291] blk.25.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 231/ 291] blk.25.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 232/ 291] blk.25.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 233/ 291] blk.25.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 234/ 291] blk.25.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 235/ 291] blk.25.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 236/ 291] blk.25.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 237/ 291] blk.26.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 238/ 291] blk.26.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 239/ 291] blk.26.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 240/ 291] blk.26.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 241/ 291] blk.26.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 242/ 291] blk.26.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 243/ 291] blk.26.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 244/ 291] blk.26.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 245/ 291] blk.26.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 246/ 291] blk.27.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 247/ 291] blk.27.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 86.00 MiB -> 35.27 MiB\n","[ 248/ 291] blk.27.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 249/ 291] blk.27.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 250/ 291] blk.27.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 251/ 291] blk.27.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 252/ 291] blk.27.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 253/ 291] blk.27.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 254/ 291] blk.27.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 32.00 MiB -> 13.12 MiB\n","[ 255/ 291] blk.28.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 256/ 291] blk.28.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 86.00 MiB -> 35.27 MiB\n","[ 257/ 291] blk.28.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 258/ 291] blk.28.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 259/ 291] blk.28.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 260/ 291] blk.28.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 261/ 291] blk.28.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 262/ 291] blk.28.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 263/ 291] blk.28.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 32.00 MiB -> 13.12 MiB\n","[ 264/ 291] blk.29.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 265/ 291] blk.29.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 86.00 MiB -> 35.27 MiB\n","[ 266/ 291] blk.29.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 267/ 291] blk.29.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 268/ 291] blk.29.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 269/ 291] blk.29.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 270/ 291] blk.29.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 271/ 291] blk.29.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 272/ 291] blk.29.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 32.00 MiB -> 13.12 MiB\n","[ 273/ 291] blk.30.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 274/ 291] blk.30.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 86.00 MiB -> 35.27 MiB\n","[ 275/ 291] blk.30.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 276/ 291] blk.30.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 277/ 291] blk.30.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 278/ 291] blk.30.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 279/ 291] blk.30.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 280/ 291] blk.30.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 281/ 291] blk.30.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 32.00 MiB -> 13.12 MiB\n","[ 282/ 291] blk.31.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 283/ 291] blk.31.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 86.00 MiB -> 35.27 MiB\n","[ 284/ 291] blk.31.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 285/ 291] blk.31.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 286/ 291] blk.31.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 287/ 291] blk.31.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 288/ 291] blk.31.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 289/ 291] blk.31.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 290/ 291] blk.31.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 32.00 MiB -> 13.12 MiB\n","[ 291/ 291] output_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","llama_model_quantize_internal: model size = 12853.02 MB\n","llama_model_quantize_internal: quant size = 4560.87 MB\n","\n","main: quantize time = 27944.02 ms\n","main: total time = 27944.02 ms\n"]}],"source":["# Verify creation of FP16 file and quantize the model for specified methods.\n","# First, check if the FP16 model file exists, indicating successful conversion.\n","# If the file does not exist, terminate the script to prevent further errors.\n","# Then, for each quantization method listed, perform model quantization,\n","# generating a quantized model file for each method.\n","\n","\n","if os.path.exists(fp16):\n"," print(f\"FP16 file created successfully: {fp16}\")\n","else:\n"," print(f\"Failed to create FP16 file at: {fp16}\")\n"," import sys\n"," sys.exit(\"Stopping script due to missing FP16 file.\")\n","\n","\n","# Quantize the model using specified methods\n","for method in QUANTIZATION_METHODS:\n"," qtype = f\"{MODEL_NAME}/{MODEL_NAME.lower()}.{method.upper()}.gguf\"\n"," !./llama.cpp/quantize {fp16} {qtype} {method}"]},{"cell_type":"markdown","metadata":{"id":"WqI1CPiXI4dP"},"source":["## Run inference\n","\n","Below is a script to run our quantized model. We are offloading every layer to the GPU (33 for a 7b parameter model) to speed up inference."]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":64968,"status":"ok","timestamp":1707925342654,"user":{"displayName":"szehanz","userId":"16137883221268059572"},"user_tz":-480},"id":"vNPL9WYg78l-","outputId":"16ef6d44-0eda-4b35-e4eb-d4eb9ac083a3"},"outputs":[{"name":"stdin","output_type":"stream","text":["Enter your prompt: what is deep learning\n"]},{"name":"stdout","output_type":"stream","text":["Log start\n","main: build = 2203 (9d679f0f)\n","main: built with cc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0 for x86_64-linux-gnu\n","main: seed = 1708358764\n","ggml_init_cublas: GGML_CUDA_FORCE_MMQ: no\n","ggml_init_cublas: CUDA_USE_TENSOR_CORES: yes\n","ggml_init_cublas: found 1 CUDA devices:\n"," Device 0: Tesla T4, compute capability 7.5, VMM: yes\n","llama_model_loader: loaded meta data with 24 key-value pairs and 291 tensors from llama-2-7b-combined_datasets/llama-2-7b-combined_datasets.Q5_K_M.gguf (version GGUF V3 (latest))\n","llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.\n","llama_model_loader: - kv 0: general.architecture str = llama\n","llama_model_loader: - kv 1: general.name str = LLaMA v2\n","llama_model_loader: - kv 2: llama.context_length u32 = 4096\n","llama_model_loader: - kv 3: llama.embedding_length u32 = 4096\n","llama_model_loader: - kv 4: llama.block_count u32 = 32\n","llama_model_loader: - kv 5: llama.feed_forward_length u32 = 11008\n","llama_model_loader: - kv 6: llama.rope.dimension_count u32 = 128\n","llama_model_loader: - kv 7: llama.attention.head_count u32 = 32\n","llama_model_loader: - kv 8: llama.attention.head_count_kv u32 = 32\n","llama_model_loader: - kv 9: llama.attention.layer_norm_rms_epsilon f32 = 0.000010\n","llama_model_loader: - kv 10: llama.rope.freq_base f32 = 10000.000000\n","llama_model_loader: - kv 11: general.file_type u32 = 17\n","llama_model_loader: - kv 12: tokenizer.ggml.model str = llama\n","llama_model_loader: - kv 13: tokenizer.ggml.tokens arr[str,32000] = [\"\", \"\", \"\", \"<0x00>\", \"<...\n","llama_model_loader: - kv 14: tokenizer.ggml.scores arr[f32,32000] = [0.000000, 0.000000, 0.000000, 0.0000...\n","llama_model_loader: - kv 15: tokenizer.ggml.token_type arr[i32,32000] = [2, 3, 3, 6, 6, 6, 6, 6, 6, 6, 6, 6, ...\n","llama_model_loader: - kv 16: tokenizer.ggml.bos_token_id u32 = 1\n","llama_model_loader: - kv 17: tokenizer.ggml.eos_token_id u32 = 2\n","llama_model_loader: - kv 18: tokenizer.ggml.unknown_token_id u32 = 0\n","llama_model_loader: - kv 19: tokenizer.ggml.padding_token_id u32 = 2\n","llama_model_loader: - kv 20: tokenizer.ggml.add_bos_token bool = true\n","llama_model_loader: - kv 21: tokenizer.ggml.add_eos_token bool = false\n","llama_model_loader: - kv 22: tokenizer.chat_template str = {% if messages[0]['role'] == 'system'...\n","llama_model_loader: - kv 23: general.quantization_version u32 = 2\n","llama_model_loader: - type f32: 65 tensors\n","llama_model_loader: - type q5_K: 193 tensors\n","llama_model_loader: - type q6_K: 33 tensors\n","llm_load_vocab: special tokens definition check successful ( 259/32000 ).\n","llm_load_print_meta: format = GGUF V3 (latest)\n","llm_load_print_meta: arch = llama\n","llm_load_print_meta: vocab type = SPM\n","llm_load_print_meta: n_vocab = 32000\n","llm_load_print_meta: n_merges = 0\n","llm_load_print_meta: n_ctx_train = 4096\n","llm_load_print_meta: n_embd = 4096\n","llm_load_print_meta: n_head = 32\n","llm_load_print_meta: n_head_kv = 32\n","llm_load_print_meta: n_layer = 32\n","llm_load_print_meta: n_rot = 128\n","llm_load_print_meta: n_embd_head_k = 128\n","llm_load_print_meta: n_embd_head_v = 128\n","llm_load_print_meta: n_gqa = 1\n","llm_load_print_meta: n_embd_k_gqa = 4096\n","llm_load_print_meta: n_embd_v_gqa = 4096\n","llm_load_print_meta: f_norm_eps = 0.0e+00\n","llm_load_print_meta: f_norm_rms_eps = 1.0e-05\n","llm_load_print_meta: f_clamp_kqv = 0.0e+00\n","llm_load_print_meta: f_max_alibi_bias = 0.0e+00\n","llm_load_print_meta: n_ff = 11008\n","llm_load_print_meta: n_expert = 0\n","llm_load_print_meta: n_expert_used = 0\n","llm_load_print_meta: rope scaling = linear\n","llm_load_print_meta: freq_base_train = 10000.0\n","llm_load_print_meta: freq_scale_train = 1\n","llm_load_print_meta: n_yarn_orig_ctx = 4096\n","llm_load_print_meta: rope_finetuned = unknown\n","llm_load_print_meta: model type = 7B\n","llm_load_print_meta: model ftype = Q5_K - Medium\n","llm_load_print_meta: model params = 6.74 B\n","llm_load_print_meta: model size = 4.45 GiB (5.68 BPW) \n","llm_load_print_meta: general.name = LLaMA v2\n","llm_load_print_meta: BOS token = 1 ''\n","llm_load_print_meta: EOS token = 2 ''\n","llm_load_print_meta: UNK token = 0 ''\n","llm_load_print_meta: PAD token = 2 ''\n","llm_load_print_meta: LF token = 13 '<0x0A>'\n","llm_load_tensors: ggml ctx size = 0.22 MiB\n","llm_load_tensors: offloading 32 repeating layers to GPU\n","llm_load_tensors: offloading non-repeating layers to GPU\n","llm_load_tensors: offloaded 33/33 layers to GPU\n","llm_load_tensors: CPU buffer size = 85.94 MiB\n","llm_load_tensors: CUDA0 buffer size = 4474.94 MiB\n","..................................................................................................\n","llama_new_context_with_model: n_ctx = 512\n","llama_new_context_with_model: freq_base = 10000.0\n","llama_new_context_with_model: freq_scale = 1\n","llama_kv_cache_init: CUDA0 KV buffer size = 256.00 MiB\n","llama_new_context_with_model: KV self size = 256.00 MiB, K (f16): 128.00 MiB, V (f16): 128.00 MiB\n","llama_new_context_with_model: CUDA_Host input buffer size = 10.01 MiB\n","llama_new_context_with_model: CUDA0 compute buffer size = 70.50 MiB\n","llama_new_context_with_model: CUDA_Host compute buffer size = 8.00 MiB\n","llama_new_context_with_model: graph splits (measure): 3\n","\n","system_info: n_threads = 24 / 48 | AVX = 1 | AVX_VNNI = 0 | AVX2 = 1 | AVX512 = 1 | AVX512_VBMI = 0 | AVX512_VNNI = 1 | FMA = 1 | NEON = 0 | ARM_FMA = 0 | F16C = 1 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 1 | SSE3 = 1 | SSSE3 = 1 | VSX = 0 | MATMUL_INT8 = 0 | \n","sampling: \n","\trepeat_last_n = 64, repeat_penalty = 1.100, frequency_penalty = 0.000, presence_penalty = 0.000\n","\ttop_k = 40, tfs_z = 1.000, top_p = 0.950, min_p = 0.050, typical_p = 1.000, temp = 0.800\n","\tmirostat = 0, mirostat_lr = 0.100, mirostat_ent = 5.000\n","sampling order: \n","CFG -> Penalties -> top_k -> tfs_z -> typical_p -> top_p -> min_p -> temperature \n","generate: n_ctx = 512, n_batch = 512, n_predict = 128, n_keep = 0\n","\n","\n","\u001b[33m what is deep learning\u001b[0m in machine learning?\n"," Summarize the key characteristics and applications of deep learning.\n","\n","Deep learning is a subset of machine learning that involves the use of artificial neural networks to model and analyze complex data sets. It is based on the idea that a neural network with multiple layers can learn and represent more abstract and sophisticated patterns in data than a single-layer network. Deep learning has been successful in solving many challenging tasks in computer vision, natural language processing, speech recognition, and other areas of machine learning.\n","\n","Key characteristics of deep learning:\n","\n","1. Multi-layered neural networks: Deep learning\n","llama_print_timings: load time = 895.86 ms\n","llama_print_timings: sample time = 51.51 ms / 128 runs ( 0.40 ms per token, 2485.20 tokens per second)\n","llama_print_timings: prompt eval time = 38.97 ms / 5 tokens ( 7.79 ms per token, 128.32 tokens per second)\n","llama_print_timings: eval time = 3130.83 ms / 127 runs ( 24.65 ms per token, 40.56 tokens per second)\n","llama_print_timings: total time = 3251.49 ms / 132 tokens\n","Log end\n"]}],"source":["# Run text generation using a specific quantized model in llama.cpp.\n","# 1. Prompt the user to enter text for the model to process.\n","# 2. Construct the model file path ('qtype') using MODEL_NAME and a specified quantization method.\n","# 3. Execute the llama.cpp main program with the constructed model path,\n","# setting the number of tokens to generate, enabling color, limiting the number of generated lines,\n","# and using the user-provided prompt.\n","\n","prompt = input(\"Enter your prompt: \")\n","\n","# Construct the path to the model file with the quantization method 'Q5_K_M'\n","qtype = f\"{MODEL_NAME}/{MODEL_NAME.lower()}.Q5_K_M.gguf\"\n","\n","# Execute the llama.cpp main program with specified parameters\n","!./llama.cpp/main -m {qtype} -n 128 --color -ngl 35 -p \"{prompt}\""]},{"cell_type":"markdown","metadata":{"id":"Ar8pO7bb80US"},"source":["## Push to hub"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":188,"referenced_widgets":["042396eff4ce41bf9729880c8dd9144f","88e20b09bb994e0dbd092e3c625d5a1a","0e8715a0c48c4e0883fe45ac9794dc42","67965e7b79f64ec288167f9affb45d81","bfdd34dd4a294d3f9c8bb05b27e108f2","32a0ec8495224b92ad1c48613bc03891","77c4b22e3ed3478487e04edf011475ce","8b949ab00d9c41729973b0c9cc689493","37ea5d15761f44fdbcd1ddb8f582936a","eeee199faf7b4464997f3317f3973a19","306d81e5c3414519b7ccbe2329a1c3be","f79521693d2d42d180534ed94994f6fe"]},"executionInfo":{"elapsed":141900,"status":"ok","timestamp":1707925523299,"user":{"displayName":"szehanz","userId":"16137883221268059572"},"user_tz":-480},"id":"UOyKfUD-8jmh","outputId":"4093844f-7f46-484f-922a-f902fc089242"},"outputs":[{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"f79521693d2d42d180534ed94994f6fe","version_major":2,"version_minor":0},"text/plain":["llama-2-7b-combined_datasets.Q5_K_M.gguf: 0%| | 0.00/4.78G [00:00
Copy a token from your Hugging Face\ntokens page and paste it below.
Immediately click login after copying\nyour token or it might be stored in plain text in this notebook file.
"}},"14d0ff6e07a148c0b65224af86af6b95":{"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":""}},"187745df1f154e7da09a0c646a22cebb":{"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_638517f3c94445c7b610b84744859ef8","placeholder":"​","style":"IPY_MODEL_5206f9fc25234586b735fc9c65e6b19a","value":"generation_config.json: 100%"}},"19b8b7692cfd46eca5abb50ac2854262":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"19d3adedf1a245f69a2498b1838f6415":{"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_31ffba7793b944cd80bec0fb6ac2fbbe","IPY_MODEL_1ae848be349a41239a7ba6efadc82edf","IPY_MODEL_9a33d92ad0604eff9ac56944586facbb"],"layout":"IPY_MODEL_293d425206684064b0572e990a815cee"}},"1ae848be349a41239a7ba6efadc82edf":{"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_8ae8a9d03adc476a8dd64f09e194907d","max":2,"min":0,"orientation":"horizontal","style":"IPY_MODEL_aeb94dbf3f8a4b43bb07c833af3b98c9","value":2}},"1c6e5dd4ca3446ec8cf8a03b85ad57dc":{"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_0786fc506a7640a287016991f57d3768","IPY_MODEL_3af05a188f40469dbd52fda55c7a9e22","IPY_MODEL_0af30e36f2524c1084c1237948f3b18e"],"layout":"IPY_MODEL_dfe1c2648a564676bfe1e09bda61d439"}},"1ea12323b1244c768a17a6ed5420f854":{"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":""}},"1f9e8ddb08814b2db7761478eb9069f5":{"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_7982d1d315964d138f31643db445b48a","max":614,"min":0,"orientation":"horizontal","style":"IPY_MODEL_67346bc716384552a69d1afdc844db00","value":614}},"20cc750b1bde4efdb3c3a5b5321222b4":{"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_a199f20edde447829b17804b17af2fe5","max":188,"min":0,"orientation":"horizontal","style":"IPY_MODEL_447f608108364159ab7ed546ad02559a","value":188}},"21556be54ed34b15b909bf8e7b8fd93a":{"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_b8113970ea7245e9890221d4e4cf5e8e","placeholder":"​","style":"IPY_MODEL_d3224d16458249a3bfd29253c2d6a86f","value":"\nPro Tip: If you don't already have one, you can create a dedicated\n'notebooks' token with 'write' access, that you can then easily reuse for all\nnotebooks. "}},"2254fe28315f43a99c3579195c0c0008":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"22e8bae9ff6744bca3e90d46d220106f":{"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":""}},"23176fa0130348c5bc1b0deb591709f3":{"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":""}},"236b3417f0e94039a1a449e7ab96738b":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"25543b118c8e423aa7fd8c898d5e1256":{"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":""}},"2924e96aa10346efb39684e5369e2170":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"LabelModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"LabelModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"LabelView","description":"","description_tooltip":null,"layout":"IPY_MODEL_bce8d1501218410ba8b042aeb3f0fc26","placeholder":"​","style":"IPY_MODEL_405603de026d484ab283f053f4b17c6d","value":"Your token has been saved to /root/.cache/huggingface/token"}},"293d425206684064b0572e990a815cee":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"29f303aa6ac8464aa91124c3fe659379":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"2cb9cfbde1e0483c97a2c531e0034adf":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"2dce1978d19e4de3a6a1b1cef6ed518f":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"3076e4abb7fe427fa4fccb43e9f3371e":{"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":""}},"30d47a9da70a4cf5a7e597f13d28d526":{"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":""}},"31ffba7793b944cd80bec0fb6ac2fbbe":{"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_7ee17b5879ec4909b7b616b79d5eab36","placeholder":"​","style":"IPY_MODEL_d8b847adb46d4049a4b43bba2a0e06da","value":"Downloading shards: 100%"}},"32a57f9df45b41da91e1d638f531505d":{"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":""}},"3af05a188f40469dbd52fda55c7a9e22":{"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_82829039182948efb800703e3e21d96d","max":26788,"min":0,"orientation":"horizontal","style":"IPY_MODEL_32a57f9df45b41da91e1d638f531505d","value":26788}},"3e4a06b9b13444e3b82e0c3c26e17b8f":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"CheckboxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"CheckboxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"CheckboxView","description":"Add token as git credential?","description_tooltip":null,"disabled":false,"indent":true,"layout":"IPY_MODEL_f91ebc43c1344e8688e2eeb2771c7b65","style":"IPY_MODEL_ea00aa1eb73949fc94083f1d31372915","value":true}},"405603de026d484ab283f053f4b17c6d":{"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":""}},"42262413163d49fd8902c275c13da1e6":{"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_cf370d3015b04b6caa9cbfb8f21dd5e7","placeholder":"​","style":"IPY_MODEL_1ea12323b1244c768a17a6ed5420f854","value":" 9.98G/9.98G [01:29<00:00, 126MB/s]"}},"441c37014e6b4c8995e7a5305f96fa38":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"447f608108364159ab7ed546ad02559a":{"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":""}},"46e41557d0bc4cb4a03c6894fcc57d0e":{"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":""}},"4cee3e23bcbd4643ba542d94b82dbfd2":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"5206f9fc25234586b735fc9c65e6b19a":{"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":""}},"52f2b6adb9904cbeb014387429c0d1ad":{"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_b61ac64b2a0c4beb8ea209782b9dd09b","IPY_MODEL_9e9c2d712ae84d3aa87fbe433ae0701b","IPY_MODEL_fe4d028a78e64a4d8b47f8bc8b8ec15d"],"layout":"IPY_MODEL_88a7aeaf3b2547ea91cf20ed2f1a3dc0"}},"537d173a4313491f8f89f799f1dc7b2a":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"541ef20ab6f34337a2d6d20098f6fef5":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"LabelModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"LabelModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"LabelView","description":"","description_tooltip":null,"layout":"IPY_MODEL_b0f0ac261e364edd99d7b75e747e2c47","placeholder":"​","style":"IPY_MODEL_ff9f726db3434e3184e723d5da884d0a","value":"Token is valid (permission: write)."}},"55e506bd03d24dd7b24129dc64da9c01":{"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":""}},"5e5b95c9801443cdbce9c8e629c33589":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"PasswordModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"PasswordModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"PasswordView","continuous_update":true,"description":"Token:","description_tooltip":null,"disabled":false,"layout":"IPY_MODEL_29f303aa6ac8464aa91124c3fe659379","placeholder":"​","style":"IPY_MODEL_3076e4abb7fe427fa4fccb43e9f3371e","value":""}},"62f1cf19fe204aa4a424248e807ce061":{"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":""}},"638517f3c94445c7b610b84744859ef8":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"6430379d01874ec3a7cf9fea59c42914":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"ButtonModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ButtonModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ButtonView","button_style":"","description":"Login","disabled":false,"icon":"","layout":"IPY_MODEL_2dce1978d19e4de3a6a1b1cef6ed518f","style":"IPY_MODEL_e81c501824f94e7d839684fafbc65b31","tooltip":""}},"67346bc716384552a69d1afdc844db00":{"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":""}},"6edf40f558f54d8b82d949f83557d609":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"LabelModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"LabelModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"LabelView","description":"","description_tooltip":null,"layout":"IPY_MODEL_08400a144d3c497a94ae4d84e72a1067","placeholder":"​","style":"IPY_MODEL_976a3440d2c3423c8be835b0d6f56492","value":"Connecting..."}},"77c0d63f6cd6494daf7e94cfe0397e45":{"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_4cee3e23bcbd4643ba542d94b82dbfd2","placeholder":"​","style":"IPY_MODEL_25543b118c8e423aa7fd8c898d5e1256","value":" 188/188 [00:00<00:00, 12.3kB/s]"}},"77daad9def9f4254933afdeb7202e5d2":{"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":""}},"7982d1d315964d138f31643db445b48a":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"7c701d53772344f6a057cd43742d47f5":{"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_b9e4e59acd4d468393f42857d5635e25","placeholder":"​","style":"IPY_MODEL_30d47a9da70a4cf5a7e597f13d28d526","value":"Loading checkpoint shards: 100%"}},"7ee17b5879ec4909b7b616b79d5eab36":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"8080eb1edf8f44f69b5f218046715f36":{"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_e2df35aaf7e0420b9524d533cb122521","max":2,"min":0,"orientation":"horizontal","style":"IPY_MODEL_d90c3a424bac4bb09e99339c28df2eda","value":2}},"82829039182948efb800703e3e21d96d":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"83127281047a429a846b9bb3b3209760":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"86014f569ee34895badef4acfe958051":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"86616a0d2f9d4da1a75e00d092ca9d4d":{"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_a7a17a5883784ed9961437d0102fd9a4","IPY_MODEL_9934540648a444a09f0783843ab2d901","IPY_MODEL_42262413163d49fd8902c275c13da1e6"],"layout":"IPY_MODEL_83127281047a429a846b9bb3b3209760"}},"88a7aeaf3b2547ea91cf20ed2f1a3dc0":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"8ae8a9d03adc476a8dd64f09e194907d":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"963973c1e970410cb2ba97e9fb4ef511":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"976a3440d2c3423c8be835b0d6f56492":{"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":""}},"9934540648a444a09f0783843ab2d901":{"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_f702ae2d46834e9b934a40abca49a990","max":9976576152,"min":0,"orientation":"horizontal","style":"IPY_MODEL_14d0ff6e07a148c0b65224af86af6b95","value":9976576152}},"9a33d92ad0604eff9ac56944586facbb":{"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_537d173a4313491f8f89f799f1dc7b2a","placeholder":"​","style":"IPY_MODEL_55e506bd03d24dd7b24129dc64da9c01","value":" 2/2 [01:56<00:00, 52.47s/it]"}},"9c7550ec29c34ef2b674a3667ebd740e":{"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_236b3417f0e94039a1a449e7ab96738b","placeholder":"​","style":"IPY_MODEL_77daad9def9f4254933afdeb7202e5d2","value":"config.json: 100%"}},"9e4d26b87e1243f3ae744ddbbe2c5b51":{"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":""}},"9e9c2d712ae84d3aa87fbe433ae0701b":{"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_86014f569ee34895badef4acfe958051","max":3500296424,"min":0,"orientation":"horizontal","style":"IPY_MODEL_22e8bae9ff6744bca3e90d46d220106f","value":3500296424}},"a066a28914bc46cc85ebcb7d90d27fbe":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"a199f20edde447829b17804b17af2fe5":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"a39b2a49ff814181aa0df84c57e9245b":{"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":""}},"a7a17a5883784ed9961437d0102fd9a4":{"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_ae173a50f4374c7fa55d8e360d30d4d1","placeholder":"​","style":"IPY_MODEL_b93a21bcaf6344c49a0ab8e2a887922c","value":"model-00001-of-00002.safetensors: 100%"}},"a7ef8ff133144d4b9817800e5b4739a4":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"a9628200c0a34cccacdb0ea66e200b87":{"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_0cda6495ef4b4c9ab3eeff2392d89163","placeholder":"​","style":"IPY_MODEL_9e4d26b87e1243f3ae744ddbbe2c5b51","value":" 2/2 [00:58<00:00, 26.87s/it]"}},"a96de5c1f80f43d8b0b689d5db0fa248":{"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":""}},"ae173a50f4374c7fa55d8e360d30d4d1":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"aeb94dbf3f8a4b43bb07c833af3b98c9":{"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":""}},"b0f0ac261e364edd99d7b75e747e2c47":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"b4ed4d5e266a4cd5b9011436b4e92951":{"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_7c701d53772344f6a057cd43742d47f5","IPY_MODEL_8080eb1edf8f44f69b5f218046715f36","IPY_MODEL_a9628200c0a34cccacdb0ea66e200b87"],"layout":"IPY_MODEL_2254fe28315f43a99c3579195c0c0008"}},"b577aeffe358446ea41e4b3c58b80641":{"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_441c37014e6b4c8995e7a5305f96fa38","placeholder":"​","style":"IPY_MODEL_a39b2a49ff814181aa0df84c57e9245b","value":" 614/614 [00:00<00:00, 15.7kB/s]"}},"b61ac64b2a0c4beb8ea209782b9dd09b":{"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_a066a28914bc46cc85ebcb7d90d27fbe","placeholder":"​","style":"IPY_MODEL_a96de5c1f80f43d8b0b689d5db0fa248","value":"model-00002-of-00002.safetensors: 100%"}},"b634ae14caf84bc99dcafd3a70b7a383":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"b64f26ac024c46eabfc4728586369130":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"LabelModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"LabelModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"LabelView","description":"","description_tooltip":null,"layout":"IPY_MODEL_a7ef8ff133144d4b9817800e5b4739a4","placeholder":"​","style":"IPY_MODEL_ba4cf32b2f71428282721e7818b34a5a","value":"Login successful"}},"b8113970ea7245e9890221d4e4cf5e8e":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"b93a21bcaf6344c49a0ab8e2a887922c":{"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":""}},"b9e4e59acd4d468393f42857d5635e25":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"ba4cf32b2f71428282721e7818b34a5a":{"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":""}},"bce8d1501218410ba8b042aeb3f0fc26":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"c3d08bc595a74c3180a7a83afc569584":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"VBoxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"VBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"VBoxView","box_style":"","children":["IPY_MODEL_541ef20ab6f34337a2d6d20098f6fef5","IPY_MODEL_fe46e1cf697f4b1fab764104be32da95","IPY_MODEL_2924e96aa10346efb39684e5369e2170","IPY_MODEL_b64f26ac024c46eabfc4728586369130"],"layout":"IPY_MODEL_cad60b6f14f249c187d573dd3a4428e0"}},"ca8d07b9b454471e883d43e03b475a9f":{"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":""}},"cad60b6f14f249c187d573dd3a4428e0":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":"center","align_self":null,"border":null,"bottom":null,"display":"flex","flex":null,"flex_flow":"column","grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":"50%"}},"cf370d3015b04b6caa9cbfb8f21dd5e7":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"d3224d16458249a3bfd29253c2d6a86f":{"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":""}},"d8b847adb46d4049a4b43bba2a0e06da":{"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":""}},"d90c3a424bac4bb09e99339c28df2eda":{"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":""}},"de756c426cf0492bb122a45b94d4bbe7":{"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":""}},"df0d8231953b44f1bf8e6d2cd39b2f66":{"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_9c7550ec29c34ef2b674a3667ebd740e","IPY_MODEL_1f9e8ddb08814b2db7761478eb9069f5","IPY_MODEL_b577aeffe358446ea41e4b3c58b80641"],"layout":"IPY_MODEL_19b8b7692cfd46eca5abb50ac2854262"}},"dfe1c2648a564676bfe1e09bda61d439":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"e2df35aaf7e0420b9524d533cb122521":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"e81c501824f94e7d839684fafbc65b31":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"ButtonStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ButtonStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","button_color":null,"font_weight":""}},"ea00aa1eb73949fc94083f1d31372915":{"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":""}},"f702ae2d46834e9b934a40abca49a990":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"f81ada25e7ff4f5da6b3f6c6e73590e4":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"f91ebc43c1344e8688e2eeb2771c7b65":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"fe46e1cf697f4b1fab764104be32da95":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"LabelModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"LabelModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"LabelView","description":"","description_tooltip":null,"layout":"IPY_MODEL_f81ada25e7ff4f5da6b3f6c6e73590e4","placeholder":"​","style":"IPY_MODEL_62f1cf19fe204aa4a424248e807ce061","value":"Your token has been saved in your configured git credential helpers (store)."}},"fe4d028a78e64a4d8b47f8bc8b8ec15d":{"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_b634ae14caf84bc99dcafd3a70b7a383","placeholder":"​","style":"IPY_MODEL_46e41557d0bc4cb4a03c6894fcc57d0e","value":" 3.50G/3.50G [00:26<00:00, 176MB/s]"}},"ff9f726db3434e3184e723d5da884d0a":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}}}}},"nbformat":4,"nbformat_minor":0} \ No newline at end of file +{"cells":[{"cell_type":"markdown","source":["## Fine-tuned the MCQ-tuned model using a Custom Summarisation + QnA dataset to create this Integrated model and then converted it to GGUF format"],"metadata":{"id":"qlvMWD587R0w"}},{"cell_type":"markdown","source":["---"],"metadata":{"id":"zMzaz60DvqTR"}},{"cell_type":"markdown","metadata":{"id":"wAQMA1-DKZZ5"},"source":["# Summarisation + QnA Custom Dataset Creation\n","\n","## 1. Introduction\n","\n","High-quality data is fundamental for producing a good model; the higher the quality of the data, the better the resulting model. The following steps outline the process of creating a dataset specifically for fine-tuning our Llama2 model.\n","\n","\n","\n","![](https://i.imgur.com/IDNhAWH.png)\n","\n","\n","There are several types of datasets that can be used to fine-tune Large Language Models (LLMs):\n","\n","1. **Instruction Datasets:** These datasets contain direct instructions or prompts followed by the correct or expected outputs.\n","\n","2. **Raw Completion:** This involves providing a prompt to the model and letting it generate a response without any predefined correct answer.\n","\n","3. **Preference Datasets:** These datasets include human feedback in the form of preferences, where annotators compare pairs of model outputs to determine which is better.\n","\n","4. **Human Feedback Data:** This is specific to Reinforcement Learning from Human Feedback (RLHF) and involves direct feedback on the model's outputs from human annotators.\n","\n","5. **Demonstration Data:** Also used in RLHF, these datasets consist of examples showing ideal model outputs or actions, typically created by humans.\n","\n","6. **Reward Modeling Data:** Used to train a reward model in RLHF, this dataset predicts human feedback on model outputs based on actual feedback data.\n","\n","7. **Dialogue Data:** Particularly relevant for conversational AI, this includes annotated conversations that indicate the quality of responses or provide corrections.\n","\n","\n","---\n","\n","\n","\n","* Typically, an instruction dataset is utilized for fine-tuning the Llama 2 Model. Since we are focusing on Supervised Fine Tuning, the instruction dataset becomes our primary choice.\n","\n","Therefore, we have 2 options:\n","\n","1. Create our own Instruction Dataset.\n","2. Modify an existing instruction dataset, which involves filtering, modifying, and enriching it.\n","\n","We have decided to proceed with the 1st option: creating our own Instruction Dataset.\n","\n","* This will involve prompt engineering and incorporating sanity checks to ensure quality and relevance."]},{"cell_type":"markdown","metadata":{"id":"hU_mUK-nol-t"},"source":["## 2. Load and analyze the dataset"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"8P7g6eHuxxKe","outputId":"53c785e0-5e95-42d0-a973-17aaf53371d2"},"outputs":[{"name":"stderr","output_type":"stream","text":["huggingface/tokenizers: The current process just got forked, after parallelism has already been used. Disabling parallelism to avoid deadlocks...\n","To disable this warning, you can either:\n","\t- Avoid using `tokenizers` before the fork if possible\n","\t- Explicitly set the environment variable TOKENIZERS_PARALLELISM=(true | false)\n"]},{"name":"stdout","output_type":"stream","text":["\u001b[31mERROR: Could not find a version that satisfies the requirement faiss-gpu (from versions: none)\u001b[0m\u001b[31m\n","\u001b[0m\u001b[31mERROR: No matching distribution found for faiss-gpu\u001b[0m\u001b[31m\n","\u001b[0m"]}],"source":["# Install libraries\n","!pip install -q datasets transformers sentence_transformers faiss-gpu huggingface_hub"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"KKb-ikj4J-in"},"outputs":[],"source":["# Import the required libraries\n","import json\n","import sys\n","import pandas as pd\n","from datasets import Dataset, DatasetDict, load_dataset\n","\n","from transformers import AutoTokenizer\n","import matplotlib.pyplot as plt\n","import seaborn as sns\n","\n","from sentence_transformers import SentenceTransformer\n","import faiss\n","from tqdm.autonotebook import tqdm\n","import numpy as np"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"bGi9FdmhdBDg","outputId":"33a7788a-741a-47f5-9093-eaae5aaa0525"},"outputs":[{"name":"stdout","output_type":"stream","text":["DatasetDict({\n"," train: Dataset({\n"," features: ['instruction', 'input_content', 'expected_output'],\n"," num_rows: 448\n"," })\n"," test: Dataset({\n"," features: ['instruction', 'input_content', 'expected_output'],\n"," num_rows: 56\n"," })\n"," val: Dataset({\n"," features: ['instruction', 'input_content', 'expected_output'],\n"," num_rows: 56\n"," })\n","})\n"]}],"source":["# Load JSON data from a file\n","with open(\"my_data_non_MCQ.json\", \"r\") as f:\n"," data = json.load(f)\n","\n","# Create a Pandas DataFrame from the list of dictionaries\n","df = pd.DataFrame(data)\n","\n","# Calculate the number of rows for each dataset split\n","num_rows = len(df)\n","train_end = int(num_rows * 0.8) # 80% for training\n","test_end = train_end + int(num_rows * 0.1) # 10% for testing\n","\n","# Split the DataFrame into training, testing, and validation sets\n","df_train = df[:train_end]\n","df_test = df[train_end:test_end]\n","df_val = df[test_end:] # Ensures the remainder is used for validation\n","\n","# Create Datasets from the DataFrames\n","dataset_train = Dataset.from_pandas(df_train)\n","dataset_test = Dataset.from_pandas(df_test)\n","dataset_val = Dataset.from_pandas(df_val)\n","\n","# Create a DatasetDict containing the split datasets\n","dataset = DatasetDict({\n"," 'train': dataset_train,\n"," 'test': dataset_test,\n"," 'val': dataset_val\n","})\n","\n","# Print the structure of the created DatasetDict\n","print(dataset)"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":719},"id":"-MOvcr5mD8li","outputId":"755ebe31-20bc-42e1-feb2-e43e76a03373"},"outputs":[{"data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
instructioninput_contentexpected_output
0Summarize the concept and applications of AIAI refers to the development of computer syste...AI, or artificial intelligence, involves the c...
1Summarize the concept and applications of Mach...Machine Learning is a subset of AI that focuse...Machine Learning is a branch of AI that enable...
2Summarize the concept and applications of Deep...Deep Learning is a subset of Machine Learning ...Deep Learning, a subset of Machine Learning, e...
3Summarize the differences between AI, Machine ...AI, Machine Learning, and Deep Learning are in...
4Summarize the concept and structure of artific...Artificial neural networks are built on the pr...Artificial neural networks are structured base...
............
443Summarize the considerations when deciding to ...When considering whether to use deep learning ...Considerations when deciding to use deep learn...
444Summarize the concept of Machine LearningMachine Learning is a subset of Artificial Int...Machine Learning is a branch of AI that utiliz...
445Summarize the applications of Machine LearningMachine Learning has various applications acro...Machine Learning finds applications in image r...
446Summarize the concept of Image Recognition in ...Image recognition is one of the applications o...In Machine Learning, image recognition is the ...
447Summarize the concept of Natural Language Proc...Natural Language Processing (NLP) is another a...Natural Language Processing (NLP) in Machine L...
\n","

448 rows × 3 columns

\n","
"],"text/plain":[" instruction \\\n","0 Summarize the concept and applications of AI \n","1 Summarize the concept and applications of Mach... \n","2 Summarize the concept and applications of Deep... \n","3 Summarize the differences between AI, Machine ... \n","4 Summarize the concept and structure of artific... \n",".. ... \n","443 Summarize the considerations when deciding to ... \n","444 Summarize the concept of Machine Learning \n","445 Summarize the applications of Machine Learning \n","446 Summarize the concept of Image Recognition in ... \n","447 Summarize the concept of Natural Language Proc... \n","\n"," input_content \\\n","0 AI refers to the development of computer syste... \n","1 Machine Learning is a subset of AI that focuse... \n","2 Deep Learning is a subset of Machine Learning ... \n","3 \n","4 Artificial neural networks are built on the pr... \n",".. ... \n","443 When considering whether to use deep learning ... \n","444 Machine Learning is a subset of Artificial Int... \n","445 Machine Learning has various applications acro... \n","446 Image recognition is one of the applications o... \n","447 Natural Language Processing (NLP) is another a... \n","\n"," expected_output \n","0 AI, or artificial intelligence, involves the c... \n","1 Machine Learning is a branch of AI that enable... \n","2 Deep Learning, a subset of Machine Learning, e... \n","3 AI, Machine Learning, and Deep Learning are in... \n","4 Artificial neural networks are structured base... \n",".. ... \n","443 Considerations when deciding to use deep learn... \n","444 Machine Learning is a branch of AI that utiliz... \n","445 Machine Learning finds applications in image r... \n","446 In Machine Learning, image recognition is the ... \n","447 Natural Language Processing (NLP) in Machine L... \n","\n","[448 rows x 3 columns]"]},"execution_count":23,"metadata":{},"output_type":"execute_result"}],"source":["# Read as pandas DataFrame\n","dataset['train'].to_pandas()"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":1000},"id":"7WkFWJSQhKUV","outputId":"5ef5b8f2-d42b-4208-bba6-3986059ae6a3"},"outputs":[{"data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
instructioninput_contentexpected_output
0Summarize the hyperparameters in Support Vecto...We take into account some essential hyperparam...Support Vector Machine (SVM) is a machine lear...
1Summarize the hyperparameters in XGBoostThe following essential XGBoost hyperparameter...XGBoost is a popular gradient boosting algorit...
2Summarize other examples of model hyperparametersSome other examples of model hyperparameters i...In addition to SVM and XGBoost, other machine ...
3Summarize the importance of hyperparameter tun...Hyperparameter tuning is crucial in machine le...Hyperparameter tuning plays a critical role in...
4Summarize the concept and applications of Deep...Deep Learning is a type of Machine Learning th...Deep Learning is a subset of Machine Learning ...
5Explain the use of Deep Learning in image and ...Deep learning algorithms are used in image and...Deep Learning algorithms play a crucial role i...
6Describe the applications of Deep Learning in ...Deep Learning algorithms are used for tasks su...Deep Learning algorithms find applications in ...
7Explain the role of Deep Learning in fraud det...Deep Learning algorithms are used in financial...Deep Learning algorithms play a vital role in ...
8Summarize the concept of artificial neural net...Artificial neural networks are built on the pr...Artificial neural networks are modeled after h...
9Summarize the architecture of artificial neura...Artificial neural networks have input layers, ...Artificial neural networks consist of input, h...
10Differentiate between machine learning and dee...Machine learning and deep learning are subsets...Machine learning and deep learning are subsets...
11Highlight the differences between machine lear...Machine learning involves manual extraction of...Machine learning requires manual feature extra...
12Summarize the concept of Deep LearningDeep learning is a branch of machine learning ...Deep learning is a subfield of machine learnin...
13Explain the architecture of an artificial neur...An artificial neural network (ANN) is the basi...An artificial neural network (ANN) serves as t...
14Discuss the applications of Deep LearningDeep learning has found applications in variou...Deep learning has been applied to computer vis...
15Explain the different types of machine learnin...Deep learning employs various machine learning...Deep learning encompasses supervised learning,...
16Summarize the types of neural networks used in...Deep learning models are able to automatically...Deep learning models use various types of neur...
17Summarize the applications of deep learning in...Deep learning models can enable machines to id...Deep learning has several applications in comp...
18Summarize the applications of deep learning in...Deep learning models can enable machines to un...Deep learning plays a crucial role in natural ...
19Summarize the applications of deep learning in...Deep learning models can be used in reinforcem...Deep learning is employed in reinforcement lea...
20Summarize the concept of Artificial IntelligenceArtificial Intelligence (AI) is the incorporat...Artificial Intelligence (AI) involves incorpor...
21Summarize the concept of Machine LearningMachine Learning (ML) is the study/process tha...Machine Learning (ML) enables systems to learn...
22Summarize the concept of Deep LearningDeep Learning (DL) is a sub-part of Machine Le...Deep Learning (DL) is a sub-part of Machine Le...
23Summarize the differences between Artificial I...Artificial Intelligence (AI) is the broader fa...Artificial Intelligence (AI) encompasses Machi...
24Summarize the concept and applications of AIAI refers to the development of computer syste...AI, or artificial intelligence, involves the c...
25Summarize the concept and applications of Mach...Machine Learning is a subset of AI that focuse...Machine Learning is a branch of AI that enable...
26Summarize the concept and applications of Deep...Deep Learning is a subfield of Machine Learnin...Deep Learning is a subfield of Machine Learnin...
27Summarize the common examples of AI applicationsAI has numerous applications across various in...AI has a wide range of applications across var...
28Summarize the role and responsibilities of an ...An AI Engineer is a professional who designs, ...An AI Engineer is responsible for designing, d...
29Summarize the role and responsibilities of a M...A Machine Learning Engineer is a professional ...A Machine Learning Engineer is responsible for...
30Summarize the role and responsibilities of a D...A Deep Learning Engineer is a professional who...A Deep Learning Engineer is responsible for de...
31Differentiate between the roles of an AI Engin...AI Engineers, Machine Learning Engineers, and ...AI Engineers, Machine Learning Engineers, and ...
32Summarize the concept of Artificial Neural Net...Artificial Neural Network (ANN) is a type of n...Artificial Neural Network (ANN) is a type of n...
33Summarize the concept of Biological Neural Net...Biological Neural Network (BNN) is a structure...Biological Neural Network (BNN) is a neural ne...
34Highlight the differences between Artificial N...Artificial Neural Networks (ANNs) and Biologic...Artificial Neural Networks (ANNs) and Biologic...
35Summarize the overall differences between Arti...While ANNs and BNNs share basic components, th...Artificial Neural Networks (ANNs) and Biologic...
36Summarize the concept of hyperparameter tuning...Hyperparameter tuning is the process of select...Hyperparameter tuning is the process of findin...
37Summarize the different types of hyperparamete...Neural networks have several essential hyperpa...In neural networks, there are several importan...
38Explain the impact of learning rate and epochs...Learning rate and epochs are two critical hype...Learning rate and epochs are crucial hyperpara...
39Describe the role of architecture and activati...Architecture and activation function are impor...Architecture and activation function are cruci...
40Summarize the concept of Hyperparameter TuningHyperparameter tuning involves finding the bes...Hyperparameter tuning is the process of findin...
41Explain the advantages and disadvantages of Hy...Hyperparameter tuning offers several advantage...Hyperparameter tuning provides several advanta...
42Discuss the challenges in Hyperparameter TuningHyperparameter tuning faces several challenges...Hyperparameter tuning encounters various chall...
43Describe the applications of Hyperparameter Tu...Hyperparameter tuning has various applications...Hyperparameter tuning finds applications in di...
44Summarize the challenges in Deep LearningDeep learning has made significant advancement...The challenges in deep learning include data a...
45Summarize the advantages of Deep LearningDeep Learning offers several advantages. Here ...Advantages of deep learning include high accur...
46Summarize the disadvantages of Deep LearningDespite its advantages, Deep Learning also has...Disadvantages of deep learning include high co...
47Summarize the considerations when deciding to ...When deciding whether to use Deep Learning for...Considerations when deciding to use Deep Learn...
48Summarize the concept of Machine LearningExamples of Machine Learning: Machine Learning...Machine Learning (ML) is a subset of Artificia...
49Summarize the applications of Machine Learning...Image recognition: Machine learning algorithms...Machine Learning algorithms play a crucial rol...
50Summarize the applications of Machine Learning...Natural language processing (NLP): Machine lea...Machine Learning algorithms are extensively em...
51Summarize the applications of Machine Learning...Recommendation systems: Machine learning algor...Machine Learning algorithms are instrumental i...
52Summarize the hyperparameters in Support Vecto...Hyperparameters in Support Vector Machine We t...In Support Vector Machine (SVM), there are thr...
53Summarize the hyperparameters in XGBoostHyperparameters in XGBoost The following essen...XGBoost has several important hyperparameters ...
54Summarize some examples of model hyperparametersSome other examples of model hyperparameters i...Model hyperparameters can vary depending on th...
55Summarize the importance of hyperparameter tun...Hyperparameter tuning is a critical step in ma...Hyperparameter tuning plays a crucial role in ...
\n","
"],"text/plain":[" instruction \\\n","0 Summarize the hyperparameters in Support Vecto... \n","1 Summarize the hyperparameters in XGBoost \n","2 Summarize other examples of model hyperparameters \n","3 Summarize the importance of hyperparameter tun... \n","4 Summarize the concept and applications of Deep... \n","5 Explain the use of Deep Learning in image and ... \n","6 Describe the applications of Deep Learning in ... \n","7 Explain the role of Deep Learning in fraud det... \n","8 Summarize the concept of artificial neural net... \n","9 Summarize the architecture of artificial neura... \n","10 Differentiate between machine learning and dee... \n","11 Highlight the differences between machine lear... \n","12 Summarize the concept of Deep Learning \n","13 Explain the architecture of an artificial neur... \n","14 Discuss the applications of Deep Learning \n","15 Explain the different types of machine learnin... \n","16 Summarize the types of neural networks used in... \n","17 Summarize the applications of deep learning in... \n","18 Summarize the applications of deep learning in... \n","19 Summarize the applications of deep learning in... \n","20 Summarize the concept of Artificial Intelligence \n","21 Summarize the concept of Machine Learning \n","22 Summarize the concept of Deep Learning \n","23 Summarize the differences between Artificial I... \n","24 Summarize the concept and applications of AI \n","25 Summarize the concept and applications of Mach... \n","26 Summarize the concept and applications of Deep... \n","27 Summarize the common examples of AI applications \n","28 Summarize the role and responsibilities of an ... \n","29 Summarize the role and responsibilities of a M... \n","30 Summarize the role and responsibilities of a D... \n","31 Differentiate between the roles of an AI Engin... \n","32 Summarize the concept of Artificial Neural Net... \n","33 Summarize the concept of Biological Neural Net... \n","34 Highlight the differences between Artificial N... \n","35 Summarize the overall differences between Arti... \n","36 Summarize the concept of hyperparameter tuning... \n","37 Summarize the different types of hyperparamete... \n","38 Explain the impact of learning rate and epochs... \n","39 Describe the role of architecture and activati... \n","40 Summarize the concept of Hyperparameter Tuning \n","41 Explain the advantages and disadvantages of Hy... \n","42 Discuss the challenges in Hyperparameter Tuning \n","43 Describe the applications of Hyperparameter Tu... \n","44 Summarize the challenges in Deep Learning \n","45 Summarize the advantages of Deep Learning \n","46 Summarize the disadvantages of Deep Learning \n","47 Summarize the considerations when deciding to ... \n","48 Summarize the concept of Machine Learning \n","49 Summarize the applications of Machine Learning... \n","50 Summarize the applications of Machine Learning... \n","51 Summarize the applications of Machine Learning... \n","52 Summarize the hyperparameters in Support Vecto... \n","53 Summarize the hyperparameters in XGBoost \n","54 Summarize some examples of model hyperparameters \n","55 Summarize the importance of hyperparameter tun... \n","\n"," input_content \\\n","0 We take into account some essential hyperparam... \n","1 The following essential XGBoost hyperparameter... \n","2 Some other examples of model hyperparameters i... \n","3 Hyperparameter tuning is crucial in machine le... \n","4 Deep Learning is a type of Machine Learning th... \n","5 Deep learning algorithms are used in image and... \n","6 Deep Learning algorithms are used for tasks su... \n","7 Deep Learning algorithms are used in financial... \n","8 Artificial neural networks are built on the pr... \n","9 Artificial neural networks have input layers, ... \n","10 Machine learning and deep learning are subsets... \n","11 Machine learning involves manual extraction of... \n","12 Deep learning is a branch of machine learning ... \n","13 An artificial neural network (ANN) is the basi... \n","14 Deep learning has found applications in variou... \n","15 Deep learning employs various machine learning... \n","16 Deep learning models are able to automatically... \n","17 Deep learning models can enable machines to id... \n","18 Deep learning models can enable machines to un... \n","19 Deep learning models can be used in reinforcem... \n","20 Artificial Intelligence (AI) is the incorporat... \n","21 Machine Learning (ML) is the study/process tha... \n","22 Deep Learning (DL) is a sub-part of Machine Le... \n","23 Artificial Intelligence (AI) is the broader fa... \n","24 AI refers to the development of computer syste... \n","25 Machine Learning is a subset of AI that focuse... \n","26 Deep Learning is a subfield of Machine Learnin... \n","27 AI has numerous applications across various in... \n","28 An AI Engineer is a professional who designs, ... \n","29 A Machine Learning Engineer is a professional ... \n","30 A Deep Learning Engineer is a professional who... \n","31 AI Engineers, Machine Learning Engineers, and ... \n","32 Artificial Neural Network (ANN) is a type of n... \n","33 Biological Neural Network (BNN) is a structure... \n","34 Artificial Neural Networks (ANNs) and Biologic... \n","35 While ANNs and BNNs share basic components, th... \n","36 Hyperparameter tuning is the process of select... \n","37 Neural networks have several essential hyperpa... \n","38 Learning rate and epochs are two critical hype... \n","39 Architecture and activation function are impor... \n","40 Hyperparameter tuning involves finding the bes... \n","41 Hyperparameter tuning offers several advantage... \n","42 Hyperparameter tuning faces several challenges... \n","43 Hyperparameter tuning has various applications... \n","44 Deep learning has made significant advancement... \n","45 Deep Learning offers several advantages. Here ... \n","46 Despite its advantages, Deep Learning also has... \n","47 When deciding whether to use Deep Learning for... \n","48 Examples of Machine Learning: Machine Learning... \n","49 Image recognition: Machine learning algorithms... \n","50 Natural language processing (NLP): Machine lea... \n","51 Recommendation systems: Machine learning algor... \n","52 Hyperparameters in Support Vector Machine We t... \n","53 Hyperparameters in XGBoost The following essen... \n","54 Some other examples of model hyperparameters i... \n","55 Hyperparameter tuning is a critical step in ma... \n","\n"," expected_output \n","0 Support Vector Machine (SVM) is a machine lear... \n","1 XGBoost is a popular gradient boosting algorit... \n","2 In addition to SVM and XGBoost, other machine ... \n","3 Hyperparameter tuning plays a critical role in... \n","4 Deep Learning is a subset of Machine Learning ... \n","5 Deep Learning algorithms play a crucial role i... \n","6 Deep Learning algorithms find applications in ... \n","7 Deep Learning algorithms play a vital role in ... \n","8 Artificial neural networks are modeled after h... \n","9 Artificial neural networks consist of input, h... \n","10 Machine learning and deep learning are subsets... \n","11 Machine learning requires manual feature extra... \n","12 Deep learning is a subfield of machine learnin... \n","13 An artificial neural network (ANN) serves as t... \n","14 Deep learning has been applied to computer vis... \n","15 Deep learning encompasses supervised learning,... \n","16 Deep learning models use various types of neur... \n","17 Deep learning has several applications in comp... \n","18 Deep learning plays a crucial role in natural ... \n","19 Deep learning is employed in reinforcement lea... \n","20 Artificial Intelligence (AI) involves incorpor... \n","21 Machine Learning (ML) enables systems to learn... \n","22 Deep Learning (DL) is a sub-part of Machine Le... \n","23 Artificial Intelligence (AI) encompasses Machi... \n","24 AI, or artificial intelligence, involves the c... \n","25 Machine Learning is a branch of AI that enable... \n","26 Deep Learning is a subfield of Machine Learnin... \n","27 AI has a wide range of applications across var... \n","28 An AI Engineer is responsible for designing, d... \n","29 A Machine Learning Engineer is responsible for... \n","30 A Deep Learning Engineer is responsible for de... \n","31 AI Engineers, Machine Learning Engineers, and ... \n","32 Artificial Neural Network (ANN) is a type of n... \n","33 Biological Neural Network (BNN) is a neural ne... \n","34 Artificial Neural Networks (ANNs) and Biologic... \n","35 Artificial Neural Networks (ANNs) and Biologic... \n","36 Hyperparameter tuning is the process of findin... \n","37 In neural networks, there are several importan... \n","38 Learning rate and epochs are crucial hyperpara... \n","39 Architecture and activation function are cruci... \n","40 Hyperparameter tuning is the process of findin... \n","41 Hyperparameter tuning provides several advanta... \n","42 Hyperparameter tuning encounters various chall... \n","43 Hyperparameter tuning finds applications in di... \n","44 The challenges in deep learning include data a... \n","45 Advantages of deep learning include high accur... \n","46 Disadvantages of deep learning include high co... \n","47 Considerations when deciding to use Deep Learn... \n","48 Machine Learning (ML) is a subset of Artificia... \n","49 Machine Learning algorithms play a crucial rol... \n","50 Machine Learning algorithms are extensively em... \n","51 Machine Learning algorithms are instrumental i... \n","52 In Support Vector Machine (SVM), there are thr... \n","53 XGBoost has several important hyperparameters ... \n","54 Model hyperparameters can vary depending on th... \n","55 Hyperparameter tuning plays a crucial role in ... "]},"execution_count":24,"metadata":{},"output_type":"execute_result"}],"source":["# Read as pandas DataFrame\n","dataset['test'].to_pandas()"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":1000},"id":"03oFFWL4hM4S","outputId":"4ab2203a-2f25-4496-d7f7-76f902f06c36"},"outputs":[{"data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
instructioninput_contentexpected_output
0Summarize the concept and applications of Deep...Deep Learning is a type of Machine Learning th...Deep Learning is a subset of Machine Learning ...
1Explain the use of Deep Learning in image and ...Deep learning algorithms are used in image and...Deep Learning algorithms play a crucial role i...
2Describe the applications of Deep Learning in ...Deep Learning algorithms are used for tasks su...Deep Learning algorithms have extensive applic...
3Explain the role of Deep Learning in fraud det...Deep Learning algorithms are used in financial...Deep Learning algorithms play a crucial role i...
4Summarize the concept of artificial neural net...Artificial neural networks are built on the pr...Artificial neural networks are modeled after h...
5Explain the structure of an artificial neural ...An artificial neural network is composed of ar...An artificial neural network consists of layer...
6Differentiate between Machine Learning and Dee...Machine Learning and Deep Learning are both su...Machine Learning and Deep Learning are subsets...
7Discuss the differences between Machine Learni...Machine Learning and Deep Learning have differ...Machine Learning and Deep Learning differ in t...
8Summarize the concept of Deep LearningDeep learning is a branch of machine learning ...Deep learning is a subfield of machine learnin...
9Explain the architecture and functioning of ar...Artificial neural networks (ANNs) are the buil...Artificial neural networks (ANNs) form the fou...
10Discuss the applications of Deep LearningDeep learning has achieved significant success...Deep learning has made remarkable advancements...
11Describe the different types of machine learni...Deep learning incorporates various machine lea...Deep learning encompasses multiple machine lea...
12Summarize the types of neural networks in deep...Deep learning models are able to automatically...Deep learning models, such as feedforward neur...
13Summarize the applications of deep learning in...Deep learning models can enable machines to id...Deep learning models in computer vision enable...
14Summarize the applications of deep learning in...Deep learning models can enable machines to un...Deep learning models in NLP enable machines to...
15Summarize the applications of deep learning in...Deep learning models can be used in reinforcem...Deep learning models in reinforcement learning...
16Summarize the concept of Artificial IntelligenceArtificial Intelligence (AI) is the incorporat...Artificial Intelligence (AI) is the study of t...
17Summarize the concept of Machine LearningMachine Learning (ML) is a subset of AI that a...Machine Learning (ML) is a branch of AI that e...
18Summarize the concept of Deep LearningDeep Learning (DL) is a sub-part of Machine Le...Deep Learning (DL) is a subset of Machine Lear...
19Summarize the differences between Artificial I...Artificial Intelligence (AI) encompasses both ...Artificial Intelligence (AI) is the overall co...
20Summarize the concept of Artificial Intelligen...AI refers to the development of computer syste...Artificial Intelligence (AI) involves the deve...
21Summarize the concept of Machine LearningMachine Learning is a subset of AI that focuse...Machine Learning is a branch of AI that enable...
22Summarize the concept of Deep LearningDeep Learning is a subfield of Machine Learnin...Deep Learning is a subfield of Machine Learnin...
23Summarize the applications of AI, Machine Lear...AI, Machine Learning, and Deep Learning have n...AI, Machine Learning, and Deep Learning have w...
24Summarize the role and responsibilities of an ...AI Engineers design, develop, and implement ar...AI Engineers are professionals who design, dev...
25Summarize the role and responsibilities of a M...Machine Learning Engineers design, develop, an...Machine Learning Engineers are professionals w...
26Summarize the role and responsibilities of a D...Deep Learning Engineers design, develop, and i...Deep Learning Engineers are professionals who ...
27Differentiate between the roles of AI Engineer...AI Engineers, Machine Learning Engineers, and ...AI Engineers, Machine Learning Engineers, and ...
28Summarize the concept of Artificial Neural Net...Artificial Neural Networks (ANN) are a type of...Artificial Neural Networks (ANN) are a type of...
29Summarize the concept of Biological Neural Net...Biological Neural Networks (BNN) are structure...Biological Neural Networks (BNN) are structure...
30Explain the differences between Artificial Neu...Artificial Neural Networks (ANNs) and Biologic...Artificial Neural Networks (ANNs) and Biologic...
31Summarize the differences in parameters, compu...ANN and BNN differ in parameters, computing, r...Artificial Neural Networks (ANN) and Biologica...
32Summarize the concept of hyperparameter tuningHyperparameter tuning is the process of select...Hyperparameter tuning involves finding the bes...
33Summarize the importance of hyperparameters in...Hyperparameters are configuration variables th...Hyperparameters play a crucial role in machine...
34Summarize the different types of hyperparamete...Neural networks have several essential hyperpa...In neural networks, there are various hyperpar...
35Summarize the impact of different hyperparamet...Different hyperparameters in neural networks, ...The performance and learning ability of a neur...
36Summarize the concept of Hyperparameter TuningHyperparameter Tuning involves finding the bes...Hyperparameter Tuning is the process of findin...
37Explain the drawbacks of GridSearchCVGridSearchCV is an exhaustive approach to Hype...GridSearchCV, while effective in identifying t...
38Describe the advantages of RandomizedSearchCVRandomizedSearchCV is an alternative approach ...RandomizedSearchCV offers several advantages o...
39Explain the concept of Bayesian Optimization i...Bayesian Optimization is another strategy for ...Bayesian Optimization treats the search for op...
40Summarize the challenges in deep learningDeep learning has made significant advancement...The challenges in deep learning include data a...
41Summarize the advantages of deep learningDeep learning offers several advantages over t...The advantages of deep learning include high a...
42Summarize the disadvantages of deep learningWhile deep learning has many advantages, it al...The disadvantages of deep learning include hig...
43Summarize the key considerations when deciding...When deciding whether to use deep learning for...The key considerations when deciding to use de...
44Summarize the concept of Machine LearningExamples of Machine Learning: Machine Learning...Machine Learning (ML) is a subset of Artificia...
45Summarize the applications of Machine Learning...Examples of Machine Learning: Image recognitio...Machine Learning (ML) algorithms play a crucia...
46Summarize the applications of Machine Learning...Examples of Machine Learning: Natural language...Machine Learning (ML) algorithms are extensive...
47Summarize the applications of Machine Learning...Examples of Machine Learning: Recommendation s...Machine Learning (ML) algorithms play a vital ...
48Summarize the hyperparameters in Support Vecto...Hyperparameters in Support Vector Machine (SVM...Support Vector Machine (SVM) has three importa...
49Summarize the hyperparameters in XGBoostHyperparameters in XGBoost include learning_ra...XGBoost has five essential hyperparameters: le...
50Provide examples of model hyperparametersExamples of model hyperparameters include pena...Some examples of model hyperparameters are the...
51Summarize the importance of hyperparameter tuningHyperparameter tuning is crucial for optimizin...Hyperparameter tuning plays a vital role in op...
52Summarize the concept of Deep LearningDeep Learning is a type of Machine Learning th...Deep Learning is a subset of Machine Learning ...
53Summarize the applications of Deep Learning in...Deep learning algorithms are used in image and...Deep Learning is applied in image and video re...
54Summarize the applications of Deep Learning in...Deep learning algorithms are used for tasks su...Deep Learning is utilized in natural language ...
55Summarize the applications of Deep Learning in...Deep learning algorithms are used in financial...Deep Learning is employed in financial transac...
\n","
"],"text/plain":[" instruction \\\n","0 Summarize the concept and applications of Deep... \n","1 Explain the use of Deep Learning in image and ... \n","2 Describe the applications of Deep Learning in ... \n","3 Explain the role of Deep Learning in fraud det... \n","4 Summarize the concept of artificial neural net... \n","5 Explain the structure of an artificial neural ... \n","6 Differentiate between Machine Learning and Dee... \n","7 Discuss the differences between Machine Learni... \n","8 Summarize the concept of Deep Learning \n","9 Explain the architecture and functioning of ar... \n","10 Discuss the applications of Deep Learning \n","11 Describe the different types of machine learni... \n","12 Summarize the types of neural networks in deep... \n","13 Summarize the applications of deep learning in... \n","14 Summarize the applications of deep learning in... \n","15 Summarize the applications of deep learning in... \n","16 Summarize the concept of Artificial Intelligence \n","17 Summarize the concept of Machine Learning \n","18 Summarize the concept of Deep Learning \n","19 Summarize the differences between Artificial I... \n","20 Summarize the concept of Artificial Intelligen... \n","21 Summarize the concept of Machine Learning \n","22 Summarize the concept of Deep Learning \n","23 Summarize the applications of AI, Machine Lear... \n","24 Summarize the role and responsibilities of an ... \n","25 Summarize the role and responsibilities of a M... \n","26 Summarize the role and responsibilities of a D... \n","27 Differentiate between the roles of AI Engineer... \n","28 Summarize the concept of Artificial Neural Net... \n","29 Summarize the concept of Biological Neural Net... \n","30 Explain the differences between Artificial Neu... \n","31 Summarize the differences in parameters, compu... \n","32 Summarize the concept of hyperparameter tuning \n","33 Summarize the importance of hyperparameters in... \n","34 Summarize the different types of hyperparamete... \n","35 Summarize the impact of different hyperparamet... \n","36 Summarize the concept of Hyperparameter Tuning \n","37 Explain the drawbacks of GridSearchCV \n","38 Describe the advantages of RandomizedSearchCV \n","39 Explain the concept of Bayesian Optimization i... \n","40 Summarize the challenges in deep learning \n","41 Summarize the advantages of deep learning \n","42 Summarize the disadvantages of deep learning \n","43 Summarize the key considerations when deciding... \n","44 Summarize the concept of Machine Learning \n","45 Summarize the applications of Machine Learning... \n","46 Summarize the applications of Machine Learning... \n","47 Summarize the applications of Machine Learning... \n","48 Summarize the hyperparameters in Support Vecto... \n","49 Summarize the hyperparameters in XGBoost \n","50 Provide examples of model hyperparameters \n","51 Summarize the importance of hyperparameter tuning \n","52 Summarize the concept of Deep Learning \n","53 Summarize the applications of Deep Learning in... \n","54 Summarize the applications of Deep Learning in... \n","55 Summarize the applications of Deep Learning in... \n","\n"," input_content \\\n","0 Deep Learning is a type of Machine Learning th... \n","1 Deep learning algorithms are used in image and... \n","2 Deep Learning algorithms are used for tasks su... \n","3 Deep Learning algorithms are used in financial... \n","4 Artificial neural networks are built on the pr... \n","5 An artificial neural network is composed of ar... \n","6 Machine Learning and Deep Learning are both su... \n","7 Machine Learning and Deep Learning have differ... \n","8 Deep learning is a branch of machine learning ... \n","9 Artificial neural networks (ANNs) are the buil... \n","10 Deep learning has achieved significant success... \n","11 Deep learning incorporates various machine lea... \n","12 Deep learning models are able to automatically... \n","13 Deep learning models can enable machines to id... \n","14 Deep learning models can enable machines to un... \n","15 Deep learning models can be used in reinforcem... \n","16 Artificial Intelligence (AI) is the incorporat... \n","17 Machine Learning (ML) is a subset of AI that a... \n","18 Deep Learning (DL) is a sub-part of Machine Le... \n","19 Artificial Intelligence (AI) encompasses both ... \n","20 AI refers to the development of computer syste... \n","21 Machine Learning is a subset of AI that focuse... \n","22 Deep Learning is a subfield of Machine Learnin... \n","23 AI, Machine Learning, and Deep Learning have n... \n","24 AI Engineers design, develop, and implement ar... \n","25 Machine Learning Engineers design, develop, an... \n","26 Deep Learning Engineers design, develop, and i... \n","27 AI Engineers, Machine Learning Engineers, and ... \n","28 Artificial Neural Networks (ANN) are a type of... \n","29 Biological Neural Networks (BNN) are structure... \n","30 Artificial Neural Networks (ANNs) and Biologic... \n","31 ANN and BNN differ in parameters, computing, r... \n","32 Hyperparameter tuning is the process of select... \n","33 Hyperparameters are configuration variables th... \n","34 Neural networks have several essential hyperpa... \n","35 Different hyperparameters in neural networks, ... \n","36 Hyperparameter Tuning involves finding the bes... \n","37 GridSearchCV is an exhaustive approach to Hype... \n","38 RandomizedSearchCV is an alternative approach ... \n","39 Bayesian Optimization is another strategy for ... \n","40 Deep learning has made significant advancement... \n","41 Deep learning offers several advantages over t... \n","42 While deep learning has many advantages, it al... \n","43 When deciding whether to use deep learning for... \n","44 Examples of Machine Learning: Machine Learning... \n","45 Examples of Machine Learning: Image recognitio... \n","46 Examples of Machine Learning: Natural language... \n","47 Examples of Machine Learning: Recommendation s... \n","48 Hyperparameters in Support Vector Machine (SVM... \n","49 Hyperparameters in XGBoost include learning_ra... \n","50 Examples of model hyperparameters include pena... \n","51 Hyperparameter tuning is crucial for optimizin... \n","52 Deep Learning is a type of Machine Learning th... \n","53 Deep learning algorithms are used in image and... \n","54 Deep learning algorithms are used for tasks su... \n","55 Deep learning algorithms are used in financial... \n","\n"," expected_output \n","0 Deep Learning is a subset of Machine Learning ... \n","1 Deep Learning algorithms play a crucial role i... \n","2 Deep Learning algorithms have extensive applic... \n","3 Deep Learning algorithms play a crucial role i... \n","4 Artificial neural networks are modeled after h... \n","5 An artificial neural network consists of layer... \n","6 Machine Learning and Deep Learning are subsets... \n","7 Machine Learning and Deep Learning differ in t... \n","8 Deep learning is a subfield of machine learnin... \n","9 Artificial neural networks (ANNs) form the fou... \n","10 Deep learning has made remarkable advancements... \n","11 Deep learning encompasses multiple machine lea... \n","12 Deep learning models, such as feedforward neur... \n","13 Deep learning models in computer vision enable... \n","14 Deep learning models in NLP enable machines to... \n","15 Deep learning models in reinforcement learning... \n","16 Artificial Intelligence (AI) is the study of t... \n","17 Machine Learning (ML) is a branch of AI that e... \n","18 Deep Learning (DL) is a subset of Machine Lear... \n","19 Artificial Intelligence (AI) is the overall co... \n","20 Artificial Intelligence (AI) involves the deve... \n","21 Machine Learning is a branch of AI that enable... \n","22 Deep Learning is a subfield of Machine Learnin... \n","23 AI, Machine Learning, and Deep Learning have w... \n","24 AI Engineers are professionals who design, dev... \n","25 Machine Learning Engineers are professionals w... \n","26 Deep Learning Engineers are professionals who ... \n","27 AI Engineers, Machine Learning Engineers, and ... \n","28 Artificial Neural Networks (ANN) are a type of... \n","29 Biological Neural Networks (BNN) are structure... \n","30 Artificial Neural Networks (ANNs) and Biologic... \n","31 Artificial Neural Networks (ANN) and Biologica... \n","32 Hyperparameter tuning involves finding the bes... \n","33 Hyperparameters play a crucial role in machine... \n","34 In neural networks, there are various hyperpar... \n","35 The performance and learning ability of a neur... \n","36 Hyperparameter Tuning is the process of findin... \n","37 GridSearchCV, while effective in identifying t... \n","38 RandomizedSearchCV offers several advantages o... \n","39 Bayesian Optimization treats the search for op... \n","40 The challenges in deep learning include data a... \n","41 The advantages of deep learning include high a... \n","42 The disadvantages of deep learning include hig... \n","43 The key considerations when deciding to use de... \n","44 Machine Learning (ML) is a subset of Artificia... \n","45 Machine Learning (ML) algorithms play a crucia... \n","46 Machine Learning (ML) algorithms are extensive... \n","47 Machine Learning (ML) algorithms play a vital ... \n","48 Support Vector Machine (SVM) has three importa... \n","49 XGBoost has five essential hyperparameters: le... \n","50 Some examples of model hyperparameters are the... \n","51 Hyperparameter tuning plays a vital role in op... \n","52 Deep Learning is a subset of Machine Learning ... \n","53 Deep Learning is applied in image and video re... \n","54 Deep Learning is utilized in natural language ... \n","55 Deep Learning is employed in financial transac... "]},"execution_count":25,"metadata":{},"output_type":"execute_result"}],"source":["# Read as pandas DataFrame\n","dataset['val'].to_pandas()"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":145,"referenced_widgets":["69d87602a6884896a846f2163ba6a152","ff52e55f50c44012a1c91fe73c0c1d0a","53af06d6b1e8417a97911beaa53df19d","1f400ccfb3d24a638fa56e24a8afd6b3","d5724f184784479a952c00fa269c1b13","4231d4950aa04e25a63fbe7852f6e252","f013627453f04098b445272139c8261c","c417f77b5c6e417b8ae3d88c2d760fd3","61e79946b798433f99ff8eef584e9dd1","2f748a15848e4318a2c47298c618614d","b92057f5402f42d1bad734cc51fbf18a","06b1d360762c4762b78839bb809089df","f97ca73d0c0c406092736cc7e76b358b","e4cad9a8c9a342ceb54add4f9ae7ded4","3fb9a25d0f9f463685aba687cce93454","c4578f5c5f88467e991c981a4e8387b4","e0092621d297474eb320368a8f78ac56","40ea058255ea438a87e8cd095826f536","e7cd0016f0d14c29a72fc1b4b5381b6e","dd810bc9d1e74e93a48cda6c75a7b0f2","2090f868fcc74f61b78aa47f9aa929ca","808904a9ed4d4a1f83ff289df87334d4","47979c550cfb4c41807b9b4a774ad552","05d6f50dac9e4e29802d4a35e0f4a6e5","d21e35ce94ff4758ab876f1bf52f51d8","ceb70d3f3a014aeaa82774d8ae13877e","828cdb9891e54cc7af37e767014ce828","d6a5a31c98a04fb2bce58817a552c072","69ccba421f874c099160b543d23c323a","93fb4b1e6eb0436e8c3fb3abc2646c44","b9fb9339a1954917a37ea9c18f4c7316","d2db3e5614da457095286971f2fd5c46","d1d20672589f43ce86888288b87557c9"]},"id":"U2YZULfoCura","outputId":"ad214a6e-2f07-4d6e-bfc9-306050305104"},"outputs":[{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"d1d20672589f43ce86888288b87557c9","version_major":2,"version_minor":0},"text/plain":["VBox(children=(HTML(value='
"]},"metadata":{},"output_type":"display_data"}],"source":["# Load the tokenizer\n","tokenizer = AutoTokenizer.from_pretrained(\"meta-llama/Llama-2-7b-chat-hf\")\n","\n","\n","# Function to tokenize and calculate token counts\n","def tokenize_and_count(dataset_split):\n"," # Adjust field names based on your dataset structure\n"," instruction_token_counts = [len(tokenizer.tokenize(example[\"instruction\"])) for example in dataset_split]\n"," input_content_token_counts = [len(tokenizer.tokenize(example[\"input_content\"])) for example in dataset_split]\n"," expected_output_token_counts = [len(tokenizer.tokenize(example[\"expected_output\"])) for example in dataset_split]\n","\n"," # If you need combined token counts of specific fields, adjust as necessary:\n"," combined_token_counts = [instruction + input_content + expected_output for instruction, input_content, expected_output in zip(instruction_token_counts, input_content_token_counts, expected_output_token_counts)]\n","\n"," return instruction_token_counts, input_content_token_counts, expected_output_token_counts, combined_token_counts\n","\n","# Adjust the plot_distribution function to accept a subplot axis\n","def plot_distribution(token_counts, title, ax):\n"," sns.set_style(\"whitegrid\")\n"," ax.hist(token_counts, bins=50, color='#3498db', edgecolor='black')\n"," ax.set_title(title, fontsize=12)\n"," ax.set_xlabel(\"Number of tokens\", fontsize=10)\n"," ax.set_ylabel(\"Number of examples\", fontsize=10)\n"," ax.tick_params(axis='both', which='major', labelsize=8)\n","\n","# Assuming you have a matplotlib figure `fig` and axes `axs`\n","fig, axs = plt.subplots(3, 3, figsize=(18, 12)) # Adjust the figure size as necessary\n","\n","# Iterate over each dataset split and plot\n","split_names = ['train', 'test', 'val']\n","for i, split_name in enumerate(split_names):\n"," # Unpack the token counts from your dataset\n"," instruction_counts, input_content_counts, expected_output_counts, combined_counts = tokenize_and_count(dataset[split_name])\n","\n"," # Plotting the distributions on the specified subplot axis\n"," plot_distribution(instruction_counts, f\"{split_name} split: Instruction\", axs[i, 0]) # Changed for 3x3 grid structure\n"," plot_distribution(input_content_counts, f\"{split_name} split: Input Content\", axs[i, 1]) # Changed for 3x3 grid structure\n"," plot_distribution(expected_output_counts, f\"{split_name} split: Expected Output\", axs[i, 2]) # Changed for 3x3 grid structure\n"," # Note: Combined is not plotted due to 3x3 grid, adjust if needed\n","\n","# Adjust layout to prevent overlap\n","plt.tight_layout()\n","plt.show()\n"]},{"cell_type":"markdown","metadata":{"id":"_RXe958fNLwH"},"source":["## 3. Filter out rows with more than 2048 tokens\n","\n","We will remove samples with more than 2048 tokens (max context size of Llama 2 by default = 4096)."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"flzVgkcnvUWE","outputId":"445cecf1-58c7-40b1-e5cc-8cb6e74483ef"},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAABv0AAASlCAYAAACLEhU2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzde1yUdfr/8fdwEsXMA6iI4qoInjA06WBnMymzLQ+rZR4yt9xKO7KE5XqstKRdS/umlWJqpZum6a8Cy81WtzLLdsVCyROjgMagqS2gMMzvDx7MSpxmhhmGmXk9H499rHPPPZ/7uq/7Zubqvu6DwWKxWAQAAAAAAAAAAADAY/m5OwAAAAAAAAAAAAAA9UPTDwAAAAAAAAAAAPBwNP0AAAAAAAAAAAAAD0fTDwAAAAAAAAAAAPBwNP0AAAAAAAAAAAAAD0fTDwAAAAAAAAAAAPBwNP0AAAAAAAAAAAAAD0fTDwAAAAAAAAAAAPBwNP0AAAAAAAAAAAAAD0fTD/AggwYNUnJystPHnT17tiZNmlRpmslk0qOPPqorr7xSMTExWrlypXbt2qWYmBjt2rXLOl9ycrIGDRrk9Jhc5bfxnj59WnFxcfriiy/cGJXnc9W+CQCALaiR6o8aCQAA70ONVH/USO4zfvx4jR8/3t1hAB6Hph/gRHv27NHixYt19uxZd4dis2PHjmn9+vWaMmVKpenz58/Xjh079OCDD+qll17SddddZ9N4RUVFWrx4caWCrjFr1aqVRo0apVdeeaVe4yxevFgxMTE6deqUkyKrrDHsW40hBgCAZ/LE3xBqJM+okex18uRJLV68WJmZmXZ9zmg0aubMmbr55psVGxur/v376+6779bbb7+t4uJiF0UrHTx4UIsXL9bx48ddtowKnraPAoA3oEbyvN8fZ9dINf0vPz/fSRG7VmPZh0tKSrRq1SqNHDlS/fr1U79+/TRy5EitWrVKJSUlDo/b0Ou3dOlSffbZZw2yLHivAHcHAHiT77//XkuWLNHw4cPVokULp4+flpYmg8Hg1DFXrVqliIgIXXXVVZWmf/3117r55ps1efJk67QuXbpo7969CgwMrHG8oqIiLVmyRFOnTtWVV17p1Fhd5Z577tHq1av11Vdf6eqrr3Z3ONVy9b5V3xhcsW8CALwHNRI1UmPx888/a8mSJYqIiFDPnj1t+sz27dv12GOPKSgoSHfeeaeio6NVUlKi7777TgsXLtTBgwc1b948l8R78OBBLVmyRFdccYU6duzokmVU8MR9FAA8HTWSZ/7+OLNGmj17tpo1a1ZluruO/dirMRyvKiws1JQpU/TNN9/opptu0ogRI2QwGLRjxw49//zz+vTTT7Vs2bJq81yXhl6/ZcuWKSEhQYMHD3b5suC9aPoBblJWVqaSkhI1adLE5s8EBQU5NYaSkhJt2bJFd999d5X3CgoKqvyY+fn52RWvMxUWFjr042yLbt26KTo6Whs3bvSKA1qO7Fv15ex9EwDgu6iR7EON5FrHjh3TE088oQ4dOujtt99W27Ztre/de++9ys7O1vbt290XIADAZ1Aj2cdTaqSEhAS1bt3aSZH5pgULFuibb77RX/7yF40bN846fezYsXrnnXc0d+5cvfjii5ozZ44bowQaDrf3BJxk8eLFeumllyRJN998s/Vy/Ipb8cTExGju3LnavHmzbr/9dsXGxmrHjh2SpOXLl+vuu+/WlVdeqb59+2rEiBFKS0ursozf3ov9gw8+UExMjL777jvNnz9fV111leLi4vTII4/YdAul7777TqdPn9bAgQOrjGmxWPTOO+9Y10NStfdiv9jx48etxc6SJUusn128eLF1nkOHDunRRx/VFVdcodjYWI0YMULbtm2rNE5FDN98841mz56tq6++WjfccIP1/S+++EJjx45VXFyc+vXrpwcffFA//fRTlXg+++wzDRs2TLGxsRo2bJg+/fTTGnMxcOBAff7557JYLNZpJSUlOnTokH7++efa0lij8ePHa9iwYTp48KDGjx+vyy67TNddd53efPPNKvOuXr1at99+uy677DLFx8drxIgR2rJliyTH962attfx48cVExOjDz74oNL0Q4cO6bHHHtNVV12lvn37KiEhQX/7299siqG65wQcO3bMuq0vu+wyjR49uspBsYoYP/74Y73++uu6/vrrFRsbq4kTJyo7O9uRtAMAGhlqJGqk37K1Rrq4TvjrX/+qa665RnFxcfrTn/6kvLy8SvPW9Myii58Fs2vXLo0aNUqSNH36dOt2+G1NdLG33npLhYWFev755ys1/Cp07txZEydOtL4uLS3Va6+9psGDB6tPnz4aNGiQ/vrXv+rChQtV4p0yZYq+/fZbjRo1SrGxsbr55pu1adMm6zwffPCBHnvsMUnShAkTrPFevJ/Zss2Tk5PVr18/nTx5Ug8//LD69eunq666Si+++KLMZrMk2/ZRAIBzUSNRI9ni6aefVmxsrA4dOlRp+uTJkxUfH6+TJ09K+l8Odu/erZkzZ+rKK69U//79lZSUpDNnzlQZ19ac1OdYkSR9+OGHGjFihPr27asrrrhCTzzxRJU6TpLWrVunwYMHq2/fvho1apS+/fZbm/Jz4sQJrV+/XldddVWlhl+Fe++9V1deeaXWr1+vEydOSKr5uJikSvufPX+jCQkJ1v1z9+7dlcas6TmWFbd4vXjZhYWF2rhxo3VZrngmJ7wfV/oBTnLLLbfo6NGj+n//7/9p+vTpatWqlSRVOlvn66+/1ieffKJ7771XrVq1UkREhKTyWyMMGjRId9xxh0pKSvTRRx/pscce07Jly3TjjTfWueznnntOLVq00NSpU5WTk6O3335bc+fO1aJFi2r93Pfffy+DwaBevXpZp8XHx+ull15SUlKSrrnmGt15550256B169aaPXu2Zs+erVtuuUW33HKLJFl/wH766Sfdc889ateunR544AE1a9ZMn3zyiR555BEtXrzYOn+FOXPmqHXr1nrkkUdUWFgoSdq0aZOSk5N17bXXKjExUUVFRXrvvfc0duxYbdy40Xrbo507d2ratGmKiorSU089pdOnT2v69Olq3759tbH37t1bK1eu1E8//aTo6GhJ5c98GTp0qIYPH64FCxbYnIeLnTlzRn/84x91yy236LbbblN6erpSUlIUHR1tLUD//ve/67nnnlNCQoImTJig8+fP68CBA/rPf/6jO+64w+F9y577je/fv1/33nuvAgICNGbMGEVERMhoNOof//iHnnjiCZtiuJjJZNLdd9+toqIijR8/Xq1atdLGjRv10EMP6dVXX62yrd98800ZDAbdf//9+vXXX/XWW28pMTFR77//vl35BgA0PtRI1EjVsaVGqvD666/LYDDogQceUEFBgd5++23dd999+vDDDxUcHGzzMrt166ZHH31Ur776qsaMGaPLL79cktS/f/8aP/P555+rU6dOtc5zsRkzZmjjxo1KSEjQpEmTtHfvXi1btkyHDh3Sa6+9Vmne7OxsPfbYYxo1apSGDx+uDRs2KDk5Wb1791b37t0VHx+v8ePHa/Xq1frTn/6krl27WtdDsn2bS5LZbNbkyZPVt29fJSUl6auvvtKKFSvUqVMnjR07ts59FADgfNRI1EiSqm3IBQQEWK+afPbZZ/X111/r6aef1rp16+Tv76+1a9dq586deumll9SuXbtKn507d6512x45ckTvvfeecnNztXr1auutXm3NSX2PFb3++ut65ZVXdNttt2nUqFE6deqU1qxZo3vvvVebNm2yruP777+vmTNnql+/fpo4caKOHTumhx56SJdeeqnCw8Nrzd8///lPmc1m3XXXXTXOc9ddd2nXrl3asWOH/vCHP9iwVcrZ8je6e/duffzxxxo/fryCgoL03nvv6Y9//KPef/99635hq5deekkzZsxQ3759NXr0aElSZGSkXWMAkiQLAKd56623LNHR0ZZjx45VeS86OtrSo0cPy08//VTlvaKiokqvL1y4YBk2bJhlwoQJlabfdNNNlqefftr6esOGDZbo6GjLfffdZykrK7NOf+GFFyw9e/a0nD17ttZ4ExMTLVdccUW170VHR1vmzJlTadrXX39tiY6Otnz99dfWaU8//bTlpptusr4uKCiwREdHW1599dUqY06cONEybNgwy/nz563TysrKLGPGjLEMGTKkynrdc889ltLSUuv0X3/91TJgwADLjBkzKo2bn59vufzyyytNv/POOy3XXHNNpRzs3LnTEh0dXSneCnv27LFER0dbPvroI+u0Y8eOWaKjoyvlvCavvvqqJTo62lJQUGCdNm7cOEt0dLRl48aN1mnnz5+3XHPNNZZp06ZZpz300EOW22+/vdbxHdm3qtteF6/Xhg0brNPuvfdeS79+/Sw5OTmV5r14v6otht/um88//7wlOjrasnv3buu0X3/91TJo0CDLTTfdZDGbzZVivO222yrtF2+//bYlOjracuDAgVrzAgDwDNRI1EiO1EgVeb3uuuss586ds07/+OOPLdHR0Za3337bOu23+8DFyxo3bpz19d69e6vUQTU5d+6cJTo62vLQQw/VOa/FYrFkZmZaoqOjLc8++2yl6QsWLLBER0dbvvrqq0rx/rZWKigosPTp08eyYMEC67RPPvmk2nrOnm3+9NNPW6Kjoy1LliypNO9dd91lGT58eKXl17SPAgBcgxqJGqm6/yUkJFSad8eOHZbo6GjL//3f/1mMRqMlLi7O8vDDD1eapyIHw4cPt1y4cME6/c0337RER0dbPvvsM7tzUp9jRcePH7f07NnT8vrrr1eafuDAAUuvXr2s0y9cuGC5+uqrLXfeeWel7bxu3TpLdHR0pTquOhXHn3788cca5/nhhx8s0dHRlvnz51ssluqPi1X47b5Y199odHS0JSMjwzotJyfHEhsba3nkkUes0367z1eo2AcuFhcXZ9P+A9SG23sCDSg+Pl5RUVFVpl98hvKZM2d07tw5XX755frxxx9tGnf06NGVHsw8YMAAmc1m5eTk1Pq5X375RZdeeqmN0dfPL7/8oq+//lq33Xabfv31V506dUqnTp3S6dOnde211+ro0aPWWxJUGD16tPz9/a2vv/zyS509e1a333679fOnTp2Sn5+fLrvsMuvtIn7++WdlZmZq+PDhuuSSS6yfv+aaa6rNv/S/BySfPn3aOq1jx446cOCAw2ewS1KzZs0qneUWFBSk2NhYHTt2rNKyT5w4ob179zq8nJr2LVucOnVKu3fv1siRI9WhQ4dK7zn6wO8vvvhCffv21YABA6zTQkJCNGbMGOXk5OjgwYOV5h8xYkSlZw1UfO7iPAEAvBc1EjVSdTVShbvuukvNmze3vr711lsVFhamL774wuHl2+LXX3+VVF7D2KIinkmTJlWafv/991d6v0JUVFSlWql169bq0qWLTfWPrdv8Yvfcc0+l15dffnml228BABofaiTvr5EWL16s1NTUSv+bP39+pXmuvfZajRkzRq+99pqmTZumJk2aaO7cudWON2bMGAUGBlpf33PPPQoICLDWIbbmpL7Hij799FOVlZXptttuq7Sc0NBQde7c2bqcffv2qaCgQHfffXel40K/3RY1+e9//yup9nqt4r2K2s6Z+vXrpz59+lhfd+jQQTfffLN27txpvY060NC4vSfQgC6+xc7FPv/8c73++uvKzMys9LwPWxsuv/3xrSg8bLm9o+Wie4+7ktFolMVi0SuvvKJXXnml2nkKCgoq3Zbgt/k6evSoJFV6bsrFKg4G5ebmSip/xspvdenSpdYi2NEmV03at29fZcxLL71UBw4csL5+4IEH9OWXX+oPf/iDOnfurGuuuUbDhg2z3nLKFjXtW7aoOLBk720HapObm6vLLrusyvSK21Ll5uZWWl599mEAgOejRqJGkqrWSBV+G6/BYFDnzp3rPDBZXxV5qziYVJecnBz5+flVuQ1TWFiYWrRoUSXe6m5Xdemll1Z7m6/f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OlR33nmnoqOjdeHCBX3//fdKS0vTiBEjJEk9evTQ8OHDtW7dOp09e1bx8fHKyMjQxo0bNXjw4Epn3duqZ8+e8vf315tvvqlz584pKChIV111ldq0aWPzNrdVbfsoAMA1qJGokdLT06vd3tdcc41CQ0P11Vdf6d1339XUqVOt+8v8+fM1fvx4LVq0SElJSZU+V1JSovvuu0+33Xabjhw5onfffVeXX365br75ZrtzUp9jRZGRkXr88cf18ssvKycnR4MHD1ZISIiOHz+uzz77TKNHj9bkyZMVGBioxx9/XDNnztTEiRM1dOhQHT9+XB988IFNz/STpOnTp+vw4cOaM2eOduzYYb2ib+fOndq2bZuuuOIKJScnV/rMH/7wB73xxht69tln1adPH3377bfVXtVZ199odHS0Jk+erPHjxysoKMh6ov20adOsYwwdOlQpKSmaOnWqxo8fr+LiYr333nvq0qVLpYZhxfK++uorpaamqm3bturYsaMuu+wym/IAVKDpBzhR37599dhjj2nt2rXasWOHysrKtG3btlqLtauvvlrPP/+83nzzTb3wwgvq2LGjEhMTlZOT4/JiLSgoSHfccYfS0tL05JNPOm3c5557TvPmzdP8+fNVUlKiqVOnKjo6WlFRUdqwYYOWLFmijRs36pdfflHr1q3Vq1cvPfLIIzaNfccdd6ht27Z64403tHz5cl24cEHt2rXTgAEDrAdcpPLL+1955RUtWrRIL7/8siIjIzV//nxt27ZN33zzTaUxDx06pKysLD3zzDNOy4E9xowZoy1btig1NVWFhYVq3769xo8fr4cfftg6jyP7llReoJWWlmrt2rUKCgrSrbfeqqSkJA0bNqzSfD169NDf//53vfLKK3rvvfd0/vx5dejQQbfddptDMYSGhmrt2rVauHCh1qxZo/PnzysmJkZLly7VjTfeWL+EAQA8DjVSOWokx/zpT3/SgQMH9MYbb+i///2vrr76as2aNct65rVUftZ6cnKyUlNT9cILL6hPnz5aunSpXnzxxUpjBQYGasGCBfrrX/+q2bNnq7S0VPPnz6/1oNLNN9+szZs3a/ny5dq2bZvee+89BQUFKSYmRsnJyZWaj88995w6duyojRs36rPPPlNoaKimTJmiqVOnOrTuYWFhmjNnjpYtW6Znn31WZrNZq1atUps2bWze5vaoaR8F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kIdynp6HhoqbY1UAAAAONP127Nihhx56SD179lT//v0lSXv27NHtt9+upUuX6pprrnF6kLCN0WhUTI+eKi4qrHPe4KbNdGB/JsUvAAAu1FB1k9FoVMuWLbV06VJ9+eWXCg4O1rRp03TJJZcoLCxMAQHlJZ/BYFB4eLhyc3PtavplZGQ4JU5Hx8/KynLaskrO5EsGP02YMKHOeZsEB2vD+vVq376905ZfG1fn2ROQg3LkoRx5IAcVyEM58lAzjlUBAACUs7vp9/LLL+u+++5TYmJipekpKSlKSUmhkHIjk8mk4qJCdZmUouDwqBrnK847qCOpiTKZTDT9AABwoYaqm8xms3JychQVFaXExET9+OOPmjRpkt544w2njB8bGyt/f3+njHUxs9msjIyMOscvKytz2jJLi85KljKb66W2bdsqLi7Oacuvjq158GbkoBx5KEceyEEF8lDO0/NQEb8rcawKAACgnN1Nv0OHDmnRokVVpo8cOVJvv/22M2JCPQWHRykksre7wwAAwOc1VN0UHh4uPz8/3XHHHZKkXr16qWPHjsrJyVF+fr5KS0sVEBAgi8WivLw8dejQwa7x/f39XXqQsa7xXbFsW+slV6+7u5bVWJGDcuShHHkgBxXIQznyUDOOVQEAAJTzs/cDrVu3VmZmZpXpmZmZatOmjVOCAgAA8AYNVTe1bt1aV199tXbu3ClJOnbsmI4fP67LL79cvXv31ubNmyVJ6enpateunV239gQAAGjsOFYFAABQzu4r/f7whz9o5syZOnbsWKX7pL/55pu67777nB0fAACAx2rIumnOnDl65plnlJKSIoPBoLlz56pdu3aaM2eOpk+frmXLlikkJETz58936nK9XXUHEC8WGhrK7dIBAHAzjlUBAACUs7vp98gjj6h58+ZasWKF/vrXv0qS2rZtq6lTp2rChAlODxAAAMBTNWTd1KlTJ61evbrK9K5du2rdunVOXZYvKDmTLxn8NG7cuFrnC27aTAf2Z9L4AwDAjThWBQAAUM7upp/BYNB9992n++67T7/++qskqXnz5k4PDAAAwNNRN3mu0qKzkqVMXSalKDg8qtp5ivMO6khqokwmE00/AADciJoLAACgnN1Nv4tRQAEAANiGuskzBYdHKSSyt7vDAAAANqLmAgAAvszP3QEAAAAAAAAAAAAAqB+afgAAAAAAAAAAAICHo+kHAAAAAAAAAAAAeDi7mn4lJSWaOHGijh496qJwAAAAvAN1EwAAgOs5s+Y6f/68Hn74YSUkJOj3v/+9Jk2apOzsbElSQUGBJk+erCFDhmjYsGHavXt3vZcHAADgbHY1/QIDA3XgwAFXxQIAAOA1qJsAAABcz9k115gxY5SWlqbNmzfr5ptv1owZMyRJKSkpiouL09atW/XCCy/oqaeeUklJidOWCwAA4AwB9n7g97//vdavX6/ExERXxAMAAOA1qJsAAABcz1k1V5MmTXTDDTdYX1922WVasWKFJCktLU1bt26VJPXt21dt27bV7t27NXDgQJvHN5vN9YqvMfGmdWmszGZzlTxXvCb/9iFvjiN3jiFvjiN3NbM1J3Y3/cxms9577z19+eWX6tOnj5o2bVrp/enTp9s7JAAAgFeibgIAAHA9V9Vcq1at0qBBg3T69GmVlJQoLCzM+l5ERIRyc3PtGi8jI8OhOBqjrKwsd4fg9bKysuTnV/1N2rxpX2pI5M1x5M4x5M1x5M5xdjf9srKy1KtXL0nSkSNHKr1nMBicExUAAIAXoG4CAABwPVfUXEuXLpXRaNTKlStVXFxc7xglKTY2Vv7+/k4Zy93KysrcHYLXi46OVlxcXKVpZrNZGRkZXrUvNQTy5jhy5xjy5jhyV7OK3NTF7qbf6tWrHQoIAADA11A3AQAAuJ6za67ly5dr69atWrlypZo2baqmTZsqICBA+fn51qv9cnJy1KFDB7vG9ff395oDmN6yHo1ZbfuLN+1LDYm8OY7cOYa8OY7cOa76a8RtkJ2drR07dljPdrJYLE4LCgAAwJtQNwEAALieM2qu1NRUffTRR0pNTVWLFi2s02+99VatXbtWkrR3716dPHlS8fHxzgkcAADASey+0u/06dN6/PHHtWvXLhkMBm3dulWdOnXSM888o0svvVTJycmuiBMAAMDjUDcBAAC4nrNqrhMnTmjBggXq1KmTJkyYIEkKCgrS+++/r8TERCUlJWnIkCEKDAzUwoULFRgY6MrVAgAAsJvdV/rNnz9fAQEB2r59u4KDg63Thw4dqh07djg1OAAAAE9G3QQAAOB6zqq52rdvrwMHDuizzz7Thx9+qA8//FDvv/++JCk0NFQrVqzQ1q1b9dFHH+mqq65y+noAAADUl91X+v3rX//S8uXL1b59+0rTf/e73yk3N9dpgQEAAHg66iYAAADXo+aCN8rMzKwyzWw2KysrS2VlZfL391doaKgiIyPdEB0AoLGyu+lXWFhY6aypCr/88ouCgoKcEhQAAIA3oG4CAABwPWoueJOSM/mSwU/jxo2rc97gps10YH8mjT8AgJXdTb8BAwZo06ZNevzxx63TysrK9NZbb+nKK690ZmwAAAAejboJAADA9ai54E1Ki85KljJ1mZSi4PCoGucrzjuoI6mJMplMNP0AAFZ2N/3+/Oc/67777tO+fftUUlKihQsX6uDBgzpz5ozee+89V8QI+KwTJ05oz5498vf3r3U+bucAAI0TdRMAAIDrUXPBGwWHRykksre7wwAAeBi7m37R0dFKT0/XmjVrFBISosLCQt1yyy2699571bZtW1fECPgko9GokaNG6XxxcZ3zcjsHAGicqJsAAABcj5oLAACgnN1NP0m65JJL9NBDDzk7FgAXMZlMOl9czO0cAMDDUTcBAAC4HjUXAACAg02/M2fOaP369Tp06JAkKSoqSiNGjFDLli2dGRsAcTsHAPB01E0AAACuR80FAAAg+dn7gd27d2vQoEFavXq1zp49q7Nnz2r16tW6+eabtXv3blfECAAA4JGomwAAAFyPmgsAAKCc3Vf6zZ07V0OHDtXs2bPl7+8vSTKbzZozZ47mzp2rLVu2OD1IAAAAT0TdBAAA4HrUXAAAAOXsvtIvOztbkyZNshZRkuTv76/77rtP2dnZdo11//3364477tCdd96psWPH6scff5QkHT16VHfffbcSEhI0cuRI/fTTT/aGCQAA4HbOrJsAAABQPWouAACAcnY3/Xr16qXDhw9XmX748GH16NHDrrEWLVqkLVu26MMPP9SkSZOUnJwsSZo5c6ZGjx6t9PR0PfDAA9bpAAAAnsSZdRMAAACqR80FAABQzqbbe+7fv9/67wkTJuj5559Xdna2LrvsMknSf/7zH73zzjtKTEy0a+EtWrSw/vvcuXMyGAwqKCjQvn37tGLFCklSQkKC5s2bp+zsbHXu3Nnmsc1ms12xuIu9cZrN5ho/48yxJKmsrMxpYzXm9bRnvLrGciZ78i81bGy+oiKf5NV92Abu5cv5r886u6puAgAAwP9QcwEAAFRlU9PvrrvuksFgkMVisU5buHBhlfmeeuopDR061K4AkpKStGvXLknSG2+8oby8PIWFhSkg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9NZbb2nAgAE2bTsAAFB/1FXUVQAAoP6oqaipANiPph8Aq1tuuUU9e/bUq6++Wq9xWrZsqRkzZqhr164aNWqUunTpouLiYv3pT3/S7373O02ZMkWBgYH67rvvKn3u3nvvVUJCgrp166bZs2frkksu0fr16yVJa9asUa9evfTkk0+qW7du6tWrl1544QXt2rVLR44csY7xu9/9TklJSeratau6du1abXzLly/XAw88oNtvv11du3bVn//8Z/Xo0UNvv/22JCksLEz+/v5q1qyZwsLCFBISUmWMSy65RIGBgQoODlZYWJj1M++++67at2+vmTNnqlu3bho8eLCmTZumFStWqKysrNIY77zzjubMmaOlS5fqpptukiR9/PHHKisr0/PPP6+YmBh169ZN8+fPV15eXqWzyS699FLrMm666SbdcMMN+uqrrySVn33VtGlT3XjjjYqIiFCvXr00YcIEezcjAACoB+oq6ioAAFB/1FTUVADsE+DuAAA0LomJiZo4cWKNtxuwRVRUlPz8/ndOQWhoqLp372597e/vr5YtW6qgoKDS5/r162f9d0BAgPr06aPDhw9Lkvbv369du3ZVmqeC0WhUly5dJEm9e/euNbZff/1VP//8s/r3719pev/+/bV//34b17Bmhw4dUr9+/WQwGKzTLr/8chUWFurEiRPq0KGDJCk9PV2nTp3Su+++q759+1rn3b9/v4xGY5X4zp8/L6PRaH0dFRUlf39/6+uwsDBlZWVJKr/9RYcOHTR48GBdd911uu6663TLLbeoadOm9V4/AABgO+qq+qGuAgAAEjVVfVFTAb6Fph+ASuLj43Xttdfq5Zdf1ogRIyq9ZzAYZLFYKk2r7v7fAQGVv1oMBkO10357NlFtCgsLddNNNykxMbHKe2FhYdZ/e0qx0KtXL/3www/asGGDYmNjrYVXYWGhevfurZSUlCqfad26tfXf1eWzYts0b95cGzdu1DfffKOdO3fq1Vdf1ZIlS7R+/Xq1aNHChWsFAAAuRl3VMKirAADwbtRUDYOaCvAO3N4TQBVPPfWUPv/8c33//feVprdu3Vomk6lSMZWZmem05f773/+2/ru0tFQ//PCD9bYHvXv31k8//aSIiAh17ty50v+aNWtm8zKaN2+utm3bas+ePZWm79mzR1FRUXbFGxgYWKUY7Natm77//vtKOfruu+8U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depUSdItt9xiv13/0udSf/zxx7r77rvVrFkztWnTRiNGjNDBgwcd5tm9e7ceffRRtW/fXtHR0brppps0YsQI/f3335KkqKgoZWRkaPny5fZ9XPrs9Lx88cUXuv7662WxWOzboqKi9NFHHykjI8M+T84jkC5/Hvvl+vXrpw0bNmj//v3298bGxtpfP3funKZNm6ZOnTqpadOmuvnmmzV16lSdO3fOYZ6oqChNmDBBK1euVJcuXRQdHa2NGzdKkg4fPqzRo0fbb9nv0qWLli5dmiuWQ4cO6ZFHHlFMTIzatm2rl156Kdd+crRr104ZGRn69ttvHbYfOHBAqampBeYwPznPH//xxx81efJkXX/99YqJidGwYcN0/Phxh7FJSUkaNGiQrrvuOjVr1kyxsbEaPXq0pOzHPrRt21aSlJiYaM9rzi3/8fHxat68udLS0jR48GA1b95cI0eOlJT/evXr10/9+vVz2Hb27FlNnz5dcXFxio6O1g033KDhw4crLS2t0Bjy+ky/Cxcu6M0331THjh3tj1b497//nWsNYmNjNWTIEP3www/q2bOnoqOjdcstt2jFihVFSTsAwIdQI1EjFVYj5dQJmzZt0p133qno6GjdfvvtWrduncO4/D5f+PLPg4mNjdUff/yh77//3r4Ol9dEl/r555+1YcMG9ezZM1fDT8q+mDlq1CiHbd9995169+6tmJgYtWrVSkOHDs2Vq5x49+zZo/j4eLVq1UotW7bU6NGjdebMGfu4ws5dZ9Y85/OIVq9erRkzZuimm25SdHS0BgwYoD179tjHFXaOAgBKBvVRYNZHefnuu+/UsGFDvfHGGw7bV61apaioKL333nv2bZfmIOe6zt13362tW7fmmtfZnBTnOpEkpaam6rHHHlObNm3s8XzxxRe59vPHH3+of//+atasmW666Sb95z//UVZWllM5+s9//iOLxaIpU6Y4NPwkKSIiQk8//bSOHj2qDz74wL49r2tiUvb1tZzzz9lrcXv37tWgQYMUExOjG264QYmJiTIMwz5nfp9jmfOI15zvlfj4eC1atEiSHB71ChQXt2gAJunUqZN2796tTz75RKNHj1blypUlSVWqVJEkzZgxQ2+88YY6d+6snj176vjx41q4cKH69OmjFStWqGLFijp37pwGDRqkc+fOqW/fvgoLC9Phw4e1YcMGnTp1SldccYWmTp2qMWPGqFmzZurVq5ek7F9w+Tl8+LAOHDigxo0bO2yfOnWqPvzwQ23fvl2TJk2SJLVo0cKpY3344Yf1999/69ChQ/amVc5fPWVlZWno0KH68ccf1atXLzVo0EApKSmaN2+edu/erf/85z8Oc23evFmfffaZ+vTpo8qVK6t27dpKT09Xr169ZLFY1KdPH1WpUkXffPONnnvuOZ0+fVr333+/JCkzM1MDBgzQwYMH1a9fP1WvXl0ff/yxNm/enGfckZGRCg0N1bZt29SpUyf79lGjRun777/X77//7tTx52XSpEmqWLGihg8frv3792vevHmaMGGCXn/9dUnZfxE3aNAgVa5cWQ899JAqVqyoffv2af369ZKyz5Nx48Zp3Lhx6tSpkz2+S3/5X7hwQYMGDVLLli01atQohYaGuhSjzWbTkCFD9N1336lLly7q37+//vnnH/33v/9VSkqK2rVrV2gMlxszZoyWL1+uuLg4DRw4UNu3b9esWbOUmpqqN99802Hsnj179Pjjj6tnz57q3r27li1bpvj4eDVp0kTXXHONS8cCAPAd1EjUSAXVSDl2796tESNG6N5777XXCY8//rhmz56t9u3bu7TPZ599VhMnTlS5cuX08MMPS5LCwsLyHf/ll19KktN/hf/tt99q8ODBqlOnjoYPH67MzEwtXLhQ9913nz766CPVqVPHYfwTTzyhOnXq6Mknn9Rvv/2mJUuWqEqVKnr66aclqcBz19k1z/H222/LYrHogQce0OnTpzV79myNHDlSS5YskVTwOQoAKDnUR4FTH505cybXHzxJUsWKFRUSEqK2bduqd+/eeuutt9SxY0c1adJER44c0aRJk9SuXTvdd999Du/bunWrVq9erX79+ql06dJavHixHnzwQS1ZskRWq1WS8/VDca8T/fHHH7rvvvtUo0YNDR48WOXKldNnn32mYcOGafr06fbxR48eVf/+/WWz2fTQQw+pbNmy+vDDD526S/PMmTPavHmzWrZsqbp16+Y55vbbb9fzzz+vr776Sg899JBT6yI5dy3OZrPpwQcf1LXXXqunn35aGzdu1PTp02Wz2fT44487vS9Juueee3TkyBH997//tTf9AbcwAJhm9uzZhtVqNfbu3euwfd++fUajRo2MGTNmOGz//fffjcaNG9u3//bbb4bVajU+++yzAvcTExNjjBo1yqmYvv32W8NqtRpffvllrtdGjRplxMTE5NreoUMHh/k3b95sWK1WY/PmzfZtDz30kNGhQ4dc712xYoXRsGFDY+vWrQ7bFy9ebFitVuPHH3+0b7NarUbDhg2NP/74w2Hss88+a7Rv3944fvy4w/YRI0YYLVu2NM6cOWMYhmHMnTvXsFqtxurVq+1jMjIyjE6dOuWKN8ett95qPPjggw7b+vbta1it1lxjL7d3717DarUas2fPtm9btmyZYbVajfvvv9/Iysqyb3/ppZeMRo0aGadOnTIMwzDWr19vWK1WY/v27fnOf+zYMcNqtRrTpk3L9dqoUaMMq9VqJCQk5Hrt8vW69Lj69u1r/3rp0qWG1Wo15syZk2tsTuwFxTBt2jSHPCUnJxtWq9V47rnnHMZNmTLFsFqtxnfffecQo9VqdTgvjh07ZjRt2tSYMmVKrn0BAPwLNRI1Uo7LayTDuFgnrF271r7t77//Ntq3b2/cdddd9m2X1yKX7+vS86tLly4OdVBBhg0bZlitVuPkyZNOjb/zzjuNtm3bGidOnLBvS05ONho2bGg888wzueIdPXp0rv21adPGYVt+566za55zLnbu3Nk4e/asfdy8efMMq9Vq/P777/Zt+Z2jAICSRX0UGPVRfv9++umnXHF06dLFOHv2rPHQQw8ZLVq0MPbv3+8wZ857k5KS7Nv2799vREdHG8OGDXM5J8W9TjRgwACja9euDrVHVlaWcc899xi33nqrfduLL75oWK1W4+eff7ZvO3bsmNGyZcs8vwculXPtadKkSfmOMQzD6Natm0N9dfk1sRyjRo1yOBeduRY3ceJEh+N76KGHjCZNmhjHjh0zDCPvc94wLp4Dy5Yts28bP368U+cP4Aoe7wl4wPr165WVlaXOnTvr+PHj9n9hYWGqV6+e/fbvChUqSJI2bdrk8Mif4jhx4oSk7L8gKglr1qxRgwYNdPXVVzsc6/XXXy9JuW51b926tSIjI+1fG4ahdevWKTY2VoZhOMxxww036O+//9avv/4qSfrmm29UrVo13Xbbbfb3ly1b1v7Xa3m58sor7TnJsWDBgmL9Bbsk+19Q5WjVqpVsNpv2798vSbriiiskSRs2bND58+eLvJ/L/8LLFevWrVPlypXVt2/fXK9dGruzvv76a0nSwIEDHbY/8MADDq/niIyMVKtWrexfV6lSRfXr19fevXtd3jcAwD9QI1Ej5ahevbrDX9FXqFBBd911l3777TcdPXq0WDEU5vTp05Kcu+PtyJEjSk5OVvfu3VWpUiX79oYNG6pdu3a56h9Juvfeex2+btWqlf766y/7fvPjyprnuPvuux0+Wymn9qLeAgDfQX3kX/XRPffcozlz5uT6d+lxlC1bVpMnT1Zqaqr69OmjDRs2aPTo0apVq1au+Zo3b66mTZvav65Vq5ZuueUWbdq0STabzaWcFOc60V9//aXNmzerc+fOOn36tH0fJ06c0A033KDdu3fr8OHDkrKvD8XExKhZs2b291epUkXdunUrNH/O1mnly5cvtLYqqj59+tj/O+fuyfPnz+u7774zZX+Aq3i8J+ABu3fvlmEYuvXWW/N8PSQk+1uzbt26GjhwoObMmaNVq1apVatWio2N1R133GFvGhWVccmzps20Z88epaam2p+Jfbljx445fH3544+OHz+uU6dO6YMPPnB4FvflYyRp//79qlevXq5CpH79+vnGZxhGkRpchbm8EMspkE+dOiVJatOmjeLi4pSYmKi5c+eqTZs26tixo7p16+b0h16HhISoZs2aRY4xLS1N9evXt59vxbV//34FBQXlejRItWrVVLFixVwX88LDw3PNceWVV+rkyZNuiQcA4HuokS4K1BopR17xXnXVVZKyj6datWpujy1HzkXTf/75p9CLnAcOHJCUdy4bNGigTZs2KSMjQ+XKlbNvzy8HJ0+etO87L66seWH7ujzfAADvRX10kT/UR/Xq1VO7du0KHdeyZUvdd999WrRokW644Qb17Nkz3/kud9VVV9kfIxoUFOR0TopznSgtLU2GYeiNN97I9XmEOY4dO6YaNWrowIEDuvbaa3O9XlDuc1xapxXkn3/+MeWR5UFBQbkeK5oT9+XXvQBPoekHeEBWVpYsFovefvttBQcH53r90osC8fHx6t69u7744gv997//1aRJkzRr1ix9+OGHRWr45DwXvqT+Rz8rK0tWq9X+nPbLXX4Ml38uXc6H+N5xxx3q3r17nnMU50NuT506lWeBVFxBQXnfSJ1TKFssFk2bNk3/+9//9NVXX2njxo169tlnNWfOHH3wwQdOFSalS5fOdz95sdlseZ5v7uZsAVwSsQAAfAs10kWBWiO5Ir+aw2azuTzXpa6++mpJUkpKisNTCdylqDkoypq7M98AAM+gPrrIX+ujvJw7d07ff/+9pOw79M+cOaOyZcu6PI/ZObl8Pw888IBuvPHGPMcU9PmRzoqIiFBISEiBd1eeO3dOf/75p8MdkPkpbt2Yl/xq1JwcAWaj6QeYKL8f8hERETIMQ3Xq1HHqr1iioqIUFRWlRx55RNu2bdN9992nxYsXa8SIES7HlHMRY9++fS6/tyAFHeuOHTvUtm3bIv01VJUqVVS+fHllZWUV+pdQtWvXVkpKSq6/vPrzzz/zHH/hwgUdPHhQsbGxLsflLjExMYqJidGIESO0atUqjRw5UqtXr9a//vWvIv/12JVXXplnQX7gwAGHv0aKiIjQzz//rPPnz6tUqVJ5zuVKDLVr11ZWVpb27NmjBg0a2Lenp6fr1KlTql27tgtHAQDwZ9RI1EiF2bNnT654d+/eLUn2muLSu9YuvSMv5+67S7mS4w4dOmjWrFlauXJloU2/nDvp8srlrl27VLlyZYeLscXhypq7wow7OgEArqM+oj661LRp05SamqpRo0YpISFBr776qsaMGZNr3J49e3Jt2717t8qWLasqVapIktM5Kc51opzrTaVKlSp0P7Vq1coz7vxyf6ly5crpuuuu0+bNm7V///48rzWtXr1a586dU4cOHezbrrzyyjwfb3553VjYeZeVlaW9e/c6fC/mxH15jfr33387vDevOwGpw2AGPtMPMFHOX+Bc/kP+1ltvVXBwsBITE3P9la1hGPbng58+fVoXLlxweN1qtSooKEjnzp2zbytXrpzTf3VVo0YNhYeH65dffnH5eApStmzZXMcpSZ07d9bhw4f14Ycf5notMzNTGRkZBc4bHBysuLg4rV27VikpKblev/QRRjfddJOOHDmiNWvW2LedOXMmz31L0s6dO3X27Fk1b97cYfuBAweUmppaYFzFdfLkyVxr36hRI0myr23O+ePqX9TVrVtXP//8s8M58tVXX+ngwYMO42699VadOHFCixYtyjVHTmyuxHDzzTdLkubNm+ewfc6cOQ6vAwBAjUSNVJgjR45o/fr19q9Pnz6tFStWqFGjRvZHe+b8tfjWrVvt4zIyMrRixYpc85UtW9bpc6F58+a68cYbtWTJEn3++ee5Xj937pxefvllSdmfPdioUSOtWLHCYf6UlBT997//LXL9k9e568qauyK/cxQAULKoj6iPcvz888969913NWDAAD3wwAMaNGiQFi5caL/z71I//fSTw2f6Hjx4UF988YXat2+v4OBgl3JSnOtEVatWVZs2bfTBBx/oyJEjBe7n5ptv1v/+9z9t377d4fVVq1blm5NLDR06VIZhKD4+XpmZmQ6v7d27VwkJCapWrZruuece+/a6detq165dDnHs2LFD27Ztc3i/M9fBLs2PYRhatGiRSpUqZX8sbe3atRUcHOxQo0rS4sWLc81V1Gt/QEG40w8wUZMmTSRJr732mm6//XaVKlVKHTp0UEREhJ544gm9+uqr2r9/vzp27Kjy5ctr3759+vzzz9WrVy8NGjRImzdv1oQJE3Tbbbfpqquuks1m08cff2z/hX3pfr777jvNmTNH1atXV506dfJ8NnaOW265RevXr3frZ7U0adJEq1ev1uTJkxUdHa1y5copNjZWd955pz777DO98MIL2rJli1q0aCGbzaZdu3ZpzZo1mj17tqKjowuc+6mnntKWLVvUq1cv/etf/1JkZKROnjypX3/9Vd9995296OnVq5cWLVqkUaNG6ddff1W1atX08ccf53rcQ45vv/1WZcuWzfUXSKNGjdL333/v0gcxu2r58uVavHixOnbsqIiICP3zzz/68MMPVaFCBd10002Ssh9TERkZqc8++0xXXXWVKlWqpGuuuUZWq7XAuf/1r39p7dq1evDBB9W5c2elpaVp1apVuR6jcNddd2nFihWaPHmytm/frpYtW+rMmTP67rvvdN9996ljx44uxdCwYUN1795dH3zwgU6dOqXWrVsrKSlJy5cvV8eOHe0fvA0AADUSNVJhrrrqKj333HNKSkpS1apVtWzZMh07dkyTJ0+2j2nfvr1q1aql5557Trt27VJwcLCWLVumypUr5/qr7SZNmmjx4sX6z3/+o3r16qlKlSr5fl6QJE2dOlUPPPCAhg8frg4dOqht27YqW7as9uzZo9WrV+vIkSMaNWqUJOmZZ57R4MGDdc8996hnz57KzMzUwoULdcUVV2j48OFFOv78zl1n19zVfeV1jgIAShb1UWDUR7/99ps+/vjjXNsjIiLUvHlznT17VqNGjVK9evXsd2c++uij+uqrrzR69GitWrXK4SkCVqtVgwYNUr9+/VS6dGl7Y+nRRx91OSfFvU70wgsvqHfv3urWrZt69eqlunXrKj09Xf/73/906NAhrVy5UpL04IMP6uOPP9aDDz6o/v37q2zZsvrwww9Vq1Ytp/LYunVrjRo1SpMnT7Y/trRatWratWuXlixZoqysLL311lu68sor7e/p2bOn5s6dq0GDBqlnz546duyY3n//fUVGRjp8PmBh18HKlCmjjRs3atSoUWrWrJk2btyoDRs26OGHH7bfWXnFFVfotttu08KFC2WxWFS3bl1t2LAh12dSShe/7ydNmqQbbrhBwcHB6tKlS6E5AApC0w8wUbNmzfT444/r/fff18aNG5WVlaUvvvhC5cqV00MPPaSrrrpKc+fO1Ztvvikp+9nk7du3t/9PdlRUlG644QZ99dVXOnz4sMqWLauoqCi9/fbbiomJse8nPj5eY8eO1euvv67MzEx17969wIKtR48eWrhwoX788Ue3fU5J7969lZycrI8++khz585V7dq1FRsbq6CgIL355puaO3euPv74Y61fv15ly5ZVnTp11K9fP6ceTREWFqYlS5bozTff1Pr167V48WJVqlRJkZGRGjlypH1c2bJlNXfuXE2cOFELFy5UaGiounXrpptuukkPPvhgrnnXrFmjTp062T8EuCS1adNGSUlJWr16tdLT03XFFVeoWbNmSkhIcHgE56RJkzRx4kRNnjxZ58+f1/Dhwwtt+t14442Kj4/XnDlz9NJLL6lp06aaOXOm/S/ScwQHB+vtt9/WjBkz9Mknn2jdunWqVKmSWrRo4fA8d1dimDRpkurUqaPly5fr888/V1hYmIYMGVLkC14AAP9EjUSNVJirrrpKzz//vKZOnao///xTderU0WuvvebwGTGlSpVSYmKixo8frzfeeEPVqlXTgAEDVLFixVyfBTRs2DAdOHBAs2fP1j///KM2bdoU2PSrUqWK3n//fb333ntavXq1XnvtNZ0/f96+fv3797ePbdeunWbPnq1p06Zp2rRpCgkJUevWrfX000871HWuyO/cdXbNXZHfOQoAKFnUR4FRH33yySf65JNPcm3v3r27mjdvrn//+99KS0vT+++/rzJlykiSSpcurSlTpuiee+7R1KlTNW7cOPv7WrdurZiYGL355ps6cOCAIiMjNXnyZDVs2NDlnBT3OlFkZKSWLVumxMRELV++XH/99ZeqVKmixo0ba9iwYfb3V69eXfPnz9ekSZP01ltvqVKlSrr33ntVvXp1Pffcc07l8f7771fT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VXP98MMP2r9/v+Li4iRJR48e1c6dO3XkyBH17t3bqTmCg4N94mJjzt1xBT1O/Myh1JIMqUjcke+c9zv7aHVn9+kr54KvIr/mIbfmIr/mCpT8utz0++9//6t33nkn163qV111lQ4cOOC2wAAAAPwZNRUAAID53FVz9e7d26G5169fPw0YMEAdO3Z0W6wAAADF5fKDrTMyMhQaGppr+19//aXSpUu7JSgAAAB/R00FAABgPmouAAAQSFxu+rVq1UorVqxw2JaVlaXZs2fruuuuc1dcAAAAfo2aCgAAwHxm1VwLFizgLj8AAOB1XH6859NPP637779fv/zyi86fP69XXnlFO3fu1MmTJ7V48WIzYgQAAPA71FQAAADmo+YCAACBxOWmn9Vq1dq1a7Vw4UKVL19eGRkZ6tSpk/r06aPq1aubESMAAIDfoaYCAAAwHzUXAAAIJC43/STpiiuu0NChQ90dCwAAQEChpgIAADAfNRcAAAgURWr6nTx5UkuXLlVqaqokKTIyUnfffbcqVarkztgAAAD8GjUVAACA+ai5AABAoAhy9Q1bt25VbGysFixYoFOnTunUqVNasGCBbrnlFm3dutXtAS5btkxRUVH6/PPP3T43AACAp5R0TQUAABCIqLkAAEAgcflOvwkTJuj222/XuHHjFBwcLEmy2WwaP368JkyYoFWrVrktuH379mnJkiWKiYlx25wAAADeoCRrKgAAgEBFzQUAAAKJy02/PXv26I033rAXSpIUHBys+++/XytWrHBbYFlZWRozZozGjBmjl19+2eX322w2t8ViJlfjtNls+b7HnXO5Op8753JmvrS0NKWnpxc6T1hYmCIiIgrdl7viKik5MXhDLMjGmngX1sP7+NqalEScJVVTAQAABDJqLgAAEEhcbvo1btxYu3bt0tVXX+2wfdeuXWrYsKHbApszZ45atGihpk2bFun9SUlJbovFTCkpKS6PDwrK+6ms7pzL1fncOVdh8x06dEg9evbU2czMQucpExqqZUuXqmbNmm6JrbDjLGm+cp4HEtbEu7Ae3oc1uaikaioAAIBARs0FAAACiVNNvx07dtj/u3///nrxxRe1Z88eXXvttZKkn3/+WYsWLdLIkSPdElRKSorWrVunhQsXFnmO6Ohoh7/i8lZZWVkujbdarfk+7tSdc7k6nzvnKmy+bdu26WxmpuoP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FBjb6dOndeTIEbVo0cJhe4sWLbRjxw4njzB/qampat68uSwWi31by5YtlZGRoUOHDqlWrVqSpLVr1+r48eN677331KxZM/vYHTt2KC0tLVd8Z8+eVVpamv3ryMhIBQcH27+uVq2aUlJSJGU//qJWrVrq2LGjbrzxRt14443q1KmTypYtW+zjAwAAzqOuKh7qKgAAIFFTFRc1FRBYaPoBcNC6dWvdcMMNevXVV3X33Xc7vGaxWGQYhsO2vJ7/HRLi+KPFYrHkue3yvyYqSEZGhjp06KCRI0fmeq1atWr2//aVYqFx48b69ddftWzZMkVHR9sLr4yMDDVp0kQJCQm53lOlShX7f+eVz5y1qVChgpYvX67vv/9emzZt0rRp05SYmKilS5eqYsWKJh4VAAC4FHVVyaCuAgDAv1FTlQxqKsA/8HhPALk89dRT+uqrr/TTTz85bK9SpYrS09Mdiqnk5GS37fd///uf/b8vXLigX3/91f7YgyZNmuiPP/5Q7dq1Va9ePYd/5cqVc3ofFSpUUPXq1bVt2zaH7du2bVNkZKRL8ZYqVSpXMdigQQP99NNPDjn68ccfVb58edWsWdO+rW7dupo/f76++OILTZw40b69SZMm2rNnj6pWrZrrOK+44gqnYwsJCVG7du30zDPPaOXKldq/f782b97s0vEBAIDio65yDnUVAAAoCDWVc6ipAND0A5BLVFSUunXrpgULFjhsv+6663T8+HG9/fbbSktL06JFi7Rx40a37fe9997T+vXrlZqaqgkTJujkyZPq0aOHJKl37946efKknnzySW3fvl1paWnauHGjRo8eLZvN5tJ+Bg0apLffflurV6/Wrl27lJCQoB07drj8LPHatWvr559/1r59+3T8+HFlZWWpd+/eOnTokCZOnKjU1FR9/vnnmj59ugYOHOjwGAlJql+/vubPn69169bpxRdflCR169ZNlStX1tChQ/XDDz9o79692rJliyZNmuT0h1Z/9dVXmj9/vpKTk7V//36tWLFCWVlZ9sdKAACAkkNd5RzqKgAAUBBqKudQUwHg8Z4A8vTYY49p9erVDtsaNGigF154QbNmzdKMGTN066236oEHHtCHH37oln0+9dRTeuutt5ScnKx69eppxowZ9scE1KhRQ4sXL1ZCQoIGDRqkc+fOqVatWrrxxhtzFSiF6d+/v06fPq0pU6bo+PHjatCggf7zn//oqquucmmeBx54QPHx8erSpYsyMzP1xRdfqE6dOnrrrbc0depUffjhh6pUqZJ69uypoUOH5jnH1VdfrXnz5qlfv34KDg5WfHy8Fi5cqISEBA0fPlz//POPatSoobZt26pChQpOxXXFFVdo/fr1SkxM1NmzZ1WvXj29+uqrDs+qBwAAJYe6qnDUVQAAoDDUVIWjpgJgMS5/6DEAAAAAAAAAAAAAn8LjPQEAAAAAAAAAAAAfR9MPAAAAAAAAAAAA8HE0/QAAAAAAAAAAAAAfR9MPAAAAAAAAAAAA8HE0/QAAAAAAAAAAAAAfR9MPAAAAAAAAAAAA8HE0/QAAAAAAAAAAAAAfR9MPAAAAAAAAAAAA8HE0/QAAAAAAAAAAAAAfR9MPAAAAAAAAAAAA8HE0/QAAAAAAAAAAAAAfR9MPAAAAAAAAAAAA8HE0/QAAAAAAAAAAAAAfR9MPAAAAAAAAAAAA8HE0/QAAAAAAAAAAAAAfR9MPAAAAAAAAAAAA8HE0/QAAAAAAAAAAAAAfR9MP8FEfffSRoqKitG/fPqfGjxs3TgMHDnTYlp6erscee0zXXXedoqKiNHfuXG3ZskVRUVHasmWLfVx8fLxiY2PdGr+ZLo/3xIkTiomJ0ddff+3BqHxfbGys4uPjPR0GAAAFokbKHzUSAACBixopf9RIntOvXz/169fP02EAfoWmHxAA9u7dq6VLl2rIkCEO2ydPnqyNGzfqoYce0tSpU3XjjTc6Nd+ZM2c0ffp0h4LOm1WuXFk9e/bUG2+8Uax5pk+frqioKB0/ftxNkTnatm2bpk+frlOnTpkyv6/EAABASaFG8o0ayVWHDx/W9OnTlZyc7NL70tLSNHbsWN1yyy2Kjo5WixYtdO+992revHnKzMw0KVpp586dmj59utMXYYvD185RAIBnUCO5t0bK79/Ro0fdFLG5vOVa0fnz5zV//nz16NFDzZs3V/PmzdWjRw/Nnz9f58+fL/K8JX18M2fO1Oeff14i+0JgCvF0AADMN3/+fNWuXVvXX3+9w/bNmzfrlltu0aBBg+zb6tevr+3bt6tUqVL5znfmzBklJiZq+PDhuu6660yL253uu+8+LViwQN99953atm3r6XDy9NNPPykxMVHdu3dXxYoVvS6GNWvWyGKxeCQuAADMQI3kGzWSq44cOaLExETVrl1bjRo1cuo9GzZs0OOPP67SpUvrzjvvlNVq1fnz5/Xjjz/qlVde0c6dOzVx4kRT4t25c6cSExPVpk0b1alTx5R95PDFcxQAUPKokdxbI40bN07lypXLtd1T135c5Q3XqzIyMjRkyBB9//336tChg+6++25ZLBZt3LhRL774otavX69Zs2blmefClPTxzZo1S3FxcerYsaPp+0JgoukH+Lnz589r1apVuvfee3O9duzYsVy/zIKCglSmTJmSCs9BRkZGkX45O6NBgwayWq1avny5X1zQysrK0vnz50t0rUqXLl1i+wIAwGzUSNn8rUYqir1792rEiBGqVauW5s2bp+rVq9tf69Onj/bs2aMNGzZ4LkAAAEoQNVI2d9ZIcXFxqlKlipsiC0xTpkzR999/r+eff159+/a1b+/du7cWLVqkCRMm6OWXX9b48eM9GCXgHXi8J1AC1qxZo6ioKH3//fe5Xnv//fcVFRWllJQUSdKOHTsUHx9vf6xQ+/btNXr0aJ04caJI+/7xxx914sQJtWvXzr4t5znuhmFo0aJF9scKSMrzWeyX2rdvn73YSUxMtL93+vTp9jGpqal67LHH1KZNG0VHR+vuu+/WF1984TBPTgzff/+9xo0bp7Zt2+rmm2+2v/7111+rd+/eiomJUfPmzfXQQw/pjz/+yBXP559/rq5duyo6Olpdu3bV+vXr881Fu3bt9NVXX8kwDPu28+fPKzU1VUeOHCkojfnq16+funbtqp07d6pfv3669tprdeONN+rtt9/ONXbBggXq0qWLrr32WrVu3Vp33323Vq1aJSn7kQ9Tp06VJN1yyy32vOY85ikqKkoTJkzQypUr1aVLF0VHR2vjxo35rte+ffsUFRWljz76yGF7amqqHn/8cV1//fVq1qyZ4uLi9NprrzkVQ16f6bd37177Wl977bXq1atXrotiOTGuXr1aM2bM0E033aTo6GgNGDBAe/bsKUraAQB+ghqJGunSOuHf//632rdvr5iYGD388MM6ePCgw9j8Pl/40s+C2bJli3r27ClJGj16tH0dLq+JLjV79mxlZGToxRdfdGj45ahXr54GDBhg//rChQt688031bFjRzVt2lSxsbH697//rXPnzuWKd8iQIfrhhx/Us2dPRUdH65ZbbtGKFSvsYz766CM9/vjjkqT+/fvb4730PHNmzePj49W8eXMdPnxYjzzyiJo3b67rr79eL7/8smw2myTnzlEAgHegRvLfGikvo0aNUnR0tFJTUx22Dxo0SK1bt9bhw4clXczB1q1bNXbsWF133XVq0aKFnnnmGZ08eTLXvM7mpDjXiiTp448/1t13361mzZqpTZs2GjFiRK46TpI++OADdezYUc2aNVPPnj31ww8/OJWfQ4cOaenSpbr++usdGn45+vTpo+uuu05Lly7VoUOHJOV/XUySw/nnyvW4uLg4+/m5detWhznz+xzLnEe8XrrvjIwMLV++3L6vvOpboDi40w8oAf/3f/+ncuXK6bPPPlObNm0cXlu9erWuueYaWa1WSdK3336rvXv36u6771a1atX0xx9/6MMPP9TOnTv14Ycfuvx4xZ9++kkWi0WNGze2b2vdurWmTp2qZ555Ru3bt9edd97p9HxVqlTRuHHjNG7cOHXq1EmdOnWSJPsvsD/++EP33XefatSoocGDB9uPe9iwYZo+fbp9fI7x48erSpUqGjZsmDIyMiRJK1asUHx8vG644QaNHDlSZ86c0eLFi9W7d28tX77c/tijTZs26dFHH1VkZKSeeuopnThxQqNHj1bNmjXzjL1JkyaaO3eu/vjjD3u+Dx8+rNtvv13du3fXlClTnM7DpU6ePKkHH3xQnTp1UufOnbV27VolJCTIarXaC9APP/xQkyZNUlxcnPr376+zZ8/q999/188//6xu3bqpU6dO2r17tz755BONHj1alStXtuc7x+bNm/XZZ5+pT58+qly5smrXru3S88Z37NihPn36KCQkRPfcc49q166ttLQ0ffnllxoxYoRTMVwqPT1d9957r86cOaN+/fqpcuXKWr58uYYOHapp06blWuu3335bFotFDzzwgE6fPq3Zs2dr5MiRWrJkiUv5BgD4D2okaqQcM2bMkMVi0eDBg3Xs2DHNmzdP999/vz7++GOFhoY6vc8GDRroscce07Rp03TPPfeoZcuWkqQWLVrk+56vvvpKdevWLXDMpcaMGaPly5crLi5OAwcO1Pbt2zVr1iylpqbqzTffdBi7Z88ePf744+rZs6e6d++uZcuWKT4+Xk2aNNE111yj1q1bq1+/flqwYIEefvhhXX311fbjkJxfc0my2WwaNGiQmjVrpmeeeUbfffed3n33XdWtW1e9e/cu9BwFAHgPaiT/qpHyasiFhITY75p87rnntHnzZo0aNUoffPCBgoOD9f7772vTpk2aOnWqatSo4fDeCRMmqGLFiho+fLj+/PNPLV68WAcOHNCCBQvs6+1sTop7rWjGjBl644031LlzZ/Xs2VPHjx/XwoUL1adPH61YscJ+jEuWLNHYsWPVvHlzDRgwQHv37tXQoUN15ZVXKjw8vMD8ffPNN7LZbLrrrrvyHXPXXXdpy5Yt2rhxo/71r385sSrZnLkWtnXrVq1evVr9+vVT6dKltXjxYj344INasmSJ/bxw1tSpUzVmzBg1a9ZMvXr1kiRFRES4NAdQKANAiXjyySeNtm3bGhcuXLBvO3LkiNGwYUMjMTHRvu3MmTO53vvJJ58YVqvV2Lp1q33bsmXLDKvVauzdu7fA/Y4cOdJo06ZNnq9ZrVZj/PjxDts2b95sWK1WY/PmzfZto0aNMjp06GD/+tixY4bVajWmTZuWa84BAwYYXbt2Nc6ePWvflpWVZdxzzz3Grbfemiv+++67zyEnp0+fNlq1amWMGTPGYd6jR48aLVu2dNh+5513Gu3btzdOnTpl37Zp0ybDarU6xJtj27ZthtVqNT799FP7tr179xpWq9UYNWpUnjm61LRp0wyr1WocO3bMvq1v376G1Wo1li9fbt929uxZo3379sajjz5q3zZ06FCjS5cuBc4/e/bsfNfUarUaDRs2NP744w+H7Xmt16XHtWzZMvu2Pn36GM2bNzf279/vMDYrK8upGDp06OCQpxdffDHXeXn69GkjNjbW6NChg2Gz2Rxi7Ny5s8N5MW/ePMNqtRq///57gXkBAPg3aqTArpFy8nrjjTcaf//9t3376tWrDavVasybN8++7fJa5NJ99e3b1/719u3bc9VB+fn7778Nq9VqDB06tNCxhmEYycnJhtVqNZ577jmH7VOmTDGsVqvx3XffOcR7+fl57Ngxo2nTpsaUKVPs2z777LM86zlX1nzUqFGG1Wp1+J4xDMO46667jO7duzvsP79zFADgXaiR/KdGyutfXFycw9iNGzcaVqvV+M9//mOkpaUZMTExxiOPPOIwJicH3bt3N86dO2ff/vbbbxtWq9X4/PPPXc5Jca4V7du3z2jUqJExY8YMh+2///670bhxY/v2c+fOGW3btjXuvPNOh3X+4IMPDKvV6lDH5SXn+tNvv/2W75hff/3VsFqtxuTJkw3DyPu6WI7Lz8XCrsdZrVYjKSnJvm3//v1GdHS0MWzYMPu2y8/5HDnnwKViYmKcOn+AouLxnkAJ6dy5s44dO+bwaIa1a9cqKytLt99+u33bpX/JfPbsWR0/flzXXnutJOnXX391eb9//fWXrrzyymJE7tq+Nm/erM6dO+v06dM6fvy4jh8/rhMnTuiGG27Q7t277Y8kyNGrVy8FBwfbv/7222916v+1d/dxMtf7/8efs1eWdbFYF+tiJdsuy5ZEHV0nUSS5OOkoV6l0QakcUb4KOVTrlOibSCuEUyvSl1BOdehanNpCe1xkkY2lUCx2Zn5/+O0ea2d3Z3bfszOf+Tzut1u3WzvzmffV5zOfeZrXzGeOHlX37t0LH3/48GGFhYXpoosuKrxcxIEDB7R161b16tVLNWrUKHz8FVdcocTERI/jK/h00dmXuGjSpIl+/PHHcn+CXZKqVatW5FNuUVFRSk1N1Z49e4r0nZOTo++++67c/XTo0KHEuZXl8OHD+vrrr9WnTx81atSoyH2+fuqvwCeffKILL7xQ7du3L7wtJiZG/fr10759+7R9+/Yi2/fu3bvI7wIWPO7sdQIA2A8Zyd4ZqcCtt96q6tWrF/594403ql69evrkk0/K3b83fv/9d0lnMow3CsYzZMiQIrffddddRe4vkJiYWCQr1alTR82bN/cq/3i7z8/2l7/8pcjfl1xySZHLbwEArIOMFDoZacaMGUpPTy/y35QpU4psc+WVV6pfv356+eWXNWLECFWpUkUTJ0702F6/fv0UGRlZ+Pdf/vIXRUREFOYQb9ekou8VffDBB3K5XLrpppuK9BMXF6dmzZoV9vP999/r0KFDuv3224u8L3TuvijJH3/8Ian0vFZwX0G2M+niiy9WmzZtCv9u1KiRrr/+em3YsKHwMupAMOHynkAlufrqq1WjRg2tWrWq8Frmq1atUqtWrdS8efPC7X777TfNnDlTq1at0qFDh4q0cezYsXL17T7r2uP+lJ2dLbfbrenTp2v69Oketzl06FCRyxKcfUkiSfrpp58kqcjvppyt4M2gn3/+WdKZ31g5V/PmzbVly5YSx1neIldJGjZsWKzNWrVq6ccffyz8+5577tFnn32mP//5z2rWrJmuuOIK3XzzzYWXnPLGuWvli4I3yszj9wAAXphJREFUlny97EBpfv7558J/SJyt4LJUP//8c5H+zg2QBeHZl0uUAgBCDxnpDLtmpALnjtfhcKhZs2bat2+f0TGdq2DdCt5MKsu+ffsUFhZW7DJM9erVU82aNYuN19PlqmrVquXxMl/n8nafF6hSpUqxy7J72xcAIPiQkc4IhYzUvn37En865WyPP/64/vnPf2rr1q2aNm2a6tat63G7c+cQExOjevXqFeYQb9ekou8V/fTTT3K73erSpYvH+yMizpQeSlr7yMhINW3atMx+Cgp6peU1bwqD5eXpmDnvvPN04sQJHT58WPXq1TPeJ1ARFP2AShIVFaXOnTvrgw8+0FNPPaVDhw5p06ZNevTRR4tsN3LkSG3evFlDhw5Vq1atVK1aNblcLt19993lCl2xsbGVVlRxuVySznzS+aqrrvK4zblvkFSpUqXI3wVzfO655zy+aJ79aS5fFbzhUXB9blO8GVOLFi20evVqffzxx1q/fr3Wrl2rRYsW6cEHH9RDDz3kVT+efs+mpOBZsC+CSViY5y+XV9Y/JgAAwYmMdIZdM5IJTqez3H1Vr15d9evX13/+8x+fHuftm38VWQNf93llrTcAoHKQkc4IxYxUkq1btxYWbrOyssrdjj/X5Gwul0sOh0Nz5szx2Ga1atWM9FPwW8c//vijWrVq5XGbgg+VFXxrs6Ss5q9v5lV2f0BpKPoBleimm27SsmXL9Pnnn2vHjh1yu9266aabCu8/cuSIPv/8c40YMULDhw8vvL3gEzrlcf755+u9997TsWPHvPrKvDdKeiEr+HROZGSkLr/88nK1XdBG3bp1S22j4Ftju3fvLnbfrl27PD6m4NJGBWGhslWrVk3dunVTt27ddOrUKY0YMUKzZs3SsGHDVKVKlXJ9cqzg23Lnfnrv3E+ZF6xrWaHRlzE0atTI41rv3Lmz8H4AALxBRipbKGckqfh43W63du/ereTk5MLbatWq5fFNyJ9//rnIp8R9zVTXXXed/vGPf2jz5s26+OKLS922cePGcrlc2r17d5H1ys3N1dGjR9W4cWOf+i5tvN7ucxN9AQCCExmpbKGSkY4fP66xY8cqMTFRF198sV577TV17txZF154YbFtd+/erT/96U+Ff//xxx86ePCgrr76akner0lF3ytKSEiQ2+1WkyZNinz79Fxnr33Bt1Yl6fTp09q7d69atmxZav9XX321wsPD9e677+rWW2/1uM3y5csVERFRWDwuuETtudmx4FuHZysrH3k6Zn766SdVrVq18BucNWvWLDGnApWN3/QDKtHll1+u2NhYrVq1Su+//74uvPDCIm9QlPRJmzfeeKPcfbZt21Zut1vff/99uds4V9WqVSUVf+GsW7euLr30Uv3jH//QgQMHij3u8OHDZbZ91VVXqXr16nr11Vd1+vTpEtuoX7++WrVqpWXLlhUpeH366afFfkuuwA8//KAaNWroggsuKLzt9OnT2rFjh8fxmnT29d+lM5/Ya9Gihdxud+E8C9bVl8tvNG7cWOHh4fr666+L3L548eIif9epU0cdOnTQ0qVLiwWOsz/558sYrrnmGn333XfavHlz4W3Hjx/XW2+9pcaNG5f79wcBAPZDRrJvRiqwfPnyIr/Bsnr16iJvXkln3pj69ttvderUqcLbPvroI+3fv79IWyXth5LcfffdqlatmsaNG6fc3Nxi92dnZxcea9dcc42k4sdeenp6kft9UVL+8nafl6cvLq8OANZARrJPRkpLS9P+/fs1depUjRkzRo0bN9aYMWOK5J4C//jHP4rMdfHixcrPzy/MTd6uSUXfK+rSpYvCw8M1c+bMYt8qdbvdhe+FtWnTRnXq1NGSJUuKzGfZsmVeZZL4+Hj17t1bn332mRYtWlTs/sWLF+uLL75Qnz591LBhQ0lnruZQu3Ztbdy4sci2nh5f1nthmzdvLvL7mPv379e6det0xRVXFD4HExISdOzYMW3btq1wuwMHDuiDDz4o1l61atXIYvArvukHVKLIyEjdcMMNWrlypU6cOKHHH3+8yP3Vq1dXhw4d9Nprr+n06dNq0KCBPv3008JPFpXHJZdcotjYWH3++edFPk1TEdHR0UpMTNT777+v8847T7GxsbrggguUlJSkp556Sv3791ePHj102223qWnTpsrNzdW///1v5eTkaMWKFaW2Xb16dT399NMaPXq0evfurW7duqlOnTr6+eef9cknn6hdu3YaP368JOnRRx/VsGHD1L9/f/Xp00e//fabFi5cqAsuuEDHjx8v1vZnn32m6667rsgneH755Rd169ZNvXr18ulHmH01dOhQxcXFqV27dqpbt6527typhQsX6pprrim8lnrr1q0lSS+88IK6deumyMhIXXfddaVeDqFGjRq68cYbtXDhQjkcDjVt2lQff/xxsev4S9K4ceP0l7/8Rb169VK/fv3UpEkT7du3Tx9//LHeffddn8dw7733auXKlbrnnns0YMAA1apVS8uXL9fevXs1Y8aMEi/nCQDAuchI9s1IBWrVqqX+/furd+/eOnTokN544w01a9ZMt912W+E2f/7zn7VmzRrdfffduummm5Sdna333nuv2GW/EhISVLNmTS1ZskQxMTGqVq1asTdJz90+LS1NjzzyiLp166aePXsqKSlJp06d0ubNm7V69Wr17t1bktSyZUv16tVL//jHP3T06FF16NBBmZmZWrZsmTp37lzkU/featWqlcLDwzVnzhwdO3ZMUVFR+tOf/qS6det6vc+9VdoxCgAIPmSk0MhIa9as8fi+yhVXXKG4uDh9/vnnWrRokYYPH174vsyUKVM0YMAAvfjiixo9enSRx50+fVqDBw/WTTfdpF27dmnRokW65JJLdP311/u8JhV5ryghIUEjR47UtGnTtG/fPnXu3FkxMTHau3evPvzwQ912220aOnSoIiMjNXLkSI0fP16DBg1St27dtHfvXr3zzjte/aafJI0dO1Y7d+7UhAkTtH79+sJv9G3YsEHr1q3TpZdeqjFjxhR5zJ///GfNnj1bTz75pNq0aaONGzd6/FZnWe+FJSUlaejQoRowYICioqIKP2g/YsSIwja6deumtLQ0DR8+XAMGDFBeXp4WL16s5s2bFykYFvT3+eefKz09XfXr11eTJk100UUXebUOgDco+gGVrFu3bnr77bflcDiKXJKhwLRp0zRp0iQtWrRIbrdbV1xxhebMmVPitc3LEhUVpR49emj16tXFrvteEc8884wmTZqkKVOm6PTp0xo+fLiSkpKUmJiopUuXaubMmVq2bJl+++031alTRykpKXrwwQe9artHjx6qX7++Zs+erblz5+rUqVNq0KCB2rdvX/iGi3Tm6/3Tp0/Xiy++qGnTpikhIUFTpkzRunXr9NVXXxVpc8eOHcrKytITTzxhbA180a9fP7333ntKT0/X8ePH1bBhQw0YMEAPPPBA4TYXXnihHn74YS1ZskTr16+Xy+XSunXryrwG+rhx45Sfn68lS5YoKipKN954o0aPHq2bb765yHYtW7bUW2+9penTp2vx4sU6efKkGjVqVOQ49GUMcXFxWrJkiZ5//nktXLhQJ0+eVHJysmbNmqVrr722YgsGALAdMlLZQjEjFbjvvvv0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AMDiKPoBAAAAAAAAAAAAFkfRDwAAAAAAAAAAALA4in4AAAAAAAAAAACAxVH0AxBwe/fuVXJysrZu3RrooRTasWOHbrvtNqWmpqpnz55G2x4wYIAmT55stE0AAACJXAUAAGACmQqAVVH0A6AxY8YoOTlZs2fPLnL7hx9+qOTk5ACNKrBmzJihqlWravXq1Zo3b57HbQhEAADgXOSq4shVAADAV2Sq4shUALxB0Q+AJKlKlSqaM2eOjhw5EuihGHPq1KlyPzY7O1uXXHKJGjdurNq1axscFQAACHXkqqLIVQAAoDzIVEWRqQB4g6IfAEnS5Zdfrri4OL366qslbjNjxoxilw+YN2+eOnXqVPj3mDFj9MADD2jWrFm6/PLL1b59e82cOVP5+fl69tlndemll+rqq6/W0qVLi7W/c+dO3X777UpNTdXNN9+sr776qsj9WVlZuvvuu3XxxRfr8ssv11//+lcdPny48P4BAwZo4sSJmjx5si677DINHTrU4zxcLpdmzpypq6++Wm3atFHPnj31r3/9q/D+5ORk/fDDD3r55ZeVnJysGTNmFGtjzJgx+uqrrzR//nwlJycrOTlZe/fulSR99dVX6tu3r9q0aaMrr7xSaWlpys/PL3FdP/74Y11yySVasWKFJGn//v16+OGH1b59e1166aW6//77C9s+e43nzp2rK6+8UpdddpkmTJig06dPF27z5ptvqkuXLkpNTdXll1+uhx56qMT+AQCAWeQqchUAAKg4MhWZCoDvKPoBkCSFhYXp0Ucf1cKFC5WTk1Ohtr744gsdOHBACxcu1JgxYzRjxgwNGzZMtWrV0ltvvaXbb79dTz31VLF+nnvuOQ0ZMkTLly9X27Ztdd999+nXX3+VJB09elSDBg1SSkqKMjIy9Nprr+nQoUMaOXJkkTaWLVumyMhILV68WBMmTPA4vvnz5ys9PV2PP/64VqxYoSuvvFIPPPCAfvrpJ0nShg0bdMEFF+iuu+7Shg0bdNdddxVr48knn9TFF1+s2267TRs2bNCGDRsUHx+vX375Rffee69SU1P17rvv6umnn1ZGRoZeeeUVj2N577339OijjyotLU233HKLTp8+raFDhyomJkZvvvmmFi9erGrVqunuu+8u8mmwL7/8UtnZ2XrjjTc0depULVu2TMuWLZMkZWZmavLkyXrooYe0evVqvfba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","text/plain":["
"]},"metadata":{},"output_type":"display_data"}],"source":["# Function to filter dataset based on combined token counts\n","def filter_by_token_count(dataset_split, combined_token_counts, max_tokens=2048):\n"," filtered_dataset = [example for example, count in zip(dataset_split, combined_token_counts) if count <= max_tokens]\n"," return filtered_dataset\n","\n","# Function to plot token distribution\n","def plot_distribution(token_counts, title, ax):\n"," sns.set_style(\"whitegrid\")\n"," ax.hist(token_counts, bins=50, color='#3498db', edgecolor='black')\n"," ax.set_title(title, fontsize=12)\n"," ax.set_xlabel(\"Number of tokens\", fontsize=10)\n"," ax.set_ylabel(\"Number of examples\", fontsize=10)\n"," ax.tick_params(axis='both', which='major', labelsize=8)\n","\n","\n","# Set up the figure for plotting\n","fig, axs = plt.subplots(3, 3, figsize=(18, 12)) # 3 splits, 3 metrics (instruction, input_content, expected_output)\n","\n","# Process each dataset split\n","for i, split_name in enumerate(['train', 'test', 'val']):\n"," # Tokenize and count\n"," instruction_counts, input_content_counts, expected_output_counts, combined_counts = tokenize_and_count(dataset[split_name])\n","\n"," # Filter dataset based on combined token count\n"," filtered_dataset = filter_by_token_count(dataset[split_name], combined_counts)\n","\n"," # Re-tokenize and count for the filtered dataset\n"," filtered_instruction_counts, filtered_input_content_counts, filtered_expected_output_counts, _ = tokenize_and_count(filtered_dataset)\n","\n"," # Plotting the distributions for the filtered datasets\n"," plot_distribution(filtered_instruction_counts, f\"{split_name} (filtered): Instruction\", axs[i, 0])\n"," plot_distribution(filtered_input_content_counts, f\"{split_name} (filtered): Input Content\", axs[i, 1])\n"," plot_distribution(filtered_expected_output_counts, f\"{split_name} (filtered): Expected Output\", axs[i, 2])\n","\n","# Adjust layout to prevent overlap\n","plt.tight_layout()\n","plt.show()\n"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"EtNSFWlUvUWF","outputId":"f5e95b39-8a6a-4a24-e14f-1a26a657b991"},"outputs":[{"name":"stdout","output_type":"stream","text":["Number of valid rows in train: 448\n","Removing 0 rows from train...\n","Number of valid rows in test: 56\n","Removing 0 rows from test...\n","Number of valid rows in val: 56\n","Removing 0 rows from val...\n"]},{"data":{"image/png":"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ibi4OE15YmIi3nzzTXh6emL06NH4448/qjFKIiIiqstkkzh5enpi3759aNOmjVb5smXLMHbsWERGRmLq1KkICAiopgiJiIiorpPNfZx69uxZouzRo0e4ceMGdu/eDeB5crVy5UokJSWhXbt2OrWvUqn0Eqc+Fcckx9j+KTk5GZmZmWXWsbCwgI2NTaXGUZPGTA44XrrjmOmG46U7jpluqmK8dGlbNolTadLT02FpaQkjo+dhKhQKWFlZ4d69ezonTnJ+7IqcYwOA+/fvY/SYMXiWn19mvXqmpjgcEYFWrVpVekxyHzO54XjpjmOmG46X7jhmupHLeMk6cdInOd7avqbcdv/atWt4lp+PDpOCYGplW2qd/PTbuBuyEC1atICLi0ulxVJTxkwuOF6645jphuOlO46ZbqrykStiyDpxsrKywsOHD1FUVAQjIyMIgoD09HS0bt1a57bkfGt7OccGQBObqZUtzGwcy61bFe9F7mMmNxwv3XHMdMPx0h3HTDdyGS/ZLA4vTfPmzeHo6Ijjx48DACIjI9GyZUudL9MRERER6YNszjgtW7YMFy5cQGZmJvz9/WFmZoYzZ85g+fLlWLJkCbZt2wYzMzMEBgZWd6hERERUR8kmcVqxYkWp5R07dsSXX35ZxdEQERERlSTrS3VEREREcsLEiYiIiEgkJk5EREREIjFxIiIiIhKJiRMRERGRSEyciIiIiERi4kREREQkEhMnIiIiIpGYOBERERGJxMSJiIiISCQmTkREREQiMXEiIiIiEomJExEREZFITJyIiIiIRGLiRERERCQSEyciIiIikZg4EREREYnExImIiIhIJCZORERERCIxcSIiIiISiYkTERERkUhMnIiIiIhE0nvi9OTJE5w9exYJCQn6bpqIiIioWklOnN59912Eh4cDAPLz8zF69GjMnTsXo0aNQmRkpOQAiYiIiORCcuJ05coVuLm5AQDOnDkDQRBw+fJl/N///R+2bNkiOUAiIiIiuZCcOOXm5qJJkyYAgIsXL2Lo0KGoX78+Xn75ZSQlJUkOkIiIiEguJCdOVlZWuH79OvLy8nDx4kX06dMHAJCTkwMTExPJARIRERHJhZHUBvz8/PDee++hQYMGsLKywksvvQQAuHz5Muzs7CQHSERERCQXkhOnt956C127dsX9+/fh7u4OA4PnJ7Gsra0xd+5cqc0T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","text/plain":["
"]},"metadata":{},"output_type":"display_data"}],"source":["def filter_and_plot(dataset_split_name, dataset_split_data, combined_token_counts, ax):\n"," # Filter out rows with more than 2048 tokens\n"," valid_indices = [i for i, count in enumerate(combined_token_counts) if count <= 2048]\n"," print(f\"Number of valid rows in {dataset_split_name}: {len(valid_indices)}\")\n"," print(f\"Removing {len(dataset_split_data) - len(valid_indices)} rows from {dataset_split_name}...\")\n","\n"," # Extract valid rows based on indices\n"," valid_dataset = [dataset_split_data[i] for i in valid_indices]\n","\n"," # Re-calculate token counts for the valid dataset\n"," filtered_instruction_counts, filtered_input_content_counts, filtered_expected_output_counts, valid_combined_counts = tokenize_and_count(valid_dataset)\n","\n"," # Plot the new distribution for valid rows\n"," plot_distribution(valid_combined_counts, f\"New distribution after filtering {dataset_split_name}\", ax)\n","\n","\n","\n","# Create a figure with subplots\n","fig, axs = plt.subplots(3, 1, figsize=(6, 9)) # Adjust figsize as necessary\n","\n","# Assuming the 'dataset' variable is a dictionary containing data splits 'train', 'test', and 'val'\n","for i, split_name in enumerate(['train', 'test', 'val']):\n"," # Tokenize and count for the specific dataset split\n"," instruction_counts, input_content_counts, expected_output_counts, combined_counts = tokenize_and_count(dataset[split_name])\n","\n"," # Filter datasets based on token count and plot the new distribution\n"," filter_and_plot(split_name, dataset[split_name], combined_counts, axs[i])\n","\n","plt.tight_layout()\n","plt.show()"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"2sifZa8A9BwV","outputId":"0de7579c-203d-4505-8af5-8d487e9088b6"},"outputs":[{"name":"stdout","output_type":"stream","text":["No entries removed due to token count. Skipping saving.\n"]}],"source":["# Initialize a flag to indicate whether any entries were removed in any split\n","entries_removed = False\n","\n","# Iterate over each split in the dataset\n","for split_name in ['train', 'test', 'val']:\n"," # Get the original length of the split\n"," original_length = len(dataset[split_name])\n","\n"," # Tokenize and count tokens in the split\n"," _, _, _, combined_counts = tokenize_and_count(dataset[split_name]) # Corrected to unpack four values\n","\n"," # Determine valid indices (entries with <= 2048 tokens)\n"," valid_indices = [i for i, count in enumerate(combined_counts) if count <= 2048]\n","\n"," # Check if any entries were removed\n"," if len(valid_indices) < original_length:\n"," entries_removed = True\n","\n"," # Update the dataset split with filtered entries\n"," # Note: This assumes dataset[split_name] is compatible with .select() method (Hugging Face datasets)\n"," dataset[split_name] = dataset[split_name].select(valid_indices)\n","\n","# Flag to control execution of subsequent code\n","continue_execution = entries_removed # Simplified logic\n","\n","if continue_execution:\n"," # Save the filtered dataset to disk\n"," dataset.save_to_disk('new_sum_qna_data')\n"," print(\"Dataset saved successfully.\")\n","else:\n"," print(\"No entries removed due to token count. Skipping saving.\")\n"]},{"cell_type":"markdown","metadata":{"id":"kXzTKu99w3g4"},"source":["---\n","\n","## 4. Near-deduplication Using Embeddings\n","\n","* Near-deduplication with embeddings is a technique that employs vector representations to effectively identify and manage nearly identical data entries.\n","\n","* By transforming data into these vectors (embeddings), we can quantitatively measure how similar different pieces of data are. This transformation significantly improves our ability to manage large datasets, where sorting through and removing near-duplicates manually would be impractical.\n","\n","* Widely used in fields like database management, information retrieval, and machine learning, this approach is crucial for efficient data handling and analysis.\n","\n","---\n","\n","### We Will Not Perform Deduplication on Our Summarisation + Questions & Answers Dataset.\n","\n","* **Intentional Repetition for Emphasis**: In educational contexts, certain concepts may be intentionally repeated to underscore their significance. Deduplication could diminish the dataset's educational effectiveness by removing these purposeful repetitions.\n","\n","* **Variations of Similar Questions**: Dataset often feature questions that, while seemingly similar, include minor variations in wording, options, or context. Inadequately designed deduplication algorithms risk eliminating these nuances, thereby losing valuable elements of the dataset.\n","\n","* **Difficulty in Defining \"Duplicates\"**: Identifying duplicates within the dataset poses a significant challenge, as questions that appear identical might differ in subtle yet crucial ways. These distinctions often represent unique learning opportunities that would be lost through deduplication.\n","\n","---\n"]},{"cell_type":"markdown","metadata":{"id":"TOCspcgXNOav"},"source":["## 5. Top-k sampling\n","\n","Only keep the top k samples with the most tokens.\n","\n","---\n","\n","### Decision on \"Top-k Sampling\" for Our Dataset\n","\n","\n","We have decided against employing \"Top-k sampling\" to select only the top k samples with the most tokens in our dataset. This approach does not align with the core objectives of dataset development for several critical reasons:\n","\n","\n","**Practical Considerations**\n","\n","* Favoring question length over substance could detract from the dataset's quality, as longer questions do not necessarily equate to higher educational value. Succinct yet profound questions are typically the most beneficial and stimulating for learners.\n","\n","* Given these considerations, we conclude that \"Top-k sampling,\" which prioritizes token count, falls short of fulfilling the requirements of our dataset. The true merit of a valuable dataset resides in its diverse and balanced assortment of topics and difficulty levels, not merely in question length. This philosophy ensures our dataset remains versatile and effective across various educational and machine learning applications.\n","---"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":244,"referenced_widgets":["a6956d1103da4062823dc056ab9330a4","d15ec587e6da46a3b3a48327c99605a0","1fa91e6a9fee4b99ac0f6085003b1a6f","08d92d37c77343668f4745c7fb68b3b7","322f4b5be7844621b1faf996f99ea482","5eed2f994425469c9c00b961c43149e8","4d255c8d3f764ca2ad1314ee3c01273b","1c0366becc344dddbb5f933284af302d","eadcd4545c4d49ef9067972cf0bcd3bd","b9056c395f1f48689c059bff61656f46","29be20ebe8c84270bcd5494c4ff6b8b2","f2971406394c4e0580262f575b2aab56","1d9595ffd69f4c73a42e27a46c093623","0f59bb4e535942ceb234e38e4cb017d6","d51602377cdb4fd5a23ef79ddf799118","0b3bce0b92c040a9b76ddad2b07b216f","40eb69eea651428885caa2124dfca968","6e5b0f16547047b394c300b0997a3619","0fb6a225115f4b58a1169d5c4706fbac","4c3dd269401a4fe4a71a98f3f38110b0","e100b1ec01264de39c40ccba0656f914","12c8984929ff4c9bbf5ba7c9ee2f40c5","79cd790b766e4f328030d53b7fef84e4","489bb009a332405d93a646b978d8c951","6cfee80cccd04bdf9991414140ec2987","79a5cb1992a84140abb94da72bf0002a","76c48d31148b4a7a822a284a77dec0e8","5b2f81b887944852a1b641f4c971c514","c4d9e21d4cf84f97a1fb3ad543c64c3a","ccea2b134d6e426cab3c7badc6bebbb0","7eaed3f949f646ac81f8d5cb3aff1e87","b5ef43208ed743b08381f2f1aa60bfb6","db729f357d4a4a6dbdb5fae60e7496e3","5890a9b1ff6343c3a00b362be5b8cbd2","d98b4dd55d364f65942c78bc52661a00","672e1e89a6ca4226a9d582e3d24fcd30","e6ff14f7fbcd409497436400a2ec20a1","f2d1a1473c1f4c9b8d257321f20bb271","d6429fa009aa40658e805ba0ebdd863e","6baea04b2c9b49c5973407433942c38c","0811c93087fb42de829504dd58438549","ad7b29ef600c42a685f25e46062d1d55","58d0e1f247434374b64169485dde959b","5c18240e2a39456c98fd3d6d2baf2995","f3cada5a04ff4d86bcd9fec05ccd06f8","f58734e5cdfa4ac1a08f1a728afe8548","bdc222b8db974d7db527d048bd85f606","1440ddbc8f1c49779b3cbc711fbb1ef8","9f1528b09e284ce896d331ea24c52687","1940a355bf42422daa21ce7a709bada6","535362fa80414ef18cb9c6dc62b350d1","4791db5f77c142c2ba93799d3c87e0b1","a294fc0485f84deabf31609b95891d19","0b094167d51140f8847b1f0c095d18ec","8669b3af0f3041eca1f7f168afd96d89","1315bc7503944ce8830784d65e857bbc","3bf91aa087ad4390bed96ce5a1f380bb","1e75de6e5c384ee082a57f3bcf73e585","5f2da726260e4e1c8d6837d1dd5e3664","ea12b6202d9440ccbeb5fd11da76cc02","3cdfdcbd568f4427b41749226aea61eb","c778d23e7f284e5c8d89985cb7739291","329e05fca23d4e79bd3dc1c9d6268f7d","740e6aaf38394c149a98a6ec7c9212ee","d1e52ecfc5f5475a818f8816c724891d","7373f216800f409eae9ea127d46f3977","c3deeae4017a4579af28a74c2414b76f","a24f5e3c1eaa45dfb67bd7577a6f2238","05eadb782dc549c7b289473a9255ad26","2bbca5dc529a49c18e6891ccb5eff645","1dcada1289f04e389800a5ede5f37e19","38066a02c95344468b6ea715580f40b3"]},"id":"pj1b5S_68KB0","outputId":"84413cb5-038e-4f5c-a2c6-8e70b6fb64d2"},"outputs":[{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"c3deeae4017a4579af28a74c2414b76f","version_major":2,"version_minor":0},"text/plain":["Uploading the dataset shards: 0%| | 0/1 [00:00 "]},"metadata":{},"output_type":"display_data"},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='0.006 MB of 0.006 MB uploaded\\r'), FloatProgress(value=1.0, max=1.0)))"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run floating-rat-21 at: https://wandb.ai/szehanz/Education-Chatbot-Optimization/runs/izssxy0g
Synced 6 W&B file(s), 0 media file(s), 0 artifact file(s) and 0 other file(s)"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Find logs at: ./wandb/run-20240219_171830-izssxy0g/logs"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Successfully finished last run (ID:izssxy0g). Initializing new run:
"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"c712af4c6bc74fe3bb82ebf0731faab8","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='Waiting for wandb.init()...\\r'), FloatProgress(value=0.01111313893343322, max=1.0)…"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Tracking run with wandb version 0.16.3"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Run data is saved locally in /home/iot/ITI110/poc-playground/Final project/wandb/run-20240219_184243-wdbp5xpl"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Syncing run abundant-moon-22 to Weights & Biases (docs)
"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View project at https://wandb.ai/szehanz/Education-Chatbot-Optimization"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run at https://wandb.ai/szehanz/Education-Chatbot-Optimization/runs/wdbp5xpl"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"96be26e86d7640f39dc7a381f9e8ac87","version_major":2,"version_minor":0},"text/plain":["Map: 0%| | 0/448 [00:00\n"," \n"," \n"," [100/112 18:15 < 02:14, 0.09 it/s, Epoch 7/8]\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
StepTraining LossValidation Loss
102.1408001.371807
201.0889000.822470
300.7821000.707285
400.6112000.667052
500.5444000.625149
600.4872000.633841
700.4971000.602714
800.4552000.605597
900.4404000.615718
1000.4400000.617107

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","

\n"," \n"," \n"," [7/7 00:06]\n","
\n"," "],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='0.006 MB of 0.006 MB uploaded\\r'), FloatProgress(value=1.0, max=1.0)))"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","

Run history:


eval/loss█▃▂▂▁▁▁▁▁▁▁
eval/runtime▁▅▇▇█▇▇█▇▇▇
eval/samples_per_second█▄▂▂▁▂▂▁▂▂▂
eval/steps_per_second█▅▂▂▁▂▂▁▂▂▃
eval_loss
train/epoch▁▁▂▂▃▃▃▃▄▄▅▅▆▆▆▆▇▇████
train/global_step▁▁▂▂▃▃▃▃▄▄▅▅▆▆▆▆▇▇█████
train/learning_rate█▇▆▆▅▄▃▃▂▁
train/loss█▄▂▂▁▁▁▁▁▁
train/total_flos
train/train_loss
train/train_runtime
train/train_samples_per_second
train/train_steps_per_second

Run summary:


eval/loss0.60271
eval/runtime7.0512
eval/samples_per_second7.942
eval/steps_per_second0.993
eval_loss0.60271
train/epoch7.14
train/global_step100
train/learning_rate4e-05
train/loss0.44
train/total_flos3478708041547776.0
train/train_loss0.74873
train/train_runtime1107.7796
train/train_samples_per_second3.235
train/train_steps_per_second0.101

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run abundant-moon-22 at: https://wandb.ai/szehanz/Education-Chatbot-Optimization/runs/wdbp5xpl
Synced 6 W&B file(s), 0 media file(s), 0 artifact file(s) and 0 other file(s)"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Find logs at: ./wandb/run-20240219_184243-wdbp5xpl/logs"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"name":"stderr","output_type":"stream","text":["[I 2024-02-19 19:01:36,909] Trial 0 finished with value: 0.6027135848999023 and parameters: {'learning_rate': 0.0004025111363668074, 'num_train_epochs': 8, 'per_device_train_batch_size': 32, 'warmup_steps': 3}. Best is trial 0 with value: 0.6027135848999023.\n"]},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"8d7ed437bb30461db50fd93c2f619150","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='Waiting for wandb.init()...\\r'), FloatProgress(value=0.011112901077528175, max=1.0…"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Tracking run with wandb version 0.16.3"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Run data is saved locally in /home/iot/ITI110/poc-playground/Final project/wandb/run-20240219_190136-zbvi8cl0"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Syncing run thriving-fireworks-23 to Weights & Biases (docs)
"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View project at https://wandb.ai/szehanz/Education-Chatbot-Optimization"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run at https://wandb.ai/szehanz/Education-Chatbot-Optimization/runs/zbvi8cl0"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"76ef17e7b1bc40cfac453df2d5f9979b","version_major":2,"version_minor":0},"text/plain":["Map: 0%| | 0/448 [00:00\n"," \n"," \n"," [140/224 14:09 < 08:37, 0.16 it/s, Epoch 5/8]\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
StepTraining LossValidation Loss
102.3503001.578861
201.2266000.919854
301.0033000.858959
400.7369000.683791
500.6392000.672153
600.5742000.652091
700.5483000.631915
800.5296000.603841
900.4797000.605569
1000.4977000.599202
1100.4849000.598301
1200.4890000.638032
1300.4359000.633226
1400.4829000.605198

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","

\n"," \n"," \n"," [7/7 00:06]\n","
\n"," "],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='0.006 MB of 0.034 MB uploaded\\r'), FloatProgress(value=0.17041999774800135, max=1.…"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","

Run history:


eval/loss█▃▃▂▂▁▁▁▁▁▁▁▁▁▁
eval/runtime▁▄▅▅▆▆█▆▆▇▆▆█▅▅
eval/samples_per_second█▅▄▄▃▃▁▃▃▂▃▃▁▄▄
eval/steps_per_second█▅▄▅▃▄▂▃▄▂▃▃▁▄▄
eval_loss
train/epoch▁▁▂▂▂▂▃▃▃▃▄▄▄▄▅▅▅▅▆▆▆▆▇▇▇▇████
train/global_step▁▁▂▂▂▂▃▃▃▃▄▄▄▄▅▅▅▅▆▆▆▆▇▇▇▇█████
train/learning_rate█▇▇▆▆▅▅▄▄▃▃▂▂▁
train/loss█▄▃▂▂▂▁▁▁▁▁▁▁▁
train/total_flos
train/train_loss
train/train_runtime
train/train_samples_per_second
train/train_steps_per_second

Run summary:


eval/loss0.5983
eval/runtime7.0249
eval/samples_per_second7.972
eval/steps_per_second0.996
eval_loss0.5983
train/epoch5.0
train/global_step140
train/learning_rate0.00012
train/loss0.4829
train/total_flos2170063307145216.0
train/train_loss0.74847
train/train_runtime856.9078
train/train_samples_per_second4.182
train/train_steps_per_second0.261

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run thriving-fireworks-23 at: https://wandb.ai/szehanz/Education-Chatbot-Optimization/runs/zbvi8cl0
Synced 5 W&B file(s), 0 media file(s), 0 artifact file(s) and 0 other file(s)"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Find logs at: ./wandb/run-20240219_190136-zbvi8cl0/logs"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"name":"stderr","output_type":"stream","text":["[I 2024-02-19 19:16:12,165] Trial 1 finished with value: 0.5983005166053772 and parameters: {'learning_rate': 0.0003028497239265799, 'num_train_epochs': 8, 'per_device_train_batch_size': 16, 'warmup_steps': 5}. Best is trial 1 with value: 0.5983005166053772.\n"]},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"532aab0877da4d6b86a40ad31df51c38","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='Waiting for wandb.init()...\\r'), FloatProgress(value=0.011113190833323945, max=1.0…"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Tracking run with wandb version 0.16.3"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Run data is saved locally in /home/iot/ITI110/poc-playground/Final project/wandb/run-20240219_191612-pzfniief"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Syncing run dazzling-dragon-24 to Weights & Biases (docs)
"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View project at https://wandb.ai/szehanz/Education-Chatbot-Optimization"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run at https://wandb.ai/szehanz/Education-Chatbot-Optimization/runs/pzfniief"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","
\n"," \n"," \n"," [110/168 11:08 < 05:59, 0.16 it/s, Epoch 3/6]\n","
\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
StepTraining LossValidation Loss
102.2191001.546782
201.1499000.904034
300.9597000.810808
400.7054000.680841
500.6270000.652340
600.5563000.626374
700.5329000.629949
800.5229000.589803
900.4749000.596531
1000.4869000.592761
1100.4727000.596740

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","

\n"," \n"," \n"," [7/7 00:06]\n","
\n"," "],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='0.034 MB of 0.034 MB uploaded\\r'), FloatProgress(value=1.0, max=1.0)))"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","

Run history:


eval/loss█▃▃▂▁▁▁▁▁▁▁▁
eval/runtime▁▆▇█▇▅▇▇▆▄▇▆
eval/samples_per_second█▃▂▁▂▄▂▃▃▅▂▃
eval/steps_per_second█▃▂▁▂▄▂▂▃▅▂▃
eval_loss
train/epoch▁▁▂▂▂▂▃▃▄▄▄▄▅▅▆▆▇▇▇▇████
train/global_step▁▁▂▂▂▂▃▃▄▄▅▅▅▅▆▆▇▇▇▇█████
train/learning_rate█▇▇▆▅▄▄▃▂▂▁
train/loss█▄▃▂▂▁▁▁▁▁▁
train/total_flos
train/train_loss
train/train_runtime
train/train_samples_per_second
train/train_steps_per_second

Run summary:


eval/loss0.5898
eval/runtime7.0266
eval/samples_per_second7.97
eval/steps_per_second0.996
eval_loss0.5898
train/epoch3.93
train/global_step110
train/learning_rate0.00014
train/loss0.4727
train/total_flos1713943443406848.0
train/train_loss0.79161
train/train_runtime675.7172
train/train_samples_per_second3.978
train/train_steps_per_second0.249

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run dazzling-dragon-24 at: https://wandb.ai/szehanz/Education-Chatbot-Optimization/runs/pzfniief
Synced 5 W&B file(s), 0 media file(s), 0 artifact file(s) and 0 other file(s)"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Find logs at: ./wandb/run-20240219_191612-pzfniief/logs"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"name":"stderr","output_type":"stream","text":["[I 2024-02-19 19:27:45,486] Trial 2 finished with value: 0.5898026823997498 and parameters: {'learning_rate': 0.00040925708738231623, 'num_train_epochs': 6, 'per_device_train_batch_size': 16, 'warmup_steps': 4}. Best is trial 2 with value: 0.5898026823997498.\n"]},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"edd5a710ce3c41a6a72989df0b9696ee","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='Waiting for wandb.init()...\\r'), FloatProgress(value=0.011113297299986395, max=1.0…"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Tracking run with wandb version 0.16.3"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Run data is saved locally in /home/iot/ITI110/poc-playground/Final project/wandb/run-20240219_192745-srz53111"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Syncing run legendary-firecracker-25 to Weights & Biases (docs)
"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View project at https://wandb.ai/szehanz/Education-Chatbot-Optimization"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run at https://wandb.ai/szehanz/Education-Chatbot-Optimization/runs/srz53111"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","
\n"," \n"," \n"," [112/112 20:27, Epoch 8/8]\n","
\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
StepTraining LossValidation Loss
102.3289001.627960
201.3859000.988623
300.9051000.797488
400.7365000.737958
500.6112000.660954
600.5356000.659686
700.5452000.619212
800.4871000.617715
900.4685000.613847
1000.4590000.611387
1100.4414000.615416

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","

\n"," \n"," \n"," [7/7 00:06]\n","
\n"," "],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='0.006 MB of 0.034 MB uploaded\\r'), FloatProgress(value=0.17041103603603602, max=1.…"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","

Run history:


eval/loss█▄▂▂▁▁▁▁▁▁▁▁
eval/runtime▁▅▃▅▇▄▅▄▅█▆▂
eval/samples_per_second█▄▆▃▂▅▃▅▄▁▃▇
eval/steps_per_second█▄▅▄▂▅▄▅▄▁▃▆
eval_loss
train/epoch▁▁▂▂▂▂▃▃▄▄▄▄▅▅▆▆▆▆▇▇████
train/global_step▁▁▂▂▂▂▃▃▄▄▄▄▅▅▆▆▆▆▇▇█████
train/learning_rate█▇▇▆▅▄▄▃▂▂▁
train/loss█▅▃▂▂▁▁▁▁▁▁
train/total_flos
train/train_loss
train/train_runtime
train/train_samples_per_second
train/train_steps_per_second

Run summary:


eval/loss0.61139
eval/runtime7.018
eval/samples_per_second7.98
eval/steps_per_second0.997
eval_loss0.61139
train/epoch8.0
train/global_step112
train/learning_rate0.0
train/loss0.4414
train/total_flos3887818337157120.0
train/train_loss0.80241
train/train_runtime1240.3127
train/train_samples_per_second2.89
train/train_steps_per_second0.09

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run legendary-firecracker-25 at: https://wandb.ai/szehanz/Education-Chatbot-Optimization/runs/srz53111
Synced 5 W&B file(s), 0 media file(s), 0 artifact file(s) and 0 other file(s)"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Find logs at: ./wandb/run-20240219_192745-srz53111/logs"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"name":"stderr","output_type":"stream","text":["[I 2024-02-19 19:48:44,337] Trial 3 finished with value: 0.6113868951797485 and parameters: {'learning_rate': 0.00021804269178716187, 'num_train_epochs': 8, 'per_device_train_batch_size': 32, 'warmup_steps': 3}. Best is trial 2 with value: 0.5898026823997498.\n"]},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"d19268ffc4064e02bd0a33b8b30bfc2b","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='Waiting for wandb.init()...\\r'), FloatProgress(value=0.011113139222207894, max=1.0…"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Tracking run with wandb version 0.16.3"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Run data is saved locally in /home/iot/ITI110/poc-playground/Final project/wandb/run-20240219_194844-o101oodx"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Syncing run abundant-wonton-26 to Weights & Biases (docs)
"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View project at https://wandb.ai/szehanz/Education-Chatbot-Optimization"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run at https://wandb.ai/szehanz/Education-Chatbot-Optimization/runs/o101oodx"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","
\n"," \n"," \n"," [140/224 14:08 < 08:36, 0.16 it/s, Epoch 5/8]\n","
\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
StepTraining LossValidation Loss
102.3105001.594241
201.2521000.910354
301.0110000.863987
400.7431000.698877
500.6471000.673689
600.5749000.651653
700.5519000.632135
800.5292000.602036
900.4820000.604638
1000.4989000.598188
1100.4870000.596326
1200.4891000.638259
1300.4361000.628063
1400.4825000.601444

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","

\n"," \n"," \n"," [7/7 00:06]\n","
\n"," "],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='0.006 MB of 0.034 MB uploaded\\r'), FloatProgress(value=0.17057929403816924, max=1.…"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","

Run history:


eval/loss█▃▃▂▂▁▁▁▁▁▁▁▁▁▁
eval/runtime▁▄▄▅▅▇█▆▅▇▆▅▆▅▂
eval/samples_per_second█▅▅▄▄▂▁▃▄▂▃▄▃▄▇
eval/steps_per_second█▅▅▄▄▂▁▂▄▂▃▄▃▄▇
eval_loss
train/epoch▁▁▂▂▂▂▃▃▃▃▄▄▄▄▅▅▅▅▆▆▆▆▇▇▇▇████
train/global_step▁▁▂▂▂▂▃▃▃▃▄▄▄▄▅▅▅▅▆▆▆▆▇▇▇▇█████
train/learning_rate█▇▇▆▆▅▅▄▄▃▃▂▂▁
train/loss█▄▃▂▂▂▁▁▁▁▁▁▁▁
train/total_flos
train/train_loss
train/train_runtime
train/train_samples_per_second
train/train_steps_per_second

Run summary:


eval/loss0.59633
eval/runtime6.9881
eval/samples_per_second8.014
eval/steps_per_second1.002
eval_loss0.59633
train/epoch5.0
train/global_step140
train/learning_rate0.00012
train/loss0.4825
train/total_flos2170063307145216.0
train/train_loss0.74968
train/train_runtime855.8976
train/train_samples_per_second4.187
train/train_steps_per_second0.262

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run abundant-wonton-26 at: https://wandb.ai/szehanz/Education-Chatbot-Optimization/runs/o101oodx
Synced 5 W&B file(s), 0 media file(s), 0 artifact file(s) and 0 other file(s)"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Find logs at: ./wandb/run-20240219_194844-o101oodx/logs"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"name":"stderr","output_type":"stream","text":["[I 2024-02-19 20:03:18,557] Trial 4 finished with value: 0.5963263511657715 and parameters: {'learning_rate': 0.0003062471523433562, 'num_train_epochs': 8, 'per_device_train_batch_size': 16, 'warmup_steps': 4}. Best is trial 2 with value: 0.5898026823997498.\n"]},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"c6b42332b56944d189e15ca4507bb147","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='Waiting for wandb.init()...\\r'), FloatProgress(value=0.011113268544431777, max=1.0…"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Tracking run with wandb version 0.16.3"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Run data is saved locally in /home/iot/ITI110/poc-playground/Final project/wandb/run-20240219_200318-1kupsvst"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Syncing run bright-pig-27 to Weights & Biases (docs)
"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View project at https://wandb.ai/szehanz/Education-Chatbot-Optimization"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run at https://wandb.ai/szehanz/Education-Chatbot-Optimization/runs/1kupsvst"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","
\n"," \n"," \n"," [140/168 14:08 < 02:52, 0.16 it/s, Epoch 5/6]\n","
\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
StepTraining LossValidation Loss
102.3100001.605123
201.2329000.919273
300.9905000.866596
400.7240000.680403
500.6344000.667967
600.5698000.646463
700.5448000.631393
800.5269000.594657
900.4735000.601250
1000.4905000.598757
1100.4788000.592457
1200.4823000.626896
1300.4265000.625595
1400.4697000.604543

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","

\n"," \n"," \n"," [7/7 00:06]\n","
\n"," "],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='0.006 MB of 0.023 MB uploaded\\r'), FloatProgress(value=0.25586993243243245, max=1.…"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","

Run history:


eval/loss█▃▃▂▂▁▁▁▁▁▁▁▁▁▁
eval/runtime▁▅▇▄▅▆▄▇▆██▇█▅▃
eval/samples_per_second█▄▂▄▄▃▅▂▃▁▁▂▁▄▆
eval/steps_per_second█▃▂▄▃▂▅▂▂▁▁▁▁▄▅
eval_loss
train/epoch▁▁▂▂▂▂▃▃▃▃▄▄▄▄▅▅▅▅▆▆▆▆▇▇▇▇████
train/global_step▁▁▂▂▂▂▃▃▃▃▄▄▄▄▅▅▅▅▆▆▆▆▇▇▇▇█████
train/learning_rate█▇▇▆▆▅▅▄▄▃▃▂▂▁
train/loss█▄▃▂▂▂▁▁▁▁▁▁▁▁
train/total_flos
train/train_loss
train/train_runtime
train/train_samples_per_second
train/train_steps_per_second

Run summary:


eval/loss0.59246
eval/runtime6.9975
eval/samples_per_second8.003
eval/steps_per_second1.0
eval_loss0.59246
train/epoch5.0
train/global_step140
train/learning_rate6e-05
train/loss0.4697
train/total_flos2170063307145216.0
train/train_loss0.73962
train/train_runtime855.0423
train/train_samples_per_second3.144
train/train_steps_per_second0.196

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run bright-pig-27 at: https://wandb.ai/szehanz/Education-Chatbot-Optimization/runs/1kupsvst
Synced 5 W&B file(s), 0 media file(s), 0 artifact file(s) and 0 other file(s)"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Find logs at: ./wandb/run-20240219_200318-1kupsvst/logs"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"name":"stderr","output_type":"stream","text":["[I 2024-02-19 20:17:52,091] Trial 5 finished with value: 0.5924574732780457 and parameters: {'learning_rate': 0.0003549720190405869, 'num_train_epochs': 6, 'per_device_train_batch_size': 16, 'warmup_steps': 5}. Best is trial 2 with value: 0.5898026823997498.\n"]},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"63a4222d599e4da4890c36a23ae52a3a","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='Waiting for wandb.init()...\\r'), FloatProgress(value=0.011112871322095291, max=1.0…"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Tracking run with wandb version 0.16.3"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Run data is saved locally in /home/iot/ITI110/poc-playground/Final project/wandb/run-20240219_201752-hvk8kkmo"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Syncing run red-chrysanthemum-28 to Weights & Biases (docs)
"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View project at https://wandb.ai/szehanz/Education-Chatbot-Optimization"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run at https://wandb.ai/szehanz/Education-Chatbot-Optimization/runs/hvk8kkmo"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","
\n"," \n"," \n"," [84/84 15:16, Epoch 6/6]\n","
\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
StepTraining LossValidation Loss
102.3320001.561446
201.2488000.888817
300.8482000.778326
400.6779000.683840
500.5710000.657031
600.5104000.637265
700.5219000.623751
800.4703000.618002

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","

\n"," \n"," \n"," [7/7 00:06]\n","
\n"," "],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='0.022 MB of 0.034 MB uploaded\\r'), FloatProgress(value=0.6506108890265188, max=1.0…"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","

Run history:


eval/loss█▃▂▁▁▁▁▁▁
eval/runtime▁▂▃▁▇▅█▇▇
eval/samples_per_second█▇▆█▂▄▁▂▂
eval/steps_per_second█▆▆█▃▄▁▃▃
eval_loss
train/epoch▁▁▂▂▃▃▄▄▅▅▆▆▇▇████
train/global_step▁▁▂▂▃▃▄▄▅▅▆▆▇▇█████
train/learning_rate█▇▆▅▄▃▂▁
train/loss█▄▂▂▁▁▁▁
train/total_flos
train/train_loss
train/train_runtime
train/train_samples_per_second
train/train_steps_per_second

Run summary:


eval/loss0.618
eval/runtime7.029
eval/samples_per_second7.967
eval/steps_per_second0.996
eval_loss0.618
train/epoch6.0
train/global_step84
train/learning_rate2e-05
train/loss0.4703
train/total_flos2927298512683008.0
train/train_loss0.87718
train/train_runtime928.7795
train/train_samples_per_second2.894
train/train_steps_per_second0.09

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run red-chrysanthemum-28 at: https://wandb.ai/szehanz/Education-Chatbot-Optimization/runs/hvk8kkmo
Synced 5 W&B file(s), 0 media file(s), 0 artifact file(s) and 0 other file(s)"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Find logs at: ./wandb/run-20240219_201752-hvk8kkmo/logs"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"name":"stderr","output_type":"stream","text":["[I 2024-02-19 20:33:38,930] Trial 6 finished with value: 0.6180019974708557 and parameters: {'learning_rate': 0.00029993812811393003, 'num_train_epochs': 6, 'per_device_train_batch_size': 32, 'warmup_steps': 5}. Best is trial 2 with value: 0.5898026823997498.\n"]},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"5c842ce8d6714182920a1750adb3d273","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='Waiting for wandb.init()...\\r'), FloatProgress(value=0.011113082922141379, max=1.0…"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Tracking run with wandb version 0.16.3"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Run data is saved locally in /home/iot/ITI110/poc-playground/Final project/wandb/run-20240219_203338-u9an5iy8"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Syncing run red-wish-29 to Weights & Biases (docs)
"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View project at https://wandb.ai/szehanz/Education-Chatbot-Optimization"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run at https://wandb.ai/szehanz/Education-Chatbot-Optimization/runs/u9an5iy8"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","
\n"," \n"," \n"," [56/56 10:07, Epoch 4/4]\n","
\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
StepTraining LossValidation Loss
102.0822001.251068
201.0079000.816748
300.7501000.686710
400.6008000.673636
500.5395000.642782

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","

\n"," \n"," \n"," [7/7 00:06]\n","
\n"," "],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='0.034 MB of 0.034 MB uploaded\\r'), FloatProgress(value=1.0, max=1.0)))"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","

Run history:


eval/loss█▃▂▁▁▁
eval/runtime▁▆█▄▅▃
eval/samples_per_second█▃▁▄▄▆
eval/steps_per_second█▃▁▅▅▆
eval_loss
train/epoch▁▁▃▃▄▄▆▆▇▇██
train/global_step▁▁▃▃▄▄▆▆▇▇███
train/learning_rate█▆▅▃▁
train/loss█▃▂▁▁
train/total_flos
train/train_loss
train/train_runtime
train/train_samples_per_second
train/train_steps_per_second

Run summary:


eval/loss0.64278
eval/runtime7.0018
eval/samples_per_second7.998
eval/steps_per_second1.0
eval_loss0.64278
train/epoch4.0
train/global_step56
train/learning_rate6e-05
train/loss0.5395
train/total_flos1969319745945600.0
train/train_loss0.94465
train/train_runtime619.7752
train/train_samples_per_second2.891
train/train_steps_per_second0.09

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run red-wish-29 at: https://wandb.ai/szehanz/Education-Chatbot-Optimization/runs/u9an5iy8
Synced 5 W&B file(s), 0 media file(s), 0 artifact file(s) and 0 other file(s)"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Find logs at: ./wandb/run-20240219_203338-u9an5iy8/logs"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"name":"stderr","output_type":"stream","text":["[I 2024-02-19 20:44:20,345] Trial 7 finished with value: 0.6427821516990662 and parameters: {'learning_rate': 0.0004921796551065912, 'num_train_epochs': 4, 'per_device_train_batch_size': 32, 'warmup_steps': 3}. Best is trial 2 with value: 0.5898026823997498.\n"]},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"2cfb2293dad348b985a23b767d53ace8","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='Waiting for wandb.init()...\\r'), FloatProgress(value=0.011113233355637122, max=1.0…"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Tracking run with wandb version 0.16.3"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Run data is saved locally in /home/iot/ITI110/poc-playground/Final project/wandb/run-20240219_204420-k8hrtsr1"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Syncing run sparkling-peony-30 to Weights & Biases (docs)
"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View project at https://wandb.ai/szehanz/Education-Chatbot-Optimization"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run at https://wandb.ai/szehanz/Education-Chatbot-Optimization/runs/k8hrtsr1"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","
\n"," \n"," \n"," [56/56 10:07, Epoch 4/4]\n","
\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
StepTraining LossValidation Loss
102.3321001.553420
201.2477000.886406
300.8577000.771762
400.7055000.712279
500.5950000.679550

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","

\n"," \n"," \n"," [7/7 00:06]\n","
\n"," "],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='0.006 MB of 0.034 MB uploaded\\r'), FloatProgress(value=0.170631457447707, max=1.0)…"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","

Run history:


eval/loss█▃▂▁▁▁
eval/runtime▁▃▆▅█▄
eval/samples_per_second█▆▃▄▁▅
eval/steps_per_second█▆▃▄▁▅
eval_loss
train/epoch▁▁▃▃▄▄▆▆▇▇██
train/global_step▁▁▃▃▄▄▆▆▇▇███
train/learning_rate█▆▅▃▁
train/loss█▄▂▁▁
train/total_flos
train/train_loss
train/train_runtime
train/train_samples_per_second
train/train_steps_per_second

Run summary:


eval/loss0.67955
eval/runtime7.0075
eval/samples_per_second7.991
eval/steps_per_second0.999
eval_loss0.67955
train/epoch4.0
train/global_step56
train/learning_rate4e-05
train/loss0.595
train/total_flos1969319745945600.0
train/train_loss1.08562
train/train_runtime620.2921
train/train_samples_per_second2.889
train/train_steps_per_second0.09

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run sparkling-peony-30 at: https://wandb.ai/szehanz/Education-Chatbot-Optimization/runs/k8hrtsr1
Synced 5 W&B file(s), 0 media file(s), 0 artifact file(s) and 0 other file(s)"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Find logs at: ./wandb/run-20240219_204420-k8hrtsr1/logs"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"name":"stderr","output_type":"stream","text":["[I 2024-02-19 20:54:59,931] Trial 8 finished with value: 0.679550051689148 and parameters: {'learning_rate': 0.0002997058981392026, 'num_train_epochs': 4, 'per_device_train_batch_size': 32, 'warmup_steps': 5}. Best is trial 2 with value: 0.5898026823997498.\n"]},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"15cedcbf21794e1895357c52edcbef03","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='Waiting for wandb.init()...\\r'), FloatProgress(value=0.01111316335575086, max=1.0)…"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Tracking run with wandb version 0.16.3"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Run data is saved locally in /home/iot/ITI110/poc-playground/Final project/wandb/run-20240219_205459-iosmgelq"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Syncing run abundant-chrysanthemum-31 to Weights & Biases (docs)
"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View project at https://wandb.ai/szehanz/Education-Chatbot-Optimization"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run at https://wandb.ai/szehanz/Education-Chatbot-Optimization/runs/iosmgelq"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","
\n"," \n"," \n"," [110/112 11:07 < 00:12, 0.16 it/s, Epoch 3/4]\n","
\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
StepTraining LossValidation Loss
102.3623001.603512
201.2776000.896908
301.0284000.843322
400.7588000.708671
500.6560000.693394
600.5846000.657635
700.5574000.658206
800.5304000.600657
900.4693000.609772
1000.4833000.610230
1100.4804000.604136

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","

\n"," \n"," \n"," [7/7 00:06]\n","
\n"," "],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='0.012 MB of 0.034 MB uploaded\\r'), FloatProgress(value=0.3512258282433079, max=1.0…"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","

Run history:


eval/loss█▃▃▂▂▁▁▁▁▁▁▁
eval/runtime▁▆▅▆█▇██▇▇▆▅
eval/samples_per_second█▃▃▃▁▂▁▁▂▂▃▄
eval/steps_per_second█▃▄▃▁▂▂▂▂▂▃▄
eval_loss
train/epoch▁▁▂▂▂▂▃▃▄▄▄▄▅▅▆▆▇▇▇▇████
train/global_step▁▁▂▂▂▂▃▃▄▄▅▅▅▅▆▆▇▇▇▇█████
train/learning_rate█▇▇▆▅▅▄▃▂▂▁
train/loss█▄▃▂▂▁▁▁▁▁▁
train/total_flos
train/train_loss
train/train_runtime
train/train_samples_per_second
train/train_steps_per_second

Run summary:


eval/loss0.60066
eval/runtime6.9977
eval/samples_per_second8.003
eval/steps_per_second1.0
eval_loss0.60066
train/epoch3.93
train/global_step110
train/learning_rate1e-05
train/loss0.4804
train/total_flos1713943443406848.0
train/train_loss0.83532
train/train_runtime674.6173
train/train_samples_per_second2.656
train/train_steps_per_second0.166

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run abundant-chrysanthemum-31 at: https://wandb.ai/szehanz/Education-Chatbot-Optimization/runs/iosmgelq
Synced 5 W&B file(s), 0 media file(s), 0 artifact file(s) and 0 other file(s)"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Find logs at: ./wandb/run-20240219_205459-iosmgelq/logs"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"name":"stderr","output_type":"stream","text":["[I 2024-02-19 21:06:32,382] Trial 9 finished with value: 0.6006569266319275 and parameters: {'learning_rate': 0.0002981933140416747, 'num_train_epochs': 4, 'per_device_train_batch_size': 16, 'warmup_steps': 5}. Best is trial 2 with value: 0.5898026823997498.\n"]}],"source":["def objective(trial):\n","\n"," # Define hyperparameters outside the wandb.init to use them later in the code\n"," learning_rate = trial.suggest_float('learning_rate', 2e-4, 5e-4, log=True)\n"," num_train_epochs = trial.suggest_categorical('num_train_epochs', [4, 6, 8])\n"," per_device_train_batch_size = trial.suggest_categorical('per_device_train_batch_size', [16, 32])\n"," warmup_steps = trial.suggest_int('warmup_steps', 3, 5)\n","\n"," wandb.init(\n"," project=\"Education-Chatbot-Optimization\",\n"," entity=\"szehanz\",\n"," group=\"optuna-optimization\",\n"," job_type=\"hyperparameter_search\",\n"," reinit=True,\n"," config={\n"," \"learning_rate\": learning_rate,\n"," \"num_train_epochs\": num_train_epochs,\n"," \"per_device_train_batch_size\": per_device_train_batch_size,\n"," \"warmup_steps\": warmup_steps\n"," }\n"," )\n","\n"," # Format the current date and time\n"," current_time = datetime.now().strftime(\"%Y%m%d-%H%M%S\")\n"," output_dir = f\"train_out_dir_{current_time}\" # Append the current date and time to the directory name\n","\n"," # Create the output directory\n"," os.makedirs(output_dir, exist_ok=True) # Using exist_ok=True to avoid error if the directory already exists\n","\n","\n"," # Define TrainingArguments with the suggested hyperparameters\n"," training_args = TrainingArguments(\n"," output_dir=output_dir, # Directory for saving output models and checkpoints.\n"," save_strategy=\"steps\", # Save model checkpoints at regular step intervals.\n"," save_steps=10, # Save model checkpoints every 10 steps.\n"," learning_rate=learning_rate, # Initial learning rate for the optimizer.\n"," per_device_train_batch_size=per_device_train_batch_size, # Batch size per device during training.\n"," per_device_eval_batch_size=8, # Batch size per device during evaluation.\n"," num_train_epochs=num_train_epochs, # Total number of training epochs.\n"," warmup_steps=warmup_steps, # Number of warmup steps for the learning rate scheduler.\n"," evaluation_strategy='steps', # Perform evaluation at regular step intervals.\n"," eval_steps=10, # Perform evaluation every 10 steps.\n"," logging_steps=10,\n"," optim='paged_adamw_8bit', # Specifies the optimizer to use.\n"," lr_scheduler_type='linear', # Type of learning rate scheduler.\n"," gradient_accumulation_steps=1, # Number of steps to accumulate gradients before performing an update.\n"," load_best_model_at_end=True, # Load the best model based on evaluation metric at the end of training.\n"," report_to='wandb', # Disable automatic integrations with external reporting tools.\n"," )\n","\n","\n"," # Initialize the Trainer with early stopping callback inside the objective function\n"," trainer = SFTTrainer(\n"," model=model, # Ensure a function or a mechanism to initialize your model\n"," train_dataset=train_dataset,\n"," eval_dataset=val_dataset,\n"," peft_config=peft_config,\n"," dataset_text_field=\"instruction\",\n"," tokenizer=tokenizer,\n"," args=training_args,\n"," max_seq_length=4096,\n"," callbacks=[EarlyStoppingCallback(early_stopping_patience=3)],\n"," )\n","\n"," # Train the model and evaluate within the objective function\n"," trainer.train()\n"," eval_result = trainer.evaluate()\n","\n"," # Log the primary metric to WandB\n"," wandb.log({\"eval_loss\": eval_result[\"eval_loss\"]})\n","\n"," # Finish the WandB run for this trial\n"," wandb.finish()\n","\n"," # Return the metric to be optimized\n"," return eval_result[\"eval_loss\"]\n","\n","\n","# Run the optimization\n","study = optuna.create_study(direction='minimize')\n","study.optimize(objective, n_trials=10)"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"fmdlQTVSHT8e","outputId":"a2935a56-5cad-4dbc-c55c-53b3b5ad1368"},"outputs":[{"name":"stdout","output_type":"stream","text":["Best trial:\n"," Value: 0.5898026823997498\n"," Params: \n"," learning_rate: 0.00040925708738231623\n"," num_train_epochs: 6\n"," per_device_train_batch_size: 16\n"," warmup_steps: 4\n"]}],"source":["# Best trial results\n","print(\"Best trial:\")\n","print(f\" Value: {study.best_trial.value}\")\n","print(\" Params: \")\n","for key, value in study.best_trial.params.items():\n"," print(f\" {key}: {value}\")"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"mKlA_ahVHT8e","outputId":"6365a674-b011-48bb-94ea-7aa9d657d323","colab":{"referenced_widgets":[""]}},"outputs":[{"data":{"text/html":["Tracking run with wandb version 0.16.3"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Run data is saved locally in /home/iot/ITI110/poc-playground/Final project/wandb/run-20240219_210737-q16rpssr"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Syncing run fortuitous-fish-3 to Weights & Biases (docs)
"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View project at https://wandb.ai/szehanz/huggingface"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run at https://wandb.ai/szehanz/huggingface/runs/q16rpssr"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","
\n"," \n"," \n"," [168/168 16:51, Epoch 6/6]\n","
\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
StepTraining LossValidation Loss
102.2184001.534913
201.1365000.895845
300.9556000.814537
400.7074000.680818
500.6297000.656619
600.5569000.624320
700.5321000.632881
800.5240000.591038
900.4762000.599967
1000.4878000.594422
1100.4756000.595004
1200.4787000.627798
1300.4267000.623343
1400.4712000.604500
1500.4208000.611532
1600.4409000.603333

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"","version_major":2,"version_minor":0},"text/plain":["VBox(children=(Label(value='0.012 MB of 0.034 MB uploaded\\r'), FloatProgress(value=0.35244443189199876, max=1.…"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["\n","

Run history:


eval/loss█▃▃▂▁▁▁▁▁▁▁▁▁▁▁▁
eval/runtime▁▇▅▆▆▇▇█▇██▇█▇▇█
eval/samples_per_second█▂▄▃▃▂▂▁▂▁▁▂▁▂▂▁
eval/steps_per_second█▂▄▃▃▂▂▁▂▁▁▂▁▂▂▁
train/epoch▁▁▁▁▂▂▂▂▃▃▃▃▄▄▄▄▅▅▅▅▅▅▆▆▆▆▇▇▇▇███
train/global_step▁▁▁▁▂▂▂▂▃▃▃▃▄▄▄▄▅▅▅▅▅▅▆▆▆▆▇▇▇▇███
train/learning_rate██▇▇▆▆▅▅▄▄▃▃▂▂▁▁
train/loss█▄▃▂▂▂▁▁▁▁▁▁▁▁▁▁
train/total_flos
train/train_loss
train/train_runtime
train/train_samples_per_second
train/train_steps_per_second

Run summary:


eval/loss0.60333
eval/runtime7.0342
eval/samples_per_second7.961
eval/steps_per_second0.995
train/epoch6.0
train/global_step168
train/learning_rate2e-05
train/loss0.4409
train/total_flos2600137329082368.0
train/train_loss0.67181
train/train_runtime1023.9774
train/train_samples_per_second2.625
train/train_steps_per_second0.164

"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":[" View run fortuitous-fish-3 at: https://wandb.ai/szehanz/huggingface/runs/q16rpssr
Synced 5 W&B file(s), 0 media file(s), 0 artifact file(s) and 0 other file(s)"],"text/plain":[""]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["Find logs at: ./wandb/run-20240219_210737-q16rpssr/logs"],"text/plain":[""]},"metadata":{},"output_type":"display_data"}],"source":["# Use best hyperparameters from the study\n","best_trial = study.best_trial\n","\n","best_learning_rate = best_trial.params['learning_rate']\n","best_num_train_epochs = best_trial.params['num_train_epochs']\n","best_per_device_train_batch_size = best_trial.params['per_device_train_batch_size']\n","best_warmup_steps = best_trial.params['warmup_steps']\n","\n","\n","# Define TrainingArguments with the best hyperparameters for retraining\n","best_training_args = TrainingArguments(\n"," output_dir=\"best_train_out_dir\",\n"," save_strategy=\"steps\",\n"," save_steps=10,\n"," learning_rate=best_learning_rate,\n"," per_device_train_batch_size=best_per_device_train_batch_size,\n"," per_device_eval_batch_size=8,\n"," num_train_epochs=best_num_train_epochs,\n"," warmup_steps=best_warmup_steps,\n"," evaluation_strategy='steps',\n"," eval_steps=10,\n"," logging_steps=10,\n"," optim='paged_adamw_8bit',\n"," lr_scheduler_type='linear',\n"," gradient_accumulation_steps=1,\n"," load_best_model_at_end=True,\n"," report_to='wandb',\n",")\n","\n","# Reinitialize the Trainer with the best hyperparameters\n","best_trainer = SFTTrainer(\n"," model=model,\n"," train_dataset=train_dataset,\n"," eval_dataset=val_dataset,\n"," peft_config=peft_config,\n"," dataset_text_field=\"instruction\",\n"," tokenizer=tokenizer,\n"," args=best_training_args,\n"," max_seq_length=4096,\n",")\n","\n","# Retrain the model with the best hyperparameters\n","best_trainer.train()\n","\n","\n","# Save trained model\n","best_trainer.model.save_pretrained(new_model)\n","\n","# Finish the WandB run for this trial\n","wandb.finish()"]},{"cell_type":"markdown","metadata":{"id":"_g0fB7P9s0ol"},"source":["Merging the base model with the trained adapter."]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"referenced_widgets":["aafec7a64d034e05b1aaf17bb153136b","3a01a0a298124d83a1e4fc74bcae457f"]},"id":"QQn30cRtAZ-P","outputId":"6508be7b-0a96-494e-bd33-d35c5c331f52"},"outputs":[{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"3a01a0a298124d83a1e4fc74bcae457f","version_major":2,"version_minor":0},"text/plain":["Loading checkpoint shards: 0%| | 0/3 [00:00 =4.35.2 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from -r llama.cpp/./requirements/requirements-convert.txt (line 3)) (4.37.2)\n","Requirement already satisfied: gguf>=0.1.0 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from -r llama.cpp/./requirements/requirements-convert.txt (line 4)) (0.6.0)\n","Requirement already satisfied: protobuf<5.0.0,>=4.21.0 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from -r llama.cpp/./requirements/requirements-convert.txt (line 5)) (4.25.2)\n","Requirement already satisfied: torch~=2.1.1 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from -r llama.cpp/./requirements/requirements-convert-hf-to-gguf.txt (line 2)) (2.1.2)\n","Requirement already satisfied: filelock in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from transformers<5.0.0,>=4.35.2->-r llama.cpp/./requirements/requirements-convert.txt (line 3)) (3.13.1)\n","Requirement already satisfied: huggingface-hub<1.0,>=0.19.3 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from transformers<5.0.0,>=4.35.2->-r llama.cpp/./requirements/requirements-convert.txt (line 3)) (0.19.4)\n","Requirement already satisfied: packaging>=20.0 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from transformers<5.0.0,>=4.35.2->-r llama.cpp/./requirements/requirements-convert.txt (line 3)) (23.2)\n","Requirement already satisfied: pyyaml>=5.1 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from transformers<5.0.0,>=4.35.2->-r llama.cpp/./requirements/requirements-convert.txt (line 3)) (6.0.1)\n","Requirement already satisfied: regex!=2019.12.17 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from transformers<5.0.0,>=4.35.2->-r llama.cpp/./requirements/requirements-convert.txt (line 3)) (2023.10.3)\n","Requirement already satisfied: requests in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from transformers<5.0.0,>=4.35.2->-r llama.cpp/./requirements/requirements-convert.txt (line 3)) (2.31.0)\n","Requirement already satisfied: tokenizers<0.19,>=0.14 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from transformers<5.0.0,>=4.35.2->-r llama.cpp/./requirements/requirements-convert.txt (line 3)) (0.15.1)\n","Requirement already satisfied: safetensors>=0.4.1 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from transformers<5.0.0,>=4.35.2->-r llama.cpp/./requirements/requirements-convert.txt (line 3)) (0.4.2)\n","Requirement already satisfied: tqdm>=4.27 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from transformers<5.0.0,>=4.35.2->-r llama.cpp/./requirements/requirements-convert.txt (line 3)) (4.66.1)\n","Requirement already satisfied: typing-extensions in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from torch~=2.1.1->-r llama.cpp/./requirements/requirements-convert-hf-to-gguf.txt (line 2)) (4.9.0)\n","Requirement already satisfied: sympy in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from torch~=2.1.1->-r llama.cpp/./requirements/requirements-convert-hf-to-gguf.txt (line 2)) (1.12)\n","Requirement already satisfied: networkx in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from torch~=2.1.1->-r llama.cpp/./requirements/requirements-convert-hf-to-gguf.txt (line 2)) (3.2.1)\n","Requirement already satisfied: jinja2 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from torch~=2.1.1->-r llama.cpp/./requirements/requirements-convert-hf-to-gguf.txt (line 2)) (3.1.3)\n","Requirement already satisfied: fsspec in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from torch~=2.1.1->-r llama.cpp/./requirements/requirements-convert-hf-to-gguf.txt (line 2)) (2023.10.0)\n","Requirement already satisfied: nvidia-cuda-nvrtc-cu12==12.1.105 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from torch~=2.1.1->-r llama.cpp/./requirements/requirements-convert-hf-to-gguf.txt (line 2)) (12.1.105)\n","Requirement already satisfied: nvidia-cuda-runtime-cu12==12.1.105 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from torch~=2.1.1->-r llama.cpp/./requirements/requirements-convert-hf-to-gguf.txt (line 2)) (12.1.105)\n","Requirement already satisfied: nvidia-cuda-cupti-cu12==12.1.105 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from torch~=2.1.1->-r llama.cpp/./requirements/requirements-convert-hf-to-gguf.txt (line 2)) (12.1.105)\n","Requirement already satisfied: nvidia-cudnn-cu12==8.9.2.26 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from torch~=2.1.1->-r llama.cpp/./requirements/requirements-convert-hf-to-gguf.txt (line 2)) (8.9.2.26)\n","Requirement already satisfied: nvidia-cublas-cu12==12.1.3.1 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from torch~=2.1.1->-r llama.cpp/./requirements/requirements-convert-hf-to-gguf.txt (line 2)) (12.1.3.1)\n","Requirement already satisfied: nvidia-cufft-cu12==11.0.2.54 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from torch~=2.1.1->-r llama.cpp/./requirements/requirements-convert-hf-to-gguf.txt (line 2)) (11.0.2.54)\n","Requirement already satisfied: nvidia-curand-cu12==10.3.2.106 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from torch~=2.1.1->-r llama.cpp/./requirements/requirements-convert-hf-to-gguf.txt (line 2)) (10.3.2.106)\n","Requirement already satisfied: nvidia-cusolver-cu12==11.4.5.107 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from torch~=2.1.1->-r llama.cpp/./requirements/requirements-convert-hf-to-gguf.txt (line 2)) (11.4.5.107)\n","Requirement already satisfied: nvidia-cusparse-cu12==12.1.0.106 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from torch~=2.1.1->-r llama.cpp/./requirements/requirements-convert-hf-to-gguf.txt (line 2)) (12.1.0.106)\n","Requirement already satisfied: nvidia-nccl-cu12==2.18.1 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from torch~=2.1.1->-r llama.cpp/./requirements/requirements-convert-hf-to-gguf.txt (line 2)) (2.18.1)\n","Requirement already satisfied: nvidia-nvtx-cu12==12.1.105 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from torch~=2.1.1->-r llama.cpp/./requirements/requirements-convert-hf-to-gguf.txt (line 2)) (12.1.105)\n","Requirement already satisfied: triton==2.1.0 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from torch~=2.1.1->-r llama.cpp/./requirements/requirements-convert-hf-to-gguf.txt (line 2)) (2.1.0)\n","Requirement already satisfied: nvidia-nvjitlink-cu12 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from nvidia-cusolver-cu12==11.4.5.107->torch~=2.1.1->-r llama.cpp/./requirements/requirements-convert-hf-to-gguf.txt (line 2)) (12.3.101)\n","Requirement already satisfied: MarkupSafe>=2.0 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from jinja2->torch~=2.1.1->-r llama.cpp/./requirements/requirements-convert-hf-to-gguf.txt (line 2)) (2.1.5)\n","Requirement already satisfied: charset-normalizer<4,>=2 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from requests->transformers<5.0.0,>=4.35.2->-r llama.cpp/./requirements/requirements-convert.txt (line 3)) (3.3.2)\n","Requirement already satisfied: idna<4,>=2.5 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from requests->transformers<5.0.0,>=4.35.2->-r llama.cpp/./requirements/requirements-convert.txt (line 3)) (3.6)\n","Requirement already satisfied: urllib3<3,>=1.21.1 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from requests->transformers<5.0.0,>=4.35.2->-r llama.cpp/./requirements/requirements-convert.txt (line 3)) (2.2.0)\n","Requirement already satisfied: certifi>=2017.4.17 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from requests->transformers<5.0.0,>=4.35.2->-r llama.cpp/./requirements/requirements-convert.txt (line 3)) (2024.2.2)\n","Requirement already satisfied: mpmath>=0.19 in /home/iot/miniconda3/envs/tensorflow2/lib/python3.11/site-packages (from sympy->torch~=2.1.1->-r llama.cpp/./requirements/requirements-convert-hf-to-gguf.txt (line 2)) (1.3.0)\n","Git LFS initialized.\n","Cloning into 'llama-2-7b-combined_datasets'...\n","remote: Enumerating objects: 18, done.\u001b[K\n","remote: Counting objects: 100% (15/15), done.\u001b[K\n","remote: Compressing objects: 100% (15/15), done.\u001b[K\n","remote: Total 18 (delta 1), reused 0 (delta 0), pack-reused 3\u001b[K\n","Unpacking objects: 100% (18/18), 483.97 KiB | 891.00 KiB/s, done.\n","Filtering content: 100% (4/4), 4.55 GiB | 5.10 MiB/s, done.\n","Encountered 2 file(s) that may not have been copied correctly on Windows:\n","\tmodel-00001-of-00003.safetensors\n","\tmodel-00002-of-00003.safetensors\n","\n","See: `git lfs help smudge` for more details.\n"]}],"source":["# Set up environment and download model for llama.cpp inference.\n","# 1. Define model ID and quantization methods.\n","# 2. Parse model name from MODEL_ID.\n","# 3. Install and build the llama.cpp library with GPU support.\n","# 4. Install Python dependencies from llama.cpp's requirements.\n","# 5. Initialize Git Large File Storage (LFS) for handling large files.\n","# 6. Clone the specified model repository from Hugging Face.\n","\n","\n","MODEL_ID = \"ssoh/llama-2-7b-combined_datasets\"\n","QUANTIZATION_METHODS = [\"q5_k_m\"]\n","MODEL_NAME = MODEL_ID.split('/')[-1]\n","\n","\n","# Install and prepare llama.cpp\n","!git clone https://github.com/ggerganov/llama.cpp\n","!cd llama.cpp && git pull && make clean && LLAMA_CUBLAS=1 make\n","!pip install -r llama.cpp/requirements.txt\n","\n","\n","# Initialize Git LFS for large models\n","!git lfs install\n","\n","\n","# Download the model from Hugging Face\n","!git clone https://huggingface.co/{MODEL_ID}"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"UkMoXHX2DOrO"},"outputs":[],"source":["# # Specify the model ID from which to load the tokenizer\n","# model_id = \"meta-llama/Llama-2-7b-chat-hf\"\n","\n","# # Load the tokenizer associated with the specified model ID\n","# tokenizer = AutoTokenizer.from_pretrained(model_id)\n","\n","# # Create a temporary directory to store all downloaded tokenizer files\n","# temp_save_directory = \"temp_tokenizer_files\"\n","# tokenizer.save_pretrained(temp_save_directory)\n","\n","# # Specify the directory where the tokenizer.model file will be saved permanently\n","# MODEL_NAME = \"llama-2-7b-mini-ibased\"\n","# save_directory = MODEL_NAME\n","\n","# # Create the save directory if it does not exist\n","# os.makedirs(save_directory, exist_ok=True)\n","\n","# # Define the specific filename of the tokenizer we want to retain\n","# tokenizer_filename = \"tokenizer.model\"\n","\n","# # Check for the existence of tokenizer.model in the temporary directory\n","# source_file = os.path.join(temp_save_directory, tokenizer_filename)\n","# destination_file = os.path.join(save_directory, tokenizer_filename)\n","\n","# # Copy the tokenizer.model file to the final directory, if it exists\n","# if os.path.exists(source_file):\n","# shutil.copy(source_file, destination_file)\n","# print(f\"tokenizer.model has been saved in {save_directory}\")\n","# else:\n","# print(\"No tokenizer.model file found in the downloaded tokenizer files.\")\n","\n","# # Remove the temporary directory to clean up unnecessary files\n","# shutil.rmtree(temp_save_directory)"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":159906,"status":"ok","timestamp":1707924525074,"user":{"displayName":"szehanz","userId":"16137883221268059572"},"user_tz":-480},"id":"fD24jJxq7t3k","outputId":"9f3bd35b-2232-4baa-be8a-3a8d9205570a"},"outputs":[{"name":"stdout","output_type":"stream","text":["Loading model file llama-2-7b-combined_datasets/model-00001-of-00003.safetensors\n","Loading model file llama-2-7b-combined_datasets/model-00001-of-00003.safetensors\n","Loading model file llama-2-7b-combined_datasets/model-00002-of-00003.safetensors\n","Loading model file llama-2-7b-combined_datasets/model-00003-of-00003.safetensors\n","params = Params(n_vocab=32000, n_embd=4096, n_layer=32, n_ctx=4096, n_ff=11008, n_head=32, n_head_kv=32, n_experts=None, n_experts_used=None, f_norm_eps=1e-05, rope_scaling_type=None, f_rope_freq_base=10000.0, f_rope_scale=None, n_orig_ctx=None, rope_finetuned=None, ftype=, path_model=PosixPath('llama-2-7b-combined_datasets'))\n","Found vocab files: {'tokenizer.model': PosixPath('llama-2-7b-combined_datasets/tokenizer.model'), 'vocab.json': None, 'tokenizer.json': PosixPath('llama-2-7b-combined_datasets/tokenizer.json')}\n","Loading vocab file 'llama-2-7b-combined_datasets/tokenizer.model', type 'spm'\n","Vocab info: \n","Special vocab info: \n","Permuting layer 0\n","Permuting layer 1\n","Permuting layer 2\n","Permuting layer 3\n","Permuting layer 4\n","Permuting layer 5\n","Permuting layer 6\n","Permuting layer 7\n","Permuting layer 8\n","Permuting layer 9\n","Permuting layer 10\n","Permuting layer 11\n","Permuting layer 12\n","Permuting layer 13\n","Permuting layer 14\n","Permuting layer 15\n","Permuting layer 16\n","Permuting layer 17\n","Permuting layer 18\n","Permuting layer 19\n","Permuting layer 20\n","Permuting layer 21\n","Permuting layer 22\n","Permuting layer 23\n","Permuting layer 24\n","Permuting layer 25\n","Permuting layer 26\n","Permuting layer 27\n","Permuting layer 28\n","Permuting layer 29\n","Permuting layer 30\n","Permuting layer 31\n","model.embed_tokens.weight -> token_embd.weight | F16 | [32000, 4096]\n","model.layers.0.input_layernorm.weight -> blk.0.attn_norm.weight | F16 | [4096]\n","model.layers.0.mlp.down_proj.weight -> blk.0.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.0.mlp.gate_proj.weight -> blk.0.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.0.mlp.up_proj.weight -> blk.0.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.0.post_attention_layernorm.weight -> blk.0.ffn_norm.weight | F16 | [4096]\n","model.layers.0.self_attn.k_proj.weight -> blk.0.attn_k.weight | F16 | [4096, 4096]\n","model.layers.0.self_attn.o_proj.weight -> blk.0.attn_output.weight | F16 | [4096, 4096]\n","model.layers.0.self_attn.q_proj.weight -> blk.0.attn_q.weight | F16 | [4096, 4096]\n","model.layers.0.self_attn.v_proj.weight -> blk.0.attn_v.weight | F16 | [4096, 4096]\n","model.layers.1.input_layernorm.weight -> blk.1.attn_norm.weight | F16 | [4096]\n","model.layers.1.mlp.down_proj.weight -> blk.1.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.1.mlp.gate_proj.weight -> blk.1.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.1.mlp.up_proj.weight -> blk.1.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.1.post_attention_layernorm.weight -> blk.1.ffn_norm.weight | F16 | [4096]\n","model.layers.1.self_attn.k_proj.weight -> blk.1.attn_k.weight | F16 | [4096, 4096]\n","model.layers.1.self_attn.o_proj.weight -> blk.1.attn_output.weight | F16 | [4096, 4096]\n","model.layers.1.self_attn.q_proj.weight -> blk.1.attn_q.weight | F16 | [4096, 4096]\n","model.layers.1.self_attn.v_proj.weight -> blk.1.attn_v.weight | F16 | [4096, 4096]\n","model.layers.10.input_layernorm.weight -> blk.10.attn_norm.weight | F16 | [4096]\n","model.layers.10.mlp.down_proj.weight -> blk.10.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.10.mlp.gate_proj.weight -> blk.10.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.10.mlp.up_proj.weight -> blk.10.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.10.post_attention_layernorm.weight -> blk.10.ffn_norm.weight | F16 | [4096]\n","model.layers.10.self_attn.k_proj.weight -> blk.10.attn_k.weight | F16 | [4096, 4096]\n","model.layers.10.self_attn.o_proj.weight -> blk.10.attn_output.weight | F16 | [4096, 4096]\n","model.layers.10.self_attn.q_proj.weight -> blk.10.attn_q.weight | F16 | [4096, 4096]\n","model.layers.10.self_attn.v_proj.weight -> blk.10.attn_v.weight | F16 | [4096, 4096]\n","model.layers.11.mlp.gate_proj.weight -> blk.11.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.11.self_attn.k_proj.weight -> blk.11.attn_k.weight | F16 | [4096, 4096]\n","model.layers.11.self_attn.o_proj.weight -> blk.11.attn_output.weight | F16 | [4096, 4096]\n","model.layers.11.self_attn.q_proj.weight -> blk.11.attn_q.weight | F16 | [4096, 4096]\n","model.layers.11.self_attn.v_proj.weight -> blk.11.attn_v.weight | F16 | [4096, 4096]\n","model.layers.2.input_layernorm.weight -> blk.2.attn_norm.weight | F16 | [4096]\n","model.layers.2.mlp.down_proj.weight -> blk.2.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.2.mlp.gate_proj.weight -> blk.2.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.2.mlp.up_proj.weight -> blk.2.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.2.post_attention_layernorm.weight -> blk.2.ffn_norm.weight | F16 | [4096]\n","model.layers.2.self_attn.k_proj.weight -> blk.2.attn_k.weight | F16 | [4096, 4096]\n","model.layers.2.self_attn.o_proj.weight -> blk.2.attn_output.weight | F16 | [4096, 4096]\n","model.layers.2.self_attn.q_proj.weight -> blk.2.attn_q.weight | F16 | [4096, 4096]\n","model.layers.2.self_attn.v_proj.weight -> blk.2.attn_v.weight | F16 | [4096, 4096]\n","model.layers.3.input_layernorm.weight -> blk.3.attn_norm.weight | F16 | [4096]\n","model.layers.3.mlp.down_proj.weight -> blk.3.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.3.mlp.gate_proj.weight -> blk.3.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.3.mlp.up_proj.weight -> blk.3.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.3.post_attention_layernorm.weight -> blk.3.ffn_norm.weight | F16 | [4096]\n","model.layers.3.self_attn.k_proj.weight -> blk.3.attn_k.weight | F16 | [4096, 4096]\n","model.layers.3.self_attn.o_proj.weight -> blk.3.attn_output.weight | F16 | [4096, 4096]\n","model.layers.3.self_attn.q_proj.weight -> blk.3.attn_q.weight | F16 | [4096, 4096]\n","model.layers.3.self_attn.v_proj.weight -> blk.3.attn_v.weight | F16 | [4096, 4096]\n","model.layers.4.input_layernorm.weight -> blk.4.attn_norm.weight | F16 | [4096]\n","model.layers.4.mlp.down_proj.weight -> blk.4.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.4.mlp.gate_proj.weight -> blk.4.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.4.mlp.up_proj.weight -> blk.4.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.4.post_attention_layernorm.weight -> blk.4.ffn_norm.weight | F16 | [4096]\n","model.layers.4.self_attn.k_proj.weight -> blk.4.attn_k.weight | F16 | [4096, 4096]\n","model.layers.4.self_attn.o_proj.weight -> blk.4.attn_output.weight | F16 | [4096, 4096]\n","model.layers.4.self_attn.q_proj.weight -> blk.4.attn_q.weight | F16 | [4096, 4096]\n","model.layers.4.self_attn.v_proj.weight -> blk.4.attn_v.weight | F16 | [4096, 4096]\n","model.layers.5.input_layernorm.weight -> blk.5.attn_norm.weight | F16 | [4096]\n","model.layers.5.mlp.down_proj.weight -> blk.5.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.5.mlp.gate_proj.weight -> blk.5.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.5.mlp.up_proj.weight -> blk.5.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.5.post_attention_layernorm.weight -> blk.5.ffn_norm.weight | F16 | [4096]\n","model.layers.5.self_attn.k_proj.weight -> blk.5.attn_k.weight | F16 | [4096, 4096]\n","model.layers.5.self_attn.o_proj.weight -> blk.5.attn_output.weight | F16 | [4096, 4096]\n","model.layers.5.self_attn.q_proj.weight -> blk.5.attn_q.weight | F16 | [4096, 4096]\n","model.layers.5.self_attn.v_proj.weight -> blk.5.attn_v.weight | F16 | [4096, 4096]\n","model.layers.6.input_layernorm.weight -> blk.6.attn_norm.weight | F16 | [4096]\n","model.layers.6.mlp.down_proj.weight -> blk.6.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.6.mlp.gate_proj.weight -> blk.6.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.6.mlp.up_proj.weight -> blk.6.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.6.post_attention_layernorm.weight -> blk.6.ffn_norm.weight | F16 | [4096]\n","model.layers.6.self_attn.k_proj.weight -> blk.6.attn_k.weight | F16 | [4096, 4096]\n","model.layers.6.self_attn.o_proj.weight -> blk.6.attn_output.weight | F16 | [4096, 4096]\n","model.layers.6.self_attn.q_proj.weight -> blk.6.attn_q.weight | F16 | [4096, 4096]\n","model.layers.6.self_attn.v_proj.weight -> blk.6.attn_v.weight | F16 | [4096, 4096]\n","model.layers.7.input_layernorm.weight -> blk.7.attn_norm.weight | F16 | [4096]\n","model.layers.7.mlp.down_proj.weight -> blk.7.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.7.mlp.gate_proj.weight -> blk.7.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.7.mlp.up_proj.weight -> blk.7.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.7.post_attention_layernorm.weight -> blk.7.ffn_norm.weight | F16 | [4096]\n","model.layers.7.self_attn.k_proj.weight -> blk.7.attn_k.weight | F16 | [4096, 4096]\n","model.layers.7.self_attn.o_proj.weight -> blk.7.attn_output.weight | F16 | [4096, 4096]\n","model.layers.7.self_attn.q_proj.weight -> blk.7.attn_q.weight | F16 | [4096, 4096]\n","model.layers.7.self_attn.v_proj.weight -> blk.7.attn_v.weight | F16 | [4096, 4096]\n","model.layers.8.input_layernorm.weight -> blk.8.attn_norm.weight | F16 | [4096]\n","model.layers.8.mlp.down_proj.weight -> blk.8.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.8.mlp.gate_proj.weight -> blk.8.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.8.mlp.up_proj.weight -> blk.8.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.8.post_attention_layernorm.weight -> blk.8.ffn_norm.weight | F16 | [4096]\n","model.layers.8.self_attn.k_proj.weight -> blk.8.attn_k.weight | F16 | [4096, 4096]\n","model.layers.8.self_attn.o_proj.weight -> blk.8.attn_output.weight | F16 | [4096, 4096]\n","model.layers.8.self_attn.q_proj.weight -> blk.8.attn_q.weight | F16 | [4096, 4096]\n","model.layers.8.self_attn.v_proj.weight -> blk.8.attn_v.weight | F16 | [4096, 4096]\n","model.layers.9.input_layernorm.weight -> blk.9.attn_norm.weight | F16 | [4096]\n","model.layers.9.mlp.down_proj.weight -> blk.9.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.9.mlp.gate_proj.weight -> blk.9.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.9.mlp.up_proj.weight -> blk.9.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.9.post_attention_layernorm.weight -> blk.9.ffn_norm.weight | F16 | [4096]\n","model.layers.9.self_attn.k_proj.weight -> blk.9.attn_k.weight | F16 | [4096, 4096]\n","model.layers.9.self_attn.o_proj.weight -> blk.9.attn_output.weight | F16 | [4096, 4096]\n","model.layers.9.self_attn.q_proj.weight -> blk.9.attn_q.weight | F16 | [4096, 4096]\n","model.layers.9.self_attn.v_proj.weight -> blk.9.attn_v.weight | F16 | [4096, 4096]\n","model.layers.11.input_layernorm.weight -> blk.11.attn_norm.weight | F16 | [4096]\n","model.layers.11.mlp.down_proj.weight -> blk.11.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.11.mlp.up_proj.weight -> blk.11.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.11.post_attention_layernorm.weight -> blk.11.ffn_norm.weight | F16 | [4096]\n","model.layers.12.input_layernorm.weight -> blk.12.attn_norm.weight | F16 | [4096]\n","model.layers.12.mlp.down_proj.weight -> blk.12.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.12.mlp.gate_proj.weight -> blk.12.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.12.mlp.up_proj.weight -> blk.12.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.12.post_attention_layernorm.weight -> blk.12.ffn_norm.weight | F16 | [4096]\n","model.layers.12.self_attn.k_proj.weight -> blk.12.attn_k.weight | F16 | [4096, 4096]\n","model.layers.12.self_attn.o_proj.weight -> blk.12.attn_output.weight | F16 | [4096, 4096]\n","model.layers.12.self_attn.q_proj.weight -> blk.12.attn_q.weight | F16 | [4096, 4096]\n","model.layers.12.self_attn.v_proj.weight -> blk.12.attn_v.weight | F16 | [4096, 4096]\n","model.layers.13.input_layernorm.weight -> blk.13.attn_norm.weight | F16 | [4096]\n","model.layers.13.mlp.down_proj.weight -> blk.13.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.13.mlp.gate_proj.weight -> blk.13.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.13.mlp.up_proj.weight -> blk.13.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.13.post_attention_layernorm.weight -> blk.13.ffn_norm.weight | F16 | [4096]\n","model.layers.13.self_attn.k_proj.weight -> blk.13.attn_k.weight | F16 | [4096, 4096]\n","model.layers.13.self_attn.o_proj.weight -> blk.13.attn_output.weight | F16 | [4096, 4096]\n","model.layers.13.self_attn.q_proj.weight -> blk.13.attn_q.weight | F16 | [4096, 4096]\n","model.layers.13.self_attn.v_proj.weight -> blk.13.attn_v.weight | F16 | [4096, 4096]\n","model.layers.14.input_layernorm.weight -> blk.14.attn_norm.weight | F16 | [4096]\n","model.layers.14.mlp.down_proj.weight -> blk.14.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.14.mlp.gate_proj.weight -> blk.14.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.14.mlp.up_proj.weight -> blk.14.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.14.post_attention_layernorm.weight -> blk.14.ffn_norm.weight | F16 | [4096]\n","model.layers.14.self_attn.k_proj.weight -> blk.14.attn_k.weight | F16 | [4096, 4096]\n","model.layers.14.self_attn.o_proj.weight -> blk.14.attn_output.weight | F16 | [4096, 4096]\n","model.layers.14.self_attn.q_proj.weight -> blk.14.attn_q.weight | F16 | [4096, 4096]\n","model.layers.14.self_attn.v_proj.weight -> blk.14.attn_v.weight | F16 | [4096, 4096]\n","model.layers.15.input_layernorm.weight -> blk.15.attn_norm.weight | F16 | [4096]\n","model.layers.15.mlp.down_proj.weight -> blk.15.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.15.mlp.gate_proj.weight -> blk.15.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.15.mlp.up_proj.weight -> blk.15.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.15.post_attention_layernorm.weight -> blk.15.ffn_norm.weight | F16 | [4096]\n","model.layers.15.self_attn.k_proj.weight -> blk.15.attn_k.weight | F16 | [4096, 4096]\n","model.layers.15.self_attn.o_proj.weight -> blk.15.attn_output.weight | F16 | [4096, 4096]\n","model.layers.15.self_attn.q_proj.weight -> blk.15.attn_q.weight | F16 | [4096, 4096]\n","model.layers.15.self_attn.v_proj.weight -> blk.15.attn_v.weight | F16 | [4096, 4096]\n","model.layers.16.input_layernorm.weight -> blk.16.attn_norm.weight | F16 | [4096]\n","model.layers.16.mlp.down_proj.weight -> blk.16.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.16.mlp.gate_proj.weight -> blk.16.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.16.mlp.up_proj.weight -> blk.16.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.16.post_attention_layernorm.weight -> blk.16.ffn_norm.weight | F16 | [4096]\n","model.layers.16.self_attn.k_proj.weight -> blk.16.attn_k.weight | F16 | [4096, 4096]\n","model.layers.16.self_attn.o_proj.weight -> blk.16.attn_output.weight | F16 | [4096, 4096]\n","model.layers.16.self_attn.q_proj.weight -> blk.16.attn_q.weight | F16 | [4096, 4096]\n","model.layers.16.self_attn.v_proj.weight -> blk.16.attn_v.weight | F16 | [4096, 4096]\n","model.layers.17.input_layernorm.weight -> blk.17.attn_norm.weight | F16 | [4096]\n","model.layers.17.mlp.down_proj.weight -> blk.17.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.17.mlp.gate_proj.weight -> blk.17.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.17.mlp.up_proj.weight -> blk.17.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.17.post_attention_layernorm.weight -> blk.17.ffn_norm.weight | F16 | [4096]\n","model.layers.17.self_attn.k_proj.weight -> blk.17.attn_k.weight | F16 | [4096, 4096]\n","model.layers.17.self_attn.o_proj.weight -> blk.17.attn_output.weight | F16 | [4096, 4096]\n","model.layers.17.self_attn.q_proj.weight -> blk.17.attn_q.weight | F16 | [4096, 4096]\n","model.layers.17.self_attn.v_proj.weight -> blk.17.attn_v.weight | F16 | [4096, 4096]\n","model.layers.18.input_layernorm.weight -> blk.18.attn_norm.weight | F16 | [4096]\n","model.layers.18.mlp.down_proj.weight -> blk.18.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.18.mlp.gate_proj.weight -> blk.18.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.18.mlp.up_proj.weight -> blk.18.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.18.post_attention_layernorm.weight -> blk.18.ffn_norm.weight | F16 | [4096]\n","model.layers.18.self_attn.k_proj.weight -> blk.18.attn_k.weight | F16 | [4096, 4096]\n","model.layers.18.self_attn.o_proj.weight -> blk.18.attn_output.weight | F16 | [4096, 4096]\n","model.layers.18.self_attn.q_proj.weight -> blk.18.attn_q.weight | F16 | [4096, 4096]\n","model.layers.18.self_attn.v_proj.weight -> blk.18.attn_v.weight | F16 | [4096, 4096]\n","model.layers.19.input_layernorm.weight -> blk.19.attn_norm.weight | F16 | [4096]\n","model.layers.19.mlp.down_proj.weight -> blk.19.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.19.mlp.gate_proj.weight -> blk.19.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.19.mlp.up_proj.weight -> blk.19.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.19.post_attention_layernorm.weight -> blk.19.ffn_norm.weight | F16 | [4096]\n","model.layers.19.self_attn.k_proj.weight -> blk.19.attn_k.weight | F16 | [4096, 4096]\n","model.layers.19.self_attn.o_proj.weight -> blk.19.attn_output.weight | F16 | [4096, 4096]\n","model.layers.19.self_attn.q_proj.weight -> blk.19.attn_q.weight | F16 | [4096, 4096]\n","model.layers.19.self_attn.v_proj.weight -> blk.19.attn_v.weight | F16 | [4096, 4096]\n","model.layers.20.input_layernorm.weight -> blk.20.attn_norm.weight | F16 | [4096]\n","model.layers.20.mlp.down_proj.weight -> blk.20.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.20.mlp.gate_proj.weight -> blk.20.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.20.mlp.up_proj.weight -> blk.20.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.20.post_attention_layernorm.weight -> blk.20.ffn_norm.weight | F16 | [4096]\n","model.layers.20.self_attn.k_proj.weight -> blk.20.attn_k.weight | F16 | [4096, 4096]\n","model.layers.20.self_attn.o_proj.weight -> blk.20.attn_output.weight | F16 | [4096, 4096]\n","model.layers.20.self_attn.q_proj.weight -> blk.20.attn_q.weight | F16 | [4096, 4096]\n","model.layers.20.self_attn.v_proj.weight -> blk.20.attn_v.weight | F16 | [4096, 4096]\n","model.layers.21.input_layernorm.weight -> blk.21.attn_norm.weight | F16 | [4096]\n","model.layers.21.mlp.down_proj.weight -> blk.21.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.21.mlp.gate_proj.weight -> blk.21.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.21.mlp.up_proj.weight -> blk.21.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.21.post_attention_layernorm.weight -> blk.21.ffn_norm.weight | F16 | [4096]\n","model.layers.21.self_attn.k_proj.weight -> blk.21.attn_k.weight | F16 | [4096, 4096]\n","model.layers.21.self_attn.o_proj.weight -> blk.21.attn_output.weight | F16 | [4096, 4096]\n","model.layers.21.self_attn.q_proj.weight -> blk.21.attn_q.weight | F16 | [4096, 4096]\n","model.layers.21.self_attn.v_proj.weight -> blk.21.attn_v.weight | F16 | [4096, 4096]\n","model.layers.22.input_layernorm.weight -> blk.22.attn_norm.weight | F16 | [4096]\n","model.layers.22.mlp.down_proj.weight -> blk.22.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.22.mlp.gate_proj.weight -> blk.22.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.22.mlp.up_proj.weight -> blk.22.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.22.post_attention_layernorm.weight -> blk.22.ffn_norm.weight | F16 | [4096]\n","model.layers.22.self_attn.k_proj.weight -> blk.22.attn_k.weight | F16 | [4096, 4096]\n","model.layers.22.self_attn.o_proj.weight -> blk.22.attn_output.weight | F16 | [4096, 4096]\n","model.layers.22.self_attn.q_proj.weight -> blk.22.attn_q.weight | F16 | [4096, 4096]\n","model.layers.22.self_attn.v_proj.weight -> blk.22.attn_v.weight | F16 | [4096, 4096]\n","model.layers.23.mlp.gate_proj.weight -> blk.23.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.23.mlp.up_proj.weight -> blk.23.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.23.self_attn.k_proj.weight -> blk.23.attn_k.weight | F16 | [4096, 4096]\n","model.layers.23.self_attn.o_proj.weight -> blk.23.attn_output.weight | F16 | [4096, 4096]\n","model.layers.23.self_attn.q_proj.weight -> blk.23.attn_q.weight | F16 | [4096, 4096]\n","model.layers.23.self_attn.v_proj.weight -> blk.23.attn_v.weight | F16 | [4096, 4096]\n","lm_head.weight -> output.weight | F16 | [32000, 4096]\n","model.layers.23.input_layernorm.weight -> blk.23.attn_norm.weight | F16 | [4096]\n","model.layers.23.mlp.down_proj.weight -> blk.23.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.23.post_attention_layernorm.weight -> blk.23.ffn_norm.weight | F16 | [4096]\n","model.layers.24.input_layernorm.weight -> blk.24.attn_norm.weight | F16 | [4096]\n","model.layers.24.mlp.down_proj.weight -> blk.24.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.24.mlp.gate_proj.weight -> blk.24.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.24.mlp.up_proj.weight -> blk.24.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.24.post_attention_layernorm.weight -> blk.24.ffn_norm.weight | F16 | [4096]\n","model.layers.24.self_attn.k_proj.weight -> blk.24.attn_k.weight | F16 | [4096, 4096]\n","model.layers.24.self_attn.o_proj.weight -> blk.24.attn_output.weight | F16 | [4096, 4096]\n","model.layers.24.self_attn.q_proj.weight -> blk.24.attn_q.weight | F16 | [4096, 4096]\n","model.layers.24.self_attn.v_proj.weight -> blk.24.attn_v.weight | F16 | [4096, 4096]\n","model.layers.25.input_layernorm.weight -> blk.25.attn_norm.weight | F16 | [4096]\n","model.layers.25.mlp.down_proj.weight -> blk.25.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.25.mlp.gate_proj.weight -> blk.25.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.25.mlp.up_proj.weight -> blk.25.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.25.post_attention_layernorm.weight -> blk.25.ffn_norm.weight | F16 | [4096]\n","model.layers.25.self_attn.k_proj.weight -> blk.25.attn_k.weight | F16 | [4096, 4096]\n","model.layers.25.self_attn.o_proj.weight -> blk.25.attn_output.weight | F16 | [4096, 4096]\n","model.layers.25.self_attn.q_proj.weight -> blk.25.attn_q.weight | F16 | [4096, 4096]\n","model.layers.25.self_attn.v_proj.weight -> blk.25.attn_v.weight | F16 | [4096, 4096]\n","model.layers.26.input_layernorm.weight -> blk.26.attn_norm.weight | F16 | [4096]\n","model.layers.26.mlp.down_proj.weight -> blk.26.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.26.mlp.gate_proj.weight -> blk.26.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.26.mlp.up_proj.weight -> blk.26.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.26.post_attention_layernorm.weight -> blk.26.ffn_norm.weight | F16 | [4096]\n","model.layers.26.self_attn.k_proj.weight -> blk.26.attn_k.weight | F16 | [4096, 4096]\n","model.layers.26.self_attn.o_proj.weight -> blk.26.attn_output.weight | F16 | [4096, 4096]\n","model.layers.26.self_attn.q_proj.weight -> blk.26.attn_q.weight | F16 | [4096, 4096]\n","model.layers.26.self_attn.v_proj.weight -> blk.26.attn_v.weight | F16 | [4096, 4096]\n","model.layers.27.input_layernorm.weight -> blk.27.attn_norm.weight | F16 | [4096]\n","model.layers.27.mlp.down_proj.weight -> blk.27.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.27.mlp.gate_proj.weight -> blk.27.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.27.mlp.up_proj.weight -> blk.27.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.27.post_attention_layernorm.weight -> blk.27.ffn_norm.weight | F16 | [4096]\n","model.layers.27.self_attn.k_proj.weight -> blk.27.attn_k.weight | F16 | [4096, 4096]\n","model.layers.27.self_attn.o_proj.weight -> blk.27.attn_output.weight | F16 | [4096, 4096]\n","model.layers.27.self_attn.q_proj.weight -> blk.27.attn_q.weight | F16 | [4096, 4096]\n","model.layers.27.self_attn.v_proj.weight -> blk.27.attn_v.weight | F16 | [4096, 4096]\n","model.layers.28.input_layernorm.weight -> blk.28.attn_norm.weight | F16 | [4096]\n","model.layers.28.mlp.down_proj.weight -> blk.28.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.28.mlp.gate_proj.weight -> blk.28.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.28.mlp.up_proj.weight -> blk.28.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.28.post_attention_layernorm.weight -> blk.28.ffn_norm.weight | F16 | [4096]\n","model.layers.28.self_attn.k_proj.weight -> blk.28.attn_k.weight | F16 | [4096, 4096]\n","model.layers.28.self_attn.o_proj.weight -> blk.28.attn_output.weight | F16 | [4096, 4096]\n","model.layers.28.self_attn.q_proj.weight -> blk.28.attn_q.weight | F16 | [4096, 4096]\n","model.layers.28.self_attn.v_proj.weight -> blk.28.attn_v.weight | F16 | [4096, 4096]\n","model.layers.29.input_layernorm.weight -> blk.29.attn_norm.weight | F16 | [4096]\n","model.layers.29.mlp.down_proj.weight -> blk.29.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.29.mlp.gate_proj.weight -> blk.29.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.29.mlp.up_proj.weight -> blk.29.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.29.post_attention_layernorm.weight -> blk.29.ffn_norm.weight | F16 | [4096]\n","model.layers.29.self_attn.k_proj.weight -> blk.29.attn_k.weight | F16 | [4096, 4096]\n","model.layers.29.self_attn.o_proj.weight -> blk.29.attn_output.weight | F16 | [4096, 4096]\n","model.layers.29.self_attn.q_proj.weight -> blk.29.attn_q.weight | F16 | [4096, 4096]\n","model.layers.29.self_attn.v_proj.weight -> blk.29.attn_v.weight | F16 | [4096, 4096]\n","model.layers.30.input_layernorm.weight -> blk.30.attn_norm.weight | F16 | [4096]\n","model.layers.30.mlp.down_proj.weight -> blk.30.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.30.mlp.gate_proj.weight -> blk.30.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.30.mlp.up_proj.weight -> blk.30.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.30.post_attention_layernorm.weight -> blk.30.ffn_norm.weight | F16 | [4096]\n","model.layers.30.self_attn.k_proj.weight -> blk.30.attn_k.weight | F16 | [4096, 4096]\n","model.layers.30.self_attn.o_proj.weight -> blk.30.attn_output.weight | F16 | [4096, 4096]\n","model.layers.30.self_attn.q_proj.weight -> blk.30.attn_q.weight | F16 | [4096, 4096]\n","model.layers.30.self_attn.v_proj.weight -> blk.30.attn_v.weight | F16 | [4096, 4096]\n","model.layers.31.input_layernorm.weight -> blk.31.attn_norm.weight | F16 | [4096]\n","model.layers.31.mlp.down_proj.weight -> blk.31.ffn_down.weight | F16 | [4096, 11008]\n","model.layers.31.mlp.gate_proj.weight -> blk.31.ffn_gate.weight | F16 | [11008, 4096]\n","model.layers.31.mlp.up_proj.weight -> blk.31.ffn_up.weight | F16 | [11008, 4096]\n","model.layers.31.post_attention_layernorm.weight -> blk.31.ffn_norm.weight | F16 | [4096]\n","model.layers.31.self_attn.k_proj.weight -> blk.31.attn_k.weight | F16 | [4096, 4096]\n","model.layers.31.self_attn.o_proj.weight -> blk.31.attn_output.weight | F16 | [4096, 4096]\n","model.layers.31.self_attn.q_proj.weight -> blk.31.attn_q.weight | F16 | [4096, 4096]\n","model.layers.31.self_attn.v_proj.weight -> blk.31.attn_v.weight | F16 | [4096, 4096]\n","model.norm.weight -> output_norm.weight | F16 | [4096]\n","Writing llama-2-7b-combined_datasets/llama-2-7b-combined_datasets.fp16.bin, format 1\n","Ignoring added_tokens.json since model matches vocab size without it.\n","gguf: This GGUF file is for Little Endian only\n","gguf: Setting special token type bos to 1\n","gguf: Setting special token type eos to 2\n","gguf: Setting special token type unk to 0\n","gguf: Setting special token type pad to 2\n","gguf: Setting add_bos_token to True\n","gguf: Setting add_eos_token to False\n","gguf: Setting chat_template to {% if messages[0]['role'] == 'system' %}{% set loop_messages = messages[1:] %}{% set system_message = messages[0]['content'] %}{% else %}{% set loop_messages = messages %}{% set system_message = false %}{% endif %}{% for message in loop_messages %}{% if (message['role'] == 'user') != (loop.index0 % 2 == 0) %}{{ raise_exception('Conversation roles must alternate user/assistant/user/assistant/...') }}{% endif %}{% if loop.index0 == 0 and system_message != false %}{% set content = '<>\\n' + system_message + '\\n<>\\n\\n' + message['content'] %}{% else %}{% set content = message['content'] %}{% endif %}{% if message['role'] == 'user' %}{{ bos_token + '[INST] ' + content.strip() + ' [/INST]' }}{% elif message['role'] == 'assistant' %}{{ ' ' + content.strip() + ' ' + eos_token }}{% endif %}{% endfor %}\n","[ 1/291] Writing tensor token_embd.weight | size 32000 x 4096 | type F16 | T+ 0\n","[ 2/291] Writing tensor blk.0.attn_norm.weight | size 4096 | type F32 | T+ 0\n","[ 3/291] Writing tensor blk.0.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 0\n","[ 4/291] Writing tensor blk.0.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 0\n","[ 5/291] Writing tensor blk.0.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 0\n","[ 6/291] Writing tensor blk.0.ffn_norm.weight | size 4096 | type F32 | T+ 0\n","[ 7/291] Writing tensor blk.0.attn_k.weight | size 4096 x 4096 | type F16 | T+ 0\n","[ 8/291] Writing tensor blk.0.attn_output.weight | size 4096 x 4096 | type F16 | T+ 0\n","[ 9/291] Writing tensor blk.0.attn_q.weight | size 4096 x 4096 | type F16 | T+ 0\n","[ 10/291] Writing tensor blk.0.attn_v.weight | size 4096 x 4096 | type F16 | T+ 0\n","[ 11/291] Writing tensor blk.1.attn_norm.weight | size 4096 | type F32 | T+ 0\n","[ 12/291] Writing tensor blk.1.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 0\n","[ 13/291] Writing tensor blk.1.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 0\n","[ 14/291] Writing tensor blk.1.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 0\n","[ 15/291] Writing tensor blk.1.ffn_norm.weight | size 4096 | type F32 | T+ 0\n","[ 16/291] Writing tensor blk.1.attn_k.weight | size 4096 x 4096 | type F16 | T+ 0\n","[ 17/291] Writing tensor blk.1.attn_output.weight | size 4096 x 4096 | type F16 | T+ 0\n","[ 18/291] Writing tensor blk.1.attn_q.weight | size 4096 x 4096 | type F16 | T+ 0\n","[ 19/291] Writing tensor blk.1.attn_v.weight | size 4096 x 4096 | type F16 | T+ 0\n","[ 20/291] Writing tensor blk.10.attn_norm.weight | size 4096 | type F32 | T+ 0\n","[ 21/291] Writing tensor blk.10.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 0\n","[ 22/291] Writing tensor blk.10.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 0\n","[ 23/291] Writing tensor blk.10.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 0\n","[ 24/291] Writing tensor blk.10.ffn_norm.weight | size 4096 | type F32 | T+ 0\n","[ 25/291] Writing tensor blk.10.attn_k.weight | size 4096 x 4096 | type F16 | T+ 0\n","[ 26/291] Writing tensor blk.10.attn_output.weight | size 4096 x 4096 | type F16 | T+ 0\n","[ 27/291] Writing tensor blk.10.attn_q.weight | size 4096 x 4096 | type F16 | T+ 0\n","[ 28/291] Writing tensor blk.10.attn_v.weight | size 4096 x 4096 | type F16 | T+ 0\n","[ 29/291] Writing tensor blk.11.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 0\n","[ 30/291] Writing tensor blk.11.attn_k.weight | size 4096 x 4096 | type F16 | T+ 0\n","[ 31/291] Writing tensor blk.11.attn_output.weight | size 4096 x 4096 | type F16 | T+ 0\n","[ 32/291] Writing tensor blk.11.attn_q.weight | size 4096 x 4096 | type F16 | T+ 0\n","[ 33/291] Writing tensor blk.11.attn_v.weight | size 4096 x 4096 | type F16 | T+ 0\n","[ 34/291] Writing tensor blk.2.attn_norm.weight | size 4096 | type F32 | T+ 0\n","[ 35/291] Writing tensor blk.2.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 0\n","[ 36/291] Writing tensor blk.2.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 0\n","[ 37/291] Writing tensor blk.2.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 1\n","[ 38/291] Writing tensor blk.2.ffn_norm.weight | size 4096 | type F32 | T+ 1\n","[ 39/291] Writing tensor blk.2.attn_k.weight | size 4096 x 4096 | type F16 | T+ 1\n","[ 40/291] Writing tensor blk.2.attn_output.weight | size 4096 x 4096 | type F16 | T+ 1\n","[ 41/291] Writing tensor blk.2.attn_q.weight | size 4096 x 4096 | type F16 | T+ 1\n","[ 42/291] Writing tensor blk.2.attn_v.weight | size 4096 x 4096 | type F16 | T+ 1\n","[ 43/291] Writing tensor blk.3.attn_norm.weight | size 4096 | type F32 | T+ 1\n","[ 44/291] Writing tensor blk.3.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 1\n","[ 45/291] Writing tensor blk.3.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 1\n","[ 46/291] Writing tensor blk.3.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 1\n","[ 47/291] Writing tensor blk.3.ffn_norm.weight | size 4096 | type F32 | T+ 1\n","[ 48/291] Writing tensor blk.3.attn_k.weight | size 4096 x 4096 | type F16 | T+ 1\n","[ 49/291] Writing tensor blk.3.attn_output.weight | size 4096 x 4096 | type F16 | T+ 1\n","[ 50/291] Writing tensor blk.3.attn_q.weight | size 4096 x 4096 | type F16 | T+ 1\n","[ 51/291] Writing tensor blk.3.attn_v.weight | size 4096 x 4096 | type F16 | T+ 1\n","[ 52/291] Writing tensor blk.4.attn_norm.weight | size 4096 | type F32 | T+ 1\n","[ 53/291] Writing tensor blk.4.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 1\n","[ 54/291] Writing tensor blk.4.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 1\n","[ 55/291] Writing tensor blk.4.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 1\n","[ 56/291] Writing tensor blk.4.ffn_norm.weight | size 4096 | type F32 | T+ 1\n","[ 57/291] Writing tensor blk.4.attn_k.weight | size 4096 x 4096 | type F16 | T+ 1\n","[ 58/291] Writing tensor blk.4.attn_output.weight | size 4096 x 4096 | type F16 | T+ 1\n","[ 59/291] Writing tensor blk.4.attn_q.weight | size 4096 x 4096 | type F16 | T+ 1\n","[ 60/291] Writing tensor blk.4.attn_v.weight | size 4096 x 4096 | type F16 | T+ 1\n","[ 61/291] Writing tensor blk.5.attn_norm.weight | size 4096 | type F32 | T+ 1\n","[ 62/291] Writing tensor blk.5.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 1\n","[ 63/291] Writing tensor blk.5.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 1\n","[ 64/291] Writing tensor blk.5.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 1\n","[ 65/291] Writing tensor blk.5.ffn_norm.weight | size 4096 | type F32 | T+ 1\n","[ 66/291] Writing tensor blk.5.attn_k.weight | size 4096 x 4096 | type F16 | T+ 1\n","[ 67/291] Writing tensor blk.5.attn_output.weight | size 4096 x 4096 | type F16 | T+ 1\n","[ 68/291] Writing tensor blk.5.attn_q.weight | size 4096 x 4096 | type F16 | T+ 1\n","[ 69/291] Writing tensor blk.5.attn_v.weight | size 4096 x 4096 | type F16 | T+ 1\n","[ 70/291] Writing tensor blk.6.attn_norm.weight | size 4096 | type F32 | T+ 1\n","[ 71/291] Writing tensor blk.6.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 1\n","[ 72/291] Writing tensor blk.6.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 1\n","[ 73/291] Writing tensor blk.6.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 1\n","[ 74/291] Writing tensor blk.6.ffn_norm.weight | size 4096 | type F32 | T+ 1\n","[ 75/291] Writing tensor blk.6.attn_k.weight | size 4096 x 4096 | type F16 | T+ 1\n","[ 76/291] Writing tensor blk.6.attn_output.weight | size 4096 x 4096 | type F16 | T+ 1\n","[ 77/291] Writing tensor blk.6.attn_q.weight | size 4096 x 4096 | type F16 | T+ 1\n","[ 78/291] Writing tensor blk.6.attn_v.weight | size 4096 x 4096 | type F16 | T+ 1\n","[ 79/291] Writing tensor blk.7.attn_norm.weight | size 4096 | type F32 | T+ 1\n","[ 80/291] Writing tensor blk.7.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 1\n","[ 81/291] Writing tensor blk.7.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 2\n","[ 82/291] Writing tensor blk.7.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 2\n","[ 83/291] Writing tensor blk.7.ffn_norm.weight | size 4096 | type F32 | T+ 2\n","[ 84/291] Writing tensor blk.7.attn_k.weight | size 4096 x 4096 | type F16 | T+ 2\n","[ 85/291] Writing tensor blk.7.attn_output.weight | size 4096 x 4096 | type F16 | T+ 2\n","[ 86/291] Writing tensor blk.7.attn_q.weight | size 4096 x 4096 | type F16 | T+ 2\n","[ 87/291] Writing tensor blk.7.attn_v.weight | size 4096 x 4096 | type F16 | T+ 2\n","[ 88/291] Writing tensor blk.8.attn_norm.weight | size 4096 | type F32 | T+ 2\n","[ 89/291] Writing tensor blk.8.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 2\n","[ 90/291] Writing tensor blk.8.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 2\n","[ 91/291] Writing tensor blk.8.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 2\n","[ 92/291] Writing tensor blk.8.ffn_norm.weight | size 4096 | type F32 | T+ 2\n","[ 93/291] Writing tensor blk.8.attn_k.weight | size 4096 x 4096 | type F16 | T+ 2\n","[ 94/291] Writing tensor blk.8.attn_output.weight | size 4096 x 4096 | type F16 | T+ 2\n","[ 95/291] Writing tensor blk.8.attn_q.weight | size 4096 x 4096 | type F16 | T+ 2\n","[ 96/291] Writing tensor blk.8.attn_v.weight | size 4096 x 4096 | type F16 | T+ 2\n","[ 97/291] Writing tensor blk.9.attn_norm.weight | size 4096 | type F32 | T+ 2\n","[ 98/291] Writing tensor blk.9.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 2\n","[ 99/291] Writing tensor blk.9.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 2\n","[100/291] Writing tensor blk.9.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 2\n","[101/291] Writing tensor blk.9.ffn_norm.weight | size 4096 | type F32 | T+ 2\n","[102/291] Writing tensor blk.9.attn_k.weight | size 4096 x 4096 | type F16 | T+ 2\n","[103/291] Writing tensor blk.9.attn_output.weight | size 4096 x 4096 | type F16 | T+ 2\n","[104/291] Writing tensor blk.9.attn_q.weight | size 4096 x 4096 | type F16 | T+ 2\n","[105/291] Writing tensor blk.9.attn_v.weight | size 4096 x 4096 | type F16 | T+ 2\n","[106/291] Writing tensor blk.11.attn_norm.weight | size 4096 | type F32 | T+ 2\n","[107/291] Writing tensor blk.11.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 2\n","[108/291] Writing tensor blk.11.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 2\n","[109/291] Writing tensor blk.11.ffn_norm.weight | size 4096 | type F32 | T+ 2\n","[110/291] Writing tensor blk.12.attn_norm.weight | size 4096 | type F32 | T+ 2\n","[111/291] Writing tensor blk.12.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 2\n","[112/291] Writing tensor blk.12.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 2\n","[113/291] Writing tensor blk.12.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 2\n","[114/291] Writing tensor blk.12.ffn_norm.weight | size 4096 | type F32 | T+ 2\n","[115/291] Writing tensor blk.12.attn_k.weight | size 4096 x 4096 | type F16 | T+ 2\n","[116/291] Writing tensor blk.12.attn_output.weight | size 4096 x 4096 | type F16 | T+ 2\n","[117/291] Writing tensor blk.12.attn_q.weight | size 4096 x 4096 | type F16 | T+ 2\n","[118/291] Writing tensor blk.12.attn_v.weight | size 4096 x 4096 | type F16 | T+ 3\n","[119/291] Writing tensor blk.13.attn_norm.weight | size 4096 | type F32 | T+ 3\n","[120/291] Writing tensor blk.13.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 3\n","[121/291] Writing tensor blk.13.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 3\n","[122/291] Writing tensor blk.13.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 3\n","[123/291] Writing tensor blk.13.ffn_norm.weight | size 4096 | type F32 | T+ 3\n","[124/291] Writing tensor blk.13.attn_k.weight | size 4096 x 4096 | type F16 | T+ 3\n","[125/291] Writing tensor blk.13.attn_output.weight | size 4096 x 4096 | type F16 | T+ 3\n","[126/291] Writing tensor blk.13.attn_q.weight | size 4096 x 4096 | type F16 | T+ 3\n","[127/291] Writing tensor blk.13.attn_v.weight | size 4096 x 4096 | type F16 | T+ 3\n","[128/291] Writing tensor blk.14.attn_norm.weight | size 4096 | type F32 | T+ 3\n","[129/291] Writing tensor blk.14.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 3\n","[130/291] Writing tensor blk.14.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 3\n","[131/291] Writing tensor blk.14.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 3\n","[132/291] Writing tensor blk.14.ffn_norm.weight | size 4096 | type F32 | T+ 3\n","[133/291] Writing tensor blk.14.attn_k.weight | size 4096 x 4096 | type F16 | T+ 3\n","[134/291] Writing tensor blk.14.attn_output.weight | size 4096 x 4096 | type F16 | T+ 3\n","[135/291] Writing tensor blk.14.attn_q.weight | size 4096 x 4096 | type F16 | T+ 3\n","[136/291] Writing tensor blk.14.attn_v.weight | size 4096 x 4096 | type F16 | T+ 3\n","[137/291] Writing tensor blk.15.attn_norm.weight | size 4096 | type F32 | T+ 3\n","[138/291] Writing tensor blk.15.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 3\n","[139/291] Writing tensor blk.15.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 3\n","[140/291] Writing tensor blk.15.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 3\n","[141/291] Writing tensor blk.15.ffn_norm.weight | size 4096 | type F32 | T+ 3\n","[142/291] Writing tensor blk.15.attn_k.weight | size 4096 x 4096 | type F16 | T+ 3\n","[143/291] Writing tensor blk.15.attn_output.weight | size 4096 x 4096 | type F16 | T+ 3\n","[144/291] Writing tensor blk.15.attn_q.weight | size 4096 x 4096 | type F16 | T+ 3\n","[145/291] Writing tensor blk.15.attn_v.weight | size 4096 x 4096 | type F16 | T+ 3\n","[146/291] Writing tensor blk.16.attn_norm.weight | size 4096 | type F32 | T+ 3\n","[147/291] Writing tensor blk.16.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 3\n","[148/291] Writing tensor blk.16.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 3\n","[149/291] Writing tensor blk.16.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 3\n","[150/291] Writing tensor blk.16.ffn_norm.weight | size 4096 | type F32 | T+ 3\n","[151/291] Writing tensor blk.16.attn_k.weight | size 4096 x 4096 | type F16 | T+ 3\n","[152/291] Writing tensor blk.16.attn_output.weight | size 4096 x 4096 | type F16 | T+ 3\n","[153/291] Writing tensor blk.16.attn_q.weight | size 4096 x 4096 | type F16 | T+ 3\n","[154/291] Writing tensor blk.16.attn_v.weight | size 4096 x 4096 | type F16 | T+ 3\n","[155/291] Writing tensor blk.17.attn_norm.weight | size 4096 | type F32 | T+ 3\n","[156/291] Writing tensor blk.17.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 3\n","[157/291] Writing tensor blk.17.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 4\n","[158/291] Writing tensor blk.17.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 4\n","[159/291] Writing tensor blk.17.ffn_norm.weight | size 4096 | type F32 | T+ 4\n","[160/291] Writing tensor blk.17.attn_k.weight | size 4096 x 4096 | type F16 | T+ 4\n","[161/291] Writing tensor blk.17.attn_output.weight | size 4096 x 4096 | type F16 | T+ 4\n","[162/291] Writing tensor blk.17.attn_q.weight | size 4096 x 4096 | type F16 | T+ 4\n","[163/291] Writing tensor blk.17.attn_v.weight | size 4096 x 4096 | type F16 | T+ 4\n","[164/291] Writing tensor blk.18.attn_norm.weight | size 4096 | type F32 | T+ 4\n","[165/291] Writing tensor blk.18.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 4\n","[166/291] Writing tensor blk.18.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 4\n","[167/291] Writing tensor blk.18.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 4\n","[168/291] Writing tensor blk.18.ffn_norm.weight | size 4096 | type F32 | T+ 4\n","[169/291] Writing tensor blk.18.attn_k.weight | size 4096 x 4096 | type F16 | T+ 4\n","[170/291] Writing tensor blk.18.attn_output.weight | size 4096 x 4096 | type F16 | T+ 4\n","[171/291] Writing tensor blk.18.attn_q.weight | size 4096 x 4096 | type F16 | T+ 4\n","[172/291] Writing tensor blk.18.attn_v.weight | size 4096 x 4096 | type F16 | T+ 4\n","[173/291] Writing tensor blk.19.attn_norm.weight | size 4096 | type F32 | T+ 4\n","[174/291] Writing tensor blk.19.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 4\n","[175/291] Writing tensor blk.19.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 4\n","[176/291] Writing tensor blk.19.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 4\n","[177/291] Writing tensor blk.19.ffn_norm.weight | size 4096 | type F32 | T+ 4\n","[178/291] Writing tensor blk.19.attn_k.weight | size 4096 x 4096 | type F16 | T+ 4\n","[179/291] Writing tensor blk.19.attn_output.weight | size 4096 x 4096 | type F16 | T+ 4\n","[180/291] Writing tensor blk.19.attn_q.weight | size 4096 x 4096 | type F16 | T+ 4\n","[181/291] Writing tensor blk.19.attn_v.weight | size 4096 x 4096 | type F16 | T+ 4\n","[182/291] Writing tensor blk.20.attn_norm.weight | size 4096 | type F32 | T+ 4\n","[183/291] Writing tensor blk.20.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 4\n","[184/291] Writing tensor blk.20.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 4\n","[185/291] Writing tensor blk.20.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 4\n","[186/291] Writing tensor blk.20.ffn_norm.weight | size 4096 | type F32 | T+ 4\n","[187/291] Writing tensor blk.20.attn_k.weight | size 4096 x 4096 | type F16 | T+ 4\n","[188/291] Writing tensor blk.20.attn_output.weight | size 4096 x 4096 | type F16 | T+ 4\n","[189/291] Writing tensor blk.20.attn_q.weight | size 4096 x 4096 | type F16 | T+ 4\n","[190/291] Writing tensor blk.20.attn_v.weight | size 4096 x 4096 | type F16 | T+ 4\n","[191/291] Writing tensor blk.21.attn_norm.weight | size 4096 | type F32 | T+ 4\n","[192/291] Writing tensor blk.21.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 4\n","[193/291] Writing tensor blk.21.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 4\n","[194/291] Writing tensor blk.21.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 5\n","[195/291] Writing tensor blk.21.ffn_norm.weight | size 4096 | type F32 | T+ 5\n","[196/291] Writing tensor blk.21.attn_k.weight | size 4096 x 4096 | type F16 | T+ 5\n","[197/291] Writing tensor blk.21.attn_output.weight | size 4096 x 4096 | type F16 | T+ 5\n","[198/291] Writing tensor blk.21.attn_q.weight | size 4096 x 4096 | type F16 | T+ 5\n","[199/291] Writing tensor blk.21.attn_v.weight | size 4096 x 4096 | type F16 | T+ 5\n","[200/291] Writing tensor blk.22.attn_norm.weight | size 4096 | type F32 | T+ 5\n","[201/291] Writing tensor blk.22.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 5\n","[202/291] Writing tensor blk.22.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 5\n","[203/291] Writing tensor blk.22.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 5\n","[204/291] Writing tensor blk.22.ffn_norm.weight | size 4096 | type F32 | T+ 5\n","[205/291] Writing tensor blk.22.attn_k.weight | size 4096 x 4096 | type F16 | T+ 5\n","[206/291] Writing tensor blk.22.attn_output.weight | size 4096 x 4096 | type F16 | T+ 5\n","[207/291] Writing tensor blk.22.attn_q.weight | size 4096 x 4096 | type F16 | T+ 5\n","[208/291] Writing tensor blk.22.attn_v.weight | size 4096 x 4096 | type F16 | T+ 5\n","[209/291] Writing tensor blk.23.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 5\n","[210/291] Writing tensor blk.23.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 5\n","[211/291] Writing tensor blk.23.attn_k.weight | size 4096 x 4096 | type F16 | T+ 5\n","[212/291] Writing tensor blk.23.attn_output.weight | size 4096 x 4096 | type F16 | T+ 5\n","[213/291] Writing tensor blk.23.attn_q.weight | size 4096 x 4096 | type F16 | T+ 5\n","[214/291] Writing tensor blk.23.attn_v.weight | size 4096 x 4096 | type F16 | T+ 5\n","[215/291] Writing tensor output.weight | size 32000 x 4096 | type F16 | T+ 5\n","[216/291] Writing tensor blk.23.attn_norm.weight | size 4096 | type F32 | T+ 5\n","[217/291] Writing tensor blk.23.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 5\n","[218/291] Writing tensor blk.23.ffn_norm.weight | size 4096 | type F32 | T+ 5\n","[219/291] Writing tensor blk.24.attn_norm.weight | size 4096 | type F32 | T+ 5\n","[220/291] Writing tensor blk.24.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 5\n","[221/291] Writing tensor blk.24.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 5\n","[222/291] Writing tensor blk.24.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 5\n","[223/291] Writing tensor blk.24.ffn_norm.weight | size 4096 | type F32 | T+ 6\n","[224/291] Writing tensor blk.24.attn_k.weight | size 4096 x 4096 | type F16 | T+ 6\n","[225/291] Writing tensor blk.24.attn_output.weight | size 4096 x 4096 | type F16 | T+ 6\n","[226/291] Writing tensor blk.24.attn_q.weight | size 4096 x 4096 | type F16 | T+ 6\n","[227/291] Writing tensor blk.24.attn_v.weight | size 4096 x 4096 | type F16 | T+ 6\n","[228/291] Writing tensor blk.25.attn_norm.weight | size 4096 | type F32 | T+ 6\n","[229/291] Writing tensor blk.25.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 6\n","[230/291] Writing tensor blk.25.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 6\n","[231/291] Writing tensor blk.25.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 6\n","[232/291] Writing tensor blk.25.ffn_norm.weight | size 4096 | type F32 | T+ 6\n","[233/291] Writing tensor blk.25.attn_k.weight | size 4096 x 4096 | type F16 | T+ 6\n","[234/291] Writing tensor blk.25.attn_output.weight | size 4096 x 4096 | type F16 | T+ 6\n","[235/291] Writing tensor blk.25.attn_q.weight | size 4096 x 4096 | type F16 | T+ 6\n","[236/291] Writing tensor blk.25.attn_v.weight | size 4096 x 4096 | type F16 | T+ 6\n","[237/291] Writing tensor blk.26.attn_norm.weight | size 4096 | type F32 | T+ 6\n","[238/291] Writing tensor blk.26.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 6\n","[239/291] Writing tensor blk.26.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 6\n","[240/291] Writing tensor blk.26.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 6\n","[241/291] Writing tensor blk.26.ffn_norm.weight | size 4096 | type F32 | T+ 6\n","[242/291] Writing tensor blk.26.attn_k.weight | size 4096 x 4096 | type F16 | T+ 6\n","[243/291] Writing tensor blk.26.attn_output.weight | size 4096 x 4096 | type F16 | T+ 6\n","[244/291] Writing tensor blk.26.attn_q.weight | size 4096 x 4096 | type F16 | T+ 6\n","[245/291] Writing tensor blk.26.attn_v.weight | size 4096 x 4096 | type F16 | T+ 6\n","[246/291] Writing tensor blk.27.attn_norm.weight | size 4096 | type F32 | T+ 6\n","[247/291] Writing tensor blk.27.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 6\n","[248/291] Writing tensor blk.27.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 6\n","[249/291] Writing tensor blk.27.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 6\n","[250/291] Writing tensor blk.27.ffn_norm.weight | size 4096 | type F32 | T+ 6\n","[251/291] Writing tensor blk.27.attn_k.weight | size 4096 x 4096 | type F16 | T+ 6\n","[252/291] Writing tensor blk.27.attn_output.weight | size 4096 x 4096 | type F16 | T+ 6\n","[253/291] Writing tensor blk.27.attn_q.weight | size 4096 x 4096 | type F16 | T+ 6\n","[254/291] Writing tensor blk.27.attn_v.weight | size 4096 x 4096 | type F16 | T+ 6\n","[255/291] Writing tensor blk.28.attn_norm.weight | size 4096 | type F32 | T+ 6\n","[256/291] Writing tensor blk.28.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 6\n","[257/291] Writing tensor blk.28.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 6\n","[258/291] Writing tensor blk.28.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 6\n","[259/291] Writing tensor blk.28.ffn_norm.weight | size 4096 | type F32 | T+ 6\n","[260/291] Writing tensor blk.28.attn_k.weight | size 4096 x 4096 | type F16 | T+ 6\n","[261/291] Writing tensor blk.28.attn_output.weight | size 4096 x 4096 | type F16 | T+ 6\n","[262/291] Writing tensor blk.28.attn_q.weight | size 4096 x 4096 | type F16 | T+ 6\n","[263/291] Writing tensor blk.28.attn_v.weight | size 4096 x 4096 | type F16 | T+ 6\n","[264/291] Writing tensor blk.29.attn_norm.weight | size 4096 | type F32 | T+ 7\n","[265/291] Writing tensor blk.29.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 7\n","[266/291] Writing tensor blk.29.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 7\n","[267/291] Writing tensor blk.29.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 7\n","[268/291] Writing tensor blk.29.ffn_norm.weight | size 4096 | type F32 | T+ 7\n","[269/291] Writing tensor blk.29.attn_k.weight | size 4096 x 4096 | type F16 | T+ 7\n","[270/291] Writing tensor blk.29.attn_output.weight | size 4096 x 4096 | type F16 | T+ 7\n","[271/291] Writing tensor blk.29.attn_q.weight | size 4096 x 4096 | type F16 | T+ 7\n","[272/291] Writing tensor blk.29.attn_v.weight | size 4096 x 4096 | type F16 | T+ 7\n","[273/291] Writing tensor blk.30.attn_norm.weight | size 4096 | type F32 | T+ 7\n","[274/291] Writing tensor blk.30.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 7\n","[275/291] Writing tensor blk.30.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 7\n","[276/291] Writing tensor blk.30.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 7\n","[277/291] Writing tensor blk.30.ffn_norm.weight | size 4096 | type F32 | T+ 7\n","[278/291] Writing tensor blk.30.attn_k.weight | size 4096 x 4096 | type F16 | T+ 7\n","[279/291] Writing tensor blk.30.attn_output.weight | size 4096 x 4096 | type F16 | T+ 7\n","[280/291] Writing tensor blk.30.attn_q.weight | size 4096 x 4096 | type F16 | T+ 7\n","[281/291] Writing tensor blk.30.attn_v.weight | size 4096 x 4096 | type F16 | T+ 7\n","[282/291] Writing tensor blk.31.attn_norm.weight | size 4096 | type F32 | T+ 7\n","[283/291] Writing tensor blk.31.ffn_down.weight | size 4096 x 11008 | type F16 | T+ 7\n","[284/291] Writing tensor blk.31.ffn_gate.weight | size 11008 x 4096 | type F16 | T+ 7\n","[285/291] Writing tensor blk.31.ffn_up.weight | size 11008 x 4096 | type F16 | T+ 7\n","[286/291] Writing tensor blk.31.ffn_norm.weight | size 4096 | type F32 | T+ 7\n","[287/291] Writing tensor blk.31.attn_k.weight | size 4096 x 4096 | type F16 | T+ 7\n","[288/291] Writing tensor blk.31.attn_output.weight | size 4096 x 4096 | type F16 | T+ 7\n","[289/291] Writing tensor blk.31.attn_q.weight | size 4096 x 4096 | type F16 | T+ 7\n","[290/291] Writing tensor blk.31.attn_v.weight | size 4096 x 4096 | type F16 | T+ 7\n","[291/291] Writing tensor output_norm.weight | size 4096 | type F32 | T+ 7\n","Wrote llama-2-7b-combined_datasets/llama-2-7b-combined_datasets.fp16.bin\n"]}],"source":["# Convert to fp16\n","fp16 = f\"{MODEL_NAME}/{MODEL_NAME.lower()}.fp16.bin\"\n","!python llama.cpp/convert.py {MODEL_NAME} --outtype f16 --outfile {fp16}"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":752625,"status":"ok","timestamp":1707925277694,"user":{"displayName":"szehanz","userId":"16137883221268059572"},"user_tz":-480},"id":"mw5y-GWdkbx6","outputId":"4b95a5a4-b44c-413b-ca05-621d0f935d0f"},"outputs":[{"name":"stdout","output_type":"stream","text":["FP16 file created successfully: llama-2-7b-combined_datasets/llama-2-7b-combined_datasets.fp16.bin\n","ggml_init_cublas: GGML_CUDA_FORCE_MMQ: no\n","ggml_init_cublas: CUDA_USE_TENSOR_CORES: yes\n","ggml_init_cublas: found 1 CUDA devices:\n"," Device 0: Tesla T4, compute capability 7.5, VMM: yes\n","main: build = 2203 (9d679f0f)\n","main: built with cc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0 for x86_64-linux-gnu\n","main: quantizing 'llama-2-7b-combined_datasets/llama-2-7b-combined_datasets.fp16.bin' to 'llama-2-7b-combined_datasets/llama-2-7b-combined_datasets.Q5_K_M.gguf' as Q5_K_M\n","llama_model_loader: loaded meta data with 23 key-value pairs and 291 tensors from llama-2-7b-combined_datasets/llama-2-7b-combined_datasets.fp16.bin (version GGUF V3 (latest))\n","llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.\n","llama_model_loader: - kv 0: general.architecture str = llama\n","llama_model_loader: - kv 1: general.name str = LLaMA v2\n","llama_model_loader: - kv 2: llama.context_length u32 = 4096\n","llama_model_loader: - kv 3: llama.embedding_length u32 = 4096\n","llama_model_loader: - kv 4: llama.block_count u32 = 32\n","llama_model_loader: - kv 5: llama.feed_forward_length u32 = 11008\n","llama_model_loader: - kv 6: llama.rope.dimension_count u32 = 128\n","llama_model_loader: - kv 7: llama.attention.head_count u32 = 32\n","llama_model_loader: - kv 8: llama.attention.head_count_kv u32 = 32\n","llama_model_loader: - kv 9: llama.attention.layer_norm_rms_epsilon f32 = 0.000010\n","llama_model_loader: - kv 10: llama.rope.freq_base f32 = 10000.000000\n","llama_model_loader: - kv 11: general.file_type u32 = 1\n","llama_model_loader: - kv 12: tokenizer.ggml.model str = llama\n","llama_model_loader: - kv 13: tokenizer.ggml.tokens arr[str,32000] = [\"\", \"\", \"\", \"<0x00>\", \"<...\n","llama_model_loader: - kv 14: tokenizer.ggml.scores arr[f32,32000] = [0.000000, 0.000000, 0.000000, 0.0000...\n","llama_model_loader: - kv 15: tokenizer.ggml.token_type arr[i32,32000] = [2, 3, 3, 6, 6, 6, 6, 6, 6, 6, 6, 6, ...\n","llama_model_loader: - kv 16: tokenizer.ggml.bos_token_id u32 = 1\n","llama_model_loader: - kv 17: tokenizer.ggml.eos_token_id u32 = 2\n","llama_model_loader: - kv 18: tokenizer.ggml.unknown_token_id u32 = 0\n","llama_model_loader: - kv 19: tokenizer.ggml.padding_token_id u32 = 2\n","llama_model_loader: - kv 20: tokenizer.ggml.add_bos_token bool = true\n","llama_model_loader: - kv 21: tokenizer.ggml.add_eos_token bool = false\n","llama_model_loader: - kv 22: tokenizer.chat_template str = {% if messages[0]['role'] == 'system'...\n","llama_model_loader: - type f32: 65 tensors\n","llama_model_loader: - type f16: 226 tensors\n","llama_model_quantize_internal: meta size = 742080 bytes\n","[ 1/ 291] token_embd.weight - [ 4096, 32000, 1, 1], type = f16, quantizing to q5_K .. size = 250.00 MiB -> 85.94 MiB\n","[ 2/ 291] blk.0.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 3/ 291] blk.0.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 86.00 MiB -> 35.27 MiB\n","[ 4/ 291] blk.0.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 5/ 291] blk.0.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 6/ 291] blk.0.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 7/ 291] blk.0.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 8/ 291] blk.0.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 9/ 291] blk.0.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 10/ 291] blk.0.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 32.00 MiB -> 13.12 MiB\n","[ 11/ 291] blk.1.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 12/ 291] blk.1.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 86.00 MiB -> 35.27 MiB\n","[ 13/ 291] blk.1.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 14/ 291] blk.1.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 15/ 291] blk.1.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 16/ 291] blk.1.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 17/ 291] blk.1.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 18/ 291] blk.1.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 19/ 291] blk.1.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 32.00 MiB -> 13.12 MiB\n","[ 20/ 291] blk.10.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 21/ 291] blk.10.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 86.00 MiB -> 35.27 MiB\n","[ 22/ 291] blk.10.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 23/ 291] blk.10.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 24/ 291] blk.10.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 25/ 291] blk.10.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 26/ 291] blk.10.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 27/ 291] blk.10.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 28/ 291] blk.10.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 32.00 MiB -> 13.12 MiB\n","[ 29/ 291] blk.11.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 30/ 291] blk.11.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 31/ 291] blk.11.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 32/ 291] blk.11.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 33/ 291] blk.11.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 32.00 MiB -> 13.12 MiB\n","[ 34/ 291] blk.2.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 35/ 291] blk.2.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 86.00 MiB -> 35.27 MiB\n","[ 36/ 291] blk.2.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 37/ 291] blk.2.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 38/ 291] blk.2.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 39/ 291] blk.2.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 40/ 291] blk.2.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 41/ 291] blk.2.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 42/ 291] blk.2.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 43/ 291] blk.3.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 44/ 291] blk.3.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 45/ 291] blk.3.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 46/ 291] blk.3.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 47/ 291] blk.3.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 48/ 291] blk.3.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 49/ 291] blk.3.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 50/ 291] blk.3.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 51/ 291] blk.3.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 52/ 291] blk.4.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 53/ 291] blk.4.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 54/ 291] blk.4.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 55/ 291] blk.4.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 56/ 291] blk.4.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 57/ 291] blk.4.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 58/ 291] blk.4.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 59/ 291] blk.4.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 60/ 291] blk.4.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 32.00 MiB -> 13.12 MiB\n","[ 61/ 291] blk.5.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 62/ 291] blk.5.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 86.00 MiB -> 35.27 MiB\n","[ 63/ 291] blk.5.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 64/ 291] blk.5.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 65/ 291] blk.5.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 66/ 291] blk.5.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 67/ 291] blk.5.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 68/ 291] blk.5.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 69/ 291] blk.5.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 70/ 291] blk.6.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 71/ 291] blk.6.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 72/ 291] blk.6.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 73/ 291] blk.6.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 74/ 291] blk.6.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 75/ 291] blk.6.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 76/ 291] blk.6.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 77/ 291] blk.6.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 78/ 291] blk.6.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 79/ 291] blk.7.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 80/ 291] blk.7.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 81/ 291] blk.7.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 82/ 291] blk.7.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 83/ 291] blk.7.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 84/ 291] blk.7.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 85/ 291] blk.7.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 86/ 291] blk.7.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 87/ 291] blk.7.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 32.00 MiB -> 13.12 MiB\n","[ 88/ 291] blk.8.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 89/ 291] blk.8.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 86.00 MiB -> 35.27 MiB\n","[ 90/ 291] blk.8.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 91/ 291] blk.8.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 92/ 291] blk.8.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 93/ 291] blk.8.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 94/ 291] blk.8.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 95/ 291] blk.8.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 96/ 291] blk.8.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 97/ 291] blk.9.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 98/ 291] blk.9.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 99/ 291] blk.9.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 100/ 291] blk.9.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 101/ 291] blk.9.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 102/ 291] blk.9.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 103/ 291] blk.9.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 104/ 291] blk.9.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 105/ 291] blk.9.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 106/ 291] blk.11.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 107/ 291] blk.11.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 108/ 291] blk.11.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 109/ 291] blk.11.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 110/ 291] blk.12.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 111/ 291] blk.12.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 86.00 MiB -> 35.27 MiB\n","[ 112/ 291] blk.12.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 113/ 291] blk.12.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 114/ 291] blk.12.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 115/ 291] blk.12.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 116/ 291] blk.12.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 117/ 291] blk.12.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 118/ 291] blk.12.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 32.00 MiB -> 13.12 MiB\n","[ 119/ 291] blk.13.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 120/ 291] blk.13.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 121/ 291] blk.13.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 122/ 291] blk.13.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 123/ 291] blk.13.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 124/ 291] blk.13.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 125/ 291] blk.13.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 126/ 291] blk.13.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 127/ 291] blk.13.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 128/ 291] blk.14.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 129/ 291] blk.14.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 130/ 291] blk.14.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 131/ 291] blk.14.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 132/ 291] blk.14.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 133/ 291] blk.14.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 134/ 291] blk.14.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 135/ 291] blk.14.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 136/ 291] blk.14.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 137/ 291] blk.15.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 138/ 291] blk.15.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 86.00 MiB -> 35.27 MiB\n","[ 139/ 291] blk.15.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 140/ 291] blk.15.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 141/ 291] blk.15.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 142/ 291] blk.15.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 143/ 291] blk.15.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 144/ 291] blk.15.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 145/ 291] blk.15.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 32.00 MiB -> 13.12 MiB\n","[ 146/ 291] blk.16.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 147/ 291] blk.16.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 148/ 291] blk.16.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 149/ 291] blk.16.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 150/ 291] blk.16.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 151/ 291] blk.16.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 152/ 291] blk.16.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 153/ 291] blk.16.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 154/ 291] blk.16.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 155/ 291] blk.17.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 156/ 291] blk.17.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 157/ 291] blk.17.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 158/ 291] blk.17.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 159/ 291] blk.17.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 160/ 291] blk.17.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 161/ 291] blk.17.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 162/ 291] blk.17.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 163/ 291] blk.17.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 164/ 291] blk.18.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 165/ 291] blk.18.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 86.00 MiB -> 35.27 MiB\n","[ 166/ 291] blk.18.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 167/ 291] blk.18.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 168/ 291] blk.18.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 169/ 291] blk.18.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 170/ 291] blk.18.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 171/ 291] blk.18.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 172/ 291] blk.18.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 32.00 MiB -> 13.12 MiB\n","[ 173/ 291] blk.19.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 174/ 291] blk.19.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 175/ 291] blk.19.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 176/ 291] blk.19.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 177/ 291] blk.19.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 178/ 291] blk.19.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 179/ 291] blk.19.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 180/ 291] blk.19.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 181/ 291] blk.19.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 182/ 291] blk.20.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 183/ 291] blk.20.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 184/ 291] blk.20.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 185/ 291] blk.20.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 186/ 291] blk.20.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 187/ 291] blk.20.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 188/ 291] blk.20.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 189/ 291] blk.20.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 190/ 291] blk.20.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 191/ 291] blk.21.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 192/ 291] blk.21.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 86.00 MiB -> 35.27 MiB\n","[ 193/ 291] blk.21.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 194/ 291] blk.21.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 195/ 291] blk.21.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 196/ 291] blk.21.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 197/ 291] blk.21.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 198/ 291] blk.21.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 199/ 291] blk.21.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 32.00 MiB -> 13.12 MiB\n","[ 200/ 291] blk.22.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 201/ 291] blk.22.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 202/ 291] blk.22.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 203/ 291] blk.22.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 204/ 291] blk.22.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 205/ 291] blk.22.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 206/ 291] blk.22.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 207/ 291] blk.22.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 208/ 291] blk.22.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 209/ 291] blk.23.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 210/ 291] blk.23.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 211/ 291] blk.23.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 212/ 291] blk.23.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 213/ 291] blk.23.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 214/ 291] blk.23.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 215/ 291] output.weight - [ 4096, 32000, 1, 1], type = f16, quantizing to q6_K .. size = 250.00 MiB -> 102.54 MiB\n","[ 216/ 291] blk.23.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 217/ 291] blk.23.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 218/ 291] blk.23.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 219/ 291] blk.24.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 220/ 291] blk.24.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 86.00 MiB -> 35.27 MiB\n","[ 221/ 291] blk.24.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 222/ 291] blk.24.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 223/ 291] blk.24.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 224/ 291] blk.24.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 225/ 291] blk.24.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 226/ 291] blk.24.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 227/ 291] blk.24.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 32.00 MiB -> 13.12 MiB\n","[ 228/ 291] blk.25.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 229/ 291] blk.25.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 230/ 291] blk.25.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 231/ 291] blk.25.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 232/ 291] blk.25.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 233/ 291] blk.25.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 234/ 291] blk.25.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 235/ 291] blk.25.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 236/ 291] blk.25.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 237/ 291] blk.26.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 238/ 291] blk.26.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 239/ 291] blk.26.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 240/ 291] blk.26.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 241/ 291] blk.26.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 242/ 291] blk.26.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 243/ 291] blk.26.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 244/ 291] blk.26.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 245/ 291] blk.26.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 246/ 291] blk.27.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 247/ 291] blk.27.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 86.00 MiB -> 35.27 MiB\n","[ 248/ 291] blk.27.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 249/ 291] blk.27.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 250/ 291] blk.27.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 251/ 291] blk.27.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 252/ 291] blk.27.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 253/ 291] blk.27.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 254/ 291] blk.27.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 32.00 MiB -> 13.12 MiB\n","[ 255/ 291] blk.28.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 256/ 291] blk.28.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 86.00 MiB -> 35.27 MiB\n","[ 257/ 291] blk.28.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 258/ 291] blk.28.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 259/ 291] blk.28.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 260/ 291] blk.28.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 261/ 291] blk.28.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 262/ 291] blk.28.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 263/ 291] blk.28.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 32.00 MiB -> 13.12 MiB\n","[ 264/ 291] blk.29.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 265/ 291] blk.29.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 86.00 MiB -> 35.27 MiB\n","[ 266/ 291] blk.29.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 267/ 291] blk.29.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 268/ 291] blk.29.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 269/ 291] blk.29.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 270/ 291] blk.29.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 271/ 291] blk.29.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 272/ 291] blk.29.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 32.00 MiB -> 13.12 MiB\n","[ 273/ 291] blk.30.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 274/ 291] blk.30.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 86.00 MiB -> 35.27 MiB\n","[ 275/ 291] blk.30.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 276/ 291] blk.30.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 277/ 291] blk.30.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 278/ 291] blk.30.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 279/ 291] blk.30.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 280/ 291] blk.30.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 281/ 291] blk.30.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 32.00 MiB -> 13.12 MiB\n","[ 282/ 291] blk.31.attn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 283/ 291] blk.31.ffn_down.weight - [11008, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 86.00 MiB -> 35.27 MiB\n","[ 284/ 291] blk.31.ffn_gate.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 285/ 291] blk.31.ffn_up.weight - [ 4096, 11008, 1, 1], type = f16, quantizing to q5_K .. size = 86.00 MiB -> 29.56 MiB\n","[ 286/ 291] blk.31.ffn_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","[ 287/ 291] blk.31.attn_k.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 288/ 291] blk.31.attn_output.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 289/ 291] blk.31.attn_q.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q5_K .. size = 32.00 MiB -> 11.00 MiB\n","[ 290/ 291] blk.31.attn_v.weight - [ 4096, 4096, 1, 1], type = f16, quantizing to q6_K .. size = 32.00 MiB -> 13.12 MiB\n","[ 291/ 291] output_norm.weight - [ 4096, 1, 1, 1], type = f32, size = 0.016 MB\n","llama_model_quantize_internal: model size = 12853.02 MB\n","llama_model_quantize_internal: quant size = 4560.87 MB\n","\n","main: quantize time = 27944.02 ms\n","main: total time = 27944.02 ms\n"]}],"source":["# Verify creation of FP16 file and quantize the model for specified methods.\n","# First, check if the FP16 model file exists, indicating successful conversion.\n","# If the file does not exist, terminate the script to prevent further errors.\n","# Then, for each quantization method listed, perform model quantization,\n","# generating a quantized model file for each method.\n","\n","\n","if os.path.exists(fp16):\n"," print(f\"FP16 file created successfully: {fp16}\")\n","else:\n"," print(f\"Failed to create FP16 file at: {fp16}\")\n"," import sys\n"," sys.exit(\"Stopping script due to missing FP16 file.\")\n","\n","\n","# Quantize the model using specified methods\n","for method in QUANTIZATION_METHODS:\n"," qtype = f\"{MODEL_NAME}/{MODEL_NAME.lower()}.{method.upper()}.gguf\"\n"," !./llama.cpp/quantize {fp16} {qtype} {method}"]},{"cell_type":"markdown","metadata":{"id":"WqI1CPiXI4dP"},"source":["## Run inference\n","\n","Below is a script to run our quantized model. We are offloading every layer to the GPU (33 for a 7b parameter model) to speed up inference."]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":64968,"status":"ok","timestamp":1707925342654,"user":{"displayName":"szehanz","userId":"16137883221268059572"},"user_tz":-480},"id":"vNPL9WYg78l-","outputId":"16ef6d44-0eda-4b35-e4eb-d4eb9ac083a3"},"outputs":[{"name":"stdin","output_type":"stream","text":["Enter your prompt: what is deep learning\n"]},{"name":"stdout","output_type":"stream","text":["Log start\n","main: build = 2203 (9d679f0f)\n","main: built with cc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0 for x86_64-linux-gnu\n","main: seed = 1708358764\n","ggml_init_cublas: GGML_CUDA_FORCE_MMQ: no\n","ggml_init_cublas: CUDA_USE_TENSOR_CORES: yes\n","ggml_init_cublas: found 1 CUDA devices:\n"," Device 0: Tesla T4, compute capability 7.5, VMM: yes\n","llama_model_loader: loaded meta data with 24 key-value pairs and 291 tensors from llama-2-7b-combined_datasets/llama-2-7b-combined_datasets.Q5_K_M.gguf (version GGUF V3 (latest))\n","llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.\n","llama_model_loader: - kv 0: general.architecture str = llama\n","llama_model_loader: - kv 1: general.name str = LLaMA v2\n","llama_model_loader: - kv 2: llama.context_length u32 = 4096\n","llama_model_loader: - kv 3: llama.embedding_length u32 = 4096\n","llama_model_loader: - kv 4: llama.block_count u32 = 32\n","llama_model_loader: - kv 5: llama.feed_forward_length u32 = 11008\n","llama_model_loader: - kv 6: llama.rope.dimension_count u32 = 128\n","llama_model_loader: - kv 7: llama.attention.head_count u32 = 32\n","llama_model_loader: - kv 8: llama.attention.head_count_kv u32 = 32\n","llama_model_loader: - kv 9: llama.attention.layer_norm_rms_epsilon f32 = 0.000010\n","llama_model_loader: - kv 10: llama.rope.freq_base f32 = 10000.000000\n","llama_model_loader: - kv 11: general.file_type u32 = 17\n","llama_model_loader: - kv 12: tokenizer.ggml.model str = llama\n","llama_model_loader: - kv 13: tokenizer.ggml.tokens arr[str,32000] = [\"\", \"\", \"\", \"<0x00>\", \"<...\n","llama_model_loader: - kv 14: tokenizer.ggml.scores arr[f32,32000] = [0.000000, 0.000000, 0.000000, 0.0000...\n","llama_model_loader: - kv 15: tokenizer.ggml.token_type arr[i32,32000] = [2, 3, 3, 6, 6, 6, 6, 6, 6, 6, 6, 6, ...\n","llama_model_loader: - kv 16: tokenizer.ggml.bos_token_id u32 = 1\n","llama_model_loader: - kv 17: tokenizer.ggml.eos_token_id u32 = 2\n","llama_model_loader: - kv 18: tokenizer.ggml.unknown_token_id u32 = 0\n","llama_model_loader: - kv 19: tokenizer.ggml.padding_token_id u32 = 2\n","llama_model_loader: - kv 20: tokenizer.ggml.add_bos_token bool = true\n","llama_model_loader: - kv 21: tokenizer.ggml.add_eos_token bool = false\n","llama_model_loader: - kv 22: tokenizer.chat_template str = {% if messages[0]['role'] == 'system'...\n","llama_model_loader: - kv 23: general.quantization_version u32 = 2\n","llama_model_loader: - type f32: 65 tensors\n","llama_model_loader: - type q5_K: 193 tensors\n","llama_model_loader: - type q6_K: 33 tensors\n","llm_load_vocab: special tokens definition check successful ( 259/32000 ).\n","llm_load_print_meta: format = GGUF V3 (latest)\n","llm_load_print_meta: arch = llama\n","llm_load_print_meta: vocab type = SPM\n","llm_load_print_meta: n_vocab = 32000\n","llm_load_print_meta: n_merges = 0\n","llm_load_print_meta: n_ctx_train = 4096\n","llm_load_print_meta: n_embd = 4096\n","llm_load_print_meta: n_head = 32\n","llm_load_print_meta: n_head_kv = 32\n","llm_load_print_meta: n_layer = 32\n","llm_load_print_meta: n_rot = 128\n","llm_load_print_meta: n_embd_head_k = 128\n","llm_load_print_meta: n_embd_head_v = 128\n","llm_load_print_meta: n_gqa = 1\n","llm_load_print_meta: n_embd_k_gqa = 4096\n","llm_load_print_meta: n_embd_v_gqa = 4096\n","llm_load_print_meta: f_norm_eps = 0.0e+00\n","llm_load_print_meta: f_norm_rms_eps = 1.0e-05\n","llm_load_print_meta: f_clamp_kqv = 0.0e+00\n","llm_load_print_meta: f_max_alibi_bias = 0.0e+00\n","llm_load_print_meta: n_ff = 11008\n","llm_load_print_meta: n_expert = 0\n","llm_load_print_meta: n_expert_used = 0\n","llm_load_print_meta: rope scaling = linear\n","llm_load_print_meta: freq_base_train = 10000.0\n","llm_load_print_meta: freq_scale_train = 1\n","llm_load_print_meta: n_yarn_orig_ctx = 4096\n","llm_load_print_meta: rope_finetuned = unknown\n","llm_load_print_meta: model type = 7B\n","llm_load_print_meta: model ftype = Q5_K - Medium\n","llm_load_print_meta: model params = 6.74 B\n","llm_load_print_meta: model size = 4.45 GiB (5.68 BPW) \n","llm_load_print_meta: general.name = LLaMA v2\n","llm_load_print_meta: BOS token = 1 ''\n","llm_load_print_meta: EOS token = 2 ''\n","llm_load_print_meta: UNK token = 0 ''\n","llm_load_print_meta: PAD token = 2 ''\n","llm_load_print_meta: LF token = 13 '<0x0A>'\n","llm_load_tensors: ggml ctx size = 0.22 MiB\n","llm_load_tensors: offloading 32 repeating layers to GPU\n","llm_load_tensors: offloading non-repeating layers to GPU\n","llm_load_tensors: offloaded 33/33 layers to GPU\n","llm_load_tensors: CPU buffer size = 85.94 MiB\n","llm_load_tensors: CUDA0 buffer size = 4474.94 MiB\n","..................................................................................................\n","llama_new_context_with_model: n_ctx = 512\n","llama_new_context_with_model: freq_base = 10000.0\n","llama_new_context_with_model: freq_scale = 1\n","llama_kv_cache_init: CUDA0 KV buffer size = 256.00 MiB\n","llama_new_context_with_model: KV self size = 256.00 MiB, K (f16): 128.00 MiB, V (f16): 128.00 MiB\n","llama_new_context_with_model: CUDA_Host input buffer size = 10.01 MiB\n","llama_new_context_with_model: CUDA0 compute buffer size = 70.50 MiB\n","llama_new_context_with_model: CUDA_Host compute buffer size = 8.00 MiB\n","llama_new_context_with_model: graph splits (measure): 3\n","\n","system_info: n_threads = 24 / 48 | AVX = 1 | AVX_VNNI = 0 | AVX2 = 1 | AVX512 = 1 | AVX512_VBMI = 0 | AVX512_VNNI = 1 | FMA = 1 | NEON = 0 | ARM_FMA = 0 | F16C = 1 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 1 | SSE3 = 1 | SSSE3 = 1 | VSX = 0 | MATMUL_INT8 = 0 | \n","sampling: \n","\trepeat_last_n = 64, repeat_penalty = 1.100, frequency_penalty = 0.000, presence_penalty = 0.000\n","\ttop_k = 40, tfs_z = 1.000, top_p = 0.950, min_p = 0.050, typical_p = 1.000, temp = 0.800\n","\tmirostat = 0, mirostat_lr = 0.100, mirostat_ent = 5.000\n","sampling order: \n","CFG -> Penalties -> top_k -> tfs_z -> typical_p -> top_p -> min_p -> temperature \n","generate: n_ctx = 512, n_batch = 512, n_predict = 128, n_keep = 0\n","\n","\n","\u001b[33m what is deep learning\u001b[0m in machine learning?\n"," Summarize the key characteristics and applications of deep learning.\n","\n","Deep learning is a subset of machine learning that involves the use of artificial neural networks to model and analyze complex data sets. It is based on the idea that a neural network with multiple layers can learn and represent more abstract and sophisticated patterns in data than a single-layer network. Deep learning has been successful in solving many challenging tasks in computer vision, natural language processing, speech recognition, and other areas of machine learning.\n","\n","Key characteristics of deep learning:\n","\n","1. Multi-layered neural networks: Deep learning\n","llama_print_timings: load time = 895.86 ms\n","llama_print_timings: sample time = 51.51 ms / 128 runs ( 0.40 ms per token, 2485.20 tokens per second)\n","llama_print_timings: prompt eval time = 38.97 ms / 5 tokens ( 7.79 ms per token, 128.32 tokens per second)\n","llama_print_timings: eval time = 3130.83 ms / 127 runs ( 24.65 ms per token, 40.56 tokens per second)\n","llama_print_timings: total time = 3251.49 ms / 132 tokens\n","Log end\n"]}],"source":["# Run text generation using a specific quantized model in llama.cpp.\n","# 1. Prompt the user to enter text for the model to process.\n","# 2. Construct the model file path ('qtype') using MODEL_NAME and a specified quantization method.\n","# 3. Execute the llama.cpp main program with the constructed model path,\n","# setting the number of tokens to generate, enabling color, limiting the number of generated lines,\n","# and using the user-provided prompt.\n","\n","prompt = input(\"Enter your prompt: \")\n","\n","# Construct the path to the model file with the quantization method 'Q5_K_M'\n","qtype = f\"{MODEL_NAME}/{MODEL_NAME.lower()}.Q5_K_M.gguf\"\n","\n","# Execute the llama.cpp main program with specified parameters\n","!./llama.cpp/main -m {qtype} -n 128 --color -ngl 35 -p \"{prompt}\""]},{"cell_type":"markdown","metadata":{"id":"Ar8pO7bb80US"},"source":["## Push to hub"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":188,"referenced_widgets":["042396eff4ce41bf9729880c8dd9144f","88e20b09bb994e0dbd092e3c625d5a1a","0e8715a0c48c4e0883fe45ac9794dc42","67965e7b79f64ec288167f9affb45d81","bfdd34dd4a294d3f9c8bb05b27e108f2","32a0ec8495224b92ad1c48613bc03891","77c4b22e3ed3478487e04edf011475ce","8b949ab00d9c41729973b0c9cc689493","37ea5d15761f44fdbcd1ddb8f582936a","eeee199faf7b4464997f3317f3973a19","306d81e5c3414519b7ccbe2329a1c3be","f79521693d2d42d180534ed94994f6fe"]},"executionInfo":{"elapsed":141900,"status":"ok","timestamp":1707925523299,"user":{"displayName":"szehanz","userId":"16137883221268059572"},"user_tz":-480},"id":"UOyKfUD-8jmh","outputId":"4093844f-7f46-484f-922a-f902fc089242"},"outputs":[{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"f79521693d2d42d180534ed94994f6fe","version_major":2,"version_minor":0},"text/plain":["llama-2-7b-combined_datasets.Q5_K_M.gguf: 0%| | 0.00/4.78G [00:00
Copy a token from your Hugging Face\ntokens page and paste it below.
Immediately click login after copying\nyour token or it might be stored in plain text in this notebook file.
"}},"14d0ff6e07a148c0b65224af86af6b95":{"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":""}},"187745df1f154e7da09a0c646a22cebb":{"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_638517f3c94445c7b610b84744859ef8","placeholder":"​","style":"IPY_MODEL_5206f9fc25234586b735fc9c65e6b19a","value":"generation_config.json: 100%"}},"19b8b7692cfd46eca5abb50ac2854262":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"19d3adedf1a245f69a2498b1838f6415":{"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_31ffba7793b944cd80bec0fb6ac2fbbe","IPY_MODEL_1ae848be349a41239a7ba6efadc82edf","IPY_MODEL_9a33d92ad0604eff9ac56944586facbb"],"layout":"IPY_MODEL_293d425206684064b0572e990a815cee"}},"1ae848be349a41239a7ba6efadc82edf":{"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_8ae8a9d03adc476a8dd64f09e194907d","max":2,"min":0,"orientation":"horizontal","style":"IPY_MODEL_aeb94dbf3f8a4b43bb07c833af3b98c9","value":2}},"1c6e5dd4ca3446ec8cf8a03b85ad57dc":{"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_0786fc506a7640a287016991f57d3768","IPY_MODEL_3af05a188f40469dbd52fda55c7a9e22","IPY_MODEL_0af30e36f2524c1084c1237948f3b18e"],"layout":"IPY_MODEL_dfe1c2648a564676bfe1e09bda61d439"}},"1ea12323b1244c768a17a6ed5420f854":{"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":""}},"1f9e8ddb08814b2db7761478eb9069f5":{"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_7982d1d315964d138f31643db445b48a","max":614,"min":0,"orientation":"horizontal","style":"IPY_MODEL_67346bc716384552a69d1afdc844db00","value":614}},"20cc750b1bde4efdb3c3a5b5321222b4":{"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_a199f20edde447829b17804b17af2fe5","max":188,"min":0,"orientation":"horizontal","style":"IPY_MODEL_447f608108364159ab7ed546ad02559a","value":188}},"21556be54ed34b15b909bf8e7b8fd93a":{"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_b8113970ea7245e9890221d4e4cf5e8e","placeholder":"​","style":"IPY_MODEL_d3224d16458249a3bfd29253c2d6a86f","value":"\nPro Tip: If you don't already have one, you can create a dedicated\n'notebooks' token with 'write' access, that you can then easily reuse for all\nnotebooks. "}},"2254fe28315f43a99c3579195c0c0008":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"22e8bae9ff6744bca3e90d46d220106f":{"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":""}},"23176fa0130348c5bc1b0deb591709f3":{"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":""}},"236b3417f0e94039a1a449e7ab96738b":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"25543b118c8e423aa7fd8c898d5e1256":{"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":""}},"2924e96aa10346efb39684e5369e2170":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"LabelModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"LabelModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"LabelView","description":"","description_tooltip":null,"layout":"IPY_MODEL_bce8d1501218410ba8b042aeb3f0fc26","placeholder":"​","style":"IPY_MODEL_405603de026d484ab283f053f4b17c6d","value":"Your token has been saved to /root/.cache/huggingface/token"}},"293d425206684064b0572e990a815cee":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"29f303aa6ac8464aa91124c3fe659379":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"2cb9cfbde1e0483c97a2c531e0034adf":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"2dce1978d19e4de3a6a1b1cef6ed518f":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"3076e4abb7fe427fa4fccb43e9f3371e":{"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":""}},"30d47a9da70a4cf5a7e597f13d28d526":{"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":""}},"31ffba7793b944cd80bec0fb6ac2fbbe":{"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_7ee17b5879ec4909b7b616b79d5eab36","placeholder":"​","style":"IPY_MODEL_d8b847adb46d4049a4b43bba2a0e06da","value":"Downloading shards: 100%"}},"32a57f9df45b41da91e1d638f531505d":{"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":""}},"3af05a188f40469dbd52fda55c7a9e22":{"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_82829039182948efb800703e3e21d96d","max":26788,"min":0,"orientation":"horizontal","style":"IPY_MODEL_32a57f9df45b41da91e1d638f531505d","value":26788}},"3e4a06b9b13444e3b82e0c3c26e17b8f":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"CheckboxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"CheckboxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"CheckboxView","description":"Add token as git credential?","description_tooltip":null,"disabled":false,"indent":true,"layout":"IPY_MODEL_f91ebc43c1344e8688e2eeb2771c7b65","style":"IPY_MODEL_ea00aa1eb73949fc94083f1d31372915","value":true}},"405603de026d484ab283f053f4b17c6d":{"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":""}},"42262413163d49fd8902c275c13da1e6":{"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_cf370d3015b04b6caa9cbfb8f21dd5e7","placeholder":"​","style":"IPY_MODEL_1ea12323b1244c768a17a6ed5420f854","value":" 9.98G/9.98G [01:29<00:00, 126MB/s]"}},"441c37014e6b4c8995e7a5305f96fa38":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"447f608108364159ab7ed546ad02559a":{"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":""}},"46e41557d0bc4cb4a03c6894fcc57d0e":{"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":""}},"4cee3e23bcbd4643ba542d94b82dbfd2":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"5206f9fc25234586b735fc9c65e6b19a":{"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":""}},"52f2b6adb9904cbeb014387429c0d1ad":{"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_b61ac64b2a0c4beb8ea209782b9dd09b","IPY_MODEL_9e9c2d712ae84d3aa87fbe433ae0701b","IPY_MODEL_fe4d028a78e64a4d8b47f8bc8b8ec15d"],"layout":"IPY_MODEL_88a7aeaf3b2547ea91cf20ed2f1a3dc0"}},"537d173a4313491f8f89f799f1dc7b2a":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"541ef20ab6f34337a2d6d20098f6fef5":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"LabelModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"LabelModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"LabelView","description":"","description_tooltip":null,"layout":"IPY_MODEL_b0f0ac261e364edd99d7b75e747e2c47","placeholder":"​","style":"IPY_MODEL_ff9f726db3434e3184e723d5da884d0a","value":"Token is valid (permission: write)."}},"55e506bd03d24dd7b24129dc64da9c01":{"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":""}},"5e5b95c9801443cdbce9c8e629c33589":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"PasswordModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"PasswordModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"PasswordView","continuous_update":true,"description":"Token:","description_tooltip":null,"disabled":false,"layout":"IPY_MODEL_29f303aa6ac8464aa91124c3fe659379","placeholder":"​","style":"IPY_MODEL_3076e4abb7fe427fa4fccb43e9f3371e","value":""}},"62f1cf19fe204aa4a424248e807ce061":{"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":""}},"638517f3c94445c7b610b84744859ef8":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"6430379d01874ec3a7cf9fea59c42914":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"ButtonModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ButtonModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ButtonView","button_style":"","description":"Login","disabled":false,"icon":"","layout":"IPY_MODEL_2dce1978d19e4de3a6a1b1cef6ed518f","style":"IPY_MODEL_e81c501824f94e7d839684fafbc65b31","tooltip":""}},"67346bc716384552a69d1afdc844db00":{"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":""}},"6edf40f558f54d8b82d949f83557d609":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"LabelModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"LabelModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"LabelView","description":"","description_tooltip":null,"layout":"IPY_MODEL_08400a144d3c497a94ae4d84e72a1067","placeholder":"​","style":"IPY_MODEL_976a3440d2c3423c8be835b0d6f56492","value":"Connecting..."}},"77c0d63f6cd6494daf7e94cfe0397e45":{"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_4cee3e23bcbd4643ba542d94b82dbfd2","placeholder":"​","style":"IPY_MODEL_25543b118c8e423aa7fd8c898d5e1256","value":" 188/188 [00:00<00:00, 12.3kB/s]"}},"77daad9def9f4254933afdeb7202e5d2":{"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":""}},"7982d1d315964d138f31643db445b48a":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"7c701d53772344f6a057cd43742d47f5":{"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_b9e4e59acd4d468393f42857d5635e25","placeholder":"​","style":"IPY_MODEL_30d47a9da70a4cf5a7e597f13d28d526","value":"Loading checkpoint shards: 100%"}},"7ee17b5879ec4909b7b616b79d5eab36":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"8080eb1edf8f44f69b5f218046715f36":{"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_e2df35aaf7e0420b9524d533cb122521","max":2,"min":0,"orientation":"horizontal","style":"IPY_MODEL_d90c3a424bac4bb09e99339c28df2eda","value":2}},"82829039182948efb800703e3e21d96d":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"83127281047a429a846b9bb3b3209760":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"86014f569ee34895badef4acfe958051":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"86616a0d2f9d4da1a75e00d092ca9d4d":{"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_a7a17a5883784ed9961437d0102fd9a4","IPY_MODEL_9934540648a444a09f0783843ab2d901","IPY_MODEL_42262413163d49fd8902c275c13da1e6"],"layout":"IPY_MODEL_83127281047a429a846b9bb3b3209760"}},"88a7aeaf3b2547ea91cf20ed2f1a3dc0":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"8ae8a9d03adc476a8dd64f09e194907d":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"963973c1e970410cb2ba97e9fb4ef511":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"976a3440d2c3423c8be835b0d6f56492":{"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":""}},"9934540648a444a09f0783843ab2d901":{"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_f702ae2d46834e9b934a40abca49a990","max":9976576152,"min":0,"orientation":"horizontal","style":"IPY_MODEL_14d0ff6e07a148c0b65224af86af6b95","value":9976576152}},"9a33d92ad0604eff9ac56944586facbb":{"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_537d173a4313491f8f89f799f1dc7b2a","placeholder":"​","style":"IPY_MODEL_55e506bd03d24dd7b24129dc64da9c01","value":" 2/2 [01:56<00:00, 52.47s/it]"}},"9c7550ec29c34ef2b674a3667ebd740e":{"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_236b3417f0e94039a1a449e7ab96738b","placeholder":"​","style":"IPY_MODEL_77daad9def9f4254933afdeb7202e5d2","value":"config.json: 100%"}},"9e4d26b87e1243f3ae744ddbbe2c5b51":{"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":""}},"9e9c2d712ae84d3aa87fbe433ae0701b":{"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_86014f569ee34895badef4acfe958051","max":3500296424,"min":0,"orientation":"horizontal","style":"IPY_MODEL_22e8bae9ff6744bca3e90d46d220106f","value":3500296424}},"a066a28914bc46cc85ebcb7d90d27fbe":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"a199f20edde447829b17804b17af2fe5":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"a39b2a49ff814181aa0df84c57e9245b":{"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":""}},"a7a17a5883784ed9961437d0102fd9a4":{"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_ae173a50f4374c7fa55d8e360d30d4d1","placeholder":"​","style":"IPY_MODEL_b93a21bcaf6344c49a0ab8e2a887922c","value":"model-00001-of-00002.safetensors: 100%"}},"a7ef8ff133144d4b9817800e5b4739a4":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"a9628200c0a34cccacdb0ea66e200b87":{"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_0cda6495ef4b4c9ab3eeff2392d89163","placeholder":"​","style":"IPY_MODEL_9e4d26b87e1243f3ae744ddbbe2c5b51","value":" 2/2 [00:58<00:00, 26.87s/it]"}},"a96de5c1f80f43d8b0b689d5db0fa248":{"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":""}},"ae173a50f4374c7fa55d8e360d30d4d1":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"aeb94dbf3f8a4b43bb07c833af3b98c9":{"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":""}},"b0f0ac261e364edd99d7b75e747e2c47":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"b4ed4d5e266a4cd5b9011436b4e92951":{"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_7c701d53772344f6a057cd43742d47f5","IPY_MODEL_8080eb1edf8f44f69b5f218046715f36","IPY_MODEL_a9628200c0a34cccacdb0ea66e200b87"],"layout":"IPY_MODEL_2254fe28315f43a99c3579195c0c0008"}},"b577aeffe358446ea41e4b3c58b80641":{"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_441c37014e6b4c8995e7a5305f96fa38","placeholder":"​","style":"IPY_MODEL_a39b2a49ff814181aa0df84c57e9245b","value":" 614/614 [00:00<00:00, 15.7kB/s]"}},"b61ac64b2a0c4beb8ea209782b9dd09b":{"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_a066a28914bc46cc85ebcb7d90d27fbe","placeholder":"​","style":"IPY_MODEL_a96de5c1f80f43d8b0b689d5db0fa248","value":"model-00002-of-00002.safetensors: 100%"}},"b634ae14caf84bc99dcafd3a70b7a383":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"b64f26ac024c46eabfc4728586369130":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"LabelModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"LabelModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"LabelView","description":"","description_tooltip":null,"layout":"IPY_MODEL_a7ef8ff133144d4b9817800e5b4739a4","placeholder":"​","style":"IPY_MODEL_ba4cf32b2f71428282721e7818b34a5a","value":"Login successful"}},"b8113970ea7245e9890221d4e4cf5e8e":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"b93a21bcaf6344c49a0ab8e2a887922c":{"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":""}},"b9e4e59acd4d468393f42857d5635e25":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"ba4cf32b2f71428282721e7818b34a5a":{"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":""}},"bce8d1501218410ba8b042aeb3f0fc26":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"c3d08bc595a74c3180a7a83afc569584":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"VBoxModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"VBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"VBoxView","box_style":"","children":["IPY_MODEL_541ef20ab6f34337a2d6d20098f6fef5","IPY_MODEL_fe46e1cf697f4b1fab764104be32da95","IPY_MODEL_2924e96aa10346efb39684e5369e2170","IPY_MODEL_b64f26ac024c46eabfc4728586369130"],"layout":"IPY_MODEL_cad60b6f14f249c187d573dd3a4428e0"}},"ca8d07b9b454471e883d43e03b475a9f":{"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":""}},"cad60b6f14f249c187d573dd3a4428e0":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":"center","align_self":null,"border":null,"bottom":null,"display":"flex","flex":null,"flex_flow":"column","grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":"50%"}},"cf370d3015b04b6caa9cbfb8f21dd5e7":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"d3224d16458249a3bfd29253c2d6a86f":{"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":""}},"d8b847adb46d4049a4b43bba2a0e06da":{"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":""}},"d90c3a424bac4bb09e99339c28df2eda":{"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":""}},"de756c426cf0492bb122a45b94d4bbe7":{"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":""}},"df0d8231953b44f1bf8e6d2cd39b2f66":{"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_9c7550ec29c34ef2b674a3667ebd740e","IPY_MODEL_1f9e8ddb08814b2db7761478eb9069f5","IPY_MODEL_b577aeffe358446ea41e4b3c58b80641"],"layout":"IPY_MODEL_19b8b7692cfd46eca5abb50ac2854262"}},"dfe1c2648a564676bfe1e09bda61d439":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"e2df35aaf7e0420b9524d533cb122521":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"e81c501824f94e7d839684fafbc65b31":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"ButtonStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ButtonStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","button_color":null,"font_weight":""}},"ea00aa1eb73949fc94083f1d31372915":{"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":""}},"f702ae2d46834e9b934a40abca49a990":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"f81ada25e7ff4f5da6b3f6c6e73590e4":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"f91ebc43c1344e8688e2eeb2771c7b65":{"model_module":"@jupyter-widgets/base","model_module_version":"1.2.0","model_name":"LayoutModel","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"fe46e1cf697f4b1fab764104be32da95":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"LabelModel","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"LabelModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"LabelView","description":"","description_tooltip":null,"layout":"IPY_MODEL_f81ada25e7ff4f5da6b3f6c6e73590e4","placeholder":"​","style":"IPY_MODEL_62f1cf19fe204aa4a424248e807ce061","value":"Your token has been saved in your configured git credential helpers (store)."}},"fe4d028a78e64a4d8b47f8bc8b8ec15d":{"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_b634ae14caf84bc99dcafd3a70b7a383","placeholder":"​","style":"IPY_MODEL_46e41557d0bc4cb4a03c6894fcc57d0e","value":" 3.50G/3.50G [00:26<00:00, 176MB/s]"}},"ff9f726db3434e3184e723d5da884d0a":{"model_module":"@jupyter-widgets/controls","model_module_version":"1.5.0","model_name":"DescriptionStyleModel","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}}}}},"nbformat":4,"nbformat_minor":0} \ No newline at end of file