3 Commits
v2 ... v3

14 changed files with 2432 additions and 112 deletions

4
.gitignore vendored
View File

@@ -3,6 +3,9 @@
cera_hierarchy.html
chromadb/
chromadb_copie_20231230/
chromadb_copie_20240107
chromadb_copie_20240110/
chromadb_copie_20240112/
docs/
gradio_cached_examples/
index/
@@ -12,3 +15,4 @@ index_cera2_distiluse/
__pycache__/
chromadbtest/
rag.log
embedding.log

3
PAD
View File

@@ -66,4 +66,7 @@ pip install -U sentence-transformers
pip install streamlit
pip install rank-bm25
python -m streamlit run app.py

11
app.py
View File

@@ -6,10 +6,11 @@ import logging
@st.cache_resource
def init_rag():
llm_model_path = '/Users/peportier/llm/a/a/zephyr-7b-beta.Q5_K_M.gguf'
embed_model_name = 'intfloat/multilingual-e5-large'
# embed_model_name = 'intfloat/multilingual-e5-large'
embed_model_name = 'dangvantuan/sentence-camembert-large'
collection_name = 'cera'
chromadb_path = './chromadb'
rag = RAG(llm_model_path, embed_model_name, collection_name, chromadb_path)
rag = RAG(llm_model_path, embed_model_name, collection_name, chromadb_path, mulitlingual_e5=False)
return rag
rag = init_rag()
@@ -31,7 +32,7 @@ if prompt := st.chat_input("Comment puis-je vous aider ?"):
st.session_state.messages.append({"role": "user", "content": prompt})
with st.chat_message("user"):
st.markdown(prompt)
with st.chat_message("assistant"):
message_placeholder = st.empty()
full_response = ""
@@ -44,5 +45,5 @@ if prompt := st.chat_input("Comment puis-je vous aider ?"):
# markdown_urls = "\n".join([f"- {url}" for url in urls])
# logging.info(f"URLs: \n{markdown_urls}")
# message_placeholder.markdown(markdown_urls)
st.session_state.messages.append({"role": "assistant", "content": full_response})
st.session_state.messages.append({"role": "assistant", "content": full_response})

View File

@@ -18,4 +18,16 @@ ans2 = rag.chat(query2, stream=True)
#
# Quel est le risque de perte attaché à la détention de Parts Sociales ?
#
# Comment procéder pour déclarer un sinistre habitation ? ou Comment procéder pour déclarer un sinistre Visa Premier ?
# Comment procéder pour déclarer un sinistre habitation ?
# Comment procéder pour déclarer un sinistre Visa Premier ?
# Combien de clients sociétaires compte la CERA ?
# Quel est le plafond d'impôts à ne pas dépasser pour pouvoir bénéficier d'un livret d'épargne populaire ?
# Mon client a 36 ans, peut-elle ouvrir un livret jeune ?
# Mon client a un revenu fiscal de 23000 euros, il est célibataire, peut-il ouvrir un livret d'épargne populaire ?
# Quel est le plafond du revenu fiscal de référence pour le livret d'épargne populaire ?

103
debug2.py Normal file
View File

@@ -0,0 +1,103 @@
from bs4 import BeautifulSoup
import base64
import re
from transformers import AutoTokenizer
import logging
import os
html_folder_path = '../scrapcera/htmls/'
txt_folder_path = '../scrapcera/docs/'
for html_filename in ['dd0a2ca5ac.html']: # os.listdir(html_folder_path):
html_file_path = os.path.join(html_folder_path, html_filename)
txt_filename = re.sub(r'\.html', '.txt', html_filename)
txt_file_path = os.path.join(txt_folder_path, txt_filename)
with open(txt_file_path, 'r') as file:
txt_file_contents = file.read()
url = txt_file_contents.split('\n')[0]
if '?' in url: # URLs with a '?' corresponds to call to services and have no useful content
continue
if not url.startswith('https://www.caisse-epargne.fr/rhone-alpes/'):
continue
prefix = 'https://www.caisse-epargne.fr/'
suffix = url.replace(prefix, '')
tags = suffix.split('/')
tags = [tag for tag in tags if tag] # remove empty par
with open(html_file_path, 'r') as file:
html_file_contents = file.read()
soup = BeautifulSoup(html_file_contents, 'html.parser')
page_title_present = soup.find('section').find('h1')
if not page_title_present:
continue
page_title = page_title_present.get_text()
sections = soup.find_all(lambda tag: tag.name in ['section'])
struct_page = {'title': page_title}
current_section = ''
titles = [page_title]
for section in sections:
# breakpoint()
if 'key-informations' in section.get('class', []):
key_items = []
for key_item in section.find_all('div', class_='container-block'):
key_item_text = ''
for key_item_title in key_item.find_all('div', class_='button'):
key_item_text += key_item_title.get_text().strip()
for key_item_desc in key_item.find_all('div', class_="tab-panel"):
key_item_text += ' ' + key_item_desc.get_text().strip()
if len(key_item_text) > 0:
key_items.append(key_item_text)
if len(key_items) > 0:
struct_page['Les points clés'] = key_items
continue
for wysiwyg_tag in section.find_all(class_="wysiwyg"):
# Check for a title within the wysiwyg container
internal_title = wysiwyg_tag.find(['h1', 'h2', 'h3', 'h4', 'h5', 'h6']) or wysiwyg_tag.find('p', class_='title')
if internal_title:
title_tag = internal_title
title = internal_title.get_text().strip()
title = re.sub(r'\(\d\)', '', title)
title = re.sub(r'^\d+\.\s*', '', title)
titles.append(title)
current_section = title
else: # If no internal title, find the nearest title from previous tags
title_tag = None
current_section = titles[-1]
# nearest_title = None
# for previous in wysiwyg_tag.find_all_previous():
# if previous.name in ['h1', 'h2', 'h3', 'h4', 'h5', 'h6']:
# nearest_title = previous.get_text().strip()
# break
# if previous.name == 'p' and 'title' in previous.get('class', []):
# nearest_title = previous.get_text().strip()
# break
# if nearest_title:
# title_tag = previous
# nearest_title = re.sub(r'\(\d\)', '', nearest_title)
# nearest_title = re.sub(r'^\d+\.\s*', '', nearest_title)
# current_section = nearest_title
# else:
# continue
if current_section not in struct_page:
struct_page[current_section] = []
for child in wysiwyg_tag.find_all(['p', 'li', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6']):
if child == title_tag:
continue
if 'is-style-mentions' in child.get('class', []):
continue
text = child.get_text().strip()
text = re.sub(r'\(\d\)', '', text)
struct_page[current_section].append(text)
if len(struct_page[current_section]) == 0:
del struct_page[current_section]
print(struct_page)

View File

@@ -148,6 +148,29 @@ class EmbeddingModel:
self.collection.add(embeddings=embeddings, documents=documents, metadatas=metadatas, ids=ids)
def remove_duplicate(self, lst):
# file_contents can contain duplicate lines
# because we keep the textual content of multiple html tags that can be embedded one in another
i = 0
while i < len(lst) - 1:
if i < len(lst) - 3 and lst[i] == lst[i + 2] and lst[i + 1] == lst[i + 3] == '':
# Remove lst[i+1], lst[i+2], and lst[i+3]
del lst[i + 1:i + 3]
elif lst[i] == lst[i + 1]:
# Remove lst[i+1]
del lst[i + 1]
else:
i += 1
return lst
def remove_footer(self, lst):
sequence = ["Caisse d'Epargne", "Rhône Alpes", "Formuler une demande en ligne"]
for i in range(len(lst) - 2):
if lst[i:i + 3] == sequence:
del lst[i:]
break
return lst
def embed_folder(self, folder_path):
"""
Embeds all the .txt files within a specified folder into a ChromaDB collection using a specified embedding model.
@@ -167,12 +190,16 @@ class EmbeddingModel:
file_path = os.path.join(folder_path, filename)
with open(file_path, 'r') as file:
file_contents = file.read()
file_contents = '\n'.join(self.remove_duplicate(file_contents.split('\n')))
contents_lst = [str.replace('\n',' ').replace('\xa0', ' ') for str in file_contents.split('\n\n')]
contents_lst = self.remove_footer(contents_lst)
if len(contents_lst) < 3: # contents_lst[0] is the URL, contents_lst[1] is the title, the rest is the content
continue
url = contents_lst[0]
if '?' in url: # URLs with a '?' corresponds to call to services and have no useful content
continue
if not url.startswith('https://www.caisse-epargne.fr/rhone-alpes/'):
continue
title = contents_lst[1]
if not title: # when the title is absent (or empty), the page has no interest
continue

273
embedding2.py Normal file
View File

@@ -0,0 +1,273 @@
from transformers import AutoTokenizer
from sentence_transformers import SentenceTransformer
import os
import re
import copy
import chromadb
import logging
from bs4 import BeautifulSoup
logging.basicConfig(filename='embedding.log', level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
class EmbeddingModel:
def __init__(self, model_name, chromadb_path, collection_name, mulitlingual_e5=True):
self.mulitlingual_e5=mulitlingual_e5
self.tokenizer = AutoTokenizer.from_pretrained(model_name)
self.model = SentenceTransformer(model_name)
self.chroma_client = chromadb.PersistentClient(path=chromadb_path)
self.collection = self.chroma_client.get_or_create_collection(name=collection_name)
def token_length(self, text):
"""
Calculates the token length of a given text
Args:
text (str): The text to be tokenized.
Returns:
int: The number of tokens in the text.
This function takes a string, tokenizes the string, and returns the number of tokens.
"""
return len(self.tokenizer.encode(text, add_special_tokens=False))
def passage_str(self, paragraphs, title):
"""
Constructs a passage string from given paragraphs and a title.
Args:
paragraphs (list of str): A list of paragraphs.
title (str): The title of the passage.
Returns:
str: A passage string that combines the title and paragraphs.
This function takes a list of paragraphs and a title, and constructs a single string
with the title followed by the paragraphs, formatted for embedding.
"""
return f"passage: {title}\n" + '\n'.join(paragraphs)
def embed_folder(self, html_folder_path, txt_folder_path):
"""
Embeds all the .html files within a specified folder into a ChromaDB collection using a specified embedding model.
The txt folder is required to get the URL of the webpage. TODO: change this behavior in a future version.
Args:
html_folder_path (str): Path to the folder containing .html files.
txt_folder_path (str): Path to the folder containing .txt files.
Returns:
None
This function processes each .html file in the given folder, extracts the content, and uses `embed_page`
to embed the content into the specified ChromaDB collection.
"""
for html_filename in os.listdir(html_folder_path):
html_file_path = os.path.join(html_folder_path, html_filename)
txt_filename = re.sub(r'\.html', '.txt', html_filename)
txt_file_path = os.path.join(txt_folder_path, txt_filename)
with open(txt_file_path, 'r') as file:
txt_file_contents = file.read()
url = txt_file_contents.split('\n')[0]
if '?' in url: # URLs with a '?' corresponds to call to services and have no useful content
continue
if not url.startswith('https://www.caisse-epargne.fr/rhone-alpes/'):
continue
prefix = 'https://www.caisse-epargne.fr/'
suffix = url.replace(prefix, '')
tags = suffix.split('/')
tags = [tag for tag in tags if tag] # remove empty parts
with open(html_file_path, 'r') as file:
html_file_contents = file.read()
soup = BeautifulSoup(html_file_contents, 'html.parser')
first_section = soup.find('section')
if not first_section:
continue
page_title_present = first_section.find('h1')
if not page_title_present:
continue
page_title = page_title_present.get_text()
sections = soup.find_all(lambda tag: tag.name in ['section'])
struct_page = {'title': page_title}
current_section = ''
titles = [page_title]
for section in sections:
if 'key-informations' in section.get('class', []):
key_items = []
for key_item in section.find_all('div', class_='container-block'):
key_item_text = ''
for key_item_title in key_item.find_all('div', class_='button'):
key_item_text += key_item_title.get_text().strip()
for key_item_desc in key_item.find_all('div', class_="tab-panel"):
key_item_text += ' ' + key_item_desc.get_text().strip()
if len(key_item_text) > 0:
key_items.append(key_item_text)
if len(key_items) > 0:
struct_page['Les points clés'] = key_items
continue
for wysiwyg_tag in section.find_all(class_="wysiwyg"):
# Check for a title within the wysiwyg container
internal_title = wysiwyg_tag.find(['h1', 'h2', 'h3', 'h4', 'h5', 'h6']) or wysiwyg_tag.find('p', class_='title')
if internal_title:
title_tag = internal_title
title = internal_title.get_text().strip()
title = re.sub(r'\(\d\)', '', title)
title = re.sub(r'^\d+\.\s*', '', title)
titles.append(title)
current_section = title
else: # If no internal title, find the nearest title from previous tags
title_tag = None
current_section = titles[-1]
if current_section not in struct_page:
struct_page[current_section] = []
for child in wysiwyg_tag.find_all(['p', 'li', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6']):
if child == title_tag:
continue
if 'is-style-mentions' in child.get('class', []):
continue
text = child.get_text().strip()
text = re.sub(r'\(\d\)', '', text)
struct_page[current_section].append(text)
if len(struct_page[current_section]) == 0:
del struct_page[current_section]
logging.info(f"{html_filename} : Start")
self.embed_page(html_filename, url, struct_page, tags)
def token_length(self, text):
"""
Calculates the token length of a given text
Args:
text (str): The text to be tokenized.
Returns:
int: The number of tokens in the text.
This function takes a string, tokenizes the string, and returns the number of tokens.
"""
return len(self.tokenizer.encode(text, add_special_tokens=False))
def passage_str(self, paragraphs, title, subtitle):
"""
Constructs a passage string from given paragraphs and a title.
Args:
paragraphs (list of str): A list of paragraphs.
title (str): The title of the webpage.
subtitle (str): The title of the passage.
Returns:
str: A passage string that combines the titles and paragraphs.
This function takes a passage made of a list of paragraphs extracted
from a webpage, the title of the webpage, the subtitle corresponding to
the passage, and constructs a single string with the titles followed by
the paragraphs, formatted for embedding.
"""
if self.mulitlingual_e5:
prefix = "passage: "
else:
prefix = ""
return f"{prefix}{title}\n\n{subtitle}\n\n" + '\n'.join(paragraphs)
def embed_page(self, html_filename, url, struct_page, tags, max_chunk_size=500):
documents = []
title = struct_page['title']
for subtitle, paragraphs in struct_page.items():
if subtitle != 'title':
doc_str = self.passage_str(paragraphs, title, subtitle)
doc_token_length = self.token_length(doc_str)
if doc_token_length > max_chunk_size:
long_passages = []
sub_paragraphs = []
sub_paragraphs_token_length = 0
paragraph_index = 0
while True:
while sub_paragraphs_token_length < max_chunk_size and paragraph_index < len(paragraphs):
sub_paragraphs.append(paragraphs[paragraph_index])
sub_paragraphs_str = self.passage_str(sub_paragraphs, title, subtitle)
sub_paragraphs_token_length = self.token_length(sub_paragraphs_str)
paragraph_index += 1
if paragraph_index >= len(paragraphs):
if sub_paragraphs_token_length >= max_chunk_size:
sub_paragraphs_str_1 = self.passage_str(sub_paragraphs[:-1], title, subtitle)
sub_paragraphs_str_2 = self.passage_str([sub_paragraphs[-1]], title, subtitle)
documents.append(sub_paragraphs_str_1)
if self.token_length(sub_paragraphs_str_2) < max_chunk_size:
documents.append(sub_paragraphs_str_2)
else:
long_passages.append(sub_paragraphs[0])
else:
documents.append(sub_paragraphs_str)
break
else: # sub_paragraphs_token_length >= max_chunk_size and paragraph_index < len(paragraphs)
if len(sub_paragraphs) > 1:
sub_paragraphs_str = self.passage_str(sub_paragraphs[:-1], title, subtitle)
documents.append(sub_paragraphs_str)
paragraph_index -= 1
else:
long_passages.append(sub_paragraphs[0])
sub_paragraphs = []
sub_paragraphs_token_length = 0
for long_passage in long_passages:
passage = []
for word in long_passage.split():
passage.append(word)
passage_str = self.passage_str([' '.join(passage)], title, subtitle)
if self.token_length(passage_str) > max_chunk_size:
passage_str = self.passage_str([' '.join(passage[:-1])], title, subtitle)
documents.append(passage_str)
passage = [passage[-1]]
passage_str = self.passage_str([' '.join(passage)], title, subtitle)
documents.append(passage_str)
else:
documents.append(doc_str)
if len(documents) == 0:
return
embeddings = self.model.encode(documents, normalize_embeddings=True)
embeddings = embeddings.tolist()
# We consider the subpart of an URL as tags describing the webpage
# For example,
# "https://www.caisse-epargne.fr/rhone-alpes/professionnels/financer-projets-optimiser-tresorerie/"
# is associated to the tags:
# tags[0] == 'rhone-alpes'
# tags[1] == 'professionnels'
# tags[2] == 'financer-projets-optimiser-tresorerie'
if len(tags) < 2:
category = ''
else:
if tags[0] == 'rhone-alpes':
category = tags[1]
else: category = tags[0]
metadata = {'category': category, 'url': url}
# All the documents corresponding to a same webpage have the same metadata, i.e. URL and category
metadatas = [copy.deepcopy(metadata) for _ in range(len(documents))]
ids = [html_filename + '-' + str(i+1) for i in range(len(documents))]
self.collection.add(embeddings=embeddings, documents=documents, metadatas=metadatas, ids=ids)

11
embedding_script.py Normal file
View File

@@ -0,0 +1,11 @@
from embedding2 import EmbeddingModel
# model_name = 'intfloat/multilingual-e5-large'
model_name = 'dangvantuan/sentence-camembert-large'
chromadb_path = './chromadb'
html_folder_path = '../scrapcera/htmls/'
txt_folder_path = '../scrapcera/docs/'
collection_name = 'cera'
embedding_model = EmbeddingModel(model_name, chromadb_path, collection_name, mulitlingual_e5=False)
embedding_model.embed_folder(html_folder_path, txt_folder_path)

120
rag.py
View File

@@ -8,8 +8,10 @@ logging.basicConfig(filename='rag.log', level=logging.INFO, format='%(asctime)s
class RAG:
def __init__(self, llm_model_path, embed_model_name, collection_name, chromadb_path):
def __init__(self, llm_model_path, embed_model_name, collection_name, chromadb_path, mulitlingual_e5=True):
logging.info('INIT')
self.mulitlingual_e5 = mulitlingual_e5
self.urls = []
self.chat_history = []
self.tag_system = '<|system|>'
self.tag_user = '<|user|>'
@@ -17,76 +19,58 @@ class RAG:
self.tag_end = '</s>'
self.rag_prompt = """
{tag_system}
Objectif
========
Votre mission :
===============
Vous êtes un assistant IA spécialiste des produits et services de la Caisse d'Epargne Rhône-Alpes, \
une banque régionale française.
Vous aidez un conseiller clientèle de la banque à mieux répondre aux besoins des clients.
Vous fournissez avec soin des réponses précises et factuelles aux questions du conseiller.
Vous êtes un assistant IA qui répond à des questions sur des produits et \
services de la Caisse d'Epargne Rhône-Alpes, une banque régionale française.
Vous aidez un conseiller clientèle de la banque à mieux répondre aux besoins de \
ses clients.
Vous fournissez avec soin des réponses précises et factuelles aux questions du \
conseiller.
Utilisation du contexte
=======================
Instructions pour l'utilisation du contexte :
=============================================
Vous répondez à la question posée par le conseiller en utilisant un contexte \
formé de passages exraits du site web commercial de la banque.
Votre réponse se base exclusivement sur les informations factuelles présentes dans le contexte.
Vous répondez de façon brève et factuelle à la question posée par le conseiller \
en utilisant un contexte formé de passages exraits du site web commercial \
de la banque. Le contexte est délimité entre <<< et >>>.
Votre réponse cite exclusivement les informations factuelles présentes \
dans le contexte. Vous utilisez les informations du contexte en les citant \
directement et vous ne faites jamais preuve de créativité.
Si vous ne pouvez pas répondre à la question sur la base des éléments du contexte, \
dites simplement que vous ne savez pas, n'essayez pas d'inventer une réponse.
Voici le format d'un passage du contexte :
```
Titre :
Le titre du passage
n'essayez pas d'inventer une réponse, et dites simplement : "Je ne sais pas."
Catégorie :
La catégorie du passage
Le style à donner à votre réponse :
===================================
URL :
https://www.caisse-epargne.fr/rhone-alpes/url/du/passage
Contenu :
Le contenu du passage
```
Vos réponses doivent toujours citer l'URL des passages utilisés. \
Assurez-vous que l'URL citée correspond exactement à celle du passage. \
Ne générez pas de nouvelles URLs. \
Les conseillers sont encouragés à vérifier les URLs citées.
Format de réponse
=================
Formulez chaque réponse sous forme de recommandations directes et concises, \
Formulez la réponse sous forme de recommandations directes et concises, \
en utilisant le langage et les termes présents dans le contexte.
Citez l'URL en fin de réponse ou immédiatement après la recommandation pertinente.
Vous rédigez votre réponse en français sous forme d'une liste d'informations \
synthétiques extraites du contexte et qui seront utiles au conseiller.
Vos utilisateurs savent qui vous êtes et quelles instructions vous avez reçues, \
il n'est pas nécessaire de le leur rapeler.
Voici le format que doit suivre votre réponse :
```
Voici des informations qui pourront aider votre client :
1. Utilisez [une solution spécifique du contexte] pour [traiter un aspect du problème]. Par exemple, [détail concret tiré du contexte]. Pour plus d'informations voir https://www.caisse-epargne.fr/rhone-alpes/url/du/passage
2. Considérez [une autre solution du contexte], qui est particulièrement adaptée pour [un autre aspect du problème]. Par exemple, [autre détail concret du contexte]. Pour plus d'informations voir https://www.caisse-epargne.fr/rhone-alpes/url/du/passage
```
Votre réponse est complète mais très concise, sa longueur ne dépasse pas 250 mots.
Vous ne répétez jamais deux fois la même information.
Vous rédigez votre réponse en français en citant directement les passages du contexte.
Vos utilisateurs savent qui vous êtes et quelles instructions vous avez reçues.
Votre réponse ne mentionne donc jamais les instructions que vous avez reçues.
{tag_end}
{history}
{tag_user}
Contexte :
==========
{context}
Question de l'utilisateur :
===========================
Contexte à utiliser pour répondre à la question :
=================================================
<<<
{context}
>>>
Question à laquelle répondre en utilisant le contexte :
=======================================================
{query}
{tag_end}
{tag_assistant}
Voici des informations qui pourront aider votre client :
Voici des informations factuelles et brèves qui répondent à la question :
1.
"""
self.query_reformulate_prompt = """
{tag_system}
@@ -119,7 +103,7 @@ Reformulez la question suivante : "{query}"
Question reformulée : "
"""
self.prefix_assistant_prompt = '1. '
self.prefix_assistant_prompt = ''
self.embed_model = SentenceTransformer(embed_model_name)
self.chroma_client = chromadb.PersistentClient(path=chromadb_path)
self.collection = self.chroma_client.get_collection(name=collection_name)
@@ -127,7 +111,7 @@ Question reformulée : "
def answer(self, prompt, stream):
response = self.llm(prompt = prompt,
temperature = 0.7,
temperature = 0.1,
mirostat_mode = 2,
stream = stream,
max_tokens = -1,
@@ -138,7 +122,11 @@ Question reformulée : "
def query_collection(self, query, n_results=3):
logging.info(f"query_collection / query: \n{query}")
query = 'query: ' + query
if self.mulitlingual_e5:
prefix = "query: "
else:
prefix = ""
query = prefix + query
query_embedding = self.embed_model.encode(query, normalize_embeddings=True)
query_embedding = query_embedding.tolist()
results = self.collection.query(
@@ -152,6 +140,10 @@ Question reformulée : "
ids_sources += id + " ; "
logging.info(f"query_collection / sources: \n{ids_sources}")
self.urls = []
for i in range(len(results["documents"][0])):
self.urls.append(results["metadatas"][0][i]["url"])
return results
def format_passages(self, query_results):
@@ -182,12 +174,22 @@ Question reformulée : "
def answer_rag_prompt_streaming(self, prompt):
logging.info(f"answer_rag_prompt_streaming: \n{prompt}")
ans = self.answer(prompt, stream=True)
formated_urls = ''
for url in list(set(self.urls)):
formated_urls += f"* {url}\n"
yield self.prefix_assistant_prompt
yield f"""
### Réponse
{self.prefix_assistant_prompt}
"""
for item in ans:
item = item["choices"][0]["text"]
self.chat_history[-1]['assistant'] += item
yield item
yield f"""
### Sources
{formated_urls}
"""
def answer_rag_prompt_non_streaming(self, prompt):
logging.info(f"answer_rag_prompt_non_streaming: \n{prompt}")

548
rag_bm25.ipynb Normal file
View File

@@ -0,0 +1,548 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "7290374f-d5b8-4670-b7fe-36a1293577ba",
"metadata": {},
"outputs": [],
"source": [
"from rank_bm25 import BM25Okapi\n",
"import chromadb"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "617ec7ec-0f30-402d-8e45-dc1f762d1409",
"metadata": {},
"outputs": [],
"source": [
"chromadb_path = './chromadb'\n",
"collection_name = 'cera'\n",
"chroma_client = chromadb.PersistentClient(path=chromadb_path)\n",
"collection = chroma_client.get_collection(name=collection_name)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "021e4cfa-49d9-460f-9b43-1524c327e4c6",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"dict_keys(['ids', 'embeddings', 'metadatas', 'documents', 'uris', 'data'])"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"collection.get().keys()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "5ae7d104-f8f6-45ad-a2af-b8475e400262",
"metadata": {},
"outputs": [],
"source": [
"docs = collection.get()['documents']"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "96e8acca-e0dc-4dbd-9130-4f3ff64ba86a",
"metadata": {},
"outputs": [],
"source": [
"ids = collection.get()['ids']"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "536f29fa-9377-41a8-a9d4-a52ace99ed74",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2896"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(docs)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "8cf9b3e2-c960-4a88-8974-848611a4d5d7",
"metadata": {},
"outputs": [],
"source": [
"docs_tokenized = [doc.replace(\"\\n\", \" \").split(\" \") for doc in docs]"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "87085da2-edac-4e9c-8586-1139ac814dcd",
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"outputs": [
{
"data": {
"text/plain": [
"['Le',\n",
" 'paiement',\n",
" 'sans',\n",
" 'contact',\n",
" '',\n",
" 'Les',\n",
" 'points',\n",
" 'clés',\n",
" '',\n",
" 'Pratique',\n",
" 'Plus',\n",
" 'besoin',\n",
" 'de',\n",
" 'chercher',\n",
" 'de',\n",
" 'la',\n",
" 'monnaie',\n",
" 'pour',\n",
" 'régler',\n",
" 'votre',\n",
" 'café,',\n",
" 'parking,',\n",
" 'repas,',\n",
" 'journal…',\n",
" 'Gratuit',\n",
" 'Cette',\n",
" 'fonctionnalité',\n",
" 'est',\n",
" 'ajoutée',\n",
" 'automatiquement',\n",
" 'et',\n",
" 'gratuitement',\n",
" 'à',\n",
" 'votre',\n",
" 'carte.',\n",
" 'Rapide',\n",
" 'Vous',\n",
" 'réglez',\n",
" 'votre',\n",
" 'achat',\n",
" 'dun',\n",
" 'simple',\n",
" 'geste,',\n",
" 'sans',\n",
" 'insérer',\n",
" 'votre',\n",
" 'carte',\n",
" 'ni',\n",
" 'composer',\n",
" 'votre',\n",
" 'code',\n",
" 'confidentiel.']"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"docs_tokenized[0]"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "0ba5858d-9cdb-4159-a9ab-88b485a8991b",
"metadata": {},
"outputs": [],
"source": [
"bm25_db = BM25Okapi(docs_tokenized)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "c854970c-6e40-4209-9e02-a7e4cb9fb509",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<rank_bm25.BM25Okapi at 0x10c7be6d0>"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bm25_db"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "61d10ce1-38fe-4d36-b8c6-1845c116b626",
"metadata": {},
"outputs": [],
"source": [
"query = \"Comment procéder pour déclarer un sinistre Visa Premier ?\""
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "8c362a7b-5d78-4ba5-be8f-165ca5e9e023",
"metadata": {},
"outputs": [],
"source": [
"query_tokenized = query.split(\" \")\n",
"doc_scores = bm25_db.get_scores(query_tokenized)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "99c5cc3d-5b30-478d-b3b8-c252dff6e1fc",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2896"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(doc_scores)"
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "e5c91dd9-ebda-42ba-9ac8-d7fec2be981e",
"metadata": {},
"outputs": [],
"source": [
"ids_scores = dict(zip(ids, doc_scores))"
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "5865d7f6-f10d-4c08-873d-89ae60059008",
"metadata": {},
"outputs": [],
"source": [
"sorted_ids_scores = sorted(ids_scores.items(), key=lambda x: x[1], reverse=True)"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "1964be5f-8ab7-437c-986c-d5ef8039748d",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'d42d7174ce.html-1': 21.04962022219261,\n",
" '25dcc77e00.html-6': 18.00344127762922,\n",
" '19864d414b.html-1': 16.616167931951313}"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dict(sorted_ids_scores[:3])"
]
},
{
"cell_type": "code",
"execution_count": 34,
"id": "f0ff43ff-2cb1-47a7-aaaf-f9dbecd041ff",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'ids': ['19864d414b.html-1', 'd42d7174ce.html-1', '25dcc77e00.html-6'],\n",
" 'embeddings': None,\n",
" 'metadatas': [{'category': 'professionnels',\n",
" 'url': 'https://www.caisse-epargne.fr/rhone-alpes/professionnels/proteger-moi-mon-activite/numeros-utiles-contrat-assurance/'},\n",
" {'category': 'assurer',\n",
" 'url': 'https://www.caisse-epargne.fr/rhone-alpes/assurer/declaration-sinistre-intemperies/'},\n",
" {'category': 'comptes-cartes',\n",
" 'url': 'https://www.caisse-epargne.fr/rhone-alpes/comptes-cartes/carte-visa-premier/'}],\n",
" 'documents': ['Numéros Utiles Contrat Assurance Professionnel\\n\\nVotre contrat Assurance Multirisque Professionnelle ou Assurance Auto des Professionnels\\n\\nUn numéro unique et non surtaxé est mis à votre disposition pour déclarer un sinistre ou mettre à jour votre contrat.Appelez-le\\xa0:\\nPour nous contacter par mail\\xa0:• Contrat Assurance Multirisque Professionnelle\\xa0:service-client.ird@aismail.fr• Contrat Assurance Auto des Professionnels\\xa0: service-client.auto@aismail.fr\\n',\n",
" 'Intempéries, déclarer son sinistre en ligne !\\n\\nEn bref\\n\\nDécouvrez comment déclarer votre sinistre en ligne\\nLes conseils en cas de sinistre\\nTout savoir sur lindemnisation\\nEn cas dévénement climatique, le besoin dassistance ou de prise en charge est immédiat\\xa0!Cest pourquoi la Caisse dEpargne vous facilite la déclaration de sinistre grâce à votre espace personnel internet. Si vous êtes détenteur dun contrat dassurance habitation ou automobile, il vous suffit de vous connecter à votre espace personnel et de procéder à la déclaration en ligne.',\n",
" 'Carte Visa Premier\\n\\nEt si vous optiez pour la carte Visa Premier Izicarte associée à votre crédit renouvelable ?\\n\\nVotre carte Visa Premier Izicarte vous permet de disposer dun crédit renouvelable pour faire face à des imprévus ou saisir des opportunités sans perdre de temps.\\nVous choisissez librement le mode de règlement que vous souhaitez :\\nAu comptant : par débit de votre compte de dépôt ;\\nÀ crédit, dans la limite du montant disponible sur votre crédit renouvelable.\\nGrâce à votre crédit renouvelable associé à votre carte Visa Premier Izicarte, vous pouvez étaler en plusieurs fois vos dépenses à crédit et choisir votre rythme de remboursement.\\nUn crédit vous engage et doit être remboursé. Vérifiez vos capacités de remboursement avant de vous engager.'],\n",
" 'uris': None,\n",
" 'data': None}"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"collection.get(ids=['d42d7174ce.html-1', '25dcc77e00.html-6', '19864d414b.html-1'])"
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "11a9a24e-3928-4b0b-85fe-d9c406fa80ed",
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Carte Visa Premier\n",
"\n",
"Les points clés\n",
"\n",
"Innovation Paiement sans contact(1) et paiement mobile compatible(2).\n",
"Garanties dAssurances et Assistance(3) Vous vous protégez ainsi que votre famille lors de vos déplacements en France et à létranger.\n",
"Plafonds élevés Bénéficiez de souplesse grâce à des plafonds de paiement et retraits supérieurs à ceux dune Visa Classic.\n",
"\n",
"----------\n",
"\n",
"Carte Visa Premier\n",
"\n",
"Carte Visa Premier, toujours à vos côtés\n",
"\n",
"Carte de paiement et de retrait utilisable en France et à létranger ;\n",
"Des plafonds de paiement et de retrait élevés ;\n",
"Des Garanties dAssurances et dAssistance incluses pour vous protéger, vous et votre famille, lors de vos déplacements en France et à létranger (une couverture assurances et assistance médicale dès que vous être à plus de 100kms de votre domicile); Exemples de garanties :En voyage : modification ou annulation de voyage, responsabilité civile, rapatriement en cas de maladie ou daccident, remboursement des frais médicaux à létranger, etc.Au ski : remboursement des frais médicaux en France, forfait et cours de ski non utilisésAvec un véhicule de location : accident ou volEn avion ou en train : perte, vol ou détérioration de bagages, etc.\n",
"Un service de dépannage cash sous 48h à létranger ;\n",
"Un retard ou une annulation de votre vol ? Votre accès à bord vous est refusé pour cause de surbooking ? AirRefund (partenaire de Visa), gère à votre place la demande dindemnisation auprès de la compagnie aérienne. Sajoute à lindemnité de retard, le remboursement des frais engagés durant lattente (repas, transferts, hôtels…)\n",
"Un service de mise en opposition de la carte 24h/24 et 7j/7, en cas de perte, de vol ou dutilisation frauduleuse de la carte ;\n",
"\n",
"----------\n",
"\n",
"Carte Visa Premier\n",
"\n",
"Bénéficiez davantages supplémentaires\n",
"\n",
"Fonctionne en Sans Contact ;\n",
"Compatible paiement mobile ;\n",
"Choix possible entre débit différé ou débit immédiat ;\n",
"Disponible avec un crédit avec la carte Visa Premier Izicarte associée au crédit renouvelable.\n",
"Les paiements par carte sont rassemblés, et débités en une seule fois tous les mois à date fixe: cest lencours des paiements par carte. Le suivi de cet encours peut se faire à tout moment via la banque à distance (internet et mobile) et permet danticiper la provision nécessaire sur le compte.\n",
"Le débit différé peut permettre une gestion mensuelle de son budget différente de celle en débit immédiat, puisque la trésorerie disponible sur le compte nest affectée des paiements par carte quune fois par mois.\n",
"\n",
"Il est ainsi possible de gérer différemment les frais qui seront remboursés (frais médicaux, frais professionnels … ), ainsi que les dépenses importantes.\n",
"Certaines agences de location de voiture à létranger préfèrent les cartes avec la mention « crédit », aux cartes marquées uniquement « débit ». Les cartes à débit différé comportent la mention « crédit ».\n",
"\n",
"----------\n",
"\n",
"Carte Visa Premier\n",
"\n",
"Profitez des avantages Visa Premier(10)\n",
"\n",
"Pour en savoir plus sur les avantages dédiés aux porteurs de la carte Visa Premier, rendez-vous sur le site www.visa.fr et inscrivez-vous à la newsletter.\n",
"\n",
"----------\n",
"\n",
"Carte Visa Premier\n",
"\n",
"Bénéficiez de la garantie achat(11)\n",
"\n",
"Tous les achats réglés avec votre carte Visa Premier sont protégés contre la détérioration et le vol avec effraction ou par agression.La couverture sélève au maximum à la valeur dachat du bien.\n",
"Valeur du bien : entre 75 € et 800 € TTC.\n",
"Nombre de jours couverts (post acquisition/livraison) : 7 jours.\n",
"Plafond de la garantie : 800 euros TTC par objet et 1 600 euros par an.\n",
"\n",
"----------\n",
"\n",
"Carte Visa Premier\n",
"\n",
"Et si vous optiez pour la carte Visa Premier Izicarte associée à votre crédit renouvelable ?\n",
"\n",
"Votre carte Visa Premier Izicarte vous permet de disposer dun crédit renouvelable pour faire face à des imprévus ou saisir des opportunités sans perdre de temps.\n",
"Vous choisissez librement le mode de règlement que vous souhaitez :\n",
"Au comptant : par débit de votre compte de dépôt ;\n",
"À crédit, dans la limite du montant disponible sur votre crédit renouvelable.\n",
"Grâce à votre crédit renouvelable associé à votre carte Visa Premier Izicarte, vous pouvez étaler en plusieurs fois vos dépenses à crédit et choisir votre rythme de remboursement.\n",
"Un crédit vous engage et doit être remboursé. Vérifiez vos capacités de remboursement avant de vous engager.\n",
"\n",
"----------\n",
"\n",
"Carte Visa Premier\n",
"\n",
"LExtension de Garantie Constructeur(11) (12)\n",
"\n",
"Une garantie constructeur allongée\n",
"Avec votre carte Visa Premier Izicarte, vous bénéficiez en cas de panne dune extension de garantie constructeur supplémentaire de 3 ans, sur les appareils électrodomestiques et produits nomades achetés neufs(11) (12) (électroménager, audiovisuel, pocket/image, informatique).\n",
"\n",
"----------\n",
"\n",
"Carte Visa Premier\n",
"\n",
"Gérez votre carte bancaire depuis lapplication Caisse dEpargne Rhône Alpes\n",
"\n",
"Gérez vos plafonds ;\n",
"Verrouillez temporairement/déverrouillez votre carte ;\n",
"Activez/désactivez les paiements et retraits à distance et/ou à létranger ;\n",
"Faites opposition 24h/24-7j/7 en cas de perte, de vol ou dutilisation frauduleuse de votre carte.\n",
"\n",
"----------\n",
"\n"
]
}
],
"source": [
"nb_passage = 1\n",
"while True:\n",
" id = \"25dcc77e00.html-\" + str(nb_passage)\n",
" passages = collection.get(ids=[id])\n",
" if len(passages['documents']) > 0:\n",
" print(passages['documents'][0])\n",
" print(\"\\n----------\\n\")\n",
" nb_passage += 1\n",
" else:\n",
" break"
]
},
{
"cell_type": "code",
"execution_count": 52,
"id": "427a2fa0-0f47-4571-94d8-3878ca034de4",
"metadata": {},
"outputs": [],
"source": [
"query = \"Quel est le risque de perte en capital pour un sociétaire ?\"\n",
"query_tokenized = query.split(\" \")\n",
"doc_scores = bm25_db.get_scores(query_tokenized)\n",
"ids_scores = dict(zip(ids, doc_scores))\n",
"sorted_ids_scores = sorted(ids_scores.items(), key=lambda x: x[1], reverse=True)"
]
},
{
"cell_type": "code",
"execution_count": 53,
"id": "5251aa60-3831-416f-a7c6-f824c308587e",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[('f6d921ced8.html-3', 29.446670121305353),\n",
" ('ff83960e9d.html-1', 24.88880087849239),\n",
" ('ecb10d12cf.html-2', 24.206423694569803),\n",
" ('f753c94bb4.html-1', 24.009169917059968),\n",
" ('dbdc338e94.html-7', 23.845667609823003),\n",
" ('f66629c8b6.html-2', 23.779561367699497),\n",
" ('9b9d084514.html-2', 23.770317569985096),\n",
" ('6123ccc4f8.html-6', 23.732579312988157),\n",
" ('c145d2aa96.html-4', 23.48215739435705),\n",
" ('286a391488.html-2', 23.443469979811134)]"
]
},
"execution_count": 53,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sorted_ids_scores[:10]"
]
},
{
"cell_type": "code",
"execution_count": 51,
"id": "b16129c2-e3fa-41ca-a60f-b5f596ede1f0",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'ids': ['f6d921ced8.html-3'],\n",
" 'embeddings': None,\n",
" 'metadatas': [{'category': 'votre-banque',\n",
" 'url': 'https://www.caisse-epargne.fr/rhone-alpes/votre-banque/nos-engagements/etre-societaire/'}],\n",
" 'documents': ['Devenez sociétaire !\\n\\nQui peut devenir sociétaire ?\\n\\nSi vous souhaitez que la SLE rachète vos parts sociales, votre demande, soumise à lautorisation du conseil dadministration de la SLE, doit être formulée avant le 31 mai, date de clôture de lexercice. De ce fait, aucune assurance ne peut être donnée quant à la liquidité des parts sociales.\\n\\nPar ailleurs, les rachats de parts sociales sont subordonnés au respect du capital minimum en deçà duquel la SLE ne peut descendre. En conséquence, les sociétaires doivent être conscients quils pourraient ne pas être en mesure de céder facilement leurs parts sociales.\\n\\nLe remboursement effectif, quil soit consécutif à la perte de la qualité de sociétaire ou à une demande de rachat, intervient le 1er jour ouvré du nouvel exercice ou dans un délai maximum de 3 mois suivant la demande pour les cas dérogatoires suivants :\\n\\n Pour un particulier : changement de foyer fiscal, décès, divorce, invalidité, licenciement, départ à la retraite ou préretraite, transfert du domicile à létranger, déménagement hors du ressort territorial de la Caisse dEpargne daffiliation, redressement judiciaire du sociétaire, de clôture dun livret A lorsque le client ne détient pas dautres produits et tout évènement exceptionnel revêtant une gravité telle quelle contraigne le sociétaire à liquider tout ou partie de ses parts.\\n\\n Pour une personne morale : redressement judiciaire, liquidation ou dissolution.\\n\\nLes parts sociales sont remboursées à leur valeur nominale sous réserve du risque investisseur (cf. paragraphe « Responsabilité risque de perte en capital »)\\nVotre responsabilité dinvestisseur est limitée au niveau de votre investissement. Le risque investisseur (risque de perte en capital) porte sur le Groupe BPCE et non sur la SLE ou la Caisse dEpargne (du fait du mécanisme de solidarité interne au Groupe BPCE).\\n\\nLes parts sociales demeurent des instruments risqués. Votre responsabilité, limitée au montant de lapport, est engagée jusquà 5 ans après le retrait. Il existe un risque de perte en capital en cas de défaut ou de faillite de la Caisse dEpargne ou de mise en œuvre de mesures de résolution au sein du Groupe BPCE. Les parts sociales ne sont pas éligibles au mécanisme de garantie des investisseurs ou de garantie des déposants et leur rémunération nest pas garantie.'],\n",
" 'uris': None,\n",
" 'data': None}"
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"collection.get(ids=['f6d921ced8.html-3'])"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "d5b1969b-6b87-40c9-8a69-ef4dc1c14c30",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "RAG_ENV",
"language": "python",
"name": "rag_env"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.18"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

View File

@@ -22,9 +22,7 @@
{
"cell_type": "markdown",
"id": "54a9d312-b39b-45f8-9529-57a142b6f6fc",
"metadata": {
"jp-MarkdownHeadingCollapsed": true
},
"metadata": {},
"source": [
"# Embed a folder of CERA webpages in txt format"
]

338
rag_fr_chroma.ipynb Normal file
View File

@@ -0,0 +1,338 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "9659df5b-f71a-4594-8f08-44af62ce0056",
"metadata": {},
"outputs": [],
"source": [
"import chromadb\n",
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "aad1a570-a5d6-482b-a683-b77d1ae126cc",
"metadata": {},
"outputs": [],
"source": [
"chromadb_path = './chromadb'\n",
"collection_name = 'cera'\n",
"chroma_client = chromadb.PersistentClient(path=chromadb_path)\n",
"collection = chroma_client.get_collection(name=collection_name)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "77c80131-ad2d-423e-a936-e548a4982d1f",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"passage: Devenez sociétaire !\n",
"\n",
"Devenez sociétaire !\n",
"\n",
"En chiffre\t\t\t\n",
"\n",
"\n",
"\t\t\t\t\t4,5 millions\t\t\t\t\t\n",
"\n",
"\n",
"\t\t\t\t\tCest le nombre de clients de Caisse d'Epargne ayant choisi de devenir sociétaires.\n",
"Être sociétaire de sa Caisse dEpargne, cest soutenir une banque qui agit en local, à travers de nombreuses actions soutenues sur son territoire et sur le financement de léconomie régionale.\n",
"Chaque année le sociétaire est invité à participer à lassemblée générale de sa société locale dépargne (SLE)…et à sexprimer selon le principe « un homme=une voix ». Il assiste à la présentation du rapport dactivité de sa banque coopérative et participe à lapprobation des résultats financiers de sa SLE.\n",
"\n",
"----------\n",
"\n",
"passage: Devenez sociétaire !\n",
"\n",
"Qui peut devenir sociétaire ?\n",
"\n",
"Tous les clients de la Caisse dEpargne peuvent souscrire des parts sociales : particuliers, personnes morales (associations, entreprises), EPCI (Établissements Publics de Coopération Intercommunale) à fiscalité propre. Les collectivités territoriales peuvent également devenir sociétaires.\n",
"Comment devenir sociétaire ?\n",
"Vous souscrivez vos parts sociales de la Société Locale dEpargne (SLE) auprès de lagence où est domicilié votre compte principal. Pour tout renseignement, contactez votre conseiller, il saura vous orienter.\n",
"Contrairement aux actions, la part sociale nest pas cotée. Elle nest pas soumise aux aléas de la bourse. Sa valeur nominale reste fixe : 20 euros.\n",
"Vous avez droit à un intérêt annuel. Vous ne payez aucuns frais tant à la souscription, à la tenue de compte quau remboursement.\n",
"\n",
"Lintérêt des parts sociales est conditionné à une décision de lassemblée générale de la Caisse dEpargne selon ses résultats.\n",
"\n",
"A noter : Les parts sociales sont rémunérées prorata temporis par mois civil entier de détention, à compter du 1er jour du mois qui suit la date dagrément du sociétaire, jusquà la date de clôture de lexercice.\n",
"\n",
"Si vous revendez vos parts sociales avant la clôture de lexercice, vous ne percevez pas les intérêts pour lexercice en cours. En cas de liquidation de votre SLE, vous navez pas de droit sur lactif net (principe coopératif).\n",
"Dans le cas dune détention sur un compte dédié, les parts sociales ne sont soumises à aucuns frais : pas de commission de souscription, pas de frais de rachat ni de droits de garde. Une commission de tenue de compte peut cependant être prélevée dans le cadre dun compte de parts sociales (comptes titres) ou dun PEA. La souscription est conditionnée à lagrément du conseil dadministration.\n",
"\n",
"----------\n",
"\n",
"passage: Devenez sociétaire !\n",
"\n",
"Qui peut devenir sociétaire ?\n",
"\n",
"Les intérêts aux parts sociales sont soumis au même régime fiscal que les dividendes dactions françaises. Si vous nêtes pas domicilié fiscalement en France, les intérêts aux parts sociales supportent une retenue à la source dont le taux peut être réduit par la convention fiscale liant votre pays de résidence fiscale et la France. Nous vous conseillons de vous rapprocher, le cas échéant dun conseiller fiscal.\n",
"Si vous souhaitez que la SLE rachète vos parts sociales, votre demande, soumise à lautorisation du conseil dadministration de la SLE, doit être formulée avant le 31 mai, date de clôture de lexercice. De ce fait, aucune assurance ne peut être donnée quant à la liquidité des parts sociales.\n",
"\n",
"Par ailleurs, les rachats de parts sociales sont subordonnés au respect du capital minimum en deçà duquel la SLE ne peut descendre. En conséquence, les sociétaires doivent être conscients quils pourraient ne pas être en mesure de céder facilement leurs parts sociales.\n",
"\n",
"Le remboursement effectif, quil soit consécutif à la perte de la qualité de sociétaire ou à une demande de rachat, intervient le 1er jour ouvré du nouvel exercice ou dans un délai maximum de 3 mois suivant la demande pour les cas dérogatoires suivants :\n",
"\n",
" Pour un particulier : changement de foyer fiscal, décès, divorce, invalidité, licenciement, départ à la retraite ou préretraite, transfert du domicile à létranger, déménagement hors du ressort territorial de la Caisse dEpargne daffiliation, redressement judiciaire du sociétaire, de clôture dun livret A lorsque le client ne détient pas dautres produits et tout évènement exceptionnel revêtant une gravité telle quelle contraigne le sociétaire à liquider tout ou partie de ses parts.\n",
"\n",
" Pour une personne morale : redressement judiciaire, liquidation ou dissolution.\n",
"\n",
"Les parts sociales sont remboursées à leur valeur nominale sous réserve du risque investisseur (cf. paragraphe « Responsabilité risque de perte en capital »)\n",
"\n",
"----------\n",
"\n",
"passage: Devenez sociétaire !\n",
"\n",
"Qui peut devenir sociétaire ?\n",
"\n",
"Votre responsabilité dinvestisseur est limitée au niveau de votre investissement. Le risque investisseur (risque de perte en capital) porte sur le Groupe BPCE et non sur la SLE ou la Caisse dEpargne (du fait du mécanisme de solidarité interne au Groupe BPCE).\n",
"\n",
"Les parts sociales demeurent des instruments risqués. Votre responsabilité, limitée au montant de lapport, est engagée jusquà 5 ans après le retrait. Il existe un risque de perte en capital en cas de défaut ou de faillite de la Caisse dEpargne ou de mise en œuvre de mesures de résolution au sein du Groupe BPCE. Les parts sociales ne sont pas éligibles au mécanisme de garantie des investisseurs ou de garantie des déposants et leur rémunération nest pas garantie.\n",
"En cas de liquidation, les liquidateurs seront chargés de réaliser lactif, deffectuer le paiement des dettes sociales et, en dernier lieu, de rembourser éventuellement le capital social aux sociétaires si celui-ci est suffisant après paiement des dettes de la SLE.\n",
"Pour tout renseignement, contactez votre conseiller, il saura vous orienter. \n",
"\n",
"Préalablement à toute souscription, conformément à larticle 212-38-13 du règlement général de lAMF, il est recommandé de lire attentivement le prospectus visé par lAMF établi pour loffre au public de parts sociales et plus particulièrement la rubrique « facteurs de risques ». Ce prospectus est disponible sur simple demande sans frais en agence et sur le site de lAMF www.amf-france.org et sur le site www.caisse-epargne.fr.\n",
"\n",
"----------\n",
"\n",
"passage: Devenez sociétaire !\n",
"\n",
"Qui peut devenir sociétaire ?\n",
"\n",
"En tant que sociétaire, vous êtes impliqué dans la vie de votre Caisse dEpargne et prenez part aux décisions en y exerçant un droit de vote. Vous élisez vos représentants parmi les sociétaires, les administrateurs, qui élisent à leur tour leur président qui les représente à lassemblée générale de votre Caisse dEpargne. \n",
"\n",
"Vous participez ainsi aux grandes orientations de votre Caisse dEpargne. Chaque année, à lAssemblée Générale de votre SLE, vous rencontrez les dirigeants de votre Caisse dEpargne et bénéficiez dune information spécifique. \n",
"\n",
"Tout au long de lannée, vous pouvez également être invité à participer à des événements organisés par votre Caisse dEpargne.\n",
"Chez Caisse dEpargne Rhône Alpes, votre épargne est réinvestie dans des projets de territoire. Votre Caisse dEpargne est un acteur majeur et le premier financeur privé de léconomie sociale et solidaire.\n",
"Au cœur des métiers de Caisse dEpargne Rhône Alpes, cette solidarité sexprime concrètement par les nombreuses actions de mécénat soutenues localement. \n",
"\n",
"Vos représentants participent à la remontée de projets locaux associatifs et à la sélection de ceux qui seront soutenus par Caisse dEpargne Rhône Alpes.\n",
"En tant que sociétaire, vous êtes impliqué dans la vie de votre Caisse dEpargne et prenez part aux décisions en y exerçant un droit de vote. Vous élisez vos représentants parmi les sociétaires, les administrateurs, qui élisent à leur tour leur président qui les représente à lassemblée générale de votre Caisse dEpargne. \n",
"\n",
"Vous participez ainsi aux grandes orientations de votre Caisse dEpargne. Chaque année, à lAssemblée Générale de votre SLE, vous rencontrez les dirigeants de votre Caisse dEpargne et bénéficiez dune information spécifique. \n",
"\n",
"Tout au long de lannée, vous pouvez également être invité à participer à des événements organisés par votre Caisse dEpargne.\n",
"\n",
"----------\n",
"\n",
"passage: Devenez sociétaire !\n",
"\n",
"Qui peut devenir sociétaire ?\n",
"\n",
"Chez Caisse dEpargne Rhône Alpes, votre épargne est réinvestie dans des projets de territoire. Votre Caisse dEpargne est un acteur majeur et le premier financeur privé de léconomie sociale et solidaire.\n",
"Au cœur des métiers de Caisse dEpargne Rhône Alpes, cette solidarité sexprime concrètement par les nombreuses actions de mécénat soutenues localement. \n",
"\n",
"Vos représentants participent à la remontée de projets locaux associatifs et à la sélection de ceux qui seront soutenus par Caisse dEpargne Rhône Alpes.\n",
"\n",
"----------\n",
"\n",
"passage: Devenez sociétaire !\n",
"\n",
"Le site sociétaires\n",
"\n",
"Sur www.societaires.caisse-epargne.fr, vous disposez dun site dinformation et davantages sélectionnés pour vous. Vous y découvrirez les réalisations et engagements de votre Caisse dEpargne sur votre territoire : actualité, partenariats, soutien aux actions sociétales…\n",
"Cest aussi une source incontournable dinformations sur lorganisation et les valeurs coopératives, les assemblées générales, la vie du sociétariat et des sociétés locales dépargne.\n",
"Le Club Sociétaires\n",
"\n",
" \n",
"\n",
"\t\t\t\t\t\t\t\t\t\t\tAccessible depuis le site sociétaires de votre région, le club vous propose des avantages et des réductions sur vos sorties ou vos achats, autour de chez vous et partout en France.\t\t\t\t\t\t\t\t\t\t\n",
"\n",
"\n",
"\n",
"\t\t\t\t\t\t\t\t\t\t\t\tDécouvrir maintenant\n",
"Le Club Sociétaires\n",
"Accessible depuis le site sociétaires de votre région, le club vous propose des avantages et des réductions sur vos sorties ou vos achats, autour de chez vous et partout en France.\n",
"Découvrir maintenant\n",
"Banque engagée : nos actions pour une société plus solidaire, plus durable\n",
"\n",
" \n",
"\n",
"\t\t\t\t\t\t\t\t\t\t\tDepuis leur création en 1818, les Caisses dEpargne sont des banques régionales engagées en faveur de la solidarité et du développement économique et durable de leurs territoires.\t\t\t\t\t\t\t\t\t\t\n",
"\n",
"\n",
"\n",
"\t\t\t\t\t\t\t\t\t\t\t\tDécouvrir maintenant\n",
"Banque engagée : nos actions pour une société plus solidaire, plus durable\n",
"Depuis leur création en 1818, les Caisses dEpargne sont des banques régionales engagées en faveur de la solidarité et du développement économique et durable de leurs territoires.\n",
"Découvrir maintenant\n",
"Qui sommes-nous ?\n",
"\n",
" \n",
"\n",
"\t\t\t\t\t\t\t\t\t\t\tDepuis sa création en 1818, Caisse dEpargne accompagne les Français et les territoires dans leurs projets et tient un rôle majeur dans la vie économique et sociale du pays. \t\t\t\t\t\t\t\t\t\t\n",
"\n",
"\n",
"\n",
"\t\t\t\t\t\t\t\t\t\t\t\tDécouvrir maintenant\n",
"Qui sommes-nous ?\n",
"Depuis sa création en 1818, Caisse dEpargne accompagne les Français et les territoires dans leurs projets et tient un rôle majeur dans la vie économique et sociale du pays.\n",
"Découvrir maintenant\n",
"\n",
"----------\n",
"\n"
]
}
],
"source": [
"nb_passage = 1\n",
"while True:\n",
" id = \"f6d921ced8.html-\" + str(nb_passage)\n",
" societaires = collection.get(ids=[id])\n",
" if len(societaires['documents']) > 0:\n",
" print(societaires['documents'][0])\n",
" print(\"\\n----------\\n\")\n",
" nb_passage += 1\n",
" else:\n",
" break"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "a15e2f52-f3f6-4b6d-9ac9-b39528580d9e",
"metadata": {},
"outputs": [],
"source": [
"collection.get(ids=['f6d921ced8.html-10'])"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "089de7c4-7c17-464d-a0dd-04db86299cda",
"metadata": {},
"outputs": [],
"source": [
"col = collection.get()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "eb193ac5-41a2-4fdd-81f5-0d3c56f72829",
"metadata": {},
"outputs": [],
"source": [
"col['ids'][0]"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "97b08f88-9837-45f3-8622-49a95a2b312c",
"metadata": {},
"outputs": [],
"source": [
"lengths = np.array([len(doc) for doc in col['documents']])"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "10d4a676-648a-4412-a168-8dcbf754af1e",
"metadata": {},
"outputs": [],
"source": [
"# Calculating statistics\n",
"min_length = np.min(lengths)\n",
"max_length = np.max(lengths)\n",
"mean_length = np.mean(lengths)\n",
"median_length = np.median(lengths)\n",
"std_dev_length = np.std(lengths)\n",
"\n",
"# Printing the statistics\n",
"print(f\"Minimum Length: {min_length}\")\n",
"print(f\"Maximum Length: {max_length}\")\n",
"print(f\"Mean Length: {mean_length:.2f}\")\n",
"print(f\"Median Length: {median_length}\")\n",
"print(f\"Standard Deviation: {std_dev_length:.2f}\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e6399d75-1823-4723-8f6b-955a30e226aa",
"metadata": {},
"outputs": [],
"source": [
"docs = list(zip(col['documents'], col['ids']))\n",
"sorted_docs_ids = sorted(docs, key=lambda x: len(x[0]))\n",
"sorted_docs, sorted_ids = zip(*sorted_docs_ids)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "61900d54-5af3-4c3d-8dcc-2e80a8b735d7",
"metadata": {},
"outputs": [],
"source": [
"for i, doc in enumerate(sorted_docs[200:210]):\n",
" print(sorted_ids[i])\n",
" print(doc)\n",
" print(\"\\n---\\n\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "14778379-01fc-415d-841d-b02909863383",
"metadata": {},
"outputs": [],
"source": [
"docs = col['documents']\n",
"sorted_docs = sorted(docs, key=len)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "195a89b2-a269-4baf-acf2-f60ddaa78082",
"metadata": {},
"outputs": [],
"source": [
"for doc in sorted_docs[:10]:\n",
" print(doc)\n",
" print(\"\\n---\\n\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "19f3d7bf-0c22-498b-988e-45f8e65474f6",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "RAG_ENV",
"language": "python",
"name": "rag_env"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.18"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

View File

@@ -18,12 +18,12 @@
}
],
"source": [
"from embedding import EmbeddingModel"
"from embedding2 import EmbeddingModel"
]
},
{
"cell_type": "code",
"execution_count": 2,
"execution_count": null,
"id": "37408a48-ce90-4176-bc9f-b71ebc22a178",
"metadata": {},
"outputs": [
@@ -31,66 +31,814 @@
"name": "stderr",
"output_type": "stream",
"text": [
"2024-01-03 11:13:53,279 - INFO - Load pretrained SentenceTransformer: intfloat/multilingual-e5-large\n",
"/Users/peportier/miniforge3/envs/RAG_ENV/lib/python3.9/site-packages/transformers/utils/generic.py:309: UserWarning: torch.utils._pytree._register_pytree_node is deprecated. Please use torch.utils._pytree.register_pytree_node instead.\n",
" _torch_pytree._register_pytree_node(\n",
"2024-01-03 11:13:56,891 - INFO - Use pytorch device: cpu\n",
"2024-01-03 11:13:56,894 - INFO - Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information.\n",
"2024-01-03 11:13:56,990 - INFO - 4a06529f5f.txt : Start\n",
"Batches: 0%| | 0/1 [00:00<?, ?it/s]huggingface/tokenizers: The current process just got forked, after parallelism has already been used. Disabling parallelism to avoid deadlocks...\n",
"Batches: 0%| | 0/1 [00:00<?, ?it/s]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",
"Batches: 100%|████████████████████████████████████| 1/1 [00:00<00:00, 1.64it/s]\n",
"2024-01-03 11:13:57,660 - INFO - 4a06529f5f.txt : Done\n",
"2024-01-03 11:13:57,660 - INFO - 4aac6081e0.txt : Start\n",
"Token indices sequence length is longer than the specified maximum sequence length for this model (595 > 512). Running this sequence through the model will result in indexing errors\n",
"Batches: 100%|████████████████████████████████████| 1/1 [00:00<00:00, 1.93it/s]\n",
"2024-01-03 11:13:58,189 - INFO - 4aac6081e0.txt : Done\n",
"2024-01-03 11:13:58,189 - INFO - 4a5736d002.txt : Start\n",
"Batches: 100%|████████████████████████████████████| 1/1 [00:00<00:00, 5.89it/s]\n",
"2024-01-03 11:13:58,365 - INFO - 4a5736d002.txt : Done\n",
"2024-01-03 11:13:58,366 - INFO - 3d159cbe89.txt : Start\n",
"Batches: 100%|████████████████████████████████████| 1/1 [00:00<00:00, 1.63it/s]\n",
"2024-01-03 11:13:58,988 - INFO - 3d159cbe89.txt : Done\n",
"2024-01-03 11:13:58,989 - INFO - 3f3e46760c.txt : Start\n",
"Batches: 100%|████████████████████████████████████| 1/1 [00:00<00:00, 6.07it/s]\n",
"2024-01-03 11:13:59,159 - INFO - 3f3e46760c.txt : Done\n",
"2024-01-03 11:13:59,160 - INFO - 3ced86d1db.txt : Start\n",
"Batches: 100%|████████████████████████████████████| 1/1 [00:00<00:00, 2.12it/s]\n",
"2024-01-03 11:13:59,640 - INFO - 3ced86d1db.txt : Done\n",
"2024-01-03 11:13:59,641 - INFO - 3bbe30b18a.txt : Start\n",
"Batches: 100%|████████████████████████████████████| 1/1 [00:01<00:00, 1.46s/it]\n",
"2024-01-03 11:14:01,116 - INFO - 3bbe30b18a.txt : Done\n",
"2024-01-03 11:14:01,116 - INFO - 3dbfdeb28e.txt : Start\n",
"Batches: 100%|████████████████████████████████████| 1/1 [00:01<00:00, 1.17s/it]\n",
"2024-01-03 11:14:02,299 - INFO - 3dbfdeb28e.txt : Done\n",
"2024-01-03 11:14:02,299 - INFO - 4adf02d48f.txt : Start\n",
"Batches: 100%|████████████████████████████████████| 1/1 [00:00<00:00, 1.71it/s]\n",
"2024-01-03 11:14:02,895 - INFO - 4adf02d48f.txt : Done\n",
"2024-01-03 11:14:02,896 - INFO - 3c25273538.txt : Start\n",
"Batches: 100%|████████████████████████████████████| 1/1 [00:02<00:00, 2.02s/it]\n",
"2024-01-03 11:14:04,940 - INFO - 3c25273538.txt : Done\n",
"2024-01-03 11:14:04,940 - INFO - 4aeb967bdb.txt : Start\n",
"Batches: 100%|████████████████████████████████████| 1/1 [00:00<00:00, 2.00it/s]\n",
"2024-01-03 11:14:05,449 - INFO - 4aeb967bdb.txt : Done\n"
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.48it/s]\n",
"Token indices sequence length is longer than the specified maximum sequence length for this model (910 > 512). Running this sequence through the model will result in indexing errors\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.78s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.57it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.10s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.39it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.35it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.46it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.20it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.80it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.28it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.29s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.24it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.48it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.64it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.45s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.17s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.41it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.02it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.27it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.19s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.87it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.05it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 6.42it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.82it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.32it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.19it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.35it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.26it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.94s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.66it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:04<00:00, 4.71s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.30it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.01s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.80it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 10.44it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.33s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.62it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.05it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.64it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.05s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.07it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.09it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.93it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.16it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.64it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.14s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.24it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.07s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.55s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 9.24it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.42it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.88s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.94s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:03<00:00, 3.28s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.13it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:04<00:00, 4.35s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.06it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.62it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.13it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.13it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.20s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 8.38it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.28it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.59s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.05it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.41it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.44it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.32it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.88it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.68it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.42it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.01s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.87s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.91s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.62it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.26it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.07it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.15it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.89it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.81it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.31s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.86it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.20s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.18it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.18it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.04s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.54s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.61s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.12it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 6.19it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.35it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.13s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.31it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.46s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.68it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.39it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.83s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.09s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.26s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.69it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.37s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.50s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.80s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.35it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.38it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.00it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.74it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.57s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 6.49it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.35it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.37s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.38s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.62it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.25s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.77it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.55it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.27s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.06it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.16s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.18s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.11it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.22it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.99it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.58s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.44s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.55it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.56it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.34s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.37it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.07s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 9.43it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.04it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.57it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.67it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.29it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.98it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.12it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 9.76it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.37it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.67s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.03it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.93it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.38it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 7.91it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.22it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.01s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.72it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.38s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.10it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.67it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.91s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.77s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.63it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.88s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.06it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.66it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.16s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.66s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.94it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:04<00:00, 4.95s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.97s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.63it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.24s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.55it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.62it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.13it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.06it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.27it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.06it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:03<00:00, 3.45s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.95it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.21s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.06s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 6.40it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.32s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.19s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.03s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.72s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.94s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.17it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.45it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.17it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.79it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.92it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.20s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.18s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.31s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.48s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.00it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.35it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.60s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.29it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 8.38it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.13s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:03<00:00, 3.66s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.91s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.76s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.67it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.16it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.08it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.62it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.75s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.37s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.39it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.63it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.77s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.42it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.20it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.82it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.30s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.42it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.41it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.35it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.46it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.50it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.63it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.25it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.06s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.25s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 7.78it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.12it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.20it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.74s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.09s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.92it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.11s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.83s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.38it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.49s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.38it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.07it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:03<00:00, 3.07s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.23s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.78it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.17it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.57it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:04<00:00, 4.36s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.59s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.29it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.95s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.47s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.59s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.66it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.06it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.22s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.43s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.23s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.93it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.23it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.16it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.11it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.00s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.15it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.65it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.31it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.47s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.25s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.42s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.38it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.08it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.10it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.70it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.68s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.24it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.16it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.13s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.12s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.38it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.81s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.48it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.99it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:03<00:00, 3.99s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.66it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.67it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.32it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.13s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.70it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.22it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.15s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.04s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.31it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.01s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.27it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.22it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.97it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.35s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.03it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.28it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:03<00:00, 3.21s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 7.49it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.65it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.22it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.18s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.49it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.04it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.57it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.36s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.43s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.23it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.02it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.66it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.69it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.26s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.37it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.82it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:03<00:00, 3.14s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.54it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.70it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.00it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.77it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.88it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.74it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.99it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.45s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.77it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.66it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.47s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.69it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.70it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.10it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.03it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.49s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.43it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.87s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.99it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.97s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.01it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:05<00:00, 5.50s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.67it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.45it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.68it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.84it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.51it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.70s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.69it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.35it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.66it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.87it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:05<00:00, 5.03s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.22it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.24it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.02s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 8.12it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.99it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.41it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.02s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.23it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.97it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.04s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.63it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.75it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.37s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.50it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.62it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.22it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.07it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.23it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.50it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.22it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.93it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.18it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.60it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.80s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.07it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.12s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.74s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:06<00:00, 6.30s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.18s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.21s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.50s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.11it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.14it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.28it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.50s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.43it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.59s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.58it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.32s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.00it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.46it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.63s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.37it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.90s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.89it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.42it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.29it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.19s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.89it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.68s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.93it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.18it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.25it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.92s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.07s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.18s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.16it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.77it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.70it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.31s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.27s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.17it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.89it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.35it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.66it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.61s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.28it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.93s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.31it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.64it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.85it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.21it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.73s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.18s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.13it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.34s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.73it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.71it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.80it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 9.21it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:05<00:00, 5.15s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.05it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.05s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.76it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.36it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.07it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.39s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.75it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.59it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.65it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.57s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.63it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.78it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.34s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.99s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 9.76it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.71it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.14s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.57it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.42s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.59it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.34s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.56it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.45it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.65s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:03<00:00, 3.35s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.14it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 8.20it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.53it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.24it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.15it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.27s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.26s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.09it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.59s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 8.63it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.26it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.27s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.91it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 8.13it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.28it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.57it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.14it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.37it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.95s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.61it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 6.00it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.39s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.11it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.68s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:03<00:00, 3.00s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.07it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.34s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.04s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.60it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.08it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.09it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.34s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.08s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.86it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.29it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:03<00:00, 3.27s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.15it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.07s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:05<00:00, 5.60s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.95it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.05it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.17it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.29s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 6.15it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.38it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.30it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.09s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.93it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.74s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.96it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.24s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 9.54it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.01it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.33s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.77s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.32it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.87it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.06it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.14s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.40s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 8.87it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.07s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.39it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.68s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.19s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.04it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.29it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 6.00it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.17it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.15it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.32it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.68it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.49it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.15it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.85it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.19s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.17it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.80s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.94it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.37it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.89s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.23it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.42it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.39s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.83it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.57it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.06it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:03<00:00, 3.09s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.12it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.73it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.07it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.06it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.13s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.86it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.23s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 6.29it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:03<00:00, 3.23s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.28it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 9.60it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.04it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.67it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.65it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.60it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.71it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.18it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.13it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.71it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.51s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:03<00:00, 3.17s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.78s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.17it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.24s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 8.75it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 6.16it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.36it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.90it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.15s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.02it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.63it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.07it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.14s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.74s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.33s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:03<00:00, 3.33s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.24it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.08s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.61it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 7.42it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.82s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.97it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.44it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.82s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.24s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.52s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.51it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.21it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.89s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.01s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.31it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.07it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.43s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.37s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 8.87it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:03<00:00, 3.01s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.07s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.55s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.65s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.42it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.09s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.02it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.88it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.31it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.40it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.71it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.63it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.13it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.23s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.65s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.19it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.13it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.56it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.12it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.03it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.89it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.56s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.68s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.31it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.39s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.27s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.37it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.53s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.76it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.03s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.11it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.35s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.60it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.13s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.30it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.02s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.50it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.44it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 8.68it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.39it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 6.82it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.47it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.25s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 9.64it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.74s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.34s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.37it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.68s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.43it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.79it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 8.09it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.53it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.13it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.38s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.38s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.00it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.35it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.47s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.61s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:03<00:00, 3.69s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.22s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.74s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.88s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.28s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.09it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.43it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.22it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:04<00:00, 4.77s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.43it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.56it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 6.70it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.78s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.05it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.30it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.77it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.08s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.20it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.50s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.78it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.51it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.87it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.03it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.49it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.14s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.27s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.51it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.50it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.04s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.71it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.09s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.12it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.24s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.12it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.29it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.92s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.88it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.81it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.40s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.98it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.17it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.94s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.94it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.55s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.53it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.81it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 9.18it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 7.60it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:03<00:00, 3.42s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.84it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.45it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.46it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.75it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.21it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.89it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.26s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.50it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.16it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.37s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 7.97it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.18s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:03<00:00, 3.01s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.20s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.35it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.48it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.93it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.16it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.99s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.19s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.91it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.09it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 6.09it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.77s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.11it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.67it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.44it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.65it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.89s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.57s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.92it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.64it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.69it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 8.80it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.71it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.11it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.40it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.89it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.21s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.60s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.75it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.77it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.26it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.89s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 6.54it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.81it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.63s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.86s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.53it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.83it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.66it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.85s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.41it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.81it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.44it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.26it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.70it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.18s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.33s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.96it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.31it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.91s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.72it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.89it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.48it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.41it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.18it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.58s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.72it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.61it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.99it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.65it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.26s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.58it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.42it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.15it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 4.84it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.12it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.81s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.99s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.30it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.82it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:02<00:00, 2.15s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.19it/s]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.39s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.19s/it]\n",
"Batches: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 5.13it/s]\n"
]
}
],
"source": [
"model_name = 'intfloat/multilingual-e5-large'\n",
"chromadb_path = './chromadbtest'\n",
"folder_path = './docs/test'\n",
"chromadb_path = './chromadb'\n",
"html_folder_path = '../scrapcera/htmls/'\n",
"txt_folder_path = '../scrapcera/docs/'\n",
"collection_name = 'cera'\n",
"\n",
"embedding_model = EmbeddingModel(model_name, chromadb_path, collection_name)\n",
"embedding_model.embed_folder(folder_path)"
"embedding_model.embed_folder(html_folder_path, txt_folder_path)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "2acd9c49-5676-4e72-9eff-f6fb8ffa94fe",
"id": "3e408034-4c7b-4f64-9277-dd7c7d081135",
"metadata": {},
"outputs": [],
"source": []

252
rag_fr_embedding_test.ipynb Normal file
View File

@@ -0,0 +1,252 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "d8acc709-ebb2-4fa6-982b-3d13fe8d2beb",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/peportier/miniforge3/envs/RAG_ENV/lib/python3.9/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n",
" from .autonotebook import tqdm as notebook_tqdm\n",
"/Users/peportier/miniforge3/envs/RAG_ENV/lib/python3.9/site-packages/transformers/utils/generic.py:441: UserWarning: torch.utils._pytree._register_pytree_node is deprecated. Please use torch.utils._pytree.register_pytree_node instead.\n",
" _torch_pytree._register_pytree_node(\n"
]
}
],
"source": [
"from bs4 import BeautifulSoup\n",
"import base64\n",
"import re\n",
"from transformers import AutoTokenizer\n",
"import logging\n",
"import os\n",
"from IPython.display import Markdown, display"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "54f5ab50-2ee3-45ad-9208-c1e2dc362152",
"metadata": {},
"outputs": [],
"source": [
"from transformers import AutoTokenizer\n",
"model_name = 'intfloat/multilingual-e5-large'\n",
"tokenizer = AutoTokenizer.from_pretrained(model_name)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "8c9e6f4e-609d-488d-a738-41934a62e92a",
"metadata": {},
"outputs": [],
"source": [
"def token_length(text):\n",
" return len(tokenizer.encode(text, add_special_tokens=False))"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "8deef599-04b0-4d9f-9b3e-ac9ae5a472a0",
"metadata": {},
"outputs": [],
"source": [
"def passage_str(paragraphs, title, subtitle):\n",
" return f\"passage: {title}\\n\\n{subtitle}\\n\\n\" + '\\n'.join(paragraphs)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "1ef97436-37c2-45b4-8e00-7737d87c261e",
"metadata": {},
"outputs": [],
"source": [
"html_folder_path = '../scrapcera/htmls/'\n",
"txt_folder_path = '../scrapcera/docs/'\n",
"html_filename = '97e88fd1d6.html'"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "560280af-ad79-43e8-b4df-c4f69aa40dcf",
"metadata": {},
"outputs": [],
"source": [
"for html_filename in ['f6d921ced8.html']: # os.listdir(html_folder_path):\n",
" \n",
" html_file_path = os.path.join(html_folder_path, html_filename)\n",
" txt_filename = re.sub(r'\\.html', '.txt', html_filename)\n",
" txt_file_path = os.path.join(txt_folder_path, txt_filename)\n",
" with open(txt_file_path, 'r') as file:\n",
" txt_file_contents = file.read()\n",
" \n",
" url = txt_file_contents.split('\\n')[0]\n",
" if '?' in url: # URLs with a '?' corresponds to call to services and have no useful content\n",
" continue\n",
" if not url.startswith('https://www.caisse-epargne.fr/rhone-alpes/'):\n",
" continue\n",
" \n",
" prefix = 'https://www.caisse-epargne.fr/'\n",
" suffix = url.replace(prefix, '')\n",
" tags = suffix.split('/')\n",
" tags = [tag for tag in tags if tag] # remove empty par\n",
" with open(html_file_path, 'r') as file:\n",
" html_file_contents = file.read()\n",
" soup = BeautifulSoup(html_file_contents, 'html.parser')\n",
" page_title_present = soup.find('section').find('h1')\n",
" if not page_title_present:\n",
" continue\n",
" page_title = page_title_present.get_text()\n",
" \n",
" sections = soup.find_all(lambda tag: tag.name in ['section'] and 'key-informations' not in tag.get('class', []))\n",
" \n",
" struct_page = {'title': page_title}\n",
" current_section = ''\n",
" for section in sections:\n",
" for wysiwyg_tag in section.find_all(class_=\"wysiwyg\"):\n",
" # Check for a title within the wysiwyg container\n",
" internal_title = wysiwyg_tag.find(['h1', 'h2', 'h3', 'h4', 'h5', 'h6']) or wysiwyg_tag.find('p', class_='title')\n",
" \n",
" # If no internal title, find the nearest title from previous siblings\n",
" if not internal_title:\n",
" # Find the nearest title from previous siblings\n",
" nearest_title = None\n",
" for sibling in wysiwyg_tag.find_previous_siblings():\n",
" if sibling.name in ['h1', 'h2', 'h3', 'h4', 'h5', 'h6']:\n",
" nearest_title = sibling.get_text().strip()\n",
" break\n",
" if sibling.name == 'p' and 'title' in sibling.get('class', []):\n",
" nearest_title = sibling.get_text().strip()\n",
" break\n",
" if nearest_title:\n",
" nearest_title = re.sub(r'\\(\\d\\)', '', nearest_title)\n",
" nearest_title = re.sub(r'^\\d+\\.\\s*', '', nearest_title)\n",
" current_section = nearest_title\n",
" struct_page[current_section] = []\n",
" else:\n",
" continue\n",
" for child in wysiwyg_tag.find_all(['p', 'li', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6']):\n",
" text = child.get_text().strip()\n",
" text = re.sub(r'\\(\\d\\)', '', text)\n",
" if child.name.startswith('h') or (child.name == 'p' and 'title' in child.get('class', [])):\n",
" text = re.sub(r'^\\d+\\.\\s*', '', text)\n",
" current_section = text\n",
" struct_page[current_section] = []\n",
" else: # <p> not of class title, or <li>\n",
" if 'is-style-mentions' not in child.get('class', []):\n",
" if current_section in struct_page:\n",
" struct_page[current_section].append(text)\n",
"\n",
" # detect_big_chunks(struct_page, html_filename)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "e6da54d7-6c70-44eb-b08b-392c742d0525",
"metadata": {},
"outputs": [],
"source": [
"chunks_length = []\n",
"def detect_big_chunks(struct_page, filename):\n",
" global big_chunks_length\n",
" max_chunk_size=512\n",
" title = struct_page['title']\n",
" for subtitle, paragraphs in struct_page.items():\n",
" if subtitle != 'title':\n",
" doc_str = passage_str(paragraphs, title, subtitle)\n",
" doc_token_length = token_length(doc_str)\n",
" if doc_token_length > max_chunk_size:\n",
" sub_paragraphs = []\n",
" sub_paragraphs_token_length = 0\n",
" paragraph_index = 0\n",
" while True:\n",
" while sub_paragraphs_token_length < max_chunk_size and paragraph_index < len(paragraphs):\n",
" sub_paragraphs.append(paragraphs[paragraph_index])\n",
" sub_paragraphs_str = passage_str(sub_paragraphs, title, subtitle)\n",
" sub_paragraphs_token_length = token_length(sub_paragraphs_str)\n",
" paragraph_index += 1\n",
" if paragraph_index == len(paragraphs):\n",
" if sub_paragraphs_token_length >= max_chunk_size:\n",
" sub_paragraphs_str_1 = passage_str(sub_paragraphs[:-1], title, subtitle)\n",
" sub_paragraphs_str_2 = passage_str([sub_paragraphs[-1]], title, subtitle)\n",
" chunks_length.append(len(sub_paragraphs_str_1))\n",
" chunks_length.append(len(sub_paragraphs_str_2))\n",
" else:\n",
" sub_paragraphs_str = passage_str(sub_paragraphs, title, subtitle)\n",
" chunks_length.append(len(sub_paragraphs_str))\n",
" break\n",
" else:\n",
" sub_paragraphs_str = passage_str(sub_paragraphs[:-1], title, subtitle)\n",
" chunks_length.append(len(sub_paragraphs_str))\n",
" paragraph_index -= 1\n",
" sub_paragraphs = []\n",
" sub_paragraphs_token_length = 0\n",
" \n",
" chunks_length.append(len(doc_str))"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "8a534ec5-a85a-41bf-b229-c896612cec42",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'title': 'Devenez sociétaire !',\n",
" 'Qui peut devenir sociétaire ?': ['Tous les clients de la Caisse dEpargne peuvent souscrire des parts sociales : particuliers, personnes morales (associations, entreprises), EPCI (Établissements Publics de Coopération Intercommunale) à fiscalité propre. Les collectivités territoriales peuvent également devenir sociétaires.'],\n",
" 'Comment devenir sociétaire\\xa0?': ['Vous souscrivez vos parts sociales de la Société Locale dEpargne (SLE) auprès de lagence où est domicilié votre compte principal. Pour tout renseignement, contactez votre conseiller, il saura vous orienter.'],\n",
" 'Le site sociétaires': ['Sur www.societaires.caisse-epargne.fr, vous disposez dun site dinformation et davantages sélectionnés pour vous. Vous y découvrirez les réalisations et engagements de votre Caisse dEpargne sur votre territoire : actualité, partenariats, soutien aux actions sociétales…',\n",
" 'Cest aussi une source incontournable dinformations sur lorganisation et les valeurs coopératives, les assemblées générales, la vie du sociétariat et des sociétés locales dépargne.']}"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"struct_page"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "fdd70455-c279-4b08-87e9-d42c5c093bc6",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "RAG_ENV",
"language": "python",
"name": "rag_env"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.18"
}
},
"nbformat": 4,
"nbformat_minor": 5
}