Skip to content

Commit

Permalink
ruff clean
Browse files Browse the repository at this point in the history
  • Loading branch information
linogaliana committed Dec 4, 2024
1 parent 13aded0 commit 515b540
Show file tree
Hide file tree
Showing 6 changed files with 78 additions and 40 deletions.
46 changes: 42 additions & 4 deletions minimal-rag-in-notebook.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -320,15 +320,22 @@
},
{
"cell_type": "code",
"execution_count": 10,
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Batches: 100%|██████████| 1/1 [00:00<00:00, 82.09it/s]\n",
"Processed prompts: 100%|██████████| 1/1 [00:01<00:00, 1.56s/it, est. speed input: 612.17 toks/s, output: 137.17 toks/s]\n"
"Batches: 100%|██████████| 1/1 [00:00<00:00, 88.49it/s]\n",
"Processed prompts: 0%| | 0/1 [00:00<?, ?it/s, est. speed input: 0.00 toks/s, output: 0.00 toks/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"Processed prompts: 100%|██████████| 1/1 [00:05<00:00, 5.53s/it, est. speed input: 172.93 toks/s, output: 136.89 toks/s]\n"
]
}
],
Expand Down Expand Up @@ -358,7 +365,7 @@
},
{
"cell_type": "code",
"execution_count": 11,
"execution_count": 12,
"metadata": {},
"outputs": [
{
Expand Down Expand Up @@ -493,6 +500,37 @@
"retriever.invoke(\"Quelle est la définition du PIB ?\")[:5]"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Batches: 100%|██████████| 1/1 [00:00<00:00, 75.98it/s]\n",
"Processed prompts: 100%|██████████| 1/1 [00:04<00:00, 4.60s/it, est. speed input: 707.17 toks/s, output: 131.72 toks/s]\n"
]
},
{
"data": {
"text/plain": [
"[\" pour assister votre réponse, je vous fais un exposé succinct sur la définition du PIB et où prendre les chiffres les plus récents.\\n\\n Le produit intérieur brut (PIB) est l'indicateur économique le plus important pour représenter la richesse monétaire générée par un appareil productif national ou régional. Il s'agit de la somme des valeurs ajoutées nouvellement créées par les unités productrices résidentes dans une année donnée, évaluées au prix du marché. Les chiffres du PIB peuvent être utiles pour faire des comparaisons internationales et jusqu'en 2018, ils sont publiés trois ans après le millésime.\\n\\n La définition et les méthodes de calcul du PIB sont établies par l'Organisation des Nations Unies (ONU) et sont les mêmes pour tous les pays. L'application est contrôlée par l'office statistique de l'Union européenne (Eurostat). Il est important de savoir que le PIB actuel présente des inconvénients puisqu'il ne mesure pas efficacement le développement social ou la question de la soutenabilité de la croissance économique, notamment en termes écologiques. L'Insee présente donc de nouveaux outils afin de comprendre la mesure du PIB et de la croissance économique.\\n\\n Pour trouver les chiffres les plus récents du PIB, vous pouvez consulter les statistiques de l'Insee sur la page [Comptes nationaux](https://www.insee.fr/fr/statistiques?taille=100&debut=0&theme=33&categorie=5&geo=FRANCE-1). Il existe deux types de publications, les comptes annuels et les comptes trimestriels. Les comptes annuels, publiés tous les ans, donnent une vision globale de la croissance économique pendant l'année et les comptes trimestriels, publiés chaque trimestre, fournissent une vision plus précise de l'évolution de la croissance économique au fil du temps.\\n\\n Références :\\n\\n - https://www.insee.fr/fr/information/2549709\\n - https://www.insee.fr/fr/statistiques/2384072\\n - https://www.insee.fr/fr/statistiques/4241527\"]"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rag_chain.batch([\n",
" \"Quelle est la définition du PIB ?\"\n",
" \"Où trouver les nouveaux chiffres du chpimage ?\"\n",
" ])"
]
},
{
"cell_type": "markdown",
"metadata": {},
Expand Down
6 changes: 1 addition & 5 deletions run_build_database.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,7 @@
import yaml

from src.config import DefaultFullConfig, FullConfig, process_args, simple_argparser
from src.db_building import (
build_or_load_document_database,
build_vector_database,
load_vector_database
)
from src.db_building import build_or_load_document_database, build_vector_database, load_vector_database

# Logging configuration
logger = logging.getLogger(__name__)
Expand Down
14 changes: 11 additions & 3 deletions src/model_building/build_llm_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import sys
from typing import Any

from langchain_huggingface.llms import HuggingFacePipeline
from transformers import (
AutoConfig,
AutoModelForCausalLM,
Expand All @@ -15,8 +16,8 @@

from .fetch_llm_model import cache_model_from_hf_hub

# Add the project root directory to sys.path
root_dir = os.path.abspath(os.path.join(os.path.dirname(""), "./src"))

if root_dir not in sys.path:
sys.path.append(root_dir)

Expand Down Expand Up @@ -55,13 +56,20 @@ def build_llm_model(
),
# Load LLM config
"config": (
AutoConfig.from_pretrained(model_name, trust_remote_code=True, token=hf_token) if load_LLM_config else None
AutoConfig.from_pretrained(
model_name, trust_remote_code=True,
token=hf_token
) if load_LLM_config else None
),
"token": hf_token,
}

# Load LLM tokenizer
tokenizer = AutoTokenizer.from_pretrained(model_name, use_fast=True, device_map="auto", token=hf_token)
tokenizer = AutoTokenizer.from_pretrained(
model_name, use_fast=True,
device_map="auto", token=hf_token
)

streamer = None
if streaming:
streamer = TextStreamer(tokenizer=tokenizer, skip_prompt=True)
Expand Down
32 changes: 18 additions & 14 deletions src/reranking/reranking_functions.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,6 @@ def compress_documents_lambda(
return retriever.get_relevant_documents(query)


###### LLM Reraner functions ######


def expected_relevance_values(logits, grades_token_ids, list_grades):
next_token_logits = logits[:, -1, :]
next_token_logits = next_token_logits.cpu()[0]
Expand Down Expand Up @@ -81,7 +78,9 @@ def RG_S(tokenizer, model, query, document, aggregating_method, k=5):
},
]

input_text = tokenizer.apply_chat_template(messages, add_generation_prompt=True, tokenize=False)
input_text = tokenizer.apply_chat_template(
messages, add_generation_prompt=True, tokenize=False
)

inputs = tokenizer(input_text, return_tensors="pt").to(model.device)

Expand Down Expand Up @@ -117,9 +116,9 @@ def RG_4L(tokenizer, model, query, document, args):

log_probs = []
for judgement in possible_judgements:
input_text = tokenizer.apply_chat_template(messages, add_generation_prompt=False, tokenize=False).format(
query=query, document=document, judgement=judgement
)
input_text = tokenizer.apply_chat_template(
messages, add_generation_prompt=False, tokenize=False
).format(query=query, document=document, judgement=judgement)
log_probs.append(compute_sequence_log_probs(sequence=input_text))

probs = F.softmax(torch.tensor(log_probs), dim=-1).numpy()
Expand All @@ -146,9 +145,9 @@ def RG_3L(tokenizer, model, query, document, args):

log_probs = []
for judgement in possible_judgements:
input_text = tokenizer.apply_chat_template(messages, add_generation_prompt=False, tokenize=False).format(
query=query, document=document, judgement=judgement
)
input_text = tokenizer.apply_chat_template(
messages, add_generation_prompt=False, tokenize=False
).format(query=query, document=document, judgement=judgement)
log_probs.append(compute_sequence_log_probs(sequence=input_text))

probs = F.softmax(torch.tensor(log_probs), dim=-1).numpy()
Expand Down Expand Up @@ -177,7 +176,9 @@ def RG_YN(tokenizer, model, query, document, aggregating_method):
},
]

input_text = tokenizer.apply_chat_template(messages, add_generation_prompt=True, tokenize=False)
input_text = tokenizer.apply_chat_template(
messages, add_generation_prompt=True, tokenize=False
)

inputs = tokenizer(input_text, return_tensors="pt").to(model.device)

Expand All @@ -188,8 +189,12 @@ def RG_YN(tokenizer, model, query, document, aggregating_method):
return aggregating_method(logits, grades_token_ids, list_grades)


def llm_reranking(tokenizer, model, query, retrieved_documents, assessing_method, aggregating_method):
docs_content = retrieved_documents.copy() # [doc.page_content for doc in retrieved_documents]
def llm_reranking(
tokenizer, model, query, retrieved_documents, assessing_method, aggregating_method
):
docs_content = (
retrieved_documents.copy()
) # [doc.page_content for doc in retrieved_documents]

scores = []
for document in docs_content:
Expand All @@ -200,4 +205,3 @@ def llm_reranking(tokenizer, model, query, retrieved_documents, assessing_method
docs_with_scores.sort(key=lambda x: x[1], reverse=True)
sorted_documents = [doc for doc, score in docs_with_scores] # docs_with_scores
return sorted_documents

13 changes: 6 additions & 7 deletions src/utils/__init__.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
from .formatting_utilities import create_prompt_from_instructions, format_docs
from .loading_utilities import load_dataframe_from_parquet
from .misc import compare_params
from .formatting_utilities import (
create_prompt_from_instructions, format_docs
)

__all__ = [
"load_dataframe_from_parquet", "cache_model_from_hf_hub",
"compare_params", "create_prompt_from_instructions",
"format_docs"
"load_dataframe_from_parquet",
"cache_model_from_hf_hub",
"compare_params",
"create_prompt_from_instructions",
"format_docs",
]

7 changes: 0 additions & 7 deletions src/utils/loading_utilities.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,9 @@
import os
import subprocess
from typing import Literal

import pandas as pd
import s3fs

from src.config import Configurable, DefaultFullConfig, FullConfig


def load_dataframe_from_parquet(
path: str, engine: Literal["auto", "pyarrow", "fastparquet"] = "fastparquet"
) -> pd.DataFrame:
return pd.read_parquet(path, engine)


0 comments on commit 515b540

Please sign in to comment.